@koda-sl/baker-cli 0.489.0 → 0.491.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 +169 -7
- package/dist/account-3H6BZO5H.js +80 -0
- package/dist/account-IKFDY52P.js +138 -0
- package/dist/account-IKFDY52P.js.map +1 -0
- package/dist/account-VGSYM7LY.js +79 -0
- package/dist/account-assets-LKZVWZAR.js +289 -0
- package/dist/account-assets-LKZVWZAR.js.map +1 -0
- package/dist/account-level-UJOZDVXY.js +608 -0
- package/dist/account-level-UJOZDVXY.js.map +1 -0
- package/dist/account-writes-AE5IJGGW.js +66 -0
- package/dist/accounts-2ARS6XP2.js +77 -0
- package/dist/accounts-AQFW4ZUM.js +611 -0
- package/dist/accounts-K4INATCW.js +75 -0
- package/dist/actions-QMUHOAXG.js +55 -0
- package/dist/activecampaign-J3QN5FMG.js +935 -0
- package/dist/activities-T253KK4Q.js +74 -0
- package/dist/ad-group-writes-VRSBI2Z2.js +170 -0
- package/dist/ad-groups-IEBVEAMS.js +68 -0
- package/dist/ad-writes-ALV4KFPZ.js +174 -0
- package/dist/add-VDUA6OWM.js +104 -0
- package/dist/add-XHOKCSW5.js +302 -0
- package/dist/ads-CQZHD7FC.js +77 -0
- package/dist/ads-HGDPNIT6.js +40 -0
- package/dist/ads-ZEY72UBN.js +114 -0
- package/dist/ads-ZEY72UBN.js.map +1 -0
- package/dist/adsets-5H3MOT3D.js +177 -0
- package/dist/adsets-5H3MOT3D.js.map +1 -0
- package/dist/advertisers-UDSEFMP7.js +120 -0
- package/dist/analytics-TBETZOPJ.js +433 -0
- package/dist/analytics-VH74LMMC.js +1976 -0
- package/dist/asset-writes-L5TMKIZC.js +47 -0
- package/dist/assign-6IE2ASFC.js +77 -0
- package/dist/audience-size-CSBWDFEP.js +73 -0
- package/dist/audience-writes-X52VG35Y.js +324 -0
- package/dist/audience-writes-X52VG35Y.js.map +1 -0
- package/dist/audiences-AAZH56WD.js +268 -0
- package/dist/audiences-X3RLGOVM.js +84 -0
- package/dist/audiences-X3RLGOVM.js.map +1 -0
- package/dist/audit-AEENRVGD.js +151 -0
- package/dist/autocomplete-AAGTJHVL.js +111 -0
- package/dist/avatars-VEATUUKU.js +38 -0
- package/dist/bid-pricing-SZTGCZTV.js +100 -0
- package/dist/brand-MXGETE4R.js +22 -0
- package/dist/brief-3GHSHOGM.js +538 -0
- package/dist/businesses-H3HIDQX6.js +53 -0
- package/dist/campaign-groups-WRI56M5X.js +95 -0
- package/dist/campaign-writes-PYGKSCPS.js +165 -0
- package/dist/campaign-writes-PYGKSCPS.js.map +1 -0
- package/dist/campaign-writes-U5PUVSMT.js +170 -0
- package/dist/campaigns-4QWC2JE7.js +109 -0
- package/dist/campaigns-AV6G3AUU.js +127 -0
- package/dist/campaigns-AV6G3AUU.js.map +1 -0
- package/dist/campaigns-JEIKY2M4.js +76 -0
- package/dist/campaigns-Q4HN7HBY.js +107 -0
- package/dist/canvas-VJ3XKCAC.js +46 -0
- package/dist/capabilities-SNGGAOV3.js +144 -0
- package/dist/catalog-S32MX453.js +65 -0
- package/dist/catalogs-OCVXZLIF.js +128 -0
- package/dist/catalogs-RXJTZTVX.js +778 -0
- package/dist/catalogs-RXJTZTVX.js.map +1 -0
- package/dist/chatgpt-QVF2FD3E.js +47 -0
- package/dist/chats-2DRTB7GK.js +276 -0
- package/dist/chats-2DRTB7GK.js.map +1 -0
- package/dist/check-Z6UMIQKD.js +104 -0
- package/dist/chunk-2C7AHPM4.js +191 -0
- package/dist/chunk-2C7AHPM4.js.map +1 -0
- package/dist/chunk-2WZI36D3.js +317 -0
- package/dist/chunk-3AMLOCXY.js +392 -0
- package/dist/chunk-3CVAEQMZ.js +156 -0
- package/dist/chunk-3WAYZQNV.js +61 -0
- package/dist/chunk-46GWHUKN.js +225 -0
- package/dist/chunk-4O6T76A3.js +191 -0
- package/dist/chunk-5C35OW7L.js +205 -0
- package/dist/chunk-5C35OW7L.js.map +1 -0
- package/dist/chunk-5GQCN2QZ.js +391 -0
- package/dist/chunk-5GQCN2QZ.js.map +1 -0
- package/dist/chunk-5MCVK4A3.js +903 -0
- package/dist/chunk-5ZLN23V5.js +97 -0
- package/dist/chunk-65Y3RCWP.js +68 -0
- package/dist/chunk-65Y3RCWP.js.map +1 -0
- package/dist/chunk-77ULVP62.js +547 -0
- package/dist/chunk-A4MVVPJ2.js +4204 -0
- package/dist/chunk-A4MVVPJ2.js.map +1 -0
- package/dist/chunk-AQM4JH62.js +274 -0
- package/dist/chunk-AQM4JH62.js.map +1 -0
- package/dist/chunk-AW2GKIGS.js +433 -0
- package/dist/chunk-BRLY6XD6.js +249 -0
- package/dist/chunk-C7NWUCLQ.js +64 -0
- package/dist/chunk-CP4P6YKM.js +287 -0
- package/dist/chunk-CP4P6YKM.js.map +1 -0
- package/dist/chunk-D4HKJBEW.js +23 -0
- package/dist/chunk-DAO63OOP.js +6352 -0
- package/dist/chunk-DAO63OOP.js.map +1 -0
- package/dist/chunk-DCBZ5CHZ.js +139 -0
- package/dist/chunk-G6XKD7QE.js +77 -0
- package/dist/chunk-GBFL4TD2.js +172 -0
- package/dist/chunk-H5SCKWFT.js +224 -0
- package/dist/chunk-HLVRHBKL.js +1078 -0
- package/dist/chunk-HLVRHBKL.js.map +1 -0
- package/dist/chunk-HXPK6KAL.js +363 -0
- package/dist/chunk-I7GOSMWT.js +197 -0
- package/dist/chunk-IBY44U2M.js +1079 -0
- package/dist/chunk-ITNHIZKK.js +275 -0
- package/dist/chunk-J33P2JNS.js +455 -0
- package/dist/chunk-JH2L5CQD.js +206 -0
- package/dist/chunk-JQH5VG6F.js +5368 -0
- package/dist/chunk-JVH5A3XC.js +8914 -0
- package/dist/chunk-KTOYQP6D.js +169 -0
- package/dist/chunk-LO3IF5PS.js +399 -0
- package/dist/chunk-LRRFGOW3.js +604 -0
- package/dist/chunk-LTPTJWZC.js +942 -0
- package/dist/chunk-MRQHJW5U.js +159 -0
- package/dist/chunk-NHYI7ORL.js +346 -0
- package/dist/chunk-NLI7C3K2.js +51 -0
- package/dist/chunk-NSEMXBUB.js +91 -0
- package/dist/chunk-OM2BRYXJ.js +3868 -0
- package/dist/chunk-OY4SKCIU.js +103 -0
- package/dist/chunk-OYAJNTRO.js +494 -0
- package/dist/chunk-PL7J3DPQ.js +831 -0
- package/dist/chunk-PUSBUMYM.js +89 -0
- package/dist/chunk-QTOZ32SU.js +163 -0
- package/dist/chunk-QTOZ32SU.js.map +1 -0
- package/dist/chunk-RRADFRPI.js +297 -0
- package/dist/chunk-SGEPZB3D.js +344 -0
- package/dist/chunk-SVAB6KV5.js +219 -0
- package/dist/chunk-SVAB6KV5.js.map +1 -0
- package/dist/chunk-TFTZDWCX.js +66 -0
- package/dist/chunk-TG4NCHFS.js +142 -0
- package/dist/chunk-TTHM66TA.js +207 -0
- package/dist/chunk-VL2GNXZY.js +19 -0
- package/dist/chunk-VQPZDM6N.js +160 -0
- package/dist/chunk-XCKINS7K.js +57 -0
- package/dist/chunk-YLYXSJ6O.js +8939 -0
- package/dist/chunk-ZAPO6UWS.js +592 -0
- package/dist/chunk-ZEPUDYPL.js +122 -0
- package/dist/chunk-ZJSGGJ5R.js +167 -0
- package/dist/claim-J2LYNHZK.js +197 -0
- package/dist/cli.js +34 -34
- package/dist/companies-VYY22B6T.js +195 -0
- package/dist/complete-5I32XM7P.js +81 -0
- package/dist/connect-EUFFQQ7O.js +42 -0
- package/dist/conversation-D6KZHGPP.js +93 -0
- package/dist/conversion-writes-ECZBVY7D.js +120 -0
- package/dist/conversions-5QCSCRLI.js +76 -0
- package/dist/conversions-Y3X6ZTTF.js +135 -0
- package/dist/copy-writes-D2RTHAL6.js +167 -0
- package/dist/copy-writes-D2RTHAL6.js.map +1 -0
- package/dist/create-2JCRTQJL.js +59 -0
- package/dist/create-LMSQPHPB.js +235 -0
- package/dist/create-MBLNB5RY.js +132 -0
- package/dist/create-VR7RXKL7.js +207 -0
- package/dist/creatives-5C42BDMW.js +182 -0
- package/dist/creatives-HYPSTANO.js +58 -0
- package/dist/creatives-MZ6ICNSY.js +88 -0
- package/dist/creatives-MZ6ICNSY.js.map +1 -0
- package/dist/credentials-4H4AUYJN.js +287 -0
- package/dist/critique-UOJZWDG2.js +1458 -0
- package/dist/critique-WCWMQQVV.js +227 -0
- package/dist/crm-B7OTHMBP.js +318 -0
- package/dist/crm-DZRWKJ6V.js +224 -0
- package/dist/custom-conversions-FIP6ZS34.js +127 -0
- package/dist/custom-conversions-FIP6ZS34.js.map +1 -0
- package/dist/customers-AOFJJCGD.js +56 -0
- package/dist/delete-DEG5KOBY.js +64 -0
- package/dist/delete-EFIODCXG.js +54 -0
- package/dist/delete-PQIMW2LK.js +66 -0
- package/dist/demographics-F26DIOCM.js +138 -0
- package/dist/discard-2EJY6UGP.js +66 -0
- package/dist/domain-XLJABLWB.js +98 -0
- package/dist/draft-2YND6T4U.js +217 -0
- package/dist/draft-34CGWUVA.js +281 -0
- package/dist/draft-L45PGCYZ.js +237 -0
- package/dist/draft-L45PGCYZ.js.map +1 -0
- package/dist/draft-TCPK6XYW.js +332 -0
- package/dist/draft-TCPK6XYW.js.map +1 -0
- package/dist/draft-WRVEANL5.js +306 -0
- package/dist/engine/index.js +4 -4
- package/dist/experiment-7N4QFRWV.js +1397 -0
- package/dist/facets-OPTNDPW2.js +114 -0
- package/dist/feedback-43BPXNBI.js +106 -0
- package/dist/feedback-record-35ZSDL6Z.js +260 -0
- package/dist/fetch-O46XBA7S.js +176 -0
- package/dist/find-FSQAEGGF.js +134 -0
- package/dist/fit-CWJ5QQ4R.js +62 -0
- package/dist/flows-CVORIQ4B.js +247 -0
- package/dist/fonts-6TPYR6IW.js +36 -0
- package/dist/forecast-2VLA6NJA.js +118 -0
- package/dist/funnel-XLKDLXMG.js +394 -0
- package/dist/ga4-LPDIBNYP.js +55 -0
- package/dist/get-O56GGN3V.js +56 -0
- package/dist/get-WFQ4XEAW.js +79 -0
- package/dist/google-5ESVO76E.js +136 -0
- package/dist/google-ads-DZMOTUY5.js +195 -0
- package/dist/gsc-FIZTQX3N.js +30 -0
- package/dist/history-43BBQZOB.js +133 -0
- package/dist/history-QKDYBSYM.js +67 -0
- package/dist/hubspot-S44MPK3G.js +779 -0
- package/dist/icon-CSVAZ7NE.js +137 -0
- package/dist/ideas-SLP5WXFF.js +40 -0
- package/dist/images-TWZOROCT.js +92 -0
- package/dist/ingest-5GCZ5ZBV.js +23 -0
- package/dist/ingest-P54J4W3V.js +107 -0
- package/dist/insights-YWVJMATY.js +424 -0
- package/dist/insights-YWVJMATY.js.map +1 -0
- package/dist/inspect-S4COGUBC.js +189 -0
- package/dist/inspiration-IX5N724J.js +53 -0
- package/dist/instant-experiences-NQ2GWIWL.js +257 -0
- package/dist/instant-experiences-NQ2GWIWL.js.map +1 -0
- package/dist/keyword-metrics-26CCKFZK.js +197 -0
- package/dist/keywords-for-site-JWWECF63.js +128 -0
- package/dist/landing-VFDRADZY.js +28 -0
- package/dist/leads-DTKKYSKH.js +90 -0
- package/dist/leads-THI37ZMD.js +537 -0
- package/dist/leads-THI37ZMD.js.map +1 -0
- package/dist/learn-GQ75IPRK.js +204 -0
- package/dist/line-item-writes-DVVHVR3Y.js +208 -0
- package/dist/line-items-EOZMK7A5.js +103 -0
- package/dist/link-R5NGCQ5H.js +64 -0
- package/dist/linkedin-DHZO3IJX.js +1057 -0
- package/dist/list-57QBEGLM.js +303 -0
- package/dist/list-Q44BBHDI.js +64 -0
- package/dist/list-W6G2NTG5.js +151 -0
- package/dist/locations-HM56X2MK.js +67 -0
- package/dist/locations-HM56X2MK.js.map +1 -0
- package/dist/log-B6X5EPKA.js +92 -0
- package/dist/logo-VHXH4J6A.js +18 -0
- package/dist/make-OIFLF3QS.js +1353 -0
- package/dist/map-PIOZT2MQ.js +433 -0
- package/dist/mcp-GFKHLWDB.js +714 -0
- package/dist/media-H6B7VDON.js +18 -0
- package/dist/media-H6B7VDON.js.map +1 -0
- package/dist/media-sources-VMMMW5UM.js +32 -0
- package/dist/members-W2QBMNIW.js +44 -0
- package/dist/meta-YHDTGJQ6.js +122 -0
- package/dist/meta-YHDTGJQ6.js.map +1 -0
- package/dist/normalize-N6XC3SLC.js +141 -0
- package/dist/options-XYJY2OEQ.js +122 -0
- package/dist/organization-BVTXCZIV.js +942 -0
- package/dist/organization-BVTXCZIV.js.map +1 -0
- package/dist/page-photos-CXRG4AXV.js +115 -0
- package/dist/page-photos-CXRG4AXV.js.map +1 -0
- package/dist/pages-PTWRXAZT.js +66 -0
- package/dist/performance-7NEZTOJ5.js +24 -0
- package/dist/pixels-MYT3TCHZ.js +60 -0
- package/dist/pixels-ZZCQUS3J.js +108 -0
- package/dist/preview-XOXAAPMQ.js +215 -0
- package/dist/preview-XOXAAPMQ.js.map +1 -0
- package/dist/promoted-tweet-writes-X2F7R2AE.js +180 -0
- package/dist/promoted-tweets-XCSD6VKP.js +119 -0
- package/dist/publish-OBY6E43R.js +341 -0
- package/dist/reddit-WJ6KHYBC.js +26 -0
- package/dist/refresh-G5BQ2LWU.js +94 -0
- package/dist/release-PBZO35KY.js +60 -0
- package/dist/remove-VJ2MEUPM.js +50 -0
- package/dist/reopen-W3LYOHSR.js +63 -0
- package/dist/rerun-4GDNBFNM.js +90 -0
- package/dist/research-4YTFPGH7.js +262 -0
- package/dist/research-LOQRIBO6.js +62 -0
- package/dist/reset-55CCQGXB.js +54 -0
- package/dist/reset-AVTQEJPZ.js +54 -0
- package/dist/resolve-E6FNMFE3.js +121 -0
- package/dist/retry-HBJ7MKVI.js +60 -0
- package/dist/retry-QBRYM6MG.js +62 -0
- package/dist/rule-writes-6ZCAJDYZ.js +522 -0
- package/dist/rule-writes-6ZCAJDYZ.js.map +1 -0
- package/dist/rules-BMYOY2BM.js +216 -0
- package/dist/rules-BMYOY2BM.js.map +1 -0
- package/dist/rules-XNDBGOIS.js +96 -0
- package/dist/rules-add-UM3ZKSVD.js +462 -0
- package/dist/run-D4YHZ4Z4.js +66 -0
- package/dist/run-ZCJ7NP63.js +65 -0
- package/dist/scaffold-ad-VQZAP32M.js +1511 -0
- package/dist/scaffold-static-ad-LEU4M44N.js +1005 -0
- package/dist/scaffold-video-PSWSYRSC.js +883 -0
- package/dist/schedule-AAH7HYFK.js +61 -0
- package/dist/scheduled-agents-HDABMHZI.js +50 -0
- package/dist/schema-OH5OWMVQ.js +132 -0
- package/dist/search-BSDPVSGA.js +174 -0
- package/dist/select-EI4QF4YZ.js +101 -0
- package/dist/set-prompt-RKDAGUWG.js +193 -0
- package/dist/setup-links-CNNJA7AB.js +141 -0
- package/dist/shared-3IBNDEFL.js +31 -0
- package/dist/site-NV4U7PIF.js +177 -0
- package/dist/sources-ATONL7W5.js +454 -0
- package/dist/sources-C3TGHKLQ.js +30 -0
- package/dist/stale-6QPXL6BZ.js +71 -0
- package/dist/stats-ZAGJH4AD.js +34 -0
- package/dist/status-BML3F4MZ.js +62 -0
- package/dist/stock-6SHHLSKG.js +179 -0
- package/dist/studies-4NIV4D5Y.js +249 -0
- package/dist/studies-4NIV4D5Y.js.map +1 -0
- package/dist/studio-ZLCGXFAN.js +49 -0
- package/dist/study-writes-L2AA2PGL.js +467 -0
- package/dist/study-writes-L2AA2PGL.js.map +1 -0
- package/dist/sync-DZAOUQPE.js +54 -0
- package/dist/sync-definition-RFEL65JE.js +64 -0
- package/dist/tag-manager-3CJ66GKJ.js +43 -0
- package/dist/tags-2KSXCJRZ.js +20 -0
- package/dist/tags-662KZJLV.js +26 -0
- package/dist/tags-6QBVW25V.js +20 -0
- package/dist/tags-LQCEJGIL.js +20 -0
- package/dist/tags-RIVD54ZG.js +224 -0
- package/dist/targeting-LNDQV4EK.js +759 -0
- package/dist/targeting-LNDQV4EK.js.map +1 -0
- package/dist/targeting-criteria-XNLYPIL2.js +113 -0
- package/dist/targets-OYIVS5KJ.js +103 -0
- package/dist/testimonials-WT43CF7V.js +32 -0
- package/dist/top-companies-6QQMOS2Y.js +108 -0
- package/dist/translate-7QN7JFGU.js +604 -0
- package/dist/triggers-LVQY3QJ2.js +142 -0
- package/dist/unlink-5ASZTCS2.js +67 -0
- package/dist/unstage-LNZTEATR.js +85 -0
- package/dist/update-7BIR4GYO.js +152 -0
- package/dist/update-BRLM5DB3.js +98 -0
- package/dist/update-DRZAAJQ2.js +63 -0
- package/dist/update-NOWC3ICD.js +188 -0
- package/dist/upload-457Q4ANZ.js +126 -0
- package/dist/url-params-KM4NJGYC.js +98 -0
- package/dist/validate-COLEPJBA.js +117 -0
- package/dist/videos-5IDZTEWC.js +39 -0
- package/dist/viewer-check-433AZPBC.js +80 -0
- package/dist/viewer-check-433AZPBC.js.map +1 -0
- package/dist/web-FZYOCCYN.js +140 -0
- package/dist/winning-ads-I4DMP7RU.js +84 -0
- package/dist/write-commands-FYB6QG7K.js +1024 -0
- package/dist/write-commands-PEJBTME6.js +1165 -0
- package/dist/write-commands-PEJBTME6.js.map +1 -0
- package/dist/x-OMN5DDLM.js +47 -0
- package/package.json +1 -1
- package/dist/account-7LUQWY6Q.js +0 -49
- package/dist/account-7LUQWY6Q.js.map +0 -1
- package/dist/account-KNRDOUJP.js +0 -79
- package/dist/account-Z65CPOWE.js +0 -80
- package/dist/account-writes-4N2MA2ZR.js +0 -66
- package/dist/accounts-RTN5ZGTU.js +0 -611
- package/dist/accounts-RW6KXBOQ.js +0 -77
- package/dist/accounts-UA2ZWRN4.js +0 -75
- package/dist/actions-HNLISA7T.js +0 -55
- package/dist/activecampaign-I5CILZPU.js +0 -935
- package/dist/activities-IQPJPP4B.js +0 -74
- package/dist/ad-group-writes-EUTMPBMK.js +0 -170
- package/dist/ad-groups-OVPAI5RM.js +0 -68
- package/dist/ad-writes-DACTYFEO.js +0 -174
- package/dist/add-6WKPFMLG.js +0 -302
- package/dist/add-XF5COUAS.js +0 -104
- package/dist/ads-G6AS5L7G.js +0 -40
- package/dist/ads-HXX2IAFF.js +0 -113
- package/dist/ads-HXX2IAFF.js.map +0 -1
- package/dist/ads-L65JIKCD.js +0 -77
- package/dist/adsets-LPN6WFGF.js +0 -176
- package/dist/adsets-LPN6WFGF.js.map +0 -1
- package/dist/advertisers-6NUM2Q3A.js +0 -120
- package/dist/analytics-QKP3A5F3.js +0 -1976
- package/dist/analytics-VLHE5A2M.js +0 -433
- package/dist/assign-6HI6TNLP.js +0 -77
- package/dist/audience-size-25LP2OBF.js +0 -73
- package/dist/audiences-RPLVMO4H.js +0 -268
- package/dist/audiences-XEZHACKH.js +0 -78
- package/dist/audiences-XEZHACKH.js.map +0 -1
- package/dist/audit-YY6X2MPA.js +0 -151
- package/dist/autocomplete-SAWJK4NF.js +0 -111
- package/dist/avatars-MXTI74VC.js +0 -38
- package/dist/bid-pricing-HZ74SLEB.js +0 -100
- package/dist/brand-T3OACVQX.js +0 -22
- package/dist/brief-BN4UGUXF.js +0 -538
- package/dist/businesses-PRRYPR7H.js +0 -53
- package/dist/campaign-groups-YJK767AP.js +0 -95
- package/dist/campaign-writes-BAFB5E7A.js +0 -165
- package/dist/campaign-writes-BAFB5E7A.js.map +0 -1
- package/dist/campaign-writes-U5LTDTYK.js +0 -170
- package/dist/campaigns-4SOLY7OR.js +0 -110
- package/dist/campaigns-4SOLY7OR.js.map +0 -1
- package/dist/campaigns-GALDR5KK.js +0 -109
- package/dist/campaigns-NR6TNQFN.js +0 -107
- package/dist/campaigns-TFEQTSO3.js +0 -76
- package/dist/canvas-GJAQAVS6.js +0 -46
- package/dist/capabilities-2KT6TCGZ.js +0 -144
- package/dist/catalog-USZL4SGX.js +0 -65
- package/dist/catalogs-A7XMEEEP.js +0 -128
- package/dist/chatgpt-4PEWDJKP.js +0 -47
- package/dist/chats-INN2OHSH.js +0 -262
- package/dist/chats-INN2OHSH.js.map +0 -1
- package/dist/check-MMJGFFZS.js +0 -104
- package/dist/chunk-2LI6746F.js +0 -103
- package/dist/chunk-2PWNIEW4.js +0 -197
- package/dist/chunk-2XRMPSEV.js +0 -142
- package/dist/chunk-3TZVZXM6.js +0 -224
- package/dist/chunk-3UXMQ3K2.js +0 -274
- package/dist/chunk-3UXMQ3K2.js.map +0 -1
- package/dist/chunk-5HJRZFMW.js +0 -207
- package/dist/chunk-62JQQUAU.js +0 -5368
- package/dist/chunk-66QHX566.js +0 -6306
- package/dist/chunk-66QHX566.js.map +0 -1
- package/dist/chunk-6JWEGFM5.js +0 -174
- package/dist/chunk-6JWEGFM5.js.map +0 -1
- package/dist/chunk-6WCAV27H.js +0 -494
- package/dist/chunk-6WXV5GTA.js +0 -8914
- package/dist/chunk-7RBJ2Z7Z.js +0 -172
- package/dist/chunk-7RBJ2Z7Z.js.map +0 -1
- package/dist/chunk-AVNSH2JE.js +0 -8939
- package/dist/chunk-BITS62MF.js +0 -77
- package/dist/chunk-BL2MX6CR.js +0 -249
- package/dist/chunk-BOPC3D6I.js +0 -604
- package/dist/chunk-C6EYCD5J.js +0 -942
- package/dist/chunk-CSZFZKVX.js +0 -97
- package/dist/chunk-D5CUAOQX.js +0 -297
- package/dist/chunk-D5UXWKLQ.js +0 -903
- package/dist/chunk-FA4YZFRV.js +0 -392
- package/dist/chunk-FUKDI2UK.js +0 -122
- package/dist/chunk-G4STCTY3.js +0 -399
- package/dist/chunk-GOJXKIFQ.js +0 -1605
- package/dist/chunk-GOJXKIFQ.js.map +0 -1
- package/dist/chunk-H5HDZ7IC.js +0 -139
- package/dist/chunk-HSPMBLKE.js +0 -363
- package/dist/chunk-IJ22WP3G.js +0 -275
- package/dist/chunk-ILSKYRDR.js +0 -169
- package/dist/chunk-JQU2LUZG.js +0 -57
- package/dist/chunk-JWSEPW7F.js +0 -225
- package/dist/chunk-KIGGMKAE.js +0 -66
- package/dist/chunk-KIGGMKAE.js.map +0 -1
- package/dist/chunk-KPYDTIAI.js +0 -317
- package/dist/chunk-LBO2YAZY.js +0 -3868
- package/dist/chunk-LOMH4TTC.js +0 -1079
- package/dist/chunk-LPXSM2DI.js +0 -66
- package/dist/chunk-MVB32GPI.js +0 -592
- package/dist/chunk-MXH35PJ5.js +0 -51
- package/dist/chunk-NEIUVSDK.js +0 -206
- package/dist/chunk-NPMAATZG.js +0 -64
- package/dist/chunk-NXZCCGES.js +0 -159
- package/dist/chunk-OP7DNHD2.js +0 -137
- package/dist/chunk-OP7DNHD2.js.map +0 -1
- package/dist/chunk-OWA7ZLC4.js +0 -547
- package/dist/chunk-P3W6SRSQ.js +0 -455
- package/dist/chunk-PA4W7BCQ.js +0 -23
- package/dist/chunk-PTGYM4J6.js +0 -89
- package/dist/chunk-QE3JEJXF.js +0 -831
- package/dist/chunk-QNLJ3GNZ.js +0 -433
- package/dist/chunk-R3EKM2P2.js +0 -191
- package/dist/chunk-SISA4HQR.js +0 -61
- package/dist/chunk-TP7HKSBX.js +0 -172
- package/dist/chunk-TPANP5A2.js +0 -91
- package/dist/chunk-TRPJJMCS.js +0 -346
- package/dist/chunk-TZEVD4Q6.js +0 -160
- package/dist/chunk-UWXDNVS5.js +0 -167
- package/dist/chunk-VD73V44J.js +0 -344
- package/dist/chunk-X7F4Z6UM.js +0 -156
- package/dist/chunk-ZL23HA4N.js +0 -19
- package/dist/claim-SLGYOOWD.js +0 -197
- package/dist/companies-IVMH6YII.js +0 -195
- package/dist/complete-45L2FI2X.js +0 -81
- package/dist/connect-WBGCBBFJ.js +0 -42
- package/dist/conversation-RIOL3OJ7.js +0 -93
- package/dist/conversion-writes-JU7Q2MUO.js +0 -120
- package/dist/conversions-3ISBR3TS.js +0 -76
- package/dist/conversions-TKIXNSYR.js +0 -135
- package/dist/create-7JY2PTIZ.js +0 -132
- package/dist/create-ACLCRXQP.js +0 -59
- package/dist/create-KYBMFD32.js +0 -207
- package/dist/create-VAPJ52GJ.js +0 -235
- package/dist/creatives-S5QUWUL6.js +0 -58
- package/dist/creatives-VQO2TKE3.js +0 -182
- package/dist/creatives-YJ3CXZQC.js +0 -87
- package/dist/creatives-YJ3CXZQC.js.map +0 -1
- package/dist/credentials-YTQ6BHWV.js +0 -287
- package/dist/critique-5LCG5TYF.js +0 -227
- package/dist/critique-BHYJYZDV.js +0 -1458
- package/dist/crm-IKTWHWEB.js +0 -318
- package/dist/crm-N7K57LZJ.js +0 -224
- package/dist/custom-conversions-YRYE65PU.js +0 -125
- package/dist/custom-conversions-YRYE65PU.js.map +0 -1
- package/dist/customers-NLU7NYDC.js +0 -56
- package/dist/delete-26J3X3ZH.js +0 -64
- package/dist/delete-A4F5Z54J.js +0 -66
- package/dist/delete-EVXOFT2H.js +0 -54
- package/dist/demographics-VZKFMM4X.js +0 -138
- package/dist/discard-ULRVUJDV.js +0 -66
- package/dist/domain-L4WCCX7R.js +0 -98
- package/dist/draft-57OQKHZI.js +0 -306
- package/dist/draft-EWDOIXSH.js +0 -233
- package/dist/draft-EWDOIXSH.js.map +0 -1
- package/dist/draft-GPN3HOAG.js +0 -328
- package/dist/draft-GPN3HOAG.js.map +0 -1
- package/dist/draft-O4S5RKWK.js +0 -217
- package/dist/draft-Y2QJE2NM.js +0 -281
- package/dist/experiment-G3FQVAJU.js +0 -1397
- package/dist/facets-EHQKGGJ2.js +0 -114
- package/dist/feedback-CAOZPGTT.js +0 -106
- package/dist/feedback-record-EXV5H6OS.js +0 -260
- package/dist/fetch-ETKT2RBC.js +0 -176
- package/dist/find-EVY4XEIQ.js +0 -134
- package/dist/fit-UJQ47C4A.js +0 -62
- package/dist/flows-Z7355RMD.js +0 -247
- package/dist/fonts-7VWBQPJF.js +0 -36
- package/dist/forecast-OI7YWZ6F.js +0 -118
- package/dist/funnel-2B3JXJPX.js +0 -394
- package/dist/ga4-2BL5YAYN.js +0 -55
- package/dist/get-2RSN4N3J.js +0 -56
- package/dist/get-6N7QJMIP.js +0 -79
- package/dist/google-7STODZQR.js +0 -136
- package/dist/google-ads-G7REKD4A.js +0 -195
- package/dist/gsc-UU3T2C6B.js +0 -30
- package/dist/history-IQ33J5PB.js +0 -67
- package/dist/history-YMK2JNZU.js +0 -133
- package/dist/hubspot-BUFS7S33.js +0 -779
- package/dist/icon-GB7UH5RF.js +0 -137
- package/dist/ideas-F6CIGTVU.js +0 -40
- package/dist/images-WCKTD6Z2.js +0 -92
- package/dist/ingest-RQUJGS7K.js +0 -107
- package/dist/ingest-XLTRLCDV.js +0 -23
- package/dist/insights-4HT2NAYP.js +0 -423
- package/dist/insights-4HT2NAYP.js.map +0 -1
- package/dist/inspect-KFVAMD4N.js +0 -189
- package/dist/inspiration-XQYHBJY2.js +0 -53
- package/dist/keyword-metrics-WYF3QMCW.js +0 -197
- package/dist/keywords-for-site-G5L5EP3T.js +0 -128
- package/dist/landing-WUILAWDS.js +0 -28
- package/dist/leads-2XOSAYP4.js +0 -293
- package/dist/leads-2XOSAYP4.js.map +0 -1
- package/dist/leads-4SJ4NJOI.js +0 -90
- package/dist/learn-CC6Q5IK2.js +0 -204
- package/dist/line-item-writes-YXKYR25W.js +0 -208
- package/dist/line-items-CKUD2UU4.js +0 -103
- package/dist/link-VBYFI7AM.js +0 -64
- package/dist/linkedin-XKVPSCLV.js +0 -1057
- package/dist/list-6ZNZGRRK.js +0 -151
- package/dist/list-ENYDGT3F.js +0 -64
- package/dist/list-VSUF2IWT.js +0 -303
- package/dist/locations-YA7NZY44.js +0 -67
- package/dist/locations-YA7NZY44.js.map +0 -1
- package/dist/log-AACKGBDW.js +0 -92
- package/dist/logo-YSNUUT33.js +0 -18
- package/dist/make-ED7HBLH3.js +0 -1353
- package/dist/map-63CQHWPI.js +0 -433
- package/dist/mcp-RKAXC6IP.js +0 -714
- package/dist/media-ES2UBGYW.js +0 -15
- package/dist/media-ES2UBGYW.js.map +0 -1
- package/dist/media-sources-PEHUMH7C.js +0 -32
- package/dist/members-SELIA674.js +0 -44
- package/dist/meta-AOIPEDV5.js +0 -69
- package/dist/meta-AOIPEDV5.js.map +0 -1
- package/dist/normalize-VAZPTBDX.js +0 -141
- package/dist/options-6FCNFWUF.js +0 -122
- package/dist/organization-SHREKDST.js +0 -881
- package/dist/organization-SHREKDST.js.map +0 -1
- package/dist/pages-FTI44OSH.js +0 -66
- package/dist/performance-K7E5KAZW.js +0 -24
- package/dist/pixels-6IUB3Y3H.js +0 -60
- package/dist/pixels-MBKR4XPX.js +0 -108
- package/dist/preview-V4YBD45S.js +0 -169
- package/dist/preview-V4YBD45S.js.map +0 -1
- package/dist/promoted-tweet-writes-PKEO6WUK.js +0 -180
- package/dist/promoted-tweets-7MXVZRBI.js +0 -119
- package/dist/publish-MPMGRV72.js +0 -341
- package/dist/reddit-XIHRI3CN.js +0 -26
- package/dist/refresh-A27N75NH.js +0 -94
- package/dist/release-UKRB5IUN.js +0 -60
- package/dist/remove-AFNFVPZY.js +0 -50
- package/dist/reopen-M5HE6J3G.js +0 -63
- package/dist/rerun-A2XHGFZS.js +0 -90
- package/dist/research-BLDY5UWH.js +0 -62
- package/dist/research-U7RQXMYH.js +0 -262
- package/dist/reset-4CCWB2RT.js +0 -54
- package/dist/reset-J3KCWFMZ.js +0 -54
- package/dist/resolve-HEK27ANI.js +0 -121
- package/dist/retry-HPZIUG2S.js +0 -62
- package/dist/retry-VVI6N6UR.js +0 -60
- package/dist/rules-SK5DFFPY.js +0 -96
- package/dist/rules-add-YQNYSME7.js +0 -462
- package/dist/run-KBN5K7LE.js +0 -65
- package/dist/run-M7ZDE6IA.js +0 -66
- package/dist/scaffold-ad-6BN5LWQH.js +0 -1511
- package/dist/scaffold-static-ad-VVZRAWBR.js +0 -1005
- package/dist/scaffold-video-LFIYI4GP.js +0 -883
- package/dist/schedule-QMOKWTJ3.js +0 -61
- package/dist/scheduled-agents-FCQHQ6KR.js +0 -50
- package/dist/schema-THFLCMBN.js +0 -132
- package/dist/search-XIUYSWO6.js +0 -174
- package/dist/select-QBU6ED4K.js +0 -101
- package/dist/set-prompt-TL64CRBQ.js +0 -193
- package/dist/setup-links-QVI6NAOK.js +0 -141
- package/dist/shared-NDRFKAH7.js +0 -31
- package/dist/site-PZPJY33N.js +0 -177
- package/dist/sources-ER7ANNG3.js +0 -454
- package/dist/sources-RMNFV4CA.js +0 -30
- package/dist/stale-ITFCPOER.js +0 -71
- package/dist/stats-RCLQE4HJ.js +0 -34
- package/dist/status-ABMJBCPJ.js +0 -62
- package/dist/stock-ECRBD7RP.js +0 -179
- package/dist/studio-MARZ22J2.js +0 -49
- package/dist/sync-QDD3MRJ6.js +0 -54
- package/dist/sync-definition-C6ROLKJ4.js +0 -64
- package/dist/tag-manager-G3LBQZUL.js +0 -43
- package/dist/tags-5JYOEYIT.js +0 -20
- package/dist/tags-B473RWAA.js +0 -224
- package/dist/tags-EWHPUM2V.js +0 -20
- package/dist/tags-KBCX6BDU.js +0 -26
- package/dist/tags-PEWN6GNZ.js +0 -20
- package/dist/targeting-criteria-EU65WUUF.js +0 -113
- package/dist/targets-KVXS5QKM.js +0 -103
- package/dist/testimonials-YMMA5YWL.js +0 -32
- package/dist/top-companies-OOX3DITI.js +0 -108
- package/dist/translate-OXVIMYHE.js +0 -604
- package/dist/triggers-OX2GKG4Y.js +0 -142
- package/dist/unlink-3USEPJSA.js +0 -67
- package/dist/unstage-VSCNPTAC.js +0 -85
- package/dist/update-6JKTH65B.js +0 -152
- package/dist/update-FG4ELXYJ.js +0 -98
- package/dist/update-GZFKHA3A.js +0 -188
- package/dist/update-HZHG67N6.js +0 -63
- package/dist/upload-BKCQ6FRW.js +0 -126
- package/dist/url-params-UN4DRN2H.js +0 -98
- package/dist/validate-ZS2M5Q3V.js +0 -117
- package/dist/videos-I6YXFBFT.js +0 -39
- package/dist/viewer-check-7ZG7KHEN.js +0 -80
- package/dist/web-UGU7YMII.js +0 -140
- package/dist/winning-ads-ABN5OULS.js +0 -84
- package/dist/write-commands-6VR2UD3T.js +0 -1024
- package/dist/write-commands-HCQI4Y27.js +0 -737
- package/dist/write-commands-HCQI4Y27.js.map +0 -1
- package/dist/x-WK2VQDPF.js +0 -47
- /package/dist/{account-Z65CPOWE.js.map → account-3H6BZO5H.js.map} +0 -0
- /package/dist/{account-KNRDOUJP.js.map → account-VGSYM7LY.js.map} +0 -0
- /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-AE5IJGGW.js.map} +0 -0
- /package/dist/{accounts-RW6KXBOQ.js.map → accounts-2ARS6XP2.js.map} +0 -0
- /package/dist/{accounts-RTN5ZGTU.js.map → accounts-AQFW4ZUM.js.map} +0 -0
- /package/dist/{accounts-UA2ZWRN4.js.map → accounts-K4INATCW.js.map} +0 -0
- /package/dist/{actions-HNLISA7T.js.map → actions-QMUHOAXG.js.map} +0 -0
- /package/dist/{activecampaign-I5CILZPU.js.map → activecampaign-J3QN5FMG.js.map} +0 -0
- /package/dist/{activities-IQPJPP4B.js.map → activities-T253KK4Q.js.map} +0 -0
- /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-VRSBI2Z2.js.map} +0 -0
- /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-IEBVEAMS.js.map} +0 -0
- /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-ALV4KFPZ.js.map} +0 -0
- /package/dist/{add-XF5COUAS.js.map → add-VDUA6OWM.js.map} +0 -0
- /package/dist/{add-6WKPFMLG.js.map → add-XHOKCSW5.js.map} +0 -0
- /package/dist/{ads-L65JIKCD.js.map → ads-CQZHD7FC.js.map} +0 -0
- /package/dist/{ads-G6AS5L7G.js.map → ads-HGDPNIT6.js.map} +0 -0
- /package/dist/{advertisers-6NUM2Q3A.js.map → advertisers-UDSEFMP7.js.map} +0 -0
- /package/dist/{analytics-VLHE5A2M.js.map → analytics-TBETZOPJ.js.map} +0 -0
- /package/dist/{analytics-QKP3A5F3.js.map → analytics-VH74LMMC.js.map} +0 -0
- /package/dist/{connect-WBGCBBFJ.js.map → asset-writes-L5TMKIZC.js.map} +0 -0
- /package/dist/{assign-6HI6TNLP.js.map → assign-6IE2ASFC.js.map} +0 -0
- /package/dist/{audience-size-25LP2OBF.js.map → audience-size-CSBWDFEP.js.map} +0 -0
- /package/dist/{audiences-RPLVMO4H.js.map → audiences-AAZH56WD.js.map} +0 -0
- /package/dist/{audit-YY6X2MPA.js.map → audit-AEENRVGD.js.map} +0 -0
- /package/dist/{autocomplete-SAWJK4NF.js.map → autocomplete-AAGTJHVL.js.map} +0 -0
- /package/dist/{avatars-MXTI74VC.js.map → avatars-VEATUUKU.js.map} +0 -0
- /package/dist/{bid-pricing-HZ74SLEB.js.map → bid-pricing-SZTGCZTV.js.map} +0 -0
- /package/dist/{brand-T3OACVQX.js.map → brand-MXGETE4R.js.map} +0 -0
- /package/dist/{brief-BN4UGUXF.js.map → brief-3GHSHOGM.js.map} +0 -0
- /package/dist/{businesses-PRRYPR7H.js.map → businesses-H3HIDQX6.js.map} +0 -0
- /package/dist/{campaign-groups-YJK767AP.js.map → campaign-groups-WRI56M5X.js.map} +0 -0
- /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-U5PUVSMT.js.map} +0 -0
- /package/dist/{campaigns-GALDR5KK.js.map → campaigns-4QWC2JE7.js.map} +0 -0
- /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-JEIKY2M4.js.map} +0 -0
- /package/dist/{campaigns-NR6TNQFN.js.map → campaigns-Q4HN7HBY.js.map} +0 -0
- /package/dist/{canvas-GJAQAVS6.js.map → canvas-VJ3XKCAC.js.map} +0 -0
- /package/dist/{capabilities-2KT6TCGZ.js.map → capabilities-SNGGAOV3.js.map} +0 -0
- /package/dist/{catalog-USZL4SGX.js.map → catalog-S32MX453.js.map} +0 -0
- /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-OCVXZLIF.js.map} +0 -0
- /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-QVF2FD3E.js.map} +0 -0
- /package/dist/{check-MMJGFFZS.js.map → check-Z6UMIQKD.js.map} +0 -0
- /package/dist/{chunk-KPYDTIAI.js.map → chunk-2WZI36D3.js.map} +0 -0
- /package/dist/{chunk-FA4YZFRV.js.map → chunk-3AMLOCXY.js.map} +0 -0
- /package/dist/{chunk-X7F4Z6UM.js.map → chunk-3CVAEQMZ.js.map} +0 -0
- /package/dist/{chunk-SISA4HQR.js.map → chunk-3WAYZQNV.js.map} +0 -0
- /package/dist/{chunk-JWSEPW7F.js.map → chunk-46GWHUKN.js.map} +0 -0
- /package/dist/{chunk-R3EKM2P2.js.map → chunk-4O6T76A3.js.map} +0 -0
- /package/dist/{chunk-D5UXWKLQ.js.map → chunk-5MCVK4A3.js.map} +0 -0
- /package/dist/{chunk-CSZFZKVX.js.map → chunk-5ZLN23V5.js.map} +0 -0
- /package/dist/{chunk-OWA7ZLC4.js.map → chunk-77ULVP62.js.map} +0 -0
- /package/dist/{chunk-QNLJ3GNZ.js.map → chunk-AW2GKIGS.js.map} +0 -0
- /package/dist/{chunk-BL2MX6CR.js.map → chunk-BRLY6XD6.js.map} +0 -0
- /package/dist/{chunk-NPMAATZG.js.map → chunk-C7NWUCLQ.js.map} +0 -0
- /package/dist/{chunk-PA4W7BCQ.js.map → chunk-D4HKJBEW.js.map} +0 -0
- /package/dist/{chunk-H5HDZ7IC.js.map → chunk-DCBZ5CHZ.js.map} +0 -0
- /package/dist/{chunk-BITS62MF.js.map → chunk-G6XKD7QE.js.map} +0 -0
- /package/dist/{chunk-TP7HKSBX.js.map → chunk-GBFL4TD2.js.map} +0 -0
- /package/dist/{chunk-3TZVZXM6.js.map → chunk-H5SCKWFT.js.map} +0 -0
- /package/dist/{chunk-HSPMBLKE.js.map → chunk-HXPK6KAL.js.map} +0 -0
- /package/dist/{chunk-2PWNIEW4.js.map → chunk-I7GOSMWT.js.map} +0 -0
- /package/dist/{chunk-LOMH4TTC.js.map → chunk-IBY44U2M.js.map} +0 -0
- /package/dist/{chunk-IJ22WP3G.js.map → chunk-ITNHIZKK.js.map} +0 -0
- /package/dist/{chunk-P3W6SRSQ.js.map → chunk-J33P2JNS.js.map} +0 -0
- /package/dist/{chunk-NEIUVSDK.js.map → chunk-JH2L5CQD.js.map} +0 -0
- /package/dist/{chunk-62JQQUAU.js.map → chunk-JQH5VG6F.js.map} +0 -0
- /package/dist/{chunk-6WXV5GTA.js.map → chunk-JVH5A3XC.js.map} +0 -0
- /package/dist/{chunk-ILSKYRDR.js.map → chunk-KTOYQP6D.js.map} +0 -0
- /package/dist/{chunk-G4STCTY3.js.map → chunk-LO3IF5PS.js.map} +0 -0
- /package/dist/{chunk-BOPC3D6I.js.map → chunk-LRRFGOW3.js.map} +0 -0
- /package/dist/{chunk-C6EYCD5J.js.map → chunk-LTPTJWZC.js.map} +0 -0
- /package/dist/{chunk-NXZCCGES.js.map → chunk-MRQHJW5U.js.map} +0 -0
- /package/dist/{chunk-TRPJJMCS.js.map → chunk-NHYI7ORL.js.map} +0 -0
- /package/dist/{chunk-MXH35PJ5.js.map → chunk-NLI7C3K2.js.map} +0 -0
- /package/dist/{chunk-TPANP5A2.js.map → chunk-NSEMXBUB.js.map} +0 -0
- /package/dist/{chunk-LBO2YAZY.js.map → chunk-OM2BRYXJ.js.map} +0 -0
- /package/dist/{chunk-2LI6746F.js.map → chunk-OY4SKCIU.js.map} +0 -0
- /package/dist/{chunk-6WCAV27H.js.map → chunk-OYAJNTRO.js.map} +0 -0
- /package/dist/{chunk-QE3JEJXF.js.map → chunk-PL7J3DPQ.js.map} +0 -0
- /package/dist/{chunk-PTGYM4J6.js.map → chunk-PUSBUMYM.js.map} +0 -0
- /package/dist/{chunk-D5CUAOQX.js.map → chunk-RRADFRPI.js.map} +0 -0
- /package/dist/{chunk-VD73V44J.js.map → chunk-SGEPZB3D.js.map} +0 -0
- /package/dist/{chunk-LPXSM2DI.js.map → chunk-TFTZDWCX.js.map} +0 -0
- /package/dist/{chunk-2XRMPSEV.js.map → chunk-TG4NCHFS.js.map} +0 -0
- /package/dist/{chunk-5HJRZFMW.js.map → chunk-TTHM66TA.js.map} +0 -0
- /package/dist/{chunk-ZL23HA4N.js.map → chunk-VL2GNXZY.js.map} +0 -0
- /package/dist/{chunk-TZEVD4Q6.js.map → chunk-VQPZDM6N.js.map} +0 -0
- /package/dist/{chunk-JQU2LUZG.js.map → chunk-XCKINS7K.js.map} +0 -0
- /package/dist/{chunk-AVNSH2JE.js.map → chunk-YLYXSJ6O.js.map} +0 -0
- /package/dist/{chunk-MVB32GPI.js.map → chunk-ZAPO6UWS.js.map} +0 -0
- /package/dist/{chunk-FUKDI2UK.js.map → chunk-ZEPUDYPL.js.map} +0 -0
- /package/dist/{chunk-UWXDNVS5.js.map → chunk-ZJSGGJ5R.js.map} +0 -0
- /package/dist/{claim-SLGYOOWD.js.map → claim-J2LYNHZK.js.map} +0 -0
- /package/dist/{companies-IVMH6YII.js.map → companies-VYY22B6T.js.map} +0 -0
- /package/dist/{complete-45L2FI2X.js.map → complete-5I32XM7P.js.map} +0 -0
- /package/dist/{customers-NLU7NYDC.js.map → connect-EUFFQQ7O.js.map} +0 -0
- /package/dist/{conversation-RIOL3OJ7.js.map → conversation-D6KZHGPP.js.map} +0 -0
- /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-ECZBVY7D.js.map} +0 -0
- /package/dist/{conversions-3ISBR3TS.js.map → conversions-5QCSCRLI.js.map} +0 -0
- /package/dist/{conversions-TKIXNSYR.js.map → conversions-Y3X6ZTTF.js.map} +0 -0
- /package/dist/{create-ACLCRXQP.js.map → create-2JCRTQJL.js.map} +0 -0
- /package/dist/{create-VAPJ52GJ.js.map → create-LMSQPHPB.js.map} +0 -0
- /package/dist/{create-7JY2PTIZ.js.map → create-MBLNB5RY.js.map} +0 -0
- /package/dist/{create-KYBMFD32.js.map → create-VR7RXKL7.js.map} +0 -0
- /package/dist/{creatives-VQO2TKE3.js.map → creatives-5C42BDMW.js.map} +0 -0
- /package/dist/{creatives-S5QUWUL6.js.map → creatives-HYPSTANO.js.map} +0 -0
- /package/dist/{credentials-YTQ6BHWV.js.map → credentials-4H4AUYJN.js.map} +0 -0
- /package/dist/{critique-BHYJYZDV.js.map → critique-UOJZWDG2.js.map} +0 -0
- /package/dist/{critique-5LCG5TYF.js.map → critique-WCWMQQVV.js.map} +0 -0
- /package/dist/{crm-IKTWHWEB.js.map → crm-B7OTHMBP.js.map} +0 -0
- /package/dist/{crm-N7K57LZJ.js.map → crm-DZRWKJ6V.js.map} +0 -0
- /package/dist/{fit-UJQ47C4A.js.map → customers-AOFJJCGD.js.map} +0 -0
- /package/dist/{delete-26J3X3ZH.js.map → delete-DEG5KOBY.js.map} +0 -0
- /package/dist/{delete-EVXOFT2H.js.map → delete-EFIODCXG.js.map} +0 -0
- /package/dist/{delete-A4F5Z54J.js.map → delete-PQIMW2LK.js.map} +0 -0
- /package/dist/{demographics-VZKFMM4X.js.map → demographics-F26DIOCM.js.map} +0 -0
- /package/dist/{discard-ULRVUJDV.js.map → discard-2EJY6UGP.js.map} +0 -0
- /package/dist/{domain-L4WCCX7R.js.map → domain-XLJABLWB.js.map} +0 -0
- /package/dist/{draft-O4S5RKWK.js.map → draft-2YND6T4U.js.map} +0 -0
- /package/dist/{draft-Y2QJE2NM.js.map → draft-34CGWUVA.js.map} +0 -0
- /package/dist/{draft-57OQKHZI.js.map → draft-WRVEANL5.js.map} +0 -0
- /package/dist/{experiment-G3FQVAJU.js.map → experiment-7N4QFRWV.js.map} +0 -0
- /package/dist/{facets-EHQKGGJ2.js.map → facets-OPTNDPW2.js.map} +0 -0
- /package/dist/{feedback-CAOZPGTT.js.map → feedback-43BPXNBI.js.map} +0 -0
- /package/dist/{feedback-record-EXV5H6OS.js.map → feedback-record-35ZSDL6Z.js.map} +0 -0
- /package/dist/{fetch-ETKT2RBC.js.map → fetch-O46XBA7S.js.map} +0 -0
- /package/dist/{find-EVY4XEIQ.js.map → find-FSQAEGGF.js.map} +0 -0
- /package/dist/{fonts-7VWBQPJF.js.map → fit-CWJ5QQ4R.js.map} +0 -0
- /package/dist/{flows-Z7355RMD.js.map → flows-CVORIQ4B.js.map} +0 -0
- /package/dist/{ideas-F6CIGTVU.js.map → fonts-6TPYR6IW.js.map} +0 -0
- /package/dist/{forecast-OI7YWZ6F.js.map → forecast-2VLA6NJA.js.map} +0 -0
- /package/dist/{funnel-2B3JXJPX.js.map → funnel-XLKDLXMG.js.map} +0 -0
- /package/dist/{ga4-2BL5YAYN.js.map → ga4-LPDIBNYP.js.map} +0 -0
- /package/dist/{get-2RSN4N3J.js.map → get-O56GGN3V.js.map} +0 -0
- /package/dist/{get-6N7QJMIP.js.map → get-WFQ4XEAW.js.map} +0 -0
- /package/dist/{google-7STODZQR.js.map → google-5ESVO76E.js.map} +0 -0
- /package/dist/{google-ads-G7REKD4A.js.map → google-ads-DZMOTUY5.js.map} +0 -0
- /package/dist/{gsc-UU3T2C6B.js.map → gsc-FIZTQX3N.js.map} +0 -0
- /package/dist/{history-YMK2JNZU.js.map → history-43BBQZOB.js.map} +0 -0
- /package/dist/{history-IQ33J5PB.js.map → history-QKDYBSYM.js.map} +0 -0
- /package/dist/{hubspot-BUFS7S33.js.map → hubspot-S44MPK3G.js.map} +0 -0
- /package/dist/{icon-GB7UH5RF.js.map → icon-CSVAZ7NE.js.map} +0 -0
- /package/dist/{ingest-XLTRLCDV.js.map → ideas-SLP5WXFF.js.map} +0 -0
- /package/dist/{images-WCKTD6Z2.js.map → images-TWZOROCT.js.map} +0 -0
- /package/dist/{logo-YSNUUT33.js.map → ingest-5GCZ5ZBV.js.map} +0 -0
- /package/dist/{ingest-RQUJGS7K.js.map → ingest-P54J4W3V.js.map} +0 -0
- /package/dist/{inspect-KFVAMD4N.js.map → inspect-S4COGUBC.js.map} +0 -0
- /package/dist/{inspiration-XQYHBJY2.js.map → inspiration-IX5N724J.js.map} +0 -0
- /package/dist/{keyword-metrics-WYF3QMCW.js.map → keyword-metrics-26CCKFZK.js.map} +0 -0
- /package/dist/{keywords-for-site-G5L5EP3T.js.map → keywords-for-site-JWWECF63.js.map} +0 -0
- /package/dist/{landing-WUILAWDS.js.map → landing-VFDRADZY.js.map} +0 -0
- /package/dist/{leads-4SJ4NJOI.js.map → leads-DTKKYSKH.js.map} +0 -0
- /package/dist/{learn-CC6Q5IK2.js.map → learn-GQ75IPRK.js.map} +0 -0
- /package/dist/{line-item-writes-YXKYR25W.js.map → line-item-writes-DVVHVR3Y.js.map} +0 -0
- /package/dist/{line-items-CKUD2UU4.js.map → line-items-EOZMK7A5.js.map} +0 -0
- /package/dist/{link-VBYFI7AM.js.map → link-R5NGCQ5H.js.map} +0 -0
- /package/dist/{linkedin-XKVPSCLV.js.map → linkedin-DHZO3IJX.js.map} +0 -0
- /package/dist/{list-VSUF2IWT.js.map → list-57QBEGLM.js.map} +0 -0
- /package/dist/{list-ENYDGT3F.js.map → list-Q44BBHDI.js.map} +0 -0
- /package/dist/{list-6ZNZGRRK.js.map → list-W6G2NTG5.js.map} +0 -0
- /package/dist/{log-AACKGBDW.js.map → log-B6X5EPKA.js.map} +0 -0
- /package/dist/{performance-K7E5KAZW.js.map → logo-VHXH4J6A.js.map} +0 -0
- /package/dist/{make-ED7HBLH3.js.map → make-OIFLF3QS.js.map} +0 -0
- /package/dist/{map-63CQHWPI.js.map → map-PIOZT2MQ.js.map} +0 -0
- /package/dist/{mcp-RKAXC6IP.js.map → mcp-GFKHLWDB.js.map} +0 -0
- /package/dist/{media-sources-PEHUMH7C.js.map → media-sources-VMMMW5UM.js.map} +0 -0
- /package/dist/{members-SELIA674.js.map → members-W2QBMNIW.js.map} +0 -0
- /package/dist/{normalize-VAZPTBDX.js.map → normalize-N6XC3SLC.js.map} +0 -0
- /package/dist/{options-6FCNFWUF.js.map → options-XYJY2OEQ.js.map} +0 -0
- /package/dist/{pages-FTI44OSH.js.map → pages-PTWRXAZT.js.map} +0 -0
- /package/dist/{reddit-XIHRI3CN.js.map → performance-7NEZTOJ5.js.map} +0 -0
- /package/dist/{pixels-6IUB3Y3H.js.map → pixels-MYT3TCHZ.js.map} +0 -0
- /package/dist/{pixels-MBKR4XPX.js.map → pixels-ZZCQUS3J.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-PKEO6WUK.js.map → promoted-tweet-writes-X2F7R2AE.js.map} +0 -0
- /package/dist/{promoted-tweets-7MXVZRBI.js.map → promoted-tweets-XCSD6VKP.js.map} +0 -0
- /package/dist/{publish-MPMGRV72.js.map → publish-OBY6E43R.js.map} +0 -0
- /package/dist/{run-KBN5K7LE.js.map → reddit-WJ6KHYBC.js.map} +0 -0
- /package/dist/{refresh-A27N75NH.js.map → refresh-G5BQ2LWU.js.map} +0 -0
- /package/dist/{release-UKRB5IUN.js.map → release-PBZO35KY.js.map} +0 -0
- /package/dist/{remove-AFNFVPZY.js.map → remove-VJ2MEUPM.js.map} +0 -0
- /package/dist/{reopen-M5HE6J3G.js.map → reopen-W3LYOHSR.js.map} +0 -0
- /package/dist/{rerun-A2XHGFZS.js.map → rerun-4GDNBFNM.js.map} +0 -0
- /package/dist/{research-U7RQXMYH.js.map → research-4YTFPGH7.js.map} +0 -0
- /package/dist/{research-BLDY5UWH.js.map → research-LOQRIBO6.js.map} +0 -0
- /package/dist/{reset-4CCWB2RT.js.map → reset-55CCQGXB.js.map} +0 -0
- /package/dist/{reset-J3KCWFMZ.js.map → reset-AVTQEJPZ.js.map} +0 -0
- /package/dist/{resolve-HEK27ANI.js.map → resolve-E6FNMFE3.js.map} +0 -0
- /package/dist/{retry-VVI6N6UR.js.map → retry-HBJ7MKVI.js.map} +0 -0
- /package/dist/{retry-HPZIUG2S.js.map → retry-QBRYM6MG.js.map} +0 -0
- /package/dist/{rules-SK5DFFPY.js.map → rules-XNDBGOIS.js.map} +0 -0
- /package/dist/{rules-add-YQNYSME7.js.map → rules-add-UM3ZKSVD.js.map} +0 -0
- /package/dist/{run-M7ZDE6IA.js.map → run-D4YHZ4Z4.js.map} +0 -0
- /package/dist/{shared-NDRFKAH7.js.map → run-ZCJ7NP63.js.map} +0 -0
- /package/dist/{scaffold-ad-6BN5LWQH.js.map → scaffold-ad-VQZAP32M.js.map} +0 -0
- /package/dist/{scaffold-static-ad-VVZRAWBR.js.map → scaffold-static-ad-LEU4M44N.js.map} +0 -0
- /package/dist/{scaffold-video-LFIYI4GP.js.map → scaffold-video-PSWSYRSC.js.map} +0 -0
- /package/dist/{schedule-QMOKWTJ3.js.map → schedule-AAH7HYFK.js.map} +0 -0
- /package/dist/{scheduled-agents-FCQHQ6KR.js.map → scheduled-agents-HDABMHZI.js.map} +0 -0
- /package/dist/{schema-THFLCMBN.js.map → schema-OH5OWMVQ.js.map} +0 -0
- /package/dist/{search-XIUYSWO6.js.map → search-BSDPVSGA.js.map} +0 -0
- /package/dist/{select-QBU6ED4K.js.map → select-EI4QF4YZ.js.map} +0 -0
- /package/dist/{set-prompt-TL64CRBQ.js.map → set-prompt-RKDAGUWG.js.map} +0 -0
- /package/dist/{setup-links-QVI6NAOK.js.map → setup-links-CNNJA7AB.js.map} +0 -0
- /package/dist/{sync-definition-C6ROLKJ4.js.map → shared-3IBNDEFL.js.map} +0 -0
- /package/dist/{site-PZPJY33N.js.map → site-NV4U7PIF.js.map} +0 -0
- /package/dist/{sources-ER7ANNG3.js.map → sources-ATONL7W5.js.map} +0 -0
- /package/dist/{sources-RMNFV4CA.js.map → sources-C3TGHKLQ.js.map} +0 -0
- /package/dist/{stale-ITFCPOER.js.map → stale-6QPXL6BZ.js.map} +0 -0
- /package/dist/{stats-RCLQE4HJ.js.map → stats-ZAGJH4AD.js.map} +0 -0
- /package/dist/{status-ABMJBCPJ.js.map → status-BML3F4MZ.js.map} +0 -0
- /package/dist/{stock-ECRBD7RP.js.map → stock-6SHHLSKG.js.map} +0 -0
- /package/dist/{studio-MARZ22J2.js.map → studio-ZLCGXFAN.js.map} +0 -0
- /package/dist/{sync-QDD3MRJ6.js.map → sync-DZAOUQPE.js.map} +0 -0
- /package/dist/{viewer-check-7ZG7KHEN.js.map → sync-definition-RFEL65JE.js.map} +0 -0
- /package/dist/{tag-manager-G3LBQZUL.js.map → tag-manager-3CJ66GKJ.js.map} +0 -0
- /package/dist/{tags-EWHPUM2V.js.map → tags-2KSXCJRZ.js.map} +0 -0
- /package/dist/{tags-KBCX6BDU.js.map → tags-662KZJLV.js.map} +0 -0
- /package/dist/{tags-5JYOEYIT.js.map → tags-6QBVW25V.js.map} +0 -0
- /package/dist/{tags-PEWN6GNZ.js.map → tags-LQCEJGIL.js.map} +0 -0
- /package/dist/{tags-B473RWAA.js.map → tags-RIVD54ZG.js.map} +0 -0
- /package/dist/{targeting-criteria-EU65WUUF.js.map → targeting-criteria-XNLYPIL2.js.map} +0 -0
- /package/dist/{targets-KVXS5QKM.js.map → targets-OYIVS5KJ.js.map} +0 -0
- /package/dist/{testimonials-YMMA5YWL.js.map → testimonials-WT43CF7V.js.map} +0 -0
- /package/dist/{top-companies-OOX3DITI.js.map → top-companies-6QQMOS2Y.js.map} +0 -0
- /package/dist/{translate-OXVIMYHE.js.map → translate-7QN7JFGU.js.map} +0 -0
- /package/dist/{triggers-OX2GKG4Y.js.map → triggers-LVQY3QJ2.js.map} +0 -0
- /package/dist/{unlink-3USEPJSA.js.map → unlink-5ASZTCS2.js.map} +0 -0
- /package/dist/{unstage-VSCNPTAC.js.map → unstage-LNZTEATR.js.map} +0 -0
- /package/dist/{update-6JKTH65B.js.map → update-7BIR4GYO.js.map} +0 -0
- /package/dist/{update-FG4ELXYJ.js.map → update-BRLM5DB3.js.map} +0 -0
- /package/dist/{update-HZHG67N6.js.map → update-DRZAAJQ2.js.map} +0 -0
- /package/dist/{update-GZFKHA3A.js.map → update-NOWC3ICD.js.map} +0 -0
- /package/dist/{upload-BKCQ6FRW.js.map → upload-457Q4ANZ.js.map} +0 -0
- /package/dist/{url-params-UN4DRN2H.js.map → url-params-KM4NJGYC.js.map} +0 -0
- /package/dist/{validate-ZS2M5Q3V.js.map → validate-COLEPJBA.js.map} +0 -0
- /package/dist/{videos-I6YXFBFT.js.map → videos-5IDZTEWC.js.map} +0 -0
- /package/dist/{web-UGU7YMII.js.map → web-FZYOCCYN.js.map} +0 -0
- /package/dist/{winning-ads-ABN5OULS.js.map → winning-ads-I4DMP7RU.js.map} +0 -0
- /package/dist/{write-commands-6VR2UD3T.js.map → write-commands-FYB6QG7K.js.map} +0 -0
- /package/dist/{x-WK2VQDPF.js.map → x-OMN5DDLM.js.map} +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvArg,
|
|
3
|
+
failWriteValidation,
|
|
4
|
+
requireTarget,
|
|
5
|
+
requireTargets,
|
|
6
|
+
schemaArgs,
|
|
7
|
+
stageChatgptOp,
|
|
8
|
+
stageChatgptOps
|
|
9
|
+
} from "./chunk-AQM4JH62.js";
|
|
10
|
+
import {
|
|
11
|
+
CHATGPT_ADS_REFERENCE,
|
|
12
|
+
CHATGPT_AUDIENCE_USES,
|
|
13
|
+
CHATGPT_MAX_STAGED_MEMBERS,
|
|
14
|
+
runChatgptListRead
|
|
15
|
+
} from "./chunk-IG627WWY.js";
|
|
16
|
+
import "./chunk-SWL4AAPP.js";
|
|
17
|
+
import "./chunk-XDZVBX6L.js";
|
|
18
|
+
import "./chunk-N5O67GK5.js";
|
|
19
|
+
import "./chunk-EE72SSB2.js";
|
|
20
|
+
import {
|
|
21
|
+
registerSchema
|
|
22
|
+
} from "./chunk-WNSE7N75.js";
|
|
23
|
+
import "./chunk-YQSBHWOI.js";
|
|
24
|
+
|
|
25
|
+
// src/commands/ads/chatgpt/audiences.ts
|
|
26
|
+
import { readFileSync } from "fs";
|
|
27
|
+
import { defineCommand } from "citty";
|
|
28
|
+
|
|
29
|
+
// src/commands/ads/chatgpt/audience-members.ts
|
|
30
|
+
import { createHash } from "crypto";
|
|
31
|
+
import { parse } from "csv-parse/sync";
|
|
32
|
+
import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
|
|
33
|
+
function sha256(value) {
|
|
34
|
+
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
35
|
+
}
|
|
36
|
+
function normalizedEmail(value) {
|
|
37
|
+
const email = value.trim().toLowerCase();
|
|
38
|
+
return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(email) ? email : void 0;
|
|
39
|
+
}
|
|
40
|
+
function normalizedPhone(value, defaultCountry) {
|
|
41
|
+
const country = defaultCountry && isSupportedCountry(defaultCountry) ? defaultCountry : void 0;
|
|
42
|
+
const phone = parsePhoneNumberFromString(value.trim(), country);
|
|
43
|
+
return phone?.isValid() ? phone.number : void 0;
|
|
44
|
+
}
|
|
45
|
+
function hashedMembers(input) {
|
|
46
|
+
const rejected = [];
|
|
47
|
+
const emailHashes = /* @__PURE__ */ new Set();
|
|
48
|
+
const phoneHashes = /* @__PURE__ */ new Set();
|
|
49
|
+
for (const value of input.emails) {
|
|
50
|
+
const email = normalizedEmail(value);
|
|
51
|
+
email ? emailHashes.add(sha256(email)) : rejected.push(value.trim());
|
|
52
|
+
}
|
|
53
|
+
for (const value of input.phones) {
|
|
54
|
+
const phone = normalizedPhone(value, input.defaultCountry);
|
|
55
|
+
phone ? phoneHashes.add(sha256(phone)) : rejected.push(value.trim());
|
|
56
|
+
}
|
|
57
|
+
return { emailHashes: [...emailHashes], phoneHashes: [...phoneHashes], rejected };
|
|
58
|
+
}
|
|
59
|
+
function headerWords(cell) {
|
|
60
|
+
return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
61
|
+
}
|
|
62
|
+
var EMAIL_HEADER = /\b(e ?mail|correo|mail)\b/;
|
|
63
|
+
var PHONE_HEADER = /\b(phone|telefono|movil|mobile|tel|celular)\b/;
|
|
64
|
+
function membersFromFile(content) {
|
|
65
|
+
const rows = parse(content, {
|
|
66
|
+
bom: true,
|
|
67
|
+
skip_empty_lines: true,
|
|
68
|
+
relax_column_count: true,
|
|
69
|
+
trim: true,
|
|
70
|
+
delimiter: [",", ";", " "]
|
|
71
|
+
});
|
|
72
|
+
const header = (rows[0] ?? []).map(headerWords);
|
|
73
|
+
const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));
|
|
74
|
+
const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));
|
|
75
|
+
if (emailColumn >= 0 || phoneColumn >= 0) {
|
|
76
|
+
const cells = (column) => column < 0 ? [] : rows.slice(1).flatMap((row) => row[column] ? [row[column]] : []);
|
|
77
|
+
return { emails: cells(emailColumn), phones: cells(phoneColumn) };
|
|
78
|
+
}
|
|
79
|
+
const values = rows.flatMap((row) => row[0] ? [row[0]] : []);
|
|
80
|
+
return values.some((value) => value.includes("@")) ? { emails: values, phones: [] } : { emails: [], phones: values };
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// src/commands/ads/chatgpt/audiences.ts
|
|
84
|
+
var REFERENCE = CHATGPT_ADS_REFERENCE.audiences;
|
|
85
|
+
var MEMBER_ARGS = {
|
|
86
|
+
emails: { type: "string", description: "Emails, comma-separated" },
|
|
87
|
+
phones: { type: "string", description: "Phones, comma-separated \u2014 E.164 (+34\u2026), or local with --country" },
|
|
88
|
+
file: {
|
|
89
|
+
type: "string",
|
|
90
|
+
description: "A CSV with an email and/or phone column, or one email or phone per line \u2014 the company's own customers"
|
|
91
|
+
},
|
|
92
|
+
country: { type: "string", description: "Country of phones written without a +code, e.g. ES" }
|
|
93
|
+
};
|
|
94
|
+
function membersFromArgs(args, readFile = (path) => readFileSync(path, "utf8")) {
|
|
95
|
+
const fromFile = typeof args.file === "string" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };
|
|
96
|
+
const given = [...csvArg(args.emails) ?? [], ...fromFile.emails];
|
|
97
|
+
const givenPhones = [...csvArg(args.phones) ?? [], ...fromFile.phones];
|
|
98
|
+
const members = hashedMembers({
|
|
99
|
+
emails: given,
|
|
100
|
+
phones: givenPhones,
|
|
101
|
+
defaultCountry: typeof args.country === "string" ? args.country.toUpperCase() : void 0
|
|
102
|
+
});
|
|
103
|
+
const count = members.emailHashes.length + members.phoneHashes.length;
|
|
104
|
+
const offered = given.length + givenPhones.length + (typeof args.file === "string" && args.file ? 1 : 0);
|
|
105
|
+
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;
|
|
106
|
+
return {
|
|
107
|
+
payload: {
|
|
108
|
+
...members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {},
|
|
109
|
+
...members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}
|
|
110
|
+
},
|
|
111
|
+
rejected: members.rejected.length,
|
|
112
|
+
...refusal ? { refusal } : {}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function rejectedHint(rejected) {
|
|
116
|
+
return rejected > 0 ? [
|
|
117
|
+
`${rejected} value(s) were neither an email nor a valid phone and were left out \u2014 phones need a +country code, or --country.`
|
|
118
|
+
] : [];
|
|
119
|
+
}
|
|
120
|
+
var LIST_ARGS = {
|
|
121
|
+
"eligible-for": {
|
|
122
|
+
type: "string",
|
|
123
|
+
description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join("|")}`
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
registerSchema({
|
|
127
|
+
command: "ads.chatgpt.audiences.list",
|
|
128
|
+
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.",
|
|
129
|
+
args: schemaArgs(LIST_ARGS)
|
|
130
|
+
});
|
|
131
|
+
var audiencesListCommand = defineCommand({
|
|
132
|
+
meta: { name: "list", description: "List the account's custom audiences." },
|
|
133
|
+
args: LIST_ARGS,
|
|
134
|
+
run: async ({ args }) => {
|
|
135
|
+
const use = typeof args["eligible-for"] === "string" ? args["eligible-for"] : void 0;
|
|
136
|
+
await runChatgptListRead(
|
|
137
|
+
REFERENCE,
|
|
138
|
+
"/api/ads/chatgpt/audiences",
|
|
139
|
+
use ? { eligible_for: use } : void 0,
|
|
140
|
+
(rows) => rows.length === 0 ? ["No audience. Stage one with `baker ads chatgpt audiences create --name \u2026 --file customers.csv`."] : [
|
|
141
|
+
"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."
|
|
142
|
+
]
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
var CREATE_ARGS = {
|
|
147
|
+
name: { type: "string", description: "Audience name (3+ characters)", required: true },
|
|
148
|
+
description: { type: "string", description: "What the list is" },
|
|
149
|
+
...MEMBER_ARGS
|
|
150
|
+
};
|
|
151
|
+
registerSchema({
|
|
152
|
+
command: "ads.chatgpt.audiences.create",
|
|
153
|
+
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.",
|
|
154
|
+
args: schemaArgs(CREATE_ARGS)
|
|
155
|
+
});
|
|
156
|
+
var audiencesCreateCommand = defineCommand({
|
|
157
|
+
meta: {
|
|
158
|
+
name: "create",
|
|
159
|
+
description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.
|
|
160
|
+
|
|
161
|
+
Examples:
|
|
162
|
+
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
163
|
+
baker ads chatgpt audiences create --name "Recent buyers" # empty, fill it later with add`
|
|
164
|
+
},
|
|
165
|
+
args: CREATE_ARGS,
|
|
166
|
+
run: async ({ args }) => {
|
|
167
|
+
const { payload, rejected, refusal } = membersFromArgs(args);
|
|
168
|
+
if (refusal) {
|
|
169
|
+
failWriteValidation(refusal);
|
|
170
|
+
}
|
|
171
|
+
await stageChatgptOp(
|
|
172
|
+
{
|
|
173
|
+
kind: "audience.create",
|
|
174
|
+
payload: { name: args.name, ...args.description ? { description: args.description } : {}, ...payload }
|
|
175
|
+
},
|
|
176
|
+
REFERENCE,
|
|
177
|
+
(staged) => [
|
|
178
|
+
...rejectedHint(rejected),
|
|
179
|
+
`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.)`
|
|
180
|
+
]
|
|
181
|
+
);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
function membersCommand(verb) {
|
|
185
|
+
const args = {
|
|
186
|
+
id: { type: "positional", description: "Audience id (caud_\u2026)", required: true },
|
|
187
|
+
...MEMBER_ARGS
|
|
188
|
+
};
|
|
189
|
+
registerSchema({
|
|
190
|
+
command: `ads.chatgpt.audiences.${verb}`,
|
|
191
|
+
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.`,
|
|
192
|
+
args: schemaArgs(args)
|
|
193
|
+
});
|
|
194
|
+
return defineCommand({
|
|
195
|
+
meta: {
|
|
196
|
+
name: verb,
|
|
197
|
+
description: `Stage ${verb === "add" ? "adding" : "removing"} members.
|
|
198
|
+
|
|
199
|
+
Example:
|
|
200
|
+
baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`
|
|
201
|
+
},
|
|
202
|
+
args,
|
|
203
|
+
run: async ({ args: parsed }) => {
|
|
204
|
+
const { payload, rejected, refusal } = membersFromArgs(parsed);
|
|
205
|
+
if (refusal) {
|
|
206
|
+
failWriteValidation(refusal);
|
|
207
|
+
}
|
|
208
|
+
if (!payload.emailHashes && !payload.phoneHashes) {
|
|
209
|
+
failWriteValidation("name at least one email or phone with --emails, --phones or --file");
|
|
210
|
+
}
|
|
211
|
+
await stageChatgptOp(
|
|
212
|
+
{ kind: `audience.${verb}`, target: requireTarget(parsed, "id"), payload },
|
|
213
|
+
REFERENCE,
|
|
214
|
+
() => rejectedHint(rejected)
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
var ARCHIVE_ARGS = {
|
|
220
|
+
ids: { type: "positional", description: "Audience ids, comma-separated", required: true }
|
|
221
|
+
};
|
|
222
|
+
registerSchema({
|
|
223
|
+
command: "ads.chatgpt.audiences.archive",
|
|
224
|
+
description: "Stage archiving custom audiences \u2014 for good: ChatGPT Ads cannot bring one back. Pass every id in one call.",
|
|
225
|
+
args: schemaArgs(ARCHIVE_ARGS)
|
|
226
|
+
});
|
|
227
|
+
var audiencesArchiveCommand = defineCommand({
|
|
228
|
+
meta: {
|
|
229
|
+
name: "archive",
|
|
230
|
+
description: `Stage archiving audiences, for good.
|
|
231
|
+
|
|
232
|
+
Example:
|
|
233
|
+
baker ads chatgpt audiences archive caud_123`
|
|
234
|
+
},
|
|
235
|
+
args: ARCHIVE_ARGS,
|
|
236
|
+
run: async ({ args }) => {
|
|
237
|
+
await stageChatgptOps(
|
|
238
|
+
requireTargets(args, "ids").map((id) => ({ kind: "audience.archive", target: id, payload: {} })),
|
|
239
|
+
REFERENCE
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
var audiencesCommand = defineCommand({
|
|
244
|
+
meta: {
|
|
245
|
+
name: "audiences",
|
|
246
|
+
description: `Custom audiences \u2014 the company's own customer lists a campaign serves to or leaves out.
|
|
247
|
+
|
|
248
|
+
Examples:
|
|
249
|
+
baker ads chatgpt audiences
|
|
250
|
+
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
251
|
+
baker ads chatgpt audiences add caud_123 --emails ana@example.com`
|
|
252
|
+
},
|
|
253
|
+
subCommands: {
|
|
254
|
+
list: audiencesListCommand,
|
|
255
|
+
create: audiencesCreateCommand,
|
|
256
|
+
add: membersCommand("add"),
|
|
257
|
+
remove: membersCommand("remove"),
|
|
258
|
+
archive: audiencesArchiveCommand
|
|
259
|
+
},
|
|
260
|
+
// A parent must never declare `run`: citty falls through to it after the matched subcommand.
|
|
261
|
+
args: {},
|
|
262
|
+
default: "list"
|
|
263
|
+
});
|
|
264
|
+
export {
|
|
265
|
+
audiencesCommand,
|
|
266
|
+
membersFromArgs
|
|
267
|
+
};
|
|
268
|
+
//# sourceMappingURL=audiences-AAZH56WD.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvOrJson,
|
|
3
|
+
handleMetaError,
|
|
4
|
+
resolveAccountIdArg
|
|
5
|
+
} from "./chunk-QTOZ32SU.js";
|
|
6
|
+
import {
|
|
7
|
+
writeAdsJson,
|
|
8
|
+
writeAdsOutput
|
|
9
|
+
} from "./chunk-SWL4AAPP.js";
|
|
10
|
+
import {
|
|
11
|
+
NO_CACHE_ARG
|
|
12
|
+
} from "./chunk-K3TNTBZJ.js";
|
|
13
|
+
import {
|
|
14
|
+
apiGet
|
|
15
|
+
} from "./chunk-XDZVBX6L.js";
|
|
16
|
+
import "./chunk-N5O67GK5.js";
|
|
17
|
+
import "./chunk-EE72SSB2.js";
|
|
18
|
+
import "./chunk-WNSE7N75.js";
|
|
19
|
+
import "./chunk-YQSBHWOI.js";
|
|
20
|
+
|
|
21
|
+
// src/commands/ads/meta/audiences.ts
|
|
22
|
+
import { defineCommand } from "citty";
|
|
23
|
+
var listArgs = {
|
|
24
|
+
"account-id": { type: "string", description: "Meta ad account ID" },
|
|
25
|
+
limit: { type: "string", description: "Max rows" },
|
|
26
|
+
"no-cache": NO_CACHE_ARG,
|
|
27
|
+
output: { type: "string", description: "Output format", default: "json" }
|
|
28
|
+
};
|
|
29
|
+
var listCommand = defineCommand({
|
|
30
|
+
meta: {
|
|
31
|
+
name: "list",
|
|
32
|
+
description: "List custom audiences. Runs by default when no subcommand is given. Example: baker ads meta audiences --account-id act_123"
|
|
33
|
+
},
|
|
34
|
+
args: listArgs,
|
|
35
|
+
run: async ({ args }) => {
|
|
36
|
+
const accountId = resolveAccountIdArg(args);
|
|
37
|
+
try {
|
|
38
|
+
const params = { "account-id": accountId };
|
|
39
|
+
if (args.limit) params.limit = args.limit;
|
|
40
|
+
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
41
|
+
const data = await apiGet("/api/ads/meta/audiences", params);
|
|
42
|
+
const fmt = csvOrJson(args);
|
|
43
|
+
if (fmt !== "json") {
|
|
44
|
+
writeAdsOutput(data, fmt);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
writeAdsJson({ ok: true, data });
|
|
48
|
+
} catch (err) {
|
|
49
|
+
handleMetaError(err);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
var audiencesCommand = defineCommand({
|
|
54
|
+
meta: {
|
|
55
|
+
name: "audiences",
|
|
56
|
+
description: `List custom audiences, or stage writes (create/update/delete, members add|remove|replace). Write subcommands stage ops on this chat's draft.
|
|
57
|
+
Includes lookalikes, website-pixel audiences, customer-file audiences. Meta hides exact size when count < 1000.
|
|
58
|
+
|
|
59
|
+
Examples:
|
|
60
|
+
baker ads meta audiences --account-id act_123
|
|
61
|
+
baker ads meta audiences create --name "Site 30d" --subtype WEBSITE --file rule.json
|
|
62
|
+
baker ads meta audiences create --name "Customers" --subtype CUSTOM --customer-file-source USER_PROVIDED_ONLY
|
|
63
|
+
baker ads meta audiences members add meta_temp_ab12 --file customers.csv --country ES
|
|
64
|
+
baker ads meta audiences saved --account-id act_123 \u2014 saved audiences (read-only)`
|
|
65
|
+
},
|
|
66
|
+
subCommands: {
|
|
67
|
+
list: listCommand,
|
|
68
|
+
create: () => import("./write-commands-PEJBTME6.js").then((m) => m.audiencesCreateCommand),
|
|
69
|
+
update: () => import("./write-commands-PEJBTME6.js").then((m) => m.audiencesUpdateCommand),
|
|
70
|
+
delete: () => import("./audience-writes-X52VG35Y.js").then((m) => m.audiencesDeleteCommand),
|
|
71
|
+
members: () => import("./audience-writes-X52VG35Y.js").then((m) => m.audiencesMembersCommand),
|
|
72
|
+
saved: () => import("./audience-writes-X52VG35Y.js").then((m) => m.savedAudiencesCommand)
|
|
73
|
+
},
|
|
74
|
+
// `args` stays even though the parent has no `run`: citty scans rawArgs for the
|
|
75
|
+
// subcommand name using THIS command's arg defs, so without them `--account-id act_1`
|
|
76
|
+
// would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare
|
|
77
|
+
// invocation — citty falls through to `run` after a subcommand, double-executing it.
|
|
78
|
+
args: listArgs,
|
|
79
|
+
default: "list"
|
|
80
|
+
});
|
|
81
|
+
export {
|
|
82
|
+
audiencesCommand
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=audiences-X3RLGOVM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/audiences.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { csvOrJson, handleMetaError, resolveAccountIdArg } from \"./shared.ts\";\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID\" },\n limit: { type: \"string\", description: \"Max rows\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"Output format\", default: \"json\" },\n} as const;\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List custom audiences. Runs by default when no subcommand is given. Example: baker ads meta audiences --account-id act_123\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args.limit) params.limit = args.limit as string;\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<Array<Record<string, unknown>>>(\"/api/ads/meta/audiences\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const audiencesCommand = defineCommand({\n meta: {\n name: \"audiences\",\n description: `List custom audiences, or stage writes (create/update/delete, members add|remove|replace). Write subcommands stage ops on this chat's draft.\nIncludes lookalikes, website-pixel audiences, customer-file audiences. Meta hides exact size when count < 1000.\n\nExamples:\n baker ads meta audiences --account-id act_123\n baker ads meta audiences create --name \"Site 30d\" --subtype WEBSITE --file rule.json\n baker ads meta audiences create --name \"Customers\" --subtype CUSTOM --customer-file-source USER_PROVIDED_ONLY\n baker ads meta audiences members add meta_temp_ab12 --file customers.csv --country ES\n baker ads meta audiences saved --account-id act_123 — saved audiences (read-only)`,\n },\n subCommands: {\n list: listCommand,\n create: () => import(\"./write-commands.ts\").then((m) => m.audiencesCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.audiencesUpdateCommand),\n delete: () => import(\"./audience-writes.ts\").then((m) => m.audiencesDeleteCommand),\n members: () => import(\"./audience-writes.ts\").then((m) => m.audiencesMembersCommand),\n saved: () => import(\"./audience-writes.ts\").then((m) => m.savedAudiencesCommand),\n },\n // `args` stays even though the parent has no `run`: citty scans rawArgs for the\n // subcommand name using THIS command's arg defs, so without them `--account-id act_1`\n // would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare\n // invocation — citty falls through to `run` after a subcommand, double-executing it.\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAM9B,IAAM,WAAW;AAAA,EACf,cAAc,EAAE,MAAM,UAAU,aAAa,qBAAqB;AAAA,EAClE,OAAO,EAAE,MAAM,UAAU,aAAa,WAAW;AAAA,EACjD,YAAY;AAAA,EACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,iBAAiB,SAAS,OAAO;AAC1E;AAEA,IAAM,cAAc,cAAc;AAAA,EAChC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,EACN,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,UAAI,KAAK,MAAO,QAAO,QAAQ,KAAK;AACpC,UAAI,KAAK,UAAU,EAAG,QAAO,YAAY,IAAI;AAC7C,YAAM,OAAO,MAAM,OAAuC,2BAA2B,MAAM;AAC3F,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,MAAM,GAAG;AACxB;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,sBAAgB,GAAG;AAAA,IACrB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,mBAAmB,cAAc;AAAA,EAC5C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB;AAAA,IAChF,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB;AAAA,IAChF,QAAQ,MAAM,OAAO,+BAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB;AAAA,IACjF,SAAS,MAAM,OAAO,+BAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,uBAAuB;AAAA,IACnF,OAAO,MAAM,OAAO,+BAAsB,EAAE,KAAK,CAAC,MAAM,EAAE,qBAAqB;AAAA,EACjF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AAAA,EACN,SAAS;AACX,CAAC;","names":[]}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleLinkedinError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-TTHM66TA.js";
|
|
5
|
+
import {
|
|
6
|
+
writeAdsJson
|
|
7
|
+
} from "./chunk-SWL4AAPP.js";
|
|
8
|
+
import {
|
|
9
|
+
NO_CACHE_ARG
|
|
10
|
+
} from "./chunk-K3TNTBZJ.js";
|
|
11
|
+
import "./chunk-DAO63OOP.js";
|
|
12
|
+
import "./chunk-GXDLWBOY.js";
|
|
13
|
+
import "./chunk-GIWHHCD6.js";
|
|
14
|
+
import "./chunk-XQIOCIDO.js";
|
|
15
|
+
import "./chunk-WTJSMYY2.js";
|
|
16
|
+
import {
|
|
17
|
+
apiPost
|
|
18
|
+
} from "./chunk-XDZVBX6L.js";
|
|
19
|
+
import "./chunk-N5O67GK5.js";
|
|
20
|
+
import "./chunk-EE72SSB2.js";
|
|
21
|
+
import "./chunk-WNSE7N75.js";
|
|
22
|
+
import "./chunk-YQSBHWOI.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/ads/linkedin/audit.ts
|
|
25
|
+
import { defineCommand } from "citty";
|
|
26
|
+
var SEVERITY_RANK = {
|
|
27
|
+
critical: 0,
|
|
28
|
+
high: 1,
|
|
29
|
+
medium: 2,
|
|
30
|
+
low: 3
|
|
31
|
+
};
|
|
32
|
+
var STATUS_RANK = {
|
|
33
|
+
fail: 0,
|
|
34
|
+
warn: 1,
|
|
35
|
+
partial: 2,
|
|
36
|
+
pass: 3,
|
|
37
|
+
n_a: 4
|
|
38
|
+
};
|
|
39
|
+
function filterFindings(findings, severity, area) {
|
|
40
|
+
return findings.filter((f) => {
|
|
41
|
+
if (severity && !severity.includes(f.severity)) return false;
|
|
42
|
+
if (area && !area.includes(f.area)) return false;
|
|
43
|
+
return true;
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function sortFindings(findings) {
|
|
47
|
+
return [...findings].sort((a, b) => {
|
|
48
|
+
const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];
|
|
49
|
+
if (sa !== 0) return sa;
|
|
50
|
+
return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
function renderMarkdown(result) {
|
|
54
|
+
const lines = [];
|
|
55
|
+
lines.push(`# LinkedIn Ads Audit \u2014 ${result.account.name} (${result.account.id})`);
|
|
56
|
+
lines.push("");
|
|
57
|
+
lines.push(
|
|
58
|
+
`**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`
|
|
59
|
+
);
|
|
60
|
+
lines.push("");
|
|
61
|
+
lines.push(
|
|
62
|
+
`**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)`
|
|
63
|
+
);
|
|
64
|
+
lines.push("");
|
|
65
|
+
lines.push("| # | Area | Check | Status | Severity | Notes |");
|
|
66
|
+
lines.push("|---|------|-------|--------|----------|-------|");
|
|
67
|
+
result.findings.forEach((f, idx) => {
|
|
68
|
+
const note = noteOf(f);
|
|
69
|
+
lines.push(
|
|
70
|
+
`| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`
|
|
71
|
+
);
|
|
72
|
+
});
|
|
73
|
+
return lines.join("\n");
|
|
74
|
+
}
|
|
75
|
+
function escapeMd(text) {
|
|
76
|
+
return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
77
|
+
}
|
|
78
|
+
function noteOf(f) {
|
|
79
|
+
if (f.status === "pass") return "";
|
|
80
|
+
const ev = f.evidence ? JSON.stringify(f.evidence) : "";
|
|
81
|
+
const fix = f.fix?.explanation ?? "";
|
|
82
|
+
return [fix, ev].filter(Boolean).join(" \u2014 ");
|
|
83
|
+
}
|
|
84
|
+
var auditCommand = defineCommand({
|
|
85
|
+
meta: {
|
|
86
|
+
name: "audit",
|
|
87
|
+
description: `Run a LinkedIn Ads playbook audit \u2014 30+ checks across Settings, Tracking,
|
|
88
|
+
Audience, Campaigns, Creative, Performance, Bidding, and Compliance.
|
|
89
|
+
|
|
90
|
+
Each finding has {id, area, check, status, severity, evidence, fix} fields with
|
|
91
|
+
playbook citations. The default JSON output is agent-friendly; --format md
|
|
92
|
+
renders a deliverable-ready table that mirrors the google-ads-playbook
|
|
93
|
+
10-audit-summary.md style.
|
|
94
|
+
|
|
95
|
+
Exit code 0 always. Use the JSON 'summary' counts to decide if action is needed.
|
|
96
|
+
|
|
97
|
+
Examples:
|
|
98
|
+
baker ads linkedin audit --account-id 503001492
|
|
99
|
+
baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope
|
|
100
|
+
baker ads linkedin audit --account-id 503001492 --window-days 90
|
|
101
|
+
baker ads linkedin audit --account-id 503001492 --severity critical,high
|
|
102
|
+
baker ads linkedin audit --account-id 503001492 --area Settings,Tracking
|
|
103
|
+
baker ads linkedin audit --account-id 503001492 --format md`
|
|
104
|
+
},
|
|
105
|
+
args: {
|
|
106
|
+
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
107
|
+
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
108
|
+
"campaign-id": { type: "string", description: "Narrow scope to a single campaign" },
|
|
109
|
+
"window-days": { type: "string", description: "Lookback window for performance checks (default: 30)" },
|
|
110
|
+
severity: { type: "string", description: "CSV severity filter: critical,high,medium,low" },
|
|
111
|
+
area: {
|
|
112
|
+
type: "string",
|
|
113
|
+
description: "CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene"
|
|
114
|
+
},
|
|
115
|
+
format: { type: "string", description: "Output format: json | md (default: json)" },
|
|
116
|
+
"no-cache": NO_CACHE_ARG
|
|
117
|
+
},
|
|
118
|
+
run: async ({ args }) => {
|
|
119
|
+
const accountId = resolveAccountIdArg(args);
|
|
120
|
+
const windowDays = args["window-days"] ? Number(args["window-days"]) : 30;
|
|
121
|
+
if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {
|
|
122
|
+
handleLinkedinError(new Error("--window-days must be 1..365"));
|
|
123
|
+
}
|
|
124
|
+
try {
|
|
125
|
+
const data = await apiPost("/api/ads/linkedin/audit", {
|
|
126
|
+
accountId,
|
|
127
|
+
campaignId: args["campaign-id"] ? String(args["campaign-id"]) : void 0,
|
|
128
|
+
windowDays,
|
|
129
|
+
skipCache: Boolean(args["no-cache"])
|
|
130
|
+
});
|
|
131
|
+
const severityFilter = args.severity?.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean);
|
|
132
|
+
const areaFilter = args.area?.split(",").map((s) => s.trim()).filter(Boolean);
|
|
133
|
+
const filtered = filterFindings(data.findings, severityFilter, areaFilter);
|
|
134
|
+
const sorted = sortFindings(filtered);
|
|
135
|
+
const result = { ...data, findings: sorted };
|
|
136
|
+
const fmt = args.format ?? "json";
|
|
137
|
+
if (fmt === "md") {
|
|
138
|
+
process.stdout.write(`${renderMarkdown(result)}
|
|
139
|
+
`);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
writeAdsJson({ ok: true, data: result });
|
|
143
|
+
} catch (err) {
|
|
144
|
+
handleLinkedinError(err);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
export {
|
|
149
|
+
auditCommand
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=audit-AEENRVGD.js.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {
|
|
2
|
+
noSerpRowsHints
|
|
3
|
+
} from "./chunk-JH2L5CQD.js";
|
|
4
|
+
import {
|
|
5
|
+
RESEARCH_DATA_NOTE,
|
|
6
|
+
handleResearchError,
|
|
7
|
+
writeResearchHints,
|
|
8
|
+
writeResearchJson,
|
|
9
|
+
writeResearchOutput
|
|
10
|
+
} from "./chunk-BFRIRZRZ.js";
|
|
11
|
+
import {
|
|
12
|
+
buildResearchQueryContext,
|
|
13
|
+
warnDefaults
|
|
14
|
+
} from "./chunk-BDYLILMW.js";
|
|
15
|
+
import "./chunk-SVM3DGAQ.js";
|
|
16
|
+
import "./chunk-DAO63OOP.js";
|
|
17
|
+
import "./chunk-GXDLWBOY.js";
|
|
18
|
+
import "./chunk-GIWHHCD6.js";
|
|
19
|
+
import "./chunk-XQIOCIDO.js";
|
|
20
|
+
import "./chunk-WTJSMYY2.js";
|
|
21
|
+
import {
|
|
22
|
+
apiPost
|
|
23
|
+
} from "./chunk-XDZVBX6L.js";
|
|
24
|
+
import "./chunk-N5O67GK5.js";
|
|
25
|
+
import "./chunk-EE72SSB2.js";
|
|
26
|
+
import {
|
|
27
|
+
registerSchema
|
|
28
|
+
} from "./chunk-WNSE7N75.js";
|
|
29
|
+
import "./chunk-YQSBHWOI.js";
|
|
30
|
+
|
|
31
|
+
// src/commands/research/autocomplete.ts
|
|
32
|
+
import { defineCommand } from "citty";
|
|
33
|
+
registerSchema({
|
|
34
|
+
command: "research.autocomplete",
|
|
35
|
+
description: "Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
36
|
+
args: {
|
|
37
|
+
keyword: { type: "string", description: "Seed keyword (positional)", required: true },
|
|
38
|
+
location: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "Country code (us, uk, es, de...) or DataForSEO location code. Defaults to us (United States) if omitted",
|
|
41
|
+
required: false
|
|
42
|
+
},
|
|
43
|
+
language: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Language code or name. Defaults to en (English) if omitted",
|
|
46
|
+
required: false
|
|
47
|
+
},
|
|
48
|
+
limit: { type: "string", description: "Max suggestions (default: 10, max: 20)", required: false },
|
|
49
|
+
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
var FIELDS = {
|
|
53
|
+
suggestion: "Autocomplete suggestion from Google"
|
|
54
|
+
};
|
|
55
|
+
var autocompleteCommand = defineCommand({
|
|
56
|
+
meta: {
|
|
57
|
+
name: "autocomplete",
|
|
58
|
+
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
59
|
+
|
|
60
|
+
Examples:
|
|
61
|
+
baker research autocomplete "running shoes"
|
|
62
|
+
baker research autocomplete "crm" --location uk --limit 5`
|
|
63
|
+
},
|
|
64
|
+
args: {
|
|
65
|
+
keyword: { type: "positional", description: "Seed keyword", required: true },
|
|
66
|
+
location: { type: "string", description: "Country code or location code (default: us)", required: false },
|
|
67
|
+
language: { type: "string", description: "Language code or name (default: en)", required: false },
|
|
68
|
+
limit: { type: "string", description: "Max suggestions (default: 10, max: 20)", required: false },
|
|
69
|
+
output: { type: "string", description: "Format: json|csv|md|jsonl", required: false, default: "json" },
|
|
70
|
+
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
71
|
+
},
|
|
72
|
+
run: async ({ args }) => {
|
|
73
|
+
const keyword = args.keyword;
|
|
74
|
+
const location = args.location || void 0;
|
|
75
|
+
const language = args.language || void 0;
|
|
76
|
+
const limit = args.limit ? Number(args.limit) : void 0;
|
|
77
|
+
const skipCache = args["no-cache"] ? true : void 0;
|
|
78
|
+
const queryContext = buildResearchQueryContext(location, language);
|
|
79
|
+
try {
|
|
80
|
+
const data = await apiPost("/api/research/autocomplete", {
|
|
81
|
+
keyword,
|
|
82
|
+
location,
|
|
83
|
+
language,
|
|
84
|
+
limit,
|
|
85
|
+
skipCache
|
|
86
|
+
});
|
|
87
|
+
warnDefaults(queryContext);
|
|
88
|
+
const format = args.output || "json";
|
|
89
|
+
const hints = noSerpRowsHints(data.length, queryContext);
|
|
90
|
+
if (format !== "json") {
|
|
91
|
+
writeResearchOutput(data, format);
|
|
92
|
+
writeResearchHints(hints, format);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
writeResearchJson({
|
|
96
|
+
ok: true,
|
|
97
|
+
data,
|
|
98
|
+
fields: FIELDS,
|
|
99
|
+
note: RESEARCH_DATA_NOTE,
|
|
100
|
+
query_context: queryContext,
|
|
101
|
+
hints
|
|
102
|
+
});
|
|
103
|
+
} catch (err) {
|
|
104
|
+
handleResearchError(err);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
export {
|
|
109
|
+
autocompleteCommand
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=autocomplete-AAGTJHVL.js.map
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import "./chunk-YQSBHWOI.js";
|
|
2
|
+
|
|
3
|
+
// src/commands/avatars/index.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
var avatarsCommand = defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "avatars",
|
|
8
|
+
description: `Reusable AI presenters this company can cast into images and video. An avatar holds one settled identity, so the same face can carry a whole campaign. Subcommands: list, get, create, research, update, delete.
|
|
9
|
+
|
|
10
|
+
How casting works:
|
|
11
|
+
1. baker avatars list See who this company already has (reuse before you create)
|
|
12
|
+
2. baker avatars get <handle> Status, identity sheet URL, subject description
|
|
13
|
+
3. baker images generate "<scene>" --reference <sheetUrl>
|
|
14
|
+
Ground the render on the identity sheet, never on a source photo,
|
|
15
|
+
and copy the subject description into the prompt verbatim
|
|
16
|
+
|
|
17
|
+
Examples:
|
|
18
|
+
baker avatars list --status ready --output md
|
|
19
|
+
baker avatars get marta --full
|
|
20
|
+
baker avatars create --name "Marta" --subject "woman in her early 40s, shoulder-length dark hair, light olive skin"
|
|
21
|
+
baker avatars research "Lautaro Suarez, CTO at Vibiz" --create A real, named person, from their public photos
|
|
22
|
+
baker avatars update marta --subject "\u2026" --regenerate-sheet
|
|
23
|
+
baker avatars delete marta --archive
|
|
24
|
+
Full guide: __tooling__/docs/tools/baker/avatars.md`
|
|
25
|
+
},
|
|
26
|
+
subCommands: {
|
|
27
|
+
list: () => import("./list-GK6LNWIW.js").then((m) => m.listCommand),
|
|
28
|
+
get: () => import("./get-7GCEJ6KG.js").then((m) => m.getCommand),
|
|
29
|
+
create: () => import("./create-VR7RXKL7.js").then((m) => m.createCommand),
|
|
30
|
+
research: () => import("./research-4YTFPGH7.js").then((m) => m.researchCommand),
|
|
31
|
+
update: () => import("./update-NOWC3ICD.js").then((m) => m.updateCommand),
|
|
32
|
+
delete: () => import("./delete-2GIIUPA3.js").then((m) => m.deleteCommand)
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
export {
|
|
36
|
+
avatarsCommand
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=avatars-VEATUUKU.js.map
|