@koda-sl/baker-cli 0.571.0-dev.6a3439a0a → 0.572.0-dev.61ba69c66
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 +7 -5
- package/dist/account-6RJ6ZI3B.js +82 -0
- package/dist/account-AIGNJ2RP.js +82 -0
- package/dist/account-E5LLPRZ6.js +139 -0
- package/dist/account-assets-J6SVHSXR.js +290 -0
- package/dist/account-level-FGE33OJT.js +612 -0
- package/dist/account-level-FGE33OJT.js.map +1 -0
- package/dist/account-reads-BNVCJ37E.js +220 -0
- package/dist/account-reads-BNVCJ37E.js.map +1 -0
- package/dist/account-users-MFH5CJIA.js +65 -0
- package/dist/account-users-MFH5CJIA.js.map +1 -0
- package/dist/account-writes-XNS4IKZV.js +68 -0
- package/dist/accounts-3ZWYGRVM.js +80 -0
- package/dist/accounts-5TLHSEZR.js +119 -0
- package/dist/accounts-BAZYYDFV.js +713 -0
- package/dist/accounts-L2HVNJUF.js +76 -0
- package/dist/accounts-NTBIRB52.js +115 -0
- package/dist/actions-N2FBJMT4.js +55 -0
- package/dist/active-entities-IJPRN45K.js +103 -0
- package/dist/activecampaign-U77COT2F.js +938 -0
- package/dist/activities-SS3SUWSS.js +75 -0
- package/dist/ad-group-writes-DTQSUNE2.js +172 -0
- package/dist/ad-groups-CX23GLVE.js +70 -0
- package/dist/ad-writes-HAAUOJCG.js +176 -0
- package/dist/add-ABPQTO2M.js +305 -0
- package/dist/add-BK6N7KWU.js +97 -0
- package/dist/add-ECN2FTMH.js +85 -0
- package/dist/add-FH7OVKFF.js +148 -0
- package/dist/add-KHY3H54G.js +81 -0
- package/dist/add-MZZLFU3M.js +513 -0
- package/dist/add-MZZLFU3M.js.map +1 -0
- package/dist/add-VDH2VCXR.js +107 -0
- package/dist/add-accounts-6JAOSCXK.js +91 -0
- package/dist/ads-BEMEXBDJ.js +128 -0
- package/dist/ads-GAU2XKNL.js +48 -0
- package/dist/ads-HZOXZ3FY.js +79 -0
- package/dist/ads-I5OBZ5VI.js +120 -0
- package/dist/adsets-PMQGA6TW.js +182 -0
- package/dist/advertisers-EOLL3VFQ.js +123 -0
- package/dist/advertisers-FNKY2PP4.js +125 -0
- package/dist/analytics-DOAUCF2Y.js +2437 -0
- package/dist/analytics-MR3T34KN.js +447 -0
- package/dist/animate-EKGVDSWM.js +480 -0
- package/dist/approved-WQL4Z4EB.js +73 -0
- package/dist/asset-writes-A5X2T6LQ.js +51 -0
- package/dist/assign-UMNHINRA.js +80 -0
- package/dist/audience-size-Q7DZ6TGM.js +76 -0
- package/dist/audience-writes-SNFFF2QR.js +328 -0
- package/dist/audience-writes-SNFFF2QR.js.map +1 -0
- package/dist/audiences-HBJGEGKL.js +106 -0
- package/dist/audiences-RDQZNGPI.js +280 -0
- package/dist/audiences-TA636UBN.js +85 -0
- package/dist/audit-H3F6FZNE.js +154 -0
- package/dist/audit-QMCK76AT.js +88 -0
- package/dist/autocomplete-DIBJ57VC.js +114 -0
- package/dist/avatars-UIXRGLPA.js +38 -0
- package/dist/bid-pricing-OMY2F2SB.js +103 -0
- package/dist/brand-WV6CAU3M.js +22 -0
- package/dist/brief-PNBP56X2.js +543 -0
- package/dist/brief-PNBP56X2.js.map +1 -0
- package/dist/businesses-56IUB5X4.js +54 -0
- package/dist/campaign-groups-PGJIQV4S.js +99 -0
- package/dist/campaign-writes-MAJ5FGXG.js +176 -0
- package/dist/campaign-writes-WL3YAEGJ.js +168 -0
- package/dist/campaigns-5L4ZTGF7.js +130 -0
- package/dist/campaigns-EK7EUKZD.js +113 -0
- package/dist/campaigns-HCJ3AIDK.js +78 -0
- package/dist/campaigns-NHACWGWS.js +111 -0
- package/dist/canvas-INL3J7HO.js +46 -0
- package/dist/capabilities-Y33EWDMJ.js +147 -0
- package/dist/cards-IWWKA5WH.js +85 -0
- package/dist/catalog-NSA2FUI2.js +66 -0
- package/dist/catalogs-QOE2V4QK.js +783 -0
- package/dist/catalogs-QOE2V4QK.js.map +1 -0
- package/dist/catalogs-SJMYID7N.js +130 -0
- package/dist/changes-2HOF2HSV.js +167 -0
- package/dist/chatgpt-J6MNVQVT.js +47 -0
- package/dist/chats-4HK6UYD2.js +584 -0
- package/dist/check-DJOIL56P.js +169 -0
- package/dist/check-DJOIL56P.js.map +1 -0
- package/dist/chunk-2B2JFTWI.js +296 -0
- package/dist/chunk-2HWX6AWY.js +2235 -0
- package/dist/chunk-2HWX6AWY.js.map +1 -0
- package/dist/chunk-2O5CCKV7.js +23 -0
- package/dist/chunk-2W6DMVGH.js +8954 -0
- package/dist/chunk-2W6DMVGH.js.map +1 -0
- package/dist/chunk-3BKESS5W.js +66 -0
- package/dist/chunk-3VBPJQ7L.js +288 -0
- package/dist/chunk-3X262BEG.js +19 -0
- package/dist/chunk-4CUBOXBS.js +99 -0
- package/dist/chunk-4CUBOXBS.js.map +1 -0
- package/dist/chunk-4CYB33V3.js +136 -0
- package/dist/chunk-4JB556VC.js +142 -0
- package/dist/chunk-4LZNCDHU.js +46 -0
- package/dist/chunk-4LZNCDHU.js.map +1 -0
- package/dist/chunk-4QYZJPSM.js +207 -0
- package/dist/chunk-4WLJYLRL.js +544 -0
- package/dist/chunk-55AX6DOP.js +86 -0
- package/dist/chunk-55AX6DOP.js.map +1 -0
- package/dist/chunk-56ZJO7TM.js +1320 -0
- package/dist/chunk-5LQGW5UF.js +138 -0
- package/dist/chunk-5U6OL4NN.js +709 -0
- package/dist/chunk-6IL7JFX5.js +203 -0
- package/dist/chunk-6LNCKT6S.js +35 -0
- package/dist/chunk-6LUDG5AB.js +476 -0
- package/dist/chunk-6UQV5DOD.js +45 -0
- package/dist/chunk-6V4UAC5I.js +2523 -0
- package/dist/chunk-6V4UAC5I.js.map +1 -0
- package/dist/chunk-6WA7QSCN.js +46 -0
- package/dist/chunk-7CHPHER2.js +455 -0
- package/dist/chunk-7J7ASYIM.js +225 -0
- package/dist/chunk-7MMTIJO3.js +220 -0
- package/dist/chunk-7Y3LKR4P.js +5368 -0
- package/dist/chunk-7Y3LKR4P.js.map +1 -0
- package/dist/chunk-AA3D7GZF.js +125 -0
- package/dist/chunk-AGL7EWP2.js +75 -0
- package/dist/chunk-AHVD6IEI.js +76 -0
- package/dist/chunk-ASJMLTMX.js +106 -0
- package/dist/chunk-AWENMEFC.js +297 -0
- package/dist/chunk-AYX7PB2L.js +1920 -0
- package/dist/chunk-AYX7PB2L.js.map +1 -0
- package/dist/chunk-BHZLKLK7.js +69 -0
- package/dist/chunk-BVER7I36.js +58 -0
- package/dist/chunk-C3RZNVLM.js +98 -0
- package/dist/chunk-CA5QBLIZ.js +114 -0
- package/dist/chunk-CKIENAAO.js +156 -0
- package/dist/chunk-CKIENAAO.js.map +1 -0
- package/dist/chunk-CONTVNSN.js +51 -0
- package/dist/chunk-EE6NZ6NG.js +225 -0
- package/dist/chunk-EG6HMBCF.js +188 -0
- package/dist/chunk-EGZM35HT.js +3510 -0
- package/dist/chunk-EGZM35HT.js.map +1 -0
- package/dist/chunk-ESSA3AWR.js +133 -0
- package/dist/chunk-ESSA3AWR.js.map +1 -0
- package/dist/chunk-FHLAJYZE.js +225 -0
- package/dist/chunk-FSNQFZ2Z.js +718 -0
- package/dist/chunk-G67OBCXI.js +91 -0
- package/dist/chunk-GFYGVIT3.js +392 -0
- package/dist/chunk-GRNHQWSV.js +430 -0
- package/dist/chunk-GWQSZWHT.js +42 -0
- package/dist/chunk-HBXR26LB.js +1518 -0
- package/dist/chunk-HKKHOMEQ.js +180 -0
- package/dist/chunk-HKKHOMEQ.js.map +1 -0
- package/dist/chunk-HUO5MZ7S.js +962 -0
- package/dist/chunk-HVL22WUU.js +930 -0
- package/dist/chunk-IA5GLVRV.js +64 -0
- package/dist/chunk-IEPCI2EB.js +479 -0
- package/dist/chunk-IKSBLQTL.js +5471 -0
- package/dist/chunk-IRLMIKI7.js +224 -0
- package/dist/chunk-IW4MX7OX.js +399 -0
- package/dist/chunk-J4WOF6WK.js +97 -0
- package/dist/chunk-J63TN3GR.js +89 -0
- package/dist/chunk-JESSFI7R.js +468 -0
- package/dist/chunk-K4QPBXV7.js +61 -0
- package/dist/chunk-K5VDDKKF.js +219 -0
- package/dist/chunk-KM5K47TW.js +152 -0
- package/dist/chunk-KPVZ2CZA.js +642 -0
- package/dist/chunk-KPVZ2CZA.js.map +1 -0
- package/dist/chunk-LGJIJVVH.js +131 -0
- package/dist/chunk-LHSSIUU4.js +604 -0
- package/dist/chunk-LQMPA4DY.js +685 -0
- package/dist/chunk-M3IXPK6U.js +344 -0
- package/dist/chunk-MJU5VKX2.js +91 -0
- package/dist/chunk-MRGU3NPN.js +163 -0
- package/dist/chunk-MSLFPL77.js +454 -0
- package/dist/chunk-MX5NQAK6.js +54 -0
- package/dist/chunk-MX5NQAK6.js.map +1 -0
- package/dist/chunk-NKCWJPMN.js +111 -0
- package/dist/chunk-NT7NCSEB.js +24026 -0
- package/dist/chunk-O5GZJ6YJ.js +1085 -0
- package/dist/chunk-O5GZJ6YJ.js.map +1 -0
- package/dist/chunk-OADMSHME.js +334 -0
- package/dist/chunk-OGWCLE4W.js +858 -0
- package/dist/chunk-OGWCLE4W.js.map +1 -0
- package/dist/chunk-ONGZKI5J.js +57 -0
- package/dist/chunk-OOZNTJP6.js +26 -0
- package/dist/chunk-OP3NHIFH.js +39 -0
- package/dist/chunk-OU4KWL6B.js +106 -0
- package/dist/chunk-OW3D63SI.js +91 -0
- package/dist/chunk-OW3D63SI.js.map +1 -0
- package/dist/chunk-PLIGHRIQ.js +312 -0
- package/dist/chunk-PLROJ3SX.js +73 -0
- package/dist/chunk-PSM3RI4B.js +167 -0
- package/dist/chunk-Q4O7ICAK.js +84 -0
- package/dist/chunk-Q6XM6ZDB.js +547 -0
- package/dist/chunk-QHRUCSRI.js +197 -0
- package/dist/chunk-QUDPMIW7.js +74 -0
- package/dist/chunk-R2JGUOT6.js +64 -0
- package/dist/chunk-R5I4IHJ5.js +494 -0
- package/dist/chunk-R5NABIJ4.js +1919 -0
- package/dist/chunk-R5NABIJ4.js.map +1 -0
- package/dist/chunk-RJXO66C4.js +66 -0
- package/dist/chunk-RYNN6UUF.js +69 -0
- package/dist/chunk-S4V2GOKV.js +215 -0
- package/dist/chunk-S7D4GTYY.js +191 -0
- package/dist/chunk-T4RV7XOC.js +217 -0
- package/dist/chunk-TDUAGNSQ.js +52 -0
- package/dist/chunk-TZRWET3S.js +285 -0
- package/dist/chunk-U5V4CIIG.js +274 -0
- package/dist/chunk-U625CQ3Y.js +287 -0
- package/dist/chunk-UDEVIXKX.js +1254 -0
- package/dist/chunk-UNLFRXST.js +126 -0
- package/dist/chunk-UNLFRXST.js.map +1 -0
- package/dist/chunk-UUDWZIDC.js +246 -0
- package/dist/chunk-VAQBBNLD.js +98 -0
- package/dist/chunk-VCDFBFPT.js +97 -0
- package/dist/chunk-VF3W7CI7.js +325 -0
- package/dist/chunk-VHOOAQY4.js +169 -0
- package/dist/chunk-VK2VC6A2.js +25 -0
- package/dist/chunk-WWPRSJOS.js +94 -0
- package/dist/chunk-XKYFNMTB.js +343 -0
- package/dist/chunk-XL42ZEVH.js +170 -0
- package/dist/chunk-XPUQFPIU.js +831 -0
- package/dist/chunk-XQEHLDGP.js +1744 -0
- package/dist/chunk-XQWC223L.js +56 -0
- package/dist/chunk-XYDHBLZ2.js +103 -0
- package/dist/chunk-XZO6ONVI.js +115 -0
- package/dist/chunk-YFFQ3HY4.js +139 -0
- package/dist/chunk-YGUGL4ZL.js +76 -0
- package/dist/chunk-YOHGEF2N.js +7899 -0
- package/dist/chunk-YOHGEF2N.js.map +1 -0
- package/dist/chunk-YT3S2XFG.js +84 -0
- package/dist/chunk-ZPCZ4XDB.js +148 -0
- package/dist/cite-2ZJG3FBV.js +191 -0
- package/dist/claim-IGU5W4CT.js +200 -0
- package/dist/cli.js +48 -47
- package/dist/cli.js.map +1 -1
- package/dist/client-MSRCSDB7.js +19 -0
- package/dist/code-T7Z5JDQ2.js +76 -0
- package/dist/companies-HCSBVXCE.js +198 -0
- package/dist/company-SSMY4G2T.js +308 -0
- package/dist/complete-FQNRXUI5.js +84 -0
- package/dist/config-XRPKA5QR.js +88 -0
- package/dist/connect-VXEE3QBU.js +45 -0
- package/dist/content-2JFP747N.js +85 -0
- package/dist/conversation-KKJKZIX5.js +96 -0
- package/dist/conversion-report-G65UHQRO.js +127 -0
- package/dist/conversion-upload-command-Z7IOS6ZG.js +440 -0
- package/dist/conversion-upload-command-Z7IOS6ZG.js.map +1 -0
- package/dist/conversion-writes-333V4OVR.js +122 -0
- package/dist/conversions-7UHCNIAO.js +140 -0
- package/dist/conversions-L6775Q22.js +78 -0
- package/dist/copy-writes-G7GJ5RWS.js +171 -0
- package/dist/copy-writes-G7GJ5RWS.js.map +1 -0
- package/dist/countries-XJVDM635.js +82 -0
- package/dist/create-AXWJECPP.js +239 -0
- package/dist/create-B24XHUGZ.js +62 -0
- package/dist/create-HJKTD5FN.js +218 -0
- package/dist/create-V4NGP5KB.js +135 -0
- package/dist/creatives-HLWMABYL.js +55 -0
- package/dist/creatives-HLWMABYL.js.map +1 -0
- package/dist/creatives-OKFLX67Y.js +118 -0
- package/dist/creatives-WX6GQ37F.js +229 -0
- package/dist/credentials-4JFUH6FN.js +290 -0
- package/dist/critique-4SF44VFJ.js +420 -0
- package/dist/critique-4SF44VFJ.js.map +1 -0
- package/dist/critique-S3PDXLAZ.js +233 -0
- package/dist/critique-S3PDXLAZ.js.map +1 -0
- package/dist/crm-6MLYUEK7.js +323 -0
- package/dist/crm-PUQBWZKE.js +229 -0
- package/dist/crop-V5MSIY5F.js +113 -0
- package/dist/currency-SCSJ5FW2.js +88 -0
- package/dist/custom-conversions-GN4JDS5F.js +128 -0
- package/dist/customers-WXD2LTUC.js +65 -0
- package/dist/decide-PW2NRMRK.js +199 -0
- package/dist/delete-EAJN6ZHT.js +67 -0
- package/dist/delete-GDIFIYA2.js +69 -0
- package/dist/delete-JQG3ZWQX.js +57 -0
- package/dist/delete-L7CGJ23X.js +71 -0
- package/dist/delete-OQREQEGN.js +85 -0
- package/dist/delete-ZR3DVLWU.js +69 -0
- package/dist/demographics-LMRGNO7J.js +141 -0
- package/dist/describe-OHWLLBDE.js +97 -0
- package/dist/describe-YELOXWHY.js +97 -0
- package/dist/dimensions-CLLCVVRY.js +101 -0
- package/dist/discard-K2KIIFJQ.js +69 -0
- package/dist/discover-SQJLRS4G.js +93 -0
- package/dist/discover-UJMDGDQO.js +172 -0
- package/dist/domain-CJX5JSLS.js +101 -0
- package/dist/download-HFDBP6BO.js +172 -0
- package/dist/download-SZ5P3GLV.js +337 -0
- package/dist/draft-7QDE2Z3N.js +315 -0
- package/dist/draft-A7ZQPUFS.js +579 -0
- package/dist/draft-A7ZQPUFS.js.map +1 -0
- package/dist/draft-ILXHFWTT.js +134 -0
- package/dist/draft-NUFU5YME.js +374 -0
- package/dist/draft-QSTD3DH2.js +220 -0
- package/dist/draft-TV5IH5U4.js +260 -0
- package/dist/draft-WNMHUFAH.js +138 -0
- package/dist/draft-XJP3SCZ6.js +333 -0
- package/dist/draft-XJP3SCZ6.js.map +1 -0
- package/dist/engine/index.js +14 -14
- package/dist/env-3256G2OE.js +53 -0
- package/dist/experiment-5L5USMAL.js +1397 -0
- package/dist/experiments-CFBG5UOT.js +237 -0
- package/dist/experiments-CFBG5UOT.js.map +1 -0
- package/dist/export-YSOM4E3B.js +168 -0
- package/dist/extract-7FYXXEQZ.js +143 -0
- package/dist/facets-2FRELYRC.js +117 -0
- package/dist/favorites-LTG2F6W2.js +178 -0
- package/dist/feed-RSBWEI75.js +177 -0
- package/dist/feedback-LZSJR5KL.js +116 -0
- package/dist/feedback-LZSJR5KL.js.map +1 -0
- package/dist/feedback-PQUM7UBT.js +114 -0
- package/dist/feedback-record-4MVI4O3Q.js +270 -0
- package/dist/feedback-record-4MVI4O3Q.js.map +1 -0
- package/dist/fetch-3PWYTX4R.js +139 -0
- package/dist/fetch-FLQYW27W.js +204 -0
- package/dist/find-SHHDWCPM.js +144 -0
- package/dist/fit-4XCDLF7C.js +65 -0
- package/dist/flows-4ALWJVNF.js +340 -0
- package/dist/follow-N4TKU3UM.js +94 -0
- package/dist/follow-competitors-AHQ57BWS.js +112 -0
- package/dist/following-CEYH33DW.js +113 -0
- package/dist/fonts-CYJ5EFR4.js +40 -0
- package/dist/forecast-AH3AFVJ7.js +170 -0
- package/dist/forecast-AH3AFVJ7.js.map +1 -0
- package/dist/forecast-SG2VUBZD.js +121 -0
- package/dist/funding-X7M5WLDX.js +85 -0
- package/dist/funnel-F7DS7PUN.js +397 -0
- package/dist/ga4-QPBAKGSH.js +55 -0
- package/dist/generate-LVBI3VDD.js +263 -0
- package/dist/get-DMV7KG2F.js +92 -0
- package/dist/get-EA7AX4NW.js +59 -0
- package/dist/get-EOSJWMWT.js +38 -0
- package/dist/get-HVQHHDW6.js +74 -0
- package/dist/get-KQLCVQCK.js +56 -0
- package/dist/get-NAOMB6Q2.js +62 -0
- package/dist/get-XYJBQFIT.js +62 -0
- package/dist/get-XZ7XPXZE.js +82 -0
- package/dist/gif-XJ26IWAP.js +111 -0
- package/dist/google-ED4VGLSX.js +3301 -0
- package/dist/google-ED4VGLSX.js.map +1 -0
- package/dist/google-QOKWSPOA.js +163 -0
- package/dist/google-ads-B4FBPQ7O.js +198 -0
- package/dist/group-7EYM3PNJ.js +43 -0
- package/dist/group-GDTEICRY.js +43 -0
- package/dist/gsc-KVIAZMF4.js +30 -0
- package/dist/history-22YGILIT.js +69 -0
- package/dist/history-E3JGYADF.js +102 -0
- package/dist/history-HKCSYH5L.js +153 -0
- package/dist/hubspot-LEW2RP5D.js +814 -0
- package/dist/icon-JLVEYF34.js +138 -0
- package/dist/ideas-JAIU4GC4.js +45 -0
- package/dist/images-ZG6RRAEP.js +92 -0
- package/dist/improve-XSHWCMZS.js +86 -0
- package/dist/ingest-GTXBGUNQ.js +28 -0
- package/dist/ingest-SX7K6GNE.js +131 -0
- package/dist/insights-IVUUWSQL.js +132 -0
- package/dist/insights-PJPQB46E.js +658 -0
- package/dist/inspect-55BXSPJG.js +192 -0
- package/dist/inspiration-NBOKHPZ5.js +53 -0
- package/dist/instant-experiences-ARST4KWB.js +265 -0
- package/dist/instant-experiences-ARST4KWB.js.map +1 -0
- package/dist/intent-KSVTHFFE.js +95 -0
- package/dist/job-4VXDCYSG.js +202 -0
- package/dist/job-create-NZEZDOZT.js +109 -0
- package/dist/job-status-XI3ENS7D.js +74 -0
- package/dist/keep-UYNOC3JZ.js +78 -0
- package/dist/keyword-gap-7UVDSID5.js +130 -0
- package/dist/keyword-metrics-QFRXZRAQ.js +200 -0
- package/dist/keywords-for-site-Q4BCJ4PQ.js +131 -0
- package/dist/knowledge-LVE3J3AK.js +195 -0
- package/dist/landing-AJYM5GBY.js +28 -0
- package/dist/landings-SIN3MTUZ.js +151 -0
- package/dist/languages-AIASAINW.js +40 -0
- package/dist/languages-RDR6EBNJ.js +55 -0
- package/dist/launches-4TVHXAZT.js +19 -0
- package/dist/layerize-OLVGZRND.js +190 -0
- package/dist/lead-routes-ZOQDPCR3.js +733 -0
- package/dist/leads-M57K5EDK.js +542 -0
- package/dist/leads-M57K5EDK.js.map +1 -0
- package/dist/leads-YSDLFBHN.js +115 -0
- package/dist/learn-FDQZNIP3.js +207 -0
- package/dist/library-7CLWRDM3.js +212 -0
- package/dist/lighthouse-3ACQ3MVG.js +75 -0
- package/dist/line-item-writes-JARN73DV.js +211 -0
- package/dist/line-items-B5GLDAJ2.js +107 -0
- package/dist/link-YAZF34BZ.js +67 -0
- package/dist/linkedin-MLPAY7IL.js +1345 -0
- package/dist/linkedin-MLPAY7IL.js.map +1 -0
- package/dist/linkedin-person-XDH7Q3PB.js +139 -0
- package/dist/list-6NYRZXKQ.js +76 -0
- package/dist/list-6WISGNQ2.js +65 -0
- package/dist/list-6YBIWX44.js +50 -0
- package/dist/list-72JQGWNO.js +154 -0
- package/dist/list-FX7OG3OJ.js +67 -0
- package/dist/list-ITPBLMV3.js +51 -0
- package/dist/list-J43GOBOX.js +57 -0
- package/dist/list-K4Z3BOWI.js +93 -0
- package/dist/list-ONSYTCX2.js +306 -0
- package/dist/locations-UNSREUBX.js +69 -0
- package/dist/locations-XAC3GME3.js +40 -0
- package/dist/log-PPNNFETI.js +95 -0
- package/dist/logo-UNVIMA4B.js +19 -0
- package/dist/lookup-L5QG3BWH.js +23 -0
- package/dist/make-YWW7Q4T5.js +1368 -0
- package/dist/make-YWW7Q4T5.js.map +1 -0
- package/dist/map-QILMIKS7.js +445 -0
- package/dist/mcp-GOKFM4PF.js +729 -0
- package/dist/media-BN6B75NF.js +18 -0
- package/dist/media-YDDWV32Y.js +89 -0
- package/dist/media-sources-HABLVJE3.js +35 -0
- package/dist/members-B4UI6ISY.js +47 -0
- package/dist/meme-2MERLAVW.js +108 -0
- package/dist/meta-7FJQD44L.js +124 -0
- package/dist/metrics-SBKBEZJR.js +152 -0
- package/dist/models-ZBLBNNEH.js +155 -0
- package/dist/normalize-5WVEQJXD.js +806 -0
- package/dist/normalize-YPQBHWYS.js +144 -0
- package/dist/older-spellings-KGYXGRHU.js +70 -0
- package/dist/older-spellings-KGYXGRHU.js.map +1 -0
- package/dist/options-BV3TVUCK.js +125 -0
- package/dist/organization-4OTGNRHP.js +949 -0
- package/dist/output-FX4KJAO5.js +24 -0
- package/dist/page-5KWQ7PM3.js +105 -0
- package/dist/page-photos-AUTUSCVR.js +119 -0
- package/dist/page-photos-AUTUSCVR.js.map +1 -0
- package/dist/pages-HKTAGXH3.js +67 -0
- package/dist/performance-4MWQVTTA.js +5565 -0
- package/dist/performance-TKE7NQF6.js +27 -0
- package/dist/pinterest-UDX53CWY.js +105 -0
- package/dist/pixels-BSNCVT77.js +109 -0
- package/dist/pixels-TR2PAYWV.js +62 -0
- package/dist/plan-V57AATQ5.js +208 -0
- package/dist/posts-JHMXNHDV.js +36 -0
- package/dist/preview-VY7UH2SK.js +245 -0
- package/dist/preview-XUG4K4KV.js +101 -0
- package/dist/profile-PV3R3BEG.js +159 -0
- package/dist/promoted-tweet-writes-O3S5OKUZ.js +183 -0
- package/dist/promoted-tweets-4ZKSEC4I.js +119 -0
- package/dist/properties-U2XUD2M6.js +101 -0
- package/dist/publish-4RAYD7VI.js +350 -0
- package/dist/query-4C6UQN42.js +62 -0
- package/dist/query-7FWE7GLV.js +231 -0
- package/dist/query-7Y2Y6YFI.js +236 -0
- package/dist/questionnaire-3IPJXJT7.js +94 -0
- package/dist/read-WEQLEI7R.js +141 -0
- package/dist/reddit-2FWCB7XY.js +29 -0
- package/dist/refresh-SGDB4QOD.js +97 -0
- package/dist/refresh-WZBVPKWE.js +42 -0
- package/dist/release-YL3ZII3Z.js +63 -0
- package/dist/relevant-pages-PF3LLUED.js +99 -0
- package/dist/remove-52MSQXSW.js +49 -0
- package/dist/remove-EIV7LJUA.js +53 -0
- package/dist/reopen-CW27MUJH.js +66 -0
- package/dist/rerun-4WUZY4SO.js +98 -0
- package/dist/rerun-4WUZY4SO.js.map +1 -0
- package/dist/research-234BOCKM.js +265 -0
- package/dist/research-RABLL4HR.js +75 -0
- package/dist/reset-5KJDDVJL.js +57 -0
- package/dist/reset-REUL47CB.js +57 -0
- package/dist/resolve-WRDEHLYL.js +124 -0
- package/dist/retry-2A5HV4SN.js +63 -0
- package/dist/retry-FNT2XVH3.js +65 -0
- package/dist/retry-failed-ND7UXYTJ.js +45 -0
- package/dist/revenue-YQV2BRGA.js +92 -0
- package/dist/revenue-YQV2BRGA.js.map +1 -0
- package/dist/rule-writes-L7BRELYW.js +531 -0
- package/dist/rule-writes-L7BRELYW.js.map +1 -0
- package/dist/rules-2CUG2YG7.js +217 -0
- package/dist/rules-5DIOAOOO.js +55 -0
- package/dist/rules-5DIOAOOO.js.map +1 -0
- package/dist/run-RKLNKV2U.js +73 -0
- package/dist/run-YKGN3GQR.js +69 -0
- package/dist/scaffold-ad-SPU2HKHU.js +1514 -0
- package/dist/scaffold-ad-SPU2HKHU.js.map +1 -0
- package/dist/scaffold-static-ad-ENGGU26W.js +1013 -0
- package/dist/scaffold-static-ad-ENGGU26W.js.map +1 -0
- package/dist/scaffold-video-OZHIU3SZ.js +886 -0
- package/dist/scaffold-video-OZHIU3SZ.js.map +1 -0
- package/dist/schedule-774JCRVM.js +67 -0
- package/dist/schedule-PKKSZ5RX.js +64 -0
- package/dist/scheduled-agents-ZI3EWKAT.js +55 -0
- package/dist/schema-BXNL4LKR.js +135 -0
- package/dist/schema-GFMVUZL2.js +152 -0
- package/dist/scrape-KKLE4WAU.js +2209 -0
- package/dist/screenshot-K6XOER6Z.js +103 -0
- package/dist/search-43ULIJL3.js +91 -0
- package/dist/search-AXUNJUWY.js +51 -0
- package/dist/search-DLLJEYMB.js +26 -0
- package/dist/search-LWWTXBB2.js +92 -0
- package/dist/search-VU6GI3U3.js +228 -0
- package/dist/search-XO365KES.js +177 -0
- package/dist/search-copy-BHNLLCUV.js +168 -0
- package/dist/seeds-6ROVZBFB.js +101 -0
- package/dist/select-4KMA72MV.js +111 -0
- package/dist/select-4KMA72MV.js.map +1 -0
- package/dist/sends-P6OPCYH5.js +349 -0
- package/dist/sequences-DP4BHM3E.js +146 -0
- package/dist/set-prompt-AII24NMX.js +200 -0
- package/dist/set-prompt-AII24NMX.js.map +1 -0
- package/dist/setup-links-T5TJZA3E.js +144 -0
- package/dist/shared-24IPELBM.js +32 -0
- package/dist/shopify-OQEKI7HC.js +4009 -0
- package/dist/site-QRLBZPEV.js +180 -0
- package/dist/sitemaps-SWADO4SI.js +77 -0
- package/dist/sites-H3FYJQFO.js +97 -0
- package/dist/skills-OYO6Y3DQ.js +47 -0
- package/dist/sources-U2WRH6D7.js +457 -0
- package/dist/sources-Y2BKZVXA.js +30 -0
- package/dist/stale-KE4K36UE.js +91 -0
- package/dist/stale-KE4K36UE.js.map +1 -0
- package/dist/stats-TTJHXR3E.js +34 -0
- package/dist/status-4BSXND3I.js +65 -0
- package/dist/sticker-CRIAIO75.js +103 -0
- package/dist/stock-TOFKLWSR.js +212 -0
- package/dist/studies-VFNWS6ND.js +250 -0
- package/dist/studio-WD364TWB.js +49 -0
- package/dist/study-writes-R7XYH3VH.js +472 -0
- package/dist/study-writes-R7XYH3VH.js.map +1 -0
- package/dist/suggest-GX4IROQN.js +66 -0
- package/dist/sync-BU7HU3FS.js +55 -0
- package/dist/sync-GQL5JX4U.js +57 -0
- package/dist/sync-VNBBOVBU.js +279 -0
- package/dist/sync-definition-EOARPSBS.js +71 -0
- package/dist/tag-SQ5ROLTP.js +57 -0
- package/dist/tag-manager-7S7PVYIJ.js +43 -0
- package/dist/tags-2226Q3VK.js +23 -0
- package/dist/tags-7QIBFIBX.js +227 -0
- package/dist/tags-BNWKAV3H.js +23 -0
- package/dist/tags-HG5EBHSO.js +23 -0
- package/dist/tags-WTN4EBT5.js +26 -0
- package/dist/targeting-SSI2F7XM.js +763 -0
- package/dist/targeting-SSI2F7XM.js.map +1 -0
- package/dist/targeting-constants-6KZXMRNI.js +118 -0
- package/dist/targeting-criteria-QSCRW75G.js +113 -0
- package/dist/targets-3KT3DO6O.js +106 -0
- package/dist/terms-IRLEAMIY.js +102 -0
- package/dist/testimonials-35FTFNQ5.js +32 -0
- package/dist/themes-WTMD2RE2.js +96 -0
- package/dist/themes-WTMD2RE2.js.map +1 -0
- package/dist/top-companies-JAWMSK2Q.js +111 -0
- package/dist/transcript-OIYU7F4E.js +165 -0
- package/dist/translate-S7ZQXQJH.js +604 -0
- package/dist/translate-S7ZQXQJH.js.map +1 -0
- package/dist/triggers-7QRQFTVM.js +144 -0
- package/dist/tweets-7XVF7PJO.js +123 -0
- package/dist/unfollow-ZCP6D2SC.js +46 -0
- package/dist/unlink-PYCYTYVN.js +70 -0
- package/dist/unstage-2OUF6ELM.js +88 -0
- package/dist/unstage-YADONHH6.js +96 -0
- package/dist/update-DEBDSBDI.js +81 -0
- package/dist/update-IDUSNDOI.js +192 -0
- package/dist/update-NG3HUYZZ.js +101 -0
- package/dist/update-P5IT7AIN.js +155 -0
- package/dist/update-U6NU7OXI.js +66 -0
- package/dist/upload-4F2JICEH.js +137 -0
- package/dist/upload-SS64KHDS.js +155 -0
- package/dist/upscale-JNNXDN6X.js +109 -0
- package/dist/url-options-EDPKAPPP.js +131 -0
- package/dist/url-params-4G26OEOO.js +101 -0
- package/dist/use-TKFP6WVP.js +111 -0
- package/dist/validate-HER6GMOZ.js +136 -0
- package/dist/validate-HER6GMOZ.js.map +1 -0
- package/dist/variant-3VTKOQUR.js +338 -0
- package/dist/videos-EDTBHLOZ.js +146 -0
- package/dist/videos-JRNJH66J.js +41 -0
- package/dist/view-6HX3FYMS.js +133 -0
- package/dist/viewer-check-OBBBAYV5.js +83 -0
- package/dist/web-GPUEUIDT.js +173 -0
- package/dist/winners-MEC77MZ4.js +113 -0
- package/dist/winning-ads-2DECFON4.js +86 -0
- package/dist/write-commands-AU2NJ4MR.js +1525 -0
- package/dist/write-commands-AU2NJ4MR.js.map +1 -0
- package/dist/write-commands-D5M5A4YI.js +721 -0
- package/dist/write-commands-LQVERLAQ.js +206 -0
- package/dist/write-commands-Y6U4WABA.js +1170 -0
- package/dist/write-commands-Y6U4WABA.js.map +1 -0
- package/dist/x-4TM5RET4.js +47 -0
- package/package.json +1 -1
- package/dist/account-EXGRZIXS.js +0 -82
- package/dist/account-JVDP5ERG.js +0 -82
- package/dist/account-NSBALYYS.js +0 -139
- package/dist/account-assets-EPEYTJFD.js +0 -290
- package/dist/account-level-VD4NLB2D.js +0 -611
- package/dist/account-level-VD4NLB2D.js.map +0 -1
- package/dist/account-reads-Z467VAL4.js +0 -219
- package/dist/account-reads-Z467VAL4.js.map +0 -1
- package/dist/account-users-342OZALE.js +0 -64
- package/dist/account-users-342OZALE.js.map +0 -1
- package/dist/account-writes-KEXINJ5D.js +0 -68
- package/dist/accounts-A47QUTTB.js +0 -76
- package/dist/accounts-E5TF2AFI.js +0 -115
- package/dist/accounts-QESGQJGZ.js +0 -713
- package/dist/accounts-QR6OQ3GC.js +0 -119
- package/dist/accounts-UWC2TT6R.js +0 -80
- package/dist/actions-NT3HXFFA.js +0 -55
- package/dist/active-entities-XRSJNBOV.js +0 -103
- package/dist/activecampaign-EYRHDSXY.js +0 -938
- package/dist/activities-ZDWREYR7.js +0 -75
- package/dist/ad-group-writes-SVR4RCKB.js +0 -172
- package/dist/ad-groups-C726HUXS.js +0 -70
- package/dist/ad-writes-RWJIWGEL.js +0 -176
- package/dist/add-25YZMFSH.js +0 -85
- package/dist/add-7MAL7JRX.js +0 -81
- package/dist/add-D44VCDRU.js +0 -148
- package/dist/add-EPOHDTUO.js +0 -305
- package/dist/add-JO4ZPS23.js +0 -97
- package/dist/add-NSW26HIM.js +0 -107
- package/dist/add-accounts-EKMSHAA4.js +0 -91
- package/dist/ads-3KK7VQPU.js +0 -79
- package/dist/ads-4YZYNU66.js +0 -128
- package/dist/ads-DGL5SGP3.js +0 -120
- package/dist/ads-EWZGIC4T.js +0 -48
- package/dist/adsets-PSVCPCE3.js +0 -182
- package/dist/advertisers-7NAPI5ZU.js +0 -125
- package/dist/advertisers-AHOWL3YL.js +0 -123
- package/dist/analytics-7H6NDVUQ.js +0 -447
- package/dist/analytics-GFFXCMLV.js +0 -2437
- package/dist/animate-GTUI7XX4.js +0 -480
- package/dist/approved-E4EZA5RT.js +0 -73
- package/dist/asset-writes-NDSHY5OT.js +0 -50
- package/dist/assign-SDPPWP3Q.js +0 -80
- package/dist/audience-size-LKDDHKED.js +0 -76
- package/dist/audience-writes-4KQXVGHO.js +0 -327
- package/dist/audience-writes-4KQXVGHO.js.map +0 -1
- package/dist/audiences-6L43K2T2.js +0 -280
- package/dist/audiences-T5LMTT3B.js +0 -85
- package/dist/audiences-UHLVATR6.js +0 -106
- package/dist/audit-46DO2HV3.js +0 -88
- package/dist/audit-TSZIQTUB.js +0 -154
- package/dist/autocomplete-5BSAOAMZ.js +0 -114
- package/dist/avatars-S6RRD7M3.js +0 -38
- package/dist/bid-pricing-5KUAINH4.js +0 -103
- package/dist/brand-KFK2MQWW.js +0 -22
- package/dist/brief-6DV2PKAU.js +0 -543
- package/dist/brief-6DV2PKAU.js.map +0 -1
- package/dist/businesses-TRFYMZ4I.js +0 -54
- package/dist/campaign-groups-5RPZPDNW.js +0 -99
- package/dist/campaign-writes-FUIGN5OR.js +0 -176
- package/dist/campaign-writes-XMYBEVZF.js +0 -168
- package/dist/campaigns-2MTON2IE.js +0 -130
- package/dist/campaigns-5A3IE735.js +0 -111
- package/dist/campaigns-JNP3VDZK.js +0 -113
- package/dist/campaigns-N2SWSBYT.js +0 -78
- package/dist/canvas-CHFNQTLY.js +0 -46
- package/dist/capabilities-2W3SRZ2I.js +0 -147
- package/dist/cards-CXKIVM4D.js +0 -85
- package/dist/catalog-6BER3SF7.js +0 -66
- package/dist/catalogs-4DNLG4AM.js +0 -782
- package/dist/catalogs-4DNLG4AM.js.map +0 -1
- package/dist/catalogs-G5NOKL4L.js +0 -130
- package/dist/changes-AS4RVEAL.js +0 -167
- package/dist/chatgpt-O6EEAYLF.js +0 -47
- package/dist/chats-4JLWMUAC.js +0 -584
- package/dist/check-BOKLY5WG.js +0 -107
- package/dist/check-BOKLY5WG.js.map +0 -1
- package/dist/chunk-2CC4CPDT.js +0 -225
- package/dist/chunk-3GXHML4V.js +0 -106
- package/dist/chunk-3KUNRKNV.js +0 -430
- package/dist/chunk-3QPG2D27.js +0 -125
- package/dist/chunk-3UNMVVSI.js +0 -917
- package/dist/chunk-3UNMVVSI.js.map +0 -1
- package/dist/chunk-3WN5GWX4.js +0 -94
- package/dist/chunk-4AO3LSYM.js +0 -73
- package/dist/chunk-4HFM5RCP.js +0 -217
- package/dist/chunk-4INBMXUS.js +0 -930
- package/dist/chunk-4NZ47VXO.js +0 -137
- package/dist/chunk-4NZ47VXO.js.map +0 -1
- package/dist/chunk-5NMKNHJI.js +0 -46
- package/dist/chunk-5NMKNHJI.js.map +0 -1
- package/dist/chunk-5QNW5PCM.js +0 -106
- package/dist/chunk-6AMN346B.js +0 -114
- package/dist/chunk-6D7WTUF3.js +0 -98
- package/dist/chunk-6DSPB6YA.js +0 -7904
- package/dist/chunk-6DSPB6YA.js.map +0 -1
- package/dist/chunk-6EOWBGGW.js +0 -191
- package/dist/chunk-6FQ7CJEX.js +0 -57
- package/dist/chunk-6MJKVNLL.js +0 -25
- package/dist/chunk-6OZDN2FI.js +0 -19
- package/dist/chunk-75OGTGC4.js +0 -89
- package/dist/chunk-7NBQQOCU.js +0 -97
- package/dist/chunk-AQRBEPZL.js +0 -138
- package/dist/chunk-AXLKR3E4.js +0 -66
- package/dist/chunk-AZIXX73C.js +0 -64
- package/dist/chunk-B64KJW5C.js +0 -476
- package/dist/chunk-BEZEZHQ6.js +0 -455
- package/dist/chunk-BIBXZJZI.js +0 -97
- package/dist/chunk-BMK4F4CU.js +0 -169
- package/dist/chunk-C52Q3L4C.js +0 -51
- package/dist/chunk-CBVUO7SK.js +0 -1744
- package/dist/chunk-CF5I4Q5M.js +0 -69
- package/dist/chunk-CST52ZME.js +0 -142
- package/dist/chunk-DGHSXHZR.js +0 -136
- package/dist/chunk-DHF4FXWS.js +0 -58
- package/dist/chunk-DPOUS5DN.js +0 -287
- package/dist/chunk-DW3H2XQA.js +0 -91
- package/dist/chunk-EAA273XW.js +0 -2250
- package/dist/chunk-EAA273XW.js.map +0 -1
- package/dist/chunk-EJ6EED6I.js +0 -69
- package/dist/chunk-EM5R3BYC.js +0 -131
- package/dist/chunk-EMR5KGNY.js +0 -685
- package/dist/chunk-EONUZOJV.js +0 -962
- package/dist/chunk-FLTAPEVY.js +0 -288
- package/dist/chunk-GRX3JXSR.js +0 -843
- package/dist/chunk-GRX3JXSR.js.map +0 -1
- package/dist/chunk-H25GY4U4.js +0 -139
- package/dist/chunk-H4RHZJ65.js +0 -207
- package/dist/chunk-H6ASYVQX.js +0 -544
- package/dist/chunk-HFIHXIYY.js +0 -547
- package/dist/chunk-HOA74TOS.js +0 -249
- package/dist/chunk-HOA74TOS.js.map +0 -1
- package/dist/chunk-HPF3USL2.js +0 -52
- package/dist/chunk-HQDNDKNR.js +0 -5471
- package/dist/chunk-HXSYWXLH.js +0 -709
- package/dist/chunk-I3QLWGKS.js +0 -64
- package/dist/chunk-IYDESWW4.js +0 -74
- package/dist/chunk-J4AWNWKN.js +0 -1919
- package/dist/chunk-J4AWNWKN.js.map +0 -1
- package/dist/chunk-JAK5VDSG.js +0 -103
- package/dist/chunk-JAME5NBT.js +0 -42
- package/dist/chunk-JGSEHX2Q.js +0 -3107
- package/dist/chunk-JGSEHX2Q.js.map +0 -1
- package/dist/chunk-JLAFNORO.js +0 -285
- package/dist/chunk-KG5VNPKU.js +0 -91
- package/dist/chunk-KGJ6EIX3.js +0 -76
- package/dist/chunk-KJHG2DWS.js +0 -170
- package/dist/chunk-L4QEMWNJ.js +0 -111
- package/dist/chunk-L7I47VGM.js +0 -46
- package/dist/chunk-LAMSUL26.js +0 -1518
- package/dist/chunk-LJEJCIHR.js +0 -246
- package/dist/chunk-LLTHDEM2.js +0 -479
- package/dist/chunk-M4KFO256.js +0 -188
- package/dist/chunk-M5PZ6QQB.js +0 -312
- package/dist/chunk-MFGUR5OD.js +0 -334
- package/dist/chunk-MIHY534L.js +0 -39
- package/dist/chunk-MKOI6QYM.js +0 -225
- package/dist/chunk-MPTNN35I.js +0 -325
- package/dist/chunk-MSIOGH67.js +0 -66
- package/dist/chunk-MTW2NDDD.js +0 -98
- package/dist/chunk-MZLPOYCC.js +0 -10058
- package/dist/chunk-MZLPOYCC.js.map +0 -1
- package/dist/chunk-NOCBNING.js +0 -638
- package/dist/chunk-NOCBNING.js.map +0 -1
- package/dist/chunk-NWLK5RPA.js +0 -197
- package/dist/chunk-NXNOXZGB.js +0 -2523
- package/dist/chunk-NXNOXZGB.js.map +0 -1
- package/dist/chunk-O5VSYBUA.js +0 -343
- package/dist/chunk-PR5OPERY.js +0 -167
- package/dist/chunk-Q3G4ZI2U.js +0 -84
- package/dist/chunk-Q5XUFN2W.js +0 -35
- package/dist/chunk-Q736UFSD.js +0 -75
- package/dist/chunk-QGAUDVMR.js +0 -148
- package/dist/chunk-QRRAMUKV.js +0 -468
- package/dist/chunk-QVQKCVP7.js +0 -85
- package/dist/chunk-QVQKCVP7.js.map +0 -1
- package/dist/chunk-RGLTITIH.js +0 -494
- package/dist/chunk-RIVQ4PQQ.js +0 -225
- package/dist/chunk-RLLPY62L.js +0 -163
- package/dist/chunk-RQHXWPET.js +0 -61
- package/dist/chunk-RRKUXGAU.js +0 -26
- package/dist/chunk-RULW4627.js +0 -23
- package/dist/chunk-S4RCF3YT.js +0 -156
- package/dist/chunk-S4RCF3YT.js.map +0 -1
- package/dist/chunk-S5S54J2K.js +0 -56
- package/dist/chunk-SIRRBWQ2.js +0 -215
- package/dist/chunk-TCLJRWST.js +0 -831
- package/dist/chunk-TLQY4QBW.js +0 -84
- package/dist/chunk-UK4XSLV2.js +0 -296
- package/dist/chunk-URGXEDFV.js +0 -76
- package/dist/chunk-UVUY6FLV.js +0 -1254
- package/dist/chunk-V4HS5JRL.js +0 -1320
- package/dist/chunk-V7EN5LFS.js +0 -115
- package/dist/chunk-WTOBG3YL.js +0 -392
- package/dist/chunk-WTPID22G.js +0 -152
- package/dist/chunk-WYMX3F47.js +0 -399
- package/dist/chunk-X5YHMGAT.js +0 -224
- package/dist/chunk-X7USE7IA.js +0 -24026
- package/dist/chunk-XA76OGSL.js +0 -718
- package/dist/chunk-XA7JN7YE.js +0 -297
- package/dist/chunk-XHAGX4J4.js +0 -604
- package/dist/chunk-XY7W6MQN.js +0 -274
- package/dist/chunk-YAINUFSC.js +0 -203
- package/dist/chunk-YAMKCMAS.js +0 -219
- package/dist/chunk-YRWCXYWW.js +0 -178
- package/dist/chunk-YRWCXYWW.js.map +0 -1
- package/dist/chunk-Z5BG47PO.js +0 -5752
- package/dist/chunk-Z5BG47PO.js.map +0 -1
- package/dist/chunk-Z7ICQKC2.js +0 -344
- package/dist/chunk-ZBXV2KOQ.js +0 -220
- package/dist/chunk-ZCGM7ZWM.js +0 -45
- package/dist/chunk-ZMNRSTNV.js +0 -454
- package/dist/cite-WCAOCOO5.js +0 -191
- package/dist/claim-L4WLCVUL.js +0 -200
- package/dist/client-VCKP6WBR.js +0 -19
- package/dist/code-VXOTFGD2.js +0 -76
- package/dist/companies-HW46BRQG.js +0 -198
- package/dist/company-KCIDE7SL.js +0 -308
- package/dist/complete-JXM25FVW.js +0 -84
- package/dist/config-UR45YCIN.js +0 -88
- package/dist/connect-7TX7AAM5.js +0 -45
- package/dist/content-EQQIKG5H.js +0 -85
- package/dist/conversation-YIDUB6GL.js +0 -96
- package/dist/conversion-report-33SG7SHU.js +0 -127
- package/dist/conversion-upload-command-N3OMLLF2.js +0 -439
- package/dist/conversion-upload-command-N3OMLLF2.js.map +0 -1
- package/dist/conversion-writes-XGGTBML5.js +0 -122
- package/dist/conversions-F4OZYUCT.js +0 -140
- package/dist/conversions-PPP4QK7U.js +0 -78
- package/dist/copy-writes-JVUX3YDL.js +0 -170
- package/dist/copy-writes-JVUX3YDL.js.map +0 -1
- package/dist/countries-GRCU4IGM.js +0 -82
- package/dist/create-6EAKNERA.js +0 -239
- package/dist/create-772LZHZR.js +0 -218
- package/dist/create-FDNMIVFX.js +0 -62
- package/dist/create-X2QM7GA7.js +0 -135
- package/dist/creatives-4EPM3RHG.js +0 -118
- package/dist/creatives-K2AAW6EL.js +0 -58
- package/dist/creatives-K2AAW6EL.js.map +0 -1
- package/dist/creatives-SNYN4KIM.js +0 -229
- package/dist/credentials-KZZVBO42.js +0 -290
- package/dist/critique-G5QXRHPF.js +0 -1451
- package/dist/critique-G5QXRHPF.js.map +0 -1
- package/dist/critique-PUHOJI7V.js +0 -232
- package/dist/critique-PUHOJI7V.js.map +0 -1
- package/dist/crm-4LZZVT4N.js +0 -229
- package/dist/crm-M6NXDU5B.js +0 -323
- package/dist/crop-NE7YX4SS.js +0 -113
- package/dist/currency-HK2ZW2VW.js +0 -88
- package/dist/custom-conversions-GQTU5E6X.js +0 -128
- package/dist/customers-V5NT4W7X.js +0 -65
- package/dist/decide-6Q5X3V3F.js +0 -199
- package/dist/delete-EKKOEB3N.js +0 -69
- package/dist/delete-GQIKNO53.js +0 -57
- package/dist/delete-LFZIPQEO.js +0 -69
- package/dist/delete-QHDDR66K.js +0 -85
- package/dist/delete-SP66F7ZV.js +0 -71
- package/dist/delete-YOEI63OT.js +0 -67
- package/dist/demographics-CEQ74O74.js +0 -141
- package/dist/describe-DJPIUEFE.js +0 -97
- package/dist/describe-MAGTSOW4.js +0 -97
- package/dist/dimensions-IC2H7V3H.js +0 -101
- package/dist/discard-5GDF3TP3.js +0 -69
- package/dist/discover-PSL2NBJL.js +0 -93
- package/dist/discover-Q5PAOIQQ.js +0 -172
- package/dist/domain-PKOUPHHF.js +0 -101
- package/dist/download-2WNTN7JQ.js +0 -172
- package/dist/download-EHDJXBAC.js +0 -337
- package/dist/draft-27NMTARB.js +0 -134
- package/dist/draft-CF4XNJG5.js +0 -578
- package/dist/draft-CF4XNJG5.js.map +0 -1
- package/dist/draft-F4CVSL2I.js +0 -332
- package/dist/draft-F4CVSL2I.js.map +0 -1
- package/dist/draft-JESKGZ6O.js +0 -138
- package/dist/draft-L2NXCIYT.js +0 -315
- package/dist/draft-MWYKIZC4.js +0 -260
- package/dist/draft-RZCTAOI2.js +0 -374
- package/dist/draft-UEVBUNKV.js +0 -220
- package/dist/env-NZXNMWSD.js +0 -53
- package/dist/experiment-XAYSEYTU.js +0 -1397
- package/dist/experiments-DWC6L72S.js +0 -236
- package/dist/experiments-DWC6L72S.js.map +0 -1
- package/dist/export-W54UZ62P.js +0 -168
- package/dist/extract-6HJXSOZW.js +0 -143
- package/dist/facets-TBOXGYJT.js +0 -117
- package/dist/favorites-Y6CT6NSQ.js +0 -178
- package/dist/feed-35BRQPTH.js +0 -177
- package/dist/feedback-MSMFYAEY.js +0 -114
- package/dist/feedback-WAC6S42V.js +0 -115
- package/dist/feedback-WAC6S42V.js.map +0 -1
- package/dist/feedback-record-XRQ2R2WD.js +0 -269
- package/dist/feedback-record-XRQ2R2WD.js.map +0 -1
- package/dist/fetch-I6P72CDL.js +0 -139
- package/dist/fetch-LGX7B3IC.js +0 -204
- package/dist/find-SVGRA7IA.js +0 -144
- package/dist/fit-RVWPRBNO.js +0 -65
- package/dist/flows-LA6EYMLS.js +0 -340
- package/dist/follow-24QSDNAG.js +0 -94
- package/dist/follow-competitors-AG4E4XFA.js +0 -112
- package/dist/following-YGM6TBK3.js +0 -113
- package/dist/fonts-WRC34VSV.js +0 -39
- package/dist/forecast-6VHRGBJG.js +0 -121
- package/dist/forecast-OVKXBLJB.js +0 -169
- package/dist/forecast-OVKXBLJB.js.map +0 -1
- package/dist/funding-WZNGXRLJ.js +0 -85
- package/dist/funnel-U3GQIGND.js +0 -397
- package/dist/ga4-W3U5YTRT.js +0 -55
- package/dist/generate-Y4NJEYIH.js +0 -263
- package/dist/get-3MTAVNTP.js +0 -56
- package/dist/get-5SPNAIUQ.js +0 -62
- package/dist/get-AHI247JG.js +0 -82
- package/dist/get-GEUSRD5Y.js +0 -59
- package/dist/get-JIZPYK3Z.js +0 -74
- package/dist/get-PF3HGECD.js +0 -62
- package/dist/get-TS2ZJDCQ.js +0 -38
- package/dist/get-YWDZYEAC.js +0 -92
- package/dist/gif-NP6EDGEE.js +0 -111
- package/dist/google-BMUJKAUO.js +0 -3300
- package/dist/google-BMUJKAUO.js.map +0 -1
- package/dist/google-ZVAIFXQZ.js +0 -163
- package/dist/google-ads-6Z7P3SCD.js +0 -198
- package/dist/group-3DT4UYSR.js +0 -43
- package/dist/group-OEKKCFXT.js +0 -43
- package/dist/gsc-4FEFPFPB.js +0 -30
- package/dist/history-4QUV45ZJ.js +0 -102
- package/dist/history-PD7FCTDD.js +0 -153
- package/dist/history-VKRYKQ4C.js +0 -69
- package/dist/hubspot-WEFAFKVJ.js +0 -814
- package/dist/icon-43UJTGGE.js +0 -138
- package/dist/ideas-SMSEXKIA.js +0 -45
- package/dist/images-KAT4BPYV.js +0 -92
- package/dist/improve-IMXQN6OD.js +0 -86
- package/dist/ingest-IHKTSJ4H.js +0 -28
- package/dist/ingest-TOHQ6MZA.js +0 -131
- package/dist/insights-3IPSEBYW.js +0 -132
- package/dist/insights-BR3456EI.js +0 -658
- package/dist/inspect-5MZBPDYS.js +0 -192
- package/dist/inspiration-XZI5KCQW.js +0 -53
- package/dist/instant-experiences-2LKF7XVK.js +0 -264
- package/dist/instant-experiences-2LKF7XVK.js.map +0 -1
- package/dist/intent-ZM4K623V.js +0 -95
- package/dist/job-GOX3KIKG.js +0 -202
- package/dist/job-create-F2PQSN3C.js +0 -109
- package/dist/job-status-3FMA5D7T.js +0 -74
- package/dist/keep-23ZYMWPG.js +0 -78
- package/dist/keyword-gap-FAAF2I6V.js +0 -130
- package/dist/keyword-metrics-EXNJRJBY.js +0 -200
- package/dist/keywords-for-site-5LW77QWF.js +0 -131
- package/dist/knowledge-7M7DSRF3.js +0 -195
- package/dist/landing-ZH4SD3DW.js +0 -28
- package/dist/landings-VNQ4VA2U.js +0 -151
- package/dist/languages-2X22HXM3.js +0 -55
- package/dist/languages-ZGDTERIQ.js +0 -40
- package/dist/launches-L4EUROCJ.js +0 -19
- package/dist/layerize-6QHQMA7Q.js +0 -190
- package/dist/lead-routes-5TPFJEVH.js +0 -733
- package/dist/leads-4TLOH47R.js +0 -541
- package/dist/leads-4TLOH47R.js.map +0 -1
- package/dist/leads-736RILZN.js +0 -115
- package/dist/learn-BESXWXEN.js +0 -207
- package/dist/library-MNJC24E4.js +0 -212
- package/dist/lighthouse-DJMAXFTD.js +0 -75
- package/dist/line-item-writes-FA72DHNQ.js +0 -211
- package/dist/line-items-XVYE3IYT.js +0 -107
- package/dist/link-6FPKFVC3.js +0 -67
- package/dist/linkedin-TE6P4RYN.js +0 -1344
- package/dist/linkedin-TE6P4RYN.js.map +0 -1
- package/dist/linkedin-person-TZJ6VEXE.js +0 -139
- package/dist/list-2277GCPH.js +0 -51
- package/dist/list-4R5EMKUQ.js +0 -154
- package/dist/list-537S75BZ.js +0 -76
- package/dist/list-MN2FPF3T.js +0 -306
- package/dist/list-ORO4WDF4.js +0 -67
- package/dist/list-Q52FPW3H.js +0 -50
- package/dist/list-V4PSDBLX.js +0 -93
- package/dist/list-WIXQXNKB.js +0 -65
- package/dist/list-XK33NCSC.js +0 -57
- package/dist/locations-A65MFB7Q.js +0 -69
- package/dist/locations-WN6B3IJK.js +0 -40
- package/dist/log-ABBZLPRU.js +0 -95
- package/dist/logo-4LSFZ3ZO.js +0 -19
- package/dist/lookup-WIM5WR25.js +0 -23
- package/dist/make-QAFKU6WO.js +0 -1367
- package/dist/make-QAFKU6WO.js.map +0 -1
- package/dist/map-52P35OKE.js +0 -445
- package/dist/mcp-PZ3VBIF4.js +0 -729
- package/dist/media-34I7UB7Z.js +0 -89
- package/dist/media-KKI3KWLR.js +0 -18
- package/dist/media-sources-TT374PLN.js +0 -35
- package/dist/members-CF6VG6ZW.js +0 -47
- package/dist/meme-6NFYFQ7T.js +0 -108
- package/dist/meta-2UK7KIE4.js +0 -124
- package/dist/metrics-3U3ZO2RF.js +0 -152
- package/dist/models-VOSJJFO2.js +0 -155
- package/dist/normalize-4LZCLMTQ.js +0 -144
- package/dist/normalize-G75RDSE4.js +0 -806
- package/dist/options-6IRL7CL6.js +0 -125
- package/dist/organization-WMLLJE66.js +0 -949
- package/dist/output-ELEO2Z6R.js +0 -24
- package/dist/page-4X6IBUWG.js +0 -105
- package/dist/page-photos-KNBLMFLN.js +0 -118
- package/dist/page-photos-KNBLMFLN.js.map +0 -1
- package/dist/pages-7HW5YOZV.js +0 -67
- package/dist/performance-A7CYFBW2.js +0 -5565
- package/dist/performance-HYSTXLTS.js +0 -27
- package/dist/pinterest-KA6VFDM4.js +0 -105
- package/dist/pixels-D5HF24FI.js +0 -109
- package/dist/pixels-U6UA662G.js +0 -62
- package/dist/plan-XCA6R3HZ.js +0 -208
- package/dist/posts-ALGM6ONV.js +0 -36
- package/dist/preview-55TRUF4Q.js +0 -245
- package/dist/preview-76ZP2QA3.js +0 -101
- package/dist/profile-NHUPUCBR.js +0 -159
- package/dist/promoted-tweet-writes-I5G4IDL5.js +0 -183
- package/dist/promoted-tweets-X5XNO7IT.js +0 -119
- package/dist/properties-2ZXA5BPJ.js +0 -101
- package/dist/publish-S2Z4EF4H.js +0 -350
- package/dist/query-63CTX2PH.js +0 -231
- package/dist/query-DMWY3TDD.js +0 -236
- package/dist/query-SAQADBM2.js +0 -62
- package/dist/questionnaire-WHE42RD4.js +0 -94
- package/dist/read-NESEKULG.js +0 -141
- package/dist/reddit-S2L5WDY7.js +0 -29
- package/dist/refresh-ILDEPU5A.js +0 -42
- package/dist/refresh-K2YTJSH3.js +0 -97
- package/dist/release-FX76IIVN.js +0 -63
- package/dist/relevant-pages-KTSODNNW.js +0 -99
- package/dist/remove-LOVWPLDO.js +0 -53
- package/dist/remove-NHE4UT7G.js +0 -49
- package/dist/reopen-DXV2Y6Z3.js +0 -66
- package/dist/rerun-TFQCRRFK.js +0 -97
- package/dist/rerun-TFQCRRFK.js.map +0 -1
- package/dist/research-7PGDAKC7.js +0 -265
- package/dist/research-HY5PSUCC.js +0 -75
- package/dist/reset-MEHUQJA4.js +0 -57
- package/dist/reset-Y5VZJRDQ.js +0 -57
- package/dist/resolve-FAVABEJW.js +0 -124
- package/dist/retry-5IY4MNDW.js +0 -65
- package/dist/retry-OMJ3C3AX.js +0 -63
- package/dist/retry-failed-R5HPQ3KQ.js +0 -45
- package/dist/revenue-S4KFZCOI.js +0 -91
- package/dist/revenue-S4KFZCOI.js.map +0 -1
- package/dist/rule-writes-QB4IWFCJ.js +0 -530
- package/dist/rule-writes-QB4IWFCJ.js.map +0 -1
- package/dist/rules-66IGR2KA.js +0 -99
- package/dist/rules-66IGR2KA.js.map +0 -1
- package/dist/rules-FYVD2QBB.js +0 -217
- package/dist/rules-add-G7YGOYZJ.js +0 -465
- package/dist/rules-add-G7YGOYZJ.js.map +0 -1
- package/dist/run-LJVBH3JS.js +0 -72
- package/dist/run-XJBWDWN6.js +0 -69
- package/dist/scaffold-ad-GNMCB3QY.js +0 -1513
- package/dist/scaffold-ad-GNMCB3QY.js.map +0 -1
- package/dist/scaffold-static-ad-QIWKWURL.js +0 -1013
- package/dist/scaffold-static-ad-QIWKWURL.js.map +0 -1
- package/dist/scaffold-video-G6G2NPUF.js +0 -885
- package/dist/scaffold-video-G6G2NPUF.js.map +0 -1
- package/dist/schedule-D7EDEM45.js +0 -67
- package/dist/schedule-OX5XHXLH.js +0 -64
- package/dist/scheduled-agents-A5ZFQB5X.js +0 -55
- package/dist/schema-NTGHAPR2.js +0 -135
- package/dist/schema-Z43AJOJ4.js +0 -152
- package/dist/scrape-VL2RWSTW.js +0 -2209
- package/dist/screenshot-Y6EEXS3Q.js +0 -103
- package/dist/search-CXC7N5XJ.js +0 -51
- package/dist/search-JEXYEAPQ.js +0 -228
- package/dist/search-L3GTZYRW.js +0 -92
- package/dist/search-TXBYKNQC.js +0 -91
- package/dist/search-WCXQBMMM.js +0 -177
- package/dist/search-XHSTUBDY.js +0 -26
- package/dist/search-copy-FIPG7OCC.js +0 -168
- package/dist/seeds-ADJKURNG.js +0 -101
- package/dist/select-5ZD7FVBT.js +0 -110
- package/dist/select-5ZD7FVBT.js.map +0 -1
- package/dist/sends-RS4LWRAC.js +0 -349
- package/dist/sequences-2RPKDKGQ.js +0 -146
- package/dist/set-prompt-NGCVMQIQ.js +0 -199
- package/dist/set-prompt-NGCVMQIQ.js.map +0 -1
- package/dist/setup-links-4HCSF55G.js +0 -144
- package/dist/shared-4GGUIOF2.js +0 -32
- package/dist/shopify-GDR5WGHH.js +0 -4009
- package/dist/site-B7LT6KAO.js +0 -180
- package/dist/sitemaps-Z6IELTQV.js +0 -77
- package/dist/sites-KLAKI2EY.js +0 -97
- package/dist/skills-OJP36EVR.js +0 -47
- package/dist/sources-6DPUEROC.js +0 -30
- package/dist/sources-OSUXCLID.js +0 -457
- package/dist/stale-YKFKPPOH.js +0 -90
- package/dist/stale-YKFKPPOH.js.map +0 -1
- package/dist/stats-MIMFX4R7.js +0 -34
- package/dist/status-KIC3P5JV.js +0 -65
- package/dist/sticker-IREEEN7I.js +0 -103
- package/dist/stock-VWFUFRYV.js +0 -212
- package/dist/studies-YGYAH3JI.js +0 -250
- package/dist/studio-XLC37YGX.js +0 -49
- package/dist/study-writes-UPGJB36A.js +0 -471
- package/dist/study-writes-UPGJB36A.js.map +0 -1
- package/dist/suggest-5RTISDLI.js +0 -66
- package/dist/sync-OHIXI4I6.js +0 -55
- package/dist/sync-QBW4XH2H.js +0 -57
- package/dist/sync-VCAFAYW4.js +0 -279
- package/dist/sync-definition-4KMJK46H.js +0 -70
- package/dist/tag-DSCUKNC3.js +0 -57
- package/dist/tag-manager-IINALUEJ.js +0 -43
- package/dist/tags-4F5UBPYG.js +0 -227
- package/dist/tags-4O5FPEEY.js +0 -26
- package/dist/tags-7RKKCQ4X.js +0 -23
- package/dist/tags-CB4MWI3A.js +0 -23
- package/dist/tags-QZJIP4LJ.js +0 -23
- package/dist/targeting-BM72UTI6.js +0 -762
- package/dist/targeting-BM72UTI6.js.map +0 -1
- package/dist/targeting-constants-54S3FXIF.js +0 -118
- package/dist/targeting-criteria-65UU7EYD.js +0 -113
- package/dist/targets-T742OPQI.js +0 -106
- package/dist/terms-OFHNLW6U.js +0 -102
- package/dist/testimonials-HKJJXONO.js +0 -32
- package/dist/themes-Q6LVMEMF.js +0 -95
- package/dist/themes-Q6LVMEMF.js.map +0 -1
- package/dist/top-companies-T6AMU4C6.js +0 -111
- package/dist/transcript-DOUYMZAP.js +0 -165
- package/dist/translate-WKOXFZTQ.js +0 -603
- package/dist/translate-WKOXFZTQ.js.map +0 -1
- package/dist/triggers-EYY4GSUL.js +0 -144
- package/dist/tweets-TRTXC6O4.js +0 -123
- package/dist/unfollow-DATOGPLZ.js +0 -46
- package/dist/unlink-JNM4WRZK.js +0 -70
- package/dist/unstage-LLQCMZ5H.js +0 -96
- package/dist/unstage-QF4JT5YP.js +0 -88
- package/dist/update-6V3RBRIE.js +0 -101
- package/dist/update-J4DURR4K.js +0 -192
- package/dist/update-J7Y6LZC5.js +0 -155
- package/dist/update-MQ4NYIU6.js +0 -66
- package/dist/update-SD5YQIJC.js +0 -81
- package/dist/upload-7PPMVWVA.js +0 -155
- package/dist/upload-CEIYYPID.js +0 -137
- package/dist/upscale-WVJZG76V.js +0 -109
- package/dist/url-options-6WC2XQKB.js +0 -131
- package/dist/url-params-OVBIP6UA.js +0 -101
- package/dist/use-6FADOAFZ.js +0 -111
- package/dist/validate-UHXI2ESE.js +0 -135
- package/dist/validate-UHXI2ESE.js.map +0 -1
- package/dist/variant-RNM36P4J.js +0 -338
- package/dist/videos-GHFCOTT7.js +0 -146
- package/dist/videos-Z72RXCRB.js +0 -41
- package/dist/view-YR6MDLWL.js +0 -133
- package/dist/viewer-check-655BZRML.js +0 -83
- package/dist/web-4QN6QB7L.js +0 -173
- package/dist/winners-4T5RFQXU.js +0 -113
- package/dist/winning-ads-2J2RIOLR.js +0 -86
- package/dist/write-commands-6D55SB56.js +0 -206
- package/dist/write-commands-AIWLEGO2.js +0 -1169
- package/dist/write-commands-AIWLEGO2.js.map +0 -1
- package/dist/write-commands-UO3OQIHH.js +0 -721
- package/dist/write-commands-V7B4FBMX.js +0 -1524
- package/dist/write-commands-V7B4FBMX.js.map +0 -1
- package/dist/x-7KXNCWTJ.js +0 -47
- /package/dist/{account-JVDP5ERG.js.map → account-6RJ6ZI3B.js.map} +0 -0
- /package/dist/{account-EXGRZIXS.js.map → account-AIGNJ2RP.js.map} +0 -0
- /package/dist/{account-NSBALYYS.js.map → account-E5LLPRZ6.js.map} +0 -0
- /package/dist/{account-assets-EPEYTJFD.js.map → account-assets-J6SVHSXR.js.map} +0 -0
- /package/dist/{account-writes-KEXINJ5D.js.map → account-writes-XNS4IKZV.js.map} +0 -0
- /package/dist/{accounts-UWC2TT6R.js.map → accounts-3ZWYGRVM.js.map} +0 -0
- /package/dist/{accounts-QR6OQ3GC.js.map → accounts-5TLHSEZR.js.map} +0 -0
- /package/dist/{accounts-QESGQJGZ.js.map → accounts-BAZYYDFV.js.map} +0 -0
- /package/dist/{accounts-A47QUTTB.js.map → accounts-L2HVNJUF.js.map} +0 -0
- /package/dist/{accounts-E5TF2AFI.js.map → accounts-NTBIRB52.js.map} +0 -0
- /package/dist/{actions-NT3HXFFA.js.map → actions-N2FBJMT4.js.map} +0 -0
- /package/dist/{active-entities-XRSJNBOV.js.map → active-entities-IJPRN45K.js.map} +0 -0
- /package/dist/{activecampaign-EYRHDSXY.js.map → activecampaign-U77COT2F.js.map} +0 -0
- /package/dist/{activities-ZDWREYR7.js.map → activities-SS3SUWSS.js.map} +0 -0
- /package/dist/{ad-group-writes-SVR4RCKB.js.map → ad-group-writes-DTQSUNE2.js.map} +0 -0
- /package/dist/{ad-groups-C726HUXS.js.map → ad-groups-CX23GLVE.js.map} +0 -0
- /package/dist/{ad-writes-RWJIWGEL.js.map → ad-writes-HAAUOJCG.js.map} +0 -0
- /package/dist/{add-EPOHDTUO.js.map → add-ABPQTO2M.js.map} +0 -0
- /package/dist/{add-JO4ZPS23.js.map → add-BK6N7KWU.js.map} +0 -0
- /package/dist/{add-25YZMFSH.js.map → add-ECN2FTMH.js.map} +0 -0
- /package/dist/{add-D44VCDRU.js.map → add-FH7OVKFF.js.map} +0 -0
- /package/dist/{add-7MAL7JRX.js.map → add-KHY3H54G.js.map} +0 -0
- /package/dist/{add-NSW26HIM.js.map → add-VDH2VCXR.js.map} +0 -0
- /package/dist/{add-accounts-EKMSHAA4.js.map → add-accounts-6JAOSCXK.js.map} +0 -0
- /package/dist/{ads-4YZYNU66.js.map → ads-BEMEXBDJ.js.map} +0 -0
- /package/dist/{ads-EWZGIC4T.js.map → ads-GAU2XKNL.js.map} +0 -0
- /package/dist/{ads-3KK7VQPU.js.map → ads-HZOXZ3FY.js.map} +0 -0
- /package/dist/{ads-DGL5SGP3.js.map → ads-I5OBZ5VI.js.map} +0 -0
- /package/dist/{adsets-PSVCPCE3.js.map → adsets-PMQGA6TW.js.map} +0 -0
- /package/dist/{advertisers-AHOWL3YL.js.map → advertisers-EOLL3VFQ.js.map} +0 -0
- /package/dist/{advertisers-7NAPI5ZU.js.map → advertisers-FNKY2PP4.js.map} +0 -0
- /package/dist/{analytics-GFFXCMLV.js.map → analytics-DOAUCF2Y.js.map} +0 -0
- /package/dist/{analytics-7H6NDVUQ.js.map → analytics-MR3T34KN.js.map} +0 -0
- /package/dist/{animate-GTUI7XX4.js.map → animate-EKGVDSWM.js.map} +0 -0
- /package/dist/{approved-E4EZA5RT.js.map → approved-WQL4Z4EB.js.map} +0 -0
- /package/dist/{asset-writes-NDSHY5OT.js.map → asset-writes-A5X2T6LQ.js.map} +0 -0
- /package/dist/{assign-SDPPWP3Q.js.map → assign-UMNHINRA.js.map} +0 -0
- /package/dist/{audience-size-LKDDHKED.js.map → audience-size-Q7DZ6TGM.js.map} +0 -0
- /package/dist/{audiences-UHLVATR6.js.map → audiences-HBJGEGKL.js.map} +0 -0
- /package/dist/{audiences-6L43K2T2.js.map → audiences-RDQZNGPI.js.map} +0 -0
- /package/dist/{audiences-T5LMTT3B.js.map → audiences-TA636UBN.js.map} +0 -0
- /package/dist/{audit-TSZIQTUB.js.map → audit-H3F6FZNE.js.map} +0 -0
- /package/dist/{audit-46DO2HV3.js.map → audit-QMCK76AT.js.map} +0 -0
- /package/dist/{autocomplete-5BSAOAMZ.js.map → autocomplete-DIBJ57VC.js.map} +0 -0
- /package/dist/{avatars-S6RRD7M3.js.map → avatars-UIXRGLPA.js.map} +0 -0
- /package/dist/{bid-pricing-5KUAINH4.js.map → bid-pricing-OMY2F2SB.js.map} +0 -0
- /package/dist/{brand-KFK2MQWW.js.map → brand-WV6CAU3M.js.map} +0 -0
- /package/dist/{businesses-TRFYMZ4I.js.map → businesses-56IUB5X4.js.map} +0 -0
- /package/dist/{campaign-groups-5RPZPDNW.js.map → campaign-groups-PGJIQV4S.js.map} +0 -0
- /package/dist/{campaign-writes-FUIGN5OR.js.map → campaign-writes-MAJ5FGXG.js.map} +0 -0
- /package/dist/{campaign-writes-XMYBEVZF.js.map → campaign-writes-WL3YAEGJ.js.map} +0 -0
- /package/dist/{campaigns-2MTON2IE.js.map → campaigns-5L4ZTGF7.js.map} +0 -0
- /package/dist/{campaigns-JNP3VDZK.js.map → campaigns-EK7EUKZD.js.map} +0 -0
- /package/dist/{campaigns-N2SWSBYT.js.map → campaigns-HCJ3AIDK.js.map} +0 -0
- /package/dist/{campaigns-5A3IE735.js.map → campaigns-NHACWGWS.js.map} +0 -0
- /package/dist/{canvas-CHFNQTLY.js.map → canvas-INL3J7HO.js.map} +0 -0
- /package/dist/{capabilities-2W3SRZ2I.js.map → capabilities-Y33EWDMJ.js.map} +0 -0
- /package/dist/{cards-CXKIVM4D.js.map → cards-IWWKA5WH.js.map} +0 -0
- /package/dist/{catalog-6BER3SF7.js.map → catalog-NSA2FUI2.js.map} +0 -0
- /package/dist/{catalogs-G5NOKL4L.js.map → catalogs-SJMYID7N.js.map} +0 -0
- /package/dist/{changes-AS4RVEAL.js.map → changes-2HOF2HSV.js.map} +0 -0
- /package/dist/{chatgpt-O6EEAYLF.js.map → chatgpt-J6MNVQVT.js.map} +0 -0
- /package/dist/{chats-4JLWMUAC.js.map → chats-4HK6UYD2.js.map} +0 -0
- /package/dist/{chunk-UK4XSLV2.js.map → chunk-2B2JFTWI.js.map} +0 -0
- /package/dist/{chunk-RULW4627.js.map → chunk-2O5CCKV7.js.map} +0 -0
- /package/dist/{chunk-AXLKR3E4.js.map → chunk-3BKESS5W.js.map} +0 -0
- /package/dist/{chunk-FLTAPEVY.js.map → chunk-3VBPJQ7L.js.map} +0 -0
- /package/dist/{chunk-6OZDN2FI.js.map → chunk-3X262BEG.js.map} +0 -0
- /package/dist/{chunk-DGHSXHZR.js.map → chunk-4CYB33V3.js.map} +0 -0
- /package/dist/{chunk-CST52ZME.js.map → chunk-4JB556VC.js.map} +0 -0
- /package/dist/{chunk-H4RHZJ65.js.map → chunk-4QYZJPSM.js.map} +0 -0
- /package/dist/{chunk-H6ASYVQX.js.map → chunk-4WLJYLRL.js.map} +0 -0
- /package/dist/{chunk-V4HS5JRL.js.map → chunk-56ZJO7TM.js.map} +0 -0
- /package/dist/{chunk-AQRBEPZL.js.map → chunk-5LQGW5UF.js.map} +0 -0
- /package/dist/{chunk-HXSYWXLH.js.map → chunk-5U6OL4NN.js.map} +0 -0
- /package/dist/{chunk-YAINUFSC.js.map → chunk-6IL7JFX5.js.map} +0 -0
- /package/dist/{chunk-Q5XUFN2W.js.map → chunk-6LNCKT6S.js.map} +0 -0
- /package/dist/{chunk-B64KJW5C.js.map → chunk-6LUDG5AB.js.map} +0 -0
- /package/dist/{chunk-ZCGM7ZWM.js.map → chunk-6UQV5DOD.js.map} +0 -0
- /package/dist/{chunk-L7I47VGM.js.map → chunk-6WA7QSCN.js.map} +0 -0
- /package/dist/{chunk-BEZEZHQ6.js.map → chunk-7CHPHER2.js.map} +0 -0
- /package/dist/{chunk-RIVQ4PQQ.js.map → chunk-7J7ASYIM.js.map} +0 -0
- /package/dist/{chunk-ZBXV2KOQ.js.map → chunk-7MMTIJO3.js.map} +0 -0
- /package/dist/{chunk-3QPG2D27.js.map → chunk-AA3D7GZF.js.map} +0 -0
- /package/dist/{chunk-Q736UFSD.js.map → chunk-AGL7EWP2.js.map} +0 -0
- /package/dist/{chunk-KGJ6EIX3.js.map → chunk-AHVD6IEI.js.map} +0 -0
- /package/dist/{chunk-3GXHML4V.js.map → chunk-ASJMLTMX.js.map} +0 -0
- /package/dist/{chunk-XA7JN7YE.js.map → chunk-AWENMEFC.js.map} +0 -0
- /package/dist/{chunk-EJ6EED6I.js.map → chunk-BHZLKLK7.js.map} +0 -0
- /package/dist/{chunk-DHF4FXWS.js.map → chunk-BVER7I36.js.map} +0 -0
- /package/dist/{chunk-MTW2NDDD.js.map → chunk-C3RZNVLM.js.map} +0 -0
- /package/dist/{chunk-6AMN346B.js.map → chunk-CA5QBLIZ.js.map} +0 -0
- /package/dist/{chunk-C52Q3L4C.js.map → chunk-CONTVNSN.js.map} +0 -0
- /package/dist/{chunk-2CC4CPDT.js.map → chunk-EE6NZ6NG.js.map} +0 -0
- /package/dist/{chunk-M4KFO256.js.map → chunk-EG6HMBCF.js.map} +0 -0
- /package/dist/{chunk-MKOI6QYM.js.map → chunk-FHLAJYZE.js.map} +0 -0
- /package/dist/{chunk-XA76OGSL.js.map → chunk-FSNQFZ2Z.js.map} +0 -0
- /package/dist/{chunk-DW3H2XQA.js.map → chunk-G67OBCXI.js.map} +0 -0
- /package/dist/{chunk-WTOBG3YL.js.map → chunk-GFYGVIT3.js.map} +0 -0
- /package/dist/{chunk-3KUNRKNV.js.map → chunk-GRNHQWSV.js.map} +0 -0
- /package/dist/{chunk-JAME5NBT.js.map → chunk-GWQSZWHT.js.map} +0 -0
- /package/dist/{chunk-LAMSUL26.js.map → chunk-HBXR26LB.js.map} +0 -0
- /package/dist/{chunk-EONUZOJV.js.map → chunk-HUO5MZ7S.js.map} +0 -0
- /package/dist/{chunk-4INBMXUS.js.map → chunk-HVL22WUU.js.map} +0 -0
- /package/dist/{chunk-AZIXX73C.js.map → chunk-IA5GLVRV.js.map} +0 -0
- /package/dist/{chunk-LLTHDEM2.js.map → chunk-IEPCI2EB.js.map} +0 -0
- /package/dist/{chunk-HQDNDKNR.js.map → chunk-IKSBLQTL.js.map} +0 -0
- /package/dist/{chunk-X5YHMGAT.js.map → chunk-IRLMIKI7.js.map} +0 -0
- /package/dist/{chunk-WYMX3F47.js.map → chunk-IW4MX7OX.js.map} +0 -0
- /package/dist/{chunk-7NBQQOCU.js.map → chunk-J4WOF6WK.js.map} +0 -0
- /package/dist/{chunk-75OGTGC4.js.map → chunk-J63TN3GR.js.map} +0 -0
- /package/dist/{chunk-QRRAMUKV.js.map → chunk-JESSFI7R.js.map} +0 -0
- /package/dist/{chunk-RQHXWPET.js.map → chunk-K4QPBXV7.js.map} +0 -0
- /package/dist/{chunk-YAMKCMAS.js.map → chunk-K5VDDKKF.js.map} +0 -0
- /package/dist/{chunk-WTPID22G.js.map → chunk-KM5K47TW.js.map} +0 -0
- /package/dist/{chunk-EM5R3BYC.js.map → chunk-LGJIJVVH.js.map} +0 -0
- /package/dist/{chunk-XHAGX4J4.js.map → chunk-LHSSIUU4.js.map} +0 -0
- /package/dist/{chunk-EMR5KGNY.js.map → chunk-LQMPA4DY.js.map} +0 -0
- /package/dist/{chunk-Z7ICQKC2.js.map → chunk-M3IXPK6U.js.map} +0 -0
- /package/dist/{chunk-KG5VNPKU.js.map → chunk-MJU5VKX2.js.map} +0 -0
- /package/dist/{chunk-RLLPY62L.js.map → chunk-MRGU3NPN.js.map} +0 -0
- /package/dist/{chunk-ZMNRSTNV.js.map → chunk-MSLFPL77.js.map} +0 -0
- /package/dist/{chunk-L4QEMWNJ.js.map → chunk-NKCWJPMN.js.map} +0 -0
- /package/dist/{chunk-X7USE7IA.js.map → chunk-NT7NCSEB.js.map} +0 -0
- /package/dist/{chunk-MFGUR5OD.js.map → chunk-OADMSHME.js.map} +0 -0
- /package/dist/{chunk-6FQ7CJEX.js.map → chunk-ONGZKI5J.js.map} +0 -0
- /package/dist/{chunk-RRKUXGAU.js.map → chunk-OOZNTJP6.js.map} +0 -0
- /package/dist/{chunk-MIHY534L.js.map → chunk-OP3NHIFH.js.map} +0 -0
- /package/dist/{chunk-5QNW5PCM.js.map → chunk-OU4KWL6B.js.map} +0 -0
- /package/dist/{chunk-M5PZ6QQB.js.map → chunk-PLIGHRIQ.js.map} +0 -0
- /package/dist/{chunk-4AO3LSYM.js.map → chunk-PLROJ3SX.js.map} +0 -0
- /package/dist/{chunk-PR5OPERY.js.map → chunk-PSM3RI4B.js.map} +0 -0
- /package/dist/{chunk-Q3G4ZI2U.js.map → chunk-Q4O7ICAK.js.map} +0 -0
- /package/dist/{chunk-HFIHXIYY.js.map → chunk-Q6XM6ZDB.js.map} +0 -0
- /package/dist/{chunk-NWLK5RPA.js.map → chunk-QHRUCSRI.js.map} +0 -0
- /package/dist/{chunk-IYDESWW4.js.map → chunk-QUDPMIW7.js.map} +0 -0
- /package/dist/{chunk-I3QLWGKS.js.map → chunk-R2JGUOT6.js.map} +0 -0
- /package/dist/{chunk-RGLTITIH.js.map → chunk-R5I4IHJ5.js.map} +0 -0
- /package/dist/{chunk-MSIOGH67.js.map → chunk-RJXO66C4.js.map} +0 -0
- /package/dist/{chunk-CF5I4Q5M.js.map → chunk-RYNN6UUF.js.map} +0 -0
- /package/dist/{chunk-SIRRBWQ2.js.map → chunk-S4V2GOKV.js.map} +0 -0
- /package/dist/{chunk-6EOWBGGW.js.map → chunk-S7D4GTYY.js.map} +0 -0
- /package/dist/{chunk-4HFM5RCP.js.map → chunk-T4RV7XOC.js.map} +0 -0
- /package/dist/{chunk-HPF3USL2.js.map → chunk-TDUAGNSQ.js.map} +0 -0
- /package/dist/{chunk-JLAFNORO.js.map → chunk-TZRWET3S.js.map} +0 -0
- /package/dist/{chunk-XY7W6MQN.js.map → chunk-U5V4CIIG.js.map} +0 -0
- /package/dist/{chunk-DPOUS5DN.js.map → chunk-U625CQ3Y.js.map} +0 -0
- /package/dist/{chunk-UVUY6FLV.js.map → chunk-UDEVIXKX.js.map} +0 -0
- /package/dist/{chunk-LJEJCIHR.js.map → chunk-UUDWZIDC.js.map} +0 -0
- /package/dist/{chunk-6D7WTUF3.js.map → chunk-VAQBBNLD.js.map} +0 -0
- /package/dist/{chunk-BIBXZJZI.js.map → chunk-VCDFBFPT.js.map} +0 -0
- /package/dist/{chunk-MPTNN35I.js.map → chunk-VF3W7CI7.js.map} +0 -0
- /package/dist/{chunk-BMK4F4CU.js.map → chunk-VHOOAQY4.js.map} +0 -0
- /package/dist/{chunk-6MJKVNLL.js.map → chunk-VK2VC6A2.js.map} +0 -0
- /package/dist/{chunk-3WN5GWX4.js.map → chunk-WWPRSJOS.js.map} +0 -0
- /package/dist/{chunk-O5VSYBUA.js.map → chunk-XKYFNMTB.js.map} +0 -0
- /package/dist/{chunk-KJHG2DWS.js.map → chunk-XL42ZEVH.js.map} +0 -0
- /package/dist/{chunk-TCLJRWST.js.map → chunk-XPUQFPIU.js.map} +0 -0
- /package/dist/{chunk-CBVUO7SK.js.map → chunk-XQEHLDGP.js.map} +0 -0
- /package/dist/{chunk-S5S54J2K.js.map → chunk-XQWC223L.js.map} +0 -0
- /package/dist/{chunk-JAK5VDSG.js.map → chunk-XYDHBLZ2.js.map} +0 -0
- /package/dist/{chunk-V7EN5LFS.js.map → chunk-XZO6ONVI.js.map} +0 -0
- /package/dist/{chunk-H25GY4U4.js.map → chunk-YFFQ3HY4.js.map} +0 -0
- /package/dist/{chunk-URGXEDFV.js.map → chunk-YGUGL4ZL.js.map} +0 -0
- /package/dist/{chunk-TLQY4QBW.js.map → chunk-YT3S2XFG.js.map} +0 -0
- /package/dist/{chunk-QGAUDVMR.js.map → chunk-ZPCZ4XDB.js.map} +0 -0
- /package/dist/{cite-WCAOCOO5.js.map → cite-2ZJG3FBV.js.map} +0 -0
- /package/dist/{claim-L4WLCVUL.js.map → claim-IGU5W4CT.js.map} +0 -0
- /package/dist/{client-VCKP6WBR.js.map → client-MSRCSDB7.js.map} +0 -0
- /package/dist/{code-VXOTFGD2.js.map → code-T7Z5JDQ2.js.map} +0 -0
- /package/dist/{companies-HW46BRQG.js.map → companies-HCSBVXCE.js.map} +0 -0
- /package/dist/{company-KCIDE7SL.js.map → company-SSMY4G2T.js.map} +0 -0
- /package/dist/{complete-JXM25FVW.js.map → complete-FQNRXUI5.js.map} +0 -0
- /package/dist/{config-UR45YCIN.js.map → config-XRPKA5QR.js.map} +0 -0
- /package/dist/{connect-7TX7AAM5.js.map → connect-VXEE3QBU.js.map} +0 -0
- /package/dist/{content-EQQIKG5H.js.map → content-2JFP747N.js.map} +0 -0
- /package/dist/{conversation-YIDUB6GL.js.map → conversation-KKJKZIX5.js.map} +0 -0
- /package/dist/{conversion-report-33SG7SHU.js.map → conversion-report-G65UHQRO.js.map} +0 -0
- /package/dist/{conversion-writes-XGGTBML5.js.map → conversion-writes-333V4OVR.js.map} +0 -0
- /package/dist/{conversions-F4OZYUCT.js.map → conversions-7UHCNIAO.js.map} +0 -0
- /package/dist/{conversions-PPP4QK7U.js.map → conversions-L6775Q22.js.map} +0 -0
- /package/dist/{countries-GRCU4IGM.js.map → countries-XJVDM635.js.map} +0 -0
- /package/dist/{create-6EAKNERA.js.map → create-AXWJECPP.js.map} +0 -0
- /package/dist/{create-FDNMIVFX.js.map → create-B24XHUGZ.js.map} +0 -0
- /package/dist/{create-772LZHZR.js.map → create-HJKTD5FN.js.map} +0 -0
- /package/dist/{create-X2QM7GA7.js.map → create-V4NGP5KB.js.map} +0 -0
- /package/dist/{creatives-4EPM3RHG.js.map → creatives-OKFLX67Y.js.map} +0 -0
- /package/dist/{creatives-SNYN4KIM.js.map → creatives-WX6GQ37F.js.map} +0 -0
- /package/dist/{credentials-KZZVBO42.js.map → credentials-4JFUH6FN.js.map} +0 -0
- /package/dist/{crm-M6NXDU5B.js.map → crm-6MLYUEK7.js.map} +0 -0
- /package/dist/{crm-4LZZVT4N.js.map → crm-PUQBWZKE.js.map} +0 -0
- /package/dist/{crop-NE7YX4SS.js.map → crop-V5MSIY5F.js.map} +0 -0
- /package/dist/{currency-HK2ZW2VW.js.map → currency-SCSJ5FW2.js.map} +0 -0
- /package/dist/{custom-conversions-GQTU5E6X.js.map → custom-conversions-GN4JDS5F.js.map} +0 -0
- /package/dist/{customers-V5NT4W7X.js.map → customers-WXD2LTUC.js.map} +0 -0
- /package/dist/{decide-6Q5X3V3F.js.map → decide-PW2NRMRK.js.map} +0 -0
- /package/dist/{delete-YOEI63OT.js.map → delete-EAJN6ZHT.js.map} +0 -0
- /package/dist/{delete-LFZIPQEO.js.map → delete-GDIFIYA2.js.map} +0 -0
- /package/dist/{delete-GQIKNO53.js.map → delete-JQG3ZWQX.js.map} +0 -0
- /package/dist/{delete-SP66F7ZV.js.map → delete-L7CGJ23X.js.map} +0 -0
- /package/dist/{delete-QHDDR66K.js.map → delete-OQREQEGN.js.map} +0 -0
- /package/dist/{delete-EKKOEB3N.js.map → delete-ZR3DVLWU.js.map} +0 -0
- /package/dist/{demographics-CEQ74O74.js.map → demographics-LMRGNO7J.js.map} +0 -0
- /package/dist/{describe-MAGTSOW4.js.map → describe-OHWLLBDE.js.map} +0 -0
- /package/dist/{describe-DJPIUEFE.js.map → describe-YELOXWHY.js.map} +0 -0
- /package/dist/{dimensions-IC2H7V3H.js.map → dimensions-CLLCVVRY.js.map} +0 -0
- /package/dist/{discard-5GDF3TP3.js.map → discard-K2KIIFJQ.js.map} +0 -0
- /package/dist/{discover-PSL2NBJL.js.map → discover-SQJLRS4G.js.map} +0 -0
- /package/dist/{discover-Q5PAOIQQ.js.map → discover-UJMDGDQO.js.map} +0 -0
- /package/dist/{domain-PKOUPHHF.js.map → domain-CJX5JSLS.js.map} +0 -0
- /package/dist/{download-2WNTN7JQ.js.map → download-HFDBP6BO.js.map} +0 -0
- /package/dist/{download-EHDJXBAC.js.map → download-SZ5P3GLV.js.map} +0 -0
- /package/dist/{draft-L2NXCIYT.js.map → draft-7QDE2Z3N.js.map} +0 -0
- /package/dist/{draft-27NMTARB.js.map → draft-ILXHFWTT.js.map} +0 -0
- /package/dist/{draft-RZCTAOI2.js.map → draft-NUFU5YME.js.map} +0 -0
- /package/dist/{draft-UEVBUNKV.js.map → draft-QSTD3DH2.js.map} +0 -0
- /package/dist/{draft-MWYKIZC4.js.map → draft-TV5IH5U4.js.map} +0 -0
- /package/dist/{draft-JESKGZ6O.js.map → draft-WNMHUFAH.js.map} +0 -0
- /package/dist/{env-NZXNMWSD.js.map → env-3256G2OE.js.map} +0 -0
- /package/dist/{experiment-XAYSEYTU.js.map → experiment-5L5USMAL.js.map} +0 -0
- /package/dist/{export-W54UZ62P.js.map → export-YSOM4E3B.js.map} +0 -0
- /package/dist/{extract-6HJXSOZW.js.map → extract-7FYXXEQZ.js.map} +0 -0
- /package/dist/{facets-TBOXGYJT.js.map → facets-2FRELYRC.js.map} +0 -0
- /package/dist/{favorites-Y6CT6NSQ.js.map → favorites-LTG2F6W2.js.map} +0 -0
- /package/dist/{feed-35BRQPTH.js.map → feed-RSBWEI75.js.map} +0 -0
- /package/dist/{feedback-MSMFYAEY.js.map → feedback-PQUM7UBT.js.map} +0 -0
- /package/dist/{fetch-I6P72CDL.js.map → fetch-3PWYTX4R.js.map} +0 -0
- /package/dist/{fetch-LGX7B3IC.js.map → fetch-FLQYW27W.js.map} +0 -0
- /package/dist/{find-SVGRA7IA.js.map → find-SHHDWCPM.js.map} +0 -0
- /package/dist/{fit-RVWPRBNO.js.map → fit-4XCDLF7C.js.map} +0 -0
- /package/dist/{flows-LA6EYMLS.js.map → flows-4ALWJVNF.js.map} +0 -0
- /package/dist/{follow-24QSDNAG.js.map → follow-N4TKU3UM.js.map} +0 -0
- /package/dist/{follow-competitors-AG4E4XFA.js.map → follow-competitors-AHQ57BWS.js.map} +0 -0
- /package/dist/{following-YGM6TBK3.js.map → following-CEYH33DW.js.map} +0 -0
- /package/dist/{fonts-WRC34VSV.js.map → fonts-CYJ5EFR4.js.map} +0 -0
- /package/dist/{forecast-6VHRGBJG.js.map → forecast-SG2VUBZD.js.map} +0 -0
- /package/dist/{funding-WZNGXRLJ.js.map → funding-X7M5WLDX.js.map} +0 -0
- /package/dist/{funnel-U3GQIGND.js.map → funnel-F7DS7PUN.js.map} +0 -0
- /package/dist/{ga4-W3U5YTRT.js.map → ga4-QPBAKGSH.js.map} +0 -0
- /package/dist/{generate-Y4NJEYIH.js.map → generate-LVBI3VDD.js.map} +0 -0
- /package/dist/{get-YWDZYEAC.js.map → get-DMV7KG2F.js.map} +0 -0
- /package/dist/{get-GEUSRD5Y.js.map → get-EA7AX4NW.js.map} +0 -0
- /package/dist/{get-TS2ZJDCQ.js.map → get-EOSJWMWT.js.map} +0 -0
- /package/dist/{get-JIZPYK3Z.js.map → get-HVQHHDW6.js.map} +0 -0
- /package/dist/{get-3MTAVNTP.js.map → get-KQLCVQCK.js.map} +0 -0
- /package/dist/{get-PF3HGECD.js.map → get-NAOMB6Q2.js.map} +0 -0
- /package/dist/{get-5SPNAIUQ.js.map → get-XYJBQFIT.js.map} +0 -0
- /package/dist/{get-AHI247JG.js.map → get-XZ7XPXZE.js.map} +0 -0
- /package/dist/{gif-NP6EDGEE.js.map → gif-XJ26IWAP.js.map} +0 -0
- /package/dist/{google-ZVAIFXQZ.js.map → google-QOKWSPOA.js.map} +0 -0
- /package/dist/{google-ads-6Z7P3SCD.js.map → google-ads-B4FBPQ7O.js.map} +0 -0
- /package/dist/{group-3DT4UYSR.js.map → group-7EYM3PNJ.js.map} +0 -0
- /package/dist/{group-OEKKCFXT.js.map → group-GDTEICRY.js.map} +0 -0
- /package/dist/{gsc-4FEFPFPB.js.map → gsc-KVIAZMF4.js.map} +0 -0
- /package/dist/{history-VKRYKQ4C.js.map → history-22YGILIT.js.map} +0 -0
- /package/dist/{history-4QUV45ZJ.js.map → history-E3JGYADF.js.map} +0 -0
- /package/dist/{history-PD7FCTDD.js.map → history-HKCSYH5L.js.map} +0 -0
- /package/dist/{hubspot-WEFAFKVJ.js.map → hubspot-LEW2RP5D.js.map} +0 -0
- /package/dist/{icon-43UJTGGE.js.map → icon-JLVEYF34.js.map} +0 -0
- /package/dist/{ideas-SMSEXKIA.js.map → ideas-JAIU4GC4.js.map} +0 -0
- /package/dist/{images-KAT4BPYV.js.map → images-ZG6RRAEP.js.map} +0 -0
- /package/dist/{improve-IMXQN6OD.js.map → improve-XSHWCMZS.js.map} +0 -0
- /package/dist/{ingest-IHKTSJ4H.js.map → ingest-GTXBGUNQ.js.map} +0 -0
- /package/dist/{ingest-TOHQ6MZA.js.map → ingest-SX7K6GNE.js.map} +0 -0
- /package/dist/{insights-3IPSEBYW.js.map → insights-IVUUWSQL.js.map} +0 -0
- /package/dist/{insights-BR3456EI.js.map → insights-PJPQB46E.js.map} +0 -0
- /package/dist/{inspect-5MZBPDYS.js.map → inspect-55BXSPJG.js.map} +0 -0
- /package/dist/{inspiration-XZI5KCQW.js.map → inspiration-NBOKHPZ5.js.map} +0 -0
- /package/dist/{intent-ZM4K623V.js.map → intent-KSVTHFFE.js.map} +0 -0
- /package/dist/{job-GOX3KIKG.js.map → job-4VXDCYSG.js.map} +0 -0
- /package/dist/{job-create-F2PQSN3C.js.map → job-create-NZEZDOZT.js.map} +0 -0
- /package/dist/{job-status-3FMA5D7T.js.map → job-status-XI3ENS7D.js.map} +0 -0
- /package/dist/{keep-23ZYMWPG.js.map → keep-UYNOC3JZ.js.map} +0 -0
- /package/dist/{keyword-gap-FAAF2I6V.js.map → keyword-gap-7UVDSID5.js.map} +0 -0
- /package/dist/{keyword-metrics-EXNJRJBY.js.map → keyword-metrics-QFRXZRAQ.js.map} +0 -0
- /package/dist/{keywords-for-site-5LW77QWF.js.map → keywords-for-site-Q4BCJ4PQ.js.map} +0 -0
- /package/dist/{knowledge-7M7DSRF3.js.map → knowledge-LVE3J3AK.js.map} +0 -0
- /package/dist/{landing-ZH4SD3DW.js.map → landing-AJYM5GBY.js.map} +0 -0
- /package/dist/{landings-VNQ4VA2U.js.map → landings-SIN3MTUZ.js.map} +0 -0
- /package/dist/{languages-ZGDTERIQ.js.map → languages-AIASAINW.js.map} +0 -0
- /package/dist/{languages-2X22HXM3.js.map → languages-RDR6EBNJ.js.map} +0 -0
- /package/dist/{launches-L4EUROCJ.js.map → launches-4TVHXAZT.js.map} +0 -0
- /package/dist/{layerize-6QHQMA7Q.js.map → layerize-OLVGZRND.js.map} +0 -0
- /package/dist/{lead-routes-5TPFJEVH.js.map → lead-routes-ZOQDPCR3.js.map} +0 -0
- /package/dist/{leads-736RILZN.js.map → leads-YSDLFBHN.js.map} +0 -0
- /package/dist/{learn-BESXWXEN.js.map → learn-FDQZNIP3.js.map} +0 -0
- /package/dist/{library-MNJC24E4.js.map → library-7CLWRDM3.js.map} +0 -0
- /package/dist/{lighthouse-DJMAXFTD.js.map → lighthouse-3ACQ3MVG.js.map} +0 -0
- /package/dist/{line-item-writes-FA72DHNQ.js.map → line-item-writes-JARN73DV.js.map} +0 -0
- /package/dist/{line-items-XVYE3IYT.js.map → line-items-B5GLDAJ2.js.map} +0 -0
- /package/dist/{link-6FPKFVC3.js.map → link-YAZF34BZ.js.map} +0 -0
- /package/dist/{linkedin-person-TZJ6VEXE.js.map → linkedin-person-XDH7Q3PB.js.map} +0 -0
- /package/dist/{list-537S75BZ.js.map → list-6NYRZXKQ.js.map} +0 -0
- /package/dist/{list-WIXQXNKB.js.map → list-6WISGNQ2.js.map} +0 -0
- /package/dist/{list-Q52FPW3H.js.map → list-6YBIWX44.js.map} +0 -0
- /package/dist/{list-4R5EMKUQ.js.map → list-72JQGWNO.js.map} +0 -0
- /package/dist/{list-ORO4WDF4.js.map → list-FX7OG3OJ.js.map} +0 -0
- /package/dist/{list-2277GCPH.js.map → list-ITPBLMV3.js.map} +0 -0
- /package/dist/{list-XK33NCSC.js.map → list-J43GOBOX.js.map} +0 -0
- /package/dist/{list-V4PSDBLX.js.map → list-K4Z3BOWI.js.map} +0 -0
- /package/dist/{list-MN2FPF3T.js.map → list-ONSYTCX2.js.map} +0 -0
- /package/dist/{locations-A65MFB7Q.js.map → locations-UNSREUBX.js.map} +0 -0
- /package/dist/{locations-WN6B3IJK.js.map → locations-XAC3GME3.js.map} +0 -0
- /package/dist/{log-ABBZLPRU.js.map → log-PPNNFETI.js.map} +0 -0
- /package/dist/{logo-4LSFZ3ZO.js.map → logo-UNVIMA4B.js.map} +0 -0
- /package/dist/{lookup-WIM5WR25.js.map → lookup-L5QG3BWH.js.map} +0 -0
- /package/dist/{map-52P35OKE.js.map → map-QILMIKS7.js.map} +0 -0
- /package/dist/{mcp-PZ3VBIF4.js.map → mcp-GOKFM4PF.js.map} +0 -0
- /package/dist/{media-KKI3KWLR.js.map → media-BN6B75NF.js.map} +0 -0
- /package/dist/{media-34I7UB7Z.js.map → media-YDDWV32Y.js.map} +0 -0
- /package/dist/{media-sources-TT374PLN.js.map → media-sources-HABLVJE3.js.map} +0 -0
- /package/dist/{members-CF6VG6ZW.js.map → members-B4UI6ISY.js.map} +0 -0
- /package/dist/{meme-6NFYFQ7T.js.map → meme-2MERLAVW.js.map} +0 -0
- /package/dist/{meta-2UK7KIE4.js.map → meta-7FJQD44L.js.map} +0 -0
- /package/dist/{metrics-3U3ZO2RF.js.map → metrics-SBKBEZJR.js.map} +0 -0
- /package/dist/{models-VOSJJFO2.js.map → models-ZBLBNNEH.js.map} +0 -0
- /package/dist/{normalize-G75RDSE4.js.map → normalize-5WVEQJXD.js.map} +0 -0
- /package/dist/{normalize-4LZCLMTQ.js.map → normalize-YPQBHWYS.js.map} +0 -0
- /package/dist/{options-6IRL7CL6.js.map → options-BV3TVUCK.js.map} +0 -0
- /package/dist/{organization-WMLLJE66.js.map → organization-4OTGNRHP.js.map} +0 -0
- /package/dist/{output-ELEO2Z6R.js.map → output-FX4KJAO5.js.map} +0 -0
- /package/dist/{page-4X6IBUWG.js.map → page-5KWQ7PM3.js.map} +0 -0
- /package/dist/{pages-7HW5YOZV.js.map → pages-HKTAGXH3.js.map} +0 -0
- /package/dist/{performance-A7CYFBW2.js.map → performance-4MWQVTTA.js.map} +0 -0
- /package/dist/{performance-HYSTXLTS.js.map → performance-TKE7NQF6.js.map} +0 -0
- /package/dist/{pinterest-KA6VFDM4.js.map → pinterest-UDX53CWY.js.map} +0 -0
- /package/dist/{pixels-D5HF24FI.js.map → pixels-BSNCVT77.js.map} +0 -0
- /package/dist/{pixels-U6UA662G.js.map → pixels-TR2PAYWV.js.map} +0 -0
- /package/dist/{plan-XCA6R3HZ.js.map → plan-V57AATQ5.js.map} +0 -0
- /package/dist/{posts-ALGM6ONV.js.map → posts-JHMXNHDV.js.map} +0 -0
- /package/dist/{preview-55TRUF4Q.js.map → preview-VY7UH2SK.js.map} +0 -0
- /package/dist/{preview-76ZP2QA3.js.map → preview-XUG4K4KV.js.map} +0 -0
- /package/dist/{profile-NHUPUCBR.js.map → profile-PV3R3BEG.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-I5G4IDL5.js.map → promoted-tweet-writes-O3S5OKUZ.js.map} +0 -0
- /package/dist/{promoted-tweets-X5XNO7IT.js.map → promoted-tweets-4ZKSEC4I.js.map} +0 -0
- /package/dist/{properties-2ZXA5BPJ.js.map → properties-U2XUD2M6.js.map} +0 -0
- /package/dist/{publish-S2Z4EF4H.js.map → publish-4RAYD7VI.js.map} +0 -0
- /package/dist/{query-SAQADBM2.js.map → query-4C6UQN42.js.map} +0 -0
- /package/dist/{query-63CTX2PH.js.map → query-7FWE7GLV.js.map} +0 -0
- /package/dist/{query-DMWY3TDD.js.map → query-7Y2Y6YFI.js.map} +0 -0
- /package/dist/{questionnaire-WHE42RD4.js.map → questionnaire-3IPJXJT7.js.map} +0 -0
- /package/dist/{read-NESEKULG.js.map → read-WEQLEI7R.js.map} +0 -0
- /package/dist/{reddit-S2L5WDY7.js.map → reddit-2FWCB7XY.js.map} +0 -0
- /package/dist/{refresh-K2YTJSH3.js.map → refresh-SGDB4QOD.js.map} +0 -0
- /package/dist/{refresh-ILDEPU5A.js.map → refresh-WZBVPKWE.js.map} +0 -0
- /package/dist/{release-FX76IIVN.js.map → release-YL3ZII3Z.js.map} +0 -0
- /package/dist/{relevant-pages-KTSODNNW.js.map → relevant-pages-PF3LLUED.js.map} +0 -0
- /package/dist/{remove-NHE4UT7G.js.map → remove-52MSQXSW.js.map} +0 -0
- /package/dist/{remove-LOVWPLDO.js.map → remove-EIV7LJUA.js.map} +0 -0
- /package/dist/{reopen-DXV2Y6Z3.js.map → reopen-CW27MUJH.js.map} +0 -0
- /package/dist/{research-7PGDAKC7.js.map → research-234BOCKM.js.map} +0 -0
- /package/dist/{research-HY5PSUCC.js.map → research-RABLL4HR.js.map} +0 -0
- /package/dist/{reset-Y5VZJRDQ.js.map → reset-5KJDDVJL.js.map} +0 -0
- /package/dist/{reset-MEHUQJA4.js.map → reset-REUL47CB.js.map} +0 -0
- /package/dist/{resolve-FAVABEJW.js.map → resolve-WRDEHLYL.js.map} +0 -0
- /package/dist/{retry-OMJ3C3AX.js.map → retry-2A5HV4SN.js.map} +0 -0
- /package/dist/{retry-5IY4MNDW.js.map → retry-FNT2XVH3.js.map} +0 -0
- /package/dist/{retry-failed-R5HPQ3KQ.js.map → retry-failed-ND7UXYTJ.js.map} +0 -0
- /package/dist/{rules-FYVD2QBB.js.map → rules-2CUG2YG7.js.map} +0 -0
- /package/dist/{run-LJVBH3JS.js.map → run-RKLNKV2U.js.map} +0 -0
- /package/dist/{run-XJBWDWN6.js.map → run-YKGN3GQR.js.map} +0 -0
- /package/dist/{schedule-D7EDEM45.js.map → schedule-774JCRVM.js.map} +0 -0
- /package/dist/{schedule-OX5XHXLH.js.map → schedule-PKKSZ5RX.js.map} +0 -0
- /package/dist/{scheduled-agents-A5ZFQB5X.js.map → scheduled-agents-ZI3EWKAT.js.map} +0 -0
- /package/dist/{schema-NTGHAPR2.js.map → schema-BXNL4LKR.js.map} +0 -0
- /package/dist/{schema-Z43AJOJ4.js.map → schema-GFMVUZL2.js.map} +0 -0
- /package/dist/{scrape-VL2RWSTW.js.map → scrape-KKLE4WAU.js.map} +0 -0
- /package/dist/{screenshot-Y6EEXS3Q.js.map → screenshot-K6XOER6Z.js.map} +0 -0
- /package/dist/{search-TXBYKNQC.js.map → search-43ULIJL3.js.map} +0 -0
- /package/dist/{search-CXC7N5XJ.js.map → search-AXUNJUWY.js.map} +0 -0
- /package/dist/{search-XHSTUBDY.js.map → search-DLLJEYMB.js.map} +0 -0
- /package/dist/{search-L3GTZYRW.js.map → search-LWWTXBB2.js.map} +0 -0
- /package/dist/{search-JEXYEAPQ.js.map → search-VU6GI3U3.js.map} +0 -0
- /package/dist/{search-WCXQBMMM.js.map → search-XO365KES.js.map} +0 -0
- /package/dist/{search-copy-FIPG7OCC.js.map → search-copy-BHNLLCUV.js.map} +0 -0
- /package/dist/{seeds-ADJKURNG.js.map → seeds-6ROVZBFB.js.map} +0 -0
- /package/dist/{sends-RS4LWRAC.js.map → sends-P6OPCYH5.js.map} +0 -0
- /package/dist/{sequences-2RPKDKGQ.js.map → sequences-DP4BHM3E.js.map} +0 -0
- /package/dist/{setup-links-4HCSF55G.js.map → setup-links-T5TJZA3E.js.map} +0 -0
- /package/dist/{shared-4GGUIOF2.js.map → shared-24IPELBM.js.map} +0 -0
- /package/dist/{shopify-GDR5WGHH.js.map → shopify-OQEKI7HC.js.map} +0 -0
- /package/dist/{site-B7LT6KAO.js.map → site-QRLBZPEV.js.map} +0 -0
- /package/dist/{sitemaps-Z6IELTQV.js.map → sitemaps-SWADO4SI.js.map} +0 -0
- /package/dist/{sites-KLAKI2EY.js.map → sites-H3FYJQFO.js.map} +0 -0
- /package/dist/{skills-OJP36EVR.js.map → skills-OYO6Y3DQ.js.map} +0 -0
- /package/dist/{sources-OSUXCLID.js.map → sources-U2WRH6D7.js.map} +0 -0
- /package/dist/{sources-6DPUEROC.js.map → sources-Y2BKZVXA.js.map} +0 -0
- /package/dist/{stats-MIMFX4R7.js.map → stats-TTJHXR3E.js.map} +0 -0
- /package/dist/{status-KIC3P5JV.js.map → status-4BSXND3I.js.map} +0 -0
- /package/dist/{sticker-IREEEN7I.js.map → sticker-CRIAIO75.js.map} +0 -0
- /package/dist/{stock-VWFUFRYV.js.map → stock-TOFKLWSR.js.map} +0 -0
- /package/dist/{studies-YGYAH3JI.js.map → studies-VFNWS6ND.js.map} +0 -0
- /package/dist/{studio-XLC37YGX.js.map → studio-WD364TWB.js.map} +0 -0
- /package/dist/{suggest-5RTISDLI.js.map → suggest-GX4IROQN.js.map} +0 -0
- /package/dist/{sync-OHIXI4I6.js.map → sync-BU7HU3FS.js.map} +0 -0
- /package/dist/{sync-QBW4XH2H.js.map → sync-GQL5JX4U.js.map} +0 -0
- /package/dist/{sync-VCAFAYW4.js.map → sync-VNBBOVBU.js.map} +0 -0
- /package/dist/{sync-definition-4KMJK46H.js.map → sync-definition-EOARPSBS.js.map} +0 -0
- /package/dist/{tag-DSCUKNC3.js.map → tag-SQ5ROLTP.js.map} +0 -0
- /package/dist/{tag-manager-IINALUEJ.js.map → tag-manager-7S7PVYIJ.js.map} +0 -0
- /package/dist/{tags-7RKKCQ4X.js.map → tags-2226Q3VK.js.map} +0 -0
- /package/dist/{tags-4F5UBPYG.js.map → tags-7QIBFIBX.js.map} +0 -0
- /package/dist/{tags-QZJIP4LJ.js.map → tags-BNWKAV3H.js.map} +0 -0
- /package/dist/{tags-CB4MWI3A.js.map → tags-HG5EBHSO.js.map} +0 -0
- /package/dist/{tags-4O5FPEEY.js.map → tags-WTN4EBT5.js.map} +0 -0
- /package/dist/{targeting-constants-54S3FXIF.js.map → targeting-constants-6KZXMRNI.js.map} +0 -0
- /package/dist/{targeting-criteria-65UU7EYD.js.map → targeting-criteria-QSCRW75G.js.map} +0 -0
- /package/dist/{targets-T742OPQI.js.map → targets-3KT3DO6O.js.map} +0 -0
- /package/dist/{terms-OFHNLW6U.js.map → terms-IRLEAMIY.js.map} +0 -0
- /package/dist/{testimonials-HKJJXONO.js.map → testimonials-35FTFNQ5.js.map} +0 -0
- /package/dist/{top-companies-T6AMU4C6.js.map → top-companies-JAWMSK2Q.js.map} +0 -0
- /package/dist/{transcript-DOUYMZAP.js.map → transcript-OIYU7F4E.js.map} +0 -0
- /package/dist/{triggers-EYY4GSUL.js.map → triggers-7QRQFTVM.js.map} +0 -0
- /package/dist/{tweets-TRTXC6O4.js.map → tweets-7XVF7PJO.js.map} +0 -0
- /package/dist/{unfollow-DATOGPLZ.js.map → unfollow-ZCP6D2SC.js.map} +0 -0
- /package/dist/{unlink-JNM4WRZK.js.map → unlink-PYCYTYVN.js.map} +0 -0
- /package/dist/{unstage-QF4JT5YP.js.map → unstage-2OUF6ELM.js.map} +0 -0
- /package/dist/{unstage-LLQCMZ5H.js.map → unstage-YADONHH6.js.map} +0 -0
- /package/dist/{update-SD5YQIJC.js.map → update-DEBDSBDI.js.map} +0 -0
- /package/dist/{update-J4DURR4K.js.map → update-IDUSNDOI.js.map} +0 -0
- /package/dist/{update-6V3RBRIE.js.map → update-NG3HUYZZ.js.map} +0 -0
- /package/dist/{update-J7Y6LZC5.js.map → update-P5IT7AIN.js.map} +0 -0
- /package/dist/{update-MQ4NYIU6.js.map → update-U6NU7OXI.js.map} +0 -0
- /package/dist/{upload-CEIYYPID.js.map → upload-4F2JICEH.js.map} +0 -0
- /package/dist/{upload-7PPMVWVA.js.map → upload-SS64KHDS.js.map} +0 -0
- /package/dist/{upscale-WVJZG76V.js.map → upscale-JNNXDN6X.js.map} +0 -0
- /package/dist/{url-options-6WC2XQKB.js.map → url-options-EDPKAPPP.js.map} +0 -0
- /package/dist/{url-params-OVBIP6UA.js.map → url-params-4G26OEOO.js.map} +0 -0
- /package/dist/{use-6FADOAFZ.js.map → use-TKFP6WVP.js.map} +0 -0
- /package/dist/{variant-RNM36P4J.js.map → variant-3VTKOQUR.js.map} +0 -0
- /package/dist/{videos-GHFCOTT7.js.map → videos-EDTBHLOZ.js.map} +0 -0
- /package/dist/{videos-Z72RXCRB.js.map → videos-JRNJH66J.js.map} +0 -0
- /package/dist/{view-YR6MDLWL.js.map → view-6HX3FYMS.js.map} +0 -0
- /package/dist/{viewer-check-655BZRML.js.map → viewer-check-OBBBAYV5.js.map} +0 -0
- /package/dist/{web-4QN6QB7L.js.map → web-GPUEUIDT.js.map} +0 -0
- /package/dist/{winners-4T5RFQXU.js.map → winners-MEC77MZ4.js.map} +0 -0
- /package/dist/{winning-ads-2J2RIOLR.js.map → winning-ads-2DECFON4.js.map} +0 -0
- /package/dist/{write-commands-UO3OQIHH.js.map → write-commands-D5M5A4YI.js.map} +0 -0
- /package/dist/{write-commands-6D55SB56.js.map → write-commands-LQVERLAQ.js.map} +0 -0
- /package/dist/{x-7KXNCWTJ.js.map → x-4TM5RET4.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/copy-tells/detect.ts","../src/engine/landing/lib/constants.ts","../src/engine/landing/lib/rules.ts","../src/commands/landing/source-version.ts"],"sourcesContent":["/**\n * AI copy tells — pure detection over a piece of copy.\n *\n * Shared by two real callers with different stakes: `baker landing critique`\n * (rolls findings into the `copy` family and the pre-commit gate) and the\n * `baker ads` staged writes (emit `hints[]`, never block — a false positive that\n * refuses an ad is worse than a tell that ships). So this module reports RAW\n * COUNTS and never decides severity. Thresholds belong to the caller.\n *\n * Every function is pure and total: text in, findings out, never throws.\n *\n * Only the tells that are a shape live here. The ones that read the words (an opener, a pivot,\n * a vague attribution…) are asked of the decision model in any language: `questions.ts`.\n */\n\nimport { type CopyTellId, STACCATO_MAX_WORDS, STACCATO_RUN } from \"./patterns.ts\";\nimport { rawSentences, wordCount } from \"./sentences.ts\";\n\nexport type CopyTell = {\n id: CopyTellId;\n /** How many times the tell fired. Callers gate on this. */\n count: number;\n /** The first match, trimmed for display in a hint or a critique snippet. */\n sample: string;\n};\n\nconst SAMPLE_MAX = 60;\n\nfunction sample(text: string): string {\n const clean = text.replace(/\\s+/g, \" \").trim();\n return clean.length <= SAMPLE_MAX ? clean : `${clean.slice(0, SAMPLE_MAX)}…`;\n}\n\n/** Staccato drama (§31): a run of very short sentences manufacturing weight. */\nfunction countStaccato(text: string): { count: number; first: string } {\n // Headings are labels, not sentences: a run of section titles is not drama.\n const prose = text\n .split(\"\\n\")\n .filter((line) => !/^\\s{0,3}#{1,6}\\s/.test(line))\n .join(\" \");\n const sentences = rawSentences(prose);\n let run = 0;\n let count = 0;\n let first = \"\";\n let runStart = 0;\n for (const [i, s] of sentences.entries()) {\n const words = wordCount(s);\n if (words > 0 && words <= STACCATO_MAX_WORDS) {\n if (run === 0) runStart = i;\n run++;\n if (run === STACCATO_RUN) {\n count++;\n if (!first) first = sentences.slice(runStart, i + 1).join(\" \");\n }\n } else {\n run = 0;\n }\n }\n return { count, first };\n}\n\n/** Title Case in a heading (§17). A stronger tell in Spanish, where the\n * convention does not exist at all. Needs ≥4 words so \"Cómo Funciona\" and\n * proper nouns in a short heading don't fire. */\nfunction countTitleCaseHeadings(text: string): { count: number; first: string } {\n let count = 0;\n let first = \"\";\n for (const m of text.matchAll(/^\\s{0,3}#{1,6}\\s+(.+)$/gm)) {\n const heading = (m[1] ?? \"\").trim();\n const words = heading.split(/\\s+/).filter((w) => /\\p{L}/u.test(w));\n if (words.length < 4) continue;\n const capitalized = words.filter((w) => /^\\p{Lu}/u.test(w)).length;\n if (capitalized / words.length < 0.8) continue;\n count++;\n if (!first) first = heading;\n }\n return { count, first };\n}\n\n/** Inline-header vertical lists (§16): `- **Speed:** it is fast.` */\nfunction countInlineHeaderList(text: string): { count: number; first: string } {\n const matches = [...text.matchAll(/^\\s*(?:[-*+]|\\d+\\.)\\s+\\*\\*[^*\\n]{2,40}:?\\*\\*:?\\s/gm)];\n if (matches.length < 3) return { count: 0, first: \"\" };\n return { count: matches.length, first: (matches[0]?.[0] ?? \"\").trim() };\n}\n\n// Written as an alternation rather than one class: U+FE0F is a combining\n// variation selector, and a class that mixes it with base characters matches\n// the pair as one character, undercounting a page's emoji.\nconst EMOJI = /[\\u{1F300}-\\u{1FAFF}]|[\\u{2600}-\\u{27BF}]|[\\u{1F000}-\\u{1F2FF}]|\\u{FE0F}/gu;\nconst CURLY = /[‘’“”]/g;\n\nfunction countPattern(text: string, re: RegExp): { count: number; first: string } {\n const matches = text.match(re) ?? [];\n return { count: matches.length, first: matches.join(\"\") };\n}\n\n/**\n * The AI copy tells that are a SHAPE of the copy rather than a reading of its words: a run of\n * very short sentences, Title Case in a heading, an inline-header list, curly quotes, emoji. Each\n * holds in any language. The tells that read the words are the decision model's\n * (`questions.ts`). One entry per tell that fired, with a raw count and a sample.\n *\n * `text` should already be plain copy — the landing caller strips markup first.\n */\nexport function structuralCopyTells(text: string): CopyTell[] {\n if (!text.trim()) return [];\n\n const results: Array<[CopyTellId, { count: number; first: string }]> = [\n [\"staccato-drama\", countStaccato(text)],\n [\"title-case-heading\", countTitleCaseHeadings(text)],\n [\"inline-header-list\", countInlineHeaderList(text)],\n [\"curly-quote\", countPattern(text, CURLY)],\n [\"emoji\", countPattern(text, EMOJI)],\n ];\n\n return results\n .filter(([, result]) => result.count > 0)\n .map(([id, result]) => ({ id, count: result.count, sample: sample(result.first) }));\n}\n","/**\n * Landing anti-slop detector — constants.\n *\n * Reimplemented (with sense) from impeccable's deterministic detector\n * (Apache-2.0, github.com/pbakaus/impeccable — `cli/engine/shared/constants.mjs`\n * + `cli/engine/engines/regex/detect-text.mjs`). The thresholds and word lists\n * are the load-bearing facts; the code is Baker-native TypeScript and folds into\n * our landing/brand model (BRAND.md is the allowlist — see `brand-tokens.ts`).\n *\n * Everything here is a plain constant so the rules stay pure and testable.\n */\n\n/** Rendered severity of a finding. `block` fails the verify gate; `warn` prints\n * a non-blocking WARNING; `advisory` is taste-level (and where brand-matched\n * values land after the allowlist downgrades them). */\nexport type Severity = \"block\" | \"warn\" | \"advisory\";\n\n/** The design family a rule belongs to — rolled up into the report's dimensions\n * so the score reads like the canvas critic (one 0–1 score per family). */\nexport type Family = \"typography\" | \"color\" | \"borders_depth\" | \"motion\" | \"spacing\" | \"copy\" | \"integrity\";\n\n/**\n * Faces that signal \"a model made this\" — the training-data monoculture. Naming\n * one requires a reason no other face could satisfy; a subject association\n * (books→serif, tech→mono) is never that reason. Suppressed when the client's\n * BRAND.md commits the face (then it's a decision, not a tell).\n *\n * Entries match a declared family exactly OR as a word-boundary prefix (via\n * `isOverusedFont`), so \"crimson\" covers Crimson Text/Pro and \"ibm plex\" covers\n * every IBM Plex cut.\n */\nexport const OVERUSED_FONTS = new Set<string>([\n // Older monoculture (still ubiquitous):\n \"inter\",\n \"roboto\",\n \"open sans\",\n \"lato\",\n \"montserrat\",\n \"arial\",\n \"helvetica\",\n // Newer monoculture (the Anthropic-skill / Vercel / GitHub default wave):\n \"fraunces\",\n \"instrument sans\",\n \"instrument serif\",\n \"geist\",\n \"geist sans\",\n \"geist mono\",\n \"mona sans\",\n \"plus jakarta sans\",\n \"space grotesk\",\n \"space mono\",\n \"recoleta\",\n \"dm sans\",\n \"dm serif display\",\n \"dm serif text\",\n \"outfit\",\n \"syne\",\n \"cormorant\",\n \"playfair display\",\n \"lora\",\n \"crimson\",\n \"newsreader\",\n \"ibm plex\",\n \"ibm plex sans\",\n \"ibm plex serif\",\n]);\n\n/** Exact or word-boundary-prefix match against `OVERUSED_FONTS` (\"crimson\" hits\n * \"crimson text\"; \"inter\" does NOT hit \"interstate\"). */\nexport function isOverusedFont(family: string): boolean {\n if (OVERUSED_FONTS.has(family)) return true;\n for (const entry of OVERUSED_FONTS) if (family.startsWith(`${entry} `)) return true;\n return false;\n}\n\n/** Generic / system tokens that never count as a \"font choice\". */\nexport const GENERIC_FONTS = new Set<string>([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"-apple-system\",\n \"blinkmacsystemfont\",\n \"segoe ui\",\n \"inherit\",\n \"initial\",\n \"unset\",\n \"revert\",\n]);\n\n/** Em-dash overuse: two gates — an absolute floor AND a density (one dash per\n * N chars of body text). A long article with a few dashes never fires. */\nexport const EM_DASH_FLOOR = 8;\nexport const EM_DASH_CHARS_PER_DASH = 500;\n\n/** Tailwind text-size → px, so the flat-hierarchy analyzer sees utility sizing. */\nexport const TAILWIND_TEXT_PX: Record<string, number> = {\n \"text-xs\": 12,\n \"text-sm\": 14,\n \"text-base\": 16,\n \"text-lg\": 18,\n \"text-xl\": 20,\n \"text-2xl\": 24,\n \"text-3xl\": 30,\n \"text-4xl\": 36,\n \"text-5xl\": 48,\n \"text-6xl\": 60,\n \"text-7xl\": 72,\n \"text-8xl\": 96,\n \"text-9xl\": 128,\n};\n\n/**\n * AI copy tells (see `engine/copy-tells/`) promoted into landing findings, with\n * the count each needs before it fires and the severity it carries.\n *\n * The gates are the load-bearing part. Wikipedia's guide — and the `humanizer`\n * skill built on it — is explicit that isolated tells prove nothing and only\n * CLUSTERS are evidence, so almost everything here needs ≥2 occurrences on the\n * page. Two exceptions, in opposite directions:\n * - `chat-artifact` fires at 1. \"Here is an overview… let me know if\" is never\n * legitimate shipped copy; it means the agent pasted its own conversational\n * frame into the page.\n * - `curly-quote` is absent on purpose. macOS, Word, Google Docs and most\n * CMSes auto-curl by default, so it carries no signal on its own and would\n * fire on almost every page a human touched.\n *\n * Nothing here is `block`: these are strong-but-fallible prose tells, and the\n * pre-commit gate only fails on block-tier findings. Copy judgment stays with\n * the agent and the finish reviewer; this layer just makes the tell visible.\n */\nexport const COPY_TELL_GATES: Record<string, { minCount: number; severity: Severity }> = {\n \"chat-artifact\": { minCount: 1, severity: \"warn\" },\n \"rhetorical-opener\": { minCount: 2, severity: \"warn\" },\n \"negation-pivot\": { minCount: 2, severity: \"warn\" },\n \"vague-attribution\": { minCount: 2, severity: \"warn\" },\n \"participle-tail\": { minCount: 2, severity: \"advisory\" },\n \"copula-avoidance\": { minCount: 2, severity: \"advisory\" },\n \"authority-trope\": { minCount: 2, severity: \"advisory\" },\n signposting: { minCount: 2, severity: \"advisory\" },\n \"hollow-conclusion\": { minCount: 2, severity: \"advisory\" },\n \"filler-phrase\": { minCount: 2, severity: \"advisory\" },\n \"aphorism-formula\": { minCount: 2, severity: \"advisory\" },\n \"false-range\": { minCount: 2, severity: \"advisory\" },\n \"staccato-drama\": { minCount: 2, severity: \"advisory\" },\n \"title-case-heading\": { minCount: 2, severity: \"advisory\" },\n \"inline-header-list\": { minCount: 3, severity: \"advisory\" },\n emoji: { minCount: 3, severity: \"advisory\" },\n};\n\n/** The banned purple/indigo hero hex literals from the \"AI palette\" cluster. */\nexport const AI_PURPLE_HEXES = new Set<string>([\n \"#7c3aed\",\n \"#8b5cf6\",\n \"#a855f7\",\n \"#9333ea\",\n \"#7e22ce\",\n \"#6d28d9\",\n \"#6366f1\",\n \"#764ba2\",\n \"#667eea\",\n]);\n\n/** Tailwind background utilities that render the cream/parchment AI ground. */\nexport const CREAM_TAILWIND_BG = new Set<string>([\n \"bg-amber-50\",\n \"bg-amber-100\",\n \"bg-orange-50\",\n \"bg-orange-100\",\n \"bg-yellow-50\",\n \"bg-stone-50\",\n \"bg-stone-100\",\n \"bg-stone-200\",\n]);\n\n/**\n * Per-rule metadata: the family it rolls up into, its default severity, and the\n * one-line fix nudge shown to the agent. Severity is per the plan's placement\n * matrix — unambiguous tells `block`, strong-but-fallible tells `warn`, taste\n * `advisory`. Brand-matched values are downgraded to `advisory` in critique.ts.\n */\nexport const RULE_META: Record<\n string,\n { family: Family; severity: Severity; note: string; brandAware?: \"font\" | \"color\" | \"gradient\" }\n> = {\n \"gradient-text\": {\n family: \"color\",\n severity: \"block\",\n note: \"Gradient text is a top AI tell. Emphasis comes from weight or size, not a clipped gradient fill.\",\n brandAware: \"gradient\",\n },\n \"broken-image\": {\n family: \"integrity\",\n severity: \"block\",\n note: \"An <img> with an empty or placeholder src ships a broken image. Source a real asset via `baker images`.\",\n },\n \"competitor-named-in-comparison\": {\n family: \"integrity\",\n severity: \"warn\",\n note: \"A competitor from the vault is named in a comparative sentence outside a comparison table. Naming a rival on paid traffic sells their brand and is the client's decision, not yours — cite the capability, not the company.\",\n },\n \"side-tab\": {\n family: \"borders_depth\",\n severity: \"warn\",\n note: \"A thick colored border on one edge is the 'side-tab' AI tell. Use full borders, a background, or spacing instead.\",\n },\n \"border-accent-on-rounded\": {\n family: \"borders_depth\",\n severity: \"warn\",\n note: \"A colored top/bottom accent bar on a rounded card is an AI tell. Let the card's own surface carry the accent.\",\n },\n \"overused-font\": {\n family: \"typography\",\n severity: \"warn\",\n brandAware: \"font\",\n note: \"This face is a training-data default. Pick a face with a point of view — unless BRAND.md commits it.\",\n },\n \"single-font\": {\n family: \"typography\",\n severity: \"advisory\",\n note: \"Only one face across the page flattens hierarchy. A display/body pair usually reads richer.\",\n },\n \"flat-type-hierarchy\": {\n family: \"typography\",\n severity: \"warn\",\n note: \"Type steps are too close (<2× span). Widen the scale so the primary, secondary, and body are obvious at a glance.\",\n },\n \"ai-color-palette\": {\n family: \"color\",\n severity: \"warn\",\n brandAware: \"color\",\n note: \"Purple/indigo-on-heading or purple→cyan gradients are the AI palette cluster. Commit to the brand's own hues.\",\n },\n \"cream-palette\": {\n family: \"color\",\n severity: \"warn\",\n brandAware: \"color\",\n note: \"Cream/parchment ground is the 'measured rendition' AI default. Rework from the brand's saturated materials.\",\n },\n \"gray-on-color\": {\n family: \"color\",\n severity: \"warn\",\n note: \"Gray text on a colored surface reads muddy. Tint secondary text from the surface hue, never neutral gray.\",\n },\n \"bounce-easing\": {\n family: \"motion\",\n severity: \"warn\",\n note: \"Bounce/elastic easing feels dated. Use natural deceleration (e.g. cubic-bezier(0.16, 1, 0.3, 1)).\",\n },\n \"layout-transition\": {\n family: \"motion\",\n severity: \"advisory\",\n note: \"Transitioning width/height/padding/margin janks. Animate transform/opacity, or clip-path/max-height with care.\",\n },\n \"monotonous-spacing\": {\n family: \"spacing\",\n severity: \"warn\",\n note: \"One spacing value dominates. Create rhythm — tight groups, generous separation, more space above a heading than below.\",\n },\n \"marketing-buzzword\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"SaaS filler ('supercharge your…') is generic. Name names, use numbers, say the specific thing only this product proves.\",\n },\n \"agent-washing\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"The page claims autonomy but never says what the buyer controls. Name what it does on its own, what waits for approval, and what happens when it's wrong.\",\n },\n \"em-dash-overuse\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"Dense em-dashes are an AI cadence tell (and brand copy bans them). Recast with commas, colons, or full stops.\",\n },\n \"chat-artifact\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"Chatbot framing ('Here is an overview…', 'avísame si') leaked into the page. Delete it and state the claim directly.\",\n },\n \"rhetorical-opener\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"Fake-candid openers ('Honestly?', 'La verdad es que') manufacture intimacy before an ordinary claim. Just say the thing.\",\n },\n \"negation-pivot\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"'It's not just X, it's Y' / 'no se trata solo de' is now a louder AI tell than any single word. Cut the setup, keep the claim.\",\n },\n \"vague-attribution\": {\n family: \"copy\",\n severity: \"warn\",\n note: \"'Experts agree' / 'los estudios demuestran' attributes to nobody. Name the source and the year, or drop the claim.\",\n },\n \"participle-tail\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"Participles hung off a comma (', ensuring…', ', permitiendo…') fake depth. End the sentence, or make it a real clause.\",\n },\n \"copula-avoidance\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"'serves as' / 'cuenta con' dodges plain 'is' and 'has'. Use the simple verb — it reads as confidence, not flatness.\",\n },\n \"authority-trope\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"'At its core' / 'en el fondo' pretends to reach a deeper truth before restating an ordinary point. Make the point once.\",\n },\n signposting: {\n family: \"copy\",\n severity: \"advisory\",\n note: \"Announcing the writing ('Let's dive in', 'vamos a ver') instead of doing it. Delete the announcement, keep the content.\",\n },\n \"hollow-conclusion\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"'The future looks bright' / 'las posibilidades son infinitas' asserts nothing. End on a concrete next step or a number.\",\n },\n \"filler-phrase\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"Filler ('in order to', 'cabe destacar que') costs words and says nothing. Cut to the verb.\",\n },\n \"aphorism-formula\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"'X is the currency of Y' sounds profound without adding precision. Replace it with the concrete claim it gestures at.\",\n },\n \"false-range\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"'From onboarding to retention' pairs ends that aren't on a scale. List what you actually cover.\",\n },\n \"staccato-drama\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"A run of very short sentences manufactures drama. One clipped line lands; three in a row read as engineered.\",\n },\n \"title-case-heading\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"Title Case headings are an AI tell — and in Spanish the convention doesn't exist at all. Use sentence case.\",\n },\n \"inline-header-list\": {\n family: \"copy\",\n severity: \"advisory\",\n note: \"'**Speed:** it is fast' bullets are AI list shape. Write the sentence, or let the bullet carry the content directly.\",\n },\n emoji: {\n family: \"copy\",\n severity: \"advisory\",\n note: \"Emoji-decorated copy is a chatbot habit. Let the words and the layout carry the emphasis.\",\n },\n \"dark-glow\": {\n family: \"borders_depth\",\n severity: \"warn\",\n note: \"A zero-offset colored glow is decoration, not depth. Shadows carry an offset and a soft blur.\",\n },\n marquee: {\n family: \"motion\",\n severity: \"warn\",\n note: \"Auto-scrolling marquees are a dated tell. Let the visitor control the pace, or drop the motion.\",\n },\n};\n\n/** Weight subtracted from a family's 1.0 score per finding, by severity. */\nexport const SEVERITY_WEIGHT: Record<Severity, number> = {\n block: 0.5,\n warn: 0.2,\n advisory: 0.05,\n};\n","/**\n * Landing anti-slop detector — pure detection rules.\n *\n * Reimplemented (with sense) from impeccable's `cli/engine/engines/regex/\n * detect-text.mjs` (Apache-2.0). Two kinds of rule:\n * - line matchers: per-line regex tells (side-tab, gradient-text, fonts…)\n * - analyzers: aggregate tells, each `scope`d \"file\" or \"page\" (see below).\n *\n * SCOPE matters for Baker specifically. A landing here is always componentized —\n * `index.astro` + several small `_components/*.astro` — so a count-threshold tell\n * (a single font, a flat type scale, monotonous spacing, em-dash density) would\n * slip through if measured per small file. Those analyzers are `scope: \"page\"`\n * and run on the concatenated page. The `scope: \"file\"` analyzers are the ones\n * that fire at ≥1 or carry a line number (overused-font, glow), so\n * they stay per file for accurate `file:line` attribution.\n *\n * Every rule is pure and total — it takes source text and returns findings, and\n * never throws. None of them reads what the copy SAYS: that is the decision\n * model's job (`copy-judgments.ts`), over the sentences `landingCopy` returns. Severity/notes come from `RULE_META`; the caller (critique.ts)\n * assembles them and applies the BRAND.md allowlist.\n */\n\nimport { structuralCopyTells } from \"../../copy-tells/detect.ts\";\nimport { copySentences } from \"../../copy-tells/sentences.ts\";\nimport { hasChroma, isCreamColor, isNeutralAuthoredColor, parseColor } from \"./color.ts\";\nimport {\n AI_PURPLE_HEXES,\n COPY_TELL_GATES,\n CREAM_TAILWIND_BG,\n EM_DASH_CHARS_PER_DASH,\n EM_DASH_FLOOR,\n GENERIC_FONTS,\n isOverusedFont,\n TAILWIND_TEXT_PX,\n} from \"./constants.ts\";\n\nexport type RawFinding = { id: string; snippet: string; file: string; line?: number };\n\n/** Regex capture-group accessors that satisfy `noUncheckedIndexedAccess`. */\nconst cap = (m: RegExpMatchArray, i: number): string => m[i] ?? \"\";\nconst num = (m: RegExpMatchArray, i: number): number => Number(m[i] ?? 0);\n\nconst hasRounded = (line: string): boolean => /\\brounded(?:-\\w+)?\\b/.test(line) || /border-radius/i.test(line);\nconst isSafeElement = (line: string): boolean =>\n /<(?:blockquote|nav[\\s>]|pre[\\s>]|code[\\s>]|a\\s|input[\\s>]|span[\\s>])/i.test(line);\n/** A Tailwind border colored with a neutral scale is a hairline, not an accent. */\nconst hasNeutralTailwindBorder = (line: string): boolean =>\n /\\bborder-(?:gray|slate|zinc|neutral|stone|white|black|transparent|current|inherit)\\b|\\bborder-(?:gray|slate|zinc|neutral|stone)-\\d+\\b/.test(\n line,\n );\n\nfunction isNeutralBorderColor(str: string): boolean {\n const m = str.match(/solid\\s+((?:rgba?|hsla?|oklch|oklab|lab|lch|hwb|color)\\([^)]*\\)|#[0-9a-f]{3,8}\\b|[a-z]+)/i);\n if (!m) return false;\n return isNeutralAuthoredColor(m[1] ?? \"\");\n}\n\ntype LineMatcher = {\n id: string;\n regex: RegExp;\n test: (m: RegExpMatchArray, line: string) => boolean;\n fmt: (m: RegExpMatchArray, line: string) => string;\n};\n\nconst LINE_MATCHERS: LineMatcher[] = [\n // ── Side-tab: a thick colored border on one edge ──────────────────────────\n {\n id: \"side-tab\",\n regex: /\\bborder-[lrse]-(\\d+)\\b/g,\n test: (m, line) => {\n if (isSafeElement(line) || hasNeutralTailwindBorder(line)) return false;\n return hasRounded(line) ? num(m, 1) >= 2 : num(m, 1) >= 4;\n },\n fmt: (m) => cap(m, 0),\n },\n {\n id: \"side-tab\",\n regex: /border-(?:left|right)\\s*:\\s*(\\d+)px\\s+solid[^;]*/gi,\n test: (m, line) => {\n if (isSafeElement(line)) return false;\n if (isNeutralBorderColor(cap(m, 0))) return false;\n return hasRounded(line) ? num(m, 1) >= 2 : num(m, 1) >= 3;\n },\n fmt: (m) => cap(m, 0).replace(/\\s*;?\\s*$/, \"\"),\n },\n {\n id: \"side-tab\",\n regex: /border-(?:left|right)-width\\s*:\\s*(\\d+)px/gi,\n test: (m, line) => !isSafeElement(line) && num(m, 1) >= 3,\n fmt: (m) => cap(m, 0),\n },\n {\n id: \"side-tab\",\n regex: /border-inline-(?:start|end)(?:-width)?\\s*:\\s*(\\d+)px/gi,\n test: (m, line) => !isSafeElement(line) && num(m, 1) >= 3,\n fmt: (m) => cap(m, 0),\n },\n // ── Border accent on a rounded card (top/bottom colored bar) ──────────────\n {\n id: \"border-accent-on-rounded\",\n regex: /\\bborder-[tb]-(\\d+)\\b/g,\n test: (m, line) => hasRounded(line) && num(m, 1) >= 1 && !hasNeutralTailwindBorder(line),\n fmt: (m) => cap(m, 0),\n },\n {\n id: \"border-accent-on-rounded\",\n regex: /border-(?:top|bottom)\\s*:\\s*(\\d+)px\\s+solid/gi,\n test: (m, line) => num(m, 1) >= 3 && hasRounded(line),\n fmt: (m) => cap(m, 0),\n },\n // ── Gradient text (Tailwind class form; authored-CSS form is the window\n // analyzer below, so a multi-line rule block is still caught) ──────────────\n {\n id: \"gradient-text\",\n regex: /\\bbg-clip-text\\b/g,\n test: (_m, line) =>\n // v3 `bg-gradient-to-*`, v4 `bg-linear-to-*` / `bg-radial*` / `bg-conic*`,\n // and arbitrary-value `bg-[linear-gradient(…)]` spellings.\n /\\bbg-gradient-to-|\\bbg-linear-to-|\\bbg-(?:radial|conic)\\b|\\bbg-\\[(?:linear|radial|conic)-gradient/i.test(line),\n // The stops ride in the snippet so the brand allowlist can read them.\n fmt: (_m, line) => {\n const stops = line.match(/\\b(?:from|via|to)-\\[[^\\]\\s]+\\]|\\bbg-\\[(?:linear|radial|conic)-gradient[^\\]\\s]*\\]/g);\n return stops ? `bg-clip-text + ${stops.join(\" \")}` : \"bg-clip-text + gradient\";\n },\n },\n // ── Gray text on a colored background (Tailwind). Shade ≥ 300 only: a pale\n // tint panel (bg-blue-50 info box) is a normal light ground, not \"on color\". ──\n {\n id: \"gray-on-color\",\n regex: /\\btext-(?:gray|slate|zinc|neutral|stone)-(\\d+)\\b/g,\n test: (_m, line) => {\n const bg = line.match(\n /\\bbg-(?:red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-(\\d+)\\b/,\n );\n return bg !== null && Number(bg[1] ?? 0) >= 300;\n },\n fmt: (m, line) => {\n const bg = line.match(\n /\\bbg-(?:red|orange|amber|yellow|lime|green|emerald|teal|cyan|sky|blue|indigo|violet|purple|fuchsia|pink|rose)-\\d+\\b/,\n );\n return `${cap(m, 0)} on ${bg?.[0] || \"?\"}`;\n },\n },\n // ── AI color palette (Tailwind purple/indigo + banned hero hexes) ─────────\n {\n id: \"ai-color-palette\",\n regex: /\\btext-(?:purple|violet|indigo)-(\\d+)\\b/g,\n test: (_m, line) => /\\btext-(?:[2-9]xl)\\b|<h[1-3]/i.test(line),\n fmt: (m) => `${cap(m, 0)} on heading`,\n },\n {\n id: \"ai-color-palette\",\n regex: /\\bfrom-(?:purple|violet|indigo)-(\\d+)\\b/g,\n test: (_m, line) => /\\bto-(?:purple|violet|indigo|blue|cyan|pink|fuchsia)-\\d+\\b/.test(line),\n fmt: (m) => `${cap(m, 0)} gradient`,\n },\n {\n id: \"ai-color-palette\",\n regex: /#[0-9a-f]{6}\\b/gi,\n test: (m) => AI_PURPLE_HEXES.has(cap(m, 0).toLowerCase()),\n fmt: (m) => `${cap(m, 0)} (AI-cluster purple)`,\n },\n // ── Cream/parchment ground (Tailwind + authored background hex) ───────────\n {\n id: \"cream-palette\",\n regex: /\\bbg-(?:amber|orange|yellow|stone)-(?:50|100|200)\\b/g,\n test: (m) => CREAM_TAILWIND_BG.has(cap(m, 0)),\n fmt: (m) => `${cap(m, 0)} (cream ground)`,\n },\n {\n id: \"cream-palette\",\n regex: /background(?:-color)?\\s*:\\s*(#[0-9a-f]{6}\\b|rgba?\\([^)]+\\))/gi,\n test: (m) => {\n const c = parseColor(cap(m, 1));\n return c !== null && isCreamColor(c);\n },\n fmt: (m) => `${cap(m, 1)} (cream ground)`,\n },\n // ── Bounce / elastic easing ───────────────────────────────────────────────\n {\n id: \"bounce-easing\",\n regex: /\\banimate-bounce\\b/g,\n test: () => true,\n fmt: () => \"animate-bounce (Tailwind)\",\n },\n {\n id: \"bounce-easing\",\n regex: /animation(?:-name)?\\s*:\\s*([^;{}]*(?:bounce|elastic|wobble|jiggle|spring)[^;{}]*)/gi,\n test: () => true,\n fmt: (m) => `animation: ${cap(m, 1).trim()}`,\n },\n {\n id: \"bounce-easing\",\n regex: /cubic-bezier\\(\\s*([\\d.-]+)\\s*,\\s*([\\d.-]+)\\s*,\\s*([\\d.-]+)\\s*,\\s*([\\d.-]+)\\s*\\)/g,\n test: (m) => {\n const y1 = Number.parseFloat(cap(m, 2));\n const y2 = Number.parseFloat(cap(m, 4));\n return y1 < -0.1 || y1 > 1.1 || y2 < -0.1 || y2 > 1.1;\n },\n fmt: (m) => `cubic-bezier(${cap(m, 1)}, ${cap(m, 2)}, ${cap(m, 3)}, ${cap(m, 4)})`,\n },\n // ── Transitioning layout properties (jank) ────────────────────────────────\n {\n id: \"layout-transition\",\n // The lookahead skips Astro's view-transition directives (transition:name=,\n // transition:animate=, transition:persist) — markup idiom, not CSS.\n regex: /transition(?:-property)?\\s*:\\s*(?!name\\s*=|animate\\s*=|persist\\b)([^;{}]+)/gi,\n test: (m) => {\n const val = cap(m, 1).toLowerCase();\n if (/\\ball\\b/.test(val)) return false;\n return /\\b(?:(?:max|min)-)?(?:width|height)\\b|\\bpadding\\b|\\bmargin\\b/.test(val);\n },\n fmt: (m) => {\n const found = cap(m, 1).match(\n /\\b(?:(?:max|min)-)?(?:width|height)\\b|\\bpadding(?:-(?:top|right|bottom|left))?\\b|\\bmargin(?:-(?:top|right|bottom|left))?\\b/gi,\n );\n return `transition: ${found ? found.join(\", \") : cap(m, 1).trim()}`;\n },\n },\n // ── Broken image ──────────────────────────────────────────────────────────\n {\n id: \"broken-image\",\n regex: /<img\\b[^>]*?\\bsrc\\s*=\\s*(?:\"\"|''|\"\\s+\"|'\\s+'|\"#\"|'#')/gi,\n test: () => true,\n fmt: (m) => cap(m, 0).slice(0, 100),\n },\n {\n id: \"broken-image\",\n regex: /<img\\b(?:(?!\\bsrc\\s*=)[^>])*>/gi,\n test: (m) => !/\\bsrc\\s*=/i.test(cap(m, 0)),\n fmt: (m) => cap(m, 0).slice(0, 100),\n },\n];\n\n/**\n * Lowercase and strip diacritics, so one pattern covers \"más\" and \"mas\",\n * \"não\" and \"nao\". Length is preserved (NFD marks are dropped, not the letters\n * they sit on), which keeps match offsets usable for line attribution.\n */\nfunction foldForCopy(text: string): string {\n return text\n .toLowerCase()\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\");\n}\n\n/** Strip tags/script/style/comments so copy analyzers don't read code. */\nfunction stripHtmlToText(html: string): string {\n return html\n .replace(/<script\\b[^>]*>[\\s\\S]*?<\\/script>/gi, \" \")\n .replace(/<style\\b[^>]*>[\\s\\S]*?<\\/style>/gi, \" \")\n .replace(/<!--[\\s\\S]*?-->/g, \" \")\n .replace(/<[^>]+>/g, \" \")\n .replace(/\\s+/g, \" \");\n}\n\n/**\n * Like `stripHtmlToText`, but rewrites `<h1>…<h6>` as markdown headings and\n * keeps block boundaries as newlines. The shared copy-tell detector reads\n * headings in markdown shape (it also serves markdown surfaces), and heading\n * *form* carries two tells — Title Case and, in Spanish, capitalization that\n * the language has no convention for. Flattening the page to one line the way\n * `stripHtmlToText` does would erase both, and would also let a run of short\n * sentences across three sections read as one staccato passage.\n */\nfunction stripHtmlPreservingHeadings(html: string): string {\n return html\n .replace(/<script\\b[^>]*>[\\s\\S]*?<\\/script>/gi, \" \")\n .replace(/<style\\b[^>]*>[\\s\\S]*?<\\/style>/gi, \" \")\n .replace(/<!--[\\s\\S]*?-->/g, \" \")\n .replace(\n /<h([1-6])\\b[^>]*>([\\s\\S]*?)<\\/h\\1>/gi,\n (_all, _lvl, inner) =>\n `\\n## ${String(inner)\n .replace(/<[^>]+>/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim()}\\n`,\n )\n .replace(/<\\/(?:p|div|section|li|tr|br)>|<br\\s*\\/?>/gi, \"\\n\")\n .replace(/<[^>]+>/g, \" \")\n .replace(/[ \\t]+/g, \" \")\n .replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\n/**\n * Does this string literal read as copy a visitor will see, rather than code?\n *\n * The bar is deliberately high. A false negative costs one missed tell; a false\n * positive puts an import path or a Tailwind class list in front of every copy\n * rule on the page, and those rules are what the publish gate reads.\n */\nfunction isProseLiteral(value: string): boolean {\n const text = value.trim();\n if (text.length < 12) return false;\n if (/^(?:https?:\\/\\/|\\/|\\.{1,2}\\/|#|@|[a-z]+:)/i.test(text)) return false;\n if (!/\\p{L}/u.test(text)) return false;\n const words = text.split(/\\s+/).filter(Boolean);\n if (words.length < 4) return false;\n // A utility-class list is 4+ \"words\" of pure lowercase tokens carrying dashes\n // or variant colons — the one non-prose shape that reliably clears the word\n // count (\"flex items-center gap-4 rounded-lg border border-slate-200 px-6\").\n const classy = words.filter((w) => /^-?[a-z][a-z0-9]*(?:[-.:/][a-z0-9.[\\]%-]+)+$/.test(w)).length;\n if (classy >= 3 && classy / words.length > 0.5) return false;\n return true;\n}\n\n/**\n * Blank an Astro frontmatter block (leading `---` … `---`) so rules never read\n * component JS — imports, props, config — while KEEPING the string literals\n * that hold visible copy. Every character is replaced by a space rather than\n * removed, so `file:line` attribution and `indexOf` offsets stay exact against\n * the original source. The `---` fences are blanked too: they'd otherwise count\n * as em-dashes.\n *\n * The rewrite walks CODE UNITS (`split(\"\")`), not code points: `stringLiterals`\n * indexes with `source[i]`, so a spread by code point would collapse each emoji\n * to one slot and slide every offset past it — silently shifting the line of\n * every finding in the file, this rule's and the others'. Feature-card icons\n * are exactly where that emoji lives.\n *\n * Keeping the prose is not a refinement, it is the point. Astro components hold\n * FAQ pairs, testimonial quotes, feature cards and pricing rows as a\n * `const items = [{ q, a }]` array in the frontmatter and render them in a\n * `.map()`, so blanking the block wholesale hid a large share of every\n * landing's actual copy from the critic. It shipped an FAQ answer conceding a\n * competitor was better, dense with em-dashes, past a clean run.\n */\nfunction blankAstroFrontmatter(text: string): string {\n const cut = frontmatterLength(text);\n if (cut === 0) return text;\n const head = text.slice(0, cut);\n const kept: string[] = head.split(\"\").map((ch) => (ch === \"\\n\" ? \"\\n\" : \" \"));\n for (const literal of stringLiterals(head)) {\n if (!isProseLiteral(literal.value)) continue;\n for (let i = 0; i < literal.value.length; i++) {\n const at = literal.start + i;\n if (head[at] !== \"\\n\") kept[at] = head[at] ?? \" \";\n }\n }\n return kept.join(\"\") + text.slice(cut);\n}\n\n/**\n * An `.astro` source with everything a visitor never sees blanked out — the\n * frontmatter's component JS (minus its prose literals) and every template\n * comment. Every character is replaced by a space rather than removed, so\n * `file:line` attribution stays exact. This is what every rule reads.\n */\nfunction blankUnrenderedSource(text: string): string {\n return blankTemplateComments(blankAstroFrontmatter(text));\n}\n\n/**\n * Blank Astro expression comments (`{/* … *\\/}`) and HTML comments\n * (`<!-- … -->`), preserving length and newlines.\n *\n * A comment is commentary about the markup, not markup, and no rule may read\n * one. The cost of that being false was a fleet-wide publish block: the shared\n * `Video.astro` wrapper explains its `preconnect` in prose that spells `<img>`\n * twice, the block-tier `broken-image` rule matched the prose, and every landing\n * rendering a video failed the publish gate — on a scaffold-protected file the\n * client's agent is forbidden to edit, so there was no fix from inside the\n * sandbox. Comment prose is also where a component's reasoning lives, em-dashes\n * and buzzwords and hexes included, so leaving it readable inflates every\n * count-threshold tell on top of that.\n *\n * The `{…}` fences are blanked with the comment: a bare `{` left behind would\n * read as an expression opening, and the `*\\/` would count as punctuation copy.\n * Walks CODE UNITS, like `blankAstroFrontmatter`, for the same reason — a spread\n * by code point collapses an emoji to one slot and slides every later offset.\n */\nfunction blankTemplateComments(text: string): string {\n const out = text.split(\"\");\n const pattern = /\\{\\s*\\/\\*[\\s\\S]*?\\*\\/\\s*\\}|<!--[\\s\\S]*?-->/g;\n for (const m of text.matchAll(pattern)) {\n const start = m.index ?? 0;\n for (let i = start; i < start + m[0].length && i < out.length; i++) {\n if (out[i] !== \"\\n\") out[i] = \" \";\n }\n }\n return out.join(\"\");\n}\n\n/** Characters covered by a leading `---` … `---` block, or 0 when there is none. */\nfunction frontmatterLength(text: string): number {\n if (!text.startsWith(\"---\")) return 0;\n const lines = text.split(\"\\n\");\n if (!/^---\\s*$/.test(lines[0] ?? \"\")) return 0;\n const end = lines.findIndex((line, i) => i > 0 && /^---\\s*$/.test(line));\n return end === -1 ? 0 : lines.slice(0, end + 1).join(\"\\n\").length;\n}\n\n/**\n * String literals in a block of component JS, skipping comments so a `//` line\n * mentioning a quote cannot open one. Returns the literal body and where it\n * starts in the input, which is what keeps offsets exact.\n */\nfunction stringLiterals(source: string): Array<{ start: number; value: string }> {\n const out: Array<{ start: number; value: string }> = [];\n for (let i = 0; i < source.length; i++) {\n const commentEnd = skipComment(source, i);\n if (commentEnd !== -1) {\n i = commentEnd;\n continue;\n }\n const quote = source[i];\n if (quote !== '\"' && quote !== \"'\" && quote !== \"`\") continue;\n const close = closingQuote(source, i + 1, quote);\n if (close === -1) break;\n out.push({ start: i + 1, value: source.slice(i + 1, close) });\n i = close;\n }\n return out;\n}\n\n/** Index of the last character of a comment opening at `i`, or -1 if none does.\n * An unterminated block comment consumes the rest of the source. */\nfunction skipComment(source: string, i: number): number {\n if (source[i] !== \"/\") return -1;\n if (source[i + 1] === \"/\") {\n const nl = source.indexOf(\"\\n\", i);\n return nl === -1 ? source.length : nl;\n }\n if (source[i + 1] === \"*\") {\n const close = source.indexOf(\"*/\", i + 2);\n return close === -1 ? source.length : close + 1;\n }\n return -1;\n}\n\n/** Index of the quote closing a literal that opened at `from`, honoring\n * backslash escapes; -1 when the literal never closes. */\nfunction closingQuote(source: string, from: number, quote: string): number {\n for (let j = from; j < source.length; j++) {\n if (source[j] === \"\\\\\") {\n j++;\n continue;\n }\n if (source[j] === quote) return j;\n }\n return -1;\n}\n\ntype Analyzer = {\n /** \"file\" → run per source file (line-attributed / ≥1-count tells). \"page\" →\n * run once on the concatenated page (count-threshold tells a componentized\n * landing would otherwise dodge). */\n scope: \"file\" | \"page\";\n run: (text: string, file: string) => RawFinding[];\n};\n\nconst ANALYZERS: Analyzer[] = [\n // Overused primary font (font-family declarations + Google Fonts URLs). Fires\n // at ≥1 and carries a line number → per file.\n {\n scope: \"file\",\n run: (text, file) => {\n const out: RawFinding[] = [];\n const seen = new Set<string>();\n for (const m of text.matchAll(/font-family\\s*:\\s*([^;}{]+)/gi)) {\n const first = firstFamily(cap(m, 1));\n if (first && !GENERIC_FONTS.has(first) && isOverusedFont(first) && !seen.has(first)) {\n seen.add(first);\n out.push({ id: \"overused-font\", snippet: `font-family: ${first}`, file, line: lineOf(text, m.index ?? 0) });\n }\n }\n for (const m of text.matchAll(/fonts\\.googleapis\\.com\\/css2?\\?[^\"'\\s)<>]*/gi)) {\n for (const fam of googleFontFamilies(cap(m, 0))) {\n if (isOverusedFont(fam) && !seen.has(fam)) {\n seen.add(fam);\n out.push({ id: \"overused-font\", snippet: `Google Fonts: ${fam}`, file, line: lineOf(text, m.index ?? 0) });\n }\n }\n }\n return out;\n },\n },\n // Single font across a substantial page — needs the whole page's font set.\n // Counts only the FIRST family of each stack (like overused-font): fallbacks\n // aren't choices, so `'Inter', 'Helvetica Neue'` everywhere is still one font.\n {\n scope: \"page\",\n run: (text, file) => {\n const fonts = new Set<string>();\n for (const m of text.matchAll(/font-family\\s*:\\s*([^;}{]+)/gi)) {\n const first = firstFamily(cap(m, 1));\n if (first && !GENERIC_FONTS.has(first)) fonts.add(first);\n }\n for (const f of allGoogleFontFamilies(text)) fonts.add(f);\n if (fonts.size !== 1 || text.split(\"\\n\").length < 20) return [];\n const only = [...fonts][0] ?? \"\";\n return [{ id: \"single-font\", snippet: `only font used across the page is ${only}`, file }];\n },\n },\n // Flat type hierarchy (all sizes span <2×) — needs every size on the page.\n {\n scope: \"page\",\n run: (text, file) => {\n const sizes = new Set<number>();\n const REM = 16;\n for (const m of text.matchAll(/font-size\\s*:\\s*([\\d.]+)(px|rem|em)\\b/gi)) {\n const px = cap(m, 2) === \"px\" ? num(m, 1) : num(m, 1) * REM;\n if (px > 0 && px < 200) sizes.add(Math.round(px * 10) / 10);\n }\n for (const [cls, px] of Object.entries(TAILWIND_TEXT_PX)) {\n if (new RegExp(`\\\\b${cls}\\\\b`).test(text)) sizes.add(px);\n }\n if (sizes.size < 3) return [];\n const sorted = [...sizes].sort((a, b) => a - b);\n const min = sorted[0] ?? 1;\n const max = sorted[sorted.length - 1] ?? 1;\n const ratio = max / min;\n if (ratio >= 2.0) return [];\n return [\n {\n id: \"flat-type-hierarchy\",\n snippet: `sizes ${sorted.map((s) => `${s}px`).join(\", \")} (ratio ${ratio.toFixed(1)}:1)`,\n file,\n },\n ];\n },\n },\n // Monotonous spacing (one value dominates) — needs every spacing value.\n {\n scope: \"page\",\n run: (text, file) => {\n const rounded = collectSpacingPx(text).map((v) => Math.round(v / 4) * 4);\n if (rounded.length < 10) return [];\n const counts: Record<number, number> = {};\n for (const v of rounded) counts[v] = (counts[v] || 0) + 1;\n const maxCount = Math.max(...Object.values(counts));\n const pct = maxCount / rounded.length;\n const unique = [...new Set(rounded)].filter((v) => v > 0);\n if (pct <= 0.6 || unique.length > 3) return [];\n const dominant = Object.entries(counts).sort((a, b) => b[1] - a[1])[0]?.[0] ?? \"?\";\n return [\n {\n id: \"monotonous-spacing\",\n snippet: `~${dominant}px used ${maxCount}/${rounded.length} times (${Math.round(pct * 100)}%)`,\n file,\n },\n ];\n },\n },\n // Em-dash overuse (density-gated) — density is measured over the page's copy.\n {\n scope: \"page\",\n run: (text, file) => {\n const body = stripHtmlToText(text).replace(/—|�*8212;|�*2014;/gi, \"—\");\n // `(?<!-)--(?!-)` refuses `---` runs (frontmatter fences, hr markers) so\n // only a writer's double-hyphen counts as an em-dash stand-in.\n const count = (body.match(/[—]|(?<!-)--(?!-)(?=\\S)/g) ?? []).length;\n if (count < EM_DASH_FLOOR) return [];\n if (body.length > count * EM_DASH_CHARS_PER_DASH) return [];\n return [{ id: \"em-dash-overuse\", snippet: `${count} em-dashes in body copy`, file }];\n },\n },\n // The AI copy tells that are a shape, not a reading (engine/copy-tells):\n // the ones that read the words are asked of the decision model in\n // `copy-judgments.ts`. Page-scope: every gate here is a count threshold, and\n // a landing is always split across small components, so measuring per file\n // would dilute a page-wide habit into nothing.\n {\n scope: \"page\",\n run: (text, file) => {\n const body = stripHtmlPreservingHeadings(text);\n const out: RawFinding[] = [];\n for (const tell of structuralCopyTells(body)) {\n const gate = COPY_TELL_GATES[tell.id];\n if (!gate || tell.count < gate.minCount) continue;\n out.push({ id: tell.id, snippet: `${tell.count}× — \"${tell.sample}\"`, file });\n }\n return out;\n },\n },\n // Gradient text in authored CSS. A rule block spans lines, so this scans a\n // ±6-line window around each `background-clip: text` instead of one line\n // (the Tailwind class form stays a line matcher above).\n {\n scope: \"file\",\n run: (text, file) => {\n const out: RawFinding[] = [];\n const lines = text.split(\"\\n\");\n for (const m of text.matchAll(/(?:-webkit-)?background-clip\\s*:\\s*text/gi)) {\n const line = lineOf(text, m.index ?? 0);\n const window = lines.slice(Math.max(0, line - 7), Math.min(lines.length, line + 6)).join(\"\\n\");\n const gradient = window.match(/(?:repeating-)?(?:linear|radial|conic)-gradient\\((?:[^()]|\\([^()]*\\))*\\)/i);\n if (gradient) {\n out.push({ id: \"gradient-text\", snippet: `background-clip: text + ${gradient[0]}`, file, line });\n }\n }\n return out;\n },\n },\n // Dark glow: a zero-offset chromatic shadow used as decoration. Line-attributed\n // → per file.\n {\n scope: \"file\",\n run: (text, file) => {\n const out: RawFinding[] = [];\n for (const m of text.matchAll(/(?:box|text)-shadow\\s*:\\s*([^;{}]+)/gi)) {\n if (shadowIsGlow(cap(m, 1))) {\n out.push({\n id: \"dark-glow\",\n snippet: `shadow: ${cap(m, 1).trim().slice(0, 60)}`,\n file,\n line: lineOf(text, m.index ?? 0),\n });\n }\n }\n return out;\n },\n },\n // Marquee (<marquee> element). Fires at ≥1 → per file.\n {\n scope: \"file\",\n run: (text, file) => (/<marquee\\b/i.test(text) ? [{ id: \"marquee\", snippet: \"<marquee> element\", file }] : []),\n },\n];\n\n/** Authored spacing values in px — CSS px/rem declarations plus Tailwind\n * utilities (incl. gap-x/y, space-x/y, and decimals like p-1.5). Zero values\n * are resets, not spacing choices, so they never count. */\nfunction collectSpacingPx(text: string): number[] {\n const vals: number[] = [];\n const push = (v: number) => {\n if (v > 0 && v < 200) vals.push(v);\n };\n for (const m of text.matchAll(/(?:padding|margin)(?:-(?:top|right|bottom|left))?\\s*:\\s*(\\d+)px/gi)) push(num(m, 1));\n for (const m of text.matchAll(/(?:padding|margin)(?:-(?:top|right|bottom|left))?\\s*:\\s*([\\d.]+)rem/gi))\n push(Math.round(Number.parseFloat(cap(m, 1)) * 16));\n for (const m of text.matchAll(/\\b(?:p|px|py|pt|pb|pl|pr|m|mx|my|mt|mb|ml|mr|gap(?:-[xy])?|space-[xy])-([\\d.]+)\\b/g))\n push(Number.parseFloat(cap(m, 1)) * 4);\n return vals;\n}\n\n/** Zero-offset chromatic blur = a decorative halo, not depth. */\nfunction shadowIsGlow(value: string): boolean {\n const first = (value.split(/,(?![^(]*\\))/)[0] ?? \"\").trim();\n const colorMatch = first.match(/#[0-9a-f]{3,8}\\b|rgba?\\([^)]+\\)|hsla?\\([^)]+\\)/i);\n if (!colorMatch) return false;\n // Strip the color before reading offsets so its digits aren't parsed as lengths.\n const lengthsPart = first.replace(colorMatch[0], \" \").replace(/\\binset\\b/gi, \" \");\n const offsets = lengthsPart.match(/-?\\d*\\.?\\d+(?:px|rem|em)?/g);\n if (!offsets || offsets.length < 3) return false;\n const x = Number.parseFloat(offsets[0] ?? \"0\");\n const y = Number.parseFloat(offsets[1] ?? \"0\");\n const blur = Number.parseFloat(offsets[2] ?? \"0\");\n if (!(x === 0 && y === 0 && blur > 4)) return false;\n const c = parseColor(colorMatch[0]);\n return c !== null && hasChroma(c, 30);\n}\n\nfunction firstFamily(decl: string): string {\n return (decl.split(\",\")[0] ?? \"\")\n .trim()\n .replace(/^['\"]|['\"]$/g, \"\")\n .toLowerCase();\n}\n\nfunction googleFontFamilies(url: string): string[] {\n const q = url.indexOf(\"?\");\n if (q === -1) return [];\n const params = new URLSearchParams(url.slice(q + 1).replace(/&/g, \"&\"));\n const out: string[] = [];\n for (const value of params.getAll(\"family\")) {\n for (const part of value.split(\"|\")) out.push((part.split(\":\")[0] ?? \"\").trim().toLowerCase());\n }\n return out.filter(Boolean);\n}\n\nfunction allGoogleFontFamilies(text: string): string[] {\n const out: string[] = [];\n for (const m of text.matchAll(/fonts\\.googleapis\\.com\\/css2?\\?[^\"'\\s)<>]*/gi))\n out.push(...googleFontFamilies(cap(m, 0)));\n return out;\n}\n\nfunction lineOf(text: string, index: number): number {\n let line = 1;\n for (let i = 0; i < index && i < text.length; i++) if (text[i] === \"\\n\") line++;\n return line;\n}\n\n/** Character ranges covered by a `<table>` — where a comparison belongs, and\n * where naming a competitor is the section doing its job. */\nfunction tableRanges(text: string): Array<[number, number]> {\n const out: Array<[number, number]> = [];\n for (const m of text.matchAll(/<table\\b[\\s\\S]*?<\\/table>/gi)) {\n const start = m.index ?? 0;\n out.push([start, start + m[0].length]);\n }\n return out;\n}\n\n/**\n * One entry per competitor, however many spellings the vault yields — it gives\n * both the file slug and the entry's `title:`, and a single mention reporting\n * twice reads as two defects. The capitalized spelling wins, being the one that\n * would appear on a page. Names under 4 characters are dropped: too short to\n * match a brand without catching ordinary words.\n */\nfunction distinctCompetitorNames(competitors: string[]): string[] {\n const byFold = new Map<string, string>();\n for (const raw of competitors) {\n if (typeof raw !== \"string\") continue;\n const name = raw.trim();\n if (name.length < 4) continue;\n const key = foldForCopy(name);\n if (!byFold.has(key) || /\\p{Lu}/u.test(name)) byFold.set(key, name);\n }\n return [...byFold.values()];\n}\n\n/** Elements that only style a run of words: everything else ends a block of copy. */\nconst INLINE_TAGS =\n /^<\\/?(?:a|abbr|b|bdi|bdo|cite|code|data|dfn|em|i|kbd|mark|q|s|samp|small|span|strong|sub|sup|time|u|var|wbr)\\b/i;\n\n/**\n * A source's visible copy with every offset kept: like `blankHtmlKeepingOffsets`, but a block\n * element (a heading, a paragraph, a cell, a button) starts a new line, so a heading and the\n * paragraph under it are never read as one sentence.\n */\nfunction visibleCopyKeepingOffsets(text: string): string {\n const out = text.split(\"\");\n const pattern = /<script\\b[^>]*>[\\s\\S]*?<\\/script>|<style\\b[^>]*>[\\s\\S]*?<\\/style>|<!--[\\s\\S]*?-->|<[^>]+>/gi;\n for (const m of text.matchAll(pattern)) {\n const start = m.index ?? 0;\n for (let i = start; i < start + m[0].length && i < out.length; i++) {\n if (out[i] !== \"\\n\") out[i] = \" \";\n }\n if (!INLINE_TAGS.test(m[0])) out[start] = \"\\n\";\n }\n return out.join(\"\");\n}\n\nexport type CopySentence = { file: string; line: number; text: string; before?: string; inTable: boolean };\nexport type CompetitorMention = { file: string; line: number; sentence: string; competitor: string };\n\n/**\n * Every sentence a visitor reads on the page, file by file and line by line (frontmatter prose\n * included, comments and code not), and each sentence that names a competitor outside a\n * comparison table. Pure: what the copy rules ask the decision model about.\n */\nexport function landingCopy(\n sources: Array<{ path: string; text: string }>,\n competitors: string[] = [],\n): { sentences: CopySentence[]; mentions: CompetitorMention[] } {\n const names = distinctCompetitorNames(competitors).map((name) => ({\n name,\n pattern: new RegExp(`(?<![\\\\p{L}\\\\p{N}])${escapeRegExp(name)}(?![\\\\p{L}\\\\p{N}])`, \"iu\"),\n }));\n const sentences = sources.flatMap(sourceSentences);\n const mentions = sentences.flatMap((s) =>\n s.inTable\n ? []\n : names\n .filter(({ pattern }) => pattern.test(s.text))\n .map(({ name }) => ({ file: s.file, line: s.line, sentence: s.text, competitor: name })),\n );\n return { sentences, mentions };\n}\n\n/**\n * Every string a page may show, for the company's own wording rules (`baker rules check --for\n * landings`): the visible sentences, plus the frontmatter literals too short for the critic's prose\n * bar — a price (`const price = \"49 €\"`) or a card label rendered through `{price}`. A rule the\n * person set must see those; an import, a path, a URL or a class list never reaches it. Pure.\n */\nexport function landingRuleLines(sources: Array<{ path: string; text: string }>): string[] {\n const short = sources.flatMap((source) => {\n const head = source.text.slice(0, frontmatterLength(source.text));\n return stringLiterals(head).flatMap((literal) =>\n isShortShownLiteral(head, literal) ? [literal.value.trim()] : [],\n );\n });\n return [...landingCopy(sources).sentences.map((s) => s.text), ...short];\n}\n\n/** A frontmatter literal under the prose bar that still reads as something shown, not code. */\nfunction isShortShownLiteral(head: string, literal: { start: number; value: string }): boolean {\n const text = literal.value.trim();\n if (!text || isProseLiteral(literal.value)) return false;\n if (/^(?:https?:\\/\\/|\\/|\\.{1,2}\\/|#|@|[a-z]+:)/i.test(text)) return false;\n const before = head.slice(head.lastIndexOf(\"\\n\", literal.start - 1) + 1, literal.start - 1);\n if (/\\b(?:import|from)\\s*\\(?\\s*$/.test(before)) return false;\n const words = text.split(/\\s+/);\n const lowerTokens = words.every((w) => /^-?[a-z][a-z0-9:/.[\\]%-]*$/.test(w));\n return !(lowerTokens && words.some((w) => /[-:/]/.test(w)));\n}\n\n/** One source's visible sentences, each with its line and whether a `<table>` holds it. */\nfunction sourceSentences(source: { path: string; text: string }): CopySentence[] {\n const text = blankUnrenderedSource(source.text);\n const tables = tableRanges(text);\n return copySentences(visibleCopyKeepingOffsets(text)).map((s) => ({\n file: source.path,\n line: lineOf(text, s.start),\n text: s.text,\n ...(s.before ? { before: s.before } : {}),\n inTable: tables.some(([from, to]) => s.start >= from && s.start < to),\n }));\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/** Run the per-file rules over one source file (line matchers + file-scope\n * analyzers). Pure; never throws. Page-scope tells are handled by `detectPage`. */\nexport function detectSource(source: { path: string; text: string }): RawFinding[] {\n const file = source.path;\n // Frontmatter is component JS (imports, props) and a comment is commentary —\n // neither is design source. Blanked line-preservingly so no rule reads them\n // and attribution stays exact.\n const text = blankUnrenderedSource(source.text);\n const findings: RawFinding[] = [];\n const lines = text.split(\"\\n\");\n for (const matcher of LINE_MATCHERS) {\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n for (const m of line.matchAll(matcher.regex)) {\n if (matcher.test(m, line)) findings.push({ id: matcher.id, snippet: matcher.fmt(m, line), file, line: i + 1 });\n }\n }\n }\n for (const analyzer of ANALYZERS) {\n if (analyzer.scope === \"file\") findings.push(...analyzer.run(text, file));\n }\n return dedupe(findings);\n}\n\n/** Run the page-scope analyzers over the ASSEMBLED page (all sources joined),\n * so count-threshold tells aren't diluted across small components. Page-level\n * findings have no single line; they attribute to the page's `index.astro`. */\nexport function detectPage(sources: Array<{ path: string; text: string }>): RawFinding[] {\n if (sources.length === 0) return [];\n const combined = sources.map((s) => blankUnrenderedSource(s.text)).join(\"\\n\");\n const pageFile =\n sources.find((s) => s.path === \"index.astro\" || s.path.endsWith(\"/index.astro\"))?.path ??\n sources[0]?.path ??\n \"index.astro\";\n const findings: RawFinding[] = [];\n for (const analyzer of ANALYZERS) {\n if (analyzer.scope === \"page\") findings.push(...analyzer.run(combined, pageFile));\n }\n return dedupe(findings);\n}\n\nexport function dedupe(findings: RawFinding[]): RawFinding[] {\n const out: RawFinding[] = [];\n for (const f of findings) {\n const dupe = out.some(\n (d) => d.id === f.id && d.snippet === f.snippet && Math.abs((d.line ?? 0) - (f.line ?? 0)) <= 2,\n );\n if (!dupe) out.push(f);\n }\n return out;\n}\n","import type { Dirent } from \"node:fs\";\nimport { readdir, readFile, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { sha256Hex } from \"../../engine/storage/sha256.ts\";\nimport { landingGraphFiles } from \"./import-graph.ts\";\n\n/**\n * A content fingerprint of a landing's editable source — the files an agent\n * edits. It is the bridge the quality gate uses to tell \"this critique is\n * current\" from \"the source was edited since the last critique\":\n *\n * - `baker landing critique <slug>` records the fingerprint it SCORED, and\n * - the `validate-landing-critique` verify gate recompares against the CURRENT\n * source. Equal → the critique is fresh; different (or missing) → the landing\n * changed and must be re-critiqued before it can publish.\n *\n * ## The file set follows the imports, not the folder\n *\n * It used to be `index.astro` plus this landing's own `_components/**\\/*.astro`.\n * Pages share components since A/B tests shipped — a variant borrows the\n * control's sections and forks only the one under test — so that set stopped\n * describing the page. Two things broke at once: an edit to a shared section\n * left the borrowing page's sha unchanged, so the gate passed a page it had\n * never scored in the shape it ships; and the critic was handed a page whose\n * sections it could not read, then asked to judge its composition.\n *\n * So the set is every `.astro` file in the landing's import graph, with\n * repo-relative paths because a shared section does not live under the landing.\n * Bounded to `src/pages/**` and `src/components/**` — the composition the critic\n * judges. The layout and the flow engine are reached by every page and are not\n * compositional; hashing them would restate \"the scaffold changed\" as \"every\n * landing is stale\".\n *\n * Content-addressed (not mtime), so a clone at a different path or clock skew\n * never produces a false \"edited\". The gate's `.mjs`\n * (`apps/scaffold-template/__tooling__/checks/sdk/landing-critique-freshness.mjs`)\n * reimplements this exact ordering + length-prefixed concat — it can't import the\n * CLI — so keep the two in lockstep: repo-relative POSIX paths, ascending\n * codepoint sort, `${len}\\0` prefix. `scripts/__tests__/landing-source-version-parity.test.ts`\n * runs both over one fixture tree and fails when they disagree.\n */\n\n/** Roots whose `.astro` files count as this landing's composition. */\nconst CRITIQUED_ROOTS = [\"src/pages/\", \"src/components/\"];\n\n/** Ordered repo-relative POSIX paths of a landing's source files (sorted, stable). */\nasync function landingSourceRelPaths(root: string, slug: string): Promise<string[]> {\n const files = await landingGraphFiles(root, slug);\n return [...files]\n .filter((rel) => rel.endsWith(\".astro\") && CRITIQUED_ROOTS.some((r) => rel.startsWith(r)))\n .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n}\n\n/** Read the landing's source files as {path, text} for the critic. */\nexport async function readLandingSources(root: string, slug: string): Promise<Array<{ path: string; text: string }>> {\n const rel = await landingSourceRelPaths(root, slug);\n const out: Array<{ path: string; text: string }> = [];\n for (const r of rel) out.push({ path: r, text: await readFile(path.join(root, r), \"utf8\") });\n return out;\n}\n\n/** Length-prefixed concat SHA over the landing's source files, in sorted order. */\nexport async function computeLandingSourceSha(root: string, slug: string): Promise<string> {\n const rel = await landingSourceRelPaths(root, slug);\n const parts: Buffer[] = [];\n for (const r of rel) {\n let bytes: Buffer;\n try {\n bytes = await readFile(path.join(root, r));\n } catch {\n bytes = Buffer.alloc(0);\n }\n // Length-prefix by both the path and the bytes so moving content across\n // files can't collide, mirroring canvas source-version.ts.\n parts.push(Buffer.from(`${r}\\0${bytes.length}\\0`), bytes);\n }\n return sha256Hex(Buffer.concat(parts));\n}\n\n/**\n * The fingerprint as it was BEFORE the composition one above: `index.astro`\n * plus this landing's own `_components/**\\/*.astro`, paths relative to the\n * landing folder.\n *\n * Written into every snapshot beside the composition sha, and read by nothing\n * here. It is there for a gate that predates the composition fingerprint: this\n * CLI reaches a workspace through the E2B image (`@koda-sl/baker-cli@latest`,\n * baked at build) and the gate reaches the same workspace through the per-repo\n * scaffold sync — two tracks with no ordering between them, and a repo whose\n * sync is frozen keeps the old gate indefinitely. An old gate handed only a\n * composition sha recomputes its own, calls every landing stale, re-runs this\n * command, gets the same snapshot back, and blocks the commit citing an\n * unwritable `.cache/`.\n *\n * Delete together with the scaffold's `computeLegacySourceSha` once the fleet\n * and the template both carry the composition fingerprint.\n */\nexport async function computeLegacyLandingSourceSha(landingDir: string): Promise<string> {\n const rel: string[] = [];\n if (await isFile(path.join(landingDir, \"index.astro\"))) rel.push(\"index.astro\");\n for (const abs of await walkAstro(path.join(landingDir, \"_components\"))) {\n rel.push(path.relative(landingDir, abs).split(path.sep).join(\"/\"));\n }\n rel.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n\n const parts: Buffer[] = [];\n for (const r of rel) {\n let bytes: Buffer;\n try {\n bytes = await readFile(path.join(landingDir, r));\n } catch {\n bytes = Buffer.alloc(0);\n }\n parts.push(Buffer.from(`${r}\\0${bytes.length}\\0`), bytes);\n }\n return sha256Hex(Buffer.concat(parts));\n}\n\nasync function isFile(p: string): Promise<boolean> {\n try {\n return (await stat(p)).isFile();\n } catch {\n return false;\n }\n}\n\nasync function walkAstro(dir: string): Promise<string[]> {\n let entries: Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return [];\n }\n const out: string[] = [];\n for (const entry of entries) {\n const abs = path.join(dir, entry.name);\n if (entry.isDirectory()) out.push(...(await walkAstro(abs)));\n else if (entry.isFile() && entry.name.endsWith(\".astro\")) out.push(abs);\n }\n return out;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RESEARCH_GOOGLE_ADS_MAX_COPY
|
|
3
|
+
} from "./chunk-YOHGEF2N.js";
|
|
4
|
+
|
|
5
|
+
// src/commands/research/hints.ts
|
|
6
|
+
var AD_COPY_ROUTE = 'This returns competing domains and their SERP economics \u2014 no ad copy, no headlines, no creative. For a competitor\'s Google ads and their copy: `baker research google-ads <competitor.com> --copy` (Google\'s Ads Transparency Center: every ad, how long it has run, and the text ads\' headline and description). For Meta and LinkedIn: `baker winning-ads advertisers "<brand>"` \u2192 `baker winning-ads search "<brief>" --advertiser-id <id>` \u2192 `baker winning-ads content <adId>` (`primary_text` / `headline` / `cta`, plus the spoken transcript and on-screen text for video). Do not keep querying this command for copy.';
|
|
7
|
+
function noSerpRowsHints(rowCount, queryContext) {
|
|
8
|
+
if (rowCount > 0) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
const defaulted = queryContext.location_is_default || queryContext.language_is_default;
|
|
12
|
+
if (defaulted) {
|
|
13
|
+
return [
|
|
14
|
+
`No rows for ${queryContext.location} / ${queryContext.language} \u2014 the market you did not set. Set --location and --language for the client's actual market and re-run once (\`baker research countries\` / \`baker research languages\` for the accepted codes) before you touch the keyword.`
|
|
15
|
+
];
|
|
16
|
+
}
|
|
17
|
+
return [
|
|
18
|
+
`No rows for ${queryContext.location} / ${queryContext.language}, which you set explicitly. This term has no third-party SERP coverage in that market \u2014 move on rather than re-querying it. For demand signal try \`baker research autocomplete\`; for a competitor's actual terms, \`baker research keywords-for-site <domain>\`.`
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
function advertisersHints(rowCount, queryContext) {
|
|
22
|
+
return [...noSerpRowsHints(rowCount, queryContext), AD_COPY_ROUTE];
|
|
23
|
+
}
|
|
24
|
+
function keywordsForSiteHints(rowCount, queryContext, typeFilter) {
|
|
25
|
+
if (rowCount > 0) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
if (typeFilter === "paid" || typeFilter === "organic") {
|
|
29
|
+
return [
|
|
30
|
+
`No rows with --type ${typeFilter} in ${queryContext.location} / ${queryContext.language}. A domain with zero ${typeFilter} keywords in a market is itself the finding \u2014 record it and move on. Confirm once with --type all (nothing at all there means the domain has no SERP coverage, not that it has no ads) instead of re-running with a different --sort or --limit.`
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
return noSerpRowsHints(rowCount, queryContext);
|
|
34
|
+
}
|
|
35
|
+
var THIN_ANSWER_CHARS = 600;
|
|
36
|
+
var THIN_SOURCE_COUNT = 2;
|
|
37
|
+
var ESCALATION = {
|
|
38
|
+
medium: "`medium` is a quick lookup, not a search. Re-ask the SAME question once with `--depth high` before concluding the web has nothing on it.",
|
|
39
|
+
high: "`high` already thought hard about this. `--depth xhigh` is the only step left and it can run 15 minutes \u2014 take it only if this answer blocks a deliverable; otherwise record the gap and move on."
|
|
40
|
+
};
|
|
41
|
+
function webSourceHints(sources) {
|
|
42
|
+
if (sources.length === 0) {
|
|
43
|
+
return [
|
|
44
|
+
"This answer came back with no sources. Treat every claim in it as Synthesis: \u2014 no source to cite. Do not attach a URL to it; to cite a fact, find the page that states it and read it with `baker research fetch`."
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
const unresolved = sources.filter((s) => s.resolved === false).length;
|
|
48
|
+
if (unresolved > 0) {
|
|
49
|
+
return [
|
|
50
|
+
`${unresolved} of ${sources.length} sources are Google links that could not be followed (resolved: false). Do not cite them or guess a path from the site name \u2014 cite only a resolved URL, or open the claim's page yourself.`
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
function fetchHints({
|
|
56
|
+
truncated,
|
|
57
|
+
contentChars,
|
|
58
|
+
shownChars
|
|
59
|
+
}) {
|
|
60
|
+
const hints = [];
|
|
61
|
+
if (shownChars < contentChars) {
|
|
62
|
+
hints.push(
|
|
63
|
+
`Showing the first ${shownChars.toLocaleString("en-US")} of ${contentChars.toLocaleString("en-US")} characters. Re-run the same command with \`--full\` for the whole page \u2014 the read is cached for 24h, so it costs no extra time and no extra credit.`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
if (truncated) {
|
|
67
|
+
hints.push(
|
|
68
|
+
"This page is longer than one read returns, so the end of it is missing. Don't present this as the complete page; if the part you need is further down, fetch the deeper URL directly."
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return hints;
|
|
72
|
+
}
|
|
73
|
+
function webDepthHints({
|
|
74
|
+
answer,
|
|
75
|
+
sourceCount,
|
|
76
|
+
depth
|
|
77
|
+
}) {
|
|
78
|
+
const thin = answer.length < THIN_ANSWER_CHARS || sourceCount <= THIN_SOURCE_COUNT;
|
|
79
|
+
const escalation = ESCALATION[depth];
|
|
80
|
+
if (!thin || !escalation) {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
return [`Thin answer (${answer.length} chars, ${sourceCount} source(s)). ${escalation}`];
|
|
84
|
+
}
|
|
85
|
+
function keywordMetricsHints({
|
|
86
|
+
rows,
|
|
87
|
+
asked,
|
|
88
|
+
clickstream,
|
|
89
|
+
queryContext
|
|
90
|
+
}) {
|
|
91
|
+
if (rows.length === 0) {
|
|
92
|
+
return noSerpRowsHints(0, queryContext);
|
|
93
|
+
}
|
|
94
|
+
const provenance = "DataForSEO resells Google's Keyword Planner volume \u2014 planner_search_volume here is the SAME number `baker ads google keywords metrics` returns, not an independent reading of it. Quoting the two as agreeing sources is not corroboration." + (clickstream ? " clickstream_search_volume IS independent (DataForSEO's own panels); when the two disagree, say which one you are quoting." : " For a genuinely independent estimate of demand, re-run with --clickstream (costs 2x), or use first-party data: `baker gsc query` for what already reaches the site, or the account's own search terms.");
|
|
95
|
+
const hints = [provenance];
|
|
96
|
+
const empty = rows.filter((row) => row.search_volume === null).map((row) => row.keyword);
|
|
97
|
+
if (empty.length > 0) {
|
|
98
|
+
hints.push(
|
|
99
|
+
`${empty.length} of ${asked.length} keywords came back with no data in ${queryContext.location} / ${queryContext.language}: ${empty.join(", ")}. That is missing coverage, NOT zero demand \u2014 do not report them as unsearched, and do not re-query them reworded. \`baker research autocomplete\` on the head term is the way to find the phrasing that market uses.`
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
return hints;
|
|
103
|
+
}
|
|
104
|
+
var ARCHIVE_NOTE = "Read from the Reddit archive: the words are as posted, but points and comment counts on anything under ~36h old are as first captured \u2014 don't quote those numbers as current.";
|
|
105
|
+
function redditSearchHints({
|
|
106
|
+
resultCount,
|
|
107
|
+
kind,
|
|
108
|
+
source
|
|
109
|
+
}) {
|
|
110
|
+
const hints = [];
|
|
111
|
+
if (resultCount === 0) {
|
|
112
|
+
hints.push(
|
|
113
|
+
'Nothing matched. Reddit search matches words, not meaning: try the audience\'s own phrasing (one distinctive word, or a seed from `baker research autocomplete`), a longer --since window, or other subreddits \u2014 `baker research reddit subreddits "<topic>"` finds where the audience actually talks' + (kind === "posts" ? ", and try --kind comments \u2014 most of the voice is in the replies." : ".")
|
|
114
|
+
);
|
|
115
|
+
} else if (kind === "posts") {
|
|
116
|
+
hints.push(
|
|
117
|
+
"Titles rarely carry the voice. Read the promising threads with `baker research reddit thread <permalink>` for the replies, or search the replies directly with --kind comments."
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
if (source === "archive" && resultCount > 0) hints.push(ARCHIVE_NOTE);
|
|
121
|
+
return hints;
|
|
122
|
+
}
|
|
123
|
+
function redditThreadHints({
|
|
124
|
+
commentsShown,
|
|
125
|
+
commentsAsked,
|
|
126
|
+
commentCount,
|
|
127
|
+
source
|
|
128
|
+
}) {
|
|
129
|
+
const hints = [];
|
|
130
|
+
if (commentsAsked > 0 && commentsShown === 0 && (commentCount ?? 0) > 0) {
|
|
131
|
+
hints.push(
|
|
132
|
+
`This thread has ${commentCount} comments but none could be read just now. Quote the post only, and don't describe the replies.`
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
if (source === "archive") hints.push(ARCHIVE_NOTE);
|
|
136
|
+
return hints;
|
|
137
|
+
}
|
|
138
|
+
var REDDIT_HOST = /(^|\.)reddit\.com$|^redd\.it$/i;
|
|
139
|
+
function redditSubredditsHints({ resultCount }) {
|
|
140
|
+
if (resultCount === 0) {
|
|
141
|
+
return [
|
|
142
|
+
'No subreddits matched. Try the audience\'s role or the platform they work on ("amazon flex", "deliveroo", "nurses"), one word at a time, or a web search for `site:reddit.com <topic>`.'
|
|
143
|
+
];
|
|
144
|
+
}
|
|
145
|
+
return [
|
|
146
|
+
'Members say how big a subreddit is, not how active it is. Before mining one, run `baker research reddit search "<word>" --subreddit <name> --since <a recent date>`: nothing back means it is quiet, so pick another. `restricted` can still be read; `private` cannot.'
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
var REDDIT_LINK_REJECTED = {
|
|
150
|
+
action: "reject",
|
|
151
|
+
explanation: "Do not quote anything attributed to this link \u2014 it does not lead to those words. Find the real thread with `baker research reddit search`, and if you already wrote a quote from it, remove it."
|
|
152
|
+
};
|
|
153
|
+
function redditPageFix(url, code) {
|
|
154
|
+
let host;
|
|
155
|
+
try {
|
|
156
|
+
host = new URL(url).hostname;
|
|
157
|
+
} catch {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
if (!REDDIT_HOST.test(host)) return null;
|
|
161
|
+
if (code === "NOT_FOUND") return REDDIT_LINK_REJECTED;
|
|
162
|
+
if (code !== "FORBIDDEN") return null;
|
|
163
|
+
return {
|
|
164
|
+
action: "retry_with_changes",
|
|
165
|
+
explanation: 'Read Reddit with its own commands: `baker research reddit search "<words>" --subreddit <name>` to find what people said, `baker research reddit thread <url>` for one thread.'
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function googleAdsHints({
|
|
169
|
+
target,
|
|
170
|
+
adCount,
|
|
171
|
+
located,
|
|
172
|
+
textWithoutCopy,
|
|
173
|
+
copyAsked,
|
|
174
|
+
copyUnread,
|
|
175
|
+
visual
|
|
176
|
+
}) {
|
|
177
|
+
if (adCount === 0) {
|
|
178
|
+
return [
|
|
179
|
+
`No Google ads point to ${target}${located ? " in that region" : ""} \u2014 that is the answer, not a failed call: this competitor is not advertising on Google there, or its ads point to another domain. ` + (located ? "Re-run once without --location to see every region; then move on. " : "Move on. ") + `Its paid search terms, if any: \`baker research keywords-for-site ${target} --type paid\`.`
|
|
180
|
+
];
|
|
181
|
+
}
|
|
182
|
+
const hints = [];
|
|
183
|
+
if (!copyAsked && textWithoutCopy > 0) {
|
|
184
|
+
hints.push(
|
|
185
|
+
`${textWithoutCopy} text ads came back without their words. Re-run with --copy to read the headline and description of up to ${RESEARCH_GOOGLE_ADS_MAX_COPY} (cached, so only the reading is new).`
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
const pastCap = copyAsked ? textWithoutCopy - copyUnread : 0;
|
|
189
|
+
if (pastCap > 0) {
|
|
190
|
+
hints.push(
|
|
191
|
+
`${pastCap} text ads past the first ${RESEARCH_GOOGLE_ADS_MAX_COPY} were not read \u2014 one request reads at most ${RESEARCH_GOOGLE_ADS_MAX_COPY}. Narrow with --since, --location or --platform google_search and re-run for their words.`
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
if (visual > 0 || copyUnread > 0) {
|
|
195
|
+
const without = [
|
|
196
|
+
visual > 0 ? `${visual} image or video ads (Google gives no text for those)` : "",
|
|
197
|
+
copyUnread > 0 ? `${copyUnread} text ads whose image could not be read` : ""
|
|
198
|
+
].filter(Boolean);
|
|
199
|
+
hints.push(
|
|
200
|
+
`No copy for ${without.join(" and ")}: show those by their \`transparency_url\`. Do not open the Transparency Center in agent-browser to read them \u2014 it is the browser load this command exists to avoid.`
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
return hints;
|
|
204
|
+
}
|
|
205
|
+
var LINKEDIN_PERSON_USE = "For ad and page messaging only; nothing is stored \u2014 quote their stated priorities into the creative brief for this account, and don't save the person to Knowledge or read them again to keep track of them.";
|
|
206
|
+
function linkedinPersonHints({ isPrivate, postCount }) {
|
|
207
|
+
if (isPrivate) {
|
|
208
|
+
return [
|
|
209
|
+
"LinkedIn doesn't show this profile publicly, and reading it again won't change that. Find their own words elsewhere \u2014 a keynote, podcast or earnings call through `baker research transcript <url>`, or an interview through `baker research fetch <url>` \u2014 or write the brief from the account's company-level priorities."
|
|
210
|
+
];
|
|
211
|
+
}
|
|
212
|
+
if (postCount === 0) {
|
|
213
|
+
return [
|
|
214
|
+
LINKEDIN_PERSON_USE,
|
|
215
|
+
"They have no recent posts, so their `about` is the only first-person line here. Their priorities are more often said aloud: a keynote, podcast or earnings call through `baker research transcript <url>`."
|
|
216
|
+
];
|
|
217
|
+
}
|
|
218
|
+
return [LINKEDIN_PERSON_USE];
|
|
219
|
+
}
|
|
220
|
+
function transcriptHints({ excerpted, truncated }) {
|
|
221
|
+
const hints = [];
|
|
222
|
+
if (excerpted) {
|
|
223
|
+
hints.push(
|
|
224
|
+
"This is the opening excerpt. Re-run with `--out <file>` to write the whole text to a file and read the parts you need, or `--full` to have it all here \u2014 the transcript is cached for 7 days, so either costs nothing more."
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
if (truncated) {
|
|
228
|
+
hints.push(
|
|
229
|
+
"The recording is longer than one transcript carries, so the end of the recording is missing. Don't quote this as the whole talk."
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
return hints;
|
|
233
|
+
}
|
|
234
|
+
function thinProfileHint(domain, profile) {
|
|
235
|
+
const missing = [
|
|
236
|
+
profile.linkedinUrl ? null : "no LinkedIn page",
|
|
237
|
+
profile.hqCountry ? null : "no HQ country",
|
|
238
|
+
profile.employees ? null : "no employee band"
|
|
239
|
+
].filter((gap) => gap !== null);
|
|
240
|
+
const tiny = profile.employees === "1-10";
|
|
241
|
+
if (missing.length < 2 && !tiny) return null;
|
|
242
|
+
const why = [...missing, ...tiny ? ["1-10 employees"] : []].join(", ");
|
|
243
|
+
return `This profile is thin (${why}). Check ${domain} is the company's main website \u2014 companies often run on another domain (e.g. factorial.es vs factorialhr.com) \u2014 before using these facts for tiering.`;
|
|
244
|
+
}
|
|
245
|
+
function companyHints({
|
|
246
|
+
domain,
|
|
247
|
+
profile,
|
|
248
|
+
hiring
|
|
249
|
+
}) {
|
|
250
|
+
const hints = [];
|
|
251
|
+
if (!profile) {
|
|
252
|
+
hints.push(
|
|
253
|
+
"There's no company profile for this domain, only its hiring. Check it is the company's main website; otherwise take size, industry and location from its LinkedIn page or its own site."
|
|
254
|
+
);
|
|
255
|
+
} else {
|
|
256
|
+
const thin = thinProfileHint(domain, profile);
|
|
257
|
+
if (thin) hints.push(thin);
|
|
258
|
+
}
|
|
259
|
+
if (hiring.status === "unavailable" && hiring.reason === "not_configured") {
|
|
260
|
+
hints.push(
|
|
261
|
+
"Hiring signals aren't switched on for this workspace yet, so these are the firmographics alone. Score the account on them and leave hiring out of the reason."
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
if (hiring.status === "unavailable" && hiring.reason === "failed") {
|
|
265
|
+
hints.push(
|
|
266
|
+
"Hiring signals couldn't be read this time; don't retry in a loop. Use the firmographics and say hiring is unknown for this account."
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
if (hiring.status === "not_tracked") {
|
|
270
|
+
hints.push(
|
|
271
|
+
"No hiring data is kept for this company \u2014 that means unknown, not that it isn't hiring. Don't score it down for it."
|
|
272
|
+
);
|
|
273
|
+
}
|
|
274
|
+
return hints;
|
|
275
|
+
}
|
|
276
|
+
function industryList(industries) {
|
|
277
|
+
return industries.map(({ slug, companies }) => `${slug} (${companies.toLocaleString("en-US")})`).join(", ");
|
|
278
|
+
}
|
|
279
|
+
function relatedIndustriesHint(related) {
|
|
280
|
+
if (related.length === 0) return null;
|
|
281
|
+
return `Related industries not included (companies each adds with your other filters): ${industryList(related)} \u2014 add them with --industry a,b to widen.`;
|
|
282
|
+
}
|
|
283
|
+
function companySearchHints({
|
|
284
|
+
total,
|
|
285
|
+
returned,
|
|
286
|
+
page,
|
|
287
|
+
lastPage,
|
|
288
|
+
related
|
|
289
|
+
}) {
|
|
290
|
+
const hints = [];
|
|
291
|
+
if (total === 0) {
|
|
292
|
+
hints.push(
|
|
293
|
+
"No company matches every filter. Widen one at a time \u2014 a neighbouring size band, a related industry, one more country."
|
|
294
|
+
);
|
|
295
|
+
} else if (page < lastPage && returned > 0) {
|
|
296
|
+
hints.push(
|
|
297
|
+
`${total} companies match and ${returned} came back (each one returned is billed). Use \`total\` to size the market; ask for \`--page ${page + 1}\` only if you need the next rows for the list.`
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
const widen = relatedIndustriesHint(related);
|
|
301
|
+
if (widen) hints.push(widen);
|
|
302
|
+
return hints;
|
|
303
|
+
}
|
|
304
|
+
function unknownIndustriesFix(industries) {
|
|
305
|
+
const misses = industries.map(
|
|
306
|
+
({ input, closest }) => closest.length > 0 ? `"${input}" is not an industry. Closest (companies each matches with your other filters): ${industryList(closest)}.` : `"${input}" is not an industry, and none is named like it \u2014 try a broader word (software, logistics, retail).`
|
|
307
|
+
);
|
|
308
|
+
return {
|
|
309
|
+
action: "retry_with_changes",
|
|
310
|
+
explanation: `${misses.join(" ")} Pass one or several of these slugs with --industry a,b \u2014 several widen the search, any of them matching. Nothing was charged.`
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
export {
|
|
315
|
+
noSerpRowsHints,
|
|
316
|
+
advertisersHints,
|
|
317
|
+
keywordsForSiteHints,
|
|
318
|
+
webSourceHints,
|
|
319
|
+
fetchHints,
|
|
320
|
+
webDepthHints,
|
|
321
|
+
keywordMetricsHints,
|
|
322
|
+
redditSearchHints,
|
|
323
|
+
redditThreadHints,
|
|
324
|
+
redditSubredditsHints,
|
|
325
|
+
REDDIT_LINK_REJECTED,
|
|
326
|
+
redditPageFix,
|
|
327
|
+
googleAdsHints,
|
|
328
|
+
linkedinPersonHints,
|
|
329
|
+
transcriptHints,
|
|
330
|
+
companyHints,
|
|
331
|
+
companySearchHints,
|
|
332
|
+
unknownIndustriesFix
|
|
333
|
+
};
|
|
334
|
+
//# sourceMappingURL=chunk-OADMSHME.js.map
|