@koda-sl/baker-cli 0.533.0 → 0.534.0-dev.4da06ee4d
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 +57 -10
- package/dist/account-NWIPSZM3.js +82 -0
- package/dist/account-WBGF3RGD.js +139 -0
- package/dist/account-ZE5ABGHY.js +82 -0
- package/dist/account-assets-BTDNFVBW.js +290 -0
- package/dist/account-level-T2YB6ILW.js +611 -0
- package/dist/account-reads-U4OI4N4V.js +219 -0
- package/dist/account-users-6RYS7LDR.js +64 -0
- package/dist/account-writes-4TE3ARDQ.js +68 -0
- package/dist/accounts-N2YX4AP6.js +114 -0
- package/dist/accounts-NY47CLTN.js +701 -0
- package/dist/accounts-SHGZX4V2.js +80 -0
- package/dist/accounts-TILUZQQT.js +115 -0
- package/dist/accounts-VAZ4ZXMA.js +76 -0
- package/dist/actions-TBWF3M5X.js +55 -0
- package/dist/active-entities-NTSGNVAV.js +103 -0
- package/dist/activecampaign-CBTOLWBM.js +938 -0
- package/dist/activities-XVFA3XF5.js +75 -0
- package/dist/ad-group-writes-HVNPWOXM.js +172 -0
- package/dist/ad-groups-NPD6TNK2.js +70 -0
- package/dist/ad-writes-O5GJSK3G.js +176 -0
- package/dist/add-AYILCHML.js +81 -0
- package/dist/add-D4USMEDM.js +107 -0
- package/dist/add-J76XNCNO.js +97 -0
- package/dist/add-JCNVWVNA.js +148 -0
- package/dist/add-NV5TBLCP.js +80 -0
- package/dist/add-SWSKLIMK.js +305 -0
- package/dist/add-accounts-2KEM5SDH.js +91 -0
- package/dist/ads-3ZCUKPVZ.js +128 -0
- package/dist/ads-CJIWTAGM.js +79 -0
- package/dist/ads-JSFDYLKJ.js +120 -0
- package/dist/ads-TLWYK3XS.js +48 -0
- package/dist/adsets-EQVLMBJX.js +182 -0
- package/dist/advertisers-NXJIWTA4.js +123 -0
- package/dist/advertisers-WQ2FDNHU.js +125 -0
- package/dist/analytics-FG5CBBPC.js +2437 -0
- package/dist/analytics-NH7M3XB7.js +447 -0
- package/dist/animate-IRSBEZVK.js +480 -0
- package/dist/approved-LNUYJEUZ.js +73 -0
- package/dist/asset-writes-JGOWG3L3.js +50 -0
- package/dist/assign-GDQFFWZ5.js +80 -0
- package/dist/audience-size-RBXNKZMD.js +76 -0
- package/dist/audience-writes-7HTQFT3Q.js +327 -0
- package/dist/audiences-FNNPTVSN.js +86 -0
- package/dist/audiences-I62OFJNP.js +280 -0
- package/dist/audiences-JOFKN2LB.js +85 -0
- package/dist/audit-SLXL2OET.js +154 -0
- package/dist/audit-SPBIEG2P.js +88 -0
- package/dist/autocomplete-4I6SKS33.js +114 -0
- package/dist/avatars-XLOSQRHV.js +38 -0
- package/dist/bid-pricing-IR7BOILK.js +103 -0
- package/dist/brand-YJXEJLZI.js +22 -0
- package/dist/brief-P5U4PV73.js +543 -0
- package/dist/businesses-ZGBQIBTU.js +54 -0
- package/dist/campaign-groups-6SO2DUYF.js +99 -0
- package/dist/campaign-writes-EXOITAX6.js +168 -0
- package/dist/campaign-writes-N2U4TJEG.js +176 -0
- package/dist/campaigns-7U5YMQWS.js +113 -0
- package/dist/campaigns-LUCBK4KX.js +111 -0
- package/dist/campaigns-N4IQNY5Z.js +78 -0
- package/dist/campaigns-PJP4QZQ6.js +130 -0
- package/dist/canvas-IP4MCAHT.js +46 -0
- package/dist/capabilities-SU25DKSW.js +147 -0
- package/dist/cards-IPWT3R7L.js +85 -0
- package/dist/catalog-PDP3ILYG.js +66 -0
- package/dist/catalog-PDP3ILYG.js.map +1 -0
- package/dist/catalogs-7TA4AJCV.js +130 -0
- package/dist/catalogs-TJ4HICNN.js +781 -0
- package/dist/changes-EJZJCZVV.js +135 -0
- package/dist/chatgpt-D7JWEOAM.js +47 -0
- package/dist/chats-JMQODNCE.js +279 -0
- package/dist/check-JK3BRROQ.js +107 -0
- package/dist/chunk-26TRRYCA.js +333 -0
- package/dist/chunk-2G46X2ID.js +930 -0
- package/dist/chunk-2G46X2ID.js.map +1 -0
- package/dist/chunk-2NYMB7WG.js +8954 -0
- package/dist/chunk-2TTGNQ5H.js +136 -0
- package/dist/chunk-2VUQOAT3.js +138 -0
- package/dist/chunk-34NX5OGV.js +61 -0
- package/dist/chunk-3P6VKACL.js +5368 -0
- package/dist/chunk-3WSBH7YB.js +479 -0
- package/dist/chunk-3ZNBYEZR.js +24026 -0
- package/dist/chunk-3ZNBYEZR.js.map +1 -0
- package/dist/chunk-45EERHDB.js +783 -0
- package/dist/chunk-4GARQXOI.js +84 -0
- package/dist/chunk-5JF25ZTI.js +715 -0
- package/dist/chunk-5JF25ZTI.js.map +1 -0
- package/dist/chunk-6CPII3NK.js +100 -0
- package/dist/chunk-6D2D6L6K.js +75 -0
- package/dist/chunk-6OIKNJ7G.js +26 -0
- package/dist/chunk-6SK56BHM.js +203 -0
- package/dist/chunk-6VKGKWB4.js +676 -0
- package/dist/chunk-6Z5NT7TE.js +170 -0
- package/dist/chunk-75SKCW3F.js +191 -0
- package/dist/chunk-7RAONNZM.js +843 -0
- package/dist/chunk-7YVITQPT.js +392 -0
- package/dist/chunk-AHPZKJ32.js +45 -0
- package/dist/chunk-ALJV3U4U.js +1518 -0
- package/dist/chunk-AZEJ727R.js +106 -0
- package/dist/chunk-AZWX3Q2J.js +544 -0
- package/dist/chunk-B6ZGSAHC.js +296 -0
- package/dist/chunk-BLXTPJGC.js +249 -0
- package/dist/chunk-BNDSCJUI.js +166 -0
- package/dist/chunk-BNFTHFBB.js +344 -0
- package/dist/chunk-CAYIC3ES.js +35 -0
- package/dist/chunk-CMQHTYTK.js +207 -0
- package/dist/chunk-DGE5UEMS.js +224 -0
- package/dist/chunk-DS6EJRF4.js +225 -0
- package/dist/chunk-DUWJG6QH.js +215 -0
- package/dist/chunk-DW4AEYFB.js +131 -0
- package/dist/chunk-DXHOUY74.js +149 -0
- package/dist/chunk-E3QYALFY.js +73 -0
- package/dist/chunk-EIKUBZEY.js +1902 -0
- package/dist/chunk-EIKUBZEY.js.map +1 -0
- package/dist/chunk-ERCYMMBF.js +2443 -0
- package/dist/chunk-ERCYMMBF.js.map +1 -0
- package/dist/chunk-F3CZFUXZ.js +3187 -0
- package/dist/chunk-F3CZFUXZ.js.map +1 -0
- package/dist/chunk-GB5TIOS5.js +910 -0
- package/dist/chunk-GLGTUZQE.js +163 -0
- package/dist/chunk-GONAHHY5.js +334 -0
- package/dist/chunk-GONAHHY5.js.map +1 -0
- package/dist/chunk-GZ6MSG7I.js +846 -0
- package/dist/chunk-HBMHTFKS.js +52 -0
- package/dist/chunk-HIXMP66B.js +125 -0
- package/dist/chunk-HUYOWLTS.js +64 -0
- package/dist/chunk-HWOSUF22.js +207 -0
- package/dist/chunk-IA5O6DDP.js +831 -0
- package/dist/chunk-IAA36IYQ.js +91 -0
- package/dist/chunk-IANNXUQQ.js +19 -0
- package/dist/chunk-IKZHHMG4.js +229 -0
- package/dist/chunk-IS6TXDPQ.js +23 -0
- package/dist/chunk-IZABTTW5.js +228 -0
- package/dist/chunk-JKBDO5EF.js +682 -0
- package/dist/chunk-JKBDO5EF.js.map +1 -0
- package/dist/chunk-JVFV6UJ3.js +142 -0
- package/dist/chunk-KJS3N47X.js +387 -0
- package/dist/chunk-KML35BKR.js +84 -0
- package/dist/chunk-KUH5WDSK.js +200 -0
- package/dist/chunk-LKK6R5FM.js +604 -0
- package/dist/chunk-LTWAROBR.js +274 -0
- package/dist/chunk-LXCDBNBJ.js +106 -0
- package/dist/chunk-LZOP5AKR.js +26 -0
- package/dist/chunk-MOXKTWY5.js +69 -0
- package/dist/chunk-MTSEFJ7Y.js +225 -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-MZOVTEEY.js +98 -0
- package/dist/chunk-N2MYKKHX.js +51 -0
- package/dist/chunk-N6SZJDDF.js +57 -0
- package/dist/chunk-NSYYRMCV.js +94 -0
- package/dist/chunk-O3NCVHFP.js +69 -0
- package/dist/chunk-OAFALNL2.js +91 -0
- package/dist/chunk-OBEAXLVV.js +287 -0
- package/dist/chunk-OG4LGMJT.js +3510 -0
- package/dist/chunk-OG4LGMJT.js.map +1 -0
- package/dist/chunk-ORID3CGW.js +139 -0
- package/dist/chunk-PEEE5WPR.js +98 -0
- package/dist/chunk-PMCVYVRV.js +46 -0
- package/dist/chunk-PMKNHE6G.js +217 -0
- package/dist/chunk-PRMR2LAM.js +39 -0
- package/dist/chunk-Q3LTMXUE.js +97 -0
- package/dist/chunk-Q4L4Z2HT.js +111 -0
- package/dist/chunk-QE3DFWH4.js +64 -0
- package/dist/chunk-QG45DH5D.js +324 -0
- package/dist/chunk-R23MN7HH.js +191 -0
- package/dist/chunk-RCJAC2DY.js +167 -0
- package/dist/chunk-RLSFWA7K.js +438 -0
- package/dist/chunk-RQ5NSJPA.js +66 -0
- package/dist/chunk-RSQOWMZA.js +56 -0
- package/dist/chunk-RVMDQYPX.js +25 -0
- package/dist/chunk-SBGF4OKE.js +1919 -0
- package/dist/chunk-SIKCVWM3.js +76 -0
- package/dist/chunk-TBD7LIQL.js +76 -0
- package/dist/chunk-TDNLM4J4.js +455 -0
- package/dist/chunk-TH3OK7RO.js +148 -0
- package/dist/chunk-TJ6FFFE7.js +1744 -0
- package/dist/chunk-TSKD7WNX.js +74 -0
- package/dist/chunk-TT5UTVPK.js +219 -0
- package/dist/chunk-TUIUO4SW.js +285 -0
- package/dist/chunk-TUYFP4BC.js +89 -0
- package/dist/chunk-UKBFKTC2.js +103 -0
- package/dist/chunk-UMPAKBCB.js +66 -0
- package/dist/chunk-URMAEVZO.js +150 -0
- package/dist/chunk-VK7MSQ3P.js +494 -0
- package/dist/chunk-WBGJRI33.js +42 -0
- package/dist/chunk-WFPUHD6K.js +1646 -0
- package/dist/chunk-WNIDYKWO.js +7273 -0
- package/dist/chunk-WNIDYKWO.js.map +1 -0
- package/dist/chunk-WQYHEHBP.js +429 -0
- package/dist/chunk-WR7T2ZLW.js +275 -0
- package/dist/chunk-WX3TPPPN.js +377 -0
- package/dist/chunk-XKJO6WSY.js +476 -0
- package/dist/chunk-XLY23CY7.js +297 -0
- package/dist/chunk-XUTSNIUI.js +638 -0
- package/dist/chunk-YF6D3AXC.js +156 -0
- package/dist/chunk-YY5DKGMZ.js +76 -0
- package/dist/chunk-Z3UJKRF7.js +547 -0
- package/dist/chunk-Z5RBTOP5.js +46 -0
- package/dist/chunk-ZBKDD3SZ.js +169 -0
- package/dist/chunk-ZCIRAP2S.js +97 -0
- package/dist/chunk-ZKXHDXYI.js +188 -0
- package/dist/chunk-ZLGWQGXI.js +58 -0
- package/dist/chunk-ZQMYNDSV.js +197 -0
- package/dist/chunk-ZSPAWQ7O.js +2209 -0
- package/dist/chunk-ZSPAWQ7O.js.map +1 -0
- package/dist/chunk-ZXYM7V64.js +5471 -0
- package/dist/chunk-ZXYM7V64.js.map +1 -0
- package/dist/cite-2IFS3G46.js +186 -0
- package/dist/cite-2IFS3G46.js.map +1 -0
- package/dist/claim-NHSZNDTG.js +200 -0
- package/dist/cli.js +45 -45
- package/dist/client-2CPUMURU.js +19 -0
- package/dist/code-CZ5W3JNM.js +76 -0
- package/dist/companies-GF27MKDE.js +198 -0
- package/dist/company-I3QHEINQ.js +308 -0
- package/dist/complete-6Q6I6D4O.js +84 -0
- package/dist/config-EW6S72KY.js +88 -0
- package/dist/connect-V6JRDBQ5.js +45 -0
- package/dist/content-LNIBJKNQ.js +85 -0
- package/dist/conversation-MCR4WBGJ.js +96 -0
- package/dist/conversion-report-CNNF2KNN.js +127 -0
- package/dist/conversion-upload-command-GW2QGOBS.js +439 -0
- package/dist/conversion-writes-MIW2DW7Q.js +122 -0
- package/dist/conversions-6OKS45FG.js +140 -0
- package/dist/conversions-WRICMKDT.js +78 -0
- package/dist/copy-writes-5DO6N5V7.js +170 -0
- package/dist/countries-FPJKZDZJ.js +82 -0
- package/dist/create-BGOY6OUH.js +135 -0
- package/dist/create-F4AAMFZ5.js +62 -0
- package/dist/create-QSKVDFI5.js +210 -0
- package/dist/create-TI2ZQCEW.js +239 -0
- package/dist/creatives-AF2ZBRRU.js +223 -0
- package/dist/creatives-E3ZTGEC7.js +58 -0
- package/dist/creatives-ISMLBSRR.js +89 -0
- package/dist/credentials-X3E4TJGW.js +290 -0
- package/dist/critique-75HCFZD6.js +1451 -0
- package/dist/critique-OOFO5KNR.js +232 -0
- package/dist/crm-66P5WILT.js +323 -0
- package/dist/crm-NI7JZHHG.js +227 -0
- package/dist/crop-F2ZMKE4T.js +113 -0
- package/dist/currency-BJYQ7KWA.js +88 -0
- package/dist/custom-conversions-J56EGUH3.js +128 -0
- package/dist/customers-IAZLBVL4.js +63 -0
- package/dist/decide-KXEEEL5X.js +199 -0
- package/dist/delete-3JM2CRGW.js +67 -0
- package/dist/delete-7LUKYRYI.js +69 -0
- package/dist/delete-DKY2U7DN.js +57 -0
- package/dist/delete-JEHALEDU.js +69 -0
- package/dist/delete-K77BZNI7.js +85 -0
- package/dist/delete-TT5F4KOF.js +71 -0
- package/dist/demographics-2WIAENET.js +141 -0
- package/dist/describe-PD3T4TSU.js +97 -0
- package/dist/describe-QNULQ554.js +97 -0
- package/dist/dimensions-CITRMPQF.js +101 -0
- package/dist/discard-RL4HPJVG.js +69 -0
- package/dist/discover-BLUJYLBT.js +93 -0
- package/dist/discover-K743TWWV.js +172 -0
- package/dist/domain-DVUS4W6Q.js +101 -0
- package/dist/download-AIWQ4VO5.js +299 -0
- package/dist/download-N4KWWNJ5.js +172 -0
- package/dist/draft-3LGUY4GD.js +100 -0
- package/dist/draft-4ZK3K4EN.js +240 -0
- package/dist/draft-D5D6HCPA.js +103 -0
- package/dist/draft-EV5GJXOU.js +220 -0
- package/dist/draft-EYX33J4Y.js +335 -0
- package/dist/draft-MJYHWHEU.js +283 -0
- package/dist/draft-WIQ75STJ.js +308 -0
- package/dist/draft-WM3EJ622.js +310 -0
- package/dist/engine/index.js +15 -14
- package/dist/env-ZCVKU62Y.js +53 -0
- package/dist/experiment-YPN3PKI5.js +1397 -0
- package/dist/experiments-PL7JBQ47.js +236 -0
- package/dist/export-X7LIQORT.js +168 -0
- package/dist/extract-ADBKYCMK.js +113 -0
- package/dist/facets-HH2O62KL.js +117 -0
- package/dist/favorites-DH7FJY5B.js +178 -0
- package/dist/feed-IN5DQ6QV.js +177 -0
- package/dist/feedback-C6YB6P52.js +115 -0
- package/dist/feedback-C6YB6P52.js.map +1 -0
- package/dist/feedback-record-TZZYVD4E.js +269 -0
- package/dist/feedback-record-TZZYVD4E.js.map +1 -0
- package/dist/fetch-PGKOWX3F.js +204 -0
- package/dist/fetch-PGKOWX3F.js.map +1 -0
- package/dist/fetch-POVD4UV2.js +139 -0
- package/dist/find-YKH5NLDV.js +143 -0
- package/dist/fit-TC4AACBU.js +65 -0
- package/dist/flows-AYLK5KRV.js +250 -0
- package/dist/follow-NYSYOMPZ.js +94 -0
- package/dist/follow-competitors-XK7AHXV5.js +112 -0
- package/dist/following-5NSY62IF.js +113 -0
- package/dist/fonts-B4GG2ZVY.js +39 -0
- package/dist/forecast-SHLUTMQQ.js +169 -0
- package/dist/forecast-XKJ6SCJ5.js +121 -0
- package/dist/funding-JC6MPG5T.js +85 -0
- package/dist/funnel-NOQ5377L.js +397 -0
- package/dist/ga4-NOWI2YV7.js +55 -0
- package/dist/generate-T4CMEBFU.js +263 -0
- package/dist/get-3GC5BSEH.js +59 -0
- package/dist/get-KWERYDK2.js +59 -0
- package/dist/get-MTJGUYD7.js +66 -0
- package/dist/get-O5QJBI3A.js +92 -0
- package/dist/get-P6HXXYPJ.js +38 -0
- package/dist/get-SKQXAUCK.js +82 -0
- package/dist/get-VEXFF7PK.js +62 -0
- package/dist/get-VLJVPTC3.js +56 -0
- package/dist/gif-K4Z7LK5W.js +102 -0
- package/dist/google-OCEWR2NJ.js +3267 -0
- package/dist/google-TC2ZJD73.js +136 -0
- package/dist/google-ads-UQPFXZHG.js +198 -0
- package/dist/group-GRWRPBFN.js +43 -0
- package/dist/group-SP4TNI63.js +43 -0
- package/dist/gsc-UXGYY3GJ.js +30 -0
- package/dist/history-AGDBEDLW.js +69 -0
- package/dist/history-BD4RYCIO.js +102 -0
- package/dist/history-LTM7KP34.js +136 -0
- package/dist/hubspot-WJG45M2B.js +782 -0
- package/dist/icon-V3Y4YDOJ.js +137 -0
- package/dist/ideas-MG7U6TOP.js +45 -0
- package/dist/images-FM7FHPBS.js +92 -0
- package/dist/improve-TXA435K6.js +86 -0
- package/dist/ingest-HYCOCLKP.js +123 -0
- package/dist/ingest-RY5HTGWI.js +27 -0
- package/dist/insights-2G2E27IB.js +132 -0
- package/dist/insights-KLTFZPDU.js +439 -0
- package/dist/inspect-MBIVGHVX.js +192 -0
- package/dist/inspiration-K7L63RAJ.js +53 -0
- package/dist/instant-experiences-E7U6CJFG.js +260 -0
- package/dist/intent-ODOSNQHM.js +95 -0
- package/dist/job-IPZGUL7C.js +202 -0
- package/dist/job-create-DHDXT6JK.js +109 -0
- package/dist/job-status-LCK6OAML.js +74 -0
- package/dist/keep-WRQW625H.js +78 -0
- package/dist/keyword-gap-2CBACDPA.js +130 -0
- package/dist/keyword-metrics-V3DYPKHT.js +200 -0
- package/dist/keywords-for-site-3DNC73AI.js +131 -0
- package/dist/knowledge-N75ATS7T.js +195 -0
- package/dist/landing-76YHTTX7.js +28 -0
- package/dist/landings-23OMBXML.js +151 -0
- package/dist/languages-2PRQ5OQ3.js +40 -0
- package/dist/languages-A5Y7DKLJ.js +55 -0
- package/dist/launches-C3ZQH4VF.js +19 -0
- package/dist/layerize-KH5MUTCH.js +190 -0
- package/dist/lead-routes-IREDNU24.js +733 -0
- package/dist/leads-EVBUUZZS.js +115 -0
- package/dist/leads-NEQAJ5F7.js +540 -0
- package/dist/learn-KEMLEYW4.js +207 -0
- package/dist/library-3Q24O4XX.js +211 -0
- package/dist/lighthouse-H6XEFV6H.js +75 -0
- package/dist/line-item-writes-3LJTZRR3.js +211 -0
- package/dist/line-items-S2JDVEND.js +107 -0
- package/dist/link-GSZEQXLA.js +67 -0
- package/dist/linkedin-4TSXJIRQ.js +1328 -0
- package/dist/linkedin-person-JL4RZHEP.js +139 -0
- package/dist/list-23TETYHO.js +57 -0
- package/dist/list-5DUXP3Y6.js +65 -0
- package/dist/list-6N7C7AR4.js +93 -0
- package/dist/list-EUN2X7SS.js +51 -0
- package/dist/list-KZS624O5.js +306 -0
- package/dist/list-LU6N32Y7.js +154 -0
- package/dist/list-OQFCWNLE.js +67 -0
- package/dist/list-RTQVZYIC.js +76 -0
- package/dist/list-YLMKD7GM.js +50 -0
- package/dist/locations-C4LIWY3P.js +69 -0
- package/dist/locations-HC5FYEYX.js +40 -0
- package/dist/log-ATW73US2.js +95 -0
- package/dist/logo-2FXE3XAS.js +18 -0
- package/dist/lookup-JUK4JM52.js +23 -0
- package/dist/make-J6VYHNTA.js +1367 -0
- package/dist/make-J6VYHNTA.js.map +1 -0
- package/dist/map-MQ7GHCF4.js +436 -0
- package/dist/mcp-3NTRVTKU.js +729 -0
- package/dist/media-4XW3L7E3.js +18 -0
- package/dist/media-E5PMHJ2K.js +89 -0
- package/dist/media-sources-XAHG65FO.js +35 -0
- package/dist/members-64SFCBT5.js +47 -0
- package/dist/meme-UJBWLEMA.js +100 -0
- package/dist/meta-3PVMVKDP.js +122 -0
- package/dist/metrics-EJ7FSBSI.js +152 -0
- package/dist/models-RUAIOX4K.js +155 -0
- package/dist/normalize-4RHSWNML.js +144 -0
- package/dist/normalize-X6FMLNQW.js +806 -0
- package/dist/options-ERT4OVWB.js +125 -0
- package/dist/organization-CXMLBGZY.js +949 -0
- package/dist/output-4CMFKHKV.js +24 -0
- package/dist/page-U434ALBN.js +105 -0
- package/dist/page-photos-OYPS2GP2.js +118 -0
- package/dist/pages-EYX26EXP.js +67 -0
- package/dist/performance-OKWF6BPE.js +5565 -0
- package/dist/performance-SGU7XX4P.js +27 -0
- package/dist/pinterest-3MSPSGJC.js +96 -0
- package/dist/pixels-X5PK5IAF.js +109 -0
- package/dist/pixels-XC2RXJRH.js +62 -0
- package/dist/plan-K2ZIMLQU.js +208 -0
- package/dist/posts-BH2TE4U3.js +36 -0
- package/dist/preview-LA3P4TAF.js +218 -0
- package/dist/profile-VKYAKK5B.js +159 -0
- package/dist/promoted-tweet-writes-2O75KPVF.js +183 -0
- package/dist/promoted-tweets-6TF3VYJ2.js +119 -0
- package/dist/properties-NAEEQRLQ.js +101 -0
- package/dist/publish-BK4VU2I7.js +344 -0
- package/dist/query-O76WFU6D.js +236 -0
- package/dist/query-XJXFKIRF.js +62 -0
- package/dist/query-ZGA3F647.js +231 -0
- package/dist/questionnaire-GEQF5OAQ.js +94 -0
- package/dist/read-HOMAUJS4.js +141 -0
- package/dist/reddit-HVLOXPPU.js +29 -0
- package/dist/refresh-BOYLAG34.js +42 -0
- package/dist/refresh-H5RGVPYJ.js +97 -0
- package/dist/release-DVS4CIU6.js +63 -0
- package/dist/relevant-pages-ILNQC3F4.js +99 -0
- package/dist/remove-DFTGSOL5.js +49 -0
- package/dist/remove-K4SJF2GG.js +53 -0
- package/dist/reopen-CGWLLKSF.js +66 -0
- package/dist/rerun-75XUDDOM.js +96 -0
- package/dist/rerun-75XUDDOM.js.map +1 -0
- package/dist/research-MTK6ZRR3.js +265 -0
- package/dist/research-ZPDFDOFR.js +75 -0
- package/dist/research-ZPDFDOFR.js.map +1 -0
- package/dist/reset-AUBXKPPG.js +57 -0
- package/dist/reset-XDFY6COF.js +57 -0
- package/dist/resolve-MKMJ6R2P.js +124 -0
- package/dist/retry-CBMIRIAN.js +65 -0
- package/dist/retry-GNTB73JH.js +63 -0
- package/dist/retry-failed-XOBX3GC3.js +45 -0
- package/dist/revenue-HMGOVX4D.js +91 -0
- package/dist/rule-writes-C46MBD32.js +525 -0
- package/dist/rules-6FUE3OPU.js +217 -0
- package/dist/rules-AQWK62HZ.js +99 -0
- package/dist/rules-add-IFBUKD3Q.js +465 -0
- package/dist/run-AIK22EVA.js +71 -0
- package/dist/run-UTCDGXL6.js +69 -0
- package/dist/scaffold-ad-KYPBFNX4.js +1513 -0
- package/dist/scaffold-ad-KYPBFNX4.js.map +1 -0
- package/dist/scaffold-static-ad-JYKGY2WM.js +1011 -0
- package/dist/scaffold-static-ad-JYKGY2WM.js.map +1 -0
- package/dist/scaffold-video-XXDBAX6I.js +885 -0
- package/dist/scaffold-video-XXDBAX6I.js.map +1 -0
- package/dist/schedule-AVK2VICC.js +67 -0
- package/dist/schedule-MOSVC36T.js +64 -0
- package/dist/scheduled-agents-AXZH5RPS.js +55 -0
- package/dist/schema-BYFKNXCP.js +121 -0
- package/dist/schema-WHSDTY5R.js +135 -0
- package/dist/scrape-23YO56SP.js +2241 -0
- package/dist/screenshot-HNI4B3UC.js +102 -0
- package/dist/search-5442DCYM.js +51 -0
- package/dist/search-BTAXTYED.js +92 -0
- package/dist/search-JQ7CDJWO.js +26 -0
- package/dist/search-UZWWXBEZ.js +177 -0
- package/dist/search-YA5WLCJ3.js +224 -0
- package/dist/search-YTEHFCU4.js +91 -0
- package/dist/search-copy-Z7DVNT44.js +168 -0
- package/dist/seeds-BFXQKJP4.js +101 -0
- package/dist/select-O2JB6MIA.js +110 -0
- package/dist/select-O2JB6MIA.js.map +1 -0
- package/dist/sends-25OLZQJ5.js +349 -0
- package/dist/sequences-J7HKMCZK.js +146 -0
- package/dist/set-prompt-DJHFZKXZ.js +199 -0
- package/dist/set-prompt-DJHFZKXZ.js.map +1 -0
- package/dist/setup-links-MWWNI4FI.js +144 -0
- package/dist/shared-JNIGEH2W.js +32 -0
- package/dist/shopify-3MO725IQ.js +3958 -0
- package/dist/site-FZCH64VV.js +180 -0
- package/dist/sitemaps-BEQUUVF2.js +77 -0
- package/dist/sites-XMTXNK6S.js +97 -0
- package/dist/skills-HKYYWQ2P.js +47 -0
- package/dist/sources-HUD22QOK.js +30 -0
- package/dist/sources-UMJF4LTK.js +457 -0
- package/dist/stale-6GYSUIUU.js +90 -0
- package/dist/stale-6GYSUIUU.js.map +1 -0
- package/dist/stats-NI777LK6.js +34 -0
- package/dist/status-2HMHVFME.js +65 -0
- package/dist/sticker-2SDWKGXB.js +94 -0
- package/dist/stock-THW6RFE5.js +179 -0
- package/dist/studies-E6XXH4RQ.js +250 -0
- package/dist/studio-KIIZ6GDK.js +49 -0
- package/dist/study-writes-4JXFQSGC.js +470 -0
- package/dist/suggest-3JDI3QAM.js +66 -0
- package/dist/sync-6S6SYYJT.js +55 -0
- package/dist/sync-BBZXPCZ7.js +279 -0
- package/dist/sync-PTTAFAZU.js +57 -0
- package/dist/sync-definition-G3XRLP74.js +70 -0
- package/dist/tag-E5ZUMD2B.js +57 -0
- package/dist/tag-manager-IHQYDUX3.js +43 -0
- package/dist/tags-D3H7FZIG.js +23 -0
- package/dist/tags-EEP2WOHL.js +23 -0
- package/dist/tags-HP4YJR36.js +227 -0
- package/dist/tags-INMEQWNK.js +23 -0
- package/dist/tags-KMMY3HB4.js +26 -0
- package/dist/targeting-ECBOAQG7.js +762 -0
- package/dist/targeting-constants-CGNYPDQY.js +118 -0
- package/dist/targeting-criteria-L4VB7RBH.js +113 -0
- package/dist/targets-T22E54UC.js +106 -0
- package/dist/terms-QVIZ2IAN.js +102 -0
- package/dist/testimonials-MKIDUBZH.js +32 -0
- package/dist/themes-R6CCC3UX.js +95 -0
- package/dist/top-companies-WV3NYUJR.js +111 -0
- package/dist/transcript-DWZXMBGW.js +165 -0
- package/dist/translate-43KE4RT6.js +603 -0
- package/dist/translate-43KE4RT6.js.map +1 -0
- package/dist/triggers-JCOYDORO.js +144 -0
- package/dist/tweets-TTY4UMBC.js +123 -0
- package/dist/unfollow-E2ZSYWUK.js +46 -0
- package/dist/unlink-XWPK6C4B.js +70 -0
- package/dist/unstage-RAFDCOHK.js +88 -0
- package/dist/unstage-XVCM35JX.js +96 -0
- package/dist/update-3LVVYA4K.js +101 -0
- package/dist/update-6J4YFUWR.js +192 -0
- package/dist/update-P7XEX3CH.js +66 -0
- package/dist/update-RUX5WSOT.js +81 -0
- package/dist/update-USQX4QDE.js +155 -0
- package/dist/upload-B2DEP22E.js +130 -0
- package/dist/upload-NV2KLKEL.js +150 -0
- package/dist/upscale-4COZN4VQ.js +109 -0
- package/dist/url-options-JXKKTY74.js +131 -0
- package/dist/url-params-5XD4ZL3B.js +101 -0
- package/dist/use-SORHLK2I.js +111 -0
- package/dist/validate-BTDCSW2Y.js +125 -0
- package/dist/validate-BTDCSW2Y.js.map +1 -0
- package/dist/variant-UAMWGBXF.js +338 -0
- package/dist/videos-UR4VDDJV.js +41 -0
- package/dist/view-DOSL3QK3.js +121 -0
- package/dist/viewer-check-VLODHBXL.js +83 -0
- package/dist/web-J3EJVEVU.js +173 -0
- package/dist/web-J3EJVEVU.js.map +1 -0
- package/dist/winners-KZ7SEXZY.js +113 -0
- package/dist/winning-ads-H2LM75L5.js +86 -0
- package/dist/write-commands-2AKHGZ2J.js +206 -0
- package/dist/write-commands-BKB6QICK.js +713 -0
- package/dist/write-commands-FCQNHFFN.js +1525 -0
- package/dist/write-commands-VAMGJXDX.js +1172 -0
- package/dist/x-3KONMR4M.js +47 -0
- package/package.json +1 -1
- package/dist/account-2UXZ6CZJ.js +0 -82
- package/dist/account-HQD5P3AF.js +0 -139
- package/dist/account-OWMJG4IW.js +0 -82
- package/dist/account-assets-JRMYVXQP.js +0 -290
- package/dist/account-level-PEGLZQTI.js +0 -611
- package/dist/account-reads-W2GAN335.js +0 -219
- package/dist/account-users-WLTQNPL7.js +0 -64
- package/dist/account-writes-TNADUSHW.js +0 -68
- package/dist/accounts-D3SQTZB7.js +0 -701
- package/dist/accounts-HRQFOTBJ.js +0 -80
- package/dist/accounts-MQMEOGQD.js +0 -114
- package/dist/accounts-T6SRCZJQ.js +0 -76
- package/dist/accounts-Y2VWI3AA.js +0 -115
- package/dist/actions-VJXED57L.js +0 -55
- package/dist/active-entities-BOMM4YDF.js +0 -103
- package/dist/activecampaign-TNJIQA4C.js +0 -938
- package/dist/activities-YH4K4JAI.js +0 -75
- package/dist/ad-group-writes-7BGCZA3M.js +0 -172
- package/dist/ad-groups-A6GU6EW5.js +0 -70
- package/dist/ad-writes-CEMCUDU2.js +0 -176
- package/dist/add-2L2VQ5MU.js +0 -80
- package/dist/add-DRTKSLEQ.js +0 -107
- package/dist/add-LBHISK44.js +0 -305
- package/dist/add-PS36Q2S3.js +0 -97
- package/dist/add-RLMXZLLO.js +0 -148
- package/dist/add-Z2OTFSQO.js +0 -81
- package/dist/add-accounts-GXBE4ZR2.js +0 -91
- package/dist/ads-4EVKVAMR.js +0 -48
- package/dist/ads-OY455VCX.js +0 -79
- package/dist/ads-WYQYZ44U.js +0 -128
- package/dist/ads-ZEF5AU3D.js +0 -120
- package/dist/adsets-ZRS7AZIK.js +0 -182
- package/dist/advertisers-AAGUUSAX.js +0 -125
- package/dist/advertisers-G6DZRBOK.js +0 -123
- package/dist/analytics-ANG42PKM.js +0 -2437
- package/dist/analytics-UI4AKUSF.js +0 -447
- package/dist/animate-KCSICY2N.js +0 -480
- package/dist/approved-LHYBVDXH.js +0 -73
- package/dist/asset-writes-CUF25BLM.js +0 -50
- package/dist/assign-5DFH6HBV.js +0 -80
- package/dist/audience-size-P6WIXOB3.js +0 -76
- package/dist/audience-writes-L7SNU2SB.js +0 -327
- package/dist/audiences-4ASLCNOF.js +0 -280
- package/dist/audiences-A54MU63W.js +0 -86
- package/dist/audiences-SG2BBM7R.js +0 -85
- package/dist/audit-6K5FFV6K.js +0 -88
- package/dist/audit-LA4BSLXV.js +0 -154
- package/dist/autocomplete-XMG6E7TG.js +0 -114
- package/dist/avatars-4IFN4GZD.js +0 -38
- package/dist/bid-pricing-JEOG2Q3L.js +0 -103
- package/dist/brand-C6HUAK74.js +0 -22
- package/dist/brief-5BCPPBU3.js +0 -543
- package/dist/businesses-GQ5FOZDU.js +0 -54
- package/dist/campaign-groups-IYQZSICZ.js +0 -99
- package/dist/campaign-writes-CVOOPZ35.js +0 -176
- package/dist/campaign-writes-YXI5UOPH.js +0 -168
- package/dist/campaigns-FW4WVD25.js +0 -113
- package/dist/campaigns-QMFHNG3N.js +0 -111
- package/dist/campaigns-TX37WHVL.js +0 -78
- package/dist/campaigns-VZJMYETG.js +0 -130
- package/dist/canvas-G4QXNPPE.js +0 -46
- package/dist/capabilities-7643Y2HU.js +0 -147
- package/dist/cards-YHZFJ3US.js +0 -85
- package/dist/catalog-PTVQSATT.js +0 -65
- package/dist/catalog-PTVQSATT.js.map +0 -1
- package/dist/catalogs-YNIUP2AH.js +0 -130
- package/dist/catalogs-ZHCLH43A.js +0 -781
- package/dist/changes-QUKBZVB3.js +0 -135
- package/dist/chatgpt-TIUBMATF.js +0 -47
- package/dist/chats-BGLAG4Q7.js +0 -279
- package/dist/check-MN5ZQ7RX.js +0 -107
- package/dist/chunk-23KN4NL4.js +0 -45
- package/dist/chunk-2UJ5ABI6.js +0 -604
- package/dist/chunk-2XRFWXSA.js +0 -103
- package/dist/chunk-3JV4T6XW.js +0 -69
- package/dist/chunk-3OSBCYKA.js +0 -8954
- package/dist/chunk-3QQHPRRB.js +0 -89
- package/dist/chunk-3WTCMBDC.js +0 -1518
- package/dist/chunk-44ZRCSR7.js +0 -228
- package/dist/chunk-46YLDIQG.js +0 -4254
- package/dist/chunk-46YLDIQG.js.map +0 -1
- package/dist/chunk-4BTUF2AV.js +0 -69
- package/dist/chunk-4D37LCBS.js +0 -111
- package/dist/chunk-4QITYZUH.js +0 -163
- package/dist/chunk-4XNF52NU.js +0 -429
- package/dist/chunk-4Y7IJ2PU.js +0 -5368
- package/dist/chunk-53BTYIMJ.js +0 -91
- package/dist/chunk-56OEYUJU.js +0 -61
- package/dist/chunk-5ITB24SC.js +0 -544
- package/dist/chunk-5N47LB7X.js +0 -285
- package/dist/chunk-5UBFYJHF.js +0 -170
- package/dist/chunk-6CQOHJZW.js +0 -125
- package/dist/chunk-6PMJU7IU.js +0 -169
- package/dist/chunk-7GGLZOQN.js +0 -91
- package/dist/chunk-7I65KXU7.js +0 -98
- package/dist/chunk-7JFVMJZI.js +0 -207
- package/dist/chunk-A6VODUO3.js +0 -166
- package/dist/chunk-AGTA5FJX.js +0 -139
- package/dist/chunk-AGU4KGT6.js +0 -84
- package/dist/chunk-BXUUKRMM.js +0 -46
- package/dist/chunk-BZTAEZLT.js +0 -51
- package/dist/chunk-C7IOSSI4.js +0 -58
- package/dist/chunk-CIW3Q7B2.js +0 -229
- package/dist/chunk-CJQ77HO5.js +0 -1646
- package/dist/chunk-CKTVRR3D.js +0 -57
- package/dist/chunk-CNPYG4F3.js +0 -75
- package/dist/chunk-COS3TPHX.js +0 -377
- package/dist/chunk-CQ6HBFOB.js +0 -23
- package/dist/chunk-D7Y3UNWO.js +0 -66
- package/dist/chunk-DJTWY7GL.js +0 -942
- package/dist/chunk-DJTWY7GL.js.map +0 -1
- package/dist/chunk-DWW5QSUF.js +0 -638
- package/dist/chunk-E34YYDCE.js +0 -35
- package/dist/chunk-ENUCJ6AO.js +0 -148
- package/dist/chunk-ES3PWGS3.js +0 -438
- package/dist/chunk-FESQ5TXU.js +0 -42
- package/dist/chunk-FEUKUZRA.js +0 -106
- package/dist/chunk-FJDSL4O5.js +0 -910
- package/dist/chunk-FSTDWVXG.js +0 -455
- package/dist/chunk-FUR7R4D7.js +0 -249
- package/dist/chunk-GYMZCJX6.js +0 -97
- package/dist/chunk-HTT7RBRC.js +0 -846
- package/dist/chunk-HVJJEQDQ.js +0 -7234
- package/dist/chunk-HVJJEQDQ.js.map +0 -1
- package/dist/chunk-HZPTQRX6.js +0 -2441
- package/dist/chunk-HZPTQRX6.js.map +0 -1
- package/dist/chunk-I7AYMJZA.js +0 -783
- package/dist/chunk-IQWFJEA3.js +0 -217
- package/dist/chunk-IU5K42Q3.js +0 -831
- package/dist/chunk-JAC6JVCI.js +0 -26
- package/dist/chunk-JARRF5VX.js +0 -66
- package/dist/chunk-JEUFRIYS.js +0 -297
- package/dist/chunk-JNSRQQDP.js +0 -94
- package/dist/chunk-KGAI4E2I.js +0 -106
- package/dist/chunk-KITVYLEX.js +0 -843
- package/dist/chunk-L4LNS54Y.js +0 -138
- package/dist/chunk-L5VVKIMB.js +0 -203
- package/dist/chunk-L763CNKH.js +0 -333
- package/dist/chunk-LO2MZJJP.js +0 -225
- package/dist/chunk-LV7EU6HM.js +0 -324
- package/dist/chunk-LXZ5E6AC.js +0 -84
- package/dist/chunk-LZRZVIEJ.js +0 -191
- package/dist/chunk-M2MJ52HS.js +0 -676
- package/dist/chunk-MBSAHNMJ.js +0 -547
- package/dist/chunk-MCJ5I5LR.js +0 -3187
- package/dist/chunk-MCJ5I5LR.js.map +0 -1
- package/dist/chunk-MCKYNFPH.js +0 -219
- package/dist/chunk-MHZIOOT5.js +0 -197
- package/dist/chunk-MNOCC5AL.js +0 -207
- package/dist/chunk-MUEJVDHI.js +0 -200
- package/dist/chunk-MZPS46OR.js +0 -76
- package/dist/chunk-N6WHUUFH.js +0 -19
- package/dist/chunk-NA5Q473J.js +0 -3868
- package/dist/chunk-NA5Q473J.js.map +0 -1
- package/dist/chunk-NCO5NGBN.js +0 -74
- package/dist/chunk-NLW25WW3.js +0 -52
- package/dist/chunk-NYAFSC5V.js +0 -287
- package/dist/chunk-O7AMKMII.js +0 -215
- package/dist/chunk-OL3QHART.js +0 -188
- package/dist/chunk-OPUEQSKM.js +0 -122
- package/dist/chunk-OPUEQSKM.js.map +0 -1
- package/dist/chunk-OXLB5M5M.js +0 -592
- package/dist/chunk-OXLB5M5M.js.map +0 -1
- package/dist/chunk-OXYWSVOJ.js +0 -100
- package/dist/chunk-OYNBUT5X.js +0 -479
- package/dist/chunk-PE4ZP7MX.js +0 -8914
- package/dist/chunk-PE4ZP7MX.js.map +0 -1
- package/dist/chunk-PG5R35QY.js +0 -73
- package/dist/chunk-PHZOMTI6.js +0 -97
- package/dist/chunk-PIAG4UJT.js +0 -274
- package/dist/chunk-PYWIHAVD.js +0 -64
- package/dist/chunk-QKNPF6ZD.js +0 -24026
- package/dist/chunk-QKNPF6ZD.js.map +0 -1
- package/dist/chunk-QOBA6PHB.js +0 -131
- package/dist/chunk-QPPQXU3U.js +0 -98
- package/dist/chunk-QTKNS2U2.js +0 -149
- package/dist/chunk-QTLIXCVN.js +0 -46
- package/dist/chunk-R5LRBDEM.js +0 -136
- package/dist/chunk-RRC7F3QQ.js +0 -1919
- package/dist/chunk-S6VFDNSQ.js +0 -63
- package/dist/chunk-SEYCF446.js +0 -191
- package/dist/chunk-SF52UGHZ.js +0 -225
- package/dist/chunk-SG2TDQEE.js +0 -150
- package/dist/chunk-SVNH6P7O.js +0 -1744
- package/dist/chunk-SWFZJROM.js +0 -64
- package/dist/chunk-UBDY5RE4.js +0 -387
- package/dist/chunk-UCNIJ2IW.js +0 -494
- package/dist/chunk-UFUYTWEF.js +0 -344
- package/dist/chunk-ULW4EWAA.js +0 -39
- package/dist/chunk-UROKPFIS.js +0 -142
- package/dist/chunk-VCOIFNYH.js +0 -714
- package/dist/chunk-VCOIFNYH.js.map +0 -1
- package/dist/chunk-VP4PO7FW.js +0 -392
- package/dist/chunk-VPF5A7CM.js +0 -476
- package/dist/chunk-VV6FDIP5.js +0 -224
- package/dist/chunk-WRTG3KXU.js +0 -156
- package/dist/chunk-WWLZ5RRU.js +0 -319
- package/dist/chunk-WWLZ5RRU.js.map +0 -1
- package/dist/chunk-XAW5GL6B.js +0 -76
- package/dist/chunk-XRNJRQ6Q.js +0 -26
- package/dist/chunk-Y5GQO6CR.js +0 -56
- package/dist/chunk-YE4RCEEJ.js +0 -167
- package/dist/chunk-YJYKSMLF.js +0 -296
- package/dist/chunk-YO54MA7R.js +0 -275
- package/dist/chunk-Z6T6VDDA.js +0 -76
- package/dist/chunk-ZOH672S6.js +0 -25
- package/dist/claim-2JNNC66N.js +0 -200
- package/dist/client-YUVT3RZN.js +0 -19
- package/dist/code-LOOWLRUL.js +0 -76
- package/dist/companies-4NJU5TLU.js +0 -198
- package/dist/company-QOYWS4W6.js +0 -308
- package/dist/complete-7FX2K3PV.js +0 -84
- package/dist/config-AOF6ACIP.js +0 -88
- package/dist/connect-H2HSPMRT.js +0 -45
- package/dist/content-NCW5IJFR.js +0 -85
- package/dist/conversation-4M7YMQOL.js +0 -96
- package/dist/conversion-report-G5JMZNYV.js +0 -127
- package/dist/conversion-upload-command-43PZFYT7.js +0 -439
- package/dist/conversion-writes-JQQCCGPO.js +0 -122
- package/dist/conversions-UO4CQNF6.js +0 -78
- package/dist/conversions-Z7FW7CFT.js +0 -140
- package/dist/copy-writes-ONVSSBLJ.js +0 -170
- package/dist/countries-Q6TA42P7.js +0 -82
- package/dist/create-4SFO4AQZ.js +0 -62
- package/dist/create-D5MA64KL.js +0 -239
- package/dist/create-GJ4ZMY3A.js +0 -210
- package/dist/create-QVY6DSYM.js +0 -135
- package/dist/creatives-ADH6HCCA.js +0 -58
- package/dist/creatives-R3XILT6D.js +0 -223
- package/dist/creatives-S3EZCXUT.js +0 -89
- package/dist/credentials-EQRB6XGZ.js +0 -290
- package/dist/critique-4YRRUNAU.js +0 -1451
- package/dist/critique-JCU2ATT6.js +0 -232
- package/dist/crm-AF6XOOSF.js +0 -323
- package/dist/crm-LSMFGR6R.js +0 -227
- package/dist/crop-RDP7YCNV.js +0 -113
- package/dist/currency-4KNOOZUU.js +0 -88
- package/dist/custom-conversions-7MZFTHUM.js +0 -128
- package/dist/customers-MM3VIZNA.js +0 -59
- package/dist/decide-OPCCKAIT.js +0 -199
- package/dist/delete-CO2YBPTI.js +0 -67
- package/dist/delete-D7HTW32U.js +0 -57
- package/dist/delete-GKQTDOZF.js +0 -69
- package/dist/delete-JUPBYK3H.js +0 -69
- package/dist/delete-KZFI235B.js +0 -85
- package/dist/delete-R3LXCKA4.js +0 -71
- package/dist/demographics-DK5JDY6M.js +0 -141
- package/dist/describe-537PPL7P.js +0 -97
- package/dist/describe-GIG46DT5.js +0 -97
- package/dist/dimensions-UXK7DMTF.js +0 -101
- package/dist/discard-DEJOM62Y.js +0 -69
- package/dist/discover-MKFDG6NK.js +0 -93
- package/dist/discover-U6YLVLTF.js +0 -172
- package/dist/domain-MBOMV3CQ.js +0 -101
- package/dist/download-KN2I55SA.js +0 -172
- package/dist/download-PRBLR6IQ.js +0 -299
- package/dist/draft-BMNBT37B.js +0 -283
- package/dist/draft-CGPVRRKC.js +0 -335
- package/dist/draft-F74OIT5O.js +0 -310
- package/dist/draft-FIEZWBIX.js +0 -308
- package/dist/draft-H5RVDTFD.js +0 -240
- package/dist/draft-HZ5T6NOI.js +0 -220
- package/dist/draft-UMPCOCP6.js +0 -100
- package/dist/draft-XEUHTUMR.js +0 -103
- package/dist/env-VBSATLEF.js +0 -53
- package/dist/experiment-2XR6MBE2.js +0 -1397
- package/dist/experiments-YNJZCMQM.js +0 -236
- package/dist/export-YCLJG5YP.js +0 -168
- package/dist/extract-E3CMEN5U.js +0 -113
- package/dist/facets-Y4OACBMC.js +0 -117
- package/dist/favorites-NSQX6HKB.js +0 -178
- package/dist/feed-TKMMYAEH.js +0 -177
- package/dist/feedback-MORAVN52.js +0 -111
- package/dist/feedback-MORAVN52.js.map +0 -1
- package/dist/feedback-record-M3RB7H2C.js +0 -265
- package/dist/feedback-record-M3RB7H2C.js.map +0 -1
- package/dist/fetch-EHP2FK6Y.js +0 -139
- package/dist/fetch-XU6QVWMS.js +0 -179
- package/dist/fetch-XU6QVWMS.js.map +0 -1
- package/dist/find-I7U3THF3.js +0 -143
- package/dist/fit-IHUUFCGI.js +0 -65
- package/dist/flows-WSCIMXQX.js +0 -250
- package/dist/follow-A46RAJEX.js +0 -94
- package/dist/follow-competitors-VU2L3KWF.js +0 -112
- package/dist/following-UOUNSU6P.js +0 -113
- package/dist/fonts-3QW7EDHE.js +0 -39
- package/dist/forecast-2WVHMSZP.js +0 -169
- package/dist/forecast-F25LSCM5.js +0 -121
- package/dist/funding-2VROIMLS.js +0 -85
- package/dist/funnel-35DYDBJH.js +0 -397
- package/dist/ga4-ULHKTF23.js +0 -55
- package/dist/generate-Z7AROAES.js +0 -263
- package/dist/get-4CAX33L2.js +0 -59
- package/dist/get-5E4YJKPO.js +0 -66
- package/dist/get-ABQZJ2VQ.js +0 -38
- package/dist/get-ASAW6TVF.js +0 -62
- package/dist/get-GXVAJZHM.js +0 -56
- package/dist/get-IF7KHMSI.js +0 -92
- package/dist/get-N7X75ZJO.js +0 -82
- package/dist/get-ZISAHMTQ.js +0 -59
- package/dist/gif-QLNWBFAH.js +0 -102
- package/dist/google-FDR55RRD.js +0 -136
- package/dist/google-M6XR7YGT.js +0 -3267
- package/dist/google-ads-NCSMNNND.js +0 -198
- package/dist/group-HAQM6P7M.js +0 -43
- package/dist/group-XVDH2ONO.js +0 -43
- package/dist/gsc-GQFI6I2D.js +0 -30
- package/dist/history-FGQ2H7XH.js +0 -69
- package/dist/history-LTOFKBMJ.js +0 -136
- package/dist/history-VJ254UXF.js +0 -102
- package/dist/hubspot-W2NM75YK.js +0 -782
- package/dist/icon-F7AOOTFI.js +0 -137
- package/dist/ideas-54KFDNDM.js +0 -45
- package/dist/images-JOEVCCP6.js +0 -92
- package/dist/improve-LIKOER3S.js +0 -86
- package/dist/ingest-6R7XUL46.js +0 -27
- package/dist/ingest-VCIH5QDR.js +0 -123
- package/dist/insights-QNE6XCBA.js +0 -439
- package/dist/insights-UXUUOQB7.js +0 -132
- package/dist/inspect-MGOR77FP.js +0 -192
- package/dist/inspiration-VXNGKAJV.js +0 -53
- package/dist/instant-experiences-MT2XMQNH.js +0 -260
- package/dist/intent-FZWPRUCI.js +0 -95
- package/dist/job-TS34W4IU.js +0 -202
- package/dist/job-create-FXXDR2EE.js +0 -109
- package/dist/job-status-R2H4HNC5.js +0 -74
- package/dist/keep-YSU3XMW3.js +0 -78
- package/dist/keyword-gap-4ECYPWXJ.js +0 -130
- package/dist/keyword-metrics-SBIRN5KC.js +0 -200
- package/dist/keywords-for-site-TLNPJHT2.js +0 -131
- package/dist/knowledge-L3VLOVLG.js +0 -195
- package/dist/landing-ZICSVWKF.js +0 -28
- package/dist/landings-XTPNPTHN.js +0 -151
- package/dist/languages-DIKRMAYE.js +0 -55
- package/dist/languages-VNZQ5USL.js +0 -40
- package/dist/launches-5R7EUONQ.js +0 -19
- package/dist/layerize-Q2QWDARG.js +0 -190
- package/dist/lead-routes-IXUCGINI.js +0 -733
- package/dist/leads-JUQFNK55.js +0 -115
- package/dist/leads-UVG6VYAC.js +0 -540
- package/dist/learn-A6BT25LQ.js +0 -207
- package/dist/library-G5YAFLTR.js +0 -211
- package/dist/lighthouse-BCBV2XGP.js +0 -75
- package/dist/line-item-writes-NW7A6HNH.js +0 -211
- package/dist/line-items-OAG3QMDE.js +0 -107
- package/dist/link-4VJ7FSOA.js +0 -67
- package/dist/linkedin-CKOWKD4M.js +0 -1328
- package/dist/linkedin-person-C22IDK7S.js +0 -139
- package/dist/list-2DKLO6AO.js +0 -67
- package/dist/list-4SDJZVOL.js +0 -93
- package/dist/list-6YW4I4VG.js +0 -65
- package/dist/list-CDDXHMJQ.js +0 -306
- package/dist/list-GS42LK5C.js +0 -51
- package/dist/list-HWNHRWGB.js +0 -57
- package/dist/list-QSBEYU45.js +0 -76
- package/dist/list-ZFGOONWL.js +0 -50
- package/dist/list-ZORO7PFP.js +0 -154
- package/dist/locations-4RDUHKVR.js +0 -69
- package/dist/locations-HATR6PSC.js +0 -40
- package/dist/log-OSJHKHPV.js +0 -95
- package/dist/logo-ABO4HJRG.js +0 -18
- package/dist/lookup-SPNT3W3W.js +0 -23
- package/dist/make-7CIVNW77.js +0 -1366
- package/dist/make-7CIVNW77.js.map +0 -1
- package/dist/map-PMGZDXAN.js +0 -436
- package/dist/mcp-MOOOTRYG.js +0 -729
- package/dist/media-CIJW2Q3I.js +0 -89
- package/dist/media-GZKW2PZB.js +0 -18
- package/dist/media-sources-5OYCKQ5J.js +0 -35
- package/dist/members-QG5IP5HM.js +0 -47
- package/dist/meme-BPWX7YQH.js +0 -100
- package/dist/meta-KVOSCSPJ.js +0 -122
- package/dist/metrics-R4YS2JL6.js +0 -152
- package/dist/models-RJMZV5SH.js +0 -155
- package/dist/normalize-LATTXSL3.js +0 -144
- package/dist/normalize-NMNOJ6Q5.js +0 -806
- package/dist/options-KALH5TB7.js +0 -125
- package/dist/organization-AGCF7DUJ.js +0 -949
- package/dist/output-34QMC3OU.js +0 -24
- package/dist/page-UDF3LJHP.js +0 -105
- package/dist/page-photos-FCBW5UZS.js +0 -118
- package/dist/pages-5W5G4MRB.js +0 -67
- package/dist/performance-SITVZQWX.js +0 -5565
- package/dist/performance-YNXPUSGJ.js +0 -27
- package/dist/pinterest-IABDXLF5.js +0 -96
- package/dist/pixels-4QAWLSEL.js +0 -109
- package/dist/pixels-TYJVE377.js +0 -62
- package/dist/plan-I6EFL7RC.js +0 -208
- package/dist/posts-SXQSLOFV.js +0 -36
- package/dist/preview-7Y5LE24E.js +0 -218
- package/dist/profile-R5VPOOJU.js +0 -159
- package/dist/promoted-tweet-writes-NAHPJ3VD.js +0 -183
- package/dist/promoted-tweets-2XQ4MWAC.js +0 -119
- package/dist/properties-2D2BIDGC.js +0 -101
- package/dist/publish-UITYPUBD.js +0 -344
- package/dist/query-JOYRNM4O.js +0 -231
- package/dist/query-LB5H7IRK.js +0 -236
- package/dist/query-RE7NB2BK.js +0 -62
- package/dist/questionnaire-U767HYDE.js +0 -94
- package/dist/read-3TCDDALC.js +0 -141
- package/dist/reddit-6XIARCTX.js +0 -29
- package/dist/refresh-6UCN7PDX.js +0 -97
- package/dist/refresh-GIB6QQZS.js +0 -42
- package/dist/release-IN65L23O.js +0 -63
- package/dist/relevant-pages-W7IM6YQW.js +0 -99
- package/dist/remove-LZQHDFZF.js +0 -49
- package/dist/remove-X3XWVE2M.js +0 -53
- package/dist/reopen-RMMQ55CH.js +0 -66
- package/dist/rerun-ON6YCJAL.js +0 -95
- package/dist/rerun-ON6YCJAL.js.map +0 -1
- package/dist/research-LZBPCXIW.js +0 -72
- package/dist/research-LZBPCXIW.js.map +0 -1
- package/dist/research-W5KUOBXZ.js +0 -265
- package/dist/reset-MUWXTLIB.js +0 -57
- package/dist/reset-VQNKXFAF.js +0 -57
- package/dist/resolve-DMGWLMTC.js +0 -124
- package/dist/retry-YI4YLYTQ.js +0 -63
- package/dist/retry-ZQUJPKQH.js +0 -65
- package/dist/retry-failed-PEAUXGNT.js +0 -45
- package/dist/revenue-6YZAOMF6.js +0 -91
- package/dist/rule-writes-G25O5JZS.js +0 -525
- package/dist/rules-FHVZEN4D.js +0 -99
- package/dist/rules-KSOAKEI3.js +0 -217
- package/dist/rules-add-7X46VTIJ.js +0 -465
- package/dist/run-TA6HYFKZ.js +0 -69
- package/dist/run-YORKHK6S.js +0 -70
- package/dist/scaffold-ad-RHSHBCVV.js +0 -1512
- package/dist/scaffold-ad-RHSHBCVV.js.map +0 -1
- package/dist/scaffold-static-ad-XNOGCMPF.js +0 -1010
- package/dist/scaffold-static-ad-XNOGCMPF.js.map +0 -1
- package/dist/scaffold-video-XEVJQ7QZ.js +0 -884
- package/dist/scaffold-video-XEVJQ7QZ.js.map +0 -1
- package/dist/schedule-TMTLYULK.js +0 -64
- package/dist/schedule-TNF6M6UD.js +0 -67
- package/dist/scheduled-agents-TS3WLRCM.js +0 -55
- package/dist/schema-2YQAQVON.js +0 -121
- package/dist/schema-6S5ZEPBS.js +0 -135
- package/dist/scrape-FDBYU3TU.js +0 -2241
- package/dist/screenshot-QSRWL4J6.js +0 -102
- package/dist/search-BOCQFUM3.js +0 -51
- package/dist/search-CENPR7GA.js +0 -224
- package/dist/search-GEXDRTAQ.js +0 -26
- package/dist/search-LFTFNDMC.js +0 -91
- package/dist/search-LTUUAGZG.js +0 -177
- package/dist/search-PYLNVZXI.js +0 -92
- package/dist/search-copy-RLRRR3LB.js +0 -168
- package/dist/seeds-E2GLHJ2T.js +0 -101
- package/dist/select-BXBNFGVL.js +0 -106
- package/dist/select-BXBNFGVL.js.map +0 -1
- package/dist/sends-NBTGBZT7.js +0 -349
- package/dist/sequences-UOIHUOD3.js +0 -146
- package/dist/set-prompt-JJWBB23C.js +0 -198
- package/dist/set-prompt-JJWBB23C.js.map +0 -1
- package/dist/setup-links-6ANVKZCE.js +0 -144
- package/dist/shared-IMDHTVSW.js +0 -32
- package/dist/shopify-6ISTKZCA.js +0 -3958
- package/dist/site-OIV55MGO.js +0 -180
- package/dist/sitemaps-VYLDUI4L.js +0 -77
- package/dist/sites-HM7ZCGCZ.js +0 -97
- package/dist/skills-FBIVWINH.js +0 -47
- package/dist/sources-5L4S5BQV.js +0 -457
- package/dist/sources-GLJWZFHZ.js +0 -30
- package/dist/stale-SK2SDGOT.js +0 -76
- package/dist/stale-SK2SDGOT.js.map +0 -1
- package/dist/stats-2NLNQBRY.js +0 -34
- package/dist/status-TD7ISXC5.js +0 -65
- package/dist/sticker-4NKFAGEK.js +0 -94
- package/dist/stock-XOXZGGU3.js +0 -179
- package/dist/studies-C5IINK5Y.js +0 -250
- package/dist/studio-IDNM42JP.js +0 -49
- package/dist/study-writes-GJXLMM3D.js +0 -470
- package/dist/suggest-Z553OSYW.js +0 -66
- package/dist/sync-CIRDY55O.js +0 -279
- package/dist/sync-PVIFUXX3.js +0 -57
- package/dist/sync-UBOHNOXB.js +0 -55
- package/dist/sync-definition-7NBT6LTK.js +0 -69
- package/dist/tag-22TFBGDG.js +0 -57
- package/dist/tag-manager-QLZHU6NG.js +0 -43
- package/dist/tags-3HB7N5WB.js +0 -23
- package/dist/tags-DG3XQ4SF.js +0 -227
- package/dist/tags-T4EN6XYE.js +0 -23
- package/dist/tags-T6THTVNP.js +0 -26
- package/dist/tags-XY6R2VJ6.js +0 -23
- package/dist/targeting-GNEBULXU.js +0 -762
- package/dist/targeting-constants-GR6BVM2H.js +0 -118
- package/dist/targeting-criteria-CL472KJO.js +0 -113
- package/dist/targets-7AQMSO6H.js +0 -106
- package/dist/terms-LG7FYQOG.js +0 -102
- package/dist/testimonials-4QWVSEPU.js +0 -32
- package/dist/themes-ZTM4OVGK.js +0 -95
- package/dist/top-companies-PMFYOAFK.js +0 -111
- package/dist/transcript-YWFYNFWX.js +0 -165
- package/dist/translate-VMQHPX4B.js +0 -600
- package/dist/translate-VMQHPX4B.js.map +0 -1
- package/dist/triggers-JKXISN45.js +0 -144
- package/dist/tweets-IF5FFFTH.js +0 -123
- package/dist/unfollow-CDUOZWM7.js +0 -46
- package/dist/unlink-IUAFDLBT.js +0 -70
- package/dist/unstage-OVOZE6DA.js +0 -96
- package/dist/unstage-ZYT5RNLK.js +0 -88
- package/dist/update-23Q4T2J5.js +0 -155
- package/dist/update-74VME6PN.js +0 -66
- package/dist/update-O22DAZVX.js +0 -192
- package/dist/update-Q3WJ3DQN.js +0 -81
- package/dist/update-QAWK3O7L.js +0 -101
- package/dist/upload-EAEILUQB.js +0 -150
- package/dist/upload-WASRCKS4.js +0 -130
- package/dist/upscale-HB6L6SZG.js +0 -109
- package/dist/url-options-M7RX2TD4.js +0 -131
- package/dist/url-params-E5ON6W2N.js +0 -101
- package/dist/use-HGX7ZRH5.js +0 -111
- package/dist/validate-NB6PS5PF.js +0 -122
- package/dist/validate-NB6PS5PF.js.map +0 -1
- package/dist/variant-O7LXOA2E.js +0 -338
- package/dist/videos-SS2Y6FJF.js +0 -41
- package/dist/view-ED636LWD.js +0 -121
- package/dist/viewer-check-CWS6OVM7.js +0 -83
- package/dist/web-HT22JFQR.js +0 -143
- package/dist/web-HT22JFQR.js.map +0 -1
- package/dist/winners-ZG5SHNBS.js +0 -113
- package/dist/winning-ads-FXTP4PWZ.js +0 -86
- package/dist/write-commands-5YVQKO7E.js +0 -1525
- package/dist/write-commands-AIWR7NBO.js +0 -713
- package/dist/write-commands-UK6MKGHI.js +0 -206
- package/dist/write-commands-W3UN6F4Y.js +0 -1172
- package/dist/x-KEMAY75C.js +0 -47
- /package/dist/{account-OWMJG4IW.js.map → account-NWIPSZM3.js.map} +0 -0
- /package/dist/{account-HQD5P3AF.js.map → account-WBGF3RGD.js.map} +0 -0
- /package/dist/{account-2UXZ6CZJ.js.map → account-ZE5ABGHY.js.map} +0 -0
- /package/dist/{account-assets-JRMYVXQP.js.map → account-assets-BTDNFVBW.js.map} +0 -0
- /package/dist/{account-level-PEGLZQTI.js.map → account-level-T2YB6ILW.js.map} +0 -0
- /package/dist/{account-reads-W2GAN335.js.map → account-reads-U4OI4N4V.js.map} +0 -0
- /package/dist/{account-users-WLTQNPL7.js.map → account-users-6RYS7LDR.js.map} +0 -0
- /package/dist/{account-writes-TNADUSHW.js.map → account-writes-4TE3ARDQ.js.map} +0 -0
- /package/dist/{accounts-MQMEOGQD.js.map → accounts-N2YX4AP6.js.map} +0 -0
- /package/dist/{accounts-D3SQTZB7.js.map → accounts-NY47CLTN.js.map} +0 -0
- /package/dist/{accounts-HRQFOTBJ.js.map → accounts-SHGZX4V2.js.map} +0 -0
- /package/dist/{accounts-Y2VWI3AA.js.map → accounts-TILUZQQT.js.map} +0 -0
- /package/dist/{accounts-T6SRCZJQ.js.map → accounts-VAZ4ZXMA.js.map} +0 -0
- /package/dist/{actions-VJXED57L.js.map → actions-TBWF3M5X.js.map} +0 -0
- /package/dist/{active-entities-BOMM4YDF.js.map → active-entities-NTSGNVAV.js.map} +0 -0
- /package/dist/{activecampaign-TNJIQA4C.js.map → activecampaign-CBTOLWBM.js.map} +0 -0
- /package/dist/{activities-YH4K4JAI.js.map → activities-XVFA3XF5.js.map} +0 -0
- /package/dist/{ad-group-writes-7BGCZA3M.js.map → ad-group-writes-HVNPWOXM.js.map} +0 -0
- /package/dist/{ad-groups-A6GU6EW5.js.map → ad-groups-NPD6TNK2.js.map} +0 -0
- /package/dist/{ad-writes-CEMCUDU2.js.map → ad-writes-O5GJSK3G.js.map} +0 -0
- /package/dist/{add-Z2OTFSQO.js.map → add-AYILCHML.js.map} +0 -0
- /package/dist/{add-DRTKSLEQ.js.map → add-D4USMEDM.js.map} +0 -0
- /package/dist/{add-PS36Q2S3.js.map → add-J76XNCNO.js.map} +0 -0
- /package/dist/{add-RLMXZLLO.js.map → add-JCNVWVNA.js.map} +0 -0
- /package/dist/{add-2L2VQ5MU.js.map → add-NV5TBLCP.js.map} +0 -0
- /package/dist/{add-LBHISK44.js.map → add-SWSKLIMK.js.map} +0 -0
- /package/dist/{add-accounts-GXBE4ZR2.js.map → add-accounts-2KEM5SDH.js.map} +0 -0
- /package/dist/{ads-WYQYZ44U.js.map → ads-3ZCUKPVZ.js.map} +0 -0
- /package/dist/{ads-OY455VCX.js.map → ads-CJIWTAGM.js.map} +0 -0
- /package/dist/{ads-ZEF5AU3D.js.map → ads-JSFDYLKJ.js.map} +0 -0
- /package/dist/{ads-4EVKVAMR.js.map → ads-TLWYK3XS.js.map} +0 -0
- /package/dist/{adsets-ZRS7AZIK.js.map → adsets-EQVLMBJX.js.map} +0 -0
- /package/dist/{advertisers-G6DZRBOK.js.map → advertisers-NXJIWTA4.js.map} +0 -0
- /package/dist/{advertisers-AAGUUSAX.js.map → advertisers-WQ2FDNHU.js.map} +0 -0
- /package/dist/{analytics-ANG42PKM.js.map → analytics-FG5CBBPC.js.map} +0 -0
- /package/dist/{analytics-UI4AKUSF.js.map → analytics-NH7M3XB7.js.map} +0 -0
- /package/dist/{animate-KCSICY2N.js.map → animate-IRSBEZVK.js.map} +0 -0
- /package/dist/{approved-LHYBVDXH.js.map → approved-LNUYJEUZ.js.map} +0 -0
- /package/dist/{asset-writes-CUF25BLM.js.map → asset-writes-JGOWG3L3.js.map} +0 -0
- /package/dist/{assign-5DFH6HBV.js.map → assign-GDQFFWZ5.js.map} +0 -0
- /package/dist/{audience-size-P6WIXOB3.js.map → audience-size-RBXNKZMD.js.map} +0 -0
- /package/dist/{audience-writes-L7SNU2SB.js.map → audience-writes-7HTQFT3Q.js.map} +0 -0
- /package/dist/{audiences-A54MU63W.js.map → audiences-FNNPTVSN.js.map} +0 -0
- /package/dist/{audiences-4ASLCNOF.js.map → audiences-I62OFJNP.js.map} +0 -0
- /package/dist/{audiences-SG2BBM7R.js.map → audiences-JOFKN2LB.js.map} +0 -0
- /package/dist/{audit-LA4BSLXV.js.map → audit-SLXL2OET.js.map} +0 -0
- /package/dist/{audit-6K5FFV6K.js.map → audit-SPBIEG2P.js.map} +0 -0
- /package/dist/{autocomplete-XMG6E7TG.js.map → autocomplete-4I6SKS33.js.map} +0 -0
- /package/dist/{avatars-4IFN4GZD.js.map → avatars-XLOSQRHV.js.map} +0 -0
- /package/dist/{bid-pricing-JEOG2Q3L.js.map → bid-pricing-IR7BOILK.js.map} +0 -0
- /package/dist/{brand-C6HUAK74.js.map → brand-YJXEJLZI.js.map} +0 -0
- /package/dist/{brief-5BCPPBU3.js.map → brief-P5U4PV73.js.map} +0 -0
- /package/dist/{businesses-GQ5FOZDU.js.map → businesses-ZGBQIBTU.js.map} +0 -0
- /package/dist/{campaign-groups-IYQZSICZ.js.map → campaign-groups-6SO2DUYF.js.map} +0 -0
- /package/dist/{campaign-writes-YXI5UOPH.js.map → campaign-writes-EXOITAX6.js.map} +0 -0
- /package/dist/{campaign-writes-CVOOPZ35.js.map → campaign-writes-N2U4TJEG.js.map} +0 -0
- /package/dist/{campaigns-FW4WVD25.js.map → campaigns-7U5YMQWS.js.map} +0 -0
- /package/dist/{campaigns-QMFHNG3N.js.map → campaigns-LUCBK4KX.js.map} +0 -0
- /package/dist/{campaigns-TX37WHVL.js.map → campaigns-N4IQNY5Z.js.map} +0 -0
- /package/dist/{campaigns-VZJMYETG.js.map → campaigns-PJP4QZQ6.js.map} +0 -0
- /package/dist/{canvas-G4QXNPPE.js.map → canvas-IP4MCAHT.js.map} +0 -0
- /package/dist/{capabilities-7643Y2HU.js.map → capabilities-SU25DKSW.js.map} +0 -0
- /package/dist/{cards-YHZFJ3US.js.map → cards-IPWT3R7L.js.map} +0 -0
- /package/dist/{catalogs-YNIUP2AH.js.map → catalogs-7TA4AJCV.js.map} +0 -0
- /package/dist/{catalogs-ZHCLH43A.js.map → catalogs-TJ4HICNN.js.map} +0 -0
- /package/dist/{changes-QUKBZVB3.js.map → changes-EJZJCZVV.js.map} +0 -0
- /package/dist/{chatgpt-TIUBMATF.js.map → chatgpt-D7JWEOAM.js.map} +0 -0
- /package/dist/{chats-BGLAG4Q7.js.map → chats-JMQODNCE.js.map} +0 -0
- /package/dist/{check-MN5ZQ7RX.js.map → check-JK3BRROQ.js.map} +0 -0
- /package/dist/{chunk-L763CNKH.js.map → chunk-26TRRYCA.js.map} +0 -0
- /package/dist/{chunk-3OSBCYKA.js.map → chunk-2NYMB7WG.js.map} +0 -0
- /package/dist/{chunk-R5LRBDEM.js.map → chunk-2TTGNQ5H.js.map} +0 -0
- /package/dist/{chunk-L4LNS54Y.js.map → chunk-2VUQOAT3.js.map} +0 -0
- /package/dist/{chunk-56OEYUJU.js.map → chunk-34NX5OGV.js.map} +0 -0
- /package/dist/{chunk-4Y7IJ2PU.js.map → chunk-3P6VKACL.js.map} +0 -0
- /package/dist/{chunk-OYNBUT5X.js.map → chunk-3WSBH7YB.js.map} +0 -0
- /package/dist/{chunk-I7AYMJZA.js.map → chunk-45EERHDB.js.map} +0 -0
- /package/dist/{chunk-LXZ5E6AC.js.map → chunk-4GARQXOI.js.map} +0 -0
- /package/dist/{chunk-OXYWSVOJ.js.map → chunk-6CPII3NK.js.map} +0 -0
- /package/dist/{chunk-CNPYG4F3.js.map → chunk-6D2D6L6K.js.map} +0 -0
- /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
- /package/dist/{chunk-L5VVKIMB.js.map → chunk-6SK56BHM.js.map} +0 -0
- /package/dist/{chunk-M2MJ52HS.js.map → chunk-6VKGKWB4.js.map} +0 -0
- /package/dist/{chunk-5UBFYJHF.js.map → chunk-6Z5NT7TE.js.map} +0 -0
- /package/dist/{chunk-SEYCF446.js.map → chunk-75SKCW3F.js.map} +0 -0
- /package/dist/{chunk-KITVYLEX.js.map → chunk-7RAONNZM.js.map} +0 -0
- /package/dist/{chunk-VP4PO7FW.js.map → chunk-7YVITQPT.js.map} +0 -0
- /package/dist/{chunk-23KN4NL4.js.map → chunk-AHPZKJ32.js.map} +0 -0
- /package/dist/{chunk-3WTCMBDC.js.map → chunk-ALJV3U4U.js.map} +0 -0
- /package/dist/{chunk-FEUKUZRA.js.map → chunk-AZEJ727R.js.map} +0 -0
- /package/dist/{chunk-5ITB24SC.js.map → chunk-AZWX3Q2J.js.map} +0 -0
- /package/dist/{chunk-YJYKSMLF.js.map → chunk-B6ZGSAHC.js.map} +0 -0
- /package/dist/{chunk-FUR7R4D7.js.map → chunk-BLXTPJGC.js.map} +0 -0
- /package/dist/{chunk-A6VODUO3.js.map → chunk-BNDSCJUI.js.map} +0 -0
- /package/dist/{chunk-UFUYTWEF.js.map → chunk-BNFTHFBB.js.map} +0 -0
- /package/dist/{chunk-E34YYDCE.js.map → chunk-CAYIC3ES.js.map} +0 -0
- /package/dist/{chunk-MNOCC5AL.js.map → chunk-CMQHTYTK.js.map} +0 -0
- /package/dist/{chunk-VV6FDIP5.js.map → chunk-DGE5UEMS.js.map} +0 -0
- /package/dist/{chunk-SF52UGHZ.js.map → chunk-DS6EJRF4.js.map} +0 -0
- /package/dist/{chunk-O7AMKMII.js.map → chunk-DUWJG6QH.js.map} +0 -0
- /package/dist/{chunk-QOBA6PHB.js.map → chunk-DW4AEYFB.js.map} +0 -0
- /package/dist/{chunk-QTKNS2U2.js.map → chunk-DXHOUY74.js.map} +0 -0
- /package/dist/{chunk-PG5R35QY.js.map → chunk-E3QYALFY.js.map} +0 -0
- /package/dist/{chunk-FJDSL4O5.js.map → chunk-GB5TIOS5.js.map} +0 -0
- /package/dist/{chunk-4QITYZUH.js.map → chunk-GLGTUZQE.js.map} +0 -0
- /package/dist/{chunk-HTT7RBRC.js.map → chunk-GZ6MSG7I.js.map} +0 -0
- /package/dist/{chunk-NLW25WW3.js.map → chunk-HBMHTFKS.js.map} +0 -0
- /package/dist/{chunk-6CQOHJZW.js.map → chunk-HIXMP66B.js.map} +0 -0
- /package/dist/{chunk-SWFZJROM.js.map → chunk-HUYOWLTS.js.map} +0 -0
- /package/dist/{chunk-7JFVMJZI.js.map → chunk-HWOSUF22.js.map} +0 -0
- /package/dist/{chunk-IU5K42Q3.js.map → chunk-IA5O6DDP.js.map} +0 -0
- /package/dist/{chunk-7GGLZOQN.js.map → chunk-IAA36IYQ.js.map} +0 -0
- /package/dist/{chunk-N6WHUUFH.js.map → chunk-IANNXUQQ.js.map} +0 -0
- /package/dist/{chunk-CIW3Q7B2.js.map → chunk-IKZHHMG4.js.map} +0 -0
- /package/dist/{chunk-CQ6HBFOB.js.map → chunk-IS6TXDPQ.js.map} +0 -0
- /package/dist/{chunk-44ZRCSR7.js.map → chunk-IZABTTW5.js.map} +0 -0
- /package/dist/{chunk-UROKPFIS.js.map → chunk-JVFV6UJ3.js.map} +0 -0
- /package/dist/{chunk-UBDY5RE4.js.map → chunk-KJS3N47X.js.map} +0 -0
- /package/dist/{chunk-AGU4KGT6.js.map → chunk-KML35BKR.js.map} +0 -0
- /package/dist/{chunk-MUEJVDHI.js.map → chunk-KUH5WDSK.js.map} +0 -0
- /package/dist/{chunk-2UJ5ABI6.js.map → chunk-LKK6R5FM.js.map} +0 -0
- /package/dist/{chunk-PIAG4UJT.js.map → chunk-LTWAROBR.js.map} +0 -0
- /package/dist/{chunk-KGAI4E2I.js.map → chunk-LXCDBNBJ.js.map} +0 -0
- /package/dist/{chunk-XRNJRQ6Q.js.map → chunk-LZOP5AKR.js.map} +0 -0
- /package/dist/{chunk-3JV4T6XW.js.map → chunk-MOXKTWY5.js.map} +0 -0
- /package/dist/{chunk-LO2MZJJP.js.map → chunk-MTSEFJ7Y.js.map} +0 -0
- /package/dist/{chunk-S6VFDNSQ.js.map → chunk-MTV2RSGY.js.map} +0 -0
- /package/dist/{chunk-QPPQXU3U.js.map → chunk-MZOVTEEY.js.map} +0 -0
- /package/dist/{chunk-BZTAEZLT.js.map → chunk-N2MYKKHX.js.map} +0 -0
- /package/dist/{chunk-CKTVRR3D.js.map → chunk-N6SZJDDF.js.map} +0 -0
- /package/dist/{chunk-JNSRQQDP.js.map → chunk-NSYYRMCV.js.map} +0 -0
- /package/dist/{chunk-4BTUF2AV.js.map → chunk-O3NCVHFP.js.map} +0 -0
- /package/dist/{chunk-53BTYIMJ.js.map → chunk-OAFALNL2.js.map} +0 -0
- /package/dist/{chunk-NYAFSC5V.js.map → chunk-OBEAXLVV.js.map} +0 -0
- /package/dist/{chunk-AGTA5FJX.js.map → chunk-ORID3CGW.js.map} +0 -0
- /package/dist/{chunk-7I65KXU7.js.map → chunk-PEEE5WPR.js.map} +0 -0
- /package/dist/{chunk-QTLIXCVN.js.map → chunk-PMCVYVRV.js.map} +0 -0
- /package/dist/{chunk-IQWFJEA3.js.map → chunk-PMKNHE6G.js.map} +0 -0
- /package/dist/{chunk-ULW4EWAA.js.map → chunk-PRMR2LAM.js.map} +0 -0
- /package/dist/{chunk-GYMZCJX6.js.map → chunk-Q3LTMXUE.js.map} +0 -0
- /package/dist/{chunk-4D37LCBS.js.map → chunk-Q4L4Z2HT.js.map} +0 -0
- /package/dist/{chunk-PYWIHAVD.js.map → chunk-QE3DFWH4.js.map} +0 -0
- /package/dist/{chunk-LV7EU6HM.js.map → chunk-QG45DH5D.js.map} +0 -0
- /package/dist/{chunk-LZRZVIEJ.js.map → chunk-R23MN7HH.js.map} +0 -0
- /package/dist/{chunk-YE4RCEEJ.js.map → chunk-RCJAC2DY.js.map} +0 -0
- /package/dist/{chunk-ES3PWGS3.js.map → chunk-RLSFWA7K.js.map} +0 -0
- /package/dist/{chunk-JARRF5VX.js.map → chunk-RQ5NSJPA.js.map} +0 -0
- /package/dist/{chunk-Y5GQO6CR.js.map → chunk-RSQOWMZA.js.map} +0 -0
- /package/dist/{chunk-ZOH672S6.js.map → chunk-RVMDQYPX.js.map} +0 -0
- /package/dist/{chunk-RRC7F3QQ.js.map → chunk-SBGF4OKE.js.map} +0 -0
- /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
- /package/dist/{chunk-Z6T6VDDA.js.map → chunk-TBD7LIQL.js.map} +0 -0
- /package/dist/{chunk-FSTDWVXG.js.map → chunk-TDNLM4J4.js.map} +0 -0
- /package/dist/{chunk-ENUCJ6AO.js.map → chunk-TH3OK7RO.js.map} +0 -0
- /package/dist/{chunk-SVNH6P7O.js.map → chunk-TJ6FFFE7.js.map} +0 -0
- /package/dist/{chunk-NCO5NGBN.js.map → chunk-TSKD7WNX.js.map} +0 -0
- /package/dist/{chunk-MCKYNFPH.js.map → chunk-TT5UTVPK.js.map} +0 -0
- /package/dist/{chunk-5N47LB7X.js.map → chunk-TUIUO4SW.js.map} +0 -0
- /package/dist/{chunk-3QQHPRRB.js.map → chunk-TUYFP4BC.js.map} +0 -0
- /package/dist/{chunk-2XRFWXSA.js.map → chunk-UKBFKTC2.js.map} +0 -0
- /package/dist/{chunk-D7Y3UNWO.js.map → chunk-UMPAKBCB.js.map} +0 -0
- /package/dist/{chunk-SG2TDQEE.js.map → chunk-URMAEVZO.js.map} +0 -0
- /package/dist/{chunk-UCNIJ2IW.js.map → chunk-VK7MSQ3P.js.map} +0 -0
- /package/dist/{chunk-FESQ5TXU.js.map → chunk-WBGJRI33.js.map} +0 -0
- /package/dist/{chunk-CJQ77HO5.js.map → chunk-WFPUHD6K.js.map} +0 -0
- /package/dist/{chunk-4XNF52NU.js.map → chunk-WQYHEHBP.js.map} +0 -0
- /package/dist/{chunk-YO54MA7R.js.map → chunk-WR7T2ZLW.js.map} +0 -0
- /package/dist/{chunk-COS3TPHX.js.map → chunk-WX3TPPPN.js.map} +0 -0
- /package/dist/{chunk-VPF5A7CM.js.map → chunk-XKJO6WSY.js.map} +0 -0
- /package/dist/{chunk-JEUFRIYS.js.map → chunk-XLY23CY7.js.map} +0 -0
- /package/dist/{chunk-DWW5QSUF.js.map → chunk-XUTSNIUI.js.map} +0 -0
- /package/dist/{chunk-WRTG3KXU.js.map → chunk-YF6D3AXC.js.map} +0 -0
- /package/dist/{chunk-XAW5GL6B.js.map → chunk-YY5DKGMZ.js.map} +0 -0
- /package/dist/{chunk-MBSAHNMJ.js.map → chunk-Z3UJKRF7.js.map} +0 -0
- /package/dist/{chunk-BXUUKRMM.js.map → chunk-Z5RBTOP5.js.map} +0 -0
- /package/dist/{chunk-6PMJU7IU.js.map → chunk-ZBKDD3SZ.js.map} +0 -0
- /package/dist/{chunk-PHZOMTI6.js.map → chunk-ZCIRAP2S.js.map} +0 -0
- /package/dist/{chunk-OL3QHART.js.map → chunk-ZKXHDXYI.js.map} +0 -0
- /package/dist/{chunk-C7IOSSI4.js.map → chunk-ZLGWQGXI.js.map} +0 -0
- /package/dist/{chunk-MHZIOOT5.js.map → chunk-ZQMYNDSV.js.map} +0 -0
- /package/dist/{claim-2JNNC66N.js.map → claim-NHSZNDTG.js.map} +0 -0
- /package/dist/{client-YUVT3RZN.js.map → client-2CPUMURU.js.map} +0 -0
- /package/dist/{code-LOOWLRUL.js.map → code-CZ5W3JNM.js.map} +0 -0
- /package/dist/{companies-4NJU5TLU.js.map → companies-GF27MKDE.js.map} +0 -0
- /package/dist/{company-QOYWS4W6.js.map → company-I3QHEINQ.js.map} +0 -0
- /package/dist/{complete-7FX2K3PV.js.map → complete-6Q6I6D4O.js.map} +0 -0
- /package/dist/{config-AOF6ACIP.js.map → config-EW6S72KY.js.map} +0 -0
- /package/dist/{connect-H2HSPMRT.js.map → connect-V6JRDBQ5.js.map} +0 -0
- /package/dist/{content-NCW5IJFR.js.map → content-LNIBJKNQ.js.map} +0 -0
- /package/dist/{conversation-4M7YMQOL.js.map → conversation-MCR4WBGJ.js.map} +0 -0
- /package/dist/{conversion-report-G5JMZNYV.js.map → conversion-report-CNNF2KNN.js.map} +0 -0
- /package/dist/{conversion-upload-command-43PZFYT7.js.map → conversion-upload-command-GW2QGOBS.js.map} +0 -0
- /package/dist/{conversion-writes-JQQCCGPO.js.map → conversion-writes-MIW2DW7Q.js.map} +0 -0
- /package/dist/{conversions-Z7FW7CFT.js.map → conversions-6OKS45FG.js.map} +0 -0
- /package/dist/{conversions-UO4CQNF6.js.map → conversions-WRICMKDT.js.map} +0 -0
- /package/dist/{copy-writes-ONVSSBLJ.js.map → copy-writes-5DO6N5V7.js.map} +0 -0
- /package/dist/{countries-Q6TA42P7.js.map → countries-FPJKZDZJ.js.map} +0 -0
- /package/dist/{create-QVY6DSYM.js.map → create-BGOY6OUH.js.map} +0 -0
- /package/dist/{create-4SFO4AQZ.js.map → create-F4AAMFZ5.js.map} +0 -0
- /package/dist/{create-GJ4ZMY3A.js.map → create-QSKVDFI5.js.map} +0 -0
- /package/dist/{create-D5MA64KL.js.map → create-TI2ZQCEW.js.map} +0 -0
- /package/dist/{creatives-R3XILT6D.js.map → creatives-AF2ZBRRU.js.map} +0 -0
- /package/dist/{creatives-ADH6HCCA.js.map → creatives-E3ZTGEC7.js.map} +0 -0
- /package/dist/{creatives-S3EZCXUT.js.map → creatives-ISMLBSRR.js.map} +0 -0
- /package/dist/{credentials-EQRB6XGZ.js.map → credentials-X3E4TJGW.js.map} +0 -0
- /package/dist/{critique-4YRRUNAU.js.map → critique-75HCFZD6.js.map} +0 -0
- /package/dist/{critique-JCU2ATT6.js.map → critique-OOFO5KNR.js.map} +0 -0
- /package/dist/{crm-AF6XOOSF.js.map → crm-66P5WILT.js.map} +0 -0
- /package/dist/{crm-LSMFGR6R.js.map → crm-NI7JZHHG.js.map} +0 -0
- /package/dist/{crop-RDP7YCNV.js.map → crop-F2ZMKE4T.js.map} +0 -0
- /package/dist/{currency-4KNOOZUU.js.map → currency-BJYQ7KWA.js.map} +0 -0
- /package/dist/{custom-conversions-7MZFTHUM.js.map → custom-conversions-J56EGUH3.js.map} +0 -0
- /package/dist/{customers-MM3VIZNA.js.map → customers-IAZLBVL4.js.map} +0 -0
- /package/dist/{decide-OPCCKAIT.js.map → decide-KXEEEL5X.js.map} +0 -0
- /package/dist/{delete-CO2YBPTI.js.map → delete-3JM2CRGW.js.map} +0 -0
- /package/dist/{delete-GKQTDOZF.js.map → delete-7LUKYRYI.js.map} +0 -0
- /package/dist/{delete-D7HTW32U.js.map → delete-DKY2U7DN.js.map} +0 -0
- /package/dist/{delete-JUPBYK3H.js.map → delete-JEHALEDU.js.map} +0 -0
- /package/dist/{delete-KZFI235B.js.map → delete-K77BZNI7.js.map} +0 -0
- /package/dist/{delete-R3LXCKA4.js.map → delete-TT5F4KOF.js.map} +0 -0
- /package/dist/{demographics-DK5JDY6M.js.map → demographics-2WIAENET.js.map} +0 -0
- /package/dist/{describe-GIG46DT5.js.map → describe-PD3T4TSU.js.map} +0 -0
- /package/dist/{describe-537PPL7P.js.map → describe-QNULQ554.js.map} +0 -0
- /package/dist/{dimensions-UXK7DMTF.js.map → dimensions-CITRMPQF.js.map} +0 -0
- /package/dist/{discard-DEJOM62Y.js.map → discard-RL4HPJVG.js.map} +0 -0
- /package/dist/{discover-MKFDG6NK.js.map → discover-BLUJYLBT.js.map} +0 -0
- /package/dist/{discover-U6YLVLTF.js.map → discover-K743TWWV.js.map} +0 -0
- /package/dist/{domain-MBOMV3CQ.js.map → domain-DVUS4W6Q.js.map} +0 -0
- /package/dist/{download-PRBLR6IQ.js.map → download-AIWQ4VO5.js.map} +0 -0
- /package/dist/{download-KN2I55SA.js.map → download-N4KWWNJ5.js.map} +0 -0
- /package/dist/{draft-UMPCOCP6.js.map → draft-3LGUY4GD.js.map} +0 -0
- /package/dist/{draft-H5RVDTFD.js.map → draft-4ZK3K4EN.js.map} +0 -0
- /package/dist/{draft-XEUHTUMR.js.map → draft-D5D6HCPA.js.map} +0 -0
- /package/dist/{draft-HZ5T6NOI.js.map → draft-EV5GJXOU.js.map} +0 -0
- /package/dist/{draft-CGPVRRKC.js.map → draft-EYX33J4Y.js.map} +0 -0
- /package/dist/{draft-BMNBT37B.js.map → draft-MJYHWHEU.js.map} +0 -0
- /package/dist/{draft-FIEZWBIX.js.map → draft-WIQ75STJ.js.map} +0 -0
- /package/dist/{draft-F74OIT5O.js.map → draft-WM3EJ622.js.map} +0 -0
- /package/dist/{env-VBSATLEF.js.map → env-ZCVKU62Y.js.map} +0 -0
- /package/dist/{experiment-2XR6MBE2.js.map → experiment-YPN3PKI5.js.map} +0 -0
- /package/dist/{experiments-YNJZCMQM.js.map → experiments-PL7JBQ47.js.map} +0 -0
- /package/dist/{export-YCLJG5YP.js.map → export-X7LIQORT.js.map} +0 -0
- /package/dist/{extract-E3CMEN5U.js.map → extract-ADBKYCMK.js.map} +0 -0
- /package/dist/{facets-Y4OACBMC.js.map → facets-HH2O62KL.js.map} +0 -0
- /package/dist/{favorites-NSQX6HKB.js.map → favorites-DH7FJY5B.js.map} +0 -0
- /package/dist/{feed-TKMMYAEH.js.map → feed-IN5DQ6QV.js.map} +0 -0
- /package/dist/{fetch-EHP2FK6Y.js.map → fetch-POVD4UV2.js.map} +0 -0
- /package/dist/{find-I7U3THF3.js.map → find-YKH5NLDV.js.map} +0 -0
- /package/dist/{fit-IHUUFCGI.js.map → fit-TC4AACBU.js.map} +0 -0
- /package/dist/{flows-WSCIMXQX.js.map → flows-AYLK5KRV.js.map} +0 -0
- /package/dist/{follow-A46RAJEX.js.map → follow-NYSYOMPZ.js.map} +0 -0
- /package/dist/{follow-competitors-VU2L3KWF.js.map → follow-competitors-XK7AHXV5.js.map} +0 -0
- /package/dist/{following-UOUNSU6P.js.map → following-5NSY62IF.js.map} +0 -0
- /package/dist/{fonts-3QW7EDHE.js.map → fonts-B4GG2ZVY.js.map} +0 -0
- /package/dist/{forecast-2WVHMSZP.js.map → forecast-SHLUTMQQ.js.map} +0 -0
- /package/dist/{forecast-F25LSCM5.js.map → forecast-XKJ6SCJ5.js.map} +0 -0
- /package/dist/{funding-2VROIMLS.js.map → funding-JC6MPG5T.js.map} +0 -0
- /package/dist/{funnel-35DYDBJH.js.map → funnel-NOQ5377L.js.map} +0 -0
- /package/dist/{ga4-ULHKTF23.js.map → ga4-NOWI2YV7.js.map} +0 -0
- /package/dist/{generate-Z7AROAES.js.map → generate-T4CMEBFU.js.map} +0 -0
- /package/dist/{get-4CAX33L2.js.map → get-3GC5BSEH.js.map} +0 -0
- /package/dist/{get-ZISAHMTQ.js.map → get-KWERYDK2.js.map} +0 -0
- /package/dist/{get-5E4YJKPO.js.map → get-MTJGUYD7.js.map} +0 -0
- /package/dist/{get-IF7KHMSI.js.map → get-O5QJBI3A.js.map} +0 -0
- /package/dist/{get-ABQZJ2VQ.js.map → get-P6HXXYPJ.js.map} +0 -0
- /package/dist/{get-N7X75ZJO.js.map → get-SKQXAUCK.js.map} +0 -0
- /package/dist/{get-ASAW6TVF.js.map → get-VEXFF7PK.js.map} +0 -0
- /package/dist/{get-GXVAJZHM.js.map → get-VLJVPTC3.js.map} +0 -0
- /package/dist/{gif-QLNWBFAH.js.map → gif-K4Z7LK5W.js.map} +0 -0
- /package/dist/{google-M6XR7YGT.js.map → google-OCEWR2NJ.js.map} +0 -0
- /package/dist/{google-FDR55RRD.js.map → google-TC2ZJD73.js.map} +0 -0
- /package/dist/{google-ads-NCSMNNND.js.map → google-ads-UQPFXZHG.js.map} +0 -0
- /package/dist/{group-XVDH2ONO.js.map → group-GRWRPBFN.js.map} +0 -0
- /package/dist/{group-HAQM6P7M.js.map → group-SP4TNI63.js.map} +0 -0
- /package/dist/{gsc-GQFI6I2D.js.map → gsc-UXGYY3GJ.js.map} +0 -0
- /package/dist/{history-FGQ2H7XH.js.map → history-AGDBEDLW.js.map} +0 -0
- /package/dist/{history-VJ254UXF.js.map → history-BD4RYCIO.js.map} +0 -0
- /package/dist/{history-LTOFKBMJ.js.map → history-LTM7KP34.js.map} +0 -0
- /package/dist/{hubspot-W2NM75YK.js.map → hubspot-WJG45M2B.js.map} +0 -0
- /package/dist/{icon-F7AOOTFI.js.map → icon-V3Y4YDOJ.js.map} +0 -0
- /package/dist/{ideas-54KFDNDM.js.map → ideas-MG7U6TOP.js.map} +0 -0
- /package/dist/{images-JOEVCCP6.js.map → images-FM7FHPBS.js.map} +0 -0
- /package/dist/{improve-LIKOER3S.js.map → improve-TXA435K6.js.map} +0 -0
- /package/dist/{ingest-VCIH5QDR.js.map → ingest-HYCOCLKP.js.map} +0 -0
- /package/dist/{ingest-6R7XUL46.js.map → ingest-RY5HTGWI.js.map} +0 -0
- /package/dist/{insights-UXUUOQB7.js.map → insights-2G2E27IB.js.map} +0 -0
- /package/dist/{insights-QNE6XCBA.js.map → insights-KLTFZPDU.js.map} +0 -0
- /package/dist/{inspect-MGOR77FP.js.map → inspect-MBIVGHVX.js.map} +0 -0
- /package/dist/{inspiration-VXNGKAJV.js.map → inspiration-K7L63RAJ.js.map} +0 -0
- /package/dist/{instant-experiences-MT2XMQNH.js.map → instant-experiences-E7U6CJFG.js.map} +0 -0
- /package/dist/{intent-FZWPRUCI.js.map → intent-ODOSNQHM.js.map} +0 -0
- /package/dist/{job-TS34W4IU.js.map → job-IPZGUL7C.js.map} +0 -0
- /package/dist/{job-create-FXXDR2EE.js.map → job-create-DHDXT6JK.js.map} +0 -0
- /package/dist/{job-status-R2H4HNC5.js.map → job-status-LCK6OAML.js.map} +0 -0
- /package/dist/{keep-YSU3XMW3.js.map → keep-WRQW625H.js.map} +0 -0
- /package/dist/{keyword-gap-4ECYPWXJ.js.map → keyword-gap-2CBACDPA.js.map} +0 -0
- /package/dist/{keyword-metrics-SBIRN5KC.js.map → keyword-metrics-V3DYPKHT.js.map} +0 -0
- /package/dist/{keywords-for-site-TLNPJHT2.js.map → keywords-for-site-3DNC73AI.js.map} +0 -0
- /package/dist/{knowledge-L3VLOVLG.js.map → knowledge-N75ATS7T.js.map} +0 -0
- /package/dist/{landing-ZICSVWKF.js.map → landing-76YHTTX7.js.map} +0 -0
- /package/dist/{landings-XTPNPTHN.js.map → landings-23OMBXML.js.map} +0 -0
- /package/dist/{languages-VNZQ5USL.js.map → languages-2PRQ5OQ3.js.map} +0 -0
- /package/dist/{languages-DIKRMAYE.js.map → languages-A5Y7DKLJ.js.map} +0 -0
- /package/dist/{launches-5R7EUONQ.js.map → launches-C3ZQH4VF.js.map} +0 -0
- /package/dist/{layerize-Q2QWDARG.js.map → layerize-KH5MUTCH.js.map} +0 -0
- /package/dist/{lead-routes-IXUCGINI.js.map → lead-routes-IREDNU24.js.map} +0 -0
- /package/dist/{leads-JUQFNK55.js.map → leads-EVBUUZZS.js.map} +0 -0
- /package/dist/{leads-UVG6VYAC.js.map → leads-NEQAJ5F7.js.map} +0 -0
- /package/dist/{learn-A6BT25LQ.js.map → learn-KEMLEYW4.js.map} +0 -0
- /package/dist/{library-G5YAFLTR.js.map → library-3Q24O4XX.js.map} +0 -0
- /package/dist/{lighthouse-BCBV2XGP.js.map → lighthouse-H6XEFV6H.js.map} +0 -0
- /package/dist/{line-item-writes-NW7A6HNH.js.map → line-item-writes-3LJTZRR3.js.map} +0 -0
- /package/dist/{line-items-OAG3QMDE.js.map → line-items-S2JDVEND.js.map} +0 -0
- /package/dist/{link-4VJ7FSOA.js.map → link-GSZEQXLA.js.map} +0 -0
- /package/dist/{linkedin-CKOWKD4M.js.map → linkedin-4TSXJIRQ.js.map} +0 -0
- /package/dist/{linkedin-person-C22IDK7S.js.map → linkedin-person-JL4RZHEP.js.map} +0 -0
- /package/dist/{list-HWNHRWGB.js.map → list-23TETYHO.js.map} +0 -0
- /package/dist/{list-6YW4I4VG.js.map → list-5DUXP3Y6.js.map} +0 -0
- /package/dist/{list-4SDJZVOL.js.map → list-6N7C7AR4.js.map} +0 -0
- /package/dist/{list-GS42LK5C.js.map → list-EUN2X7SS.js.map} +0 -0
- /package/dist/{list-CDDXHMJQ.js.map → list-KZS624O5.js.map} +0 -0
- /package/dist/{list-ZORO7PFP.js.map → list-LU6N32Y7.js.map} +0 -0
- /package/dist/{list-2DKLO6AO.js.map → list-OQFCWNLE.js.map} +0 -0
- /package/dist/{list-QSBEYU45.js.map → list-RTQVZYIC.js.map} +0 -0
- /package/dist/{list-ZFGOONWL.js.map → list-YLMKD7GM.js.map} +0 -0
- /package/dist/{locations-4RDUHKVR.js.map → locations-C4LIWY3P.js.map} +0 -0
- /package/dist/{locations-HATR6PSC.js.map → locations-HC5FYEYX.js.map} +0 -0
- /package/dist/{log-OSJHKHPV.js.map → log-ATW73US2.js.map} +0 -0
- /package/dist/{logo-ABO4HJRG.js.map → logo-2FXE3XAS.js.map} +0 -0
- /package/dist/{lookup-SPNT3W3W.js.map → lookup-JUK4JM52.js.map} +0 -0
- /package/dist/{map-PMGZDXAN.js.map → map-MQ7GHCF4.js.map} +0 -0
- /package/dist/{mcp-MOOOTRYG.js.map → mcp-3NTRVTKU.js.map} +0 -0
- /package/dist/{media-GZKW2PZB.js.map → media-4XW3L7E3.js.map} +0 -0
- /package/dist/{media-CIJW2Q3I.js.map → media-E5PMHJ2K.js.map} +0 -0
- /package/dist/{media-sources-5OYCKQ5J.js.map → media-sources-XAHG65FO.js.map} +0 -0
- /package/dist/{members-QG5IP5HM.js.map → members-64SFCBT5.js.map} +0 -0
- /package/dist/{meme-BPWX7YQH.js.map → meme-UJBWLEMA.js.map} +0 -0
- /package/dist/{meta-KVOSCSPJ.js.map → meta-3PVMVKDP.js.map} +0 -0
- /package/dist/{metrics-R4YS2JL6.js.map → metrics-EJ7FSBSI.js.map} +0 -0
- /package/dist/{models-RJMZV5SH.js.map → models-RUAIOX4K.js.map} +0 -0
- /package/dist/{normalize-LATTXSL3.js.map → normalize-4RHSWNML.js.map} +0 -0
- /package/dist/{normalize-NMNOJ6Q5.js.map → normalize-X6FMLNQW.js.map} +0 -0
- /package/dist/{options-KALH5TB7.js.map → options-ERT4OVWB.js.map} +0 -0
- /package/dist/{organization-AGCF7DUJ.js.map → organization-CXMLBGZY.js.map} +0 -0
- /package/dist/{output-34QMC3OU.js.map → output-4CMFKHKV.js.map} +0 -0
- /package/dist/{page-UDF3LJHP.js.map → page-U434ALBN.js.map} +0 -0
- /package/dist/{page-photos-FCBW5UZS.js.map → page-photos-OYPS2GP2.js.map} +0 -0
- /package/dist/{pages-5W5G4MRB.js.map → pages-EYX26EXP.js.map} +0 -0
- /package/dist/{performance-SITVZQWX.js.map → performance-OKWF6BPE.js.map} +0 -0
- /package/dist/{performance-YNXPUSGJ.js.map → performance-SGU7XX4P.js.map} +0 -0
- /package/dist/{pinterest-IABDXLF5.js.map → pinterest-3MSPSGJC.js.map} +0 -0
- /package/dist/{pixels-4QAWLSEL.js.map → pixels-X5PK5IAF.js.map} +0 -0
- /package/dist/{pixels-TYJVE377.js.map → pixels-XC2RXJRH.js.map} +0 -0
- /package/dist/{plan-I6EFL7RC.js.map → plan-K2ZIMLQU.js.map} +0 -0
- /package/dist/{posts-SXQSLOFV.js.map → posts-BH2TE4U3.js.map} +0 -0
- /package/dist/{preview-7Y5LE24E.js.map → preview-LA3P4TAF.js.map} +0 -0
- /package/dist/{profile-R5VPOOJU.js.map → profile-VKYAKK5B.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-NAHPJ3VD.js.map → promoted-tweet-writes-2O75KPVF.js.map} +0 -0
- /package/dist/{promoted-tweets-2XQ4MWAC.js.map → promoted-tweets-6TF3VYJ2.js.map} +0 -0
- /package/dist/{properties-2D2BIDGC.js.map → properties-NAEEQRLQ.js.map} +0 -0
- /package/dist/{publish-UITYPUBD.js.map → publish-BK4VU2I7.js.map} +0 -0
- /package/dist/{query-LB5H7IRK.js.map → query-O76WFU6D.js.map} +0 -0
- /package/dist/{query-RE7NB2BK.js.map → query-XJXFKIRF.js.map} +0 -0
- /package/dist/{query-JOYRNM4O.js.map → query-ZGA3F647.js.map} +0 -0
- /package/dist/{questionnaire-U767HYDE.js.map → questionnaire-GEQF5OAQ.js.map} +0 -0
- /package/dist/{read-3TCDDALC.js.map → read-HOMAUJS4.js.map} +0 -0
- /package/dist/{reddit-6XIARCTX.js.map → reddit-HVLOXPPU.js.map} +0 -0
- /package/dist/{refresh-GIB6QQZS.js.map → refresh-BOYLAG34.js.map} +0 -0
- /package/dist/{refresh-6UCN7PDX.js.map → refresh-H5RGVPYJ.js.map} +0 -0
- /package/dist/{release-IN65L23O.js.map → release-DVS4CIU6.js.map} +0 -0
- /package/dist/{relevant-pages-W7IM6YQW.js.map → relevant-pages-ILNQC3F4.js.map} +0 -0
- /package/dist/{remove-LZQHDFZF.js.map → remove-DFTGSOL5.js.map} +0 -0
- /package/dist/{remove-X3XWVE2M.js.map → remove-K4SJF2GG.js.map} +0 -0
- /package/dist/{reopen-RMMQ55CH.js.map → reopen-CGWLLKSF.js.map} +0 -0
- /package/dist/{research-W5KUOBXZ.js.map → research-MTK6ZRR3.js.map} +0 -0
- /package/dist/{reset-VQNKXFAF.js.map → reset-AUBXKPPG.js.map} +0 -0
- /package/dist/{reset-MUWXTLIB.js.map → reset-XDFY6COF.js.map} +0 -0
- /package/dist/{resolve-DMGWLMTC.js.map → resolve-MKMJ6R2P.js.map} +0 -0
- /package/dist/{retry-ZQUJPKQH.js.map → retry-CBMIRIAN.js.map} +0 -0
- /package/dist/{retry-YI4YLYTQ.js.map → retry-GNTB73JH.js.map} +0 -0
- /package/dist/{retry-failed-PEAUXGNT.js.map → retry-failed-XOBX3GC3.js.map} +0 -0
- /package/dist/{revenue-6YZAOMF6.js.map → revenue-HMGOVX4D.js.map} +0 -0
- /package/dist/{rule-writes-G25O5JZS.js.map → rule-writes-C46MBD32.js.map} +0 -0
- /package/dist/{rules-KSOAKEI3.js.map → rules-6FUE3OPU.js.map} +0 -0
- /package/dist/{rules-FHVZEN4D.js.map → rules-AQWK62HZ.js.map} +0 -0
- /package/dist/{rules-add-7X46VTIJ.js.map → rules-add-IFBUKD3Q.js.map} +0 -0
- /package/dist/{run-YORKHK6S.js.map → run-AIK22EVA.js.map} +0 -0
- /package/dist/{run-TA6HYFKZ.js.map → run-UTCDGXL6.js.map} +0 -0
- /package/dist/{schedule-TNF6M6UD.js.map → schedule-AVK2VICC.js.map} +0 -0
- /package/dist/{schedule-TMTLYULK.js.map → schedule-MOSVC36T.js.map} +0 -0
- /package/dist/{scheduled-agents-TS3WLRCM.js.map → scheduled-agents-AXZH5RPS.js.map} +0 -0
- /package/dist/{schema-2YQAQVON.js.map → schema-BYFKNXCP.js.map} +0 -0
- /package/dist/{schema-6S5ZEPBS.js.map → schema-WHSDTY5R.js.map} +0 -0
- /package/dist/{scrape-FDBYU3TU.js.map → scrape-23YO56SP.js.map} +0 -0
- /package/dist/{screenshot-QSRWL4J6.js.map → screenshot-HNI4B3UC.js.map} +0 -0
- /package/dist/{search-BOCQFUM3.js.map → search-5442DCYM.js.map} +0 -0
- /package/dist/{search-PYLNVZXI.js.map → search-BTAXTYED.js.map} +0 -0
- /package/dist/{search-GEXDRTAQ.js.map → search-JQ7CDJWO.js.map} +0 -0
- /package/dist/{search-LTUUAGZG.js.map → search-UZWWXBEZ.js.map} +0 -0
- /package/dist/{search-CENPR7GA.js.map → search-YA5WLCJ3.js.map} +0 -0
- /package/dist/{search-LFTFNDMC.js.map → search-YTEHFCU4.js.map} +0 -0
- /package/dist/{search-copy-RLRRR3LB.js.map → search-copy-Z7DVNT44.js.map} +0 -0
- /package/dist/{seeds-E2GLHJ2T.js.map → seeds-BFXQKJP4.js.map} +0 -0
- /package/dist/{sends-NBTGBZT7.js.map → sends-25OLZQJ5.js.map} +0 -0
- /package/dist/{sequences-UOIHUOD3.js.map → sequences-J7HKMCZK.js.map} +0 -0
- /package/dist/{setup-links-6ANVKZCE.js.map → setup-links-MWWNI4FI.js.map} +0 -0
- /package/dist/{shared-IMDHTVSW.js.map → shared-JNIGEH2W.js.map} +0 -0
- /package/dist/{shopify-6ISTKZCA.js.map → shopify-3MO725IQ.js.map} +0 -0
- /package/dist/{site-OIV55MGO.js.map → site-FZCH64VV.js.map} +0 -0
- /package/dist/{sitemaps-VYLDUI4L.js.map → sitemaps-BEQUUVF2.js.map} +0 -0
- /package/dist/{sites-HM7ZCGCZ.js.map → sites-XMTXNK6S.js.map} +0 -0
- /package/dist/{skills-FBIVWINH.js.map → skills-HKYYWQ2P.js.map} +0 -0
- /package/dist/{sources-GLJWZFHZ.js.map → sources-HUD22QOK.js.map} +0 -0
- /package/dist/{sources-5L4S5BQV.js.map → sources-UMJF4LTK.js.map} +0 -0
- /package/dist/{stats-2NLNQBRY.js.map → stats-NI777LK6.js.map} +0 -0
- /package/dist/{status-TD7ISXC5.js.map → status-2HMHVFME.js.map} +0 -0
- /package/dist/{sticker-4NKFAGEK.js.map → sticker-2SDWKGXB.js.map} +0 -0
- /package/dist/{stock-XOXZGGU3.js.map → stock-THW6RFE5.js.map} +0 -0
- /package/dist/{studies-C5IINK5Y.js.map → studies-E6XXH4RQ.js.map} +0 -0
- /package/dist/{studio-IDNM42JP.js.map → studio-KIIZ6GDK.js.map} +0 -0
- /package/dist/{study-writes-GJXLMM3D.js.map → study-writes-4JXFQSGC.js.map} +0 -0
- /package/dist/{suggest-Z553OSYW.js.map → suggest-3JDI3QAM.js.map} +0 -0
- /package/dist/{sync-UBOHNOXB.js.map → sync-6S6SYYJT.js.map} +0 -0
- /package/dist/{sync-CIRDY55O.js.map → sync-BBZXPCZ7.js.map} +0 -0
- /package/dist/{sync-PVIFUXX3.js.map → sync-PTTAFAZU.js.map} +0 -0
- /package/dist/{sync-definition-7NBT6LTK.js.map → sync-definition-G3XRLP74.js.map} +0 -0
- /package/dist/{tag-22TFBGDG.js.map → tag-E5ZUMD2B.js.map} +0 -0
- /package/dist/{tag-manager-QLZHU6NG.js.map → tag-manager-IHQYDUX3.js.map} +0 -0
- /package/dist/{tags-T4EN6XYE.js.map → tags-D3H7FZIG.js.map} +0 -0
- /package/dist/{tags-XY6R2VJ6.js.map → tags-EEP2WOHL.js.map} +0 -0
- /package/dist/{tags-DG3XQ4SF.js.map → tags-HP4YJR36.js.map} +0 -0
- /package/dist/{tags-3HB7N5WB.js.map → tags-INMEQWNK.js.map} +0 -0
- /package/dist/{tags-T6THTVNP.js.map → tags-KMMY3HB4.js.map} +0 -0
- /package/dist/{targeting-GNEBULXU.js.map → targeting-ECBOAQG7.js.map} +0 -0
- /package/dist/{targeting-constants-GR6BVM2H.js.map → targeting-constants-CGNYPDQY.js.map} +0 -0
- /package/dist/{targeting-criteria-CL472KJO.js.map → targeting-criteria-L4VB7RBH.js.map} +0 -0
- /package/dist/{targets-7AQMSO6H.js.map → targets-T22E54UC.js.map} +0 -0
- /package/dist/{terms-LG7FYQOG.js.map → terms-QVIZ2IAN.js.map} +0 -0
- /package/dist/{testimonials-4QWVSEPU.js.map → testimonials-MKIDUBZH.js.map} +0 -0
- /package/dist/{themes-ZTM4OVGK.js.map → themes-R6CCC3UX.js.map} +0 -0
- /package/dist/{top-companies-PMFYOAFK.js.map → top-companies-WV3NYUJR.js.map} +0 -0
- /package/dist/{transcript-YWFYNFWX.js.map → transcript-DWZXMBGW.js.map} +0 -0
- /package/dist/{triggers-JKXISN45.js.map → triggers-JCOYDORO.js.map} +0 -0
- /package/dist/{tweets-IF5FFFTH.js.map → tweets-TTY4UMBC.js.map} +0 -0
- /package/dist/{unfollow-CDUOZWM7.js.map → unfollow-E2ZSYWUK.js.map} +0 -0
- /package/dist/{unlink-IUAFDLBT.js.map → unlink-XWPK6C4B.js.map} +0 -0
- /package/dist/{unstage-ZYT5RNLK.js.map → unstage-RAFDCOHK.js.map} +0 -0
- /package/dist/{unstage-OVOZE6DA.js.map → unstage-XVCM35JX.js.map} +0 -0
- /package/dist/{update-QAWK3O7L.js.map → update-3LVVYA4K.js.map} +0 -0
- /package/dist/{update-O22DAZVX.js.map → update-6J4YFUWR.js.map} +0 -0
- /package/dist/{update-74VME6PN.js.map → update-P7XEX3CH.js.map} +0 -0
- /package/dist/{update-Q3WJ3DQN.js.map → update-RUX5WSOT.js.map} +0 -0
- /package/dist/{update-23Q4T2J5.js.map → update-USQX4QDE.js.map} +0 -0
- /package/dist/{upload-WASRCKS4.js.map → upload-B2DEP22E.js.map} +0 -0
- /package/dist/{upload-EAEILUQB.js.map → upload-NV2KLKEL.js.map} +0 -0
- /package/dist/{upscale-HB6L6SZG.js.map → upscale-4COZN4VQ.js.map} +0 -0
- /package/dist/{url-options-M7RX2TD4.js.map → url-options-JXKKTY74.js.map} +0 -0
- /package/dist/{url-params-E5ON6W2N.js.map → url-params-5XD4ZL3B.js.map} +0 -0
- /package/dist/{use-HGX7ZRH5.js.map → use-SORHLK2I.js.map} +0 -0
- /package/dist/{variant-O7LXOA2E.js.map → variant-UAMWGBXF.js.map} +0 -0
- /package/dist/{videos-SS2Y6FJF.js.map → videos-UR4VDDJV.js.map} +0 -0
- /package/dist/{view-ED636LWD.js.map → view-DOSL3QK3.js.map} +0 -0
- /package/dist/{viewer-check-CWS6OVM7.js.map → viewer-check-VLODHBXL.js.map} +0 -0
- /package/dist/{winners-ZG5SHNBS.js.map → winners-KZ7SEXZY.js.map} +0 -0
- /package/dist/{winning-ads-FXTP4PWZ.js.map → winning-ads-H2LM75L5.js.map} +0 -0
- /package/dist/{write-commands-UK6MKGHI.js.map → write-commands-2AKHGZ2J.js.map} +0 -0
- /package/dist/{write-commands-AIWR7NBO.js.map → write-commands-BKB6QICK.js.map} +0 -0
- /package/dist/{write-commands-5YVQKO7E.js.map → write-commands-FCQNHFFN.js.map} +0 -0
- /package/dist/{write-commands-W3UN6F4Y.js.map → write-commands-VAMGJXDX.js.map} +0 -0
- /package/dist/{x-KEMAY75C.js.map → x-3KONMR4M.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/research/customers.ts","../../api/src/verbatim.ts"],"sourcesContent":["import { mkdir, readdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type {\n ResearchFetchRequest,\n ResearchFetchResponse,\n ResearchRedditItem,\n TestimonialsSearchRequest,\n} from \"@baker/api\";\nimport { findVerbatim, foldForComparison } from \"@baker/api/verbatim\";\nimport { CUSTOMER_INSIGHTS_MODEL } from \"@baker/canvas-contract\";\nimport { defineCommand } from \"citty\";\nimport { parse as parseYaml } from \"yaml\";\nimport { z } from \"zod\";\nimport { apiGet, apiPost } from \"../../client.ts\";\nimport { askAboutText, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { findWorkspaceRoot } from \"../canvas/normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"../canvas/unbilled-spend.ts\";\nimport { findSubreddits, searchReddit } from \"./reddit.ts\";\n\n/**\n * `baker research customers` — what real customers say, kept only where they said it.\n *\n * Ads start from a customer's own words. An agent asked for those words writes plausible ones,\n * and a plausible quote is the one thing an ad must never carry. So nothing here is written by\n * the agent or the model: the model only POINTS at a span of a fetched text, and the code keeps\n * that span only if it is in that text as written (`keepVerbatim`) and the model judged the text a\n * buyer talking about this company (`keepOnTopic`): a real quote from the wrong conversation is\n * as useless to an ad as an invented one. One Knowledge file per insight, `status: observed`.\n */\n\nexport const INSIGHT_TYPES = [\n \"accommodation\",\n \"failed_solution\",\n \"nearly_didnt\",\n \"word\",\n \"moment\",\n \"pain\",\n \"objection\",\n \"desire\",\n \"proof\",\n \"other\",\n] as const;\nexport type InsightType = (typeof INSIGHT_TYPES)[number];\n\nexport const FORCES = [\"push\", \"pull\", \"anxiety\", \"habit\"] as const;\nexport type Force = (typeof FORCES)[number];\n\nexport type SourceKind = \"review\" | \"testimonial\" | \"reddit\" | \"web\";\n\n/**\n * The model's verdict on a span's text. Verbatim is not enough: a real quote from a thread about\n * a mobile game, or from someone the product acts against, is still not this company's customer\n * talking (BAKER-2148, BAKER-2495). on_topic: a buyer or user of this company, its product, its\n * category or a named competitor, about the problem it solves. off_topic: about something else.\n * not_a_buyer: on the subject, but the speaker is not a buyer (someone the product acts against,\n * a seller or the company replying, a marketer).\n */\nexport const FITS = [\"on_topic\", \"off_topic\", \"not_a_buyer\"] as const;\nexport type Fit = (typeof FITS)[number];\n\n/** One text a customer wrote, as the model is shown it and the gate checks it. */\nexport type CustomerSource = {\n /** What the insight cites: a URL, or `testimonials:<id>`. */\n ref: string;\n kind: SourceKind;\n text: string;\n /** One line: who said it, where. */\n context: string;\n /** When it was said, YYYY-MM-DD, when the source knows. */\n saidOn?: string;\n};\n\n/** What the model points at: a span of source number `source` (1-based, as the prompt numbers them). */\nexport type Candidate = {\n source: number;\n quote: string;\n type: InsightType;\n force?: Force;\n persona?: string;\n fit?: Fit;\n /** The model's one-line reason for `fit`. */\n why?: string;\n};\n\n/** A candidate whose quote is in its source as written. */\nexport type VerbatimInsight = Omit<Candidate, \"source\"> & { source: CustomerSource };\n\nexport const MAX_QUOTE_CHARS = 280;\n\n/**\n * The gate: a candidate survives only if its quote is in the source it cites, and what is kept\n * is the source's own spelling of that span, not the model's copy of it. Everything else (a\n * paraphrase, a quote cited to the wrong text, a source that does not exist) is dropped and\n * counted, never repaired; a span longer than MAX_QUOTE_CHARS is counted apart. Pure.\n */\nexport function keepVerbatim(\n candidates: readonly Candidate[],\n sources: readonly CustomerSource[],\n): { kept: VerbatimInsight[]; dropped: number; tooLong: number } {\n const kept: VerbatimInsight[] = [];\n let dropped = 0;\n let tooLong = 0;\n for (const { source: index, ...rest } of candidates) {\n const source = sources[index - 1];\n const quote = source ? findVerbatim(rest.quote, source.text) : null;\n if (!source || !quote) {\n dropped++;\n continue;\n }\n if (quote.length > MAX_QUOTE_CHARS) {\n tooLong++;\n continue;\n }\n kept.push({ ...rest, quote, source });\n }\n return { kept, dropped, tooLong };\n}\n\n/**\n * The second gate: a verbatim span is kept only when the model judged its text on topic AND\n * said why. A missing verdict or reason is off topic, never a pass, so a model that skips the\n * question writes nothing. Off-topic and wrong-speaker spans are counted apart. Pure.\n */\nexport function keepOnTopic(insights: readonly VerbatimInsight[]): {\n kept: VerbatimInsight[];\n offTopic: number;\n notABuyer: number;\n} {\n const kept: VerbatimInsight[] = [];\n let offTopic = 0;\n let notABuyer = 0;\n for (const insight of insights) {\n if (insight.fit === \"not_a_buyer\") notABuyer++;\n else if (insight.fit === \"on_topic\" && insight.why?.trim()) kept.push(insight);\n else offTopic++;\n }\n return { kept, offTopic, notABuyer };\n}\n\nconst SLUG_WORDS = 6;\n\n/** Lowercase ASCII words, accents dropped. */\nfunction asciiWords(text: string): string[] {\n return text\n .normalize(\"NFKD\")\n .replace(/\\p{M}/gu, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .trim()\n .split(\" \")\n .filter(Boolean);\n}\n\n/** The file name an insight gets: its type, then the first words of its quote, kebab-case ASCII. Pure. */\nfunction insightSlug(type: InsightType, quote: string): string {\n return [type.replace(/_/g, \"-\"), ...asciiWords(quote).slice(0, SLUG_WORDS)].join(\"-\");\n}\n\nexport type PlannedInsight = { id: string; insight: VerbatimInsight };\n\n/** An insight on file, as the planner compares it. `source` is absent on a file that names none. */\nexport type FiledInsight = { id: string; quote: string; source?: string };\n\n/**\n * Which insights to write and under what id. The first five types first (they write most of an\n * ad), at most `limit`. A quote already on file (or already planned) is skipped; so is a span\n * that contains, or is contained in, a quote filed from the same source (counted apart as an\n * overlap: the same customer statement filed twice double-counts it, BAKER-2198). An id held by a\n * different quote gets a `-2`, `-3`… so a file is never overwritten. Pure.\n */\nexport function planInsightWrites(\n insights: readonly VerbatimInsight[],\n existing: readonly FiledInsight[],\n limit: number,\n): { writes: PlannedInsight[]; skippedExisting: number; skippedOverlap: number } {\n const filed = existing.map((e) => ({ folded: foldForComparison(e.quote), source: e.source }));\n const quotes = new Set(filed.map((e) => e.folded));\n const ids = new Set(existing.map((e) => e.id));\n const ranked = [...insights].sort((a, b) => INSIGHT_TYPES.indexOf(a.type) - INSIGHT_TYPES.indexOf(b.type));\n const writes: PlannedInsight[] = [];\n let skippedExisting = 0;\n let skippedOverlap = 0;\n for (const insight of ranked) {\n const folded = foldForComparison(insight.quote);\n if (quotes.has(folded)) {\n skippedExisting++;\n continue;\n }\n const overlaps = filed.some(\n (e) => e.source === insight.source.ref && e.folded && (e.folded.includes(folded) || folded.includes(e.folded)),\n );\n if (overlaps) {\n skippedOverlap++;\n continue;\n }\n if (writes.length >= limit) continue;\n const base = insightSlug(insight.type, insight.quote);\n let id = base;\n for (let n = 2; ids.has(id); n++) id = `${base}-${n}`;\n quotes.add(folded);\n filed.push({ folded, source: insight.source.ref });\n ids.add(id);\n writes.push({ id, insight });\n }\n return { writes, skippedExisting, skippedOverlap };\n}\n\n/** A frontmatter string, YAML-safe: a JSON string is a valid double-quoted YAML scalar. */\nfunction yamlScalar(value: string): string {\n return JSON.stringify(value);\n}\n\nconst TITLE_CHARS = 70;\n\n/** The quote's opening words as the entry's title, in quote marks, so the Knowledge list reads as what was said. */\nfunction insightTitle(quote: string): string {\n const text = quote.replace(/[\"“”]/g, \"\").replace(/\\s+/g, \" \").trim();\n if (text.length <= TITLE_CHARS) return `“${text}”`;\n const cut = text.slice(0, TITLE_CHARS);\n return `“${cut.slice(0, cut.lastIndexOf(\" \")).replace(/[,;:.]$/, \"\")}…”`;\n}\n\n/**\n * The insight's Knowledge file (`src/content/insights/<id>.md`): frontmatter per the `insights`\n * collection, `status: observed`, and one line of context as the body. Pure.\n */\nexport function renderInsightFile(insight: VerbatimInsight, opts: { today: string; product?: string }): string {\n const { source } = insight;\n const lines = [\n \"---\",\n `title: ${yamlScalar(insightTitle(insight.quote))}`,\n `type: ${insight.type}`,\n `quote: ${yamlScalar(insight.quote)}`,\n `source: ${yamlScalar(source.ref)}`,\n `sourceKind: ${source.kind}`,\n `seenAt: ${yamlScalar(source.saidOn ?? opts.today)}`,\n \"status: observed\",\n ];\n if (insight.force) lines.push(`force: ${insight.force}`);\n if (insight.persona?.trim()) lines.push(`persona: ${yamlScalar(insight.persona.trim())}`);\n if (opts.product) lines.push(`product: ${yamlScalar(opts.product)}`);\n lines.push(\"---\", \"\", source.context.replace(/\\s+/g, \" \").trim(), \"\");\n return lines.join(\"\\n\");\n}\n\n/** How much of one review or comment the model reads (and the gate checks against). */\nconst MAX_SHORT_SOURCE_CHARS = 1_500;\n\nconst PLATFORM_NAMES: Record<string, string> = {\n google: \"Google\",\n trustpilot: \"Trustpilot\",\n yelp: \"Yelp\",\n tripadvisor: \"Tripadvisor\",\n g2: \"G2\",\n capterra: \"Capterra\",\n amazon: \"Amazon\",\n app_store: \"App Store\",\n google_play: \"Google Play\",\n};\n\n/** One library review as `/api/testimonials` returns it, read loosely so a new field never empties the list. */\nconst LibraryReviewSchema = z.object({\n _id: z.string().min(1),\n reviewText: z.string(),\n sourceType: z.string().optional(),\n rating: z.number().optional(),\n reviewDate: z.number().optional(),\n});\n\nfunction dayOf(ms: number | string): string | undefined {\n const date = new Date(ms);\n return Number.isNaN(date.getTime()) ? undefined : date.toISOString().slice(0, 10);\n}\n\n/** \"A …\" or \"An …\", ending in one full stop. */\nfunction sentence(rest: string): string {\n const line = `${/^[aeiou]/i.test(rest) ? \"An\" : \"A\"} ${rest}`;\n return line.endsWith(\".\") ? line : `${line}.`;\n}\n\n/**\n * \"A 4★ Trustpilot review.\" The kind of source and its rating, never the reviewer: this line is\n * committed to the client's repository and published as Knowledge, and whoever needs the person\n * follows `source` to the library (BAKER-2471).\n */\nfunction reviewContext(review: z.infer<typeof LibraryReviewSchema>): string {\n const platform = review.sourceType ? `${PLATFORM_NAMES[review.sourceType] ?? review.sourceType} ` : \"\";\n const rating = review.rating !== undefined ? `${review.rating}★ ` : \"\";\n return sentence(`${rating}${platform}review`);\n}\n\n/** The company's reviews (a plain list from `/api/testimonials`) as sources, each cited `testimonials:<id>`. Pure. */\nexport function sourcesFromTestimonials(data: unknown): CustomerSource[] {\n const list = Array.isArray(data) ? data : [];\n return list.flatMap((item): CustomerSource[] => {\n const parsed = LibraryReviewSchema.safeParse(item);\n if (!parsed.success) return [];\n const review = parsed.data;\n const text = review.reviewText.trim().slice(0, MAX_SHORT_SOURCE_CHARS);\n if (!text) return [];\n const saidOn = review.reviewDate !== undefined ? dayOf(review.reviewDate) : undefined;\n return [\n {\n ref: `testimonials:${review._id}`,\n kind: \"review\",\n text,\n context: reviewContext(review),\n ...(saidOn ? { saidOn } : {}),\n },\n ];\n });\n}\n\n/** Reddit posts and comments as sources, each cited by its own permalink; a post's title counts as its words. Pure. */\nexport function sourcesFromReddit(items: readonly ResearchRedditItem[]): CustomerSource[] {\n return items.flatMap((item): CustomerSource[] => {\n const words = item.kind === \"post\" ? [item.title ?? \"\", item.text].filter((t) => t.trim()).join(\"\\n\\n\") : item.text;\n const text = words.trim().slice(0, MAX_SHORT_SOURCE_CHARS);\n if (!text) return [];\n const under = item.kind === \"comment\" && item.title ? `, under ${JSON.stringify(item.title)}` : \"\";\n const saidOn = dayOf(item.createdAt);\n return [\n {\n ref: item.permalink,\n kind: \"reddit\",\n text,\n context: `A Reddit ${item.kind} in r/${item.subreddit}${under}.`,\n ...(saidOn ? { saidOn } : {}),\n },\n ];\n });\n}\n\n/** How much of one web page the model reads (and the gate checks against). */\nconst MAX_PAGE_SOURCE_CHARS = 6_000;\n\n/** Pages read with `research fetch` as sources, each cited by where the read landed. Pure. */\nexport function sourcesFromPages(pages: readonly ResearchFetchResponse[]): CustomerSource[] {\n return pages.flatMap((page): CustomerSource[] => {\n const text = page.content.trim().slice(0, MAX_PAGE_SOURCE_CHARS);\n if (!text) return [];\n const host = URL.canParse(page.finalUrl) ? new URL(page.finalUrl).host : page.finalUrl;\n const title = page.title?.trim() ? `, ${JSON.stringify(page.title.trim())}` : \"\";\n return [{ ref: page.finalUrl, kind: \"web\", text, context: `A page on ${host}${title}.` }];\n });\n}\n\n/** What the model judges relevance against: COMPANY.md as written, and the product entries' names. */\nexport type CompanyContext = { about?: string; products: readonly string[] };\n\n/** A source as the model reads it: its number, where it was said, then the text. */\nfunction promptLine(source: CustomerSource, n: number): string {\n const where = source.context.replace(/\\s+/g, \" \").trim();\n const ofCompany = source.kind === \"review\" ? \" A review of this company.\" : \"\";\n return `[${n}] ${where || ofCompany ? `(${`${where}${ofCompany}`.trim()}) ` : \"\"}${source.text}`;\n}\n\n/**\n * The classification prompt: who the company is, numbered texts, and the instruction to point at\n * exact spans of them with a verdict on whether each is about this company's customers. What comes\n * back is only a pointer and a verdict; `keepVerbatim` and `keepOnTopic` decide what is kept. Pure.\n */\nexport function buildCustomersPrompt(\n sources: readonly CustomerSource[],\n opts: { focus?: string; company?: CompanyContext } = {},\n): string {\n const { focus, company } = opts;\n const about = company?.about?.trim();\n const products = company?.products.length ? `Its products: ${company.products.join(\", \")}.` : \"\";\n return [\n `Below are ${sources.length} numbered texts (reviews, testimonials, forum posts and comments, web pages)${focus ? `, gathered about: ${focus}` : \"\"}.`,\n \"Find what this company's customers say in them, the material its ads are written from.\",\n \"\",\n \"The company:\",\n about ? about : \"(no company description on file: judge by the focus and the company's own reviews)\",\n ...(products ? [products] : []),\n \"\",\n \"Rules:\",\n \"- Every quote must be an EXACT substring of the text it cites: the same words, in the same order, with the same spelling and typos. Copy, never paraphrase, translate, summarize, correct or join two passages. Never quote the part in parentheses before a text; that only says where it was said.\",\n `- The shortest span that carries the truth, at most ${MAX_QUOTE_CHARS} characters.`,\n \"- Only the customer's own words: skip a seller's reply, an ad, a page's marketing copy, and a text with no truth in it. Return fewer, or none, rather than invent.\",\n \"- fit, for every quote: on_topic when the speaker is a buyer or user of this company, its product, its category or a named competitor, talking about the problem it solves, in a market it serves; off_topic when the text (or the forum or thread it was said in) is about something else, such as a game, another industry or another country's market; not_a_buyer when it is on the subject but the speaker is not a buyer: someone the product acts against, a seller or the company replying, a marketer. A real quote that is off_topic is worthless here, so judge strictly.\",\n \"- why: one short line on what makes it that fit (who is speaking, about what).\",\n \"- type: accommodation (a workaround they live with), failed_solution (what they tried before that failed them), nearly_didnt (what nearly stopped them buying), word (their own word or phrase for the problem), moment (the moment that started their search), pain, objection, desire, proof (a result they got), other.\",\n \"- force, when it speaks to one: push (what pushes them off the old way), pull (what draws them to the new one), anxiety (what they fear about changing), habit (what keeps them where they are).\",\n '- persona: a few words on who is speaking, only when the text says it (\"restaurant owner\", \"night-shift courier\"). Never a person\\'s name.',\n \"\",\n 'Reply with only this JSON: {\"insights\":[{\"source\":1,\"quote\":\"\",\"fit\":\"\",\"why\":\"\",\"type\":\"\",\"force\":\"\",\"persona\":\"\"}]}',\n \"\",\n \"Texts:\",\n ...sources.map((source, i) => promptLine(source, i + 1)),\n ].join(\"\\n\");\n}\n\nconst AnswerSchema = z.object({ insights: z.array(z.unknown()) });\n\nconst CandidateSchema = z.object({\n source: z.coerce.number().int().positive(),\n quote: z.string().trim().min(1),\n type: z.enum(INSIGHT_TYPES).catch(\"other\"),\n force: z.enum(FORCES).optional().catch(undefined),\n persona: z.string().trim().optional().catch(undefined),\n fit: z.enum(FITS).optional().catch(undefined),\n why: z.string().trim().optional().catch(undefined),\n});\n\n/** The model's spans, or null when the reply is not the asked shape. An item that is not a span is dropped. Pure. */\nexport function candidatesFrom(answer: unknown): Candidate[] | null {\n const parsed = AnswerSchema.safeParse(answer);\n if (!parsed.success) return null;\n return parsed.data.insights.flatMap((item): Candidate[] => {\n const candidate = CandidateSchema.safeParse(item);\n if (!candidate.success) return [];\n const { source, quote, type, force, persona, fit, why } = candidate.data;\n return [\n {\n source,\n quote,\n type,\n ...(force ? { force } : {}),\n ...(persona ? { persona } : {}),\n ...(fit ? { fit } : {}),\n ...(why ? { why } : {}),\n },\n ];\n });\n}\n\n/** Sources in batches of at most `budget` characters of text; a source is never split. Pure. */\nexport function batchSources(sources: readonly CustomerSource[], budget: number): CustomerSource[][] {\n const batches: CustomerSource[][] = [];\n let current: CustomerSource[] = [];\n let size = 0;\n for (const source of sources) {\n if (current.length > 0 && size + source.text.length > budget) {\n batches.push(current);\n current = [];\n size = 0;\n }\n current.push(source);\n size += source.text.length;\n }\n if (current.length > 0) batches.push(current);\n return batches;\n}\n\n/** How many insights answered per source; null when the source was not asked or did not answer. */\nexport type SourceCounts = { testimonials: number | null; reddit: number | null; web: number | null };\n\nconst FEW_OBSERVED = 5;\n\n/** What the agent does next. Pure. */\nexport function customersHints(input: { written: number; offTopic?: number; sources: SourceCounts }): string[] {\n const { written, offTopic = 0, sources } = input;\n const widen =\n 'Search in the customers\\' own words with --query \"<the words they write>\" (their phrasing, not a category name), or add --web.';\n const elsewhere =\n offTopic > 0 && offTopic >= written\n ? [\n `${offTopic} real quotes were dropped as not about this company, its product, category or competitors (the forum or thread was about something else). Put the product or category in --query with the customers' words (\"<category> <their words>\"), and check where this company's customers actually talk with \\`baker research reddit subreddits \"<category>\"\\`. Never write the dropped quotes in by hand.`,\n ]\n : [];\n if (written === 0) {\n return [\n ...elsewhere,\n \"No customer words were found to keep, so nothing was written. Import where customers already talk: `baker testimonials sources add <review page link>` (Google, Trustpilot, G2, app stores…) brings their reviews into the library; then run this again.\",\n ...(sources.reddit === null\n ? ['Reddit was not read: pass --focus \"<product>\" or --query \"<their words>\".']\n : [widen]),\n \"Until there are observed truths, ad ideas go in as explore bets: an idea with an empty `evidence` list.\",\n ];\n }\n const cite = `Cite these by id in an idea's \\`evidence\\` (src/creatives/_ideas/<idea>.md); write the ad from the quote as said.`;\n return [...elsewhere, ...(written < FEW_OBSERVED ? [`Only ${written} observed. ${widen}`, cite] : [cite])];\n}\n\n// ---------------------------------------------------------------------------\n// The command: gather, classify, gate, write\n// ---------------------------------------------------------------------------\n\nconst INSIGHTS_DIR = path.join(\"src\", \"content\", \"insights\");\nconst BATCH_CHARS = 24_000;\nconst MAX_BATCHES = 5;\nconst WEB_PAGES = 3;\nconst DEFAULT_LIMIT = 20;\nconst SHOWN_QUOTE_CHARS = 120;\nconst READ_TIMEOUT_MS = 180_000;\n\nconst DESCRIPTION = `Gather what real customers say and keep it as Knowledge: one file per customer truth in src/content/insights/<id>.md, each a quote found word for word in its source (status: observed). Ads and ideas are written from these.\n\nStart here: baker research customers --focus \"<product or persona>\"\n\nReads the company's review library, Reddit (with --focus or --query) and, with --web, a few web pages. A model only points at spans; a quote is kept only if it appears verbatim in the text it came from AND that text is a buyer talking about this company, its product, category or a competitor (judged against COMPANY.md). Everything else is dropped and counted: dropped_not_verbatim, dropped_off_topic, dropped_not_a_buyer. Never write an insight by hand, and never add back a dropped one.\n\nExamples:\n baker research customers --focus \"payroll app for restaurants\"\n baker research customers --query \"chasing invoices\" --web\n baker research customers --dry-run`;\n\nconst ARGS = {\n focus: {\n type: \"string\",\n required: false,\n description:\n 'The product or persona to listen for, e.g. \"payroll for restaurants\". Also the Reddit search when --query is not given.',\n },\n query: {\n type: \"string\",\n required: false,\n description: 'Search terms in the customers\\' own words, e.g. \"chasing invoices\". Used for Reddit and the web.',\n },\n limit: { type: \"string\", required: false, description: `Most insights written (default ${DEFAULT_LIMIT}).` },\n web: {\n type: \"boolean\",\n required: false,\n default: false,\n description: `Also read up to ${WEB_PAGES} web pages where customers talk about it (slower).`,\n },\n \"dry-run\": {\n type: \"boolean\",\n required: false,\n default: false,\n description: \"Show what would be written; write nothing.\",\n },\n full: {\n type: \"boolean\",\n required: false,\n default: false,\n description: \"Add each insight's whole quote, source and context.\",\n },\n} as const;\n\nregisterSchema({ command: \"research.customers\", description: DESCRIPTION, args: ARGS });\n\nconst InsightFrontmatter = z.object({ quote: z.string(), source: z.string().optional().catch(undefined) });\n\n/** An insight file's `quote` and `source`; quote \"\" when it has none that reads. */\nfunction filedOf(raw: string): { quote: string; source?: string } {\n const front = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/)?.[1];\n if (!front) return { quote: \"\" };\n try {\n const parsed = InsightFrontmatter.safeParse(parseYaml(front));\n if (!parsed.success) return { quote: \"\" };\n const { quote, source } = parsed.data;\n return source ? { quote, source } : { quote };\n } catch {\n return { quote: \"\" };\n }\n}\n\n/** The insights already on file: id, quote and source. Never throws. */\nasync function readExistingInsights(dir: string): Promise<FiledInsight[]> {\n const files = (await readdir(dir).catch(() => [] as string[])).filter((f) => f.endsWith(\".md\"));\n return await Promise.all(\n files.map(async (file) => ({\n id: file.slice(0, -3),\n ...filedOf(await readFile(path.join(dir, file), \"utf8\").catch(() => \"\")),\n })),\n );\n}\n\n/** How much of COMPANY.md the model reads to judge relevance; the file is meant to stay ~40 lines. */\nconst MAX_COMPANY_CHARS = 4_000;\n\n/** COMPANY.md without its comments, or undefined when it is missing or still the unfilled stub. Never throws. */\nasync function companyAbout(root: string): Promise<string | undefined> {\n const doc = await readFile(path.join(root, \"COMPANY.md\"), \"utf8\").catch(() => \"\");\n const text = doc.replace(/<!--[\\s\\S]*?-->/g, \"\").trim();\n if (!text || /^#\\s*Company\\s*\\n+TODO\\b/i.test(text)) return undefined;\n return text.slice(0, MAX_COMPANY_CHARS);\n}\n\n/** The product entries' names (file slugs). Never throws. */\nasync function productSlugs(root: string): Promise<string[]> {\n const files = await readdir(path.join(root, \"src\", \"content\", \"products\")).catch(() => [] as string[]);\n return files.filter((f) => f.endsWith(\".md\")).map((f) => f.slice(0, -3));\n}\n\n/** The library's reviews: the ones about --focus when given, else the latest. Null when the library did not answer. */\nasync function gatherTestimonials(focus: string | undefined): Promise<CustomerSource[] | null> {\n try {\n const search: TestimonialsSearchRequest = { query: focus ?? \"\", limit: 40 };\n const data = focus\n ? await apiPost<unknown>(\"/api/testimonials/search\", search)\n : await apiGet<unknown>(\"/api/testimonials\", { limit: \"50\" });\n return sourcesFromTestimonials(data);\n } catch {\n return null;\n }\n}\n\n/** Reddit posts and comments matching `query`, in the subreddits where it is talked about. Null when Reddit did not answer. */\nasync function gatherReddit(query: string): Promise<CustomerSource[] | null> {\n const subreddits = await findSubreddits({ query: query.slice(0, 100), limit: 3 })\n .then((r) => r.results.filter((s) => s.access !== \"private\").map((s) => s.name))\n .catch(() => [] as string[]);\n const answers = await Promise.allSettled([\n searchReddit({ query, subreddits, kind: \"posts\", limit: 15 }),\n ...(subreddits.length > 0 ? [searchReddit({ query, subreddits, kind: \"comments\", limit: 25 })] : []),\n ]);\n if (answers.every((a) => a.status === \"rejected\")) return null;\n const seen = new Set<string>();\n const items = answers\n .flatMap((a) => (a.status === \"fulfilled\" ? a.value.results : []))\n .filter((item) => !seen.has(item.id) && Boolean(seen.add(item.id)));\n return sourcesFromReddit(items);\n}\n\nconst ExploreAnswer = z.object({ sources: z.array(z.object({ url: z.string() })) });\n\n/**\n * Web research cites its pages through Google's grounding redirect; a quote must cite the page\n * itself, so the redirect is followed once (no body read). Any other URL, or a redirect that does\n * not answer, is kept as it is.\n */\nasync function resolveGroundingRedirect(url: string): Promise<string> {\n if (!URL.canParse(url) || new URL(url).host !== \"vertexaisearch.cloud.google.com\") return url;\n try {\n const response = await fetch(url, { method: \"HEAD\", redirect: \"manual\", signal: AbortSignal.timeout(15_000) });\n const location = response.headers.get(\"location\");\n return location && URL.canParse(location) ? location : url;\n } catch {\n return url;\n }\n}\n\n/** A few web pages where customers talk about `topic`, each read whole. Null when the web did not answer. */\nasync function gatherWeb(topic: string): Promise<CustomerSource[] | null> {\n let urls: string[];\n try {\n const found = ExploreAnswer.parse(\n await apiPost<unknown>(\n \"/api/research/explore\",\n {\n question: `Which pages carry first-hand customer comments about ${topic}, in the customers' own words: reviews, complaints, forum threads?`,\n depth: \"medium\",\n },\n { timeoutMs: READ_TIMEOUT_MS },\n ),\n );\n urls = (await Promise.all(found.sources.slice(0, WEB_PAGES * 2).map((s) => resolveGroundingRedirect(s.url))))\n .filter((u) => !/reddit\\.com/i.test(u))\n .filter((u, i, all) => all.indexOf(u) === i);\n } catch {\n return null;\n }\n const pages = await Promise.allSettled(\n urls.slice(0, WEB_PAGES).map((url) => {\n const body: ResearchFetchRequest = { url };\n return apiPost<ResearchFetchResponse>(\"/api/research/fetch\", body, { timeoutMs: READ_TIMEOUT_MS });\n }),\n );\n return sourcesFromPages(pages.flatMap((p) => (p.status === \"fulfilled\" ? [p.value] : [])));\n}\n\n/**\n * Pointing at spans and judging each text's subject needs little thought: at the model's default\n * reasoning one 19k-character batch took 143s on dev (2026-10-26) and outran the 60s budget, at\n * low effort 7s with the same verdicts. An extraction asks for JSON at a fixed seed, so the same\n * texts read the same.\n */\nconst CLASSIFY_TIMEOUT_MS = 90_000;\nconst CLASSIFY_REQUEST = { seed: 0, response_format: { type: \"json_object\" }, reasoning: { effort: \"low\" } };\n\n/** One batch's spans, asked at most twice; null when the model never answered in shape. */\nasync function classifyBatch(\n batch: CustomerSource[],\n context: { focus?: string; company: CompanyContext },\n onSpend: (usage: ReviewUsage) => void,\n): Promise<Candidate[] | null> {\n const prompt = buildCustomersPrompt(batch, context);\n for (let attempt = 0; attempt < 2; attempt++) {\n const candidates = candidatesFrom(\n await askAboutText(CUSTOMER_INSIGHTS_MODEL, prompt, onSpend, {\n timeoutMs: CLASSIFY_TIMEOUT_MS,\n request: CLASSIFY_REQUEST,\n }),\n );\n if (candidates) return candidates;\n }\n return null;\n}\n\n/** Sources taken in turn from each list, so every kind reaches the model when there is more than it reads. */\nfunction interleave(lists: readonly CustomerSource[][]): CustomerSource[] {\n const out: CustomerSource[] = [];\n const longest = Math.max(0, ...lists.map((l) => l.length));\n for (let i = 0; i < longest; i++) {\n for (const list of lists) {\n const source = list[i];\n if (source) out.push(source);\n }\n }\n return out;\n}\n\nfunction fail(code: string, message: string, fix: string): never {\n writeJson({ ok: false, error: { code, message, fix } });\n process.exit(1);\n}\n\n/** Every source asked at once; one that does not answer is null and never stops the rest. */\nasync function gatherSources(opts: { focus?: string; topic?: string; web: boolean }) {\n const { focus, topic, web: withWeb } = opts;\n const [testimonials, reddit, web] = await Promise.all([\n gatherTestimonials(focus),\n topic ? gatherReddit(topic) : Promise.resolve(null),\n withWeb && topic ? gatherWeb(topic) : Promise.resolve(null),\n ]);\n const counts: SourceCounts = {\n testimonials: testimonials?.length ?? null,\n reddit: reddit?.length ?? null,\n web: web?.length ?? null,\n };\n return { all: interleave([testimonials ?? [], reddit ?? [], web ?? []]), counts };\n}\n\n/**\n * Every batch classified and gated; null when the model answered no batch at all. The spend\n * waits in the workspace's canvas cache: no run record carries these calls, so the next render\n * of this workspace bills them.\n */\ntype Gated = { kept: VerbatimInsight[]; dropped: number; tooLong: number; offTopic: number; notABuyer: number };\n\nasync function classifyAll(\n sources: readonly CustomerSource[],\n context: { focus?: string; company: CompanyContext },\n root: string,\n): Promise<Gated | null> {\n const batches = batchSources(sources, BATCH_CHARS).slice(0, MAX_BATCHES);\n const spent: ReviewUsage[] = [];\n const answers = await Promise.all(batches.map((batch) => classifyBatch(batch, context, (u) => spent.push(u))));\n await holdUnbilledSpend(path.join(root, \"canvas\", \".cache\"), spent);\n if (batches.length > 0 && answers.every((a) => a === null)) return null;\n const result: Gated = { kept: [], dropped: 0, tooLong: 0, offTopic: 0, notABuyer: 0 };\n batches.forEach((batch, i) => {\n const verbatim = keepVerbatim(answers[i] ?? [], batch);\n const relevant = keepOnTopic(verbatim.kept);\n result.kept.push(...relevant.kept);\n result.dropped += verbatim.dropped;\n result.tooLong += verbatim.tooLong;\n result.offTopic += relevant.offTopic;\n result.notABuyer += relevant.notABuyer;\n });\n return result;\n}\n\n/** Writes each planned file, never over one that appeared since the plan (`wx`); returns what was written. */\nasync function writeInsights(\n dir: string,\n writes: readonly PlannedInsight[],\n opts: { today: string; product?: string },\n): Promise<PlannedInsight[]> {\n if (writes.length === 0) return [];\n await mkdir(dir, { recursive: true });\n const written: PlannedInsight[] = [];\n for (const entry of writes) {\n const file = renderInsightFile(entry.insight, opts);\n const ok = await writeFile(path.join(dir, `${entry.id}.md`), file, { encoding: \"utf8\", flag: \"wx\" }).then(\n () => true,\n () => false,\n );\n if (ok) written.push(entry);\n }\n return written;\n}\n\nfunction writtenRow({ id, insight }: PlannedInsight, full: boolean) {\n const quote =\n insight.quote.length > SHOWN_QUOTE_CHARS ? `${insight.quote.slice(0, SHOWN_QUOTE_CHARS)}…` : insight.quote;\n if (!full) return { id, type: insight.type, quote };\n return {\n id,\n type: insight.type,\n quote,\n full_quote: insight.quote,\n source: insight.source.ref,\n context: insight.source.context,\n ...(insight.force ? { force: insight.force } : {}),\n ...(insight.persona ? { persona: insight.persona } : {}),\n ...(insight.why ? { why: insight.why } : {}),\n };\n}\n\n/** What the run listens for: the product a --focus names, and the words Reddit and the web are searched with. */\nasync function resolveTopic(root: string, focus: string | undefined, query: string | undefined) {\n const products = await productSlugs(root);\n const product = focus ? products.find((slug) => slug === asciiWords(focus).join(\"-\")) : undefined;\n const firstProduct = products[0];\n const topic = query ?? focus ?? (firstProduct ? asciiWords(firstProduct).join(\" \") : undefined);\n return { product, products, topic };\n}\n\n/**\n * Gathers, classifies, gates and writes customer truths into the workspace; null when the model\n * answered no batch. Shared with `baker creatives brief`, which runs it when few quotes are on file.\n */\nexport async function researchCustomers(\n root: string,\n opts: { focus?: string; query?: string; limit?: number; web?: boolean; dryRun?: boolean },\n) {\n const { focus, query, limit = DEFAULT_LIMIT, web = false, dryRun = false } = opts;\n const { product, products, topic } = await resolveTopic(root, focus, query);\n const [{ all, counts }, about] = await Promise.all([gatherSources({ focus, topic, web }), companyAbout(root)]);\n const company: CompanyContext = { products, ...(about ? { about } : {}) };\n const gated = await classifyAll(all, { ...(focus ? { focus } : {}), company }, root);\n if (!gated) return null;\n const dir = path.join(root, INSIGHTS_DIR);\n const plan = planInsightWrites(gated.kept, await readExistingInsights(dir), limit);\n const today = new Date().toISOString().slice(0, 10);\n const shown = dryRun\n ? plan.writes\n : await writeInsights(dir, plan.writes, { today, ...(product ? { product } : {}) });\n return { shown, plan, gated, counts };\n}\n\nexport const customersCommand = defineCommand({\n meta: { name: \"customers\", description: DESCRIPTION },\n args: ARGS,\n async run({ args }) {\n const focus = args.focus?.trim() || undefined;\n const query = args.query?.trim() || undefined;\n const limit = args.limit === undefined ? DEFAULT_LIMIT : Number(args.limit);\n if (!Number.isInteger(limit) || limit < 1 || limit > 100) {\n fail(\"VALIDATION_ERROR\", \"--limit must be a whole number from 1 to 100.\", \"Run it again with --limit 20.\");\n }\n const dryRun = Boolean(args[\"dry-run\"]);\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const found = await researchCustomers(root, { focus, query, limit, web: Boolean(args.web), dryRun });\n if (!found) {\n fail(\n \"UNAVAILABLE\",\n \"The model that picks out customer words did not answer (no gateway key here, or it failed twice).\",\n \"Run it again. Do not write insights by hand: an insight is only a quote this command found in its source.\",\n );\n }\n const { shown, plan, gated, counts } = found;\n\n writeJson({\n ok: true,\n data: {\n ...(dryRun ? { dry_run: true } : {}),\n written: shown.map((entry) => writtenRow(entry, Boolean(args.full))),\n skipped_existing: plan.skippedExisting,\n ...(plan.skippedOverlap > 0 ? { skipped_overlap: plan.skippedOverlap } : {}),\n dropped_not_verbatim: gated.dropped,\n dropped_off_topic: gated.offTopic,\n ...(gated.notABuyer > 0 ? { dropped_not_a_buyer: gated.notABuyer } : {}),\n ...(gated.tooLong > 0 ? { dropped_too_long: gated.tooLong } : {}),\n sources: counts,\n },\n hints: customersHints({ written: shown.length, offTopic: gated.offTopic + gated.notABuyer, sources: counts }),\n });\n },\n});\n","/**\n * Is this span on the page as written? The one comparison every verbatim gate\n * uses — `baker research customers` keeping a customer's words, `baker research\n * cite` proving a quote — so a span that passes one passes the other.\n *\n * \"As written\" forgives what a copy changes without changing the words:\n * curly vs straight quotes, dashes vs hyphens, runs of spacing, letter case and\n * compatibility forms (NFKC). Nothing else: a paraphrase is not the span.\n */\n\n/** Curly and prime quote marks, by code point: single ones read as ', double ones as \". */\nconst SINGLE_QUOTES = new Set([0x2018, 0x2019, 0x201a, 0x201b, 0x2032]);\nconst DOUBLE_QUOTES = new Set([0x201c, 0x201d, 0x201e, 0x201f, 0x2033]);\n/** Hyphen, non-breaking hyphen, figure/en/em dash, horizontal bar, minus: all read as -. */\nconst DASHES = new Set([0x2010, 0x2011, 0x2012, 0x2013, 0x2014, 0x2015, 0x2212]);\n\nfunction foldChar(char: string): string {\n if (/\\s/.test(char)) return \" \";\n const code = char.codePointAt(0) ?? 0;\n if (SINGLE_QUOTES.has(code)) return \"'\";\n if (DOUBLE_QUOTES.has(code)) return '\"';\n if (DASHES.has(code)) return \"-\";\n return char.normalize(\"NFKC\").toLowerCase();\n}\n\n/**\n * A text in the comparison form, with, for each folded character, where it\n * starts in the original.\n */\nfunction foldWithOffsets(text: string): { folded: string; offsets: number[] } {\n let folded = \"\";\n const offsets: number[] = [];\n let at = 0;\n for (const char of text) {\n const out = foldChar(char);\n const collapses = out === \" \" && (folded.length === 0 || folded.endsWith(\" \"));\n if (!collapses) {\n for (const piece of out) {\n folded += piece;\n offsets.push(at);\n }\n }\n at += char.length;\n }\n if (folded.endsWith(\" \")) {\n folded = folded.slice(0, -1);\n offsets.pop();\n }\n return { folded, offsets };\n}\n\n/** A text in the comparison form alone — for comparing two quotes with each other. */\nexport function foldForComparison(text: string): string {\n return foldWithOffsets(text).folded;\n}\n\n/** Where `quote` sits in `text` under the comparison form, as `[start, end)` of the original, or null. */\nexport function findVerbatimSpan(quote: string, text: string): { start: number; end: number } | null {\n const needle = foldWithOffsets(quote).folded;\n if (needle.length === 0) return null;\n const { folded, offsets } = foldWithOffsets(text);\n const at = folded.indexOf(needle);\n if (at < 0) return null;\n const start = offsets[at] ?? 0;\n const last = offsets[at + needle.length - 1] ?? 0;\n const end = last + (String.fromCodePoint(text.codePointAt(last) ?? 0).length || 1);\n return { start, end };\n}\n\n/**\n * The text's own spelling of `quote` (spacing collapsed), or null when it is\n * not there. What a gate keeps is the source's words, never the caller's copy.\n */\nexport function findVerbatim(quote: string, text: string): string | null {\n const span = findVerbatimSpan(quote, text);\n return span ? text.slice(span.start, span.end).replace(/\\s+/g, \" \").trim() : null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import {
|
|
2
|
+
avatarsOf
|
|
3
|
+
} from "./chunk-TUYFP4BC.js";
|
|
4
|
+
import {
|
|
5
|
+
readAvatars
|
|
6
|
+
} from "./chunk-RVMDQYPX.js";
|
|
7
|
+
import {
|
|
8
|
+
readCreativeContext,
|
|
9
|
+
workspaceOfCreative
|
|
10
|
+
} from "./chunk-BNFTHFBB.js";
|
|
11
|
+
import {
|
|
12
|
+
frontmatterOf,
|
|
13
|
+
ruleTells
|
|
14
|
+
} from "./chunk-XUTSNIUI.js";
|
|
15
|
+
import {
|
|
16
|
+
findWorkspaceRoot
|
|
17
|
+
} from "./chunk-2TTGNQ5H.js";
|
|
18
|
+
import {
|
|
19
|
+
isAdSpec,
|
|
20
|
+
nativeCopy,
|
|
21
|
+
readAdSpec
|
|
22
|
+
} from "./chunk-SBGF4OKE.js";
|
|
23
|
+
import {
|
|
24
|
+
marketFromCompanyDoc
|
|
25
|
+
} from "./chunk-2WZI36D3.js";
|
|
26
|
+
|
|
27
|
+
// src/engine/creative-context/ad-words.ts
|
|
28
|
+
import { readdir, readFile } from "fs/promises";
|
|
29
|
+
import path from "path";
|
|
30
|
+
var json = (file) => readFile(file, "utf8").then((raw) => JSON.parse(raw)).catch(() => null);
|
|
31
|
+
var text = (value) => typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
32
|
+
function waivedOf(spec) {
|
|
33
|
+
const waive = spec?.waive;
|
|
34
|
+
return Array.isArray(waive) ? waive.flatMap((w) => text(w?.rule) ?? []) : [];
|
|
35
|
+
}
|
|
36
|
+
function sceneWords(scene) {
|
|
37
|
+
const s = scene ?? {};
|
|
38
|
+
const spoken = Array.isArray(s.dialogue) ? s.dialogue.flatMap((d) => text(d?.line) ?? []) : [];
|
|
39
|
+
const shown = Array.isArray(s.overlays) ? s.overlays.flatMap((o) => text(o?.text) ?? []) : [];
|
|
40
|
+
return [...spoken, ...shown];
|
|
41
|
+
}
|
|
42
|
+
async function sceneFiles(creativeDir) {
|
|
43
|
+
const dir = path.join(creativeDir, "scenes");
|
|
44
|
+
const files = (await readdir(dir).catch(() => [])).filter((f) => f.endsWith(".json")).sort();
|
|
45
|
+
return await Promise.all(files.map((f) => json(path.join(dir, f))));
|
|
46
|
+
}
|
|
47
|
+
async function videoLanguage(creativeDir) {
|
|
48
|
+
const definition = frontmatterOf(await readFile(path.join(creativeDir, "_definition.md"), "utf8").catch(() => ""));
|
|
49
|
+
const beats = await json(path.join(creativeDir, "ad.spec.json"));
|
|
50
|
+
return text(definition?.language) ?? text(beats?.voice?.language);
|
|
51
|
+
}
|
|
52
|
+
async function videoWords(raw, creativeDir) {
|
|
53
|
+
const global = raw.global ?? {};
|
|
54
|
+
const transcript = text(global.transcript);
|
|
55
|
+
const scenes = [...Array.isArray(raw.scenes) ? raw.scenes : [], ...await sceneFiles(creativeDir)];
|
|
56
|
+
const lines = [.../* @__PURE__ */ new Set([...transcript ? [transcript] : [], ...scenes.flatMap(sceneWords)])];
|
|
57
|
+
const language = await videoLanguage(creativeDir);
|
|
58
|
+
return { kind: "video", lines, ...language ? { language } : {} };
|
|
59
|
+
}
|
|
60
|
+
function staticWords(raw) {
|
|
61
|
+
try {
|
|
62
|
+
const spec = readAdSpec(raw);
|
|
63
|
+
const lines = spec.native ? nativeCopy(spec.native) : spec.copy.map((l) => l.text);
|
|
64
|
+
const language = spec.viewer?.market?.language;
|
|
65
|
+
return { kind: "static", lines, ...language ? { language } : {} };
|
|
66
|
+
} catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function readAdWords(creativeDir) {
|
|
71
|
+
const raw = await json(path.join(creativeDir, "prompt.json"));
|
|
72
|
+
if (!raw || typeof raw !== "object") return null;
|
|
73
|
+
const video = !isAdSpec(raw) && ("global" in raw || "scenes" in raw);
|
|
74
|
+
const words = video ? await videoWords(raw, creativeDir) : staticWords(raw);
|
|
75
|
+
if (!words) return null;
|
|
76
|
+
const product = text(raw.product);
|
|
77
|
+
const definition = frontmatterOf(await readFile(path.join(creativeDir, "_definition.md"), "utf8").catch(() => ""));
|
|
78
|
+
const platform = text(definition?.platform);
|
|
79
|
+
const listed = definition?.platforms;
|
|
80
|
+
const platforms = Array.isArray(listed) ? listed.map(text).filter((p) => p !== void 0) : [];
|
|
81
|
+
return {
|
|
82
|
+
...words,
|
|
83
|
+
...product ? { product } : {},
|
|
84
|
+
...platform ? { platform } : {},
|
|
85
|
+
...platforms.length > 0 ? { platforms } : {},
|
|
86
|
+
waived: waivedOf(raw)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// src/commands/canvas/rule-gate.ts
|
|
91
|
+
import { readFile as readFile2 } from "fs/promises";
|
|
92
|
+
import path2 from "path";
|
|
93
|
+
function tellLine(tell) {
|
|
94
|
+
const where = tell.kind === "forbidden" ? `"${tell.line ?? ""}" says "${tell.phrase}"` : `No line says "${tell.phrase}"`;
|
|
95
|
+
const words = tell.quote ? ` Their words: ${tell.quote}` : "";
|
|
96
|
+
return `${where}: ${tell.rule} (${tell.strength}) \u2014 ${tell.text}${words}`;
|
|
97
|
+
}
|
|
98
|
+
function ruleRefusal(tells) {
|
|
99
|
+
if (tells.length === 0) return null;
|
|
100
|
+
return {
|
|
101
|
+
problems: [...new Set(tells.map(tellLine))],
|
|
102
|
+
fix: 'Rewrite each line named above within its rule (a static: its `copy` in prompt.json; a video: its scene files and ad.spec.json), then re-run. Only when the person explicitly asked for these words in this ad, keep them and add to prompt.json `"waive": [{"rule": "<id>", "why": "<their ask>"}]`.'
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
var liveRoster = () => readAvatars("/api/avatars", { status: "ready" }).then(avatarsOf, () => null);
|
|
106
|
+
async function heldRules(creativeDir, ad) {
|
|
107
|
+
const words = ad === void 0 ? await readAdWords(creativeDir) : ad;
|
|
108
|
+
const root = findWorkspaceRoot(creativeDir) ?? workspaceOfCreative(creativeDir);
|
|
109
|
+
const context = await readCreativeContext(
|
|
110
|
+
root,
|
|
111
|
+
{
|
|
112
|
+
...words ? { kind: words.kind } : {},
|
|
113
|
+
...words?.product ? { product: words.product } : {},
|
|
114
|
+
...words?.platform ? { platform: words.platform } : {},
|
|
115
|
+
...words?.platforms ? { platforms: words.platforms } : {}
|
|
116
|
+
},
|
|
117
|
+
{ waived: words?.waived ?? [] }
|
|
118
|
+
);
|
|
119
|
+
const language = words?.language ?? marketFromCompanyDoc(await readFile2(path2.join(root, "COMPANY.md"), "utf8").catch(() => null))?.language;
|
|
120
|
+
return { rules: context.rules, ...language ? { language } : {} };
|
|
121
|
+
}
|
|
122
|
+
async function ruleGate(creativeDir, roster = liveRoster) {
|
|
123
|
+
const ad = await readAdWords(creativeDir);
|
|
124
|
+
if (!ad) return { broken: null, realOnly: null };
|
|
125
|
+
const { rules, language } = await heldRules(creativeDir, ad);
|
|
126
|
+
const people = rules.find((r) => r.check?.people === "real" && r.strength !== "prefer");
|
|
127
|
+
return {
|
|
128
|
+
broken: ruleRefusal(ruleTells(ad.lines, rules, language)),
|
|
129
|
+
realOnly: people ? {
|
|
130
|
+
rule: { id: people.id, text: people.text, ...people.source.quote ? { quote: people.source.quote } : {} },
|
|
131
|
+
avatars: await roster().catch(() => null)
|
|
132
|
+
} : null
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export {
|
|
137
|
+
readAdWords,
|
|
138
|
+
ruleRefusal,
|
|
139
|
+
heldRules,
|
|
140
|
+
ruleGate
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=chunk-JVFV6UJ3.js.map
|