@koda-sl/baker-cli 0.512.0 → 0.514.0-dev.555f7007e
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 +20 -3
- package/dist/account-QX4G4BJ7.js +82 -0
- package/dist/account-QX4G4BJ7.js.map +1 -0
- package/dist/account-UFYZS3K6.js +82 -0
- package/dist/account-UFYZS3K6.js.map +1 -0
- package/dist/account-assets-J5Z4URLQ.js +290 -0
- package/dist/account-level-4SBYYHRS.js +611 -0
- package/dist/account-level-4SBYYHRS.js.map +1 -0
- package/dist/account-reads-FOEVPWDP.js +219 -0
- package/dist/account-users-UTIF7MIT.js +64 -0
- package/dist/account-users-UTIF7MIT.js.map +1 -0
- package/dist/account-writes-QAQXRIEY.js +68 -0
- package/dist/account-writes-QAQXRIEY.js.map +1 -0
- package/dist/accounts-JK3OAS5U.js +701 -0
- package/dist/accounts-JK3OAS5U.js.map +1 -0
- package/dist/accounts-OE33CKWD.js +80 -0
- package/dist/accounts-OE33CKWD.js.map +1 -0
- package/dist/actions-QZDSLFFK.js +55 -0
- package/dist/activecampaign-U6TKRR45.js +938 -0
- package/dist/activecampaign-U6TKRR45.js.map +1 -0
- package/dist/ad-group-writes-XY5JYTKT.js +172 -0
- package/dist/ad-group-writes-XY5JYTKT.js.map +1 -0
- package/dist/ad-groups-YEO5ZS5U.js +70 -0
- package/dist/ad-groups-YEO5ZS5U.js.map +1 -0
- package/dist/ad-writes-XRCPK4SP.js +176 -0
- package/dist/ad-writes-XRCPK4SP.js.map +1 -0
- package/dist/add-2EF7S4NK.js +305 -0
- package/dist/add-2EF7S4NK.js.map +1 -0
- package/dist/add-YCJ6RXPG.js +107 -0
- package/dist/add-YCJ6RXPG.js.map +1 -0
- package/dist/ads-AYJAYLFR.js +48 -0
- package/dist/ads-H7H7H2CM.js +79 -0
- package/dist/ads-H7H7H2CM.js.map +1 -0
- package/dist/ads-MAOI7S6V.js +115 -0
- package/dist/adsets-QRKICEFD.js +182 -0
- package/dist/advertisers-JLSU3G35.js +123 -0
- package/dist/advertisers-JLSU3G35.js.map +1 -0
- package/dist/analytics-ADIWEM6G.js +2437 -0
- package/dist/analytics-ADIWEM6G.js.map +1 -0
- package/dist/analytics-XB6FRNVJ.js +447 -0
- package/dist/analytics-XB6FRNVJ.js.map +1 -0
- package/dist/animate-HRWFVE2N.js +480 -0
- package/dist/asset-writes-JLVUAVUZ.js +50 -0
- package/dist/assign-IWZ2OPFL.js +80 -0
- package/dist/assign-IWZ2OPFL.js.map +1 -0
- package/dist/audience-size-P5L6MZ4C.js +76 -0
- package/dist/audience-size-P5L6MZ4C.js.map +1 -0
- package/dist/audience-writes-CDKQB3SM.js +327 -0
- package/dist/audience-writes-CDKQB3SM.js.map +1 -0
- package/dist/audiences-CDDI5HR5.js +86 -0
- package/dist/audiences-XKERWKKE.js +280 -0
- package/dist/audiences-XKERWKKE.js.map +1 -0
- package/dist/audit-SEADLC6F.js +154 -0
- package/dist/audit-SEADLC6F.js.map +1 -0
- package/dist/autocomplete-AJQBJS5R.js +114 -0
- package/dist/autocomplete-AJQBJS5R.js.map +1 -0
- package/dist/avatars-4HCGWBOL.js +38 -0
- package/dist/bid-pricing-NWSUO3VM.js +103 -0
- package/dist/bid-pricing-NWSUO3VM.js.map +1 -0
- package/dist/brand-C6OB6Q4U.js +22 -0
- package/dist/brief-LCWWQ4OC.js +543 -0
- package/dist/brief-LCWWQ4OC.js.map +1 -0
- package/dist/campaign-groups-PH64UXZJ.js +99 -0
- package/dist/campaign-groups-PH64UXZJ.js.map +1 -0
- package/dist/campaign-writes-BN3EGDK5.js +168 -0
- package/dist/campaign-writes-BN3EGDK5.js.map +1 -0
- package/dist/campaign-writes-CLV5ZSUK.js +176 -0
- package/dist/campaign-writes-CLV5ZSUK.js.map +1 -0
- package/dist/campaigns-5XRY27JZ.js +78 -0
- package/dist/campaigns-5XRY27JZ.js.map +1 -0
- package/dist/campaigns-HES5MDUG.js +130 -0
- package/dist/campaigns-JF4TYYUP.js +113 -0
- package/dist/campaigns-JF4TYYUP.js.map +1 -0
- package/dist/campaigns-ZYU4BXDP.js +111 -0
- package/dist/canvas-AI34UBGU.js +46 -0
- package/dist/capabilities-TRHAPTUU.js +147 -0
- package/dist/capabilities-TRHAPTUU.js.map +1 -0
- package/dist/catalog-ZY3MFT55.js +65 -0
- package/dist/catalogs-6XLBWAUS.js +130 -0
- package/dist/catalogs-6XLBWAUS.js.map +1 -0
- package/dist/catalogs-TGLSJEK5.js +781 -0
- package/dist/catalogs-TGLSJEK5.js.map +1 -0
- package/dist/changes-OOUVQDBY.js +135 -0
- package/dist/chatgpt-NAXIFWXV.js +47 -0
- package/dist/chats-I5RHBRS5.js +279 -0
- package/dist/chats-I5RHBRS5.js.map +1 -0
- package/dist/check-3E64VBUE.js +107 -0
- package/dist/check-3E64VBUE.js.map +1 -0
- package/dist/chunk-3CHYJYSS.js +319 -0
- package/dist/chunk-3G3GC5N4.js +429 -0
- package/dist/chunk-3M45PYU7.js +274 -0
- package/dist/chunk-3QHXF3QI.js +23 -0
- package/dist/chunk-3XPHUMLJ.js +3868 -0
- package/dist/chunk-45EERHDB.js +783 -0
- package/dist/chunk-4FGTANFK.js +387 -0
- package/dist/chunk-4IHWT7PH.js +167 -0
- package/dist/chunk-4LF4AYPT.js +846 -0
- package/dist/chunk-4UQRXKYJ.js +219 -0
- package/dist/chunk-5JJD33Y2.js +455 -0
- package/dist/chunk-5K4QYYOJ.js +831 -0
- package/dist/chunk-5LJ6E4YU.js +163 -0
- package/dist/chunk-5T73MMBL.js +275 -0
- package/dist/chunk-64MAHLTK.js +363 -0
- package/dist/chunk-6OIKNJ7G.js +26 -0
- package/dist/chunk-6ZFSDYWV.js +131 -0
- package/dist/chunk-7BUIOP36.js +287 -0
- package/dist/chunk-7I6ZVBLM.js +358 -0
- package/dist/chunk-7I6ZVBLM.js.map +1 -0
- package/dist/chunk-AN4OEQXE.js +122 -0
- package/dist/chunk-AULSX5ZA.js +5368 -0
- package/dist/chunk-AVYUFJQQ.js +46 -0
- package/dist/chunk-B4YF7VQF.js +97 -0
- package/dist/chunk-BDOYNGUL.js +98 -0
- package/dist/chunk-BJOK7QD4.js +207 -0
- package/dist/chunk-CMCGFSUS.js +197 -0
- package/dist/chunk-DMJUIUAL.js +676 -0
- package/dist/chunk-DUCUOZLS.js +225 -0
- package/dist/chunk-EW7JSTRZ.js +24026 -0
- package/dist/chunk-EW7JSTRZ.js.map +1 -0
- package/dist/chunk-F3CZFUXZ.js +3187 -0
- package/dist/chunk-F3CZFUXZ.js.map +1 -0
- package/dist/chunk-FJZYOVSW.js +843 -0
- package/dist/chunk-FKP4ECJY.js +19 -0
- package/dist/chunk-G4FG5EQO.js +110 -0
- package/dist/chunk-G4FG5EQO.js.map +1 -0
- package/dist/chunk-GAYRBIEF.js +712 -0
- package/dist/chunk-GAYRBIEF.js.map +1 -0
- package/dist/chunk-GNMEOU46.js +8954 -0
- package/dist/chunk-GYKYXWUQ.js +156 -0
- package/dist/chunk-GYPLRU4Y.js +297 -0
- package/dist/chunk-I43ZEWJQ.js +285 -0
- package/dist/chunk-IZABTTW5.js +228 -0
- package/dist/chunk-JOE42ZW6.js +2984 -0
- package/dist/chunk-JOE42ZW6.js.map +1 -0
- package/dist/chunk-K7IE6UYV.js +1646 -0
- package/dist/chunk-KH5YHHJV.js +604 -0
- package/dist/chunk-KMY7AD3N.js +51 -0
- package/dist/chunk-KPCHWDJM.js +8914 -0
- package/dist/chunk-KTZCLJ2D.js +148 -0
- package/dist/chunk-MKUA54QE.js +638 -0
- package/dist/chunk-MTV2RSGY.js +63 -0
- package/dist/chunk-MUS2UTWU.js +4254 -0
- package/dist/chunk-MUS2UTWU.js.map +1 -0
- package/dist/chunk-N2QX57K3.js +392 -0
- package/dist/chunk-NB2FU6EZ.js +179 -0
- package/dist/chunk-NEYWS2DQ.js +479 -0
- package/dist/chunk-NKQWDEB7.js +115 -0
- package/dist/chunk-NKQWDEB7.js.map +1 -0
- package/dist/chunk-NWF2LRKO.js +188 -0
- package/dist/chunk-NZ34KM46.js +7211 -0
- package/dist/chunk-NZ34KM46.js.map +1 -0
- package/dist/chunk-OTC6UMJ2.js +191 -0
- package/dist/chunk-OUY2IAWL.js +224 -0
- package/dist/chunk-PJXNCRMR.js +344 -0
- package/dist/chunk-PYQ3GF7R.js +91 -0
- package/dist/chunk-Q3EIVZAR.js +170 -0
- package/dist/chunk-Q3GSVLE5.js +4274 -0
- package/dist/chunk-Q3GSVLE5.js.map +1 -0
- package/dist/chunk-QDQZ62FL.js +207 -0
- package/dist/chunk-QHZE62GP.js +1919 -0
- package/dist/chunk-RGR6TSTJ.js +103 -0
- package/dist/chunk-SAAXU7QR.js +203 -0
- package/dist/chunk-SHTKLRI6.js +66 -0
- package/dist/chunk-SIKCVWM3.js +76 -0
- package/dist/chunk-SOPVIIUW.js +68 -0
- package/dist/chunk-SOPVIIUW.js.map +1 -0
- package/dist/chunk-SSXG53CZ.js +89 -0
- package/dist/chunk-TBWAM577.js +547 -0
- package/dist/chunk-TGPGQTZA.js +169 -0
- package/dist/chunk-UMIX2BMM.js +1518 -0
- package/dist/chunk-URMAEVZO.js +150 -0
- package/dist/chunk-VBO3ZVUU.js +61 -0
- package/dist/chunk-VFLYMHTO.js +592 -0
- package/dist/chunk-VGYIVXIZ.js +249 -0
- package/dist/chunk-VIB7R533.js +57 -0
- package/dist/chunk-WLESMH4J.js +45 -0
- package/dist/chunk-WVWLPXBO.js +910 -0
- package/dist/chunk-XEH5XAP6.js +494 -0
- package/dist/chunk-XEOKVL4E.js +142 -0
- package/dist/chunk-XOGQJYXH.js +64 -0
- package/dist/chunk-XOQNM7I4.js +396 -0
- package/dist/chunk-XOQNM7I4.js.map +1 -0
- package/dist/chunk-XUXRA7IB.js +942 -0
- package/dist/claim-FIK2YTLM.js +200 -0
- package/dist/claim-FIK2YTLM.js.map +1 -0
- package/dist/cli.js +34 -33
- package/dist/cli.js.map +1 -1
- package/dist/companies-KMMV6EJW.js +198 -0
- package/dist/companies-KMMV6EJW.js.map +1 -0
- package/dist/company-B54URPJG.js +308 -0
- package/dist/company-B54URPJG.js.map +1 -0
- package/dist/complete-PPCWEXS3.js +84 -0
- package/dist/complete-PPCWEXS3.js.map +1 -0
- package/dist/connect-IAXSZPGA.js +45 -0
- package/dist/conversation-KHTZBGX2.js +96 -0
- package/dist/conversation-KHTZBGX2.js.map +1 -0
- package/dist/conversion-report-U66HW6JM.js +127 -0
- package/dist/conversion-report-U66HW6JM.js.map +1 -0
- package/dist/conversion-upload-command-IHFKVX2M.js +439 -0
- package/dist/conversion-writes-RSGDOAET.js +122 -0
- package/dist/conversion-writes-RSGDOAET.js.map +1 -0
- package/dist/conversions-BVOL43W4.js +78 -0
- package/dist/conversions-BVOL43W4.js.map +1 -0
- package/dist/conversions-SUMZAV2T.js +140 -0
- package/dist/conversions-SUMZAV2T.js.map +1 -0
- package/dist/copy-writes-CIHIFLY6.js +170 -0
- package/dist/copy-writes-CIHIFLY6.js.map +1 -0
- package/dist/create-732HQL3C.js +210 -0
- package/dist/create-732HQL3C.js.map +1 -0
- package/dist/create-TFR6R2KF.js +239 -0
- package/dist/create-TFR6R2KF.js.map +1 -0
- package/dist/create-UC57ULRL.js +62 -0
- package/dist/create-UC57ULRL.js.map +1 -0
- package/dist/create-UL2OYXOA.js +135 -0
- package/dist/create-UL2OYXOA.js.map +1 -0
- package/dist/creatives-BB6S2OF6.js +89 -0
- package/dist/creatives-BZEVJ6ER.js +58 -0
- package/dist/creatives-FU3YELGU.js +223 -0
- package/dist/creatives-FU3YELGU.js.map +1 -0
- package/dist/credentials-AYV5YQE4.js +290 -0
- package/dist/credentials-AYV5YQE4.js.map +1 -0
- package/dist/critique-FKIJB72I.js +1451 -0
- package/dist/critique-FKIJB72I.js.map +1 -0
- package/dist/critique-IQYNDXCN.js +232 -0
- package/dist/critique-IQYNDXCN.js.map +1 -0
- package/dist/crm-ILQMNJPX.js +323 -0
- package/dist/crm-ILQMNJPX.js.map +1 -0
- package/dist/crm-MQQRBITZ.js +227 -0
- package/dist/crm-MQQRBITZ.js.map +1 -0
- package/dist/currency-CGKO5GKH.js +88 -0
- package/dist/custom-conversions-HAGG72LF.js +128 -0
- package/dist/customers-NKKU6S7G.js +59 -0
- package/dist/delete-2TCCNRMH.js +57 -0
- package/dist/delete-2TCCNRMH.js.map +1 -0
- package/dist/delete-HCZTISBT.js +69 -0
- package/dist/delete-HCZTISBT.js.map +1 -0
- package/dist/delete-UIKB5ZXS.js +67 -0
- package/dist/delete-UIKB5ZXS.js.map +1 -0
- package/dist/demographics-ABZODD45.js +141 -0
- package/dist/demographics-ABZODD45.js.map +1 -0
- package/dist/discard-V3K5PZ4W.js +69 -0
- package/dist/discard-V3K5PZ4W.js.map +1 -0
- package/dist/discover-VM3O7CQM.js +172 -0
- package/dist/domain-A66DHOTQ.js +101 -0
- package/dist/domain-A66DHOTQ.js.map +1 -0
- package/dist/download-LSAZD5JO.js +172 -0
- package/dist/download-LSAZD5JO.js.map +1 -0
- package/dist/draft-5UUJC675.js +335 -0
- package/dist/draft-5UUJC675.js.map +1 -0
- package/dist/draft-BATA5CVI.js +283 -0
- package/dist/draft-BATA5CVI.js.map +1 -0
- package/dist/draft-CRDBU6LF.js +308 -0
- package/dist/draft-P7IDMXWR.js +310 -0
- package/dist/draft-P7IDMXWR.js.map +1 -0
- package/dist/draft-YBNL4ZZA.js +220 -0
- package/dist/draft-YBNL4ZZA.js.map +1 -0
- package/dist/engine/index.js +7 -7
- package/dist/experiments-MLLTHMMS.js +236 -0
- package/dist/experiments-MLLTHMMS.js.map +1 -0
- package/dist/facets-KSHR3MBE.js +117 -0
- package/dist/facets-KSHR3MBE.js.map +1 -0
- package/dist/feedback-4GCPXZSI.js +111 -0
- package/dist/feedback-4GCPXZSI.js.map +1 -0
- package/dist/feedback-record-VEFHUIUJ.js +265 -0
- package/dist/feedback-record-VEFHUIUJ.js.map +1 -0
- package/dist/fetch-42QL56JC.js +179 -0
- package/dist/fetch-42QL56JC.js.map +1 -0
- package/dist/fit-Q5GRVF2O.js +65 -0
- package/dist/flows-M3WBZQET.js +250 -0
- package/dist/flows-M3WBZQET.js.map +1 -0
- package/dist/fonts-GD4YRXQU.js +39 -0
- package/dist/forecast-HT46MFL4.js +121 -0
- package/dist/forecast-HT46MFL4.js.map +1 -0
- package/dist/forecast-ONVS2QAI.js +169 -0
- package/dist/funnel-76BAD64Q.js +397 -0
- package/dist/funnel-76BAD64Q.js.map +1 -0
- package/dist/generate-VBEY3N3L.js +263 -0
- package/dist/get-4KFAO475.js +82 -0
- package/dist/get-4KFAO475.js.map +1 -0
- package/dist/get-QV5NIADE.js +59 -0
- package/dist/get-QV5NIADE.js.map +1 -0
- package/dist/google-7EZP7I6J.js +3267 -0
- package/dist/google-ads-J7WHTJO4.js +198 -0
- package/dist/google-ads-J7WHTJO4.js.map +1 -0
- package/dist/history-EULKWQUS.js +136 -0
- package/dist/history-EULKWQUS.js.map +1 -0
- package/dist/history-FEBJHFHJ.js +69 -0
- package/dist/history-FEBJHFHJ.js.map +1 -0
- package/dist/history-RDVV7KBN.js +102 -0
- package/dist/history-RDVV7KBN.js.map +1 -0
- package/dist/hubspot-A3RQNMYN.js +782 -0
- package/dist/hubspot-A3RQNMYN.js.map +1 -0
- package/dist/ideas-WX7EBPSF.js +45 -0
- package/dist/images-4AXF4LAC.js +92 -0
- package/dist/ingest-AM5YDTRH.js +110 -0
- package/dist/ingest-AM5YDTRH.js.map +1 -0
- package/dist/ingest-C3M4GUO6.js +26 -0
- package/dist/insights-UTCMSWSC.js +132 -0
- package/dist/insights-UTCMSWSC.js.map +1 -0
- package/dist/insights-XZL2EM53.js +439 -0
- package/dist/insights-XZL2EM53.js.map +1 -0
- package/dist/inspect-DWCLRZGR.js +192 -0
- package/dist/inspect-DWCLRZGR.js.map +1 -0
- package/dist/instant-experiences-RM4MLJTL.js +260 -0
- package/dist/instant-experiences-RM4MLJTL.js.map +1 -0
- package/dist/intent-ZMYMFGB4.js +95 -0
- package/dist/keyword-gap-XSJO2R77.js +130 -0
- package/dist/keyword-metrics-M46FCTAS.js +200 -0
- package/dist/keyword-metrics-M46FCTAS.js.map +1 -0
- package/dist/keywords-for-site-XNSLX7EA.js +131 -0
- package/dist/keywords-for-site-XNSLX7EA.js.map +1 -0
- package/dist/landing-MUNYZQNA.js +28 -0
- package/dist/languages-DIQ3OG3E.js +40 -0
- package/dist/lead-routes-XBO2GOBL.js +608 -0
- package/dist/lead-routes-XBO2GOBL.js.map +1 -0
- package/dist/leads-LAATTW5G.js +115 -0
- package/dist/leads-LAATTW5G.js.map +1 -0
- package/dist/leads-ULYHTG22.js +540 -0
- package/dist/leads-ULYHTG22.js.map +1 -0
- package/dist/learn-3GLY4G3H.js +207 -0
- package/dist/learn-3GLY4G3H.js.map +1 -0
- package/dist/line-item-writes-XJTTA3X5.js +211 -0
- package/dist/line-item-writes-XJTTA3X5.js.map +1 -0
- package/dist/line-items-JR25T2C5.js +107 -0
- package/dist/link-7DSLIF3I.js +67 -0
- package/dist/link-7DSLIF3I.js.map +1 -0
- package/dist/linkedin-W5BJ6HEH.js +1316 -0
- package/dist/linkedin-W5BJ6HEH.js.map +1 -0
- package/dist/linkedin-person-2ZYSOHYR.js +139 -0
- package/dist/linkedin-person-2ZYSOHYR.js.map +1 -0
- package/dist/list-3653DIYB.js +67 -0
- package/dist/list-3653DIYB.js.map +1 -0
- package/dist/list-G66HVYCR.js +306 -0
- package/dist/list-G66HVYCR.js.map +1 -0
- package/dist/list-Z4M53MS5.js +154 -0
- package/dist/list-Z4M53MS5.js.map +1 -0
- package/dist/locations-HTVYJSDJ.js +40 -0
- package/dist/locations-M2B5XDU4.js +69 -0
- package/dist/locations-M2B5XDU4.js.map +1 -0
- package/dist/log-2RJU5BOW.js +95 -0
- package/dist/log-2RJU5BOW.js.map +1 -0
- package/dist/lookup-S5VG7AWH.js +23 -0
- package/dist/make-MJ6JMU5T.js +1370 -0
- package/dist/make-MJ6JMU5T.js.map +1 -0
- package/dist/map-27IPOBY6.js +436 -0
- package/dist/map-27IPOBY6.js.map +1 -0
- package/dist/mcp-TFQTME4P.js +717 -0
- package/dist/mcp-TFQTME4P.js.map +1 -0
- package/dist/media-P4T4ZBNS.js +18 -0
- package/dist/media-sources-P246GM7W.js +35 -0
- package/dist/members-KOKBTUC2.js +47 -0
- package/dist/members-KOKBTUC2.js.map +1 -0
- package/dist/meta-IPLWNYC7.js +122 -0
- package/dist/metrics-WYWUX6Y5.js +152 -0
- package/dist/models-HJ7Y55AH.js +155 -0
- package/dist/normalize-GXBUNTYJ.js +144 -0
- package/dist/normalize-GXBUNTYJ.js.map +1 -0
- package/dist/options-MA25RNXF.js +125 -0
- package/dist/options-MA25RNXF.js.map +1 -0
- package/dist/organization-NLEVNGKQ.js +949 -0
- package/dist/organization-NLEVNGKQ.js.map +1 -0
- package/dist/page-photos-OQ5QATQH.js +118 -0
- package/dist/page-photos-OQ5QATQH.js.map +1 -0
- package/dist/performance-34EUP5KL.js +5541 -0
- package/dist/performance-34EUP5KL.js.map +1 -0
- package/dist/performance-J3DLNI2W.js +27 -0
- package/dist/pixels-THEGYRXT.js +62 -0
- package/dist/pixels-THEGYRXT.js.map +1 -0
- package/dist/plan-7UF76Q6U.js +208 -0
- package/dist/plan-7UF76Q6U.js.map +1 -0
- package/dist/preview-LRJOQ7LM.js +218 -0
- package/dist/preview-LRJOQ7LM.js.map +1 -0
- package/dist/promoted-tweet-writes-SBXWKO23.js +183 -0
- package/dist/promoted-tweet-writes-SBXWKO23.js.map +1 -0
- package/dist/promoted-tweets-W42FNWS7.js +119 -0
- package/dist/publish-YG76GOA7.js +344 -0
- package/dist/publish-YG76GOA7.js.map +1 -0
- package/dist/query-IQICLABN.js +62 -0
- package/dist/questionnaire-DWEH5II4.js +94 -0
- package/dist/questionnaire-DWEH5II4.js.map +1 -0
- package/dist/reddit-X4CERXYF.js +29 -0
- package/dist/refresh-A36GA7JN.js +97 -0
- package/dist/refresh-A36GA7JN.js.map +1 -0
- package/dist/release-3NCMZIDI.js +63 -0
- package/dist/release-3NCMZIDI.js.map +1 -0
- package/dist/relevant-pages-UDDQOYLD.js +99 -0
- package/dist/remove-6LE3XNRG.js +53 -0
- package/dist/remove-6LE3XNRG.js.map +1 -0
- package/dist/reopen-XLADJ2UU.js +66 -0
- package/dist/reopen-XLADJ2UU.js.map +1 -0
- package/dist/rerun-QVMFJZA2.js +95 -0
- package/dist/rerun-QVMFJZA2.js.map +1 -0
- package/dist/research-D5UUJF74.js +72 -0
- package/dist/research-QCI5ISUE.js +265 -0
- package/dist/research-QCI5ISUE.js.map +1 -0
- package/dist/reset-DD37KDXQ.js +57 -0
- package/dist/reset-DD37KDXQ.js.map +1 -0
- package/dist/reset-FLZPKY2N.js +57 -0
- package/dist/reset-FLZPKY2N.js.map +1 -0
- package/dist/resolve-KRKIJKT7.js +124 -0
- package/dist/resolve-KRKIJKT7.js.map +1 -0
- package/dist/retry-ALXYEKFV.js +65 -0
- package/dist/retry-ALXYEKFV.js.map +1 -0
- package/dist/retry-MIXKW4EW.js +63 -0
- package/dist/retry-MIXKW4EW.js.map +1 -0
- package/dist/revenue-UBZUTSXN.js +91 -0
- package/dist/revenue-UBZUTSXN.js.map +1 -0
- package/dist/rule-writes-UAVWT4XS.js +525 -0
- package/dist/rule-writes-UAVWT4XS.js.map +1 -0
- package/dist/rules-SO6P44B6.js +99 -0
- package/dist/rules-SO6P44B6.js.map +1 -0
- package/dist/rules-ZVS2MWED.js +217 -0
- package/dist/rules-add-XN3BZKFO.js +465 -0
- package/dist/rules-add-XN3BZKFO.js.map +1 -0
- package/dist/run-K2DOMOAN.js +69 -0
- package/dist/run-K2DOMOAN.js.map +1 -0
- package/dist/run-T7XAH2W5.js +70 -0
- package/dist/scaffold-ad-TWIT7R4U.js +1516 -0
- package/dist/scaffold-ad-TWIT7R4U.js.map +1 -0
- package/dist/scaffold-static-ad-GPJKOGOI.js +1015 -0
- package/dist/scaffold-static-ad-GPJKOGOI.js.map +1 -0
- package/dist/scaffold-video-7BQNOJ4S.js +888 -0
- package/dist/scaffold-video-7BQNOJ4S.js.map +1 -0
- package/dist/schedule-UTRVEWPE.js +64 -0
- package/dist/schedule-UTRVEWPE.js.map +1 -0
- package/dist/scheduled-agents-ZGCUZ6SB.js +55 -0
- package/dist/schema-D6BMZAPB.js +69 -0
- package/dist/schema-DSMF6ELE.js +135 -0
- package/dist/schema-DSMF6ELE.js.map +1 -0
- package/dist/search-2P72GSKY.js +177 -0
- package/dist/search-2P72GSKY.js.map +1 -0
- package/dist/select-N7VWQ2ZQ.js +106 -0
- package/dist/select-N7VWQ2ZQ.js.map +1 -0
- package/dist/sends-LAY5C74B.js +349 -0
- package/dist/sends-LAY5C74B.js.map +1 -0
- package/dist/set-prompt-3N3HMHT6.js +198 -0
- package/dist/set-prompt-3N3HMHT6.js.map +1 -0
- package/dist/setup-links-I5RFZTS4.js +144 -0
- package/dist/setup-links-I5RFZTS4.js.map +1 -0
- package/dist/shopify-LXSR37XI.js +3958 -0
- package/dist/shopify-LXSR37XI.js.map +1 -0
- package/dist/site-AI3BFWRK.js +180 -0
- package/dist/site-AI3BFWRK.js.map +1 -0
- package/dist/sources-AOF2YDYX.js +457 -0
- package/dist/sources-AOF2YDYX.js.map +1 -0
- package/dist/sources-DVMJEXEX.js +30 -0
- package/dist/stale-P4GGOLIB.js +76 -0
- package/dist/stale-P4GGOLIB.js.map +1 -0
- package/dist/status-O25MXHU4.js +65 -0
- package/dist/status-O25MXHU4.js.map +1 -0
- package/dist/studies-EPO2AM4M.js +250 -0
- package/dist/studio-5Z4NMA4K.js +49 -0
- package/dist/study-writes-7FP443QQ.js +470 -0
- package/dist/study-writes-7FP443QQ.js.map +1 -0
- package/dist/sync-2AI7LKKN.js +57 -0
- package/dist/sync-2AI7LKKN.js.map +1 -0
- package/dist/sync-definition-F3CXG6KG.js +69 -0
- package/dist/tags-SEZ2CQJM.js +26 -0
- package/dist/tags-TJDZXOXS.js +227 -0
- package/dist/tags-TJDZXOXS.js.map +1 -0
- package/dist/tags-YSC7ZILI.js +23 -0
- package/dist/tags-YSC7ZILI.js.map +1 -0
- package/dist/tags-Z6EALYOS.js +23 -0
- package/dist/tags-Z6EALYOS.js.map +1 -0
- package/dist/tags-ZXSVW6XO.js +23 -0
- package/dist/tags-ZXSVW6XO.js.map +1 -0
- package/dist/targeting-NKZFEZD7.js +762 -0
- package/dist/targeting-NKZFEZD7.js.map +1 -0
- package/dist/targeting-criteria-AU5CSMAU.js +113 -0
- package/dist/targets-IOIH5JYS.js +106 -0
- package/dist/targets-IOIH5JYS.js.map +1 -0
- package/dist/testimonials-Y6PUV6AL.js +32 -0
- package/dist/themes-PGPIAKAO.js +95 -0
- package/dist/top-companies-FSITN3ZR.js +111 -0
- package/dist/top-companies-FSITN3ZR.js.map +1 -0
- package/dist/transcript-CGPX7Y37.js +165 -0
- package/dist/transcript-CGPX7Y37.js.map +1 -0
- package/dist/translate-QCBMGOKR.js +609 -0
- package/dist/translate-QCBMGOKR.js.map +1 -0
- package/dist/triggers-MONMZSKT.js +144 -0
- package/dist/triggers-MONMZSKT.js.map +1 -0
- package/dist/unlink-I7QFQQKO.js +70 -0
- package/dist/unlink-I7QFQQKO.js.map +1 -0
- package/dist/unstage-JXG5AU5Q.js +88 -0
- package/dist/unstage-JXG5AU5Q.js.map +1 -0
- package/dist/unstage-ZA3WQBEA.js +96 -0
- package/dist/unstage-ZA3WQBEA.js.map +1 -0
- package/dist/update-BVZGM54I.js +66 -0
- package/dist/update-BVZGM54I.js.map +1 -0
- package/dist/update-EI2BHUM2.js +101 -0
- package/dist/update-EI2BHUM2.js.map +1 -0
- package/dist/update-RZSV4NYP.js +155 -0
- package/dist/update-RZSV4NYP.js.map +1 -0
- package/dist/update-WLDNOZ5U.js +192 -0
- package/dist/update-WLDNOZ5U.js.map +1 -0
- package/dist/upload-BP3YEQSF.js +129 -0
- package/dist/upload-BP3YEQSF.js.map +1 -0
- package/dist/url-options-63DED6CR.js +131 -0
- package/dist/url-options-63DED6CR.js.map +1 -0
- package/dist/url-params-TRFI2PMD.js +101 -0
- package/dist/url-params-TRFI2PMD.js.map +1 -0
- package/dist/validate-SNCR25A7.js +122 -0
- package/dist/validate-SNCR25A7.js.map +1 -0
- package/dist/videos-SVZV5YYC.js +41 -0
- package/dist/viewer-check-LUAEGV6H.js +83 -0
- package/dist/web-MJQEK7BB.js +143 -0
- package/dist/web-MJQEK7BB.js.map +1 -0
- package/dist/winning-ads-KNLJHHCO.js +86 -0
- package/dist/write-commands-NVCX7IAU.js +1502 -0
- package/dist/write-commands-NVCX7IAU.js.map +1 -0
- package/dist/write-commands-OGVDWWBV.js +1172 -0
- package/dist/write-commands-OGVDWWBV.js.map +1 -0
- package/dist/x-ZQNHYIDU.js +47 -0
- package/package.json +1 -1
- package/dist/account-C635ATVM.js +0 -80
- package/dist/account-C635ATVM.js.map +0 -1
- package/dist/account-WLQBAQMD.js +0 -80
- package/dist/account-WLQBAQMD.js.map +0 -1
- package/dist/account-assets-O7IA37RE.js +0 -290
- package/dist/account-level-EU7BWCO7.js +0 -609
- package/dist/account-level-EU7BWCO7.js.map +0 -1
- package/dist/account-reads-SNOWDHHF.js +0 -219
- package/dist/account-users-XYYENK6X.js +0 -62
- package/dist/account-users-XYYENK6X.js.map +0 -1
- package/dist/account-writes-TU3WJRSI.js +0 -66
- package/dist/account-writes-TU3WJRSI.js.map +0 -1
- package/dist/accounts-A2FBLZ5H.js +0 -78
- package/dist/accounts-A2FBLZ5H.js.map +0 -1
- package/dist/accounts-V2IZZ5KU.js +0 -699
- package/dist/accounts-V2IZZ5KU.js.map +0 -1
- package/dist/actions-Y4SULW2E.js +0 -55
- package/dist/activecampaign-63XG6CLL.js +0 -936
- package/dist/activecampaign-63XG6CLL.js.map +0 -1
- package/dist/ad-group-writes-HLBWN4E4.js +0 -170
- package/dist/ad-group-writes-HLBWN4E4.js.map +0 -1
- package/dist/ad-groups-33NZD6J3.js +0 -68
- package/dist/ad-groups-33NZD6J3.js.map +0 -1
- package/dist/ad-writes-7ZDNDZ2E.js +0 -174
- package/dist/ad-writes-7ZDNDZ2E.js.map +0 -1
- package/dist/add-FOLFVGQO.js +0 -303
- package/dist/add-FOLFVGQO.js.map +0 -1
- package/dist/add-RYB4JSYC.js +0 -105
- package/dist/add-RYB4JSYC.js.map +0 -1
- package/dist/ads-2TVWICGM.js +0 -48
- package/dist/ads-KBE5JXCH.js +0 -115
- package/dist/ads-X3AM6M7L.js +0 -77
- package/dist/ads-X3AM6M7L.js.map +0 -1
- package/dist/adsets-YWBJFPAZ.js +0 -182
- package/dist/advertisers-IGUMSK5Q.js +0 -121
- package/dist/advertisers-IGUMSK5Q.js.map +0 -1
- package/dist/analytics-3DKM7J43.js +0 -445
- package/dist/analytics-3DKM7J43.js.map +0 -1
- package/dist/analytics-R3QDSX2K.js +0 -2435
- package/dist/analytics-R3QDSX2K.js.map +0 -1
- package/dist/animate-2BMHZ4FM.js +0 -480
- package/dist/asset-writes-72DEVXGO.js +0 -48
- package/dist/assign-EKCGLNZB.js +0 -78
- package/dist/assign-EKCGLNZB.js.map +0 -1
- package/dist/audience-size-IKXK32HU.js +0 -74
- package/dist/audience-size-IKXK32HU.js.map +0 -1
- package/dist/audience-writes-KCHLNFSI.js +0 -325
- package/dist/audience-writes-KCHLNFSI.js.map +0 -1
- package/dist/audiences-QAH42HIM.js +0 -86
- package/dist/audiences-WCDWN64L.js +0 -268
- package/dist/audiences-WCDWN64L.js.map +0 -1
- package/dist/audit-CY76S4V7.js +0 -152
- package/dist/audit-CY76S4V7.js.map +0 -1
- package/dist/autocomplete-G2S5HNUS.js +0 -112
- package/dist/autocomplete-G2S5HNUS.js.map +0 -1
- package/dist/avatars-P4UPNZM4.js +0 -38
- package/dist/bid-pricing-AJT4QU2C.js +0 -101
- package/dist/bid-pricing-AJT4QU2C.js.map +0 -1
- package/dist/brand-HALQWZWB.js +0 -22
- package/dist/brief-NW7TGG2Q.js +0 -541
- package/dist/brief-NW7TGG2Q.js.map +0 -1
- package/dist/campaign-groups-I43KMAJP.js +0 -97
- package/dist/campaign-groups-I43KMAJP.js.map +0 -1
- package/dist/campaign-writes-DLLPFAGG.js +0 -166
- package/dist/campaign-writes-DLLPFAGG.js.map +0 -1
- package/dist/campaign-writes-XO74BALZ.js +0 -174
- package/dist/campaign-writes-XO74BALZ.js.map +0 -1
- package/dist/campaigns-LS65QM6W.js +0 -76
- package/dist/campaigns-LS65QM6W.js.map +0 -1
- package/dist/campaigns-UIYSYCF3.js +0 -111
- package/dist/campaigns-UIYSYCF3.js.map +0 -1
- package/dist/campaigns-XZOQ2VTK.js +0 -130
- package/dist/campaigns-YMM5TQVO.js +0 -111
- package/dist/canvas-IJS7H3VE.js +0 -46
- package/dist/capabilities-XMQPM3UL.js +0 -145
- package/dist/capabilities-XMQPM3UL.js.map +0 -1
- package/dist/catalog-TZLU5NWI.js +0 -65
- package/dist/catalogs-JLCSFZYC.js +0 -779
- package/dist/catalogs-JLCSFZYC.js.map +0 -1
- package/dist/catalogs-T23RKYFC.js +0 -128
- package/dist/catalogs-T23RKYFC.js.map +0 -1
- package/dist/changes-36C754R4.js +0 -135
- package/dist/chatgpt-3WFOPURY.js +0 -47
- package/dist/chats-ZI6EYDAF.js +0 -277
- package/dist/chats-ZI6EYDAF.js.map +0 -1
- package/dist/check-CHJ2OLAU.js +0 -105
- package/dist/check-CHJ2OLAU.js.map +0 -1
- package/dist/chunk-2TOIY2WN.js +0 -4254
- package/dist/chunk-2TOIY2WN.js.map +0 -1
- package/dist/chunk-3YJNSUNF.js +0 -131
- package/dist/chunk-4GAEB6NK.js +0 -228
- package/dist/chunk-5RVQK3SP.js +0 -494
- package/dist/chunk-5SRUAGTG.js +0 -547
- package/dist/chunk-5XTGG4PV.js +0 -274
- package/dist/chunk-6KWEF6HF.js +0 -8914
- package/dist/chunk-6Z7Y4KQB.js +0 -275
- package/dist/chunk-7HZSORAB.js +0 -843
- package/dist/chunk-7J3NZBPV.js +0 -2982
- package/dist/chunk-7J3NZBPV.js.map +0 -1
- package/dist/chunk-A3IQAONL.js +0 -638
- package/dist/chunk-AIRD6T4W.js +0 -169
- package/dist/chunk-AQOFQNKQ.js +0 -57
- package/dist/chunk-ARUXGKZO.js +0 -91
- package/dist/chunk-ASRS37QE.js +0 -710
- package/dist/chunk-ASRS37QE.js.map +0 -1
- package/dist/chunk-AYPBARKP.js +0 -156
- package/dist/chunk-BRLZX3VP.js +0 -207
- package/dist/chunk-BTJSGJNQ.js +0 -604
- package/dist/chunk-C7QQQVBS.js +0 -51
- package/dist/chunk-CCEDZTP7.js +0 -391
- package/dist/chunk-CCEDZTP7.js.map +0 -1
- package/dist/chunk-D3KLDIPQ.js +0 -45
- package/dist/chunk-DUR7PEJI.js +0 -170
- package/dist/chunk-EDLZGTGN.js +0 -216
- package/dist/chunk-EDLZGTGN.js.map +0 -1
- package/dist/chunk-F4YQ5PVR.js +0 -1518
- package/dist/chunk-FFFJBNHA.js +0 -63
- package/dist/chunk-FFG2OYVV.js +0 -64
- package/dist/chunk-FPWQA7TK.js +0 -344
- package/dist/chunk-G5Y7OIPL.js +0 -392
- package/dist/chunk-GACSA5A6.js +0 -1646
- package/dist/chunk-GMHCHHAA.js +0 -19
- package/dist/chunk-H4NNQGG6.js +0 -66
- package/dist/chunk-HML3VQIW.js +0 -225
- package/dist/chunk-HSQRITKG.js +0 -203
- package/dist/chunk-I47BEKYK.js +0 -831
- package/dist/chunk-JAC6JVCI.js +0 -26
- package/dist/chunk-JND6XSGZ.js +0 -7192
- package/dist/chunk-JND6XSGZ.js.map +0 -1
- package/dist/chunk-KBRJSPIM.js +0 -676
- package/dist/chunk-KQTNUDKD.js +0 -97
- package/dist/chunk-LRV6M2WB.js +0 -1919
- package/dist/chunk-M7HD42M6.js +0 -24017
- package/dist/chunk-M7HD42M6.js.map +0 -1
- package/dist/chunk-MBSFEVOG.js +0 -163
- package/dist/chunk-MCJ5I5LR.js +0 -3187
- package/dist/chunk-MCJ5I5LR.js.map +0 -1
- package/dist/chunk-MGYC2IRC.js +0 -783
- package/dist/chunk-MUXKYSTI.js +0 -297
- package/dist/chunk-MVD7QIXI.js +0 -46
- package/dist/chunk-MZCTX37B.js +0 -3868
- package/dist/chunk-MZPS46OR.js +0 -76
- package/dist/chunk-N7M2TWR5.js +0 -592
- package/dist/chunk-NDFS3APP.js +0 -319
- package/dist/chunk-OBJCNGZL.js +0 -207
- package/dist/chunk-OJGYYH6K.js +0 -179
- package/dist/chunk-P6BKKUSX.js +0 -142
- package/dist/chunk-PLAOK4AK.js +0 -103
- package/dist/chunk-PLBITHV6.js +0 -846
- package/dist/chunk-PNKIOTCK.js +0 -349
- package/dist/chunk-PNKIOTCK.js.map +0 -1
- package/dist/chunk-PX3PUDK7.js +0 -167
- package/dist/chunk-QBRPM3DQ.js +0 -61
- package/dist/chunk-QMDMTZAW.js +0 -224
- package/dist/chunk-QW6HL7D6.js +0 -429
- package/dist/chunk-R53XMPDO.js +0 -363
- package/dist/chunk-RFIUOQLN.js +0 -89
- package/dist/chunk-RVEY7BTT.js +0 -8954
- package/dist/chunk-SCL7PM6P.js +0 -479
- package/dist/chunk-SM7G7RUA.js +0 -910
- package/dist/chunk-SVBJ56T7.js +0 -455
- package/dist/chunk-SWN6OHXG.js +0 -148
- package/dist/chunk-TVAIOC77.js +0 -287
- package/dist/chunk-TVTSA4EN.js +0 -188
- package/dist/chunk-TX7CQTD4.js +0 -5368
- package/dist/chunk-UKSSNYLU.js +0 -98
- package/dist/chunk-VIPKDXGU.js +0 -4229
- package/dist/chunk-VIPKDXGU.js.map +0 -1
- package/dist/chunk-W574NV67.js +0 -191
- package/dist/chunk-XGPU2VDU.js +0 -219
- package/dist/chunk-XQXZJ5IR.js +0 -249
- package/dist/chunk-YMF2RG4Z.js +0 -942
- package/dist/chunk-YNYAT2TZ.js +0 -285
- package/dist/chunk-Z2DRGXBB.js +0 -197
- package/dist/chunk-Z7YMSHRZ.js +0 -23
- package/dist/chunk-ZEC46NWW.js +0 -122
- package/dist/chunk-ZFC562TP.js +0 -387
- package/dist/chunk-ZNRGH4NS.js +0 -150
- package/dist/claim-OUYHVGB4.js +0 -198
- package/dist/claim-OUYHVGB4.js.map +0 -1
- package/dist/companies-XDNSG7ME.js +0 -196
- package/dist/companies-XDNSG7ME.js.map +0 -1
- package/dist/company-4FAYYPEJ.js +0 -306
- package/dist/company-4FAYYPEJ.js.map +0 -1
- package/dist/complete-M2PAUMDP.js +0 -82
- package/dist/complete-M2PAUMDP.js.map +0 -1
- package/dist/connect-PP6Z3F7Y.js +0 -43
- package/dist/conversation-B5NPTLFQ.js +0 -94
- package/dist/conversation-B5NPTLFQ.js.map +0 -1
- package/dist/conversion-report-DKXFHLLX.js +0 -125
- package/dist/conversion-report-DKXFHLLX.js.map +0 -1
- package/dist/conversion-upload-command-KTYAY7IG.js +0 -439
- package/dist/conversion-writes-7ODJDAUP.js +0 -120
- package/dist/conversion-writes-7ODJDAUP.js.map +0 -1
- package/dist/conversions-BKVGNNC6.js +0 -76
- package/dist/conversions-BKVGNNC6.js.map +0 -1
- package/dist/conversions-QRJL6JIO.js +0 -138
- package/dist/conversions-QRJL6JIO.js.map +0 -1
- package/dist/copy-writes-P4WK6OPM.js +0 -168
- package/dist/copy-writes-P4WK6OPM.js.map +0 -1
- package/dist/create-4DWCJ2UA.js +0 -208
- package/dist/create-4DWCJ2UA.js.map +0 -1
- package/dist/create-OYV33CQ6.js +0 -60
- package/dist/create-OYV33CQ6.js.map +0 -1
- package/dist/create-U6JVIYFY.js +0 -237
- package/dist/create-U6JVIYFY.js.map +0 -1
- package/dist/create-V4FNRO63.js +0 -133
- package/dist/create-V4FNRO63.js.map +0 -1
- package/dist/creatives-64FKWEGL.js +0 -221
- package/dist/creatives-64FKWEGL.js.map +0 -1
- package/dist/creatives-JPKA2RHU.js +0 -89
- package/dist/creatives-UJDPD4CI.js +0 -58
- package/dist/credentials-EIPEZ2C2.js +0 -288
- package/dist/credentials-EIPEZ2C2.js.map +0 -1
- package/dist/critique-BADMZAZP.js +0 -230
- package/dist/critique-BADMZAZP.js.map +0 -1
- package/dist/critique-M3DEVEDA.js +0 -1449
- package/dist/critique-M3DEVEDA.js.map +0 -1
- package/dist/crm-GIYSLLY7.js +0 -321
- package/dist/crm-GIYSLLY7.js.map +0 -1
- package/dist/crm-HXKSJRY3.js +0 -225
- package/dist/crm-HXKSJRY3.js.map +0 -1
- package/dist/currency-R4ORE2U3.js +0 -88
- package/dist/custom-conversions-5HJBB5XL.js +0 -128
- package/dist/customers-7J3QGSOJ.js +0 -57
- package/dist/delete-EDWJQMMV.js +0 -65
- package/dist/delete-EDWJQMMV.js.map +0 -1
- package/dist/delete-O24CVQMJ.js +0 -67
- package/dist/delete-O24CVQMJ.js.map +0 -1
- package/dist/delete-QN2OYUCS.js +0 -55
- package/dist/delete-QN2OYUCS.js.map +0 -1
- package/dist/demographics-MPYYF2OI.js +0 -139
- package/dist/demographics-MPYYF2OI.js.map +0 -1
- package/dist/discard-FJCFB6SA.js +0 -67
- package/dist/discard-FJCFB6SA.js.map +0 -1
- package/dist/discover-GSJRZUOC.js +0 -172
- package/dist/domain-UILPSEA5.js +0 -99
- package/dist/domain-UILPSEA5.js.map +0 -1
- package/dist/download-ZMAI7QSG.js +0 -170
- package/dist/download-ZMAI7QSG.js.map +0 -1
- package/dist/draft-5OQT3APG.js +0 -308
- package/dist/draft-5OQT3APG.js.map +0 -1
- package/dist/draft-LPVK6YHI.js +0 -281
- package/dist/draft-LPVK6YHI.js.map +0 -1
- package/dist/draft-MSESA5UE.js +0 -333
- package/dist/draft-MSESA5UE.js.map +0 -1
- package/dist/draft-WYDMLNYA.js +0 -308
- package/dist/draft-XOOSEVY5.js +0 -218
- package/dist/draft-XOOSEVY5.js.map +0 -1
- package/dist/experiments-PVOQUL47.js +0 -234
- package/dist/experiments-PVOQUL47.js.map +0 -1
- package/dist/facets-5RW4Z3D3.js +0 -115
- package/dist/facets-5RW4Z3D3.js.map +0 -1
- package/dist/feedback-GC56R2EJ.js +0 -109
- package/dist/feedback-GC56R2EJ.js.map +0 -1
- package/dist/feedback-record-JX7ZU6J7.js +0 -263
- package/dist/feedback-record-JX7ZU6J7.js.map +0 -1
- package/dist/fetch-WUTXAPBL.js +0 -177
- package/dist/fetch-WUTXAPBL.js.map +0 -1
- package/dist/fit-N7WDGWYZ.js +0 -63
- package/dist/flows-ULZACISF.js +0 -248
- package/dist/flows-ULZACISF.js.map +0 -1
- package/dist/fonts-TTUAP7HS.js +0 -37
- package/dist/forecast-4AG5F7YC.js +0 -169
- package/dist/forecast-RQJJRN5D.js +0 -119
- package/dist/forecast-RQJJRN5D.js.map +0 -1
- package/dist/funnel-QPWJIXWK.js +0 -395
- package/dist/funnel-QPWJIXWK.js.map +0 -1
- package/dist/generate-NWHPM2GQ.js +0 -263
- package/dist/get-35D7YHWJ.js +0 -57
- package/dist/get-35D7YHWJ.js.map +0 -1
- package/dist/get-GIETDPF4.js +0 -80
- package/dist/get-GIETDPF4.js.map +0 -1
- package/dist/google-NAA4BASO.js +0 -3267
- package/dist/google-ads-2IZFZO4C.js +0 -196
- package/dist/google-ads-2IZFZO4C.js.map +0 -1
- package/dist/history-5MRLNTCI.js +0 -67
- package/dist/history-5MRLNTCI.js.map +0 -1
- package/dist/history-RPLWWPLQ.js +0 -134
- package/dist/history-RPLWWPLQ.js.map +0 -1
- package/dist/history-TQYLUYVU.js +0 -100
- package/dist/history-TQYLUYVU.js.map +0 -1
- package/dist/hubspot-EPK43X4C.js +0 -780
- package/dist/hubspot-EPK43X4C.js.map +0 -1
- package/dist/ideas-SUXKKZC7.js +0 -43
- package/dist/images-VKVZ3DWG.js +0 -92
- package/dist/ingest-BBBFT6FZ.js +0 -24
- package/dist/ingest-EM2UY42Z.js +0 -108
- package/dist/ingest-EM2UY42Z.js.map +0 -1
- package/dist/insights-M3CYB22P.js +0 -437
- package/dist/insights-M3CYB22P.js.map +0 -1
- package/dist/insights-XCT3ONC7.js +0 -130
- package/dist/insights-XCT3ONC7.js.map +0 -1
- package/dist/inspect-ZPOVOENK.js +0 -190
- package/dist/inspect-ZPOVOENK.js.map +0 -1
- package/dist/instant-experiences-HT3HB4QZ.js +0 -258
- package/dist/instant-experiences-HT3HB4QZ.js.map +0 -1
- package/dist/intent-NSHW7EJT.js +0 -95
- package/dist/keyword-gap-ITTWKBWZ.js +0 -130
- package/dist/keyword-metrics-7DPR264W.js +0 -198
- package/dist/keyword-metrics-7DPR264W.js.map +0 -1
- package/dist/keywords-for-site-IXL22UKQ.js +0 -129
- package/dist/keywords-for-site-IXL22UKQ.js.map +0 -1
- package/dist/landing-KZ4OSHHR.js +0 -28
- package/dist/languages-MEFQQBJ2.js +0 -40
- package/dist/leads-DNQTRYIR.js +0 -113
- package/dist/leads-DNQTRYIR.js.map +0 -1
- package/dist/leads-SZOGCQFK.js +0 -538
- package/dist/leads-SZOGCQFK.js.map +0 -1
- package/dist/learn-Q7WZG7FA.js +0 -205
- package/dist/learn-Q7WZG7FA.js.map +0 -1
- package/dist/line-item-writes-3K7FT5GO.js +0 -209
- package/dist/line-item-writes-3K7FT5GO.js.map +0 -1
- package/dist/line-items-G5YJG25N.js +0 -107
- package/dist/link-2QVSIZJT.js +0 -65
- package/dist/link-2QVSIZJT.js.map +0 -1
- package/dist/linkedin-VAFPZNWZ.js +0 -1314
- package/dist/linkedin-VAFPZNWZ.js.map +0 -1
- package/dist/linkedin-person-EHTYVNZY.js +0 -137
- package/dist/linkedin-person-EHTYVNZY.js.map +0 -1
- package/dist/list-5TS2VPQZ.js +0 -152
- package/dist/list-5TS2VPQZ.js.map +0 -1
- package/dist/list-PSSQXQRJ.js +0 -65
- package/dist/list-PSSQXQRJ.js.map +0 -1
- package/dist/list-UMVIFQ3X.js +0 -304
- package/dist/list-UMVIFQ3X.js.map +0 -1
- package/dist/locations-RLWAS6AC.js +0 -40
- package/dist/locations-UKBOT6SB.js +0 -67
- package/dist/locations-UKBOT6SB.js.map +0 -1
- package/dist/log-ZZK3QMZB.js +0 -93
- package/dist/log-ZZK3QMZB.js.map +0 -1
- package/dist/lookup-ZJIP2M4X.js +0 -22
- package/dist/make-DB2BDVB3.js +0 -1368
- package/dist/make-DB2BDVB3.js.map +0 -1
- package/dist/map-UJ23GKRH.js +0 -434
- package/dist/map-UJ23GKRH.js.map +0 -1
- package/dist/mcp-SS2ALFRJ.js +0 -715
- package/dist/mcp-SS2ALFRJ.js.map +0 -1
- package/dist/media-ZWN7E777.js +0 -18
- package/dist/media-sources-GKSEDSE3.js +0 -35
- package/dist/members-KD2XRYPZ.js +0 -45
- package/dist/members-KD2XRYPZ.js.map +0 -1
- package/dist/meta-EHKXH257.js +0 -122
- package/dist/metrics-K6FDCMK7.js +0 -152
- package/dist/models-JQEPSPNQ.js +0 -155
- package/dist/normalize-ZNTXNX6D.js +0 -142
- package/dist/normalize-ZNTXNX6D.js.map +0 -1
- package/dist/options-TBIFJF3E.js +0 -123
- package/dist/options-TBIFJF3E.js.map +0 -1
- package/dist/organization-26J2ZIKM.js +0 -947
- package/dist/organization-26J2ZIKM.js.map +0 -1
- package/dist/page-photos-HWKQOSCU.js +0 -116
- package/dist/page-photos-HWKQOSCU.js.map +0 -1
- package/dist/performance-6TPJGM6A.js +0 -25
- package/dist/performance-O5BXZGS6.js +0 -5539
- package/dist/performance-O5BXZGS6.js.map +0 -1
- package/dist/pixels-Z7ZGXAGB.js +0 -60
- package/dist/pixels-Z7ZGXAGB.js.map +0 -1
- package/dist/plan-TVQSEKYL.js +0 -207
- package/dist/plan-TVQSEKYL.js.map +0 -1
- package/dist/preview-CWRGDFCP.js +0 -216
- package/dist/preview-CWRGDFCP.js.map +0 -1
- package/dist/promoted-tweet-writes-SZN74JHY.js +0 -181
- package/dist/promoted-tweet-writes-SZN74JHY.js.map +0 -1
- package/dist/promoted-tweets-7P4TSQU7.js +0 -119
- package/dist/publish-3DUERLGT.js +0 -342
- package/dist/publish-3DUERLGT.js.map +0 -1
- package/dist/query-QM7MBQD7.js +0 -62
- package/dist/questionnaire-LEZJLMAV.js +0 -93
- package/dist/questionnaire-LEZJLMAV.js.map +0 -1
- package/dist/reddit-SN5CESF4.js +0 -27
- package/dist/refresh-2ICQBTK4.js +0 -95
- package/dist/refresh-2ICQBTK4.js.map +0 -1
- package/dist/release-JSZ4JXYJ.js +0 -61
- package/dist/release-JSZ4JXYJ.js.map +0 -1
- package/dist/relevant-pages-VOICMQ7U.js +0 -99
- package/dist/remove-TFUAVRFM.js +0 -51
- package/dist/remove-TFUAVRFM.js.map +0 -1
- package/dist/reopen-5T2PE7MU.js +0 -64
- package/dist/reopen-5T2PE7MU.js.map +0 -1
- package/dist/rerun-EZJ4MLYG.js +0 -93
- package/dist/rerun-EZJ4MLYG.js.map +0 -1
- package/dist/research-BKYSU2C6.js +0 -263
- package/dist/research-BKYSU2C6.js.map +0 -1
- package/dist/research-QU63CJB5.js +0 -72
- package/dist/reset-DKTKZF7G.js +0 -55
- package/dist/reset-DKTKZF7G.js.map +0 -1
- package/dist/reset-SXABIVP6.js +0 -55
- package/dist/reset-SXABIVP6.js.map +0 -1
- package/dist/resolve-L47U2T77.js +0 -122
- package/dist/resolve-L47U2T77.js.map +0 -1
- package/dist/retry-JEWPK2B5.js +0 -63
- package/dist/retry-JEWPK2B5.js.map +0 -1
- package/dist/retry-SXFVLT3W.js +0 -61
- package/dist/retry-SXFVLT3W.js.map +0 -1
- package/dist/revenue-2MAYTXRM.js +0 -89
- package/dist/revenue-2MAYTXRM.js.map +0 -1
- package/dist/rule-writes-S3RN47OG.js +0 -523
- package/dist/rule-writes-S3RN47OG.js.map +0 -1
- package/dist/rules-CHWTFASP.js +0 -97
- package/dist/rules-CHWTFASP.js.map +0 -1
- package/dist/rules-KTJ2ZZ62.js +0 -217
- package/dist/rules-add-3M5TALWN.js +0 -463
- package/dist/rules-add-3M5TALWN.js.map +0 -1
- package/dist/run-2DLA6YO4.js +0 -68
- package/dist/run-JCGH2NHD.js +0 -67
- package/dist/run-JCGH2NHD.js.map +0 -1
- package/dist/scaffold-ad-VEW7JDY7.js +0 -1514
- package/dist/scaffold-ad-VEW7JDY7.js.map +0 -1
- package/dist/scaffold-static-ad-DYRL7DOS.js +0 -1013
- package/dist/scaffold-static-ad-DYRL7DOS.js.map +0 -1
- package/dist/scaffold-video-YRAVVKUH.js +0 -886
- package/dist/scaffold-video-YRAVVKUH.js.map +0 -1
- package/dist/schedule-WYIC6VNW.js +0 -62
- package/dist/schedule-WYIC6VNW.js.map +0 -1
- package/dist/scheduled-agents-FRBF4EOK.js +0 -55
- package/dist/schema-6Y3IXFDC.js +0 -69
- package/dist/schema-TC2O3FYY.js +0 -133
- package/dist/schema-TC2O3FYY.js.map +0 -1
- package/dist/search-VDW242BN.js +0 -175
- package/dist/search-VDW242BN.js.map +0 -1
- package/dist/select-O5HSSC36.js +0 -104
- package/dist/select-O5HSSC36.js.map +0 -1
- package/dist/sends-6FI7WELX.js +0 -348
- package/dist/sends-6FI7WELX.js.map +0 -1
- package/dist/set-prompt-TI7N64PJ.js +0 -196
- package/dist/set-prompt-TI7N64PJ.js.map +0 -1
- package/dist/setup-links-BM2FTXUZ.js +0 -142
- package/dist/setup-links-BM2FTXUZ.js.map +0 -1
- package/dist/shopify-FIHG5PYP.js +0 -3956
- package/dist/shopify-FIHG5PYP.js.map +0 -1
- package/dist/site-S3IGBMVC.js +0 -178
- package/dist/site-S3IGBMVC.js.map +0 -1
- package/dist/sources-77WLFY4Y.js +0 -30
- package/dist/sources-A4B3R5JC.js +0 -455
- package/dist/sources-A4B3R5JC.js.map +0 -1
- package/dist/stale-YIRCXDOK.js +0 -74
- package/dist/stale-YIRCXDOK.js.map +0 -1
- package/dist/status-6YNR647D.js +0 -63
- package/dist/status-6YNR647D.js.map +0 -1
- package/dist/studies-ZOEUY6YP.js +0 -250
- package/dist/studio-T5L7UEX6.js +0 -49
- package/dist/study-writes-DTGMCNFP.js +0 -468
- package/dist/study-writes-DTGMCNFP.js.map +0 -1
- package/dist/sync-FFVWHGLE.js +0 -55
- package/dist/sync-FFVWHGLE.js.map +0 -1
- package/dist/sync-definition-K4XOAG2B.js +0 -67
- package/dist/tags-5KIOGEKN.js +0 -21
- package/dist/tags-5KIOGEKN.js.map +0 -1
- package/dist/tags-BKAN5EAJ.js +0 -21
- package/dist/tags-BKAN5EAJ.js.map +0 -1
- package/dist/tags-ETOOYQ57.js +0 -26
- package/dist/tags-RPNK7TMO.js +0 -225
- package/dist/tags-RPNK7TMO.js.map +0 -1
- package/dist/tags-UM4QO46J.js +0 -21
- package/dist/tags-UM4QO46J.js.map +0 -1
- package/dist/targeting-VBQY3HUN.js +0 -760
- package/dist/targeting-VBQY3HUN.js.map +0 -1
- package/dist/targeting-criteria-L4DYIJZI.js +0 -113
- package/dist/targets-S6N7327Q.js +0 -104
- package/dist/targets-S6N7327Q.js.map +0 -1
- package/dist/testimonials-65N7IYN7.js +0 -32
- package/dist/themes-B4LCQUXB.js +0 -95
- package/dist/top-companies-SJKND75M.js +0 -109
- package/dist/top-companies-SJKND75M.js.map +0 -1
- package/dist/transcript-5I7I6DWL.js +0 -163
- package/dist/transcript-5I7I6DWL.js.map +0 -1
- package/dist/translate-SH6IG5Y7.js +0 -607
- package/dist/translate-SH6IG5Y7.js.map +0 -1
- package/dist/triggers-YRY3HTYU.js +0 -142
- package/dist/triggers-YRY3HTYU.js.map +0 -1
- package/dist/unlink-4B4YTQE4.js +0 -68
- package/dist/unlink-4B4YTQE4.js.map +0 -1
- package/dist/unstage-H5NTDJ6A.js +0 -86
- package/dist/unstage-H5NTDJ6A.js.map +0 -1
- package/dist/unstage-MDSSPUKV.js +0 -95
- package/dist/unstage-MDSSPUKV.js.map +0 -1
- package/dist/update-DI52JJGB.js +0 -99
- package/dist/update-DI52JJGB.js.map +0 -1
- package/dist/update-DMPDLMMV.js +0 -64
- package/dist/update-DMPDLMMV.js.map +0 -1
- package/dist/update-TUS4PJIG.js +0 -190
- package/dist/update-TUS4PJIG.js.map +0 -1
- package/dist/update-Z66LMXNS.js +0 -153
- package/dist/update-Z66LMXNS.js.map +0 -1
- package/dist/upload-7KQYZ7T7.js +0 -127
- package/dist/upload-7KQYZ7T7.js.map +0 -1
- package/dist/url-options-IHL4OU4C.js +0 -130
- package/dist/url-options-IHL4OU4C.js.map +0 -1
- package/dist/url-params-SDA2MWB5.js +0 -99
- package/dist/url-params-SDA2MWB5.js.map +0 -1
- package/dist/validate-ZABZNCSB.js +0 -120
- package/dist/validate-ZABZNCSB.js.map +0 -1
- package/dist/videos-BKVCCKIH.js +0 -41
- package/dist/viewer-check-B5O7ZY3Q.js +0 -81
- package/dist/web-KN3BTVG4.js +0 -141
- package/dist/web-KN3BTVG4.js.map +0 -1
- package/dist/winning-ads-JIDPISKM.js +0 -86
- package/dist/write-commands-K6M3RTVK.js +0 -1170
- package/dist/write-commands-K6M3RTVK.js.map +0 -1
- package/dist/write-commands-RVHLLLDR.js +0 -1498
- package/dist/write-commands-RVHLLLDR.js.map +0 -1
- package/dist/x-NLGWZCGX.js +0 -47
- /package/dist/{account-assets-O7IA37RE.js.map → account-assets-J5Z4URLQ.js.map} +0 -0
- /package/dist/{account-reads-SNOWDHHF.js.map → account-reads-FOEVPWDP.js.map} +0 -0
- /package/dist/{actions-Y4SULW2E.js.map → actions-QZDSLFFK.js.map} +0 -0
- /package/dist/{ads-2TVWICGM.js.map → ads-AYJAYLFR.js.map} +0 -0
- /package/dist/{ads-KBE5JXCH.js.map → ads-MAOI7S6V.js.map} +0 -0
- /package/dist/{adsets-YWBJFPAZ.js.map → adsets-QRKICEFD.js.map} +0 -0
- /package/dist/{animate-2BMHZ4FM.js.map → animate-HRWFVE2N.js.map} +0 -0
- /package/dist/{asset-writes-72DEVXGO.js.map → asset-writes-JLVUAVUZ.js.map} +0 -0
- /package/dist/{audiences-QAH42HIM.js.map → audiences-CDDI5HR5.js.map} +0 -0
- /package/dist/{avatars-P4UPNZM4.js.map → avatars-4HCGWBOL.js.map} +0 -0
- /package/dist/{brand-HALQWZWB.js.map → brand-C6OB6Q4U.js.map} +0 -0
- /package/dist/{campaigns-XZOQ2VTK.js.map → campaigns-HES5MDUG.js.map} +0 -0
- /package/dist/{campaigns-YMM5TQVO.js.map → campaigns-ZYU4BXDP.js.map} +0 -0
- /package/dist/{canvas-IJS7H3VE.js.map → canvas-AI34UBGU.js.map} +0 -0
- /package/dist/{catalog-TZLU5NWI.js.map → catalog-ZY3MFT55.js.map} +0 -0
- /package/dist/{changes-36C754R4.js.map → changes-OOUVQDBY.js.map} +0 -0
- /package/dist/{chatgpt-3WFOPURY.js.map → chatgpt-NAXIFWXV.js.map} +0 -0
- /package/dist/{chunk-NDFS3APP.js.map → chunk-3CHYJYSS.js.map} +0 -0
- /package/dist/{chunk-QW6HL7D6.js.map → chunk-3G3GC5N4.js.map} +0 -0
- /package/dist/{chunk-5XTGG4PV.js.map → chunk-3M45PYU7.js.map} +0 -0
- /package/dist/{chunk-Z7YMSHRZ.js.map → chunk-3QHXF3QI.js.map} +0 -0
- /package/dist/{chunk-MZCTX37B.js.map → chunk-3XPHUMLJ.js.map} +0 -0
- /package/dist/{chunk-MGYC2IRC.js.map → chunk-45EERHDB.js.map} +0 -0
- /package/dist/{chunk-ZFC562TP.js.map → chunk-4FGTANFK.js.map} +0 -0
- /package/dist/{chunk-PX3PUDK7.js.map → chunk-4IHWT7PH.js.map} +0 -0
- /package/dist/{chunk-PLBITHV6.js.map → chunk-4LF4AYPT.js.map} +0 -0
- /package/dist/{chunk-XGPU2VDU.js.map → chunk-4UQRXKYJ.js.map} +0 -0
- /package/dist/{chunk-SVBJ56T7.js.map → chunk-5JJD33Y2.js.map} +0 -0
- /package/dist/{chunk-I47BEKYK.js.map → chunk-5K4QYYOJ.js.map} +0 -0
- /package/dist/{chunk-MBSFEVOG.js.map → chunk-5LJ6E4YU.js.map} +0 -0
- /package/dist/{chunk-6Z7Y4KQB.js.map → chunk-5T73MMBL.js.map} +0 -0
- /package/dist/{chunk-R53XMPDO.js.map → chunk-64MAHLTK.js.map} +0 -0
- /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
- /package/dist/{chunk-3YJNSUNF.js.map → chunk-6ZFSDYWV.js.map} +0 -0
- /package/dist/{chunk-TVAIOC77.js.map → chunk-7BUIOP36.js.map} +0 -0
- /package/dist/{chunk-ZEC46NWW.js.map → chunk-AN4OEQXE.js.map} +0 -0
- /package/dist/{chunk-TX7CQTD4.js.map → chunk-AULSX5ZA.js.map} +0 -0
- /package/dist/{chunk-MVD7QIXI.js.map → chunk-AVYUFJQQ.js.map} +0 -0
- /package/dist/{chunk-KQTNUDKD.js.map → chunk-B4YF7VQF.js.map} +0 -0
- /package/dist/{chunk-UKSSNYLU.js.map → chunk-BDOYNGUL.js.map} +0 -0
- /package/dist/{chunk-BRLZX3VP.js.map → chunk-BJOK7QD4.js.map} +0 -0
- /package/dist/{chunk-Z2DRGXBB.js.map → chunk-CMCGFSUS.js.map} +0 -0
- /package/dist/{chunk-KBRJSPIM.js.map → chunk-DMJUIUAL.js.map} +0 -0
- /package/dist/{chunk-HML3VQIW.js.map → chunk-DUCUOZLS.js.map} +0 -0
- /package/dist/{chunk-7HZSORAB.js.map → chunk-FJZYOVSW.js.map} +0 -0
- /package/dist/{chunk-GMHCHHAA.js.map → chunk-FKP4ECJY.js.map} +0 -0
- /package/dist/{chunk-RVEY7BTT.js.map → chunk-GNMEOU46.js.map} +0 -0
- /package/dist/{chunk-AYPBARKP.js.map → chunk-GYKYXWUQ.js.map} +0 -0
- /package/dist/{chunk-MUXKYSTI.js.map → chunk-GYPLRU4Y.js.map} +0 -0
- /package/dist/{chunk-YNYAT2TZ.js.map → chunk-I43ZEWJQ.js.map} +0 -0
- /package/dist/{chunk-4GAEB6NK.js.map → chunk-IZABTTW5.js.map} +0 -0
- /package/dist/{chunk-GACSA5A6.js.map → chunk-K7IE6UYV.js.map} +0 -0
- /package/dist/{chunk-BTJSGJNQ.js.map → chunk-KH5YHHJV.js.map} +0 -0
- /package/dist/{chunk-C7QQQVBS.js.map → chunk-KMY7AD3N.js.map} +0 -0
- /package/dist/{chunk-6KWEF6HF.js.map → chunk-KPCHWDJM.js.map} +0 -0
- /package/dist/{chunk-SWN6OHXG.js.map → chunk-KTZCLJ2D.js.map} +0 -0
- /package/dist/{chunk-A3IQAONL.js.map → chunk-MKUA54QE.js.map} +0 -0
- /package/dist/{chunk-FFFJBNHA.js.map → chunk-MTV2RSGY.js.map} +0 -0
- /package/dist/{chunk-G5Y7OIPL.js.map → chunk-N2QX57K3.js.map} +0 -0
- /package/dist/{chunk-OJGYYH6K.js.map → chunk-NB2FU6EZ.js.map} +0 -0
- /package/dist/{chunk-SCL7PM6P.js.map → chunk-NEYWS2DQ.js.map} +0 -0
- /package/dist/{chunk-TVTSA4EN.js.map → chunk-NWF2LRKO.js.map} +0 -0
- /package/dist/{chunk-W574NV67.js.map → chunk-OTC6UMJ2.js.map} +0 -0
- /package/dist/{chunk-QMDMTZAW.js.map → chunk-OUY2IAWL.js.map} +0 -0
- /package/dist/{chunk-FPWQA7TK.js.map → chunk-PJXNCRMR.js.map} +0 -0
- /package/dist/{chunk-ARUXGKZO.js.map → chunk-PYQ3GF7R.js.map} +0 -0
- /package/dist/{chunk-DUR7PEJI.js.map → chunk-Q3EIVZAR.js.map} +0 -0
- /package/dist/{chunk-OBJCNGZL.js.map → chunk-QDQZ62FL.js.map} +0 -0
- /package/dist/{chunk-LRV6M2WB.js.map → chunk-QHZE62GP.js.map} +0 -0
- /package/dist/{chunk-PLAOK4AK.js.map → chunk-RGR6TSTJ.js.map} +0 -0
- /package/dist/{chunk-HSQRITKG.js.map → chunk-SAAXU7QR.js.map} +0 -0
- /package/dist/{chunk-H4NNQGG6.js.map → chunk-SHTKLRI6.js.map} +0 -0
- /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
- /package/dist/{chunk-RFIUOQLN.js.map → chunk-SSXG53CZ.js.map} +0 -0
- /package/dist/{chunk-5SRUAGTG.js.map → chunk-TBWAM577.js.map} +0 -0
- /package/dist/{chunk-AIRD6T4W.js.map → chunk-TGPGQTZA.js.map} +0 -0
- /package/dist/{chunk-F4YQ5PVR.js.map → chunk-UMIX2BMM.js.map} +0 -0
- /package/dist/{chunk-ZNRGH4NS.js.map → chunk-URMAEVZO.js.map} +0 -0
- /package/dist/{chunk-QBRPM3DQ.js.map → chunk-VBO3ZVUU.js.map} +0 -0
- /package/dist/{chunk-N7M2TWR5.js.map → chunk-VFLYMHTO.js.map} +0 -0
- /package/dist/{chunk-XQXZJ5IR.js.map → chunk-VGYIVXIZ.js.map} +0 -0
- /package/dist/{chunk-AQOFQNKQ.js.map → chunk-VIB7R533.js.map} +0 -0
- /package/dist/{chunk-D3KLDIPQ.js.map → chunk-WLESMH4J.js.map} +0 -0
- /package/dist/{chunk-SM7G7RUA.js.map → chunk-WVWLPXBO.js.map} +0 -0
- /package/dist/{chunk-5RVQK3SP.js.map → chunk-XEH5XAP6.js.map} +0 -0
- /package/dist/{chunk-P6BKKUSX.js.map → chunk-XEOKVL4E.js.map} +0 -0
- /package/dist/{chunk-FFG2OYVV.js.map → chunk-XOGQJYXH.js.map} +0 -0
- /package/dist/{chunk-YMF2RG4Z.js.map → chunk-XUXRA7IB.js.map} +0 -0
- /package/dist/{connect-PP6Z3F7Y.js.map → connect-IAXSZPGA.js.map} +0 -0
- /package/dist/{conversion-upload-command-KTYAY7IG.js.map → conversion-upload-command-IHFKVX2M.js.map} +0 -0
- /package/dist/{creatives-JPKA2RHU.js.map → creatives-BB6S2OF6.js.map} +0 -0
- /package/dist/{creatives-UJDPD4CI.js.map → creatives-BZEVJ6ER.js.map} +0 -0
- /package/dist/{currency-R4ORE2U3.js.map → currency-CGKO5GKH.js.map} +0 -0
- /package/dist/{custom-conversions-5HJBB5XL.js.map → custom-conversions-HAGG72LF.js.map} +0 -0
- /package/dist/{customers-7J3QGSOJ.js.map → customers-NKKU6S7G.js.map} +0 -0
- /package/dist/{discover-GSJRZUOC.js.map → discover-VM3O7CQM.js.map} +0 -0
- /package/dist/{draft-WYDMLNYA.js.map → draft-CRDBU6LF.js.map} +0 -0
- /package/dist/{fit-N7WDGWYZ.js.map → fit-Q5GRVF2O.js.map} +0 -0
- /package/dist/{fonts-TTUAP7HS.js.map → fonts-GD4YRXQU.js.map} +0 -0
- /package/dist/{forecast-4AG5F7YC.js.map → forecast-ONVS2QAI.js.map} +0 -0
- /package/dist/{generate-NWHPM2GQ.js.map → generate-VBEY3N3L.js.map} +0 -0
- /package/dist/{google-NAA4BASO.js.map → google-7EZP7I6J.js.map} +0 -0
- /package/dist/{ideas-SUXKKZC7.js.map → ideas-WX7EBPSF.js.map} +0 -0
- /package/dist/{images-VKVZ3DWG.js.map → images-4AXF4LAC.js.map} +0 -0
- /package/dist/{ingest-BBBFT6FZ.js.map → ingest-C3M4GUO6.js.map} +0 -0
- /package/dist/{intent-NSHW7EJT.js.map → intent-ZMYMFGB4.js.map} +0 -0
- /package/dist/{keyword-gap-ITTWKBWZ.js.map → keyword-gap-XSJO2R77.js.map} +0 -0
- /package/dist/{landing-KZ4OSHHR.js.map → landing-MUNYZQNA.js.map} +0 -0
- /package/dist/{languages-MEFQQBJ2.js.map → languages-DIQ3OG3E.js.map} +0 -0
- /package/dist/{line-items-G5YJG25N.js.map → line-items-JR25T2C5.js.map} +0 -0
- /package/dist/{locations-RLWAS6AC.js.map → locations-HTVYJSDJ.js.map} +0 -0
- /package/dist/{lookup-ZJIP2M4X.js.map → lookup-S5VG7AWH.js.map} +0 -0
- /package/dist/{media-ZWN7E777.js.map → media-P4T4ZBNS.js.map} +0 -0
- /package/dist/{media-sources-GKSEDSE3.js.map → media-sources-P246GM7W.js.map} +0 -0
- /package/dist/{meta-EHKXH257.js.map → meta-IPLWNYC7.js.map} +0 -0
- /package/dist/{metrics-K6FDCMK7.js.map → metrics-WYWUX6Y5.js.map} +0 -0
- /package/dist/{models-JQEPSPNQ.js.map → models-HJ7Y55AH.js.map} +0 -0
- /package/dist/{performance-6TPJGM6A.js.map → performance-J3DLNI2W.js.map} +0 -0
- /package/dist/{promoted-tweets-7P4TSQU7.js.map → promoted-tweets-W42FNWS7.js.map} +0 -0
- /package/dist/{query-QM7MBQD7.js.map → query-IQICLABN.js.map} +0 -0
- /package/dist/{reddit-SN5CESF4.js.map → reddit-X4CERXYF.js.map} +0 -0
- /package/dist/{relevant-pages-VOICMQ7U.js.map → relevant-pages-UDDQOYLD.js.map} +0 -0
- /package/dist/{research-QU63CJB5.js.map → research-D5UUJF74.js.map} +0 -0
- /package/dist/{rules-KTJ2ZZ62.js.map → rules-ZVS2MWED.js.map} +0 -0
- /package/dist/{run-2DLA6YO4.js.map → run-T7XAH2W5.js.map} +0 -0
- /package/dist/{scheduled-agents-FRBF4EOK.js.map → scheduled-agents-ZGCUZ6SB.js.map} +0 -0
- /package/dist/{schema-6Y3IXFDC.js.map → schema-D6BMZAPB.js.map} +0 -0
- /package/dist/{sources-77WLFY4Y.js.map → sources-DVMJEXEX.js.map} +0 -0
- /package/dist/{studies-ZOEUY6YP.js.map → studies-EPO2AM4M.js.map} +0 -0
- /package/dist/{studio-T5L7UEX6.js.map → studio-5Z4NMA4K.js.map} +0 -0
- /package/dist/{sync-definition-K4XOAG2B.js.map → sync-definition-F3CXG6KG.js.map} +0 -0
- /package/dist/{tags-ETOOYQ57.js.map → tags-SEZ2CQJM.js.map} +0 -0
- /package/dist/{targeting-criteria-L4DYIJZI.js.map → targeting-criteria-AU5CSMAU.js.map} +0 -0
- /package/dist/{testimonials-65N7IYN7.js.map → testimonials-Y6PUV6AL.js.map} +0 -0
- /package/dist/{themes-B4LCQUXB.js.map → themes-PGPIAKAO.js.map} +0 -0
- /package/dist/{videos-BKVCCKIH.js.map → videos-SVZV5YYC.js.map} +0 -0
- /package/dist/{viewer-check-B5O7ZY3Q.js.map → viewer-check-LUAEGV6H.js.map} +0 -0
- /package/dist/{winning-ads-JIDPISKM.js.map → winning-ads-KNLJHHCO.js.map} +0 -0
- /package/dist/{x-NLGWZCGX.js.map → x-ZQNHYIDU.js.map} +0 -0
|
@@ -1,288 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
repeatedValues
|
|
3
|
-
} from "./chunk-ERSX3MKH.js";
|
|
4
|
-
import {
|
|
5
|
-
failApi,
|
|
6
|
-
failValidation
|
|
7
|
-
} from "./chunk-HSQRITKG.js";
|
|
8
|
-
import "./chunk-JND6XSGZ.js";
|
|
9
|
-
import "./chunk-CAZGM2NX.js";
|
|
10
|
-
import "./chunk-NZS3KEQ2.js";
|
|
11
|
-
import "./chunk-GIWHHCD6.js";
|
|
12
|
-
import "./chunk-NSBNIPIW.js";
|
|
13
|
-
import {
|
|
14
|
-
getPublicSuffix,
|
|
15
|
-
parse
|
|
16
|
-
} from "./chunk-2TOIY2WN.js";
|
|
17
|
-
import {
|
|
18
|
-
apiPost
|
|
19
|
-
} from "./chunk-X7VQFLHI.js";
|
|
20
|
-
import "./chunk-LU4HI4KI.js";
|
|
21
|
-
import "./chunk-LGK7UWBN.js";
|
|
22
|
-
import {
|
|
23
|
-
registerSchema,
|
|
24
|
-
writeJson
|
|
25
|
-
} from "./chunk-Q7US4OOA.js";
|
|
26
|
-
import "./chunk-YQSBHWOI.js";
|
|
27
|
-
|
|
28
|
-
// ../api/src/credentials/contract.ts
|
|
29
|
-
import { z } from "zod";
|
|
30
|
-
|
|
31
|
-
// ../api/src/credentials/hosts.ts
|
|
32
|
-
function normaliseHost(host) {
|
|
33
|
-
return host.trim().toLowerCase().replace(/\.$/, "");
|
|
34
|
-
}
|
|
35
|
-
function asciiHost(host) {
|
|
36
|
-
if (!/[\u0080-\u{10FFFF}]/u.test(host) || /[/?#@:\\%[\]\s]/.test(host)) return host;
|
|
37
|
-
const url = `http://${host}`;
|
|
38
|
-
return URL.canParse(url) ? new URL(url).hostname : host;
|
|
39
|
-
}
|
|
40
|
-
function validateHostPattern(raw) {
|
|
41
|
-
const typed = normaliseHost(raw);
|
|
42
|
-
const wildcard = typed.startsWith("*.");
|
|
43
|
-
const host = asciiHost(wildcard ? typed.slice(2) : typed);
|
|
44
|
-
const pattern = wildcard ? `*.${host}` : host;
|
|
45
|
-
if (host === "" || host.includes("*")) {
|
|
46
|
-
return { ok: false, reason: "Use a website address like api.example.com or *.example.com." };
|
|
47
|
-
}
|
|
48
|
-
const parsed = parse(host);
|
|
49
|
-
if (parsed.isIp || host.startsWith("[")) {
|
|
50
|
-
return { ok: false, reason: "Use a website address, not an IP address." };
|
|
51
|
-
}
|
|
52
|
-
if (parsed.hostname !== host || parsed.domain === null) {
|
|
53
|
-
return { ok: false, reason: "Use only the website address, like api.example.com." };
|
|
54
|
-
}
|
|
55
|
-
if (wildcard && !wildcardSafe(host)) {
|
|
56
|
-
return { ok: false, reason: `*.${host} would allow any website. Name the company's own address.` };
|
|
57
|
-
}
|
|
58
|
-
return { ok: true, pattern };
|
|
59
|
-
}
|
|
60
|
-
var OPEN_HOSTING_DOMAINS = ["amazonaws.com", "cloudfront.net", "googleapis.com", "on.aws"];
|
|
61
|
-
var WITH_PRIVATE = { allowPrivateDomains: true };
|
|
62
|
-
function wildcardSafe(host) {
|
|
63
|
-
if (OPEN_HOSTING_DOMAINS.some((domain) => host === domain || host.endsWith(`.${domain}`))) return false;
|
|
64
|
-
const suffix = getPublicSuffix(host, WITH_PRIVATE);
|
|
65
|
-
return suffix !== host && getPublicSuffix(`zz.${host}`, WITH_PRIVATE) === suffix;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// ../api/src/credentials/placeholder.ts
|
|
69
|
-
var CREDENTIAL_NAME_PATTERN = "[a-z0-9][a-z0-9_-]{0,63}";
|
|
70
|
-
var CREDENTIAL_NAME_RE = new RegExp(`^${CREDENTIAL_NAME_PATTERN}$`);
|
|
71
|
-
var PLACEHOLDER_SOURCE = `\\{\\{credential:(${CREDENTIAL_NAME_PATTERN})\\}\\}`;
|
|
72
|
-
var WHOLE_PLACEHOLDER_RE = new RegExp(`^${PLACEHOLDER_SOURCE}$`);
|
|
73
|
-
|
|
74
|
-
// ../api/src/credentials/contract.ts
|
|
75
|
-
var MAX_CREDENTIAL_VALUE_LENGTH = 16384;
|
|
76
|
-
var MAX_CREDENTIAL_HOSTS = 20;
|
|
77
|
-
var credentialNameSchema = z.string().regex(new RegExp(`^${CREDENTIAL_NAME_PATTERN}$`), "Use lowercase letters, digits, - and _ (max 64).");
|
|
78
|
-
var credentialHostsSchema = z.array(z.string()).max(MAX_CREDENTIAL_HOSTS).transform((hosts, ctx) => {
|
|
79
|
-
const patterns = [];
|
|
80
|
-
for (const host of hosts) {
|
|
81
|
-
const result = validateHostPattern(host);
|
|
82
|
-
if (result.ok) patterns.push(result.pattern);
|
|
83
|
-
else ctx.addIssue({ code: "custom", message: `${host}: ${result.reason}` });
|
|
84
|
-
}
|
|
85
|
-
return [...new Set(patterns)];
|
|
86
|
-
});
|
|
87
|
-
var credentialSourceSchema = z.enum(["user", "agent", "chat-detected", "requested"]);
|
|
88
|
-
var credentialSummarySchema = z.object({
|
|
89
|
-
name: z.string(),
|
|
90
|
-
label: z.string(),
|
|
91
|
-
placeholder: z.string(),
|
|
92
|
-
allowedHosts: z.array(z.string()),
|
|
93
|
-
source: credentialSourceSchema,
|
|
94
|
-
lastUsedAt: z.number().nullable()
|
|
95
|
-
});
|
|
96
|
-
var credentialsListResponseSchema = z.object({ credentials: z.array(credentialSummarySchema) });
|
|
97
|
-
var credentialsPutRequestSchema = z.object({
|
|
98
|
-
name: credentialNameSchema,
|
|
99
|
-
label: z.string().trim().min(1).max(80).optional(),
|
|
100
|
-
value: z.string().min(1).max(MAX_CREDENTIAL_VALUE_LENGTH),
|
|
101
|
-
allowedHosts: credentialHostsSchema
|
|
102
|
-
});
|
|
103
|
-
var credentialsPutResponseSchema = z.object({
|
|
104
|
-
name: z.string(),
|
|
105
|
-
placeholder: z.string(),
|
|
106
|
-
replaced: z.boolean()
|
|
107
|
-
});
|
|
108
|
-
var credentialsDeleteRequestSchema = z.object({ name: credentialNameSchema });
|
|
109
|
-
var credentialsDeleteResponseSchema = z.object({ name: z.string(), deleted: z.literal(true) });
|
|
110
|
-
var brokerResolveResponseSchema = z.object({
|
|
111
|
-
credentials: z.array(z.object({ name: z.string(), value: z.string(), allowedHosts: z.array(z.string()) }))
|
|
112
|
-
});
|
|
113
|
-
var brokerUsageRequestSchema = z.object({
|
|
114
|
-
uses: z.array(z.object({ name: credentialNameSchema, host: z.string().max(253) })).max(100)
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
// src/commands/credentials/index.ts
|
|
118
|
-
import { defineCommand } from "citty";
|
|
119
|
-
var DOC = "__tooling__/docs/tools/baker/credentials.md";
|
|
120
|
-
var STDIN_ONLY = 'The value is read from stdin only, never from the command line (argv is visible to other processes and lands in logs). Pipe it: printf %s "$VALUE" | baker credentials put <name> --host <host>. For a credential the user owns, call request_credential instead.';
|
|
121
|
-
registerSchema({
|
|
122
|
-
command: "credentials.list",
|
|
123
|
-
description: "Start here: the credentials (API keys, tokens, passwords) this company stored, by name \u2014 never their values. Write the `placeholder` ({{credential:NAME}}) into an HTTPS request (curl header, URL, SDK config, JSON body) and the sandbox proxy sends the real value, only to the credential's allowedHosts. Nothing listed? Ask the user with the request_credential tool. Compact by default; --full adds source and lastUsedAt.",
|
|
124
|
-
args: {
|
|
125
|
-
full: { type: "boolean", description: "Add source and lastUsedAt per credential", required: false, default: false }
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
registerSchema({
|
|
129
|
-
command: "credentials.put",
|
|
130
|
-
description: `Store a credential YOU created on the user's behalf (e.g. a key you just generated through an API), so later requests can use {{credential:NAME}}. Example: printf %s "$KEY" | baker credentials put stripe-key --host api.stripe.com --label "Stripe key". The value comes from stdin ONLY. For a credential the user owns, call request_credential instead \u2014 never ask for it in chat. Replacing is allowed only for credentials the agent created.`,
|
|
131
|
-
args: {
|
|
132
|
-
name: { type: "positional", description: "Lowercase name: letters, digits, - and _ (max 64)", required: true },
|
|
133
|
-
host: {
|
|
134
|
-
type: "string",
|
|
135
|
-
description: "Website the value may be sent to (repeatable, or comma-separated): api.stripe.com, acme-store.myshopify.com",
|
|
136
|
-
required: true
|
|
137
|
-
},
|
|
138
|
-
label: { type: "string", description: "Human-readable label shown in Settings \u2192 Credentials", required: false }
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
registerSchema({
|
|
142
|
-
command: "credentials.delete",
|
|
143
|
-
description: "Delete a credential the agent created (e.g. a key it rotated out). Credentials the user added can only be removed by the user, in Settings \u2192 Credentials.",
|
|
144
|
-
args: {
|
|
145
|
-
name: { type: "positional", description: "Credential name", required: true }
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
async function readPipedValue() {
|
|
149
|
-
const stdin = process.stdin;
|
|
150
|
-
if (stdin.isTTY) return "";
|
|
151
|
-
const chunks = [];
|
|
152
|
-
for await (const chunk of stdin) {
|
|
153
|
-
chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
|
|
154
|
-
}
|
|
155
|
-
return Buffer.concat(chunks).toString("utf8").replace(/\r?\n$/, "");
|
|
156
|
-
}
|
|
157
|
-
function parseName(raw) {
|
|
158
|
-
const parsed = credentialNameSchema.safeParse(raw);
|
|
159
|
-
if (!parsed.success) {
|
|
160
|
-
failValidation(`Invalid credential name "${String(raw)}": use lowercase letters, digits, - and _ (max 64).`);
|
|
161
|
-
}
|
|
162
|
-
return parsed.data;
|
|
163
|
-
}
|
|
164
|
-
function parseHosts(rawArgs, parsed) {
|
|
165
|
-
const hosts = repeatedValues(rawArgs, "host", parsed).flatMap((value) => value.split(",")).map((host) => host.trim()).filter((host) => host !== "");
|
|
166
|
-
if (hosts.length === 0) {
|
|
167
|
-
failValidation("Name at least one website the value may be sent to: --host api.example.com (repeatable).");
|
|
168
|
-
}
|
|
169
|
-
const result = credentialHostsSchema.safeParse(hosts);
|
|
170
|
-
if (!result.success) {
|
|
171
|
-
failValidation(`Invalid --host: ${result.error.issues.map((issue) => issue.message).join("; ")}`);
|
|
172
|
-
}
|
|
173
|
-
return result.data;
|
|
174
|
-
}
|
|
175
|
-
var listCommand = defineCommand({
|
|
176
|
-
meta: {
|
|
177
|
-
name: "list",
|
|
178
|
-
description: "Start here: stored credentials by name with their {{credential:NAME}} placeholder and allowed websites. Never shows values."
|
|
179
|
-
},
|
|
180
|
-
args: {
|
|
181
|
-
full: { type: "boolean", description: "Add source and lastUsedAt", required: false, default: false }
|
|
182
|
-
},
|
|
183
|
-
run: async ({ args }) => {
|
|
184
|
-
try {
|
|
185
|
-
const response = await apiPost("/api/credentials/list", {});
|
|
186
|
-
const credentials = response.data.credentials.map(
|
|
187
|
-
(credential) => args.full ? credential : {
|
|
188
|
-
name: credential.name,
|
|
189
|
-
placeholder: credential.placeholder,
|
|
190
|
-
allowedHosts: credential.allowedHosts,
|
|
191
|
-
label: credential.label
|
|
192
|
-
}
|
|
193
|
-
);
|
|
194
|
-
writeJson({
|
|
195
|
-
ok: true,
|
|
196
|
-
data: { credentials },
|
|
197
|
-
meta: { count: credentials.length },
|
|
198
|
-
...credentials.length === 0 ? {
|
|
199
|
-
hints: [
|
|
200
|
-
"No credentials stored. When the task needs one the user owns, call the request_credential tool (label, reason, allowedHosts) \u2014 never ask them to paste it in chat."
|
|
201
|
-
]
|
|
202
|
-
} : {}
|
|
203
|
-
});
|
|
204
|
-
} catch (err) {
|
|
205
|
-
failApi(err);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
var putCommand = defineCommand({
|
|
210
|
-
meta: {
|
|
211
|
-
name: "put",
|
|
212
|
-
description: `Store a credential you created on the user's behalf; the value is read from stdin only.
|
|
213
|
-
Start here: printf %s "$KEY" | baker credentials put stripe-key --host api.stripe.com
|
|
214
|
-
For a credential the user owns, call request_credential instead.`
|
|
215
|
-
},
|
|
216
|
-
args: {
|
|
217
|
-
name: { type: "positional", description: "Lowercase name: letters, digits, - and _ (max 64)", required: true },
|
|
218
|
-
host: {
|
|
219
|
-
type: "string",
|
|
220
|
-
description: "Website the value may be sent to (repeatable, or comma-separated)",
|
|
221
|
-
required: false
|
|
222
|
-
},
|
|
223
|
-
label: { type: "string", description: "Label shown in Settings \u2192 Credentials", required: false },
|
|
224
|
-
value: {
|
|
225
|
-
type: "string",
|
|
226
|
-
description: "Refused \u2014 never put a value on the command line. Pipe it on stdin.",
|
|
227
|
-
required: false
|
|
228
|
-
}
|
|
229
|
-
},
|
|
230
|
-
run: async ({ args, rawArgs }) => {
|
|
231
|
-
if (args.value !== void 0 || args._.length > 1) {
|
|
232
|
-
failValidation(STDIN_ONLY);
|
|
233
|
-
}
|
|
234
|
-
const name = parseName(args.name);
|
|
235
|
-
const allowedHosts = parseHosts(rawArgs, args.host);
|
|
236
|
-
const value = await readPipedValue();
|
|
237
|
-
if (value === "") {
|
|
238
|
-
failValidation(`Nothing was piped on stdin. ${STDIN_ONLY}`);
|
|
239
|
-
}
|
|
240
|
-
if (value.length > MAX_CREDENTIAL_VALUE_LENGTH) {
|
|
241
|
-
failValidation(`The value is longer than ${MAX_CREDENTIAL_VALUE_LENGTH} characters.`);
|
|
242
|
-
}
|
|
243
|
-
const body = { name, value, allowedHosts, ...args.label ? { label: args.label } : {} };
|
|
244
|
-
try {
|
|
245
|
-
const response = await apiPost("/api/credentials/put", body);
|
|
246
|
-
writeJson({
|
|
247
|
-
ok: true,
|
|
248
|
-
data: { name: response.data.name, placeholder: response.data.placeholder },
|
|
249
|
-
hints: [
|
|
250
|
-
`Use ${response.data.placeholder} in the request; the value is sent only to: ${allowedHosts.join(", ")}.`,
|
|
251
|
-
"Never echo, print or write the value anywhere \u2014 unset the shell variable that held it."
|
|
252
|
-
]
|
|
253
|
-
});
|
|
254
|
-
} catch (err) {
|
|
255
|
-
failApi(err);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
var deleteCommand = defineCommand({
|
|
260
|
-
meta: {
|
|
261
|
-
name: "delete",
|
|
262
|
-
description: "Delete a credential the agent created. User-added credentials are removed by the user in Settings \u2192 Credentials."
|
|
263
|
-
},
|
|
264
|
-
args: {
|
|
265
|
-
name: { type: "positional", description: "Credential name", required: true }
|
|
266
|
-
},
|
|
267
|
-
run: async ({ args }) => {
|
|
268
|
-
const name = parseName(args.name);
|
|
269
|
-
try {
|
|
270
|
-
const response = await apiPost("/api/credentials/delete", { name });
|
|
271
|
-
writeJson({ ok: true, data: response.data });
|
|
272
|
-
} catch (err) {
|
|
273
|
-
failApi(err);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
var credentialsCommand = defineCommand({
|
|
278
|
-
meta: {
|
|
279
|
-
name: "credentials",
|
|
280
|
-
description: `Credentials (API keys, tokens, passwords) by name: write {{credential:NAME}} in an HTTPS request and the value is sent only to the websites it is bound to. You never see values.
|
|
281
|
-
Full guide: ${DOC}`
|
|
282
|
-
},
|
|
283
|
-
subCommands: { list: listCommand, put: putCommand, delete: deleteCommand }
|
|
284
|
-
});
|
|
285
|
-
export {
|
|
286
|
-
credentialsCommand
|
|
287
|
-
};
|
|
288
|
-
//# sourceMappingURL=credentials-EIPEZ2C2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../api/src/credentials/contract.ts","../../api/src/credentials/hosts.ts","../../api/src/credentials/placeholder.ts","../src/commands/credentials/index.ts"],"sourcesContent":["/**\n * Contract for `/api/credentials` (`baker credentials`) and the sandbox\n * broker's `/api/runtime/credentials/resolve`. Only the broker route ever\n * carries a value back; every agent-facing shape is metadata.\n */\nimport { z } from \"zod\";\nimport { validateHostPattern } from \"./hosts\";\nimport { CREDENTIAL_NAME_PATTERN } from \"./placeholder\";\n\nexport const MAX_CREDENTIAL_VALUE_LENGTH = 16_384;\nexport const MAX_CREDENTIAL_HOSTS = 20;\n\nexport const credentialNameSchema = z\n .string()\n .regex(new RegExp(`^${CREDENTIAL_NAME_PATTERN}$`), \"Use lowercase letters, digits, - and _ (max 64).\");\n\nexport const credentialHostsSchema = z\n .array(z.string())\n .max(MAX_CREDENTIAL_HOSTS)\n .transform((hosts, ctx) => {\n const patterns: string[] = [];\n for (const host of hosts) {\n const result = validateHostPattern(host);\n if (result.ok) patterns.push(result.pattern);\n else ctx.addIssue({ code: \"custom\", message: `${host}: ${result.reason}` });\n }\n return [...new Set(patterns)];\n });\n\nexport const credentialSourceSchema = z.enum([\"user\", \"agent\", \"chat-detected\", \"requested\"]);\nexport type CredentialSource = z.infer<typeof credentialSourceSchema>;\n\nexport const credentialSummarySchema = z.object({\n name: z.string(),\n label: z.string(),\n placeholder: z.string(),\n allowedHosts: z.array(z.string()),\n source: credentialSourceSchema,\n lastUsedAt: z.number().nullable(),\n});\nexport type CredentialSummary = z.infer<typeof credentialSummarySchema>;\n\nexport const credentialsListResponseSchema = z.object({ credentials: z.array(credentialSummarySchema) });\nexport type CredentialsListResponse = z.infer<typeof credentialsListResponseSchema>;\n\nexport const credentialsPutRequestSchema = z.object({\n name: credentialNameSchema,\n label: z.string().trim().min(1).max(80).optional(),\n value: z.string().min(1).max(MAX_CREDENTIAL_VALUE_LENGTH),\n allowedHosts: credentialHostsSchema,\n});\nexport type CredentialsPutRequest = z.input<typeof credentialsPutRequestSchema>;\n\nexport const credentialsPutResponseSchema = z.object({\n name: z.string(),\n placeholder: z.string(),\n replaced: z.boolean(),\n});\nexport type CredentialsPutResponse = z.infer<typeof credentialsPutResponseSchema>;\n\nexport const credentialsDeleteRequestSchema = z.object({ name: credentialNameSchema });\nexport type CredentialsDeleteRequest = z.infer<typeof credentialsDeleteRequestSchema>;\n\nexport const credentialsDeleteResponseSchema = z.object({ name: z.string(), deleted: z.literal(true) });\nexport type CredentialsDeleteResponse = z.infer<typeof credentialsDeleteResponseSchema>;\n\nexport const brokerResolveResponseSchema = z.object({\n credentials: z.array(z.object({ name: z.string(), value: z.string(), allowedHosts: z.array(z.string()) })),\n});\nexport type BrokerResolveResponse = z.infer<typeof brokerResolveResponseSchema>;\n\nexport const brokerUsageRequestSchema = z.object({\n uses: z.array(z.object({ name: credentialNameSchema, host: z.string().max(253) })).max(100),\n});\nexport type BrokerUsageRequest = z.infer<typeof brokerUsageRequestSchema>;\n","/**\n * Where a credential may be sent. The sandbox proxy only substitutes a\n * credential into a request whose host one of its patterns allows, so a\n * prompt-injected agent cannot post the value to a host it controls.\n */\nimport { getPublicSuffix, parse } from \"tldts\";\n\nexport type HostPatternResult = { ok: true; pattern: string } | { ok: false; reason: string };\n\nfunction normaliseHost(host: string): string {\n return host.trim().toLowerCase().replace(/\\.$/, \"\");\n}\n\n/** An international name (`bücher.de`) in the ASCII form a request carries (`xn--bcher-kva.de`); unchanged when it is not a host. */\nfunction asciiHost(host: string): string {\n // Only a bare name is converted: the URL parser would silently drop a path or a `user@` the person typed.\n if (!/[\\u0080-\\u{10FFFF}]/u.test(host) || /[/?#@:\\\\%[\\]\\s]/.test(host)) return host;\n const url = `http://${host}`;\n return URL.canParse(url) ? new URL(url).hostname : host;\n}\n\nexport function validateHostPattern(raw: string): HostPatternResult {\n const typed = normaliseHost(raw);\n const wildcard = typed.startsWith(\"*.\");\n const host = asciiHost(wildcard ? typed.slice(2) : typed);\n const pattern = wildcard ? `*.${host}` : host;\n if (host === \"\" || host.includes(\"*\")) {\n return { ok: false, reason: \"Use a website address like api.example.com or *.example.com.\" };\n }\n const parsed = parse(host);\n if (parsed.isIp || host.startsWith(\"[\")) {\n return { ok: false, reason: \"Use a website address, not an IP address.\" };\n }\n if (parsed.hostname !== host || parsed.domain === null) {\n return { ok: false, reason: \"Use only the website address, like api.example.com.\" };\n }\n if (wildcard && !wildcardSafe(host)) {\n return { ok: false, reason: `*.${host} would allow any website. Name the company's own address.` };\n }\n return { ok: true, pattern };\n}\n\n/**\n * Cloud hosts where anyone can own a subdomain and read the headers it is\n * sent, which the Public Suffix List does not list as a suffix: API Gateway\n * and Lambda URLs under amazonaws.com, and a Cloud Storage bucket at\n * `<bucket>.storage.googleapis.com`, and AWS's newer `on.aws`, whose Lambda\n * URLs sit two labels below it where the check below does not look.\n */\nconst OPEN_HOSTING_DOMAINS = [\"amazonaws.com\", \"cloudfront.net\", \"googleapis.com\", \"on.aws\"];\n\nconst WITH_PRIVATE = { allowPrivateDomains: true };\n\n/**\n * Whether `*.host` names one owner's sites. A public suffix (ICANN `com`, or\n * a private one such as `vercel.app`) is shared by everyone who can sign up,\n * and so is a base with one just below it (`run.app`, whose Cloud Run services\n * live under `a.run.app`).\n */\nfunction wildcardSafe(host: string): boolean {\n if (OPEN_HOSTING_DOMAINS.some((domain) => host === domain || host.endsWith(`.${domain}`))) return false;\n const suffix = getPublicSuffix(host, WITH_PRIVATE);\n return suffix !== host && getPublicSuffix(`zz.${host}`, WITH_PRIVATE) === suffix;\n}\n\nexport function hostAllowed(host: string, patterns: readonly string[]): boolean {\n const target = normaliseHost(host);\n return patterns.some((raw) => {\n const pattern = normaliseHost(raw);\n return pattern.startsWith(\"*.\") ? target.endsWith(pattern.slice(1)) : target === pattern;\n });\n}\n","/**\n * The one grammar an agent, a chat message and the sandbox proxy share for\n * \"the stored credential called NAME\": `{{credential:NAME}}`. The value never\n * appears in text; the proxy swaps the placeholder in on the way out.\n */\n\nexport const CREDENTIAL_NAME_PATTERN = \"[a-z0-9][a-z0-9_-]{0,63}\";\nconst CREDENTIAL_NAME_RE = new RegExp(`^${CREDENTIAL_NAME_PATTERN}$`);\nconst PLACEHOLDER_SOURCE = `\\\\{\\\\{credential:(${CREDENTIAL_NAME_PATTERN})\\\\}\\\\}`;\n\nexport type CredentialPlaceholder = { name: string; start: number; end: number };\n\nexport function isCredentialName(name: string): boolean {\n return CREDENTIAL_NAME_RE.test(name);\n}\n\nexport function renderPlaceholder(name: string): string {\n return `{{credential:${name}}}`;\n}\n\nexport function parsePlaceholders(text: string): CredentialPlaceholder[] {\n return [...text.matchAll(new RegExp(PLACEHOLDER_SOURCE, \"g\"))].map((match) => ({\n name: match[1] ?? \"\",\n start: match.index,\n end: match.index + match[0].length,\n }));\n}\n\nconst WHOLE_PLACEHOLDER_RE = new RegExp(`^${PLACEHOLDER_SOURCE}$`);\n\n/** The credential a value stands for when the whole value is one placeholder, as a tag's secret field holds it. */\nexport function credentialNamedBy(value: string): string | null {\n return WHOLE_PLACEHOLDER_RE.exec(value.trim())?.[1] ?? null;\n}\n\n/** A readable label (\"Meta access token\") as a placeholder name (\"meta-access-token\"). */\nexport function slugifyCredentialName(label: string): string {\n const slug = label\n .normalize(\"NFKD\")\n .replace(/[̀-ͯ]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"-\")\n .replace(/-{2,}/g, \"-\")\n .replace(/^[-_]+|[-_]+$/g, \"\")\n .slice(0, 64)\n .replace(/[-_]+$/g, \"\");\n return slug === \"\" ? \"credential\" : slug;\n}\n","import type {\n CredentialsDeleteResponse,\n CredentialsListResponse,\n CredentialsPutRequest,\n CredentialsPutResponse,\n} from \"@baker/api/credentials\";\nimport { credentialHostsSchema, credentialNameSchema, MAX_CREDENTIAL_VALUE_LENGTH } from \"@baker/api/credentials\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { repeatedValues } from \"../../lib/repeatedFlags.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation } from \"../actions/shared.ts\";\n\n/** The backend's success envelope around a contract response. */\ntype Ok<T> = { ok: true; data: T };\n\nconst DOC = \"__tooling__/docs/tools/baker/credentials.md\";\n\nconst STDIN_ONLY =\n 'The value is read from stdin only, never from the command line (argv is visible to other processes and lands in logs). Pipe it: printf %s \"$VALUE\" | baker credentials put <name> --host <host>. For a credential the user owns, call request_credential instead.';\n\nregisterSchema({\n command: \"credentials.list\",\n description:\n \"Start here: the credentials (API keys, tokens, passwords) this company stored, by name — never their values. Write the `placeholder` ({{credential:NAME}}) into an HTTPS request (curl header, URL, SDK config, JSON body) and the sandbox proxy sends the real value, only to the credential's allowedHosts. Nothing listed? Ask the user with the request_credential tool. Compact by default; --full adds source and lastUsedAt.\",\n args: {\n full: { type: \"boolean\", description: \"Add source and lastUsedAt per credential\", required: false, default: false },\n },\n});\n\nregisterSchema({\n command: \"credentials.put\",\n description:\n 'Store a credential YOU created on the user\\'s behalf (e.g. a key you just generated through an API), so later requests can use {{credential:NAME}}. Example: printf %s \"$KEY\" | baker credentials put stripe-key --host api.stripe.com --label \"Stripe key\". The value comes from stdin ONLY. For a credential the user owns, call request_credential instead — never ask for it in chat. Replacing is allowed only for credentials the agent created.',\n args: {\n name: { type: \"positional\", description: \"Lowercase name: letters, digits, - and _ (max 64)\", required: true },\n host: {\n type: \"string\",\n description:\n \"Website the value may be sent to (repeatable, or comma-separated): api.stripe.com, acme-store.myshopify.com\",\n required: true,\n },\n label: { type: \"string\", description: \"Human-readable label shown in Settings → Credentials\", required: false },\n },\n});\n\nregisterSchema({\n command: \"credentials.delete\",\n description:\n \"Delete a credential the agent created (e.g. a key it rotated out). Credentials the user added can only be removed by the user, in Settings → Credentials.\",\n args: {\n name: { type: \"positional\", description: \"Credential name\", required: true },\n },\n});\n\n/** Everything piped on stdin, with one trailing newline trimmed (what `echo` adds). */\nasync function readPipedValue(): Promise<string> {\n const stdin = process.stdin;\n if (stdin.isTTY) return \"\";\n const chunks: Buffer[] = [];\n for await (const chunk of stdin) {\n chunks.push(typeof chunk === \"string\" ? Buffer.from(chunk) : chunk);\n }\n return Buffer.concat(chunks)\n .toString(\"utf8\")\n .replace(/\\r?\\n$/, \"\");\n}\n\nfunction parseName(raw: unknown): string {\n const parsed = credentialNameSchema.safeParse(raw);\n if (!parsed.success) {\n failValidation(`Invalid credential name \"${String(raw)}\": use lowercase letters, digits, - and _ (max 64).`);\n }\n return parsed.data;\n}\n\nfunction parseHosts(rawArgs: readonly string[], parsed: unknown): string[] {\n const hosts = repeatedValues(rawArgs, \"host\", parsed)\n .flatMap((value) => value.split(\",\"))\n .map((host) => host.trim())\n .filter((host) => host !== \"\");\n if (hosts.length === 0) {\n failValidation(\"Name at least one website the value may be sent to: --host api.example.com (repeatable).\");\n }\n const result = credentialHostsSchema.safeParse(hosts);\n if (!result.success) {\n failValidation(`Invalid --host: ${result.error.issues.map((issue) => issue.message).join(\"; \")}`);\n }\n return result.data;\n}\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Start here: stored credentials by name with their {{credential:NAME}} placeholder and allowed websites. Never shows values.\",\n },\n args: {\n full: { type: \"boolean\", description: \"Add source and lastUsedAt\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const response = await apiPost<Ok<CredentialsListResponse>>(\"/api/credentials/list\", {});\n const credentials = response.data.credentials.map((credential) =>\n args.full\n ? credential\n : {\n name: credential.name,\n placeholder: credential.placeholder,\n allowedHosts: credential.allowedHosts,\n label: credential.label,\n },\n );\n writeJson({\n ok: true,\n data: { credentials },\n meta: { count: credentials.length },\n ...(credentials.length === 0\n ? {\n hints: [\n \"No credentials stored. When the task needs one the user owns, call the request_credential tool (label, reason, allowedHosts) — never ask them to paste it in chat.\",\n ],\n }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst putCommand = defineCommand({\n meta: {\n name: \"put\",\n description: `Store a credential you created on the user's behalf; the value is read from stdin only.\nStart here: printf %s \"$KEY\" | baker credentials put stripe-key --host api.stripe.com\nFor a credential the user owns, call request_credential instead.`,\n },\n args: {\n name: { type: \"positional\", description: \"Lowercase name: letters, digits, - and _ (max 64)\", required: true },\n host: {\n type: \"string\",\n description: \"Website the value may be sent to (repeatable, or comma-separated)\",\n required: false,\n },\n label: { type: \"string\", description: \"Label shown in Settings → Credentials\", required: false },\n value: {\n type: \"string\",\n description: \"Refused — never put a value on the command line. Pipe it on stdin.\",\n required: false,\n },\n },\n run: async ({ args, rawArgs }) => {\n if (args.value !== undefined || args._.length > 1) {\n failValidation(STDIN_ONLY);\n }\n const name = parseName(args.name);\n const allowedHosts = parseHosts(rawArgs, args.host);\n const value = await readPipedValue();\n if (value === \"\") {\n failValidation(`Nothing was piped on stdin. ${STDIN_ONLY}`);\n }\n if (value.length > MAX_CREDENTIAL_VALUE_LENGTH) {\n failValidation(`The value is longer than ${MAX_CREDENTIAL_VALUE_LENGTH} characters.`);\n }\n const body: CredentialsPutRequest = { name, value, allowedHosts, ...(args.label ? { label: args.label } : {}) };\n try {\n const response = await apiPost<Ok<CredentialsPutResponse>>(\"/api/credentials/put\", body);\n writeJson({\n ok: true,\n data: { name: response.data.name, placeholder: response.data.placeholder },\n hints: [\n `Use ${response.data.placeholder} in the request; the value is sent only to: ${allowedHosts.join(\", \")}.`,\n \"Never echo, print or write the value anywhere — unset the shell variable that held it.\",\n ],\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst deleteCommand = defineCommand({\n meta: {\n name: \"delete\",\n description:\n \"Delete a credential the agent created. User-added credentials are removed by the user in Settings → Credentials.\",\n },\n args: {\n name: { type: \"positional\", description: \"Credential name\", required: true },\n },\n run: async ({ args }) => {\n const name = parseName(args.name);\n try {\n const response = await apiPost<Ok<CredentialsDeleteResponse>>(\"/api/credentials/delete\", { name });\n writeJson({ ok: true, data: response.data });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const credentialsCommand = defineCommand({\n meta: {\n name: \"credentials\",\n description: `Credentials (API keys, tokens, passwords) by name: write {{credential:NAME}} in an HTTPS request and the value is sent only to the websites it is bound to. You never see values.\nFull guide: ${DOC}`,\n },\n subCommands: { list: listCommand, put: putCommand, delete: deleteCommand },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
FRAME_PLACEHOLDER_NOTE,
|
|
3
|
-
exitOnPrepareError,
|
|
4
|
-
prepareCanvas
|
|
5
|
-
} from "./chunk-RVEY7BTT.js";
|
|
6
|
-
import "./chunk-P6BKKUSX.js";
|
|
7
|
-
import "./chunk-RFIUOQLN.js";
|
|
8
|
-
import "./chunk-WHBFXR6F.js";
|
|
9
|
-
import "./chunk-DQVI7GCX.js";
|
|
10
|
-
import "./chunk-EKX37C3T.js";
|
|
11
|
-
import "./chunk-SWN6OHXG.js";
|
|
12
|
-
import "./chunk-FPWQA7TK.js";
|
|
13
|
-
import "./chunk-A3IQAONL.js";
|
|
14
|
-
import "./chunk-SVBJ56T7.js";
|
|
15
|
-
import "./chunk-XQXZJ5IR.js";
|
|
16
|
-
import "./chunk-3YJNSUNF.js";
|
|
17
|
-
import "./chunk-QPESDKZC.js";
|
|
18
|
-
import "./chunk-E44NXCTL.js";
|
|
19
|
-
import "./chunk-EJGAJHLB.js";
|
|
20
|
-
import {
|
|
21
|
-
briefCopyLines,
|
|
22
|
-
frameDescriptionOf,
|
|
23
|
-
nativeDialogueOf
|
|
24
|
-
} from "./chunk-TX7CQTD4.js";
|
|
25
|
-
import "./chunk-F4YQ5PVR.js";
|
|
26
|
-
import "./chunk-DGCUPJZD.js";
|
|
27
|
-
import "./chunk-MVD7QIXI.js";
|
|
28
|
-
import {
|
|
29
|
-
COPY_DIRECTIVE_HEADER
|
|
30
|
-
} from "./chunk-LRV6M2WB.js";
|
|
31
|
-
import "./chunk-7HZSORAB.js";
|
|
32
|
-
import "./chunk-MCJ5I5LR.js";
|
|
33
|
-
import "./chunk-2WZI36D3.js";
|
|
34
|
-
import "./chunk-65Y3RCWP.js";
|
|
35
|
-
import "./chunk-LNNTHEL7.js";
|
|
36
|
-
import "./chunk-FOMFU2RX.js";
|
|
37
|
-
import "./chunk-PSGIHSNC.js";
|
|
38
|
-
import "./chunk-PONLPYD7.js";
|
|
39
|
-
import "./chunk-JND6XSGZ.js";
|
|
40
|
-
import "./chunk-CAZGM2NX.js";
|
|
41
|
-
import "./chunk-NZS3KEQ2.js";
|
|
42
|
-
import "./chunk-GIWHHCD6.js";
|
|
43
|
-
import "./chunk-NSBNIPIW.js";
|
|
44
|
-
import "./chunk-2TOIY2WN.js";
|
|
45
|
-
import "./chunk-X7VQFLHI.js";
|
|
46
|
-
import "./chunk-LU4HI4KI.js";
|
|
47
|
-
import "./chunk-LGK7UWBN.js";
|
|
48
|
-
import "./chunk-Q7US4OOA.js";
|
|
49
|
-
import "./chunk-YQSBHWOI.js";
|
|
50
|
-
|
|
51
|
-
// src/commands/canvas/critique.ts
|
|
52
|
-
import path from "path";
|
|
53
|
-
import { defineCommand } from "citty";
|
|
54
|
-
|
|
55
|
-
// src/engine/scaffold/lib/critique.ts
|
|
56
|
-
var VIBE_CUE = /\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\b/i;
|
|
57
|
-
var MECHANISM_CUE = /\b(because|works by|so that|mechanism|proof|guarantee|clinically|backed by|the reason|that's why)\b/i;
|
|
58
|
-
function promptOf(node) {
|
|
59
|
-
const p = node?.params?.prompt;
|
|
60
|
-
return typeof p === "string" ? p : "";
|
|
61
|
-
}
|
|
62
|
-
function round(n) {
|
|
63
|
-
return Math.round(n * 100) / 100;
|
|
64
|
-
}
|
|
65
|
-
function frameLook(node) {
|
|
66
|
-
const description = frameDescriptionOf(promptOf(node)).trim();
|
|
67
|
-
return description.endsWith(FRAME_PLACEHOLDER_NOTE) ? "" : description;
|
|
68
|
-
}
|
|
69
|
-
function creativeText(nodes) {
|
|
70
|
-
return nodes.flatMap((n) => {
|
|
71
|
-
if (n.type === "image_generate") return [frameLook(n)];
|
|
72
|
-
if (n.type === "video_generate") return [nativeDialogueOf(promptOf(n)) ?? ""];
|
|
73
|
-
if (n.type === "tts" && typeof n.params?.text === "string") return [n.params.text];
|
|
74
|
-
return [];
|
|
75
|
-
}).join("\n");
|
|
76
|
-
}
|
|
77
|
-
function scoreHookStrength(nodes, scene0, hasOverlay) {
|
|
78
|
-
const scene0Text = scene0.map((n) => promptOf(n)).join("\n");
|
|
79
|
-
const frames = scene0.filter((n) => n.type === "image_generate");
|
|
80
|
-
const look = (frames.length > 0 ? frames.map(frameLook) : scene0.map((n) => promptOf(n))).join("\n");
|
|
81
|
-
const hookClip = scene0.find((n) => n.type === "video_generate");
|
|
82
|
-
const hasSound = hookClip?.params?.generate_audio === true || /Dialogue:|Audio:/.test(scene0Text) || nodes.some((n) => n.type === "tts" || n.type === "dialogue");
|
|
83
|
-
const layers = [hasOverlay, hasSound, look.trim().length > 40, VIBE_CUE.test(look)];
|
|
84
|
-
const layerCount = layers.filter(Boolean).length;
|
|
85
|
-
return {
|
|
86
|
-
dimension: "hook_strength",
|
|
87
|
-
score: round(hookClip ? layerCount / 4 : 0.5),
|
|
88
|
-
note: hookClip ? `hook works on ${layerCount}/4 layers (text/sound/visual/vibe)` : "no scene-0 clip found \u2014 is this a video creative?"
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function scoreFirstFrameLegibility(hasOverlay) {
|
|
92
|
-
return {
|
|
93
|
-
dimension: "first_frame_legibility",
|
|
94
|
-
score: hasOverlay ? 1 : 0.4,
|
|
95
|
-
note: hasOverlay ? "a designed overlay layer carries the sound-off message" : "footage-only \u2014 the first frame may not read with sound off; consider an overlay hook"
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
function scoreRetentionRisk(videoNodes) {
|
|
99
|
-
let saggy = 0;
|
|
100
|
-
for (const n of videoNodes) {
|
|
101
|
-
const dur = typeof n.params?.duration === "number" ? n.params.duration : 0;
|
|
102
|
-
const spoken = /Dialogue:/.test(promptOf(n)) || n.params?.generate_audio === true;
|
|
103
|
-
if (dur >= 8 && !spoken) saggy += 1;
|
|
104
|
-
}
|
|
105
|
-
return {
|
|
106
|
-
dimension: "retention_risk",
|
|
107
|
-
score: round(videoNodes.length > 0 ? 1 - Math.min(1, saggy / videoNodes.length) : 0.7),
|
|
108
|
-
note: saggy > 0 ? `${saggy} long clip(s) with no spoken line may sag` : "no obvious sag points"
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
function scoreMechanismClarity(allPromptText) {
|
|
112
|
-
const clear = MECHANISM_CUE.test(allPromptText);
|
|
113
|
-
return {
|
|
114
|
-
dimension: "mechanism_clarity",
|
|
115
|
-
score: clear ? 1 : 0.4,
|
|
116
|
-
note: clear ? "states a mechanism/proof" : "no clear 'why it works' \u2014 add the mechanism"
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
function clamp01(n) {
|
|
120
|
-
return Math.max(0, Math.min(1, n));
|
|
121
|
-
}
|
|
122
|
-
function staticCopyLines(nodes) {
|
|
123
|
-
const sized = nodes.find((n) => n.type === "static_format")?.params?.copy;
|
|
124
|
-
if (Array.isArray(sized)) {
|
|
125
|
-
return sized.flatMap(
|
|
126
|
-
(l) => typeof l?.text === "string" ? [l.text] : []
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
const gen = nodes.find((n) => n.type === "image_generate");
|
|
130
|
-
const prompt = promptOf(gen);
|
|
131
|
-
const compiled = briefCopyLines(prompt);
|
|
132
|
-
if (compiled.length > 0) return compiled;
|
|
133
|
-
const start = prompt.indexOf(COPY_DIRECTIVE_HEADER);
|
|
134
|
-
if (start === -1) return [];
|
|
135
|
-
const bodyStart = start + COPY_DIRECTIVE_HEADER.length;
|
|
136
|
-
const end = prompt.indexOf("\n\n", bodyStart);
|
|
137
|
-
const block = prompt.slice(bodyStart, end === -1 ? void 0 : end);
|
|
138
|
-
const quoted = block.match(/"[^"]+"/g);
|
|
139
|
-
return quoted ? quoted.map((s) => s.slice(1, -1)) : [];
|
|
140
|
-
}
|
|
141
|
-
function scoreTextLegibilityRisk(copy) {
|
|
142
|
-
const lines = copy.length;
|
|
143
|
-
return {
|
|
144
|
-
dimension: "text_legibility_risk",
|
|
145
|
-
score: round(clamp01(1 - Math.max(0, lines - 6) / 12)),
|
|
146
|
-
note: lines > 6 ? `${lines} copy blocks \u2014 dense; trim or split so type stays legible` : `${lines} copy block(s) \u2014 reads cleanly`
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
function scoreIdentityGrounding(nodes) {
|
|
150
|
-
const grounded = nodes.filter((n) => n.type === "image_reference_sheet").length + nodes.filter((n) => n.type === "ingest" && typeof n.id === "string" && /^el_/.test(n.id)).length;
|
|
151
|
-
return {
|
|
152
|
-
dimension: "identity_grounding",
|
|
153
|
-
// 0 grounded is fine for a pure-type ad, so it's a soft nudge, not a failure.
|
|
154
|
-
score: grounded > 0 ? 1 : 0.6,
|
|
155
|
-
note: grounded > 0 ? `${grounded} subject(s) grounded in a real reference` : "no grounded subject \u2014 fine for a type-only ad; otherwise ground the hero in a real reference"
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
function scoreTypeFidelity(nodes) {
|
|
159
|
-
const hasSpecimen = nodes.some((n) => n.type === "font_specimen");
|
|
160
|
-
return {
|
|
161
|
-
dimension: "type_fidelity",
|
|
162
|
-
score: hasSpecimen ? 1 : 0.5,
|
|
163
|
-
note: hasSpecimen ? "brand type biased by a font specimen" : "no font specimen \u2014 brand type may drift; wire the brand font"
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
function critiqueVideo(nodes, videoNodes) {
|
|
167
|
-
const scene0 = nodes.filter((n) => typeof n.id === "string" && /^s0(?:[_a-z0-9])*_/.test(n.id));
|
|
168
|
-
const hasOverlay = nodes.some((n) => typeof n.type === "string" && /hyperframe/.test(n.type));
|
|
169
|
-
return [
|
|
170
|
-
scoreHookStrength(nodes, scene0, hasOverlay),
|
|
171
|
-
scoreFirstFrameLegibility(hasOverlay),
|
|
172
|
-
scoreRetentionRisk(videoNodes),
|
|
173
|
-
scoreMechanismClarity(creativeText(nodes))
|
|
174
|
-
];
|
|
175
|
-
}
|
|
176
|
-
function critiqueStatic(nodes) {
|
|
177
|
-
const copy = staticCopyLines(nodes);
|
|
178
|
-
const copyText = copy.join("\n");
|
|
179
|
-
return [
|
|
180
|
-
scoreTextLegibilityRisk(copy),
|
|
181
|
-
scoreIdentityGrounding(nodes),
|
|
182
|
-
scoreTypeFidelity(nodes),
|
|
183
|
-
scoreMechanismClarity(copyText)
|
|
184
|
-
];
|
|
185
|
-
}
|
|
186
|
-
function critiqueCanvas(canvas) {
|
|
187
|
-
const nodes = Array.isArray(canvas.nodes) ? canvas.nodes : [];
|
|
188
|
-
const videoNodes = nodes.filter((n) => n.type === "video_generate");
|
|
189
|
-
const dimensions = videoNodes.length > 0 ? critiqueVideo(nodes, videoNodes) : critiqueStatic(nodes);
|
|
190
|
-
const overall = round(dimensions.reduce((s, d) => s + d.score, 0) / dimensions.length);
|
|
191
|
-
return { advisory: true, overall, dimensions };
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// src/commands/canvas/critique.ts
|
|
195
|
-
var critiqueCommand = defineCommand({
|
|
196
|
-
meta: {
|
|
197
|
-
name: "critique",
|
|
198
|
-
description: "Pre-spend creative critic (ADVISORY \u2014 never blocks). Scores a scaffolded creative BEFORE the billed render, so weak spots get fixed for free. It scores what will render: prompt.json and scenes/*.json edits are brought into the canvas first, exactly as `run` does. A VIDEO creative is scored on hook strength, sound-off first-frame legibility, retention risk, and mechanism clarity; a STATIC ad on baked-text legibility risk, identity grounding, brand-type fidelity, and mechanism clarity. Ground a video hook against `baker winning-ads hooks` for a proven pattern."
|
|
199
|
-
},
|
|
200
|
-
args: { file: { type: "positional", required: true, description: "Path to canvas JSON" } },
|
|
201
|
-
async run({ args }) {
|
|
202
|
-
const filePath = path.resolve(String(args.file));
|
|
203
|
-
let prepared;
|
|
204
|
-
try {
|
|
205
|
-
prepared = await prepareCanvas(filePath, { log: (line) => process.stderr.write(`${line}
|
|
206
|
-
`) });
|
|
207
|
-
} catch (e) {
|
|
208
|
-
exitOnPrepareError(e);
|
|
209
|
-
}
|
|
210
|
-
const report = critiqueCanvas(prepared.canvas);
|
|
211
|
-
process.stdout.write(
|
|
212
|
-
`${JSON.stringify(
|
|
213
|
-
{
|
|
214
|
-
ok: true,
|
|
215
|
-
advisory: true,
|
|
216
|
-
overall: report.overall,
|
|
217
|
-
dimensions: report.dimensions,
|
|
218
|
-
hint: "Scores are 0\u20131 (higher is better). This never blocks a render \u2014 strengthen weak dimensions or proceed."
|
|
219
|
-
},
|
|
220
|
-
null,
|
|
221
|
-
2
|
|
222
|
-
)}
|
|
223
|
-
`
|
|
224
|
-
);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
export {
|
|
228
|
-
critiqueCommand
|
|
229
|
-
};
|
|
230
|
-
//# sourceMappingURL=critique-BADMZAZP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/canvas/critique.ts","../src/engine/scaffold/lib/critique.ts"],"sourcesContent":["import path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { critiqueCanvas } from \"../../engine/scaffold/lib/critique.ts\";\nimport { exitOnPrepareError, type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\n\nexport const critiqueCommand = defineCommand({\n meta: {\n name: \"critique\",\n description:\n \"Pre-spend creative critic (ADVISORY — never blocks). Scores a scaffolded creative BEFORE the billed render, so weak spots get fixed for free. It scores what will render: prompt.json and scenes/*.json edits are brought into the canvas first, exactly as `run` does. A VIDEO creative is scored on hook strength, sound-off first-frame legibility, retention risk, and mechanism clarity; a STATIC ad on baked-text legibility risk, identity grounding, brand-type fidelity, and mechanism clarity. Ground a video hook against `baker winning-ads hooks` for a proven pattern.\",\n },\n args: { file: { type: \"positional\", required: true, description: \"Path to canvas JSON\" } },\n async run({ args }) {\n const filePath = path.resolve(String(args.file));\n // Scored on the graph the render will run: every projection applied (the static copy\n // from prompt.json, each scene's frame and clip prompts from scenes/*.json), not the\n // canvas as it was scaffolded.\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(filePath, { log: (line) => process.stderr.write(`${line}\\n`) });\n } catch (e) {\n exitOnPrepareError(e);\n }\n const report = critiqueCanvas(prepared.canvas as Parameters<typeof critiqueCanvas>[0]);\n // Advisory: always exit 0. A low score is guidance, not a gate — the operator\n // decides whether to strengthen the creative or render as-is.\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n advisory: true,\n overall: report.overall,\n dimensions: report.dimensions,\n hint: \"Scores are 0–1 (higher is better). This never blocks a render — strengthen weak dimensions or proceed.\",\n },\n null,\n 2,\n )}\\n`,\n );\n },\n});\n","/**\n * Pre-spend creative critic (T4.1) — our answer to Higgsfield's Virality Predictor,\n * grounded in the doctrine we already enforce. It scores a scaffolded creative on\n * the dimensions that decide whether an ad stops the scroll, BEFORE the billed\n * render, so the operator can strengthen a weak hook for free.\n *\n * ADVISORY ONLY. It never blocks a render or publish — it returns scores + notes;\n * the operator decides. This mirrors our validator philosophy (advisory warnings\n * steer, they don't gate).\n *\n * Pure + offline: it reads the parsed canvas and reasons from the node graph. The\n * deeper \"is this hook a proven winner for the segment\" question is answered by\n * grounding against `baker winning-ads hooks` (see references/critique.md) — kept\n * out of this function so the critic can't fail on a network hiccup.\n */\n\nimport { frameDescriptionOf } from \"../../engine/lint/rules/video-prompt.ts\";\nimport { nativeDialogueOf } from \"../../lib/prompt-profiles.ts\";\nimport { briefCopyLines } from \"../static-brief.ts\";\nimport { COPY_DIRECTIVE_HEADER } from \"../static-copy.ts\";\nimport { FRAME_PLACEHOLDER_NOTE } from \"../video/prompts/frame.ts\";\n\nexport type CritiqueCanvasInput = {\n nodes?: Array<{ id?: string; type?: string; params?: Record<string, unknown>; inputs?: unknown }>;\n metadata?: { video?: { duration_s?: number; vo_segments?: unknown[]; talking_scenes?: unknown[] } };\n};\n\nexport type CritiqueDimension = {\n dimension: // Video creative dimensions.\n | \"hook_strength\"\n | \"first_frame_legibility\"\n | \"retention_risk\"\n // Static-ad dimensions.\n | \"text_legibility_risk\"\n | \"identity_grounding\"\n | \"type_fidelity\"\n // Shared.\n | \"mechanism_clarity\";\n /** 0–1, higher is better (for the *_risk dimensions, higher = LOWER risk). */\n score: number;\n note: string;\n};\n\nexport type CritiqueReport = {\n advisory: true;\n overall: number;\n dimensions: CritiqueDimension[];\n};\n\nconst VIBE_CUE = /\\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\\b/i;\nconst MECHANISM_CUE =\n /\\b(because|works by|so that|mechanism|proof|guarantee|clinically|backed by|the reason|that's why)\\b/i;\n\nfunction promptOf(node: { params?: Record<string, unknown> } | undefined): string {\n const p = node?.params?.prompt;\n return typeof p === \"string\" ? p : \"\";\n}\n\nfunction round(n: number): number {\n return Math.round(n * 100) / 100;\n}\n\ntype CanvasNode = NonNullable<CritiqueCanvasInput[\"nodes\"]>[number];\n\n/**\n * What a frame node says about its own picture: the FRAME DESCRIPTION a scaffolded frame\n * wraps in fixed instructions (the same slice the validator reads), or a hand-authored\n * prompt whole. The fixed instructions are the same on every frame — scoring them is how\n * every hook read as having a mood, because they name \"lighting\" — and a frame still\n * waiting for its description has none.\n */\nfunction frameLook(node: CanvasNode): string {\n const description = frameDescriptionOf(promptOf(node)).trim();\n return description.endsWith(FRAME_PLACEHOLDER_NOTE) ? \"\" : description;\n}\n\n/** The words the creative itself says: every frame's own description and every spoken line. */\nfunction creativeText(nodes: CanvasNode[]): string {\n return nodes\n .flatMap((n) => {\n if (n.type === \"image_generate\") return [frameLook(n)];\n if (n.type === \"video_generate\") return [nativeDialogueOf(promptOf(n)) ?? \"\"];\n if (n.type === \"tts\" && typeof n.params?.text === \"string\") return [n.params.text];\n return [];\n })\n .join(\"\\n\");\n}\n\n/**\n * HOOK STRENGTH — the four hook layers present on scene 0 (text/sound/visual/vibe). The\n * visual and vibe layers are read off the opening frames' own descriptions (a canvas with\n * no generated frame: its scene-0 prompts, whole).\n */\nfunction scoreHookStrength(nodes: CanvasNode[], scene0: CanvasNode[], hasOverlay: boolean): CritiqueDimension {\n const scene0Text = scene0.map((n) => promptOf(n)).join(\"\\n\");\n const frames = scene0.filter((n) => n.type === \"image_generate\");\n const look = (frames.length > 0 ? frames.map(frameLook) : scene0.map((n) => promptOf(n))).join(\"\\n\");\n const hookClip = scene0.find((n) => n.type === \"video_generate\");\n const hasSound =\n hookClip?.params?.generate_audio === true ||\n /Dialogue:|Audio:/.test(scene0Text) ||\n nodes.some((n) => n.type === \"tts\" || n.type === \"dialogue\");\n const layers = [hasOverlay, hasSound, look.trim().length > 40, VIBE_CUE.test(look)];\n const layerCount = layers.filter(Boolean).length;\n return {\n dimension: \"hook_strength\",\n score: round(hookClip ? layerCount / 4 : 0.5),\n note: hookClip\n ? `hook works on ${layerCount}/4 layers (text/sound/visual/vibe)`\n : \"no scene-0 clip found — is this a video creative?\",\n };\n}\n\n/** FIRST-FRAME LEGIBILITY (sound-off) — feeds autoplay muted, so the first frame\n * must read without audio. A designed overlay text layer is the strongest signal. */\nfunction scoreFirstFrameLegibility(hasOverlay: boolean): CritiqueDimension {\n return {\n dimension: \"first_frame_legibility\",\n score: hasOverlay ? 1 : 0.4,\n note: hasOverlay\n ? \"a designed overlay layer carries the sound-off message\"\n : \"footage-only — the first frame may not read with sound off; consider an overlay hook\",\n };\n}\n\n/** RETENTION RISK (higher = lower risk) — long clips with no spoken line sag. */\nfunction scoreRetentionRisk(videoNodes: CanvasNode[]): CritiqueDimension {\n let saggy = 0;\n for (const n of videoNodes) {\n const dur = typeof n.params?.duration === \"number\" ? n.params.duration : 0;\n const spoken = /Dialogue:/.test(promptOf(n)) || n.params?.generate_audio === true;\n if (dur >= 8 && !spoken) saggy += 1;\n }\n return {\n dimension: \"retention_risk\",\n score: round(videoNodes.length > 0 ? 1 - Math.min(1, saggy / videoNodes.length) : 0.7),\n note: saggy > 0 ? `${saggy} long clip(s) with no spoken line may sag` : \"no obvious sag points\",\n };\n}\n\n/** MECHANISM CLARITY — does the creative state WHY it works, not just what it is? */\nfunction scoreMechanismClarity(allPromptText: string): CritiqueDimension {\n const clear = MECHANISM_CUE.test(allPromptText);\n return {\n dimension: \"mechanism_clarity\",\n score: clear ? 1 : 0.4,\n note: clear ? \"states a mechanism/proof\" : \"no clear 'why it works' — add the mechanism\",\n };\n}\n\nfunction clamp01(n: number): number {\n return Math.max(0, Math.min(1, n));\n}\n\n/**\n * The copy a static ad carries: on one picture the designed lines every size sets\n * (`static_format`'s `copy`, its picture carrying none); else the numbered lines its compiled\n * brief quotes (`static-brief.ts`), or, on a canvas no run has compiled yet, the strings of the\n * older prompt's copy block (from its header to the next blank line).\n */\nfunction staticCopyLines(nodes: CanvasNode[]): string[] {\n const sized = nodes.find((n) => n.type === \"static_format\")?.params?.copy;\n if (Array.isArray(sized)) {\n return sized.flatMap((l) =>\n typeof (l as { text?: unknown })?.text === \"string\" ? [(l as { text: string }).text] : [],\n );\n }\n const gen = nodes.find((n) => n.type === \"image_generate\");\n const prompt = promptOf(gen);\n const compiled = briefCopyLines(prompt);\n if (compiled.length > 0) return compiled;\n const start = prompt.indexOf(COPY_DIRECTIVE_HEADER);\n if (start === -1) return [];\n const bodyStart = start + COPY_DIRECTIVE_HEADER.length;\n const end = prompt.indexOf(\"\\n\\n\", bodyStart);\n const block = prompt.slice(bodyStart, end === -1 ? undefined : end);\n const quoted = block.match(/\"[^\"]+\"/g);\n return quoted ? quoted.map((s) => s.slice(1, -1)) : [];\n}\n\n/** TEXT LEGIBILITY RISK (higher = lower risk) — baked copy is the #1 static-ad defect,\n * and it crowds fast: past ~6 distinct copy blocks the render garbles and duplicates. */\nfunction scoreTextLegibilityRisk(copy: string[]): CritiqueDimension {\n const lines = copy.length;\n return {\n dimension: \"text_legibility_risk\",\n score: round(clamp01(1 - Math.max(0, lines - 6) / 12)),\n note:\n lines > 6\n ? `${lines} copy blocks — dense; trim or split so type stays legible`\n : `${lines} copy block(s) — reads cleanly`,\n };\n}\n\n/** IDENTITY GROUNDING — Rule 1: every real subject grounds on a real reference (a\n * dropped `el_*` asset or its fused reference sheet), never free-generated. */\nfunction scoreIdentityGrounding(nodes: CanvasNode[]): CritiqueDimension {\n const grounded =\n nodes.filter((n) => n.type === \"image_reference_sheet\").length +\n nodes.filter((n) => n.type === \"ingest\" && typeof n.id === \"string\" && /^el_/.test(n.id)).length;\n return {\n dimension: \"identity_grounding\",\n // 0 grounded is fine for a pure-type ad, so it's a soft nudge, not a failure.\n score: grounded > 0 ? 1 : 0.6,\n note:\n grounded > 0\n ? `${grounded} subject(s) grounded in a real reference`\n : \"no grounded subject — fine for a type-only ad; otherwise ground the hero in a real reference\",\n };\n}\n\n/** TYPE FIDELITY — \"the big one\": image models don't hold a brand font, so a wired\n * font specimen that biases the render toward the real face is the strongest lever. */\nfunction scoreTypeFidelity(nodes: CanvasNode[]): CritiqueDimension {\n const hasSpecimen = nodes.some((n) => n.type === \"font_specimen\");\n return {\n dimension: \"type_fidelity\",\n score: hasSpecimen ? 1 : 0.5,\n note: hasSpecimen\n ? \"brand type biased by a font specimen\"\n : \"no font specimen — brand type may drift; wire the brand font\",\n };\n}\n\n/** VIDEO creative dimensions (hook / legibility / retention / mechanism). */\nfunction critiqueVideo(nodes: CanvasNode[], videoNodes: CanvasNode[]): CritiqueDimension[] {\n const scene0 = nodes.filter((n) => typeof n.id === \"string\" && /^s0(?:[_a-z0-9])*_/.test(n.id));\n const hasOverlay = nodes.some((n) => typeof n.type === \"string\" && /hyperframe/.test(n.type));\n return [\n scoreHookStrength(nodes, scene0, hasOverlay),\n scoreFirstFrameLegibility(hasOverlay),\n scoreRetentionRisk(videoNodes),\n scoreMechanismClarity(creativeText(nodes)),\n ];\n}\n\n/** STATIC-ad dimensions (legibility / grounding / type / mechanism). */\nfunction critiqueStatic(nodes: CanvasNode[]): CritiqueDimension[] {\n // Only the ad's own copy: every other prompt on the canvas is the scaffold's boilerplate,\n // and the judge's rubric alone (\"the reason the reference ad works\") read as a stated\n // mechanism on every multi-take ad.\n const copy = staticCopyLines(nodes);\n const copyText = copy.join(\"\\n\");\n return [\n scoreTextLegibilityRisk(copy),\n scoreIdentityGrounding(nodes),\n scoreTypeFidelity(nodes),\n scoreMechanismClarity(copyText),\n ];\n}\n\n/**\n * Score a scaffolded creative. Branches on modality — a canvas with `video_generate`\n * nodes is a video creative; anything else (an `image_generate` static ad, or an empty\n * canvas) is scored on the static dimensions. All heuristics degrade gracefully rather\n * than throwing, and every dimension is advisory only.\n */\nexport function critiqueCanvas(canvas: CritiqueCanvasInput): CritiqueReport {\n const nodes = Array.isArray(canvas.nodes) ? canvas.nodes : [];\n const videoNodes = nodes.filter((n) => n.type === \"video_generate\");\n const dimensions = videoNodes.length > 0 ? critiqueVideo(nodes, videoNodes) : critiqueStatic(nodes);\n const overall = round(dimensions.reduce((s, d) => s + d.score, 0) / dimensions.length);\n return { advisory: true, overall, dimensions };\n}\n"],"mappings":"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","names":[]}
|