@koda-sl/baker-cli 0.478.0 → 0.480.0
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 +48 -20
- package/dist/account-7LUQWY6Q.js +49 -0
- package/dist/account-VH2AATWI.js +79 -0
- package/dist/account-Z65CPOWE.js +80 -0
- package/dist/account-reads-GYI2SS6T.js +218 -0
- package/dist/account-writes-4N2MA2ZR.js +66 -0
- package/dist/accounts-E4TVYTUR.js +115 -0
- package/dist/accounts-SMB3TNXX.js +114 -0
- package/dist/accounts-SPLE7URQ.js +611 -0
- package/dist/accounts-UA2ZWRN4.js +75 -0
- package/dist/accounts-XG472YLB.js +77 -0
- package/dist/actions-KQTXBNJU.js +55 -0
- package/dist/active-entities-MCL7UEGV.js +103 -0
- package/dist/activecampaign-42JXANUA.js +935 -0
- package/dist/activities-IQPJPP4B.js +74 -0
- package/dist/ad-group-writes-EUTMPBMK.js +170 -0
- package/dist/ad-groups-OVPAI5RM.js +68 -0
- package/dist/ad-writes-DACTYFEO.js +174 -0
- package/dist/add-5IGUQHVZ.js +105 -0
- package/dist/add-BK5AQI5A.js +97 -0
- package/dist/add-C3FQ5D62.js +104 -0
- package/dist/add-KTEJCE4L.js +302 -0
- package/dist/add-accounts-CJSV5NPL.js +91 -0
- package/dist/ads-HXX2IAFF.js +113 -0
- package/dist/ads-L65JIKCD.js +77 -0
- package/dist/ads-RAUM6ISF.js +128 -0
- package/dist/ads-WPI3AMSR.js +40 -0
- package/dist/adsets-LPN6WFGF.js +176 -0
- package/dist/advertisers-36HP3AOE.js +120 -0
- package/dist/advertisers-DS2NRWKI.js +125 -0
- package/dist/analytics-I4LZCRG2.js +433 -0
- package/dist/analytics-IFNBT7IM.js +1976 -0
- package/dist/animate-3LV3LHXQ.js +480 -0
- package/dist/assign-WBLSZNCO.js +77 -0
- package/dist/audience-size-LOX5BNXI.js +73 -0
- package/dist/audiences-3LRCLHTQ.js +85 -0
- package/dist/audiences-RPLVMO4H.js +268 -0
- package/dist/audiences-XEZHACKH.js +78 -0
- package/dist/audit-6AG6BPXQ.js +151 -0
- package/dist/audit-YEGQU474.js +88 -0
- package/dist/autocomplete-2QRU7ARD.js +111 -0
- package/dist/avatars-EIETXCF3.js +38 -0
- package/dist/bid-pricing-5LZFHQTS.js +100 -0
- package/dist/brand-CINQG3JG.js +22 -0
- package/dist/brief-WAQ2V6Q4.js +538 -0
- package/dist/brief-WAQ2V6Q4.js.map +1 -0
- package/dist/businesses-PRRYPR7H.js +53 -0
- package/dist/campaign-groups-5CMTEJZZ.js +95 -0
- package/dist/campaign-writes-4RMPHQCT.js +165 -0
- package/dist/campaign-writes-U5LTDTYK.js +170 -0
- package/dist/campaigns-4SOLY7OR.js +110 -0
- package/dist/campaigns-NFRLFNXI.js +107 -0
- package/dist/campaigns-PC7UAVXR.js +109 -0
- package/dist/campaigns-TFEQTSO3.js +76 -0
- package/dist/canvas-BPACZHNU.js +46 -0
- package/dist/capabilities-FNVTPCDT.js +144 -0
- package/dist/cards-WHMCSRZX.js +85 -0
- package/dist/catalog-RMMECI4Z.js +65 -0
- package/dist/catalog-RMMECI4Z.js.map +1 -0
- package/dist/catalogs-A7XMEEEP.js +128 -0
- package/dist/changes-J67WATHX.js +135 -0
- package/dist/chatgpt-4PEWDJKP.js +47 -0
- package/dist/chats-S5FCV7YO.js +262 -0
- package/dist/check-GCZ2ZBKH.js +104 -0
- package/dist/check-GCZ2ZBKH.js.map +1 -0
- package/dist/chunk-232YUPUI.js +125 -0
- package/dist/chunk-23H4ZJRP.js +136 -0
- package/dist/chunk-2DHHL4PU.js +156 -0
- package/dist/chunk-2DHHL4PU.js.map +1 -0
- package/dist/chunk-2FSEESJU.js +1744 -0
- package/dist/chunk-2FSEESJU.js.map +1 -0
- package/dist/chunk-3OCSWUHV.js +67 -0
- package/dist/chunk-3S5YZWB7.js +601 -0
- package/dist/chunk-3S5YZWB7.js.map +1 -0
- package/dist/chunk-3UXMQ3K2.js +274 -0
- package/dist/chunk-5NS4CNF6.js +1518 -0
- package/dist/chunk-5NS4CNF6.js.map +1 -0
- package/dist/chunk-5WMTPYKT.js +84 -0
- package/dist/chunk-65N4ZPQD.js +26 -0
- package/dist/chunk-65PUXMWE.js +167 -0
- package/dist/chunk-65PUXMWE.js.map +1 -0
- package/dist/chunk-6JWEGFM5.js +174 -0
- package/dist/chunk-6KK26F2T.js +46 -0
- package/dist/chunk-6KK26F2T.js.map +1 -0
- package/dist/chunk-7HJR5M4R.js +8843 -0
- package/dist/chunk-7HJR5M4R.js.map +1 -0
- package/dist/chunk-7LU7KARN.js +64 -0
- package/dist/chunk-7LU7KARN.js.map +1 -0
- package/dist/chunk-7RBJ2Z7Z.js +172 -0
- package/dist/chunk-7U3V64YT.js +344 -0
- package/dist/chunk-7U3V64YT.js.map +1 -0
- package/dist/chunk-ABXTGAG7.js +23 -0
- package/dist/chunk-ADSNY4KZ.js +399 -0
- package/dist/chunk-AHF6TQWB.js +392 -0
- package/dist/chunk-AIJBZSZV.js +224 -0
- package/dist/chunk-AIJBZSZV.js.map +1 -0
- package/dist/chunk-AQ5WISEG.js +98 -0
- package/dist/chunk-AS5VL32C.js +131 -0
- package/dist/chunk-AS5VL32C.js.map +1 -0
- package/dist/chunk-BFRIRZRZ.js +98 -0
- package/dist/chunk-BFZS3WHS.js +84 -0
- package/dist/chunk-BITS62MF.js +77 -0
- package/dist/chunk-BLAHHMPF.js +333 -0
- package/dist/chunk-BSEB55E6.js +148 -0
- package/dist/chunk-BSEB55E6.js.map +1 -0
- package/dist/chunk-C3TTE7GS.js +66 -0
- package/dist/chunk-C3TTE7GS.js.map +1 -0
- package/dist/chunk-CCIDHU6M.js +169 -0
- package/dist/chunk-CM6FCSWN.js +644 -0
- package/dist/chunk-CVBKW75S.js +296 -0
- package/dist/chunk-CXQRTLSQ.js +159 -0
- package/dist/chunk-D4I3KULJ.js +5367 -0
- package/dist/chunk-D4I3KULJ.js.map +1 -0
- package/dist/chunk-D4LKZJYJ.js +76 -0
- package/dist/chunk-D7KR6KXR.js +66 -0
- package/dist/chunk-DCTEL4KG.js +592 -0
- package/dist/chunk-DF22CTXE.js +225 -0
- package/dist/chunk-DF22CTXE.js.map +1 -0
- package/dist/chunk-DH5CKOYK.js +103 -0
- package/dist/chunk-DMVDVZJK.js +97 -0
- package/dist/chunk-DMVDVZJK.js.map +1 -0
- package/dist/chunk-DQC4NIJE.js +51 -0
- package/dist/chunk-DWX44QL6.js +75 -0
- package/dist/chunk-EE72SSB2.js +472 -0
- package/dist/chunk-FNA277HP.js +97 -0
- package/dist/chunk-FRK7SSEH.js +6306 -0
- package/dist/chunk-FRK7SSEH.js.map +1 -0
- package/dist/chunk-FU7HJWGM.js +26 -0
- package/dist/chunk-GDLQ6SGW.js +46 -0
- package/dist/chunk-GEKXIXMG.js +106 -0
- package/dist/chunk-GLW7UJLB.js +58 -0
- package/dist/chunk-GMSKPGLI.js +3846 -0
- package/dist/chunk-GMSKPGLI.js.map +1 -0
- package/dist/chunk-H5HDZ7IC.js +139 -0
- package/dist/chunk-HJQ7N7FC.js +8661 -0
- package/dist/chunk-HJQ7N7FC.js.map +1 -0
- package/dist/chunk-I5VZVQBZ.js +35 -0
- package/dist/chunk-IC6SDOED.js +45 -0
- package/dist/chunk-IG627WWY.js +23992 -0
- package/dist/chunk-IN4G7X6W.js +94 -0
- package/dist/chunk-IPLE5K5E.js +188 -0
- package/dist/chunk-IWWOGBGA.js +665 -0
- package/dist/chunk-JD4SABZC.js +942 -0
- package/dist/chunk-JD4SABZC.js.map +1 -0
- package/dist/chunk-JFA4R3KS.js +172 -0
- package/dist/chunk-JYBLCIRN.js +106 -0
- package/dist/chunk-K3TNTBZJ.js +52 -0
- package/dist/chunk-KCKC637S.js +122 -0
- package/dist/chunk-KCKC637S.js.map +1 -0
- package/dist/chunk-KPYDTIAI.js +317 -0
- package/dist/chunk-KPYDTIAI.js.map +1 -0
- package/dist/chunk-LCW3U4EA.js +25 -0
- package/dist/chunk-LD4CHA7U.js +89 -0
- package/dist/chunk-LD4CHA7U.js.map +1 -0
- package/dist/chunk-LS3A753J.js +225 -0
- package/dist/chunk-LS3A753J.js.map +1 -0
- package/dist/chunk-MI3JB5KB.js +76 -0
- package/dist/chunk-MIOOPOG2.js +547 -0
- package/dist/chunk-MJQBXFW6.js +74 -0
- package/dist/chunk-MMVLRUMK.js +612 -0
- package/dist/chunk-MMVLRUMK.js.map +1 -0
- package/dist/chunk-MPACDBH5.js +74 -0
- package/dist/chunk-MXWOYFI2.js +544 -0
- package/dist/chunk-N5O67GK5.js +215 -0
- package/dist/chunk-NBNLGJH5.js +97 -0
- package/dist/chunk-NBNLGJH5.js.map +1 -0
- package/dist/chunk-NCP6RD6A.js +433 -0
- package/dist/chunk-NNF4RARY.js +297 -0
- package/dist/chunk-NR2OVOTD.js +363 -0
- package/dist/chunk-NVGXYF6K.js +846 -0
- package/dist/chunk-OP7DNHD2.js +137 -0
- package/dist/chunk-ORQKMXHA.js +76 -0
- package/dist/chunk-P3TNRS56.js +149 -0
- package/dist/chunk-PQTY22FR.js +159 -0
- package/dist/chunk-PQTY22FR.js.map +1 -0
- package/dist/chunk-Q7YZL7PG.js +494 -0
- package/dist/chunk-QABSQADZ.js +56 -0
- package/dist/chunk-QVNSVFSD.js +91 -0
- package/dist/chunk-QVNSVFSD.js.map +1 -0
- package/dist/chunk-QVQKCVP7.js +85 -0
- package/dist/chunk-QVQKCVP7.js.map +1 -0
- package/dist/chunk-R2TAVQGZ.js +455 -0
- package/dist/chunk-R5WNYLG4.js +197 -0
- package/dist/chunk-RCSOG2DV.js +142 -0
- package/dist/chunk-RCSOG2DV.js.map +1 -0
- package/dist/chunk-RD2XXQW3.js +1599 -0
- package/dist/chunk-RDCYPWQZ.js +260 -0
- package/dist/chunk-RDCYPWQZ.js.map +1 -0
- package/dist/chunk-RLS5OPPZ.js +207 -0
- package/dist/chunk-RMLJNHCU.js +346 -0
- package/dist/chunk-RTWRNG3E.js +821 -0
- package/dist/chunk-RTWRNG3E.js.map +1 -0
- package/dist/chunk-S7A34DOA.js +111 -0
- package/dist/chunk-SFJW2KED.js +166 -0
- package/dist/chunk-SOKVXKRM.js +74 -0
- package/dist/chunk-STNCMKL6.js +191 -0
- package/dist/chunk-SWL4AAPP.js +320 -0
- package/dist/chunk-T6ATGN7Y.js +3187 -0
- package/dist/chunk-T6ATGN7Y.js.map +1 -0
- package/dist/chunk-TF4PGUO5.js +191 -0
- package/dist/chunk-TF4PGUO5.js.map +1 -0
- package/dist/chunk-TNOJ6O6B.js +61 -0
- package/dist/chunk-U2452GLO.js +1914 -0
- package/dist/chunk-U2452GLO.js.map +1 -0
- package/dist/chunk-ULPO72IQ.js +225 -0
- package/dist/chunk-UMZIQIWN.js +1079 -0
- package/dist/chunk-V7N666PJ.js +19 -0
- package/dist/chunk-WNJ5SYAG.js +275 -0
- package/dist/chunk-WNSE7N75.js +2123 -0
- package/dist/chunk-XDZVBX6L.js +220 -0
- package/dist/chunk-XGOEX2VJ.js +55 -0
- package/dist/chunk-XUB2EK65.js +57 -0
- package/dist/chunk-XUR4QWCS.js +206 -0
- package/dist/chunk-XZ4YMCZK.js +66 -0
- package/dist/chunk-Y3VRMFGF.js +42 -0
- package/dist/chunk-YD7BQDJ6.js +903 -0
- package/dist/chunk-ZBV5IV5T.js +843 -0
- package/dist/chunk-ZBV5IV5T.js.map +1 -0
- package/dist/claim-6MPQD43X.js +197 -0
- package/dist/cli.js +41 -41
- package/dist/client-WL2FKW4T.js +19 -0
- package/dist/code-NXN7QYKU.js +76 -0
- package/dist/companies-KRF2K4CA.js +195 -0
- package/dist/complete-V433ON5C.js +81 -0
- package/dist/config-VOF57KBL.js +88 -0
- package/dist/connect-QVIAM3GX.js +42 -0
- package/dist/content-KA25YYO3.js +85 -0
- package/dist/conversation-VZKBZZGG.js +93 -0
- package/dist/conversion-report-REOHVLCI.js +125 -0
- package/dist/conversion-upload-command-ASHA6T6H.js +438 -0
- package/dist/conversion-writes-JU7Q2MUO.js +120 -0
- package/dist/conversions-3ISBR3TS.js +76 -0
- package/dist/conversions-ZLC6YTJ5.js +135 -0
- package/dist/countries-XGMZWUGP.js +82 -0
- package/dist/create-B3QMYSIX.js +132 -0
- package/dist/create-IFCCMKFT.js +207 -0
- package/dist/create-R5P6JU5A.js +235 -0
- package/dist/create-SF6DOGDJ.js +59 -0
- package/dist/creatives-F3TMRTIR.js +58 -0
- package/dist/creatives-F3TMRTIR.js.map +1 -0
- package/dist/creatives-KD7MOCR3.js +182 -0
- package/dist/creatives-YJ3CXZQC.js +87 -0
- package/dist/credentials-2KJUKBMF.js +287 -0
- package/dist/critique-A2OEMGZS.js +227 -0
- package/dist/critique-A2OEMGZS.js.map +1 -0
- package/dist/critique-JVKJEBAC.js +1451 -0
- package/dist/critique-JVKJEBAC.js.map +1 -0
- package/dist/crm-GX72E2LT.js +224 -0
- package/dist/crm-ZYDNEME5.js +318 -0
- package/dist/crop-7UTYG7GS.js +113 -0
- package/dist/currency-CGDI2NXI.js +88 -0
- package/dist/custom-conversions-YRYE65PU.js +125 -0
- package/dist/customers-P4N4NXLJ.js +56 -0
- package/dist/decide-TWKH5QQU.js +199 -0
- package/dist/delete-2GIIUPA3.js +69 -0
- package/dist/delete-AK5IV44E.js +66 -0
- package/dist/delete-GLLYPNNB.js +71 -0
- package/dist/delete-J7DXPGKD.js +71 -0
- package/dist/delete-RS7RQDUX.js +54 -0
- package/dist/delete-S4VKH7IS.js +64 -0
- package/dist/demographics-IKWN2H3V.js +138 -0
- package/dist/describe-5QCPRSIG.js +97 -0
- package/dist/describe-L3UC6MIL.js +97 -0
- package/dist/dimensions-POH4JXEM.js +101 -0
- package/dist/discard-H6DOHJRG.js +66 -0
- package/dist/discover-L4TPEKGY.js +172 -0
- package/dist/discover-XAJKZCMM.js +93 -0
- package/dist/domain-US4KKAXC.js +98 -0
- package/dist/download-N4J5WFHD.js +299 -0
- package/dist/draft-BIQ3ZAYW.js +306 -0
- package/dist/draft-EWDOIXSH.js +233 -0
- package/dist/draft-IL37WDST.js +103 -0
- package/dist/draft-IZ4YLQRD.js +307 -0
- package/dist/draft-KDMYGLWN.js +100 -0
- package/dist/draft-OLFQZBWL.js +217 -0
- package/dist/draft-R32RFDCI.js +328 -0
- package/dist/draft-Y2QJE2NM.js +281 -0
- package/dist/engine/index.d.ts +31 -1
- package/dist/engine/index.js +15 -14
- package/dist/env-5MUVYE2L.js +51 -0
- package/dist/experiment-G3FQVAJU.js +1397 -0
- package/dist/export-OLDI32HM.js +168 -0
- package/dist/extract-PPS6ONQN.js +113 -0
- package/dist/facets-JBZQHN3D.js +114 -0
- package/dist/favorites-4ELADD3R.js +178 -0
- package/dist/feed-XIY5TVDL.js +177 -0
- package/dist/feedback-CCU6ECMQ.js +106 -0
- package/dist/feedback-CCU6ECMQ.js.map +1 -0
- package/dist/feedback-record-JCE3JWG6.js +260 -0
- package/dist/feedback-record-JCE3JWG6.js.map +1 -0
- package/dist/fetch-GOY6DQRL.js +176 -0
- package/dist/fetch-YWUVDMUH.js +139 -0
- package/dist/find-EVY4XEIQ.js +134 -0
- package/dist/fit-TVQ7RK52.js +62 -0
- package/dist/flows-274YPU6I.js +247 -0
- package/dist/follow-ZTPZKIMZ.js +94 -0
- package/dist/follow-competitors-6QDVQ4VJ.js +112 -0
- package/dist/following-PBZLZFGQ.js +113 -0
- package/dist/fonts-BMUNDGOZ.js +36 -0
- package/dist/forecast-F2CZSIMP.js +168 -0
- package/dist/forecast-W5F2MNOV.js +118 -0
- package/dist/funding-ULBMKUMW.js +85 -0
- package/dist/funnel-LEUXICXU.js +394 -0
- package/dist/ga4-2BL5YAYN.js +55 -0
- package/dist/generate-4HWNFAH3.js +263 -0
- package/dist/get-6RZU4M6W.js +63 -0
- package/dist/get-7GCEJ6KG.js +92 -0
- package/dist/get-MGDY5JYZ.js +79 -0
- package/dist/get-MZWUMHEF.js +61 -0
- package/dist/get-OAZZHUZP.js +59 -0
- package/dist/get-OHU2N7B7.js +63 -0
- package/dist/get-TY6AMFI4.js +56 -0
- package/dist/gif-NYZYV5RY.js +102 -0
- package/dist/gif-NYZYV5RY.js.map +1 -0
- package/dist/google-7STODZQR.js +136 -0
- package/dist/google-ZTTE34A4.js +3190 -0
- package/dist/google-ads-5ARKO757.js +195 -0
- package/dist/group-D5WXNFCP.js +43 -0
- package/dist/group-Y5PLETFT.js +43 -0
- package/dist/gsc-UU3T2C6B.js +30 -0
- package/dist/history-IQ33J5PB.js +67 -0
- package/dist/history-SU7VQCDJ.js +133 -0
- package/dist/hubspot-TJED44GO.js +779 -0
- package/dist/icon-GB7UH5RF.js +137 -0
- package/dist/ideas-UTSCGCT6.js +40 -0
- package/dist/images-ZMZ4WLYH.js +92 -0
- package/dist/images-ZMZ4WLYH.js.map +1 -0
- package/dist/improve-U5USRH4G.js +86 -0
- package/dist/ingest-DGDNZWEM.js +23 -0
- package/dist/ingest-SGBJ3NXX.js +107 -0
- package/dist/insights-4HT2NAYP.js +423 -0
- package/dist/insights-SQLE5NOJ.js +122 -0
- package/dist/inspect-BMQTTKMW.js +189 -0
- package/dist/inspiration-XQYHBJY2.js +53 -0
- package/dist/intent-LM36WK45.js +95 -0
- package/dist/job-CGQHEANB.js +202 -0
- package/dist/job-create-SZYJT2NC.js +109 -0
- package/dist/job-status-6LAKLCKH.js +74 -0
- package/dist/keep-3MJSHWU3.js +78 -0
- package/dist/keyword-gap-P652ODHN.js +130 -0
- package/dist/keyword-metrics-MQLGGJBT.js +197 -0
- package/dist/keywords-for-site-JL6H2YGU.js +128 -0
- package/dist/landing-AJO2BPC2.js +28 -0
- package/dist/landings-ZLKUP66P.js +151 -0
- package/dist/languages-3IJVDS5Z.js +55 -0
- package/dist/languages-HL42MI7H.js +40 -0
- package/dist/launches-RG2SWEXM.js +19 -0
- package/dist/layerize-SJYK6HPD.js +190 -0
- package/dist/leads-2XOSAYP4.js +293 -0
- package/dist/leads-H6JIWVI6.js +90 -0
- package/dist/learn-RGO5KDHS.js +204 -0
- package/dist/learn-RGO5KDHS.js.map +1 -0
- package/dist/library-Q4OU7VR7.js +109 -0
- package/dist/lighthouse-FALRSVQH.js +75 -0
- package/dist/line-item-writes-V7AKAHFC.js +208 -0
- package/dist/line-items-GAMKVVIQ.js +103 -0
- package/dist/link-Z5AQP6JN.js +64 -0
- package/dist/linkedin-7F6YVXQL.js +1045 -0
- package/dist/list-2ZTOMTES.js +65 -0
- package/dist/list-GK6LNWIW.js +76 -0
- package/dist/list-NLGM3QDP.js +303 -0
- package/dist/list-RR53EF3O.js +57 -0
- package/dist/list-SZH6TH74.js +64 -0
- package/dist/list-TB677Q2F.js +50 -0
- package/dist/list-VTVRZIYL.js +51 -0
- package/dist/list-XZVQWIJN.js +151 -0
- package/dist/locations-AEGZ36JH.js +40 -0
- package/dist/locations-YA7NZY44.js +67 -0
- package/dist/log-JM4VLJE4.js +92 -0
- package/dist/logo-YSNUUT33.js +18 -0
- package/dist/lookup-RH5N3OWJ.js +22 -0
- package/dist/make-X6IG6KAZ.js +1334 -0
- package/dist/make-X6IG6KAZ.js.map +1 -0
- package/dist/map-HRLUMCR2.js +433 -0
- package/dist/mcp-T6SAG4XB.js +463 -0
- package/dist/media-ES2UBGYW.js +15 -0
- package/dist/media-MPXEXN4O.js +89 -0
- package/dist/media-sources-7AS3274L.js +32 -0
- package/dist/members-J5KWXTXY.js +44 -0
- package/dist/meme-FMHHKWVU.js +100 -0
- package/dist/meme-FMHHKWVU.js.map +1 -0
- package/dist/meta-AOIPEDV5.js +69 -0
- package/dist/metrics-VDBJ6KL7.js +152 -0
- package/dist/models-2DQ5NBMT.js +155 -0
- package/dist/normalize-CHZB4QDD.js +141 -0
- package/dist/normalize-NR5RS3WR.js +806 -0
- package/dist/options-QLXFLESP.js +122 -0
- package/dist/organization-KEGKAP4P.js +328 -0
- package/dist/output-GWIP6ROX.js +24 -0
- package/dist/page-YWGBCN65.js +105 -0
- package/dist/pages-FTI44OSH.js +66 -0
- package/dist/performance-SPGPGXE5.js +24 -0
- package/dist/pinterest-J442QLQS.js +96 -0
- package/dist/pixels-6IUB3Y3H.js +60 -0
- package/dist/pixels-MBKR4XPX.js +108 -0
- package/dist/plan-YPE77T4R.js +207 -0
- package/dist/preview-V4YBD45S.js +169 -0
- package/dist/profile-S3MXS2VO.js +159 -0
- package/dist/promoted-tweet-writes-TRR3KPRJ.js +180 -0
- package/dist/promoted-tweets-XRYZNJI2.js +119 -0
- package/dist/properties-G3L2OAOL.js +101 -0
- package/dist/publish-V5YGMK53.js +341 -0
- package/dist/publish-V5YGMK53.js.map +1 -0
- package/dist/query-M3IO54U2.js +61 -0
- package/dist/query-WCB5W4NW.js +236 -0
- package/dist/query-YBS6ZQ75.js +247 -0
- package/dist/questionnaire-PAK4DALP.js +93 -0
- package/dist/read-LUTB3UOR.js +141 -0
- package/dist/reddit-STSECKMZ.js +26 -0
- package/dist/refresh-RQ3C2MHI.js +94 -0
- package/dist/release-UHGU5WBY.js +60 -0
- package/dist/relevant-pages-G6SNC73K.js +99 -0
- package/dist/remove-LTKICIIF.js +50 -0
- package/dist/remove-X6DNVS67.js +48 -0
- package/dist/reopen-BP5ERELB.js +63 -0
- package/dist/rerun-NR54OG3M.js +90 -0
- package/dist/rerun-NR54OG3M.js.map +1 -0
- package/dist/research-GOYMTKZM.js +262 -0
- package/dist/research-MBAPL35Y.js +62 -0
- package/dist/reset-Q62PEGOU.js +54 -0
- package/dist/reset-SJPGSQ7I.js +54 -0
- package/dist/resolve-R45W7QEQ.js +121 -0
- package/dist/retry-CD2Q2AJN.js +60 -0
- package/dist/retry-NBZ7Q6HK.js +62 -0
- package/dist/retry-failed-EJBP4236.js +45 -0
- package/dist/rules-SZIY67QF.js +96 -0
- package/dist/rules-SZIY67QF.js.map +1 -0
- package/dist/rules-add-KTLHU3YD.js +462 -0
- package/dist/rules-add-KTLHU3YD.js.map +1 -0
- package/dist/run-HCJKCEOL.js +66 -0
- package/dist/run-IIU2UVQU.js +65 -0
- package/dist/scaffold-ad-3VMAP5BF.js +1511 -0
- package/dist/scaffold-ad-3VMAP5BF.js.map +1 -0
- package/dist/scaffold-static-ad-Z7LO7PKI.js +1005 -0
- package/dist/scaffold-static-ad-Z7LO7PKI.js.map +1 -0
- package/dist/scaffold-video-SBSSR7TZ.js +883 -0
- package/dist/scaffold-video-SBSSR7TZ.js.map +1 -0
- package/dist/schedule-BSQHXJ5V.js +61 -0
- package/dist/schedule-IDZC6M32.js +66 -0
- package/dist/scheduled-agents-MFLMG34I.js +50 -0
- package/dist/schema-EFR7NGJG.js +69 -0
- package/dist/schema-IWPG3YSN.js +132 -0
- package/dist/scrape-J2Y7YZ4Z.js +2241 -0
- package/dist/screenshot-K7ZGTVTE.js +102 -0
- package/dist/search-CI7LEOOK.js +92 -0
- package/dist/search-EGI5K77S.js +174 -0
- package/dist/search-I6DRUXBX.js +224 -0
- package/dist/search-TTL7VQET.js +26 -0
- package/dist/search-VT2KUAH6.js +91 -0
- package/dist/search-copy-N2AIJNUH.js +168 -0
- package/dist/seeds-EYYQCMGF.js +101 -0
- package/dist/select-ON3KZEEK.js +101 -0
- package/dist/select-ON3KZEEK.js.map +1 -0
- package/dist/sends-RHVFV2XM.js +309 -0
- package/dist/sequences-5DUWNSWQ.js +146 -0
- package/dist/set-prompt-RHMZ7SFC.js +193 -0
- package/dist/set-prompt-RHMZ7SFC.js.map +1 -0
- package/dist/setup-links-5ILQNMFZ.js +141 -0
- package/dist/shared-NDRFKAH7.js +31 -0
- package/dist/site-LBXNVRPE.js +177 -0
- package/dist/sitemaps-QKKXMXMV.js +87 -0
- package/dist/sites-GRC6CCCK.js +101 -0
- package/dist/skills-UML6GSW6.js +47 -0
- package/dist/sources-GP4PUTX2.js +454 -0
- package/dist/sources-N4UANUHJ.js +30 -0
- package/dist/stale-OIOOAP2S.js +71 -0
- package/dist/stale-OIOOAP2S.js.map +1 -0
- package/dist/stats-RCLQE4HJ.js +34 -0
- package/dist/status-GSFMLC6W.js +62 -0
- package/dist/sticker-SINY47WT.js +94 -0
- package/dist/stock-ECRBD7RP.js +179 -0
- package/dist/studio-YB5WXQYC.js +49 -0
- package/dist/sync-2MFUI3ME.js +54 -0
- package/dist/sync-IE4AAVGY.js +265 -0
- package/dist/sync-LIV7FU4N.js +54 -0
- package/dist/sync-definition-5JO7QXX3.js +64 -0
- package/dist/tag-manager-G3LBQZUL.js +43 -0
- package/dist/tags-4JQX7HMT.js +26 -0
- package/dist/tags-6RQVXS47.js +224 -0
- package/dist/tags-AAIFQ6LS.js +20 -0
- package/dist/tags-F355NMIR.js +20 -0
- package/dist/tags-ZHCGHGYC.js +20 -0
- package/dist/targeting-constants-KEKYU5JQ.js +118 -0
- package/dist/targeting-criteria-6FY2JB3V.js +113 -0
- package/dist/targets-NI7TR4GV.js +103 -0
- package/dist/testimonials-G7CCH7VN.js +32 -0
- package/dist/themes-PXDXIKYR.js +94 -0
- package/dist/top-companies-YH2ZJEH5.js +108 -0
- package/dist/translate-K4D7KDYV.js +604 -0
- package/dist/translate-K4D7KDYV.js.map +1 -0
- package/dist/triggers-WYFM7PAH.js +142 -0
- package/dist/tweets-C3QUKS3I.js +123 -0
- package/dist/unfollow-ZI5QU7RD.js +46 -0
- package/dist/unlink-PTWUSM5B.js +67 -0
- package/dist/unstage-7F7JI6HY.js +95 -0
- package/dist/unstage-MCM6EZWK.js +85 -0
- package/dist/update-2BDIJDHN.js +188 -0
- package/dist/update-2BDIJDHN.js.map +1 -0
- package/dist/update-643S2MUW.js +63 -0
- package/dist/update-GUIP6G3N.js +152 -0
- package/dist/update-V6E3CIFD.js +98 -0
- package/dist/upload-3YJJ5VID.js +126 -0
- package/dist/upload-KO46L76G.js +150 -0
- package/dist/upscale-SJ7SCSRS.js +109 -0
- package/dist/url-options-LHS4SWWB.js +130 -0
- package/dist/url-params-2DKIXKHH.js +98 -0
- package/dist/use-6ULEM3WE.js +95 -0
- package/dist/validate-PEWGXGCR.js +117 -0
- package/dist/validate-PEWGXGCR.js.map +1 -0
- package/dist/variant-5TRRSYBB.js +338 -0
- package/dist/videos-KEDR4GG3.js +39 -0
- package/dist/view-ABSWZMXW.js +121 -0
- package/dist/viewer-check-TSH3SAYJ.js +80 -0
- package/dist/web-UOGBNAHR.js +140 -0
- package/dist/winners-KRISBKOR.js +113 -0
- package/dist/winning-ads-SGBI3WHK.js +84 -0
- package/dist/write-commands-E7JOB4HX.js +1015 -0
- package/dist/write-commands-HCQI4Y27.js +737 -0
- package/dist/write-commands-QCI6XBM7.js +206 -0
- package/dist/write-commands-RHCCPMAE.js +713 -0
- package/dist/x-UNSN57YP.js +47 -0
- package/package.json +2 -1
- package/dist/account-63NUWSXK.js +0 -49
- package/dist/account-IFB6V6GL.js +0 -80
- package/dist/account-JPLZDN6P.js +0 -79
- package/dist/account-reads-Y3T65EI4.js +0 -218
- package/dist/account-writes-7YZ7PTHF.js +0 -66
- package/dist/accounts-66KZC7QI.js +0 -114
- package/dist/accounts-A436U3XR.js +0 -77
- package/dist/accounts-CONSIJU6.js +0 -611
- package/dist/accounts-MVEZ2TRL.js +0 -75
- package/dist/accounts-T5DCHHZK.js +0 -115
- package/dist/actions-J2YTDYK4.js +0 -55
- package/dist/active-entities-QWPGPNGE.js +0 -103
- package/dist/activecampaign-W4YD73BL.js +0 -935
- package/dist/activities-FN7DOE5S.js +0 -74
- package/dist/ad-group-writes-JSOCSYYV.js +0 -170
- package/dist/ad-groups-UN52WNJN.js +0 -68
- package/dist/ad-writes-X23H4HLZ.js +0 -174
- package/dist/add-7EKI6ZA4.js +0 -97
- package/dist/add-NFBS2JQL.js +0 -104
- package/dist/add-SXFET7AD.js +0 -302
- package/dist/add-ZTXN775K.js +0 -105
- package/dist/add-accounts-PEJLMYWR.js +0 -91
- package/dist/ads-FOJ6P4OA.js +0 -128
- package/dist/ads-MKMWS36P.js +0 -113
- package/dist/ads-NEJKXB4L.js +0 -77
- package/dist/ads-QDFOWMSP.js +0 -40
- package/dist/adsets-TIHFYWOU.js +0 -176
- package/dist/advertisers-6ASS5GMI.js +0 -120
- package/dist/advertisers-E77XAYCQ.js +0 -125
- package/dist/analytics-DZJDNCAK.js +0 -1976
- package/dist/analytics-VTFXYOVF.js +0 -433
- package/dist/animate-3H3TL3N6.js +0 -480
- package/dist/assign-2NNSXCTL.js +0 -77
- package/dist/audience-size-YAUL5I4L.js +0 -73
- package/dist/audiences-BWDG2R2U.js +0 -268
- package/dist/audiences-GHMNXDPR.js +0 -85
- package/dist/audiences-Q7OCAMAQ.js +0 -78
- package/dist/audit-DCVOOFPI.js +0 -151
- package/dist/audit-HG53XQJK.js +0 -88
- package/dist/autocomplete-6VBDEE6O.js +0 -111
- package/dist/avatars-AVLB3D5I.js +0 -38
- package/dist/bid-pricing-GHWQIWCX.js +0 -100
- package/dist/brand-PPMZKVFC.js +0 -22
- package/dist/brief-ZUY55FHQ.js +0 -490
- package/dist/brief-ZUY55FHQ.js.map +0 -1
- package/dist/businesses-24QYU6BL.js +0 -53
- package/dist/campaign-groups-RXN3P22B.js +0 -95
- package/dist/campaign-writes-7UHMSPJ3.js +0 -170
- package/dist/campaign-writes-FZ2U5IYO.js +0 -165
- package/dist/campaigns-C56DUMH6.js +0 -107
- package/dist/campaigns-DJV4W6UP.js +0 -76
- package/dist/campaigns-WTZBLGVX.js +0 -110
- package/dist/campaigns-XNS24UNF.js +0 -109
- package/dist/canvas-P64D7YZ7.js +0 -46
- package/dist/capabilities-LGQT5ONL.js +0 -144
- package/dist/cards-IO2Q423H.js +0 -85
- package/dist/catalog-X3VJFC74.js +0 -64
- package/dist/catalog-X3VJFC74.js.map +0 -1
- package/dist/catalogs-2HT3VRRI.js +0 -128
- package/dist/changes-AZ6EUVFN.js +0 -135
- package/dist/chatgpt-M27OEM7J.js +0 -47
- package/dist/chats-YD36KDU7.js +0 -262
- package/dist/chunk-22WY4M2Y.js +0 -207
- package/dist/chunk-26HCUIW2.js +0 -166
- package/dist/chunk-2SDC7WNS.js +0 -817
- package/dist/chunk-2SDC7WNS.js.map +0 -1
- package/dist/chunk-2VRD3HSQ.js +0 -60
- package/dist/chunk-2VRD3HSQ.js.map +0 -1
- package/dist/chunk-2XQ5HU6D.js +0 -3088
- package/dist/chunk-2XQ5HU6D.js.map +0 -1
- package/dist/chunk-3UA4THEF.js +0 -76
- package/dist/chunk-3YSLIBIM.js +0 -6667
- package/dist/chunk-3YSLIBIM.js.map +0 -1
- package/dist/chunk-4EPGI6I2.js +0 -76
- package/dist/chunk-4YEZLIQD.js +0 -159
- package/dist/chunk-53JBNG5Q.js +0 -57
- package/dist/chunk-5ADTL2LR.js +0 -188
- package/dist/chunk-5HABWBQX.js +0 -139
- package/dist/chunk-5HYSKH77.js +0 -315
- package/dist/chunk-5HYSKH77.js.map +0 -1
- package/dist/chunk-5TV4GYP2.js +0 -1830
- package/dist/chunk-5TV4GYP2.js.map +0 -1
- package/dist/chunk-6M6HUJ55.js +0 -474
- package/dist/chunk-6M6HUJ55.js.map +0 -1
- package/dist/chunk-6YZNHMPJ.js +0 -74
- package/dist/chunk-7ANWFQEA.js +0 -220
- package/dist/chunk-7FKRKMGL.js +0 -133
- package/dist/chunk-7FKRKMGL.js.map +0 -1
- package/dist/chunk-7WZHO6W3.js +0 -225
- package/dist/chunk-A5VAM472.js +0 -6242
- package/dist/chunk-A5VAM472.js.map +0 -1
- package/dist/chunk-AAF7HL4I.js +0 -320
- package/dist/chunk-ANWV2VTO.js +0 -136
- package/dist/chunk-ANYMWCST.js +0 -2122
- package/dist/chunk-AQADZOTG.js +0 -137
- package/dist/chunk-AQYH6C32.js +0 -544
- package/dist/chunk-BODRDUYQ.js +0 -111
- package/dist/chunk-BOHHB74V.js +0 -275
- package/dist/chunk-BPPT7YVK.js +0 -274
- package/dist/chunk-BWAFZSZ4.js +0 -94
- package/dist/chunk-CIWI7LHO.js +0 -191
- package/dist/chunk-CLST7PLN.js +0 -26
- package/dist/chunk-CMNVR6DX.js +0 -486
- package/dist/chunk-CMNVR6DX.js.map +0 -1
- package/dist/chunk-CPTOHQSJ.js +0 -296
- package/dist/chunk-D5GVSJBK.js +0 -66
- package/dist/chunk-DWVNYWWQ.js +0 -23
- package/dist/chunk-EBC64WAG.js +0 -74
- package/dist/chunk-EK2CTQIR.js +0 -1079
- package/dist/chunk-EMPXRKIM.js +0 -644
- package/dist/chunk-EQ74MEJN.js +0 -98
- package/dist/chunk-ETFAIX4L.js +0 -74
- package/dist/chunk-EYUFEDDT.js +0 -297
- package/dist/chunk-FDPBTKXZ.js +0 -25
- package/dist/chunk-GAD2NYL4.js +0 -1442
- package/dist/chunk-GAD2NYL4.js.map +0 -1
- package/dist/chunk-GRL25RKS.js +0 -4408
- package/dist/chunk-GRL25RKS.js.map +0 -1
- package/dist/chunk-GUMLW3YA.js +0 -433
- package/dist/chunk-H5CGVMQW.js +0 -472
- package/dist/chunk-HDQBILJR.js +0 -45
- package/dist/chunk-HH5PFZ7U.js +0 -84
- package/dist/chunk-HKR7VCFK.js +0 -42
- package/dist/chunk-HSRZIRDM.js +0 -197
- package/dist/chunk-IHK2VONG.js +0 -903
- package/dist/chunk-JOXSQDDP.js +0 -455
- package/dist/chunk-JRLGQA2T.js +0 -333
- package/dist/chunk-JSELMKJJ.js +0 -92
- package/dist/chunk-JSELMKJJ.js.map +0 -1
- package/dist/chunk-JVVPLTOK.js +0 -216
- package/dist/chunk-JVVPLTOK.js.map +0 -1
- package/dist/chunk-KMKELX5X.js +0 -363
- package/dist/chunk-KODTY7PB.js +0 -215
- package/dist/chunk-L4LLNGJG.js +0 -111
- package/dist/chunk-L4LLNGJG.js.map +0 -1
- package/dist/chunk-LEGVJCL4.js +0 -56
- package/dist/chunk-LFMKBF6Q.js +0 -206
- package/dist/chunk-LNJNZ4KQ.js +0 -392
- package/dist/chunk-LOTQBFUP.js +0 -106
- package/dist/chunk-LPBLKGH7.js +0 -106
- package/dist/chunk-LWOAW25O.js +0 -547
- package/dist/chunk-LXAODGOM.js +0 -51
- package/dist/chunk-MN25G3MA.js +0 -494
- package/dist/chunk-MUHPBWE5.js +0 -35
- package/dist/chunk-NFSLRRIE.js +0 -77
- package/dist/chunk-NKXH3I65.js +0 -1743
- package/dist/chunk-NKXH3I65.js.map +0 -1
- package/dist/chunk-NRRNY3TZ.js +0 -55
- package/dist/chunk-O6VUX3O5.js +0 -52
- package/dist/chunk-OQAE4GPV.js +0 -19
- package/dist/chunk-OST3RA6Q.js +0 -610
- package/dist/chunk-OST3RA6Q.js.map +0 -1
- package/dist/chunk-OWUZN2NC.js +0 -169
- package/dist/chunk-PBC63KPH.js +0 -337
- package/dist/chunk-PBC63KPH.js.map +0 -1
- package/dist/chunk-PWABS2DB.js +0 -172
- package/dist/chunk-QBCPZFAV.js +0 -23992
- package/dist/chunk-QEZEXMRB.js +0 -96
- package/dist/chunk-QEZEXMRB.js.map +0 -1
- package/dist/chunk-QGWCBGEC.js +0 -1599
- package/dist/chunk-QKUBK3AD.js +0 -97
- package/dist/chunk-QNH5NCLM.js +0 -67
- package/dist/chunk-QNLWBJUR.js +0 -58
- package/dist/chunk-QSSYLT3W.js +0 -399
- package/dist/chunk-RJFM6TJC.js +0 -76
- package/dist/chunk-RKPSE27R.js +0 -98
- package/dist/chunk-S6ODQYTC.js +0 -96
- package/dist/chunk-S6ODQYTC.js.map +0 -1
- package/dist/chunk-SBN5UIQY.js +0 -665
- package/dist/chunk-SG4BABZ7.js +0 -592
- package/dist/chunk-TWXM7HVR.js +0 -149
- package/dist/chunk-U6RTBCU7.js +0 -26
- package/dist/chunk-UARL36OD.js +0 -846
- package/dist/chunk-UDG37PC2.js +0 -174
- package/dist/chunk-UEC4JUK6.js +0 -3151
- package/dist/chunk-UEC4JUK6.js.map +0 -1
- package/dist/chunk-UR4PSKOP.js +0 -103
- package/dist/chunk-UW7PZFWZ.js +0 -75
- package/dist/chunk-UWTAQM4W.js +0 -160
- package/dist/chunk-UWTAQM4W.js.map +0 -1
- package/dist/chunk-V3NGFNHO.js +0 -509
- package/dist/chunk-V3NGFNHO.js.map +0 -1
- package/dist/chunk-VDAYKWVH.js +0 -125
- package/dist/chunk-VX45CG4L.js +0 -61
- package/dist/chunk-VY5CTURR.js +0 -46
- package/dist/chunk-WOTX7TNV.js +0 -84
- package/dist/chunk-XO3GZLWQ.js +0 -5181
- package/dist/chunk-XO3GZLWQ.js.map +0 -1
- package/dist/chunk-XWB2L3HS.js +0 -66
- package/dist/chunk-YDOZX6E5.js +0 -304
- package/dist/chunk-YDOZX6E5.js.map +0 -1
- package/dist/chunk-YQDRMOMQ.js +0 -346
- package/dist/chunk-ZNEUUBRZ.js +0 -172
- package/dist/claim-RDP6PVKV.js +0 -197
- package/dist/client-TL7BITWM.js +0 -19
- package/dist/code-ORY2WROG.js +0 -76
- package/dist/companies-WSHYZ557.js +0 -195
- package/dist/complete-MJMDSDTL.js +0 -81
- package/dist/config-FMDQ323H.js +0 -88
- package/dist/connect-447TO57M.js +0 -42
- package/dist/content-ZQB6PXGX.js +0 -85
- package/dist/conversation-22J2PEAU.js +0 -93
- package/dist/conversion-report-U4UFXSD2.js +0 -125
- package/dist/conversion-upload-command-INQX73AK.js +0 -438
- package/dist/conversion-writes-MCKROLRA.js +0 -120
- package/dist/conversions-KNLCEM2G.js +0 -135
- package/dist/conversions-OPNDVQ56.js +0 -76
- package/dist/countries-AZ3XSZVM.js +0 -82
- package/dist/create-AVOJFXDX.js +0 -235
- package/dist/create-LP4QECLS.js +0 -59
- package/dist/create-P42BMP2W.js +0 -132
- package/dist/create-XUD5CW7C.js +0 -207
- package/dist/creatives-43I65CHD.js +0 -87
- package/dist/creatives-RX3U2DWI.js +0 -182
- package/dist/creatives-TUNKTWAB.js +0 -51
- package/dist/creatives-TUNKTWAB.js.map +0 -1
- package/dist/credentials-FS5XLAEX.js +0 -287
- package/dist/critique-BNEG5CZK.js +0 -1449
- package/dist/critique-BNEG5CZK.js.map +0 -1
- package/dist/critique-OQWHF4SK.js +0 -213
- package/dist/critique-OQWHF4SK.js.map +0 -1
- package/dist/crm-3373VMGE.js +0 -224
- package/dist/crm-HLPVTUIM.js +0 -318
- package/dist/crop-Q2GJLOHE.js +0 -113
- package/dist/currency-SVDR5N7L.js +0 -88
- package/dist/custom-conversions-5NJNPZKM.js +0 -125
- package/dist/customers-UCJBL2IP.js +0 -56
- package/dist/decide-PCJTFCWC.js +0 -199
- package/dist/delete-7J5VDP6V.js +0 -66
- package/dist/delete-7K4KFPUT.js +0 -69
- package/dist/delete-GOA4Y562.js +0 -71
- package/dist/delete-I2SIRTMZ.js +0 -71
- package/dist/delete-UCIUYLIT.js +0 -54
- package/dist/delete-ZKWLHEZT.js +0 -64
- package/dist/demographics-AJPJPJKY.js +0 -138
- package/dist/describe-CRTFAH6Y.js +0 -97
- package/dist/describe-OAB2FJYK.js +0 -97
- package/dist/dimensions-PFGHRZ5T.js +0 -101
- package/dist/discard-H32UEHFB.js +0 -66
- package/dist/discover-IOJZYJ6B.js +0 -172
- package/dist/discover-R3EUUGRZ.js +0 -93
- package/dist/domain-Q42XWULH.js +0 -98
- package/dist/download-2HGDCPR7.js +0 -299
- package/dist/draft-3KLT2YHI.js +0 -233
- package/dist/draft-3YDWWRPY.js +0 -328
- package/dist/draft-7O4ABIKK.js +0 -100
- package/dist/draft-DK4NZ6PW.js +0 -281
- package/dist/draft-ONDP2XRS.js +0 -306
- package/dist/draft-PQGTIABK.js +0 -103
- package/dist/draft-SRMHEIRG.js +0 -307
- package/dist/draft-ZVMS4RFF.js +0 -217
- package/dist/env-NPSYSFXD.js +0 -51
- package/dist/experiment-V57PLATO.js +0 -1397
- package/dist/export-UN2PTCNO.js +0 -168
- package/dist/extract-5JOFQZVU.js +0 -113
- package/dist/facets-BFKYZCGA.js +0 -114
- package/dist/favorites-4AWW5F5B.js +0 -178
- package/dist/feed-AK3IFTAL.js +0 -177
- package/dist/feedback-R3G4EDCT.js +0 -66
- package/dist/feedback-R3G4EDCT.js.map +0 -1
- package/dist/feedback-record-FJSCR6FW.js +0 -175
- package/dist/feedback-record-FJSCR6FW.js.map +0 -1
- package/dist/fetch-6ALLGDRN.js +0 -139
- package/dist/fetch-6SUFMXRQ.js +0 -176
- package/dist/find-22HWPRFY.js +0 -134
- package/dist/fit-S4RO2DMX.js +0 -45
- package/dist/flows-OFARDYXZ.js +0 -247
- package/dist/follow-IUW3P6KH.js +0 -94
- package/dist/follow-competitors-YDF5WM4K.js +0 -112
- package/dist/following-PNOYUSHX.js +0 -113
- package/dist/fonts-T4M2DIJV.js +0 -34
- package/dist/forecast-BA26XWJG.js +0 -118
- package/dist/forecast-NHG3UHOP.js +0 -168
- package/dist/funding-WSJI56OH.js +0 -85
- package/dist/funnel-RFQFRWPN.js +0 -394
- package/dist/ga4-4W3KJIS5.js +0 -55
- package/dist/generate-3MC7WDL2.js +0 -263
- package/dist/get-2W45IBSR.js +0 -56
- package/dist/get-4DJXDO42.js +0 -61
- package/dist/get-4LG7Q6AQ.js +0 -79
- package/dist/get-BK4MBGQF.js +0 -59
- package/dist/get-P5ZTH7RQ.js +0 -63
- package/dist/get-PTOW6PVF.js +0 -63
- package/dist/get-SR2NWOPT.js +0 -92
- package/dist/gif-L6RYCB6L.js +0 -94
- package/dist/gif-L6RYCB6L.js.map +0 -1
- package/dist/google-EMSAXPVB.js +0 -136
- package/dist/google-XE35SF3Z.js +0 -3190
- package/dist/google-ads-VTOZZ4B5.js +0 -195
- package/dist/group-EUYJJ4LI.js +0 -43
- package/dist/group-MBRA2QID.js +0 -43
- package/dist/gsc-B3NPUNI6.js +0 -30
- package/dist/history-4S3YEIPK.js +0 -67
- package/dist/history-PGNCHCSU.js +0 -133
- package/dist/hubspot-QILJD6UV.js +0 -779
- package/dist/icon-4DAXBICB.js +0 -137
- package/dist/ideas-4TZUGXTG.js +0 -32
- package/dist/images-EWHRAJ46.js +0 -90
- package/dist/images-EWHRAJ46.js.map +0 -1
- package/dist/improve-U2RA5DPI.js +0 -86
- package/dist/ingest-DD6KXDYS.js +0 -107
- package/dist/ingest-HIE4SAEY.js +0 -23
- package/dist/insights-HQGBM6VA.js +0 -423
- package/dist/insights-K2CMI3K5.js +0 -122
- package/dist/inspect-5XJ3GTBQ.js +0 -189
- package/dist/inspiration-TRMFE64K.js +0 -53
- package/dist/intent-2EWV4KXW.js +0 -95
- package/dist/job-7GDSDRM4.js +0 -202
- package/dist/job-create-PE7G64WC.js +0 -109
- package/dist/job-status-LUSCFLZ2.js +0 -74
- package/dist/keep-5NFHEILH.js +0 -78
- package/dist/keyword-gap-T22T7RN6.js +0 -130
- package/dist/keyword-metrics-MGCBJBWU.js +0 -197
- package/dist/keywords-for-site-MZWJ7HBX.js +0 -128
- package/dist/landing-LIS4NCGW.js +0 -28
- package/dist/landings-ZR4YMEPV.js +0 -151
- package/dist/languages-HXAZNLNU.js +0 -55
- package/dist/languages-VLMJOAJN.js +0 -40
- package/dist/launches-T5LAIOYS.js +0 -19
- package/dist/layerize-24PQKKPB.js +0 -190
- package/dist/leads-EDKSVSWP.js +0 -293
- package/dist/leads-TSNX372E.js +0 -90
- package/dist/learn-N3JFZXAL.js +0 -203
- package/dist/learn-N3JFZXAL.js.map +0 -1
- package/dist/library-ZHREUZMU.js +0 -109
- package/dist/lighthouse-E2NTHAO4.js +0 -75
- package/dist/line-item-writes-H2ZFXYH3.js +0 -208
- package/dist/line-items-JBL7LVCS.js +0 -103
- package/dist/link-THBFB2H2.js +0 -64
- package/dist/linkedin-PVGZWXQJ.js +0 -1045
- package/dist/list-37F6C6P5.js +0 -57
- package/dist/list-7EEDCI3T.js +0 -51
- package/dist/list-E7CJMIGC.js +0 -76
- package/dist/list-EIEZNGQ4.js +0 -64
- package/dist/list-HA2NITR3.js +0 -50
- package/dist/list-LPFAPCN4.js +0 -151
- package/dist/list-LS6TUGD5.js +0 -303
- package/dist/list-TG6LBHCV.js +0 -65
- package/dist/locations-VYIDAVD4.js +0 -67
- package/dist/locations-ZWTDUUGL.js +0 -40
- package/dist/log-NX7ITJM2.js +0 -92
- package/dist/logo-SHQJHJK7.js +0 -18
- package/dist/lookup-TWSJ7KRT.js +0 -22
- package/dist/make-DBQMLTEI.js +0 -633
- package/dist/make-DBQMLTEI.js.map +0 -1
- package/dist/map-TI3YWRBW.js +0 -433
- package/dist/mcp-5DZTEDYI.js +0 -463
- package/dist/media-LDVWXWWZ.js +0 -15
- package/dist/media-TNB4DLTJ.js +0 -89
- package/dist/media-sources-QYRHVUBJ.js +0 -32
- package/dist/members-RV546WDM.js +0 -44
- package/dist/meta-RAVCXVZA.js +0 -69
- package/dist/metrics-2VB46SDT.js +0 -152
- package/dist/models-TYRVCPS2.js +0 -155
- package/dist/normalize-KKCNCXI2.js +0 -141
- package/dist/normalize-Q7EN7JIF.js +0 -806
- package/dist/options-UMDGX464.js +0 -122
- package/dist/organization-KQHJ77CV.js +0 -328
- package/dist/output-NHMCVVUU.js +0 -24
- package/dist/page-5PCVZ7HS.js +0 -105
- package/dist/pages-DDXB4NQ4.js +0 -66
- package/dist/performance-SVWX2S6E.js +0 -24
- package/dist/pinterest-KQYSCTVQ.js +0 -96
- package/dist/pixels-GH522EYV.js +0 -108
- package/dist/pixels-HJYPX6RR.js +0 -60
- package/dist/plan-ZS7SOXL6.js +0 -207
- package/dist/preview-W4VKXOCT.js +0 -169
- package/dist/profile-FSB4RT55.js +0 -159
- package/dist/promoted-tweet-writes-XPRWBI7F.js +0 -180
- package/dist/promoted-tweets-W7PCLJMU.js +0 -119
- package/dist/properties-V74I56UK.js +0 -101
- package/dist/publish-E4M7QXTR.js +0 -322
- package/dist/publish-E4M7QXTR.js.map +0 -1
- package/dist/query-5F5MBR7H.js +0 -247
- package/dist/query-KBXZD4SW.js +0 -61
- package/dist/query-SFNCXH4H.js +0 -236
- package/dist/questionnaire-JK5JLQXK.js +0 -93
- package/dist/read-LGRFU7XB.js +0 -141
- package/dist/reddit-BJDU3BO7.js +0 -26
- package/dist/refresh-OTR4EWLI.js +0 -94
- package/dist/release-QJ4P2AVK.js +0 -60
- package/dist/relevant-pages-VMNEEEJK.js +0 -99
- package/dist/remove-BNO3BWM5.js +0 -50
- package/dist/remove-PIHTPIHM.js +0 -48
- package/dist/reopen-BA76RSLQ.js +0 -63
- package/dist/rerun-U4I6RPRC.js +0 -84
- package/dist/rerun-U4I6RPRC.js.map +0 -1
- package/dist/research-3ATNYHRA.js +0 -262
- package/dist/research-CYZEWHHZ.js +0 -62
- package/dist/reset-HGTZIAHW.js +0 -54
- package/dist/reset-NM33L5LY.js +0 -54
- package/dist/resolve-L2A3HC56.js +0 -121
- package/dist/retry-C3PBVY3I.js +0 -60
- package/dist/retry-ID7ZKLBK.js +0 -62
- package/dist/retry-failed-XTYV3QJS.js +0 -45
- package/dist/run-DI4BRLKS.js +0 -66
- package/dist/run-IE4GVP4I.js +0 -59
- package/dist/scaffold-ad-VQRC2NA6.js +0 -1548
- package/dist/scaffold-ad-VQRC2NA6.js.map +0 -1
- package/dist/scaffold-static-ad-B4TEGMSE.js +0 -971
- package/dist/scaffold-static-ad-B4TEGMSE.js.map +0 -1
- package/dist/scaffold-video-BJLKBATO.js +0 -872
- package/dist/scaffold-video-BJLKBATO.js.map +0 -1
- package/dist/schedule-OFYLBZT6.js +0 -61
- package/dist/schedule-WSO7ETS6.js +0 -66
- package/dist/scheduled-agents-X2U7J42A.js +0 -50
- package/dist/schema-CULVYXO7.js +0 -132
- package/dist/schema-DL34A626.js +0 -69
- package/dist/scrape-ZG2OWZL4.js +0 -2241
- package/dist/screenshot-GJUY7FCW.js +0 -102
- package/dist/search-2BJ4OLMX.js +0 -224
- package/dist/search-52CSDYJS.js +0 -91
- package/dist/search-FHSQYZOC.js +0 -92
- package/dist/search-QDQNZ63X.js +0 -174
- package/dist/search-ZAY2QV3Y.js +0 -26
- package/dist/search-copy-O5AOEBXC.js +0 -168
- package/dist/seeds-XY3EZ33U.js +0 -101
- package/dist/select-X3FT42OL.js +0 -94
- package/dist/select-X3FT42OL.js.map +0 -1
- package/dist/sends-GECHL3NK.js +0 -309
- package/dist/sequences-5BB4S63A.js +0 -146
- package/dist/set-prompt-C7HSNTIA.js +0 -185
- package/dist/set-prompt-C7HSNTIA.js.map +0 -1
- package/dist/setup-links-ZK6L7GQD.js +0 -141
- package/dist/shared-JDIL3BNQ.js +0 -31
- package/dist/site-6Z5A3G5J.js +0 -177
- package/dist/sitemaps-UQJFRA2W.js +0 -87
- package/dist/sites-ZNNEPEGI.js +0 -101
- package/dist/skills-WRKEF2Q4.js +0 -47
- package/dist/sources-7QRFH5AB.js +0 -454
- package/dist/sources-B2L6X7ZE.js +0 -30
- package/dist/stale-ZGIUVXGA.js +0 -63
- package/dist/stale-ZGIUVXGA.js.map +0 -1
- package/dist/stats-QFBTSDVV.js +0 -34
- package/dist/status-SW3PYV6Q.js +0 -62
- package/dist/sticker-2JQUC7XO.js +0 -94
- package/dist/stock-W3SNJCBV.js +0 -179
- package/dist/studio-2GAZ6QOH.js +0 -49
- package/dist/sync-4LHVBFMZ.js +0 -265
- package/dist/sync-K74WY3AT.js +0 -54
- package/dist/sync-NAJQQ6NQ.js +0 -54
- package/dist/sync-definition-KKW7R7QS.js +0 -54
- package/dist/tag-manager-MNGOJ3GC.js +0 -43
- package/dist/tags-4XQ5MEDJ.js +0 -20
- package/dist/tags-GJ5MIA6X.js +0 -20
- package/dist/tags-JXLOCBQ6.js +0 -20
- package/dist/tags-NMZ2NGN2.js +0 -224
- package/dist/tags-V2SSR5XY.js +0 -26
- package/dist/targeting-constants-RQT4GLUA.js +0 -118
- package/dist/targeting-criteria-D2ZMGXLI.js +0 -113
- package/dist/targets-6QA6MIQU.js +0 -103
- package/dist/testimonials-LBGJKESG.js +0 -32
- package/dist/themes-VVID6Y73.js +0 -94
- package/dist/top-companies-6D6YFQAB.js +0 -108
- package/dist/translate-R4Y2JVXC.js +0 -598
- package/dist/translate-R4Y2JVXC.js.map +0 -1
- package/dist/triggers-MDZNDNCU.js +0 -142
- package/dist/tweets-L4CXZLKQ.js +0 -123
- package/dist/unfollow-5T2CT3EF.js +0 -46
- package/dist/unlink-WS7DVDLH.js +0 -67
- package/dist/unstage-K3I2TLRR.js +0 -85
- package/dist/unstage-NEX3EIJX.js +0 -95
- package/dist/update-HPSXO5WB.js +0 -63
- package/dist/update-J6FHMXWL.js +0 -152
- package/dist/update-LCLRO26T.js +0 -155
- package/dist/update-LCLRO26T.js.map +0 -1
- package/dist/update-LZVLBRAX.js +0 -98
- package/dist/upload-C2K66PR3.js +0 -150
- package/dist/upload-XD7N4PJS.js +0 -126
- package/dist/upscale-SGBB4GWF.js +0 -109
- package/dist/url-options-LUKI4Y46.js +0 -130
- package/dist/url-params-U5DW22SR.js +0 -98
- package/dist/use-XGTUHBUL.js +0 -95
- package/dist/validate-PRT6ZD72.js +0 -88
- package/dist/validate-PRT6ZD72.js.map +0 -1
- package/dist/variant-DQRDW6IZ.js +0 -338
- package/dist/videos-KCXSXYJK.js +0 -39
- package/dist/view-KJ6YNRXB.js +0 -121
- package/dist/viewer-check-7DZQDGD3.js +0 -68
- package/dist/web-W2TTELHS.js +0 -140
- package/dist/winners-LD6PFXAS.js +0 -113
- package/dist/winning-ads-YPQY6GVU.js +0 -84
- package/dist/write-commands-CKMHQ4YY.js +0 -737
- package/dist/write-commands-NW5CC3DP.js +0 -206
- package/dist/write-commands-RLEYECTB.js +0 -713
- package/dist/write-commands-SPTWBMLY.js +0 -1015
- package/dist/x-2Y2DGMPG.js +0 -47
- /package/dist/{account-63NUWSXK.js.map → account-7LUQWY6Q.js.map} +0 -0
- /package/dist/{account-JPLZDN6P.js.map → account-VH2AATWI.js.map} +0 -0
- /package/dist/{account-IFB6V6GL.js.map → account-Z65CPOWE.js.map} +0 -0
- /package/dist/{account-reads-Y3T65EI4.js.map → account-reads-GYI2SS6T.js.map} +0 -0
- /package/dist/{account-writes-7YZ7PTHF.js.map → account-writes-4N2MA2ZR.js.map} +0 -0
- /package/dist/{accounts-T5DCHHZK.js.map → accounts-E4TVYTUR.js.map} +0 -0
- /package/dist/{accounts-66KZC7QI.js.map → accounts-SMB3TNXX.js.map} +0 -0
- /package/dist/{accounts-CONSIJU6.js.map → accounts-SPLE7URQ.js.map} +0 -0
- /package/dist/{accounts-MVEZ2TRL.js.map → accounts-UA2ZWRN4.js.map} +0 -0
- /package/dist/{accounts-A436U3XR.js.map → accounts-XG472YLB.js.map} +0 -0
- /package/dist/{actions-J2YTDYK4.js.map → actions-KQTXBNJU.js.map} +0 -0
- /package/dist/{active-entities-QWPGPNGE.js.map → active-entities-MCL7UEGV.js.map} +0 -0
- /package/dist/{activecampaign-W4YD73BL.js.map → activecampaign-42JXANUA.js.map} +0 -0
- /package/dist/{activities-FN7DOE5S.js.map → activities-IQPJPP4B.js.map} +0 -0
- /package/dist/{ad-group-writes-JSOCSYYV.js.map → ad-group-writes-EUTMPBMK.js.map} +0 -0
- /package/dist/{ad-groups-UN52WNJN.js.map → ad-groups-OVPAI5RM.js.map} +0 -0
- /package/dist/{ad-writes-X23H4HLZ.js.map → ad-writes-DACTYFEO.js.map} +0 -0
- /package/dist/{add-ZTXN775K.js.map → add-5IGUQHVZ.js.map} +0 -0
- /package/dist/{add-7EKI6ZA4.js.map → add-BK5AQI5A.js.map} +0 -0
- /package/dist/{add-NFBS2JQL.js.map → add-C3FQ5D62.js.map} +0 -0
- /package/dist/{add-SXFET7AD.js.map → add-KTEJCE4L.js.map} +0 -0
- /package/dist/{add-accounts-PEJLMYWR.js.map → add-accounts-CJSV5NPL.js.map} +0 -0
- /package/dist/{ads-MKMWS36P.js.map → ads-HXX2IAFF.js.map} +0 -0
- /package/dist/{ads-NEJKXB4L.js.map → ads-L65JIKCD.js.map} +0 -0
- /package/dist/{ads-FOJ6P4OA.js.map → ads-RAUM6ISF.js.map} +0 -0
- /package/dist/{ads-QDFOWMSP.js.map → ads-WPI3AMSR.js.map} +0 -0
- /package/dist/{adsets-TIHFYWOU.js.map → adsets-LPN6WFGF.js.map} +0 -0
- /package/dist/{advertisers-6ASS5GMI.js.map → advertisers-36HP3AOE.js.map} +0 -0
- /package/dist/{advertisers-E77XAYCQ.js.map → advertisers-DS2NRWKI.js.map} +0 -0
- /package/dist/{analytics-VTFXYOVF.js.map → analytics-I4LZCRG2.js.map} +0 -0
- /package/dist/{analytics-DZJDNCAK.js.map → analytics-IFNBT7IM.js.map} +0 -0
- /package/dist/{animate-3H3TL3N6.js.map → animate-3LV3LHXQ.js.map} +0 -0
- /package/dist/{assign-2NNSXCTL.js.map → assign-WBLSZNCO.js.map} +0 -0
- /package/dist/{audience-size-YAUL5I4L.js.map → audience-size-LOX5BNXI.js.map} +0 -0
- /package/dist/{audiences-GHMNXDPR.js.map → audiences-3LRCLHTQ.js.map} +0 -0
- /package/dist/{audiences-BWDG2R2U.js.map → audiences-RPLVMO4H.js.map} +0 -0
- /package/dist/{audiences-Q7OCAMAQ.js.map → audiences-XEZHACKH.js.map} +0 -0
- /package/dist/{audit-DCVOOFPI.js.map → audit-6AG6BPXQ.js.map} +0 -0
- /package/dist/{audit-HG53XQJK.js.map → audit-YEGQU474.js.map} +0 -0
- /package/dist/{autocomplete-6VBDEE6O.js.map → autocomplete-2QRU7ARD.js.map} +0 -0
- /package/dist/{avatars-AVLB3D5I.js.map → avatars-EIETXCF3.js.map} +0 -0
- /package/dist/{bid-pricing-GHWQIWCX.js.map → bid-pricing-5LZFHQTS.js.map} +0 -0
- /package/dist/{brand-PPMZKVFC.js.map → brand-CINQG3JG.js.map} +0 -0
- /package/dist/{businesses-24QYU6BL.js.map → businesses-PRRYPR7H.js.map} +0 -0
- /package/dist/{campaign-groups-RXN3P22B.js.map → campaign-groups-5CMTEJZZ.js.map} +0 -0
- /package/dist/{campaign-writes-FZ2U5IYO.js.map → campaign-writes-4RMPHQCT.js.map} +0 -0
- /package/dist/{campaign-writes-7UHMSPJ3.js.map → campaign-writes-U5LTDTYK.js.map} +0 -0
- /package/dist/{campaigns-WTZBLGVX.js.map → campaigns-4SOLY7OR.js.map} +0 -0
- /package/dist/{campaigns-C56DUMH6.js.map → campaigns-NFRLFNXI.js.map} +0 -0
- /package/dist/{campaigns-XNS24UNF.js.map → campaigns-PC7UAVXR.js.map} +0 -0
- /package/dist/{campaigns-DJV4W6UP.js.map → campaigns-TFEQTSO3.js.map} +0 -0
- /package/dist/{canvas-P64D7YZ7.js.map → canvas-BPACZHNU.js.map} +0 -0
- /package/dist/{capabilities-LGQT5ONL.js.map → capabilities-FNVTPCDT.js.map} +0 -0
- /package/dist/{cards-IO2Q423H.js.map → cards-WHMCSRZX.js.map} +0 -0
- /package/dist/{catalogs-2HT3VRRI.js.map → catalogs-A7XMEEEP.js.map} +0 -0
- /package/dist/{changes-AZ6EUVFN.js.map → changes-J67WATHX.js.map} +0 -0
- /package/dist/{chatgpt-M27OEM7J.js.map → chatgpt-4PEWDJKP.js.map} +0 -0
- /package/dist/{chats-YD36KDU7.js.map → chats-S5FCV7YO.js.map} +0 -0
- /package/dist/{chunk-VDAYKWVH.js.map → chunk-232YUPUI.js.map} +0 -0
- /package/dist/{chunk-ANWV2VTO.js.map → chunk-23H4ZJRP.js.map} +0 -0
- /package/dist/{chunk-QNH5NCLM.js.map → chunk-3OCSWUHV.js.map} +0 -0
- /package/dist/{chunk-BPPT7YVK.js.map → chunk-3UXMQ3K2.js.map} +0 -0
- /package/dist/{chunk-HH5PFZ7U.js.map → chunk-5WMTPYKT.js.map} +0 -0
- /package/dist/{chunk-U6RTBCU7.js.map → chunk-65N4ZPQD.js.map} +0 -0
- /package/dist/{chunk-UDG37PC2.js.map → chunk-6JWEGFM5.js.map} +0 -0
- /package/dist/{chunk-PWABS2DB.js.map → chunk-7RBJ2Z7Z.js.map} +0 -0
- /package/dist/{chunk-DWVNYWWQ.js.map → chunk-ABXTGAG7.js.map} +0 -0
- /package/dist/{chunk-QSSYLT3W.js.map → chunk-ADSNY4KZ.js.map} +0 -0
- /package/dist/{chunk-LNJNZ4KQ.js.map → chunk-AHF6TQWB.js.map} +0 -0
- /package/dist/{chunk-RKPSE27R.js.map → chunk-AQ5WISEG.js.map} +0 -0
- /package/dist/{chunk-EQ74MEJN.js.map → chunk-BFRIRZRZ.js.map} +0 -0
- /package/dist/{chunk-WOTX7TNV.js.map → chunk-BFZS3WHS.js.map} +0 -0
- /package/dist/{chunk-NFSLRRIE.js.map → chunk-BITS62MF.js.map} +0 -0
- /package/dist/{chunk-JRLGQA2T.js.map → chunk-BLAHHMPF.js.map} +0 -0
- /package/dist/{chunk-OWUZN2NC.js.map → chunk-CCIDHU6M.js.map} +0 -0
- /package/dist/{chunk-EMPXRKIM.js.map → chunk-CM6FCSWN.js.map} +0 -0
- /package/dist/{chunk-CPTOHQSJ.js.map → chunk-CVBKW75S.js.map} +0 -0
- /package/dist/{chunk-4YEZLIQD.js.map → chunk-CXQRTLSQ.js.map} +0 -0
- /package/dist/{chunk-4EPGI6I2.js.map → chunk-D4LKZJYJ.js.map} +0 -0
- /package/dist/{chunk-D5GVSJBK.js.map → chunk-D7KR6KXR.js.map} +0 -0
- /package/dist/{chunk-SG4BABZ7.js.map → chunk-DCTEL4KG.js.map} +0 -0
- /package/dist/{chunk-UR4PSKOP.js.map → chunk-DH5CKOYK.js.map} +0 -0
- /package/dist/{chunk-LXAODGOM.js.map → chunk-DQC4NIJE.js.map} +0 -0
- /package/dist/{chunk-UW7PZFWZ.js.map → chunk-DWX44QL6.js.map} +0 -0
- /package/dist/{chunk-H5CGVMQW.js.map → chunk-EE72SSB2.js.map} +0 -0
- /package/dist/{chunk-QKUBK3AD.js.map → chunk-FNA277HP.js.map} +0 -0
- /package/dist/{chunk-CLST7PLN.js.map → chunk-FU7HJWGM.js.map} +0 -0
- /package/dist/{chunk-VY5CTURR.js.map → chunk-GDLQ6SGW.js.map} +0 -0
- /package/dist/{chunk-LPBLKGH7.js.map → chunk-GEKXIXMG.js.map} +0 -0
- /package/dist/{chunk-QNLWBJUR.js.map → chunk-GLW7UJLB.js.map} +0 -0
- /package/dist/{chunk-5HABWBQX.js.map → chunk-H5HDZ7IC.js.map} +0 -0
- /package/dist/{chunk-MUHPBWE5.js.map → chunk-I5VZVQBZ.js.map} +0 -0
- /package/dist/{chunk-HDQBILJR.js.map → chunk-IC6SDOED.js.map} +0 -0
- /package/dist/{chunk-QBCPZFAV.js.map → chunk-IG627WWY.js.map} +0 -0
- /package/dist/{chunk-BWAFZSZ4.js.map → chunk-IN4G7X6W.js.map} +0 -0
- /package/dist/{chunk-5ADTL2LR.js.map → chunk-IPLE5K5E.js.map} +0 -0
- /package/dist/{chunk-SBN5UIQY.js.map → chunk-IWWOGBGA.js.map} +0 -0
- /package/dist/{chunk-ZNEUUBRZ.js.map → chunk-JFA4R3KS.js.map} +0 -0
- /package/dist/{chunk-LOTQBFUP.js.map → chunk-JYBLCIRN.js.map} +0 -0
- /package/dist/{chunk-O6VUX3O5.js.map → chunk-K3TNTBZJ.js.map} +0 -0
- /package/dist/{chunk-FDPBTKXZ.js.map → chunk-LCW3U4EA.js.map} +0 -0
- /package/dist/{chunk-RJFM6TJC.js.map → chunk-MI3JB5KB.js.map} +0 -0
- /package/dist/{chunk-LWOAW25O.js.map → chunk-MIOOPOG2.js.map} +0 -0
- /package/dist/{chunk-EBC64WAG.js.map → chunk-MJQBXFW6.js.map} +0 -0
- /package/dist/{chunk-ETFAIX4L.js.map → chunk-MPACDBH5.js.map} +0 -0
- /package/dist/{chunk-AQYH6C32.js.map → chunk-MXWOYFI2.js.map} +0 -0
- /package/dist/{chunk-KODTY7PB.js.map → chunk-N5O67GK5.js.map} +0 -0
- /package/dist/{chunk-GUMLW3YA.js.map → chunk-NCP6RD6A.js.map} +0 -0
- /package/dist/{chunk-EYUFEDDT.js.map → chunk-NNF4RARY.js.map} +0 -0
- /package/dist/{chunk-KMKELX5X.js.map → chunk-NR2OVOTD.js.map} +0 -0
- /package/dist/{chunk-UARL36OD.js.map → chunk-NVGXYF6K.js.map} +0 -0
- /package/dist/{chunk-AQADZOTG.js.map → chunk-OP7DNHD2.js.map} +0 -0
- /package/dist/{chunk-3UA4THEF.js.map → chunk-ORQKMXHA.js.map} +0 -0
- /package/dist/{chunk-TWXM7HVR.js.map → chunk-P3TNRS56.js.map} +0 -0
- /package/dist/{chunk-MN25G3MA.js.map → chunk-Q7YZL7PG.js.map} +0 -0
- /package/dist/{chunk-LEGVJCL4.js.map → chunk-QABSQADZ.js.map} +0 -0
- /package/dist/{chunk-JOXSQDDP.js.map → chunk-R2TAVQGZ.js.map} +0 -0
- /package/dist/{chunk-HSRZIRDM.js.map → chunk-R5WNYLG4.js.map} +0 -0
- /package/dist/{chunk-QGWCBGEC.js.map → chunk-RD2XXQW3.js.map} +0 -0
- /package/dist/{chunk-22WY4M2Y.js.map → chunk-RLS5OPPZ.js.map} +0 -0
- /package/dist/{chunk-YQDRMOMQ.js.map → chunk-RMLJNHCU.js.map} +0 -0
- /package/dist/{chunk-BODRDUYQ.js.map → chunk-S7A34DOA.js.map} +0 -0
- /package/dist/{chunk-26HCUIW2.js.map → chunk-SFJW2KED.js.map} +0 -0
- /package/dist/{chunk-6YZNHMPJ.js.map → chunk-SOKVXKRM.js.map} +0 -0
- /package/dist/{chunk-CIWI7LHO.js.map → chunk-STNCMKL6.js.map} +0 -0
- /package/dist/{chunk-AAF7HL4I.js.map → chunk-SWL4AAPP.js.map} +0 -0
- /package/dist/{chunk-VX45CG4L.js.map → chunk-TNOJ6O6B.js.map} +0 -0
- /package/dist/{chunk-7WZHO6W3.js.map → chunk-ULPO72IQ.js.map} +0 -0
- /package/dist/{chunk-EK2CTQIR.js.map → chunk-UMZIQIWN.js.map} +0 -0
- /package/dist/{chunk-OQAE4GPV.js.map → chunk-V7N666PJ.js.map} +0 -0
- /package/dist/{chunk-BOHHB74V.js.map → chunk-WNJ5SYAG.js.map} +0 -0
- /package/dist/{chunk-ANYMWCST.js.map → chunk-WNSE7N75.js.map} +0 -0
- /package/dist/{chunk-7ANWFQEA.js.map → chunk-XDZVBX6L.js.map} +0 -0
- /package/dist/{chunk-NRRNY3TZ.js.map → chunk-XGOEX2VJ.js.map} +0 -0
- /package/dist/{chunk-53JBNG5Q.js.map → chunk-XUB2EK65.js.map} +0 -0
- /package/dist/{chunk-LFMKBF6Q.js.map → chunk-XUR4QWCS.js.map} +0 -0
- /package/dist/{chunk-XWB2L3HS.js.map → chunk-XZ4YMCZK.js.map} +0 -0
- /package/dist/{chunk-HKR7VCFK.js.map → chunk-Y3VRMFGF.js.map} +0 -0
- /package/dist/{chunk-IHK2VONG.js.map → chunk-YD7BQDJ6.js.map} +0 -0
- /package/dist/{claim-RDP6PVKV.js.map → claim-6MPQD43X.js.map} +0 -0
- /package/dist/{client-TL7BITWM.js.map → client-WL2FKW4T.js.map} +0 -0
- /package/dist/{code-ORY2WROG.js.map → code-NXN7QYKU.js.map} +0 -0
- /package/dist/{companies-WSHYZ557.js.map → companies-KRF2K4CA.js.map} +0 -0
- /package/dist/{complete-MJMDSDTL.js.map → complete-V433ON5C.js.map} +0 -0
- /package/dist/{config-FMDQ323H.js.map → config-VOF57KBL.js.map} +0 -0
- /package/dist/{connect-447TO57M.js.map → connect-QVIAM3GX.js.map} +0 -0
- /package/dist/{content-ZQB6PXGX.js.map → content-KA25YYO3.js.map} +0 -0
- /package/dist/{conversation-22J2PEAU.js.map → conversation-VZKBZZGG.js.map} +0 -0
- /package/dist/{conversion-report-U4UFXSD2.js.map → conversion-report-REOHVLCI.js.map} +0 -0
- /package/dist/{conversion-upload-command-INQX73AK.js.map → conversion-upload-command-ASHA6T6H.js.map} +0 -0
- /package/dist/{conversion-writes-MCKROLRA.js.map → conversion-writes-JU7Q2MUO.js.map} +0 -0
- /package/dist/{conversions-OPNDVQ56.js.map → conversions-3ISBR3TS.js.map} +0 -0
- /package/dist/{conversions-KNLCEM2G.js.map → conversions-ZLC6YTJ5.js.map} +0 -0
- /package/dist/{countries-AZ3XSZVM.js.map → countries-XGMZWUGP.js.map} +0 -0
- /package/dist/{create-P42BMP2W.js.map → create-B3QMYSIX.js.map} +0 -0
- /package/dist/{create-XUD5CW7C.js.map → create-IFCCMKFT.js.map} +0 -0
- /package/dist/{create-AVOJFXDX.js.map → create-R5P6JU5A.js.map} +0 -0
- /package/dist/{create-LP4QECLS.js.map → create-SF6DOGDJ.js.map} +0 -0
- /package/dist/{creatives-RX3U2DWI.js.map → creatives-KD7MOCR3.js.map} +0 -0
- /package/dist/{creatives-43I65CHD.js.map → creatives-YJ3CXZQC.js.map} +0 -0
- /package/dist/{credentials-FS5XLAEX.js.map → credentials-2KJUKBMF.js.map} +0 -0
- /package/dist/{crm-3373VMGE.js.map → crm-GX72E2LT.js.map} +0 -0
- /package/dist/{crm-HLPVTUIM.js.map → crm-ZYDNEME5.js.map} +0 -0
- /package/dist/{crop-Q2GJLOHE.js.map → crop-7UTYG7GS.js.map} +0 -0
- /package/dist/{currency-SVDR5N7L.js.map → currency-CGDI2NXI.js.map} +0 -0
- /package/dist/{custom-conversions-5NJNPZKM.js.map → custom-conversions-YRYE65PU.js.map} +0 -0
- /package/dist/{customers-UCJBL2IP.js.map → customers-P4N4NXLJ.js.map} +0 -0
- /package/dist/{decide-PCJTFCWC.js.map → decide-TWKH5QQU.js.map} +0 -0
- /package/dist/{delete-7K4KFPUT.js.map → delete-2GIIUPA3.js.map} +0 -0
- /package/dist/{delete-7J5VDP6V.js.map → delete-AK5IV44E.js.map} +0 -0
- /package/dist/{delete-GOA4Y562.js.map → delete-GLLYPNNB.js.map} +0 -0
- /package/dist/{delete-I2SIRTMZ.js.map → delete-J7DXPGKD.js.map} +0 -0
- /package/dist/{delete-UCIUYLIT.js.map → delete-RS7RQDUX.js.map} +0 -0
- /package/dist/{delete-ZKWLHEZT.js.map → delete-S4VKH7IS.js.map} +0 -0
- /package/dist/{demographics-AJPJPJKY.js.map → demographics-IKWN2H3V.js.map} +0 -0
- /package/dist/{describe-CRTFAH6Y.js.map → describe-5QCPRSIG.js.map} +0 -0
- /package/dist/{describe-OAB2FJYK.js.map → describe-L3UC6MIL.js.map} +0 -0
- /package/dist/{dimensions-PFGHRZ5T.js.map → dimensions-POH4JXEM.js.map} +0 -0
- /package/dist/{discard-H32UEHFB.js.map → discard-H6DOHJRG.js.map} +0 -0
- /package/dist/{discover-IOJZYJ6B.js.map → discover-L4TPEKGY.js.map} +0 -0
- /package/dist/{discover-R3EUUGRZ.js.map → discover-XAJKZCMM.js.map} +0 -0
- /package/dist/{domain-Q42XWULH.js.map → domain-US4KKAXC.js.map} +0 -0
- /package/dist/{download-2HGDCPR7.js.map → download-N4J5WFHD.js.map} +0 -0
- /package/dist/{draft-ONDP2XRS.js.map → draft-BIQ3ZAYW.js.map} +0 -0
- /package/dist/{draft-3KLT2YHI.js.map → draft-EWDOIXSH.js.map} +0 -0
- /package/dist/{draft-PQGTIABK.js.map → draft-IL37WDST.js.map} +0 -0
- /package/dist/{draft-SRMHEIRG.js.map → draft-IZ4YLQRD.js.map} +0 -0
- /package/dist/{draft-7O4ABIKK.js.map → draft-KDMYGLWN.js.map} +0 -0
- /package/dist/{draft-ZVMS4RFF.js.map → draft-OLFQZBWL.js.map} +0 -0
- /package/dist/{draft-3YDWWRPY.js.map → draft-R32RFDCI.js.map} +0 -0
- /package/dist/{draft-DK4NZ6PW.js.map → draft-Y2QJE2NM.js.map} +0 -0
- /package/dist/{env-NPSYSFXD.js.map → env-5MUVYE2L.js.map} +0 -0
- /package/dist/{experiment-V57PLATO.js.map → experiment-G3FQVAJU.js.map} +0 -0
- /package/dist/{export-UN2PTCNO.js.map → export-OLDI32HM.js.map} +0 -0
- /package/dist/{extract-5JOFQZVU.js.map → extract-PPS6ONQN.js.map} +0 -0
- /package/dist/{facets-BFKYZCGA.js.map → facets-JBZQHN3D.js.map} +0 -0
- /package/dist/{favorites-4AWW5F5B.js.map → favorites-4ELADD3R.js.map} +0 -0
- /package/dist/{feed-AK3IFTAL.js.map → feed-XIY5TVDL.js.map} +0 -0
- /package/dist/{fetch-6SUFMXRQ.js.map → fetch-GOY6DQRL.js.map} +0 -0
- /package/dist/{fetch-6ALLGDRN.js.map → fetch-YWUVDMUH.js.map} +0 -0
- /package/dist/{find-22HWPRFY.js.map → find-EVY4XEIQ.js.map} +0 -0
- /package/dist/{fit-S4RO2DMX.js.map → fit-TVQ7RK52.js.map} +0 -0
- /package/dist/{flows-OFARDYXZ.js.map → flows-274YPU6I.js.map} +0 -0
- /package/dist/{follow-IUW3P6KH.js.map → follow-ZTPZKIMZ.js.map} +0 -0
- /package/dist/{follow-competitors-YDF5WM4K.js.map → follow-competitors-6QDVQ4VJ.js.map} +0 -0
- /package/dist/{following-PNOYUSHX.js.map → following-PBZLZFGQ.js.map} +0 -0
- /package/dist/{fonts-T4M2DIJV.js.map → fonts-BMUNDGOZ.js.map} +0 -0
- /package/dist/{forecast-NHG3UHOP.js.map → forecast-F2CZSIMP.js.map} +0 -0
- /package/dist/{forecast-BA26XWJG.js.map → forecast-W5F2MNOV.js.map} +0 -0
- /package/dist/{funding-WSJI56OH.js.map → funding-ULBMKUMW.js.map} +0 -0
- /package/dist/{funnel-RFQFRWPN.js.map → funnel-LEUXICXU.js.map} +0 -0
- /package/dist/{ga4-4W3KJIS5.js.map → ga4-2BL5YAYN.js.map} +0 -0
- /package/dist/{generate-3MC7WDL2.js.map → generate-4HWNFAH3.js.map} +0 -0
- /package/dist/{get-P5ZTH7RQ.js.map → get-6RZU4M6W.js.map} +0 -0
- /package/dist/{get-SR2NWOPT.js.map → get-7GCEJ6KG.js.map} +0 -0
- /package/dist/{get-4LG7Q6AQ.js.map → get-MGDY5JYZ.js.map} +0 -0
- /package/dist/{get-4DJXDO42.js.map → get-MZWUMHEF.js.map} +0 -0
- /package/dist/{get-BK4MBGQF.js.map → get-OAZZHUZP.js.map} +0 -0
- /package/dist/{get-PTOW6PVF.js.map → get-OHU2N7B7.js.map} +0 -0
- /package/dist/{get-2W45IBSR.js.map → get-TY6AMFI4.js.map} +0 -0
- /package/dist/{google-EMSAXPVB.js.map → google-7STODZQR.js.map} +0 -0
- /package/dist/{google-XE35SF3Z.js.map → google-ZTTE34A4.js.map} +0 -0
- /package/dist/{google-ads-VTOZZ4B5.js.map → google-ads-5ARKO757.js.map} +0 -0
- /package/dist/{group-MBRA2QID.js.map → group-D5WXNFCP.js.map} +0 -0
- /package/dist/{group-EUYJJ4LI.js.map → group-Y5PLETFT.js.map} +0 -0
- /package/dist/{gsc-B3NPUNI6.js.map → gsc-UU3T2C6B.js.map} +0 -0
- /package/dist/{history-4S3YEIPK.js.map → history-IQ33J5PB.js.map} +0 -0
- /package/dist/{history-PGNCHCSU.js.map → history-SU7VQCDJ.js.map} +0 -0
- /package/dist/{hubspot-QILJD6UV.js.map → hubspot-TJED44GO.js.map} +0 -0
- /package/dist/{icon-4DAXBICB.js.map → icon-GB7UH5RF.js.map} +0 -0
- /package/dist/{ideas-4TZUGXTG.js.map → ideas-UTSCGCT6.js.map} +0 -0
- /package/dist/{improve-U2RA5DPI.js.map → improve-U5USRH4G.js.map} +0 -0
- /package/dist/{ingest-HIE4SAEY.js.map → ingest-DGDNZWEM.js.map} +0 -0
- /package/dist/{ingest-DD6KXDYS.js.map → ingest-SGBJ3NXX.js.map} +0 -0
- /package/dist/{insights-HQGBM6VA.js.map → insights-4HT2NAYP.js.map} +0 -0
- /package/dist/{insights-K2CMI3K5.js.map → insights-SQLE5NOJ.js.map} +0 -0
- /package/dist/{inspect-5XJ3GTBQ.js.map → inspect-BMQTTKMW.js.map} +0 -0
- /package/dist/{inspiration-TRMFE64K.js.map → inspiration-XQYHBJY2.js.map} +0 -0
- /package/dist/{intent-2EWV4KXW.js.map → intent-LM36WK45.js.map} +0 -0
- /package/dist/{job-7GDSDRM4.js.map → job-CGQHEANB.js.map} +0 -0
- /package/dist/{job-create-PE7G64WC.js.map → job-create-SZYJT2NC.js.map} +0 -0
- /package/dist/{job-status-LUSCFLZ2.js.map → job-status-6LAKLCKH.js.map} +0 -0
- /package/dist/{keep-5NFHEILH.js.map → keep-3MJSHWU3.js.map} +0 -0
- /package/dist/{keyword-gap-T22T7RN6.js.map → keyword-gap-P652ODHN.js.map} +0 -0
- /package/dist/{keyword-metrics-MGCBJBWU.js.map → keyword-metrics-MQLGGJBT.js.map} +0 -0
- /package/dist/{keywords-for-site-MZWJ7HBX.js.map → keywords-for-site-JL6H2YGU.js.map} +0 -0
- /package/dist/{landing-LIS4NCGW.js.map → landing-AJO2BPC2.js.map} +0 -0
- /package/dist/{landings-ZR4YMEPV.js.map → landings-ZLKUP66P.js.map} +0 -0
- /package/dist/{languages-HXAZNLNU.js.map → languages-3IJVDS5Z.js.map} +0 -0
- /package/dist/{languages-VLMJOAJN.js.map → languages-HL42MI7H.js.map} +0 -0
- /package/dist/{launches-T5LAIOYS.js.map → launches-RG2SWEXM.js.map} +0 -0
- /package/dist/{layerize-24PQKKPB.js.map → layerize-SJYK6HPD.js.map} +0 -0
- /package/dist/{leads-EDKSVSWP.js.map → leads-2XOSAYP4.js.map} +0 -0
- /package/dist/{leads-TSNX372E.js.map → leads-H6JIWVI6.js.map} +0 -0
- /package/dist/{library-ZHREUZMU.js.map → library-Q4OU7VR7.js.map} +0 -0
- /package/dist/{lighthouse-E2NTHAO4.js.map → lighthouse-FALRSVQH.js.map} +0 -0
- /package/dist/{line-item-writes-H2ZFXYH3.js.map → line-item-writes-V7AKAHFC.js.map} +0 -0
- /package/dist/{line-items-JBL7LVCS.js.map → line-items-GAMKVVIQ.js.map} +0 -0
- /package/dist/{link-THBFB2H2.js.map → link-Z5AQP6JN.js.map} +0 -0
- /package/dist/{linkedin-PVGZWXQJ.js.map → linkedin-7F6YVXQL.js.map} +0 -0
- /package/dist/{list-TG6LBHCV.js.map → list-2ZTOMTES.js.map} +0 -0
- /package/dist/{list-E7CJMIGC.js.map → list-GK6LNWIW.js.map} +0 -0
- /package/dist/{list-LS6TUGD5.js.map → list-NLGM3QDP.js.map} +0 -0
- /package/dist/{list-37F6C6P5.js.map → list-RR53EF3O.js.map} +0 -0
- /package/dist/{list-EIEZNGQ4.js.map → list-SZH6TH74.js.map} +0 -0
- /package/dist/{list-HA2NITR3.js.map → list-TB677Q2F.js.map} +0 -0
- /package/dist/{list-7EEDCI3T.js.map → list-VTVRZIYL.js.map} +0 -0
- /package/dist/{list-LPFAPCN4.js.map → list-XZVQWIJN.js.map} +0 -0
- /package/dist/{locations-ZWTDUUGL.js.map → locations-AEGZ36JH.js.map} +0 -0
- /package/dist/{locations-VYIDAVD4.js.map → locations-YA7NZY44.js.map} +0 -0
- /package/dist/{log-NX7ITJM2.js.map → log-JM4VLJE4.js.map} +0 -0
- /package/dist/{logo-SHQJHJK7.js.map → logo-YSNUUT33.js.map} +0 -0
- /package/dist/{lookup-TWSJ7KRT.js.map → lookup-RH5N3OWJ.js.map} +0 -0
- /package/dist/{map-TI3YWRBW.js.map → map-HRLUMCR2.js.map} +0 -0
- /package/dist/{mcp-5DZTEDYI.js.map → mcp-T6SAG4XB.js.map} +0 -0
- /package/dist/{media-LDVWXWWZ.js.map → media-ES2UBGYW.js.map} +0 -0
- /package/dist/{media-TNB4DLTJ.js.map → media-MPXEXN4O.js.map} +0 -0
- /package/dist/{media-sources-QYRHVUBJ.js.map → media-sources-7AS3274L.js.map} +0 -0
- /package/dist/{members-RV546WDM.js.map → members-J5KWXTXY.js.map} +0 -0
- /package/dist/{meta-RAVCXVZA.js.map → meta-AOIPEDV5.js.map} +0 -0
- /package/dist/{metrics-2VB46SDT.js.map → metrics-VDBJ6KL7.js.map} +0 -0
- /package/dist/{models-TYRVCPS2.js.map → models-2DQ5NBMT.js.map} +0 -0
- /package/dist/{normalize-KKCNCXI2.js.map → normalize-CHZB4QDD.js.map} +0 -0
- /package/dist/{normalize-Q7EN7JIF.js.map → normalize-NR5RS3WR.js.map} +0 -0
- /package/dist/{options-UMDGX464.js.map → options-QLXFLESP.js.map} +0 -0
- /package/dist/{organization-KQHJ77CV.js.map → organization-KEGKAP4P.js.map} +0 -0
- /package/dist/{output-NHMCVVUU.js.map → output-GWIP6ROX.js.map} +0 -0
- /package/dist/{page-5PCVZ7HS.js.map → page-YWGBCN65.js.map} +0 -0
- /package/dist/{pages-DDXB4NQ4.js.map → pages-FTI44OSH.js.map} +0 -0
- /package/dist/{performance-SVWX2S6E.js.map → performance-SPGPGXE5.js.map} +0 -0
- /package/dist/{pinterest-KQYSCTVQ.js.map → pinterest-J442QLQS.js.map} +0 -0
- /package/dist/{pixels-HJYPX6RR.js.map → pixels-6IUB3Y3H.js.map} +0 -0
- /package/dist/{pixels-GH522EYV.js.map → pixels-MBKR4XPX.js.map} +0 -0
- /package/dist/{plan-ZS7SOXL6.js.map → plan-YPE77T4R.js.map} +0 -0
- /package/dist/{preview-W4VKXOCT.js.map → preview-V4YBD45S.js.map} +0 -0
- /package/dist/{profile-FSB4RT55.js.map → profile-S3MXS2VO.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-XPRWBI7F.js.map → promoted-tweet-writes-TRR3KPRJ.js.map} +0 -0
- /package/dist/{promoted-tweets-W7PCLJMU.js.map → promoted-tweets-XRYZNJI2.js.map} +0 -0
- /package/dist/{properties-V74I56UK.js.map → properties-G3L2OAOL.js.map} +0 -0
- /package/dist/{query-KBXZD4SW.js.map → query-M3IO54U2.js.map} +0 -0
- /package/dist/{query-SFNCXH4H.js.map → query-WCB5W4NW.js.map} +0 -0
- /package/dist/{query-5F5MBR7H.js.map → query-YBS6ZQ75.js.map} +0 -0
- /package/dist/{questionnaire-JK5JLQXK.js.map → questionnaire-PAK4DALP.js.map} +0 -0
- /package/dist/{read-LGRFU7XB.js.map → read-LUTB3UOR.js.map} +0 -0
- /package/dist/{reddit-BJDU3BO7.js.map → reddit-STSECKMZ.js.map} +0 -0
- /package/dist/{refresh-OTR4EWLI.js.map → refresh-RQ3C2MHI.js.map} +0 -0
- /package/dist/{release-QJ4P2AVK.js.map → release-UHGU5WBY.js.map} +0 -0
- /package/dist/{relevant-pages-VMNEEEJK.js.map → relevant-pages-G6SNC73K.js.map} +0 -0
- /package/dist/{remove-BNO3BWM5.js.map → remove-LTKICIIF.js.map} +0 -0
- /package/dist/{remove-PIHTPIHM.js.map → remove-X6DNVS67.js.map} +0 -0
- /package/dist/{reopen-BA76RSLQ.js.map → reopen-BP5ERELB.js.map} +0 -0
- /package/dist/{research-3ATNYHRA.js.map → research-GOYMTKZM.js.map} +0 -0
- /package/dist/{research-CYZEWHHZ.js.map → research-MBAPL35Y.js.map} +0 -0
- /package/dist/{reset-HGTZIAHW.js.map → reset-Q62PEGOU.js.map} +0 -0
- /package/dist/{reset-NM33L5LY.js.map → reset-SJPGSQ7I.js.map} +0 -0
- /package/dist/{resolve-L2A3HC56.js.map → resolve-R45W7QEQ.js.map} +0 -0
- /package/dist/{retry-C3PBVY3I.js.map → retry-CD2Q2AJN.js.map} +0 -0
- /package/dist/{retry-ID7ZKLBK.js.map → retry-NBZ7Q6HK.js.map} +0 -0
- /package/dist/{retry-failed-XTYV3QJS.js.map → retry-failed-EJBP4236.js.map} +0 -0
- /package/dist/{run-DI4BRLKS.js.map → run-HCJKCEOL.js.map} +0 -0
- /package/dist/{run-IE4GVP4I.js.map → run-IIU2UVQU.js.map} +0 -0
- /package/dist/{schedule-OFYLBZT6.js.map → schedule-BSQHXJ5V.js.map} +0 -0
- /package/dist/{schedule-WSO7ETS6.js.map → schedule-IDZC6M32.js.map} +0 -0
- /package/dist/{scheduled-agents-X2U7J42A.js.map → scheduled-agents-MFLMG34I.js.map} +0 -0
- /package/dist/{schema-DL34A626.js.map → schema-EFR7NGJG.js.map} +0 -0
- /package/dist/{schema-CULVYXO7.js.map → schema-IWPG3YSN.js.map} +0 -0
- /package/dist/{scrape-ZG2OWZL4.js.map → scrape-J2Y7YZ4Z.js.map} +0 -0
- /package/dist/{screenshot-GJUY7FCW.js.map → screenshot-K7ZGTVTE.js.map} +0 -0
- /package/dist/{search-FHSQYZOC.js.map → search-CI7LEOOK.js.map} +0 -0
- /package/dist/{search-QDQNZ63X.js.map → search-EGI5K77S.js.map} +0 -0
- /package/dist/{search-2BJ4OLMX.js.map → search-I6DRUXBX.js.map} +0 -0
- /package/dist/{search-ZAY2QV3Y.js.map → search-TTL7VQET.js.map} +0 -0
- /package/dist/{search-52CSDYJS.js.map → search-VT2KUAH6.js.map} +0 -0
- /package/dist/{search-copy-O5AOEBXC.js.map → search-copy-N2AIJNUH.js.map} +0 -0
- /package/dist/{seeds-XY3EZ33U.js.map → seeds-EYYQCMGF.js.map} +0 -0
- /package/dist/{sends-GECHL3NK.js.map → sends-RHVFV2XM.js.map} +0 -0
- /package/dist/{sequences-5BB4S63A.js.map → sequences-5DUWNSWQ.js.map} +0 -0
- /package/dist/{setup-links-ZK6L7GQD.js.map → setup-links-5ILQNMFZ.js.map} +0 -0
- /package/dist/{shared-JDIL3BNQ.js.map → shared-NDRFKAH7.js.map} +0 -0
- /package/dist/{site-6Z5A3G5J.js.map → site-LBXNVRPE.js.map} +0 -0
- /package/dist/{sitemaps-UQJFRA2W.js.map → sitemaps-QKKXMXMV.js.map} +0 -0
- /package/dist/{sites-ZNNEPEGI.js.map → sites-GRC6CCCK.js.map} +0 -0
- /package/dist/{skills-WRKEF2Q4.js.map → skills-UML6GSW6.js.map} +0 -0
- /package/dist/{sources-7QRFH5AB.js.map → sources-GP4PUTX2.js.map} +0 -0
- /package/dist/{sources-B2L6X7ZE.js.map → sources-N4UANUHJ.js.map} +0 -0
- /package/dist/{stats-QFBTSDVV.js.map → stats-RCLQE4HJ.js.map} +0 -0
- /package/dist/{status-SW3PYV6Q.js.map → status-GSFMLC6W.js.map} +0 -0
- /package/dist/{sticker-2JQUC7XO.js.map → sticker-SINY47WT.js.map} +0 -0
- /package/dist/{stock-W3SNJCBV.js.map → stock-ECRBD7RP.js.map} +0 -0
- /package/dist/{studio-2GAZ6QOH.js.map → studio-YB5WXQYC.js.map} +0 -0
- /package/dist/{sync-NAJQQ6NQ.js.map → sync-2MFUI3ME.js.map} +0 -0
- /package/dist/{sync-4LHVBFMZ.js.map → sync-IE4AAVGY.js.map} +0 -0
- /package/dist/{sync-K74WY3AT.js.map → sync-LIV7FU4N.js.map} +0 -0
- /package/dist/{sync-definition-KKW7R7QS.js.map → sync-definition-5JO7QXX3.js.map} +0 -0
- /package/dist/{tag-manager-MNGOJ3GC.js.map → tag-manager-G3LBQZUL.js.map} +0 -0
- /package/dist/{tags-V2SSR5XY.js.map → tags-4JQX7HMT.js.map} +0 -0
- /package/dist/{tags-NMZ2NGN2.js.map → tags-6RQVXS47.js.map} +0 -0
- /package/dist/{tags-4XQ5MEDJ.js.map → tags-AAIFQ6LS.js.map} +0 -0
- /package/dist/{tags-JXLOCBQ6.js.map → tags-F355NMIR.js.map} +0 -0
- /package/dist/{tags-GJ5MIA6X.js.map → tags-ZHCGHGYC.js.map} +0 -0
- /package/dist/{targeting-constants-RQT4GLUA.js.map → targeting-constants-KEKYU5JQ.js.map} +0 -0
- /package/dist/{targeting-criteria-D2ZMGXLI.js.map → targeting-criteria-6FY2JB3V.js.map} +0 -0
- /package/dist/{targets-6QA6MIQU.js.map → targets-NI7TR4GV.js.map} +0 -0
- /package/dist/{testimonials-LBGJKESG.js.map → testimonials-G7CCH7VN.js.map} +0 -0
- /package/dist/{themes-VVID6Y73.js.map → themes-PXDXIKYR.js.map} +0 -0
- /package/dist/{top-companies-6D6YFQAB.js.map → top-companies-YH2ZJEH5.js.map} +0 -0
- /package/dist/{triggers-MDZNDNCU.js.map → triggers-WYFM7PAH.js.map} +0 -0
- /package/dist/{tweets-L4CXZLKQ.js.map → tweets-C3QUKS3I.js.map} +0 -0
- /package/dist/{unfollow-5T2CT3EF.js.map → unfollow-ZI5QU7RD.js.map} +0 -0
- /package/dist/{unlink-WS7DVDLH.js.map → unlink-PTWUSM5B.js.map} +0 -0
- /package/dist/{unstage-NEX3EIJX.js.map → unstage-7F7JI6HY.js.map} +0 -0
- /package/dist/{unstage-K3I2TLRR.js.map → unstage-MCM6EZWK.js.map} +0 -0
- /package/dist/{update-HPSXO5WB.js.map → update-643S2MUW.js.map} +0 -0
- /package/dist/{update-J6FHMXWL.js.map → update-GUIP6G3N.js.map} +0 -0
- /package/dist/{update-LZVLBRAX.js.map → update-V6E3CIFD.js.map} +0 -0
- /package/dist/{upload-XD7N4PJS.js.map → upload-3YJJ5VID.js.map} +0 -0
- /package/dist/{upload-C2K66PR3.js.map → upload-KO46L76G.js.map} +0 -0
- /package/dist/{upscale-SGBB4GWF.js.map → upscale-SJ7SCSRS.js.map} +0 -0
- /package/dist/{url-options-LUKI4Y46.js.map → url-options-LHS4SWWB.js.map} +0 -0
- /package/dist/{url-params-U5DW22SR.js.map → url-params-2DKIXKHH.js.map} +0 -0
- /package/dist/{use-XGTUHBUL.js.map → use-6ULEM3WE.js.map} +0 -0
- /package/dist/{variant-DQRDW6IZ.js.map → variant-5TRRSYBB.js.map} +0 -0
- /package/dist/{videos-KCXSXYJK.js.map → videos-KEDR4GG3.js.map} +0 -0
- /package/dist/{view-KJ6YNRXB.js.map → view-ABSWZMXW.js.map} +0 -0
- /package/dist/{viewer-check-7DZQDGD3.js.map → viewer-check-TSH3SAYJ.js.map} +0 -0
- /package/dist/{web-W2TTELHS.js.map → web-UOGBNAHR.js.map} +0 -0
- /package/dist/{winners-LD6PFXAS.js.map → winners-KRISBKOR.js.map} +0 -0
- /package/dist/{winning-ads-YPQY6GVU.js.map → winning-ads-SGBI3WHK.js.map} +0 -0
- /package/dist/{write-commands-SPTWBMLY.js.map → write-commands-E7JOB4HX.js.map} +0 -0
- /package/dist/{write-commands-CKMHQ4YY.js.map → write-commands-HCQI4Y27.js.map} +0 -0
- /package/dist/{write-commands-NW5CC3DP.js.map → write-commands-QCI6XBM7.js.map} +0 -0
- /package/dist/{write-commands-RLEYECTB.js.map → write-commands-RHCCPMAE.js.map} +0 -0
- /package/dist/{x-2Y2DGMPG.js.map → x-UNSN57YP.js.map} +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import {
|
|
2
|
+
prepareCanvas,
|
|
3
|
+
unsuppliedPlaceholderAssets
|
|
4
|
+
} from "./chunk-7HJR5M4R.js";
|
|
5
|
+
import {
|
|
6
|
+
isSourceStale
|
|
7
|
+
} from "./chunk-FRK7SSEH.js";
|
|
8
|
+
|
|
9
|
+
// src/commands/canvas/render-state.ts
|
|
10
|
+
import { mkdir, readdir, readFile, rm, writeFile } from "fs/promises";
|
|
11
|
+
import path from "path";
|
|
12
|
+
var RENDER_STATE_DIR = ".rendered";
|
|
13
|
+
function statePath(canvasRoot, slug) {
|
|
14
|
+
return path.join(canvasRoot, RENDER_STATE_DIR, `${slug}.json`);
|
|
15
|
+
}
|
|
16
|
+
async function readRenderState(canvasRoot, slug) {
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(await readFile(statePath(canvasRoot, slug), "utf8"));
|
|
19
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
20
|
+
} catch {
|
|
21
|
+
return {};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async function latestVersion(canvasRoot, slug) {
|
|
25
|
+
return (await readRenderState(canvasRoot, slug)).rendered?.runId ?? null;
|
|
26
|
+
}
|
|
27
|
+
async function updateRenderState(canvasRoot, slug, patch) {
|
|
28
|
+
try {
|
|
29
|
+
const next = { ...await readRenderState(canvasRoot, slug), ...patch };
|
|
30
|
+
await mkdir(path.join(canvasRoot, RENDER_STATE_DIR), { recursive: true });
|
|
31
|
+
await writeFile(statePath(canvasRoot, slug), `${JSON.stringify(next, null, 2)}
|
|
32
|
+
`, "utf8");
|
|
33
|
+
} catch {
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async function recordRenderAttempt(canvasRoot, slug, sourceSha) {
|
|
37
|
+
if (!sourceSha) return;
|
|
38
|
+
await updateRenderState(canvasRoot, slug, { attempted: { sourceSha, at: Date.now() } });
|
|
39
|
+
}
|
|
40
|
+
async function recordRendered(canvasRoot, slug, sourceSha, runId, drawn = {}) {
|
|
41
|
+
if (!sourceSha) return;
|
|
42
|
+
await updateRenderState(canvasRoot, slug, {
|
|
43
|
+
rendered: { sourceSha, runId, at: Date.now() },
|
|
44
|
+
...drawn.prompt !== void 0 ? { prompt: drawn.prompt } : {},
|
|
45
|
+
...drawn.anchor ? { anchor: drawn.anchor } : {},
|
|
46
|
+
...drawn.idea ? { idea: drawn.idea } : {},
|
|
47
|
+
lastFix: drawn.lastFix,
|
|
48
|
+
picture: drawn.picture,
|
|
49
|
+
...drawn.seriesLeadRun ? { seriesLeadRun: drawn.seriesLeadRun } : {}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async function recordSeen(canvasRoot, slug, seen) {
|
|
53
|
+
await updateRenderState(canvasRoot, slug, { seen });
|
|
54
|
+
}
|
|
55
|
+
async function recordIdeaLines(canvasRoot, slug, idea) {
|
|
56
|
+
if ((await readRenderState(canvasRoot, slug)).idea) return;
|
|
57
|
+
await updateRenderState(canvasRoot, slug, { idea });
|
|
58
|
+
}
|
|
59
|
+
async function recordReviewOutcome(canvasRoot, slug, outcome) {
|
|
60
|
+
await updateRenderState(canvasRoot, slug, outcome);
|
|
61
|
+
}
|
|
62
|
+
async function recordSeriesLeadRun(canvasRoot, slug, leadRunId) {
|
|
63
|
+
await updateRenderState(canvasRoot, slug, { seriesLeadRun: leadRunId });
|
|
64
|
+
}
|
|
65
|
+
async function recordSnapshot(canvasRoot, slug, snapshot) {
|
|
66
|
+
await updateRenderState(canvasRoot, slug, { snapshot });
|
|
67
|
+
}
|
|
68
|
+
function isRenderStale(state, currentSourceSha) {
|
|
69
|
+
if (!state.rendered) return false;
|
|
70
|
+
if (!isSourceStale(currentSourceSha, state.rendered.sourceSha)) return false;
|
|
71
|
+
return state.attempted?.sourceSha !== currentSourceSha;
|
|
72
|
+
}
|
|
73
|
+
async function staleCreatives(workspaceRoot) {
|
|
74
|
+
const creativesDir = path.join(workspaceRoot, "src", "creatives");
|
|
75
|
+
const canvasRoot = path.join(workspaceRoot, "canvas");
|
|
76
|
+
let slugs;
|
|
77
|
+
try {
|
|
78
|
+
slugs = (await readdir(creativesDir, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => d.name);
|
|
79
|
+
} catch {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
const stale = [];
|
|
83
|
+
for (const slug of slugs.sort()) {
|
|
84
|
+
const state = await readRenderState(canvasRoot, slug);
|
|
85
|
+
if (!state.rendered) continue;
|
|
86
|
+
const canvasPath = path.join(creativesDir, slug, `${slug}.canvas.json`);
|
|
87
|
+
let prepared;
|
|
88
|
+
try {
|
|
89
|
+
prepared = await prepareCanvas(canvasPath, { write: false });
|
|
90
|
+
} catch {
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (unsuppliedPlaceholderAssets(prepared.fileGraph).length > 0) continue;
|
|
94
|
+
const current = prepared.sourceSha;
|
|
95
|
+
if (!current || !isRenderStale(state, current)) continue;
|
|
96
|
+
stale.push({
|
|
97
|
+
slug,
|
|
98
|
+
canvasPath: path.relative(workspaceRoot, canvasPath).split(path.sep).join("/"),
|
|
99
|
+
renderedRunId: state.rendered.runId,
|
|
100
|
+
sourceSha: current
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return stale;
|
|
104
|
+
}
|
|
105
|
+
async function clearLegacyDirtyMarker(canvasRoot, slug) {
|
|
106
|
+
await rm(path.join(canvasRoot, ".dirty", `${slug}.json`), { force: true }).catch(() => void 0);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export {
|
|
110
|
+
readRenderState,
|
|
111
|
+
latestVersion,
|
|
112
|
+
recordRenderAttempt,
|
|
113
|
+
recordRendered,
|
|
114
|
+
recordSeen,
|
|
115
|
+
recordIdeaLines,
|
|
116
|
+
recordReviewOutcome,
|
|
117
|
+
recordSeriesLeadRun,
|
|
118
|
+
recordSnapshot,
|
|
119
|
+
staleCreatives,
|
|
120
|
+
clearLegacyDirtyMarker
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=chunk-KCKC637S.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/canvas/render-state.ts"],"sourcesContent":["import { mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { isSourceStale } from \"@baker/api\";\nimport type { IdeaAnchor } from \"../../engine/creative-context/anchor.ts\";\nimport type { LastFix } from \"./static-edit.ts\";\nimport type { PictureRecord } from \"./static-fix.ts\";\nimport { unsuppliedPlaceholderAssets } from \"./placeholders.ts\";\nimport { type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\n\n/**\n * What this workspace last rendered, per creative: `canvas/.rendered/<slug>.json`.\n *\n * \"Edited since its last render\" is the source fingerprint (`computeSourceSha`) now,\n * compared with the fingerprint the last completed render recorded here. It replaces the\n * `canvas/.dirty` marker a PostToolUse hook used to drop, which only saw the Write and\n * Edit tools touching `*.canvas.json` / `prompt.json`: an edit to a scene file, a\n * composition, or anything made through the shell slipped past it, and the Stop hook and\n * the `validate-creative-renders` gate let a stale preview ship.\n *\n * Two facts are kept apart:\n * - `rendered`: the source a COMPLETED render drew, and its run id;\n * - `attempted`: the source the last `baker canvas run` started on, whatever came of it.\n * A render that fails on exactly this source is not asked for again until the source\n * moves, so a canvas that cannot render never loops the agent.\n *\n * Lives under the gitignored `canvas/` outputs root of the workspace the canvas belongs\n * to (never `--outputs-dir`), so the CLI and the scaffold hooks always agree on the path.\n * A fresh workspace has no record, and a creative with none is not stale: there is no\n * preview of it in this workspace to be out of date.\n */\nexport const RENDER_STATE_DIR = \".rendered\";\n\nexport type RenderState = {\n rendered?: { sourceSha: string; runId: string; at: number };\n attempted?: { sourceSha: string; at: number };\n /** The last portable run snapshot uploaded for this creative (see `run-snapshot.ts`). */\n snapshot?: { identity: string; url: string };\n /** A static ad's prompt.json as the completed render drew it: a later edit of only its words or colours renders as an edit of that version (`static-edit.ts`). */\n prompt?: unknown;\n /** The `--fix` (or edit) the completed render ran, and the blocking defects it left: the same fix is never run again. */\n lastFix?: LastFix;\n /** The blocking defects the review of the completed render named: what a fix of it is measured against. */\n blocking?: string[];\n /** How the completed render's picture came to be, where its canvas would not say (`static-fix.ts`). */\n picture?: PictureRecord;\n /**\n * An ad of a series: the version of its lead its last registered run was made from, finished or not\n * (`series-member.ts`). A run that fails after it is registered is not a new ask when retried.\n */\n seriesLeadRun?: string;\n /** The idea of the completed render (`anchor.ts`): what an edit of it keeps (`idea-gate.ts`). */\n anchor?: IdeaAnchor;\n /** The idea of the completed render in plain lines, for the per-message hook: the version the person sees. */\n idea?: string[];\n /**\n * What the person saw when the chat turn `turnId` started: every run in that turn is held to it, so\n * the agent's own renders in the turn never become the baseline. No `anchor`: the turn started with\n * nothing shown, and nothing in it is held.\n */\n seen?: { turnId: string; anchor?: IdeaAnchor };\n};\n\nfunction statePath(canvasRoot: string, slug: string): string {\n return path.join(canvasRoot, RENDER_STATE_DIR, `${slug}.json`);\n}\n\nexport async function readRenderState(canvasRoot: string, slug: string): Promise<RenderState> {\n try {\n const parsed = JSON.parse(await readFile(statePath(canvasRoot, slug), \"utf8\")) as RenderState;\n return parsed && typeof parsed === \"object\" ? parsed : {};\n } catch {\n return {};\n }\n}\n\n/** The version (run id) a creative shows in this workspace: its last completed render; null before one. */\nexport async function latestVersion(canvasRoot: string, slug: string): Promise<string | null> {\n return (await readRenderState(canvasRoot, slug)).rendered?.runId ?? null;\n}\n\n/** Merge `patch` into the record. Best-effort: freshness is advisory, a render never fails over it. */\nasync function updateRenderState(canvasRoot: string, slug: string, patch: Partial<RenderState>): Promise<void> {\n try {\n const next = { ...(await readRenderState(canvasRoot, slug)), ...patch };\n await mkdir(path.join(canvasRoot, RENDER_STATE_DIR), { recursive: true });\n await writeFile(statePath(canvasRoot, slug), `${JSON.stringify(next, null, 2)}\\n`, \"utf8\");\n } catch {\n // Ignore: at worst the Stop hook asks for one render too many or too few.\n }\n}\n\nexport async function recordRenderAttempt(canvasRoot: string, slug: string, sourceSha: string | undefined): Promise<void> {\n if (!sourceSha) return;\n await updateRenderState(canvasRoot, slug, { attempted: { sourceSha, at: Date.now() } });\n}\n\nexport async function recordRendered(\n canvasRoot: string,\n slug: string,\n sourceSha: string | undefined,\n runId: string,\n drawn: {\n prompt?: unknown;\n lastFix?: LastFix;\n picture?: PictureRecord;\n seriesLeadRun?: string;\n anchor?: IdeaAnchor;\n idea?: string[];\n } = {},\n): Promise<void> {\n if (!sourceSha) return;\n await updateRenderState(canvasRoot, slug, {\n rendered: { sourceSha, runId, at: Date.now() },\n ...(drawn.prompt !== undefined ? { prompt: drawn.prompt } : {}),\n ...(drawn.anchor ? { anchor: drawn.anchor } : {}),\n ...(drawn.idea ? { idea: drawn.idea } : {}),\n lastFix: drawn.lastFix,\n picture: drawn.picture,\n ...(drawn.seriesLeadRun ? { seriesLeadRun: drawn.seriesLeadRun } : {}),\n });\n}\n\n/** What the person saw when a chat turn started: every run in that turn is held to it (`idea-gate.ts`). */\nexport async function recordSeen(canvasRoot: string, slug: string, seen: NonNullable<RenderState[\"seen\"]>): Promise<void> {\n await updateRenderState(canvasRoot, slug, { seen });\n}\n\n/** The idea of the version shown in plain lines, for the per-message hook, when this workspace has none yet. */\nexport async function recordIdeaLines(canvasRoot: string, slug: string, idea: string[]): Promise<void> {\n if ((await readRenderState(canvasRoot, slug)).idea) return;\n await updateRenderState(canvasRoot, slug, { idea });\n}\n\n/** What the review of a completed render found blocking, and the fix the render ran, if one. */\nexport async function recordReviewOutcome(\n canvasRoot: string,\n slug: string,\n outcome: { blocking: string[]; lastFix?: LastFix },\n): Promise<void> {\n await updateRenderState(canvasRoot, slug, outcome);\n}\n\n/** The version of its lead a series ad's run was registered from: written before the run renders. */\nexport async function recordSeriesLeadRun(canvasRoot: string, slug: string, leadRunId: string): Promise<void> {\n await updateRenderState(canvasRoot, slug, { seriesLeadRun: leadRunId });\n}\n\nexport async function recordSnapshot(canvasRoot: string, slug: string, snapshot: RenderState[\"snapshot\"]): Promise<void> {\n await updateRenderState(canvasRoot, slug, { snapshot });\n}\n\n/**\n * Whether the preview in this workspace no longer shows the source: it was rendered, the\n * source has moved since (`isSourceStale`: a render fingerprinted by an older rule never\n * is), and no render of the source as it is now was attempted yet.\n */\nexport function isRenderStale(state: RenderState, currentSourceSha: string): boolean {\n if (!state.rendered) return false;\n if (!isSourceStale(currentSourceSha, state.rendered.sourceSha)) return false;\n return state.attempted?.sourceSha !== currentSourceSha;\n}\n\n/** `sourceSha` is the source as it stands now: what a render of it would record. */\nexport type StaleCreative = { slug: string; canvasPath: string; renderedRunId: string; sourceSha: string };\n\n/**\n * Every renderable creative in the workspace whose preview is stale. A canvas that still\n * has an unfilled `[TODO]` asset slot is skipped: the agent is mid-build, and a half-built\n * creative must never be pushed to render. The source is fingerprinted the way a render\n * and the dashboard sync fingerprint it (`prepareCanvas`, read-only), so the three never\n * disagree about what is stale. `canvasPath` is workspace-relative.\n */\nexport async function staleCreatives(workspaceRoot: string): Promise<StaleCreative[]> {\n const creativesDir = path.join(workspaceRoot, \"src\", \"creatives\");\n const canvasRoot = path.join(workspaceRoot, \"canvas\");\n let slugs: string[];\n try {\n slugs = (await readdir(creativesDir, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => d.name);\n } catch {\n return [];\n }\n const stale: StaleCreative[] = [];\n for (const slug of slugs.sort()) {\n const state = await readRenderState(canvasRoot, slug);\n if (!state.rendered) continue;\n const canvasPath = path.join(creativesDir, slug, `${slug}.canvas.json`);\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(canvasPath, { write: false });\n } catch {\n continue; // Gone, renamed, or mid-edit invalid JSON: the next check reads it again.\n }\n if (unsuppliedPlaceholderAssets(prepared.fileGraph).length > 0) continue;\n const current = prepared.sourceSha;\n if (!current || !isRenderStale(state, current)) continue;\n stale.push({\n slug,\n canvasPath: path.relative(workspaceRoot, canvasPath).split(path.sep).join(\"/\"),\n renderedRunId: state.rendered.runId,\n sourceSha: current,\n });\n }\n return stale;\n}\n\n/**\n * Remove the `canvas/.dirty/<slug>.json` marker an older scaffold's PostToolUse hook wrote.\n * Nothing in a current scaffold reads it, but a client repo can run this CLI before its\n * scaffold sync lands, and there the old Stop hook and verify gate still read the marker:\n * clearing it on a render attempt, as the CLI always did, keeps that gate from blocking\n * forever. Delete once every client runs a scaffold without `nudge-canvas-rerender`.\n */\nexport async function clearLegacyDirtyMarker(canvasRoot: string, slug: string): Promise<void> {\n await rm(path.join(canvasRoot, \".dirty\", `${slug}.json`), { force: true }).catch(() => undefined);\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,OAAO,SAAS,UAAU,IAAI,iBAAiB;AACxD,OAAO,UAAU;AA6BV,IAAM,mBAAmB;AAgChC,SAAS,UAAU,YAAoB,MAAsB;AAC3D,SAAO,KAAK,KAAK,YAAY,kBAAkB,GAAG,IAAI,OAAO;AAC/D;AAEA,eAAsB,gBAAgB,YAAoB,MAAoC;AAC5F,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,MAAM,SAAS,UAAU,YAAY,IAAI,GAAG,MAAM,CAAC;AAC7E,WAAO,UAAU,OAAO,WAAW,WAAW,SAAS,CAAC;AAAA,EAC1D,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAGA,eAAsB,cAAc,YAAoB,MAAsC;AAC5F,UAAQ,MAAM,gBAAgB,YAAY,IAAI,GAAG,UAAU,SAAS;AACtE;AAGA,eAAe,kBAAkB,YAAoB,MAAc,OAA4C;AAC7G,MAAI;AACF,UAAM,OAAO,EAAE,GAAI,MAAM,gBAAgB,YAAY,IAAI,GAAI,GAAG,MAAM;AACtE,UAAM,MAAM,KAAK,KAAK,YAAY,gBAAgB,GAAG,EAAE,WAAW,KAAK,CAAC;AACxE,UAAM,UAAU,UAAU,YAAY,IAAI,GAAG,GAAG,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAAA,EAC3F,QAAQ;AAAA,EAER;AACF;AAEA,eAAsB,oBAAoB,YAAoB,MAAc,WAA8C;AACxH,MAAI,CAAC,UAAW;AAChB,QAAM,kBAAkB,YAAY,MAAM,EAAE,WAAW,EAAE,WAAW,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;AACxF;AAEA,eAAsB,eACpB,YACA,MACA,WACA,OACA,QAOI,CAAC,GACU;AACf,MAAI,CAAC,UAAW;AAChB,QAAM,kBAAkB,YAAY,MAAM;AAAA,IACxC,UAAU,EAAE,WAAW,OAAO,IAAI,KAAK,IAAI,EAAE;AAAA,IAC7C,GAAI,MAAM,WAAW,SAAY,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;AAAA,IAC7D,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;AAAA,IAC/C,GAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,IACzC,SAAS,MAAM;AAAA,IACf,SAAS,MAAM;AAAA,IACf,GAAI,MAAM,gBAAgB,EAAE,eAAe,MAAM,cAAc,IAAI,CAAC;AAAA,EACtE,CAAC;AACH;AAGA,eAAsB,WAAW,YAAoB,MAAc,MAAuD;AACxH,QAAM,kBAAkB,YAAY,MAAM,EAAE,KAAK,CAAC;AACpD;AAGA,eAAsB,gBAAgB,YAAoB,MAAc,MAA+B;AACrG,OAAK,MAAM,gBAAgB,YAAY,IAAI,GAAG,KAAM;AACpD,QAAM,kBAAkB,YAAY,MAAM,EAAE,KAAK,CAAC;AACpD;AAGA,eAAsB,oBACpB,YACA,MACA,SACe;AACf,QAAM,kBAAkB,YAAY,MAAM,OAAO;AACnD;AAGA,eAAsB,oBAAoB,YAAoB,MAAc,WAAkC;AAC5G,QAAM,kBAAkB,YAAY,MAAM,EAAE,eAAe,UAAU,CAAC;AACxE;AAEA,eAAsB,eAAe,YAAoB,MAAc,UAAkD;AACvH,QAAM,kBAAkB,YAAY,MAAM,EAAE,SAAS,CAAC;AACxD;AAOO,SAAS,cAAc,OAAoB,kBAAmC;AACnF,MAAI,CAAC,MAAM,SAAU,QAAO;AAC5B,MAAI,CAAC,cAAc,kBAAkB,MAAM,SAAS,SAAS,EAAG,QAAO;AACvE,SAAO,MAAM,WAAW,cAAc;AACxC;AAYA,eAAsB,eAAe,eAAiD;AACpF,QAAM,eAAe,KAAK,KAAK,eAAe,OAAO,WAAW;AAChE,QAAM,aAAa,KAAK,KAAK,eAAe,QAAQ;AACpD,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,QAAQ,cAAc,EAAE,eAAe,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,EACjH,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACA,QAAM,QAAyB,CAAC;AAChC,aAAW,QAAQ,MAAM,KAAK,GAAG;AAC/B,UAAM,QAAQ,MAAM,gBAAgB,YAAY,IAAI;AACpD,QAAI,CAAC,MAAM,SAAU;AACrB,UAAM,aAAa,KAAK,KAAK,cAAc,MAAM,GAAG,IAAI,cAAc;AACtE,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,cAAc,YAAY,EAAE,OAAO,MAAM,CAAC;AAAA,IAC7D,QAAQ;AACN;AAAA,IACF;AACA,QAAI,4BAA4B,SAAS,SAAS,EAAE,SAAS,EAAG;AAChE,UAAM,UAAU,SAAS;AACzB,QAAI,CAAC,WAAW,CAAC,cAAc,OAAO,OAAO,EAAG;AAChD,UAAM,KAAK;AAAA,MACT;AAAA,MACA,YAAY,KAAK,SAAS,eAAe,UAAU,EAAE,MAAM,KAAK,GAAG,EAAE,KAAK,GAAG;AAAA,MAC7E,eAAe,MAAM,SAAS;AAAA,MAC9B,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AACA,SAAO;AACT;AASA,eAAsB,uBAAuB,YAAoB,MAA6B;AAC5F,QAAM,GAAG,KAAK,KAAK,YAAY,UAAU,GAAG,IAAI,OAAO,GAAG,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,MAAS;AAClG;","names":[]}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import {
|
|
2
|
+
asRecord
|
|
3
|
+
} from "./chunk-KIGGMKAE.js";
|
|
4
|
+
|
|
5
|
+
// src/viewer-profile.ts
|
|
6
|
+
var VIEWER_TEMPERATURE_VALUES = ["cold", "warm", "hot"];
|
|
7
|
+
var VIEWER_KNOWS_VALUES = ["brand", "offer", "product"];
|
|
8
|
+
var VIEWER_SOURCE_VALUES = ["targeting", "knowledge"];
|
|
9
|
+
var MARKETS = {
|
|
10
|
+
ES: {
|
|
11
|
+
name: "Spain",
|
|
12
|
+
names: /(?<![\p{L}\d])(spain|españa|espana)(?![\p{L}\d])/iu,
|
|
13
|
+
language: "es-ES",
|
|
14
|
+
languageName: "Spanish from Spain",
|
|
15
|
+
currency: "EUR",
|
|
16
|
+
address: "t\xFA"
|
|
17
|
+
},
|
|
18
|
+
MX: {
|
|
19
|
+
name: "Mexico",
|
|
20
|
+
names: /(?<![\p{L}\d])(mexico|méxico)(?![\p{L}\d])/iu,
|
|
21
|
+
language: "es-MX",
|
|
22
|
+
languageName: "Mexican Spanish",
|
|
23
|
+
currency: "MXN",
|
|
24
|
+
address: "t\xFA"
|
|
25
|
+
},
|
|
26
|
+
AR: {
|
|
27
|
+
name: "Argentina",
|
|
28
|
+
names: /(?<![\p{L}\d])(argentina)(?![\p{L}\d])/iu,
|
|
29
|
+
language: "es-AR",
|
|
30
|
+
languageName: "Argentinian Spanish",
|
|
31
|
+
currency: "ARS",
|
|
32
|
+
address: "vos"
|
|
33
|
+
},
|
|
34
|
+
CO: {
|
|
35
|
+
name: "Colombia",
|
|
36
|
+
names: /(?<![\p{L}\d])(colombia)(?![\p{L}\d])/iu,
|
|
37
|
+
language: "es-CO",
|
|
38
|
+
languageName: "Colombian Spanish",
|
|
39
|
+
currency: "COP",
|
|
40
|
+
address: "t\xFA"
|
|
41
|
+
},
|
|
42
|
+
CL: {
|
|
43
|
+
name: "Chile",
|
|
44
|
+
names: /(?<![\p{L}\d])(chile)(?![\p{L}\d])/iu,
|
|
45
|
+
language: "es-CL",
|
|
46
|
+
languageName: "Chilean Spanish",
|
|
47
|
+
currency: "CLP",
|
|
48
|
+
address: "t\xFA"
|
|
49
|
+
},
|
|
50
|
+
PE: {
|
|
51
|
+
name: "Peru",
|
|
52
|
+
names: /(?<![\p{L}\d])(peru|perú)(?![\p{L}\d])/iu,
|
|
53
|
+
language: "es-PE",
|
|
54
|
+
languageName: "Peruvian Spanish",
|
|
55
|
+
currency: "PEN",
|
|
56
|
+
address: "t\xFA"
|
|
57
|
+
},
|
|
58
|
+
BR: {
|
|
59
|
+
name: "Brazil",
|
|
60
|
+
names: /(?<![\p{L}\d])(brazil|brasil)(?![\p{L}\d])/iu,
|
|
61
|
+
language: "pt-BR",
|
|
62
|
+
languageName: "Brazilian Portuguese",
|
|
63
|
+
currency: "BRL",
|
|
64
|
+
address: "voc\xEA"
|
|
65
|
+
},
|
|
66
|
+
PT: {
|
|
67
|
+
name: "Portugal",
|
|
68
|
+
names: /(?<![\p{L}\d])(portugal)(?![\p{L}\d])/iu,
|
|
69
|
+
language: "pt-PT",
|
|
70
|
+
languageName: "European Portuguese",
|
|
71
|
+
currency: "EUR",
|
|
72
|
+
address: "tu"
|
|
73
|
+
},
|
|
74
|
+
GB: {
|
|
75
|
+
name: "the United Kingdom",
|
|
76
|
+
names: /(?<![\p{L}\d])(united kingdom|uk|britain|england)(?![\p{L}\d])/iu,
|
|
77
|
+
language: "en-GB",
|
|
78
|
+
languageName: "British English",
|
|
79
|
+
currency: "GBP",
|
|
80
|
+
address: "you"
|
|
81
|
+
},
|
|
82
|
+
IE: {
|
|
83
|
+
name: "Ireland",
|
|
84
|
+
names: /(?<![\p{L}\d])(ireland)(?![\p{L}\d])/iu,
|
|
85
|
+
language: "en-IE",
|
|
86
|
+
languageName: "Irish English",
|
|
87
|
+
currency: "EUR",
|
|
88
|
+
address: "you"
|
|
89
|
+
},
|
|
90
|
+
US: {
|
|
91
|
+
name: "the United States",
|
|
92
|
+
names: /(?<![\p{L}\d])(united states|usa|u\.s\.)(?![\p{L}\d])/iu,
|
|
93
|
+
language: "en-US",
|
|
94
|
+
languageName: "American English",
|
|
95
|
+
currency: "USD",
|
|
96
|
+
address: "you"
|
|
97
|
+
},
|
|
98
|
+
DE: {
|
|
99
|
+
name: "Germany",
|
|
100
|
+
names: /(?<![\p{L}\d])(germany|deutschland)(?![\p{L}\d])/iu,
|
|
101
|
+
language: "de-DE",
|
|
102
|
+
languageName: "German",
|
|
103
|
+
currency: "EUR",
|
|
104
|
+
address: "du"
|
|
105
|
+
},
|
|
106
|
+
FR: {
|
|
107
|
+
name: "France",
|
|
108
|
+
names: /(?<![\p{L}\d])(france)(?![\p{L}\d])/iu,
|
|
109
|
+
language: "fr-FR",
|
|
110
|
+
languageName: "French",
|
|
111
|
+
currency: "EUR",
|
|
112
|
+
address: "vous"
|
|
113
|
+
},
|
|
114
|
+
IT: {
|
|
115
|
+
name: "Italy",
|
|
116
|
+
names: /(?<![\p{L}\d])(italy|italia)(?![\p{L}\d])/iu,
|
|
117
|
+
language: "it-IT",
|
|
118
|
+
languageName: "Italian",
|
|
119
|
+
currency: "EUR",
|
|
120
|
+
address: "tu"
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
function marketOfCountries(countries) {
|
|
124
|
+
const codes = [...new Set(countries.map((c) => c.trim().toUpperCase()).filter(Boolean))];
|
|
125
|
+
if (codes.length === 0) return void 0;
|
|
126
|
+
if (codes.length > 1) return { country: "global" };
|
|
127
|
+
const code = codes[0];
|
|
128
|
+
const facts = MARKETS[code];
|
|
129
|
+
return facts ? { country: code, language: facts.language, currency: facts.currency, address: facts.address } : { country: code };
|
|
130
|
+
}
|
|
131
|
+
function marketFromCompanyDoc(doc) {
|
|
132
|
+
const marketLine = /(?<![\p{L}\d])(markets?|geo|geograph\w*|country|countries|país|paises|países|mercados?|marchés?|pays|\w*markt|mercato|mercati|paese)(?![\p{L}\d])/iu;
|
|
133
|
+
for (const line of (doc ?? "").split("\n")) {
|
|
134
|
+
if (!marketLine.test(line)) continue;
|
|
135
|
+
const found = Object.entries(MARKETS).filter(([, facts]) => facts.names.test(line)).map(([code]) => code);
|
|
136
|
+
const market = marketOfCountries(found);
|
|
137
|
+
if (market) return market;
|
|
138
|
+
}
|
|
139
|
+
return void 0;
|
|
140
|
+
}
|
|
141
|
+
function describeMarket(market) {
|
|
142
|
+
if (market.country === "global") return "a person in any of the countries the ad runs in";
|
|
143
|
+
const facts = MARKETS[market.country];
|
|
144
|
+
const where = facts?.name ?? market.country;
|
|
145
|
+
const language = facts && market.language === facts.language ? facts.languageName : market.language;
|
|
146
|
+
return [
|
|
147
|
+
`a person living in ${where}`,
|
|
148
|
+
language ? ` who reads ${language} natively` : "",
|
|
149
|
+
market.currency ? `, pays in ${market.currency}` : "",
|
|
150
|
+
market.address ? ` and is spoken to as ${market.address}` : ""
|
|
151
|
+
].join("");
|
|
152
|
+
}
|
|
153
|
+
function marketCountryName(market) {
|
|
154
|
+
return market.country === "global" ? null : MARKETS[market.country]?.name ?? market.country;
|
|
155
|
+
}
|
|
156
|
+
function text(value) {
|
|
157
|
+
return typeof value === "string" ? value : "";
|
|
158
|
+
}
|
|
159
|
+
function audienceRefs(value) {
|
|
160
|
+
if (!Array.isArray(value)) return [];
|
|
161
|
+
return value.flatMap((entry) => {
|
|
162
|
+
const ref = asRecord(entry);
|
|
163
|
+
const id = text(ref?.id);
|
|
164
|
+
return id ? [{ id, name: text(ref?.name) }] : [];
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
var COLD = { temperature: "cold", knows: [] };
|
|
168
|
+
function tierOf(audience, ref, readName) {
|
|
169
|
+
const subtype = text(audience?.subtype).toUpperCase();
|
|
170
|
+
const name = text(audience?.name) || ref.name;
|
|
171
|
+
const read = readName?.(name);
|
|
172
|
+
if (subtype === "LOOKALIKE" || !subtype && read?.lookalike) {
|
|
173
|
+
return { ...COLD, who: "a lookalike: strangers who resemble the seed" };
|
|
174
|
+
}
|
|
175
|
+
if (read?.buyers) return { temperature: "hot", knows: ["brand", "offer", "product"], who: "buyers" };
|
|
176
|
+
if (subtype === "WEBSITE") return { temperature: "warm", knows: ["brand", "offer"], who: "site visitors" };
|
|
177
|
+
if (subtype === "CUSTOM") {
|
|
178
|
+
return { temperature: "hot", knows: ["brand", "offer", "product"], who: "an uploaded customer list" };
|
|
179
|
+
}
|
|
180
|
+
return { temperature: "warm", knows: ["brand"], who: "people who engaged with the brand" };
|
|
181
|
+
}
|
|
182
|
+
function classifyAudience(adSet, audiences, campaign, readName) {
|
|
183
|
+
const targeting = asRecord(adSet.targeting) ?? {};
|
|
184
|
+
const byId = new Map(audiences.map((audience) => [text(audience.id), audience]));
|
|
185
|
+
const includedRefs = audienceRefs(targeting.custom_audiences);
|
|
186
|
+
const included = includedRefs.map((ref) => tierOf(byId.get(ref.id), ref, readName));
|
|
187
|
+
const reasons = [
|
|
188
|
+
includedRefs.length === 0 ? "No custom audience: Meta finds new people from age, place and interests, so every viewer is a stranger." : `Reaches ${includedRefs.map((ref, i) => `"${ref.name || ref.id}" (${included[i]?.who})`).join(", ")}.`
|
|
189
|
+
];
|
|
190
|
+
const unlisted = includedRefs.filter((ref) => !byId.has(ref.id));
|
|
191
|
+
if (unlisted.length > 0) {
|
|
192
|
+
reasons.push(`${quoteNames(unlisted)} is not in this account's audience list, so it was read from its name alone.`);
|
|
193
|
+
}
|
|
194
|
+
let reached = coldestOf(included);
|
|
195
|
+
if (asRecord(targeting.targeting_automation)?.advantage_audience === 1 && included.length > 0) {
|
|
196
|
+
reached = belowHot(reached);
|
|
197
|
+
reasons.push(
|
|
198
|
+
"Advantage+ audience treats the chosen audiences as suggestions and reaches past them, so part of the delivery goes to people who have never bought."
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
const excludedRefs = audienceRefs(targeting.excluded_custom_audiences);
|
|
202
|
+
if (excludedRefs.length > 0) reasons.push(`Keeps out ${quoteNames(excludedRefs)}.`);
|
|
203
|
+
if (excludedRefs.some((ref) => tierOf(byId.get(ref.id), ref, readName).temperature === "hot")) {
|
|
204
|
+
reached = belowHot(reached);
|
|
205
|
+
reasons.push("Buyers are excluded, so nobody reached has used the product.");
|
|
206
|
+
}
|
|
207
|
+
const objective = text(campaign?.objective);
|
|
208
|
+
if (reached.temperature === "cold" && ASKS_TO_ACT.test(objective)) {
|
|
209
|
+
reasons.push(
|
|
210
|
+
`Campaign objective ${objective} asks a stranger to act on first contact, so the ad alone must say what is offered and to whom.`
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
const countries = strings(asRecord(targeting.geo_locations)?.countries);
|
|
214
|
+
const market = marketOfCountries(countries);
|
|
215
|
+
if (market?.country === "global") {
|
|
216
|
+
reasons.push(
|
|
217
|
+
`Runs in ${countries.join(", ")}: one version for every market, with no country's places, money or faces.`
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
const placements = placementsOf(targeting);
|
|
221
|
+
if (placements.length === 0) {
|
|
222
|
+
reasons.push(
|
|
223
|
+
"Advantage+ placements: Meta picks the surface, so the ad must also work full-screen in Stories and Reels, not only in the feed."
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
temperature: reached.temperature,
|
|
228
|
+
knows: reached.knows,
|
|
229
|
+
placements: placements.length > 0 ? placements : ["automatic"],
|
|
230
|
+
source: "targeting",
|
|
231
|
+
reasons,
|
|
232
|
+
...market ? { market } : {}
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
var ASKS_TO_ACT = /^(OUTCOME_SALES|OUTCOME_LEADS|OUTCOME_APP_PROMOTION|CONVERSIONS|LEAD_GENERATION|PRODUCT_CATALOG_SALES)$/;
|
|
236
|
+
function strings(value) {
|
|
237
|
+
return Array.isArray(value) ? value.filter((entry) => typeof entry === "string") : [];
|
|
238
|
+
}
|
|
239
|
+
function placementsOf(targeting) {
|
|
240
|
+
return strings(targeting.publisher_platforms).flatMap((platform) => {
|
|
241
|
+
const positions = strings(targeting[`${platform}_positions`]);
|
|
242
|
+
if (positions.length === 0) return [platform];
|
|
243
|
+
return positions.map((position) => {
|
|
244
|
+
const surface = platform === "instagram" && position === "stream" ? "feed" : position;
|
|
245
|
+
return surface.startsWith(`${platform}_`) ? surface : `${platform}_${surface}`;
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
function quoteNames(refs) {
|
|
250
|
+
return refs.map((ref) => `"${ref.name || ref.id}"`).join(", ");
|
|
251
|
+
}
|
|
252
|
+
function belowHot(tier) {
|
|
253
|
+
if (tier.temperature !== "hot") return tier;
|
|
254
|
+
return { temperature: "warm", knows: tier.knows.filter((known) => known !== "product") };
|
|
255
|
+
}
|
|
256
|
+
var WARMTH = { cold: 0, warm: 1, hot: 2 };
|
|
257
|
+
function coldestOf(tiers) {
|
|
258
|
+
const [first, ...rest] = tiers;
|
|
259
|
+
if (!first) return COLD;
|
|
260
|
+
return rest.reduce(
|
|
261
|
+
(acc, tier) => ({
|
|
262
|
+
temperature: WARMTH[tier.temperature] < WARMTH[acc.temperature] ? tier.temperature : acc.temperature,
|
|
263
|
+
knows: acc.knows.filter((known) => tier.knows.includes(known))
|
|
264
|
+
}),
|
|
265
|
+
first
|
|
266
|
+
);
|
|
267
|
+
}
|
|
268
|
+
var AWARENESS_VALUES = ["unaware", "problem_aware", "solution_aware", "product_aware", "most_aware"];
|
|
269
|
+
var BY_AWARENESS = {
|
|
270
|
+
unaware: COLD,
|
|
271
|
+
problem_aware: COLD,
|
|
272
|
+
solution_aware: COLD,
|
|
273
|
+
product_aware: { temperature: "warm", knows: ["brand", "offer"] },
|
|
274
|
+
most_aware: { temperature: "hot", knows: ["brand", "offer", "product"] }
|
|
275
|
+
};
|
|
276
|
+
var CUSTOMER_SEGMENT = /\b(existing|current|past|former|returning|repeat)\s+(customers?|clients?|buyers?|members?|subscribers?|users?)\b|\bclientes\s+(actuales|existentes)\b|\bantiguos\s+clientes\b/i;
|
|
277
|
+
var CONTACT_SEGMENT = /\b(leads?|prospects?)\s+(who|that)\b|\b(site|website|web)\s+visitors\b|\babandon(ed|s)?\s+(carts?|checkouts?|forms?)\b|\btrial\s+users\b|\bvisitantes\b/i;
|
|
278
|
+
function tierOfSegment(segment) {
|
|
279
|
+
if (CUSTOMER_SEGMENT.test(segment)) return { temperature: "hot", knows: ["brand", "offer", "product"] };
|
|
280
|
+
if (CONTACT_SEGMENT.test(segment)) return { temperature: "warm", knows: ["brand", "offer"] };
|
|
281
|
+
return void 0;
|
|
282
|
+
}
|
|
283
|
+
function viewerFromKnowledge(input) {
|
|
284
|
+
const reasons = ["No ad set to read, so this viewer comes from the Knowledge and the brief, not from targeting."];
|
|
285
|
+
let tier = COLD;
|
|
286
|
+
if (input.awareness) {
|
|
287
|
+
tier = BY_AWARENESS[input.awareness];
|
|
288
|
+
reasons.push(`The concept is written for a ${input.awareness.replace("_", "-")} viewer.`);
|
|
289
|
+
} else {
|
|
290
|
+
const warmed = input.personas.flatMap((segment) => {
|
|
291
|
+
const read = tierOfSegment(segment);
|
|
292
|
+
return read ? [{ segment, read }] : [];
|
|
293
|
+
});
|
|
294
|
+
if (warmed.length > 0 && warmed.length === input.personas.length) {
|
|
295
|
+
tier = coldestOf(warmed.map((entry) => entry.read));
|
|
296
|
+
reasons.push(
|
|
297
|
+
`The persona is defined by what they already did with the brand: ${warmed.map((entry) => `"${entry.segment}"`).join(", ")}.`
|
|
298
|
+
);
|
|
299
|
+
} else {
|
|
300
|
+
reasons.push("Nothing on file says the viewer knows the brand: design for a stranger.");
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return { temperature: tier.temperature, knows: tier.knows, placements: ["automatic"], source: "knowledge", reasons };
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
export {
|
|
307
|
+
VIEWER_TEMPERATURE_VALUES,
|
|
308
|
+
VIEWER_KNOWS_VALUES,
|
|
309
|
+
VIEWER_SOURCE_VALUES,
|
|
310
|
+
marketFromCompanyDoc,
|
|
311
|
+
describeMarket,
|
|
312
|
+
marketCountryName,
|
|
313
|
+
classifyAudience,
|
|
314
|
+
AWARENESS_VALUES,
|
|
315
|
+
viewerFromKnowledge
|
|
316
|
+
};
|
|
317
|
+
//# sourceMappingURL=chunk-KPYDTIAI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/viewer-profile.ts"],"sourcesContent":["import { asRecord } from \"./commands/ads/list-rows.ts\";\n\n/**\n * Who will see an ad, read off what the ad set actually targets rather than what\n * anyone hopes it targets — or, with no ad set, off the Knowledge and the brief.\n * `baker ads meta adsets --audience` prints it; a creative records it in its\n * `_definition.md` (`viewer`), and the viewer check plays it.\n */\n\nexport const VIEWER_TEMPERATURE_VALUES = [\"cold\", \"warm\", \"hot\"] as const;\nexport const VIEWER_KNOWS_VALUES = [\"brand\", \"offer\", \"product\"] as const;\nexport const VIEWER_SOURCE_VALUES = [\"targeting\", \"knowledge\"] as const;\n\nexport type ViewerTemperature = (typeof VIEWER_TEMPERATURE_VALUES)[number];\nexport type ViewerKnows = (typeof VIEWER_KNOWS_VALUES)[number];\n\n/**\n * Where the viewer lives and how they are spoken to (D1): the country (`global` for a version\n * that runs in several), the language variant, the currency and the form of address.\n */\nexport interface ViewerMarket {\n country: string;\n language?: string;\n currency?: string;\n address?: string;\n}\n\nexport interface ViewerProfile {\n temperature: ViewerTemperature;\n knows: ViewerKnows[];\n placements: string[];\n source: (typeof VIEWER_SOURCE_VALUES)[number];\n reasons: string[];\n /** Where they live: read off the ad set's countries, else COMPANY.md. */\n market?: ViewerMarket;\n}\n\ntype MarketFacts = {\n name: string;\n names: RegExp;\n language: string;\n languageName: string;\n currency: string;\n address: string;\n};\n\n/** The markets our ads run in, with how an ad speaks there. A country not listed keeps its code alone. */\nconst MARKETS: Readonly<Record<string, MarketFacts>> = {\n ES: {\n name: \"Spain\",\n names: /(?<![\\p{L}\\d])(spain|españa|espana)(?![\\p{L}\\d])/iu,\n language: \"es-ES\",\n languageName: \"Spanish from Spain\",\n currency: \"EUR\",\n address: \"tú\",\n },\n MX: {\n name: \"Mexico\",\n names: /(?<![\\p{L}\\d])(mexico|méxico)(?![\\p{L}\\d])/iu,\n language: \"es-MX\",\n languageName: \"Mexican Spanish\",\n currency: \"MXN\",\n address: \"tú\",\n },\n AR: {\n name: \"Argentina\",\n names: /(?<![\\p{L}\\d])(argentina)(?![\\p{L}\\d])/iu,\n language: \"es-AR\",\n languageName: \"Argentinian Spanish\",\n currency: \"ARS\",\n address: \"vos\",\n },\n CO: {\n name: \"Colombia\",\n names: /(?<![\\p{L}\\d])(colombia)(?![\\p{L}\\d])/iu,\n language: \"es-CO\",\n languageName: \"Colombian Spanish\",\n currency: \"COP\",\n address: \"tú\",\n },\n CL: {\n name: \"Chile\",\n names: /(?<![\\p{L}\\d])(chile)(?![\\p{L}\\d])/iu,\n language: \"es-CL\",\n languageName: \"Chilean Spanish\",\n currency: \"CLP\",\n address: \"tú\",\n },\n PE: {\n name: \"Peru\",\n names: /(?<![\\p{L}\\d])(peru|perú)(?![\\p{L}\\d])/iu,\n language: \"es-PE\",\n languageName: \"Peruvian Spanish\",\n currency: \"PEN\",\n address: \"tú\",\n },\n BR: {\n name: \"Brazil\",\n names: /(?<![\\p{L}\\d])(brazil|brasil)(?![\\p{L}\\d])/iu,\n language: \"pt-BR\",\n languageName: \"Brazilian Portuguese\",\n currency: \"BRL\",\n address: \"você\",\n },\n PT: {\n name: \"Portugal\",\n names: /(?<![\\p{L}\\d])(portugal)(?![\\p{L}\\d])/iu,\n language: \"pt-PT\",\n languageName: \"European Portuguese\",\n currency: \"EUR\",\n address: \"tu\",\n },\n GB: {\n name: \"the United Kingdom\",\n names: /(?<![\\p{L}\\d])(united kingdom|uk|britain|england)(?![\\p{L}\\d])/iu,\n language: \"en-GB\",\n languageName: \"British English\",\n currency: \"GBP\",\n address: \"you\",\n },\n IE: {\n name: \"Ireland\",\n names: /(?<![\\p{L}\\d])(ireland)(?![\\p{L}\\d])/iu,\n language: \"en-IE\",\n languageName: \"Irish English\",\n currency: \"EUR\",\n address: \"you\",\n },\n US: {\n name: \"the United States\",\n names: /(?<![\\p{L}\\d])(united states|usa|u\\.s\\.)(?![\\p{L}\\d])/iu,\n language: \"en-US\",\n languageName: \"American English\",\n currency: \"USD\",\n address: \"you\",\n },\n DE: {\n name: \"Germany\",\n names: /(?<![\\p{L}\\d])(germany|deutschland)(?![\\p{L}\\d])/iu,\n language: \"de-DE\",\n languageName: \"German\",\n currency: \"EUR\",\n address: \"du\",\n },\n FR: {\n name: \"France\",\n names: /(?<![\\p{L}\\d])(france)(?![\\p{L}\\d])/iu,\n language: \"fr-FR\",\n languageName: \"French\",\n currency: \"EUR\",\n address: \"vous\",\n },\n IT: {\n name: \"Italy\",\n names: /(?<![\\p{L}\\d])(italy|italia)(?![\\p{L}\\d])/iu,\n language: \"it-IT\",\n languageName: \"Italian\",\n currency: \"EUR\",\n address: \"tu\",\n },\n};\n\n/**\n * The market an ad set's countries make: one country is its own market; several are one global\n * version in the campaign's language, with market-neutral people, places and money. Pure.\n */\nexport function marketOfCountries(countries: readonly string[]): ViewerMarket | undefined {\n const codes = [...new Set(countries.map((c) => c.trim().toUpperCase()).filter(Boolean))];\n if (codes.length === 0) return undefined;\n if (codes.length > 1) return { country: \"global\" };\n const code = codes[0] as string;\n const facts = MARKETS[code];\n return facts\n ? { country: code, language: facts.language, currency: facts.currency, address: facts.address }\n : { country: code };\n}\n\n/** The market COMPANY.md names on its first market or geography line that names a country. Pure. */\nexport function marketFromCompanyDoc(doc: string | null | undefined): ViewerMarket | undefined {\n const marketLine =\n /(?<![\\p{L}\\d])(markets?|geo|geograph\\w*|country|countries|país|paises|países|mercados?|marchés?|pays|\\w*markt|mercato|mercati|paese)(?![\\p{L}\\d])/iu;\n for (const line of (doc ?? \"\").split(\"\\n\")) {\n if (!marketLine.test(line)) continue;\n const found = Object.entries(MARKETS)\n .filter(([, facts]) => facts.names.test(line))\n .map(([code]) => code);\n const market = marketOfCountries(found);\n if (market) return market;\n }\n return undefined;\n}\n\n/** The market in the viewer's own terms, for a model that plays them. Pure. */\nexport function describeMarket(market: ViewerMarket): string {\n if (market.country === \"global\") return \"a person in any of the countries the ad runs in\";\n const facts = MARKETS[market.country];\n const where = facts?.name ?? market.country;\n const language = facts && market.language === facts.language ? facts.languageName : market.language;\n return [\n `a person living in ${where}`,\n language ? ` who reads ${language} natively` : \"\",\n market.currency ? `, pays in ${market.currency}` : \"\",\n market.address ? ` and is spoken to as ${market.address}` : \"\",\n ].join(\"\");\n}\n\n/** The country a market names, in words (\"Mexico\"); null for a global version. */\nexport function marketCountryName(market: ViewerMarket): string | null {\n return market.country === \"global\" ? null : (MARKETS[market.country]?.name ?? market.country);\n}\n\nexport interface AdSetTargetingInput {\n targeting?: unknown;\n}\n\nexport interface CustomAudienceInput {\n id?: unknown;\n name?: unknown;\n subtype?: unknown;\n}\n\nexport interface CampaignInput {\n objective?: unknown;\n}\n\nfunction text(value: unknown): string {\n return typeof value === \"string\" ? value : \"\";\n}\n\n/** The `{ id, name }` entries of a targeting list such as `custom_audiences`. */\nfunction audienceRefs(value: unknown): Array<{ id: string; name: string }> {\n if (!Array.isArray(value)) return [];\n return value.flatMap((entry) => {\n const ref = asRecord(entry);\n const id = text(ref?.id);\n return id ? [{ id, name: text(ref?.name) }] : [];\n });\n}\n\n/** What one custom audience's members have already been through with the brand. */\ninterface AudienceTier {\n temperature: ViewerTemperature;\n knows: ViewerKnows[];\n}\n\ninterface AudienceRead extends AudienceTier {\n /** Who its members are, in the words a reason prints. */\n who: string;\n}\n\n/**\n * What an audience's NAME says its members are, as the decision model read it in the advertiser's\n * own language (`audience-names.ts`). A pixel or event audience's subtype says where its members\n * came from, not what they did: \"Purchasers 180d\" and \"All visitors 30d\" are both WEBSITE, and\n * the name is the one place an account records the event. Undefined when the name was not read.\n */\nexport type AudienceNameReading = (name: string) => { buyers: boolean; lookalike: boolean } | undefined;\n\nconst COLD: AudienceTier = { temperature: \"cold\", knows: [] };\n\nfunction tierOf(\n audience: CustomAudienceInput | undefined,\n ref: { name: string },\n readName: AudienceNameReading | undefined,\n): AudienceRead {\n const subtype = text(audience?.subtype).toUpperCase();\n const name = text(audience?.name) || ref.name;\n const read = readName?.(name);\n // Meta names a lookalike after its seed (\"Lookalike (GB, 1%) - Purchasers\"), so it is ruled out before the name is read.\n if (subtype === \"LOOKALIKE\" || (!subtype && read?.lookalike)) {\n return { ...COLD, who: \"a lookalike: strangers who resemble the seed\" };\n }\n if (read?.buyers) return { temperature: \"hot\", knows: [\"brand\", \"offer\", \"product\"], who: \"buyers\" };\n if (subtype === \"WEBSITE\") return { temperature: \"warm\", knows: [\"brand\", \"offer\"], who: \"site visitors\" };\n if (subtype === \"CUSTOM\") {\n return { temperature: \"hot\", knows: [\"brand\", \"offer\", \"product\"], who: \"an uploaded customer list\" };\n }\n // Every other custom audience is people who met the brand somewhere: a Page, a profile, a video, the app.\n return { temperature: \"warm\", knows: [\"brand\"], who: \"people who engaged with the brand\" };\n}\n\nexport function classifyAudience(\n adSet: AdSetTargetingInput,\n audiences: readonly CustomAudienceInput[],\n campaign: CampaignInput | undefined,\n readName?: AudienceNameReading,\n): ViewerProfile {\n const targeting = asRecord(adSet.targeting) ?? {};\n const byId = new Map(audiences.map((audience) => [text(audience.id), audience]));\n const includedRefs = audienceRefs(targeting.custom_audiences);\n const included = includedRefs.map((ref) => tierOf(byId.get(ref.id), ref, readName));\n const reasons: string[] = [\n includedRefs.length === 0\n ? \"No custom audience: Meta finds new people from age, place and interests, so every viewer is a stranger.\"\n : `Reaches ${includedRefs.map((ref, i) => `\"${ref.name || ref.id}\" (${included[i]?.who})`).join(\", \")}.`,\n ];\n const unlisted = includedRefs.filter((ref) => !byId.has(ref.id));\n if (unlisted.length > 0) {\n reasons.push(`${quoteNames(unlisted)} is not in this account's audience list, so it was read from its name alone.`);\n }\n let reached = coldestOf(included);\n if (asRecord(targeting.targeting_automation)?.advantage_audience === 1 && included.length > 0) {\n reached = belowHot(reached);\n reasons.push(\n \"Advantage+ audience treats the chosen audiences as suggestions and reaches past them, so part of the delivery goes to people who have never bought.\",\n );\n }\n const excludedRefs = audienceRefs(targeting.excluded_custom_audiences);\n if (excludedRefs.length > 0) reasons.push(`Keeps out ${quoteNames(excludedRefs)}.`);\n if (excludedRefs.some((ref) => tierOf(byId.get(ref.id), ref, readName).temperature === \"hot\")) {\n reached = belowHot(reached);\n reasons.push(\"Buyers are excluded, so nobody reached has used the product.\");\n }\n const objective = text(campaign?.objective);\n if (reached.temperature === \"cold\" && ASKS_TO_ACT.test(objective)) {\n reasons.push(\n `Campaign objective ${objective} asks a stranger to act on first contact, so the ad alone must say what is offered and to whom.`,\n );\n }\n const countries = strings(asRecord(targeting.geo_locations)?.countries);\n const market = marketOfCountries(countries);\n if (market?.country === \"global\") {\n reasons.push(\n `Runs in ${countries.join(\", \")}: one version for every market, with no country's places, money or faces.`,\n );\n }\n const placements = placementsOf(targeting);\n if (placements.length === 0) {\n reasons.push(\n \"Advantage+ placements: Meta picks the surface, so the ad must also work full-screen in Stories and Reels, not only in the feed.\",\n );\n }\n return {\n temperature: reached.temperature,\n knows: reached.knows,\n placements: placements.length > 0 ? placements : [\"automatic\"],\n source: \"targeting\",\n reasons,\n ...(market ? { market } : {}),\n };\n}\n\n/**\n * The objective says what the campaign wants from a viewer, never who the viewer is:\n * a conversion campaign on broad targeting still meets strangers. So it adds a reason\n * and never moves the temperature.\n */\nconst ASKS_TO_ACT =\n /^(OUTCOME_SALES|OUTCOME_LEADS|OUTCOME_APP_PROMOTION|CONVERSIONS|LEAD_GENERATION|PRODUCT_CATALOG_SALES)$/;\n\nfunction strings(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((entry): entry is string => typeof entry === \"string\") : [];\n}\n\n/**\n * `instagram_positions` calls the feed `stream` and Facebook's Reels are already\n * `facebook_reels`; one `<platform>_<surface>` spelling reads the same for both.\n */\nfunction placementsOf(targeting: Record<string, unknown>): string[] {\n return strings(targeting.publisher_platforms).flatMap((platform) => {\n const positions = strings(targeting[`${platform}_positions`]);\n // A platform with no positions of its own is every surface on it.\n if (positions.length === 0) return [platform];\n return positions.map((position) => {\n const surface = platform === \"instagram\" && position === \"stream\" ? \"feed\" : position;\n return surface.startsWith(`${platform}_`) ? surface : `${platform}_${surface}`;\n });\n });\n}\n\nfunction quoteNames(refs: ReadonlyArray<{ id: string; name: string }>): string {\n return refs.map((ref) => `\"${ref.name || ref.id}\"`).join(\", \");\n}\n\n/** Only buyers know the product itself; anyone short of that knows at most the brand and its offer. */\nfunction belowHot(tier: AudienceTier): AudienceTier {\n if (tier.temperature !== \"hot\") return tier;\n return { temperature: \"warm\", knows: tier.knows.filter((known) => known !== \"product\") };\n}\n\nconst WARMTH: Record<ViewerTemperature, number> = { cold: 0, warm: 1, hot: 2 };\n\n/**\n * Meta delivers to anyone in ANY included audience, so the ad has to work on the\n * coldest of them, and it can only lean on what every one of them already knows.\n */\nfunction coldestOf(tiers: readonly AudienceTier[]): AudienceTier {\n const [first, ...rest] = tiers;\n if (!first) return COLD;\n return rest.reduce<AudienceTier>(\n (acc, tier) => ({\n temperature: WARMTH[tier.temperature] < WARMTH[acc.temperature] ? tier.temperature : acc.temperature,\n knows: acc.knows.filter((known) => tier.knows.includes(known)),\n }),\n first,\n );\n}\n\n/** The awareness stages a creative's `awareness` field takes (the scaffold `creatives` collection). */\nexport const AWARENESS_VALUES = [\"unaware\", \"problem_aware\", \"solution_aware\", \"product_aware\", \"most_aware\"] as const;\n\nexport type Awareness = (typeof AWARENESS_VALUES)[number];\n\n/** Until a viewer is aware of the product, they know nothing of the brand behind it either. */\nconst BY_AWARENESS: Record<Awareness, AudienceTier> = {\n unaware: COLD,\n problem_aware: COLD,\n solution_aware: COLD,\n product_aware: { temperature: \"warm\", knows: [\"brand\", \"offer\"] },\n most_aware: { temperature: \"hot\", knows: [\"brand\", \"offer\", \"product\"] },\n};\n\n/**\n * A persona segment says what the viewer already did with the brand only when it is\n * defined by it (\"Existing customers up for renewal\", \"Leads who went quiet\"). Phrases,\n * not words: \"Marketing leads at SaaS firms\" are job titles, not leads.\n */\nconst CUSTOMER_SEGMENT =\n /\\b(existing|current|past|former|returning|repeat)\\s+(customers?|clients?|buyers?|members?|subscribers?|users?)\\b|\\bclientes\\s+(actuales|existentes)\\b|\\bantiguos\\s+clientes\\b/i;\nconst CONTACT_SEGMENT =\n /\\b(leads?|prospects?)\\s+(who|that)\\b|\\b(site|website|web)\\s+visitors\\b|\\babandon(ed|s)?\\s+(carts?|checkouts?|forms?)\\b|\\btrial\\s+users\\b|\\bvisitantes\\b/i;\n\nfunction tierOfSegment(segment: string): AudienceTier | undefined {\n if (CUSTOMER_SEGMENT.test(segment)) return { temperature: \"hot\", knows: [\"brand\", \"offer\", \"product\"] };\n if (CONTACT_SEGMENT.test(segment)) return { temperature: \"warm\", knows: [\"brand\", \"offer\"] };\n return undefined;\n}\n\nexport interface KnowledgeViewerInput {\n /** The segment line (frontmatter `segment`, else the title) of each persona the ad is for. */\n personas: readonly string[];\n /** The awareness stage the concept was written for, when the brief set one. */\n awareness?: Awareness;\n}\n\n/**\n * The viewer when there is no ad set to read. The Knowledge describes who a persona\n * is, almost never what they already know about the brand, so the stranger is the\n * default and only an explicit signal warms it.\n */\nexport function viewerFromKnowledge(input: KnowledgeViewerInput): ViewerProfile {\n const reasons = [\"No ad set to read, so this viewer comes from the Knowledge and the brief, not from targeting.\"];\n let tier = COLD;\n if (input.awareness) {\n tier = BY_AWARENESS[input.awareness];\n reasons.push(`The concept is written for a ${input.awareness.replace(\"_\", \"-\")} viewer.`);\n } else {\n const warmed = input.personas.flatMap((segment) => {\n const read = tierOfSegment(segment);\n return read ? [{ segment, read }] : [];\n });\n if (warmed.length > 0 && warmed.length === input.personas.length) {\n tier = coldestOf(warmed.map((entry) => entry.read));\n reasons.push(\n `The persona is defined by what they already did with the brand: ${warmed.map((entry) => `\"${entry.segment}\"`).join(\", \")}.`,\n );\n } else {\n reasons.push(\"Nothing on file says the viewer knows the brand: design for a stranger.\");\n }\n }\n return { temperature: tier.temperature, knows: tier.knows, placements: [\"automatic\"], source: \"knowledge\", reasons };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiError,
|
|
3
|
+
apiGet,
|
|
4
|
+
apiPost
|
|
5
|
+
} from "./chunk-XDZVBX6L.js";
|
|
6
|
+
|
|
7
|
+
// src/commands/avatars/transport.ts
|
|
8
|
+
function unwrap(response) {
|
|
9
|
+
if (response.ok === false || response.data === void 0) {
|
|
10
|
+
throw new ApiError("INTERNAL_ERROR", response.error?.message ?? "The avatars service returned an unusable answer");
|
|
11
|
+
}
|
|
12
|
+
return response.data;
|
|
13
|
+
}
|
|
14
|
+
async function readAvatars(path, params) {
|
|
15
|
+
return unwrap(await apiGet(path, params));
|
|
16
|
+
}
|
|
17
|
+
async function writeAvatars(path, body, opts) {
|
|
18
|
+
return unwrap(await apiPost(path, body, opts));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
readAvatars,
|
|
23
|
+
writeAvatars
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-LCW3U4EA.js.map
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readAvatars
|
|
3
|
+
} from "./chunk-LCW3U4EA.js";
|
|
4
|
+
import {
|
|
5
|
+
readCompanyReading
|
|
6
|
+
} from "./chunk-7U3V64YT.js";
|
|
7
|
+
import {
|
|
8
|
+
apiPost
|
|
9
|
+
} from "./chunk-XDZVBX6L.js";
|
|
10
|
+
|
|
11
|
+
// src/commands/creatives/cast-inventory.ts
|
|
12
|
+
import { readdir, readFile } from "fs/promises";
|
|
13
|
+
import path from "path";
|
|
14
|
+
var short = (text, max) => text.length > max ? `${text.slice(0, max - 1).trimEnd()}\u2026` : text;
|
|
15
|
+
var nameKey = (name) => name.normalize("NFD").replace(new RegExp("\\p{M}", "gu"), "").toLowerCase().replace(/\b(?:inc|llc|ltd|gmbh|sl|sa|corp|co)\b\.?/g, "").replace(/[^\p{L}\p{N}]/gu, "");
|
|
16
|
+
function isTheCompany(employer, company) {
|
|
17
|
+
const key = nameKey(employer);
|
|
18
|
+
if (key.length < 3) return false;
|
|
19
|
+
return [company.name ?? "", ...company.brands ?? []].some((own) => {
|
|
20
|
+
const ownKey = nameKey(own);
|
|
21
|
+
return ownKey.length >= 3 && (key.includes(ownKey) || ownKey.includes(key));
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function avatarRelation(avatar, company) {
|
|
25
|
+
if (avatar.relation) return avatar.relation;
|
|
26
|
+
if (avatar.likeness === "synthetic" && !avatar.person) return "role";
|
|
27
|
+
return avatar.person?.company && isTheCompany(avatar.person.company, company) ? "team" : "unknown";
|
|
28
|
+
}
|
|
29
|
+
var CASTABLE = ["team", "founder", "role"];
|
|
30
|
+
function avatarsOf(response, company = {}) {
|
|
31
|
+
return response.avatars.filter((a) => a.status === "ready").map((a) => {
|
|
32
|
+
const real = a.likeness === "licensed" || Boolean(a.person);
|
|
33
|
+
const role = [a.person?.role, a.person?.company].filter(Boolean).join(" at ");
|
|
34
|
+
const relation = avatarRelation(a, company);
|
|
35
|
+
return {
|
|
36
|
+
handle: a.handle,
|
|
37
|
+
real,
|
|
38
|
+
who: short(role || a.subjectDescription || a.name, 90),
|
|
39
|
+
relation,
|
|
40
|
+
castable: CASTABLE.includes(relation),
|
|
41
|
+
...a.testimonialIds?.length ? { testimonialIds: a.testimonialIds } : {}
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async function companyName(root) {
|
|
46
|
+
const doc = await readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => "");
|
|
47
|
+
const title = /^#\s+(.+?)\s*$/m.exec(doc)?.[1] ?? "";
|
|
48
|
+
return title.replace(/[*_`]/g, "").replace(/^(?:company|empresa|compañía)\s*:\s*/i, "") || void 0;
|
|
49
|
+
}
|
|
50
|
+
async function castCompany(root) {
|
|
51
|
+
const [name, reading] = await Promise.all([companyName(root), readCompanyReading(root).catch(() => null)]);
|
|
52
|
+
return { ...name ? { name } : {}, brands: reading?.brands ?? [] };
|
|
53
|
+
}
|
|
54
|
+
function customersOf(found) {
|
|
55
|
+
return found.filter((t) => t.sentiment !== "negative" && (t.highlight || t.reviewText).trim()).slice(0, 3).map((t) => ({
|
|
56
|
+
...t.reviewerName ? { name: t.reviewerName } : {},
|
|
57
|
+
words: short((t.highlight || t.reviewText).trim().replace(/\s+/g, " "), 140),
|
|
58
|
+
source: t.sourceType,
|
|
59
|
+
photo: Boolean(t.reviewerImageUrl || t.reviewerImageId || t.imageIds?.length || t.videoIds?.length)
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
var LOGO_FILE = /\.(svg|png|webp|jpe?g)$/i;
|
|
63
|
+
async function castInventory(root, message, company) {
|
|
64
|
+
const own = await castCompany(root);
|
|
65
|
+
const [avatars, customers, logos] = await Promise.all([
|
|
66
|
+
readAvatars("/api/avatars", { status: "ready" }).then(
|
|
67
|
+
(response) => avatarsOf(response, { ...own, ...company ? { name: company } : {} }),
|
|
68
|
+
() => []
|
|
69
|
+
),
|
|
70
|
+
apiPost("/api/testimonials/search", { query: message, limit: 6 }).then(
|
|
71
|
+
customersOf,
|
|
72
|
+
() => []
|
|
73
|
+
),
|
|
74
|
+
readdir(path.join(root, "src", "brand", "logos")).then(
|
|
75
|
+
(files) => files.filter((f) => LOGO_FILE.test(f)).map((f) => `src/brand/logos/${f}`),
|
|
76
|
+
() => []
|
|
77
|
+
)
|
|
78
|
+
]);
|
|
79
|
+
return { avatars, customers, logos, ...company ? { company } : {} };
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export {
|
|
83
|
+
avatarRelation,
|
|
84
|
+
avatarsOf,
|
|
85
|
+
companyName,
|
|
86
|
+
castCompany,
|
|
87
|
+
castInventory
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=chunk-LD4CHA7U.js.map
|