@koda-sl/baker-cli 0.386.0-dev.4e118c09a → 0.386.0-dev.d6e55699d
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 +1057 -215
- package/canvas/tiktok-captions-composition/index.html +5 -6
- package/canvas/tiktok-captions-composition/meta.json +5 -0
- package/dist/account-5TGX45FO.js +79 -0
- package/dist/account-5TGX45FO.js.map +1 -0
- package/dist/account-CLOKMTTC.js +49 -0
- package/dist/account-CLOKMTTC.js.map +1 -0
- package/dist/account-XFK6VX2R.js +80 -0
- package/dist/account-XFK6VX2R.js.map +1 -0
- package/dist/account-reads-ZK5RMLB2.js +218 -0
- package/dist/account-reads-ZK5RMLB2.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-HGAFFOA7.js +77 -0
- package/dist/accounts-HGAFFOA7.js.map +1 -0
- package/dist/accounts-OWMXUT6D.js +611 -0
- package/dist/accounts-OWMXUT6D.js.map +1 -0
- package/dist/accounts-RYBDLQ6H.js +75 -0
- package/dist/accounts-RYBDLQ6H.js.map +1 -0
- package/dist/actions-NSQYW7YS.js +55 -0
- package/dist/actions-NSQYW7YS.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-HWIE5PGR.js +302 -0
- package/dist/add-HWIE5PGR.js.map +1 -0
- package/dist/add-IIW3NHZH.js +104 -0
- package/dist/add-IIW3NHZH.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-D6KKCQ3Q.js +40 -0
- package/dist/ads-D6KKCQ3Q.js.map +1 -0
- package/dist/ads-QKIHHXP5.js +113 -0
- package/dist/ads-QKIHHXP5.js.map +1 -0
- package/dist/adsets-7WMWU45E.js +176 -0
- package/dist/adsets-7WMWU45E.js.map +1 -0
- package/dist/advertisers-6NZ2M57X.js +120 -0
- package/dist/advertisers-6NZ2M57X.js.map +1 -0
- package/dist/advertisers-BCGKUMEH.js +125 -0
- package/dist/advertisers-BCGKUMEH.js.map +1 -0
- package/dist/analytics-QJC2BTZY.js +433 -0
- package/dist/analytics-QJC2BTZY.js.map +1 -0
- package/dist/analytics-SN6K7J7M.js +1980 -0
- package/dist/analytics-SN6K7J7M.js.map +1 -0
- package/dist/animate-JXIT77Y5.js +480 -0
- package/dist/animate-JXIT77Y5.js.map +1 -0
- package/dist/assign-XFDA42KL.js +77 -0
- package/dist/assign-XFDA42KL.js.map +1 -0
- package/dist/audience-size-DJPFYHPJ.js +94 -0
- package/dist/audience-size-DJPFYHPJ.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-VXTIBZP6.js +78 -0
- package/dist/audiences-VXTIBZP6.js.map +1 -0
- package/dist/audit-M5B7TZGT.js +151 -0
- package/dist/audit-M5B7TZGT.js.map +1 -0
- package/dist/audit-UIPMTI5C.js +88 -0
- package/dist/audit-UIPMTI5C.js.map +1 -0
- package/dist/autocomplete-NWHEASQY.js +111 -0
- package/dist/autocomplete-NWHEASQY.js.map +1 -0
- package/dist/avatars-RNMUVMFM.js +38 -0
- package/dist/avatars-RNMUVMFM.js.map +1 -0
- package/dist/bid-pricing-EAY3HAHY.js +99 -0
- package/dist/bid-pricing-EAY3HAHY.js.map +1 -0
- package/dist/brand-XBHWYPMT.js +22 -0
- package/dist/brand-XBHWYPMT.js.map +1 -0
- package/dist/brief-XBAAPKRR.js +492 -0
- package/dist/brief-XBAAPKRR.js.map +1 -0
- package/dist/businesses-J7OP7MSK.js +53 -0
- package/dist/businesses-J7OP7MSK.js.map +1 -0
- package/dist/campaign-groups-7KA2RA5V.js +95 -0
- package/dist/campaign-groups-7KA2RA5V.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-D2UID2I6.js +165 -0
- package/dist/campaign-writes-D2UID2I6.js.map +1 -0
- package/dist/campaigns-JPYNVFQI.js +76 -0
- package/dist/campaigns-JPYNVFQI.js.map +1 -0
- package/dist/campaigns-NJ3KOPJS.js +107 -0
- package/dist/campaigns-NJ3KOPJS.js.map +1 -0
- package/dist/campaigns-QUTTH2TB.js +110 -0
- package/dist/campaigns-QUTTH2TB.js.map +1 -0
- package/dist/campaigns-SOO5RHYG.js +109 -0
- package/dist/campaigns-SOO5RHYG.js.map +1 -0
- package/dist/canvas-3VZ46BCF.js +46 -0
- package/dist/canvas-3VZ46BCF.js.map +1 -0
- package/dist/capabilities-KAYDPH7E.js +144 -0
- package/dist/capabilities-KAYDPH7E.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-22EO52IY.js +135 -0
- package/dist/changes-22EO52IY.js.map +1 -0
- package/dist/chatgpt-B3NHRJUE.js +47 -0
- package/dist/chatgpt-B3NHRJUE.js.map +1 -0
- package/dist/chats-QG3IRHOD.js +262 -0
- package/dist/chats-QG3IRHOD.js.map +1 -0
- package/dist/chunk-2CV7LX23.js +474 -0
- package/dist/chunk-2CV7LX23.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-32PSERWG.js +363 -0
- package/dist/chunk-32PSERWG.js.map +1 -0
- package/dist/chunk-3ACMDRSE.js +39 -0
- package/dist/chunk-3ACMDRSE.js.map +1 -0
- package/dist/chunk-3UDSYYND.js +42 -0
- package/dist/chunk-3UDSYYND.js.map +1 -0
- package/dist/chunk-3V5E5SVE.js +382 -0
- package/dist/chunk-3V5E5SVE.js.map +1 -0
- package/dist/chunk-455BTAHM.js +57 -0
- package/dist/chunk-455BTAHM.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-4OBO75XU.js +275 -0
- package/dist/chunk-4OBO75XU.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-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-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-AUCITRRT.js +310 -0
- package/dist/chunk-AUCITRRT.js.map +1 -0
- package/dist/chunk-AUSKKFVH.js +84 -0
- package/dist/chunk-AUSKKFVH.js.map +1 -0
- package/dist/chunk-BEGARAVC.js +174 -0
- package/dist/chunk-BEGARAVC.js.map +1 -0
- package/dist/{chunk-WWCLT3RG.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-CKI3RLMU.js +159 -0
- package/dist/chunk-CKI3RLMU.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-DIICZGIS.js +509 -0
- package/dist/chunk-DIICZGIS.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-DYZJBWT2.js +1079 -0
- package/dist/chunk-DYZJBWT2.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-EQEZAYPL.js +541 -0
- package/dist/chunk-EQEZAYPL.js.map +1 -0
- package/dist/chunk-ERSX3MKH.js +34 -0
- package/dist/chunk-ERSX3MKH.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-GOJXKIFQ.js +1605 -0
- package/dist/chunk-GOJXKIFQ.js.map +1 -0
- package/dist/chunk-GPXIUYIA.js +592 -0
- package/dist/chunk-GPXIUYIA.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-H7MLHG2I.js +94 -0
- package/dist/chunk-H7MLHG2I.js.map +1 -0
- package/dist/chunk-HAE4WWFQ.js +455 -0
- package/dist/chunk-HAE4WWFQ.js.map +1 -0
- package/dist/chunk-HB3LNR4Y.js +197 -0
- package/dist/chunk-HB3LNR4Y.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-HVJUMQYY.js +494 -0
- package/dist/chunk-HVJUMQYY.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-IMORFIUT.js +207 -0
- package/dist/chunk-IMORFIUT.js.map +1 -0
- package/dist/chunk-IOCSDFF2.js +23992 -0
- package/dist/chunk-IOCSDFF2.js.map +1 -0
- package/dist/chunk-IRTYTT5D.js +665 -0
- package/dist/chunk-IRTYTT5D.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-JAYT43KX.js +4227 -0
- package/dist/chunk-JAYT43KX.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-JRGPCPT2.js +479 -0
- package/dist/chunk-JRGPCPT2.js.map +1 -0
- package/dist/chunk-JUAIGJ2A.js +76 -0
- package/dist/chunk-JUAIGJ2A.js.map +1 -0
- package/dist/chunk-K2RYUZ5Y.js +51 -0
- package/dist/chunk-K2RYUZ5Y.js.map +1 -0
- package/dist/chunk-K5OQES4V.js +58 -0
- package/dist/chunk-K5OQES4V.js.map +1 -0
- package/dist/chunk-KAHMADFH.js +455 -0
- package/dist/chunk-KAHMADFH.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-KRIK2JR4.js +6212 -0
- package/dist/chunk-KRIK2JR4.js.map +1 -0
- package/dist/chunk-KZUHRZ2C.js +5187 -0
- package/dist/chunk-KZUHRZ2C.js.map +1 -0
- package/dist/chunk-L5WIRYNB.js +19 -0
- package/dist/chunk-L5WIRYNB.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-LWBWCIWL.js +297 -0
- package/dist/chunk-LWBWCIWL.js.map +1 -0
- package/dist/chunk-M4PPFVYL.js +346 -0
- package/dist/chunk-M4PPFVYL.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-MUVSWFLL.js +111 -0
- package/dist/chunk-MUVSWFLL.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-O6QKCJE4.js +455 -0
- package/dist/chunk-O6QKCJE4.js.map +1 -0
- package/dist/chunk-OBNWER4H.js +1599 -0
- package/dist/chunk-OBNWER4H.js.map +1 -0
- package/dist/chunk-OFFAMC5H.js +225 -0
- package/dist/chunk-OFFAMC5H.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-PAHLJMC3.js +175 -0
- package/dist/chunk-PAHLJMC3.js.map +1 -0
- package/dist/chunk-PBVLPFJ6.js +169 -0
- package/dist/chunk-PBVLPFJ6.js.map +1 -0
- package/dist/chunk-PFBQERWX.js +10 -0
- package/dist/chunk-PFBQERWX.js.map +1 -0
- package/dist/chunk-Q6ULQMWG.js +41 -0
- package/dist/chunk-Q6ULQMWG.js.map +1 -0
- package/dist/chunk-QKE7GXZ7.js +6683 -0
- package/dist/chunk-QKE7GXZ7.js.map +1 -0
- package/dist/chunk-QL573PLH.js +150 -0
- package/dist/chunk-QL573PLH.js.map +1 -0
- package/dist/chunk-QO23YHLK.js +84 -0
- package/dist/chunk-QO23YHLK.js.map +1 -0
- package/dist/chunk-R5OQM7FF.js +179 -0
- package/dist/chunk-R5OQM7FF.js.map +1 -0
- package/dist/chunk-RDLB54KF.js +629 -0
- package/dist/chunk-RDLB54KF.js.map +1 -0
- package/dist/chunk-RGIXQEGJ.js +502 -0
- package/dist/chunk-RGIXQEGJ.js.map +1 -0
- package/dist/chunk-RRIAHUWP.js +304 -0
- package/dist/chunk-RRIAHUWP.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-SLB46MSS.js +64 -0
- package/dist/chunk-SLB46MSS.js.map +1 -0
- package/dist/chunk-T7M4WFNV.js +172 -0
- package/dist/chunk-T7M4WFNV.js.map +1 -0
- package/dist/{chunk-JTZXQRXI.js → chunk-TPXI2GCW.js} +4 -4
- package/dist/chunk-TWNFQUBS.js +23 -0
- package/dist/chunk-TWNFQUBS.js.map +1 -0
- 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-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-V5GSRREZ.js +846 -0
- package/dist/chunk-V5GSRREZ.js.map +1 -0
- package/dist/chunk-V5HDRJQW.js +337 -0
- package/dist/chunk-V5HDRJQW.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-WIRBRCTJ.js +228 -0
- package/dist/chunk-WIRBRCTJ.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-WPKOEFOE.js +103 -0
- package/dist/chunk-WPKOEFOE.js.map +1 -0
- package/dist/chunk-XE3WS3QE.js +183 -0
- package/dist/chunk-XE3WS3QE.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-Y362QH54.js +98 -0
- package/dist/chunk-Y362QH54.js.map +1 -0
- package/dist/chunk-Y4HZNSBN.js +3151 -0
- package/dist/chunk-Y4HZNSBN.js.map +1 -0
- package/dist/chunk-Y4T6ATDQ.js +74 -0
- package/dist/chunk-Y4T6ATDQ.js.map +1 -0
- package/dist/chunk-YIMGUMXX.js +206 -0
- package/dist/chunk-YIMGUMXX.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-ZCFSHQBF.js +92 -0
- package/dist/chunk-ZCFSHQBF.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-4AFNDV3A.js +197 -0
- package/dist/claim-4AFNDV3A.js.map +1 -0
- package/dist/cli.js +104 -71708
- 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-PZRRZZNV.js +195 -0
- package/dist/companies-PZRRZZNV.js.map +1 -0
- package/dist/complete-IBW5DNVZ.js +81 -0
- package/dist/complete-IBW5DNVZ.js.map +1 -0
- package/dist/config-X6GKOVQ6.js +88 -0
- package/dist/config-X6GKOVQ6.js.map +1 -0
- package/dist/connect-WYUYS5V4.js +42 -0
- package/dist/content-UYZC4AKN.js +85 -0
- package/dist/content-UYZC4AKN.js.map +1 -0
- package/dist/conversation-6AG3UBYY.js +93 -0
- package/dist/conversation-6AG3UBYY.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-YML2UNJB.js +438 -0
- package/dist/conversion-upload-command-YML2UNJB.js.map +1 -0
- package/dist/conversion-writes-WHFFUWWL.js +120 -0
- package/dist/conversion-writes-WHFFUWWL.js.map +1 -0
- package/dist/conversions-NOBBFNIU.js +135 -0
- package/dist/conversions-NOBBFNIU.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-JK42P564.js +59 -0
- package/dist/create-JK42P564.js.map +1 -0
- package/dist/create-LAWUVPCY.js +207 -0
- package/dist/create-LAWUVPCY.js.map +1 -0
- package/dist/create-MUPQ5CTH.js +138 -0
- package/dist/create-MUPQ5CTH.js.map +1 -0
- package/dist/create-NQJNCFRO.js +236 -0
- package/dist/create-NQJNCFRO.js.map +1 -0
- package/dist/creatives-KCWFZIM5.js +182 -0
- package/dist/creatives-KCWFZIM5.js.map +1 -0
- package/dist/creatives-NNDWCSKJ.js +51 -0
- package/dist/creatives-NNDWCSKJ.js.map +1 -0
- package/dist/creatives-RHNHTS2R.js +87 -0
- package/dist/creatives-RHNHTS2R.js.map +1 -0
- package/dist/credentials-CEKGXR2C.js +287 -0
- package/dist/credentials-CEKGXR2C.js.map +1 -0
- package/dist/critique-HDDYER52.js +1449 -0
- package/dist/critique-HDDYER52.js.map +1 -0
- package/dist/critique-QIN2FO4F.js +216 -0
- package/dist/critique-QIN2FO4F.js.map +1 -0
- package/dist/crm-KBPWZC6J.js +318 -0
- package/dist/crm-KBPWZC6J.js.map +1 -0
- package/dist/crm-QBWD7CWB.js +224 -0
- package/dist/crm-QBWD7CWB.js.map +1 -0
- package/dist/crop-U3AD4DDR.js +113 -0
- package/dist/crop-U3AD4DDR.js.map +1 -0
- package/dist/currency-XTFGZFGB.js +88 -0
- package/dist/currency-XTFGZFGB.js.map +1 -0
- package/dist/custom-conversions-W3K33V33.js +125 -0
- package/dist/custom-conversions-W3K33V33.js.map +1 -0
- package/dist/customers-HYE7N2H5.js +56 -0
- package/dist/decide-YTHCBKM6.js +199 -0
- package/dist/decide-YTHCBKM6.js.map +1 -0
- package/dist/delete-64REPCY2.js +54 -0
- package/dist/delete-64REPCY2.js.map +1 -0
- package/dist/delete-AY3KL3N3.js +63 -0
- package/dist/delete-AY3KL3N3.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-VO2LZXE4.js +66 -0
- package/dist/delete-VO2LZXE4.js.map +1 -0
- package/dist/delete-VQMU56OH.js +71 -0
- package/dist/delete-VQMU56OH.js.map +1 -0
- package/dist/demographics-KOFLMGVW.js +138 -0
- package/dist/demographics-KOFLMGVW.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-H4RPXZHX.js +66 -0
- package/dist/discard-H4RPXZHX.js.map +1 -0
- package/dist/discover-4GD7QSF5.js +93 -0
- package/dist/discover-4GD7QSF5.js.map +1 -0
- package/dist/discover-L7OVXW4V.js +172 -0
- package/dist/discover-L7OVXW4V.js.map +1 -0
- package/dist/domain-HURQ23KR.js +98 -0
- package/dist/domain-HURQ23KR.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-5VH2PW3R.js +307 -0
- package/dist/draft-5VH2PW3R.js.map +1 -0
- package/dist/draft-D6UTKSAA.js +217 -0
- package/dist/draft-D6UTKSAA.js.map +1 -0
- package/dist/draft-KLULNBWP.js +233 -0
- package/dist/draft-KLULNBWP.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-UQYWDZS7.js +306 -0
- package/dist/draft-UQYWDZS7.js.map +1 -0
- package/dist/draft-YFAJHCKM.js +328 -0
- package/dist/draft-YFAJHCKM.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-WYQUZMFJ.js +114 -0
- package/dist/facets-WYQUZMFJ.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-SIMPRE37.js +66 -0
- package/dist/feedback-SIMPRE37.js.map +1 -0
- package/dist/feedback-record-L4MPIVML.js +177 -0
- package/dist/feedback-record-L4MPIVML.js.map +1 -0
- package/dist/fetch-DTBM3DE2.js +176 -0
- package/dist/fetch-DTBM3DE2.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-IUDXVDOS.js +247 -0
- package/dist/flows-IUDXVDOS.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-EUDHI6CA.js +34 -0
- package/dist/fonts-EUDHI6CA.js.map +1 -0
- package/dist/forecast-BRSEH2H3.js +104 -0
- package/dist/forecast-BRSEH2H3.js.map +1 -0
- package/dist/forecast-QV4U7TOY.js +168 -0
- package/dist/forecast-QV4U7TOY.js.map +1 -0
- package/dist/funding-H5YO37OW.js +85 -0
- package/dist/funding-H5YO37OW.js.map +1 -0
- package/dist/funnel-JLF77MLF.js +394 -0
- package/dist/funnel-JLF77MLF.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-AYX5HS64.js +56 -0
- package/dist/get-AYX5HS64.js.map +1 -0
- package/dist/get-AZARFR6O.js +61 -0
- package/dist/get-AZARFR6O.js.map +1 -0
- package/dist/get-EG2U7MIL.js +78 -0
- package/dist/get-EG2U7MIL.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-52JRH7X3.js +136 -0
- package/dist/google-52JRH7X3.js.map +1 -0
- package/dist/google-ITTPCJ7N.js +3190 -0
- package/dist/google-ITTPCJ7N.js.map +1 -0
- package/dist/google-ads-U3JFFQLU.js +195 -0
- package/dist/google-ads-U3JFFQLU.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-YTNCWSV3.js +133 -0
- package/dist/history-YTNCWSV3.js.map +1 -0
- package/dist/hubspot-LXWQNKKB.js +779 -0
- package/dist/hubspot-LXWQNKKB.js.map +1 -0
- package/dist/icon-K75KI6BV.js +137 -0
- package/dist/icon-K75KI6BV.js.map +1 -0
- package/dist/ideas-JJIHQFV4.js +35 -0
- package/dist/ideas-JJIHQFV4.js.map +1 -0
- package/dist/images-MWETBYKB.js +90 -0
- package/dist/images-MWETBYKB.js.map +1 -0
- package/dist/improve-L3BW4EQG.js +86 -0
- package/dist/improve-L3BW4EQG.js.map +1 -0
- package/dist/ingest-THFAV4NO.js +107 -0
- package/dist/ingest-THFAV4NO.js.map +1 -0
- package/dist/ingest-U6B7GR4A.js +23 -0
- package/dist/ingest-U6B7GR4A.js.map +1 -0
- package/dist/insights-FA6T6PT6.js +423 -0
- package/dist/insights-FA6T6PT6.js.map +1 -0
- package/dist/insights-PELVD4RY.js +122 -0
- package/dist/insights-PELVD4RY.js.map +1 -0
- package/dist/inspect-N2WVVWGP.js +189 -0
- package/dist/inspect-N2WVVWGP.js.map +1 -0
- package/dist/inspiration-Y2J2PUPC.js +53 -0
- package/dist/inspiration-Y2J2PUPC.js.map +1 -0
- package/dist/intent-YNAAVNHK.js +95 -0
- package/dist/intent-YNAAVNHK.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-4JKLWIBJ.js +130 -0
- package/dist/keyword-gap-4JKLWIBJ.js.map +1 -0
- package/dist/keyword-metrics-KU3OHTQK.js +197 -0
- package/dist/keyword-metrics-KU3OHTQK.js.map +1 -0
- package/dist/keywords-for-site-M4MFWMVK.js +128 -0
- package/dist/keywords-for-site-M4MFWMVK.js.map +1 -0
- package/dist/landing-7UVZ7IPP.js +28 -0
- package/dist/landing-7UVZ7IPP.js.map +1 -0
- package/dist/landings-F7LOAEJE.js +151 -0
- package/dist/landings-F7LOAEJE.js.map +1 -0
- package/dist/languages-PKYCZNUB.js +40 -0
- package/dist/languages-PKYCZNUB.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-CSRESOB2.js +293 -0
- package/dist/leads-CSRESOB2.js.map +1 -0
- package/dist/leads-MQPEA7DG.js +90 -0
- package/dist/leads-MQPEA7DG.js.map +1 -0
- package/dist/learn-K5YBUMBT.js +203 -0
- package/dist/learn-K5YBUMBT.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-73NR2J5L.js +208 -0
- package/dist/line-item-writes-73NR2J5L.js.map +1 -0
- package/dist/line-items-2YBGXOAQ.js +103 -0
- package/dist/line-items-2YBGXOAQ.js.map +1 -0
- package/dist/link-GVAWECJO.js +64 -0
- package/dist/link-GVAWECJO.js.map +1 -0
- package/dist/linkedin-PZDT22AT.js +1008 -0
- package/dist/linkedin-PZDT22AT.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-FNDRV25Y.js +151 -0
- package/dist/list-FNDRV25Y.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-REZGFWC5.js +63 -0
- package/dist/list-REZGFWC5.js.map +1 -0
- package/dist/list-S6MNXDTV.js +303 -0
- package/dist/list-S6MNXDTV.js.map +1 -0
- package/dist/locations-2BYWKIYA.js +67 -0
- package/dist/locations-2BYWKIYA.js.map +1 -0
- package/dist/locations-GJHHMV6Z.js +40 -0
- package/dist/locations-GJHHMV6Z.js.map +1 -0
- package/dist/log-HGDNLDUX.js +92 -0
- package/dist/log-HGDNLDUX.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-BT26YJXZ.js +640 -0
- package/dist/make-BT26YJXZ.js.map +1 -0
- package/dist/map-J5EX4HOX.js +404 -0
- package/dist/map-J5EX4HOX.js.map +1 -0
- package/dist/mcp-MHDW6AFL.js +463 -0
- package/dist/mcp-MHDW6AFL.js.map +1 -0
- package/dist/media-RAGEJTZX.js +89 -0
- package/dist/media-RAGEJTZX.js.map +1 -0
- package/dist/media-RNB7JFJP.js +15 -0
- package/dist/media-RNB7JFJP.js.map +1 -0
- package/dist/media-sources-4NN3DWSG.js +32 -0
- package/dist/media-sources-4NN3DWSG.js.map +1 -0
- package/dist/members-AIWMXAQD.js +44 -0
- package/dist/members-AIWMXAQD.js.map +1 -0
- package/dist/meta-WAPZMZI7.js +69 -0
- package/dist/meta-WAPZMZI7.js.map +1 -0
- package/dist/metrics-6EHC4ESN.js +152 -0
- package/dist/metrics-6EHC4ESN.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-ZAWN4XCS.js +141 -0
- package/dist/normalize-ZAWN4XCS.js.map +1 -0
- package/dist/options-3CZNT5KP.js +121 -0
- package/dist/options-3CZNT5KP.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-GOMJMHPE.js +24 -0
- package/dist/performance-GOMJMHPE.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-UKYLPAW2.js +169 -0
- package/dist/preview-UKYLPAW2.js.map +1 -0
- package/dist/profile-Q3PHR6FU.js +159 -0
- package/dist/profile-Q3PHR6FU.js.map +1 -0
- package/dist/promoted-tweet-writes-IYOAZTA5.js +180 -0
- package/dist/promoted-tweet-writes-IYOAZTA5.js.map +1 -0
- package/dist/promoted-tweets-G3XFD5YM.js +119 -0
- package/dist/promoted-tweets-G3XFD5YM.js.map +1 -0
- package/dist/properties-WLL6M2P6.js +101 -0
- package/dist/properties-WLL6M2P6.js.map +1 -0
- package/dist/publish-ZG4J2GTH.js +322 -0
- package/dist/publish-ZG4J2GTH.js.map +1 -0
- package/dist/query-7AGG77WH.js +61 -0
- package/dist/query-7AGG77WH.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-FTO4SFQE.js +26 -0
- package/dist/reddit-FTO4SFQE.js.map +1 -0
- package/dist/refresh-OUENQ2FS.js +94 -0
- package/dist/refresh-OUENQ2FS.js.map +1 -0
- package/dist/release-5OG7AAFY.js +60 -0
- package/dist/release-5OG7AAFY.js.map +1 -0
- package/dist/relevant-pages-KUVDZPRU.js +99 -0
- package/dist/relevant-pages-KUVDZPRU.js.map +1 -0
- package/dist/remove-33HI27KM.js +50 -0
- package/dist/remove-33HI27KM.js.map +1 -0
- package/dist/remove-GOYW2G4R.js +48 -0
- package/dist/remove-GOYW2G4R.js.map +1 -0
- package/dist/reopen-KFFYE53A.js +63 -0
- package/dist/reopen-KFFYE53A.js.map +1 -0
- package/dist/rerun-P6XACA5Z.js +86 -0
- package/dist/rerun-P6XACA5Z.js.map +1 -0
- package/dist/research-BEO3JMZI.js +262 -0
- package/dist/research-BEO3JMZI.js.map +1 -0
- package/dist/research-QOC53DLS.js +62 -0
- package/dist/research-QOC53DLS.js.map +1 -0
- package/dist/reset-E3OWE2WF.js +54 -0
- package/dist/reset-E3OWE2WF.js.map +1 -0
- package/dist/reset-I7M3HYMB.js +54 -0
- package/dist/reset-I7M3HYMB.js.map +1 -0
- package/dist/resolve-GP7BHM6L.js +121 -0
- package/dist/resolve-GP7BHM6L.js.map +1 -0
- package/dist/retry-33ZJCNQI.js +62 -0
- package/dist/retry-33ZJCNQI.js.map +1 -0
- package/dist/retry-X5PU7QO3.js +60 -0
- package/dist/retry-X5PU7QO3.js.map +1 -0
- package/dist/retry-failed-BEFWRV4Z.js +45 -0
- package/dist/retry-failed-BEFWRV4Z.js.map +1 -0
- package/dist/run-REK3TEGY.js +65 -0
- package/dist/run-REK3TEGY.js.map +1 -0
- package/dist/run-TH2662IC.js +61 -0
- package/dist/run-TH2662IC.js.map +1 -0
- package/dist/scaffold-ad-3WDRKUFT.js +1550 -0
- package/dist/scaffold-ad-3WDRKUFT.js.map +1 -0
- package/dist/scaffold-static-ad-X5NT52NF.js +973 -0
- package/dist/scaffold-static-ad-X5NT52NF.js.map +1 -0
- package/dist/scaffold-video-WZPVACLE.js +874 -0
- package/dist/scaffold-video-WZPVACLE.js.map +1 -0
- package/dist/schedule-KQ7UIR3N.js +66 -0
- package/dist/schedule-KQ7UIR3N.js.map +1 -0
- package/dist/schedule-V4UHGY3V.js +61 -0
- package/dist/schedule-V4UHGY3V.js.map +1 -0
- package/dist/scheduled-agents-KLQ5H2PA.js +49 -0
- package/dist/scheduled-agents-KLQ5H2PA.js.map +1 -0
- package/dist/schema-G3T4PZDI.js +132 -0
- package/dist/schema-G3T4PZDI.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-6XKEGABN.js +174 -0
- package/dist/search-6XKEGABN.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-N2V55BEX.js +96 -0
- package/dist/select-N2V55BEX.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-7HVHERRU.js +188 -0
- package/dist/set-prompt-7HVHERRU.js.map +1 -0
- package/dist/setup-links-4VVNQVPU.js +141 -0
- package/dist/setup-links-4VVNQVPU.js.map +1 -0
- package/dist/{shared-AVM74EX7.js → shared-QAMP7FZV.js} +8 -6
- package/dist/shared-QAMP7FZV.js.map +1 -0
- package/dist/shopify-FSHM5M4I.js +3346 -0
- package/dist/shopify-FSHM5M4I.js.map +1 -0
- package/dist/site-Q2HTRLIW.js +177 -0
- package/dist/site-Q2HTRLIW.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-2KN4RJNJ.js +30 -0
- package/dist/sources-2KN4RJNJ.js.map +1 -0
- package/dist/sources-4I2YMS2K.js +421 -0
- package/dist/sources-4I2YMS2K.js.map +1 -0
- package/dist/stale-IN7WSBLC.js +66 -0
- package/dist/stale-IN7WSBLC.js.map +1 -0
- package/dist/stats-GNILHSKK.js +34 -0
- package/dist/stats-GNILHSKK.js.map +1 -0
- package/dist/status-6SLKZWNR.js +62 -0
- package/dist/status-6SLKZWNR.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-LFZV5NBN.js +54 -0
- package/dist/sync-LFZV5NBN.js.map +1 -0
- package/dist/sync-definition-IJISZ5VQ.js +55 -0
- package/dist/sync-definition-IJISZ5VQ.js.map +1 -0
- package/dist/tag-manager-E7QTXBWQ.js +43 -0
- package/dist/tag-manager-E7QTXBWQ.js.map +1 -0
- package/dist/tags-6OAZOQYO.js +26 -0
- package/dist/tags-6OAZOQYO.js.map +1 -0
- package/dist/tags-6YRMDX3R.js +20 -0
- package/dist/tags-6YRMDX3R.js.map +1 -0
- package/dist/tags-EWXZSZYE.js +20 -0
- package/dist/tags-EWXZSZYE.js.map +1 -0
- package/dist/tags-SZCNPE2D.js +224 -0
- package/dist/tags-SZCNPE2D.js.map +1 -0
- package/dist/tags-TCFFP534.js +20 -0
- package/dist/tags-TCFFP534.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-ESOC7KNX.js +113 -0
- package/dist/targeting-criteria-ESOC7KNX.js.map +1 -0
- package/dist/targets-IPBEB5KU.js +102 -0
- package/dist/targets-IPBEB5KU.js.map +1 -0
- package/dist/templates-IJ7FR3LA.js +178 -0
- package/dist/templates-IJ7FR3LA.js.map +1 -0
- package/dist/testimonials-IXS7CP6P.js +32 -0
- package/dist/testimonials-IXS7CP6P.js.map +1 -0
- package/dist/themes-MXNKJWMW.js +94 -0
- package/dist/themes-MXNKJWMW.js.map +1 -0
- package/dist/top-companies-NO6L2V6M.js +108 -0
- package/dist/top-companies-NO6L2V6M.js.map +1 -0
- package/dist/translate-QCE5ZB7M.js +600 -0
- package/dist/translate-QCE5ZB7M.js.map +1 -0
- package/dist/triggers-KXUDMDSA.js +141 -0
- package/dist/triggers-KXUDMDSA.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-E3N36NYQ.js +67 -0
- package/dist/unlink-E3N36NYQ.js.map +1 -0
- package/dist/unstage-TRMHSHED.js +84 -0
- package/dist/unstage-TRMHSHED.js.map +1 -0
- package/dist/unstage-ZRLLCSQF.js +95 -0
- package/dist/unstage-ZRLLCSQF.js.map +1 -0
- package/dist/update-EWGWAXAQ.js +142 -0
- package/dist/update-EWGWAXAQ.js.map +1 -0
- package/dist/update-OKOQE7U2.js +155 -0
- package/dist/update-OKOQE7U2.js.map +1 -0
- package/dist/update-VSFHID2D.js +63 -0
- package/dist/update-VSFHID2D.js.map +1 -0
- package/dist/update-XGCGQDJ4.js +98 -0
- package/dist/update-XGCGQDJ4.js.map +1 -0
- package/dist/upload-BOYMDDEQ.js +126 -0
- package/dist/upload-BOYMDDEQ.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-PCZEQE66.js +130 -0
- package/dist/url-options-PCZEQE66.js.map +1 -0
- package/dist/url-params-DV37GEQF.js +98 -0
- package/dist/url-params-DV37GEQF.js.map +1 -0
- package/dist/use-U4HG2NF3.js +95 -0
- package/dist/use-U4HG2NF3.js.map +1 -0
- package/dist/validate-5AV4FJZ5.js +91 -0
- package/dist/validate-5AV4FJZ5.js.map +1 -0
- package/dist/variant-FOVE6URJ.js +338 -0
- package/dist/variant-FOVE6URJ.js.map +1 -0
- package/dist/videos-IJ67PPJV.js +39 -0
- package/dist/videos-IJ67PPJV.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-LJ36FRWD.js +140 -0
- package/dist/web-LJ36FRWD.js.map +1 -0
- package/dist/winners-SMMDN6LW.js +113 -0
- package/dist/winners-SMMDN6LW.js.map +1 -0
- package/dist/winning-ads-JIG2MQHJ.js +84 -0
- package/dist/winning-ads-JIG2MQHJ.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-GOZU6ENR.js +1015 -0
- package/dist/write-commands-GOZU6ENR.js.map +1 -0
- package/dist/write-commands-KA3QXVSF.js +737 -0
- package/dist/write-commands-KA3QXVSF.js.map +1 -0
- package/dist/x-6HBVXIKH.js +47 -0
- package/dist/x-6HBVXIKH.js.map +1 -0
- package/package.json +9 -2
- package/dist/chunk-HJEMOSPH.js +0 -1292
- package/dist/chunk-HJEMOSPH.js.map +0 -1
- package/dist/chunk-JHKW6IDX.js +0 -9989
- package/dist/chunk-JHKW6IDX.js.map +0 -1
- package/dist/chunk-MF7YA62W.js.map +0 -1
- package/dist/chunk-VZEDAFAR.js.map +0 -1
- package/dist/chunk-WWCLT3RG.js.map +0 -1
- package/dist/client-GR6YL3YX.js +0 -17
- package/dist/output-VQSTVRH7.js +0 -18
- /package/dist/{chunk-JTZXQRXI.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-VQSTVRH7.js.map → connect-WYUYS5V4.js.map} +0 -0
- /package/dist/{shared-AVM74EX7.js.map → customers-HYE7N2H5.js.map} +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AUTO_INGEST_MAX,
|
|
3
|
+
parseAutoIngest
|
|
4
|
+
} from "./chunk-KKJ4KJCW.js";
|
|
5
|
+
import {
|
|
6
|
+
ApiError,
|
|
7
|
+
apiPost
|
|
8
|
+
} from "./chunk-HREWXNTO.js";
|
|
9
|
+
import "./chunk-HLXWKMTK.js";
|
|
10
|
+
import "./chunk-O6QKCJE4.js";
|
|
11
|
+
import {
|
|
12
|
+
registerSchema,
|
|
13
|
+
writeJson
|
|
14
|
+
} from "./chunk-WOTDHRNF.js";
|
|
15
|
+
import "./chunk-YQSBHWOI.js";
|
|
16
|
+
|
|
17
|
+
// src/commands/images/extract.ts
|
|
18
|
+
import { defineCommand } from "citty";
|
|
19
|
+
|
|
20
|
+
// src/commands/images/extractErrors.ts
|
|
21
|
+
var RETRYABLE = /* @__PURE__ */ new Set(["UNAVAILABLE", "RATE_LIMITED", "TIMEOUT", "NETWORK_ERROR"]);
|
|
22
|
+
function extractErrorEnvelope(err, url) {
|
|
23
|
+
const retryable = RETRYABLE.has(err.code);
|
|
24
|
+
const fallback = `use \`baker images screenshot ${url}\` to capture the page as one image, or \`baker images logo <domain>\` for the brand's mark, and carry on with the rest of the job.`;
|
|
25
|
+
return {
|
|
26
|
+
ok: false,
|
|
27
|
+
error: {
|
|
28
|
+
code: err.code,
|
|
29
|
+
message: err.message,
|
|
30
|
+
retryable,
|
|
31
|
+
fix: retryable ? { action: "retry_once", explanation: `Run the same command once more. If it fails again, ${fallback}` } : { action: "use_fallback", explanation: `Retrying the same address will fail the same way \u2014 ${fallback}` }
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/commands/images/extract.ts
|
|
37
|
+
registerSchema({
|
|
38
|
+
command: "images.extract",
|
|
39
|
+
description: "Extract images from a URL via Firecrawl (formats: images).",
|
|
40
|
+
args: {
|
|
41
|
+
url: { type: "string", description: "URL to scrape", required: true },
|
|
42
|
+
"wait-for": { type: "number", description: "JS render wait ms", required: false },
|
|
43
|
+
limit: { type: "number", description: "Limit returned images", required: false, default: 50 },
|
|
44
|
+
"auto-ingest": {
|
|
45
|
+
type: "number",
|
|
46
|
+
description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract}, default 0)`,
|
|
47
|
+
required: false,
|
|
48
|
+
default: 0
|
|
49
|
+
},
|
|
50
|
+
context: {
|
|
51
|
+
type: "string",
|
|
52
|
+
description: "Free-text hint applied to every auto-ingested hit (overrides provider-derived context)",
|
|
53
|
+
required: false
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
var extractCommand = defineCommand({
|
|
58
|
+
meta: {
|
|
59
|
+
name: "extract",
|
|
60
|
+
description: "Pull every image from a single URL via Firecrawl. ~$0.001/scrape. Cap auto-ingest at 20.\n\nExample: baker images extract https://stripe.com --auto-ingest 5"
|
|
61
|
+
},
|
|
62
|
+
args: {
|
|
63
|
+
url: { type: "positional", description: "URL to scrape", required: false },
|
|
64
|
+
"wait-for": { type: "string", description: "JS render wait ms", required: false },
|
|
65
|
+
limit: { type: "string", description: "Max returned images", required: false },
|
|
66
|
+
"auto-ingest": { type: "string", description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract})`, required: false },
|
|
67
|
+
context: { type: "string", description: "Description context hint applied to auto-ingested hits", required: false }
|
|
68
|
+
},
|
|
69
|
+
run: async ({ args }) => {
|
|
70
|
+
try {
|
|
71
|
+
const url = args.url;
|
|
72
|
+
if (!url) {
|
|
73
|
+
writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "URL is required" } });
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
const body = { url };
|
|
77
|
+
if (args["wait-for"]) body.waitFor = Number(args["wait-for"]);
|
|
78
|
+
if (args.limit) body.limit = Number(args.limit);
|
|
79
|
+
if (args["auto-ingest"] !== void 0) {
|
|
80
|
+
const parsed = parseAutoIngest(args["auto-ingest"], AUTO_INGEST_MAX.extract);
|
|
81
|
+
if (!parsed.ok) {
|
|
82
|
+
writeJson({
|
|
83
|
+
ok: false,
|
|
84
|
+
error: {
|
|
85
|
+
code: "VALIDATION_ERROR",
|
|
86
|
+
message: parsed.message,
|
|
87
|
+
fix: {
|
|
88
|
+
action: "retry_with_changes",
|
|
89
|
+
explanation: `Re-run with --auto-ingest in 0-${AUTO_INGEST_MAX.extract}.`
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
body.autoIngest = parsed.value;
|
|
96
|
+
}
|
|
97
|
+
if (args.context) body.descriptionContext = args.context;
|
|
98
|
+
const data = await apiPost("/api/images/extract", body);
|
|
99
|
+
writeJson({ ok: true, data });
|
|
100
|
+
} catch (err) {
|
|
101
|
+
if (err instanceof ApiError) {
|
|
102
|
+
writeJson(extractErrorEnvelope(err, String(args.url)));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
export {
|
|
111
|
+
extractCommand
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=extract-QVQFUOIK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/images/extract.ts","../src/commands/images/extractErrors.ts"],"sourcesContent":["import type { ImagesExtractRequest, ImagesExtractResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { AUTO_INGEST_MAX, parseAutoIngest } from \"./autoIngest.ts\";\nimport { extractErrorEnvelope } from \"./extractErrors.ts\";\n\nregisterSchema({\n command: \"images.extract\",\n description: \"Extract images from a URL via Firecrawl (formats: images).\",\n args: {\n url: { type: \"string\", description: \"URL to scrape\", required: true },\n \"wait-for\": { type: \"number\", description: \"JS render wait ms\", required: false },\n limit: { type: \"number\", description: \"Limit returned images\", required: false, default: 50 },\n \"auto-ingest\": {\n type: \"number\",\n description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract}, default 0)`,\n required: false,\n default: 0,\n },\n context: {\n type: \"string\",\n description: \"Free-text hint applied to every auto-ingested hit (overrides provider-derived context)\",\n required: false,\n },\n },\n});\n\nexport const extractCommand = defineCommand({\n meta: {\n name: \"extract\",\n description:\n \"Pull every image from a single URL via Firecrawl. ~$0.001/scrape. Cap auto-ingest at 20.\\n\\nExample: baker images extract https://stripe.com --auto-ingest 5\",\n },\n args: {\n url: { type: \"positional\", description: \"URL to scrape\", required: false },\n \"wait-for\": { type: \"string\", description: \"JS render wait ms\", required: false },\n limit: { type: \"string\", description: \"Max returned images\", required: false },\n \"auto-ingest\": { type: \"string\", description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract})`, required: false },\n context: { type: \"string\", description: \"Description context hint applied to auto-ingested hits\", required: false },\n },\n run: async ({ args }) => {\n try {\n const url = args.url as string | undefined;\n if (!url) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"URL is required\" } });\n process.exit(1);\n }\n const body: ImagesExtractRequest = { url };\n if (args[\"wait-for\"]) body.waitFor = Number(args[\"wait-for\"]);\n if (args.limit) body.limit = Number(args.limit);\n if (args[\"auto-ingest\"] !== undefined) {\n const parsed = parseAutoIngest(args[\"auto-ingest\"], AUTO_INGEST_MAX.extract);\n if (!parsed.ok) {\n writeJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: parsed.message,\n fix: {\n action: \"retry_with_changes\",\n explanation: `Re-run with --auto-ingest in 0-${AUTO_INGEST_MAX.extract}.`,\n },\n },\n });\n process.exit(1);\n }\n body.autoIngest = parsed.value;\n }\n if (args.context) body.descriptionContext = args.context as string;\n\n const data = await apiPost<ImagesExtractResponse>(\"/api/images/extract\", body);\n writeJson({ ok: true, data });\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson(extractErrorEnvelope(err, String(args.url)));\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n","import type { ApiError } from \"../../client.ts\";\n\n/** Failures a second attempt can change: the reader or the connection had a bad moment. */\nconst RETRYABLE = new Set([\"UNAVAILABLE\", \"RATE_LIMITED\", \"TIMEOUT\", \"NETWORK_ERROR\"]);\n\ninterface ExtractErrorEnvelope {\n ok: false;\n error: {\n code: string;\n message: string;\n retryable: boolean;\n fix?: { action: string; explanation: string };\n };\n}\n\n/**\n * The envelope for a failed `baker images extract`. Without `retryable` an\n * agent cannot tell a reader that hiccupped from a page nobody can read, and it\n * abandons the page for an image search. Either way the job carries on: the\n * page can still be captured whole, and the brand's mark fetched on its own.\n */\nexport function extractErrorEnvelope(err: ApiError, url: string): ExtractErrorEnvelope {\n const retryable = RETRYABLE.has(err.code);\n const fallback = `use \\`baker images screenshot ${url}\\` to capture the page as one image, or \\`baker images logo <domain>\\` for the brand's mark, and carry on with the rest of the job.`;\n return {\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n retryable,\n fix: retryable\n ? { action: \"retry_once\", explanation: `Run the same command once more. If it fails again, ${fallback}` }\n : { action: \"use_fallback\", explanation: `Retrying the same address will fail the same way — ${fallback}` },\n },\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import {
|
|
2
|
+
csvOrJson,
|
|
3
|
+
handleLinkedinError
|
|
4
|
+
} from "./chunk-PAHLJMC3.js";
|
|
5
|
+
import {
|
|
6
|
+
writeAdsJson,
|
|
7
|
+
writeAdsOutput
|
|
8
|
+
} from "./chunk-BVM5IRZW.js";
|
|
9
|
+
import {
|
|
10
|
+
NO_CACHE_ARG
|
|
11
|
+
} from "./chunk-EF5DP6EB.js";
|
|
12
|
+
import "./chunk-KRIK2JR4.js";
|
|
13
|
+
import "./chunk-GXDLWBOY.js";
|
|
14
|
+
import "./chunk-GIWHHCD6.js";
|
|
15
|
+
import "./chunk-UI6BKYQD.js";
|
|
16
|
+
import "./chunk-JAYT43KX.js";
|
|
17
|
+
import {
|
|
18
|
+
apiGet
|
|
19
|
+
} from "./chunk-HREWXNTO.js";
|
|
20
|
+
import "./chunk-HLXWKMTK.js";
|
|
21
|
+
import "./chunk-O6QKCJE4.js";
|
|
22
|
+
import "./chunk-WOTDHRNF.js";
|
|
23
|
+
import "./chunk-YQSBHWOI.js";
|
|
24
|
+
|
|
25
|
+
// src/commands/ads/linkedin/facets.ts
|
|
26
|
+
import { defineCommand } from "citty";
|
|
27
|
+
var listCmd = defineCommand({
|
|
28
|
+
meta: {
|
|
29
|
+
name: "list",
|
|
30
|
+
description: `List every targeting facet LinkedIn supports.
|
|
31
|
+
|
|
32
|
+
Cached 7 days. Use this to discover what dimensions you can target on (industries,
|
|
33
|
+
seniorities, titles, employers, growthRate, companyCategory, skills, etc.).`
|
|
34
|
+
},
|
|
35
|
+
args: {
|
|
36
|
+
"no-cache": NO_CACHE_ARG,
|
|
37
|
+
output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
|
|
38
|
+
},
|
|
39
|
+
run: async ({ args }) => {
|
|
40
|
+
try {
|
|
41
|
+
const params = {};
|
|
42
|
+
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
43
|
+
const data = await apiGet("/api/ads/linkedin/facets", params);
|
|
44
|
+
const fmt = csvOrJson(args);
|
|
45
|
+
if (fmt !== "json") {
|
|
46
|
+
writeAdsOutput(data, fmt);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
writeAdsJson({ ok: true, data });
|
|
50
|
+
} catch (err) {
|
|
51
|
+
handleLinkedinError(err);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
var valuesCmd = defineCommand({
|
|
56
|
+
meta: {
|
|
57
|
+
name: "values",
|
|
58
|
+
description: `Look up entity values for a single facet \u2014 full list or typeahead search.
|
|
59
|
+
|
|
60
|
+
Examples:
|
|
61
|
+
baker ads linkedin facets values --facet seniorities \u2014 all seniority URNs
|
|
62
|
+
baker ads linkedin facets values --facet titles --query "marketing director" \u2014 typeahead
|
|
63
|
+
baker ads linkedin facets values --facet industries --output csv
|
|
64
|
+
|
|
65
|
+
The --facet flag accepts the bare name (industries, seniorities, titles, etc.)
|
|
66
|
+
or the full URN (urn:li:adTargetingFacet:industries).`
|
|
67
|
+
},
|
|
68
|
+
args: {
|
|
69
|
+
facet: { type: "string", description: "Facet name (e.g. industries) or URN", required: true },
|
|
70
|
+
query: { type: "string", description: "Typeahead query (auto-switches finder to typeahead)" },
|
|
71
|
+
finder: { type: "string", description: "adTargetingFacet | typeahead | similarEntities (default: auto)" },
|
|
72
|
+
locale: { type: "string", description: "Locale (default: en_US)" },
|
|
73
|
+
"no-cache": NO_CACHE_ARG,
|
|
74
|
+
output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
|
|
75
|
+
},
|
|
76
|
+
run: async ({ args }) => {
|
|
77
|
+
try {
|
|
78
|
+
const params = { facet: String(args.facet) };
|
|
79
|
+
const finder = args.finder ?? (args.query ? "typeahead" : "adTargetingFacet");
|
|
80
|
+
params.finder = finder;
|
|
81
|
+
if (args.query) params.query = String(args.query);
|
|
82
|
+
if (args.locale) params.locale = String(args.locale);
|
|
83
|
+
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
84
|
+
const data = await apiGet("/api/ads/linkedin/facets/entities", params);
|
|
85
|
+
const fmt = csvOrJson(args);
|
|
86
|
+
if (fmt !== "json") {
|
|
87
|
+
writeAdsOutput(data, fmt);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
writeAdsJson({ ok: true, data });
|
|
91
|
+
} catch (err) {
|
|
92
|
+
handleLinkedinError(err);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
var facetsCommand = defineCommand({
|
|
97
|
+
meta: {
|
|
98
|
+
name: "facets",
|
|
99
|
+
description: `LinkedIn targeting facets and entity lookup.
|
|
100
|
+
|
|
101
|
+
Subcommands:
|
|
102
|
+
list \u2014 every facet (industries, seniorities, titles, employers, \u2026)
|
|
103
|
+
values --facet titles \u2014 entity URNs for one facet
|
|
104
|
+
values --facet titles --query "marketing director" \u2014 typeahead`
|
|
105
|
+
},
|
|
106
|
+
subCommands: {
|
|
107
|
+
list: listCmd,
|
|
108
|
+
values: valuesCmd
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
export {
|
|
112
|
+
facetsCommand
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=facets-WYQUZMFJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/linkedin/facets.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { csvOrJson, handleLinkedinError } from \"./shared.ts\";\n\ninterface LinkedinFacet {\n facet: string;\n facetUrn: string;\n name: string;\n entityTypes?: string[];\n availableEntityFinders?: string[];\n}\n\ninterface LinkedinFacetEntity {\n urn: string;\n facet?: string;\n name?: string;\n parents?: string[];\n}\n\nconst listCmd = defineCommand({\n meta: {\n name: \"list\",\n description: `List every targeting facet LinkedIn supports.\n\nCached 7 days. Use this to discover what dimensions you can target on (industries,\nseniorities, titles, employers, growthRate, companyCategory, skills, etc.).`,\n },\n args: {\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n try {\n const params: Record<string, string> = {};\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<LinkedinFacet[]>(\"/api/ads/linkedin/facets\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data as unknown as Array<Record<string, unknown>>, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n\nconst valuesCmd = defineCommand({\n meta: {\n name: \"values\",\n description: `Look up entity values for a single facet — full list or typeahead search.\n\nExamples:\n baker ads linkedin facets values --facet seniorities — all seniority URNs\n baker ads linkedin facets values --facet titles --query \"marketing director\" — typeahead\n baker ads linkedin facets values --facet industries --output csv\n\nThe --facet flag accepts the bare name (industries, seniorities, titles, etc.)\nor the full URN (urn:li:adTargetingFacet:industries).`,\n },\n args: {\n facet: { type: \"string\", description: \"Facet name (e.g. industries) or URN\", required: true },\n query: { type: \"string\", description: \"Typeahead query (auto-switches finder to typeahead)\" },\n finder: { type: \"string\", description: \"adTargetingFacet | typeahead | similarEntities (default: auto)\" },\n locale: { type: \"string\", description: \"Locale (default: en_US)\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n try {\n const params: Record<string, string> = { facet: String(args.facet) };\n const finder = (args.finder as string | undefined) ?? (args.query ? \"typeahead\" : \"adTargetingFacet\");\n params.finder = finder;\n if (args.query) params.query = String(args.query);\n if (args.locale) params.locale = String(args.locale);\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n\n const data = await apiGet<LinkedinFacetEntity[]>(\"/api/ads/linkedin/facets/entities\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data as unknown as Array<Record<string, unknown>>, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n\nexport const facetsCommand = defineCommand({\n meta: {\n name: \"facets\",\n description: `LinkedIn targeting facets and entity lookup.\n\nSubcommands:\n list — every facet (industries, seniorities, titles, employers, …)\n values --facet titles — entity URNs for one facet\n values --facet titles --query \"marketing director\" — typeahead`,\n },\n subCommands: {\n list: listCmd,\n values: valuesCmd,\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAqB9B,IAAM,UAAU,cAAc;AAAA,EAC5B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA,EAIf;AAAA,EACA,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,qBAAqB,SAAS,OAAO;AAAA,EAC9E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,SAAiC,CAAC;AACxC,UAAI,KAAK,UAAU,EAAG,QAAO,YAAY,IAAI;AAC7C,YAAM,OAAO,MAAM,OAAwB,4BAA4B,MAAM;AAC7E,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,MAAmD,GAAG;AACrE;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;AAED,IAAM,YAAY,cAAc;AAAA,EAC9B,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf;AAAA,EACA,MAAM;AAAA,IACJ,OAAO,EAAE,MAAM,UAAU,aAAa,uCAAuC,UAAU,KAAK;AAAA,IAC5F,OAAO,EAAE,MAAM,UAAU,aAAa,sDAAsD;AAAA,IAC5F,QAAQ,EAAE,MAAM,UAAU,aAAa,iEAAiE;AAAA,IACxG,QAAQ,EAAE,MAAM,UAAU,aAAa,0BAA0B;AAAA,IACjE,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,qBAAqB,SAAS,OAAO;AAAA,EAC9E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,SAAiC,EAAE,OAAO,OAAO,KAAK,KAAK,EAAE;AACnE,YAAM,SAAU,KAAK,WAAkC,KAAK,QAAQ,cAAc;AAClF,aAAO,SAAS;AAChB,UAAI,KAAK,MAAO,QAAO,QAAQ,OAAO,KAAK,KAAK;AAChD,UAAI,KAAK,OAAQ,QAAO,SAAS,OAAO,KAAK,MAAM;AACnD,UAAI,KAAK,UAAU,EAAG,QAAO,YAAY,IAAI;AAE7C,YAAM,OAAO,MAAM,OAA8B,qCAAqC,MAAM;AAC5F,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,MAAmD,GAAG;AACrE;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,gBAAgB,cAAc;AAAA,EACzC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import {
|
|
2
|
+
INSPIRATION_HINTS,
|
|
3
|
+
favoritesScopeHints,
|
|
4
|
+
parseNumber,
|
|
5
|
+
reportError,
|
|
6
|
+
splitList
|
|
7
|
+
} from "./chunk-H7MLHG2I.js";
|
|
8
|
+
import {
|
|
9
|
+
apiGet,
|
|
10
|
+
apiPost
|
|
11
|
+
} from "./chunk-HREWXNTO.js";
|
|
12
|
+
import "./chunk-HLXWKMTK.js";
|
|
13
|
+
import "./chunk-O6QKCJE4.js";
|
|
14
|
+
import {
|
|
15
|
+
registerSchema,
|
|
16
|
+
writeJson
|
|
17
|
+
} from "./chunk-WOTDHRNF.js";
|
|
18
|
+
import "./chunk-YQSBHWOI.js";
|
|
19
|
+
|
|
20
|
+
// src/commands/landing/inspiration/favorites.ts
|
|
21
|
+
import { defineCommand } from "citty";
|
|
22
|
+
registerSchema({
|
|
23
|
+
command: "landing.inspiration.favorites",
|
|
24
|
+
description: "List the reference sections this company has saved. This is what `search` looks at by default, so it is the client's own taste profile \u2014 read it before proposing a direction.",
|
|
25
|
+
args: {
|
|
26
|
+
type: { type: "string", description: "Comma list of section types to filter by", required: false },
|
|
27
|
+
limit: { type: "number", description: "Max results (default 30, capped at 100)", required: false },
|
|
28
|
+
full: {
|
|
29
|
+
type: "boolean",
|
|
30
|
+
description: "Add the transferable idea behind each saved section. Costs roughly 60% more; read the list first",
|
|
31
|
+
required: false
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
var favoritesCommand = defineCommand({
|
|
36
|
+
meta: {
|
|
37
|
+
name: "favorites",
|
|
38
|
+
description: "List this company's saved reference sections. Example: baker landing inspiration favorites --type hero,pricing"
|
|
39
|
+
},
|
|
40
|
+
args: {
|
|
41
|
+
type: { type: "string", description: "Comma list of section types", required: false },
|
|
42
|
+
limit: { type: "string", description: "Max results (default 30, capped at 100)", required: false },
|
|
43
|
+
full: { type: "boolean", description: "Include why_it_works per section", required: false, default: false }
|
|
44
|
+
},
|
|
45
|
+
run: async ({ args }) => {
|
|
46
|
+
try {
|
|
47
|
+
const params = {};
|
|
48
|
+
const types = splitList(args.type);
|
|
49
|
+
if (types) params.type = types.join(",");
|
|
50
|
+
const limit = parseNumber(args.limit);
|
|
51
|
+
if (limit !== void 0) params.limit = String(limit);
|
|
52
|
+
const data = await apiGet("/api/landing-inspiration/favorites", params);
|
|
53
|
+
const sections = Array.isArray(data?.sections) ? data.sections : [];
|
|
54
|
+
const full = args.full;
|
|
55
|
+
const saved = data.savedPages ?? void 0;
|
|
56
|
+
writeJson({
|
|
57
|
+
ok: true,
|
|
58
|
+
data: {
|
|
59
|
+
// The pages the client actually saved, alongside the sections those
|
|
60
|
+
// pages yielded. These are different numbers, and conflating them is
|
|
61
|
+
// how a company with 234 saved pages was told it had saved nothing:
|
|
62
|
+
// 211 of them failed to be read, so they contribute no sections, and
|
|
63
|
+
// the section list alone made a broken library look like an unused one.
|
|
64
|
+
...saved ? {
|
|
65
|
+
saved_pages: {
|
|
66
|
+
total: saved.savedPages,
|
|
67
|
+
usable: saved.usablePages,
|
|
68
|
+
studying: saved.studyingPages,
|
|
69
|
+
unreadable: saved.failedPages,
|
|
70
|
+
...saved.failedExamples.length > 0 ? { unreadable_examples: saved.failedExamples } : {}
|
|
71
|
+
}
|
|
72
|
+
} : {},
|
|
73
|
+
sections: sections.map((section) => ({
|
|
74
|
+
id: section.id,
|
|
75
|
+
page_id: section.sourceId,
|
|
76
|
+
section: section.sectionType,
|
|
77
|
+
composition: section.composition,
|
|
78
|
+
look: section.visualRegister,
|
|
79
|
+
domain: section.domain,
|
|
80
|
+
// Behind --full: this is a 600-character paragraph, and at the
|
|
81
|
+
// default 30 rows it was about 60% of the response. Reading a taste
|
|
82
|
+
// profile is a question about *what* the client keeps saving —
|
|
83
|
+
// types, compositions, which sites — and the essay per row answers
|
|
84
|
+
// a question you only have once you have picked a row.
|
|
85
|
+
...full ? { why_it_works: section.whyItWorks } : {}
|
|
86
|
+
}))
|
|
87
|
+
},
|
|
88
|
+
hints: [
|
|
89
|
+
// What the saved set is actually in — an empty profile, a broken one,
|
|
90
|
+
// or a healthy one — before anything is said about the sections.
|
|
91
|
+
...favoritesScopeHints(saved, sections.length),
|
|
92
|
+
...sections.length === 0 ? saved && saved.savedPages > 0 ? [] : [
|
|
93
|
+
"Nothing saved yet. Add a page the client admires with `baker landing inspiration add <url>`, or browse the whole library with `baker landing inspiration search --scope all`."
|
|
94
|
+
] : [
|
|
95
|
+
"These are the client's taste signals \u2014 read them as direction, not as a component library.",
|
|
96
|
+
...full ? [] : ["Add --full for the transferable idea behind each one."],
|
|
97
|
+
INSPIRATION_HINTS.adapt
|
|
98
|
+
]
|
|
99
|
+
]
|
|
100
|
+
});
|
|
101
|
+
} catch (error) {
|
|
102
|
+
reportError(error);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
registerSchema({
|
|
107
|
+
command: "landing.inspiration.favorite",
|
|
108
|
+
description: "Save a reference section (or a whole page) to this company, so it shows up in the default search scope.",
|
|
109
|
+
args: {
|
|
110
|
+
id: { type: "string", description: "Section id, or page id with --page", required: true },
|
|
111
|
+
page: { type: "boolean", description: "Treat the id as a page rather than a section", required: false },
|
|
112
|
+
note: { type: "string", description: "Why this is worth keeping", required: false }
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
var favoriteCommand = defineCommand({
|
|
116
|
+
meta: {
|
|
117
|
+
name: "favorite",
|
|
118
|
+
description: "Save a reference section to this company. Example: baker landing inspiration favorite k57abc\u2026"
|
|
119
|
+
},
|
|
120
|
+
args: {
|
|
121
|
+
id: { type: "positional", description: "Section id (or page id with --page)", required: true },
|
|
122
|
+
page: { type: "boolean", description: "Treat the id as a page", required: false, default: false },
|
|
123
|
+
note: { type: "string", description: "Why this is worth keeping", required: false }
|
|
124
|
+
},
|
|
125
|
+
run: async ({ args }) => {
|
|
126
|
+
try {
|
|
127
|
+
const id = args.id;
|
|
128
|
+
const body = args.page ? { sourceId: id } : { sectionId: id };
|
|
129
|
+
const data = await apiPost("/api/landing-inspiration/favorite", {
|
|
130
|
+
...body,
|
|
131
|
+
note: args.note
|
|
132
|
+
});
|
|
133
|
+
writeJson({
|
|
134
|
+
ok: true,
|
|
135
|
+
data: { id, favorited: data.favorited },
|
|
136
|
+
hints: [
|
|
137
|
+
"Saved. `search` looks at this company's saved sections by default, so this now shows up without --scope all."
|
|
138
|
+
]
|
|
139
|
+
});
|
|
140
|
+
} catch (error) {
|
|
141
|
+
reportError(error);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
registerSchema({
|
|
146
|
+
command: "landing.inspiration.unfavorite",
|
|
147
|
+
description: "Remove a reference section (or page) from this company's saved set.",
|
|
148
|
+
args: {
|
|
149
|
+
id: { type: "string", description: "Section id, or page id with --page", required: true },
|
|
150
|
+
page: { type: "boolean", description: "Treat the id as a page rather than a section", required: false }
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
var unfavoriteCommand = defineCommand({
|
|
154
|
+
meta: {
|
|
155
|
+
name: "unfavorite",
|
|
156
|
+
description: "Remove a reference section from this company's saved set. Example: baker landing inspiration unfavorite k57abc\u2026"
|
|
157
|
+
},
|
|
158
|
+
args: {
|
|
159
|
+
id: { type: "positional", description: "Section id (or page id with --page)", required: true },
|
|
160
|
+
page: { type: "boolean", description: "Treat the id as a page", required: false, default: false }
|
|
161
|
+
},
|
|
162
|
+
run: async ({ args }) => {
|
|
163
|
+
try {
|
|
164
|
+
const id = args.id;
|
|
165
|
+
const body = args.page ? { sourceId: id } : { sectionId: id };
|
|
166
|
+
const data = await apiPost("/api/landing-inspiration/unfavorite", body);
|
|
167
|
+
writeJson({ ok: true, data: { id, favorited: data.favorited } });
|
|
168
|
+
} catch (error) {
|
|
169
|
+
reportError(error);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
export {
|
|
174
|
+
favoriteCommand,
|
|
175
|
+
favoritesCommand,
|
|
176
|
+
unfavoriteCommand
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=favorites-7QP7BY5K.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/landing/inspiration/favorites.ts"],"sourcesContent":["import type { InspirationFavoriteResponse, InspirationFavoritesResponse } from \"@baker/api/landing-library\";\nimport { defineCommand } from \"citty\";\nimport { apiGet, apiPost } from \"../../../client.ts\";\nimport { writeJson } from \"../../../output.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { favoritesScopeHints, INSPIRATION_HINTS, parseNumber, reportError, splitList } from \"./shared.ts\";\n\nregisterSchema({\n command: \"landing.inspiration.favorites\",\n description:\n \"List the reference sections this company has saved. This is what `search` looks at by default, so it is the client's own taste profile — read it before proposing a direction.\",\n args: {\n type: { type: \"string\", description: \"Comma list of section types to filter by\", required: false },\n limit: { type: \"number\", description: \"Max results (default 30, capped at 100)\", required: false },\n full: {\n type: \"boolean\",\n description: \"Add the transferable idea behind each saved section. Costs roughly 60% more; read the list first\",\n required: false,\n },\n },\n});\n\nexport const favoritesCommand = defineCommand({\n meta: {\n name: \"favorites\",\n description:\n \"List this company's saved reference sections. Example: baker landing inspiration favorites --type hero,pricing\",\n },\n args: {\n type: { type: \"string\", description: \"Comma list of section types\", required: false },\n limit: { type: \"string\", description: \"Max results (default 30, capped at 100)\", required: false },\n full: { type: \"boolean\", description: \"Include why_it_works per section\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const params: Record<string, string> = {};\n const types = splitList(args.type as string | undefined);\n if (types) params.type = types.join(\",\");\n const limit = parseNumber(args.limit as string | undefined);\n if (limit !== undefined) params.limit = String(limit);\n\n const data = await apiGet<InspirationFavoritesResponse>(\"/api/landing-inspiration/favorites\", params);\n const sections = Array.isArray(data?.sections) ? data.sections : [];\n const full = args.full as boolean;\n const saved = data.savedPages ?? undefined;\n\n writeJson({\n ok: true,\n data: {\n // The pages the client actually saved, alongside the sections those\n // pages yielded. These are different numbers, and conflating them is\n // how a company with 234 saved pages was told it had saved nothing:\n // 211 of them failed to be read, so they contribute no sections, and\n // the section list alone made a broken library look like an unused one.\n ...(saved\n ? {\n saved_pages: {\n total: saved.savedPages,\n usable: saved.usablePages,\n studying: saved.studyingPages,\n unreadable: saved.failedPages,\n ...(saved.failedExamples.length > 0 ? { unreadable_examples: saved.failedExamples } : {}),\n },\n }\n : {}),\n sections: sections.map((section) => ({\n id: section.id,\n page_id: section.sourceId,\n section: section.sectionType,\n composition: section.composition,\n look: section.visualRegister,\n domain: section.domain,\n // Behind --full: this is a 600-character paragraph, and at the\n // default 30 rows it was about 60% of the response. Reading a taste\n // profile is a question about *what* the client keeps saving —\n // types, compositions, which sites — and the essay per row answers\n // a question you only have once you have picked a row.\n ...(full ? { why_it_works: section.whyItWorks } : {}),\n })),\n },\n hints: [\n // What the saved set is actually in — an empty profile, a broken one,\n // or a healthy one — before anything is said about the sections.\n ...favoritesScopeHints(saved, sections.length),\n ...(sections.length === 0\n ? saved && saved.savedPages > 0\n ? []\n : [\n \"Nothing saved yet. Add a page the client admires with `baker landing inspiration add <url>`, or browse the whole library with `baker landing inspiration search --scope all`.\",\n ]\n : [\n \"These are the client's taste signals — read them as direction, not as a component library.\",\n ...(full ? [] : [\"Add --full for the transferable idea behind each one.\"]),\n INSPIRATION_HINTS.adapt,\n ]),\n ],\n });\n } catch (error) {\n reportError(error);\n }\n },\n});\n\nregisterSchema({\n command: \"landing.inspiration.favorite\",\n description:\n \"Save a reference section (or a whole page) to this company, so it shows up in the default search scope.\",\n args: {\n id: { type: \"string\", description: \"Section id, or page id with --page\", required: true },\n page: { type: \"boolean\", description: \"Treat the id as a page rather than a section\", required: false },\n note: { type: \"string\", description: \"Why this is worth keeping\", required: false },\n },\n});\n\nexport const favoriteCommand = defineCommand({\n meta: {\n name: \"favorite\",\n description: \"Save a reference section to this company. Example: baker landing inspiration favorite k57abc…\",\n },\n args: {\n id: { type: \"positional\", description: \"Section id (or page id with --page)\", required: true },\n page: { type: \"boolean\", description: \"Treat the id as a page\", required: false, default: false },\n note: { type: \"string\", description: \"Why this is worth keeping\", required: false },\n },\n run: async ({ args }) => {\n try {\n const id = args.id as string;\n const body = (args.page as boolean) ? { sourceId: id } : { sectionId: id };\n const data = await apiPost<InspirationFavoriteResponse>(\"/api/landing-inspiration/favorite\", {\n ...body,\n note: args.note as string | undefined,\n });\n writeJson({\n ok: true,\n data: { id, favorited: data.favorited },\n hints: [\n \"Saved. `search` looks at this company's saved sections by default, so this now shows up without --scope all.\",\n ],\n });\n } catch (error) {\n reportError(error);\n }\n },\n});\n\nregisterSchema({\n command: \"landing.inspiration.unfavorite\",\n description: \"Remove a reference section (or page) from this company's saved set.\",\n args: {\n id: { type: \"string\", description: \"Section id, or page id with --page\", required: true },\n page: { type: \"boolean\", description: \"Treat the id as a page rather than a section\", required: false },\n },\n});\n\nexport const unfavoriteCommand = defineCommand({\n meta: {\n name: \"unfavorite\",\n description:\n \"Remove a reference section from this company's saved set. Example: baker landing inspiration unfavorite k57abc…\",\n },\n args: {\n id: { type: \"positional\", description: \"Section id (or page id with --page)\", required: true },\n page: { type: \"boolean\", description: \"Treat the id as a page\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const id = args.id as string;\n const body = (args.page as boolean) ? { sourceId: id } : { sectionId: id };\n const data = await apiPost<InspirationFavoriteResponse>(\"/api/landing-inspiration/unfavorite\", body);\n writeJson({ ok: true, data: { id, favorited: data.favorited } });\n } catch (error) {\n reportError(error);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import {
|
|
2
|
+
adFieldPlan,
|
|
3
|
+
adRows
|
|
4
|
+
} from "./chunk-6O7ISBC7.js";
|
|
5
|
+
import {
|
|
6
|
+
reportError,
|
|
7
|
+
splitList
|
|
8
|
+
} from "./chunk-752S7JF6.js";
|
|
9
|
+
import {
|
|
10
|
+
apiGet
|
|
11
|
+
} from "./chunk-HREWXNTO.js";
|
|
12
|
+
import "./chunk-HLXWKMTK.js";
|
|
13
|
+
import "./chunk-O6QKCJE4.js";
|
|
14
|
+
import {
|
|
15
|
+
registerSchema,
|
|
16
|
+
winningAdNormalizer,
|
|
17
|
+
writeJson,
|
|
18
|
+
writeOutput
|
|
19
|
+
} from "./chunk-WOTDHRNF.js";
|
|
20
|
+
import "./chunk-YQSBHWOI.js";
|
|
21
|
+
|
|
22
|
+
// src/commands/winning-ads/feed.ts
|
|
23
|
+
import { defineCommand } from "citty";
|
|
24
|
+
function buildFeedParams(input) {
|
|
25
|
+
const params = {};
|
|
26
|
+
const advertiser = splitList(input.advertiser);
|
|
27
|
+
if (advertiser.length > 0) {
|
|
28
|
+
params.advertiser = advertiser.join(",");
|
|
29
|
+
}
|
|
30
|
+
if (input.platform) {
|
|
31
|
+
params.platform = input.platform;
|
|
32
|
+
}
|
|
33
|
+
if (input.perAdvertiser !== void 0 && input.perAdvertiser !== "") {
|
|
34
|
+
params.per_advertiser = input.perAdvertiser;
|
|
35
|
+
}
|
|
36
|
+
if (input.limit !== void 0 && input.limit !== "") {
|
|
37
|
+
params.limit = input.limit;
|
|
38
|
+
}
|
|
39
|
+
const winnerCategory = splitList(input.winnerCategory);
|
|
40
|
+
if (winnerCategory.length > 0) {
|
|
41
|
+
params.winner_category = winnerCategory.join(",");
|
|
42
|
+
}
|
|
43
|
+
const format = splitList(input.format);
|
|
44
|
+
if (format.length > 0) {
|
|
45
|
+
params.format = format.join(",");
|
|
46
|
+
}
|
|
47
|
+
if (input.allKinds) {
|
|
48
|
+
params.all_kinds = "1";
|
|
49
|
+
}
|
|
50
|
+
return params;
|
|
51
|
+
}
|
|
52
|
+
registerSchema({
|
|
53
|
+
command: "winning-ads.feed",
|
|
54
|
+
description: "Winners across EVERY brand you follow, in one library. Start here to review your followed advertisers, then trim to specific ones with --advertiser. Capped per advertiser so no single brand floods the feed. Lean winner cards; add --full for DNA + longevity.",
|
|
55
|
+
args: {
|
|
56
|
+
advertiser: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: "Comma-separated followed advertiser ids to narrow to (from `following`). Omit for all follows.",
|
|
59
|
+
required: false
|
|
60
|
+
},
|
|
61
|
+
platform: {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "Filter to a single platform: meta|linkedin|tiktok|google",
|
|
64
|
+
required: false
|
|
65
|
+
},
|
|
66
|
+
"per-advertiser": {
|
|
67
|
+
type: "number",
|
|
68
|
+
description: "Spread per advertiser by default: each brand's best 3 first, the rest after, none dropped. Set 1-50 to keep at most N per brand, 0 for rank order",
|
|
69
|
+
required: false
|
|
70
|
+
},
|
|
71
|
+
limit: {
|
|
72
|
+
type: "number",
|
|
73
|
+
description: "Total winners across all follows 1-200 (default 40)",
|
|
74
|
+
required: false,
|
|
75
|
+
default: 40
|
|
76
|
+
},
|
|
77
|
+
"winner-category": { type: "string", description: "Comma-separated winner categories to include", required: false },
|
|
78
|
+
format: { type: "string", description: "Comma-separated formats to include (e.g. static,video)", required: false },
|
|
79
|
+
"all-kinds": {
|
|
80
|
+
type: "boolean",
|
|
81
|
+
description: "Also return Google search text, Shopping and app ads. By default the feed shows designed pictures and videos only; --format text shows search ads alone.",
|
|
82
|
+
required: false,
|
|
83
|
+
default: false
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
var feedCommand = defineCommand({
|
|
88
|
+
meta: {
|
|
89
|
+
name: "feed",
|
|
90
|
+
description: "Winners across every brand you follow, each brand's best first. Example: baker winning-ads feed --output md"
|
|
91
|
+
},
|
|
92
|
+
args: {
|
|
93
|
+
advertiser: {
|
|
94
|
+
type: "string",
|
|
95
|
+
description: "Comma-separated followed advertiser ids to narrow to",
|
|
96
|
+
required: false
|
|
97
|
+
},
|
|
98
|
+
platform: {
|
|
99
|
+
type: "string",
|
|
100
|
+
description: "Filter to a single platform: meta|linkedin|tiktok|google",
|
|
101
|
+
required: false
|
|
102
|
+
},
|
|
103
|
+
"per-advertiser": {
|
|
104
|
+
type: "string",
|
|
105
|
+
description: "Spread per advertiser by default: each brand's best 3 first, the rest after, none dropped. Set 1-50 to keep at most N per brand, 0 for rank order",
|
|
106
|
+
required: false
|
|
107
|
+
},
|
|
108
|
+
limit: { type: "string", description: "Total winners 1-200 (default 40)", required: false },
|
|
109
|
+
"winner-category": { type: "string", description: "Comma-separated winner categories", required: false },
|
|
110
|
+
format: { type: "string", description: "Comma-separated formats", required: false },
|
|
111
|
+
"all-kinds": {
|
|
112
|
+
type: "boolean",
|
|
113
|
+
description: "Also return Google search text, Shopping and app ads (default: designed pictures and videos only)",
|
|
114
|
+
required: false,
|
|
115
|
+
default: false
|
|
116
|
+
},
|
|
117
|
+
output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
|
|
118
|
+
fields: { type: "string", description: "Comma-separated field names to include", required: false },
|
|
119
|
+
full: {
|
|
120
|
+
type: "boolean",
|
|
121
|
+
description: "Include DNA detail (angle, persona, hook) + longevity",
|
|
122
|
+
required: false,
|
|
123
|
+
default: false
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
run: async ({ args }) => {
|
|
127
|
+
try {
|
|
128
|
+
const params = buildFeedParams({
|
|
129
|
+
advertiser: args.advertiser,
|
|
130
|
+
platform: args.platform,
|
|
131
|
+
perAdvertiser: args["per-advertiser"],
|
|
132
|
+
limit: args.limit,
|
|
133
|
+
winnerCategory: args["winner-category"],
|
|
134
|
+
format: args.format,
|
|
135
|
+
allKinds: args["all-kinds"]
|
|
136
|
+
});
|
|
137
|
+
const data = await apiGet("/api/ad-library/feed", params);
|
|
138
|
+
const output = args.output || "json";
|
|
139
|
+
const plan = adFieldPlan(args.fields, args.full);
|
|
140
|
+
const rawWinners = Array.isArray(data?.winners) ? data.winners : [];
|
|
141
|
+
const hints = [];
|
|
142
|
+
if ((data?.following_count ?? 0) === 0) {
|
|
143
|
+
hints.push('You don\'t follow any brands yet. Run `baker winning-ads follow "<domain>"` first.');
|
|
144
|
+
}
|
|
145
|
+
if (Array.isArray(data?.unknown_requested) && data.unknown_requested.length > 0) {
|
|
146
|
+
hints.push(
|
|
147
|
+
`Not in your follows (skipped): ${data.unknown_requested.join(", ")}. Check ids with \`baker winning-ads following\`.`
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
if (output === "json") {
|
|
151
|
+
const winners = adRows(rawWinners, plan);
|
|
152
|
+
writeJson({
|
|
153
|
+
ok: true,
|
|
154
|
+
data: {
|
|
155
|
+
winners,
|
|
156
|
+
following_count: data?.following_count ?? 0,
|
|
157
|
+
advertiser_ids: Array.isArray(data?.advertiser_ids) ? data.advertiser_ids : [],
|
|
158
|
+
...hints.length > 0 ? { hints } : {}
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
writeOutput({ ok: true, data: rawWinners }, output, plan.fields, plan.full, winningAdNormalizer);
|
|
164
|
+
for (const hint of hints) {
|
|
165
|
+
process.stderr.write(`${hint}
|
|
166
|
+
`);
|
|
167
|
+
}
|
|
168
|
+
} catch (err) {
|
|
169
|
+
reportError(err);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
export {
|
|
174
|
+
buildFeedParams,
|
|
175
|
+
feedCommand
|
|
176
|
+
};
|
|
177
|
+
//# sourceMappingURL=feed-EETRO2FG.js.map
|