@koda-sl/baker-cli 0.513.0 → 0.515.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 +3 -3
- package/dist/account-BA3IO3AN.js +139 -0
- package/dist/account-LVJFHDA3.js +82 -0
- package/dist/account-LVJFHDA3.js.map +1 -0
- package/dist/account-PTJ6OK6Z.js +82 -0
- package/dist/account-PTJ6OK6Z.js.map +1 -0
- package/dist/account-assets-T3VVNBUG.js +290 -0
- package/dist/account-level-MPFWRPEK.js +611 -0
- package/dist/account-level-MPFWRPEK.js.map +1 -0
- package/dist/account-reads-5CXFLJ5Q.js +219 -0
- package/dist/account-users-B7DCJEFD.js +64 -0
- package/dist/account-users-B7DCJEFD.js.map +1 -0
- package/dist/account-writes-W5EOTS7P.js +68 -0
- package/dist/account-writes-W5EOTS7P.js.map +1 -0
- package/dist/accounts-4R3MBNJG.js +76 -0
- package/dist/accounts-5WF7VE7J.js +115 -0
- package/dist/accounts-IQTEH4BX.js +701 -0
- package/dist/accounts-IQTEH4BX.js.map +1 -0
- package/dist/accounts-SV7JZUCC.js +80 -0
- package/dist/accounts-SV7JZUCC.js.map +1 -0
- package/dist/accounts-VPWCLF6X.js +114 -0
- package/dist/actions-D7OWCP36.js +55 -0
- package/dist/active-entities-WDPW7652.js +103 -0
- package/dist/activecampaign-LBS4M4C4.js +938 -0
- package/dist/activecampaign-LBS4M4C4.js.map +1 -0
- package/dist/activities-WGPHYSFU.js +75 -0
- package/dist/ad-group-writes-JL56DPC4.js +172 -0
- package/dist/ad-group-writes-JL56DPC4.js.map +1 -0
- package/dist/ad-groups-62JPLIK3.js +70 -0
- package/dist/ad-groups-62JPLIK3.js.map +1 -0
- package/dist/ad-writes-WSKLRGB7.js +176 -0
- package/dist/ad-writes-WSKLRGB7.js.map +1 -0
- package/dist/add-HFQB2NTU.js +107 -0
- package/dist/add-HFQB2NTU.js.map +1 -0
- package/dist/add-IUYE5H6A.js +305 -0
- package/dist/add-IUYE5H6A.js.map +1 -0
- package/dist/ads-F7AUJWK7.js +115 -0
- package/dist/ads-JFI56MZL.js +79 -0
- package/dist/ads-JFI56MZL.js.map +1 -0
- package/dist/ads-OV3SMLKA.js +48 -0
- package/dist/adsets-XH2ULWPM.js +182 -0
- package/dist/advertisers-XXM6POO5.js +123 -0
- package/dist/advertisers-XXM6POO5.js.map +1 -0
- package/dist/analytics-MJT6DS3L.js +447 -0
- package/dist/analytics-MJT6DS3L.js.map +1 -0
- package/dist/analytics-W7EUOI2Q.js +2437 -0
- package/dist/analytics-W7EUOI2Q.js.map +1 -0
- package/dist/asset-writes-4X3AJQ4Q.js +50 -0
- package/dist/assign-2GQVQKKO.js +80 -0
- package/dist/assign-2GQVQKKO.js.map +1 -0
- package/dist/audience-size-VHXBNNIB.js +76 -0
- package/dist/audience-size-VHXBNNIB.js.map +1 -0
- package/dist/audience-writes-TXWPDJ2F.js +327 -0
- package/dist/audience-writes-TXWPDJ2F.js.map +1 -0
- package/dist/audiences-B2LFKWIS.js +280 -0
- package/dist/audiences-B2LFKWIS.js.map +1 -0
- package/dist/audiences-MBBXWEOI.js +86 -0
- package/dist/audiences-YUG5JLL4.js +85 -0
- package/dist/audit-VT2WSZWM.js +154 -0
- package/dist/audit-VT2WSZWM.js.map +1 -0
- package/dist/audit-WFXS5ELM.js +88 -0
- package/dist/autocomplete-ZYMHHV7E.js +114 -0
- package/dist/autocomplete-ZYMHHV7E.js.map +1 -0
- package/dist/avatars-WZ2JDMHH.js +38 -0
- package/dist/bid-pricing-5F3GBSAI.js +103 -0
- package/dist/bid-pricing-5F3GBSAI.js.map +1 -0
- package/dist/brand-IZTTBZII.js +22 -0
- package/dist/brief-OPQ7ICOY.js +543 -0
- package/dist/brief-OPQ7ICOY.js.map +1 -0
- package/dist/businesses-24JNY46Z.js +54 -0
- package/dist/campaign-groups-BDCDTMBF.js +99 -0
- package/dist/campaign-groups-BDCDTMBF.js.map +1 -0
- package/dist/campaign-writes-73H7G3JM.js +168 -0
- package/dist/campaign-writes-73H7G3JM.js.map +1 -0
- package/dist/campaign-writes-FNVOHONL.js +176 -0
- package/dist/campaign-writes-FNVOHONL.js.map +1 -0
- package/dist/campaigns-FUDZUVHN.js +78 -0
- package/dist/campaigns-FUDZUVHN.js.map +1 -0
- package/dist/campaigns-J65Q4WAZ.js +113 -0
- package/dist/campaigns-J65Q4WAZ.js.map +1 -0
- package/dist/campaigns-KXYGSH27.js +130 -0
- package/dist/campaigns-U5FQ2VWL.js +111 -0
- package/dist/canvas-IQ753Q2O.js +46 -0
- package/dist/capabilities-ZITW4RF7.js +147 -0
- package/dist/capabilities-ZITW4RF7.js.map +1 -0
- package/dist/cards-NSNAFTEB.js +85 -0
- package/dist/catalogs-OWQGGCIO.js +130 -0
- package/dist/catalogs-OWQGGCIO.js.map +1 -0
- package/dist/catalogs-VZYAATUR.js +781 -0
- package/dist/catalogs-VZYAATUR.js.map +1 -0
- package/dist/changes-RDWMNSTK.js +135 -0
- package/dist/chatgpt-27NEJVGF.js +47 -0
- package/dist/chats-AL2SYBJO.js +279 -0
- package/dist/chats-AL2SYBJO.js.map +1 -0
- package/dist/check-U2YLRD6H.js +107 -0
- package/dist/check-U2YLRD6H.js.map +1 -0
- package/dist/chunk-2F4DELSV.js +200 -0
- package/dist/chunk-2GYCWRF3.js +170 -0
- package/dist/chunk-2L7F7KR4.js +61 -0
- package/dist/chunk-44ZRCSR7.js +228 -0
- package/dist/chunk-46YLDIQG.js +4254 -0
- package/dist/chunk-4EDWXZ3I.js +363 -0
- package/dist/chunk-4FFBGR5L.js +66 -0
- package/dist/chunk-4UZUUSVL.js +592 -0
- package/dist/chunk-4XHCEYHI.js +831 -0
- package/dist/chunk-4Z6PVR3M.js +479 -0
- package/dist/chunk-5Y5FZV2W.js +122 -0
- package/dist/chunk-6DPSWLGY.js +324 -0
- package/dist/chunk-6DPSWLGY.js.map +1 -0
- package/dist/chunk-6HJXLGDV.js +392 -0
- package/dist/chunk-6S5CWGDA.js +429 -0
- package/dist/chunk-6VYROVWO.js +494 -0
- package/dist/chunk-AQRXXC6E.js +319 -0
- package/dist/chunk-ARBXT73X.js +387 -0
- package/dist/chunk-BEZHQIEI.js +97 -0
- package/dist/chunk-BFURWHVR.js +547 -0
- package/dist/chunk-EZSPVWLQ.js +169 -0
- package/dist/chunk-FCHZ5TNG.js +26 -0
- package/dist/chunk-FLWDFPXE.js +23 -0
- package/dist/chunk-FQMEX3GX.js +846 -0
- package/dist/chunk-G4FG5EQO.js +110 -0
- package/dist/chunk-G4FG5EQO.js.map +1 -0
- package/dist/chunk-GE3VT3CA.js +51 -0
- package/dist/chunk-GGK2CX6B.js +24026 -0
- package/dist/chunk-GGK2CX6B.js.map +1 -0
- package/dist/chunk-GHZ6HP2X.js +358 -0
- package/dist/chunk-GHZ6HP2X.js.map +1 -0
- package/dist/chunk-HCQJYI6X.js +74 -0
- package/dist/chunk-HGBJQGO5.js +142 -0
- package/dist/chunk-HHVWV5BJ.js +191 -0
- package/dist/chunk-I3WGTSDY.js +76 -0
- package/dist/chunk-I7AYMJZA.js +783 -0
- package/dist/chunk-IDSDJHRS.js +106 -0
- package/dist/chunk-ILPHIYAL.js +207 -0
- package/dist/chunk-IWKD56AY.js +156 -0
- package/dist/chunk-JLAQWMVF.js +3868 -0
- package/dist/chunk-JOE42ZW6.js +2984 -0
- package/dist/chunk-JOE42ZW6.js.map +1 -0
- package/dist/chunk-K6NULQN7.js +57 -0
- package/dist/chunk-L2BRAC2J.js +19 -0
- package/dist/chunk-LGMI4LSY.js +455 -0
- package/dist/chunk-LNODLR7W.js +149 -0
- package/dist/chunk-LQ2BRGMX.js +274 -0
- package/dist/chunk-M7QZSEHF.js +175 -0
- package/dist/chunk-NB2FU6EZ.js +179 -0
- package/dist/chunk-NFII3MTG.js +207 -0
- package/dist/chunk-NKQWDEB7.js +115 -0
- package/dist/chunk-NKQWDEB7.js.map +1 -0
- package/dist/chunk-OG47L5GG.js +275 -0
- package/dist/chunk-PC3FJEZH.js +7211 -0
- package/dist/chunk-PC3FJEZH.js.map +1 -0
- package/dist/chunk-Q3GSVLE5.js +4274 -0
- package/dist/chunk-Q3GSVLE5.js.map +1 -0
- package/dist/chunk-QIOFOD4K.js +344 -0
- package/dist/chunk-R2SYF5FC.js +249 -0
- package/dist/chunk-RTH2I55B.js +942 -0
- package/dist/chunk-S6VFDNSQ.js +63 -0
- package/dist/chunk-SG2TDQEE.js +150 -0
- package/dist/chunk-SOPVIIUW.js +68 -0
- package/dist/chunk-SOPVIIUW.js.map +1 -0
- package/dist/chunk-T3P6O2VU.js +89 -0
- package/dist/chunk-TU5LQUJM.js +74 -0
- package/dist/chunk-TU7DWSTW.js +69 -0
- package/dist/chunk-TXDE2QJ3.js +604 -0
- package/dist/chunk-TYXZ2SRW.js +287 -0
- package/dist/chunk-UDIEKCIR.js +203 -0
- package/dist/chunk-UQHHGT67.js +676 -0
- package/dist/chunk-USCADMM3.js +163 -0
- package/dist/chunk-UUGISMNE.js +910 -0
- package/dist/chunk-VDPOCAQ2.js +197 -0
- package/dist/chunk-VEJ3QX6M.js +103 -0
- package/dist/chunk-VFJB7OG6.js +91 -0
- package/dist/chunk-VPABGAN4.js +188 -0
- package/dist/chunk-VRIPVLE7.js +8954 -0
- package/dist/chunk-WLESMH4J.js +45 -0
- package/dist/chunk-XOQNM7I4.js +396 -0
- package/dist/chunk-XOQNM7I4.js.map +1 -0
- package/dist/chunk-YILZR3XI.js +224 -0
- package/dist/chunk-YJFLXOH4.js +191 -0
- package/dist/chunk-YWHZYR6S.js +297 -0
- package/dist/chunk-Z35KUMBW.js +219 -0
- package/dist/chunk-Z7I2ZFXS.js +1646 -0
- package/dist/claim-GOLUTAJ3.js +200 -0
- package/dist/claim-GOLUTAJ3.js.map +1 -0
- package/dist/cli.js +34 -34
- package/dist/companies-CSN7DPYW.js +198 -0
- package/dist/companies-CSN7DPYW.js.map +1 -0
- package/dist/company-MOSPLRZJ.js +308 -0
- package/dist/company-MOSPLRZJ.js.map +1 -0
- package/dist/complete-777BDV45.js +84 -0
- package/dist/complete-777BDV45.js.map +1 -0
- package/dist/config-55WGRLY3.js +88 -0
- package/dist/connect-3YY7MF3I.js +45 -0
- package/dist/conversation-6K2TNYBQ.js +96 -0
- package/dist/conversation-6K2TNYBQ.js.map +1 -0
- package/dist/conversion-report-WYYB3BK2.js +127 -0
- package/dist/conversion-report-WYYB3BK2.js.map +1 -0
- package/dist/conversion-upload-command-VM2P57K6.js +439 -0
- package/dist/conversion-writes-DHOPMA7X.js +122 -0
- package/dist/conversion-writes-DHOPMA7X.js.map +1 -0
- package/dist/conversions-KWY7BNDN.js +78 -0
- package/dist/conversions-KWY7BNDN.js.map +1 -0
- package/dist/conversions-MLRK35ZV.js +140 -0
- package/dist/conversions-MLRK35ZV.js.map +1 -0
- package/dist/copy-writes-E3V5TUVU.js +170 -0
- package/dist/copy-writes-E3V5TUVU.js.map +1 -0
- package/dist/create-3WOZO2XT.js +239 -0
- package/dist/create-3WOZO2XT.js.map +1 -0
- package/dist/create-7IFYLX7P.js +210 -0
- package/dist/create-7IFYLX7P.js.map +1 -0
- package/dist/create-FOHIQC3E.js +62 -0
- package/dist/create-FOHIQC3E.js.map +1 -0
- package/dist/create-UWQSQTK6.js +135 -0
- package/dist/create-UWQSQTK6.js.map +1 -0
- package/dist/creatives-2DR3QHJW.js +58 -0
- package/dist/creatives-DUR5Z5AN.js +89 -0
- package/dist/creatives-KN3MT533.js +223 -0
- package/dist/creatives-KN3MT533.js.map +1 -0
- package/dist/credentials-IP4L37XP.js +290 -0
- package/dist/credentials-IP4L37XP.js.map +1 -0
- package/dist/critique-LGDNMLBL.js +232 -0
- package/dist/critique-LGDNMLBL.js.map +1 -0
- package/dist/critique-LJMFAURK.js +1451 -0
- package/dist/critique-LJMFAURK.js.map +1 -0
- package/dist/crm-BNYW7PF7.js +323 -0
- package/dist/crm-BNYW7PF7.js.map +1 -0
- package/dist/crm-DMADHALO.js +227 -0
- package/dist/crm-DMADHALO.js.map +1 -0
- package/dist/currency-X4KEACEP.js +88 -0
- package/dist/custom-conversions-OIA5Y2GX.js +128 -0
- package/dist/customers-663K2OCP.js +59 -0
- package/dist/delete-5W3YVA4L.js +67 -0
- package/dist/delete-5W3YVA4L.js.map +1 -0
- package/dist/delete-6U7E6YUW.js +57 -0
- package/dist/delete-6U7E6YUW.js.map +1 -0
- package/dist/delete-G4NY6ZG6.js +69 -0
- package/dist/delete-G4NY6ZG6.js.map +1 -0
- package/dist/demographics-UZ7BCQ7K.js +141 -0
- package/dist/demographics-UZ7BCQ7K.js.map +1 -0
- package/dist/discard-RKCZNKMN.js +69 -0
- package/dist/discard-RKCZNKMN.js.map +1 -0
- package/dist/discover-2W42JB56.js +172 -0
- package/dist/domain-PLA2O4FW.js +101 -0
- package/dist/domain-PLA2O4FW.js.map +1 -0
- package/dist/download-4EFLVSA4.js +172 -0
- package/dist/download-4EFLVSA4.js.map +1 -0
- package/dist/draft-2ZX73IRO.js +238 -0
- package/dist/draft-6XMZYSMR.js +283 -0
- package/dist/draft-6XMZYSMR.js.map +1 -0
- package/dist/draft-CKLIIWXZ.js +308 -0
- package/dist/draft-IUEULQDT.js +310 -0
- package/dist/draft-IUEULQDT.js.map +1 -0
- package/dist/draft-JMNAGW7C.js +220 -0
- package/dist/draft-JMNAGW7C.js.map +1 -0
- package/dist/draft-L5Q6KEER.js +100 -0
- package/dist/draft-MJRMZGMP.js +103 -0
- package/dist/draft-WPMVLRME.js +335 -0
- package/dist/draft-WPMVLRME.js.map +1 -0
- package/dist/experiment-3VRHCQN5.js +1397 -0
- package/dist/experiments-S4TSXCK6.js +236 -0
- package/dist/experiments-S4TSXCK6.js.map +1 -0
- package/dist/facets-D3JG7OSO.js +117 -0
- package/dist/facets-D3JG7OSO.js.map +1 -0
- package/dist/feedback-IRSRPXV6.js +111 -0
- package/dist/feedback-IRSRPXV6.js.map +1 -0
- package/dist/feedback-record-DT3R4NA3.js +265 -0
- package/dist/feedback-record-DT3R4NA3.js.map +1 -0
- package/dist/fetch-YLQP5VQL.js +179 -0
- package/dist/fetch-YLQP5VQL.js.map +1 -0
- package/dist/fit-BEFCY2B4.js +65 -0
- package/dist/flows-FDMF3F3P.js +250 -0
- package/dist/flows-FDMF3F3P.js.map +1 -0
- package/dist/fonts-C6XN5667.js +39 -0
- package/dist/forecast-4YHMKO54.js +121 -0
- package/dist/forecast-4YHMKO54.js.map +1 -0
- package/dist/forecast-LYN6ZGQC.js +169 -0
- package/dist/funding-TCEPQXRQ.js +85 -0
- package/dist/funnel-CQIT3F23.js +397 -0
- package/dist/funnel-CQIT3F23.js.map +1 -0
- package/dist/ga4-JE3HS36B.js +55 -0
- package/dist/get-KBSKPTAV.js +59 -0
- package/dist/get-KBSKPTAV.js.map +1 -0
- package/dist/get-OSVQVMP6.js +82 -0
- package/dist/get-OSVQVMP6.js.map +1 -0
- package/dist/google-24FDG4C4.js +3267 -0
- package/dist/google-ads-XCJVAXWF.js +198 -0
- package/dist/google-ads-XCJVAXWF.js.map +1 -0
- package/dist/gsc-RMVOYIM3.js +30 -0
- package/dist/history-4TN2A6BL.js +136 -0
- package/dist/history-4TN2A6BL.js.map +1 -0
- package/dist/history-5IWW2X33.js +102 -0
- package/dist/history-5IWW2X33.js.map +1 -0
- package/dist/history-GIXIG276.js +69 -0
- package/dist/history-GIXIG276.js.map +1 -0
- package/dist/hubspot-5WB7TQBG.js +782 -0
- package/dist/hubspot-5WB7TQBG.js.map +1 -0
- package/dist/ideas-M66FU45H.js +45 -0
- package/dist/images-MM5OPUKV.js +92 -0
- package/dist/ingest-GU3WEBN3.js +110 -0
- package/dist/ingest-GU3WEBN3.js.map +1 -0
- package/dist/ingest-KMLYCFF4.js +26 -0
- package/dist/insights-HATH3IC6.js +439 -0
- package/dist/insights-HATH3IC6.js.map +1 -0
- package/dist/insights-VKPIVJMK.js +132 -0
- package/dist/insights-VKPIVJMK.js.map +1 -0
- package/dist/inspect-4JO2J3D6.js +192 -0
- package/dist/inspect-4JO2J3D6.js.map +1 -0
- package/dist/instant-experiences-A2SIQNB5.js +260 -0
- package/dist/instant-experiences-A2SIQNB5.js.map +1 -0
- package/dist/intent-YCQCUCV3.js +95 -0
- package/dist/job-SM2OQ2LO.js +202 -0
- package/dist/job-create-ECZHPVKH.js +109 -0
- package/dist/job-status-QSYDKIIV.js +74 -0
- package/dist/keyword-gap-PUSF7EKY.js +130 -0
- package/dist/keyword-metrics-JXBM22ZD.js +200 -0
- package/dist/keyword-metrics-JXBM22ZD.js.map +1 -0
- package/dist/keywords-for-site-OAYA7KP7.js +131 -0
- package/dist/keywords-for-site-OAYA7KP7.js.map +1 -0
- package/dist/landing-OZU5RRFV.js +28 -0
- package/dist/languages-Q5SKO4AM.js +40 -0
- package/dist/leads-QAYS7AJO.js +540 -0
- package/dist/leads-QAYS7AJO.js.map +1 -0
- package/dist/leads-VOSFVNUK.js +115 -0
- package/dist/leads-VOSFVNUK.js.map +1 -0
- package/dist/learn-NBBJRMVZ.js +207 -0
- package/dist/learn-NBBJRMVZ.js.map +1 -0
- package/dist/line-item-writes-VBBB3TRS.js +211 -0
- package/dist/line-item-writes-VBBB3TRS.js.map +1 -0
- package/dist/line-items-2V5FY33R.js +107 -0
- package/dist/link-WZSNUQQ2.js +67 -0
- package/dist/link-WZSNUQQ2.js.map +1 -0
- package/dist/linkedin-CDFCOHKI.js +1316 -0
- package/dist/linkedin-CDFCOHKI.js.map +1 -0
- package/dist/linkedin-person-MVRI7LLC.js +139 -0
- package/dist/linkedin-person-MVRI7LLC.js.map +1 -0
- package/dist/list-6S54IAUX.js +67 -0
- package/dist/list-6S54IAUX.js.map +1 -0
- package/dist/list-QRJ4E3SC.js +154 -0
- package/dist/list-QRJ4E3SC.js.map +1 -0
- package/dist/list-RZUDFLJN.js +306 -0
- package/dist/list-RZUDFLJN.js.map +1 -0
- package/dist/locations-RFTE42OS.js +69 -0
- package/dist/locations-RFTE42OS.js.map +1 -0
- package/dist/locations-VQYREHYI.js +40 -0
- package/dist/log-53SAPZZ3.js +95 -0
- package/dist/log-53SAPZZ3.js.map +1 -0
- package/dist/lookup-MELV3RUL.js +23 -0
- package/dist/make-ZF3YIMKW.js +1370 -0
- package/dist/make-ZF3YIMKW.js.map +1 -0
- package/dist/map-J37QFJSV.js +436 -0
- package/dist/map-J37QFJSV.js.map +1 -0
- package/dist/mcp-B7WSZQFD.js +729 -0
- package/dist/mcp-B7WSZQFD.js.map +1 -0
- package/dist/media-BPI2VE6A.js +89 -0
- package/dist/media-EEWZZU3P.js +18 -0
- package/dist/media-sources-EQI3U4TC.js +35 -0
- package/dist/members-GYVMSCKL.js +47 -0
- package/dist/members-GYVMSCKL.js.map +1 -0
- package/dist/meta-SMJUQP37.js +122 -0
- package/dist/metrics-EMAP7ESR.js +152 -0
- package/dist/normalize-MFN3WCH5.js +144 -0
- package/dist/normalize-MFN3WCH5.js.map +1 -0
- package/dist/options-DLHDHO7H.js +125 -0
- package/dist/options-DLHDHO7H.js.map +1 -0
- package/dist/organization-C2VOA2SD.js +949 -0
- package/dist/organization-C2VOA2SD.js.map +1 -0
- package/dist/output-4QBQEM4C.js +24 -0
- package/dist/page-photos-HRKPDQBM.js +118 -0
- package/dist/page-photos-HRKPDQBM.js.map +1 -0
- package/dist/pages-DTQWQUKP.js +67 -0
- package/dist/performance-NIF3CESZ.js +27 -0
- package/dist/performance-T6TBVHVU.js +5541 -0
- package/dist/performance-T6TBVHVU.js.map +1 -0
- package/dist/pixels-2BKADWE6.js +109 -0
- package/dist/pixels-F6BZNTDD.js +62 -0
- package/dist/pixels-F6BZNTDD.js.map +1 -0
- package/dist/plan-A6VC3ZO7.js +208 -0
- package/dist/plan-A6VC3ZO7.js.map +1 -0
- package/dist/preview-GGIGXPJW.js +218 -0
- package/dist/preview-GGIGXPJW.js.map +1 -0
- package/dist/promoted-tweet-writes-WU2SKKZF.js +183 -0
- package/dist/promoted-tweet-writes-WU2SKKZF.js.map +1 -0
- package/dist/promoted-tweets-653Q5AC6.js +119 -0
- package/dist/properties-VWKO3AAK.js +101 -0
- package/dist/publish-IOTMJCCY.js +344 -0
- package/dist/publish-IOTMJCCY.js.map +1 -0
- package/dist/query-CXIOL7WI.js +62 -0
- package/dist/query-OOP63DJF.js +236 -0
- package/dist/query-RBZFAIDK.js +247 -0
- package/dist/questionnaire-7SHYRTMJ.js +94 -0
- package/dist/questionnaire-7SHYRTMJ.js.map +1 -0
- package/dist/read-GOULD7YL.js +141 -0
- package/dist/reddit-JIHMAKAQ.js +29 -0
- package/dist/refresh-OQZ263CS.js +97 -0
- package/dist/refresh-OQZ263CS.js.map +1 -0
- package/dist/release-4CHFURO3.js +63 -0
- package/dist/release-4CHFURO3.js.map +1 -0
- package/dist/relevant-pages-FS7GBVXK.js +99 -0
- package/dist/remove-IJQPHPDI.js +53 -0
- package/dist/remove-IJQPHPDI.js.map +1 -0
- package/dist/reopen-YTLPVKUR.js +66 -0
- package/dist/reopen-YTLPVKUR.js.map +1 -0
- package/dist/rerun-C7NB7B35.js +95 -0
- package/dist/rerun-C7NB7B35.js.map +1 -0
- package/dist/research-PNBACCCP.js +72 -0
- package/dist/research-TLHNPK3O.js +265 -0
- package/dist/research-TLHNPK3O.js.map +1 -0
- package/dist/reset-JVLW7HA2.js +57 -0
- package/dist/reset-JVLW7HA2.js.map +1 -0
- package/dist/reset-Y6FXLAQE.js +57 -0
- package/dist/reset-Y6FXLAQE.js.map +1 -0
- package/dist/resolve-RCFAYPWR.js +124 -0
- package/dist/resolve-RCFAYPWR.js.map +1 -0
- package/dist/retry-3V3IGDRR.js +65 -0
- package/dist/retry-3V3IGDRR.js.map +1 -0
- package/dist/retry-AEKQLQMP.js +63 -0
- package/dist/retry-AEKQLQMP.js.map +1 -0
- package/dist/revenue-3R6JLYCQ.js +91 -0
- package/dist/revenue-3R6JLYCQ.js.map +1 -0
- package/dist/rule-writes-K4P3XBJW.js +525 -0
- package/dist/rule-writes-K4P3XBJW.js.map +1 -0
- package/dist/rules-34BQAWU3.js +99 -0
- package/dist/rules-34BQAWU3.js.map +1 -0
- package/dist/rules-HY7S2YTD.js +217 -0
- package/dist/rules-add-CM5XUYNS.js +465 -0
- package/dist/rules-add-CM5XUYNS.js.map +1 -0
- package/dist/run-MD64RDHZ.js +69 -0
- package/dist/run-MD64RDHZ.js.map +1 -0
- package/dist/run-QCNRR3CA.js +70 -0
- package/dist/scaffold-ad-NADPY3CB.js +1516 -0
- package/dist/scaffold-ad-NADPY3CB.js.map +1 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js +1015 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js.map +1 -0
- package/dist/scaffold-video-W7DF2CBJ.js +888 -0
- package/dist/scaffold-video-W7DF2CBJ.js.map +1 -0
- package/dist/schedule-CTRRF6TS.js +64 -0
- package/dist/schedule-CTRRF6TS.js.map +1 -0
- package/dist/scheduled-agents-OXYAVSIE.js +55 -0
- package/dist/schema-BEUYOGSW.js +135 -0
- package/dist/schema-BEUYOGSW.js.map +1 -0
- package/dist/search-GFJKWPKN.js +177 -0
- package/dist/search-GFJKWPKN.js.map +1 -0
- package/dist/select-S72CCL57.js +106 -0
- package/dist/select-S72CCL57.js.map +1 -0
- package/dist/sends-WBYTALR7.js +349 -0
- package/dist/sends-WBYTALR7.js.map +1 -0
- package/dist/set-prompt-YYFDRXRI.js +198 -0
- package/dist/set-prompt-YYFDRXRI.js.map +1 -0
- package/dist/setup-links-D4JJLESN.js +144 -0
- package/dist/setup-links-D4JJLESN.js.map +1 -0
- package/dist/shared-CGEJI2RB.js +32 -0
- package/dist/shopify-DQWEYPDX.js +3958 -0
- package/dist/shopify-DQWEYPDX.js.map +1 -0
- package/dist/site-BBZAUZA3.js +180 -0
- package/dist/site-BBZAUZA3.js.map +1 -0
- package/dist/sitemaps-5SP7PVQ6.js +87 -0
- package/dist/sites-YZDPHBST.js +101 -0
- package/dist/sources-7FIBHL6A.js +457 -0
- package/dist/sources-7FIBHL6A.js.map +1 -0
- package/dist/sources-FLUGHSVP.js +30 -0
- package/dist/stale-HP54JS5X.js +76 -0
- package/dist/stale-HP54JS5X.js.map +1 -0
- package/dist/stats-EGGNFTKI.js +34 -0
- package/dist/status-CLSWQFCQ.js +65 -0
- package/dist/status-CLSWQFCQ.js.map +1 -0
- package/dist/studies-6VUUOMZD.js +250 -0
- package/dist/study-writes-IR7RSSTK.js +470 -0
- package/dist/study-writes-IR7RSSTK.js.map +1 -0
- package/dist/sync-4YTVVEVC.js +57 -0
- package/dist/sync-4YTVVEVC.js.map +1 -0
- package/dist/sync-SCM6JGJP.js +279 -0
- package/dist/sync-definition-OGQ5XTQE.js +69 -0
- package/dist/tag-manager-REKD4WGU.js +43 -0
- package/dist/tags-CZTRQNXV.js +26 -0
- package/dist/tags-FDQXWTCQ.js +23 -0
- package/dist/tags-FDQXWTCQ.js.map +1 -0
- package/dist/tags-R67DKRZ6.js +23 -0
- package/dist/tags-R67DKRZ6.js.map +1 -0
- package/dist/tags-SA2LU6AW.js +227 -0
- package/dist/tags-SA2LU6AW.js.map +1 -0
- package/dist/tags-ZOXX6VRE.js +23 -0
- package/dist/tags-ZOXX6VRE.js.map +1 -0
- package/dist/targeting-BQUD54MF.js +762 -0
- package/dist/targeting-BQUD54MF.js.map +1 -0
- package/dist/targeting-constants-MRQB4N5I.js +118 -0
- package/dist/targeting-criteria-HSAESZIR.js +113 -0
- package/dist/targets-UUVCEG3F.js +106 -0
- package/dist/targets-UUVCEG3F.js.map +1 -0
- package/dist/terms-D2KAFHKJ.js +102 -0
- package/dist/testimonials-G3OCNPBY.js +32 -0
- package/dist/themes-X56KIX3Z.js +95 -0
- package/dist/top-companies-2RLNCSVS.js +111 -0
- package/dist/top-companies-2RLNCSVS.js.map +1 -0
- package/dist/transcript-U46AEOEI.js +165 -0
- package/dist/transcript-U46AEOEI.js.map +1 -0
- package/dist/translate-AS7JVKYM.js +609 -0
- package/dist/translate-AS7JVKYM.js.map +1 -0
- package/dist/triggers-ECRBPYYF.js +144 -0
- package/dist/triggers-ECRBPYYF.js.map +1 -0
- package/dist/tweets-JN6ARKF6.js +123 -0
- package/dist/unlink-VDNCSRJV.js +70 -0
- package/dist/unlink-VDNCSRJV.js.map +1 -0
- package/dist/unstage-5C27F2LZ.js +96 -0
- package/dist/unstage-5C27F2LZ.js.map +1 -0
- package/dist/unstage-ATDXUYP2.js +88 -0
- package/dist/unstage-ATDXUYP2.js.map +1 -0
- package/dist/update-FJ6TBV3E.js +101 -0
- package/dist/update-FJ6TBV3E.js.map +1 -0
- package/dist/update-HDBJCSTI.js +66 -0
- package/dist/update-HDBJCSTI.js.map +1 -0
- package/dist/update-U43DJRGV.js +155 -0
- package/dist/update-U43DJRGV.js.map +1 -0
- package/dist/update-Z7TIUBMJ.js +192 -0
- package/dist/update-Z7TIUBMJ.js.map +1 -0
- package/dist/upload-LXCFSRIU.js +129 -0
- package/dist/upload-LXCFSRIU.js.map +1 -0
- package/dist/url-options-C543MY7L.js +131 -0
- package/dist/url-options-C543MY7L.js.map +1 -0
- package/dist/url-params-TEFCXQ5N.js +101 -0
- package/dist/url-params-TEFCXQ5N.js.map +1 -0
- package/dist/validate-VR3HEOMJ.js +122 -0
- package/dist/validate-VR3HEOMJ.js.map +1 -0
- package/dist/videos-36AXDUGZ.js +41 -0
- package/dist/viewer-check-6HL4OUQY.js +83 -0
- package/dist/web-7BRJRQX7.js +143 -0
- package/dist/web-7BRJRQX7.js.map +1 -0
- package/dist/winning-ads-GMM5W2O4.js +86 -0
- package/dist/write-commands-B25W4FP5.js +713 -0
- package/dist/write-commands-DO2YUOMG.js +1502 -0
- package/dist/write-commands-DO2YUOMG.js.map +1 -0
- package/dist/write-commands-GNNEUVDW.js +206 -0
- package/dist/write-commands-NXJQQ62W.js +1172 -0
- package/dist/write-commands-NXJQQ62W.js.map +1 -0
- package/dist/x-JNR5SO6F.js +47 -0
- package/package.json +1 -1
- package/dist/account-UUAEQWO3.js +0 -80
- package/dist/account-UUAEQWO3.js.map +0 -1
- package/dist/account-WLQBAQMD.js +0 -80
- package/dist/account-WLQBAQMD.js.map +0 -1
- package/dist/account-ZY655BIU.js +0 -139
- package/dist/account-assets-O7IA37RE.js +0 -290
- package/dist/account-level-EU7BWCO7.js +0 -609
- package/dist/account-level-EU7BWCO7.js.map +0 -1
- package/dist/account-reads-SNOWDHHF.js +0 -219
- package/dist/account-users-NV37Z2XJ.js +0 -62
- package/dist/account-users-NV37Z2XJ.js.map +0 -1
- package/dist/account-writes-TU3WJRSI.js +0 -66
- package/dist/account-writes-TU3WJRSI.js.map +0 -1
- package/dist/accounts-FT2SRKMD.js +0 -76
- package/dist/accounts-K5XLEO6W.js +0 -114
- package/dist/accounts-MZ6SETJJ.js +0 -78
- package/dist/accounts-MZ6SETJJ.js.map +0 -1
- package/dist/accounts-SNB65ZEW.js +0 -115
- package/dist/accounts-U7ZBEAY6.js +0 -699
- package/dist/accounts-U7ZBEAY6.js.map +0 -1
- package/dist/actions-4JYHXRFH.js +0 -55
- package/dist/active-entities-3BAPHE4P.js +0 -103
- package/dist/activecampaign-IDBV26HH.js +0 -936
- package/dist/activecampaign-IDBV26HH.js.map +0 -1
- package/dist/activities-LKLPORDI.js +0 -75
- package/dist/ad-group-writes-HLBWN4E4.js +0 -170
- package/dist/ad-group-writes-HLBWN4E4.js.map +0 -1
- package/dist/ad-groups-33NZD6J3.js +0 -68
- package/dist/ad-groups-33NZD6J3.js.map +0 -1
- package/dist/ad-writes-7ZDNDZ2E.js +0 -174
- package/dist/ad-writes-7ZDNDZ2E.js.map +0 -1
- package/dist/add-AF42LQQQ.js +0 -105
- package/dist/add-AF42LQQQ.js.map +0 -1
- package/dist/add-LJRZYJ7I.js +0 -303
- package/dist/add-LJRZYJ7I.js.map +0 -1
- package/dist/ads-KBE5JXCH.js +0 -115
- package/dist/ads-LXWXOQHX.js +0 -48
- package/dist/ads-X3AM6M7L.js +0 -77
- package/dist/ads-X3AM6M7L.js.map +0 -1
- package/dist/adsets-YWBJFPAZ.js +0 -182
- package/dist/advertisers-6FOCN2W3.js +0 -121
- package/dist/advertisers-6FOCN2W3.js.map +0 -1
- package/dist/analytics-64HBRJJE.js +0 -2435
- package/dist/analytics-64HBRJJE.js.map +0 -1
- package/dist/analytics-VY5NL2GL.js +0 -445
- package/dist/analytics-VY5NL2GL.js.map +0 -1
- package/dist/asset-writes-72DEVXGO.js +0 -48
- package/dist/assign-N2I2BM67.js +0 -78
- package/dist/assign-N2I2BM67.js.map +0 -1
- package/dist/audience-size-H5DEZXJN.js +0 -74
- package/dist/audience-size-H5DEZXJN.js.map +0 -1
- package/dist/audience-writes-KCHLNFSI.js +0 -325
- package/dist/audience-writes-KCHLNFSI.js.map +0 -1
- package/dist/audiences-34IQKOGS.js +0 -85
- package/dist/audiences-QAH42HIM.js +0 -86
- package/dist/audiences-WCDWN64L.js +0 -268
- package/dist/audiences-WCDWN64L.js.map +0 -1
- package/dist/audit-2AAF6AOX.js +0 -152
- package/dist/audit-2AAF6AOX.js.map +0 -1
- package/dist/audit-7ED6CUTQ.js +0 -88
- package/dist/autocomplete-3GSKRNCZ.js +0 -112
- package/dist/autocomplete-3GSKRNCZ.js.map +0 -1
- package/dist/avatars-N6W6HUPP.js +0 -38
- package/dist/bid-pricing-IMITXHXN.js +0 -101
- package/dist/bid-pricing-IMITXHXN.js.map +0 -1
- package/dist/brand-ITWQVZD2.js +0 -22
- package/dist/brief-JJNEYPYB.js +0 -541
- package/dist/brief-JJNEYPYB.js.map +0 -1
- package/dist/businesses-MGP2YCEU.js +0 -54
- package/dist/campaign-groups-TTQLP32Q.js +0 -97
- package/dist/campaign-groups-TTQLP32Q.js.map +0 -1
- package/dist/campaign-writes-MAKPHQ3V.js +0 -166
- package/dist/campaign-writes-MAKPHQ3V.js.map +0 -1
- package/dist/campaign-writes-XO74BALZ.js +0 -174
- package/dist/campaign-writes-XO74BALZ.js.map +0 -1
- package/dist/campaigns-5BIDXYSR.js +0 -111
- package/dist/campaigns-LS65QM6W.js +0 -76
- package/dist/campaigns-LS65QM6W.js.map +0 -1
- package/dist/campaigns-XZOQ2VTK.js +0 -130
- package/dist/campaigns-XZPXCS7I.js +0 -111
- package/dist/campaigns-XZPXCS7I.js.map +0 -1
- package/dist/canvas-SL3RMOY5.js +0 -46
- package/dist/capabilities-LSR5GCE6.js +0 -145
- package/dist/capabilities-LSR5GCE6.js.map +0 -1
- package/dist/cards-A7GQVC7B.js +0 -85
- package/dist/catalogs-JLCSFZYC.js +0 -779
- package/dist/catalogs-JLCSFZYC.js.map +0 -1
- package/dist/catalogs-T23RKYFC.js +0 -128
- package/dist/catalogs-T23RKYFC.js.map +0 -1
- package/dist/changes-36C754R4.js +0 -135
- package/dist/chatgpt-3WFOPURY.js +0 -47
- package/dist/chats-GGYTXNJS.js +0 -277
- package/dist/chats-GGYTXNJS.js.map +0 -1
- package/dist/check-P7UPBBG7.js +0 -105
- package/dist/check-P7UPBBG7.js.map +0 -1
- package/dist/chunk-2TOIY2WN.js +0 -4254
- package/dist/chunk-3GAR4AZK.js +0 -149
- package/dist/chunk-4D46PS6J.js +0 -344
- package/dist/chunk-4GAEB6NK.js +0 -228
- package/dist/chunk-5XTGG4PV.js +0 -274
- package/dist/chunk-6JCX3YLM.js +0 -249
- package/dist/chunk-7J3NZBPV.js +0 -2982
- package/dist/chunk-7J3NZBPV.js.map +0 -1
- package/dist/chunk-7NF73SCB.js +0 -106
- package/dist/chunk-ALMYGH5U.js +0 -479
- package/dist/chunk-AQKRSEBQ.js +0 -103
- package/dist/chunk-B2POVFR2.js +0 -175
- package/dist/chunk-BL6RTOK3.js +0 -297
- package/dist/chunk-C6CBBZBO.js +0 -203
- package/dist/chunk-CCEDZTP7.js +0 -391
- package/dist/chunk-CCEDZTP7.js.map +0 -1
- package/dist/chunk-CKQTJ2LV.js +0 -89
- package/dist/chunk-D3KLDIPQ.js +0 -45
- package/dist/chunk-DL2UJNJ7.js +0 -8954
- package/dist/chunk-DM3Q6F5F.js +0 -26
- package/dist/chunk-DQ54POZN.js +0 -363
- package/dist/chunk-EDLZGTGN.js +0 -216
- package/dist/chunk-EDLZGTGN.js.map +0 -1
- package/dist/chunk-EXSHBYNQ.js +0 -349
- package/dist/chunk-EXSHBYNQ.js.map +0 -1
- package/dist/chunk-FFFJBNHA.js +0 -63
- package/dist/chunk-FKQK22IX.js +0 -51
- package/dist/chunk-FLK6QHOY.js +0 -142
- package/dist/chunk-GACSA5A6.js +0 -1646
- package/dist/chunk-GU5MXV2Y.js +0 -191
- package/dist/chunk-HGUYC5K6.js +0 -76
- package/dist/chunk-HJKYTNAZ.js +0 -61
- package/dist/chunk-HMIROUFV.js +0 -74
- package/dist/chunk-INUU3752.js +0 -392
- package/dist/chunk-IQHO2ABF.js +0 -197
- package/dist/chunk-J3UWMBOP.js +0 -547
- package/dist/chunk-JDR3HUEL.js +0 -191
- package/dist/chunk-JI77AKT6.js +0 -19
- package/dist/chunk-JNURZHZJ.js +0 -942
- package/dist/chunk-JSNMKTFM.js +0 -592
- package/dist/chunk-K4FLWDEX.js +0 -122
- package/dist/chunk-KBRJSPIM.js +0 -676
- package/dist/chunk-KUY26RCF.js +0 -200
- package/dist/chunk-LAC6YHHX.js +0 -97
- package/dist/chunk-M7HD42M6.js +0 -24017
- package/dist/chunk-M7HD42M6.js.map +0 -1
- package/dist/chunk-MGYC2IRC.js +0 -783
- package/dist/chunk-MI4HXE7M.js +0 -23
- package/dist/chunk-MJ7RNDD4.js +0 -910
- package/dist/chunk-OBJCNGZL.js +0 -207
- package/dist/chunk-OJGYYH6K.js +0 -179
- package/dist/chunk-OLBLXJNI.js +0 -224
- package/dist/chunk-PFTYKINE.js +0 -207
- package/dist/chunk-PLBITHV6.js +0 -846
- package/dist/chunk-Q6JMMBSQ.js +0 -831
- package/dist/chunk-RAQHUMKS.js +0 -169
- package/dist/chunk-RCJKABOS.js +0 -74
- package/dist/chunk-SA22KXWT.js +0 -163
- package/dist/chunk-SIXU5PDF.js +0 -66
- package/dist/chunk-SXMK5AEJ.js +0 -494
- package/dist/chunk-TLQOMWLQ.js +0 -69
- package/dist/chunk-TTLD66NI.js +0 -319
- package/dist/chunk-TVAIOC77.js +0 -287
- package/dist/chunk-TVTSA4EN.js +0 -188
- package/dist/chunk-V5NHJU3M.js +0 -604
- package/dist/chunk-VIPKDXGU.js +0 -4229
- package/dist/chunk-VIPKDXGU.js.map +0 -1
- package/dist/chunk-W4D7C74B.js +0 -387
- package/dist/chunk-WF25CCLD.js +0 -170
- package/dist/chunk-WQPUX3BA.js +0 -275
- package/dist/chunk-WR3FR3K3.js +0 -156
- package/dist/chunk-XDNJC62G.js +0 -91
- package/dist/chunk-XE6N4SZI.js +0 -429
- package/dist/chunk-XGPU2VDU.js +0 -219
- package/dist/chunk-XUJZO7MZ.js +0 -57
- package/dist/chunk-Y67LUJBE.js +0 -455
- package/dist/chunk-Y7XSDJEA.js +0 -3868
- package/dist/chunk-ZNNQK366.js +0 -7198
- package/dist/chunk-ZNNQK366.js.map +0 -1
- package/dist/chunk-ZNRGH4NS.js +0 -150
- package/dist/chunk-ZRP7Y2DM.js +0 -320
- package/dist/chunk-ZRP7Y2DM.js.map +0 -1
- package/dist/claim-4KUETSW3.js +0 -198
- package/dist/claim-4KUETSW3.js.map +0 -1
- package/dist/companies-XFO6WPVT.js +0 -196
- package/dist/companies-XFO6WPVT.js.map +0 -1
- package/dist/company-OJGISG7K.js +0 -306
- package/dist/company-OJGISG7K.js.map +0 -1
- package/dist/complete-CXOST5J3.js +0 -82
- package/dist/complete-CXOST5J3.js.map +0 -1
- package/dist/config-SMVIY6RW.js +0 -88
- package/dist/connect-HPQ32KGV.js +0 -43
- package/dist/conversation-D5HKCTDA.js +0 -94
- package/dist/conversation-D5HKCTDA.js.map +0 -1
- package/dist/conversion-report-DKXFHLLX.js +0 -125
- package/dist/conversion-report-DKXFHLLX.js.map +0 -1
- package/dist/conversion-upload-command-KTYAY7IG.js +0 -439
- package/dist/conversion-writes-7ODJDAUP.js +0 -120
- package/dist/conversion-writes-7ODJDAUP.js.map +0 -1
- package/dist/conversions-BKVGNNC6.js +0 -76
- package/dist/conversions-BKVGNNC6.js.map +0 -1
- package/dist/conversions-SYNDEB6D.js +0 -138
- package/dist/conversions-SYNDEB6D.js.map +0 -1
- package/dist/copy-writes-P4WK6OPM.js +0 -168
- package/dist/copy-writes-P4WK6OPM.js.map +0 -1
- package/dist/create-7D4VD4TC.js +0 -208
- package/dist/create-7D4VD4TC.js.map +0 -1
- package/dist/create-7QDEAWZS.js +0 -133
- package/dist/create-7QDEAWZS.js.map +0 -1
- package/dist/create-IQSYEC4M.js +0 -60
- package/dist/create-IQSYEC4M.js.map +0 -1
- package/dist/create-TQSCM7MG.js +0 -237
- package/dist/create-TQSCM7MG.js.map +0 -1
- package/dist/creatives-JPKA2RHU.js +0 -89
- package/dist/creatives-RNOL4F4E.js +0 -58
- package/dist/creatives-RXI27T2D.js +0 -221
- package/dist/creatives-RXI27T2D.js.map +0 -1
- package/dist/credentials-PYW55B52.js +0 -288
- package/dist/credentials-PYW55B52.js.map +0 -1
- package/dist/critique-2SYHNAW5.js +0 -1449
- package/dist/critique-2SYHNAW5.js.map +0 -1
- package/dist/critique-72GFZSHA.js +0 -230
- package/dist/critique-72GFZSHA.js.map +0 -1
- package/dist/crm-EATDSXXB.js +0 -225
- package/dist/crm-EATDSXXB.js.map +0 -1
- package/dist/crm-XXP3VBYD.js +0 -321
- package/dist/crm-XXP3VBYD.js.map +0 -1
- package/dist/currency-R4ORE2U3.js +0 -88
- package/dist/custom-conversions-5HJBB5XL.js +0 -128
- package/dist/customers-OFZTEXST.js +0 -57
- package/dist/delete-FGVZIK4R.js +0 -55
- package/dist/delete-FGVZIK4R.js.map +0 -1
- package/dist/delete-HBZZL4UA.js +0 -67
- package/dist/delete-HBZZL4UA.js.map +0 -1
- package/dist/delete-JOUXMRIX.js +0 -65
- package/dist/delete-JOUXMRIX.js.map +0 -1
- package/dist/demographics-SB7NBYOI.js +0 -139
- package/dist/demographics-SB7NBYOI.js.map +0 -1
- package/dist/discard-YYGIRDII.js +0 -67
- package/dist/discard-YYGIRDII.js.map +0 -1
- package/dist/discover-GSJRZUOC.js +0 -172
- package/dist/domain-3KRAJAUH.js +0 -99
- package/dist/domain-3KRAJAUH.js.map +0 -1
- package/dist/download-QCBKJ6OR.js +0 -170
- package/dist/download-QCBKJ6OR.js.map +0 -1
- package/dist/draft-7CGFFZTH.js +0 -333
- package/dist/draft-7CGFFZTH.js.map +0 -1
- package/dist/draft-BI4NW6AU.js +0 -308
- package/dist/draft-BI4NW6AU.js.map +0 -1
- package/dist/draft-DJIYEMZU.js +0 -103
- package/dist/draft-LPVK6YHI.js +0 -281
- package/dist/draft-LPVK6YHI.js.map +0 -1
- package/dist/draft-QF5JEUTH.js +0 -218
- package/dist/draft-QF5JEUTH.js.map +0 -1
- package/dist/draft-RIR2V6A2.js +0 -238
- package/dist/draft-WYDMLNYA.js +0 -308
- package/dist/draft-ZCL7FVBH.js +0 -100
- package/dist/experiment-I5CRLOVN.js +0 -1397
- package/dist/experiments-ZCEYRP3H.js +0 -234
- package/dist/experiments-ZCEYRP3H.js.map +0 -1
- package/dist/facets-G7ZDPI5Q.js +0 -115
- package/dist/facets-G7ZDPI5Q.js.map +0 -1
- package/dist/feedback-3U3CL2VB.js +0 -109
- package/dist/feedback-3U3CL2VB.js.map +0 -1
- package/dist/feedback-record-4ZHPENIP.js +0 -263
- package/dist/feedback-record-4ZHPENIP.js.map +0 -1
- package/dist/fetch-PNVNNWTP.js +0 -177
- package/dist/fetch-PNVNNWTP.js.map +0 -1
- package/dist/fit-53DGYRFD.js +0 -63
- package/dist/flows-JXLQBP5Q.js +0 -248
- package/dist/flows-JXLQBP5Q.js.map +0 -1
- package/dist/fonts-LFMBUT4R.js +0 -37
- package/dist/forecast-4AG5F7YC.js +0 -169
- package/dist/forecast-VZAXI74O.js +0 -119
- package/dist/forecast-VZAXI74O.js.map +0 -1
- package/dist/funding-5W4LX6DU.js +0 -85
- package/dist/funnel-EACC35UD.js +0 -395
- package/dist/funnel-EACC35UD.js.map +0 -1
- package/dist/ga4-BWVCDVIR.js +0 -55
- package/dist/get-AXBVYGAC.js +0 -57
- package/dist/get-AXBVYGAC.js.map +0 -1
- package/dist/get-D6A27Q4E.js +0 -80
- package/dist/get-D6A27Q4E.js.map +0 -1
- package/dist/google-NAA4BASO.js +0 -3267
- package/dist/google-ads-OIYUNDXQ.js +0 -196
- package/dist/google-ads-OIYUNDXQ.js.map +0 -1
- package/dist/gsc-2MPE4N32.js +0 -30
- package/dist/history-5MRLNTCI.js +0 -67
- package/dist/history-5MRLNTCI.js.map +0 -1
- package/dist/history-IDYNIB6R.js +0 -134
- package/dist/history-IDYNIB6R.js.map +0 -1
- package/dist/history-IOUKN3WD.js +0 -100
- package/dist/history-IOUKN3WD.js.map +0 -1
- package/dist/hubspot-HL6WGC4G.js +0 -780
- package/dist/hubspot-HL6WGC4G.js.map +0 -1
- package/dist/ideas-NK3KQHAK.js +0 -43
- package/dist/images-2XS3JT7E.js +0 -92
- package/dist/ingest-DHXWZZX4.js +0 -24
- package/dist/ingest-FGTJRCWK.js +0 -108
- package/dist/ingest-FGTJRCWK.js.map +0 -1
- package/dist/insights-M3CYB22P.js +0 -437
- package/dist/insights-M3CYB22P.js.map +0 -1
- package/dist/insights-XCT3ONC7.js +0 -130
- package/dist/insights-XCT3ONC7.js.map +0 -1
- package/dist/inspect-53GGYRC4.js +0 -190
- package/dist/inspect-53GGYRC4.js.map +0 -1
- package/dist/instant-experiences-HT3HB4QZ.js +0 -258
- package/dist/instant-experiences-HT3HB4QZ.js.map +0 -1
- package/dist/intent-NSHW7EJT.js +0 -95
- package/dist/job-DRFCQ27M.js +0 -202
- package/dist/job-create-2EC25Y3J.js +0 -109
- package/dist/job-status-UNVZRPIA.js +0 -74
- package/dist/keyword-gap-ITTWKBWZ.js +0 -130
- package/dist/keyword-metrics-LWPE3HHW.js +0 -198
- package/dist/keyword-metrics-LWPE3HHW.js.map +0 -1
- package/dist/keywords-for-site-5K25VJ35.js +0 -129
- package/dist/keywords-for-site-5K25VJ35.js.map +0 -1
- package/dist/landing-QONUUP3C.js +0 -28
- package/dist/languages-MEFQQBJ2.js +0 -40
- package/dist/leads-FSSISJGL.js +0 -113
- package/dist/leads-FSSISJGL.js.map +0 -1
- package/dist/leads-SZOGCQFK.js +0 -538
- package/dist/leads-SZOGCQFK.js.map +0 -1
- package/dist/learn-FWWJWBDN.js +0 -205
- package/dist/learn-FWWJWBDN.js.map +0 -1
- package/dist/line-item-writes-A3UQ44NG.js +0 -209
- package/dist/line-item-writes-A3UQ44NG.js.map +0 -1
- package/dist/line-items-OH426JGT.js +0 -107
- package/dist/link-67E4NVEX.js +0 -65
- package/dist/link-67E4NVEX.js.map +0 -1
- package/dist/linkedin-CT2OSQ2I.js +0 -1314
- package/dist/linkedin-CT2OSQ2I.js.map +0 -1
- package/dist/linkedin-person-OSNLPLJJ.js +0 -137
- package/dist/linkedin-person-OSNLPLJJ.js.map +0 -1
- package/dist/list-J4OUXAKN.js +0 -65
- package/dist/list-J4OUXAKN.js.map +0 -1
- package/dist/list-L2OQK4W3.js +0 -304
- package/dist/list-L2OQK4W3.js.map +0 -1
- package/dist/list-LHMDAA2D.js +0 -152
- package/dist/list-LHMDAA2D.js.map +0 -1
- package/dist/locations-RLWAS6AC.js +0 -40
- package/dist/locations-UKBOT6SB.js +0 -67
- package/dist/locations-UKBOT6SB.js.map +0 -1
- package/dist/log-4EIV54V4.js +0 -93
- package/dist/log-4EIV54V4.js.map +0 -1
- package/dist/lookup-ZJIP2M4X.js +0 -22
- package/dist/make-MFU3CSN7.js +0 -1368
- package/dist/make-MFU3CSN7.js.map +0 -1
- package/dist/map-VWWWMQLK.js +0 -434
- package/dist/map-VWWWMQLK.js.map +0 -1
- package/dist/mcp-EKLO2VD7.js +0 -715
- package/dist/mcp-EKLO2VD7.js.map +0 -1
- package/dist/media-XCTZJIW4.js +0 -89
- package/dist/media-ZWN7E777.js +0 -18
- package/dist/media-sources-7L622UTF.js +0 -35
- package/dist/members-QK5M5NCJ.js +0 -45
- package/dist/members-QK5M5NCJ.js.map +0 -1
- package/dist/meta-EHKXH257.js +0 -122
- package/dist/metrics-K6FDCMK7.js +0 -152
- package/dist/normalize-WI4OGKH5.js +0 -142
- package/dist/normalize-WI4OGKH5.js.map +0 -1
- package/dist/options-FKJ2QXI6.js +0 -123
- package/dist/options-FKJ2QXI6.js.map +0 -1
- package/dist/organization-7A7MPUDG.js +0 -947
- package/dist/organization-7A7MPUDG.js.map +0 -1
- package/dist/output-WTEPRUPE.js +0 -24
- package/dist/page-photos-HWKQOSCU.js +0 -116
- package/dist/page-photos-HWKQOSCU.js.map +0 -1
- package/dist/pages-J6AF5NDU.js +0 -67
- package/dist/performance-K4VB6L6Z.js +0 -25
- package/dist/performance-LHAL53YO.js +0 -5539
- package/dist/performance-LHAL53YO.js.map +0 -1
- package/dist/pixels-Z7ZGXAGB.js +0 -60
- package/dist/pixels-Z7ZGXAGB.js.map +0 -1
- package/dist/pixels-ZZTB6NWF.js +0 -109
- package/dist/plan-TVQSEKYL.js +0 -207
- package/dist/plan-TVQSEKYL.js.map +0 -1
- package/dist/preview-CWRGDFCP.js +0 -216
- package/dist/preview-CWRGDFCP.js.map +0 -1
- package/dist/promoted-tweet-writes-V4ZVJOJU.js +0 -181
- package/dist/promoted-tweet-writes-V4ZVJOJU.js.map +0 -1
- package/dist/promoted-tweets-KPG4IUVD.js +0 -119
- package/dist/properties-RBLJCVSG.js +0 -101
- package/dist/publish-Y465CVUD.js +0 -342
- package/dist/publish-Y465CVUD.js.map +0 -1
- package/dist/query-BJJYUGQZ.js +0 -247
- package/dist/query-KQ675KJZ.js +0 -236
- package/dist/query-QM7MBQD7.js +0 -62
- package/dist/questionnaire-LEZJLMAV.js +0 -93
- package/dist/questionnaire-LEZJLMAV.js.map +0 -1
- package/dist/read-QME7JYVF.js +0 -141
- package/dist/reddit-Z7DOVIGR.js +0 -27
- package/dist/refresh-A6TW2Z2F.js +0 -95
- package/dist/refresh-A6TW2Z2F.js.map +0 -1
- package/dist/release-UFESJ4TM.js +0 -61
- package/dist/release-UFESJ4TM.js.map +0 -1
- package/dist/relevant-pages-VOICMQ7U.js +0 -99
- package/dist/remove-YONNYA4G.js +0 -51
- package/dist/remove-YONNYA4G.js.map +0 -1
- package/dist/reopen-FYJU2IPO.js +0 -64
- package/dist/reopen-FYJU2IPO.js.map +0 -1
- package/dist/rerun-B5SBG6ZE.js +0 -93
- package/dist/rerun-B5SBG6ZE.js.map +0 -1
- package/dist/research-HW4EVOZU.js +0 -72
- package/dist/research-OV53DIBX.js +0 -263
- package/dist/research-OV53DIBX.js.map +0 -1
- package/dist/reset-R4SIQXFH.js +0 -55
- package/dist/reset-R4SIQXFH.js.map +0 -1
- package/dist/reset-X6ODAKYH.js +0 -55
- package/dist/reset-X6ODAKYH.js.map +0 -1
- package/dist/resolve-DNRJCLCR.js +0 -122
- package/dist/resolve-DNRJCLCR.js.map +0 -1
- package/dist/retry-D5MKBHUB.js +0 -63
- package/dist/retry-D5MKBHUB.js.map +0 -1
- package/dist/retry-DVFLE7JY.js +0 -61
- package/dist/retry-DVFLE7JY.js.map +0 -1
- package/dist/revenue-QGI6XWSK.js +0 -89
- package/dist/revenue-QGI6XWSK.js.map +0 -1
- package/dist/rule-writes-S3RN47OG.js +0 -523
- package/dist/rule-writes-S3RN47OG.js.map +0 -1
- package/dist/rules-KTJ2ZZ62.js +0 -217
- package/dist/rules-TR6BAC23.js +0 -97
- package/dist/rules-TR6BAC23.js.map +0 -1
- package/dist/rules-add-T5ZO5RLR.js +0 -463
- package/dist/rules-add-T5ZO5RLR.js.map +0 -1
- package/dist/run-WZ5IXWA4.js +0 -67
- package/dist/run-WZ5IXWA4.js.map +0 -1
- package/dist/run-YRR3KOUU.js +0 -68
- package/dist/scaffold-ad-DNUCGCIH.js +0 -1514
- package/dist/scaffold-ad-DNUCGCIH.js.map +0 -1
- package/dist/scaffold-static-ad-VR65EZAG.js +0 -1013
- package/dist/scaffold-static-ad-VR65EZAG.js.map +0 -1
- package/dist/scaffold-video-JLMKCCWE.js +0 -886
- package/dist/scaffold-video-JLMKCCWE.js.map +0 -1
- package/dist/schedule-VRHCVBZA.js +0 -62
- package/dist/schedule-VRHCVBZA.js.map +0 -1
- package/dist/scheduled-agents-DG7FTCUZ.js +0 -55
- package/dist/schema-WZKDWF5N.js +0 -133
- package/dist/schema-WZKDWF5N.js.map +0 -1
- package/dist/search-MN66QIKJ.js +0 -175
- package/dist/search-MN66QIKJ.js.map +0 -1
- package/dist/select-IPSM2BF2.js +0 -104
- package/dist/select-IPSM2BF2.js.map +0 -1
- package/dist/sends-6FI7WELX.js +0 -348
- package/dist/sends-6FI7WELX.js.map +0 -1
- package/dist/set-prompt-N6BD3DME.js +0 -196
- package/dist/set-prompt-N6BD3DME.js.map +0 -1
- package/dist/setup-links-GTA2AROS.js +0 -142
- package/dist/setup-links-GTA2AROS.js.map +0 -1
- package/dist/shared-ZFULUOPQ.js +0 -32
- package/dist/shopify-S4TG6WJH.js +0 -3956
- package/dist/shopify-S4TG6WJH.js.map +0 -1
- package/dist/site-NY622E3H.js +0 -178
- package/dist/site-NY622E3H.js.map +0 -1
- package/dist/sitemaps-F3HYH5ZP.js +0 -87
- package/dist/sites-JSMF72BY.js +0 -101
- package/dist/sources-4F2XO7Z6.js +0 -455
- package/dist/sources-4F2XO7Z6.js.map +0 -1
- package/dist/sources-562ITR77.js +0 -30
- package/dist/stale-JKM6MXJF.js +0 -74
- package/dist/stale-JKM6MXJF.js.map +0 -1
- package/dist/stats-QP4LFQZJ.js +0 -34
- package/dist/status-AUWMUDA4.js +0 -63
- package/dist/status-AUWMUDA4.js.map +0 -1
- package/dist/studies-ZOEUY6YP.js +0 -250
- package/dist/study-writes-DTGMCNFP.js +0 -468
- package/dist/study-writes-DTGMCNFP.js.map +0 -1
- package/dist/sync-76MCGHX4.js +0 -55
- package/dist/sync-76MCGHX4.js.map +0 -1
- package/dist/sync-PHH65JFS.js +0 -279
- package/dist/sync-definition-NJPT6ABG.js +0 -67
- package/dist/tag-manager-F7PVTDBB.js +0 -43
- package/dist/tags-5KBOJJ5R.js +0 -26
- package/dist/tags-CSMLTHTU.js +0 -21
- package/dist/tags-CSMLTHTU.js.map +0 -1
- package/dist/tags-IFRZYM3G.js +0 -21
- package/dist/tags-IFRZYM3G.js.map +0 -1
- package/dist/tags-S44ADJ75.js +0 -21
- package/dist/tags-S44ADJ75.js.map +0 -1
- package/dist/tags-WR7IY3OT.js +0 -225
- package/dist/tags-WR7IY3OT.js.map +0 -1
- package/dist/targeting-VBQY3HUN.js +0 -760
- package/dist/targeting-VBQY3HUN.js.map +0 -1
- package/dist/targeting-constants-236ES5HE.js +0 -118
- package/dist/targeting-criteria-FJWNK53T.js +0 -113
- package/dist/targets-2EHMMXD4.js +0 -104
- package/dist/targets-2EHMMXD4.js.map +0 -1
- package/dist/terms-O6ODXEOK.js +0 -102
- package/dist/testimonials-WAPFIGFJ.js +0 -32
- package/dist/themes-B4LCQUXB.js +0 -95
- package/dist/top-companies-DJ2XQKMW.js +0 -109
- package/dist/top-companies-DJ2XQKMW.js.map +0 -1
- package/dist/transcript-J3LGOHCM.js +0 -163
- package/dist/transcript-J3LGOHCM.js.map +0 -1
- package/dist/translate-6RXO4C6Z.js +0 -607
- package/dist/translate-6RXO4C6Z.js.map +0 -1
- package/dist/triggers-CYXPNHQB.js +0 -142
- package/dist/triggers-CYXPNHQB.js.map +0 -1
- package/dist/tweets-IUINLOXF.js +0 -123
- package/dist/unlink-5FJI7XZB.js +0 -68
- package/dist/unlink-5FJI7XZB.js.map +0 -1
- package/dist/unstage-54ZE2SZK.js +0 -86
- package/dist/unstage-54ZE2SZK.js.map +0 -1
- package/dist/unstage-MDSSPUKV.js +0 -95
- package/dist/unstage-MDSSPUKV.js.map +0 -1
- package/dist/update-BVBFNFMO.js +0 -99
- package/dist/update-BVBFNFMO.js.map +0 -1
- package/dist/update-GV3T7ZRC.js +0 -190
- package/dist/update-GV3T7ZRC.js.map +0 -1
- package/dist/update-PUQWUGPJ.js +0 -64
- package/dist/update-PUQWUGPJ.js.map +0 -1
- package/dist/update-YQBK6C3L.js +0 -153
- package/dist/update-YQBK6C3L.js.map +0 -1
- package/dist/upload-PXT5JAEV.js +0 -127
- package/dist/upload-PXT5JAEV.js.map +0 -1
- package/dist/url-options-IHL4OU4C.js +0 -130
- package/dist/url-options-IHL4OU4C.js.map +0 -1
- package/dist/url-params-IYUI6SFJ.js +0 -99
- package/dist/url-params-IYUI6SFJ.js.map +0 -1
- package/dist/validate-AD7F7LQ5.js +0 -120
- package/dist/validate-AD7F7LQ5.js.map +0 -1
- package/dist/videos-ZJCTODEB.js +0 -41
- package/dist/viewer-check-GWZNGWCO.js +0 -81
- package/dist/web-76CWAZNW.js +0 -141
- package/dist/web-76CWAZNW.js.map +0 -1
- package/dist/winning-ads-W7GTXTX7.js +0 -86
- package/dist/write-commands-5J47ZNO4.js +0 -206
- package/dist/write-commands-K6M3RTVK.js +0 -1170
- package/dist/write-commands-K6M3RTVK.js.map +0 -1
- package/dist/write-commands-OTWH6BKZ.js +0 -713
- package/dist/write-commands-VPU53DLB.js +0 -1498
- package/dist/write-commands-VPU53DLB.js.map +0 -1
- package/dist/x-V4NNNWRU.js +0 -47
- /package/dist/{account-ZY655BIU.js.map → account-BA3IO3AN.js.map} +0 -0
- /package/dist/{account-assets-O7IA37RE.js.map → account-assets-T3VVNBUG.js.map} +0 -0
- /package/dist/{account-reads-SNOWDHHF.js.map → account-reads-5CXFLJ5Q.js.map} +0 -0
- /package/dist/{accounts-FT2SRKMD.js.map → accounts-4R3MBNJG.js.map} +0 -0
- /package/dist/{accounts-SNB65ZEW.js.map → accounts-5WF7VE7J.js.map} +0 -0
- /package/dist/{accounts-K5XLEO6W.js.map → accounts-VPWCLF6X.js.map} +0 -0
- /package/dist/{actions-4JYHXRFH.js.map → actions-D7OWCP36.js.map} +0 -0
- /package/dist/{active-entities-3BAPHE4P.js.map → active-entities-WDPW7652.js.map} +0 -0
- /package/dist/{activities-LKLPORDI.js.map → activities-WGPHYSFU.js.map} +0 -0
- /package/dist/{ads-KBE5JXCH.js.map → ads-F7AUJWK7.js.map} +0 -0
- /package/dist/{ads-LXWXOQHX.js.map → ads-OV3SMLKA.js.map} +0 -0
- /package/dist/{adsets-YWBJFPAZ.js.map → adsets-XH2ULWPM.js.map} +0 -0
- /package/dist/{asset-writes-72DEVXGO.js.map → asset-writes-4X3AJQ4Q.js.map} +0 -0
- /package/dist/{audiences-QAH42HIM.js.map → audiences-MBBXWEOI.js.map} +0 -0
- /package/dist/{audiences-34IQKOGS.js.map → audiences-YUG5JLL4.js.map} +0 -0
- /package/dist/{audit-7ED6CUTQ.js.map → audit-WFXS5ELM.js.map} +0 -0
- /package/dist/{avatars-N6W6HUPP.js.map → avatars-WZ2JDMHH.js.map} +0 -0
- /package/dist/{brand-ITWQVZD2.js.map → brand-IZTTBZII.js.map} +0 -0
- /package/dist/{businesses-MGP2YCEU.js.map → businesses-24JNY46Z.js.map} +0 -0
- /package/dist/{campaigns-XZOQ2VTK.js.map → campaigns-KXYGSH27.js.map} +0 -0
- /package/dist/{campaigns-5BIDXYSR.js.map → campaigns-U5FQ2VWL.js.map} +0 -0
- /package/dist/{canvas-SL3RMOY5.js.map → canvas-IQ753Q2O.js.map} +0 -0
- /package/dist/{cards-A7GQVC7B.js.map → cards-NSNAFTEB.js.map} +0 -0
- /package/dist/{changes-36C754R4.js.map → changes-RDWMNSTK.js.map} +0 -0
- /package/dist/{chatgpt-3WFOPURY.js.map → chatgpt-27NEJVGF.js.map} +0 -0
- /package/dist/{chunk-KUY26RCF.js.map → chunk-2F4DELSV.js.map} +0 -0
- /package/dist/{chunk-WF25CCLD.js.map → chunk-2GYCWRF3.js.map} +0 -0
- /package/dist/{chunk-HJKYTNAZ.js.map → chunk-2L7F7KR4.js.map} +0 -0
- /package/dist/{chunk-4GAEB6NK.js.map → chunk-44ZRCSR7.js.map} +0 -0
- /package/dist/{chunk-2TOIY2WN.js.map → chunk-46YLDIQG.js.map} +0 -0
- /package/dist/{chunk-DQ54POZN.js.map → chunk-4EDWXZ3I.js.map} +0 -0
- /package/dist/{chunk-SIXU5PDF.js.map → chunk-4FFBGR5L.js.map} +0 -0
- /package/dist/{chunk-JSNMKTFM.js.map → chunk-4UZUUSVL.js.map} +0 -0
- /package/dist/{chunk-Q6JMMBSQ.js.map → chunk-4XHCEYHI.js.map} +0 -0
- /package/dist/{chunk-ALMYGH5U.js.map → chunk-4Z6PVR3M.js.map} +0 -0
- /package/dist/{chunk-K4FLWDEX.js.map → chunk-5Y5FZV2W.js.map} +0 -0
- /package/dist/{chunk-INUU3752.js.map → chunk-6HJXLGDV.js.map} +0 -0
- /package/dist/{chunk-XE6N4SZI.js.map → chunk-6S5CWGDA.js.map} +0 -0
- /package/dist/{chunk-SXMK5AEJ.js.map → chunk-6VYROVWO.js.map} +0 -0
- /package/dist/{chunk-TTLD66NI.js.map → chunk-AQRXXC6E.js.map} +0 -0
- /package/dist/{chunk-W4D7C74B.js.map → chunk-ARBXT73X.js.map} +0 -0
- /package/dist/{chunk-LAC6YHHX.js.map → chunk-BEZHQIEI.js.map} +0 -0
- /package/dist/{chunk-J3UWMBOP.js.map → chunk-BFURWHVR.js.map} +0 -0
- /package/dist/{chunk-RAQHUMKS.js.map → chunk-EZSPVWLQ.js.map} +0 -0
- /package/dist/{chunk-DM3Q6F5F.js.map → chunk-FCHZ5TNG.js.map} +0 -0
- /package/dist/{chunk-MI4HXE7M.js.map → chunk-FLWDFPXE.js.map} +0 -0
- /package/dist/{chunk-PLBITHV6.js.map → chunk-FQMEX3GX.js.map} +0 -0
- /package/dist/{chunk-FKQK22IX.js.map → chunk-GE3VT3CA.js.map} +0 -0
- /package/dist/{chunk-HMIROUFV.js.map → chunk-HCQJYI6X.js.map} +0 -0
- /package/dist/{chunk-FLK6QHOY.js.map → chunk-HGBJQGO5.js.map} +0 -0
- /package/dist/{chunk-GU5MXV2Y.js.map → chunk-HHVWV5BJ.js.map} +0 -0
- /package/dist/{chunk-HGUYC5K6.js.map → chunk-I3WGTSDY.js.map} +0 -0
- /package/dist/{chunk-MGYC2IRC.js.map → chunk-I7AYMJZA.js.map} +0 -0
- /package/dist/{chunk-7NF73SCB.js.map → chunk-IDSDJHRS.js.map} +0 -0
- /package/dist/{chunk-OBJCNGZL.js.map → chunk-ILPHIYAL.js.map} +0 -0
- /package/dist/{chunk-WR3FR3K3.js.map → chunk-IWKD56AY.js.map} +0 -0
- /package/dist/{chunk-Y7XSDJEA.js.map → chunk-JLAQWMVF.js.map} +0 -0
- /package/dist/{chunk-XUJZO7MZ.js.map → chunk-K6NULQN7.js.map} +0 -0
- /package/dist/{chunk-JI77AKT6.js.map → chunk-L2BRAC2J.js.map} +0 -0
- /package/dist/{chunk-Y67LUJBE.js.map → chunk-LGMI4LSY.js.map} +0 -0
- /package/dist/{chunk-3GAR4AZK.js.map → chunk-LNODLR7W.js.map} +0 -0
- /package/dist/{chunk-5XTGG4PV.js.map → chunk-LQ2BRGMX.js.map} +0 -0
- /package/dist/{chunk-B2POVFR2.js.map → chunk-M7QZSEHF.js.map} +0 -0
- /package/dist/{chunk-OJGYYH6K.js.map → chunk-NB2FU6EZ.js.map} +0 -0
- /package/dist/{chunk-PFTYKINE.js.map → chunk-NFII3MTG.js.map} +0 -0
- /package/dist/{chunk-WQPUX3BA.js.map → chunk-OG47L5GG.js.map} +0 -0
- /package/dist/{chunk-4D46PS6J.js.map → chunk-QIOFOD4K.js.map} +0 -0
- /package/dist/{chunk-6JCX3YLM.js.map → chunk-R2SYF5FC.js.map} +0 -0
- /package/dist/{chunk-JNURZHZJ.js.map → chunk-RTH2I55B.js.map} +0 -0
- /package/dist/{chunk-FFFJBNHA.js.map → chunk-S6VFDNSQ.js.map} +0 -0
- /package/dist/{chunk-ZNRGH4NS.js.map → chunk-SG2TDQEE.js.map} +0 -0
- /package/dist/{chunk-CKQTJ2LV.js.map → chunk-T3P6O2VU.js.map} +0 -0
- /package/dist/{chunk-RCJKABOS.js.map → chunk-TU5LQUJM.js.map} +0 -0
- /package/dist/{chunk-TLQOMWLQ.js.map → chunk-TU7DWSTW.js.map} +0 -0
- /package/dist/{chunk-V5NHJU3M.js.map → chunk-TXDE2QJ3.js.map} +0 -0
- /package/dist/{chunk-TVAIOC77.js.map → chunk-TYXZ2SRW.js.map} +0 -0
- /package/dist/{chunk-C6CBBZBO.js.map → chunk-UDIEKCIR.js.map} +0 -0
- /package/dist/{chunk-KBRJSPIM.js.map → chunk-UQHHGT67.js.map} +0 -0
- /package/dist/{chunk-SA22KXWT.js.map → chunk-USCADMM3.js.map} +0 -0
- /package/dist/{chunk-MJ7RNDD4.js.map → chunk-UUGISMNE.js.map} +0 -0
- /package/dist/{chunk-IQHO2ABF.js.map → chunk-VDPOCAQ2.js.map} +0 -0
- /package/dist/{chunk-AQKRSEBQ.js.map → chunk-VEJ3QX6M.js.map} +0 -0
- /package/dist/{chunk-XDNJC62G.js.map → chunk-VFJB7OG6.js.map} +0 -0
- /package/dist/{chunk-TVTSA4EN.js.map → chunk-VPABGAN4.js.map} +0 -0
- /package/dist/{chunk-DL2UJNJ7.js.map → chunk-VRIPVLE7.js.map} +0 -0
- /package/dist/{chunk-D3KLDIPQ.js.map → chunk-WLESMH4J.js.map} +0 -0
- /package/dist/{chunk-OLBLXJNI.js.map → chunk-YILZR3XI.js.map} +0 -0
- /package/dist/{chunk-JDR3HUEL.js.map → chunk-YJFLXOH4.js.map} +0 -0
- /package/dist/{chunk-BL6RTOK3.js.map → chunk-YWHZYR6S.js.map} +0 -0
- /package/dist/{chunk-XGPU2VDU.js.map → chunk-Z35KUMBW.js.map} +0 -0
- /package/dist/{chunk-GACSA5A6.js.map → chunk-Z7I2ZFXS.js.map} +0 -0
- /package/dist/{config-SMVIY6RW.js.map → config-55WGRLY3.js.map} +0 -0
- /package/dist/{connect-HPQ32KGV.js.map → connect-3YY7MF3I.js.map} +0 -0
- /package/dist/{conversion-upload-command-KTYAY7IG.js.map → conversion-upload-command-VM2P57K6.js.map} +0 -0
- /package/dist/{creatives-RNOL4F4E.js.map → creatives-2DR3QHJW.js.map} +0 -0
- /package/dist/{creatives-JPKA2RHU.js.map → creatives-DUR5Z5AN.js.map} +0 -0
- /package/dist/{currency-R4ORE2U3.js.map → currency-X4KEACEP.js.map} +0 -0
- /package/dist/{custom-conversions-5HJBB5XL.js.map → custom-conversions-OIA5Y2GX.js.map} +0 -0
- /package/dist/{customers-OFZTEXST.js.map → customers-663K2OCP.js.map} +0 -0
- /package/dist/{discover-GSJRZUOC.js.map → discover-2W42JB56.js.map} +0 -0
- /package/dist/{draft-RIR2V6A2.js.map → draft-2ZX73IRO.js.map} +0 -0
- /package/dist/{draft-WYDMLNYA.js.map → draft-CKLIIWXZ.js.map} +0 -0
- /package/dist/{draft-ZCL7FVBH.js.map → draft-L5Q6KEER.js.map} +0 -0
- /package/dist/{draft-DJIYEMZU.js.map → draft-MJRMZGMP.js.map} +0 -0
- /package/dist/{experiment-I5CRLOVN.js.map → experiment-3VRHCQN5.js.map} +0 -0
- /package/dist/{fit-53DGYRFD.js.map → fit-BEFCY2B4.js.map} +0 -0
- /package/dist/{fonts-LFMBUT4R.js.map → fonts-C6XN5667.js.map} +0 -0
- /package/dist/{forecast-4AG5F7YC.js.map → forecast-LYN6ZGQC.js.map} +0 -0
- /package/dist/{funding-5W4LX6DU.js.map → funding-TCEPQXRQ.js.map} +0 -0
- /package/dist/{ga4-BWVCDVIR.js.map → ga4-JE3HS36B.js.map} +0 -0
- /package/dist/{google-NAA4BASO.js.map → google-24FDG4C4.js.map} +0 -0
- /package/dist/{gsc-2MPE4N32.js.map → gsc-RMVOYIM3.js.map} +0 -0
- /package/dist/{ideas-NK3KQHAK.js.map → ideas-M66FU45H.js.map} +0 -0
- /package/dist/{images-2XS3JT7E.js.map → images-MM5OPUKV.js.map} +0 -0
- /package/dist/{ingest-DHXWZZX4.js.map → ingest-KMLYCFF4.js.map} +0 -0
- /package/dist/{intent-NSHW7EJT.js.map → intent-YCQCUCV3.js.map} +0 -0
- /package/dist/{job-DRFCQ27M.js.map → job-SM2OQ2LO.js.map} +0 -0
- /package/dist/{job-create-2EC25Y3J.js.map → job-create-ECZHPVKH.js.map} +0 -0
- /package/dist/{job-status-UNVZRPIA.js.map → job-status-QSYDKIIV.js.map} +0 -0
- /package/dist/{keyword-gap-ITTWKBWZ.js.map → keyword-gap-PUSF7EKY.js.map} +0 -0
- /package/dist/{landing-QONUUP3C.js.map → landing-OZU5RRFV.js.map} +0 -0
- /package/dist/{languages-MEFQQBJ2.js.map → languages-Q5SKO4AM.js.map} +0 -0
- /package/dist/{line-items-OH426JGT.js.map → line-items-2V5FY33R.js.map} +0 -0
- /package/dist/{locations-RLWAS6AC.js.map → locations-VQYREHYI.js.map} +0 -0
- /package/dist/{lookup-ZJIP2M4X.js.map → lookup-MELV3RUL.js.map} +0 -0
- /package/dist/{media-XCTZJIW4.js.map → media-BPI2VE6A.js.map} +0 -0
- /package/dist/{media-ZWN7E777.js.map → media-EEWZZU3P.js.map} +0 -0
- /package/dist/{media-sources-7L622UTF.js.map → media-sources-EQI3U4TC.js.map} +0 -0
- /package/dist/{meta-EHKXH257.js.map → meta-SMJUQP37.js.map} +0 -0
- /package/dist/{metrics-K6FDCMK7.js.map → metrics-EMAP7ESR.js.map} +0 -0
- /package/dist/{output-WTEPRUPE.js.map → output-4QBQEM4C.js.map} +0 -0
- /package/dist/{pages-J6AF5NDU.js.map → pages-DTQWQUKP.js.map} +0 -0
- /package/dist/{performance-K4VB6L6Z.js.map → performance-NIF3CESZ.js.map} +0 -0
- /package/dist/{pixels-ZZTB6NWF.js.map → pixels-2BKADWE6.js.map} +0 -0
- /package/dist/{promoted-tweets-KPG4IUVD.js.map → promoted-tweets-653Q5AC6.js.map} +0 -0
- /package/dist/{properties-RBLJCVSG.js.map → properties-VWKO3AAK.js.map} +0 -0
- /package/dist/{query-QM7MBQD7.js.map → query-CXIOL7WI.js.map} +0 -0
- /package/dist/{query-KQ675KJZ.js.map → query-OOP63DJF.js.map} +0 -0
- /package/dist/{query-BJJYUGQZ.js.map → query-RBZFAIDK.js.map} +0 -0
- /package/dist/{read-QME7JYVF.js.map → read-GOULD7YL.js.map} +0 -0
- /package/dist/{reddit-Z7DOVIGR.js.map → reddit-JIHMAKAQ.js.map} +0 -0
- /package/dist/{relevant-pages-VOICMQ7U.js.map → relevant-pages-FS7GBVXK.js.map} +0 -0
- /package/dist/{research-HW4EVOZU.js.map → research-PNBACCCP.js.map} +0 -0
- /package/dist/{rules-KTJ2ZZ62.js.map → rules-HY7S2YTD.js.map} +0 -0
- /package/dist/{run-YRR3KOUU.js.map → run-QCNRR3CA.js.map} +0 -0
- /package/dist/{scheduled-agents-DG7FTCUZ.js.map → scheduled-agents-OXYAVSIE.js.map} +0 -0
- /package/dist/{shared-ZFULUOPQ.js.map → shared-CGEJI2RB.js.map} +0 -0
- /package/dist/{sitemaps-F3HYH5ZP.js.map → sitemaps-5SP7PVQ6.js.map} +0 -0
- /package/dist/{sites-JSMF72BY.js.map → sites-YZDPHBST.js.map} +0 -0
- /package/dist/{sources-562ITR77.js.map → sources-FLUGHSVP.js.map} +0 -0
- /package/dist/{stats-QP4LFQZJ.js.map → stats-EGGNFTKI.js.map} +0 -0
- /package/dist/{studies-ZOEUY6YP.js.map → studies-6VUUOMZD.js.map} +0 -0
- /package/dist/{sync-PHH65JFS.js.map → sync-SCM6JGJP.js.map} +0 -0
- /package/dist/{sync-definition-NJPT6ABG.js.map → sync-definition-OGQ5XTQE.js.map} +0 -0
- /package/dist/{tag-manager-F7PVTDBB.js.map → tag-manager-REKD4WGU.js.map} +0 -0
- /package/dist/{tags-5KBOJJ5R.js.map → tags-CZTRQNXV.js.map} +0 -0
- /package/dist/{targeting-constants-236ES5HE.js.map → targeting-constants-MRQB4N5I.js.map} +0 -0
- /package/dist/{targeting-criteria-FJWNK53T.js.map → targeting-criteria-HSAESZIR.js.map} +0 -0
- /package/dist/{terms-O6ODXEOK.js.map → terms-D2KAFHKJ.js.map} +0 -0
- /package/dist/{testimonials-WAPFIGFJ.js.map → testimonials-G3OCNPBY.js.map} +0 -0
- /package/dist/{themes-B4LCQUXB.js.map → themes-X56KIX3Z.js.map} +0 -0
- /package/dist/{tweets-IUINLOXF.js.map → tweets-JN6ARKF6.js.map} +0 -0
- /package/dist/{videos-ZJCTODEB.js.map → videos-36AXDUGZ.js.map} +0 -0
- /package/dist/{viewer-check-GWZNGWCO.js.map → viewer-check-6HL4OUQY.js.map} +0 -0
- /package/dist/{winning-ads-W7GTXTX7.js.map → winning-ads-GMM5W2O4.js.map} +0 -0
- /package/dist/{write-commands-OTWH6BKZ.js.map → write-commands-B25W4FP5.js.map} +0 -0
- /package/dist/{write-commands-5J47ZNO4.js.map → write-commands-GNNEUVDW.js.map} +0 -0
- /package/dist/{x-V4NNNWRU.js.map → x-JNR5SO6F.js.map} +0 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvArg,
|
|
3
|
+
failWriteValidation,
|
|
4
|
+
requireTarget,
|
|
5
|
+
requireTargets,
|
|
6
|
+
schemaArgs,
|
|
7
|
+
stageChatgptOp,
|
|
8
|
+
stageChatgptOps
|
|
9
|
+
} from "./chunk-LQ2BRGMX.js";
|
|
10
|
+
import {
|
|
11
|
+
CHATGPT_ADS_REFERENCE,
|
|
12
|
+
CHATGPT_AUDIENCE_USES,
|
|
13
|
+
CHATGPT_MAX_STAGED_MEMBERS,
|
|
14
|
+
runChatgptListRead
|
|
15
|
+
} from "./chunk-GGK2CX6B.js";
|
|
16
|
+
import "./chunk-6DPSWLGY.js";
|
|
17
|
+
import {
|
|
18
|
+
PEOPLE_PREVIEW_ROWS,
|
|
19
|
+
maskPersonValue
|
|
20
|
+
} from "./chunk-SOPVIIUW.js";
|
|
21
|
+
import "./chunk-G4FG5EQO.js";
|
|
22
|
+
import "./chunk-X7VQFLHI.js";
|
|
23
|
+
import "./chunk-LU4HI4KI.js";
|
|
24
|
+
import "./chunk-LGK7UWBN.js";
|
|
25
|
+
import {
|
|
26
|
+
registerSchema
|
|
27
|
+
} from "./chunk-Q7US4OOA.js";
|
|
28
|
+
import "./chunk-YQSBHWOI.js";
|
|
29
|
+
|
|
30
|
+
// src/commands/ads/chatgpt/audiences.ts
|
|
31
|
+
import { readFileSync } from "fs";
|
|
32
|
+
import { defineCommand } from "citty";
|
|
33
|
+
|
|
34
|
+
// src/commands/ads/chatgpt/audience-members.ts
|
|
35
|
+
import { createHash } from "crypto";
|
|
36
|
+
import { parse } from "csv-parse/sync";
|
|
37
|
+
import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
|
|
38
|
+
function sha256(value) {
|
|
39
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
40
|
+
}
|
|
41
|
+
function normalizedEmail(value) {
|
|
42
|
+
const email = value.trim().toLowerCase();
|
|
43
|
+
return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(email) ? email : void 0;
|
|
44
|
+
}
|
|
45
|
+
function normalizedPhone(value, defaultCountry) {
|
|
46
|
+
const country = defaultCountry && isSupportedCountry(defaultCountry) ? defaultCountry : void 0;
|
|
47
|
+
const phone = parsePhoneNumberFromString(value.trim(), country);
|
|
48
|
+
return phone?.isValid() ? phone.number : void 0;
|
|
49
|
+
}
|
|
50
|
+
function hashedMembers(input) {
|
|
51
|
+
const rejected = [];
|
|
52
|
+
const emails = /* @__PURE__ */ new Map();
|
|
53
|
+
const phones = /* @__PURE__ */ new Map();
|
|
54
|
+
for (const value of input.emails) {
|
|
55
|
+
const email = normalizedEmail(value);
|
|
56
|
+
email ? emails.set(sha256(email), maskPersonValue("email", email)) : rejected.push(value.trim());
|
|
57
|
+
}
|
|
58
|
+
for (const value of input.phones) {
|
|
59
|
+
const phone = normalizedPhone(value, input.defaultCountry);
|
|
60
|
+
phone ? phones.set(sha256(phone), maskPersonValue("phone", phone)) : rejected.push(value.trim());
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
emailHashes: [...emails.keys()],
|
|
64
|
+
phoneHashes: [...phones.keys()],
|
|
65
|
+
// The review shows the first of them; the rest are counted.
|
|
66
|
+
previews: [...emails.values(), ...phones.values()].slice(0, PEOPLE_PREVIEW_ROWS),
|
|
67
|
+
rejected
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function headerWords(cell) {
|
|
71
|
+
return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
72
|
+
}
|
|
73
|
+
var EMAIL_HEADER = /\b(e ?mail|correo|mail)\b/;
|
|
74
|
+
var PHONE_HEADER = /\b(phone|telefono|movil|mobile|tel|celular)\b/;
|
|
75
|
+
function membersFromFile(content) {
|
|
76
|
+
const rows = parse(content, {
|
|
77
|
+
bom: true,
|
|
78
|
+
skip_empty_lines: true,
|
|
79
|
+
relax_column_count: true,
|
|
80
|
+
trim: true,
|
|
81
|
+
delimiter: [",", ";", " "]
|
|
82
|
+
});
|
|
83
|
+
const header = (rows[0] ?? []).map(headerWords);
|
|
84
|
+
const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));
|
|
85
|
+
const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));
|
|
86
|
+
if (emailColumn >= 0 || phoneColumn >= 0) {
|
|
87
|
+
const cells = (column) => column < 0 ? [] : rows.slice(1).flatMap((row) => row[column] ? [row[column]] : []);
|
|
88
|
+
return { emails: cells(emailColumn), phones: cells(phoneColumn) };
|
|
89
|
+
}
|
|
90
|
+
const values = rows.flatMap((row) => row[0] ? [row[0]] : []);
|
|
91
|
+
return values.some((value) => value.includes("@")) ? { emails: values, phones: [] } : { emails: [], phones: values };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/commands/ads/chatgpt/audiences.ts
|
|
95
|
+
var REFERENCE = CHATGPT_ADS_REFERENCE.audiences;
|
|
96
|
+
var MEMBER_ARGS = {
|
|
97
|
+
emails: { type: "string", description: "Emails, comma-separated" },
|
|
98
|
+
phones: { type: "string", description: "Phones, comma-separated \u2014 E.164 (+34\u2026), or local with --country" },
|
|
99
|
+
file: {
|
|
100
|
+
type: "string",
|
|
101
|
+
description: "A CSV with an email and/or phone column, or one email or phone per line \u2014 the company's own customers"
|
|
102
|
+
},
|
|
103
|
+
country: { type: "string", description: "Country of phones written without a +code, e.g. ES" }
|
|
104
|
+
};
|
|
105
|
+
function membersFromArgs(args, readFile = (path) => readFileSync(path, "utf8")) {
|
|
106
|
+
const fromFile = typeof args.file === "string" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };
|
|
107
|
+
const given = [...csvArg(args.emails) ?? [], ...fromFile.emails];
|
|
108
|
+
const givenPhones = [...csvArg(args.phones) ?? [], ...fromFile.phones];
|
|
109
|
+
const members = hashedMembers({
|
|
110
|
+
emails: given,
|
|
111
|
+
phones: givenPhones,
|
|
112
|
+
defaultCountry: typeof args.country === "string" ? args.country.toUpperCase() : void 0
|
|
113
|
+
});
|
|
114
|
+
const count = members.emailHashes.length + members.phoneHashes.length;
|
|
115
|
+
const offered = given.length + givenPhones.length + (typeof args.file === "string" && args.file ? 1 : 0);
|
|
116
|
+
const refusal = count > CHATGPT_MAX_STAGED_MEMBERS ? `${count} members \u2014 at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file` : count === 0 && offered > 0 ? "none of the values was an email or a valid phone \u2014 name the columns email and phone, and give phones a +country code or --country" : void 0;
|
|
117
|
+
return {
|
|
118
|
+
payload: {
|
|
119
|
+
...members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {},
|
|
120
|
+
...members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {},
|
|
121
|
+
...members.previews.length > 0 ? { memberPreviews: members.previews } : {}
|
|
122
|
+
},
|
|
123
|
+
rejected: members.rejected.length,
|
|
124
|
+
...refusal ? { refusal } : {}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function rejectedHint(rejected) {
|
|
128
|
+
return rejected > 0 ? [
|
|
129
|
+
`${rejected} value(s) were neither an email nor a valid phone and were left out \u2014 phones need a +country code, or --country.`
|
|
130
|
+
] : [];
|
|
131
|
+
}
|
|
132
|
+
var LIST_ARGS = {
|
|
133
|
+
"eligible-for": {
|
|
134
|
+
type: "string",
|
|
135
|
+
description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join("|")}`
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
registerSchema({
|
|
139
|
+
command: "ads.chatgpt.audiences.list",
|
|
140
|
+
description: "The account's custom audiences: status, and matched people as a privacy range (under_25k\u2026). `ready` is not eligibility \u2014 pass --eligible-for to list only those a use accepts.",
|
|
141
|
+
args: schemaArgs(LIST_ARGS)
|
|
142
|
+
});
|
|
143
|
+
var audiencesListCommand = defineCommand({
|
|
144
|
+
meta: { name: "list", description: "List the account's custom audiences." },
|
|
145
|
+
args: LIST_ARGS,
|
|
146
|
+
run: async ({ args }) => {
|
|
147
|
+
const use = typeof args["eligible-for"] === "string" ? args["eligible-for"] : void 0;
|
|
148
|
+
await runChatgptListRead(
|
|
149
|
+
REFERENCE,
|
|
150
|
+
"/api/ads/chatgpt/audiences",
|
|
151
|
+
use ? { eligible_for: use } : void 0,
|
|
152
|
+
(rows) => rows.length === 0 ? ["No audience. Stage one with `baker ads chatgpt audiences create --name \u2026 --file customers.csv`."] : [
|
|
153
|
+
"Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland."
|
|
154
|
+
]
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
var CREATE_ARGS = {
|
|
159
|
+
name: { type: "string", description: "Audience name (3+ characters)", required: true },
|
|
160
|
+
description: { type: "string", description: "What the list is" },
|
|
161
|
+
...MEMBER_ARGS
|
|
162
|
+
};
|
|
163
|
+
registerSchema({
|
|
164
|
+
command: "ads.chatgpt.audiences.create",
|
|
165
|
+
description: "Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.",
|
|
166
|
+
args: schemaArgs(CREATE_ARGS)
|
|
167
|
+
});
|
|
168
|
+
var audiencesCreateCommand = defineCommand({
|
|
169
|
+
meta: {
|
|
170
|
+
name: "create",
|
|
171
|
+
description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.
|
|
172
|
+
|
|
173
|
+
Examples:
|
|
174
|
+
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
175
|
+
baker ads chatgpt audiences create --name "Recent buyers" # empty, fill it later with add`
|
|
176
|
+
},
|
|
177
|
+
args: CREATE_ARGS,
|
|
178
|
+
run: async ({ args }) => {
|
|
179
|
+
const { payload, rejected, refusal } = membersFromArgs(args);
|
|
180
|
+
if (refusal) {
|
|
181
|
+
failWriteValidation(refusal);
|
|
182
|
+
}
|
|
183
|
+
await stageChatgptOp(
|
|
184
|
+
{
|
|
185
|
+
kind: "audience.create",
|
|
186
|
+
payload: { name: args.name, ...args.description ? { description: args.description } : {}, ...payload }
|
|
187
|
+
},
|
|
188
|
+
REFERENCE,
|
|
189
|
+
(staged) => [
|
|
190
|
+
...rejectedHint(rejected),
|
|
191
|
+
`Use it on a campaign after the publish, once \`audiences\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`
|
|
192
|
+
]
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
function membersCommand(verb) {
|
|
197
|
+
const args = {
|
|
198
|
+
id: { type: "positional", description: "Audience id (caud_\u2026)", required: true },
|
|
199
|
+
...MEMBER_ARGS
|
|
200
|
+
};
|
|
201
|
+
registerSchema({
|
|
202
|
+
command: `ads.chatgpt.audiences.${verb}`,
|
|
203
|
+
description: `Stage ${verb === "add" ? "adding" : "removing"} members ${verb === "add" ? "to" : "from"} a live custom audience, hashed on this machine. Applies when the chat is published.`,
|
|
204
|
+
args: schemaArgs(args)
|
|
205
|
+
});
|
|
206
|
+
return defineCommand({
|
|
207
|
+
meta: {
|
|
208
|
+
name: verb,
|
|
209
|
+
description: `Stage ${verb === "add" ? "adding" : "removing"} members.
|
|
210
|
+
|
|
211
|
+
Example:
|
|
212
|
+
baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`
|
|
213
|
+
},
|
|
214
|
+
args,
|
|
215
|
+
run: async ({ args: parsed }) => {
|
|
216
|
+
const { payload, rejected, refusal } = membersFromArgs(parsed);
|
|
217
|
+
if (refusal) {
|
|
218
|
+
failWriteValidation(refusal);
|
|
219
|
+
}
|
|
220
|
+
if (!payload.emailHashes && !payload.phoneHashes) {
|
|
221
|
+
failWriteValidation("name at least one email or phone with --emails, --phones or --file");
|
|
222
|
+
}
|
|
223
|
+
await stageChatgptOp(
|
|
224
|
+
{ kind: `audience.${verb}`, target: requireTarget(parsed, "id"), payload },
|
|
225
|
+
REFERENCE,
|
|
226
|
+
() => rejectedHint(rejected)
|
|
227
|
+
);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
var ARCHIVE_ARGS = {
|
|
232
|
+
ids: { type: "positional", description: "Audience ids, comma-separated", required: true }
|
|
233
|
+
};
|
|
234
|
+
registerSchema({
|
|
235
|
+
command: "ads.chatgpt.audiences.archive",
|
|
236
|
+
description: "Stage archiving custom audiences \u2014 for good: ChatGPT Ads cannot bring one back. Pass every id in one call.",
|
|
237
|
+
args: schemaArgs(ARCHIVE_ARGS)
|
|
238
|
+
});
|
|
239
|
+
var audiencesArchiveCommand = defineCommand({
|
|
240
|
+
meta: {
|
|
241
|
+
name: "archive",
|
|
242
|
+
description: `Stage archiving audiences, for good.
|
|
243
|
+
|
|
244
|
+
Example:
|
|
245
|
+
baker ads chatgpt audiences archive caud_123`
|
|
246
|
+
},
|
|
247
|
+
args: ARCHIVE_ARGS,
|
|
248
|
+
run: async ({ args }) => {
|
|
249
|
+
await stageChatgptOps(
|
|
250
|
+
requireTargets(args, "ids").map((id) => ({ kind: "audience.archive", target: id, payload: {} })),
|
|
251
|
+
REFERENCE
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
var audiencesCommand = defineCommand({
|
|
256
|
+
meta: {
|
|
257
|
+
name: "audiences",
|
|
258
|
+
description: `Custom audiences \u2014 the company's own customer lists a campaign serves to or leaves out.
|
|
259
|
+
|
|
260
|
+
Examples:
|
|
261
|
+
baker ads chatgpt audiences
|
|
262
|
+
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
263
|
+
baker ads chatgpt audiences add caud_123 --emails ana@example.com`
|
|
264
|
+
},
|
|
265
|
+
subCommands: {
|
|
266
|
+
list: audiencesListCommand,
|
|
267
|
+
create: audiencesCreateCommand,
|
|
268
|
+
add: membersCommand("add"),
|
|
269
|
+
remove: membersCommand("remove"),
|
|
270
|
+
archive: audiencesArchiveCommand
|
|
271
|
+
},
|
|
272
|
+
// A parent must never declare `run`: citty falls through to it after the matched subcommand.
|
|
273
|
+
args: {},
|
|
274
|
+
default: "list"
|
|
275
|
+
});
|
|
276
|
+
export {
|
|
277
|
+
audiencesCommand,
|
|
278
|
+
membersFromArgs
|
|
279
|
+
};
|
|
280
|
+
//# sourceMappingURL=audiences-B2LFKWIS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/chatgpt/audiences.ts","../src/commands/ads/chatgpt/audience-members.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { CHATGPT_AUDIENCE_USES, CHATGPT_MAX_STAGED_MEMBERS, type ChatgptAdsAudience } from \"@baker/api/ads-chatgpt\";\nimport { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { hashedMembers, membersFromFile } from \"./audience-members.ts\";\nimport { CHATGPT_ADS_REFERENCE, runChatgptListRead } from \"./shared.ts\";\nimport {\n csvArg,\n failWriteValidation,\n requireTarget,\n requireTargets,\n schemaArgs,\n stageChatgptOp,\n stageChatgptOps,\n} from \"./write-shared.ts\";\n\n/**\n * Custom audiences: lists of the company's own customers a campaign serves to\n * or leaves out. Members are hashed on this machine before anything is sent —\n * Baker and ChatGPT Ads only ever see SHA-256 digests.\n */\n\nconst REFERENCE = CHATGPT_ADS_REFERENCE.audiences;\n\nconst MEMBER_ARGS = {\n emails: { type: \"string\", description: \"Emails, comma-separated\" },\n phones: { type: \"string\", description: \"Phones, comma-separated — E.164 (+34…), or local with --country\" },\n file: {\n type: \"string\",\n description:\n \"A CSV with an email and/or phone column, or one email or phone per line — the company's own customers\",\n },\n country: { type: \"string\", description: \"Country of phones written without a +code, e.g. ES\" },\n} as const;\n\ntype Args = Record<string, unknown>;\n\n/** The members the flags name, hashed — with the reason to refuse them when none is usable or there are too many. */\nexport function membersFromArgs(args: Args, readFile: (path: string) => string = (path) => readFileSync(path, \"utf8\")) {\n const fromFile =\n typeof args.file === \"string\" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };\n const given = [...(csvArg(args.emails) ?? []), ...fromFile.emails];\n const givenPhones = [...(csvArg(args.phones) ?? []), ...fromFile.phones];\n const members = hashedMembers({\n emails: given,\n phones: givenPhones,\n defaultCountry: typeof args.country === \"string\" ? args.country.toUpperCase() : undefined,\n });\n const count = members.emailHashes.length + members.phoneHashes.length;\n const offered = given.length + givenPhones.length + (typeof args.file === \"string\" && args.file ? 1 : 0);\n const refusal =\n count > CHATGPT_MAX_STAGED_MEMBERS\n ? `${count} members — at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file`\n : count === 0 && offered > 0\n ? \"none of the values was an email or a valid phone — name the columns email and phone, and give phones a +country code or --country\"\n : undefined;\n return {\n payload: {\n ...(members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {}),\n ...(members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}),\n ...(members.previews.length > 0 ? { memberPreviews: members.previews } : {}),\n },\n rejected: members.rejected.length,\n ...(refusal ? { refusal } : {}),\n };\n}\n\nfunction rejectedHint(rejected: number): string[] {\n return rejected > 0\n ? [\n `${rejected} value(s) were neither an email nor a valid phone and were left out — phones need a +country code, or --country.`,\n ]\n : [];\n}\n\nconst LIST_ARGS = {\n \"eligible-for\": {\n type: \"string\",\n description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join(\"|\")}`,\n },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.list\",\n description:\n \"The account's custom audiences: status, and matched people as a privacy range (under_25k…). `ready` is not eligibility — pass --eligible-for to list only those a use accepts.\",\n args: schemaArgs(LIST_ARGS),\n});\n\nconst audiencesListCommand = defineCommand({\n meta: { name: \"list\", description: \"List the account's custom audiences.\" },\n args: LIST_ARGS,\n run: async ({ args }) => {\n const use = typeof args[\"eligible-for\"] === \"string\" ? args[\"eligible-for\"] : undefined;\n await runChatgptListRead<ChatgptAdsAudience[]>(\n REFERENCE,\n \"/api/ads/chatgpt/audiences\",\n use ? { eligible_for: use } : undefined,\n (rows) =>\n rows.length === 0\n ? [\"No audience. Stage one with `baker ads chatgpt audiences create --name … --file customers.csv`.\"]\n : [\n \"Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland.\",\n ],\n );\n },\n});\n\nconst CREATE_ARGS = {\n name: { type: \"string\", description: \"Audience name (3+ characters)\", required: true },\n description: { type: \"string\", description: \"What the list is\" },\n ...MEMBER_ARGS,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.create\",\n description:\n \"Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.\",\n args: schemaArgs(CREATE_ARGS),\n});\n\nconst audiencesCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.\n\nExamples:\n baker ads chatgpt audiences create --name \"Customers 2026\" --file customers.csv --country ES\n baker ads chatgpt audiences create --name \"Recent buyers\" # empty, fill it later with add`,\n },\n args: CREATE_ARGS,\n run: async ({ args }) => {\n const { payload, rejected, refusal } = membersFromArgs(args);\n if (refusal) {\n failWriteValidation(refusal);\n }\n await stageChatgptOp(\n {\n kind: \"audience.create\",\n payload: { name: args.name, ...(args.description ? { description: args.description } : {}), ...payload },\n },\n REFERENCE,\n (staged) => [\n ...rejectedHint(rejected),\n `Use it on a campaign after the publish, once \\`audiences\\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`,\n ],\n );\n },\n});\n\nfunction membersCommand(verb: \"add\" | \"remove\") {\n const args = {\n id: { type: \"positional\", description: \"Audience id (caud_…)\", required: true },\n ...MEMBER_ARGS,\n } as const;\n registerSchema({\n command: `ads.chatgpt.audiences.${verb}`,\n description: `Stage ${verb === \"add\" ? \"adding\" : \"removing\"} members ${verb === \"add\" ? \"to\" : \"from\"} a live custom audience, hashed on this machine. Applies when the chat is published.`,\n args: schemaArgs(args),\n });\n return defineCommand({\n meta: {\n name: verb,\n description: `Stage ${verb === \"add\" ? \"adding\" : \"removing\"} members.\n\nExample:\n baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`,\n },\n args,\n run: async ({ args: parsed }) => {\n const { payload, rejected, refusal } = membersFromArgs(parsed);\n if (refusal) {\n failWriteValidation(refusal);\n }\n if (!payload.emailHashes && !payload.phoneHashes) {\n failWriteValidation(\"name at least one email or phone with --emails, --phones or --file\");\n }\n await stageChatgptOp({ kind: `audience.${verb}`, target: requireTarget(parsed, \"id\"), payload }, REFERENCE, () =>\n rejectedHint(rejected),\n );\n },\n });\n}\n\nconst ARCHIVE_ARGS = {\n ids: { type: \"positional\", description: \"Audience ids, comma-separated\", required: true },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.archive\",\n description:\n \"Stage archiving custom audiences — for good: ChatGPT Ads cannot bring one back. Pass every id in one call.\",\n args: schemaArgs(ARCHIVE_ARGS),\n});\n\nconst audiencesArchiveCommand = defineCommand({\n meta: {\n name: \"archive\",\n description: `Stage archiving audiences, for good.\n\nExample:\n baker ads chatgpt audiences archive caud_123`,\n },\n args: ARCHIVE_ARGS,\n run: async ({ args }) => {\n await stageChatgptOps(\n requireTargets(args, \"ids\").map((id) => ({ kind: \"audience.archive\", target: id, payload: {} })),\n REFERENCE,\n );\n },\n});\n\nexport const audiencesCommand = defineCommand({\n meta: {\n name: \"audiences\",\n description: `Custom audiences — the company's own customer lists a campaign serves to or leaves out.\n\nExamples:\n baker ads chatgpt audiences\n baker ads chatgpt audiences create --name \"Customers 2026\" --file customers.csv --country ES\n baker ads chatgpt audiences add caud_123 --emails ana@example.com`,\n },\n subCommands: {\n list: audiencesListCommand,\n create: audiencesCreateCommand,\n add: membersCommand(\"add\"),\n remove: membersCommand(\"remove\"),\n archive: audiencesArchiveCommand,\n },\n // A parent must never declare `run`: citty falls through to it after the matched subcommand.\n args: {},\n default: \"list\",\n});\n","import { createHash } from \"node:crypto\";\nimport { maskPersonValue, PEOPLE_PREVIEW_ROWS } from \"@baker/api/ads-common/people\";\nimport { parse } from \"csv-parse/sync\";\nimport { type CountryCode, isSupportedCountry, parsePhoneNumberFromString } from \"libphonenumber-js\";\n\n/**\n * An audience's members, hashed here — on the agent's machine — so no raw\n * email or phone ever reaches Baker or ChatGPT Ads. The normalization is\n * ChatGPT Ads' own: an email trimmed and lowercased (dots and plus tags kept),\n * a phone in E.164; each is SHA-256 hex. Beside the digests goes each\n * member masked (`a***@example.com`, `***001`) for the review in Baker.\n */\n\nfunction sha256(value: string): string {\n return createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\n/**\n * One `@`, a dotted domain, and nothing that separates values — a cell holding\n * `ana@x.com;+34…` is two values run together, never an email to hash.\n */\nfunction normalizedEmail(value: string): string | undefined {\n const email = value.trim().toLowerCase();\n return /^[^@\\s;,|]+@[^@\\s;,|]+\\.[^@\\s;,|]+$/.test(email) ? email : undefined;\n}\n\nfunction normalizedPhone(value: string, defaultCountry: string | undefined): string | undefined {\n const country = defaultCountry && isSupportedCountry(defaultCountry) ? (defaultCountry as CountryCode) : undefined;\n const phone = parsePhoneNumberFromString(value.trim(), country);\n return phone?.isValid() ? phone.number : undefined;\n}\n\nexport function hashedMembers(input: {\n emails: readonly string[];\n phones: readonly string[];\n defaultCountry: string | undefined;\n}): { emailHashes: string[]; phoneHashes: string[]; previews: string[]; rejected: string[] } {\n const rejected: string[] = [];\n // Hash → masked copy, so a member given twice is reviewed once, as it is sent.\n const emails = new Map<string, string>();\n const phones = new Map<string, string>();\n for (const value of input.emails) {\n const email = normalizedEmail(value);\n email ? emails.set(sha256(email), maskPersonValue(\"email\", email)) : rejected.push(value.trim());\n }\n for (const value of input.phones) {\n const phone = normalizedPhone(value, input.defaultCountry);\n phone ? phones.set(sha256(phone), maskPersonValue(\"phone\", phone)) : rejected.push(value.trim());\n }\n return {\n emailHashes: [...emails.keys()],\n phoneHashes: [...phones.keys()],\n // The review shows the first of them; the rest are counted.\n previews: [...emails.values(), ...phones.values()].slice(0, PEOPLE_PREVIEW_ROWS),\n rejected,\n };\n}\n\n/** A header as its words: lowercased, accents and separators gone — \"Teléfono móvil\" is \"telefono movil\". */\nfunction headerWords(cell: string): string {\n return cell\n .normalize(\"NFD\")\n .replace(/\\p{Diacritic}/gu, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .trim();\n}\n\nconst EMAIL_HEADER = /\\b(e ?mail|correo|mail)\\b/;\nconst PHONE_HEADER = /\\b(phone|telefono|movil|mobile|tel|celular)\\b/;\n\n/**\n * A CSV with an email and/or phone column, or a plain list, one value per\n * line — whatever a marketer exported. A plain list is emails, or phones when\n * no line has an `@`.\n */\nexport function membersFromFile(content: string): { emails: string[]; phones: string[] } {\n // Excel writes `;` where the decimal comma is taken, tabs come from a copied sheet.\n const rows: string[][] = parse(content, {\n bom: true,\n skip_empty_lines: true,\n relax_column_count: true,\n trim: true,\n delimiter: [\",\", \";\", \"\\t\"],\n });\n const header = (rows[0] ?? []).map(headerWords);\n const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));\n const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));\n if (emailColumn >= 0 || phoneColumn >= 0) {\n const cells = (column: number) =>\n column < 0 ? [] : rows.slice(1).flatMap((row) => (row[column] ? [row[column]] : []));\n return { emails: cells(emailColumn), phones: cells(phoneColumn) };\n }\n const values = rows.flatMap((row) => (row[0] ? [row[0]] : []));\n return values.some((value) => value.includes(\"@\")) ? { emails: values, phones: [] } : { emails: [], phones: values };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvOrJson,
|
|
3
|
+
handleMetaError,
|
|
4
|
+
resolveAccountIdArg
|
|
5
|
+
} from "./chunk-M7QZSEHF.js";
|
|
6
|
+
import "./chunk-Y2JZX6JB.js";
|
|
7
|
+
import {
|
|
8
|
+
writeAdsJson,
|
|
9
|
+
writeAdsOutput
|
|
10
|
+
} from "./chunk-6DPSWLGY.js";
|
|
11
|
+
import {
|
|
12
|
+
NO_CACHE_ARG
|
|
13
|
+
} from "./chunk-AGBBTTKA.js";
|
|
14
|
+
import {
|
|
15
|
+
apiGet
|
|
16
|
+
} from "./chunk-X7VQFLHI.js";
|
|
17
|
+
import "./chunk-LU4HI4KI.js";
|
|
18
|
+
import "./chunk-LGK7UWBN.js";
|
|
19
|
+
import "./chunk-Q7US4OOA.js";
|
|
20
|
+
import "./chunk-YQSBHWOI.js";
|
|
21
|
+
|
|
22
|
+
// src/commands/ads/meta/audiences.ts
|
|
23
|
+
import { defineCommand } from "citty";
|
|
24
|
+
var listArgs = {
|
|
25
|
+
"account-id": { type: "string", description: "Meta ad account ID" },
|
|
26
|
+
limit: { type: "string", description: "Max rows" },
|
|
27
|
+
"no-cache": NO_CACHE_ARG,
|
|
28
|
+
output: { type: "string", description: "Output format", default: "json" }
|
|
29
|
+
};
|
|
30
|
+
var listCommand = defineCommand({
|
|
31
|
+
meta: {
|
|
32
|
+
name: "list",
|
|
33
|
+
description: "List custom audiences. Runs by default when no subcommand is given. Example: baker ads meta audiences --account-id act_123"
|
|
34
|
+
},
|
|
35
|
+
args: listArgs,
|
|
36
|
+
run: async ({ args }) => {
|
|
37
|
+
const accountId = resolveAccountIdArg(args);
|
|
38
|
+
try {
|
|
39
|
+
const params = { "account-id": accountId };
|
|
40
|
+
if (args.limit) params.limit = args.limit;
|
|
41
|
+
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
42
|
+
const data = await apiGet("/api/ads/meta/audiences", params);
|
|
43
|
+
const fmt = csvOrJson(args);
|
|
44
|
+
if (fmt !== "json") {
|
|
45
|
+
writeAdsOutput(data, fmt);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
writeAdsJson({ ok: true, data });
|
|
49
|
+
} catch (err) {
|
|
50
|
+
handleMetaError(err);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
var audiencesCommand = defineCommand({
|
|
55
|
+
meta: {
|
|
56
|
+
name: "audiences",
|
|
57
|
+
description: `List custom audiences, or stage writes (create/update/delete, members add|remove|replace). Write subcommands stage ops on this chat's draft.
|
|
58
|
+
Includes lookalikes, website-pixel audiences, customer-file audiences. Meta hides exact size when count < 1000.
|
|
59
|
+
|
|
60
|
+
Examples:
|
|
61
|
+
baker ads meta audiences --account-id act_123
|
|
62
|
+
baker ads meta audiences create --name "Site 30d" --subtype WEBSITE --file rule.json
|
|
63
|
+
baker ads meta audiences create --name "Past buyers" --subtype CUSTOM --file buyers.json # {"members":[{"email":"\u2026"}]}
|
|
64
|
+
baker ads meta audiences create --name "Customers" --subtype CUSTOM --customer-file-source USER_PROVIDED_ONLY
|
|
65
|
+
baker ads meta audiences members add meta_temp_ab12 --file customers.csv --country ES
|
|
66
|
+
baker ads meta audiences saved --account-id act_123 \u2014 saved audiences (read-only)`
|
|
67
|
+
},
|
|
68
|
+
subCommands: {
|
|
69
|
+
list: listCommand,
|
|
70
|
+
create: () => import("./write-commands-NXJQQ62W.js").then((m) => m.audiencesCreateCommand),
|
|
71
|
+
update: () => import("./write-commands-NXJQQ62W.js").then((m) => m.audiencesUpdateCommand),
|
|
72
|
+
delete: () => import("./audience-writes-TXWPDJ2F.js").then((m) => m.audiencesDeleteCommand),
|
|
73
|
+
members: () => import("./audience-writes-TXWPDJ2F.js").then((m) => m.audiencesMembersCommand),
|
|
74
|
+
saved: () => import("./audience-writes-TXWPDJ2F.js").then((m) => m.savedAudiencesCommand)
|
|
75
|
+
},
|
|
76
|
+
// `args` stays even though the parent has no `run`: citty scans rawArgs for the
|
|
77
|
+
// subcommand name using THIS command's arg defs, so without them `--account-id act_1`
|
|
78
|
+
// would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare
|
|
79
|
+
// invocation — citty falls through to `run` after a subcommand, double-executing it.
|
|
80
|
+
args: listArgs,
|
|
81
|
+
default: "list"
|
|
82
|
+
});
|
|
83
|
+
export {
|
|
84
|
+
audiencesCommand
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=audiences-MBBXWEOI.js.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseXApiError
|
|
3
|
+
} from "./chunk-FIN4ZXGJ.js";
|
|
4
|
+
import {
|
|
5
|
+
resolveXAccountId
|
|
6
|
+
} from "./chunk-IDSDJHRS.js";
|
|
7
|
+
import {
|
|
8
|
+
cacheGet,
|
|
9
|
+
cacheSet,
|
|
10
|
+
writeAdsJson,
|
|
11
|
+
writeAdsOutput
|
|
12
|
+
} from "./chunk-6DPSWLGY.js";
|
|
13
|
+
import {
|
|
14
|
+
ApiError,
|
|
15
|
+
apiGet
|
|
16
|
+
} from "./chunk-X7VQFLHI.js";
|
|
17
|
+
import "./chunk-LU4HI4KI.js";
|
|
18
|
+
import "./chunk-LGK7UWBN.js";
|
|
19
|
+
import {
|
|
20
|
+
registerSchema
|
|
21
|
+
} from "./chunk-Q7US4OOA.js";
|
|
22
|
+
import "./chunk-YQSBHWOI.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/ads/x/audiences.ts
|
|
25
|
+
import { defineCommand } from "citty";
|
|
26
|
+
registerSchema({
|
|
27
|
+
command: "ads.x.audiences",
|
|
28
|
+
description: "List custom audiences for an X Ads account. Returns id, name, audience_size, audience_type, targetable status. Audiences need 100+ active users in the past 90 days to be targetable.",
|
|
29
|
+
args: {
|
|
30
|
+
"account-id": { type: "string", description: "X Ads account ID", required: false },
|
|
31
|
+
"no-cache": { type: "boolean", description: "Skip cache", required: false },
|
|
32
|
+
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
var audiencesCommand = defineCommand({
|
|
36
|
+
meta: {
|
|
37
|
+
name: "audiences",
|
|
38
|
+
description: `List X Ads custom audiences.
|
|
39
|
+
|
|
40
|
+
Examples:
|
|
41
|
+
baker ads x audiences --account-id 18ce53xyz`
|
|
42
|
+
},
|
|
43
|
+
args: {
|
|
44
|
+
"account-id": { type: "string", description: "X Ads account ID", required: false },
|
|
45
|
+
"no-cache": { type: "boolean", description: "Skip cache", required: false },
|
|
46
|
+
output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
|
|
47
|
+
},
|
|
48
|
+
run: async ({ args }) => {
|
|
49
|
+
const accountId = await resolveXAccountId(args);
|
|
50
|
+
const useCache = !args["no-cache"];
|
|
51
|
+
const cacheKey = `audiences:${accountId}`;
|
|
52
|
+
if (useCache) {
|
|
53
|
+
const cached = cacheGet("x-account-data", cacheKey);
|
|
54
|
+
if (cached) {
|
|
55
|
+
writeAdsJson({ ok: true, data: cached.data, cached: true });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const params = { "account-id": accountId };
|
|
61
|
+
if (!useCache) params["skip-cache"] = "true";
|
|
62
|
+
const data = await apiGet("/api/ads/x/custom-audiences", params);
|
|
63
|
+
if (useCache) {
|
|
64
|
+
cacheSet("x-account-data", cacheKey, data, 6 * 60 * 60 * 1e3);
|
|
65
|
+
}
|
|
66
|
+
const format = args.output || "json";
|
|
67
|
+
if (format !== "json") {
|
|
68
|
+
writeAdsOutput(data, format);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
writeAdsJson({ ok: true, data });
|
|
72
|
+
} catch (err) {
|
|
73
|
+
if (err instanceof ApiError) {
|
|
74
|
+
writeAdsJson(parseXApiError(err.message, accountId));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
export {
|
|
83
|
+
audiencesCommand
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=audiences-YUG5JLL4.js.map
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleLinkedinError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-NFII3MTG.js";
|
|
5
|
+
import {
|
|
6
|
+
writeAdsJson
|
|
7
|
+
} from "./chunk-6DPSWLGY.js";
|
|
8
|
+
import {
|
|
9
|
+
NO_CACHE_ARG
|
|
10
|
+
} from "./chunk-AGBBTTKA.js";
|
|
11
|
+
import "./chunk-PC3FJEZH.js";
|
|
12
|
+
import "./chunk-CAZGM2NX.js";
|
|
13
|
+
import "./chunk-NZS3KEQ2.js";
|
|
14
|
+
import "./chunk-GIWHHCD6.js";
|
|
15
|
+
import "./chunk-SOPVIIUW.js";
|
|
16
|
+
import "./chunk-G4FG5EQO.js";
|
|
17
|
+
import "./chunk-NSBNIPIW.js";
|
|
18
|
+
import "./chunk-46YLDIQG.js";
|
|
19
|
+
import {
|
|
20
|
+
apiPost
|
|
21
|
+
} from "./chunk-X7VQFLHI.js";
|
|
22
|
+
import "./chunk-LU4HI4KI.js";
|
|
23
|
+
import "./chunk-LGK7UWBN.js";
|
|
24
|
+
import "./chunk-Q7US4OOA.js";
|
|
25
|
+
import "./chunk-YQSBHWOI.js";
|
|
26
|
+
|
|
27
|
+
// src/commands/ads/linkedin/audit.ts
|
|
28
|
+
import { defineCommand } from "citty";
|
|
29
|
+
var SEVERITY_RANK = {
|
|
30
|
+
critical: 0,
|
|
31
|
+
high: 1,
|
|
32
|
+
medium: 2,
|
|
33
|
+
low: 3
|
|
34
|
+
};
|
|
35
|
+
var STATUS_RANK = {
|
|
36
|
+
fail: 0,
|
|
37
|
+
warn: 1,
|
|
38
|
+
partial: 2,
|
|
39
|
+
pass: 3,
|
|
40
|
+
n_a: 4
|
|
41
|
+
};
|
|
42
|
+
function filterFindings(findings, severity, area) {
|
|
43
|
+
return findings.filter((f) => {
|
|
44
|
+
if (severity && !severity.includes(f.severity)) return false;
|
|
45
|
+
if (area && !area.includes(f.area)) return false;
|
|
46
|
+
return true;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function sortFindings(findings) {
|
|
50
|
+
return [...findings].sort((a, b) => {
|
|
51
|
+
const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];
|
|
52
|
+
if (sa !== 0) return sa;
|
|
53
|
+
return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function renderMarkdown(result) {
|
|
57
|
+
const lines = [];
|
|
58
|
+
lines.push(`# LinkedIn Ads Audit \u2014 ${result.account.name} (${result.account.id})`);
|
|
59
|
+
lines.push("");
|
|
60
|
+
lines.push(
|
|
61
|
+
`**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`
|
|
62
|
+
);
|
|
63
|
+
lines.push("");
|
|
64
|
+
lines.push(
|
|
65
|
+
`**Summary:** ${result.summary.pass} pass \u2022 ${result.summary.critical} critical \u2022 ${result.summary.high} high \u2022 ${result.summary.medium} medium \u2022 ${result.summary.low} low \u2022 ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`
|
|
66
|
+
);
|
|
67
|
+
lines.push("");
|
|
68
|
+
lines.push("| # | Area | Check | Status | Severity | Notes |");
|
|
69
|
+
lines.push("|---|------|-------|--------|----------|-------|");
|
|
70
|
+
result.findings.forEach((f, idx) => {
|
|
71
|
+
const note = noteOf(f);
|
|
72
|
+
lines.push(
|
|
73
|
+
`| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`
|
|
74
|
+
);
|
|
75
|
+
});
|
|
76
|
+
return lines.join("\n");
|
|
77
|
+
}
|
|
78
|
+
function escapeMd(text) {
|
|
79
|
+
return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
80
|
+
}
|
|
81
|
+
function noteOf(f) {
|
|
82
|
+
if (f.status === "pass") return "";
|
|
83
|
+
const ev = f.evidence ? JSON.stringify(f.evidence) : "";
|
|
84
|
+
const fix = f.fix?.explanation ?? "";
|
|
85
|
+
return [fix, ev].filter(Boolean).join(" \u2014 ");
|
|
86
|
+
}
|
|
87
|
+
var auditCommand = defineCommand({
|
|
88
|
+
meta: {
|
|
89
|
+
name: "audit",
|
|
90
|
+
description: `Run a LinkedIn Ads playbook audit \u2014 30+ checks across Settings, Tracking,
|
|
91
|
+
Audience, Campaigns, Creative, Performance, Bidding, and Compliance.
|
|
92
|
+
|
|
93
|
+
Each finding has {id, area, check, status, severity, evidence, fix} fields with
|
|
94
|
+
playbook citations. The default JSON output is agent-friendly; --format md
|
|
95
|
+
renders a deliverable-ready table that mirrors the google-ads-playbook
|
|
96
|
+
10-audit-summary.md style.
|
|
97
|
+
|
|
98
|
+
Exit code 0 always. Use the JSON 'summary' counts to decide if action is needed.
|
|
99
|
+
|
|
100
|
+
Examples:
|
|
101
|
+
baker ads linkedin audit --account-id 503001492
|
|
102
|
+
baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope
|
|
103
|
+
baker ads linkedin audit --account-id 503001492 --window-days 90
|
|
104
|
+
baker ads linkedin audit --account-id 503001492 --severity critical,high
|
|
105
|
+
baker ads linkedin audit --account-id 503001492 --area Settings,Tracking
|
|
106
|
+
baker ads linkedin audit --account-id 503001492 --format md`
|
|
107
|
+
},
|
|
108
|
+
args: {
|
|
109
|
+
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
110
|
+
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
111
|
+
"campaign-id": { type: "string", description: "Narrow scope to a single campaign" },
|
|
112
|
+
"window-days": { type: "string", description: "Lookback window for performance checks (default: 30)" },
|
|
113
|
+
severity: { type: "string", description: "CSV severity filter: critical,high,medium,low" },
|
|
114
|
+
area: {
|
|
115
|
+
type: "string",
|
|
116
|
+
description: "CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene"
|
|
117
|
+
},
|
|
118
|
+
format: { type: "string", description: "Output format: json | md (default: json)" },
|
|
119
|
+
"no-cache": NO_CACHE_ARG
|
|
120
|
+
},
|
|
121
|
+
run: async ({ args }) => {
|
|
122
|
+
const accountId = resolveAccountIdArg(args);
|
|
123
|
+
const windowDays = args["window-days"] ? Number(args["window-days"]) : 30;
|
|
124
|
+
if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {
|
|
125
|
+
handleLinkedinError(new Error("--window-days must be 1..365"));
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
const data = await apiPost("/api/ads/linkedin/audit", {
|
|
129
|
+
accountId,
|
|
130
|
+
campaignId: args["campaign-id"] ? String(args["campaign-id"]) : void 0,
|
|
131
|
+
windowDays,
|
|
132
|
+
skipCache: Boolean(args["no-cache"])
|
|
133
|
+
});
|
|
134
|
+
const severityFilter = args.severity?.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean);
|
|
135
|
+
const areaFilter = args.area?.split(",").map((s) => s.trim()).filter(Boolean);
|
|
136
|
+
const filtered = filterFindings(data.findings, severityFilter, areaFilter);
|
|
137
|
+
const sorted = sortFindings(filtered);
|
|
138
|
+
const result = { ...data, findings: sorted };
|
|
139
|
+
const fmt = args.format ?? "json";
|
|
140
|
+
if (fmt === "md") {
|
|
141
|
+
process.stdout.write(`${renderMarkdown(result)}
|
|
142
|
+
`);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
writeAdsJson({ ok: true, data: result });
|
|
146
|
+
} catch (err) {
|
|
147
|
+
handleLinkedinError(err);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
export {
|
|
152
|
+
auditCommand
|
|
153
|
+
};
|
|
154
|
+
//# sourceMappingURL=audit-VT2WSZWM.js.map
|