@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/canvas/static-ad-canvas.ts","../src/commands/canvas/named-people-read.ts","../src/commands/canvas/static-run-review.ts","../src/commands/canvas/glance-check.ts","../src/commands/canvas/render-state.ts"],"sourcesContent":["import { STATIC_AD_ROLE } from \"../../engine/scaffold/static-render-briefs.ts\";\nimport { STATIC_VARIANTS_ROLE } from \"../../engine/scaffold/static-topology.ts\";\n\n/**\n * A static ad canvas, by role: an ingest tagged as the static ad's blueprint, or a node that\n * renders a static ad's variants. A canvas scaffolded by the overlay engine (a `compose_spec`\n * ingest) still counts, so a creative already in a client workspace reads as one until it is\n * re-scaffolded.\n */\nexport function isStaticAdCanvas(parsed: unknown): boolean {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n if (!Array.isArray(nodes)) return false;\n return nodes.some((n) => {\n const role = (n as { tags?: { role?: unknown } } | null)?.tags?.role;\n if (role === STATIC_VARIANTS_ROLE) return true;\n return n?.type === \"ingest\" && (role === STATIC_AD_ROLE || n?.id === \"compose_spec\");\n });\n}\n","/**\n * Who a static ad's copy names, read by the text model the claim gate reads with (`claim-check.ts`\n * `CLAIMS_MODEL`): a fast extraction pinned to one provider at temperature 0, so the same copy\n * reads the same, and kept in the workspace's cache by the copy, the model and the prompt. The\n * answer is checked against the copy (`readPeople`); a reading that fails is null, and the caller\n * casts nobody rather than guess. Measured on 2026-10-07 (scripts/named-people-evals): see\n * docs/decision-model.md.\n */\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { askAboutText, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport {\n type NamedPerson,\n PEOPLE_PROMPT_VERSION,\n type PeopleReader,\n peoplePrompt,\n readPeople,\n} from \"../../engine/scaffold/static-named-people.ts\";\nimport { CLAIMS_MODEL, CLAIMS_REQUEST } from \"./claim-check.ts\";\n\nconst PEOPLE_TIMEOUT_MS = 30_000;\n\n/** The real reader: each copy read once and kept in `cacheDir`, the spend of every call made going to `spent`. */\nexport function peopleReader(cacheDir: string, spent: (usage: ReviewUsage) => void): PeopleReader {\n const dir = path.join(cacheDir, \"named-people\");\n return async (lines) => {\n const said = lines.filter((l) => l.trim());\n if (said.length === 0) return [];\n const key = createHash(\"sha256\")\n .update(JSON.stringify([PEOPLE_PROMPT_VERSION, CLAIMS_MODEL, said]))\n .digest(\"hex\");\n const file = path.join(dir, `${key}.json`);\n const cached = await readFile(file, \"utf8\")\n .then((text) => readPeople(JSON.parse(text), said))\n .catch(() => null);\n if (cached) return cached;\n const answer = await askAboutText(CLAIMS_MODEL, peoplePrompt(said), spent, {\n timeoutMs: PEOPLE_TIMEOUT_MS,\n request: CLAIMS_REQUEST,\n });\n const people: NamedPerson[] | null = readPeople(answer, said);\n if (people) {\n await mkdir(dir, { recursive: true });\n await writeFile(file, JSON.stringify(answer), \"utf8\");\n }\n return people;\n };\n}\n","import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { ExpectedLine } from \"../../engine/nodes/local/lib/copy-match.ts\";\nimport type { FindingKind, RenderFinding, ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport {\n type JudgeScore,\n judgeWinner,\n nearIdenticalFindings,\n samePictureSizes,\n parseJudgeScores,\n reviewRenderedStatic,\n type StaticVerdict,\n staticVerdict,\n} from \"../../engine/nodes/local/lib/static-review.ts\";\nimport {\n type InterfaceWords,\n nativeChrome,\n nativeCopy,\n nativeSurfaceName,\n readInterfaceWords,\n} from \"../../engine/scaffold/native-surface.ts\";\nimport { type AdSpec, conceptSummary, readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { formatOfAdaptId } from \"../../engine/scaffold/static-adapt-briefs.ts\";\nimport { castsNobody } from \"../../engine/scaffold/static-brief.ts\";\nimport { uncastPeople } from \"../../engine/scaffold/static-named-people.ts\";\nimport { peopleReader } from \"./named-people-read.ts\";\nimport { findWorkspaceRoot } from \"./normalize-paths.ts\";\nimport { heldRules } from \"./rule-gate.ts\";\nimport { BRAND_LOGO_ROLE } from \"../../engine/scaffold/static-render-briefs.ts\";\nimport {\n isPlateCanvas,\n LOGO_COMPOSITE_ROLE,\n nodesWithRole,\n STATIC_ADAPT_FORMAT_ROLE,\n STATIC_ADAPT_ROLE,\n STATIC_FIX_ROLE,\n STATIC_FORMAT_ROLE,\n STATIC_LEAD_ROLE,\n STATIC_MASTER_ROLE,\n STATIC_PICK_ROLE,\n STATIC_PLACE_ROLE,\n STATIC_PLATE_ROLE,\n STATIC_SAFE_FIT_ROLE,\n STATIC_SIZE_ROLE,\n STATIC_VARIANT_CALL_ROLE,\n STATIC_VARIANTS_ROLE,\n staticMasterFormat,\n VARIANT_PREFILTER_ROLE,\n} from \"../../engine/scaffold/static-topology.ts\";\nimport { compareSizes, sizeDifferenceFinding } from \"../../engine/nodes/local/lib/size-consistency.ts\";\nimport { MISALIGNED } from \"../../engine/nodes/local/staticFormat.ts\";\nimport { describeMarket, type ViewerProfile } from \"../../viewer-profile.ts\";\nimport { finalOutputLabelsFromCanvas } from \"./run-record.ts\";\nimport { type AskGlanceModel, gatewayGlanceModel, glanceCheck } from \"./glance-check.ts\";\nimport { deliveredLogoFindings, logoPlacementFindings } from \"./logo-review.ts\";\nimport { carryUnchanged, formatOfSizeNode, keptLostHint, PATCHED_WORDS, UNREAD_WORDS } from \"./static-autofix.ts\";\nimport { frontmatterOf } from \"../creatives/ideas-model.ts\";\nimport { describeViewer, jevReadJudge, type ViewerIntended } from \"./viewer-check.ts\";\nimport { readCompanyReading } from \"../../engine/creative-context/company.ts\";\n\ntype ImageLike = { kind?: unknown; path?: unknown; url?: unknown };\n\nfunction imagesOf(output: unknown): ImageLike[] | null {\n const list = Array.isArray(output) ? output : [output];\n const images = list.filter((o): o is ImageLike => Boolean(o) && typeof o === \"object\");\n return images.length > 0 && images.every((i) => i.kind === \"image\") ? images : null;\n}\n\nfunction promptPathOf(parsed: unknown): string | null {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n if (!Array.isArray(nodes)) return null;\n const prompt = nodes.find((n) => n?.id === \"prompt\" && n?.type === \"ingest\") as\n | { params?: { source?: unknown; path?: unknown; expect?: unknown } }\n | undefined;\n const p = prompt?.params;\n return p?.source === \"path\" && p.expect === \"json\" && typeof p.path === \"string\" ? p.path : null;\n}\n\n/**\n * What a finished static ad run delivered, for the review: every output image with the\n * format its collect label names, and the prompt.json its copy came from. Null for any run\n * that is not a static ad (a video, a canvas with no blueprint).\n */\nexport function staticReviewTargets(\n parsed: unknown,\n output: unknown,\n): { promptPath: string; images: Array<{ path: string; format: string }> } | null {\n const promptPath = promptPathOf(parsed);\n const images = imagesOf(output);\n if (!promptPath || !images) return null;\n const labels = finalOutputLabelsFromCanvas(parsed)?.labels ?? [];\n return {\n promptPath,\n // A local file when the run downloaded it, else its durable URL.\n images: images.flatMap((image, i) => {\n const source = typeof image.path === \"string\" ? image.path : typeof image.url === \"string\" ? image.url : null;\n return source ? [{ path: source, format: labels[i] ?? \"\" }] : [];\n }),\n };\n}\n\ntype ShapeNode = {\n id?: unknown;\n type?: unknown;\n params?: { n?: unknown; formats?: unknown; judge_model?: unknown };\n inputs?: { reference?: unknown; image?: unknown; images?: unknown; logo?: unknown };\n tags?: { role?: unknown };\n};\n\nfunction nodesOf(parsed: unknown): ShapeNode[] {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n return Array.isArray(nodes) ? (nodes as ShapeNode[]) : [];\n}\n\nconst refId = (ref: unknown): string | null =>\n typeof ref === \"string\" ? (ref.match(/^\\$ref:([a-z][a-z0-9_]*)\\./)?.[1] ?? null) : null;\n\nconst hasRole = (n: ShapeNode, role: string) => n.tags?.role === role;\n\n/** How many variants the run rendered: by role on the one-picture graph, by id on an older run's. */\nfunction variantCount(nodes: ShapeNode[]): number {\n const calls = nodes.filter((n) => hasRole(n, STATIC_VARIANT_CALL_ROLE)).length;\n if (calls > 0) return calls;\n const one = nodes.find((n) => hasRole(n, STATIC_VARIANTS_ROLE) && n.type === \"image_generate\");\n if (one) return typeof one.params?.n === \"number\" ? one.params.n : 1;\n if (nodes.some((n) => hasRole(n, STATIC_FIX_ROLE))) return 1;\n return nodes.filter((n) => n.type === \"image_generate\" && /^ad(_[a-z])?$/.test(String(n.id))).length;\n}\n\n/**\n * What a static ad run actually made, read off the canvas that ran (by node role; an older\n * run's graph by its ids): how many variants, whether a judge chose between them, how many\n * sizes were re-laid out, cut or adapted from the chosen picture\n * (or, on an older run, re-laid from it), and whether the brand's real logo file is on the ad.\n */\nexport function staticRunShape(parsed: unknown): {\n candidates: number;\n judged: boolean;\n relays: number;\n cuts: number;\n relaid: number;\n adapted: number;\n /** Master shape `plate`: the pictures drawn (one per variant), and the sizes cut from the chosen one with their words set. */\n plates: number;\n worded: number;\n logo: boolean;\n} {\n const nodes = nodesOf(parsed);\n const renders = nodes.filter((n) => n.type === \"image_generate\" && typeof n.id === \"string\");\n const candidates = variantCount(nodes);\n const logoIds = new Set(nodes.filter((n) => hasRole(n, BRAND_LOGO_ROLE)).map((n) => String(n.id)));\n const logo =\n nodes.some((n) => hasRole(n, LOGO_COMPOSITE_ROLE)) ||\n renders.some((n) => {\n const refs = n.inputs?.reference;\n return (Array.isArray(refs) ? refs : [refs]).some((r) => logoIds.has(refId(r) ?? \"\"));\n }) ||\n // On one picture each size's words call places the logo file.\n nodes.some((n) => n.type === \"static_format\" && logoIds.has(refId(n.inputs?.logo) ?? \"\"));\n const masterId = nodes.find((n) => hasRole(n, STATIC_MASTER_ROLE))?.id;\n const adapt = nodes.find((n) => hasRole(n, STATIC_ADAPT_ROLE));\n return {\n candidates,\n judged:\n candidates > 1 &&\n nodes.some(\n (n) =>\n (n.type === \"image_select\" && (hasRole(n, STATIC_PICK_ROLE) || n.id === \"pick\")) ||\n (hasRole(n, VARIANT_PREFILTER_ROLE) && typeof n.params?.judge_model === \"string\"),\n ),\n relays: masterId !== undefined ? 0 : Math.max(0, renders.length - candidates),\n cuts: nodes.filter((n) => {\n const from = refId(n.inputs?.image);\n return hasRole(n, STATIC_SIZE_ROLE) && from !== null && from === masterId;\n }).length,\n relaid: nodes.filter((n) => hasRole(n, STATIC_ADAPT_FORMAT_ROLE)).length,\n adapted: Array.isArray(adapt?.params?.formats) ? adapt.params.formats.length : 0,\n plates: nodes.some((n) => hasRole(n, STATIC_LEAD_ROLE))\n ? nodes.filter((n) => hasRole(n, STATIC_VARIANT_CALL_ROLE)).length\n : 0,\n // The lead the master delivers is the chosen option's own words, replayed: not a size set again.\n worded: nodes.filter((n) => hasRole(n, STATIC_FORMAT_ROLE) && n.id !== masterReads(nodes)).length,\n logo,\n };\n}\n\n/** The node the master is made from. */\nfunction masterReads(nodes: ShapeNode[]): string | null {\n return refId(nodes.find((n) => hasRole(n, STATIC_MASTER_ROLE))?.inputs?.image);\n}\n\n/** The run in one line, so the report states what ran instead of what usually runs. */\nfunction shapeHint(shape: ReturnType<typeof staticRunShape>, copy: number): string {\n const drawn = shape.plates > 0 ? \" (a picture each without the ad's words, the lead size's words set on it)\" : \"\";\n const variants = `${shape.candidates} variant${shape.candidates === 1 ? \"\" : \"s\"} rendered${drawn}${shape.judged ? \", ranked by the checks with a judge on a tie\" : \", no judge\"}`;\n const sizes = [\n ...(shape.worded > 0\n ? [`${shape.worded} size${shape.worded === 1 ? \"\" : \"s\"} cut from the chosen picture with ${shape.worded === 1 ? \"its\" : \"their\"} words set for ${shape.worded === 1 ? \"it\" : \"them\"} (one request each)`]\n : []),\n ...(shape.relaid > 0\n ? [`${shape.relaid} size${shape.relaid === 1 ? \"\" : \"s\"} re-laid out from the chosen picture (one request each)`]\n : []),\n ...(shape.cuts > 0 ? [`${shape.cuts} size${shape.cuts === 1 ? \"\" : \"s\"} cut from the chosen picture`] : []),\n ...(shape.adapted > 0 ? [`${shape.adapted} adapted from it`] : []),\n ...(shape.relays > 0 ? [`${shape.relays} other format${shape.relays === 1 ? \"\" : \"s\"} re-laid from the winner`] : []),\n ];\n const text = copy === 0 ? \"no copy (the picture is the ad)\" : \"the copy set by the model and read back word for word\";\n return `This run: ${variants}${sizes.length > 0 ? `; ${sizes.join(\"; \")}` : \"\"}; ${text}; ${shape.logo ? \"the brand logo on the ad from its real file\" : \"no logo\"}.`;\n}\n\nconst PAID_FOR = {\n edit: \"one edit of the version shown\",\n sizes: \"only the sizes asked for, laid out again\",\n options: \"new options from scratch, every size made from the one chosen\",\n} as const;\n\n/** What a static run cost and what the credits bought, from the executor's stats. Pure. */\nexport function runCostHint(\n stats: { total_credits: number; total_nodes: number; cached_nodes: number } | undefined,\n kind: keyof typeof PAID_FOR,\n): string | null {\n if (!stats) return null;\n const cached = stats.cached_nodes > 0 ? ` (${stats.cached_nodes} of ${stats.total_nodes} steps came from the cache, free)` : \"\";\n return `This run cost ${Math.round(stats.total_credits)} credits: ${PAID_FOR[kind]}${cached}.`;\n}\n\nasync function textOf(ref: unknown): Promise<string | null> {\n const r = ref as { path?: unknown; url?: unknown } | null;\n try {\n if (typeof r?.path === \"string\") return await readFile(r.path, \"utf8\");\n if (typeof r?.url === \"string\") {\n const res = await fetch(r.url);\n return res.ok ? await res.text() : null;\n }\n } catch {\n return null;\n }\n return null;\n}\n\n/** How a static ad's sizes are made: cut from one picture (`format_<size>`), or each laid out again (`adapt_<size>`). */\nexport type SizeShape = \"plate\" | \"relayout\";\n\n/** The shape a static canvas's sizes are made on, as its size nodes show it. Pure. */\nexport function sizeShapeOf(canvas: unknown): SizeShape {\n return isPlateCanvas(canvas) ? \"plate\" : \"relayout\";\n}\n\n/** The one call that makes a single size again on `shape`, while the chosen picture is right. Pure. */\nexport function oneSizeFix(shape: SizeShape): string {\n return shape === \"plate\"\n ? \"`baker canvas run … --regenerate format_<size>` (for example `format_9x16`) sets that size's words again on the same picture (one request)\"\n : \"`baker canvas run … --regenerate adapt_<size>` (for example `adapt_9x16`) lays out that size again from the same picture (one request)\";\n}\n\n/**\n * The fixes, by what went wrong. Every one is an edit to prompt.json and a re-run, or a correction\n * of the chosen picture: the model draws the picture, so there is no layout to nudge. A bad roll of\n * a right prompt is re-rolled, not re-described; one size wrong is made again by the node its shape\n * makes it with.\n */\nfunction fixHint(shape: SizeShape): string {\n return `One thing wrong in a version that is otherwise right: \\`baker canvas run … --fix \"<what to change>\"\\` edits that version and changes only that, keeping the picture, the layout and the other words (one render). Wrong or missing words: check the lines in prompt.json \\`copy\\` are exactly what should be printed, shorten a line the model keeps breaking, and re-run: a change only to copy, positions or colours is made as an edit of the version shown. Wrong picture, colour or subject: edit prompt.json's \\`scene\\`, \\`colors\\` or \\`references\\`. Layout or a logo drawn wrong: say in each line's \\`position\\` (and \\`scene.layout\\`) where it sits, by what is around it. A right prompt that rolled badly: \\`baker canvas run … --regenerate static_variants\\` renders new options (every size follows from the new pick). One size wrong while the chosen picture is right (words cut or too small, the button small, something drawn twice): ${oneSizeFix(shape)}.`;\n}\n\n/**\n * What the verdict means for the next step, leading the run's hints. Pure.\n *\n * There is no render cap (B2): waste is impossible instead. The same input never bills twice\n * (the cache), a fix edits the version shown at one render, a size problem re-lays only that\n * size, and the same defect after a fix is never retried the same way. A defect a check found\n * is the agent's to fix, never a question for the person: audited Sept 2026, \"Fix what's\n * pending?\" was asked, and the answer recorded as the person's rejection, so every fix became a\n * new version and later chats read the agent's own defects as the company's taste. When a defect\n * cannot be fixed, the best version is shown with what is left, without a question.\n */\nexport function verdictHints(verdict: StaticVerdict, shape: SizeShape = \"plate\"): string[] {\n if (verdict === \"needs_fixes\") {\n const cost =\n shape === \"plate\" ? \"each size's words take one request\" : \"each re-laid-out size takes one request; a cut is free\";\n return [\n `NOT READY: the finished ad has blocking problems. Do not present it as done, and never ask the person whether to fix them: fix them now, inside this version. A defect in a version that is otherwise right is a \\`--fix\\`: it edits the chosen picture only, and every size is made from it again (${cost}). The same defect after a fix means the fix does not work: change the spec (prompt.json) or the approach, never the same retry. If it still cannot be fixed, show the person the best version and say in one plain sentence what is left, in their words (\"the logo sits where Stories covers it\"), without a question; never record your own checks as their feedback.`,\n fixHint(shape),\n ];\n }\n if (verdict === \"not_reviewed\") {\n return [\n \"The finished ad was NOT reviewed: no model gateway key here, or the review model did not answer twice. Look at every word of every format yourself before showing it, or re-run the same command (every node comes from the cache) to review it again.\",\n ];\n }\n if (verdict === \"ready\") {\n return [\"Reviewed every format of the finished ad: every word read back exactly, nothing to fix.\", SHOW_IT];\n }\n return verdict === \"ready_with_notes\" ? [SHOW_IT] : [];\n}\n\n/**\n * The verdict's next step in one line, printed by default in place of `verdictHints` (the full guide, behind\n * `--full`): the guide alone put a reviewed run's result past 1 KB, and the result was tailed for it (BAKER-993). Pure.\n */\nexport function verdictBrief(verdict: StaticVerdict, shape: SizeShape = \"plate\"): string[] {\n if (verdict === \"needs_fixes\") {\n const size = shape === \"plate\" ? \"format_<size>\" : \"adapt_<size>\";\n return [\n `NOT READY: fix every blocking finding now, never asking the person: \\`--fix \"<what to change>\"\\` for one thing wrong, \\`--regenerate ${size}\\` for one size. Never present it as done.`,\n ];\n }\n if (verdict === \"not_reviewed\") return verdictHints(verdict, shape);\n const show = 'Show it as a Version (\"Version 2\"), never a run id or a file; never ask which to keep or whether to publish.';\n if (verdict === \"ready\") return [`Reviewed every format: nothing to fix. ${show}`];\n return verdict === \"ready_with_notes\" ? [show] : [];\n}\n\n/** How a finished version is shown. Live, Oct 2026: ready ads were listed by run id, closing on \"Ready to publish any of these?\". */\nconst SHOW_IT =\n \"Show it as a Version (\\\"Version 2\\\"), never a run id or a file, in one line: the idea's message, who it is for, the customer quote it stands on (or that it is an explore bet), and the finding it answers. Name the versions you would run first; never ask which to keep or whether to publish: the person answers in their own time.\";\n\n/** Words a finished ad may print that are not its copy: what the scene prints, and the other brands' names. */\nexport function allowedSceneWords(spec: Pick<AdSpec, \"scene_text\" | \"third_party_brands\">): string[] {\n return [...new Set([...spec.scene_text, ...spec.third_party_brands.map((b) => b.name)])];\n}\n\n/** Every colour the ad spec names for the brand, the palette the ink of designed type is held to. */\nfunction brandPalette(brand: AdSpec[\"brand\"]): string[] {\n if (!brand) return [];\n const named = [brand.ink, brand.accent, brand.cta, brand.ground, ...brand.palette];\n return [...new Set(named.filter((hex): hex is string => typeof hex === \"string\"))];\n}\n\n/** The ad set's placements for the safe areas; Advantage+ (\"automatic\") is every surface, so the default (Reels) holds. */\nfunction safeAreaPlacements(viewer: ViewerProfile | null | undefined): string[] | undefined {\n const named = (viewer?.placements ?? []).filter((p) => p !== \"automatic\");\n return named.length > 0 && named.length === viewer?.placements.length ? named : undefined;\n}\n\n/** The placements the canvas was laid out for (the variant checks' own), so the review keeps clear of the same interfaces. */\nfunction canvasPlacements(parsed: unknown): string[] | undefined {\n const node = nodesWithRole(parsed, VARIANT_PREFILTER_ROLE)[0] as { params?: { placements?: unknown } } | undefined;\n const placements = node?.params?.placements;\n return Array.isArray(placements) && placements.length > 0 && placements.every((p) => typeof p === \"string\") ? placements : undefined;\n}\n\nexport type StaticRunReview = {\n review: RenderFinding[] | null;\n verdict: StaticVerdict;\n judge: JudgeScore[] | null;\n hints: string[];\n /** The short conditional next steps among `hints` (kept-lost, a copy rule, what the models did not answer), which the default result keeps beside the verdict's brief. */\n notes: string[];\n};\n\n/**\n * Review a finished static ad run: read the judge's scores for the candidates, and look\n * at the delivered images. A blocking finding makes the run NOT ready, and the hints say\n * so before anything else, so a broken ad is never reported as a clean completed run.\n */\nexport async function reviewStaticRun(opts: {\n parsed: unknown;\n output: unknown;\n outputsByNode: Record<string, Record<string, unknown>>;\n onSpend?: (usage: ReviewUsage) => void;\n /** Who the ad reaches (`viewer-check.ts`), so the finished ad is read as them; null when unknown. */\n viewer?: ViewerProfile | null;\n /** The brand's name as the workspace states it (`readStaticBrandKit`), for a spec that names none. */\n brandName?: string;\n /** The words the brand's logo prints, as the workspace states them. */\n lockup?: readonly string[];\n /** The sizes the attempt before this one delivered, to say when a retry made the same picture again. */\n previous?: ReadonlyArray<{ path: string; format: string }>;\n /** The glance model (`glance-check.ts`); the gateway unless given, `false` to skip the glance. */\n glance?: AskGlanceModel | false;\n /** The last autofix round's review and delivered sizes: a size it did not touch keeps that verdict (`carryUnchanged`). */\n settled?: { review: readonly RenderFinding[]; images: ReadonlyArray<{ path: string; format: string }> };\n}): Promise<StaticRunReview | null> {\n const targets = staticReviewTargets(opts.parsed, opts.output);\n if (!targets) return null;\n // The judge's ranking: on the prefilter that asked it on a tie, or (an older run) its own node.\n const prefilterId = nodesWithRole(opts.parsed, VARIANT_PREFILTER_ROLE)[0]?.id;\n const tieBreak = prefilterId ? opts.outputsByNode[prefilterId]?.reasoning : undefined;\n const pickId = nodesWithRole(opts.parsed, STATIC_PICK_ROLE)[0]?.id ?? \"pick\";\n const reasoning = typeof tieBreak === \"string\" ? tieBreak : await textOf(opts.outputsByNode[pickId]?.reasoning);\n const judge = reasoning ? parseJudgeScores(reasoning) : null;\n let copy: string[] = [];\n let mechanisms: string[] = [];\n let intended: ViewerIntended & { recognition?: string } = {};\n let expectLogo = false;\n let concept: ReturnType<typeof conceptSummary> = null;\n let uncast: string[] = [];\n let nobody = false;\n let brand: string | undefined = opts.brandName;\n let lockup: string[] = [...(opts.lockup ?? [])];\n let sceneText: string[] = [];\n let lines: ExpectedLine[] = [];\n let native: string | undefined;\n let palette: string[] = [];\n try {\n // An ad spec or an older blueprint, read the one way every reader agrees on.\n const spec = readAdSpec(JSON.parse(await readFile(targets.promptPath, \"utf8\")));\n copy = spec.copy.map((l) => l.text);\n lines = spec.copy.map((l) => ({ text: l.text, lettering: l.lettering, ...(l.role ? { role: l.role } : {}) }));\n if (spec.native) {\n // A native screen prints exactly its own words, and the platform's names and counts around them.\n copy = nativeCopy(spec.native);\n lines = copy.map((text) => ({ text, lettering: \"designed\" as const }));\n native = nativeSurfaceName(spec.native);\n }\n // The platform's own colours on a native screen (a WhatsApp bubble, X's blue) are not off-brand.\n palette = spec.native ? [] : brandPalette(spec.brand);\n mechanisms = spec.mechanism.map((m) => m.device);\n brand = spec.brand?.name ?? opts.brandName;\n // src/creatives/<slug>/prompt.json → the workspace, whose company reading says what it sells.\n const sells = (await readCompanyReading(path.resolve(path.dirname(targets.promptPath), \"../../..\")))?.sells;\n intended = {\n ...(spec.message?.trim() ? { offer: spec.message.trim() } : {}),\n ...(spec.viewer?.who.trim() ? { persona: spec.viewer.who.trim() } : {}),\n ...(spec.recognition?.trim() ? { recognition: spec.recognition.trim() } : {}),\n ...(sells ? { sells } : {}),\n };\n lockup = [...new Set([...(spec.brand?.lockup ?? []), ...lockup])];\n sceneText = [\n ...allowedSceneWords(spec),\n ...(spec.native ? nativeChrome(spec.native, spec.viewer?.market?.language, interfaceWordsOf(opts.parsed)) : []),\n ];\n // A native screen shows the logo where the platform does (every avatar of the brand's posts), and\n // a brand with no logo file gets none drawn (never a stand-in): neither is a missing logo.\n expectLogo = spec.logo && !spec.native && staticRunShape(opts.parsed).logo;\n concept = conceptSummary(spec);\n // Who the copy names, read once per copy and kept in the workspace's cache.\n const cacheDir = path.join(findWorkspaceRoot(path.dirname(targets.promptPath)) ?? path.dirname(targets.promptPath), \"canvas\", \".cache\");\n const people = spec.native ? [] : ((await peopleReader(cacheDir, (u) => opts.onSpend?.(u))(copy)) ?? []);\n uncast = uncastPeople(spec, people);\n // A native screen's avatars are the platform's; any other ad that casts nobody must show nobody.\n nobody = !spec.native && castsNobody(spec);\n } catch {\n copy = [];\n }\n const shape = staticRunShape(opts.parsed);\n const placements = canvasPlacements(opts.parsed) ?? safeAreaPlacements(opts.viewer);\n const masterFormat = staticMasterFormat(opts.parsed) ?? undefined;\n // The glance and the same-picture check need nothing from the review: all three run at once.\n const glancing =\n opts.glance === false\n ? Promise.resolve(null)\n : glanceAtFinished(\n targets.images,\n opts.viewer ?? STRANGER,\n intended,\n opts.glance ?? gatewayGlanceModel(opts.onSpend),\n opts.onSpend,\n ).catch(() => null);\n const comparing = opts.previous\n ? nearIdenticalFindings(targets.images, opts.previous).catch(() => [])\n : Promise.resolve([]);\n // Each size a model drew apart from the main one, held to it: the same people and product, once, unstretched.\n const leadFormat = masterFormat ?? targets.images[0]?.format ?? \"\";\n const lead = targets.images.find((i) => i.format === leadFormat);\n const drawn = native || !lead ? [] : drawnSizes(opts.parsed, targets.images.map((i) => i.format), leadFormat);\n const matching =\n lead && drawn.length > 0\n ? compareSizes(\n lead,\n targets.images.filter((i) => drawn.includes(i.format)),\n { ...(opts.onSpend ? { onSpend: opts.onSpend } : {}) },\n ).catch(() => drawn.map((format) => ({ format, compared: false, differences: [] })))\n : Promise.resolve([]);\n // A size an autofix round left byte for byte as it was keeps its last verdict: only what changed is read again.\n const untouched = opts.settled ? await samePictureSizes(targets.images, opts.settled.images) : [];\n const changed = targets.images.filter((i) => !untouched.includes(i.format));\n // The company's rules this ad is held to, read as they stand now: checked on the finished ad beside the review.\n const held = await heldRules(path.dirname(targets.promptPath)).catch(() => ({ rules: [] }));\n const review = await reviewRenderedStatic({\n images: changed.length > 0 ? changed : targets.images,\n rules: held.rules,\n copy,\n lines,\n palette,\n ...(placements ? { placements } : {}),\n ...(brand ? { brand } : {}),\n ...(lockup.length > 0 ? { lockup } : {}),\n ...(sceneText.length > 0 ? { sceneText } : {}),\n ...(masterFormat ? { masterFormat } : {}),\n ...(expectLogo ? { expectLogo } : {}),\n ...(concept && concept.mustKeep.length > 0 && referenceSource(opts.parsed)\n ? { concept: { ...concept, reference: referenceSource(opts.parsed) as string } }\n : {}),\n logo: shape.logo,\n ...(native ? { native } : {}),\n ...(uncast.length > 0 ? { uncastPeople: uncast } : {}),\n ...(nobody ? { castsNobody: true } : {}),\n ...(native ? { scrolled: scrolledLines(opts.parsed, opts.outputsByNode) } : {}),\n mechanisms,\n ...(opts.viewer ? { viewer: describeViewer(opts.viewer) } : {}),\n onSpend: opts.onSpend,\n });\n // The finished ad at a glance, as the viewer meets it: counted only once someone looked at it at all.\n const [glanced, compared, matched] = await Promise.all([glancing, comparing, matching]);\n const glance = review === null ? null : glanced;\n const unchanged = review === null ? [] : compared;\n const sized = sizeFactFindings(opts.parsed, opts.outputsByNode);\n // The logo is the brand's file as it is, and it and the headline sit wholly inside the frame and its safe area.\n const logoChecked = expectLogo && review !== null;\n const placedLogo = logoChecked ? logoPlacementFindings(opts.parsed, opts.outputsByNode) : [];\n const deliveredLogo = logoChecked\n ? await deliveredLogoFindings(opts.parsed, opts.outputsByNode, changed.length > 0 ? changed : targets.images, [\n ...new Set([...palette, \"#FFFFFF\", \"#000000\"]),\n ]).catch(() => [])\n : [];\n const differing = matched.flatMap((m) => (m.differences.length > 0 ? [sizeDifferenceFinding(m.format, m.differences)] : []));\n const fresh =\n review === null\n ? null\n : [...review, ...(glance ?? []), ...unchanged, ...sized, ...placedLogo, ...deliveredLogo, ...differing];\n const reviewed =\n fresh === null || !opts.settled\n ? fresh\n : carryUnchanged(fresh, opts.settled.review, untouched);\n const verdict = staticVerdict(reviewed);\n const hints = verdictHints(verdict, sizeShapeOf(opts.parsed));\n const notes: string[] = [];\n /** A short conditional step: in the full hints, and in what the default result prints. */\n const note = (hint: string): void => {\n hints.push(hint);\n notes.push(hint);\n };\n // What made the proven ad win, gone from a size: restored as the plan decided, or built on another proven ad.\n const lost = keptLostHint(reviewed ?? [], await ideaOf(targets.promptPath));\n if (lost) note(lost);\n // A defect on re-laid sizes only is answered by laying out those sizes again: said before the list.\n const sizeHints = verdict === \"needs_fixes\" ? sizeFixHints(opts.parsed, reviewed) : [];\n const sizesFirst = sizeHints[0]?.startsWith(\"Do this first\") === true;\n if (sizesFirst) hints.push(...sizeHints);\n for (const f of reviewed ?? []) hints.push(`${f.severity === \"blocking\" ? \"Must fix\" : \"Should fix\"}: ${f.what}`);\n if ((reviewed ?? []).some((f) => f.severity === \"blocking\" && f.kind?.item === \"rule\" && f.kind.element === \"copy\")) {\n note(\n 'A company rule the words break is yours to rewrite in prompt.json\\'s `copy` (no automatic round changes the words); only when the person asked for those words, keep them and add `\"waive\": [{\"rule\": \"<id>\", \"why\": \"<their ask>\"}]`.',\n );\n }\n if (review !== null && glance === null && opts.glance !== false) {\n note(\"The finished ad was not shown to a stranger at a glance (the model did not answer): look at the 4:5 at phone size yourself and say what it sells in three seconds.\");\n }\n const unmatched = review === null ? [] : matched.filter((m) => !m.compared).map((m) => m.format);\n if (unmatched.length > 0) {\n note(\n `The ${unmatched.join(\" and \")} could not be compared with the ${leadFormat} (the model did not answer): look at them side by side yourself, for the same people and product, shown once, unstretched.`,\n );\n }\n if (!sizesFirst) hints.push(...sizeHints);\n hints.push(shapeHint(shape, copy.length));\n hints.push(...variantHints(judge, prefilterOutcome(opts.parsed, opts.outputsByNode)));\n return { review: reviewed, verdict, judge, hints, notes };\n}\n\n/** By format, the lines a native chat scrolled off that size (`static_native`'s `scrolled` output). */\nexport function scrolledLines(parsed: unknown, outputsByNode: Record<string, unknown>): Record<string, string[]> {\n return Object.fromEntries(\n nodesOf(parsed).flatMap((n) => {\n const out = typeof n.id === \"string\" ? (outputsByNode[n.id] as { scrolled?: unknown } | undefined) : undefined;\n const format = (n as { params?: { format?: unknown } }).params?.format;\n return n.type === \"static_native\" && typeof format === \"string\" && Array.isArray(out?.scrolled)\n ? [[format, out.scrolled.filter((t): t is string => typeof t === \"string\")]]\n : [];\n }),\n );\n}\n\n/** The idea a creative carries (`idea:` in the `_definition.md` beside its prompt.json); undefined when none. */\nasync function ideaOf(promptPath: string): Promise<string | undefined> {\n const definition = await readFile(path.join(path.dirname(promptPath), \"_definition.md\"), \"utf8\").catch(() => \"\");\n const idea = frontmatterOf(definition)?.idea;\n return typeof idea === \"string\" && idea.trim() ? idea.trim() : undefined;\n}\n\n/** The reference ad's picture the canvas records (its `original` ingest): a URL, or a path once resolved. */\nfunction referenceSource(parsed: unknown): string | null {\n const original = nodesOf(parsed).find((n) => n.id === \"original\" && n.type === \"ingest\") as\n | { params?: { url?: unknown; path?: unknown } }\n | undefined;\n const source = original?.params?.url ?? original?.params?.path;\n return typeof source === \"string\" && !source.includes(\"[TODO\") ? source : null;\n}\n\n/** The interface's words the canvas's screens were drawn with (`static_native` `interface_words`), when written for the viewer's language. */\nfunction interfaceWordsOf(parsed: unknown): InterfaceWords | undefined {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n const screen = Array.isArray(nodes)\n ? (nodes as Array<{ type?: unknown; params?: { interface_words?: unknown } }>).find((n) => n?.type === \"static_native\")\n : undefined;\n return readInterfaceWords(screen?.params?.interface_words) ?? undefined;\n}\n\n/** Who sees an ad nobody said who sees: a cold stranger, as `resolveViewer` defaults. */\nconst STRANGER: ViewerProfile = { temperature: \"cold\", knows: [], placements: [\"automatic\"], source: \"knowledge\", reasons: [] };\n\n/** The glance at the delivered 4:5 (the feed's size), else the first size delivered. */\nasync function glanceAtFinished(\n images: ReadonlyArray<{ path: string; format: string }>,\n viewer: ViewerProfile,\n intended: ViewerIntended & { recognition?: string },\n ask: AskGlanceModel,\n onSpend?: (usage: ReviewUsage) => void,\n): Promise<RenderFinding[] | null> {\n const shown = images.find((i) => i.format === \"4:5\") ?? images[0];\n if (!shown) return null;\n return await glanceCheck({\n image: shown.path,\n format: shown.format,\n viewer,\n intended,\n ask,\n judge: jevReadJudge(onSpend),\n ...(viewer.market ? { market: describeMarket(viewer.market) } : {}),\n });\n}\n\n/**\n * One hint per re-laid-out size a blocking finding is on (findings name their size first,\n * \"9:16: …\"): that size alone is laid out again from the same chosen picture, one request,\n * rather than the picture corrected with `--fix` (which makes every size again). A band miss\n * the safe fit could not clear also says the layout has to change. When every blocking finding\n * is on a re-laid size, the first hint says so: that request comes before any `--fix`. Pure.\n */\nexport function sizeFixHints(parsed: unknown, review: RenderFinding[] | null): string[] {\n const cut = new Set(nodesWithRole(parsed, STATIC_FORMAT_ROLE).map((n) => n.id));\n const relaid = [...nodesWithRole(parsed, STATIC_ADAPT_FORMAT_ROLE).map((n) => n.id), ...cut];\n const blocking = (review ?? []).filter((f) => f.severity === \"blocking\");\n const regenerate = relaid.flatMap((id) => {\n const format = formatOfSizeNode(parsed, id);\n if (!format || !blocking.some((f) => f.what.startsWith(`${format}:`))) return [];\n return [\n cut.has(id)\n ? `The ${format}'s words alone need fixing and the picture is right: \\`baker canvas run … --regenerate ${id}\\` sets the ${format}'s words again on the same picture (one request). If the picture itself is wrong, \\`--fix\\` it instead: every size's words are set again on the corrected picture.`\n : `The ${format} alone needs fixing and the chosen picture is right: \\`baker canvas run … --regenerate ${id}\\` lays out the ${format} again from the same picture (one request). If the chosen picture itself is wrong, \\`--fix\\` it instead: every size follows.`,\n ];\n });\n const relaidFormats = relaid.map((id) => formatOfSizeNode(parsed, id)).filter((f): f is string => Boolean(f));\n const sizesOnly =\n regenerate.length > 0 && blocking.every((f) => relaidFormats.some((format) => f.what.startsWith(`${format}:`)));\n const lead = sizesOnly ? regenerate.map((h, i) => (i === 0 ? `Do this first, not a --fix: ${h}` : h)) : regenerate;\n return [...lead, ...safeFitHints(parsed, blocking)];\n}\n\n/** How a finding says an interface covers a word or the logo (`static-review.ts` `outsideBand`). */\nconst COVERED = / sits? where .+? covers? (?:it|them) /;\n\n/**\n * A band miss on a size the safe fit already ran on: small misses are corrected there, for\n * free, so what is left is more than a shrink to 85% clears, and asking the model to move it\n * a few points only loops (it moves about 1%). Pure.\n */\nfunction safeFitHints(parsed: unknown, blocking: readonly RenderFinding[]): string[] {\n return nodesWithRole(parsed, STATIC_SAFE_FIT_ROLE).flatMap((n) => {\n const format = typeof n.params?.format === \"string\" ? n.params.format : formatOfSlug(n.id.replace(/^safe_/, \"\"));\n if (!blocking.some((f) => f.what.startsWith(`${format}:`) && COVERED.test(f.what))) return [];\n return [\n `The ${format} was already shrunk and shifted automatically to clear what the app covers; small misses are corrected that way, so this one is too large for it. Change the layout itself (shorter copy, fewer lines, a smaller block of text) rather than a \\`--fix\\` asking to move it, which moves it only about 1%.`,\n ];\n });\n}\n\n/** What a size's facts name beside its reason. */\ntype SizeFacts = { covered?: string[] };\n\n/** What a size cut from one picture could not do with its words or its cut (`static_format` facts), said as the review says it. */\nconst SIZE_FACT_FINDING: Record<string, { what: (format: string, facts: SizeFacts) => string; kind: FindingKind }> = {\n band_too_far: {\n what: (format) =>\n `${format}: the words reach too far past the part of the frame the app leaves clear to be moved inside it; set them inside it.`,\n kind: { item: \"safe_zone\", element: \"copy\", defect: \"other\", edges: [] },\n },\n words_over_face: {\n what: (format) => `${format}: the words were set over a face; set them where no face is.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n words_misaligned: {\n what: (format) =>\n `${format}: ${PATCHED_WORDS}, which shows as a box; set them again on the same picture.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n words_not_read: {\n what: (format) =>\n `${format}: ${UNREAD_WORDS}, so the picture around them may have been redrawn; set them again on the same picture.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n subject_covered: {\n what: (format, facts) =>\n `${format}: the words hide ${(facts.covered ?? [\"the product\"]).join(\" and \")}, which the other sizes show; set them where it stays in view.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n subject_cut: {\n what: (format) => `${format}: no cut of the picture keeps every person and product whole in this size.`,\n kind: { item: \"picture\", element: \"picture\", defect: \"cut\", edges: [] },\n },\n};\n\n/** The products a size's facts say its words hide; null when the size recorded no facts. */\nfunction coveredIn(facts: unknown): string[] | null {\n if (facts === undefined || facts === null || typeof facts !== \"object\") return null;\n const covered = (facts as { covered?: unknown }).covered;\n return Array.isArray(covered) ? covered.filter((c): c is string => typeof c === \"string\") : [];\n}\n\n/**\n * A product a size's words hide that every size's words hide (each size recorded): no size shows it\n * to be held to, so it is noted once, on the first size that hides it, never blocked. Pure.\n */\nfunction hiddenEverywhere(\n sizes: ReadonlyArray<{ id: string; format: string | null }>,\n outputsByNode: Record<string, Record<string, unknown>>,\n): { labels: Set<string>; notes: RenderFinding[] } {\n const lists = sizes.map((s) => ({ ...s, covered: coveredIn(outputsByNode[s.id]?.facts) }));\n const labels = new Set(\n (lists[0]?.covered ?? []).filter((label) => lists.length > 1 && lists.every((s) => s.covered?.includes(label))),\n );\n const first = lists.find((s) => s.format && s.covered?.some((label) => labels.has(label)));\n const notes: RenderFinding[] =\n first?.format && labels.size > 0\n ? [\n {\n severity: \"warning\",\n what: `${first.format}: the words hide ${[...labels].join(\" and \")} in every size; set them where it stays in view if it is what the ad sells.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n ]\n : [];\n return { labels, notes };\n}\n\n/**\n * Blocking findings from what each size cut from one picture recorded (`facts.reason`): words too far\n * past the band for code to move, words over a face, or a picture this size cannot be cut from. In\n * the canvas's order. Pure.\n */\nexport function sizeFactFindings(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): RenderFinding[] {\n const added = paintedAdditions(parsed, outputsByNode);\n const sizes = nodesWithRole(parsed, STATIC_FORMAT_ROLE);\n const everywhere = hiddenEverywhere(\n sizes.map((n) => ({ id: n.id, format: formatOfSizeNode(parsed, n.id) })),\n outputsByNode,\n );\n const found = sizes.flatMap((n) => {\n const format = formatOfSizeNode(parsed, n.id);\n const facts = (outputsByNode[n.id]?.facts ?? {}) as {\n reason?: unknown;\n covered?: unknown;\n residual?: unknown;\n words_mode?: unknown;\n };\n const shownElsewhere = (coveredIn(facts) ?? []).some((label) => !everywhere.labels.has(label));\n const said =\n typeof facts.reason === \"string\" && (facts.reason !== \"subject_covered\" || shownElsewhere)\n ? SIZE_FACT_FINDING[facts.reason]\n : undefined;\n // Only one reason is recorded; a render that sat this far from the picture left a patch whatever it\n // was, unless the size is that render taken whole (a band laid over the picture sits far from it by design).\n const patched =\n facts.reason !== \"words_misaligned\" &&\n facts.words_mode !== \"whole\" &&\n typeof facts.residual === \"number\" &&\n facts.residual > MISALIGNED\n ? SIZE_FACT_FINDING.words_misaligned\n : undefined;\n const covered = (coveredIn(facts) ?? []).filter((label) => !everywhere.labels.has(label));\n const fromPlate = refId((n.inputs as { plate?: unknown } | undefined)?.plate);\n const extra = fromPlate ? added.get(fromPlate) : undefined;\n if (!format) return [];\n return [\n ...[said, patched].flatMap((f) =>\n f ? [{ severity: \"blocking\" as const, what: f.what(format, covered.length > 0 ? { covered } : {}), kind: f.kind }] : [],\n ),\n ...(extra\n ? [\n {\n severity: \"blocking\" as const,\n what: `${format}: the picture painted wider from the chosen one shows ${extra.join(\", \")}, which the other sizes do not. It must show the main size's people and product, once each.`,\n kind: { item: \"sizes\" as const, element: \"picture\" as const, defect: \"other\" as const, edges: [] },\n },\n ]\n : []),\n ];\n });\n return [...found, ...everywhere.notes];\n}\n\n/** By plate node, what its painting added (`static_plate` facts `subject_added`). Pure. */\nfunction paintedAdditions(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): Map<string, string[]> {\n return new Map(\n nodesWithRole(parsed, STATIC_PLATE_ROLE).flatMap((n): Array<[string, string[]]> => {\n const facts = outputsByNode[n.id]?.facts as { reason?: unknown; added?: unknown } | undefined;\n const added = Array.isArray(facts?.added) ? facts.added.filter((a): a is string => typeof a === \"string\") : [];\n return facts?.reason === \"subject_added\" && added.length > 0 ? [[n.id, added]] : [];\n }),\n );\n}\n\n/**\n * The delivered sizes a model drew apart from the main size (`masterFormat`), each compared with it\n * after the run (`size-consistency.ts`): on a re-laid-out run every other size; on one picture only a\n * size cut from a picture painted from it (`static_plate`), since a cut of the chosen picture keeps\n * its people and products pixel for pixel. Pure.\n */\nexport function drawnSizes(parsed: unknown, delivered: readonly string[], masterFormat: string): string[] {\n const others = delivered.filter((format) => format && format !== masterFormat);\n const cut = nodesWithRole(parsed, STATIC_FORMAT_ROLE);\n if (cut.length === 0) return others;\n const painted = new Set(nodesWithRole(parsed, STATIC_PLATE_ROLE).map((n) => n.id));\n const fromPainted = new Set(\n cut.flatMap((n) => {\n const plate = refId((n.inputs as { plate?: unknown } | undefined)?.plate);\n const format = formatOfSizeNode(parsed, n.id);\n return plate && painted.has(plate) && format ? [format] : [];\n }),\n );\n return others.filter((format) => fromPainted.has(format));\n}\n\n/** A node-id format fragment back to its format: `9x16` → `9:16`, `1_91x1` → `1.91:1`. */\nfunction formatOfSlug(slug: string): string {\n return slug.replace(\"x\", \":\").replace(\"_\", \".\");\n}\n\ntype PrefilterDrop = { index: number; reasons: string[] };\ntype PrefilterOutcome = {\n images?: unknown[];\n /** Which variant each of `images` is, in the order the judge saw them. */\n order?: number[];\n dropped: PrefilterDrop[];\n flagged?: PrefilterDrop;\n usage?: ReviewUsage[];\n};\n\nfunction prefilterNodeId(parsed: unknown): string | null {\n return nodesWithRole(parsed, VARIANT_PREFILTER_ROLE)[0]?.id ?? null;\n}\n\n/** What the variant checks did on this run (`static_prefilter`), null on a run without them. */\nfunction prefilterOutcome(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): PrefilterOutcome | null {\n const id = prefilterNodeId(parsed);\n const out = id ? (outputsByNode[id] as PrefilterOutcome | undefined) : undefined;\n return out && Array.isArray(out.dropped) ? out : null;\n}\n\n/**\n * What the run's box readers cost, for the run record's `reviewUsage`: the variant checks'\n * and each 9:16 safe fit's, as the node reported the gateway's `usage.cost`, and nothing for\n * a node that came from the cache (that call was paid for, and recorded, by the run that made it).\n */\nexport function prefilterSpend(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n nodeRuns: ReadonlyArray<{ node_id: string; cached: boolean }>,\n): ReviewUsage[] {\n const cached = (id: string) => nodeRuns.some((r) => r.node_id === id && r.cached);\n const id = prefilterNodeId(parsed);\n const checks = id && !cached(id) ? (prefilterOutcome(parsed, outputsByNode)?.usage ?? []) : [];\n const fits = [\n ...nodesWithRole(parsed, STATIC_SAFE_FIT_ROLE),\n ...nodesWithRole(parsed, STATIC_PLACE_ROLE),\n // A size cut from one picture reads its subjects and its words; a widened picture its subjects.\n ...nodesWithRole(parsed, STATIC_LEAD_ROLE),\n ...nodesWithRole(parsed, STATIC_FORMAT_ROLE),\n ...nodesWithRole(parsed, STATIC_PLATE_ROLE),\n // The logo's composite reads the size's words for its check.\n ...nodesWithRole(parsed, LOGO_COMPOSITE_ROLE),\n ]\n .filter((n) => !cached(n.id))\n .flatMap((n) => {\n const usage = outputsByNode[n.id]?.usage;\n return Array.isArray(usage) ? (usage as ReviewUsage[]) : [];\n });\n return [...checks, ...fits];\n}\n\n/**\n * The variants in the agent's words: which the checks set aside before the judge and why, and\n * which the judge picked. Variants are numbered from 1 as rendered; the judge numbers only the\n * ones it was shown, in the order the checks gave it (`order`; older runs: rendered order less\n * the drops), so its pick is mapped back through that. Pure.\n */\nexport function variantHints(judge: JudgeScore[] | null, prefilter: PrefilterOutcome | null): string[] {\n const hints: string[] = [];\n const dropped = prefilter?.dropped ?? [];\n const kept = Array.isArray(prefilter?.images) ? prefilter.images.length : (judge?.length ?? 0);\n const total = dropped.length + kept;\n if (prefilter?.flagged) {\n hints.push(\n `Every variant failed the checks; variant ${prefilter.flagged.index + 1} had the fewest problems and was kept: ${prefilter.flagged.reasons.join(\" \")}`,\n );\n } else if (dropped.length > 0) {\n const list = dropped.map((d) => `variant ${d.index + 1} (${d.reasons.join(\" \")})`).join(\"; \");\n hints.push(`${dropped.length} of ${total} variants set aside by the checks before the judge: ${list}.`);\n }\n const alone = prefilter?.order?.length === 1 && !prefilter.flagged ? prefilter.order[0] : undefined;\n if (alone !== undefined && dropped.length > 0) {\n hints.push(\n `The checks ranked variant ${alone + 1} best, so no judge was needed; the others stay in this run as options the person can switch to (\\`baker canvas run --use-variant\\`).`,\n );\n }\n const winner = judge ? judgeWinner(judge) : null;\n if (judge && winner) {\n const gone = new Set(dropped.map((d) => d.index));\n const shown = prefilter?.order ?? Array.from({ length: total }, (_, i) => i).filter((i) => !gone.has(i));\n const variant = (shown[winner.image - 1] ?? winner.image - 1) + 1;\n const why =\n winner.of === undefined\n ? `${winner.total}/${Object.keys(winner.scores).length * 5}`\n : `first on ${\n Object.entries(winner.scores)\n .filter(([, beaten]) => beaten === winner.of)\n .map(([criterion]) => criterion.replace(/_/g, \" \"))\n .join(\", \") || \"none of the criteria alone\"\n }`;\n hints.push(\n `The judge picked variant ${variant} of the ${judge.length} it compared (${why}); the others it compared stay in this run as options the person can switch to (\\`baker canvas run --use-variant\\`).`,\n );\n }\n return hints;\n}\n","/**\n * Would a stranger know, in three seconds, what this finished ad is and whether it is for them?\n *\n * The pre-render viewer check (`viewer-check.ts`) reads the copy and a description of the\n * picture, with the brand's name given. A person scrolling gets neither: they see the picture,\n * at phone size, for about three seconds, and the advertiser is a name they have never heard of.\n * Audited Sept 2026: ads that passed every check read, at a glance, as a chat about nothing, a\n * newspaper about another company, a tweet with no product. So the finished ad itself, shrunk\n * to the width a phone shows it, is shown to a model playing that viewer, with no brand and no\n * brief; it says what is sold, who it is for and whether that is them, what it would do next,\n * and what made it stop. The decision model compares that with what the ad means to say, in any\n * language (`misreadings`), and the code grades it (`judgeViewerAnswer`). Blocking: an ad nobody understands in passing is not ready.\n */\nimport { GLANCE_CHECK_MODEL } from \"@baker/canvas-contract\";\nimport sharp from \"sharp\";\nimport { z } from \"zod\";\nimport { askAboutImages, type RenderFinding, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { bytesOf } from \"../../engine/nodes/local/lib/static-review.ts\";\nimport type { ViewerProfile } from \"../../viewer-profile.ts\";\nimport {\n describeViewer,\n jevReadJudge,\n judgeViewerAnswer,\n misreadings,\n type ReadJudge,\n sureEnough,\n ViewerAnswerSchema,\n type ViewerClarity,\n type ViewerIntended,\n type ViewerMiss,\n type ViewerQuestion,\n} from \"./viewer-check.ts\";\n\n/**\n * The least a glance must reach: the viewer can name what is sold, however sure they say they\n * are (Tier 0, Oct 2026: viewers who named the offer exactly called it a guess). Who it is for and\n * what to do next go into the fix but never fail it: the platform's button carries the next step.\n */\nconst GLANCE_REQUIRED: Readonly<Record<ViewerQuestion, ViewerClarity>> = {\n offer: \"guess\",\n for_whom: \"unclear\",\n next_step: \"unclear\",\n};\n\n/** The width a phone feed shows a static ad at, in CSS pixels, give or take. */\nexport const GLANCE_WIDTH = 400;\n\n/** The glance answer: the viewer check's questions, whether the ad is for them, and what stopped them. */\nexport const GlanceAnswerSchema = ViewerAnswerSchema.extend({\n /** What kind of product or service they take it for (D4). */\n category: z\n .object({ answer: z.string().default(\"\"), clarity: z.enum([\"clear\", \"guess\", \"unclear\"]).default(\"unclear\") })\n .default({ answer: \"\", clarity: \"unclear\" }),\n stopped: z.string().default(\"\"),\n me: z.enum([\"yes\", \"no\", \"unsure\"]).default(\"unsure\"),\n});\nexport type GlanceAnswer = z.infer<typeof GlanceAnswerSchema>;\n\n/** Where the viewer meets the ad, said as they would. */\nfunction wherePhrase(placements: readonly string[]): string {\n const fullScreen = placements.length === 0 || placements.some((p) => /automatic|stor|reel/i.test(p));\n return fullScreen ? \"your Instagram or Facebook feed, Stories or Reels\" : \"your Instagram or Facebook feed\";\n}\n\n/** What the viewer already knows, never the advertiser's name: the ad has to say it. */\nfunction knowledge(viewer: ViewerProfile): string {\n if (!viewer.knows.includes(\"brand\")) return \"You have never heard of the advertiser.\";\n const offer = viewer.knows.includes(\"offer\") ? \" You know roughly what they sell.\" : \"\";\n return `You have come across the advertiser before.${offer}`;\n}\n\n/**\n * The glance prompt: the viewer, the picture and three seconds; the question last and the\n * answer a fixed JSON the code grades. `market` sets who the viewer is when it is known\n * (\"a person in Mexico who speaks Mexican Spanish\"). Pure.\n */\nexport function buildGlancePrompt(input: { viewer: ViewerProfile; market?: string }): string {\n const who = input.market ? `You are ${input.market}. ` : \"\";\n return [\n `${who}You are scrolling ${wherePhrase(input.viewer.placements)} on your phone. ${knowledge(input.viewer)}`,\n \"This ad passes under your thumb and holds you for about three seconds: you take in the picture and read the biggest words, not the small print. The image is shown at the size your phone shows it.\",\n \"Answer as this person, from those three seconds alone. Do not fill gaps with what ads like this usually sell.\",\n 'For each question give your answer in English and how sure you are: \"clear\" when the ad says it outright or you already know it; \"guess\" when you are piecing it together; \"unclear\" when you cannot tell.',\n \"offer: what is being sold or offered?\",\n \"for_whom: who is it for?\",\n \"next_step: what would you do next if you wanted it?\",\n \"category: what kind of product or service is this for (a payroll app, a trade course, a phone)?\",\n 'missing: in one short sentence, what you would need to be told to get it; \"\" when nothing.',\n \"stopped: what made you stop on it, or what nearly made you scroll past, in a few words.\",\n 'me: is this for someone like you? \"yes\", \"no\" or \"unsure\".',\n \"\",\n 'Reply with only this JSON: {\"offer\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"for_whom\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"next_step\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"category\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"missing\":\"\",\"stopped\":\"\",\"me\":\"yes|no|unsure\"}',\n ].join(\"\\n\");\n}\n\nconst QUESTION_WORDS: Record<Exclude<ViewerMiss[\"question\"], \"presumes\">, string> = {\n offer: \"what is offered\",\n for_whom: \"who it is for\",\n next_step: \"what to do next\",\n};\n\nfunction missWords(miss: ViewerMiss): string {\n if (miss.question === \"presumes\") return `it talks to them as a customer already (\"${miss.viewerSaid}\")`;\n const said = miss.viewerSaid.trim() ? `\"${miss.viewerSaid.trim()}\"` : \"nothing\";\n const what = QUESTION_WORDS[miss.question];\n return miss.reason === \"misread\" ? `${what} (they were sure it is ${said})` : `${what} (they said ${said})`;\n}\n\n/** What the decision model said the viewer misread: the offer, and the kind of thing the ad is (`misreadings`). */\nexport type GlanceMisreads = { offer: boolean; category: boolean };\n\n/**\n * The finished ad graded on what a viewer took from three seconds of it: one blocking finding\n * naming what they could not tell, what they said, and what they needed. Pure.\n */\nexport function glanceFindings(\n answer: GlanceAnswer,\n intended: ViewerIntended & { recognition?: string },\n format: string,\n viewer: ViewerProfile,\n misread: GlanceMisreads = { offer: false, category: false },\n): RenderFinding[] {\n // Whether the words presume a past with the brand is the pre-render check's question, asked of the copy.\n const verdict = judgeViewerAnswer({ ...answer, presumes: \"\" }, intended, GLANCE_REQUIRED, misread.offer);\n // D4: what kind of thing a stranger takes it for, against what it is meant to be recognised as.\n // Only a warning: whether they can name what is sold is already the offer's question.\n const category = answer.category.answer.trim();\n const kind: RenderFinding[] =\n intended.recognition && category && misread.category\n ? [\n {\n severity: \"warning\",\n what: `${format}: At a glance, a stranger took it for \"${category}\"; it is meant as ${intended.recognition}.`,\n },\n ]\n : [];\n if (verdict.pass) return kind;\n const needed = answer.missing.trim() ? ` They needed: ${answer.missing.trim().replace(/[.!]+$/, \"\")}.` : \"\";\n const missed = verdict.missed.map(missWords).join(\"; \");\n return [\n {\n severity: \"blocking\",\n what: `${format}: At a glance, ${describeViewer(viewer).replace(/, on .* placements$/, \"\")} could not tell ${missed}.${needed}`,\n },\n ...kind,\n ];\n}\n\n/** Whether the viewer misread the offer and the kind of thing the ad is: one request to the decision model. */\nasync function glanceMisreads(\n answer: GlanceAnswer,\n intended: ViewerIntended & { recognition?: string },\n judge: ReadJudge,\n): Promise<GlanceMisreads> {\n const sure = sureEnough(answer.offer.clarity, GLANCE_REQUIRED.offer);\n const [offer = false, category = false] = await misreadings(\n [\n { said: sure ? answer.offer.answer : \"\", meant: intended.offer, sells: intended.sells },\n { said: answer.category.answer, meant: intended.recognition },\n ],\n judge,\n );\n return { offer, category };\n}\n\n/** The model boundary: the parsed JSON answer about one picture (base64 JPEG), or null when no model answered. */\nexport type AskGlanceModel = (jpeg: string, prompt: string) => Promise<unknown>;\n\n/** The glance model through the gateway, its spend reported to `onSpend`. */\nexport function gatewayGlanceModel(onSpend?: (usage: ReviewUsage) => void): AskGlanceModel {\n return (jpeg, prompt) => askAboutImages(GLANCE_CHECK_MODEL, [jpeg], prompt, onSpend);\n}\n\n/**\n * Show the finished ad, at phone width, to the viewer it reaches, and grade what they took from\n * it. Null when no model answered (twice) or the picture could not be read: the caller says the\n * glance was not checked, never that it passed.\n */\nexport async function glanceCheck(opts: {\n /** The delivered image: a local path or its URL. */\n image: string;\n format: string;\n viewer: ViewerProfile;\n intended: ViewerIntended & { recognition?: string };\n market?: string;\n ask: AskGlanceModel;\n /** Whether the viewer read what the ad means (`misreadings`); the decision model unless given. */\n judge?: ReadJudge;\n}): Promise<RenderFinding[] | null> {\n let jpeg: string;\n try {\n const bytes = await bytesOf(opts.image);\n jpeg = (await sharp(bytes).resize({ width: GLANCE_WIDTH }).jpeg({ quality: 85 }).toBuffer()).toString(\"base64\");\n } catch {\n return null;\n }\n const prompt = buildGlancePrompt({ viewer: opts.viewer, ...(opts.market ? { market: opts.market } : {}) });\n for (let attempt = 0; attempt < 2; attempt++) {\n const parsed = GlanceAnswerSchema.safeParse(await opts.ask(jpeg, prompt));\n if (parsed.success) {\n const misread = await glanceMisreads(parsed.data, opts.intended, opts.judge ?? jevReadJudge());\n return glanceFindings(parsed.data, opts.intended, opts.format, opts.viewer, misread);\n }\n }\n return null;\n}\n","import { mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { isSourceStale } from \"@baker/api\";\nimport type { IdeaAnchor } from \"../../engine/creative-context/anchor.ts\";\nimport type { PictureRecord } from \"./static-fix.ts\";\nimport { unsuppliedPlaceholderAssets } from \"./placeholders.ts\";\nimport { type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\nimport { type LastFix, plainRunEdit } from \"./static-edit.ts\";\nimport { isStaticAdCanvas } from \"./static-ad-canvas.ts\";\nimport { sizeShapeOf } from \"./static-run-review.ts\";\nimport { readTurnRenders, turnRenderRefusal } from \"./turn-renders.ts\";\n\n/**\n * What this workspace last rendered, per creative: `canvas/.rendered/<slug>.json`.\n *\n * \"Edited since its last render\" is the source fingerprint (`computeSourceSha`) now,\n * compared with the fingerprint the last completed render recorded here. It replaces the\n * `canvas/.dirty` marker a PostToolUse hook used to drop, which only saw the Write and\n * Edit tools touching `*.canvas.json` / `prompt.json`: an edit to a scene file, a\n * composition, or anything made through the shell slipped past it, and the Stop hook and\n * the `validate-creative-renders` gate let a stale preview ship.\n *\n * Two facts are kept apart:\n * - `rendered`: the source a COMPLETED render drew, and its run id;\n * - `attempted`: the source the last `baker canvas run` started on, whatever came of it.\n * A render that fails on exactly this source is not asked for again until the source\n * moves, so a canvas that cannot render never loops the agent.\n *\n * Lives under the gitignored `canvas/` outputs root of the workspace the canvas belongs\n * to (never `--outputs-dir`), so the CLI and the scaffold hooks always agree on the path.\n * A fresh workspace has no record, and a creative with none is not stale: there is no\n * preview of it in this workspace to be out of date.\n */\nexport const RENDER_STATE_DIR = \".rendered\";\n\nexport type RenderState = {\n rendered?: { sourceSha: string; runId: string; at: number };\n attempted?: { sourceSha: string; at: number };\n /** The last portable run snapshot uploaded for this creative (see `run-snapshot.ts`). */\n snapshot?: { identity: string; url: string };\n /** A static ad's prompt.json as the completed render drew it: a later edit of only its words or colours renders as an edit of that version (`static-edit.ts`). */\n prompt?: unknown;\n /** The `--fix` (or edit) the completed render ran, and the blocking defects it left: the same fix is never run again. */\n lastFix?: LastFix;\n /** The blocking defects the review of the completed render named: what a fix of it is measured against. */\n blocking?: string[];\n /** How the completed render's picture came to be, where its canvas would not say (`static-fix.ts`). */\n picture?: PictureRecord;\n /**\n * An ad of a series: the version of its lead its last registered run was made from, finished or not\n * (`series-member.ts`). A run that fails after it is registered is not a new ask when retried.\n */\n seriesLeadRun?: string;\n /** The idea of the completed render (`anchor.ts`): what an edit of it keeps (`idea-gate.ts`). */\n anchor?: IdeaAnchor;\n /** The idea of the completed render in plain lines, for the per-message hook: the version the person sees. */\n idea?: string[];\n /**\n * What the person saw when the chat turn `turnId` started: every run in that turn is held to it, so\n * the agent's own renders in the turn never become the baseline. No `anchor`: the turn started with\n * nothing shown, and nothing in it is held.\n */\n seen?: { turnId: string; anchor?: IdeaAnchor };\n};\n\nfunction statePath(canvasRoot: string, slug: string): string {\n return path.join(canvasRoot, RENDER_STATE_DIR, `${slug}.json`);\n}\n\nexport async function readRenderState(canvasRoot: string, slug: string): Promise<RenderState> {\n try {\n const parsed = JSON.parse(await readFile(statePath(canvasRoot, slug), \"utf8\")) as RenderState;\n return parsed && typeof parsed === \"object\" ? parsed : {};\n } catch {\n return {};\n }\n}\n\n/** The version (run id) a creative shows in this workspace: its last completed render; null before one. */\nexport async function latestVersion(canvasRoot: string, slug: string): Promise<string | null> {\n return (await readRenderState(canvasRoot, slug)).rendered?.runId ?? null;\n}\n\n/** Merge `patch` into the record. Best-effort: freshness is advisory, a render never fails over it. */\nasync function updateRenderState(canvasRoot: string, slug: string, patch: Partial<RenderState>): Promise<void> {\n try {\n const next = { ...(await readRenderState(canvasRoot, slug)), ...patch };\n await mkdir(path.join(canvasRoot, RENDER_STATE_DIR), { recursive: true });\n await writeFile(statePath(canvasRoot, slug), `${JSON.stringify(next, null, 2)}\\n`, \"utf8\");\n } catch {\n // Ignore: at worst the Stop hook asks for one render too many or too few.\n }\n}\n\nexport async function recordRenderAttempt(canvasRoot: string, slug: string, sourceSha: string | undefined): Promise<void> {\n if (!sourceSha) return;\n await updateRenderState(canvasRoot, slug, { attempted: { sourceSha, at: Date.now() } });\n}\n\nexport async function recordRendered(\n canvasRoot: string,\n slug: string,\n sourceSha: string | undefined,\n runId: string,\n drawn: {\n prompt?: unknown;\n lastFix?: LastFix;\n picture?: PictureRecord;\n seriesLeadRun?: string;\n anchor?: IdeaAnchor;\n idea?: string[];\n } = {},\n): Promise<void> {\n if (!sourceSha) return;\n await updateRenderState(canvasRoot, slug, {\n rendered: { sourceSha, runId, at: Date.now() },\n ...(drawn.prompt !== undefined ? { prompt: drawn.prompt } : {}),\n ...(drawn.anchor ? { anchor: drawn.anchor } : {}),\n ...(drawn.idea ? { idea: drawn.idea } : {}),\n lastFix: drawn.lastFix,\n picture: drawn.picture,\n ...(drawn.seriesLeadRun ? { seriesLeadRun: drawn.seriesLeadRun } : {}),\n });\n}\n\n/** What the person saw when a chat turn started: every run in that turn is held to it (`idea-gate.ts`). */\nexport async function recordSeen(canvasRoot: string, slug: string, seen: NonNullable<RenderState[\"seen\"]>): Promise<void> {\n await updateRenderState(canvasRoot, slug, { seen });\n}\n\n/** The idea of the version shown in plain lines, for the per-message hook, when this workspace has none yet. */\nexport async function recordIdeaLines(canvasRoot: string, slug: string, idea: string[]): Promise<void> {\n if ((await readRenderState(canvasRoot, slug)).idea) return;\n await updateRenderState(canvasRoot, slug, { idea });\n}\n\n/** What the review of a completed render found blocking, and the fix the render ran, if one. */\nexport async function recordReviewOutcome(\n canvasRoot: string,\n slug: string,\n outcome: { blocking: string[]; lastFix?: LastFix },\n): Promise<void> {\n await updateRenderState(canvasRoot, slug, outcome);\n}\n\n/** The version of its lead a series ad's run was registered from: written before the run renders. */\nexport async function recordSeriesLeadRun(canvasRoot: string, slug: string, leadRunId: string): Promise<void> {\n await updateRenderState(canvasRoot, slug, { seriesLeadRun: leadRunId });\n}\n\nexport async function recordSnapshot(canvasRoot: string, slug: string, snapshot: RenderState[\"snapshot\"]): Promise<void> {\n await updateRenderState(canvasRoot, slug, { snapshot });\n}\n\n/**\n * Whether the preview in this workspace no longer shows the source: it was rendered, the\n * source has moved since (`isSourceStale`: a render fingerprinted by an older rule never\n * is), and no render of the source as it is now was attempted yet.\n */\nexport function isRenderStale(state: RenderState, currentSourceSha: string): boolean {\n if (!state.rendered) return false;\n if (!isSourceStale(currentSourceSha, state.rendered.sourceSha)) return false;\n return state.attempted?.sourceSha !== currentSourceSha;\n}\n\n/**\n * `sourceSha` is the source as it stands now: what a render of it would record. `refusedThisTurn` is\n * why a plain `baker canvas run` of it is refused in this chat turn (`turn-renders.ts`), so the\n * turn-end reminder never orders a render the CLI will not make.\n */\nexport type StaleCreative = {\n slug: string;\n canvasPath: string;\n renderedRunId: string;\n sourceSha: string;\n refusedThisTurn?: string;\n};\n\n/**\n * Every renderable creative in the workspace whose preview is stale. A canvas that still\n * has an unfilled `[TODO]` asset slot is skipped: the agent is mid-build, and a half-built\n * creative must never be pushed to render. The source is fingerprinted the way a render\n * and the dashboard sync fingerprint it (`prepareCanvas`, read-only), so the three never\n * disagree about what is stale. `canvasPath` is workspace-relative.\n */\nexport async function staleCreatives(workspaceRoot: string, turnId?: string): Promise<StaleCreative[]> {\n const creativesDir = path.join(workspaceRoot, \"src\", \"creatives\");\n const canvasRoot = path.join(workspaceRoot, \"canvas\");\n const turnRenders = turnId === undefined ? undefined : await readTurnRenders(path.join(canvasRoot, \".cache\"));\n let slugs: string[];\n try {\n slugs = (await readdir(creativesDir, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => d.name);\n } catch {\n return [];\n }\n const stale: StaleCreative[] = [];\n for (const slug of slugs.sort()) {\n const state = await readRenderState(canvasRoot, slug);\n if (!state.rendered) continue;\n const canvasPath = path.join(creativesDir, slug, `${slug}.canvas.json`);\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(canvasPath, { write: false });\n } catch {\n continue; // Gone, renamed, or mid-edit invalid JSON: the next check reads it again.\n }\n if (unsuppliedPlaceholderAssets(prepared.fileGraph).length > 0) continue;\n const current = prepared.sourceSha;\n if (!current || !isRenderStale(state, current)) continue;\n const promptOnDisk = await readFile(path.join(creativesDir, slug, \"prompt.json\"), \"utf8\")\n .then((text): unknown => JSON.parse(text))\n .catch(() => null);\n // What `baker canvas run <canvasPath>` decides: a correction only when it edits the version shown.\n const promptNow = isStaticAdCanvas(prepared.canvas) ? promptOnDisk : null;\n const refusal = turnRenderRefusal(turnRenders, turnId, slug, {\n correction: plainRunEdit(prepared.canvas, state.prompt, promptNow) !== null,\n shape: sizeShapeOf(prepared.fileGraph),\n });\n stale.push({\n slug,\n canvasPath: path.relative(workspaceRoot, canvasPath).split(path.sep).join(\"/\"),\n renderedRunId: state.rendered.runId,\n sourceSha: current,\n ...(refusal ? { refusedThisTurn: `${refusal.message} ${refusal.fix}` } : {}),\n });\n }\n return stale;\n}\n\n/**\n * Remove the `canvas/.dirty/<slug>.json` marker an older scaffold's PostToolUse hook wrote.\n * Nothing in a current scaffold reads it, but a client repo can run this CLI before its\n * scaffold sync lands, and there the old Stop hook and verify gate still read the marker:\n * clearing it on a render attempt, as the CLI always did, keeps that gate from blocking\n * forever. Delete once every client runs a scaffold without `nudge-canvas-rerender`.\n */\nexport async function clearLegacyDirtyMarker(canvasRoot: string, slug: string): Promise<void> {\n await rm(path.join(canvasRoot, \".dirty\", `${slug}.json`), { force: true }).catch(() => undefined);\n}\n"],"mappings":"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","names":["readFile","path","readFile","path","id","mkdir","readFile","writeFile","path","path","readFile","mkdir","writeFile"]}
|
package/dist/chunk-3WN5GWX4.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ApiError
|
|
3
|
-
} from "./chunk-LJEJCIHR.js";
|
|
4
|
-
import {
|
|
5
|
-
writeJson
|
|
6
|
-
} from "./chunk-NXNOXZGB.js";
|
|
7
|
-
|
|
8
|
-
// src/commands/landing/inspiration/shared.ts
|
|
9
|
-
var INSPIRATION_HINTS = {
|
|
10
|
-
adapt: "Reference only. Re-express this in the client's BRAND.md palette, type and imagery register. Reusing a headline, subhead or CTA verbatim is a Tier 0 message-match failure (references/gotchas.md).",
|
|
11
|
-
structureNotCopy: "Take the structural decision, not the furniture: what the eye hits first, the grid ratio, what was deliberately left out. Your copy must come from the client's own offer."
|
|
12
|
-
};
|
|
13
|
-
function favoritesScopeHints(health, resultCount) {
|
|
14
|
-
if (!health) return [];
|
|
15
|
-
const hints = [];
|
|
16
|
-
if (health.savedPages === 0) {
|
|
17
|
-
hints.push(
|
|
18
|
-
"This company hasn't saved any reference pages yet, so there is no taste profile to search \u2014 an empty result here says nothing about the library. Search the whole shared library with --scope all, or save a page the client admires with `baker landing inspiration add <url>`."
|
|
19
|
-
);
|
|
20
|
-
return hints;
|
|
21
|
-
}
|
|
22
|
-
if (health.failedPages > 0) {
|
|
23
|
-
const retryable = health.failedExamples.filter((example) => example.retryable).map((example) => example.url);
|
|
24
|
-
const permanent = health.failedExamples.filter((example) => !example.retryable).map((example) => example.url);
|
|
25
|
-
hints.push(
|
|
26
|
-
`${health.failedPages} of this company's ${health.savedPages} saved pages could not be read, so they hold no sections \u2014 only ${health.usablePages} are usable, which is why this result is thin. Search the whole library with --scope all.`
|
|
27
|
-
);
|
|
28
|
-
if (retryable.length > 0) {
|
|
29
|
-
hints.push(
|
|
30
|
-
`Worth another go: ${retryable.join(", ")} \u2014 run \`baker landing inspiration add <url>\` on one of them to study it again.`
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
if (permanent.length > 0) {
|
|
34
|
-
hints.push(`Not worth retrying \u2014 these sites refuse automated readers: ${permanent.join(", ")}.`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (health.studyingPages > 0) {
|
|
38
|
-
hints.push(
|
|
39
|
-
`${health.studyingPages} saved ${health.studyingPages === 1 ? "page is" : "pages are"} still being studied and will be searchable in a few minutes. Carry on; do not wait on them.`
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
if (resultCount === 0 && health.failedPages === 0 && health.studyingPages === 0) {
|
|
43
|
-
hints.push(
|
|
44
|
-
`Nothing in this company's ${health.usablePages} readable saved pages matches. The saved set is healthy, so this is the query, not the library \u2014 loosen the filters or search everything with --scope all.`
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
return hints;
|
|
48
|
-
}
|
|
49
|
-
function fidelityHint(fidelity) {
|
|
50
|
-
if (fidelity == null) return null;
|
|
51
|
-
if (fidelity >= 0.9) return null;
|
|
52
|
-
if (fidelity >= 0.75) {
|
|
53
|
-
return `Reproduction fidelity ${fidelity.toFixed(2)} \u2014 the markup is close but not exact. Trust the screenshot over the code.`;
|
|
54
|
-
}
|
|
55
|
-
return `Reproduction fidelity ${fidelity.toFixed(2)} \u2014 this section is scroll- or JS-driven and the extracted markup does NOT render like the original. Use the screenshot and the notes; treat the code as a hint only.`;
|
|
56
|
-
}
|
|
57
|
-
var STALE_COPY_AFTER_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
58
|
-
function staleCopyHint(studiedAt, filedUrl, now = Date.now()) {
|
|
59
|
-
if (!studiedAt || now - studiedAt < STALE_COPY_AFTER_MS) return null;
|
|
60
|
-
const date = new Date(studiedAt).toLocaleDateString("en-US", { month: "short", day: "numeric", timeZone: "UTC" });
|
|
61
|
-
return `This copy of the page was read on ${date}. If the user says the live page looks different, run: baker landing inspiration add ${filedUrl} --refresh`;
|
|
62
|
-
}
|
|
63
|
-
function reportError(error) {
|
|
64
|
-
if (error instanceof ApiError) {
|
|
65
|
-
writeJson({ ok: false, error: { code: error.code, message: error.message } });
|
|
66
|
-
} else {
|
|
67
|
-
writeJson({
|
|
68
|
-
ok: false,
|
|
69
|
-
error: { code: "UNKNOWN", message: error instanceof Error ? error.message : String(error) }
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
process.exit(1);
|
|
73
|
-
}
|
|
74
|
-
function splitList(value) {
|
|
75
|
-
if (!value) return void 0;
|
|
76
|
-
const parts = value.split(",").map((part) => part.trim()).filter(Boolean);
|
|
77
|
-
return parts.length > 0 ? parts : void 0;
|
|
78
|
-
}
|
|
79
|
-
function parseNumber(value) {
|
|
80
|
-
if (value === void 0 || value === "") return void 0;
|
|
81
|
-
const parsed = Number(value);
|
|
82
|
-
return Number.isFinite(parsed) ? parsed : void 0;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export {
|
|
86
|
-
INSPIRATION_HINTS,
|
|
87
|
-
favoritesScopeHints,
|
|
88
|
-
fidelityHint,
|
|
89
|
-
staleCopyHint,
|
|
90
|
-
reportError,
|
|
91
|
-
splitList,
|
|
92
|
-
parseNumber
|
|
93
|
-
};
|
|
94
|
-
//# sourceMappingURL=chunk-3WN5GWX4.js.map
|
package/dist/chunk-4AO3LSYM.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ApiError
|
|
3
|
-
} from "./chunk-LJEJCIHR.js";
|
|
4
|
-
import {
|
|
5
|
-
writeJson,
|
|
6
|
-
writeOutput
|
|
7
|
-
} from "./chunk-NXNOXZGB.js";
|
|
8
|
-
|
|
9
|
-
// src/lib/batchTargets.ts
|
|
10
|
-
var TARGET_CONCURRENCY = 6;
|
|
11
|
-
function positionalTargets(args, fallback) {
|
|
12
|
-
const positionals = Array.isArray(args._) ? args._ : [];
|
|
13
|
-
const all = positionals.length > 0 ? positionals : [fallback];
|
|
14
|
-
const targets = [];
|
|
15
|
-
for (const value of all) {
|
|
16
|
-
if (typeof value !== "string") continue;
|
|
17
|
-
const target = value.trim();
|
|
18
|
-
if (target.length > 0 && !targets.includes(target)) targets.push(target);
|
|
19
|
-
}
|
|
20
|
-
return targets;
|
|
21
|
-
}
|
|
22
|
-
function apiFailure(err) {
|
|
23
|
-
if (err instanceof ApiError) return { code: err.code, message: err.message };
|
|
24
|
-
return { code: "INTERNAL_ERROR", message: "Unexpected error" };
|
|
25
|
-
}
|
|
26
|
-
async function eachTarget(targets, run, toError = apiFailure) {
|
|
27
|
-
const outcomes = new Array(targets.length);
|
|
28
|
-
let next = 0;
|
|
29
|
-
const worker = async () => {
|
|
30
|
-
while (next < targets.length) {
|
|
31
|
-
const index = next++;
|
|
32
|
-
const target = targets[index];
|
|
33
|
-
try {
|
|
34
|
-
outcomes[index] = { target, ok: true, data: await run(target) };
|
|
35
|
-
} catch (err) {
|
|
36
|
-
outcomes[index] = { target, ok: false, error: toError(err) };
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
await Promise.all(Array.from({ length: Math.min(TARGET_CONCURRENCY, targets.length) }, worker));
|
|
41
|
-
return outcomes;
|
|
42
|
-
}
|
|
43
|
-
function failWith(error) {
|
|
44
|
-
writeJson({ ok: false, error });
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
function writeTargetRows(outcomes, view) {
|
|
48
|
-
const rows = outcomes.flatMap((outcome) => outcome.ok ? [outcome.data] : []);
|
|
49
|
-
const failed = outcomes.flatMap((outcome) => outcome.ok ? [] : [outcome]);
|
|
50
|
-
const [first] = failed;
|
|
51
|
-
if (rows.length === 0 && first) {
|
|
52
|
-
failWith(
|
|
53
|
-
outcomes.length === 1 ? first.error : { code: first.error.code, message: failed.map((f) => `${f.target}: ${f.error.message}`).join("; ") }
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
const hints = [...failed.map((f) => `Not returned: ${f.target} \u2014 ${f.error.message}`), ...view.hints ?? []];
|
|
57
|
-
writeOutput(
|
|
58
|
-
{ ok: true, data: outcomes.length === 1 ? rows[0] : rows, ...hints.length > 0 ? { hints } : {} },
|
|
59
|
-
view.format,
|
|
60
|
-
view.fields,
|
|
61
|
-
view.full,
|
|
62
|
-
view.normalizer
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export {
|
|
67
|
-
positionalTargets,
|
|
68
|
-
apiFailure,
|
|
69
|
-
eachTarget,
|
|
70
|
-
failWith,
|
|
71
|
-
writeTargetRows
|
|
72
|
-
};
|
|
73
|
-
//# sourceMappingURL=chunk-4AO3LSYM.js.map
|
package/dist/chunk-4HFM5RCP.js
DELETED
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
termsRefusalFix
|
|
3
|
-
} from "./chunk-QALAJNBG.js";
|
|
4
|
-
import {
|
|
5
|
-
cacheGet,
|
|
6
|
-
cacheSet,
|
|
7
|
-
handleConnectionError,
|
|
8
|
-
isOrganizationReadRefusal,
|
|
9
|
-
needsConnectionFix,
|
|
10
|
-
writeAdsJson,
|
|
11
|
-
writeJsonEnvelope
|
|
12
|
-
} from "./chunk-MPTNN35I.js";
|
|
13
|
-
import {
|
|
14
|
-
ApiError,
|
|
15
|
-
apiGet
|
|
16
|
-
} from "./chunk-LJEJCIHR.js";
|
|
17
|
-
import {
|
|
18
|
-
getEnv
|
|
19
|
-
} from "./chunk-B64KJW5C.js";
|
|
20
|
-
|
|
21
|
-
// ../api/src/ads-meta/permissionGates.ts
|
|
22
|
-
var META_PERMISSION_NOT_ENABLED_MESSAGE = {
|
|
23
|
-
catalog: "Catalog changes need the Catalog permission for Meta \u2014 ask a Baker admin to turn it on, then reconnect Meta. Everything else on Meta keeps working: tell the user, and carry on with the rest of the job.",
|
|
24
|
-
pagePosts: "Facebook Page posts need the Page posts permission for Meta \u2014 ask a Baker admin to turn it on, then reconnect Meta. Everything else on Meta keeps working: tell the user, and carry on with the rest of the job."
|
|
25
|
-
};
|
|
26
|
-
var META_PERMISSION_RECONNECT_MESSAGE = {
|
|
27
|
-
catalog: "Catalog changes need the Catalog permission for Meta. It is turned on for this company, but this Meta connection was made before, so it does not hold it \u2014 ask the user to reconnect Meta in the dashboard, then try again. Everything else on Meta keeps working meanwhile.",
|
|
28
|
-
pagePosts: "Facebook Page posts need the Page posts permission for Meta. It is turned on for this company, but this Meta connection was made before, so it does not hold it \u2014 ask the user to reconnect Meta in the dashboard, then try again. Everything else on Meta keeps working meanwhile."
|
|
29
|
-
};
|
|
30
|
-
var META_UNREQUESTED_PERMISSION_MESSAGE = {
|
|
31
|
-
comments: "Reading and moderating comments on ads needs Meta permissions Baker's Meta connection does not ask for yet (reading people's comments and managing them on the Page). Tell the user that comment moderation happens in Meta Business Suite for now, and carry on with the rest of the job.",
|
|
32
|
-
instagramMedia: "Listing an Instagram account's posts needs a Meta permission Baker's Meta connection does not ask for yet. Ask the user for the post's link or id instead, or boost it from Meta Business Suite, and carry on."
|
|
33
|
-
};
|
|
34
|
-
var META_PAGE_ADS_PERMISSION_REMEDY = "A Baker admin turns it on with the lead ads switch for this company; then the user reconnects Meta in the dashboard. Tell the user, and carry on with the rest of the job.";
|
|
35
|
-
function isMetaPermissionGateRefusal(message) {
|
|
36
|
-
return [
|
|
37
|
-
...Object.values(META_PERMISSION_NOT_ENABLED_MESSAGE),
|
|
38
|
-
...Object.values(META_PERMISSION_RECONNECT_MESSAGE),
|
|
39
|
-
...Object.values(META_UNREQUESTED_PERMISSION_MESSAGE),
|
|
40
|
-
META_PAGE_ADS_PERMISSION_REMEDY
|
|
41
|
-
].some((refusal) => message.includes(refusal));
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// src/commands/ads/meta/shared.ts
|
|
45
|
-
var DAY_MS = 864e5;
|
|
46
|
-
function metaForbiddenFix(message) {
|
|
47
|
-
if (isMetaPermissionGateRefusal(message)) {
|
|
48
|
-
return { action: "reject", explanation: message };
|
|
49
|
-
}
|
|
50
|
-
if (message.includes("has not accepted Meta's Lead Generation Terms")) {
|
|
51
|
-
return {
|
|
52
|
-
action: "reject",
|
|
53
|
-
explanation: `${message}
|
|
54
|
-
|
|
55
|
-
Meta confirmed the Page's terms status using its Page access. Give the Page owner the terms link in the error and ask them to accept it before trying the form or lead ad set again. Do not suggest reconnecting Meta for this refusal; continue with other work that does not require the form or ad set.`
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
action: "reject",
|
|
60
|
-
explanation: [
|
|
61
|
-
message,
|
|
62
|
-
"This is a permission refusal, not a dead connection, and Meta returns the same code for two causes with opposite remedies. Tell them apart by how much else works before you answer.",
|
|
63
|
-
"If other reads on this account are ALSO refused (campaigns, ad sets, insights), the connection is short a permission it was never granted. Only the user can widen it, by reconnecting Meta from the dashboard.",
|
|
64
|
-
"If those reads work and only this object is refused, the asset (pixel/dataset, Page, or catalog) belongs to a Business the connected user holds no role in. Ad-account access does not carry asset access and reconnecting cannot grant it \u2014 the client assigns that asset to the connected user or partner in Meta Business settings, under the asset's own section (Data sources \u2192 Datasets for a pixel).",
|
|
65
|
-
"Either way do not retry the same call, and do not abort the wider job. Continue with what you can read, and state in your answer that this specific check could not run and why \u2014 never present the task as verified when this step was skipped."
|
|
66
|
-
].join("\n\n")
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
function handleMetaError(err) {
|
|
70
|
-
if (err instanceof ApiError) {
|
|
71
|
-
if (needsConnectionFix(err.code, err.message)) {
|
|
72
|
-
handleConnectionError("meta_ads", err.message);
|
|
73
|
-
}
|
|
74
|
-
const terms = termsRefusalFix(err.code, err.message);
|
|
75
|
-
if (terms) {
|
|
76
|
-
writeJsonEnvelope({
|
|
77
|
-
ok: false,
|
|
78
|
-
error: { code: terms.code, message: err.message, fix: terms.fix, retryable: false }
|
|
79
|
-
});
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
const envelope = {
|
|
83
|
-
ok: false,
|
|
84
|
-
error: {
|
|
85
|
-
code: err.code,
|
|
86
|
-
message: err.message,
|
|
87
|
-
fix: err.code === "FORBIDDEN" && !isOrganizationReadRefusal(err.message) ? metaForbiddenFix(err.message) : { action: "reject", explanation: err.message },
|
|
88
|
-
retryable: err.code === "RATE_LIMITED" || err.code === "UNAVAILABLE" || err.code === "INTERNAL_ERROR"
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
writeAdsJson(envelope);
|
|
92
|
-
process.exit(1);
|
|
93
|
-
}
|
|
94
|
-
const message = err instanceof Error ? err.message : "Unexpected error";
|
|
95
|
-
writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message } });
|
|
96
|
-
process.exit(1);
|
|
97
|
-
}
|
|
98
|
-
var ACCOUNT_ID_RE = /^(act_)?[0-9]+$/;
|
|
99
|
-
var CONNECTED_ACCOUNTS_TTL_MS = 60 * 60 * 1e3;
|
|
100
|
-
function invalidAccountId(id) {
|
|
101
|
-
writeAdsJson({
|
|
102
|
-
ok: false,
|
|
103
|
-
error: {
|
|
104
|
-
code: "INVALID_ACCOUNT_ID",
|
|
105
|
-
message: `Invalid account ID "${id}". Expected numeric ID, optionally prefixed with "act_".`
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
process.exit(1);
|
|
109
|
-
}
|
|
110
|
-
function actId(id) {
|
|
111
|
-
return id.startsWith("act_") ? id : `act_${id}`;
|
|
112
|
-
}
|
|
113
|
-
async function connectedMetaAccounts(useCache) {
|
|
114
|
-
if (useCache) {
|
|
115
|
-
const cached = cacheGet("meta-accounts", "list");
|
|
116
|
-
if (cached) return cached.data;
|
|
117
|
-
}
|
|
118
|
-
const accounts = await apiGet(
|
|
119
|
-
"/api/ads/meta/accounts",
|
|
120
|
-
useCache ? void 0 : { "skip-cache": "true" }
|
|
121
|
-
);
|
|
122
|
-
if (useCache && accounts.length > 0) cacheSet("meta-accounts", "list", accounts, CONNECTED_ACCOUNTS_TTL_MS);
|
|
123
|
-
return accounts;
|
|
124
|
-
}
|
|
125
|
-
async function resolveAccountIdArg(args) {
|
|
126
|
-
const fromArgs = args["account-id"];
|
|
127
|
-
const explicit = fromArgs || getEnv().BAKER_META_AD_ACCOUNT_ID;
|
|
128
|
-
if (explicit) {
|
|
129
|
-
if (!ACCOUNT_ID_RE.test(explicit)) invalidAccountId(explicit);
|
|
130
|
-
return actId(explicit);
|
|
131
|
-
}
|
|
132
|
-
let accounts;
|
|
133
|
-
try {
|
|
134
|
-
accounts = await connectedMetaAccounts(!args["no-cache"]);
|
|
135
|
-
} catch (err) {
|
|
136
|
-
handleMetaError(err);
|
|
137
|
-
}
|
|
138
|
-
const ids = accounts.flatMap((account) => {
|
|
139
|
-
const id = account.externalId ?? account.id;
|
|
140
|
-
return id && ACCOUNT_ID_RE.test(id) ? [{ id: actId(id), name: account.name }] : [];
|
|
141
|
-
});
|
|
142
|
-
const [single] = ids;
|
|
143
|
-
if (ids.length === 1 && single) {
|
|
144
|
-
process.stderr.write(`Using account "${single.name ?? single.id}" (${single.id})
|
|
145
|
-
`);
|
|
146
|
-
return single.id;
|
|
147
|
-
}
|
|
148
|
-
const listed = ids.map((account) => account.name ? `${account.id} (${account.name})` : account.id).join("; ");
|
|
149
|
-
writeAdsJson({
|
|
150
|
-
ok: false,
|
|
151
|
-
error: {
|
|
152
|
-
code: "MISSING_ACCOUNT_ID",
|
|
153
|
-
message: ids.length === 0 ? "This company has no Meta ad account selected, so there is no account to default to." : `This company connected ${ids.length} Meta ad accounts, so pass --account-id to name one: ${listed}.`,
|
|
154
|
-
fix: {
|
|
155
|
-
action: "reject",
|
|
156
|
-
explanation: ids.length === 0 ? "Ask the user to select a Meta ad account for this company in Baker's Meta connection, or pass --account-id act_<id> for one the login reaches (`baker ads meta accounts --available`)." : `Re-run with --account-id set to one of: ${listed}. A question about the whole business covers all ${ids.length}.`
|
|
157
|
-
},
|
|
158
|
-
retryable: false
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
process.exit(1);
|
|
162
|
-
}
|
|
163
|
-
function getDateRange(args) {
|
|
164
|
-
const datePreset = args["date-preset"];
|
|
165
|
-
const since = args.since;
|
|
166
|
-
const until = args.until;
|
|
167
|
-
if (since && until) return { since, until };
|
|
168
|
-
return { datePreset: datePreset ?? "last_7d" };
|
|
169
|
-
}
|
|
170
|
-
function todayIso() {
|
|
171
|
-
return (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
|
|
172
|
-
}
|
|
173
|
-
function daysAgoIso(days) {
|
|
174
|
-
return new Date(Date.now() - days * DAY_MS).toISOString().slice(0, 10);
|
|
175
|
-
}
|
|
176
|
-
function csvOrJson(args) {
|
|
177
|
-
return args.output ?? "json";
|
|
178
|
-
}
|
|
179
|
-
var NAME_CONTAINS_ARG = {
|
|
180
|
-
type: "string",
|
|
181
|
-
description: "Only rows whose name contains this text, matched by Meta before anything is returned. Start here to find one entity by name: --name-contains octubre --all-statuses"
|
|
182
|
-
};
|
|
183
|
-
function resolveEffectiveStatus(args) {
|
|
184
|
-
if (args["all-statuses"]) {
|
|
185
|
-
return void 0;
|
|
186
|
-
}
|
|
187
|
-
const explicit = args["effective-status"];
|
|
188
|
-
if (explicit) {
|
|
189
|
-
return explicit;
|
|
190
|
-
}
|
|
191
|
-
return "ACTIVE";
|
|
192
|
-
}
|
|
193
|
-
function statusFilterHints(rows, effectiveStatus, noun) {
|
|
194
|
-
if (rows.length > 0 || effectiveStatus === void 0) return [];
|
|
195
|
-
if (effectiveStatus === "ACTIVE") {
|
|
196
|
-
return [
|
|
197
|
-
`No ACTIVE ${noun}. The ACTIVE filter hides paused, archived and in-review ones (under a paused campaign or ad set that is all of them), so this does NOT mean none exist. Re-run with --all-statuses before concluding there are none.`
|
|
198
|
-
];
|
|
199
|
-
}
|
|
200
|
-
return [
|
|
201
|
-
`No ${noun} with effective_status ${effectiveStatus}. Re-run with --all-statuses to see every status before concluding there are none.`
|
|
202
|
-
];
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
export {
|
|
206
|
-
metaForbiddenFix,
|
|
207
|
-
handleMetaError,
|
|
208
|
-
resolveAccountIdArg,
|
|
209
|
-
getDateRange,
|
|
210
|
-
todayIso,
|
|
211
|
-
daysAgoIso,
|
|
212
|
-
csvOrJson,
|
|
213
|
-
NAME_CONTAINS_ARG,
|
|
214
|
-
resolveEffectiveStatus,
|
|
215
|
-
statusFilterHints
|
|
216
|
-
};
|
|
217
|
-
//# sourceMappingURL=chunk-4HFM5RCP.js.map
|