@koda-sl/baker-cli 0.386.0 → 0.387.0-dev.3bafd569e
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 +1090 -211
- package/canvas/tiktok-captions-composition/index.html +5 -6
- package/canvas/tiktok-captions-composition/meta.json +5 -0
- package/dist/account-CLOKMTTC.js +49 -0
- package/dist/account-CLOKMTTC.js.map +1 -0
- package/dist/account-V5Y2QHAK.js +79 -0
- package/dist/account-V5Y2QHAK.js.map +1 -0
- package/dist/account-XFK6VX2R.js +80 -0
- package/dist/account-XFK6VX2R.js.map +1 -0
- package/dist/account-reads-S5VXX2QU.js +218 -0
- package/dist/account-reads-S5VXX2QU.js.map +1 -0
- package/dist/account-writes-Y7EQXDXF.js +66 -0
- package/dist/account-writes-Y7EQXDXF.js.map +1 -0
- package/dist/accounts-7YD457YN.js +114 -0
- package/dist/accounts-7YD457YN.js.map +1 -0
- package/dist/accounts-BJ3X5JQT.js +115 -0
- package/dist/accounts-BJ3X5JQT.js.map +1 -0
- package/dist/accounts-LOJ4WLIX.js +77 -0
- package/dist/accounts-LOJ4WLIX.js.map +1 -0
- package/dist/accounts-RYBDLQ6H.js +75 -0
- package/dist/accounts-RYBDLQ6H.js.map +1 -0
- package/dist/accounts-UO4XBWM2.js +611 -0
- package/dist/accounts-UO4XBWM2.js.map +1 -0
- package/dist/actions-3AW3R63U.js +55 -0
- package/dist/actions-3AW3R63U.js.map +1 -0
- package/dist/active-entities-R6GZIO6Z.js +103 -0
- package/dist/active-entities-R6GZIO6Z.js.map +1 -0
- package/dist/activities-ESBF3GFS.js +74 -0
- package/dist/activities-ESBF3GFS.js.map +1 -0
- package/dist/ad-group-writes-I225OYDZ.js +170 -0
- package/dist/ad-group-writes-I225OYDZ.js.map +1 -0
- package/dist/ad-groups-O35MWNF6.js +68 -0
- package/dist/ad-groups-O35MWNF6.js.map +1 -0
- package/dist/ad-writes-SS5YZO5W.js +174 -0
- package/dist/ad-writes-SS5YZO5W.js.map +1 -0
- package/dist/add-43DUOVNR.js +104 -0
- package/dist/add-43DUOVNR.js.map +1 -0
- package/dist/add-IE5WDELB.js +302 -0
- package/dist/add-IE5WDELB.js.map +1 -0
- package/dist/add-QZHAWUBA.js +97 -0
- package/dist/add-QZHAWUBA.js.map +1 -0
- package/dist/add-TGQIVVXH.js +105 -0
- package/dist/add-TGQIVVXH.js.map +1 -0
- package/dist/add-accounts-6QYPOPR2.js +91 -0
- package/dist/add-accounts-6QYPOPR2.js.map +1 -0
- package/dist/ads-AUSRB4GU.js +128 -0
- package/dist/ads-AUSRB4GU.js.map +1 -0
- package/dist/ads-COYOTEKE.js +77 -0
- package/dist/ads-COYOTEKE.js.map +1 -0
- package/dist/ads-DZ4N5INZ.js +40 -0
- package/dist/ads-DZ4N5INZ.js.map +1 -0
- package/dist/ads-XZCMSPM5.js +113 -0
- package/dist/ads-XZCMSPM5.js.map +1 -0
- package/dist/adsets-AKR75THA.js +176 -0
- package/dist/adsets-AKR75THA.js.map +1 -0
- package/dist/advertisers-52FMMBTQ.js +120 -0
- package/dist/advertisers-52FMMBTQ.js.map +1 -0
- package/dist/advertisers-BCGKUMEH.js +125 -0
- package/dist/advertisers-BCGKUMEH.js.map +1 -0
- package/dist/analytics-JPDBKETM.js +1980 -0
- package/dist/analytics-JPDBKETM.js.map +1 -0
- package/dist/analytics-YVQ6H4BG.js +433 -0
- package/dist/analytics-YVQ6H4BG.js.map +1 -0
- package/dist/animate-JXIT77Y5.js +480 -0
- package/dist/animate-JXIT77Y5.js.map +1 -0
- package/dist/assign-66NTWTR2.js +77 -0
- package/dist/assign-66NTWTR2.js.map +1 -0
- package/dist/audience-size-LVQJWQAS.js +94 -0
- package/dist/audience-size-LVQJWQAS.js.map +1 -0
- package/dist/audiences-DC3IOG34.js +85 -0
- package/dist/audiences-DC3IOG34.js.map +1 -0
- package/dist/audiences-NEW3LLQR.js +268 -0
- package/dist/audiences-NEW3LLQR.js.map +1 -0
- package/dist/audiences-NYGMBGQ3.js +79 -0
- package/dist/audiences-NYGMBGQ3.js.map +1 -0
- package/dist/audit-UIPMTI5C.js +88 -0
- package/dist/audit-UIPMTI5C.js.map +1 -0
- package/dist/audit-XGN2OFLN.js +151 -0
- package/dist/audit-XGN2OFLN.js.map +1 -0
- package/dist/autocomplete-LVPDV3JE.js +111 -0
- package/dist/autocomplete-LVPDV3JE.js.map +1 -0
- package/dist/avatars-S6NSLMJK.js +38 -0
- package/dist/avatars-S6NSLMJK.js.map +1 -0
- package/dist/bid-pricing-2LYULXU2.js +99 -0
- package/dist/bid-pricing-2LYULXU2.js.map +1 -0
- package/dist/brand-WWHUZ72R.js +22 -0
- package/dist/brand-WWHUZ72R.js.map +1 -0
- package/dist/brief-K3FILESK.js +492 -0
- package/dist/brief-K3FILESK.js.map +1 -0
- package/dist/businesses-J7OP7MSK.js +53 -0
- package/dist/businesses-J7OP7MSK.js.map +1 -0
- package/dist/campaign-groups-N4TZ2F3L.js +95 -0
- package/dist/campaign-groups-N4TZ2F3L.js.map +1 -0
- package/dist/campaign-writes-5XA727KI.js +170 -0
- package/dist/campaign-writes-5XA727KI.js.map +1 -0
- package/dist/campaign-writes-7YFRQIQT.js +165 -0
- package/dist/campaign-writes-7YFRQIQT.js.map +1 -0
- package/dist/campaigns-JPYNVFQI.js +76 -0
- package/dist/campaigns-JPYNVFQI.js.map +1 -0
- package/dist/campaigns-L43ZUKAI.js +107 -0
- package/dist/campaigns-L43ZUKAI.js.map +1 -0
- package/dist/campaigns-OD7Z332M.js +109 -0
- package/dist/campaigns-OD7Z332M.js.map +1 -0
- package/dist/campaigns-R4DXIR2Q.js +110 -0
- package/dist/campaigns-R4DXIR2Q.js.map +1 -0
- package/dist/canvas-57K7AGAP.js +46 -0
- package/dist/canvas-57K7AGAP.js.map +1 -0
- package/dist/capabilities-FVTZAFPV.js +144 -0
- package/dist/capabilities-FVTZAFPV.js.map +1 -0
- package/dist/cards-7H32TNMO.js +85 -0
- package/dist/cards-7H32TNMO.js.map +1 -0
- package/dist/catalog-OTICZPJA.js +64 -0
- package/dist/catalog-OTICZPJA.js.map +1 -0
- package/dist/catalogs-ABCQLCDU.js +128 -0
- package/dist/catalogs-ABCQLCDU.js.map +1 -0
- package/dist/changes-7ZIGNUW6.js +135 -0
- package/dist/changes-7ZIGNUW6.js.map +1 -0
- package/dist/chatgpt-B3NHRJUE.js +47 -0
- package/dist/chatgpt-B3NHRJUE.js.map +1 -0
- package/dist/chats-E7DBRHBF.js +262 -0
- package/dist/chats-E7DBRHBF.js.map +1 -0
- package/dist/chunk-2CV7LX23.js +474 -0
- package/dist/chunk-2CV7LX23.js.map +1 -0
- package/dist/chunk-2HCI5BXB.js +479 -0
- package/dist/chunk-2HCI5BXB.js.map +1 -0
- package/dist/chunk-2SQJL7ZN.js +56 -0
- package/dist/chunk-2SQJL7ZN.js.map +1 -0
- package/dist/chunk-2Y5V23PU.js +29 -0
- package/dist/chunk-2Y5V23PU.js.map +1 -0
- package/dist/chunk-32CPGJPL.js +149 -0
- package/dist/chunk-32CPGJPL.js.map +1 -0
- package/dist/chunk-3ACMDRSE.js +39 -0
- package/dist/chunk-3ACMDRSE.js.map +1 -0
- package/dist/chunk-3N4PZIIV.js +304 -0
- package/dist/chunk-3N4PZIIV.js.map +1 -0
- package/dist/chunk-3U7TDBIB.js +275 -0
- package/dist/chunk-3U7TDBIB.js.map +1 -0
- package/dist/chunk-3UDSYYND.js +42 -0
- package/dist/chunk-3UDSYYND.js.map +1 -0
- package/dist/chunk-3ZWWXAQZ.js +150 -0
- package/dist/chunk-3ZWWXAQZ.js.map +1 -0
- package/dist/chunk-4MH6LONO.js +274 -0
- package/dist/chunk-4MH6LONO.js.map +1 -0
- package/dist/chunk-4NZ47VXO.js +137 -0
- package/dist/chunk-4NZ47VXO.js.map +1 -0
- package/dist/chunk-564AEU2Q.js +541 -0
- package/dist/chunk-564AEU2Q.js.map +1 -0
- package/dist/chunk-5HYSKH77.js +315 -0
- package/dist/chunk-5HYSKH77.js.map +1 -0
- package/dist/chunk-5MBPIONY.js +29 -0
- package/dist/chunk-5MBPIONY.js.map +1 -0
- package/dist/chunk-5OVOLYY3.js +74 -0
- package/dist/chunk-5OVOLYY3.js.map +1 -0
- package/dist/chunk-5SJ3JNNY.js +6683 -0
- package/dist/chunk-5SJ3JNNY.js.map +1 -0
- package/dist/chunk-66USKCVY.js +4410 -0
- package/dist/chunk-66USKCVY.js.map +1 -0
- package/dist/chunk-6I7SYEYN.js +166 -0
- package/dist/chunk-6I7SYEYN.js.map +1 -0
- package/dist/chunk-6O7ISBC7.js +65 -0
- package/dist/chunk-6O7ISBC7.js.map +1 -0
- package/dist/chunk-752S7JF6.js +35 -0
- package/dist/chunk-752S7JF6.js.map +1 -0
- package/dist/chunk-77DN7R35.js +228 -0
- package/dist/chunk-77DN7R35.js.map +1 -0
- package/dist/chunk-7F7MFMLI.js +175 -0
- package/dist/chunk-7F7MFMLI.js.map +1 -0
- package/dist/chunk-7THBBTJJ.js +183 -0
- package/dist/chunk-7THBBTJJ.js.map +1 -0
- package/dist/chunk-7XU3HKMX.js +1599 -0
- package/dist/chunk-7XU3HKMX.js.map +1 -0
- package/dist/chunk-AEA5JV2X.js +92 -0
- package/dist/chunk-AEA5JV2X.js.map +1 -0
- package/dist/chunk-AFJGYJ7Z.js +45 -0
- package/dist/chunk-AFJGYJ7Z.js.map +1 -0
- package/dist/chunk-AR7PU7BB.js +76 -0
- package/dist/chunk-AR7PU7BB.js.map +1 -0
- package/dist/chunk-ASL7JFBD.js +96 -0
- package/dist/chunk-ASL7JFBD.js.map +1 -0
- package/dist/chunk-AUSKKFVH.js +84 -0
- package/dist/chunk-AUSKKFVH.js.map +1 -0
- package/dist/chunk-B52DCYL2.js +159 -0
- package/dist/chunk-B52DCYL2.js.map +1 -0
- package/dist/{chunk-XHC4LMK4.js → chunk-BVM5IRZW.js} +16 -8
- package/dist/chunk-BVM5IRZW.js.map +1 -0
- package/dist/chunk-CAMX6OHF.js +3182 -0
- package/dist/chunk-CAMX6OHF.js.map +1 -0
- package/dist/chunk-CYBLKMXQ.js +310 -0
- package/dist/chunk-CYBLKMXQ.js.map +1 -0
- package/dist/chunk-CZENWCBS.js +333 -0
- package/dist/chunk-CZENWCBS.js.map +1 -0
- package/dist/chunk-D5FY4FAK.js +24 -0
- package/dist/chunk-D5FY4FAK.js.map +1 -0
- package/dist/chunk-DGCUPJZD.js +39 -0
- package/dist/chunk-DGCUPJZD.js.map +1 -0
- package/dist/chunk-DNCLWSHO.js +41 -0
- package/dist/chunk-DNCLWSHO.js.map +1 -0
- package/dist/chunk-DX4GIDO7.js +296 -0
- package/dist/chunk-DX4GIDO7.js.map +1 -0
- package/dist/chunk-EDLZGTGN.js +216 -0
- package/dist/chunk-EDLZGTGN.js.map +1 -0
- package/dist/chunk-EDNX3AOS.js +76 -0
- package/dist/chunk-EDNX3AOS.js.map +1 -0
- package/dist/chunk-EF5DP6EB.js +52 -0
- package/dist/chunk-EF5DP6EB.js.map +1 -0
- package/dist/chunk-ERSX3MKH.js +34 -0
- package/dist/chunk-ERSX3MKH.js.map +1 -0
- package/dist/chunk-F3IJSR7O.js +346 -0
- package/dist/chunk-F3IJSR7O.js.map +1 -0
- package/dist/chunk-FKOECEVC.js +126 -0
- package/dist/chunk-FKOECEVC.js.map +1 -0
- package/dist/chunk-FYWWTMXP.js +2902 -0
- package/dist/chunk-FYWWTMXP.js.map +1 -0
- package/dist/chunk-G7AFVTUS.js +106 -0
- package/dist/chunk-G7AFVTUS.js.map +1 -0
- package/dist/chunk-GIW7ABMM.js +74 -0
- package/dist/chunk-GIW7ABMM.js.map +1 -0
- package/dist/chunk-GIWHHCD6.js +145 -0
- package/dist/chunk-GIWHHCD6.js.map +1 -0
- package/dist/chunk-GPZH5ASB.js +3151 -0
- package/dist/chunk-GPZH5ASB.js.map +1 -0
- package/dist/chunk-GRQ2AXDX.js +9 -0
- package/dist/chunk-GRQ2AXDX.js.map +1 -0
- package/dist/chunk-GXDLWBOY.js +73 -0
- package/dist/chunk-GXDLWBOY.js.map +1 -0
- package/dist/chunk-GYABNLWW.js +629 -0
- package/dist/chunk-GYABNLWW.js.map +1 -0
- package/dist/chunk-H7MLHG2I.js +94 -0
- package/dist/chunk-H7MLHG2I.js.map +1 -0
- package/dist/chunk-H7XVKLIY.js +206 -0
- package/dist/chunk-H7XVKLIY.js.map +1 -0
- package/dist/chunk-HAE4WWFQ.js +455 -0
- package/dist/chunk-HAE4WWFQ.js.map +1 -0
- package/dist/chunk-HDHWIEJJ.js +136 -0
- package/dist/chunk-HDHWIEJJ.js.map +1 -0
- package/dist/chunk-HJTIBTF7.js +98 -0
- package/dist/chunk-HJTIBTF7.js.map +1 -0
- package/dist/{chunk-VZEDAFAR.js → chunk-HLXWKMTK.js} +47 -8
- package/dist/chunk-HLXWKMTK.js.map +1 -0
- package/dist/{chunk-MF7YA62W.js → chunk-HREWXNTO.js} +10 -5
- package/dist/chunk-HREWXNTO.js.map +1 -0
- package/dist/chunk-HYXKRNRV.js +176 -0
- package/dist/chunk-HYXKRNRV.js.map +1 -0
- package/dist/chunk-I3DIZWN5.js +97 -0
- package/dist/chunk-I3DIZWN5.js.map +1 -0
- package/dist/chunk-IJMWEO4P.js +57 -0
- package/dist/chunk-IJMWEO4P.js.map +1 -0
- package/dist/chunk-IOCSDFF2.js +23992 -0
- package/dist/chunk-IOCSDFF2.js.map +1 -0
- package/dist/chunk-IVIJJXXT.js +62 -0
- package/dist/chunk-IVIJJXXT.js.map +1 -0
- package/dist/chunk-J57GWTPK.js +106 -0
- package/dist/chunk-J57GWTPK.js.map +1 -0
- package/dist/chunk-JPK34QPS.js +134 -0
- package/dist/chunk-JPK34QPS.js.map +1 -0
- package/dist/chunk-JRCFCIE3.js +188 -0
- package/dist/chunk-JRCFCIE3.js.map +1 -0
- package/dist/chunk-JUAIGJ2A.js +76 -0
- package/dist/chunk-JUAIGJ2A.js.map +1 -0
- package/dist/chunk-K5OQES4V.js +58 -0
- package/dist/chunk-K5OQES4V.js.map +1 -0
- package/dist/chunk-KBS5GH4T.js +1626 -0
- package/dist/chunk-KBS5GH4T.js.map +1 -0
- package/dist/chunk-KIGGMKAE.js +66 -0
- package/dist/chunk-KIGGMKAE.js.map +1 -0
- package/dist/chunk-KKJ4KJCW.js +29 -0
- package/dist/chunk-KKJ4KJCW.js.map +1 -0
- package/dist/chunk-KLK6KQLQ.js +55 -0
- package/dist/chunk-KLK6KQLQ.js.map +1 -0
- package/dist/chunk-KUZFWMJN.js +207 -0
- package/dist/chunk-KUZFWMJN.js.map +1 -0
- package/dist/chunk-KXGG6EQM.js +382 -0
- package/dist/chunk-KXGG6EQM.js.map +1 -0
- package/dist/chunk-KXRKPZZY.js +169 -0
- package/dist/chunk-KXRKPZZY.js.map +1 -0
- package/dist/chunk-KZUHRZ2C.js +5187 -0
- package/dist/chunk-KZUHRZ2C.js.map +1 -0
- package/dist/chunk-L45A3IYV.js +1079 -0
- package/dist/chunk-L45A3IYV.js.map +1 -0
- package/dist/chunk-LA6PPSNA.js +65 -0
- package/dist/chunk-LA6PPSNA.js.map +1 -0
- package/dist/chunk-LEIQAHWF.js +25 -0
- package/dist/chunk-LEIQAHWF.js.map +1 -0
- package/dist/chunk-LERWCRY5.js +297 -0
- package/dist/chunk-LERWCRY5.js.map +1 -0
- package/dist/chunk-M6UNISGO.js +66 -0
- package/dist/chunk-M6UNISGO.js.map +1 -0
- package/dist/chunk-MGKHFGLV.js +75 -0
- package/dist/chunk-MGKHFGLV.js.map +1 -0
- package/dist/chunk-MZWC6HHA.js +455 -0
- package/dist/chunk-MZWC6HHA.js.map +1 -0
- package/dist/chunk-N3XJ434P.js +197 -0
- package/dist/chunk-N3XJ434P.js.map +1 -0
- package/dist/chunk-NFSLRRIE.js +77 -0
- package/dist/chunk-NFSLRRIE.js.map +1 -0
- package/dist/chunk-NHU33T2S.js +60 -0
- package/dist/chunk-NHU33T2S.js.map +1 -0
- package/dist/chunk-NJEZM4OB.js +51 -0
- package/dist/chunk-NJEZM4OB.js.map +1 -0
- package/dist/chunk-O6QKCJE4.js +455 -0
- package/dist/chunk-O6QKCJE4.js.map +1 -0
- package/dist/chunk-OFFAMC5H.js +225 -0
- package/dist/chunk-OFFAMC5H.js.map +1 -0
- package/dist/chunk-OHGTCFFE.js +57 -0
- package/dist/chunk-OHGTCFFE.js.map +1 -0
- package/dist/chunk-P4NSJS54.js +20 -0
- package/dist/chunk-P4NSJS54.js.map +1 -0
- package/dist/chunk-P5T7OZKV.js +26 -0
- package/dist/chunk-P5T7OZKV.js.map +1 -0
- package/dist/chunk-PFBQERWX.js +10 -0
- package/dist/chunk-PFBQERWX.js.map +1 -0
- package/dist/chunk-PKTLHYH4.js +509 -0
- package/dist/chunk-PKTLHYH4.js.map +1 -0
- package/dist/chunk-PUPEGICD.js +103 -0
- package/dist/chunk-PUPEGICD.js.map +1 -0
- package/dist/chunk-Q6ULQMWG.js +41 -0
- package/dist/chunk-Q6ULQMWG.js.map +1 -0
- package/dist/chunk-QO23YHLK.js +84 -0
- package/dist/chunk-QO23YHLK.js.map +1 -0
- package/dist/chunk-QSGIWV4P.js +337 -0
- package/dist/chunk-QSGIWV4P.js.map +1 -0
- package/dist/chunk-R5OQM7FF.js +179 -0
- package/dist/chunk-R5OQM7FF.js.map +1 -0
- package/dist/chunk-RFB6RYKA.js +111 -0
- package/dist/chunk-RFB6RYKA.js.map +1 -0
- package/dist/chunk-RGIXQEGJ.js +502 -0
- package/dist/chunk-RGIXQEGJ.js.map +1 -0
- package/dist/chunk-RODLBWIR.js +592 -0
- package/dist/chunk-RODLBWIR.js.map +1 -0
- package/dist/chunk-S4LZ7KTG.js +160 -0
- package/dist/chunk-S4LZ7KTG.js.map +1 -0
- package/dist/chunk-SHTESUB6.js +1442 -0
- package/dist/chunk-SHTESUB6.js.map +1 -0
- package/dist/chunk-SJH4EOZH.js +23 -0
- package/dist/chunk-SJH4EOZH.js.map +1 -0
- package/dist/chunk-SLB46MSS.js +64 -0
- package/dist/chunk-SLB46MSS.js.map +1 -0
- package/dist/chunk-SMIENBNX.js +6212 -0
- package/dist/chunk-SMIENBNX.js.map +1 -0
- package/dist/chunk-T7GT22KA.js +494 -0
- package/dist/chunk-T7GT22KA.js.map +1 -0
- package/dist/chunk-T7M4WFNV.js +172 -0
- package/dist/chunk-T7M4WFNV.js.map +1 -0
- package/dist/chunk-TLQ23DDW.js +19 -0
- package/dist/chunk-TLQ23DDW.js.map +1 -0
- package/dist/chunk-TMIDUSOR.js +665 -0
- package/dist/chunk-TMIDUSOR.js.map +1 -0
- package/dist/{chunk-WLDM2TRF.js → chunk-TPXI2GCW.js} +4 -4
- package/dist/chunk-U6VRBDNQ.js +1830 -0
- package/dist/chunk-U6VRBDNQ.js.map +1 -0
- package/dist/chunk-U7BBXM67.js +1743 -0
- package/dist/chunk-U7BBXM67.js.map +1 -0
- package/dist/chunk-UI6BKYQD.js +225 -0
- package/dist/chunk-UI6BKYQD.js.map +1 -0
- package/dist/chunk-UOI5S62H.js +846 -0
- package/dist/chunk-UOI5S62H.js.map +1 -0
- package/dist/chunk-USL5ARRE.js +26 -0
- package/dist/chunk-USL5ARRE.js.map +1 -0
- package/dist/chunk-UYC45JNS.js +139 -0
- package/dist/chunk-UYC45JNS.js.map +1 -0
- package/dist/chunk-VNKVBY54.js +363 -0
- package/dist/chunk-VNKVBY54.js.map +1 -0
- package/dist/chunk-VS4C7VAR.js +533 -0
- package/dist/chunk-VS4C7VAR.js.map +1 -0
- package/dist/chunk-W4W4ZRBP.js +191 -0
- package/dist/chunk-W4W4ZRBP.js.map +1 -0
- package/dist/chunk-WN4KX7GE.js +25 -0
- package/dist/chunk-WN4KX7GE.js.map +1 -0
- package/dist/chunk-WNFTXSGR.js +111 -0
- package/dist/chunk-WNFTXSGR.js.map +1 -0
- package/dist/chunk-WOTDHRNF.js +2109 -0
- package/dist/chunk-WOTDHRNF.js.map +1 -0
- package/dist/chunk-XGWKTYXQ.js +67 -0
- package/dist/chunk-XGWKTYXQ.js.map +1 -0
- package/dist/chunk-XIGIJJSF.js +66 -0
- package/dist/chunk-XIGIJJSF.js.map +1 -0
- package/dist/chunk-XNUXB63I.js +817 -0
- package/dist/chunk-XNUXB63I.js.map +1 -0
- package/dist/chunk-XQ3CCNJD.js +610 -0
- package/dist/chunk-XQ3CCNJD.js.map +1 -0
- package/dist/chunk-XX6ZMCY5.js +4227 -0
- package/dist/chunk-XX6ZMCY5.js.map +1 -0
- package/dist/chunk-Y362QH54.js +98 -0
- package/dist/chunk-Y362QH54.js.map +1 -0
- package/dist/chunk-Y4T6ATDQ.js +74 -0
- package/dist/chunk-Y4T6ATDQ.js.map +1 -0
- package/dist/chunk-YQSBHWOI.js +41 -0
- package/dist/chunk-YU26SDNT.js +46 -0
- package/dist/chunk-YU26SDNT.js.map +1 -0
- package/dist/chunk-YULENNA7.js +501 -0
- package/dist/chunk-YULENNA7.js.map +1 -0
- package/dist/chunk-YYSZYSAG.js +150 -0
- package/dist/chunk-YYSZYSAG.js.map +1 -0
- package/dist/chunk-Z3ENMCFE.js +94 -0
- package/dist/chunk-Z3ENMCFE.js.map +1 -0
- package/dist/chunk-ZH7ZM3ZM.js +125 -0
- package/dist/chunk-ZH7ZM3ZM.js.map +1 -0
- package/dist/chunk-ZIXHS6AM.js +42 -0
- package/dist/chunk-ZIXHS6AM.js.map +1 -0
- package/dist/chunk-ZLLJKSNS.js +96 -0
- package/dist/chunk-ZLLJKSNS.js.map +1 -0
- package/dist/claim-LF6VQ7OR.js +197 -0
- package/dist/claim-LF6VQ7OR.js.map +1 -0
- package/dist/cli.js +104 -70026
- package/dist/cli.js.map +1 -1
- package/dist/client-26SAJ46D.js +19 -0
- package/dist/code-MOWYJMDH.js +76 -0
- package/dist/code-MOWYJMDH.js.map +1 -0
- package/dist/companies-6HSK5BLK.js +195 -0
- package/dist/companies-6HSK5BLK.js.map +1 -0
- package/dist/complete-2PUAFQEC.js +81 -0
- package/dist/complete-2PUAFQEC.js.map +1 -0
- package/dist/config-X6GKOVQ6.js +88 -0
- package/dist/config-X6GKOVQ6.js.map +1 -0
- package/dist/connect-RXPMAJQI.js +42 -0
- package/dist/content-UYZC4AKN.js +85 -0
- package/dist/content-UYZC4AKN.js.map +1 -0
- package/dist/conversation-Y3NB2VDI.js +93 -0
- package/dist/conversation-Y3NB2VDI.js.map +1 -0
- package/dist/conversion-report-R4GJWWTK.js +125 -0
- package/dist/conversion-report-R4GJWWTK.js.map +1 -0
- package/dist/conversion-upload-command-YP4DGTPP.js +438 -0
- package/dist/conversion-upload-command-YP4DGTPP.js.map +1 -0
- package/dist/conversion-writes-WHFFUWWL.js +120 -0
- package/dist/conversion-writes-WHFFUWWL.js.map +1 -0
- package/dist/conversions-K7C32DPW.js +135 -0
- package/dist/conversions-K7C32DPW.js.map +1 -0
- package/dist/conversions-OXJAX5GB.js +76 -0
- package/dist/conversions-OXJAX5GB.js.map +1 -0
- package/dist/countries-PBXNB3BR.js +82 -0
- package/dist/countries-PBXNB3BR.js.map +1 -0
- package/dist/create-AJ4KPSJ4.js +59 -0
- package/dist/create-AJ4KPSJ4.js.map +1 -0
- package/dist/create-ALKOAD5J.js +138 -0
- package/dist/create-ALKOAD5J.js.map +1 -0
- package/dist/create-HTKZMXKB.js +207 -0
- package/dist/create-HTKZMXKB.js.map +1 -0
- package/dist/create-TZMAOFBR.js +236 -0
- package/dist/create-TZMAOFBR.js.map +1 -0
- package/dist/creatives-BJYJFVXJ.js +51 -0
- package/dist/creatives-BJYJFVXJ.js.map +1 -0
- package/dist/creatives-OZHVU4WB.js +182 -0
- package/dist/creatives-OZHVU4WB.js.map +1 -0
- package/dist/creatives-VMGY5SU4.js +87 -0
- package/dist/creatives-VMGY5SU4.js.map +1 -0
- package/dist/credentials-FY4UH6TF.js +287 -0
- package/dist/credentials-FY4UH6TF.js.map +1 -0
- package/dist/critique-B3H7QFM2.js +1449 -0
- package/dist/critique-B3H7QFM2.js.map +1 -0
- package/dist/critique-YZBOA27H.js +216 -0
- package/dist/critique-YZBOA27H.js.map +1 -0
- package/dist/crm-2IBLUHDB.js +318 -0
- package/dist/crm-2IBLUHDB.js.map +1 -0
- package/dist/crm-YMYO4U53.js +224 -0
- package/dist/crm-YMYO4U53.js.map +1 -0
- package/dist/crop-U3AD4DDR.js +113 -0
- package/dist/crop-U3AD4DDR.js.map +1 -0
- package/dist/currency-S6KWZSZ6.js +88 -0
- package/dist/currency-S6KWZSZ6.js.map +1 -0
- package/dist/custom-conversions-FABS6YVT.js +125 -0
- package/dist/custom-conversions-FABS6YVT.js.map +1 -0
- package/dist/customers-P6LLLJHK.js +56 -0
- package/dist/decide-YTHCBKM6.js +199 -0
- package/dist/decide-YTHCBKM6.js.map +1 -0
- package/dist/delete-B2TDEW7H.js +63 -0
- package/dist/delete-B2TDEW7H.js.map +1 -0
- package/dist/delete-DZUDLYPC.js +69 -0
- package/dist/delete-DZUDLYPC.js.map +1 -0
- package/dist/delete-NZGZP4YP.js +71 -0
- package/dist/delete-NZGZP4YP.js.map +1 -0
- package/dist/delete-SDOZNDWQ.js +54 -0
- package/dist/delete-SDOZNDWQ.js.map +1 -0
- package/dist/delete-VQMU56OH.js +71 -0
- package/dist/delete-VQMU56OH.js.map +1 -0
- package/dist/delete-WKQPMVAM.js +66 -0
- package/dist/delete-WKQPMVAM.js.map +1 -0
- package/dist/demographics-Q3DCXULY.js +138 -0
- package/dist/demographics-Q3DCXULY.js.map +1 -0
- package/dist/describe-JNTCQZNL.js +97 -0
- package/dist/describe-JNTCQZNL.js.map +1 -0
- package/dist/describe-MT4334NG.js +97 -0
- package/dist/describe-MT4334NG.js.map +1 -0
- package/dist/dimensions-FEZUJRAG.js +101 -0
- package/dist/dimensions-FEZUJRAG.js.map +1 -0
- package/dist/discard-NEZM5CHF.js +66 -0
- package/dist/discard-NEZM5CHF.js.map +1 -0
- package/dist/discover-4GD7QSF5.js +93 -0
- package/dist/discover-4GD7QSF5.js.map +1 -0
- package/dist/discover-6K3IOYXR.js +172 -0
- package/dist/discover-6K3IOYXR.js.map +1 -0
- package/dist/domain-7Y256IDR.js +98 -0
- package/dist/domain-7Y256IDR.js.map +1 -0
- package/dist/download-L27HWEOE.js +299 -0
- package/dist/download-L27HWEOE.js.map +1 -0
- package/dist/draft-25G2P2TE.js +281 -0
- package/dist/draft-25G2P2TE.js.map +1 -0
- package/dist/draft-F6TUGXAY.js +307 -0
- package/dist/draft-F6TUGXAY.js.map +1 -0
- package/dist/draft-KLULNBWP.js +233 -0
- package/dist/draft-KLULNBWP.js.map +1 -0
- package/dist/draft-LY5ZPF73.js +217 -0
- package/dist/draft-LY5ZPF73.js.map +1 -0
- package/dist/draft-M4ZHDQ46.js +306 -0
- package/dist/draft-M4ZHDQ46.js.map +1 -0
- package/dist/draft-MI7RWY2K.js +100 -0
- package/dist/draft-MI7RWY2K.js.map +1 -0
- package/dist/draft-P4IVYTY3.js +103 -0
- package/dist/draft-P4IVYTY3.js.map +1 -0
- package/dist/draft-QQMCVDDS.js +328 -0
- package/dist/draft-QQMCVDDS.js.map +1 -0
- package/dist/engine/index.d.ts +213 -127
- package/dist/engine/index.js +18 -4
- package/dist/{env-4P5HOGNA.js → env-FBTHZKGN.js} +12 -2
- package/dist/env-FBTHZKGN.js.map +1 -0
- package/dist/experiment-HDYTJPUY.js +1397 -0
- package/dist/experiment-HDYTJPUY.js.map +1 -0
- package/dist/export-TS5GYEMA.js +168 -0
- package/dist/export-TS5GYEMA.js.map +1 -0
- package/dist/extract-QVQFUOIK.js +113 -0
- package/dist/extract-QVQFUOIK.js.map +1 -0
- package/dist/facets-7MBSM7BP.js +114 -0
- package/dist/facets-7MBSM7BP.js.map +1 -0
- package/dist/favorites-7QP7BY5K.js +178 -0
- package/dist/favorites-7QP7BY5K.js.map +1 -0
- package/dist/feed-EETRO2FG.js +177 -0
- package/dist/feed-EETRO2FG.js.map +1 -0
- package/dist/feedback-ZOUL22TP.js +66 -0
- package/dist/feedback-ZOUL22TP.js.map +1 -0
- package/dist/feedback-record-XFFJRKS6.js +177 -0
- package/dist/feedback-record-XFFJRKS6.js.map +1 -0
- package/dist/fetch-QE3EB756.js +176 -0
- package/dist/fetch-QE3EB756.js.map +1 -0
- package/dist/fetch-Z7O3ZL4D.js +139 -0
- package/dist/fetch-Z7O3ZL4D.js.map +1 -0
- package/dist/find-KAQ6JDMO.js +134 -0
- package/dist/find-KAQ6JDMO.js.map +1 -0
- package/dist/fit-MY5GVZZZ.js +45 -0
- package/dist/fit-MY5GVZZZ.js.map +1 -0
- package/dist/flows-C67KEMDU.js +247 -0
- package/dist/flows-C67KEMDU.js.map +1 -0
- package/dist/follow-IX4XVK5Y.js +94 -0
- package/dist/follow-IX4XVK5Y.js.map +1 -0
- package/dist/follow-competitors-UZBUOYTH.js +112 -0
- package/dist/follow-competitors-UZBUOYTH.js.map +1 -0
- package/dist/following-VGOIUCIZ.js +113 -0
- package/dist/following-VGOIUCIZ.js.map +1 -0
- package/dist/fonts-UR7XZ5XZ.js +34 -0
- package/dist/fonts-UR7XZ5XZ.js.map +1 -0
- package/dist/forecast-3F4SZNAK.js +104 -0
- package/dist/forecast-3F4SZNAK.js.map +1 -0
- package/dist/forecast-K5E7CTKX.js +168 -0
- package/dist/forecast-K5E7CTKX.js.map +1 -0
- package/dist/funding-H5YO37OW.js +85 -0
- package/dist/funding-H5YO37OW.js.map +1 -0
- package/dist/funnel-2PPEPAMY.js +394 -0
- package/dist/funnel-2PPEPAMY.js.map +1 -0
- package/dist/ga4-YHJ2XMLC.js +55 -0
- package/dist/ga4-YHJ2XMLC.js.map +1 -0
- package/dist/generate-M2ZX5DMI.js +262 -0
- package/dist/generate-M2ZX5DMI.js.map +1 -0
- package/dist/get-4EYKCZ6F.js +59 -0
- package/dist/get-4EYKCZ6F.js.map +1 -0
- package/dist/get-637GALM2.js +63 -0
- package/dist/get-637GALM2.js.map +1 -0
- package/dist/get-AZARFR6O.js +61 -0
- package/dist/get-AZARFR6O.js.map +1 -0
- package/dist/get-BPMEHRUG.js +56 -0
- package/dist/get-BPMEHRUG.js.map +1 -0
- package/dist/get-MQ6MMIZ7.js +78 -0
- package/dist/get-MQ6MMIZ7.js.map +1 -0
- package/dist/get-N4BPOQCB.js +63 -0
- package/dist/get-N4BPOQCB.js.map +1 -0
- package/dist/get-RPZHLQ56.js +92 -0
- package/dist/get-RPZHLQ56.js.map +1 -0
- package/dist/gif-6PRTB2VR.js +94 -0
- package/dist/gif-6PRTB2VR.js.map +1 -0
- package/dist/google-4XAYE4OI.js +3190 -0
- package/dist/google-4XAYE4OI.js.map +1 -0
- package/dist/google-52JRH7X3.js +136 -0
- package/dist/google-52JRH7X3.js.map +1 -0
- package/dist/google-ads-PWX7OF5Z.js +195 -0
- package/dist/google-ads-PWX7OF5Z.js.map +1 -0
- package/dist/group-AAZ5QKC3.js +43 -0
- package/dist/group-AAZ5QKC3.js.map +1 -0
- package/dist/group-GSYCZORC.js +43 -0
- package/dist/group-GSYCZORC.js.map +1 -0
- package/dist/gsc-TS5T7ML2.js +30 -0
- package/dist/gsc-TS5T7ML2.js.map +1 -0
- package/dist/history-EW6LFFCX.js +67 -0
- package/dist/history-EW6LFFCX.js.map +1 -0
- package/dist/history-XI5ABCFO.js +133 -0
- package/dist/history-XI5ABCFO.js.map +1 -0
- package/dist/hubspot-AVUOILRE.js +779 -0
- package/dist/hubspot-AVUOILRE.js.map +1 -0
- package/dist/icon-K75KI6BV.js +137 -0
- package/dist/icon-K75KI6BV.js.map +1 -0
- package/dist/ideas-UCPV3KTM.js +35 -0
- package/dist/ideas-UCPV3KTM.js.map +1 -0
- package/dist/images-CD53I2W5.js +90 -0
- package/dist/images-CD53I2W5.js.map +1 -0
- package/dist/improve-L3BW4EQG.js +86 -0
- package/dist/improve-L3BW4EQG.js.map +1 -0
- package/dist/ingest-KRJOYTCQ.js +107 -0
- package/dist/ingest-KRJOYTCQ.js.map +1 -0
- package/dist/ingest-WE3SPPND.js +23 -0
- package/dist/ingest-WE3SPPND.js.map +1 -0
- package/dist/insights-PELVD4RY.js +122 -0
- package/dist/insights-PELVD4RY.js.map +1 -0
- package/dist/insights-XCA4BUJW.js +423 -0
- package/dist/insights-XCA4BUJW.js.map +1 -0
- package/dist/inspect-QKETG5UJ.js +189 -0
- package/dist/inspect-QKETG5UJ.js.map +1 -0
- package/dist/inspiration-Y2J2PUPC.js +53 -0
- package/dist/inspiration-Y2J2PUPC.js.map +1 -0
- package/dist/intent-YJOJGNVJ.js +95 -0
- package/dist/intent-YJOJGNVJ.js.map +1 -0
- package/dist/job-E2U4FS5P.js +202 -0
- package/dist/job-E2U4FS5P.js.map +1 -0
- package/dist/job-create-DFYCHVQ7.js +109 -0
- package/dist/job-create-DFYCHVQ7.js.map +1 -0
- package/dist/job-status-FFPMTSHB.js +74 -0
- package/dist/job-status-FFPMTSHB.js.map +1 -0
- package/dist/keep-GYZS2UTL.js +78 -0
- package/dist/keep-GYZS2UTL.js.map +1 -0
- package/dist/keyword-gap-QU7O7UKC.js +130 -0
- package/dist/keyword-gap-QU7O7UKC.js.map +1 -0
- package/dist/keyword-metrics-HLCM3QU7.js +197 -0
- package/dist/keyword-metrics-HLCM3QU7.js.map +1 -0
- package/dist/keywords-for-site-BDKPQKWB.js +128 -0
- package/dist/keywords-for-site-BDKPQKWB.js.map +1 -0
- package/dist/landing-4K6XYNFM.js +28 -0
- package/dist/landing-4K6XYNFM.js.map +1 -0
- package/dist/landings-F7LOAEJE.js +151 -0
- package/dist/landings-F7LOAEJE.js.map +1 -0
- package/dist/languages-P3ZM6R2A.js +40 -0
- package/dist/languages-P3ZM6R2A.js.map +1 -0
- package/dist/languages-XEJKTIFP.js +55 -0
- package/dist/languages-XEJKTIFP.js.map +1 -0
- package/dist/launches-TCFAYUA5.js +19 -0
- package/dist/launches-TCFAYUA5.js.map +1 -0
- package/dist/layerize-ZSKFIPZA.js +190 -0
- package/dist/layerize-ZSKFIPZA.js.map +1 -0
- package/dist/leads-GDF4S2AM.js +90 -0
- package/dist/leads-GDF4S2AM.js.map +1 -0
- package/dist/leads-TPB5OFSQ.js +293 -0
- package/dist/leads-TPB5OFSQ.js.map +1 -0
- package/dist/learn-NMFEA5H5.js +203 -0
- package/dist/learn-NMFEA5H5.js.map +1 -0
- package/dist/library-IP2UKNRU.js +109 -0
- package/dist/library-IP2UKNRU.js.map +1 -0
- package/dist/lighthouse-57XBJRCO.js +75 -0
- package/dist/lighthouse-57XBJRCO.js.map +1 -0
- package/dist/line-item-writes-O6SSS5NQ.js +208 -0
- package/dist/line-item-writes-O6SSS5NQ.js.map +1 -0
- package/dist/line-items-ZZAKH3YZ.js +103 -0
- package/dist/line-items-ZZAKH3YZ.js.map +1 -0
- package/dist/link-CRY57R3E.js +64 -0
- package/dist/link-CRY57R3E.js.map +1 -0
- package/dist/linkedin-WC7LGYPP.js +1008 -0
- package/dist/linkedin-WC7LGYPP.js.map +1 -0
- package/dist/list-6IKPWQGG.js +57 -0
- package/dist/list-6IKPWQGG.js.map +1 -0
- package/dist/list-CAUH3BMG.js +65 -0
- package/dist/list-CAUH3BMG.js.map +1 -0
- package/dist/list-CWAKX5TH.js +63 -0
- package/dist/list-CWAKX5TH.js.map +1 -0
- package/dist/list-FJ5FSVL6.js +151 -0
- package/dist/list-FJ5FSVL6.js.map +1 -0
- package/dist/list-GTOSN7DP.js +50 -0
- package/dist/list-GTOSN7DP.js.map +1 -0
- package/dist/list-HLJP4NVE.js +51 -0
- package/dist/list-HLJP4NVE.js.map +1 -0
- package/dist/list-LCUPF7EF.js +76 -0
- package/dist/list-LCUPF7EF.js.map +1 -0
- package/dist/list-NH4ZRZTL.js +303 -0
- package/dist/list-NH4ZRZTL.js.map +1 -0
- package/dist/locations-2BYWKIYA.js +67 -0
- package/dist/locations-2BYWKIYA.js.map +1 -0
- package/dist/locations-LVVDOSXO.js +40 -0
- package/dist/locations-LVVDOSXO.js.map +1 -0
- package/dist/log-6JOWOY5G.js +92 -0
- package/dist/log-6JOWOY5G.js.map +1 -0
- package/dist/logo-AJK2TDQU.js +18 -0
- package/dist/logo-AJK2TDQU.js.map +1 -0
- package/dist/lookup-H5GEM77H.js +22 -0
- package/dist/lookup-H5GEM77H.js.map +1 -0
- package/dist/make-Q2AMLCWE.js +640 -0
- package/dist/make-Q2AMLCWE.js.map +1 -0
- package/dist/map-4KOYFHAN.js +404 -0
- package/dist/map-4KOYFHAN.js.map +1 -0
- package/dist/mcp-LSS2DHYL.js +463 -0
- package/dist/mcp-LSS2DHYL.js.map +1 -0
- package/dist/media-JBCN6V4X.js +15 -0
- package/dist/media-JBCN6V4X.js.map +1 -0
- package/dist/media-RAGEJTZX.js +89 -0
- package/dist/media-RAGEJTZX.js.map +1 -0
- package/dist/media-sources-GSPAV7HT.js +32 -0
- package/dist/media-sources-GSPAV7HT.js.map +1 -0
- package/dist/members-GUUVEK2Y.js +44 -0
- package/dist/members-GUUVEK2Y.js.map +1 -0
- package/dist/meta-Z37ZR3PJ.js +69 -0
- package/dist/meta-Z37ZR3PJ.js.map +1 -0
- package/dist/metrics-KW6SDULI.js +152 -0
- package/dist/metrics-KW6SDULI.js.map +1 -0
- package/dist/models-5J4WFUD3.js +155 -0
- package/dist/models-5J4WFUD3.js.map +1 -0
- package/dist/normalize-DSFVTRXN.js +806 -0
- package/dist/normalize-DSFVTRXN.js.map +1 -0
- package/dist/normalize-EUDI5HEM.js +141 -0
- package/dist/normalize-EUDI5HEM.js.map +1 -0
- package/dist/options-P4PPJQH4.js +121 -0
- package/dist/options-P4PPJQH4.js.map +1 -0
- package/dist/output-DTCLVPUF.js +24 -0
- package/dist/output-DTCLVPUF.js.map +1 -0
- package/dist/page-N2ZO3O7F.js +105 -0
- package/dist/page-N2ZO3O7F.js.map +1 -0
- package/dist/pages-FQ4CBAJ2.js +66 -0
- package/dist/pages-FQ4CBAJ2.js.map +1 -0
- package/dist/performance-A66LYIZX.js +24 -0
- package/dist/performance-A66LYIZX.js.map +1 -0
- package/dist/pinterest-NV5XTNJE.js +96 -0
- package/dist/pinterest-NV5XTNJE.js.map +1 -0
- package/dist/pixels-CTJ43FZ4.js +108 -0
- package/dist/pixels-CTJ43FZ4.js.map +1 -0
- package/dist/pixels-HKINGZCH.js +60 -0
- package/dist/pixels-HKINGZCH.js.map +1 -0
- package/dist/plan-ZYTWLGWK.js +207 -0
- package/dist/plan-ZYTWLGWK.js.map +1 -0
- package/dist/preview-5ROBOQG7.js +169 -0
- package/dist/preview-5ROBOQG7.js.map +1 -0
- package/dist/profile-Q3PHR6FU.js +159 -0
- package/dist/profile-Q3PHR6FU.js.map +1 -0
- package/dist/promoted-tweet-writes-AEOUK2LK.js +180 -0
- package/dist/promoted-tweet-writes-AEOUK2LK.js.map +1 -0
- package/dist/promoted-tweets-L2CEC2BJ.js +119 -0
- package/dist/promoted-tweets-L2CEC2BJ.js.map +1 -0
- package/dist/properties-WLL6M2P6.js +101 -0
- package/dist/properties-WLL6M2P6.js.map +1 -0
- package/dist/publish-KHNR5ARF.js +322 -0
- package/dist/publish-KHNR5ARF.js.map +1 -0
- package/dist/query-A34J7BGX.js +61 -0
- package/dist/query-A34J7BGX.js.map +1 -0
- package/dist/query-IYZN5KHO.js +236 -0
- package/dist/query-IYZN5KHO.js.map +1 -0
- package/dist/query-UN2P6DBA.js +247 -0
- package/dist/query-UN2P6DBA.js.map +1 -0
- package/dist/questionnaire-Z2ZIKNBV.js +93 -0
- package/dist/questionnaire-Z2ZIKNBV.js.map +1 -0
- package/dist/read-GM7PQYJA.js +141 -0
- package/dist/read-GM7PQYJA.js.map +1 -0
- package/dist/reddit-5NPFULGD.js +26 -0
- package/dist/reddit-5NPFULGD.js.map +1 -0
- package/dist/refresh-FGXW4Y4X.js +94 -0
- package/dist/refresh-FGXW4Y4X.js.map +1 -0
- package/dist/release-OKZMC73N.js +60 -0
- package/dist/release-OKZMC73N.js.map +1 -0
- package/dist/relevant-pages-J76ZKNKF.js +99 -0
- package/dist/relevant-pages-J76ZKNKF.js.map +1 -0
- package/dist/remove-CA2J6ACH.js +50 -0
- package/dist/remove-CA2J6ACH.js.map +1 -0
- package/dist/remove-GOYW2G4R.js +48 -0
- package/dist/remove-GOYW2G4R.js.map +1 -0
- package/dist/reopen-XPKSOE6O.js +63 -0
- package/dist/reopen-XPKSOE6O.js.map +1 -0
- package/dist/rerun-2ERJV4WC.js +86 -0
- package/dist/rerun-2ERJV4WC.js.map +1 -0
- package/dist/research-FZ63UZTE.js +62 -0
- package/dist/research-FZ63UZTE.js.map +1 -0
- package/dist/research-YGQQ6CNG.js +262 -0
- package/dist/research-YGQQ6CNG.js.map +1 -0
- package/dist/reset-BGPZ4HMA.js +54 -0
- package/dist/reset-BGPZ4HMA.js.map +1 -0
- package/dist/reset-HTD6LCIT.js +54 -0
- package/dist/reset-HTD6LCIT.js.map +1 -0
- package/dist/resolve-NRDZ6N2B.js +121 -0
- package/dist/resolve-NRDZ6N2B.js.map +1 -0
- package/dist/retry-PF4BGKJV.js +60 -0
- package/dist/retry-PF4BGKJV.js.map +1 -0
- package/dist/retry-XL26JDAV.js +62 -0
- package/dist/retry-XL26JDAV.js.map +1 -0
- package/dist/retry-failed-BEFWRV4Z.js +45 -0
- package/dist/retry-failed-BEFWRV4Z.js.map +1 -0
- package/dist/run-EMJLI7LR.js +65 -0
- package/dist/run-EMJLI7LR.js.map +1 -0
- package/dist/run-L5K44UEA.js +61 -0
- package/dist/run-L5K44UEA.js.map +1 -0
- package/dist/scaffold-ad-AY2OL7RI.js +1550 -0
- package/dist/scaffold-ad-AY2OL7RI.js.map +1 -0
- package/dist/scaffold-static-ad-FXYE46MT.js +973 -0
- package/dist/scaffold-static-ad-FXYE46MT.js.map +1 -0
- package/dist/scaffold-video-533BT6RX.js +874 -0
- package/dist/scaffold-video-533BT6RX.js.map +1 -0
- package/dist/schedule-KQ7UIR3N.js +66 -0
- package/dist/schedule-KQ7UIR3N.js.map +1 -0
- package/dist/schedule-PKPNSISL.js +61 -0
- package/dist/schedule-PKPNSISL.js.map +1 -0
- package/dist/scheduled-agents-LP5LITA3.js +49 -0
- package/dist/scheduled-agents-LP5LITA3.js.map +1 -0
- package/dist/schema-B6J6VPTO.js +132 -0
- package/dist/schema-B6J6VPTO.js.map +1 -0
- package/dist/schema-QXTDLZVC.js +63 -0
- package/dist/schema-QXTDLZVC.js.map +1 -0
- package/dist/scrape-7YKJWFZE.js +2241 -0
- package/dist/scrape-7YKJWFZE.js.map +1 -0
- package/dist/screenshot-ZHBSG3SI.js +102 -0
- package/dist/screenshot-ZHBSG3SI.js.map +1 -0
- package/dist/search-332KFYZ6.js +224 -0
- package/dist/search-332KFYZ6.js.map +1 -0
- package/dist/search-4PBMXXUY.js +91 -0
- package/dist/search-4PBMXXUY.js.map +1 -0
- package/dist/search-6WNUKCMP.js +174 -0
- package/dist/search-6WNUKCMP.js.map +1 -0
- package/dist/search-AVNUU6TJ.js +26 -0
- package/dist/search-AVNUU6TJ.js.map +1 -0
- package/dist/search-F5INRFFK.js +92 -0
- package/dist/search-F5INRFFK.js.map +1 -0
- package/dist/search-copy-DZVBYG2B.js +168 -0
- package/dist/search-copy-DZVBYG2B.js.map +1 -0
- package/dist/seeds-5JTQN5WI.js +101 -0
- package/dist/seeds-5JTQN5WI.js.map +1 -0
- package/dist/select-RSGLDQ5Z.js +96 -0
- package/dist/select-RSGLDQ5Z.js.map +1 -0
- package/dist/sends-3L6QBS46.js +309 -0
- package/dist/sends-3L6QBS46.js.map +1 -0
- package/dist/sequences-YKFV7BDH.js +146 -0
- package/dist/sequences-YKFV7BDH.js.map +1 -0
- package/dist/set-prompt-7WWJI6XW.js +188 -0
- package/dist/set-prompt-7WWJI6XW.js.map +1 -0
- package/dist/setup-links-6H5ONDCQ.js +141 -0
- package/dist/setup-links-6H5ONDCQ.js.map +1 -0
- package/dist/{shared-6762QE6R.js → shared-QAMP7FZV.js} +8 -6
- package/dist/shared-QAMP7FZV.js.map +1 -0
- package/dist/shopify-2OY3J3OY.js +3692 -0
- package/dist/shopify-2OY3J3OY.js.map +1 -0
- package/dist/site-TBPERLY3.js +177 -0
- package/dist/site-TBPERLY3.js.map +1 -0
- package/dist/sitemaps-XPGLW24S.js +87 -0
- package/dist/sitemaps-XPGLW24S.js.map +1 -0
- package/dist/sites-WMBY2HJV.js +101 -0
- package/dist/sites-WMBY2HJV.js.map +1 -0
- package/dist/skills-3HEILQCU.js +47 -0
- package/dist/skills-3HEILQCU.js.map +1 -0
- package/dist/sources-JFQKTK2L.js +421 -0
- package/dist/sources-JFQKTK2L.js.map +1 -0
- package/dist/sources-Q3I6DDV7.js +30 -0
- package/dist/sources-Q3I6DDV7.js.map +1 -0
- package/dist/stale-CAXBLZKJ.js +66 -0
- package/dist/stale-CAXBLZKJ.js.map +1 -0
- package/dist/stats-GNILHSKK.js +34 -0
- package/dist/stats-GNILHSKK.js.map +1 -0
- package/dist/status-LIZWJYS4.js +62 -0
- package/dist/status-LIZWJYS4.js.map +1 -0
- package/dist/sticker-KCV3VZHY.js +94 -0
- package/dist/sticker-KCV3VZHY.js.map +1 -0
- package/dist/stock-VTORKR4C.js +179 -0
- package/dist/stock-VTORKR4C.js.map +1 -0
- package/dist/studio-QCRA6BY5.js +49 -0
- package/dist/studio-QCRA6BY5.js.map +1 -0
- package/dist/sync-455DB46Y.js +54 -0
- package/dist/sync-455DB46Y.js.map +1 -0
- package/dist/sync-A4KKQ3B6.js +265 -0
- package/dist/sync-A4KKQ3B6.js.map +1 -0
- package/dist/sync-ULKWDFXM.js +54 -0
- package/dist/sync-ULKWDFXM.js.map +1 -0
- package/dist/sync-definition-P6QTHJJ6.js +55 -0
- package/dist/sync-definition-P6QTHJJ6.js.map +1 -0
- package/dist/tag-manager-E7QTXBWQ.js +43 -0
- package/dist/tag-manager-E7QTXBWQ.js.map +1 -0
- package/dist/tags-4Q4I5GQJ.js +20 -0
- package/dist/tags-4Q4I5GQJ.js.map +1 -0
- package/dist/tags-AMEVAQZ4.js +26 -0
- package/dist/tags-AMEVAQZ4.js.map +1 -0
- package/dist/tags-DPLOLH3E.js +20 -0
- package/dist/tags-DPLOLH3E.js.map +1 -0
- package/dist/tags-LDHXONR3.js +224 -0
- package/dist/tags-LDHXONR3.js.map +1 -0
- package/dist/tags-UW3WJTAQ.js +20 -0
- package/dist/tags-UW3WJTAQ.js.map +1 -0
- package/dist/targeting-constants-D64YO3E7.js +118 -0
- package/dist/targeting-constants-D64YO3E7.js.map +1 -0
- package/dist/targeting-criteria-BP6VJA7X.js +113 -0
- package/dist/targeting-criteria-BP6VJA7X.js.map +1 -0
- package/dist/targets-CQWO2UXD.js +102 -0
- package/dist/targets-CQWO2UXD.js.map +1 -0
- package/dist/templates-WZSTNRNZ.js +178 -0
- package/dist/templates-WZSTNRNZ.js.map +1 -0
- package/dist/testimonials-ETHSNWUH.js +32 -0
- package/dist/testimonials-ETHSNWUH.js.map +1 -0
- package/dist/themes-YU663LQH.js +94 -0
- package/dist/themes-YU663LQH.js.map +1 -0
- package/dist/top-companies-KTXHS472.js +108 -0
- package/dist/top-companies-KTXHS472.js.map +1 -0
- package/dist/translate-A7LYHUW3.js +600 -0
- package/dist/translate-A7LYHUW3.js.map +1 -0
- package/dist/triggers-4EDFLNGH.js +141 -0
- package/dist/triggers-4EDFLNGH.js.map +1 -0
- package/dist/tweets-ZUKQAAUQ.js +123 -0
- package/dist/tweets-ZUKQAAUQ.js.map +1 -0
- package/dist/unfollow-A4JVCJBF.js +46 -0
- package/dist/unfollow-A4JVCJBF.js.map +1 -0
- package/dist/unlink-KY2OEKMD.js +67 -0
- package/dist/unlink-KY2OEKMD.js.map +1 -0
- package/dist/unstage-FHUG67RI.js +84 -0
- package/dist/unstage-FHUG67RI.js.map +1 -0
- package/dist/unstage-ZRLLCSQF.js +95 -0
- package/dist/unstage-ZRLLCSQF.js.map +1 -0
- package/dist/update-27LGM65V.js +63 -0
- package/dist/update-27LGM65V.js.map +1 -0
- package/dist/update-AIY46I2Q.js +155 -0
- package/dist/update-AIY46I2Q.js.map +1 -0
- package/dist/update-QYD2XZFM.js +142 -0
- package/dist/update-QYD2XZFM.js.map +1 -0
- package/dist/update-W2OSRNFO.js +98 -0
- package/dist/update-W2OSRNFO.js.map +1 -0
- package/dist/upload-JGBTSKGH.js +126 -0
- package/dist/upload-JGBTSKGH.js.map +1 -0
- package/dist/upload-XEHWYMJG.js +150 -0
- package/dist/upload-XEHWYMJG.js.map +1 -0
- package/dist/upscale-I5P2OHTN.js +109 -0
- package/dist/upscale-I5P2OHTN.js.map +1 -0
- package/dist/url-options-QHGA42RP.js +130 -0
- package/dist/url-options-QHGA42RP.js.map +1 -0
- package/dist/url-params-NWSUHWRE.js +98 -0
- package/dist/url-params-NWSUHWRE.js.map +1 -0
- package/dist/use-U4HG2NF3.js +95 -0
- package/dist/use-U4HG2NF3.js.map +1 -0
- package/dist/validate-VKL3XKQ2.js +91 -0
- package/dist/validate-VKL3XKQ2.js.map +1 -0
- package/dist/variant-FOVE6URJ.js +338 -0
- package/dist/variant-FOVE6URJ.js.map +1 -0
- package/dist/videos-DP3VCSYG.js +39 -0
- package/dist/videos-DP3VCSYG.js.map +1 -0
- package/dist/view-HRI3FHCH.js +121 -0
- package/dist/view-HRI3FHCH.js.map +1 -0
- package/dist/viewer-check-JYUE24M6.js +68 -0
- package/dist/viewer-check-JYUE24M6.js.map +1 -0
- package/dist/web-AFUIWPFU.js +140 -0
- package/dist/web-AFUIWPFU.js.map +1 -0
- package/dist/winners-SMMDN6LW.js +113 -0
- package/dist/winners-SMMDN6LW.js.map +1 -0
- package/dist/winning-ads-PCIJUYVA.js +84 -0
- package/dist/winning-ads-PCIJUYVA.js.map +1 -0
- package/dist/write-commands-7Z34WG2J.js +206 -0
- package/dist/write-commands-7Z34WG2J.js.map +1 -0
- package/dist/write-commands-BLT2SEC4.js +713 -0
- package/dist/write-commands-BLT2SEC4.js.map +1 -0
- package/dist/write-commands-N4FSGRVQ.js +743 -0
- package/dist/write-commands-N4FSGRVQ.js.map +1 -0
- package/dist/write-commands-Q4MQ3BGM.js +1015 -0
- package/dist/write-commands-Q4MQ3BGM.js.map +1 -0
- package/dist/x-AUOZJNWE.js +47 -0
- package/dist/x-AUOZJNWE.js.map +1 -0
- package/package.json +9 -2
- package/dist/chunk-FGHMWBUD.js +0 -9989
- package/dist/chunk-FGHMWBUD.js.map +0 -1
- package/dist/chunk-HJEMOSPH.js +0 -1292
- package/dist/chunk-HJEMOSPH.js.map +0 -1
- package/dist/chunk-MF7YA62W.js.map +0 -1
- package/dist/chunk-VZEDAFAR.js.map +0 -1
- package/dist/chunk-XHC4LMK4.js.map +0 -1
- package/dist/client-GR6YL3YX.js +0 -17
- package/dist/output-NMQXZF3Z.js +0 -18
- /package/dist/{chunk-WLDM2TRF.js.map → chunk-TPXI2GCW.js.map} +0 -0
- /package/dist/{client-GR6YL3YX.js.map → chunk-YQSBHWOI.js.map} +0 -0
- /package/dist/{env-4P5HOGNA.js.map → client-26SAJ46D.js.map} +0 -0
- /package/dist/{output-NMQXZF3Z.js.map → connect-RXPMAJQI.js.map} +0 -0
- /package/dist/{shared-6762QE6R.js.map → customers-P6LLLJHK.js.map} +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolvePropertyId
|
|
3
|
+
} from "./chunk-Y4T6ATDQ.js";
|
|
4
|
+
import {
|
|
5
|
+
cacheGet,
|
|
6
|
+
cacheSet,
|
|
7
|
+
handleConnectionError,
|
|
8
|
+
isNotConnectedError,
|
|
9
|
+
writeJsonEnvelope
|
|
10
|
+
} from "./chunk-BVM5IRZW.js";
|
|
11
|
+
import {
|
|
12
|
+
ApiError,
|
|
13
|
+
apiPost
|
|
14
|
+
} from "./chunk-HREWXNTO.js";
|
|
15
|
+
import "./chunk-HLXWKMTK.js";
|
|
16
|
+
import "./chunk-O6QKCJE4.js";
|
|
17
|
+
import {
|
|
18
|
+
registerSchema
|
|
19
|
+
} from "./chunk-WOTDHRNF.js";
|
|
20
|
+
import "./chunk-YQSBHWOI.js";
|
|
21
|
+
|
|
22
|
+
// src/commands/ga4/audit.ts
|
|
23
|
+
import { defineCommand } from "citty";
|
|
24
|
+
registerSchema({
|
|
25
|
+
command: "ga4.audit",
|
|
26
|
+
description: "Run all GA4 admin health checks at once. Checks data retention, Google Ads linkage, phantom conversions, audience defaults, data streams, and attribution settings. Returns raw data plus playbook-aligned warnings.",
|
|
27
|
+
args: {
|
|
28
|
+
"property-id": { type: "string", description: "GA4 property ID (auto-resolved if not provided)", required: false },
|
|
29
|
+
"no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false }
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
var auditCommand = defineCommand({
|
|
33
|
+
meta: {
|
|
34
|
+
name: "audit",
|
|
35
|
+
description: `Run all GA4 admin health checks. Returns property config with playbook warnings.
|
|
36
|
+
|
|
37
|
+
Checks:
|
|
38
|
+
- Data retention (should be FOURTEEN_MONTHS)
|
|
39
|
+
- Google Ads linkage (must match audited account)
|
|
40
|
+
- Phantom conversions (page_view, scroll as conversions)
|
|
41
|
+
- Audience membership defaults (30-day B2B traps)
|
|
42
|
+
- Data streams and filters
|
|
43
|
+
- Attribution settings
|
|
44
|
+
|
|
45
|
+
Examples:
|
|
46
|
+
baker ga4 audit
|
|
47
|
+
baker ga4 audit --property-id properties/123456789`
|
|
48
|
+
},
|
|
49
|
+
args: {
|
|
50
|
+
"property-id": { type: "string", description: "GA4 property ID", required: false },
|
|
51
|
+
"no-cache": { type: "boolean", description: "Skip cache", required: false }
|
|
52
|
+
},
|
|
53
|
+
run: async ({ args }) => {
|
|
54
|
+
const propertyId = await resolvePropertyId(args);
|
|
55
|
+
const useCache = !args["no-cache"];
|
|
56
|
+
const cacheKey = `audit:${propertyId}`;
|
|
57
|
+
if (useCache) {
|
|
58
|
+
const cached = cacheGet("ga4-audit", cacheKey);
|
|
59
|
+
if (cached) {
|
|
60
|
+
writeJsonEnvelope({ ...cached.data, cached: true });
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const body = { propertyId };
|
|
66
|
+
if (!useCache) body.skipCache = true;
|
|
67
|
+
const data = await apiPost("/api/ga4/audit", body);
|
|
68
|
+
if (useCache) {
|
|
69
|
+
cacheSet("ga4-audit", cacheKey, data, 6 * 60 * 60 * 1e3);
|
|
70
|
+
}
|
|
71
|
+
writeJsonEnvelope(data);
|
|
72
|
+
} catch (err) {
|
|
73
|
+
if (err instanceof ApiError) {
|
|
74
|
+
if (isNotConnectedError(err.code, err.message)) {
|
|
75
|
+
handleConnectionError("ga4", err.message);
|
|
76
|
+
}
|
|
77
|
+
writeJsonEnvelope({ ok: false, error: { code: err.code, message: err.message } });
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
writeJsonEnvelope({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
export {
|
|
86
|
+
auditCommand
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=audit-UIPMTI5C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ga4/audit.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { handleConnectionError, isNotConnectedError } from \"../../error-handler.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { cacheGet, cacheSet } from \"../ads/cache.ts\";\nimport { writeJsonEnvelope } from \"../ads/output.ts\";\nimport { resolvePropertyId } from \"./resolve.ts\";\n\nregisterSchema({\n command: \"ga4.audit\",\n description:\n \"Run all GA4 admin health checks at once. Checks data retention, Google Ads linkage, phantom conversions, audience defaults, data streams, and attribution settings. Returns raw data plus playbook-aligned warnings.\",\n args: {\n \"property-id\": { type: \"string\", description: \"GA4 property ID (auto-resolved if not provided)\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache, hit API directly\", required: false },\n },\n});\n\nexport const auditCommand = defineCommand({\n meta: {\n name: \"audit\",\n description: `Run all GA4 admin health checks. Returns property config with playbook warnings.\n\nChecks:\n - Data retention (should be FOURTEEN_MONTHS)\n - Google Ads linkage (must match audited account)\n - Phantom conversions (page_view, scroll as conversions)\n - Audience membership defaults (30-day B2B traps)\n - Data streams and filters\n - Attribution settings\n\nExamples:\n baker ga4 audit\n baker ga4 audit --property-id properties/123456789`,\n },\n args: {\n \"property-id\": { type: \"string\", description: \"GA4 property ID\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache\", required: false },\n },\n run: async ({ args }) => {\n const propertyId = await resolvePropertyId(args);\n const useCache = !args[\"no-cache\"];\n const cacheKey = `audit:${propertyId}`;\n\n if (useCache) {\n const cached = cacheGet<Record<string, unknown>>(\"ga4-audit\", cacheKey);\n if (cached) {\n writeJsonEnvelope({ ...cached.data, cached: true });\n return;\n }\n }\n\n try {\n const body: Record<string, unknown> = { propertyId };\n if (!useCache) body.skipCache = true;\n const data = await apiPost<Record<string, unknown>>(\"/api/ga4/audit\", body);\n if (useCache) {\n cacheSet(\"ga4-audit\", cacheKey, data, 6 * 60 * 60 * 1000);\n }\n writeJsonEnvelope(data);\n } catch (err) {\n if (err instanceof ApiError) {\n if (isNotConnectedError(err.code, err.message)) {\n handleConnectionError(\"ga4\", err.message);\n }\n writeJsonEnvelope({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJsonEnvelope({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAQ9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,eAAe,EAAE,MAAM,UAAU,aAAa,mDAAmD,UAAU,MAAM;AAAA,IACjH,YAAY,EAAE,MAAM,WAAW,aAAa,gCAAgC,UAAU,MAAM;AAAA,EAC9F;AACF,CAAC;AAEM,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaf;AAAA,EACA,MAAM;AAAA,IACJ,eAAe,EAAE,MAAM,UAAU,aAAa,mBAAmB,UAAU,MAAM;AAAA,IACjF,YAAY,EAAE,MAAM,WAAW,aAAa,cAAc,UAAU,MAAM;AAAA,EAC5E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,aAAa,MAAM,kBAAkB,IAAI;AAC/C,UAAM,WAAW,CAAC,KAAK,UAAU;AACjC,UAAM,WAAW,SAAS,UAAU;AAEpC,QAAI,UAAU;AACZ,YAAM,SAAS,SAAkC,aAAa,QAAQ;AACtE,UAAI,QAAQ;AACV,0BAAkB,EAAE,GAAG,OAAO,MAAM,QAAQ,KAAK,CAAC;AAClD;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,OAAgC,EAAE,WAAW;AACnD,UAAI,CAAC,SAAU,MAAK,YAAY;AAChC,YAAM,OAAO,MAAM,QAAiC,kBAAkB,IAAI;AAC1E,UAAI,UAAU;AACZ,iBAAS,aAAa,UAAU,MAAM,IAAI,KAAK,KAAK,GAAI;AAAA,MAC1D;AACA,wBAAkB,IAAI;AAAA,IACxB,SAAS,KAAK;AACZ,UAAI,eAAe,UAAU;AAC3B,YAAI,oBAAoB,IAAI,MAAM,IAAI,OAAO,GAAG;AAC9C,gCAAsB,OAAO,IAAI,OAAO;AAAA,QAC1C;AACA,0BAAkB,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,IAAI,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;AAChF,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,wBAAkB,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,iBAAiB,SAAS,mBAAmB,EAAE,CAAC;AAC9F,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleLinkedinError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-7F7MFMLI.js";
|
|
5
|
+
import {
|
|
6
|
+
writeAdsJson
|
|
7
|
+
} from "./chunk-BVM5IRZW.js";
|
|
8
|
+
import {
|
|
9
|
+
NO_CACHE_ARG
|
|
10
|
+
} from "./chunk-EF5DP6EB.js";
|
|
11
|
+
import "./chunk-SMIENBNX.js";
|
|
12
|
+
import "./chunk-GXDLWBOY.js";
|
|
13
|
+
import "./chunk-GIWHHCD6.js";
|
|
14
|
+
import "./chunk-UI6BKYQD.js";
|
|
15
|
+
import "./chunk-XX6ZMCY5.js";
|
|
16
|
+
import {
|
|
17
|
+
apiPost
|
|
18
|
+
} from "./chunk-HREWXNTO.js";
|
|
19
|
+
import "./chunk-HLXWKMTK.js";
|
|
20
|
+
import "./chunk-O6QKCJE4.js";
|
|
21
|
+
import "./chunk-WOTDHRNF.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-XGN2OFLN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/linkedin/audit.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface AuditFinding {\n id: string;\n area: string;\n check: string;\n status: \"pass\" | \"fail\" | \"partial\" | \"warn\" | \"n_a\";\n severity: \"critical\" | \"high\" | \"medium\" | \"low\";\n evidence?: Record<string, unknown>;\n fix?: { explanation: string; playbookRef?: string; correctedCommand?: string };\n}\n\ninterface AuditResult {\n account: { urn: string; id: string; name: string };\n scope: { campaigns: number; creatives: number; windowDays: number };\n summary: {\n critical: number;\n high: number;\n medium: number;\n low: number;\n pass: number;\n n_a: number;\n totalChecks: number;\n };\n findings: AuditFinding[];\n}\n\nconst SEVERITY_RANK: Record<AuditFinding[\"severity\"], number> = {\n critical: 0,\n high: 1,\n medium: 2,\n low: 3,\n};\n\nconst STATUS_RANK: Record<AuditFinding[\"status\"], number> = {\n fail: 0,\n warn: 1,\n partial: 2,\n pass: 3,\n n_a: 4,\n};\n\nfunction filterFindings(\n findings: AuditFinding[],\n severity: string[] | undefined,\n area: string[] | undefined,\n): AuditFinding[] {\n return findings.filter((f) => {\n if (severity && !severity.includes(f.severity)) return false;\n if (area && !area.includes(f.area)) return false;\n return true;\n });\n}\n\nfunction sortFindings(findings: AuditFinding[]): AuditFinding[] {\n return [...findings].sort((a, b) => {\n const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];\n if (sa !== 0) return sa;\n return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];\n });\n}\n\n/**\n * Render the audit as a markdown table that mirrors\n * google-ads-playbook/10-audit-summary.md so the agent can drop it into a\n * client deliverable as-is.\n */\nfunction renderMarkdown(result: AuditResult): string {\n const lines: string[] = [];\n lines.push(`# LinkedIn Ads Audit — ${result.account.name} (${result.account.id})`);\n lines.push(\"\");\n lines.push(\n `**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`,\n );\n lines.push(\"\");\n lines.push(\n `**Summary:** ${result.summary.pass} pass • ${result.summary.critical} critical • ${result.summary.high} high • ${result.summary.medium} medium • ${result.summary.low} low • ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`,\n );\n lines.push(\"\");\n lines.push(\"| # | Area | Check | Status | Severity | Notes |\");\n lines.push(\"|---|------|-------|--------|----------|-------|\");\n result.findings.forEach((f, idx) => {\n const note = noteOf(f);\n lines.push(\n `| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`,\n );\n });\n return lines.join(\"\\n\");\n}\n\nfunction escapeMd(text: string): string {\n return text.replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \");\n}\n\nfunction noteOf(f: AuditFinding): string {\n if (f.status === \"pass\") return \"\";\n const ev = f.evidence ? JSON.stringify(f.evidence) : \"\";\n const fix = f.fix?.explanation ?? \"\";\n return [fix, ev].filter(Boolean).join(\" — \");\n}\n\nexport const auditCommand = defineCommand({\n meta: {\n name: \"audit\",\n description: `Run a LinkedIn Ads playbook audit — 30+ checks across Settings, Tracking,\nAudience, Campaigns, Creative, Performance, Bidding, and Compliance.\n\nEach finding has {id, area, check, status, severity, evidence, fix} fields with\nplaybook citations. The default JSON output is agent-friendly; --format md\nrenders a deliverable-ready table that mirrors the google-ads-playbook\n10-audit-summary.md style.\n\nExit code 0 always. Use the JSON 'summary' counts to decide if action is needed.\n\nExamples:\n baker ads linkedin audit --account-id 503001492\n baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope\n baker ads linkedin audit --account-id 503001492 --window-days 90\n baker ads linkedin audit --account-id 503001492 --severity critical,high\n baker ads linkedin audit --account-id 503001492 --area Settings,Tracking\n baker ads linkedin audit --account-id 503001492 --format md`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n \"campaign-id\": { type: \"string\", description: \"Narrow scope to a single campaign\" },\n \"window-days\": { type: \"string\", description: \"Lookback window for performance checks (default: 30)\" },\n severity: { type: \"string\", description: \"CSV severity filter: critical,high,medium,low\" },\n area: {\n type: \"string\",\n description:\n \"CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene\",\n },\n format: { type: \"string\", description: \"Output format: json | md (default: json)\" },\n \"no-cache\": NO_CACHE_ARG,\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const windowDays = args[\"window-days\"] ? Number(args[\"window-days\"]) : 30;\n if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {\n handleLinkedinError(new Error(\"--window-days must be 1..365\"));\n }\n try {\n const data = await apiPost<AuditResult>(\"/api/ads/linkedin/audit\", {\n accountId,\n campaignId: args[\"campaign-id\"] ? String(args[\"campaign-id\"]) : undefined,\n windowDays,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n\n const severityFilter = (args.severity as string | undefined)\n ?.split(\",\")\n .map((s) => s.trim().toLowerCase())\n .filter(Boolean);\n const areaFilter = (args.area as string | undefined)\n ?.split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n const filtered = filterFindings(data.findings, severityFilter, areaFilter);\n const sorted = sortFindings(filtered);\n const result: AuditResult = { ...data, findings: sorted };\n\n const fmt = (args.format as string | undefined) ?? \"json\";\n if (fmt === \"md\") {\n process.stdout.write(`${renderMarkdown(result)}\\n`);\n return;\n }\n writeAdsJson({ ok: true, data: result });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AA+B9B,IAAM,gBAA0D;AAAA,EAC9D,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AACP;AAEA,IAAM,cAAsD;AAAA,EAC1D,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AACP;AAEA,SAAS,eACP,UACA,UACA,MACgB;AAChB,SAAO,SAAS,OAAO,CAAC,MAAM;AAC5B,QAAI,YAAY,CAAC,SAAS,SAAS,EAAE,QAAQ,EAAG,QAAO;AACvD,QAAI,QAAQ,CAAC,KAAK,SAAS,EAAE,IAAI,EAAG,QAAO;AAC3C,WAAO;AAAA,EACT,CAAC;AACH;AAEA,SAAS,aAAa,UAA0C;AAC9D,SAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM;AAClC,UAAM,KAAK,YAAY,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM;AACvD,QAAI,OAAO,EAAG,QAAO;AACrB,WAAO,cAAc,EAAE,QAAQ,IAAI,cAAc,EAAE,QAAQ;AAAA,EAC7D,CAAC;AACH;AAOA,SAAS,eAAe,QAA6B;AACnD,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAK,+BAA0B,OAAO,QAAQ,IAAI,KAAK,OAAO,QAAQ,EAAE,GAAG;AACjF,QAAM,KAAK,EAAE;AACb,QAAM;AAAA,IACJ,cAAc,OAAO,MAAM,SAAS,eAAe,OAAO,MAAM,SAAS,oBAAoB,OAAO,MAAM,UAAU;AAAA,EACtH;AACA,QAAM,KAAK,EAAE;AACb,QAAM;AAAA,IACJ,gBAAgB,OAAO,QAAQ,IAAI,gBAAW,OAAO,QAAQ,QAAQ,oBAAe,OAAO,QAAQ,IAAI,gBAAW,OAAO,QAAQ,MAAM,kBAAa,OAAO,QAAQ,GAAG,eAAU,OAAO,QAAQ,GAAG,SAAS,OAAO,QAAQ,WAAW;AAAA,EACvO;AACA,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,kDAAkD;AAC7D,QAAM,KAAK,kDAAkD;AAC7D,SAAO,SAAS,QAAQ,CAAC,GAAG,QAAQ;AAClC,UAAM,OAAO,OAAO,CAAC;AACrB,UAAM;AAAA,MACJ,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,MAAM,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY,CAAC,MAAM,EAAE,QAAQ,MAAM,SAAS,IAAI,CAAC;AAAA,IACjH;AAAA,EACF,CAAC;AACD,SAAO,MAAM,KAAK,IAAI;AACxB;AAEA,SAAS,SAAS,MAAsB;AACtC,SAAO,KAAK,QAAQ,OAAO,KAAK,EAAE,QAAQ,OAAO,GAAG;AACtD;AAEA,SAAS,OAAO,GAAyB;AACvC,MAAI,EAAE,WAAW,OAAQ,QAAO;AAChC,QAAM,KAAK,EAAE,WAAW,KAAK,UAAU,EAAE,QAAQ,IAAI;AACrD,QAAM,MAAM,EAAE,KAAK,eAAe;AAClC,SAAO,CAAC,KAAK,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,UAAK;AAC7C;AAEO,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,eAAe,EAAE,MAAM,UAAU,aAAa,oCAAoC;AAAA,IAClF,eAAe,EAAE,MAAM,UAAU,aAAa,uDAAuD;AAAA,IACrG,UAAU,EAAE,MAAM,UAAU,aAAa,gDAAgD;AAAA,IACzF,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,QAAQ,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAClF,YAAY;AAAA,EACd;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,aAAa,KAAK,aAAa,IAAI,OAAO,KAAK,aAAa,CAAC,IAAI;AACvE,QAAI,CAAC,OAAO,SAAS,UAAU,KAAK,aAAa,KAAK,aAAa,KAAK;AACtE,0BAAoB,IAAI,MAAM,8BAA8B,CAAC;AAAA,IAC/D;AACA,QAAI;AACF,YAAM,OAAO,MAAM,QAAqB,2BAA2B;AAAA,QACjE;AAAA,QACA,YAAY,KAAK,aAAa,IAAI,OAAO,KAAK,aAAa,CAAC,IAAI;AAAA,QAChE;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AAED,YAAM,iBAAkB,KAAK,UACzB,MAAM,GAAG,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,EACjC,OAAO,OAAO;AACjB,YAAM,aAAc,KAAK,MACrB,MAAM,GAAG,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AACjB,YAAM,WAAW,eAAe,KAAK,UAAU,gBAAgB,UAAU;AACzE,YAAM,SAAS,aAAa,QAAQ;AACpC,YAAM,SAAsB,EAAE,GAAG,MAAM,UAAU,OAAO;AAExD,YAAM,MAAO,KAAK,UAAiC;AACnD,UAAI,QAAQ,MAAM;AAChB,gBAAQ,OAAO,MAAM,GAAG,eAAe,MAAM,CAAC;AAAA,CAAI;AAClD;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,MAAM,OAAO,CAAC;AAAA,IACzC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import {
|
|
2
|
+
noSerpRowsHints
|
|
3
|
+
} from "./chunk-H7XVKLIY.js";
|
|
4
|
+
import {
|
|
5
|
+
RESEARCH_DATA_NOTE,
|
|
6
|
+
handleResearchError,
|
|
7
|
+
writeResearchHints,
|
|
8
|
+
writeResearchJson,
|
|
9
|
+
writeResearchOutput
|
|
10
|
+
} from "./chunk-Y362QH54.js";
|
|
11
|
+
import {
|
|
12
|
+
buildResearchQueryContext,
|
|
13
|
+
warnDefaults
|
|
14
|
+
} from "./chunk-3ZWWXAQZ.js";
|
|
15
|
+
import "./chunk-77DN7R35.js";
|
|
16
|
+
import "./chunk-SMIENBNX.js";
|
|
17
|
+
import "./chunk-GXDLWBOY.js";
|
|
18
|
+
import "./chunk-GIWHHCD6.js";
|
|
19
|
+
import "./chunk-UI6BKYQD.js";
|
|
20
|
+
import "./chunk-XX6ZMCY5.js";
|
|
21
|
+
import {
|
|
22
|
+
apiPost
|
|
23
|
+
} from "./chunk-HREWXNTO.js";
|
|
24
|
+
import "./chunk-HLXWKMTK.js";
|
|
25
|
+
import "./chunk-O6QKCJE4.js";
|
|
26
|
+
import {
|
|
27
|
+
registerSchema
|
|
28
|
+
} from "./chunk-WOTDHRNF.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-LVPDV3JE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/research/autocomplete.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { buildResearchQueryContext, warnDefaults } from \"../../geo-context.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { noSerpRowsHints } from \"./hints.ts\";\nimport {\n handleResearchError,\n RESEARCH_DATA_NOTE,\n writeResearchHints,\n writeResearchJson,\n writeResearchOutput,\n} from \"./output.ts\";\n\nregisterSchema({\n command: \"research.autocomplete\",\n description:\n \"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).\",\n args: {\n keyword: { type: \"string\", description: \"Seed keyword (positional)\", required: true },\n location: {\n type: \"string\",\n description:\n \"Country code (us, uk, es, de...) or DataForSEO location code. Defaults to us (United States) if omitted\",\n required: false,\n },\n language: {\n type: \"string\",\n description: \"Language code or name. Defaults to en (English) if omitted\",\n required: false,\n },\n limit: { type: \"string\", description: \"Max suggestions (default: 10, max: 20)\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip server cache, hit API directly\", required: false },\n },\n});\n\ninterface AutocompleteResult {\n suggestion: string;\n}\n\nconst FIELDS: Record<string, string> = {\n suggestion: \"Autocomplete suggestion from Google\",\n};\n\nexport const autocompleteCommand = defineCommand({\n meta: {\n name: \"autocomplete\",\n description: `Get Google Autocomplete suggestions for keyword expansion.\n\nExamples:\n baker research autocomplete \"running shoes\"\n baker research autocomplete \"crm\" --location uk --limit 5`,\n },\n args: {\n keyword: { type: \"positional\", description: \"Seed keyword\", required: true },\n location: { type: \"string\", description: \"Country code or location code (default: us)\", required: false },\n language: { type: \"string\", description: \"Language code or name (default: en)\", required: false },\n limit: { type: \"string\", description: \"Max suggestions (default: 10, max: 20)\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|md|jsonl\", required: false, default: \"json\" },\n \"no-cache\": { type: \"boolean\", description: \"Skip server cache, hit API directly\", required: false },\n },\n run: async ({ args }) => {\n const keyword = args.keyword as string;\n const location = (args.location as string) || undefined;\n const language = (args.language as string) || undefined;\n const limit = args.limit ? Number(args.limit) : undefined;\n const skipCache = args[\"no-cache\"] ? true : undefined;\n const queryContext = buildResearchQueryContext(location, language);\n\n try {\n const data = await apiPost<AutocompleteResult[]>(\"/api/research/autocomplete\", {\n keyword,\n location,\n language,\n limit,\n skipCache,\n });\n\n warnDefaults(queryContext);\n const format = (args.output as string) || \"json\";\n const hints = noSerpRowsHints(data.length, queryContext);\n if (format !== \"json\") {\n writeResearchOutput(data as unknown as Array<Record<string, unknown>>, format);\n writeResearchHints(hints, format);\n return;\n }\n writeResearchJson({\n ok: true,\n data,\n fields: FIELDS,\n note: RESEARCH_DATA_NOTE,\n query_context: queryContext,\n hints,\n });\n } catch (err) {\n handleResearchError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAa9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,KAAK;AAAA,IACpF,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aACE;AAAA,MACF,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,YAAY,EAAE,MAAM,WAAW,aAAa,uCAAuC,UAAU,MAAM;AAAA,EACrG;AACF,CAAC;AAMD,IAAM,SAAiC;AAAA,EACrC,YAAY;AACd;AAEO,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf;AAAA,EACA,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,cAAc,aAAa,gBAAgB,UAAU,KAAK;AAAA,IAC3E,UAAU,EAAE,MAAM,UAAU,aAAa,+CAA+C,UAAU,MAAM;AAAA,IACxG,UAAU,EAAE,MAAM,UAAU,aAAa,uCAAuC,UAAU,MAAM;AAAA,IAChG,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,QAAQ,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,OAAO,SAAS,OAAO;AAAA,IACrG,YAAY,EAAE,MAAM,WAAW,aAAa,uCAAuC,UAAU,MAAM;AAAA,EACrG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,UAAU,KAAK;AACrB,UAAM,WAAY,KAAK,YAAuB;AAC9C,UAAM,WAAY,KAAK,YAAuB;AAC9C,UAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAChD,UAAM,YAAY,KAAK,UAAU,IAAI,OAAO;AAC5C,UAAM,eAAe,0BAA0B,UAAU,QAAQ;AAEjE,QAAI;AACF,YAAM,OAAO,MAAM,QAA8B,8BAA8B;AAAA,QAC7E;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,mBAAa,YAAY;AACzB,YAAM,SAAU,KAAK,UAAqB;AAC1C,YAAM,QAAQ,gBAAgB,KAAK,QAAQ,YAAY;AACvD,UAAI,WAAW,QAAQ;AACrB,4BAAoB,MAAmD,MAAM;AAC7E,2BAAmB,OAAO,MAAM;AAChC;AAAA,MACF;AACA,wBAAkB;AAAA,QAChB,IAAI;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,eAAe;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -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-LCUPF7EF.js").then((m) => m.listCommand),
|
|
28
|
+
get: () => import("./get-RPZHLQ56.js").then((m) => m.getCommand),
|
|
29
|
+
create: () => import("./create-HTKZMXKB.js").then((m) => m.createCommand),
|
|
30
|
+
research: () => import("./research-YGQQ6CNG.js").then((m) => m.researchCommand),
|
|
31
|
+
update: () => import("./update-AIY46I2Q.js").then((m) => m.updateCommand),
|
|
32
|
+
delete: () => import("./delete-DZUDLYPC.js").then((m) => m.deleteCommand)
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
export {
|
|
36
|
+
avatarsCommand
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=avatars-S6NSLMJK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/avatars/index.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\n\nexport const avatarsCommand = defineCommand({\n meta: {\n name: \"avatars\",\n 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.\n\nHow casting works:\n 1. baker avatars list See who this company already has (reuse before you create)\n 2. baker avatars get <handle> Status, identity sheet URL, subject description\n 3. baker images generate \"<scene>\" --reference <sheetUrl>\n Ground the render on the identity sheet, never on a source photo,\n and copy the subject description into the prompt verbatim\n\nExamples:\n baker avatars list --status ready --output md\n baker avatars get marta --full\n baker avatars create --name \"Marta\" --subject \"woman in her early 40s, shoulder-length dark hair, light olive skin\"\n baker avatars research \"Lautaro Suarez, CTO at Vibiz\" --create A real, named person, from their public photos\n baker avatars update marta --subject \"…\" --regenerate-sheet\n baker avatars delete marta --archive\nFull guide: __tooling__/docs/tools/baker/avatars.md`,\n },\n subCommands: {\n list: () => import(\"./list.ts\").then((m) => m.listCommand),\n get: () => import(\"./get.ts\").then((m) => m.getCommand),\n create: () => import(\"./create.ts\").then((m) => m.createCommand),\n research: () => import(\"./research.ts\").then((m) => m.researchCommand),\n update: () => import(\"./update.ts\").then((m) => m.updateCommand),\n delete: () => import(\"./delete.ts\").then((m) => m.deleteCommand),\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAEvB,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBf;AAAA,EACA,aAAa;AAAA,IACX,MAAM,MAAM,OAAO,oBAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW;AAAA,IACzD,KAAK,MAAM,OAAO,mBAAU,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU;AAAA,IACtD,QAAQ,MAAM,OAAO,sBAAa,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa;AAAA,IAC/D,UAAU,MAAM,OAAO,wBAAe,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe;AAAA,IACrE,QAAQ,MAAM,OAAO,sBAAa,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa;AAAA,IAC/D,QAAQ,MAAM,OAAO,sBAAa,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa;AAAA,EACjE;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleLinkedinError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-7F7MFMLI.js";
|
|
5
|
+
import {
|
|
6
|
+
writeAdsJson
|
|
7
|
+
} from "./chunk-BVM5IRZW.js";
|
|
8
|
+
import {
|
|
9
|
+
NO_CACHE_ARG
|
|
10
|
+
} from "./chunk-EF5DP6EB.js";
|
|
11
|
+
import "./chunk-SMIENBNX.js";
|
|
12
|
+
import "./chunk-GXDLWBOY.js";
|
|
13
|
+
import "./chunk-GIWHHCD6.js";
|
|
14
|
+
import "./chunk-UI6BKYQD.js";
|
|
15
|
+
import "./chunk-XX6ZMCY5.js";
|
|
16
|
+
import {
|
|
17
|
+
apiPost
|
|
18
|
+
} from "./chunk-HREWXNTO.js";
|
|
19
|
+
import "./chunk-HLXWKMTK.js";
|
|
20
|
+
import "./chunk-O6QKCJE4.js";
|
|
21
|
+
import "./chunk-WOTDHRNF.js";
|
|
22
|
+
import "./chunk-YQSBHWOI.js";
|
|
23
|
+
|
|
24
|
+
// src/commands/ads/linkedin/bid-pricing.ts
|
|
25
|
+
import { readFileSync } from "fs";
|
|
26
|
+
import { defineCommand } from "citty";
|
|
27
|
+
function loadTargeting(args) {
|
|
28
|
+
const inline = args.targeting;
|
|
29
|
+
if (inline) {
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(inline);
|
|
32
|
+
} catch {
|
|
33
|
+
handleLinkedinError(new Error("--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape."));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const file = args["targeting-file"];
|
|
37
|
+
if (file) {
|
|
38
|
+
try {
|
|
39
|
+
return JSON.parse(readFileSync(file, "utf-8"));
|
|
40
|
+
} catch (e) {
|
|
41
|
+
handleLinkedinError(
|
|
42
|
+
new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : "I/O error"}`)
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
handleLinkedinError(new Error("Pass --targeting-file <path> or --targeting '{...JSON...}'"));
|
|
47
|
+
}
|
|
48
|
+
var bidPricingCommand = defineCommand({
|
|
49
|
+
meta: {
|
|
50
|
+
name: "bid-pricing",
|
|
51
|
+
description: `Get LinkedIn's suggested bid range for a targeting + objective + cost type.
|
|
52
|
+
|
|
53
|
+
Returns LinkedIn's min / suggested / max bid plus the playbook \xA706 floor
|
|
54
|
+
(2/3 of suggested \u2014 the recommended manual CPC starting point).
|
|
55
|
+
|
|
56
|
+
Objective types: BRAND_AWARENESS | WEBSITE_TRAFFIC | WEBSITE_VISIT |
|
|
57
|
+
ENGAGEMENT | WEBSITE_CONVERSION | LEAD_GENERATION |
|
|
58
|
+
JOB_APPLICANT | VIDEO_VIEW
|
|
59
|
+
Cost types: CPC | CPM | CPV | CPS
|
|
60
|
+
|
|
61
|
+
Examples:
|
|
62
|
+
baker ads linkedin bid-pricing --account-id 503001492 --objective WEBSITE_CONVERSION --cost-type CPC --targeting-file targeting.json
|
|
63
|
+
baker ads linkedin bid-pricing --account-id 503001492 --objective LEAD_GENERATION --cost-type CPM --targeting '{"include":...}'`
|
|
64
|
+
},
|
|
65
|
+
args: {
|
|
66
|
+
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
67
|
+
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
68
|
+
objective: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "Objective type (e.g. WEBSITE_CONVERSION, LEAD_GENERATION)",
|
|
71
|
+
required: true
|
|
72
|
+
},
|
|
73
|
+
"cost-type": { type: "string", description: "CPC | CPM | CPV | CPS", required: true },
|
|
74
|
+
targeting: { type: "string", description: "Inline JSON targetingCriteria" },
|
|
75
|
+
"targeting-file": { type: "string", description: "Path to JSON file with targetingCriteria" },
|
|
76
|
+
"no-cache": NO_CACHE_ARG,
|
|
77
|
+
output: { type: "string", description: "json", default: "json" }
|
|
78
|
+
},
|
|
79
|
+
run: async ({ args }) => {
|
|
80
|
+
const accountId = resolveAccountIdArg(args);
|
|
81
|
+
const targetingCriteria = loadTargeting(args);
|
|
82
|
+
try {
|
|
83
|
+
const data = await apiPost("/api/ads/linkedin/bid-pricing", {
|
|
84
|
+
accountId,
|
|
85
|
+
objectiveType: String(args.objective),
|
|
86
|
+
costType: String(args["cost-type"]).toUpperCase(),
|
|
87
|
+
targetingCriteria,
|
|
88
|
+
skipCache: Boolean(args["no-cache"])
|
|
89
|
+
});
|
|
90
|
+
writeAdsJson({ ok: true, data });
|
|
91
|
+
} catch (err) {
|
|
92
|
+
handleLinkedinError(err);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
export {
|
|
97
|
+
bidPricingCommand
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=bid-pricing-2LYULXU2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/linkedin/bid-pricing.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface BidPricingResult {\n bidLimits?: { min?: { amount?: string; currencyCode?: string }; max?: { amount?: string; currencyCode?: string } };\n suggestedBid?: {\n default?: { amount?: string; currencyCode?: string };\n min?: { amount?: string; currencyCode?: string };\n max?: { amount?: string; currencyCode?: string };\n };\n costType: string;\n objectiveType: string;\n playbookFloor?: { amount: string; currencyCode: string };\n playbookNote: string;\n}\n\nfunction loadTargeting(args: Record<string, unknown>): unknown {\n const inline = args.targeting as string | undefined;\n if (inline) {\n try {\n return JSON.parse(inline);\n } catch {\n handleLinkedinError(new Error(\"--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape.\"));\n }\n }\n const file = args[\"targeting-file\"] as string | undefined;\n if (file) {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (e) {\n handleLinkedinError(\n new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : \"I/O error\"}`),\n );\n }\n }\n handleLinkedinError(new Error(\"Pass --targeting-file <path> or --targeting '{...JSON...}'\"));\n}\n\nexport const bidPricingCommand = defineCommand({\n meta: {\n name: \"bid-pricing\",\n description: `Get LinkedIn's suggested bid range for a targeting + objective + cost type.\n\nReturns LinkedIn's min / suggested / max bid plus the playbook §06 floor\n(2/3 of suggested — the recommended manual CPC starting point).\n\nObjective types: BRAND_AWARENESS | WEBSITE_TRAFFIC | WEBSITE_VISIT |\n ENGAGEMENT | WEBSITE_CONVERSION | LEAD_GENERATION |\n JOB_APPLICANT | VIDEO_VIEW\nCost types: CPC | CPM | CPV | CPS\n\nExamples:\n baker ads linkedin bid-pricing --account-id 503001492 --objective WEBSITE_CONVERSION --cost-type CPC --targeting-file targeting.json\n baker ads linkedin bid-pricing --account-id 503001492 --objective LEAD_GENERATION --cost-type CPM --targeting '{\"include\":...}'`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n objective: {\n type: \"string\",\n description: \"Objective type (e.g. WEBSITE_CONVERSION, LEAD_GENERATION)\",\n required: true,\n },\n \"cost-type\": { type: \"string\", description: \"CPC | CPM | CPV | CPS\", required: true },\n targeting: { type: \"string\", description: \"Inline JSON targetingCriteria\" },\n \"targeting-file\": { type: \"string\", description: \"Path to JSON file with targetingCriteria\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json\", default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const targetingCriteria = loadTargeting(args);\n try {\n const data = await apiPost<BidPricingResult>(\"/api/ads/linkedin/bid-pricing\", {\n accountId,\n objectiveType: String(args.objective),\n costType: String(args[\"cost-type\"]).toUpperCase(),\n targetingCriteria,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAmB9B,SAAS,cAAc,MAAwC;AAC7D,QAAM,SAAS,KAAK;AACpB,MAAI,QAAQ;AACV,QAAI;AACF,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,QAAQ;AACN,0BAAoB,IAAI,MAAM,yEAAyE,CAAC;AAAA,IAC1G;AAAA,EACF;AACA,QAAM,OAAO,KAAK,gBAAgB;AAClC,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,IAC/C,SAAS,GAAG;AACV;AAAA,QACE,IAAI,MAAM,oCAAoC,aAAa,QAAQ,EAAE,UAAU,WAAW,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,IAAI,MAAM,4DAA4D,CAAC;AAC7F;AAEO,IAAM,oBAAoB,cAAc;AAAA,EAC7C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,aAAa,EAAE,MAAM,UAAU,aAAa,yBAAyB,UAAU,KAAK;AAAA,IACpF,WAAW,EAAE,MAAM,UAAU,aAAa,gCAAgC;AAAA,IAC1E,kBAAkB,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAC5F,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,QAAQ,SAAS,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,oBAAoB,cAAc,IAAI;AAC5C,QAAI;AACF,YAAM,OAAO,MAAM,QAA0B,iCAAiC;AAAA,QAC5E;AAAA,QACA,eAAe,OAAO,KAAK,SAAS;AAAA,QACpC,UAAU,OAAO,KAAK,WAAW,CAAC,EAAE,YAAY;AAAA,QAChD;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./chunk-YQSBHWOI.js";
|
|
2
|
+
|
|
3
|
+
// src/commands/brand/index.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
var brandCommand = defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "brand",
|
|
8
|
+
description: `Brand asset verification for src/brand/.
|
|
9
|
+
|
|
10
|
+
Start here: \`baker brand fonts check\` after defining or editing the brand's typography.
|
|
11
|
+
|
|
12
|
+
Subcommands:
|
|
13
|
+
baker brand fonts \u2014 verify the brand's typefaces really load, and self-host them into src/brand/fonts/`
|
|
14
|
+
},
|
|
15
|
+
subCommands: {
|
|
16
|
+
fonts: () => import("./fonts-UR7XZ5XZ.js").then((m) => m.fontsCommand)
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
brandCommand
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=brand-WWHUZ72R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/brand/index.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\n\nexport const brandCommand = defineCommand({\n meta: {\n name: \"brand\",\n description: `Brand asset verification for src/brand/.\n\nStart here: \\`baker brand fonts check\\` after defining or editing the brand's typography.\n\nSubcommands:\n baker brand fonts — verify the brand's typefaces really load, and self-host them into src/brand/fonts/`,\n },\n subCommands: {\n fonts: () => import(\"./fonts.ts\").then((m) => m.fontsCommand),\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAEvB,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf;AAAA,EACA,aAAa;AAAA,IACX,OAAO,MAAM,OAAO,qBAAY,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY;AAAA,EAC9D;AACF,CAAC;","names":[]}
|