@koda-sl/baker-cli 0.481.0-dev.2d33e194f → 0.495.0-dev.c2b64ccca
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 +66 -131
- package/canvas/avocado-tutorial.json +3 -3
- package/canvas/hello-world-overlay.json +1 -1
- package/dist/account-5VPZ3XQ3.js +79 -0
- package/dist/account-SYUEXERA.js +49 -0
- package/dist/account-ZQH535IP.js +80 -0
- package/dist/account-reads-GUYNJEZA.js +218 -0
- package/dist/account-writes-DLCRTL6Y.js +66 -0
- package/dist/accounts-3TNEMLLC.js +115 -0
- package/dist/accounts-GBRGCLE3.js +611 -0
- package/dist/accounts-IPOCFAKK.js +114 -0
- package/dist/accounts-QBWYIJ7D.js +77 -0
- package/dist/accounts-TSM5EHRD.js +75 -0
- package/dist/actions-XZMLYLTK.js +55 -0
- package/dist/active-entities-MFWTN4VJ.js +103 -0
- package/dist/activecampaign-77V5X3FQ.js +935 -0
- package/dist/activecampaign-77V5X3FQ.js.map +1 -0
- package/dist/activities-ZXA53KY7.js +74 -0
- package/dist/ad-group-writes-2JBCTSJY.js +170 -0
- package/dist/ad-groups-6JQSO32O.js +68 -0
- package/dist/ad-writes-P34Z3ZTX.js +174 -0
- package/dist/add-F2BF2HAK.js +105 -0
- package/dist/add-JAXBNDLC.js +97 -0
- package/dist/add-KAMQP5RM.js +302 -0
- package/dist/add-Y6QCWI6Q.js +104 -0
- package/dist/add-accounts-M4R7ZVHN.js +91 -0
- package/dist/ads-6MIIAUFS.js +40 -0
- package/dist/ads-6MIIAUFS.js.map +1 -0
- package/dist/ads-KPUP4WG4.js +128 -0
- package/dist/ads-UVQN4BTT.js +113 -0
- package/dist/ads-VPSHNIWG.js +77 -0
- package/dist/adsets-JAQKFDLX.js +176 -0
- package/dist/advertisers-2ETFYRKA.js +120 -0
- package/dist/advertisers-6ONURKP2.js +125 -0
- package/dist/analytics-AVDCFCGF.js +433 -0
- package/dist/analytics-AVDCFCGF.js.map +1 -0
- package/dist/analytics-XZ56777C.js +1976 -0
- package/dist/animate-KZQCCL65.js +480 -0
- package/dist/assign-DDXB7A6W.js +77 -0
- package/dist/audience-size-5QQAABZQ.js +94 -0
- package/dist/audiences-I4KJ6DZ7.js +85 -0
- package/dist/audiences-IFBZCTME.js +78 -0
- package/dist/audiences-THTWZOMA.js +268 -0
- package/dist/audit-2KOD4YCF.js +151 -0
- package/dist/audit-MFTERSQZ.js +88 -0
- package/dist/autocomplete-JC46QNHQ.js +111 -0
- package/dist/avatars-ZXQRZJM2.js +38 -0
- package/dist/bid-pricing-46W7LSU5.js +99 -0
- package/dist/brand-XROP2WL2.js +22 -0
- package/dist/brief-B7C3SYDP.js +537 -0
- package/dist/brief-B7C3SYDP.js.map +1 -0
- package/dist/businesses-JWOIY3OR.js +53 -0
- package/dist/campaign-groups-5O3SR5X2.js +95 -0
- package/dist/campaign-writes-4D4256DP.js +170 -0
- package/dist/campaign-writes-5BEK2QBJ.js +165 -0
- package/dist/campaigns-6DX2MACO.js +76 -0
- package/dist/campaigns-EJT7IMDT.js +109 -0
- package/dist/campaigns-OKU4HN5Q.js +107 -0
- package/dist/campaigns-QVPLPTH3.js +110 -0
- package/dist/canvas-XCP2WPYO.js +46 -0
- package/dist/capabilities-W4XDJVDW.js +144 -0
- package/dist/cards-2QCVG77U.js +85 -0
- package/dist/catalog-LTH6SDYM.js +65 -0
- package/dist/catalog-LTH6SDYM.js.map +1 -0
- package/dist/catalogs-RVW4L6C6.js +128 -0
- package/dist/changes-XRPDY2K4.js +135 -0
- package/dist/chatgpt-RNGSOVHP.js +47 -0
- package/dist/chats-JKCUA26S.js +262 -0
- package/dist/check-NDPR32FH.js +102 -0
- package/dist/check-NDPR32FH.js.map +1 -0
- package/dist/chunk-2C36DHQH.js +96 -0
- package/dist/chunk-2LIAXB3W.js +1079 -0
- package/dist/chunk-2MT3AWDE.js +125 -0
- package/dist/chunk-2WRK44LZ.js +296 -0
- package/dist/chunk-34NQKHKY.js +1599 -0
- package/dist/chunk-34NQKHKY.js.map +1 -0
- package/dist/chunk-35WKYJQY.js +382 -0
- package/dist/chunk-35WKYJQY.js.map +1 -0
- package/dist/chunk-3AOMKBDC.js +3194 -0
- package/dist/chunk-3AOMKBDC.js.map +1 -0
- package/dist/chunk-3FDGC2UH.js +846 -0
- package/dist/chunk-3FFJYMKM.js +333 -0
- package/dist/chunk-3PL2QRF2.js +96 -0
- package/dist/chunk-3XDZMLX6.js +139 -0
- package/dist/chunk-4R7H4RV6.js +35 -0
- package/dist/chunk-4TBDEV7X.js +75 -0
- package/dist/chunk-4WYEGE4N.js +2123 -0
- package/dist/chunk-4WYEGE4N.js.map +1 -0
- package/dist/chunk-5IGQ6IQO.js +1837 -0
- package/dist/chunk-5IGQ6IQO.js.map +1 -0
- package/dist/chunk-5VD5GK6A.js +58 -0
- package/dist/chunk-5ZIGEHQQ.js +166 -0
- package/dist/chunk-66ZIZ7QP.js +26 -0
- package/dist/chunk-6DSLFOKJ.js +74 -0
- package/dist/chunk-6EV5MXLQ.js +66 -0
- package/dist/chunk-6EV5MXLQ.js.map +1 -0
- package/dist/chunk-6FHP2HIK.js +84 -0
- package/dist/chunk-6VI2DDGZ.js +106 -0
- package/dist/chunk-72QBQS63.js +111 -0
- package/dist/chunk-7DBOLSUL.js +51 -0
- package/dist/chunk-7FDDOOM4.js +19 -0
- package/dist/chunk-7XH4UQWS.js +302 -0
- package/dist/chunk-7XH4UQWS.js.map +1 -0
- package/dist/chunk-AN7CMLYY.js +25 -0
- package/dist/chunk-B2SAOVMU.js +148 -0
- package/dist/chunk-B2SAOVMU.js.map +1 -0
- package/dist/chunk-BC2BXRXY.js +2887 -0
- package/dist/chunk-BC2BXRXY.js.map +1 -0
- package/dist/chunk-BDMZRWQI.js +433 -0
- package/dist/chunk-BITS62MF.js +77 -0
- package/dist/chunk-BVMXTD4B.js +169 -0
- package/dist/chunk-BVMXTD4B.js.map +1 -0
- package/dist/chunk-CCFZB42B.js +76 -0
- package/dist/chunk-CKRSSMRT.js +191 -0
- package/dist/chunk-D53AAUG4.js +215 -0
- package/dist/chunk-DGUYFROS.js +76 -0
- package/dist/chunk-DS2ZRTAL.js +136 -0
- package/dist/chunk-EIJDXZW5.js +1743 -0
- package/dist/chunk-EJH2JOVG.js +98 -0
- package/dist/chunk-EJWFD6T3.js +188 -0
- package/dist/chunk-ELNN4SNW.js +52 -0
- package/dist/chunk-ELYP6BOS.js +156 -0
- package/dist/chunk-ELYP6BOS.js.map +1 -0
- package/dist/chunk-EUB327FC.js +57 -0
- package/dist/chunk-EWRGZZLS.js +159 -0
- package/dist/chunk-EWRGZZLS.js.map +1 -0
- package/dist/chunk-FBF5XDJX.js +106 -0
- package/dist/chunk-FP3GNJN2.js +98 -0
- package/dist/chunk-FZKUUI3F.js +455 -0
- package/dist/chunk-FZKUUI3F.js.map +1 -0
- package/dist/chunk-G2AZCDX4.js +216 -0
- package/dist/chunk-G2AZCDX4.js.map +1 -0
- package/dist/chunk-G373L4GL.js +45 -0
- package/dist/chunk-GFFV6YS7.js +903 -0
- package/dist/chunk-GFFV6YS7.js.map +1 -0
- package/dist/chunk-GN6WIZDD.js +392 -0
- package/dist/chunk-GN6WIZDD.js.map +1 -0
- package/dist/chunk-GTOHNTTI.js +274 -0
- package/dist/chunk-HDNZSVJJ.js +665 -0
- package/dist/chunk-HLAAGGDS.js +346 -0
- package/dist/chunk-HX7PM34O.js +197 -0
- package/dist/chunk-IGOOLUE2.js +821 -0
- package/dist/chunk-IGOOLUE2.js.map +1 -0
- package/dist/chunk-IKTKWXP6.js +172 -0
- package/dist/chunk-IOGKJZ4Z.js +74 -0
- package/dist/chunk-IVRXPYQ7.js +60 -0
- package/dist/chunk-JIJJCU6E.js +363 -0
- package/dist/chunk-JOCKYH6U.js +297 -0
- package/dist/chunk-KPYDTIAI.js +317 -0
- package/dist/chunk-KPYDTIAI.js.map +1 -0
- package/dist/chunk-L44WSWSZ.js +23 -0
- package/dist/chunk-LF3MFO2N.js +23992 -0
- package/dist/chunk-LF3MFO2N.js.map +1 -0
- package/dist/chunk-M525HJTA.js +275 -0
- package/dist/chunk-M6UNISGO.js +66 -0
- package/dist/chunk-M6UNISGO.js.map +1 -0
- package/dist/chunk-MBYTIGZE.js +111 -0
- package/dist/chunk-MBYTIGZE.js.map +1 -0
- package/dist/chunk-MMU6XHCH.js +97 -0
- package/dist/chunk-MNPBPU3G.js +225 -0
- package/dist/chunk-MNPBPU3G.js.map +1 -0
- package/dist/chunk-MRRSKRZZ.js +84 -0
- package/dist/chunk-MV2J73HP.js +6238 -0
- package/dist/chunk-MV2J73HP.js.map +1 -0
- package/dist/chunk-NEHQGYZS.js +5181 -0
- package/dist/chunk-NEHQGYZS.js.map +1 -0
- package/dist/chunk-NFHUJRDE.js +136 -0
- package/dist/chunk-NG2DMLU6.js +175 -0
- package/dist/chunk-NG2DMLU6.js.map +1 -0
- package/dist/chunk-NSHJ6OOK.js +67 -0
- package/dist/chunk-OCBAKPHH.js +76 -0
- package/dist/chunk-OFTU5XBQ.js +92 -0
- package/dist/chunk-OSWCEDFE.js +216 -0
- package/dist/chunk-OTNGMKI6.js +309 -0
- package/dist/chunk-PAJJXZ3Z.js +170 -0
- package/dist/chunk-PALFKSJV.js +237 -0
- package/dist/chunk-PALFKSJV.js.map +1 -0
- package/dist/chunk-PGSXR5UM.js +206 -0
- package/dist/chunk-PPMSWLQC.js +158 -0
- package/dist/chunk-PPMSWLQC.js.map +1 -0
- package/dist/chunk-QAOEVZYY.js +509 -0
- package/dist/chunk-QEW64BBR.js +777 -0
- package/dist/chunk-QEW64BBR.js.map +1 -0
- package/dist/chunk-QK5PEHFX.js +3088 -0
- package/dist/chunk-QK5PEHFX.js.map +1 -0
- package/dist/chunk-QVQKCVP7.js +85 -0
- package/dist/chunk-QVQKCVP7.js.map +1 -0
- package/dist/chunk-QW2Q4C2X.js +547 -0
- package/dist/chunk-QW2Q4C2X.js.map +1 -0
- package/dist/chunk-R5HMAIZM.js +169 -0
- package/dist/chunk-RPRLCIHB.js +103 -0
- package/dist/chunk-RV4GIY23.js +149 -0
- package/dist/chunk-RVXN2YTM.js +544 -0
- package/dist/chunk-RVXN2YTM.js.map +1 -0
- package/dist/chunk-RXUEYD2S.js +592 -0
- package/dist/chunk-S4ROJTDY.js +580 -0
- package/dist/chunk-S4ROJTDY.js.map +1 -0
- package/dist/chunk-SJOWZKNB.js +56 -0
- package/dist/chunk-SQQ4VBNI.js +304 -0
- package/dist/chunk-SQQ4VBNI.js.map +1 -0
- package/dist/chunk-SYED65QF.js +46 -0
- package/dist/chunk-SYED65QF.js.map +1 -0
- package/dist/chunk-T5HB6R4I.js +518 -0
- package/dist/chunk-T5HB6R4I.js.map +1 -0
- package/dist/chunk-TE3N5AGN.js +94 -0
- package/dist/chunk-TPQH4UXJ.js +174 -0
- package/dist/chunk-TQUNJFGF.js +225 -0
- package/dist/chunk-TYSN5VVJ.js +55 -0
- package/dist/chunk-UKMG6YWX.js +26 -0
- package/dist/chunk-WDAWTHQK.js +66 -0
- package/dist/chunk-WJNLQEOZ.js +131 -0
- package/dist/chunk-WJNLQEOZ.js.map +1 -0
- package/dist/chunk-WZDKROPU.js +6995 -0
- package/dist/chunk-WZDKROPU.js.map +1 -0
- package/dist/chunk-X3PCCHP2.js +74 -0
- package/dist/chunk-XQ4KKF5E.js +1448 -0
- package/dist/chunk-XQ4KKF5E.js.map +1 -0
- package/dist/chunk-XXU7XRMM.js +4434 -0
- package/dist/chunk-XXU7XRMM.js.map +1 -0
- package/dist/chunk-YJAQWTS6.js +455 -0
- package/dist/chunk-YNOJN5Z6.js +42 -0
- package/dist/chunk-YTV5VW7S.js +494 -0
- package/dist/chunk-ZO4GMUO3.js +172 -0
- package/dist/chunk-ZSRLDTDC.js +46 -0
- package/dist/claim-JBNO7M6J.js +197 -0
- package/dist/cli.js +39 -38
- package/dist/cli.js.map +1 -1
- package/dist/client-CPAPILIF.js +19 -0
- package/dist/code-GHOVETWX.js +76 -0
- package/dist/companies-47T2PCRZ.js +195 -0
- package/dist/complete-T3PKN4B7.js +81 -0
- package/dist/config-AFNXR5FA.js +88 -0
- package/dist/connect-T7R43GIH.js +42 -0
- package/dist/content-M3U2SCFJ.js +85 -0
- package/dist/conversation-BG7WEMXQ.js +93 -0
- package/dist/conversion-report-URDTPXQ7.js +125 -0
- package/dist/conversion-upload-command-BWF6MAOK.js +438 -0
- package/dist/conversion-writes-7MGIFJ3H.js +120 -0
- package/dist/conversions-QY6COYPP.js +76 -0
- package/dist/conversions-UTXG5YEO.js +135 -0
- package/dist/countries-MUZPFSYZ.js +82 -0
- package/dist/create-6QASIASQ.js +235 -0
- package/dist/create-FIHEJRAF.js +59 -0
- package/dist/create-JXZBMXUS.js +207 -0
- package/dist/create-LN23WUB5.js +126 -0
- package/dist/create-LN23WUB5.js.map +1 -0
- package/dist/creatives-6FG6VAB4.js +87 -0
- package/dist/creatives-NJ7SZ3S4.js +58 -0
- package/dist/creatives-NJ7SZ3S4.js.map +1 -0
- package/dist/creatives-UD6TFATS.js +182 -0
- package/dist/credentials-ECPD2A7X.js +287 -0
- package/dist/critique-LINKOKOE.js +220 -0
- package/dist/critique-LINKOKOE.js.map +1 -0
- package/dist/critique-WQ3EP6E5.js +1450 -0
- package/dist/critique-WQ3EP6E5.js.map +1 -0
- package/dist/crm-4EWUWZNZ.js +318 -0
- package/dist/crm-ASWKMKF3.js +224 -0
- package/dist/crop-MIVSA2YF.js +113 -0
- package/dist/currency-5LU3D62R.js +88 -0
- package/dist/custom-conversions-3QGJQRYS.js +125 -0
- package/dist/customers-EEBZXQ4J.js +56 -0
- package/dist/decide-ZODJU7DY.js +199 -0
- package/dist/delete-CTH3TGNM.js +71 -0
- package/dist/delete-D6GNTBYI.js +54 -0
- package/dist/delete-IWIDUJNS.js +69 -0
- package/dist/delete-TLVYBVRP.js +71 -0
- package/dist/delete-XPHIQY5Z.js +63 -0
- package/dist/delete-XZEPLAKT.js +66 -0
- package/dist/demographics-L3TJJAFF.js +138 -0
- package/dist/describe-5PM5OSYK.js +97 -0
- package/dist/describe-KQLRHGFX.js +97 -0
- package/dist/dimensions-6H24D7CM.js +101 -0
- package/dist/discard-74I3M2DF.js +66 -0
- package/dist/discover-6LGIHWVP.js +93 -0
- package/dist/discover-HBQO4RSF.js +172 -0
- package/dist/domain-E5DTPAZI.js +98 -0
- package/dist/download-ED52W77T.js +299 -0
- package/dist/draft-3XYF2L4K.js +306 -0
- package/dist/draft-5IEMZ4W3.js +103 -0
- package/dist/draft-6UVGEERY.js +281 -0
- package/dist/draft-FDBE36CP.js +233 -0
- package/dist/draft-PE4DN44Y.js +307 -0
- package/dist/draft-QBR22TG2.js +328 -0
- package/dist/draft-VZYSJVF5.js +217 -0
- package/dist/draft-YWTLO2ON.js +100 -0
- package/dist/engine/index.js +15 -14
- package/dist/env-GS2TUVCM.js +43 -0
- package/dist/experiment-XDJHSOBC.js +1397 -0
- package/dist/export-GV5CF5UM.js +168 -0
- package/dist/extract-4OXK7L7R.js +113 -0
- package/dist/facets-XPB2ELM2.js +114 -0
- package/dist/favorites-VKPXGTK6.js +178 -0
- package/dist/feed-B2YLZQNU.js +177 -0
- package/dist/feedback-HT2M63QW.js +66 -0
- package/dist/feedback-record-V7UU6CG3.js +246 -0
- package/dist/feedback-record-V7UU6CG3.js.map +1 -0
- package/dist/fetch-2O7EUCCZ.js +139 -0
- package/dist/fetch-GMNE6KOJ.js +176 -0
- package/dist/find-LZZNPFJH.js +134 -0
- package/dist/find-LZZNPFJH.js.map +1 -0
- package/dist/fit-S5ZGPNE3.js +56 -0
- package/dist/flows-5SXT5F22.js +247 -0
- package/dist/flows-5SXT5F22.js.map +1 -0
- package/dist/follow-UNIHLZKA.js +94 -0
- package/dist/follow-competitors-CQL2B55H.js +112 -0
- package/dist/following-GMXZIEDZ.js +113 -0
- package/dist/fonts-GPJQLNQL.js +35 -0
- package/dist/forecast-6AHSHRDJ.js +168 -0
- package/dist/forecast-V6BCMR4Y.js +104 -0
- package/dist/funding-WPREDQVA.js +85 -0
- package/dist/funnel-QDYX3UH5.js +394 -0
- package/dist/ga4-6AUOX2UW.js +55 -0
- package/dist/generate-LWSAKRIT.js +263 -0
- package/dist/generate-LWSAKRIT.js.map +1 -0
- package/dist/get-5OEDAT2Q.js +63 -0
- package/dist/get-7WEE5V7M.js +56 -0
- package/dist/get-DXGJSEZZ.js +63 -0
- package/dist/get-GQWOLALT.js +59 -0
- package/dist/get-W7F4FOAR.js +92 -0
- package/dist/get-WY6JXFP6.js +61 -0
- package/dist/get-X6DSFXN6.js +78 -0
- package/dist/gif-JXWSR2TC.js +94 -0
- package/dist/google-44QA3M4N.js +3190 -0
- package/dist/google-44QA3M4N.js.map +1 -0
- package/dist/google-6QFL6GV3.js +136 -0
- package/dist/google-ads-ZG3BDUEG.js +195 -0
- package/dist/group-7ADT2GWA.js +43 -0
- package/dist/group-VD3UIBKE.js +43 -0
- package/dist/gsc-WHMPFTYA.js +30 -0
- package/dist/history-33JKOKAV.js +133 -0
- package/dist/history-M3IKDCEO.js +67 -0
- package/dist/hubspot-B4IUIOYX.js +779 -0
- package/dist/icon-R2K27DKI.js +137 -0
- package/dist/ideas-HHTLPC6Y.js +39 -0
- package/dist/images-PV6TZQLL.js +90 -0
- package/dist/improve-TVFAR27Q.js +86 -0
- package/dist/ingest-25ZX36RL.js +23 -0
- package/dist/ingest-MFIT3L23.js +107 -0
- package/dist/insights-CE3GICP7.js +423 -0
- package/dist/insights-CE3GICP7.js.map +1 -0
- package/dist/insights-TGAQLNHO.js +122 -0
- package/dist/insights-TGAQLNHO.js.map +1 -0
- package/dist/inspect-2IASA5YV.js +189 -0
- package/dist/inspiration-O56SOIQP.js +53 -0
- package/dist/intent-JOW24MTF.js +95 -0
- package/dist/job-QUO6KULI.js +202 -0
- package/dist/job-create-JTOG5M3Q.js +109 -0
- package/dist/job-status-3B4X5IPG.js +74 -0
- package/dist/keep-5TVGX7EG.js +78 -0
- package/dist/keyword-gap-SHLXRIHO.js +130 -0
- package/dist/keyword-metrics-NYH6DXKJ.js +197 -0
- package/dist/keywords-for-site-JTK64W4I.js +128 -0
- package/dist/landing-4V7HMYCZ.js +28 -0
- package/dist/landings-LZZO4VVW.js +151 -0
- package/dist/languages-TINK472E.js +55 -0
- package/dist/languages-ZIGJHY2T.js +40 -0
- package/dist/launches-C5XXNF7C.js +19 -0
- package/dist/layerize-YVCA4JO7.js +190 -0
- package/dist/leads-2WTL7F24.js +90 -0
- package/dist/leads-QUO3YNHO.js +293 -0
- package/dist/learn-RL66WKHT.js +204 -0
- package/dist/learn-RL66WKHT.js.map +1 -0
- package/dist/library-EEHRR7WX.js +109 -0
- package/dist/library-EEHRR7WX.js.map +1 -0
- package/dist/lighthouse-QLFI7PSQ.js +75 -0
- package/dist/line-item-writes-SYSYGV3L.js +208 -0
- package/dist/line-items-H3M6T7P2.js +103 -0
- package/dist/link-EHSSSV6K.js +64 -0
- package/dist/linkedin-BGZIR43P.js +1008 -0
- package/dist/list-2IAOPMQC.js +76 -0
- package/dist/list-BGT2BEWD.js +57 -0
- package/dist/list-G2VYAKYF.js +151 -0
- package/dist/list-IFXQWBBE.js +65 -0
- package/dist/list-LK3CVZ3B.js +50 -0
- package/dist/list-X2TMGY7C.js +303 -0
- package/dist/list-X3SEZDKE.js +51 -0
- package/dist/list-ZFS7XBD7.js +63 -0
- package/dist/locations-JC2H5JMY.js +67 -0
- package/dist/locations-M4L7FUOB.js +40 -0
- package/dist/log-4EINR63D.js +92 -0
- package/dist/logo-7GDRTSLI.js +18 -0
- package/dist/lookup-SJXNPUXG.js +22 -0
- package/dist/make-4XCSN76S.js +1137 -0
- package/dist/make-4XCSN76S.js.map +1 -0
- package/dist/map-EFEKUPNJ.js +433 -0
- package/dist/map-EFEKUPNJ.js.map +1 -0
- package/dist/mcp-RQJAEJCJ.js +463 -0
- package/dist/media-FYGHJAEG.js +89 -0
- package/dist/media-YYYCKXMZ.js +15 -0
- package/dist/media-sources-ZLBIC4RM.js +32 -0
- package/dist/members-SXATNT7V.js +44 -0
- package/dist/meta-OGB3NB2W.js +69 -0
- package/dist/metrics-52ZARN6M.js +152 -0
- package/dist/models-LSEMO4XH.js +155 -0
- package/dist/normalize-3HI26S34.js +806 -0
- package/dist/normalize-SOFYZQSJ.js +141 -0
- package/dist/options-GKSCCFM7.js +122 -0
- package/dist/options-GKSCCFM7.js.map +1 -0
- package/dist/output-YJ4YBUU4.js +24 -0
- package/dist/page-ZGCK6MOQ.js +105 -0
- package/dist/pages-QMP3W2R3.js +66 -0
- package/dist/performance-BQSWGNFO.js +24 -0
- package/dist/pinterest-LCVUB2ZL.js +96 -0
- package/dist/pixels-UQGAPBLG.js +60 -0
- package/dist/pixels-YM2DX7EN.js +108 -0
- package/dist/plan-Z5TZRRCH.js +207 -0
- package/dist/preview-DZQUUQGD.js +169 -0
- package/dist/profile-SXX36XVS.js +159 -0
- package/dist/profile-SXX36XVS.js.map +1 -0
- package/dist/promoted-tweet-writes-VUNJIUA3.js +180 -0
- package/dist/promoted-tweets-55X4H7NG.js +119 -0
- package/dist/properties-CSW67FJG.js +101 -0
- package/dist/publish-U73OR33K.js +322 -0
- package/dist/query-UQQNESTT.js +236 -0
- package/dist/query-V4I3VCJ7.js +61 -0
- package/dist/query-XPCC7OUP.js +247 -0
- package/dist/questionnaire-UQNRYZK7.js +93 -0
- package/dist/read-RXAOLPG5.js +141 -0
- package/dist/reddit-C2B7NT7X.js +26 -0
- package/dist/refresh-JN4HKE4H.js +94 -0
- package/dist/release-HSAOBN5K.js +60 -0
- package/dist/relevant-pages-XBWFEHHE.js +99 -0
- package/dist/remove-G5UXVQ2W.js +50 -0
- package/dist/remove-Q4TL5ZFS.js +48 -0
- package/dist/reopen-D26VSRRL.js +63 -0
- package/dist/rerun-NWOGRYHU.js +89 -0
- package/dist/rerun-NWOGRYHU.js.map +1 -0
- package/dist/research-CRYX2CAR.js +262 -0
- package/dist/research-XRVD2GSG.js +62 -0
- package/dist/reset-2VVN4CY7.js +54 -0
- package/dist/reset-FWDPBHYO.js +54 -0
- package/dist/resolve-D4PCGIWO.js +121 -0
- package/dist/retry-AHZFHMTH.js +60 -0
- package/dist/retry-FV6ASVO5.js +62 -0
- package/dist/retry-failed-AENQRGML.js +45 -0
- package/dist/rules-DSLE6LVU.js +95 -0
- package/dist/rules-DSLE6LVU.js.map +1 -0
- package/dist/rules-add-NBOMKFAI.js +446 -0
- package/dist/rules-add-NBOMKFAI.js.map +1 -0
- package/dist/run-AGSHZQND.js +65 -0
- package/dist/run-IRJWKZ3K.js +64 -0
- package/dist/scaffold-ad-3BSA7BWT.js +1553 -0
- package/dist/scaffold-ad-3BSA7BWT.js.map +1 -0
- package/dist/scaffold-static-ad-Q26LLBWQ.js +976 -0
- package/dist/scaffold-static-ad-Q26LLBWQ.js.map +1 -0
- package/dist/scaffold-video-WE52C7YZ.js +877 -0
- package/dist/scaffold-video-WE52C7YZ.js.map +1 -0
- package/dist/schedule-DTKBBIEH.js +66 -0
- package/dist/schedule-ESHQ4II7.js +61 -0
- package/dist/scheduled-agents-AREYFW23.js +50 -0
- package/dist/scheduled-agents-AREYFW23.js.map +1 -0
- package/dist/schema-OBF4T2QN.js +63 -0
- package/dist/schema-SWG2WKYX.js +132 -0
- package/dist/scrape-AGGDUPPD.js +2241 -0
- package/dist/screenshot-6GGCQCIV.js +102 -0
- package/dist/search-FRSFGJLZ.js +92 -0
- package/dist/search-I64WW2QC.js +174 -0
- package/dist/search-L2KHX5DO.js +224 -0
- package/dist/search-MBDEQ6EE.js +26 -0
- package/dist/search-UCDN4TOT.js +91 -0
- package/dist/search-copy-HX3FYZGT.js +168 -0
- package/dist/seeds-VFEFE4AK.js +101 -0
- package/dist/select-4IQQNKLN.js +100 -0
- package/dist/select-4IQQNKLN.js.map +1 -0
- package/dist/sends-WDSOXBSS.js +309 -0
- package/dist/sequences-NMJ55HS5.js +146 -0
- package/dist/set-prompt-DE4TD2V7.js +192 -0
- package/dist/set-prompt-DE4TD2V7.js.map +1 -0
- package/dist/setup-links-NAAUQD7O.js +141 -0
- package/dist/shared-3GVQQQNL.js +31 -0
- package/dist/site-VTJU5CRE.js +177 -0
- package/dist/sitemaps-KS57YDGB.js +87 -0
- package/dist/sites-PUEEVW7H.js +101 -0
- package/dist/skills-N6NRI2LC.js +47 -0
- package/dist/sources-CMUU4FER.js +454 -0
- package/dist/sources-CMUU4FER.js.map +1 -0
- package/dist/sources-YUMNEFK5.js +30 -0
- package/dist/stale-E34H24C3.js +70 -0
- package/dist/stale-E34H24C3.js.map +1 -0
- package/dist/stats-SY6GRHKB.js +34 -0
- package/dist/status-PVW64CLX.js +62 -0
- package/dist/sticker-YS6W5TSZ.js +94 -0
- package/dist/stock-DWL5E6K4.js +179 -0
- package/dist/studio-SXBK2IJJ.js +49 -0
- package/dist/sync-FOLYGQDI.js +54 -0
- package/dist/sync-NORMNZEE.js +54 -0
- package/dist/sync-XHJDCWWP.js +265 -0
- package/dist/sync-XHJDCWWP.js.map +1 -0
- package/dist/sync-definition-DTWEW6ZC.js +61 -0
- package/dist/tag-manager-ARFZU46G.js +43 -0
- package/dist/tags-77JUO75W.js +20 -0
- package/dist/tags-DOJUSHJB.js +224 -0
- package/dist/tags-IESRRMGW.js +20 -0
- package/dist/tags-MRTUBMRD.js +20 -0
- package/dist/tags-SP6GW4R7.js +26 -0
- package/dist/targeting-constants-DVGRIRKD.js +118 -0
- package/dist/targeting-criteria-SOK3HUE2.js +113 -0
- package/dist/targets-V2HNKVUL.js +102 -0
- package/dist/testimonials-PA2FUV4H.js +32 -0
- package/dist/themes-IDB7YPHW.js +94 -0
- package/dist/top-companies-XDP4SZN7.js +108 -0
- package/dist/translate-V6XPDX4M.js +604 -0
- package/dist/translate-V6XPDX4M.js.map +1 -0
- package/dist/triggers-QDXCA5P4.js +141 -0
- package/dist/tweets-AISMWXM3.js +123 -0
- package/dist/unfollow-PHLMILG2.js +46 -0
- package/dist/unlink-GDZV5GVL.js +67 -0
- package/dist/unstage-WCC2TI5Z.js +95 -0
- package/dist/unstage-WDJXHSAV.js +84 -0
- package/dist/update-KBF35KYV.js +63 -0
- package/dist/update-MRG5MPHR.js +98 -0
- package/dist/update-XNNQGZBO.js +155 -0
- package/dist/update-ZGDQJPDL.js +142 -0
- package/dist/upload-ID35OCCY.js +126 -0
- package/dist/upload-R7YJORED.js +150 -0
- package/dist/upscale-XPGVJWW2.js +109 -0
- package/dist/url-options-6X7M2J7D.js +130 -0
- package/dist/url-params-WRLCJRJQ.js +98 -0
- package/dist/use-VCL3PRCB.js +95 -0
- package/dist/validate-VTAKQGD5.js +95 -0
- package/dist/validate-VTAKQGD5.js.map +1 -0
- package/dist/variant-2NADVT6Q.js +338 -0
- package/dist/videos-M6VK66NI.js +39 -0
- package/dist/view-Q5B57K42.js +121 -0
- package/dist/viewer-check-3T2EZOSH.js +79 -0
- package/dist/viewer-check-3T2EZOSH.js.map +1 -0
- package/dist/web-GOD7BF7X.js +140 -0
- package/dist/winners-PK6EMR6B.js +113 -0
- package/dist/winning-ads-F765TFLS.js +84 -0
- package/dist/write-commands-4KWMNH6A.js +1015 -0
- package/dist/write-commands-7ECRGXLK.js +737 -0
- package/dist/write-commands-GL2PHXSU.js +713 -0
- package/dist/write-commands-NMV65XXB.js +206 -0
- package/dist/x-MDENBZ3X.js +47 -0
- package/package.json +1 -1
- package/dist/account-67PZBEP6.js +0 -79
- package/dist/account-HZC6X2PH.js +0 -49
- package/dist/account-TQUV64XP.js +0 -80
- package/dist/account-reads-IRBTERTY.js +0 -218
- package/dist/account-writes-ALDSHAEV.js +0 -66
- package/dist/accounts-4P54UY6F.js +0 -115
- package/dist/accounts-6UNBLIUH.js +0 -75
- package/dist/accounts-GVTZN4VE.js +0 -114
- package/dist/accounts-NJ6TF6WH.js +0 -611
- package/dist/accounts-WTB737BM.js +0 -77
- package/dist/actions-D3BOWDEB.js +0 -55
- package/dist/active-entities-J2O76SRP.js +0 -103
- package/dist/activities-2J7FTZMN.js +0 -74
- package/dist/ad-group-writes-PQKDCMQF.js +0 -170
- package/dist/ad-groups-NGYEJMV4.js +0 -68
- package/dist/ad-writes-77FVHJTS.js +0 -174
- package/dist/add-2FHPLALV.js +0 -105
- package/dist/add-2XJYOGKW.js +0 -104
- package/dist/add-62JPGFD4.js +0 -302
- package/dist/add-JP76KCCY.js +0 -97
- package/dist/add-accounts-M5Y4DQFM.js +0 -91
- package/dist/ads-DB5NDHX5.js +0 -128
- package/dist/ads-J2F7BSHR.js +0 -45
- package/dist/ads-J2F7BSHR.js.map +0 -1
- package/dist/ads-LYNA2I7B.js +0 -77
- package/dist/ads-W2IPUWHQ.js +0 -113
- package/dist/adsets-PY5ZKGBO.js +0 -176
- package/dist/advertisers-BVAZ4XUX.js +0 -125
- package/dist/advertisers-NZPJQF7W.js +0 -120
- package/dist/analytics-K2QIWKBN.js +0 -444
- package/dist/analytics-K2QIWKBN.js.map +0 -1
- package/dist/analytics-NTPZKMYK.js +0 -1976
- package/dist/animate-EIV2OHXT.js +0 -480
- package/dist/assign-UNIA5YDC.js +0 -77
- package/dist/audience-size-4NN6ENP5.js +0 -94
- package/dist/audiences-45ZCY2VZ.js +0 -268
- package/dist/audiences-UUIYQFS6.js +0 -78
- package/dist/audiences-VYFX7OFS.js +0 -85
- package/dist/audit-NSVHNA5J.js +0 -151
- package/dist/audit-OWXTLQC4.js +0 -88
- package/dist/autocomplete-EHWAQYVB.js +0 -111
- package/dist/avatars-7WZPW7BV.js +0 -38
- package/dist/bid-pricing-F5NDMS6W.js +0 -99
- package/dist/brand-QAJ5VWFM.js +0 -22
- package/dist/brief-V2OB5OJW.js +0 -490
- package/dist/brief-V2OB5OJW.js.map +0 -1
- package/dist/businesses-ZH67AXR6.js +0 -53
- package/dist/campaign-groups-KFJKLNNU.js +0 -95
- package/dist/campaign-writes-BDGQ6XB3.js +0 -170
- package/dist/campaign-writes-FNMAGCKB.js +0 -165
- package/dist/campaigns-66OOGMDW.js +0 -110
- package/dist/campaigns-6HMHOXXY.js +0 -109
- package/dist/campaigns-HJTGX5WW.js +0 -76
- package/dist/campaigns-KT3J2O7S.js +0 -107
- package/dist/canvas-MQ6ZE5CZ.js +0 -46
- package/dist/capabilities-RVUMPP7C.js +0 -144
- package/dist/cards-I4BZIYUV.js +0 -85
- package/dist/catalog-NLL5VDRK.js +0 -64
- package/dist/catalog-NLL5VDRK.js.map +0 -1
- package/dist/catalogs-B2NKQO24.js +0 -128
- package/dist/changes-FX3TPYGT.js +0 -135
- package/dist/chatgpt-3NS2R442.js +0 -47
- package/dist/chats-72L7U4ML.js +0 -262
- package/dist/chunk-2KIF3U2C.js +0 -51
- package/dist/chunk-35ENAFJX.js +0 -46
- package/dist/chunk-3ZWHAIMU.js +0 -207
- package/dist/chunk-3ZWHAIMU.js.map +0 -1
- package/dist/chunk-4DM6OAQ6.js +0 -2065
- package/dist/chunk-4DM6OAQ6.js.map +0 -1
- package/dist/chunk-4TU2MWBJ.js +0 -275
- package/dist/chunk-57UECM77.js +0 -98
- package/dist/chunk-5HYSKH77.js +0 -315
- package/dist/chunk-5HYSKH77.js.map +0 -1
- package/dist/chunk-65BQAJMH.js +0 -136
- package/dist/chunk-6GFJFTG6.js +0 -75
- package/dist/chunk-6HPIWZHS.js +0 -76
- package/dist/chunk-73B3RQJC.js +0 -610
- package/dist/chunk-73B3RQJC.js.map +0 -1
- package/dist/chunk-7GYM4I5I.js +0 -206
- package/dist/chunk-7NTION5F.js +0 -26
- package/dist/chunk-7SX73SH2.js +0 -2902
- package/dist/chunk-7SX73SH2.js.map +0 -1
- package/dist/chunk-AFDPISNJ.js +0 -111
- package/dist/chunk-AIDXJHZ4.js +0 -433
- package/dist/chunk-AR7PU7BB.js +0 -76
- package/dist/chunk-AXVOBRQT.js +0 -1442
- package/dist/chunk-AXVOBRQT.js.map +0 -1
- package/dist/chunk-BBBZR7MF.js +0 -160
- package/dist/chunk-BBBZR7MF.js.map +0 -1
- package/dist/chunk-BVYPRGPG.js +0 -92
- package/dist/chunk-CAMX6OHF.js +0 -3182
- package/dist/chunk-CAMX6OHF.js.map +0 -1
- package/dist/chunk-CBCGVPHB.js +0 -125
- package/dist/chunk-CECS3DHZ.js +0 -333
- package/dist/chunk-CZYUZL6R.js +0 -3151
- package/dist/chunk-CZYUZL6R.js.map +0 -1
- package/dist/chunk-D5MF337I.js +0 -97
- package/dist/chunk-DDTILZXI.js +0 -103
- package/dist/chunk-DL2W4N7J.js +0 -52
- package/dist/chunk-DLUWHZCE.js +0 -225
- package/dist/chunk-EOGPNV25.js +0 -509
- package/dist/chunk-F3FSD6BO.js +0 -96
- package/dist/chunk-FDG2LLX7.js +0 -494
- package/dist/chunk-FE7T32YL.js +0 -163
- package/dist/chunk-FE7T32YL.js.map +0 -1
- package/dist/chunk-FIN4ZXGJ.js +0 -70
- package/dist/chunk-FIN4ZXGJ.js.map +0 -1
- package/dist/chunk-FO5EP6DA.js +0 -24008
- package/dist/chunk-FO5EP6DA.js.map +0 -1
- package/dist/chunk-FSGTITIW.js +0 -622
- package/dist/chunk-FSGTITIW.js.map +0 -1
- package/dist/chunk-FSPV2DUG.js +0 -310
- package/dist/chunk-FSPV2DUG.js.map +0 -1
- package/dist/chunk-FYAWA3FO.js +0 -1830
- package/dist/chunk-FYAWA3FO.js.map +0 -1
- package/dist/chunk-G3KO2HFZ.js +0 -35
- package/dist/chunk-GKXMIXEV.js +0 -166
- package/dist/chunk-GT4UFORX.js +0 -296
- package/dist/chunk-GZ6YS7TG.js +0 -106
- package/dist/chunk-H7JOVRHO.js +0 -106
- package/dist/chunk-IJDF7D4U.js +0 -139
- package/dist/chunk-INJHF7AF.js +0 -172
- package/dist/chunk-IZFGTGFR.js +0 -67
- package/dist/chunk-J2QOKD2F.js +0 -76
- package/dist/chunk-J5WZ7SAD.js +0 -346
- package/dist/chunk-JC6GNMA7.js +0 -297
- package/dist/chunk-KB5HBQEK.js +0 -25
- package/dist/chunk-KB5XJHQX.js +0 -216
- package/dist/chunk-KM4AAAHZ.js +0 -5187
- package/dist/chunk-KM4AAAHZ.js.map +0 -1
- package/dist/chunk-LFZTGIPJ.js +0 -384
- package/dist/chunk-LFZTGIPJ.js.map +0 -1
- package/dist/chunk-LHNL6JM2.js +0 -309
- package/dist/chunk-LMHVLUD4.js +0 -175
- package/dist/chunk-LMHVLUD4.js.map +0 -1
- package/dist/chunk-NAMEFVWL.js +0 -1743
- package/dist/chunk-NFSLRRIE.js +0 -77
- package/dist/chunk-NORAJYUI.js +0 -172
- package/dist/chunk-NQTSHC7Z.js +0 -304
- package/dist/chunk-NQTSHC7Z.js.map +0 -1
- package/dist/chunk-O3LHCQ7Q.js +0 -136
- package/dist/chunk-O4ABJ352.js +0 -4410
- package/dist/chunk-O4ABJ352.js.map +0 -1
- package/dist/chunk-O5XLQUDS.js +0 -846
- package/dist/chunk-OI7KSXZM.js +0 -6265
- package/dist/chunk-OI7KSXZM.js.map +0 -1
- package/dist/chunk-OO67YTPM.js +0 -35
- package/dist/chunk-OO67YTPM.js.map +0 -1
- package/dist/chunk-OXBPKBSK.js +0 -6667
- package/dist/chunk-OXBPKBSK.js.map +0 -1
- package/dist/chunk-P3XJUOWT.js +0 -474
- package/dist/chunk-P3XJUOWT.js.map +0 -1
- package/dist/chunk-P3ZJIIDS.js +0 -57
- package/dist/chunk-P5T7OZKV.js +0 -26
- package/dist/chunk-P66JWKAL.js +0 -533
- package/dist/chunk-P66JWKAL.js.map +0 -1
- package/dist/chunk-PA5MYVQY.js +0 -66
- package/dist/chunk-PELW56D7.js +0 -45
- package/dist/chunk-PGVF4SB7.js +0 -169
- package/dist/chunk-Q676JHJA.js +0 -58
- package/dist/chunk-QDOVBGKZ.js +0 -149
- package/dist/chunk-QHIUJXU7.js +0 -363
- package/dist/chunk-QJPPPQPD.js +0 -98
- package/dist/chunk-QNEX7FEC.js +0 -174
- package/dist/chunk-QTL4NJ5I.js +0 -65
- package/dist/chunk-QTL4NJ5I.js.map +0 -1
- package/dist/chunk-QWX3QJNM.js +0 -170
- package/dist/chunk-QXDEZKAR.js +0 -455
- package/dist/chunk-QXDEZKAR.js.map +0 -1
- package/dist/chunk-RG7OMI5W.js +0 -1621
- package/dist/chunk-RG7OMI5W.js.map +0 -1
- package/dist/chunk-RUHMLPH5.js +0 -455
- package/dist/chunk-SJLIV6PF.js +0 -19
- package/dist/chunk-SLCSLVGS.js +0 -274
- package/dist/chunk-THU74XR6.js +0 -96
- package/dist/chunk-TY7TEU3T.js +0 -1079
- package/dist/chunk-UXTZ5MBE.js +0 -56
- package/dist/chunk-V43RLLZE.js +0 -55
- package/dist/chunk-V7PMSMPF.js +0 -817
- package/dist/chunk-V7PMSMPF.js.map +0 -1
- package/dist/chunk-VFSLIDXA.js +0 -42
- package/dist/chunk-VHMNSO2B.js +0 -84
- package/dist/chunk-VKH6LSC2.js +0 -188
- package/dist/chunk-VTCBPYGE.js +0 -592
- package/dist/chunk-W6ASM6UP.js +0 -197
- package/dist/chunk-W7KB3LJE.js +0 -60
- package/dist/chunk-WESRVXFS.js +0 -133
- package/dist/chunk-WESRVXFS.js.map +0 -1
- package/dist/chunk-WILN7TD6.js +0 -84
- package/dist/chunk-YGK7ZHNI.js +0 -337
- package/dist/chunk-YGK7ZHNI.js.map +0 -1
- package/dist/chunk-YGL5LTEA.js +0 -665
- package/dist/chunk-YONSWWCF.js +0 -215
- package/dist/chunk-Z5KBRTB2.js +0 -191
- package/dist/chunk-Z62XZCBE.js +0 -541
- package/dist/chunk-Z62XZCBE.js.map +0 -1
- package/dist/chunk-ZBKBTTHD.js +0 -74
- package/dist/chunk-ZJR5E53N.js +0 -23
- package/dist/chunk-ZLU5QDLU.js +0 -486
- package/dist/chunk-ZLU5QDLU.js.map +0 -1
- package/dist/chunk-ZNNC6B75.js +0 -94
- package/dist/chunk-ZO2YLHRW.js +0 -74
- package/dist/chunk-ZPJE6D7W.js +0 -74
- package/dist/claim-DIITRUIN.js +0 -197
- package/dist/client-LY2JCQS2.js +0 -19
- package/dist/code-7CBNYUPU.js +0 -76
- package/dist/companies-HHSYHL74.js +0 -195
- package/dist/complete-M3TURPU5.js +0 -81
- package/dist/config-7COTFJWK.js +0 -88
- package/dist/connect-TQL5EVVE.js +0 -42
- package/dist/content-OXMONMHJ.js +0 -85
- package/dist/conversation-GE273GC4.js +0 -93
- package/dist/conversion-report-BH4HH2Q3.js +0 -125
- package/dist/conversion-upload-command-QWWYCTNV.js +0 -438
- package/dist/conversion-writes-HG2O6JI7.js +0 -120
- package/dist/conversions-DP6ZF57D.js +0 -135
- package/dist/conversions-XPSN7SOW.js +0 -76
- package/dist/countries-UXAUGSBR.js +0 -82
- package/dist/create-ENQWVWGB.js +0 -59
- package/dist/create-NVXJP477.js +0 -207
- package/dist/create-PITWGVAS.js +0 -130
- package/dist/create-PITWGVAS.js.map +0 -1
- package/dist/create-XLZYNFKN.js +0 -235
- package/dist/creatives-O3444SBT.js +0 -182
- package/dist/creatives-ONKKGW5T.js +0 -87
- package/dist/creatives-U6IKIQBT.js +0 -51
- package/dist/creatives-U6IKIQBT.js.map +0 -1
- package/dist/credentials-3UY7RVUL.js +0 -287
- package/dist/critique-3LMW73QJ.js +0 -1449
- package/dist/critique-3LMW73QJ.js.map +0 -1
- package/dist/critique-KB32Y4AW.js +0 -213
- package/dist/critique-KB32Y4AW.js.map +0 -1
- package/dist/crm-OX67TBWD.js +0 -224
- package/dist/crm-XXU5XZIQ.js +0 -318
- package/dist/crop-3ZV5BFCA.js +0 -113
- package/dist/currency-XP4EMU4M.js +0 -88
- package/dist/custom-conversions-TV23XQHW.js +0 -125
- package/dist/customers-EJ7FVCTC.js +0 -56
- package/dist/decide-EGQ3CRHI.js +0 -199
- package/dist/delete-55IHV25V.js +0 -63
- package/dist/delete-GXLPIGTC.js +0 -54
- package/dist/delete-MUPTLWHI.js +0 -71
- package/dist/delete-OW2N4WIA.js +0 -66
- package/dist/delete-R2SEUSLV.js +0 -69
- package/dist/delete-ZGBBWFAW.js +0 -71
- package/dist/demographics-K6DEWUE5.js +0 -138
- package/dist/describe-4O3VCV6L.js +0 -97
- package/dist/describe-FCTM53MM.js +0 -97
- package/dist/dimensions-AD4VS5AH.js +0 -101
- package/dist/discard-NZ7FQJEE.js +0 -66
- package/dist/discover-OISU5EJF.js +0 -172
- package/dist/discover-UQXQUPNO.js +0 -93
- package/dist/domain-DXBHNZLO.js +0 -98
- package/dist/download-IE6XLFHM.js +0 -299
- package/dist/draft-DB6KMBCH.js +0 -306
- package/dist/draft-ENA7S4Y7.js +0 -103
- package/dist/draft-HJBAG3SN.js +0 -307
- package/dist/draft-ICEVLF4E.js +0 -328
- package/dist/draft-MGKJ5RYI.js +0 -100
- package/dist/draft-OBFKQEPK.js +0 -281
- package/dist/draft-OOHU6NMA.js +0 -217
- package/dist/draft-S6VPKZYY.js +0 -233
- package/dist/env-YLOVBOAE.js +0 -43
- package/dist/experiment-PHFP6IBM.js +0 -1397
- package/dist/export-R2IMUCQO.js +0 -168
- package/dist/extract-OQP3TSQG.js +0 -113
- package/dist/facets-NUKR7I57.js +0 -114
- package/dist/favorites-NS73FDG5.js +0 -178
- package/dist/feed-SQPOB7SP.js +0 -177
- package/dist/feedback-SQAAAKOQ.js +0 -66
- package/dist/feedback-record-7W7WBHSQ.js +0 -175
- package/dist/feedback-record-7W7WBHSQ.js.map +0 -1
- package/dist/fetch-PQ3NOPIE.js +0 -139
- package/dist/fetch-PTSAVQW5.js +0 -176
- package/dist/find-Y22AANDE.js +0 -134
- package/dist/find-Y22AANDE.js.map +0 -1
- package/dist/fit-IITU6UWC.js +0 -45
- package/dist/flows-ZLF3QJ76.js +0 -247
- package/dist/flows-ZLF3QJ76.js.map +0 -1
- package/dist/follow-N3DQZV7M.js +0 -94
- package/dist/follow-competitors-BZPCBGIB.js +0 -112
- package/dist/following-KESWTEBR.js +0 -113
- package/dist/fonts-FG6XMK5A.js +0 -34
- package/dist/forecast-43XBSHJR.js +0 -168
- package/dist/forecast-MAFZQ4UF.js +0 -104
- package/dist/funding-HYSCYS62.js +0 -85
- package/dist/funnel-32CNV57L.js +0 -394
- package/dist/ga4-J2KTNCD4.js +0 -55
- package/dist/generate-G3I5BLLW.js +0 -262
- package/dist/generate-G3I5BLLW.js.map +0 -1
- package/dist/get-3P2EQLP3.js +0 -63
- package/dist/get-FJB3X44Z.js +0 -61
- package/dist/get-GDF5V3RN.js +0 -78
- package/dist/get-MBGO4VJD.js +0 -63
- package/dist/get-NOKSZPIV.js +0 -59
- package/dist/get-W7MKBMQ3.js +0 -56
- package/dist/get-WHC4SRYK.js +0 -92
- package/dist/gif-SFYVDLCU.js +0 -94
- package/dist/google-THWFDDHJ.js +0 -3191
- package/dist/google-THWFDDHJ.js.map +0 -1
- package/dist/google-XRAMIES5.js +0 -136
- package/dist/google-ads-N55SE2CB.js +0 -195
- package/dist/group-6RDJTWVN.js +0 -43
- package/dist/group-TZJCKHKS.js +0 -43
- package/dist/gsc-HD6UFRYM.js +0 -30
- package/dist/history-4RWCE7WW.js +0 -67
- package/dist/history-IROFQ6LA.js +0 -133
- package/dist/hubspot-75N4AI43.js +0 -779
- package/dist/icon-BMCDFGMN.js +0 -137
- package/dist/ideas-7UQMXLI5.js +0 -32
- package/dist/images-OFR3S2U4.js +0 -90
- package/dist/improve-P6F2HXYQ.js +0 -86
- package/dist/ingest-HGR7KSG4.js +0 -107
- package/dist/ingest-XU4WXE4U.js +0 -23
- package/dist/insights-7SI2TB72.js +0 -128
- package/dist/insights-7SI2TB72.js.map +0 -1
- package/dist/insights-P5VIDOZN.js +0 -432
- package/dist/insights-P5VIDOZN.js.map +0 -1
- package/dist/inspect-TL2VZBN7.js +0 -189
- package/dist/inspiration-7WTS3AVI.js +0 -53
- package/dist/intent-OCZE4O7R.js +0 -95
- package/dist/job-XMPQ27SJ.js +0 -202
- package/dist/job-create-HTDQHPEF.js +0 -109
- package/dist/job-status-L7WUTZ2C.js +0 -74
- package/dist/keep-42SLV4CR.js +0 -78
- package/dist/keyword-gap-323NE4AK.js +0 -130
- package/dist/keyword-metrics-V6DGO7U5.js +0 -197
- package/dist/keywords-for-site-ANSLXBHB.js +0 -128
- package/dist/landing-K25GUBLZ.js +0 -28
- package/dist/landings-5IYXHA5Z.js +0 -151
- package/dist/languages-SRFGW6Z3.js +0 -55
- package/dist/languages-US6JUATO.js +0 -40
- package/dist/launches-7U4TPNO3.js +0 -108
- package/dist/launches-7U4TPNO3.js.map +0 -1
- package/dist/layerize-U672AXED.js +0 -190
- package/dist/leads-MXUQISOC.js +0 -293
- package/dist/leads-UJVKPRXX.js +0 -90
- package/dist/learn-XTEU4K66.js +0 -203
- package/dist/learn-XTEU4K66.js.map +0 -1
- package/dist/library-RPFXNER4.js +0 -109
- package/dist/library-RPFXNER4.js.map +0 -1
- package/dist/lighthouse-SJ4QNLUS.js +0 -75
- package/dist/line-item-writes-NURRHJ7P.js +0 -208
- package/dist/line-items-PC6QWV5J.js +0 -103
- package/dist/link-ZSXKCLQD.js +0 -64
- package/dist/linkedin-EZJJBKY3.js +0 -1008
- package/dist/list-ECF3RA26.js +0 -303
- package/dist/list-GQ65MC2N.js +0 -65
- package/dist/list-K56J7FZW.js +0 -51
- package/dist/list-M4Z3WYPM.js +0 -76
- package/dist/list-N7ZLO2LE.js +0 -63
- package/dist/list-Q5ZZRPHO.js +0 -151
- package/dist/list-SXYVDDMU.js +0 -57
- package/dist/list-XFIOXFB2.js +0 -50
- package/dist/locations-LZUHWKZY.js +0 -40
- package/dist/locations-NG4YXIBT.js +0 -67
- package/dist/log-EEBJQ6X2.js +0 -92
- package/dist/logo-4JOWGJ5A.js +0 -18
- package/dist/lookup-7NBZ64TE.js +0 -22
- package/dist/make-3J5EK52U.js +0 -633
- package/dist/make-3J5EK52U.js.map +0 -1
- package/dist/map-JVVNH2RI.js +0 -404
- package/dist/map-JVVNH2RI.js.map +0 -1
- package/dist/mcp-DAKGMA2Z.js +0 -463
- package/dist/media-2SWDJDA6.js +0 -15
- package/dist/media-R64YP7T2.js +0 -89
- package/dist/media-sources-L2X3KRDU.js +0 -32
- package/dist/members-22BOEGQS.js +0 -44
- package/dist/meta-RBHF2RG3.js +0 -69
- package/dist/metrics-IXRQZVSM.js +0 -152
- package/dist/models-BDXZ56GI.js +0 -155
- package/dist/normalize-JAE3NVOX.js +0 -141
- package/dist/normalize-P5Q3F7FU.js +0 -806
- package/dist/options-YTIU3BDC.js +0 -121
- package/dist/options-YTIU3BDC.js.map +0 -1
- package/dist/output-ZL62UZHQ.js +0 -24
- package/dist/page-FZ7IZ5CV.js +0 -105
- package/dist/pages-SS7TZTHV.js +0 -66
- package/dist/performance-FOOV624A.js +0 -24
- package/dist/performance-VYEANYQ5.js +0 -4707
- package/dist/performance-VYEANYQ5.js.map +0 -1
- package/dist/pinterest-UETS7U7U.js +0 -96
- package/dist/pixels-LCTMLKGP.js +0 -108
- package/dist/pixels-MPZYWGFD.js +0 -60
- package/dist/plan-V74EVXTW.js +0 -207
- package/dist/preview-RU54Z4EM.js +0 -169
- package/dist/profile-NQOIBLJL.js +0 -150
- package/dist/profile-NQOIBLJL.js.map +0 -1
- package/dist/promoted-tweet-writes-FQRFU7PB.js +0 -180
- package/dist/promoted-tweets-L2L3V5SF.js +0 -119
- package/dist/properties-ZUDQH3LE.js +0 -101
- package/dist/publish-5XTAHTM4.js +0 -322
- package/dist/query-26T7XATH.js +0 -236
- package/dist/query-SHUOHXTO.js +0 -247
- package/dist/query-XISUHMBR.js +0 -62
- package/dist/questionnaire-UG55JLVW.js +0 -93
- package/dist/read-UYSQAXRV.js +0 -141
- package/dist/reddit-BCB4FT6J.js +0 -26
- package/dist/refresh-WY5NPNLX.js +0 -94
- package/dist/release-JBSPPNQE.js +0 -60
- package/dist/relevant-pages-OU5H56KY.js +0 -99
- package/dist/remove-2KACTXKP.js +0 -48
- package/dist/remove-M5P7M5JU.js +0 -50
- package/dist/reopen-J3VW5766.js +0 -63
- package/dist/rerun-5MRYJG6U.js +0 -84
- package/dist/rerun-5MRYJG6U.js.map +0 -1
- package/dist/research-4CAA5CA2.js +0 -262
- package/dist/research-7LBTJ2B2.js +0 -62
- package/dist/reset-DBWWGCXY.js +0 -54
- package/dist/reset-DJSSXC4Y.js +0 -54
- package/dist/resolve-BNRUYS56.js +0 -121
- package/dist/retry-TMRIFGVT.js +0 -62
- package/dist/retry-WRBGLB7O.js +0 -60
- package/dist/retry-failed-NWLH6WHK.js +0 -45
- package/dist/run-TA3DP6QG.js +0 -59
- package/dist/run-VVTLDRRW.js +0 -65
- package/dist/scaffold-ad-7DSV6XDB.js +0 -1548
- package/dist/scaffold-ad-7DSV6XDB.js.map +0 -1
- package/dist/scaffold-static-ad-BEZ37QWN.js +0 -971
- package/dist/scaffold-static-ad-BEZ37QWN.js.map +0 -1
- package/dist/scaffold-video-SPCMTYK3.js +0 -872
- package/dist/scaffold-video-SPCMTYK3.js.map +0 -1
- package/dist/schedule-BQQGYGT7.js +0 -61
- package/dist/schedule-S547HPUT.js +0 -66
- package/dist/scheduled-agents-4Q6WS333.js +0 -49
- package/dist/scheduled-agents-4Q6WS333.js.map +0 -1
- package/dist/schema-DDEWM5ZX.js +0 -132
- package/dist/schema-SQIP75WG.js +0 -63
- package/dist/scrape-TI6S2W7I.js +0 -2241
- package/dist/screenshot-XFAYY4WW.js +0 -102
- package/dist/search-4HIOKYFR.js +0 -26
- package/dist/search-D2IV7KFJ.js +0 -92
- package/dist/search-IZPDHRJ4.js +0 -224
- package/dist/search-KFDL2IGG.js +0 -91
- package/dist/search-VJBKRD2U.js +0 -174
- package/dist/search-copy-QZXCAGK4.js +0 -168
- package/dist/seeds-VUNZMHZH.js +0 -101
- package/dist/select-U5TPAXGY.js +0 -94
- package/dist/select-U5TPAXGY.js.map +0 -1
- package/dist/sends-7HWLIOUO.js +0 -309
- package/dist/sequences-5RAGZE7L.js +0 -146
- package/dist/set-prompt-MHU4WI3Q.js +0 -185
- package/dist/set-prompt-MHU4WI3Q.js.map +0 -1
- package/dist/setup-links-SPIGXQTY.js +0 -141
- package/dist/shared-3CGGKICB.js +0 -31
- package/dist/site-FW6K6L6M.js +0 -177
- package/dist/sitemaps-3WDYQHYR.js +0 -87
- package/dist/sites-G4DQ2Z2X.js +0 -101
- package/dist/skills-PA26HXEP.js +0 -47
- package/dist/sources-4NAC6HV6.js +0 -421
- package/dist/sources-4NAC6HV6.js.map +0 -1
- package/dist/sources-PMBWG4KO.js +0 -30
- package/dist/stale-5IMY6MWC.js +0 -63
- package/dist/stale-5IMY6MWC.js.map +0 -1
- package/dist/stats-Q35I5DRW.js +0 -34
- package/dist/status-62SUXUWW.js +0 -62
- package/dist/sticker-MC2IAIQB.js +0 -94
- package/dist/stock-B7LKMKUK.js +0 -179
- package/dist/studio-BB2EVW5I.js +0 -49
- package/dist/sync-CLZDZL5F.js +0 -54
- package/dist/sync-XCHBEBZG.js +0 -279
- package/dist/sync-XCHBEBZG.js.map +0 -1
- package/dist/sync-YTHNOAAM.js +0 -54
- package/dist/sync-definition-DYSVT7BJ.js +0 -52
- package/dist/tag-manager-EAREWVYR.js +0 -43
- package/dist/tags-53AG3FYG.js +0 -20
- package/dist/tags-7TH7TVR6.js +0 -224
- package/dist/tags-EB4RE3ML.js +0 -20
- package/dist/tags-EUEWDTTN.js +0 -20
- package/dist/tags-ICAWBCOR.js +0 -26
- package/dist/targeting-constants-IFE72XKL.js +0 -118
- package/dist/targeting-criteria-WZDGJKOI.js +0 -113
- package/dist/targets-OKJ6A4YL.js +0 -102
- package/dist/templates-IA5TDCCZ.js +0 -178
- package/dist/templates-IA5TDCCZ.js.map +0 -1
- package/dist/testimonials-THHR5JH5.js +0 -32
- package/dist/themes-ZFRM6AVO.js +0 -94
- package/dist/top-companies-63Q475IA.js +0 -108
- package/dist/translate-XKUWIIOS.js +0 -598
- package/dist/translate-XKUWIIOS.js.map +0 -1
- package/dist/triggers-XLKO2QXQ.js +0 -141
- package/dist/tweets-7EZRFG3Y.js +0 -123
- package/dist/unfollow-WBBTVEHE.js +0 -46
- package/dist/unlink-P7KU54YU.js +0 -67
- package/dist/unstage-EG7AUE5X.js +0 -84
- package/dist/unstage-GHXGDOT2.js +0 -95
- package/dist/update-7EWDO32L.js +0 -98
- package/dist/update-BVYGB4YL.js +0 -142
- package/dist/update-KVMQOVQK.js +0 -63
- package/dist/update-N74F5KXB.js +0 -155
- package/dist/upload-6PYPHPCZ.js +0 -126
- package/dist/upload-NA62W5RS.js +0 -150
- package/dist/upscale-RXJUBHXN.js +0 -109
- package/dist/url-options-EUDXLDBD.js +0 -130
- package/dist/url-params-DBJSM2LP.js +0 -98
- package/dist/use-MHPNS4V4.js +0 -95
- package/dist/validate-TTAGVGM2.js +0 -88
- package/dist/validate-TTAGVGM2.js.map +0 -1
- package/dist/variant-ZFCWILPG.js +0 -338
- package/dist/videos-DUG7JYUA.js +0 -39
- package/dist/view-PYCGDGT2.js +0 -121
- package/dist/viewer-check-HIMNCZGY.js +0 -68
- package/dist/web-SDG42OBC.js +0 -140
- package/dist/winners-AI4PVSOI.js +0 -113
- package/dist/winning-ads-KGAYAIPG.js +0 -84
- package/dist/write-commands-34L5LJIB.js +0 -713
- package/dist/write-commands-5TJ3LQ5F.js +0 -737
- package/dist/write-commands-OYMWOFEY.js +0 -1015
- package/dist/write-commands-R3UCCBUI.js +0 -206
- package/dist/x-VNRVGVLI.js +0 -47
- /package/dist/{account-67PZBEP6.js.map → account-5VPZ3XQ3.js.map} +0 -0
- /package/dist/{account-HZC6X2PH.js.map → account-SYUEXERA.js.map} +0 -0
- /package/dist/{account-TQUV64XP.js.map → account-ZQH535IP.js.map} +0 -0
- /package/dist/{account-reads-IRBTERTY.js.map → account-reads-GUYNJEZA.js.map} +0 -0
- /package/dist/{account-writes-ALDSHAEV.js.map → account-writes-DLCRTL6Y.js.map} +0 -0
- /package/dist/{accounts-4P54UY6F.js.map → accounts-3TNEMLLC.js.map} +0 -0
- /package/dist/{accounts-NJ6TF6WH.js.map → accounts-GBRGCLE3.js.map} +0 -0
- /package/dist/{accounts-GVTZN4VE.js.map → accounts-IPOCFAKK.js.map} +0 -0
- /package/dist/{accounts-WTB737BM.js.map → accounts-QBWYIJ7D.js.map} +0 -0
- /package/dist/{accounts-6UNBLIUH.js.map → accounts-TSM5EHRD.js.map} +0 -0
- /package/dist/{actions-D3BOWDEB.js.map → actions-XZMLYLTK.js.map} +0 -0
- /package/dist/{active-entities-J2O76SRP.js.map → active-entities-MFWTN4VJ.js.map} +0 -0
- /package/dist/{activities-2J7FTZMN.js.map → activities-ZXA53KY7.js.map} +0 -0
- /package/dist/{ad-group-writes-PQKDCMQF.js.map → ad-group-writes-2JBCTSJY.js.map} +0 -0
- /package/dist/{ad-groups-NGYEJMV4.js.map → ad-groups-6JQSO32O.js.map} +0 -0
- /package/dist/{ad-writes-77FVHJTS.js.map → ad-writes-P34Z3ZTX.js.map} +0 -0
- /package/dist/{add-2FHPLALV.js.map → add-F2BF2HAK.js.map} +0 -0
- /package/dist/{add-JP76KCCY.js.map → add-JAXBNDLC.js.map} +0 -0
- /package/dist/{add-62JPGFD4.js.map → add-KAMQP5RM.js.map} +0 -0
- /package/dist/{add-2XJYOGKW.js.map → add-Y6QCWI6Q.js.map} +0 -0
- /package/dist/{add-accounts-M5Y4DQFM.js.map → add-accounts-M4R7ZVHN.js.map} +0 -0
- /package/dist/{ads-DB5NDHX5.js.map → ads-KPUP4WG4.js.map} +0 -0
- /package/dist/{ads-W2IPUWHQ.js.map → ads-UVQN4BTT.js.map} +0 -0
- /package/dist/{ads-LYNA2I7B.js.map → ads-VPSHNIWG.js.map} +0 -0
- /package/dist/{adsets-PY5ZKGBO.js.map → adsets-JAQKFDLX.js.map} +0 -0
- /package/dist/{advertisers-NZPJQF7W.js.map → advertisers-2ETFYRKA.js.map} +0 -0
- /package/dist/{advertisers-BVAZ4XUX.js.map → advertisers-6ONURKP2.js.map} +0 -0
- /package/dist/{analytics-NTPZKMYK.js.map → analytics-XZ56777C.js.map} +0 -0
- /package/dist/{animate-EIV2OHXT.js.map → animate-KZQCCL65.js.map} +0 -0
- /package/dist/{assign-UNIA5YDC.js.map → assign-DDXB7A6W.js.map} +0 -0
- /package/dist/{audience-size-4NN6ENP5.js.map → audience-size-5QQAABZQ.js.map} +0 -0
- /package/dist/{audiences-VYFX7OFS.js.map → audiences-I4KJ6DZ7.js.map} +0 -0
- /package/dist/{audiences-UUIYQFS6.js.map → audiences-IFBZCTME.js.map} +0 -0
- /package/dist/{audiences-45ZCY2VZ.js.map → audiences-THTWZOMA.js.map} +0 -0
- /package/dist/{audit-NSVHNA5J.js.map → audit-2KOD4YCF.js.map} +0 -0
- /package/dist/{audit-OWXTLQC4.js.map → audit-MFTERSQZ.js.map} +0 -0
- /package/dist/{autocomplete-EHWAQYVB.js.map → autocomplete-JC46QNHQ.js.map} +0 -0
- /package/dist/{avatars-7WZPW7BV.js.map → avatars-ZXQRZJM2.js.map} +0 -0
- /package/dist/{bid-pricing-F5NDMS6W.js.map → bid-pricing-46W7LSU5.js.map} +0 -0
- /package/dist/{brand-QAJ5VWFM.js.map → brand-XROP2WL2.js.map} +0 -0
- /package/dist/{businesses-ZH67AXR6.js.map → businesses-JWOIY3OR.js.map} +0 -0
- /package/dist/{campaign-groups-KFJKLNNU.js.map → campaign-groups-5O3SR5X2.js.map} +0 -0
- /package/dist/{campaign-writes-BDGQ6XB3.js.map → campaign-writes-4D4256DP.js.map} +0 -0
- /package/dist/{campaign-writes-FNMAGCKB.js.map → campaign-writes-5BEK2QBJ.js.map} +0 -0
- /package/dist/{campaigns-HJTGX5WW.js.map → campaigns-6DX2MACO.js.map} +0 -0
- /package/dist/{campaigns-6HMHOXXY.js.map → campaigns-EJT7IMDT.js.map} +0 -0
- /package/dist/{campaigns-KT3J2O7S.js.map → campaigns-OKU4HN5Q.js.map} +0 -0
- /package/dist/{campaigns-66OOGMDW.js.map → campaigns-QVPLPTH3.js.map} +0 -0
- /package/dist/{canvas-MQ6ZE5CZ.js.map → canvas-XCP2WPYO.js.map} +0 -0
- /package/dist/{capabilities-RVUMPP7C.js.map → capabilities-W4XDJVDW.js.map} +0 -0
- /package/dist/{cards-I4BZIYUV.js.map → cards-2QCVG77U.js.map} +0 -0
- /package/dist/{catalogs-B2NKQO24.js.map → catalogs-RVW4L6C6.js.map} +0 -0
- /package/dist/{changes-FX3TPYGT.js.map → changes-XRPDY2K4.js.map} +0 -0
- /package/dist/{chatgpt-3NS2R442.js.map → chatgpt-RNGSOVHP.js.map} +0 -0
- /package/dist/{chats-72L7U4ML.js.map → chats-JKCUA26S.js.map} +0 -0
- /package/dist/{chunk-F3FSD6BO.js.map → chunk-2C36DHQH.js.map} +0 -0
- /package/dist/{chunk-TY7TEU3T.js.map → chunk-2LIAXB3W.js.map} +0 -0
- /package/dist/{chunk-CBCGVPHB.js.map → chunk-2MT3AWDE.js.map} +0 -0
- /package/dist/{chunk-GT4UFORX.js.map → chunk-2WRK44LZ.js.map} +0 -0
- /package/dist/{chunk-O5XLQUDS.js.map → chunk-3FDGC2UH.js.map} +0 -0
- /package/dist/{chunk-CECS3DHZ.js.map → chunk-3FFJYMKM.js.map} +0 -0
- /package/dist/{chunk-THU74XR6.js.map → chunk-3PL2QRF2.js.map} +0 -0
- /package/dist/{chunk-IJDF7D4U.js.map → chunk-3XDZMLX6.js.map} +0 -0
- /package/dist/{chunk-G3KO2HFZ.js.map → chunk-4R7H4RV6.js.map} +0 -0
- /package/dist/{chunk-6GFJFTG6.js.map → chunk-4TBDEV7X.js.map} +0 -0
- /package/dist/{chunk-Q676JHJA.js.map → chunk-5VD5GK6A.js.map} +0 -0
- /package/dist/{chunk-GKXMIXEV.js.map → chunk-5ZIGEHQQ.js.map} +0 -0
- /package/dist/{chunk-P5T7OZKV.js.map → chunk-66ZIZ7QP.js.map} +0 -0
- /package/dist/{chunk-ZO2YLHRW.js.map → chunk-6DSLFOKJ.js.map} +0 -0
- /package/dist/{chunk-VHMNSO2B.js.map → chunk-6FHP2HIK.js.map} +0 -0
- /package/dist/{chunk-H7JOVRHO.js.map → chunk-6VI2DDGZ.js.map} +0 -0
- /package/dist/{chunk-AFDPISNJ.js.map → chunk-72QBQS63.js.map} +0 -0
- /package/dist/{chunk-2KIF3U2C.js.map → chunk-7DBOLSUL.js.map} +0 -0
- /package/dist/{chunk-SJLIV6PF.js.map → chunk-7FDDOOM4.js.map} +0 -0
- /package/dist/{chunk-KB5HBQEK.js.map → chunk-AN7CMLYY.js.map} +0 -0
- /package/dist/{chunk-AIDXJHZ4.js.map → chunk-BDMZRWQI.js.map} +0 -0
- /package/dist/{chunk-NFSLRRIE.js.map → chunk-BITS62MF.js.map} +0 -0
- /package/dist/{chunk-AR7PU7BB.js.map → chunk-CCFZB42B.js.map} +0 -0
- /package/dist/{chunk-Z5KBRTB2.js.map → chunk-CKRSSMRT.js.map} +0 -0
- /package/dist/{chunk-YONSWWCF.js.map → chunk-D53AAUG4.js.map} +0 -0
- /package/dist/{chunk-6HPIWZHS.js.map → chunk-DGUYFROS.js.map} +0 -0
- /package/dist/{chunk-65BQAJMH.js.map → chunk-DS2ZRTAL.js.map} +0 -0
- /package/dist/{chunk-NAMEFVWL.js.map → chunk-EIJDXZW5.js.map} +0 -0
- /package/dist/{chunk-57UECM77.js.map → chunk-EJH2JOVG.js.map} +0 -0
- /package/dist/{chunk-VKH6LSC2.js.map → chunk-EJWFD6T3.js.map} +0 -0
- /package/dist/{chunk-DL2W4N7J.js.map → chunk-ELNN4SNW.js.map} +0 -0
- /package/dist/{chunk-P3ZJIIDS.js.map → chunk-EUB327FC.js.map} +0 -0
- /package/dist/{chunk-GZ6YS7TG.js.map → chunk-FBF5XDJX.js.map} +0 -0
- /package/dist/{chunk-QJPPPQPD.js.map → chunk-FP3GNJN2.js.map} +0 -0
- /package/dist/{chunk-PELW56D7.js.map → chunk-G373L4GL.js.map} +0 -0
- /package/dist/{chunk-SLCSLVGS.js.map → chunk-GTOHNTTI.js.map} +0 -0
- /package/dist/{chunk-YGL5LTEA.js.map → chunk-HDNZSVJJ.js.map} +0 -0
- /package/dist/{chunk-J5WZ7SAD.js.map → chunk-HLAAGGDS.js.map} +0 -0
- /package/dist/{chunk-W6ASM6UP.js.map → chunk-HX7PM34O.js.map} +0 -0
- /package/dist/{chunk-INJHF7AF.js.map → chunk-IKTKWXP6.js.map} +0 -0
- /package/dist/{chunk-ZBKBTTHD.js.map → chunk-IOGKJZ4Z.js.map} +0 -0
- /package/dist/{chunk-W7KB3LJE.js.map → chunk-IVRXPYQ7.js.map} +0 -0
- /package/dist/{chunk-QHIUJXU7.js.map → chunk-JIJJCU6E.js.map} +0 -0
- /package/dist/{chunk-JC6GNMA7.js.map → chunk-JOCKYH6U.js.map} +0 -0
- /package/dist/{chunk-ZJR5E53N.js.map → chunk-L44WSWSZ.js.map} +0 -0
- /package/dist/{chunk-4TU2MWBJ.js.map → chunk-M525HJTA.js.map} +0 -0
- /package/dist/{chunk-D5MF337I.js.map → chunk-MMU6XHCH.js.map} +0 -0
- /package/dist/{chunk-WILN7TD6.js.map → chunk-MRRSKRZZ.js.map} +0 -0
- /package/dist/{chunk-O3LHCQ7Q.js.map → chunk-NFHUJRDE.js.map} +0 -0
- /package/dist/{chunk-IZFGTGFR.js.map → chunk-NSHJ6OOK.js.map} +0 -0
- /package/dist/{chunk-J2QOKD2F.js.map → chunk-OCBAKPHH.js.map} +0 -0
- /package/dist/{chunk-BVYPRGPG.js.map → chunk-OFTU5XBQ.js.map} +0 -0
- /package/dist/{chunk-KB5XJHQX.js.map → chunk-OSWCEDFE.js.map} +0 -0
- /package/dist/{chunk-LHNL6JM2.js.map → chunk-OTNGMKI6.js.map} +0 -0
- /package/dist/{chunk-QWX3QJNM.js.map → chunk-PAJJXZ3Z.js.map} +0 -0
- /package/dist/{chunk-7GYM4I5I.js.map → chunk-PGSXR5UM.js.map} +0 -0
- /package/dist/{chunk-EOGPNV25.js.map → chunk-QAOEVZYY.js.map} +0 -0
- /package/dist/{chunk-PGVF4SB7.js.map → chunk-R5HMAIZM.js.map} +0 -0
- /package/dist/{chunk-DDTILZXI.js.map → chunk-RPRLCIHB.js.map} +0 -0
- /package/dist/{chunk-QDOVBGKZ.js.map → chunk-RV4GIY23.js.map} +0 -0
- /package/dist/{chunk-VTCBPYGE.js.map → chunk-RXUEYD2S.js.map} +0 -0
- /package/dist/{chunk-UXTZ5MBE.js.map → chunk-SJOWZKNB.js.map} +0 -0
- /package/dist/{chunk-ZNNC6B75.js.map → chunk-TE3N5AGN.js.map} +0 -0
- /package/dist/{chunk-QNEX7FEC.js.map → chunk-TPQH4UXJ.js.map} +0 -0
- /package/dist/{chunk-DLUWHZCE.js.map → chunk-TQUNJFGF.js.map} +0 -0
- /package/dist/{chunk-V43RLLZE.js.map → chunk-TYSN5VVJ.js.map} +0 -0
- /package/dist/{chunk-7NTION5F.js.map → chunk-UKMG6YWX.js.map} +0 -0
- /package/dist/{chunk-PA5MYVQY.js.map → chunk-WDAWTHQK.js.map} +0 -0
- /package/dist/{chunk-ZPJE6D7W.js.map → chunk-X3PCCHP2.js.map} +0 -0
- /package/dist/{chunk-RUHMLPH5.js.map → chunk-YJAQWTS6.js.map} +0 -0
- /package/dist/{chunk-VFSLIDXA.js.map → chunk-YNOJN5Z6.js.map} +0 -0
- /package/dist/{chunk-FDG2LLX7.js.map → chunk-YTV5VW7S.js.map} +0 -0
- /package/dist/{chunk-NORAJYUI.js.map → chunk-ZO4GMUO3.js.map} +0 -0
- /package/dist/{chunk-35ENAFJX.js.map → chunk-ZSRLDTDC.js.map} +0 -0
- /package/dist/{claim-DIITRUIN.js.map → claim-JBNO7M6J.js.map} +0 -0
- /package/dist/{client-LY2JCQS2.js.map → client-CPAPILIF.js.map} +0 -0
- /package/dist/{code-7CBNYUPU.js.map → code-GHOVETWX.js.map} +0 -0
- /package/dist/{companies-HHSYHL74.js.map → companies-47T2PCRZ.js.map} +0 -0
- /package/dist/{complete-M3TURPU5.js.map → complete-T3PKN4B7.js.map} +0 -0
- /package/dist/{config-7COTFJWK.js.map → config-AFNXR5FA.js.map} +0 -0
- /package/dist/{connect-TQL5EVVE.js.map → connect-T7R43GIH.js.map} +0 -0
- /package/dist/{content-OXMONMHJ.js.map → content-M3U2SCFJ.js.map} +0 -0
- /package/dist/{conversation-GE273GC4.js.map → conversation-BG7WEMXQ.js.map} +0 -0
- /package/dist/{conversion-report-BH4HH2Q3.js.map → conversion-report-URDTPXQ7.js.map} +0 -0
- /package/dist/{conversion-upload-command-QWWYCTNV.js.map → conversion-upload-command-BWF6MAOK.js.map} +0 -0
- /package/dist/{conversion-writes-HG2O6JI7.js.map → conversion-writes-7MGIFJ3H.js.map} +0 -0
- /package/dist/{conversions-XPSN7SOW.js.map → conversions-QY6COYPP.js.map} +0 -0
- /package/dist/{conversions-DP6ZF57D.js.map → conversions-UTXG5YEO.js.map} +0 -0
- /package/dist/{countries-UXAUGSBR.js.map → countries-MUZPFSYZ.js.map} +0 -0
- /package/dist/{create-XLZYNFKN.js.map → create-6QASIASQ.js.map} +0 -0
- /package/dist/{create-ENQWVWGB.js.map → create-FIHEJRAF.js.map} +0 -0
- /package/dist/{create-NVXJP477.js.map → create-JXZBMXUS.js.map} +0 -0
- /package/dist/{creatives-ONKKGW5T.js.map → creatives-6FG6VAB4.js.map} +0 -0
- /package/dist/{creatives-O3444SBT.js.map → creatives-UD6TFATS.js.map} +0 -0
- /package/dist/{credentials-3UY7RVUL.js.map → credentials-ECPD2A7X.js.map} +0 -0
- /package/dist/{crm-XXU5XZIQ.js.map → crm-4EWUWZNZ.js.map} +0 -0
- /package/dist/{crm-OX67TBWD.js.map → crm-ASWKMKF3.js.map} +0 -0
- /package/dist/{crop-3ZV5BFCA.js.map → crop-MIVSA2YF.js.map} +0 -0
- /package/dist/{currency-XP4EMU4M.js.map → currency-5LU3D62R.js.map} +0 -0
- /package/dist/{custom-conversions-TV23XQHW.js.map → custom-conversions-3QGJQRYS.js.map} +0 -0
- /package/dist/{customers-EJ7FVCTC.js.map → customers-EEBZXQ4J.js.map} +0 -0
- /package/dist/{decide-EGQ3CRHI.js.map → decide-ZODJU7DY.js.map} +0 -0
- /package/dist/{delete-MUPTLWHI.js.map → delete-CTH3TGNM.js.map} +0 -0
- /package/dist/{delete-GXLPIGTC.js.map → delete-D6GNTBYI.js.map} +0 -0
- /package/dist/{delete-R2SEUSLV.js.map → delete-IWIDUJNS.js.map} +0 -0
- /package/dist/{delete-ZGBBWFAW.js.map → delete-TLVYBVRP.js.map} +0 -0
- /package/dist/{delete-55IHV25V.js.map → delete-XPHIQY5Z.js.map} +0 -0
- /package/dist/{delete-OW2N4WIA.js.map → delete-XZEPLAKT.js.map} +0 -0
- /package/dist/{demographics-K6DEWUE5.js.map → demographics-L3TJJAFF.js.map} +0 -0
- /package/dist/{describe-FCTM53MM.js.map → describe-5PM5OSYK.js.map} +0 -0
- /package/dist/{describe-4O3VCV6L.js.map → describe-KQLRHGFX.js.map} +0 -0
- /package/dist/{dimensions-AD4VS5AH.js.map → dimensions-6H24D7CM.js.map} +0 -0
- /package/dist/{discard-NZ7FQJEE.js.map → discard-74I3M2DF.js.map} +0 -0
- /package/dist/{discover-UQXQUPNO.js.map → discover-6LGIHWVP.js.map} +0 -0
- /package/dist/{discover-OISU5EJF.js.map → discover-HBQO4RSF.js.map} +0 -0
- /package/dist/{domain-DXBHNZLO.js.map → domain-E5DTPAZI.js.map} +0 -0
- /package/dist/{download-IE6XLFHM.js.map → download-ED52W77T.js.map} +0 -0
- /package/dist/{draft-DB6KMBCH.js.map → draft-3XYF2L4K.js.map} +0 -0
- /package/dist/{draft-ENA7S4Y7.js.map → draft-5IEMZ4W3.js.map} +0 -0
- /package/dist/{draft-OBFKQEPK.js.map → draft-6UVGEERY.js.map} +0 -0
- /package/dist/{draft-S6VPKZYY.js.map → draft-FDBE36CP.js.map} +0 -0
- /package/dist/{draft-HJBAG3SN.js.map → draft-PE4DN44Y.js.map} +0 -0
- /package/dist/{draft-ICEVLF4E.js.map → draft-QBR22TG2.js.map} +0 -0
- /package/dist/{draft-OOHU6NMA.js.map → draft-VZYSJVF5.js.map} +0 -0
- /package/dist/{draft-MGKJ5RYI.js.map → draft-YWTLO2ON.js.map} +0 -0
- /package/dist/{env-YLOVBOAE.js.map → env-GS2TUVCM.js.map} +0 -0
- /package/dist/{experiment-PHFP6IBM.js.map → experiment-XDJHSOBC.js.map} +0 -0
- /package/dist/{export-R2IMUCQO.js.map → export-GV5CF5UM.js.map} +0 -0
- /package/dist/{extract-OQP3TSQG.js.map → extract-4OXK7L7R.js.map} +0 -0
- /package/dist/{facets-NUKR7I57.js.map → facets-XPB2ELM2.js.map} +0 -0
- /package/dist/{favorites-NS73FDG5.js.map → favorites-VKPXGTK6.js.map} +0 -0
- /package/dist/{feed-SQPOB7SP.js.map → feed-B2YLZQNU.js.map} +0 -0
- /package/dist/{feedback-SQAAAKOQ.js.map → feedback-HT2M63QW.js.map} +0 -0
- /package/dist/{fetch-PQ3NOPIE.js.map → fetch-2O7EUCCZ.js.map} +0 -0
- /package/dist/{fetch-PTSAVQW5.js.map → fetch-GMNE6KOJ.js.map} +0 -0
- /package/dist/{fit-IITU6UWC.js.map → fit-S5ZGPNE3.js.map} +0 -0
- /package/dist/{follow-N3DQZV7M.js.map → follow-UNIHLZKA.js.map} +0 -0
- /package/dist/{follow-competitors-BZPCBGIB.js.map → follow-competitors-CQL2B55H.js.map} +0 -0
- /package/dist/{following-KESWTEBR.js.map → following-GMXZIEDZ.js.map} +0 -0
- /package/dist/{fonts-FG6XMK5A.js.map → fonts-GPJQLNQL.js.map} +0 -0
- /package/dist/{forecast-43XBSHJR.js.map → forecast-6AHSHRDJ.js.map} +0 -0
- /package/dist/{forecast-MAFZQ4UF.js.map → forecast-V6BCMR4Y.js.map} +0 -0
- /package/dist/{funding-HYSCYS62.js.map → funding-WPREDQVA.js.map} +0 -0
- /package/dist/{funnel-32CNV57L.js.map → funnel-QDYX3UH5.js.map} +0 -0
- /package/dist/{ga4-J2KTNCD4.js.map → ga4-6AUOX2UW.js.map} +0 -0
- /package/dist/{get-MBGO4VJD.js.map → get-5OEDAT2Q.js.map} +0 -0
- /package/dist/{get-W7MKBMQ3.js.map → get-7WEE5V7M.js.map} +0 -0
- /package/dist/{get-3P2EQLP3.js.map → get-DXGJSEZZ.js.map} +0 -0
- /package/dist/{get-NOKSZPIV.js.map → get-GQWOLALT.js.map} +0 -0
- /package/dist/{get-WHC4SRYK.js.map → get-W7F4FOAR.js.map} +0 -0
- /package/dist/{get-FJB3X44Z.js.map → get-WY6JXFP6.js.map} +0 -0
- /package/dist/{get-GDF5V3RN.js.map → get-X6DSFXN6.js.map} +0 -0
- /package/dist/{gif-SFYVDLCU.js.map → gif-JXWSR2TC.js.map} +0 -0
- /package/dist/{google-XRAMIES5.js.map → google-6QFL6GV3.js.map} +0 -0
- /package/dist/{google-ads-N55SE2CB.js.map → google-ads-ZG3BDUEG.js.map} +0 -0
- /package/dist/{group-TZJCKHKS.js.map → group-7ADT2GWA.js.map} +0 -0
- /package/dist/{group-6RDJTWVN.js.map → group-VD3UIBKE.js.map} +0 -0
- /package/dist/{gsc-HD6UFRYM.js.map → gsc-WHMPFTYA.js.map} +0 -0
- /package/dist/{history-IROFQ6LA.js.map → history-33JKOKAV.js.map} +0 -0
- /package/dist/{history-4RWCE7WW.js.map → history-M3IKDCEO.js.map} +0 -0
- /package/dist/{hubspot-75N4AI43.js.map → hubspot-B4IUIOYX.js.map} +0 -0
- /package/dist/{icon-BMCDFGMN.js.map → icon-R2K27DKI.js.map} +0 -0
- /package/dist/{ideas-7UQMXLI5.js.map → ideas-HHTLPC6Y.js.map} +0 -0
- /package/dist/{images-OFR3S2U4.js.map → images-PV6TZQLL.js.map} +0 -0
- /package/dist/{improve-P6F2HXYQ.js.map → improve-TVFAR27Q.js.map} +0 -0
- /package/dist/{ingest-XU4WXE4U.js.map → ingest-25ZX36RL.js.map} +0 -0
- /package/dist/{ingest-HGR7KSG4.js.map → ingest-MFIT3L23.js.map} +0 -0
- /package/dist/{inspect-TL2VZBN7.js.map → inspect-2IASA5YV.js.map} +0 -0
- /package/dist/{inspiration-7WTS3AVI.js.map → inspiration-O56SOIQP.js.map} +0 -0
- /package/dist/{intent-OCZE4O7R.js.map → intent-JOW24MTF.js.map} +0 -0
- /package/dist/{job-XMPQ27SJ.js.map → job-QUO6KULI.js.map} +0 -0
- /package/dist/{job-create-HTDQHPEF.js.map → job-create-JTOG5M3Q.js.map} +0 -0
- /package/dist/{job-status-L7WUTZ2C.js.map → job-status-3B4X5IPG.js.map} +0 -0
- /package/dist/{keep-42SLV4CR.js.map → keep-5TVGX7EG.js.map} +0 -0
- /package/dist/{keyword-gap-323NE4AK.js.map → keyword-gap-SHLXRIHO.js.map} +0 -0
- /package/dist/{keyword-metrics-V6DGO7U5.js.map → keyword-metrics-NYH6DXKJ.js.map} +0 -0
- /package/dist/{keywords-for-site-ANSLXBHB.js.map → keywords-for-site-JTK64W4I.js.map} +0 -0
- /package/dist/{landing-K25GUBLZ.js.map → landing-4V7HMYCZ.js.map} +0 -0
- /package/dist/{landings-5IYXHA5Z.js.map → landings-LZZO4VVW.js.map} +0 -0
- /package/dist/{languages-SRFGW6Z3.js.map → languages-TINK472E.js.map} +0 -0
- /package/dist/{languages-US6JUATO.js.map → languages-ZIGJHY2T.js.map} +0 -0
- /package/dist/{logo-4JOWGJ5A.js.map → launches-C5XXNF7C.js.map} +0 -0
- /package/dist/{layerize-U672AXED.js.map → layerize-YVCA4JO7.js.map} +0 -0
- /package/dist/{leads-UJVKPRXX.js.map → leads-2WTL7F24.js.map} +0 -0
- /package/dist/{leads-MXUQISOC.js.map → leads-QUO3YNHO.js.map} +0 -0
- /package/dist/{lighthouse-SJ4QNLUS.js.map → lighthouse-QLFI7PSQ.js.map} +0 -0
- /package/dist/{line-item-writes-NURRHJ7P.js.map → line-item-writes-SYSYGV3L.js.map} +0 -0
- /package/dist/{line-items-PC6QWV5J.js.map → line-items-H3M6T7P2.js.map} +0 -0
- /package/dist/{link-ZSXKCLQD.js.map → link-EHSSSV6K.js.map} +0 -0
- /package/dist/{linkedin-EZJJBKY3.js.map → linkedin-BGZIR43P.js.map} +0 -0
- /package/dist/{list-M4Z3WYPM.js.map → list-2IAOPMQC.js.map} +0 -0
- /package/dist/{list-SXYVDDMU.js.map → list-BGT2BEWD.js.map} +0 -0
- /package/dist/{list-Q5ZZRPHO.js.map → list-G2VYAKYF.js.map} +0 -0
- /package/dist/{list-GQ65MC2N.js.map → list-IFXQWBBE.js.map} +0 -0
- /package/dist/{list-XFIOXFB2.js.map → list-LK3CVZ3B.js.map} +0 -0
- /package/dist/{list-ECF3RA26.js.map → list-X2TMGY7C.js.map} +0 -0
- /package/dist/{list-K56J7FZW.js.map → list-X3SEZDKE.js.map} +0 -0
- /package/dist/{list-N7ZLO2LE.js.map → list-ZFS7XBD7.js.map} +0 -0
- /package/dist/{locations-NG4YXIBT.js.map → locations-JC2H5JMY.js.map} +0 -0
- /package/dist/{locations-LZUHWKZY.js.map → locations-M4L7FUOB.js.map} +0 -0
- /package/dist/{log-EEBJQ6X2.js.map → log-4EINR63D.js.map} +0 -0
- /package/dist/{lookup-7NBZ64TE.js.map → logo-7GDRTSLI.js.map} +0 -0
- /package/dist/{output-ZL62UZHQ.js.map → lookup-SJXNPUXG.js.map} +0 -0
- /package/dist/{mcp-DAKGMA2Z.js.map → mcp-RQJAEJCJ.js.map} +0 -0
- /package/dist/{media-R64YP7T2.js.map → media-FYGHJAEG.js.map} +0 -0
- /package/dist/{media-2SWDJDA6.js.map → media-YYYCKXMZ.js.map} +0 -0
- /package/dist/{media-sources-L2X3KRDU.js.map → media-sources-ZLBIC4RM.js.map} +0 -0
- /package/dist/{members-22BOEGQS.js.map → members-SXATNT7V.js.map} +0 -0
- /package/dist/{meta-RBHF2RG3.js.map → meta-OGB3NB2W.js.map} +0 -0
- /package/dist/{metrics-IXRQZVSM.js.map → metrics-52ZARN6M.js.map} +0 -0
- /package/dist/{models-BDXZ56GI.js.map → models-LSEMO4XH.js.map} +0 -0
- /package/dist/{normalize-P5Q3F7FU.js.map → normalize-3HI26S34.js.map} +0 -0
- /package/dist/{normalize-JAE3NVOX.js.map → normalize-SOFYZQSJ.js.map} +0 -0
- /package/dist/{performance-FOOV624A.js.map → output-YJ4YBUU4.js.map} +0 -0
- /package/dist/{page-FZ7IZ5CV.js.map → page-ZGCK6MOQ.js.map} +0 -0
- /package/dist/{pages-SS7TZTHV.js.map → pages-QMP3W2R3.js.map} +0 -0
- /package/dist/{query-XISUHMBR.js.map → performance-BQSWGNFO.js.map} +0 -0
- /package/dist/{pinterest-UETS7U7U.js.map → pinterest-LCVUB2ZL.js.map} +0 -0
- /package/dist/{pixels-MPZYWGFD.js.map → pixels-UQGAPBLG.js.map} +0 -0
- /package/dist/{pixels-LCTMLKGP.js.map → pixels-YM2DX7EN.js.map} +0 -0
- /package/dist/{plan-V74EVXTW.js.map → plan-Z5TZRRCH.js.map} +0 -0
- /package/dist/{preview-RU54Z4EM.js.map → preview-DZQUUQGD.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-FQRFU7PB.js.map → promoted-tweet-writes-VUNJIUA3.js.map} +0 -0
- /package/dist/{promoted-tweets-L2L3V5SF.js.map → promoted-tweets-55X4H7NG.js.map} +0 -0
- /package/dist/{properties-ZUDQH3LE.js.map → properties-CSW67FJG.js.map} +0 -0
- /package/dist/{publish-5XTAHTM4.js.map → publish-U73OR33K.js.map} +0 -0
- /package/dist/{query-26T7XATH.js.map → query-UQQNESTT.js.map} +0 -0
- /package/dist/{reddit-BCB4FT6J.js.map → query-V4I3VCJ7.js.map} +0 -0
- /package/dist/{query-SHUOHXTO.js.map → query-XPCC7OUP.js.map} +0 -0
- /package/dist/{questionnaire-UG55JLVW.js.map → questionnaire-UQNRYZK7.js.map} +0 -0
- /package/dist/{read-UYSQAXRV.js.map → read-RXAOLPG5.js.map} +0 -0
- /package/dist/{run-TA3DP6QG.js.map → reddit-C2B7NT7X.js.map} +0 -0
- /package/dist/{refresh-WY5NPNLX.js.map → refresh-JN4HKE4H.js.map} +0 -0
- /package/dist/{release-JBSPPNQE.js.map → release-HSAOBN5K.js.map} +0 -0
- /package/dist/{relevant-pages-OU5H56KY.js.map → relevant-pages-XBWFEHHE.js.map} +0 -0
- /package/dist/{remove-M5P7M5JU.js.map → remove-G5UXVQ2W.js.map} +0 -0
- /package/dist/{remove-2KACTXKP.js.map → remove-Q4TL5ZFS.js.map} +0 -0
- /package/dist/{reopen-J3VW5766.js.map → reopen-D26VSRRL.js.map} +0 -0
- /package/dist/{research-4CAA5CA2.js.map → research-CRYX2CAR.js.map} +0 -0
- /package/dist/{research-7LBTJ2B2.js.map → research-XRVD2GSG.js.map} +0 -0
- /package/dist/{reset-DJSSXC4Y.js.map → reset-2VVN4CY7.js.map} +0 -0
- /package/dist/{reset-DBWWGCXY.js.map → reset-FWDPBHYO.js.map} +0 -0
- /package/dist/{resolve-BNRUYS56.js.map → resolve-D4PCGIWO.js.map} +0 -0
- /package/dist/{retry-WRBGLB7O.js.map → retry-AHZFHMTH.js.map} +0 -0
- /package/dist/{retry-TMRIFGVT.js.map → retry-FV6ASVO5.js.map} +0 -0
- /package/dist/{retry-failed-NWLH6WHK.js.map → retry-failed-AENQRGML.js.map} +0 -0
- /package/dist/{run-VVTLDRRW.js.map → run-AGSHZQND.js.map} +0 -0
- /package/dist/{search-4HIOKYFR.js.map → run-IRJWKZ3K.js.map} +0 -0
- /package/dist/{schedule-S547HPUT.js.map → schedule-DTKBBIEH.js.map} +0 -0
- /package/dist/{schedule-BQQGYGT7.js.map → schedule-ESHQ4II7.js.map} +0 -0
- /package/dist/{schema-SQIP75WG.js.map → schema-OBF4T2QN.js.map} +0 -0
- /package/dist/{schema-DDEWM5ZX.js.map → schema-SWG2WKYX.js.map} +0 -0
- /package/dist/{scrape-TI6S2W7I.js.map → scrape-AGGDUPPD.js.map} +0 -0
- /package/dist/{screenshot-XFAYY4WW.js.map → screenshot-6GGCQCIV.js.map} +0 -0
- /package/dist/{search-D2IV7KFJ.js.map → search-FRSFGJLZ.js.map} +0 -0
- /package/dist/{search-VJBKRD2U.js.map → search-I64WW2QC.js.map} +0 -0
- /package/dist/{search-IZPDHRJ4.js.map → search-L2KHX5DO.js.map} +0 -0
- /package/dist/{shared-3CGGKICB.js.map → search-MBDEQ6EE.js.map} +0 -0
- /package/dist/{search-KFDL2IGG.js.map → search-UCDN4TOT.js.map} +0 -0
- /package/dist/{search-copy-QZXCAGK4.js.map → search-copy-HX3FYZGT.js.map} +0 -0
- /package/dist/{seeds-VUNZMHZH.js.map → seeds-VFEFE4AK.js.map} +0 -0
- /package/dist/{sends-7HWLIOUO.js.map → sends-WDSOXBSS.js.map} +0 -0
- /package/dist/{sequences-5RAGZE7L.js.map → sequences-NMJ55HS5.js.map} +0 -0
- /package/dist/{setup-links-SPIGXQTY.js.map → setup-links-NAAUQD7O.js.map} +0 -0
- /package/dist/{sync-definition-DYSVT7BJ.js.map → shared-3GVQQQNL.js.map} +0 -0
- /package/dist/{site-FW6K6L6M.js.map → site-VTJU5CRE.js.map} +0 -0
- /package/dist/{sitemaps-3WDYQHYR.js.map → sitemaps-KS57YDGB.js.map} +0 -0
- /package/dist/{sites-G4DQ2Z2X.js.map → sites-PUEEVW7H.js.map} +0 -0
- /package/dist/{skills-PA26HXEP.js.map → skills-N6NRI2LC.js.map} +0 -0
- /package/dist/{sources-PMBWG4KO.js.map → sources-YUMNEFK5.js.map} +0 -0
- /package/dist/{stats-Q35I5DRW.js.map → stats-SY6GRHKB.js.map} +0 -0
- /package/dist/{status-62SUXUWW.js.map → status-PVW64CLX.js.map} +0 -0
- /package/dist/{sticker-MC2IAIQB.js.map → sticker-YS6W5TSZ.js.map} +0 -0
- /package/dist/{stock-B7LKMKUK.js.map → stock-DWL5E6K4.js.map} +0 -0
- /package/dist/{studio-BB2EVW5I.js.map → studio-SXBK2IJJ.js.map} +0 -0
- /package/dist/{sync-YTHNOAAM.js.map → sync-FOLYGQDI.js.map} +0 -0
- /package/dist/{sync-CLZDZL5F.js.map → sync-NORMNZEE.js.map} +0 -0
- /package/dist/{viewer-check-HIMNCZGY.js.map → sync-definition-DTWEW6ZC.js.map} +0 -0
- /package/dist/{tag-manager-EAREWVYR.js.map → tag-manager-ARFZU46G.js.map} +0 -0
- /package/dist/{tags-53AG3FYG.js.map → tags-77JUO75W.js.map} +0 -0
- /package/dist/{tags-7TH7TVR6.js.map → tags-DOJUSHJB.js.map} +0 -0
- /package/dist/{tags-EUEWDTTN.js.map → tags-IESRRMGW.js.map} +0 -0
- /package/dist/{tags-EB4RE3ML.js.map → tags-MRTUBMRD.js.map} +0 -0
- /package/dist/{tags-ICAWBCOR.js.map → tags-SP6GW4R7.js.map} +0 -0
- /package/dist/{targeting-constants-IFE72XKL.js.map → targeting-constants-DVGRIRKD.js.map} +0 -0
- /package/dist/{targeting-criteria-WZDGJKOI.js.map → targeting-criteria-SOK3HUE2.js.map} +0 -0
- /package/dist/{targets-OKJ6A4YL.js.map → targets-V2HNKVUL.js.map} +0 -0
- /package/dist/{testimonials-THHR5JH5.js.map → testimonials-PA2FUV4H.js.map} +0 -0
- /package/dist/{themes-ZFRM6AVO.js.map → themes-IDB7YPHW.js.map} +0 -0
- /package/dist/{top-companies-63Q475IA.js.map → top-companies-XDP4SZN7.js.map} +0 -0
- /package/dist/{triggers-XLKO2QXQ.js.map → triggers-QDXCA5P4.js.map} +0 -0
- /package/dist/{tweets-7EZRFG3Y.js.map → tweets-AISMWXM3.js.map} +0 -0
- /package/dist/{unfollow-WBBTVEHE.js.map → unfollow-PHLMILG2.js.map} +0 -0
- /package/dist/{unlink-P7KU54YU.js.map → unlink-GDZV5GVL.js.map} +0 -0
- /package/dist/{unstage-GHXGDOT2.js.map → unstage-WCC2TI5Z.js.map} +0 -0
- /package/dist/{unstage-EG7AUE5X.js.map → unstage-WDJXHSAV.js.map} +0 -0
- /package/dist/{update-KVMQOVQK.js.map → update-KBF35KYV.js.map} +0 -0
- /package/dist/{update-7EWDO32L.js.map → update-MRG5MPHR.js.map} +0 -0
- /package/dist/{update-N74F5KXB.js.map → update-XNNQGZBO.js.map} +0 -0
- /package/dist/{update-BVYGB4YL.js.map → update-ZGDQJPDL.js.map} +0 -0
- /package/dist/{upload-6PYPHPCZ.js.map → upload-ID35OCCY.js.map} +0 -0
- /package/dist/{upload-NA62W5RS.js.map → upload-R7YJORED.js.map} +0 -0
- /package/dist/{upscale-RXJUBHXN.js.map → upscale-XPGVJWW2.js.map} +0 -0
- /package/dist/{url-options-EUDXLDBD.js.map → url-options-6X7M2J7D.js.map} +0 -0
- /package/dist/{url-params-DBJSM2LP.js.map → url-params-WRLCJRJQ.js.map} +0 -0
- /package/dist/{use-MHPNS4V4.js.map → use-VCL3PRCB.js.map} +0 -0
- /package/dist/{variant-ZFCWILPG.js.map → variant-2NADVT6Q.js.map} +0 -0
- /package/dist/{videos-DUG7JYUA.js.map → videos-M6VK66NI.js.map} +0 -0
- /package/dist/{view-PYCGDGT2.js.map → view-Q5B57K42.js.map} +0 -0
- /package/dist/{web-SDG42OBC.js.map → web-GOD7BF7X.js.map} +0 -0
- /package/dist/{winners-AI4PVSOI.js.map → winners-PK6EMR6B.js.map} +0 -0
- /package/dist/{winning-ads-KGAYAIPG.js.map → winning-ads-F765TFLS.js.map} +0 -0
- /package/dist/{write-commands-OYMWOFEY.js.map → write-commands-4KWMNH6A.js.map} +0 -0
- /package/dist/{write-commands-5TJ3LQ5F.js.map → write-commands-7ECRGXLK.js.map} +0 -0
- /package/dist/{write-commands-34L5LJIB.js.map → write-commands-GL2PHXSU.js.map} +0 -0
- /package/dist/{write-commands-R3UCCBUI.js.map → write-commands-NMV65XXB.js.map} +0 -0
- /package/dist/{x-VNRVGVLI.js.map → x-MDENBZ3X.js.map} +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
failApi
|
|
3
|
+
} from "./chunk-ZO4GMUO3.js";
|
|
4
|
+
import {
|
|
5
|
+
HUBSPOT_MISSING_GRANT_MARKER,
|
|
6
|
+
HUBSPOT_NOT_CONNECTED_MESSAGE
|
|
7
|
+
} from "./chunk-MV2J73HP.js";
|
|
8
|
+
import {
|
|
9
|
+
ApiError
|
|
10
|
+
} from "./chunk-OSWCEDFE.js";
|
|
11
|
+
import {
|
|
12
|
+
writeJson
|
|
13
|
+
} from "./chunk-4WYEGE4N.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/hubspot/refusal.ts
|
|
16
|
+
var CONTINUE = "Keep going with the wider task: say which part you could not read, skip it, and finish everything else. If the `request_connection` call fails, say so plainly and give the exact route: dashboard \u2192 Brain \u2192 Integrations \u2192 Platforms \u2192 HubSpot.";
|
|
17
|
+
function hubspotRefusal(code, message, reason = "so I can count a contact becoming a customer") {
|
|
18
|
+
if (code === "NOT_FOUND" && message.includes(HUBSPOT_NOT_CONNECTED_MESSAGE)) {
|
|
19
|
+
return {
|
|
20
|
+
code: "NO_HUBSPOT_CONNECTION",
|
|
21
|
+
fix: {
|
|
22
|
+
action: "request_connection",
|
|
23
|
+
explanation: `AGENT INSTRUCTION: HubSpot is not connected, and only the user can connect it. Call the \`request_connection\` tool with { platform: "hubspot", reason } \u2014 reason in their words, e.g. "${reason}" \u2014 and they connect it inside the chat; then run this command again. ` + CONTINUE
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (code === "FORBIDDEN" && message.includes(HUBSPOT_MISSING_GRANT_MARKER)) {
|
|
28
|
+
return {
|
|
29
|
+
code: "HUBSPOT_RECONNECT_REQUIRED",
|
|
30
|
+
fix: {
|
|
31
|
+
action: "request_connection",
|
|
32
|
+
explanation: 'AGENT INSTRUCTION: HubSpot is connected \u2014 do not tell the user it is missing, and do not retry. Its access does not cover this read (it was connected before Baker asked for it, or the access was withdrawn), and only the user can widen it. Call the `request_connection` tool with { platform: "hubspot", reason } naming what you need to read; the card offers them a Reconnect button. Run this command again once they have. ' + CONTINUE
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
function failNotConnected(err, reason) {
|
|
39
|
+
const refusal = err instanceof ApiError ? hubspotRefusal(err.code, err.message, reason) : null;
|
|
40
|
+
if (err instanceof ApiError && refusal !== null) {
|
|
41
|
+
writeJson({ ok: false, error: { code: refusal.code, message: err.message, fix: refusal.fix } });
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
failApi(err);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export {
|
|
48
|
+
hubspotRefusal,
|
|
49
|
+
failNotConnected
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=chunk-7DBOLSUL.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
latestVersion
|
|
3
|
+
} from "./chunk-72QBQS63.js";
|
|
4
|
+
import {
|
|
5
|
+
canvasOutputsRoot
|
|
6
|
+
} from "./chunk-DS2ZRTAL.js";
|
|
7
|
+
|
|
8
|
+
// src/commands/creatives/version-of.ts
|
|
9
|
+
import path from "path";
|
|
10
|
+
async function versionOf(slug, run) {
|
|
11
|
+
if (typeof run === "string" && run.trim()) return run.trim();
|
|
12
|
+
const canvas = path.join("src", "creatives", slug, `${slug}.canvas.json`);
|
|
13
|
+
return await latestVersion(canvasOutputsRoot(canvas), slug) ?? void 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
versionOf
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=chunk-7FDDOOM4.js.map
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Phrases,
|
|
3
|
+
RULE_APPLIES,
|
|
4
|
+
RULE_STRENGTHS,
|
|
5
|
+
declaredRules,
|
|
6
|
+
readLearnedRules
|
|
7
|
+
} from "./chunk-S4ROJTDY.js";
|
|
8
|
+
import {
|
|
9
|
+
readWorkspaceBrandDoc
|
|
10
|
+
} from "./chunk-WJNLQEOZ.js";
|
|
11
|
+
import {
|
|
12
|
+
holdUnbilledSpend
|
|
13
|
+
} from "./chunk-6FHP2HIK.js";
|
|
14
|
+
import {
|
|
15
|
+
askAboutText,
|
|
16
|
+
rulesDigest,
|
|
17
|
+
selectRules
|
|
18
|
+
} from "./chunk-QEW64BBR.js";
|
|
19
|
+
import {
|
|
20
|
+
CREATIVE_FEEDBACK_REASON_LABELS
|
|
21
|
+
} from "./chunk-MV2J73HP.js";
|
|
22
|
+
import {
|
|
23
|
+
apiPost
|
|
24
|
+
} from "./chunk-OSWCEDFE.js";
|
|
25
|
+
|
|
26
|
+
// src/engine/creative-context/company.ts
|
|
27
|
+
import { createHash } from "crypto";
|
|
28
|
+
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
29
|
+
import path from "path";
|
|
30
|
+
import { z } from "zod";
|
|
31
|
+
var text = z.string().transform((s) => s.trim()).pipe(z.string().min(1).max(300)).optional().catch(void 0);
|
|
32
|
+
var Answer = z.object({
|
|
33
|
+
sells: text,
|
|
34
|
+
category: text,
|
|
35
|
+
industry: text,
|
|
36
|
+
buyer: z.enum(["consumer", "small_business", "enterprise"]).optional().catch(void 0),
|
|
37
|
+
country: z.string().transform((s) => s.trim().toUpperCase()).pipe(z.union([z.literal("").transform(() => null), z.string().regex(/^[A-Z]{2}$/)])).optional().catch(void 0),
|
|
38
|
+
humour: z.enum(["fits", "risky", "off_brand"]).optional().catch(void 0),
|
|
39
|
+
brands: z.array(z.string()).transform(
|
|
40
|
+
(list) => list.map((s) => s.trim()).filter(Boolean).slice(0, 4)
|
|
41
|
+
).catch([])
|
|
42
|
+
});
|
|
43
|
+
function parseCompanyReading(answer) {
|
|
44
|
+
const parsed = Answer.safeParse(answer);
|
|
45
|
+
if (!parsed.success || !parsed.data.category) return null;
|
|
46
|
+
const { brands, ...rest } = parsed.data;
|
|
47
|
+
return { ...Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== void 0)), brands };
|
|
48
|
+
}
|
|
49
|
+
var COMPANY_READING_MODEL = "google/gemini-3.5-flash-lite";
|
|
50
|
+
var REQUEST = {
|
|
51
|
+
provider: { order: ["google-vertex"], allow_fallbacks: false },
|
|
52
|
+
seed: 0,
|
|
53
|
+
temperature: 0,
|
|
54
|
+
response_format: { type: "json_object" }
|
|
55
|
+
};
|
|
56
|
+
var PROMPT_VERSION = 1;
|
|
57
|
+
var TIMEOUT_MS = 2e4;
|
|
58
|
+
var COMPANY_CHARS = 12e3;
|
|
59
|
+
function companyReadingPrompt(companyDoc) {
|
|
60
|
+
return `You read a company's own notes (COMPANY.md), in whatever language they are written, for the people who make its ads. Extract only what they say; never invent.
|
|
61
|
+
|
|
62
|
+
"""
|
|
63
|
+
${companyDoc.slice(0, COMPANY_CHARS)}
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
Answer only JSON:
|
|
67
|
+
{
|
|
68
|
+
"sells": "what the company sells and to whom, one plain sentence of at most 20 words in the notes' own language, no brand names (e.g. 'Cursos de electricidad y fontaner\xEDa para desempleados que buscan un oficio estable')",
|
|
69
|
+
"category": "what it sells, 2-6 plain English words an ads library would file it under, no brand names (e.g. 'electrician training course', 'pet health insurance', 'ecommerce customer service AI'); for a company selling several lines, the line its notes lead with",
|
|
70
|
+
"industry": "the broader industry, 1-3 English words (e.g. 'vocational education', 'insurance', 'customer service software')",
|
|
71
|
+
"buyer": "consumer" | "small_business" | "enterprise",
|
|
72
|
+
"country": "the ISO country code it sells in, or '' when several",
|
|
73
|
+
"humour": "fits" | "risky" | "off_brand",
|
|
74
|
+
"brands": ["the company's own brand and product names, as an advertiser name would show them, at most 4"]
|
|
75
|
+
}`;
|
|
76
|
+
}
|
|
77
|
+
function companyLine(reading3) {
|
|
78
|
+
if (!reading3) return "";
|
|
79
|
+
const what = reading3.sells ?? reading3.category ?? "";
|
|
80
|
+
return reading3.industry && what ? `${what} (${reading3.industry})` : what;
|
|
81
|
+
}
|
|
82
|
+
function firstLineSells(companyDoc) {
|
|
83
|
+
const first = companyDoc.split("\n").find((line) => line.trim() && !line.trim().startsWith("#")) ?? "";
|
|
84
|
+
if (/^\s*TODO\b/.test(first)) return "";
|
|
85
|
+
const what = first.replace(/^\s*[-*]\s+/, "").replace(/^\*\*[^*]+\*\*\s*[—–:-]?\s*/, "").split(/\s+for\s+|[,.;:(]|\s[—–-]\s/)[0];
|
|
86
|
+
return (what ?? "").trim().split(/\s+/).filter(Boolean).slice(0, SELLS_WORDS).join(" ");
|
|
87
|
+
}
|
|
88
|
+
var SELLS_WORDS = 6;
|
|
89
|
+
var askModel = (root) => async (prompt) => {
|
|
90
|
+
const spent = [];
|
|
91
|
+
const answer = await askAboutText(COMPANY_READING_MODEL, prompt, (u) => spent.push(u), {
|
|
92
|
+
timeoutMs: TIMEOUT_MS,
|
|
93
|
+
request: REQUEST
|
|
94
|
+
}).catch(() => null);
|
|
95
|
+
await holdUnbilledSpend(path.join(root, "canvas", ".cache"), spent).catch(() => void 0);
|
|
96
|
+
return answer;
|
|
97
|
+
};
|
|
98
|
+
async function readCompanyReading(root, ask = askModel(root)) {
|
|
99
|
+
const doc = await readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => "");
|
|
100
|
+
const fallback = firstLineSells(doc);
|
|
101
|
+
if (!fallback) return null;
|
|
102
|
+
const prompt = companyReadingPrompt(doc);
|
|
103
|
+
const key = createHash("sha256").update(JSON.stringify([PROMPT_VERSION, COMPANY_READING_MODEL, prompt])).digest("hex").slice(0, 16);
|
|
104
|
+
const file = path.join(root, "canvas", ".cache", "company-reading", `${key}.json`);
|
|
105
|
+
const inFlight = reading.get(file);
|
|
106
|
+
if (inFlight) return await inFlight;
|
|
107
|
+
const read = readOrAsk(file, prompt, ask, fallback).finally(() => reading.delete(file));
|
|
108
|
+
reading.set(file, read);
|
|
109
|
+
return await read;
|
|
110
|
+
}
|
|
111
|
+
var reading = /* @__PURE__ */ new Map();
|
|
112
|
+
async function readOrAsk(file, prompt, ask, fallback) {
|
|
113
|
+
const cached = await readFile(file, "utf8").then((raw) => parseCompanyReading(JSON.parse(raw))).catch(() => null);
|
|
114
|
+
if (cached) return cached;
|
|
115
|
+
const answer = parseCompanyReading(await ask(prompt).catch(() => null));
|
|
116
|
+
if (!answer) return { sells: fallback, brands: [] };
|
|
117
|
+
await mkdir(path.dirname(file), { recursive: true });
|
|
118
|
+
await writeFile(file, `${JSON.stringify(answer, null, 2)}
|
|
119
|
+
`, "utf8");
|
|
120
|
+
return answer;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/engine/creative-context/case-file.ts
|
|
124
|
+
var CASE_FILE_CHARS = 3e3;
|
|
125
|
+
function caseFileNotes(entries) {
|
|
126
|
+
const seen = /* @__PURE__ */ new Set();
|
|
127
|
+
const lines = [];
|
|
128
|
+
let used = 0;
|
|
129
|
+
for (const entry of entries) {
|
|
130
|
+
if (entry.verdict !== "rejected") continue;
|
|
131
|
+
const note = entry.note?.trim();
|
|
132
|
+
const reasons = entry.reasons.map((r) => CREATIVE_FEEDBACK_REASON_LABELS[r].toLowerCase()).join(", ");
|
|
133
|
+
const key = note ?? reasons;
|
|
134
|
+
if (!key || seen.has(key)) continue;
|
|
135
|
+
seen.add(key);
|
|
136
|
+
const line = `Rejected${reasons ? ` (${reasons})` : ""}${note ? `: "${note}"` : ""}`;
|
|
137
|
+
if (used + line.length > CASE_FILE_CHARS && lines.length > 0) break;
|
|
138
|
+
used += line.length;
|
|
139
|
+
lines.push(line);
|
|
140
|
+
}
|
|
141
|
+
return lines;
|
|
142
|
+
}
|
|
143
|
+
async function readCaseFile(slug, read = (body) => apiPost("/api/creatives/feedback", body)) {
|
|
144
|
+
const response = await read({ slug }).catch(() => null);
|
|
145
|
+
return response?.ok ? caseFileNotes(response.data.recent) : [];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// src/engine/creative-context/index.ts
|
|
149
|
+
import path3 from "path";
|
|
150
|
+
|
|
151
|
+
// src/engine/brand/brand-rules.ts
|
|
152
|
+
import { createHash as createHash2 } from "crypto";
|
|
153
|
+
import { mkdir as mkdir2, readFile as readFile2, writeFile as writeFile2 } from "fs/promises";
|
|
154
|
+
import path2 from "path";
|
|
155
|
+
import { z as z2 } from "zod";
|
|
156
|
+
var BRAND_RULES_MODEL = "google/gemini-3.5-flash";
|
|
157
|
+
var REQUEST2 = {
|
|
158
|
+
provider: { order: ["google-vertex"], allow_fallbacks: false },
|
|
159
|
+
seed: 0,
|
|
160
|
+
reasoning: { effort: "low" },
|
|
161
|
+
response_format: { type: "json_object" }
|
|
162
|
+
};
|
|
163
|
+
var PROMPT_VERSION2 = 2;
|
|
164
|
+
var TIMEOUT_MS2 = 6e4;
|
|
165
|
+
var BRAND_MD_CHARS = 6e4;
|
|
166
|
+
var MAX_RULES = 60;
|
|
167
|
+
var RULE_CHARS = 400;
|
|
168
|
+
var optionalPhrases = Phrases.optional().catch(void 0);
|
|
169
|
+
var Rule = z2.object({
|
|
170
|
+
text: z2.string().trim().min(1).max(RULE_CHARS),
|
|
171
|
+
strength: z2.enum(RULE_STRENGTHS).catch("must"),
|
|
172
|
+
applies: z2.enum(RULE_APPLIES).catch("any"),
|
|
173
|
+
forbid: optionalPhrases,
|
|
174
|
+
require: optionalPhrases,
|
|
175
|
+
allow: optionalPhrases
|
|
176
|
+
});
|
|
177
|
+
var Answer2 = z2.object({ rules: z2.array(z2.unknown()) });
|
|
178
|
+
function parseBrandRules(answer) {
|
|
179
|
+
const parsed = Answer2.safeParse(answer);
|
|
180
|
+
if (!parsed.success) return null;
|
|
181
|
+
return parsed.data.rules.flatMap((raw) => {
|
|
182
|
+
const rule = Rule.safeParse(raw);
|
|
183
|
+
if (!rule.success) return [];
|
|
184
|
+
const { forbid, require: require2, allow, ...rest } = rule.data;
|
|
185
|
+
return [
|
|
186
|
+
{
|
|
187
|
+
...rest,
|
|
188
|
+
...forbid?.length ? { forbid } : {},
|
|
189
|
+
...require2?.length ? { require: require2 } : {},
|
|
190
|
+
...allow?.length ? { allow } : {}
|
|
191
|
+
}
|
|
192
|
+
];
|
|
193
|
+
}).slice(0, MAX_RULES);
|
|
194
|
+
}
|
|
195
|
+
var RULE_HEADING = /rule|never|copy|voice|tone|logo|imag|photo|illustrat|legal|claim|checklist|reflex|prohibit|say|regla|nunca|voz|tono|imagen|foto|prohib|decir|règle|jamais|regel|stimme|bild|regra|imagem/i;
|
|
196
|
+
function ruleSections(brandMd) {
|
|
197
|
+
const headings = [...brandMd.slice(0, BRAND_MD_CHARS).matchAll(/^#{2,4}\s+(.+)$/gm)].map((m) => (m[1] ?? "").trim()).filter((h) => RULE_HEADING.test(h));
|
|
198
|
+
const fence = /```generation-style/.test(brandMd) ? ["the ```generation-style block"] : [];
|
|
199
|
+
return [.../* @__PURE__ */ new Set([...headings, ...fence])];
|
|
200
|
+
}
|
|
201
|
+
function brandRulesPrompt(brandMd) {
|
|
202
|
+
const sections = ruleSections(brandMd);
|
|
203
|
+
return [
|
|
204
|
+
"You read a company's brand guidelines (BRAND.md), written in any language, for the people who make its ads. List every standing rule they set that an ad, its words, its pictures, its people or its logo must follow. Extract only what they state; never invent a rule.",
|
|
205
|
+
"",
|
|
206
|
+
"Go through the document section by section: every bullet or sentence of a section about copy or wording, voice, what the brand never says, things to reject, legal risk or claims it may not make, a checklist before publishing, how its name, numbers or prices are written, which logo to use and what never to do to it, photography, illustration, imagery or a generation-style block is one rule; keep each, a style taste included (as a prefer), whatever language the section is in. Leave out only rules about web pages, components, code, spacing, typefaces, colours' hex values and where a colour goes on a page.",
|
|
207
|
+
...sections.length > 0 ? [
|
|
208
|
+
"",
|
|
209
|
+
`Sections that most likely hold rules, each to be read to its end: ${sections.map((h) => `"${h}"`).join(", ")}.`
|
|
210
|
+
] : [],
|
|
211
|
+
"",
|
|
212
|
+
`Return JSON only: {"rules": [{"text": string, "strength": "never" | "must" | "prefer", "applies": "copy" | "picture" | "cast" | "logo" | "voice" | "sound" | "subtitles" | "any", "forbid": string[], "require": string[], "allow": string[]}]}, at most ${MAX_RULES}, each rule once.`,
|
|
213
|
+
`- text: the rule quoted from the document in its own language, whole but short (one bullet, at most one sentence of why). It must make sense read alone, as an ad's reviewer reads it: when a bullet leans on its heading or table, name what it is about ("Brand red: never for text or buttons", not "Never text, never a button").`,
|
|
214
|
+
'- strength: "never" for a ban, "must" for something every ad has to do, "prefer" for a taste or a default.',
|
|
215
|
+
`- applies: "copy" for words, "picture" for what is shown, "cast" for who appears, "logo", "voice" or "sound" for a video's voice and audio, "subtitles", else "any".`,
|
|
216
|
+
'- forbid: the exact words the rule bans in every case, as the document quotes them ("\u2014" for em-dashes, "usted"); [] when the ban depends on the context or names no words. allow: the right spelling when the rule is about how a word is written or capitalised ("PontIA"). require: words every ad must say; usually [].',
|
|
217
|
+
"",
|
|
218
|
+
"<brand_md>",
|
|
219
|
+
brandMd.slice(0, BRAND_MD_CHARS),
|
|
220
|
+
"</brand_md>"
|
|
221
|
+
].join("\n");
|
|
222
|
+
}
|
|
223
|
+
function brandRulesReader(cacheDir, onSpend) {
|
|
224
|
+
return async (brandMd) => {
|
|
225
|
+
const prompt = brandRulesPrompt(brandMd);
|
|
226
|
+
const key = createHash2("sha256").update(JSON.stringify([PROMPT_VERSION2, BRAND_RULES_MODEL, prompt])).digest("hex");
|
|
227
|
+
const file = path2.join(cacheDir, "brand-rules", `${key}.json`);
|
|
228
|
+
const inFlight = reading2.get(file);
|
|
229
|
+
if (inFlight) return await inFlight;
|
|
230
|
+
if (failed.has(file)) return null;
|
|
231
|
+
const read = readOrAsk2(file, prompt, onSpend, cacheDir).then((rules) => {
|
|
232
|
+
if (rules === null) failed.add(file);
|
|
233
|
+
return rules;
|
|
234
|
+
}).finally(() => reading2.delete(file));
|
|
235
|
+
reading2.set(file, read);
|
|
236
|
+
return await read;
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
var reading2 = /* @__PURE__ */ new Map();
|
|
240
|
+
var failed = /* @__PURE__ */ new Set();
|
|
241
|
+
async function readOrAsk2(file, prompt, onSpend, cacheDir) {
|
|
242
|
+
const cached = parseBrandRules(await readFile2(file, "utf8").then(JSON.parse, () => null));
|
|
243
|
+
if (cached) return cached;
|
|
244
|
+
const spent = [];
|
|
245
|
+
const answer = await askAboutText(BRAND_RULES_MODEL, prompt, (u) => onSpend ? onSpend(u) : spent.push(u), {
|
|
246
|
+
timeoutMs: TIMEOUT_MS2,
|
|
247
|
+
request: REQUEST2
|
|
248
|
+
}).catch(() => null);
|
|
249
|
+
await holdUnbilledSpend(cacheDir, spent).catch(() => void 0);
|
|
250
|
+
const rules = parseBrandRules(answer);
|
|
251
|
+
if (rules) {
|
|
252
|
+
await mkdir2(path2.dirname(file), { recursive: true }).catch(() => void 0);
|
|
253
|
+
await writeFile2(file, JSON.stringify({ rules }), "utf8").catch(() => void 0);
|
|
254
|
+
}
|
|
255
|
+
return rules;
|
|
256
|
+
}
|
|
257
|
+
async function readWorkspaceBrandRules(root, opts = {}) {
|
|
258
|
+
const brandMd = await readFile2(path2.join(root, "src", "brand", "BRAND.md"), "utf8").catch(() => "");
|
|
259
|
+
if (!brandMd.trim()) return [];
|
|
260
|
+
const read = opts.read ?? brandRulesReader(path2.join(root, "canvas", ".cache"), opts.onSpend);
|
|
261
|
+
return await read(brandMd).catch(() => null) ?? [];
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// src/engine/creative-context/index.ts
|
|
265
|
+
async function readAllRules(root, readers = {}) {
|
|
266
|
+
const [declared, learned] = await Promise.all([
|
|
267
|
+
readWorkspaceBrandRules(root, {
|
|
268
|
+
...readers.brandRules ? { read: readers.brandRules } : {},
|
|
269
|
+
...readers.onSpend ? { onSpend: readers.onSpend } : {}
|
|
270
|
+
}),
|
|
271
|
+
readLearnedRules(root)
|
|
272
|
+
]);
|
|
273
|
+
return [...learned, ...declaredRules(declared)];
|
|
274
|
+
}
|
|
275
|
+
async function readCreativeContext(root, target = {}, opts = {}) {
|
|
276
|
+
const readers = opts.readers ?? {};
|
|
277
|
+
const [company, brand, rules] = await Promise.all([
|
|
278
|
+
readCompanyReading(root, ...readers.company ? [readers.company] : []).catch(() => null),
|
|
279
|
+
readWorkspaceBrandDoc(root, {
|
|
280
|
+
...readers.brand ? { read: readers.brand } : {},
|
|
281
|
+
...readers.onSpend ? { onSpend: readers.onSpend } : {}
|
|
282
|
+
}).catch(() => null),
|
|
283
|
+
readAllRules(root, readers).catch(() => [])
|
|
284
|
+
]);
|
|
285
|
+
const held = selectRules(rules, target, opts.waived);
|
|
286
|
+
return { company, brand, rules: held, rulesDigest: rulesDigest(held), caseFile: (slug) => readCaseFile(slug) };
|
|
287
|
+
}
|
|
288
|
+
var workspaceOfCreative = (creativeDir) => path3.resolve(creativeDir, "../../..");
|
|
289
|
+
function avoidOf(rules, max = 5) {
|
|
290
|
+
return rules.filter((r) => r.strength === "never" && r.applies !== "voice" && r.applies !== "sound").slice(0, max).map((r) => r.text.length > 90 ? `${r.text.slice(0, 89)}\u2026` : r.text);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
export {
|
|
294
|
+
companyLine,
|
|
295
|
+
readCompanyReading,
|
|
296
|
+
readCaseFile,
|
|
297
|
+
readAllRules,
|
|
298
|
+
readCreativeContext,
|
|
299
|
+
workspaceOfCreative,
|
|
300
|
+
avoidOf
|
|
301
|
+
};
|
|
302
|
+
//# sourceMappingURL=chunk-7XH4UQWS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/engine/creative-context/company.ts","../src/engine/creative-context/case-file.ts","../src/engine/creative-context/index.ts","../src/engine/brand/brand-rules.ts"],"sourcesContent":["/**\n * What the company is, read once per COMPANY.md and the same for every ad and every step: what it\n * sells and to whom (in its own language, for the people who judge an ad as its viewer), what an\n * ads library files that under (in English, for every search), its industry, its buyer, the\n * country it sells in, whether its ads may joke, and its own brand names. One small model reads it,\n * pinned and kept by the document's content. Prod, Oct 2026: COMPANY.md was read in ten places,\n * each cut differently (whole, 12k, 6k, 800 characters, its first line), and its first line gave\n * the library \"https\", a brand name or a table header for 6 of 14 companies.\n */\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { z } from \"zod\";\nimport { holdUnbilledSpend } from \"../../commands/canvas/unbilled-spend.ts\";\nimport { askAboutText, type ReviewUsage } from \"../nodes/local/lib/render-review.ts\";\n\nexport type CompanyBuyer = \"consumer\" | \"small_business\" | \"enterprise\";\nexport type CompanyHumour = \"fits\" | \"risky\" | \"off_brand\";\n\nexport type CompanyReading = {\n /** What the company sells and to whom, one plain sentence in its own language. */\n sells?: string;\n /** What an ads library files it under, 2-6 plain English words: \"trade school training program\". */\n category?: string;\n /** The broader industry, in English: \"vocational education\". */\n industry?: string;\n buyer?: CompanyBuyer;\n /** ISO country it sells in; null when it sells in several. */\n country?: string | null;\n humour?: CompanyHumour;\n /** Its own brand and product names: its own ads are never a reference for a new one. */\n brands: string[];\n};\n\nconst text = z\n .string()\n .transform((s) => s.trim())\n .pipe(z.string().min(1).max(300))\n .optional()\n .catch(undefined);\n\nconst Answer = z.object({\n sells: text,\n category: text,\n industry: text,\n buyer: z.enum([\"consumer\", \"small_business\", \"enterprise\"]).optional().catch(undefined),\n country: z\n .string()\n .transform((s) => s.trim().toUpperCase())\n .pipe(z.union([z.literal(\"\").transform(() => null), z.string().regex(/^[A-Z]{2}$/)]))\n .optional()\n .catch(undefined),\n humour: z.enum([\"fits\", \"risky\", \"off_brand\"]).optional().catch(undefined),\n brands: z\n .array(z.string())\n .transform((list) =>\n list\n .map((s) => s.trim())\n .filter(Boolean)\n .slice(0, 4),\n )\n .catch([]),\n});\n\n/** The model's answer as a reading, or null when it does not say what the company sells. Pure. */\nfunction parseCompanyReading(answer: unknown): CompanyReading | null {\n const parsed = Answer.safeParse(answer);\n if (!parsed.success || !parsed.data.category) return null;\n const { brands, ...rest } = parsed.data;\n return { ...Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== undefined)), brands };\n}\n\n/** Pinned like the brand reading: the same notes read the same on every run. */\nexport const COMPANY_READING_MODEL = \"google/gemini-3.5-flash-lite\";\nconst REQUEST = {\n provider: { order: [\"google-vertex\"], allow_fallbacks: false },\n seed: 0,\n temperature: 0,\n response_format: { type: \"json_object\" },\n};\nconst PROMPT_VERSION = 1;\nconst TIMEOUT_MS = 20_000;\n/** The notes the reading takes: past this, the rest is detail no step reads. */\nconst COMPANY_CHARS = 12_000;\n\n/** The question the model answers about the company's own notes. Pure. */\nexport function companyReadingPrompt(companyDoc: string): string {\n return `You read a company's own notes (COMPANY.md), in whatever language they are written, for the people who make its ads. Extract only what they say; never invent.\n\n\"\"\"\n${companyDoc.slice(0, COMPANY_CHARS)}\n\"\"\"\n\nAnswer only JSON:\n{\n \"sells\": \"what the company sells and to whom, one plain sentence of at most 20 words in the notes' own language, no brand names (e.g. 'Cursos de electricidad y fontanería para desempleados que buscan un oficio estable')\",\n \"category\": \"what it sells, 2-6 plain English words an ads library would file it under, no brand names (e.g. 'electrician training course', 'pet health insurance', 'ecommerce customer service AI'); for a company selling several lines, the line its notes lead with\",\n \"industry\": \"the broader industry, 1-3 English words (e.g. 'vocational education', 'insurance', 'customer service software')\",\n \"buyer\": \"consumer\" | \"small_business\" | \"enterprise\",\n \"country\": \"the ISO country code it sells in, or '' when several\",\n \"humour\": \"fits\" | \"risky\" | \"off_brand\",\n \"brands\": [\"the company's own brand and product names, as an advertiser name would show them, at most 4\"]\n}`;\n}\n\n/** The company in one line for a question about who would buy from it: what it sells, its industry. Pure. */\nexport function companyLine(reading: CompanyReading | null): string {\n if (!reading) return \"\";\n const what = reading.sells ?? reading.category ?? \"\";\n return reading.industry && what ? `${what} (${reading.industry})` : what;\n}\n\n/** COMPANY.md's first line, past the brand's name, up to whom it is for: what the company sells when no model reads it. Pure. */\nexport function firstLineSells(companyDoc: string): string {\n const first = companyDoc.split(\"\\n\").find((line) => line.trim() && !line.trim().startsWith(\"#\")) ?? \"\";\n // The scaffold's own placeholder (\"TODO — Run /company-discovery…\"): nothing is said yet.\n if (/^\\s*TODO\\b/.test(first)) return \"\";\n const what = first\n .replace(/^\\s*[-*]\\s+/, \"\")\n .replace(/^\\*\\*[^*]+\\*\\*\\s*[—–:-]?\\s*/, \"\")\n .split(/\\s+for\\s+|[,.;:(]|\\s[—–-]\\s/)[0];\n return (what ?? \"\").trim().split(/\\s+/).filter(Boolean).slice(0, SELLS_WORDS).join(\" \");\n}\n/** The most words the first line keeps: the library's judge reads a long query for 45 s and more. */\nconst SELLS_WORDS = 6;\n\n/** Asks the model a prompt and returns its JSON answer, or null when nobody answered. */\nexport type AskCompany = (prompt: string) => Promise<unknown>;\n\n/** The live model, its spend held for the workspace's next bill like every other check's. */\nconst askModel =\n (root: string): AskCompany =>\n async (prompt) => {\n const spent: ReviewUsage[] = [];\n const answer = await askAboutText(COMPANY_READING_MODEL, prompt, (u) => spent.push(u), {\n timeoutMs: TIMEOUT_MS,\n request: REQUEST,\n }).catch(() => null);\n await holdUnbilledSpend(path.join(root, \"canvas\", \".cache\"), spent).catch(() => undefined);\n return answer;\n };\n\n/**\n * The company as every step of an ad reads it: from the cache when COMPANY.md is unchanged, else\n * asked once. With no model, what its first line says it sells, and asked again next time; null\n * when COMPANY.md says nothing yet.\n */\nexport async function readCompanyReading(\n root: string,\n ask: AskCompany = askModel(root),\n): Promise<CompanyReading | null> {\n const doc = await readFile(path.join(root, \"COMPANY.md\"), \"utf8\").catch(() => \"\");\n const fallback = firstLineSells(doc);\n if (!fallback) return null;\n const prompt = companyReadingPrompt(doc);\n const key = createHash(\"sha256\")\n .update(JSON.stringify([PROMPT_VERSION, COMPANY_READING_MODEL, prompt]))\n .digest(\"hex\")\n .slice(0, 16);\n const file = path.join(root, \"canvas\", \".cache\", \"company-reading\", `${key}.json`);\n // Several steps of one ad read the company at once (make: its reference brief and its rules): one question.\n const inFlight = reading.get(file);\n if (inFlight) return await inFlight;\n const read = readOrAsk(file, prompt, ask, fallback).finally(() => reading.delete(file));\n reading.set(file, read);\n return await read;\n}\n\n/** The readings being asked right now, by cache file. */\nconst reading = new Map<string, Promise<CompanyReading>>();\n\n/** The reading kept in `file`, else asked and kept; what the first line says when no model answers. */\nasync function readOrAsk(file: string, prompt: string, ask: AskCompany, fallback: string): Promise<CompanyReading> {\n const cached = await readFile(file, \"utf8\")\n .then((raw) => parseCompanyReading(JSON.parse(raw)))\n .catch(() => null);\n if (cached) return cached;\n const answer = parseCompanyReading(await ask(prompt).catch(() => null));\n if (!answer) return { sells: fallback, brands: [] };\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, `${JSON.stringify(answer, null, 2)}\\n`, \"utf8\");\n return answer;\n}\n","/**\n * One creative's case file: every verdict the people reviewing it gave, with their words whole. A\n * correction (`--fix`, the spec repair, an automatic round) reads it, so a direction the person\n * already rejected never comes back. Prod, Oct 2026: a fix saw only the spec and the findings, and\n * a rejected line (\"oficio\" for \"trabajo\") returned two rounds later.\n */\nimport {\n CREATIVE_FEEDBACK_REASON_LABELS,\n type CreativeFeedbackEntry,\n type CreativesFeedbackResponse,\n} from \"@baker/api\";\nimport { apiPost } from \"../../client.ts\";\n\n/** The case file a prompt is given at most: past it, the oldest rejections are left out. */\nconst CASE_FILE_CHARS = 3000;\n\n/** Each rejection of the creative as one line, newest first, the same words once. Pure. */\nexport function caseFileNotes(entries: readonly CreativeFeedbackEntry[]): string[] {\n const seen = new Set<string>();\n const lines: string[] = [];\n let used = 0;\n for (const entry of entries) {\n if (entry.verdict !== \"rejected\") continue;\n const note = entry.note?.trim();\n const reasons = entry.reasons.map((r) => CREATIVE_FEEDBACK_REASON_LABELS[r].toLowerCase()).join(\", \");\n const key = note ?? reasons;\n if (!key || seen.has(key)) continue;\n seen.add(key);\n const line = `Rejected${reasons ? ` (${reasons})` : \"\"}${note ? `: \"${note}\"` : \"\"}`;\n if (used + line.length > CASE_FILE_CHARS && lines.length > 0) break;\n used += line.length;\n lines.push(line);\n }\n return lines;\n}\n\n/** Asks the feedback route for one creative's verdicts. */\nexport type ReadFeedback = (body: { slug: string }) => Promise<CreativesFeedbackResponse>;\n\n/** One creative's rejections as `caseFileNotes` gives them; none when it has none or they cannot be read. */\nexport async function readCaseFile(\n slug: string,\n read: ReadFeedback = (body) => apiPost<CreativesFeedbackResponse>(\"/api/creatives/feedback\", body),\n): Promise<string[]> {\n const response = await read({ slug }).catch(() => null);\n return response?.ok ? caseFileNotes(response.data.recent) : [];\n}\n","/**\n * The one reading of a company every step of an ad takes its slice from: what it sells and to\n * whom (COMPANY.md), how its brand speaks and looks (BRAND.md), the rules that hold for this ad\n * (the brand's own and the ones a person taught), and one creative's case file. Each part is read\n * from the workspace as it stands when the call runs, and kept by content where a model reads it,\n * so nothing is copied into an ad's files and nothing goes stale.\n */\nimport path from \"node:path\";\nimport { type BrandDocReading, type ReadBrandDocs, readWorkspaceBrandDoc } from \"../brand/brand-doc.ts\";\nimport { type ReadBrandRules, readWorkspaceBrandRules } from \"../brand/brand-rules.ts\";\nimport { declaredRules, readLearnedRules } from \"../creative-rules/read.ts\";\nimport type { CreativeRule } from \"../creative-rules/schema.ts\";\nimport { type RuleTarget, rulesDigest, selectRules } from \"../creative-rules/select.ts\";\nimport type { ReviewUsage } from \"../nodes/local/lib/render-review.ts\";\nimport { readCaseFile } from \"./case-file.ts\";\nimport { type AskCompany, type CompanyReading, readCompanyReading } from \"./company.ts\";\n\nexport type CreativeContext = {\n company: CompanyReading | null;\n brand: BrandDocReading | null;\n /** The active rules that hold for this ad, strongest and newest first (`selectRules`). */\n rules: CreativeRule[];\n /** Which rules those are, in twelve characters, for the run record. */\n rulesDigest: string;\n /** One creative's rejections, in the person's words (`readCaseFile`). */\n caseFile: (slug: string) => Promise<string[]>;\n};\n\n/** The model readers, for a test or an eval; each defaults to the live, cached one. */\nexport type ContextReaders = {\n company?: AskCompany;\n brand?: ReadBrandDocs;\n brandRules?: ReadBrandRules;\n onSpend?: (usage: ReviewUsage) => void;\n};\n\n/** Every rule the company has, declared and learned, active and retired: what `rules list` and `rules add` read. */\nexport async function readAllRules(root: string, readers: ContextReaders = {}): Promise<CreativeRule[]> {\n const [declared, learned] = await Promise.all([\n readWorkspaceBrandRules(root, {\n ...(readers.brandRules ? { read: readers.brandRules } : {}),\n ...(readers.onSpend ? { onSpend: readers.onSpend } : {}),\n }),\n readLearnedRules(root),\n ]);\n return [...learned, ...declaredRules(declared)];\n}\n\n/** The company as this ad's every step reads it. Never throws: a part that cannot be read is empty. */\nexport async function readCreativeContext(\n root: string,\n target: RuleTarget = {},\n opts: { waived?: readonly string[]; readers?: ContextReaders } = {},\n): Promise<CreativeContext> {\n const readers = opts.readers ?? {};\n const [company, brand, rules] = await Promise.all([\n readCompanyReading(root, ...(readers.company ? [readers.company] : [])).catch(() => null),\n readWorkspaceBrandDoc(root, {\n ...(readers.brand ? { read: readers.brand } : {}),\n ...(readers.onSpend ? { onSpend: readers.onSpend } : {}),\n }).catch(() => null),\n readAllRules(root, readers).catch(() => []),\n ]);\n const held = selectRules(rules, target, opts.waived);\n return { company, brand, rules: held, rulesDigest: rulesDigest(held), caseFile: (slug) => readCaseFile(slug) };\n}\n\n/** The workspace a creative folder (`src/creatives/<slug>/`) belongs to. Pure. */\nexport const workspaceOfCreative = (creativeDir: string) => path.resolve(creativeDir, \"../../..\");\n\n/** What the brand never does, short, for a question that weighs another advertiser's ad for ours. Pure. */\nexport function avoidOf(rules: readonly CreativeRule[], max = 5): string[] {\n return rules\n .filter((r) => r.strength === \"never\" && r.applies !== \"voice\" && r.applies !== \"sound\")\n .slice(0, max)\n .map((r) => (r.text.length > 90 ? `${r.text.slice(0, 89)}…` : r.text));\n}\n","/**\n * The rules the brand's own documents set for its ads, read by a text model in whatever language\n * they are written: what its copy never says, the claims it may not make, how its name, numbers\n * and prices are written, what its pictures, people and logo must and must not be. These are the\n * declared creative rules (`creative-rules/read.ts` `declaredRules`); a person's are the learned.\n *\n * Its own reading, apart from the name, fonts and colours (`brand-doc.ts`): a long list of rules in\n * the same answer cost that reading its whole answer on 1 of 10 production documents. Kept by the\n * document's content, so it is one call per BRAND.md edit. Measured on\n * scripts/creative-rules-evals/declared.mts (recall of each document's labelled rules).\n */\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { z } from \"zod\";\nimport { holdUnbilledSpend } from \"../../commands/canvas/unbilled-spend.ts\";\nimport { Phrases, RULE_APPLIES, RULE_STRENGTHS } from \"../creative-rules/schema.ts\";\nimport { askAboutText, type ReviewUsage } from \"../nodes/local/lib/render-review.ts\";\n\nexport const BRAND_RULES_MODEL = \"google/gemini-3.5-flash\";\nconst REQUEST = {\n provider: { order: [\"google-vertex\"], allow_fallbacks: false },\n seed: 0,\n reasoning: { effort: \"low\" },\n response_format: { type: \"json_object\" },\n};\nconst PROMPT_VERSION = 2;\nconst TIMEOUT_MS = 60_000;\n/** About 15k tokens: the longest production BRAND.md (Oct 2026) ran to 38k characters, its copy rules past 33k. */\nconst BRAND_MD_CHARS = 60_000;\n/** The rules a reading keeps: more is a document listing its web components too. */\nconst MAX_RULES = 60;\nconst RULE_CHARS = 400;\n\n/** A rule the brand's documents set for its ads, in their words, with the phrases that decide it. */\nexport type BrandRule = {\n text: string;\n strength: (typeof RULE_STRENGTHS)[number];\n applies: (typeof RULE_APPLIES)[number];\n forbid?: string[];\n require?: string[];\n allow?: string[];\n};\n\nconst optionalPhrases = Phrases.optional().catch(undefined);\nconst Rule = z.object({\n text: z.string().trim().min(1).max(RULE_CHARS),\n strength: z.enum(RULE_STRENGTHS).catch(\"must\"),\n applies: z.enum(RULE_APPLIES).catch(\"any\"),\n forbid: optionalPhrases,\n require: optionalPhrases,\n allow: optionalPhrases,\n});\nconst Answer = z.object({ rules: z.array(z.unknown()) });\n\n/** The model's answer as rules, every entry it got wrong dropped; null when it is not an answer. Pure. */\nexport function parseBrandRules(answer: unknown): BrandRule[] | null {\n const parsed = Answer.safeParse(answer);\n if (!parsed.success) return null;\n return parsed.data.rules\n .flatMap((raw) => {\n const rule = Rule.safeParse(raw);\n if (!rule.success) return [];\n const { forbid, require, allow, ...rest } = rule.data;\n return [\n {\n ...rest,\n ...(forbid?.length ? { forbid } : {}),\n ...(require?.length ? { require } : {}),\n ...(allow?.length ? { allow } : {}),\n },\n ];\n })\n .slice(0, MAX_RULES);\n}\n\n/** A heading that likely holds rules for ads, in the languages brand documents are written in. */\nconst RULE_HEADING =\n /rule|never|copy|voice|tone|logo|imag|photo|illustrat|legal|claim|checklist|reflex|prohibit|say|regla|nunca|voz|tono|imagen|foto|prohib|decir|règle|jamais|regel|stimme|bild|regra|imagem/i;\n\n/**\n * The document's headings that likely hold rules, named before it so the model reads each whole.\n * Prod, Oct 2026: a 38k-character BRAND.md's copy rules sat at its end and came back empty. Pure.\n */\nfunction ruleSections(brandMd: string): string[] {\n const headings = [...brandMd.slice(0, BRAND_MD_CHARS).matchAll(/^#{2,4}\\s+(.+)$/gm)]\n .map((m) => (m[1] ?? \"\").trim())\n .filter((h) => RULE_HEADING.test(h));\n const fence = /```generation-style/.test(brandMd) ? [\"the ```generation-style block\"] : [];\n return [...new Set([...headings, ...fence])];\n}\n\n/** The question the model answers. Pure. */\nexport function brandRulesPrompt(brandMd: string): string {\n const sections = ruleSections(brandMd);\n return [\n \"You read a company's brand guidelines (BRAND.md), written in any language, for the people who make its ads. List every standing rule they set that an ad, its words, its pictures, its people or its logo must follow. Extract only what they state; never invent a rule.\",\n \"\",\n \"Go through the document section by section: every bullet or sentence of a section about copy or wording, voice, what the brand never says, things to reject, legal risk or claims it may not make, a checklist before publishing, how its name, numbers or prices are written, which logo to use and what never to do to it, photography, illustration, imagery or a generation-style block is one rule; keep each, a style taste included (as a prefer), whatever language the section is in. Leave out only rules about web pages, components, code, spacing, typefaces, colours' hex values and where a colour goes on a page.\",\n ...(sections.length > 0\n ? [\n \"\",\n `Sections that most likely hold rules, each to be read to its end: ${sections.map((h) => `\"${h}\"`).join(\", \")}.`,\n ]\n : []),\n \"\",\n `Return JSON only: {\"rules\": [{\"text\": string, \"strength\": \"never\" | \"must\" | \"prefer\", \"applies\": \"copy\" | \"picture\" | \"cast\" | \"logo\" | \"voice\" | \"sound\" | \"subtitles\" | \"any\", \"forbid\": string[], \"require\": string[], \"allow\": string[]}]}, at most ${MAX_RULES}, each rule once.`,\n '- text: the rule quoted from the document in its own language, whole but short (one bullet, at most one sentence of why). It must make sense read alone, as an ad\\'s reviewer reads it: when a bullet leans on its heading or table, name what it is about (\"Brand red: never for text or buttons\", not \"Never text, never a button\").',\n '- strength: \"never\" for a ban, \"must\" for something every ad has to do, \"prefer\" for a taste or a default.',\n '- applies: \"copy\" for words, \"picture\" for what is shown, \"cast\" for who appears, \"logo\", \"voice\" or \"sound\" for a video\\'s voice and audio, \"subtitles\", else \"any\".',\n '- forbid: the exact words the rule bans in every case, as the document quotes them (\"—\" for em-dashes, \"usted\"); [] when the ban depends on the context or names no words. allow: the right spelling when the rule is about how a word is written or capitalised (\"PontIA\"). require: words every ad must say; usually [].',\n \"\",\n \"<brand_md>\",\n brandMd.slice(0, BRAND_MD_CHARS),\n \"</brand_md>\",\n ].join(\"\\n\");\n}\n\n/** Reads the rules of a BRAND.md with the model, or null when it could not answer. */\nexport type ReadBrandRules = (brandMd: string) => Promise<BrandRule[] | null>;\n\n/**\n * The real reader: each reading kept in `cacheDir` by the document, the model and the prompt. Spend\n * goes to `onSpend`, or, without one, waits in `cacheDir` for the workspace's next run record.\n */\nexport function brandRulesReader(cacheDir: string, onSpend?: (usage: ReviewUsage) => void): ReadBrandRules {\n return async (brandMd) => {\n const prompt = brandRulesPrompt(brandMd);\n const key = createHash(\"sha256\")\n .update(JSON.stringify([PROMPT_VERSION, BRAND_RULES_MODEL, prompt]))\n .digest(\"hex\");\n const file = path.join(cacheDir, \"brand-rules\", `${key}.json`);\n // Several steps of one ad read the rules at once: one question, the others wait for its answer.\n const inFlight = reading.get(file);\n if (inFlight) return await inFlight;\n // A reading that failed in this process is not asked again: a run reads the rules several times.\n if (failed.has(file)) return null;\n const read = readOrAsk(file, prompt, onSpend, cacheDir)\n .then((rules) => {\n if (rules === null) failed.add(file);\n return rules;\n })\n .finally(() => reading.delete(file));\n reading.set(file, read);\n return await read;\n };\n}\n\n/** The readings being asked right now, by cache file, and the ones no model answered in this process. */\nconst reading = new Map<string, Promise<BrandRule[] | null>>();\nconst failed = new Set<string>();\n\n/** The rules kept in `file`, else asked of the model and kept; null when it could not answer. */\nasync function readOrAsk(\n file: string,\n prompt: string,\n onSpend: ((usage: ReviewUsage) => void) | undefined,\n cacheDir: string,\n): Promise<BrandRule[] | null> {\n const cached = parseBrandRules(await readFile(file, \"utf8\").then(JSON.parse, () => null));\n if (cached) return cached;\n const spent: ReviewUsage[] = [];\n const answer = await askAboutText(BRAND_RULES_MODEL, prompt, (u) => (onSpend ? onSpend(u) : spent.push(u)), {\n timeoutMs: TIMEOUT_MS,\n request: REQUEST,\n }).catch(() => null);\n await holdUnbilledSpend(cacheDir, spent).catch(() => undefined);\n const rules = parseBrandRules(answer);\n if (rules) {\n await mkdir(path.dirname(file), { recursive: true }).catch(() => undefined);\n await writeFile(file, JSON.stringify({ rules }), \"utf8\").catch(() => undefined);\n }\n return rules;\n}\n\n/** The rules the workspace's BRAND.md sets, read once per edit; none when it has none or no model answered. */\nexport async function readWorkspaceBrandRules(\n root: string,\n opts: { read?: ReadBrandRules; onSpend?: (usage: ReviewUsage) => void } = {},\n): Promise<BrandRule[]> {\n const brandMd = await readFile(path.join(root, \"src\", \"brand\", \"BRAND.md\"), \"utf8\").catch(() => \"\");\n if (!brandMd.trim()) return [];\n const read = opts.read ?? brandRulesReader(path.join(root, \"canvas\", \".cache\"), opts.onSpend);\n return (await read(brandMd).catch(() => null)) ?? [];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AASA,SAAS,kBAAkB;AAC3B,SAAS,OAAO,UAAU,iBAAiB;AAC3C,OAAO,UAAU;AACjB,SAAS,SAAS;AAsBlB,IAAM,OAAO,EACV,OAAO,EACP,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EACzB,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAC/B,SAAS,EACT,MAAM,MAAS;AAElB,IAAM,SAAS,EAAE,OAAO;AAAA,EACtB,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO,EAAE,KAAK,CAAC,YAAY,kBAAkB,YAAY,CAAC,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACtF,SAAS,EACN,OAAO,EACP,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,EACvC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,UAAU,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,CAAC,CAAC,EACnF,SAAS,EACT,MAAM,MAAS;AAAA,EAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,MAAS;AAAA,EACzE,QAAQ,EACL,MAAM,EAAE,OAAO,CAAC,EAChB;AAAA,IAAU,CAAC,SACV,KACG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO,EACd,MAAM,GAAG,CAAC;AAAA,EACf,EACC,MAAM,CAAC,CAAC;AACb,CAAC;AAGD,SAAS,oBAAoB,QAAwC;AACnE,QAAM,SAAS,OAAO,UAAU,MAAM;AACtC,MAAI,CAAC,OAAO,WAAW,CAAC,OAAO,KAAK,SAAU,QAAO;AACrD,QAAM,EAAE,QAAQ,GAAG,KAAK,IAAI,OAAO;AACnC,SAAO,EAAE,GAAG,OAAO,YAAY,OAAO,QAAQ,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,MAAM,MAAS,CAAC,GAAG,OAAO;AAClG;AAGO,IAAM,wBAAwB;AACrC,IAAM,UAAU;AAAA,EACd,UAAU,EAAE,OAAO,CAAC,eAAe,GAAG,iBAAiB,MAAM;AAAA,EAC7D,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB,EAAE,MAAM,cAAc;AACzC;AACA,IAAM,iBAAiB;AACvB,IAAM,aAAa;AAEnB,IAAM,gBAAgB;AAGf,SAAS,qBAAqB,YAA4B;AAC/D,SAAO;AAAA;AAAA;AAAA,EAGP,WAAW,MAAM,GAAG,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAapC;AAGO,SAAS,YAAYA,UAAwC;AAClE,MAAI,CAACA,SAAS,QAAO;AACrB,QAAM,OAAOA,SAAQ,SAASA,SAAQ,YAAY;AAClD,SAAOA,SAAQ,YAAY,OAAO,GAAG,IAAI,KAAKA,SAAQ,QAAQ,MAAM;AACtE;AAGO,SAAS,eAAe,YAA4B;AACzD,QAAM,QAAQ,WAAW,MAAM,IAAI,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE,WAAW,GAAG,CAAC,KAAK;AAEpG,MAAI,aAAa,KAAK,KAAK,EAAG,QAAO;AACrC,QAAM,OAAO,MACV,QAAQ,eAAe,EAAE,EACzB,QAAQ,+BAA+B,EAAE,EACzC,MAAM,6BAA6B,EAAE,CAAC;AACzC,UAAQ,QAAQ,IAAI,KAAK,EAAE,MAAM,KAAK,EAAE,OAAO,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,GAAG;AACxF;AAEA,IAAM,cAAc;AAMpB,IAAM,WACJ,CAAC,SACD,OAAO,WAAW;AAChB,QAAM,QAAuB,CAAC;AAC9B,QAAM,SAAS,MAAM,aAAa,uBAAuB,QAAQ,CAAC,MAAM,MAAM,KAAK,CAAC,GAAG;AAAA,IACrF,WAAW;AAAA,IACX,SAAS;AAAA,EACX,CAAC,EAAE,MAAM,MAAM,IAAI;AACnB,QAAM,kBAAkB,KAAK,KAAK,MAAM,UAAU,QAAQ,GAAG,KAAK,EAAE,MAAM,MAAM,MAAS;AACzF,SAAO;AACT;AAOF,eAAsB,mBACpB,MACA,MAAkB,SAAS,IAAI,GACC;AAChC,QAAM,MAAM,MAAM,SAAS,KAAK,KAAK,MAAM,YAAY,GAAG,MAAM,EAAE,MAAM,MAAM,EAAE;AAChF,QAAM,WAAW,eAAe,GAAG;AACnC,MAAI,CAAC,SAAU,QAAO;AACtB,QAAM,SAAS,qBAAqB,GAAG;AACvC,QAAM,MAAM,WAAW,QAAQ,EAC5B,OAAO,KAAK,UAAU,CAAC,gBAAgB,uBAAuB,MAAM,CAAC,CAAC,EACtE,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE;AACd,QAAM,OAAO,KAAK,KAAK,MAAM,UAAU,UAAU,mBAAmB,GAAG,GAAG,OAAO;AAEjF,QAAM,WAAW,QAAQ,IAAI,IAAI;AACjC,MAAI,SAAU,QAAO,MAAM;AAC3B,QAAM,OAAO,UAAU,MAAM,QAAQ,KAAK,QAAQ,EAAE,QAAQ,MAAM,QAAQ,OAAO,IAAI,CAAC;AACtF,UAAQ,IAAI,MAAM,IAAI;AACtB,SAAO,MAAM;AACf;AAGA,IAAM,UAAU,oBAAI,IAAqC;AAGzD,eAAe,UAAU,MAAc,QAAgB,KAAiB,UAA2C;AACjH,QAAM,SAAS,MAAM,SAAS,MAAM,MAAM,EACvC,KAAK,CAAC,QAAQ,oBAAoB,KAAK,MAAM,GAAG,CAAC,CAAC,EAClD,MAAM,MAAM,IAAI;AACnB,MAAI,OAAQ,QAAO;AACnB,QAAM,SAAS,oBAAoB,MAAM,IAAI,MAAM,EAAE,MAAM,MAAM,IAAI,CAAC;AACtE,MAAI,CAAC,OAAQ,QAAO,EAAE,OAAO,UAAU,QAAQ,CAAC,EAAE;AAClD,QAAM,MAAM,KAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AACnD,QAAM,UAAU,MAAM,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AACpE,SAAO;AACT;;;ACxKA,IAAM,kBAAkB;AAGjB,SAAS,cAAc,SAAqD;AACjF,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO;AACX,aAAW,SAAS,SAAS;AAC3B,QAAI,MAAM,YAAY,WAAY;AAClC,UAAM,OAAO,MAAM,MAAM,KAAK;AAC9B,UAAM,UAAU,MAAM,QAAQ,IAAI,CAAC,MAAM,gCAAgC,CAAC,EAAE,YAAY,CAAC,EAAE,KAAK,IAAI;AACpG,UAAM,MAAM,QAAQ;AACpB,QAAI,CAAC,OAAO,KAAK,IAAI,GAAG,EAAG;AAC3B,SAAK,IAAI,GAAG;AACZ,UAAM,OAAO,WAAW,UAAU,KAAK,OAAO,MAAM,EAAE,GAAG,OAAO,MAAM,IAAI,MAAM,EAAE;AAClF,QAAI,OAAO,KAAK,SAAS,mBAAmB,MAAM,SAAS,EAAG;AAC9D,YAAQ,KAAK;AACb,UAAM,KAAK,IAAI;AAAA,EACjB;AACA,SAAO;AACT;AAMA,eAAsB,aACpB,MACA,OAAqB,CAAC,SAAS,QAAmC,2BAA2B,IAAI,GAC9E;AACnB,QAAM,WAAW,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,MAAM,IAAI;AACtD,SAAO,UAAU,KAAK,cAAc,SAAS,KAAK,MAAM,IAAI,CAAC;AAC/D;;;ACvCA,OAAOC,WAAU;;;ACIjB,SAAS,cAAAC,mBAAkB;AAC3B,SAAS,SAAAC,QAAO,YAAAC,WAAU,aAAAC,kBAAiB;AAC3C,OAAOC,WAAU;AACjB,SAAS,KAAAC,UAAS;AAKX,IAAM,oBAAoB;AACjC,IAAMC,WAAU;AAAA,EACd,UAAU,EAAE,OAAO,CAAC,eAAe,GAAG,iBAAiB,MAAM;AAAA,EAC7D,MAAM;AAAA,EACN,WAAW,EAAE,QAAQ,MAAM;AAAA,EAC3B,iBAAiB,EAAE,MAAM,cAAc;AACzC;AACA,IAAMC,kBAAiB;AACvB,IAAMC,cAAa;AAEnB,IAAM,iBAAiB;AAEvB,IAAM,YAAY;AAClB,IAAM,aAAa;AAYnB,IAAM,kBAAkB,QAAQ,SAAS,EAAE,MAAM,MAAS;AAC1D,IAAM,OAAOC,GAAE,OAAO;AAAA,EACpB,MAAMA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,UAAU;AAAA,EAC7C,UAAUA,GAAE,KAAK,cAAc,EAAE,MAAM,MAAM;AAAA,EAC7C,SAASA,GAAE,KAAK,YAAY,EAAE,MAAM,KAAK;AAAA,EACzC,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AACT,CAAC;AACD,IAAMC,UAASD,GAAE,OAAO,EAAE,OAAOA,GAAE,MAAMA,GAAE,QAAQ,CAAC,EAAE,CAAC;AAGhD,SAAS,gBAAgB,QAAqC;AACnE,QAAM,SAASC,QAAO,UAAU,MAAM;AACtC,MAAI,CAAC,OAAO,QAAS,QAAO;AAC5B,SAAO,OAAO,KAAK,MAChB,QAAQ,CAAC,QAAQ;AAChB,UAAM,OAAO,KAAK,UAAU,GAAG;AAC/B,QAAI,CAAC,KAAK,QAAS,QAAO,CAAC;AAC3B,UAAM,EAAE,QAAQ,SAAAC,UAAS,OAAO,GAAG,KAAK,IAAI,KAAK;AACjD,WAAO;AAAA,MACL;AAAA,QACE,GAAG;AAAA,QACH,GAAI,QAAQ,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,QACnC,GAAIA,UAAS,SAAS,EAAE,SAAAA,SAAQ,IAAI,CAAC;AAAA,QACrC,GAAI,OAAO,SAAS,EAAE,MAAM,IAAI,CAAC;AAAA,MACnC;AAAA,IACF;AAAA,EACF,CAAC,EACA,MAAM,GAAG,SAAS;AACvB;AAGA,IAAM,eACJ;AAMF,SAAS,aAAa,SAA2B;AAC/C,QAAM,WAAW,CAAC,GAAG,QAAQ,MAAM,GAAG,cAAc,EAAE,SAAS,mBAAmB,CAAC,EAChF,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC,EAC9B,OAAO,CAAC,MAAM,aAAa,KAAK,CAAC,CAAC;AACrC,QAAM,QAAQ,sBAAsB,KAAK,OAAO,IAAI,CAAC,+BAA+B,IAAI,CAAC;AACzF,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;AAC7C;AAGO,SAAS,iBAAiB,SAAyB;AACxD,QAAM,WAAW,aAAa,OAAO;AACrC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,SAAS,SAAS,IAClB;AAAA,MACE;AAAA,MACA,qEAAqE,SAAS,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,IAC/G,IACA,CAAC;AAAA,IACL;AAAA,IACA,4PAA4P,SAAS;AAAA,IACrQ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,MAAM,GAAG,cAAc;AAAA,IAC/B;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AASO,SAAS,iBAAiB,UAAkB,SAAwD;AACzG,SAAO,OAAO,YAAY;AACxB,UAAM,SAAS,iBAAiB,OAAO;AACvC,UAAM,MAAMC,YAAW,QAAQ,EAC5B,OAAO,KAAK,UAAU,CAACL,iBAAgB,mBAAmB,MAAM,CAAC,CAAC,EAClE,OAAO,KAAK;AACf,UAAM,OAAOM,MAAK,KAAK,UAAU,eAAe,GAAG,GAAG,OAAO;AAE7D,UAAM,WAAWC,SAAQ,IAAI,IAAI;AACjC,QAAI,SAAU,QAAO,MAAM;AAE3B,QAAI,OAAO,IAAI,IAAI,EAAG,QAAO;AAC7B,UAAM,OAAOC,WAAU,MAAM,QAAQ,SAAS,QAAQ,EACnD,KAAK,CAAC,UAAU;AACf,UAAI,UAAU,KAAM,QAAO,IAAI,IAAI;AACnC,aAAO;AAAA,IACT,CAAC,EACA,QAAQ,MAAMD,SAAQ,OAAO,IAAI,CAAC;AACrC,IAAAA,SAAQ,IAAI,MAAM,IAAI;AACtB,WAAO,MAAM;AAAA,EACf;AACF;AAGA,IAAMA,WAAU,oBAAI,IAAyC;AAC7D,IAAM,SAAS,oBAAI,IAAY;AAG/B,eAAeC,WACb,MACA,QACA,SACA,UAC6B;AAC7B,QAAM,SAAS,gBAAgB,MAAMC,UAAS,MAAM,MAAM,EAAE,KAAK,KAAK,OAAO,MAAM,IAAI,CAAC;AACxF,MAAI,OAAQ,QAAO;AACnB,QAAM,QAAuB,CAAC;AAC9B,QAAM,SAAS,MAAM,aAAa,mBAAmB,QAAQ,CAAC,MAAO,UAAU,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,GAAI;AAAA,IAC1G,WAAWR;AAAA,IACX,SAASF;AAAA,EACX,CAAC,EAAE,MAAM,MAAM,IAAI;AACnB,QAAM,kBAAkB,UAAU,KAAK,EAAE,MAAM,MAAM,MAAS;AAC9D,QAAM,QAAQ,gBAAgB,MAAM;AACpC,MAAI,OAAO;AACT,UAAMW,OAAMJ,MAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC,EAAE,MAAM,MAAM,MAAS;AAC1E,UAAMK,WAAU,MAAM,KAAK,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,MAAM,MAAM,MAAS;AAAA,EAChF;AACA,SAAO;AACT;AAGA,eAAsB,wBACpB,MACA,OAA0E,CAAC,GACrD;AACtB,QAAM,UAAU,MAAMF,UAASH,MAAK,KAAK,MAAM,OAAO,SAAS,UAAU,GAAG,MAAM,EAAE,MAAM,MAAM,EAAE;AAClG,MAAI,CAAC,QAAQ,KAAK,EAAG,QAAO,CAAC;AAC7B,QAAM,OAAO,KAAK,QAAQ,iBAAiBA,MAAK,KAAK,MAAM,UAAU,QAAQ,GAAG,KAAK,OAAO;AAC5F,SAAQ,MAAM,KAAK,OAAO,EAAE,MAAM,MAAM,IAAI,KAAM,CAAC;AACrD;;;ADnJA,eAAsB,aAAa,MAAc,UAA0B,CAAC,GAA4B;AACtG,QAAM,CAAC,UAAU,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC5C,wBAAwB,MAAM;AAAA,MAC5B,GAAI,QAAQ,aAAa,EAAE,MAAM,QAAQ,WAAW,IAAI,CAAC;AAAA,MACzD,GAAI,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAAA,IACxD,CAAC;AAAA,IACD,iBAAiB,IAAI;AAAA,EACvB,CAAC;AACD,SAAO,CAAC,GAAG,SAAS,GAAG,cAAc,QAAQ,CAAC;AAChD;AAGA,eAAsB,oBACpB,MACA,SAAqB,CAAC,GACtB,OAAiE,CAAC,GACxC;AAC1B,QAAM,UAAU,KAAK,WAAW,CAAC;AACjC,QAAM,CAAC,SAAS,OAAO,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IAChD,mBAAmB,MAAM,GAAI,QAAQ,UAAU,CAAC,QAAQ,OAAO,IAAI,CAAC,CAAE,EAAE,MAAM,MAAM,IAAI;AAAA,IACxF,sBAAsB,MAAM;AAAA,MAC1B,GAAI,QAAQ,QAAQ,EAAE,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,MAC/C,GAAI,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAAA,IACxD,CAAC,EAAE,MAAM,MAAM,IAAI;AAAA,IACnB,aAAa,MAAM,OAAO,EAAE,MAAM,MAAM,CAAC,CAAC;AAAA,EAC5C,CAAC;AACD,QAAM,OAAO,YAAY,OAAO,QAAQ,KAAK,MAAM;AACnD,SAAO,EAAE,SAAS,OAAO,OAAO,MAAM,aAAa,YAAY,IAAI,GAAG,UAAU,CAAC,SAAS,aAAa,IAAI,EAAE;AAC/G;AAGO,IAAM,sBAAsB,CAAC,gBAAwBM,MAAK,QAAQ,aAAa,UAAU;AAGzF,SAAS,QAAQ,OAAgC,MAAM,GAAa;AACzE,SAAO,MACJ,OAAO,CAAC,MAAM,EAAE,aAAa,WAAW,EAAE,YAAY,WAAW,EAAE,YAAY,OAAO,EACtF,MAAM,GAAG,GAAG,EACZ,IAAI,CAAC,MAAO,EAAE,KAAK,SAAS,KAAK,GAAG,EAAE,KAAK,MAAM,GAAG,EAAE,CAAC,WAAM,EAAE,IAAK;AACzE;","names":["reading","path","createHash","mkdir","readFile","writeFile","path","z","REQUEST","PROMPT_VERSION","TIMEOUT_MS","z","Answer","require","createHash","path","reading","readOrAsk","readFile","mkdir","writeFile","path"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ApiError,
|
|
3
|
+
apiGet,
|
|
4
|
+
apiPost
|
|
5
|
+
} from "./chunk-OSWCEDFE.js";
|
|
6
|
+
|
|
7
|
+
// src/commands/avatars/transport.ts
|
|
8
|
+
function unwrap(response) {
|
|
9
|
+
if (response.ok === false || response.data === void 0) {
|
|
10
|
+
throw new ApiError("INTERNAL_ERROR", response.error?.message ?? "The avatars service returned an unusable answer");
|
|
11
|
+
}
|
|
12
|
+
return response.data;
|
|
13
|
+
}
|
|
14
|
+
async function readAvatars(path, params) {
|
|
15
|
+
return unwrap(await apiGet(path, params));
|
|
16
|
+
}
|
|
17
|
+
async function writeAvatars(path, body, opts) {
|
|
18
|
+
return unwrap(await apiPost(path, body, opts));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
readAvatars,
|
|
23
|
+
writeAvatars
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-AN7CMLYY.js.map
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RULES_DIR,
|
|
3
|
+
SAME_WORDS,
|
|
4
|
+
frontmatterOf,
|
|
5
|
+
parseIdea,
|
|
6
|
+
parseInsight
|
|
7
|
+
} from "./chunk-S4ROJTDY.js";
|
|
8
|
+
import {
|
|
9
|
+
rememberedJev
|
|
10
|
+
} from "./chunk-MMU6XHCH.js";
|
|
11
|
+
import {
|
|
12
|
+
holdUnbilledSpend
|
|
13
|
+
} from "./chunk-6FHP2HIK.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/creatives/ideas-judgments.ts
|
|
16
|
+
var STATISTIC_QUESTION = `\`quote\` was filed as something a customer said. Is it instead a statistic about a group of people, a share or a figure from a survey, a study or an article ("39% of UK homeowners say\u2026", "a quarter of buyers\u2026", "1 in 3 owners\u2026"), rather than one person's own words about their own experience? A person giving their own number ("My bill dropped 40%") is their own words. The quote may be in any language.`;
|
|
17
|
+
var STATISTIC_HELD = 0.65;
|
|
18
|
+
var SAME_MESSAGE_QUESTION = `\`a\` and \`b\` are the messages of two ads. Do they make the same core promise to the viewer (the same benefit, the same reason to act), even when one adds a detail or a few words, says it in other words, or is in another language? Two messages that promise different things about the same product are not the same.`;
|
|
19
|
+
var SAME_MESSAGE_HELD = 0.42;
|
|
20
|
+
async function withStatisticsRead(insights, ask) {
|
|
21
|
+
const observed = insights.filter((i) => i.status === "observed");
|
|
22
|
+
if (observed.length === 0) return [...insights];
|
|
23
|
+
const answers = await ask(observed.map((i) => ({ instructions: { quote: i.quote, question: STATISTIC_QUESTION } })));
|
|
24
|
+
if (answers === null) return [...insights];
|
|
25
|
+
const statistics = new Set(observed.filter((_, i) => (answers[i] ?? 0) >= STATISTIC_HELD).map((i) => i.id));
|
|
26
|
+
return insights.map((i) => statistics.has(i.id) ? { ...i, status: "interpreted" } : i);
|
|
27
|
+
}
|
|
28
|
+
async function sameMessageRead(ideas, ask) {
|
|
29
|
+
const failed = ideas.filter((i) => i.status === "failed");
|
|
30
|
+
const pairs = failed.flatMap(
|
|
31
|
+
(f) => ideas.filter((i) => i.id !== f.id && !SAME_WORDS(i.message, f.message)).map((i) => [f.message, i.message])
|
|
32
|
+
);
|
|
33
|
+
if (pairs.length === 0) return SAME_WORDS;
|
|
34
|
+
const answers = await ask(pairs.map(([a, b]) => ({ instructions: { a, b, question: SAME_MESSAGE_QUESTION } })));
|
|
35
|
+
if (answers === null) return SAME_WORDS;
|
|
36
|
+
const same = new Set(
|
|
37
|
+
pairs.filter((_, i) => (answers[i] ?? 0) >= SAME_MESSAGE_HELD).map(([a, b]) => `${a}\0${b}`)
|
|
38
|
+
);
|
|
39
|
+
return (a, b) => SAME_WORDS(a, b) || same.has(`${a}\0${b}`) || same.has(`${b}\0${a}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/commands/creatives/ideas-workspace.ts
|
|
43
|
+
import { readdir, readFile } from "fs/promises";
|
|
44
|
+
import path from "path";
|
|
45
|
+
var IDEAS_DIR = path.join("src", "creatives", "_ideas");
|
|
46
|
+
var INSIGHTS_DIR = path.join("src", "content", "insights");
|
|
47
|
+
async function markdownFiles(dir, recursive = false) {
|
|
48
|
+
const entries = await readdir(dir, { recursive }).catch(() => []);
|
|
49
|
+
return entries.filter((f) => f.endsWith(".md")).sort();
|
|
50
|
+
}
|
|
51
|
+
var idOf = (file) => file.replace(/\\/g, "/").replace(/\.md$/, "");
|
|
52
|
+
function workspaceIdeasJudge(root) {
|
|
53
|
+
const cacheDir = path.join(root, "canvas", ".cache");
|
|
54
|
+
const spent = [];
|
|
55
|
+
return {
|
|
56
|
+
ask: rememberedJev(path.join(cacheDir, "ideas-answers.json"), (u) => spent.push(u)),
|
|
57
|
+
done: () => holdUnbilledSpend(cacheDir, spent.splice(0)).catch(() => void 0)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async function readInsights(root, opts = {}) {
|
|
61
|
+
const dir = path.join(root, INSIGHTS_DIR);
|
|
62
|
+
const insights = [];
|
|
63
|
+
for (const file of await markdownFiles(dir, true)) {
|
|
64
|
+
const insight = parseInsight(idOf(file), await readFile(path.join(dir, file), "utf8").catch(() => ""));
|
|
65
|
+
if (insight) insights.push(insight);
|
|
66
|
+
}
|
|
67
|
+
if (opts.ask) return withStatisticsRead(insights, opts.ask);
|
|
68
|
+
const judge = workspaceIdeasJudge(root);
|
|
69
|
+
const read = await withStatisticsRead(insights, judge.ask);
|
|
70
|
+
await judge.done();
|
|
71
|
+
return read;
|
|
72
|
+
}
|
|
73
|
+
async function readIdeas(root) {
|
|
74
|
+
const dir = path.join(root, IDEAS_DIR);
|
|
75
|
+
const ideas = [];
|
|
76
|
+
const unreadable = [];
|
|
77
|
+
for (const file of await markdownFiles(dir)) {
|
|
78
|
+
const id = idOf(file);
|
|
79
|
+
const parsed = parseIdea(id, await readFile(path.join(dir, file), "utf8").catch(() => ""));
|
|
80
|
+
if (parsed.idea) ideas.push(parsed.idea);
|
|
81
|
+
else unreadable.push({ id, problems: parsed.problems });
|
|
82
|
+
}
|
|
83
|
+
return { ideas, unreadable };
|
|
84
|
+
}
|
|
85
|
+
async function readPersonaIds(root) {
|
|
86
|
+
return (await markdownFiles(path.join(root, "src", "content", "personas"), true)).map(idOf);
|
|
87
|
+
}
|
|
88
|
+
var MAX_KNOWLEDGE_CHARS = 2e5;
|
|
89
|
+
async function readKnowledgeCorpus(root) {
|
|
90
|
+
const parts = [];
|
|
91
|
+
const company = await readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => "");
|
|
92
|
+
if (company) parts.push(company);
|
|
93
|
+
const content = path.join(root, "src", "content");
|
|
94
|
+
const insights = path.relative(content, path.join(root, INSIGHTS_DIR));
|
|
95
|
+
const rules = path.relative(content, path.join(root, RULES_DIR));
|
|
96
|
+
const files = (await markdownFiles(content, true)).filter((f) => {
|
|
97
|
+
const file = f.replace(/\\/g, "/");
|
|
98
|
+
return !file.startsWith(`${insights}/`) && !file.startsWith(`${rules}/`);
|
|
99
|
+
});
|
|
100
|
+
for (const file of files) {
|
|
101
|
+
parts.push(await readFile(path.join(content, file), "utf8").catch(() => ""));
|
|
102
|
+
if (parts.join("").length > MAX_KNOWLEDGE_CHARS) break;
|
|
103
|
+
}
|
|
104
|
+
return parts.join("\n").slice(0, MAX_KNOWLEDGE_CHARS);
|
|
105
|
+
}
|
|
106
|
+
async function readCreativeRecords(root) {
|
|
107
|
+
const dir = path.join(root, "src", "creatives");
|
|
108
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
109
|
+
const records = [];
|
|
110
|
+
for (const entry of entries) {
|
|
111
|
+
if (!entry.isDirectory() || entry.name.startsWith("_")) continue;
|
|
112
|
+
const raw = await readFile(path.join(dir, entry.name, "_definition.md"), "utf8").catch(() => null);
|
|
113
|
+
if (raw === null) continue;
|
|
114
|
+
const fm = frontmatterOf(raw) ?? {};
|
|
115
|
+
const pick = (key) => typeof fm[key] === "string" && fm[key] ? { [key]: fm[key] } : {};
|
|
116
|
+
records.push({
|
|
117
|
+
slug: entry.name,
|
|
118
|
+
...pick("status"),
|
|
119
|
+
...pick("idea"),
|
|
120
|
+
...pick("awareness"),
|
|
121
|
+
...pick("angle"),
|
|
122
|
+
...pick("kind")
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return records;
|
|
126
|
+
}
|
|
127
|
+
var SHOWN_STATUSES = /* @__PURE__ */ new Set(["rendered", "published"]);
|
|
128
|
+
function coverageOf(ideas, creatives) {
|
|
129
|
+
const live = ideas.filter((i) => i.status === "built" || i.status === "testing" || i.status === "winner");
|
|
130
|
+
const awareness = new Set(live.map((i) => i.awareness));
|
|
131
|
+
for (const creative of creatives) {
|
|
132
|
+
if (creative.awareness && SHOWN_STATUSES.has(creative.status ?? "")) awareness.add(creative.awareness);
|
|
133
|
+
}
|
|
134
|
+
return { coveredAwareness: [...awareness].sort(), closersLive: live.filter((i) => i.job === "closer").length };
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export {
|
|
138
|
+
sameMessageRead,
|
|
139
|
+
IDEAS_DIR,
|
|
140
|
+
workspaceIdeasJudge,
|
|
141
|
+
readInsights,
|
|
142
|
+
readIdeas,
|
|
143
|
+
readPersonaIds,
|
|
144
|
+
readKnowledgeCorpus,
|
|
145
|
+
readCreativeRecords,
|
|
146
|
+
coverageOf
|
|
147
|
+
};
|
|
148
|
+
//# sourceMappingURL=chunk-B2SAOVMU.js.map
|