@koda-sl/baker-cli 0.531.0 → 0.533.0
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 +12 -10
- package/dist/account-2UXZ6CZJ.js +82 -0
- package/dist/account-HQD5P3AF.js +139 -0
- package/dist/account-OWMJG4IW.js +82 -0
- package/dist/account-assets-JRMYVXQP.js +290 -0
- package/dist/account-level-PEGLZQTI.js +611 -0
- package/dist/account-reads-W2GAN335.js +219 -0
- package/dist/account-users-WLTQNPL7.js +64 -0
- package/dist/account-writes-TNADUSHW.js +68 -0
- package/dist/accounts-D3SQTZB7.js +701 -0
- package/dist/accounts-HRQFOTBJ.js +80 -0
- package/dist/accounts-MQMEOGQD.js +114 -0
- package/dist/accounts-T6SRCZJQ.js +76 -0
- package/dist/accounts-Y2VWI3AA.js +115 -0
- package/dist/actions-VJXED57L.js +55 -0
- package/dist/active-entities-BOMM4YDF.js +103 -0
- package/dist/activecampaign-TNJIQA4C.js +938 -0
- package/dist/activities-YH4K4JAI.js +75 -0
- package/dist/ad-group-writes-7BGCZA3M.js +172 -0
- package/dist/ad-groups-A6GU6EW5.js +70 -0
- package/dist/ad-writes-CEMCUDU2.js +176 -0
- package/dist/add-2L2VQ5MU.js +80 -0
- package/dist/add-DRTKSLEQ.js +107 -0
- package/dist/add-LBHISK44.js +305 -0
- package/dist/add-PS36Q2S3.js +97 -0
- package/dist/add-RLMXZLLO.js +148 -0
- package/dist/add-Z2OTFSQO.js +81 -0
- package/dist/add-accounts-GXBE4ZR2.js +91 -0
- package/dist/ads-4EVKVAMR.js +48 -0
- package/dist/ads-OY455VCX.js +79 -0
- package/dist/ads-WYQYZ44U.js +128 -0
- package/dist/ads-ZEF5AU3D.js +120 -0
- package/dist/adsets-ZRS7AZIK.js +182 -0
- package/dist/advertisers-AAGUUSAX.js +125 -0
- package/dist/advertisers-G6DZRBOK.js +123 -0
- package/dist/analytics-ANG42PKM.js +2437 -0
- package/dist/analytics-UI4AKUSF.js +447 -0
- package/dist/animate-KCSICY2N.js +480 -0
- package/dist/approved-LHYBVDXH.js +73 -0
- package/dist/asset-writes-CUF25BLM.js +50 -0
- package/dist/assign-5DFH6HBV.js +80 -0
- package/dist/audience-size-P6WIXOB3.js +76 -0
- package/dist/audience-writes-L7SNU2SB.js +327 -0
- package/dist/audiences-4ASLCNOF.js +280 -0
- package/dist/audiences-A54MU63W.js +86 -0
- package/dist/audiences-SG2BBM7R.js +85 -0
- package/dist/audit-6K5FFV6K.js +88 -0
- package/dist/audit-LA4BSLXV.js +154 -0
- package/dist/autocomplete-XMG6E7TG.js +114 -0
- package/dist/avatars-4IFN4GZD.js +38 -0
- package/dist/bid-pricing-JEOG2Q3L.js +103 -0
- package/dist/brand-C6HUAK74.js +22 -0
- package/dist/brief-5BCPPBU3.js +543 -0
- package/dist/businesses-GQ5FOZDU.js +54 -0
- package/dist/campaign-groups-IYQZSICZ.js +99 -0
- package/dist/campaign-writes-CVOOPZ35.js +176 -0
- package/dist/campaign-writes-YXI5UOPH.js +168 -0
- package/dist/campaigns-FW4WVD25.js +113 -0
- package/dist/campaigns-QMFHNG3N.js +111 -0
- package/dist/campaigns-TX37WHVL.js +78 -0
- package/dist/campaigns-VZJMYETG.js +130 -0
- package/dist/canvas-G4QXNPPE.js +46 -0
- package/dist/capabilities-7643Y2HU.js +147 -0
- package/dist/cards-YHZFJ3US.js +85 -0
- package/dist/catalog-PTVQSATT.js +65 -0
- package/dist/catalogs-YNIUP2AH.js +130 -0
- package/dist/catalogs-ZHCLH43A.js +781 -0
- package/dist/changes-QUKBZVB3.js +135 -0
- package/dist/chatgpt-TIUBMATF.js +47 -0
- package/dist/chats-BGLAG4Q7.js +279 -0
- package/dist/check-MN5ZQ7RX.js +107 -0
- package/dist/chunk-23KN4NL4.js +45 -0
- package/dist/chunk-2UJ5ABI6.js +604 -0
- package/dist/chunk-2XRFWXSA.js +103 -0
- package/dist/chunk-3JV4T6XW.js +69 -0
- package/dist/chunk-3OSBCYKA.js +8954 -0
- package/dist/chunk-3QQHPRRB.js +89 -0
- package/dist/chunk-3WTCMBDC.js +1518 -0
- package/dist/chunk-4BTUF2AV.js +69 -0
- package/dist/chunk-4D37LCBS.js +111 -0
- package/dist/chunk-4QITYZUH.js +163 -0
- package/dist/chunk-4XNF52NU.js +429 -0
- package/dist/chunk-4Y7IJ2PU.js +5368 -0
- package/dist/chunk-53BTYIMJ.js +91 -0
- package/dist/chunk-5ITB24SC.js +544 -0
- package/dist/chunk-5N47LB7X.js +285 -0
- package/dist/chunk-5UBFYJHF.js +170 -0
- package/dist/chunk-6CQOHJZW.js +125 -0
- package/dist/chunk-6PMJU7IU.js +169 -0
- package/dist/chunk-7GGLZOQN.js +91 -0
- package/dist/chunk-7I65KXU7.js +98 -0
- package/dist/chunk-7JFVMJZI.js +207 -0
- package/dist/chunk-A6VODUO3.js +166 -0
- package/dist/chunk-AGTA5FJX.js +139 -0
- package/dist/chunk-AGU4KGT6.js +84 -0
- package/dist/chunk-BXUUKRMM.js +46 -0
- package/dist/chunk-BZTAEZLT.js +51 -0
- package/dist/chunk-C7IOSSI4.js +58 -0
- package/dist/chunk-CIW3Q7B2.js +229 -0
- package/dist/chunk-CJQ77HO5.js +1646 -0
- package/dist/chunk-CNPYG4F3.js +75 -0
- package/dist/chunk-COS3TPHX.js +377 -0
- package/dist/chunk-CQ6HBFOB.js +23 -0
- package/dist/chunk-D7Y3UNWO.js +66 -0
- package/dist/chunk-DJTWY7GL.js +942 -0
- package/dist/chunk-DWW5QSUF.js +638 -0
- package/dist/chunk-E34YYDCE.js +35 -0
- package/dist/chunk-ENUCJ6AO.js +148 -0
- package/dist/chunk-ES3PWGS3.js +438 -0
- package/dist/chunk-ES3PWGS3.js.map +1 -0
- package/dist/chunk-FESQ5TXU.js +42 -0
- package/dist/chunk-FEUKUZRA.js +106 -0
- package/dist/chunk-FJDSL4O5.js +910 -0
- package/dist/chunk-FSTDWVXG.js +455 -0
- package/dist/chunk-FUR7R4D7.js +249 -0
- package/dist/chunk-GYMZCJX6.js +97 -0
- package/dist/chunk-HTT7RBRC.js +846 -0
- package/dist/chunk-HZPTQRX6.js +2441 -0
- package/dist/chunk-HZPTQRX6.js.map +1 -0
- package/dist/chunk-IQWFJEA3.js +217 -0
- package/dist/chunk-IU5K42Q3.js +831 -0
- package/dist/chunk-JARRF5VX.js +66 -0
- package/dist/chunk-JEUFRIYS.js +297 -0
- package/dist/chunk-JNSRQQDP.js +94 -0
- package/dist/chunk-KGAI4E2I.js +106 -0
- package/dist/chunk-KITVYLEX.js +843 -0
- package/dist/chunk-L4LNS54Y.js +138 -0
- package/dist/chunk-L4LNS54Y.js.map +1 -0
- package/dist/chunk-L5VVKIMB.js +203 -0
- package/dist/chunk-L763CNKH.js +333 -0
- package/dist/chunk-LO2MZJJP.js +225 -0
- package/dist/chunk-LV7EU6HM.js +324 -0
- package/dist/chunk-LXZ5E6AC.js +84 -0
- package/dist/chunk-LZRZVIEJ.js +191 -0
- package/dist/chunk-M2MJ52HS.js +676 -0
- package/dist/chunk-MBSAHNMJ.js +547 -0
- package/dist/chunk-MCKYNFPH.js +219 -0
- package/dist/chunk-MHZIOOT5.js +197 -0
- package/dist/chunk-MNOCC5AL.js +207 -0
- package/dist/chunk-MUEJVDHI.js +200 -0
- package/dist/chunk-N6WHUUFH.js +19 -0
- package/dist/chunk-NA5Q473J.js +3868 -0
- package/dist/chunk-NCO5NGBN.js +74 -0
- package/dist/chunk-NLW25WW3.js +52 -0
- package/dist/chunk-NYAFSC5V.js +287 -0
- package/dist/chunk-O7AMKMII.js +215 -0
- package/dist/chunk-OL3QHART.js +188 -0
- package/dist/chunk-OPUEQSKM.js +122 -0
- package/dist/chunk-OXLB5M5M.js +592 -0
- package/dist/chunk-OXYWSVOJ.js +100 -0
- package/dist/chunk-PE4ZP7MX.js +8914 -0
- package/dist/chunk-PG5R35QY.js +73 -0
- package/dist/chunk-PG5R35QY.js.map +1 -0
- package/dist/chunk-PHZOMTI6.js +97 -0
- package/dist/chunk-PIAG4UJT.js +274 -0
- package/dist/chunk-PYWIHAVD.js +64 -0
- package/dist/chunk-QKNPF6ZD.js +24026 -0
- package/dist/chunk-QOBA6PHB.js +131 -0
- package/dist/chunk-QPPQXU3U.js +98 -0
- package/dist/chunk-QTKNS2U2.js +149 -0
- package/dist/chunk-QTLIXCVN.js +46 -0
- package/dist/chunk-R5LRBDEM.js +136 -0
- package/dist/chunk-RRC7F3QQ.js +1919 -0
- package/dist/chunk-SEYCF446.js +191 -0
- package/dist/chunk-SF52UGHZ.js +225 -0
- package/dist/chunk-SVNH6P7O.js +1744 -0
- package/dist/chunk-SWFZJROM.js +64 -0
- package/dist/chunk-UCNIJ2IW.js +494 -0
- package/dist/chunk-UFUYTWEF.js +344 -0
- package/dist/chunk-ULW4EWAA.js +39 -0
- package/dist/chunk-UROKPFIS.js +142 -0
- package/dist/chunk-VCOIFNYH.js +714 -0
- package/dist/chunk-VPF5A7CM.js +476 -0
- package/dist/chunk-VV6FDIP5.js +224 -0
- package/dist/chunk-WRTG3KXU.js +156 -0
- package/dist/chunk-XAW5GL6B.js +76 -0
- package/dist/chunk-XRNJRQ6Q.js +26 -0
- package/dist/chunk-Y5GQO6CR.js +56 -0
- package/dist/chunk-YE4RCEEJ.js +167 -0
- package/dist/chunk-YJYKSMLF.js +296 -0
- package/dist/chunk-YO54MA7R.js +275 -0
- package/dist/chunk-Z6T6VDDA.js +76 -0
- package/dist/chunk-ZOH672S6.js +25 -0
- package/dist/claim-2JNNC66N.js +200 -0
- package/dist/cli.js +45 -45
- package/dist/client-YUVT3RZN.js +19 -0
- package/dist/code-LOOWLRUL.js +76 -0
- package/dist/companies-4NJU5TLU.js +198 -0
- package/dist/company-QOYWS4W6.js +308 -0
- package/dist/complete-7FX2K3PV.js +84 -0
- package/dist/config-AOF6ACIP.js +88 -0
- package/dist/connect-H2HSPMRT.js +45 -0
- package/dist/content-NCW5IJFR.js +85 -0
- package/dist/conversation-4M7YMQOL.js +96 -0
- package/dist/conversion-report-G5JMZNYV.js +127 -0
- package/dist/conversion-upload-command-43PZFYT7.js +439 -0
- package/dist/conversion-writes-JQQCCGPO.js +122 -0
- package/dist/conversions-UO4CQNF6.js +78 -0
- package/dist/conversions-Z7FW7CFT.js +140 -0
- package/dist/copy-writes-ONVSSBLJ.js +170 -0
- package/dist/countries-Q6TA42P7.js +82 -0
- package/dist/create-4SFO4AQZ.js +62 -0
- package/dist/create-D5MA64KL.js +239 -0
- package/dist/create-GJ4ZMY3A.js +210 -0
- package/dist/create-QVY6DSYM.js +135 -0
- package/dist/creatives-ADH6HCCA.js +58 -0
- package/dist/creatives-R3XILT6D.js +223 -0
- package/dist/creatives-S3EZCXUT.js +89 -0
- package/dist/credentials-EQRB6XGZ.js +290 -0
- package/dist/critique-4YRRUNAU.js +1451 -0
- package/dist/critique-JCU2ATT6.js +232 -0
- package/dist/crm-AF6XOOSF.js +323 -0
- package/dist/crm-LSMFGR6R.js +227 -0
- package/dist/crop-RDP7YCNV.js +113 -0
- package/dist/currency-4KNOOZUU.js +88 -0
- package/dist/custom-conversions-7MZFTHUM.js +128 -0
- package/dist/customers-MM3VIZNA.js +59 -0
- package/dist/decide-OPCCKAIT.js +199 -0
- package/dist/delete-CO2YBPTI.js +67 -0
- package/dist/delete-D7HTW32U.js +57 -0
- package/dist/delete-GKQTDOZF.js +69 -0
- package/dist/delete-JUPBYK3H.js +69 -0
- package/dist/delete-KZFI235B.js +85 -0
- package/dist/delete-KZFI235B.js.map +1 -0
- package/dist/delete-R3LXCKA4.js +71 -0
- package/dist/demographics-DK5JDY6M.js +141 -0
- package/dist/describe-537PPL7P.js +97 -0
- package/dist/describe-GIG46DT5.js +97 -0
- package/dist/dimensions-UXK7DMTF.js +101 -0
- package/dist/discard-DEJOM62Y.js +69 -0
- package/dist/discover-MKFDG6NK.js +93 -0
- package/dist/discover-U6YLVLTF.js +172 -0
- package/dist/domain-MBOMV3CQ.js +101 -0
- package/dist/download-KN2I55SA.js +172 -0
- package/dist/download-PRBLR6IQ.js +299 -0
- package/dist/draft-BMNBT37B.js +283 -0
- package/dist/draft-CGPVRRKC.js +335 -0
- package/dist/draft-F74OIT5O.js +310 -0
- package/dist/draft-FIEZWBIX.js +308 -0
- package/dist/draft-H5RVDTFD.js +240 -0
- package/dist/draft-HZ5T6NOI.js +220 -0
- package/dist/draft-UMPCOCP6.js +100 -0
- package/dist/draft-XEUHTUMR.js +103 -0
- package/dist/engine/index.js +13 -13
- package/dist/env-VBSATLEF.js +53 -0
- package/dist/experiment-2XR6MBE2.js +1397 -0
- package/dist/experiments-YNJZCMQM.js +236 -0
- package/dist/export-YCLJG5YP.js +168 -0
- package/dist/extract-E3CMEN5U.js +113 -0
- package/dist/facets-Y4OACBMC.js +117 -0
- package/dist/favorites-NSQX6HKB.js +178 -0
- package/dist/feed-TKMMYAEH.js +177 -0
- package/dist/feedback-MORAVN52.js +111 -0
- package/dist/feedback-record-M3RB7H2C.js +265 -0
- package/dist/fetch-EHP2FK6Y.js +139 -0
- package/dist/fetch-XU6QVWMS.js +179 -0
- package/dist/find-I7U3THF3.js +143 -0
- package/dist/fit-IHUUFCGI.js +65 -0
- package/dist/flows-WSCIMXQX.js +250 -0
- package/dist/follow-A46RAJEX.js +94 -0
- package/dist/follow-competitors-VU2L3KWF.js +112 -0
- package/dist/following-UOUNSU6P.js +113 -0
- package/dist/fonts-3QW7EDHE.js +39 -0
- package/dist/forecast-2WVHMSZP.js +169 -0
- package/dist/forecast-F25LSCM5.js +121 -0
- package/dist/funding-2VROIMLS.js +85 -0
- package/dist/funnel-35DYDBJH.js +397 -0
- package/dist/ga4-ULHKTF23.js +55 -0
- package/dist/generate-Z7AROAES.js +263 -0
- package/dist/get-4CAX33L2.js +59 -0
- package/dist/get-5E4YJKPO.js +66 -0
- package/dist/get-5E4YJKPO.js.map +1 -0
- package/dist/get-ABQZJ2VQ.js +38 -0
- package/dist/get-ASAW6TVF.js +62 -0
- package/dist/get-ASAW6TVF.js.map +1 -0
- package/dist/get-GXVAJZHM.js +56 -0
- package/dist/get-GXVAJZHM.js.map +1 -0
- package/dist/get-IF7KHMSI.js +92 -0
- package/dist/get-N7X75ZJO.js +82 -0
- package/dist/get-ZISAHMTQ.js +59 -0
- package/dist/gif-QLNWBFAH.js +102 -0
- package/dist/google-FDR55RRD.js +136 -0
- package/dist/google-M6XR7YGT.js +3267 -0
- package/dist/google-ads-NCSMNNND.js +198 -0
- package/dist/group-HAQM6P7M.js +43 -0
- package/dist/group-XVDH2ONO.js +43 -0
- package/dist/gsc-GQFI6I2D.js +30 -0
- package/dist/history-FGQ2H7XH.js +69 -0
- package/dist/history-LTOFKBMJ.js +136 -0
- package/dist/history-VJ254UXF.js +102 -0
- package/dist/hubspot-W2NM75YK.js +782 -0
- package/dist/icon-F7AOOTFI.js +137 -0
- package/dist/ideas-54KFDNDM.js +45 -0
- package/dist/images-JOEVCCP6.js +92 -0
- package/dist/improve-LIKOER3S.js +86 -0
- package/dist/ingest-6R7XUL46.js +27 -0
- package/dist/ingest-VCIH5QDR.js +123 -0
- package/dist/ingest-VCIH5QDR.js.map +1 -0
- package/dist/insights-QNE6XCBA.js +439 -0
- package/dist/insights-UXUUOQB7.js +132 -0
- package/dist/inspect-MGOR77FP.js +192 -0
- package/dist/inspiration-VXNGKAJV.js +53 -0
- package/dist/instant-experiences-MT2XMQNH.js +260 -0
- package/dist/intent-FZWPRUCI.js +95 -0
- package/dist/job-TS34W4IU.js +202 -0
- package/dist/job-create-FXXDR2EE.js +109 -0
- package/dist/job-status-R2H4HNC5.js +74 -0
- package/dist/keep-YSU3XMW3.js +78 -0
- package/dist/keyword-gap-4ECYPWXJ.js +130 -0
- package/dist/keyword-metrics-SBIRN5KC.js +200 -0
- package/dist/keywords-for-site-TLNPJHT2.js +131 -0
- package/dist/knowledge-L3VLOVLG.js +195 -0
- package/dist/landing-ZICSVWKF.js +28 -0
- package/dist/landings-XTPNPTHN.js +151 -0
- package/dist/languages-DIKRMAYE.js +55 -0
- package/dist/languages-VNZQ5USL.js +40 -0
- package/dist/launches-5R7EUONQ.js +19 -0
- package/dist/layerize-Q2QWDARG.js +190 -0
- package/dist/lead-routes-IXUCGINI.js +733 -0
- package/dist/leads-JUQFNK55.js +115 -0
- package/dist/leads-UVG6VYAC.js +540 -0
- package/dist/learn-A6BT25LQ.js +207 -0
- package/dist/library-G5YAFLTR.js +211 -0
- package/dist/lighthouse-BCBV2XGP.js +75 -0
- package/dist/line-item-writes-NW7A6HNH.js +211 -0
- package/dist/line-items-OAG3QMDE.js +107 -0
- package/dist/link-4VJ7FSOA.js +67 -0
- package/dist/linkedin-CKOWKD4M.js +1328 -0
- package/dist/linkedin-person-C22IDK7S.js +139 -0
- package/dist/list-2DKLO6AO.js +67 -0
- package/dist/list-4SDJZVOL.js +93 -0
- package/dist/list-6YW4I4VG.js +65 -0
- package/dist/list-CDDXHMJQ.js +306 -0
- package/dist/list-GS42LK5C.js +51 -0
- package/dist/list-HWNHRWGB.js +57 -0
- package/dist/list-QSBEYU45.js +76 -0
- package/dist/list-ZFGOONWL.js +50 -0
- package/dist/list-ZORO7PFP.js +154 -0
- package/dist/locations-4RDUHKVR.js +69 -0
- package/dist/locations-HATR6PSC.js +40 -0
- package/dist/log-OSJHKHPV.js +95 -0
- package/dist/logo-ABO4HJRG.js +18 -0
- package/dist/lookup-SPNT3W3W.js +23 -0
- package/dist/make-7CIVNW77.js +1366 -0
- package/dist/map-PMGZDXAN.js +436 -0
- package/dist/mcp-MOOOTRYG.js +729 -0
- package/dist/media-CIJW2Q3I.js +89 -0
- package/dist/media-GZKW2PZB.js +18 -0
- package/dist/media-sources-5OYCKQ5J.js +35 -0
- package/dist/members-QG5IP5HM.js +47 -0
- package/dist/meme-BPWX7YQH.js +100 -0
- package/dist/meta-KVOSCSPJ.js +122 -0
- package/dist/metrics-R4YS2JL6.js +152 -0
- package/dist/models-RJMZV5SH.js +155 -0
- package/dist/normalize-LATTXSL3.js +144 -0
- package/dist/normalize-NMNOJ6Q5.js +806 -0
- package/dist/options-KALH5TB7.js +125 -0
- package/dist/organization-AGCF7DUJ.js +949 -0
- package/dist/output-34QMC3OU.js +24 -0
- package/dist/page-UDF3LJHP.js +105 -0
- package/dist/page-photos-FCBW5UZS.js +118 -0
- package/dist/pages-5W5G4MRB.js +67 -0
- package/dist/performance-SITVZQWX.js +5565 -0
- package/dist/performance-YNXPUSGJ.js +27 -0
- package/dist/pinterest-IABDXLF5.js +96 -0
- package/dist/pixels-4QAWLSEL.js +109 -0
- package/dist/pixels-TYJVE377.js +62 -0
- package/dist/plan-I6EFL7RC.js +208 -0
- package/dist/posts-SXQSLOFV.js +36 -0
- package/dist/preview-7Y5LE24E.js +218 -0
- package/dist/profile-R5VPOOJU.js +159 -0
- package/dist/promoted-tweet-writes-NAHPJ3VD.js +183 -0
- package/dist/promoted-tweets-2XQ4MWAC.js +119 -0
- package/dist/properties-2D2BIDGC.js +101 -0
- package/dist/publish-UITYPUBD.js +344 -0
- package/dist/query-JOYRNM4O.js +231 -0
- package/dist/query-JOYRNM4O.js.map +1 -0
- package/dist/query-LB5H7IRK.js +236 -0
- package/dist/query-RE7NB2BK.js +62 -0
- package/dist/questionnaire-U767HYDE.js +94 -0
- package/dist/read-3TCDDALC.js +141 -0
- package/dist/reddit-6XIARCTX.js +29 -0
- package/dist/refresh-6UCN7PDX.js +97 -0
- package/dist/refresh-GIB6QQZS.js +42 -0
- package/dist/release-IN65L23O.js +63 -0
- package/dist/relevant-pages-W7IM6YQW.js +99 -0
- package/dist/remove-LZQHDFZF.js +49 -0
- package/dist/remove-X3XWVE2M.js +53 -0
- package/dist/reopen-RMMQ55CH.js +66 -0
- package/dist/rerun-ON6YCJAL.js +95 -0
- package/dist/research-LZBPCXIW.js +72 -0
- package/dist/research-W5KUOBXZ.js +265 -0
- package/dist/reset-MUWXTLIB.js +57 -0
- package/dist/reset-VQNKXFAF.js +57 -0
- package/dist/resolve-DMGWLMTC.js +124 -0
- package/dist/retry-YI4YLYTQ.js +63 -0
- package/dist/retry-ZQUJPKQH.js +65 -0
- package/dist/retry-failed-PEAUXGNT.js +45 -0
- package/dist/revenue-6YZAOMF6.js +91 -0
- package/dist/rule-writes-G25O5JZS.js +525 -0
- package/dist/rules-FHVZEN4D.js +99 -0
- package/dist/rules-KSOAKEI3.js +217 -0
- package/dist/rules-add-7X46VTIJ.js +465 -0
- package/dist/run-TA6HYFKZ.js +69 -0
- package/dist/run-YORKHK6S.js +70 -0
- package/dist/scaffold-ad-RHSHBCVV.js +1512 -0
- package/dist/scaffold-static-ad-XNOGCMPF.js +1010 -0
- package/dist/scaffold-video-XEVJQ7QZ.js +884 -0
- package/dist/schedule-TMTLYULK.js +64 -0
- package/dist/schedule-TNF6M6UD.js +67 -0
- package/dist/scheduled-agents-TS3WLRCM.js +55 -0
- package/dist/schema-2YQAQVON.js +121 -0
- package/dist/schema-6S5ZEPBS.js +135 -0
- package/dist/scrape-FDBYU3TU.js +2241 -0
- package/dist/screenshot-QSRWL4J6.js +102 -0
- package/dist/search-BOCQFUM3.js +51 -0
- package/dist/search-CENPR7GA.js +224 -0
- package/dist/search-GEXDRTAQ.js +26 -0
- package/dist/search-LFTFNDMC.js +91 -0
- package/dist/search-LTUUAGZG.js +177 -0
- package/dist/search-PYLNVZXI.js +92 -0
- package/dist/search-copy-RLRRR3LB.js +168 -0
- package/dist/seeds-E2GLHJ2T.js +101 -0
- package/dist/select-BXBNFGVL.js +106 -0
- package/dist/sends-NBTGBZT7.js +349 -0
- package/dist/sequences-UOIHUOD3.js +146 -0
- package/dist/set-prompt-JJWBB23C.js +198 -0
- package/dist/setup-links-6ANVKZCE.js +144 -0
- package/dist/shared-IMDHTVSW.js +32 -0
- package/dist/shopify-6ISTKZCA.js +3958 -0
- package/dist/site-OIV55MGO.js +180 -0
- package/dist/sitemaps-VYLDUI4L.js +77 -0
- package/dist/sitemaps-VYLDUI4L.js.map +1 -0
- package/dist/sites-HM7ZCGCZ.js +97 -0
- package/dist/sites-HM7ZCGCZ.js.map +1 -0
- package/dist/skills-FBIVWINH.js +47 -0
- package/dist/sources-5L4S5BQV.js +457 -0
- package/dist/sources-GLJWZFHZ.js +30 -0
- package/dist/stale-SK2SDGOT.js +76 -0
- package/dist/stats-2NLNQBRY.js +34 -0
- package/dist/status-TD7ISXC5.js +65 -0
- package/dist/sticker-4NKFAGEK.js +94 -0
- package/dist/stock-XOXZGGU3.js +179 -0
- package/dist/studies-C5IINK5Y.js +250 -0
- package/dist/studio-IDNM42JP.js +49 -0
- package/dist/study-writes-GJXLMM3D.js +470 -0
- package/dist/suggest-Z553OSYW.js +66 -0
- package/dist/sync-CIRDY55O.js +279 -0
- package/dist/sync-PVIFUXX3.js +57 -0
- package/dist/sync-UBOHNOXB.js +55 -0
- package/dist/sync-definition-7NBT6LTK.js +69 -0
- package/dist/tag-22TFBGDG.js +57 -0
- package/dist/tag-manager-QLZHU6NG.js +43 -0
- package/dist/tags-3HB7N5WB.js +23 -0
- package/dist/tags-DG3XQ4SF.js +227 -0
- package/dist/tags-T4EN6XYE.js +23 -0
- package/dist/tags-T6THTVNP.js +26 -0
- package/dist/tags-XY6R2VJ6.js +23 -0
- package/dist/targeting-GNEBULXU.js +762 -0
- package/dist/targeting-constants-GR6BVM2H.js +118 -0
- package/dist/targeting-criteria-CL472KJO.js +113 -0
- package/dist/targets-7AQMSO6H.js +106 -0
- package/dist/terms-LG7FYQOG.js +102 -0
- package/dist/testimonials-4QWVSEPU.js +32 -0
- package/dist/themes-ZTM4OVGK.js +95 -0
- package/dist/top-companies-PMFYOAFK.js +111 -0
- package/dist/transcript-YWFYNFWX.js +165 -0
- package/dist/translate-VMQHPX4B.js +600 -0
- package/dist/triggers-JKXISN45.js +144 -0
- package/dist/tweets-IF5FFFTH.js +123 -0
- package/dist/unfollow-CDUOZWM7.js +46 -0
- package/dist/unlink-IUAFDLBT.js +70 -0
- package/dist/unstage-OVOZE6DA.js +96 -0
- package/dist/unstage-ZYT5RNLK.js +88 -0
- package/dist/update-23Q4T2J5.js +155 -0
- package/dist/update-74VME6PN.js +66 -0
- package/dist/update-O22DAZVX.js +192 -0
- package/dist/update-Q3WJ3DQN.js +81 -0
- package/dist/update-QAWK3O7L.js +101 -0
- package/dist/upload-EAEILUQB.js +150 -0
- package/dist/upload-WASRCKS4.js +130 -0
- package/dist/upload-WASRCKS4.js.map +1 -0
- package/dist/upscale-HB6L6SZG.js +109 -0
- package/dist/url-options-M7RX2TD4.js +131 -0
- package/dist/url-params-E5ON6W2N.js +101 -0
- package/dist/use-HGX7ZRH5.js +111 -0
- package/dist/use-HGX7ZRH5.js.map +1 -0
- package/dist/validate-NB6PS5PF.js +122 -0
- package/dist/variant-O7LXOA2E.js +338 -0
- package/dist/videos-SS2Y6FJF.js +41 -0
- package/dist/view-ED636LWD.js +121 -0
- package/dist/viewer-check-CWS6OVM7.js +83 -0
- package/dist/web-HT22JFQR.js +143 -0
- package/dist/winners-ZG5SHNBS.js +113 -0
- package/dist/winning-ads-FXTP4PWZ.js +86 -0
- package/dist/write-commands-5YVQKO7E.js +1525 -0
- package/dist/write-commands-AIWR7NBO.js +713 -0
- package/dist/write-commands-UK6MKGHI.js +206 -0
- package/dist/write-commands-W3UN6F4Y.js +1172 -0
- package/dist/x-KEMAY75C.js +47 -0
- package/package.json +1 -1
- package/dist/account-2G3IT7J4.js +0 -82
- package/dist/account-CQJFUII3.js +0 -139
- package/dist/account-ULC5N7SI.js +0 -82
- package/dist/account-assets-IDVG4DGK.js +0 -290
- package/dist/account-level-GK7M2MMQ.js +0 -611
- package/dist/account-reads-FRFI6OHK.js +0 -219
- package/dist/account-users-PINZLBT7.js +0 -64
- package/dist/account-writes-WRGJC7VU.js +0 -68
- package/dist/accounts-2KFG33EX.js +0 -80
- package/dist/accounts-5754XUS3.js +0 -115
- package/dist/accounts-KRW3JNCW.js +0 -76
- package/dist/accounts-MHPNZW3W.js +0 -701
- package/dist/accounts-MTNBMXHD.js +0 -114
- package/dist/actions-33IZOT5C.js +0 -55
- package/dist/active-entities-JR5B32X2.js +0 -103
- package/dist/activecampaign-BV5GZFVR.js +0 -938
- package/dist/activities-2RAJXP3J.js +0 -75
- package/dist/ad-group-writes-W6RCMYLC.js +0 -172
- package/dist/ad-groups-XAI2Z62X.js +0 -70
- package/dist/ad-writes-IGWZRTXY.js +0 -176
- package/dist/add-4PJDIW2M.js +0 -148
- package/dist/add-DBCN33GH.js +0 -107
- package/dist/add-KB7O7NSB.js +0 -97
- package/dist/add-PRU32PQN.js +0 -81
- package/dist/add-UZDOQAJL.js +0 -80
- package/dist/add-WDX66JSM.js +0 -305
- package/dist/add-accounts-ZWXG6HLM.js +0 -91
- package/dist/ads-255V76SZ.js +0 -79
- package/dist/ads-7TEPA4KZ.js +0 -48
- package/dist/ads-I6I4MYQH.js +0 -128
- package/dist/ads-JVBLNTBF.js +0 -120
- package/dist/adsets-FN5ZWSYF.js +0 -182
- package/dist/advertisers-BPJWOY7I.js +0 -125
- package/dist/advertisers-SJO6JYIO.js +0 -123
- package/dist/analytics-TXPEXLPQ.js +0 -447
- package/dist/analytics-XDWBEY57.js +0 -2437
- package/dist/animate-425S4ZXS.js +0 -480
- package/dist/approved-KUVAJ5M7.js +0 -73
- package/dist/asset-writes-SSI3CO2A.js +0 -50
- package/dist/assign-CTV6LDEI.js +0 -80
- package/dist/audience-size-5QYI5PKH.js +0 -76
- package/dist/audience-writes-G64754LR.js +0 -327
- package/dist/audiences-JAVNJ5NC.js +0 -86
- package/dist/audiences-JZ6SCEUC.js +0 -280
- package/dist/audiences-OMLKMHEJ.js +0 -85
- package/dist/audit-2YFDJAKL.js +0 -88
- package/dist/audit-4UE6GFLG.js +0 -154
- package/dist/autocomplete-HTUV2UDS.js +0 -114
- package/dist/avatars-K7RBSMIJ.js +0 -38
- package/dist/bid-pricing-OWP4SZP5.js +0 -103
- package/dist/brand-GBP4OEJI.js +0 -22
- package/dist/brief-SLTB3EPO.js +0 -543
- package/dist/businesses-DXRDQIFP.js +0 -54
- package/dist/campaign-groups-LDOQU65Q.js +0 -99
- package/dist/campaign-writes-SHF3XZXV.js +0 -176
- package/dist/campaign-writes-SK55QLY5.js +0 -168
- package/dist/campaigns-6CAKRANC.js +0 -113
- package/dist/campaigns-EHV7J7PW.js +0 -111
- package/dist/campaigns-GG7LLI4X.js +0 -78
- package/dist/campaigns-GQWFSKGC.js +0 -130
- package/dist/canvas-2VRPGRND.js +0 -46
- package/dist/capabilities-BEZXR2FZ.js +0 -147
- package/dist/cards-J2PGFKEF.js +0 -85
- package/dist/catalog-XECCXRM6.js +0 -65
- package/dist/catalogs-P5KMIMC2.js +0 -130
- package/dist/catalogs-TBRONC2D.js +0 -781
- package/dist/changes-3COSIJLU.js +0 -135
- package/dist/chatgpt-S5EVEKYV.js +0 -47
- package/dist/chats-AN52YVBT.js +0 -279
- package/dist/check-AQO7CMDD.js +0 -107
- package/dist/chunk-2MXDSPUO.js +0 -76
- package/dist/chunk-2SGREP24.js +0 -76
- package/dist/chunk-34FVKJS2.js +0 -64
- package/dist/chunk-364TCROV.js +0 -207
- package/dist/chunk-3H5MJOG2.js +0 -91
- package/dist/chunk-3J3W23S4.js +0 -592
- package/dist/chunk-3KMYOPBI.js +0 -98
- package/dist/chunk-3WSJGYA3.js +0 -148
- package/dist/chunk-4745PLPI.js +0 -111
- package/dist/chunk-4JS2O2KV.js +0 -89
- package/dist/chunk-4ULRDQVD.js +0 -714
- package/dist/chunk-4VXQAJRU.js +0 -225
- package/dist/chunk-4XXA4WCS.js +0 -207
- package/dist/chunk-52IYZCRS.js +0 -476
- package/dist/chunk-5CTNSIWY.js +0 -69
- package/dist/chunk-5EF7ZLXA.js +0 -942
- package/dist/chunk-62QMJYML.js +0 -167
- package/dist/chunk-6B4KNOJZ.js +0 -75
- package/dist/chunk-6M77QNJ4.js +0 -69
- package/dist/chunk-7HH4F2KX.js +0 -188
- package/dist/chunk-7O4HFODK.js +0 -26
- package/dist/chunk-AFQF6ISC.js +0 -215
- package/dist/chunk-AXTOIHH2.js +0 -74
- package/dist/chunk-B4UVJCJ4.js +0 -229
- package/dist/chunk-BN4TDL5L.js +0 -217
- package/dist/chunk-C5UFKDAX.js +0 -377
- package/dist/chunk-CREEY2FS.js +0 -455
- package/dist/chunk-CSCHS3JG.js +0 -8954
- package/dist/chunk-DJWEQDBB.js +0 -98
- package/dist/chunk-DLNADMQV.js +0 -547
- package/dist/chunk-DNWP5DL6.js +0 -42
- package/dist/chunk-DW3OPKXI.js +0 -51
- package/dist/chunk-ECJIMIEJ.js +0 -142
- package/dist/chunk-EHIISZYD.js +0 -296
- package/dist/chunk-ERRTBCDW.js +0 -191
- package/dist/chunk-EZBZU6N7.js +0 -66
- package/dist/chunk-FBG3JDET.js +0 -97
- package/dist/chunk-FOWT6ENH.js +0 -170
- package/dist/chunk-FSGJSREN.js +0 -2437
- package/dist/chunk-FSGJSREN.js.map +0 -1
- package/dist/chunk-FVZL2YC5.js +0 -3868
- package/dist/chunk-GDQJG4BO.js +0 -91
- package/dist/chunk-GEFZVG4P.js +0 -219
- package/dist/chunk-GLCHD54W.js +0 -74
- package/dist/chunk-GLCHD54W.js.map +0 -1
- package/dist/chunk-GT77XMOG.js +0 -23
- package/dist/chunk-GXPZJ2QN.js +0 -225
- package/dist/chunk-HAJYFRXL.js +0 -224
- package/dist/chunk-HPDGVK6R.js +0 -324
- package/dist/chunk-ILEJXJH2.js +0 -1518
- package/dist/chunk-J4ASA24X.js +0 -203
- package/dist/chunk-JCVPZ7CV.js +0 -638
- package/dist/chunk-KG7FPYM2.js +0 -64
- package/dist/chunk-KRQ2AXFW.js +0 -191
- package/dist/chunk-L5IYVZM2.js +0 -39
- package/dist/chunk-LHQ6GXNF.js +0 -46
- package/dist/chunk-LS2KEAYJ.js +0 -66
- package/dist/chunk-LURM3KKS.js +0 -94
- package/dist/chunk-MHH7SGLS.js +0 -106
- package/dist/chunk-MZIYRWXL.js +0 -285
- package/dist/chunk-NY5VYGTP.js +0 -97
- package/dist/chunk-O37YK4P6.js +0 -136
- package/dist/chunk-PGBZ73UZ.js +0 -429
- package/dist/chunk-PN72Z2W2.js +0 -56
- package/dist/chunk-QJ5TU5J6.js +0 -100
- package/dist/chunk-QNLPZOHV.js +0 -84
- package/dist/chunk-QNXDSNOQ.js +0 -544
- package/dist/chunk-QOC3JEUQ.js +0 -363
- package/dist/chunk-QOC3JEUQ.js.map +0 -1
- package/dist/chunk-R44B522K.js +0 -139
- package/dist/chunk-R5GGTLYE.js +0 -846
- package/dist/chunk-R6T25WTZ.js +0 -344
- package/dist/chunk-RUJS2NOA.js +0 -297
- package/dist/chunk-SDQLZYQG.js +0 -843
- package/dist/chunk-SEC6FPWC.js +0 -494
- package/dist/chunk-SJAUMPL3.js +0 -46
- package/dist/chunk-SNDHR5QA.js +0 -24026
- package/dist/chunk-SP5L7EYC.js +0 -125
- package/dist/chunk-SPBNAGIN.js +0 -1646
- package/dist/chunk-SWNCS2OD.js +0 -333
- package/dist/chunk-T37PAZT2.js +0 -274
- package/dist/chunk-T6PTG6VM.js +0 -5368
- package/dist/chunk-TE4ASZSC.js +0 -45
- package/dist/chunk-TEKML2NW.js +0 -35
- package/dist/chunk-TKDOVFO6.js +0 -287
- package/dist/chunk-TRMZQRVV.js +0 -1919
- package/dist/chunk-TTKDFRON.js +0 -149
- package/dist/chunk-U2BPZ27S.js +0 -910
- package/dist/chunk-UPDIBQUC.js +0 -106
- package/dist/chunk-V2XEX2YR.js +0 -84
- package/dist/chunk-V62ZWGCL.js +0 -103
- package/dist/chunk-VCUXAPLM.js +0 -169
- package/dist/chunk-W7C7HZFJ.js +0 -275
- package/dist/chunk-WPAW6EVY.js +0 -166
- package/dist/chunk-WPSLL3S2.js +0 -604
- package/dist/chunk-WW6JLISJ.js +0 -200
- package/dist/chunk-X3HPRECW.js +0 -52
- package/dist/chunk-XGX2WOV2.js +0 -8914
- package/dist/chunk-XJHUSJY6.js +0 -156
- package/dist/chunk-XPDUBDPL.js +0 -25
- package/dist/chunk-XRSRHAEU.js +0 -163
- package/dist/chunk-XVHR2NCG.js +0 -249
- package/dist/chunk-XWO6CXNG.js +0 -19
- package/dist/chunk-XZWBLUDV.js +0 -831
- package/dist/chunk-Y25HSPRJ.js +0 -122
- package/dist/chunk-YUCGCJKT.js +0 -676
- package/dist/chunk-ZBUIWVF3.js +0 -197
- package/dist/chunk-ZFJ2FQUH.js +0 -131
- package/dist/chunk-ZNXP3WNJ.js +0 -58
- package/dist/chunk-ZVXKWLLE.js +0 -1744
- package/dist/claim-NRNO4XCO.js +0 -200
- package/dist/client-463NKLRT.js +0 -19
- package/dist/code-R4JOQ27J.js +0 -76
- package/dist/companies-4TOBU44J.js +0 -198
- package/dist/company-RK34S3IA.js +0 -308
- package/dist/complete-7BNBQ5AI.js +0 -84
- package/dist/config-GDLHHBJZ.js +0 -88
- package/dist/connect-CRIRSXN3.js +0 -45
- package/dist/content-FCO6MGXW.js +0 -85
- package/dist/conversation-4CQG2B2C.js +0 -96
- package/dist/conversion-report-PDTQTRVB.js +0 -127
- package/dist/conversion-upload-command-MEO4WLZH.js +0 -439
- package/dist/conversion-writes-ZVBOXUIA.js +0 -122
- package/dist/conversions-BND5HYTL.js +0 -78
- package/dist/conversions-POBKTXQF.js +0 -140
- package/dist/copy-writes-EUFEVWDW.js +0 -170
- package/dist/countries-TKL5T5JL.js +0 -82
- package/dist/create-BJ7XBNY5.js +0 -62
- package/dist/create-PYP3QWTL.js +0 -135
- package/dist/create-XN4KVB5U.js +0 -210
- package/dist/create-YSGBH6Q4.js +0 -239
- package/dist/creatives-57XIJAEG.js +0 -223
- package/dist/creatives-6VJDUHEY.js +0 -89
- package/dist/creatives-ANTJUTIE.js +0 -58
- package/dist/credentials-KIH6ICDU.js +0 -290
- package/dist/critique-GWRXVXVG.js +0 -1451
- package/dist/critique-MZUTDK4V.js +0 -232
- package/dist/crm-QSHUYXTW.js +0 -323
- package/dist/crm-Y5QTZAHO.js +0 -227
- package/dist/crop-WKTW3EMP.js +0 -113
- package/dist/currency-PTOI5SPU.js +0 -88
- package/dist/custom-conversions-NDY5RHSM.js +0 -128
- package/dist/customers-2G32E6W7.js +0 -59
- package/dist/decide-X2UAKYXK.js +0 -199
- package/dist/delete-2ZTMTKYD.js +0 -69
- package/dist/delete-3H6YH4YK.js +0 -67
- package/dist/delete-FOSTK2RA.js +0 -71
- package/dist/delete-FOSTK2RA.js.map +0 -1
- package/dist/delete-HIAZHA56.js +0 -57
- package/dist/delete-I43JQH2E.js +0 -69
- package/dist/delete-RF44ILYE.js +0 -71
- package/dist/demographics-2UYQW6II.js +0 -141
- package/dist/describe-M6DYXNQC.js +0 -97
- package/dist/describe-OQ6R3EF7.js +0 -97
- package/dist/dimensions-DGYM5E5P.js +0 -101
- package/dist/discard-NKPQ73UM.js +0 -69
- package/dist/discover-XLIH7RCB.js +0 -93
- package/dist/discover-YKMBVSPF.js +0 -172
- package/dist/domain-LUDUZB3F.js +0 -101
- package/dist/download-LL6DL62N.js +0 -172
- package/dist/download-SFWMT7DL.js +0 -299
- package/dist/draft-374Z4MGY.js +0 -103
- package/dist/draft-736FJJWK.js +0 -310
- package/dist/draft-7LPUJZCF.js +0 -283
- package/dist/draft-G432FJ7N.js +0 -240
- package/dist/draft-MPWR47CG.js +0 -308
- package/dist/draft-R5ND5SWT.js +0 -100
- package/dist/draft-T7TWIFEX.js +0 -335
- package/dist/draft-XAAIGE6Q.js +0 -220
- package/dist/env-DQHY5ODN.js +0 -53
- package/dist/experiment-MO6MT6OJ.js +0 -1397
- package/dist/experiments-OGZV73W6.js +0 -236
- package/dist/export-6Z6QBU6V.js +0 -168
- package/dist/extract-YGOQBOQK.js +0 -113
- package/dist/facets-OLZ7JLFL.js +0 -117
- package/dist/favorites-R3JO4SJJ.js +0 -178
- package/dist/feed-IUMMHM3I.js +0 -177
- package/dist/feedback-TJRYTOR3.js +0 -111
- package/dist/feedback-record-7IAJI5IY.js +0 -265
- package/dist/fetch-AL44XS4Q.js +0 -139
- package/dist/fetch-K3NRT2L2.js +0 -179
- package/dist/find-ZFIGMRYQ.js +0 -143
- package/dist/fit-5NVXWXZV.js +0 -65
- package/dist/flows-LL5SPPIK.js +0 -250
- package/dist/follow-SS374QUW.js +0 -94
- package/dist/follow-competitors-3LTOTTBY.js +0 -112
- package/dist/following-YMA5O3LF.js +0 -113
- package/dist/fonts-E3CNWPD5.js +0 -39
- package/dist/forecast-KOBF5TKM.js +0 -169
- package/dist/forecast-PWGN4ETP.js +0 -121
- package/dist/funding-KLIZ73SS.js +0 -85
- package/dist/funnel-XIZROHV7.js +0 -397
- package/dist/ga4-XPCE4EK5.js +0 -55
- package/dist/generate-GHIXVLMY.js +0 -263
- package/dist/get-HCGFATFD.js +0 -38
- package/dist/get-JR2KZXW5.js +0 -63
- package/dist/get-JR2KZXW5.js.map +0 -1
- package/dist/get-RDTJSWSA.js +0 -92
- package/dist/get-SGNT4JG2.js +0 -59
- package/dist/get-TGFXZC5S.js +0 -61
- package/dist/get-TGFXZC5S.js.map +0 -1
- package/dist/get-WS744HAO.js +0 -59
- package/dist/get-XPJ4BZGP.js +0 -82
- package/dist/get-YD7GDMDR.js +0 -63
- package/dist/get-YD7GDMDR.js.map +0 -1
- package/dist/gif-YK5HJXRE.js +0 -102
- package/dist/google-5JV7OMOH.js +0 -3267
- package/dist/google-BI45CXMW.js +0 -136
- package/dist/google-ads-DYZGUM6W.js +0 -198
- package/dist/group-7OWIYAKJ.js +0 -43
- package/dist/group-H6ZYRPE6.js +0 -43
- package/dist/gsc-HI2KXDEU.js +0 -30
- package/dist/history-3EQQHYKT.js +0 -69
- package/dist/history-RD2YMNNL.js +0 -102
- package/dist/history-SQPJ7PPE.js +0 -136
- package/dist/hubspot-MYTV36SM.js +0 -782
- package/dist/icon-HLJCWTR3.js +0 -137
- package/dist/ideas-CVXHFVX7.js +0 -45
- package/dist/images-XP4TKE2F.js +0 -92
- package/dist/improve-BRC4R6MW.js +0 -86
- package/dist/ingest-4GNJ2PWL.js +0 -26
- package/dist/ingest-5NYBUZE2.js +0 -110
- package/dist/ingest-5NYBUZE2.js.map +0 -1
- package/dist/insights-CN3GUTT7.js +0 -132
- package/dist/insights-IVW6W5CP.js +0 -439
- package/dist/inspect-25IVRU45.js +0 -192
- package/dist/inspiration-D75DO3MD.js +0 -53
- package/dist/instant-experiences-6F6GXZ67.js +0 -260
- package/dist/intent-3GDLPKKN.js +0 -95
- package/dist/job-2JJNKUHT.js +0 -202
- package/dist/job-create-BNTNZCSP.js +0 -109
- package/dist/job-status-N7RWRDRO.js +0 -74
- package/dist/keep-Z2WH3CKU.js +0 -78
- package/dist/keyword-gap-B2WPVHOB.js +0 -130
- package/dist/keyword-metrics-UDGWN7BO.js +0 -200
- package/dist/keywords-for-site-GEG6AXD3.js +0 -131
- package/dist/knowledge-PKXPN4RV.js +0 -195
- package/dist/landing-O2ZUIUGE.js +0 -28
- package/dist/landings-7QRITXZ2.js +0 -151
- package/dist/languages-RZLMZR57.js +0 -55
- package/dist/languages-UJAOPTV2.js +0 -40
- package/dist/launches-4H6ANGTG.js +0 -19
- package/dist/layerize-P5LFIA4X.js +0 -190
- package/dist/lead-routes-WVXWVG62.js +0 -733
- package/dist/leads-CJKRKB2Q.js +0 -540
- package/dist/leads-MTTOYNPM.js +0 -115
- package/dist/learn-QPXZZIZZ.js +0 -207
- package/dist/library-VW27X75P.js +0 -211
- package/dist/lighthouse-FGUFJRGR.js +0 -75
- package/dist/line-item-writes-RVOAMJ5R.js +0 -211
- package/dist/line-items-POZRAJLC.js +0 -107
- package/dist/link-IXEZKRM7.js +0 -67
- package/dist/linkedin-5PYG5HEM.js +0 -1328
- package/dist/linkedin-person-EMJXEZYR.js +0 -139
- package/dist/list-4KS7WSUG.js +0 -306
- package/dist/list-7GDMM26I.js +0 -93
- package/dist/list-DVVOP6FM.js +0 -50
- package/dist/list-J5KWXHFO.js +0 -76
- package/dist/list-OZCU2T22.js +0 -67
- package/dist/list-PTK2HOUY.js +0 -51
- package/dist/list-Q5LVTPQP.js +0 -57
- package/dist/list-UG4V5AM2.js +0 -65
- package/dist/list-XOYU7UTX.js +0 -154
- package/dist/locations-EISZ6JOT.js +0 -40
- package/dist/locations-VJX64ZZR.js +0 -69
- package/dist/log-2F2N24DT.js +0 -95
- package/dist/logo-H2KHGLYD.js +0 -18
- package/dist/lookup-K57ITJWF.js +0 -23
- package/dist/make-T6HLXIYY.js +0 -1366
- package/dist/map-QGJZIC5N.js +0 -436
- package/dist/mcp-RSW7KAWP.js +0 -729
- package/dist/media-HDHZULQ7.js +0 -18
- package/dist/media-K5RJXLTN.js +0 -89
- package/dist/media-sources-7R7FO53Y.js +0 -35
- package/dist/members-B6TKGGT5.js +0 -47
- package/dist/meme-QMCUGXUE.js +0 -100
- package/dist/meta-MOSJVYIE.js +0 -122
- package/dist/metrics-PRIKXVYZ.js +0 -152
- package/dist/models-M3E4YFCT.js +0 -155
- package/dist/normalize-5B4EQLUX.js +0 -144
- package/dist/normalize-5QIGANTK.js +0 -806
- package/dist/options-K33CJOR6.js +0 -125
- package/dist/organization-A4NFWWWI.js +0 -949
- package/dist/output-U5ZV6PST.js +0 -24
- package/dist/page-XVOUD4VV.js +0 -105
- package/dist/page-photos-4JTIKXAW.js +0 -118
- package/dist/pages-BAUS7LQM.js +0 -67
- package/dist/performance-MHJDRLEK.js +0 -5565
- package/dist/performance-NVURSEZ6.js +0 -27
- package/dist/pinterest-NA6HGPMB.js +0 -96
- package/dist/pixels-QOSEYXCP.js +0 -109
- package/dist/pixels-THDQD3RF.js +0 -62
- package/dist/plan-JYSHKPZQ.js +0 -208
- package/dist/posts-ILAFADBW.js +0 -36
- package/dist/preview-X6EJGPAY.js +0 -218
- package/dist/profile-YHI65VGK.js +0 -159
- package/dist/promoted-tweet-writes-MXXVRLVQ.js +0 -183
- package/dist/promoted-tweets-HFLGXWX2.js +0 -119
- package/dist/properties-ZLY6NYVK.js +0 -101
- package/dist/publish-6ZXFUBGP.js +0 -344
- package/dist/query-ELD7WSFR.js +0 -247
- package/dist/query-ELD7WSFR.js.map +0 -1
- package/dist/query-HFHTLNDN.js +0 -236
- package/dist/query-WMEX73ZB.js +0 -62
- package/dist/questionnaire-Y37I64FO.js +0 -94
- package/dist/read-2HQEZIJW.js +0 -141
- package/dist/reddit-BIHGJPGP.js +0 -29
- package/dist/refresh-4O32S4YR.js +0 -97
- package/dist/refresh-LVV4SPLT.js +0 -42
- package/dist/release-VIPNSPQ5.js +0 -63
- package/dist/relevant-pages-B5SYN575.js +0 -99
- package/dist/remove-2E77743U.js +0 -53
- package/dist/remove-TPOWWFZ6.js +0 -49
- package/dist/reopen-UOBTJBMQ.js +0 -66
- package/dist/rerun-UPDIXTEL.js +0 -95
- package/dist/research-ELM3KHGE.js +0 -72
- package/dist/research-FOJIDMSE.js +0 -265
- package/dist/reset-FTLWUFZK.js +0 -57
- package/dist/reset-GIXXLPHQ.js +0 -57
- package/dist/resolve-QHR5JJTJ.js +0 -124
- package/dist/retry-HNWXJR5U.js +0 -65
- package/dist/retry-NY5KFEDA.js +0 -63
- package/dist/retry-failed-OAH7JQKD.js +0 -45
- package/dist/revenue-JFMUODJO.js +0 -91
- package/dist/rule-writes-A4BFYHPA.js +0 -525
- package/dist/rules-56E55SGC.js +0 -99
- package/dist/rules-HLREXY2M.js +0 -217
- package/dist/rules-add-ZOPOWJMY.js +0 -465
- package/dist/run-4UIPMCSN.js +0 -69
- package/dist/run-GACZDI6Q.js +0 -70
- package/dist/scaffold-ad-Z2HSN4PE.js +0 -1512
- package/dist/scaffold-static-ad-ODZGTIM5.js +0 -1010
- package/dist/scaffold-video-EHGAMEEP.js +0 -884
- package/dist/schedule-OFPSZVZ2.js +0 -67
- package/dist/schedule-ZATNBBWD.js +0 -64
- package/dist/scheduled-agents-4VY4CAA2.js +0 -55
- package/dist/schema-EYGPETLF.js +0 -121
- package/dist/schema-OGP4DUPP.js +0 -135
- package/dist/scrape-ZHL2BHS7.js +0 -2241
- package/dist/screenshot-ADMRDYWN.js +0 -102
- package/dist/search-6W4HXR2S.js +0 -91
- package/dist/search-6ZWI2NML.js +0 -92
- package/dist/search-CQUS7EOM.js +0 -51
- package/dist/search-HF5ECIYW.js +0 -26
- package/dist/search-MKVVMJ2Q.js +0 -224
- package/dist/search-QUF6LHQ5.js +0 -177
- package/dist/search-copy-O6FDX4HT.js +0 -168
- package/dist/seeds-5TM3O3K3.js +0 -101
- package/dist/select-FCQUYBKV.js +0 -106
- package/dist/sends-MZKHZZGJ.js +0 -349
- package/dist/sequences-3CEVHGHB.js +0 -146
- package/dist/set-prompt-IBAG6BDA.js +0 -198
- package/dist/setup-links-4STQ5B4P.js +0 -144
- package/dist/shared-I3SB77VH.js +0 -32
- package/dist/shopify-7LDHCWUQ.js +0 -3958
- package/dist/site-I3NFMPJB.js +0 -180
- package/dist/sitemaps-PLAWVXQL.js +0 -87
- package/dist/sitemaps-PLAWVXQL.js.map +0 -1
- package/dist/sites-WX2IBTZT.js +0 -101
- package/dist/sites-WX2IBTZT.js.map +0 -1
- package/dist/skills-O6EQOAMQ.js +0 -47
- package/dist/sources-K2LILGTW.js +0 -30
- package/dist/sources-ZM7LEIMM.js +0 -457
- package/dist/stale-VR5QAYB6.js +0 -76
- package/dist/stats-QQRYOMZA.js +0 -34
- package/dist/status-5OMVGFCH.js +0 -65
- package/dist/sticker-654HS3K2.js +0 -94
- package/dist/stock-35LOO3YN.js +0 -179
- package/dist/studies-IGOCWM7F.js +0 -250
- package/dist/studio-3D42TUJX.js +0 -49
- package/dist/study-writes-Z5P2W7JH.js +0 -470
- package/dist/suggest-JASHCOL5.js +0 -66
- package/dist/sync-6AN67IX3.js +0 -55
- package/dist/sync-RCDODSOD.js +0 -57
- package/dist/sync-URIRLHTS.js +0 -279
- package/dist/sync-definition-MZUJOJYI.js +0 -69
- package/dist/tag-7YMFAZQQ.js +0 -57
- package/dist/tag-manager-LU4GAZ6R.js +0 -43
- package/dist/tags-6A7QOYBI.js +0 -23
- package/dist/tags-JHT3Q6VO.js +0 -227
- package/dist/tags-KSMLT4G2.js +0 -26
- package/dist/tags-MTVZJHCE.js +0 -23
- package/dist/tags-OU32R2SH.js +0 -23
- package/dist/targeting-7HXKBXWY.js +0 -762
- package/dist/targeting-constants-QIB3UZHM.js +0 -118
- package/dist/targeting-criteria-NUXZB7NP.js +0 -113
- package/dist/targets-LQ7HGI73.js +0 -106
- package/dist/terms-X4OJWTQH.js +0 -102
- package/dist/testimonials-Z2KOOMVH.js +0 -32
- package/dist/themes-6KVP3COR.js +0 -95
- package/dist/top-companies-WWNPUJ23.js +0 -111
- package/dist/transcript-P7HKVABU.js +0 -165
- package/dist/translate-II4JY2XW.js +0 -600
- package/dist/triggers-Z3LV3KJR.js +0 -144
- package/dist/tweets-X5PTAT6F.js +0 -123
- package/dist/unfollow-S5LHFLGW.js +0 -46
- package/dist/unlink-XTZA474P.js +0 -70
- package/dist/unstage-AVLORZLW.js +0 -96
- package/dist/unstage-QXOL5DXZ.js +0 -88
- package/dist/update-3NA6ABLW.js +0 -101
- package/dist/update-5ZNS2DKP.js +0 -66
- package/dist/update-DDKNKV6M.js +0 -81
- package/dist/update-MDVZ24VQ.js +0 -192
- package/dist/update-UE4XVBKL.js +0 -155
- package/dist/upload-IMP5CUY5.js +0 -129
- package/dist/upload-IMP5CUY5.js.map +0 -1
- package/dist/upload-SYFB2VTJ.js +0 -150
- package/dist/upscale-P5EYUVOZ.js +0 -109
- package/dist/url-options-DJZV3ADK.js +0 -131
- package/dist/url-params-Y5XQSDEF.js +0 -101
- package/dist/use-D3RBWLJO.js +0 -95
- package/dist/use-D3RBWLJO.js.map +0 -1
- package/dist/validate-BCK22BQL.js +0 -122
- package/dist/variant-JQVZUUA4.js +0 -338
- package/dist/videos-YCQVOOFE.js +0 -41
- package/dist/view-IKKRJ5YD.js +0 -121
- package/dist/viewer-check-5GREZIVJ.js +0 -83
- package/dist/web-7TPDDBI6.js +0 -143
- package/dist/winners-4PKEVMUC.js +0 -113
- package/dist/winning-ads-7X5EWSJX.js +0 -86
- package/dist/write-commands-CTLF2M6L.js +0 -713
- package/dist/write-commands-CY734U34.js +0 -1172
- package/dist/write-commands-FIS6Y2MN.js +0 -206
- package/dist/write-commands-V77MD5SC.js +0 -1525
- package/dist/x-EMLFCHSG.js +0 -47
- /package/dist/{account-2G3IT7J4.js.map → account-2UXZ6CZJ.js.map} +0 -0
- /package/dist/{account-CQJFUII3.js.map → account-HQD5P3AF.js.map} +0 -0
- /package/dist/{account-ULC5N7SI.js.map → account-OWMJG4IW.js.map} +0 -0
- /package/dist/{account-assets-IDVG4DGK.js.map → account-assets-JRMYVXQP.js.map} +0 -0
- /package/dist/{account-level-GK7M2MMQ.js.map → account-level-PEGLZQTI.js.map} +0 -0
- /package/dist/{account-reads-FRFI6OHK.js.map → account-reads-W2GAN335.js.map} +0 -0
- /package/dist/{account-users-PINZLBT7.js.map → account-users-WLTQNPL7.js.map} +0 -0
- /package/dist/{account-writes-WRGJC7VU.js.map → account-writes-TNADUSHW.js.map} +0 -0
- /package/dist/{accounts-MHPNZW3W.js.map → accounts-D3SQTZB7.js.map} +0 -0
- /package/dist/{accounts-2KFG33EX.js.map → accounts-HRQFOTBJ.js.map} +0 -0
- /package/dist/{accounts-MTNBMXHD.js.map → accounts-MQMEOGQD.js.map} +0 -0
- /package/dist/{accounts-KRW3JNCW.js.map → accounts-T6SRCZJQ.js.map} +0 -0
- /package/dist/{accounts-5754XUS3.js.map → accounts-Y2VWI3AA.js.map} +0 -0
- /package/dist/{actions-33IZOT5C.js.map → actions-VJXED57L.js.map} +0 -0
- /package/dist/{active-entities-JR5B32X2.js.map → active-entities-BOMM4YDF.js.map} +0 -0
- /package/dist/{activecampaign-BV5GZFVR.js.map → activecampaign-TNJIQA4C.js.map} +0 -0
- /package/dist/{activities-2RAJXP3J.js.map → activities-YH4K4JAI.js.map} +0 -0
- /package/dist/{ad-group-writes-W6RCMYLC.js.map → ad-group-writes-7BGCZA3M.js.map} +0 -0
- /package/dist/{ad-groups-XAI2Z62X.js.map → ad-groups-A6GU6EW5.js.map} +0 -0
- /package/dist/{ad-writes-IGWZRTXY.js.map → ad-writes-CEMCUDU2.js.map} +0 -0
- /package/dist/{add-UZDOQAJL.js.map → add-2L2VQ5MU.js.map} +0 -0
- /package/dist/{add-DBCN33GH.js.map → add-DRTKSLEQ.js.map} +0 -0
- /package/dist/{add-WDX66JSM.js.map → add-LBHISK44.js.map} +0 -0
- /package/dist/{add-KB7O7NSB.js.map → add-PS36Q2S3.js.map} +0 -0
- /package/dist/{add-4PJDIW2M.js.map → add-RLMXZLLO.js.map} +0 -0
- /package/dist/{add-PRU32PQN.js.map → add-Z2OTFSQO.js.map} +0 -0
- /package/dist/{add-accounts-ZWXG6HLM.js.map → add-accounts-GXBE4ZR2.js.map} +0 -0
- /package/dist/{ads-7TEPA4KZ.js.map → ads-4EVKVAMR.js.map} +0 -0
- /package/dist/{ads-255V76SZ.js.map → ads-OY455VCX.js.map} +0 -0
- /package/dist/{ads-I6I4MYQH.js.map → ads-WYQYZ44U.js.map} +0 -0
- /package/dist/{ads-JVBLNTBF.js.map → ads-ZEF5AU3D.js.map} +0 -0
- /package/dist/{adsets-FN5ZWSYF.js.map → adsets-ZRS7AZIK.js.map} +0 -0
- /package/dist/{advertisers-BPJWOY7I.js.map → advertisers-AAGUUSAX.js.map} +0 -0
- /package/dist/{advertisers-SJO6JYIO.js.map → advertisers-G6DZRBOK.js.map} +0 -0
- /package/dist/{analytics-XDWBEY57.js.map → analytics-ANG42PKM.js.map} +0 -0
- /package/dist/{analytics-TXPEXLPQ.js.map → analytics-UI4AKUSF.js.map} +0 -0
- /package/dist/{animate-425S4ZXS.js.map → animate-KCSICY2N.js.map} +0 -0
- /package/dist/{approved-KUVAJ5M7.js.map → approved-LHYBVDXH.js.map} +0 -0
- /package/dist/{asset-writes-SSI3CO2A.js.map → asset-writes-CUF25BLM.js.map} +0 -0
- /package/dist/{assign-CTV6LDEI.js.map → assign-5DFH6HBV.js.map} +0 -0
- /package/dist/{audience-size-5QYI5PKH.js.map → audience-size-P6WIXOB3.js.map} +0 -0
- /package/dist/{audience-writes-G64754LR.js.map → audience-writes-L7SNU2SB.js.map} +0 -0
- /package/dist/{audiences-JZ6SCEUC.js.map → audiences-4ASLCNOF.js.map} +0 -0
- /package/dist/{audiences-JAVNJ5NC.js.map → audiences-A54MU63W.js.map} +0 -0
- /package/dist/{audiences-OMLKMHEJ.js.map → audiences-SG2BBM7R.js.map} +0 -0
- /package/dist/{audit-2YFDJAKL.js.map → audit-6K5FFV6K.js.map} +0 -0
- /package/dist/{audit-4UE6GFLG.js.map → audit-LA4BSLXV.js.map} +0 -0
- /package/dist/{autocomplete-HTUV2UDS.js.map → autocomplete-XMG6E7TG.js.map} +0 -0
- /package/dist/{avatars-K7RBSMIJ.js.map → avatars-4IFN4GZD.js.map} +0 -0
- /package/dist/{bid-pricing-OWP4SZP5.js.map → bid-pricing-JEOG2Q3L.js.map} +0 -0
- /package/dist/{brand-GBP4OEJI.js.map → brand-C6HUAK74.js.map} +0 -0
- /package/dist/{brief-SLTB3EPO.js.map → brief-5BCPPBU3.js.map} +0 -0
- /package/dist/{businesses-DXRDQIFP.js.map → businesses-GQ5FOZDU.js.map} +0 -0
- /package/dist/{campaign-groups-LDOQU65Q.js.map → campaign-groups-IYQZSICZ.js.map} +0 -0
- /package/dist/{campaign-writes-SHF3XZXV.js.map → campaign-writes-CVOOPZ35.js.map} +0 -0
- /package/dist/{campaign-writes-SK55QLY5.js.map → campaign-writes-YXI5UOPH.js.map} +0 -0
- /package/dist/{campaigns-6CAKRANC.js.map → campaigns-FW4WVD25.js.map} +0 -0
- /package/dist/{campaigns-EHV7J7PW.js.map → campaigns-QMFHNG3N.js.map} +0 -0
- /package/dist/{campaigns-GG7LLI4X.js.map → campaigns-TX37WHVL.js.map} +0 -0
- /package/dist/{campaigns-GQWFSKGC.js.map → campaigns-VZJMYETG.js.map} +0 -0
- /package/dist/{canvas-2VRPGRND.js.map → canvas-G4QXNPPE.js.map} +0 -0
- /package/dist/{capabilities-BEZXR2FZ.js.map → capabilities-7643Y2HU.js.map} +0 -0
- /package/dist/{cards-J2PGFKEF.js.map → cards-YHZFJ3US.js.map} +0 -0
- /package/dist/{catalog-XECCXRM6.js.map → catalog-PTVQSATT.js.map} +0 -0
- /package/dist/{catalogs-P5KMIMC2.js.map → catalogs-YNIUP2AH.js.map} +0 -0
- /package/dist/{catalogs-TBRONC2D.js.map → catalogs-ZHCLH43A.js.map} +0 -0
- /package/dist/{changes-3COSIJLU.js.map → changes-QUKBZVB3.js.map} +0 -0
- /package/dist/{chatgpt-S5EVEKYV.js.map → chatgpt-TIUBMATF.js.map} +0 -0
- /package/dist/{chats-AN52YVBT.js.map → chats-BGLAG4Q7.js.map} +0 -0
- /package/dist/{check-AQO7CMDD.js.map → check-MN5ZQ7RX.js.map} +0 -0
- /package/dist/{chunk-TE4ASZSC.js.map → chunk-23KN4NL4.js.map} +0 -0
- /package/dist/{chunk-WPSLL3S2.js.map → chunk-2UJ5ABI6.js.map} +0 -0
- /package/dist/{chunk-V62ZWGCL.js.map → chunk-2XRFWXSA.js.map} +0 -0
- /package/dist/{chunk-6M77QNJ4.js.map → chunk-3JV4T6XW.js.map} +0 -0
- /package/dist/{chunk-CSCHS3JG.js.map → chunk-3OSBCYKA.js.map} +0 -0
- /package/dist/{chunk-4JS2O2KV.js.map → chunk-3QQHPRRB.js.map} +0 -0
- /package/dist/{chunk-ILEJXJH2.js.map → chunk-3WTCMBDC.js.map} +0 -0
- /package/dist/{chunk-5CTNSIWY.js.map → chunk-4BTUF2AV.js.map} +0 -0
- /package/dist/{chunk-4745PLPI.js.map → chunk-4D37LCBS.js.map} +0 -0
- /package/dist/{chunk-XRSRHAEU.js.map → chunk-4QITYZUH.js.map} +0 -0
- /package/dist/{chunk-PGBZ73UZ.js.map → chunk-4XNF52NU.js.map} +0 -0
- /package/dist/{chunk-T6PTG6VM.js.map → chunk-4Y7IJ2PU.js.map} +0 -0
- /package/dist/{chunk-GDQJG4BO.js.map → chunk-53BTYIMJ.js.map} +0 -0
- /package/dist/{chunk-QNXDSNOQ.js.map → chunk-5ITB24SC.js.map} +0 -0
- /package/dist/{chunk-MZIYRWXL.js.map → chunk-5N47LB7X.js.map} +0 -0
- /package/dist/{chunk-FOWT6ENH.js.map → chunk-5UBFYJHF.js.map} +0 -0
- /package/dist/{chunk-SP5L7EYC.js.map → chunk-6CQOHJZW.js.map} +0 -0
- /package/dist/{chunk-VCUXAPLM.js.map → chunk-6PMJU7IU.js.map} +0 -0
- /package/dist/{chunk-3H5MJOG2.js.map → chunk-7GGLZOQN.js.map} +0 -0
- /package/dist/{chunk-DJWEQDBB.js.map → chunk-7I65KXU7.js.map} +0 -0
- /package/dist/{chunk-4XXA4WCS.js.map → chunk-7JFVMJZI.js.map} +0 -0
- /package/dist/{chunk-WPAW6EVY.js.map → chunk-A6VODUO3.js.map} +0 -0
- /package/dist/{chunk-R44B522K.js.map → chunk-AGTA5FJX.js.map} +0 -0
- /package/dist/{chunk-V2XEX2YR.js.map → chunk-AGU4KGT6.js.map} +0 -0
- /package/dist/{chunk-LHQ6GXNF.js.map → chunk-BXUUKRMM.js.map} +0 -0
- /package/dist/{chunk-DW3OPKXI.js.map → chunk-BZTAEZLT.js.map} +0 -0
- /package/dist/{chunk-ZNXP3WNJ.js.map → chunk-C7IOSSI4.js.map} +0 -0
- /package/dist/{chunk-B4UVJCJ4.js.map → chunk-CIW3Q7B2.js.map} +0 -0
- /package/dist/{chunk-SPBNAGIN.js.map → chunk-CJQ77HO5.js.map} +0 -0
- /package/dist/{chunk-6B4KNOJZ.js.map → chunk-CNPYG4F3.js.map} +0 -0
- /package/dist/{chunk-C5UFKDAX.js.map → chunk-COS3TPHX.js.map} +0 -0
- /package/dist/{chunk-GT77XMOG.js.map → chunk-CQ6HBFOB.js.map} +0 -0
- /package/dist/{chunk-LS2KEAYJ.js.map → chunk-D7Y3UNWO.js.map} +0 -0
- /package/dist/{chunk-5EF7ZLXA.js.map → chunk-DJTWY7GL.js.map} +0 -0
- /package/dist/{chunk-JCVPZ7CV.js.map → chunk-DWW5QSUF.js.map} +0 -0
- /package/dist/{chunk-TEKML2NW.js.map → chunk-E34YYDCE.js.map} +0 -0
- /package/dist/{chunk-3WSJGYA3.js.map → chunk-ENUCJ6AO.js.map} +0 -0
- /package/dist/{chunk-DNWP5DL6.js.map → chunk-FESQ5TXU.js.map} +0 -0
- /package/dist/{chunk-UPDIBQUC.js.map → chunk-FEUKUZRA.js.map} +0 -0
- /package/dist/{chunk-U2BPZ27S.js.map → chunk-FJDSL4O5.js.map} +0 -0
- /package/dist/{chunk-CREEY2FS.js.map → chunk-FSTDWVXG.js.map} +0 -0
- /package/dist/{chunk-XVHR2NCG.js.map → chunk-FUR7R4D7.js.map} +0 -0
- /package/dist/{chunk-FBG3JDET.js.map → chunk-GYMZCJX6.js.map} +0 -0
- /package/dist/{chunk-R5GGTLYE.js.map → chunk-HTT7RBRC.js.map} +0 -0
- /package/dist/{chunk-BN4TDL5L.js.map → chunk-IQWFJEA3.js.map} +0 -0
- /package/dist/{chunk-XZWBLUDV.js.map → chunk-IU5K42Q3.js.map} +0 -0
- /package/dist/{chunk-EZBZU6N7.js.map → chunk-JARRF5VX.js.map} +0 -0
- /package/dist/{chunk-RUJS2NOA.js.map → chunk-JEUFRIYS.js.map} +0 -0
- /package/dist/{chunk-LURM3KKS.js.map → chunk-JNSRQQDP.js.map} +0 -0
- /package/dist/{chunk-MHH7SGLS.js.map → chunk-KGAI4E2I.js.map} +0 -0
- /package/dist/{chunk-SDQLZYQG.js.map → chunk-KITVYLEX.js.map} +0 -0
- /package/dist/{chunk-J4ASA24X.js.map → chunk-L5VVKIMB.js.map} +0 -0
- /package/dist/{chunk-SWNCS2OD.js.map → chunk-L763CNKH.js.map} +0 -0
- /package/dist/{chunk-4VXQAJRU.js.map → chunk-LO2MZJJP.js.map} +0 -0
- /package/dist/{chunk-HPDGVK6R.js.map → chunk-LV7EU6HM.js.map} +0 -0
- /package/dist/{chunk-QNLPZOHV.js.map → chunk-LXZ5E6AC.js.map} +0 -0
- /package/dist/{chunk-KRQ2AXFW.js.map → chunk-LZRZVIEJ.js.map} +0 -0
- /package/dist/{chunk-YUCGCJKT.js.map → chunk-M2MJ52HS.js.map} +0 -0
- /package/dist/{chunk-DLNADMQV.js.map → chunk-MBSAHNMJ.js.map} +0 -0
- /package/dist/{chunk-GEFZVG4P.js.map → chunk-MCKYNFPH.js.map} +0 -0
- /package/dist/{chunk-ZBUIWVF3.js.map → chunk-MHZIOOT5.js.map} +0 -0
- /package/dist/{chunk-364TCROV.js.map → chunk-MNOCC5AL.js.map} +0 -0
- /package/dist/{chunk-WW6JLISJ.js.map → chunk-MUEJVDHI.js.map} +0 -0
- /package/dist/{chunk-XWO6CXNG.js.map → chunk-N6WHUUFH.js.map} +0 -0
- /package/dist/{chunk-FVZL2YC5.js.map → chunk-NA5Q473J.js.map} +0 -0
- /package/dist/{chunk-AXTOIHH2.js.map → chunk-NCO5NGBN.js.map} +0 -0
- /package/dist/{chunk-X3HPRECW.js.map → chunk-NLW25WW3.js.map} +0 -0
- /package/dist/{chunk-TKDOVFO6.js.map → chunk-NYAFSC5V.js.map} +0 -0
- /package/dist/{chunk-AFQF6ISC.js.map → chunk-O7AMKMII.js.map} +0 -0
- /package/dist/{chunk-7HH4F2KX.js.map → chunk-OL3QHART.js.map} +0 -0
- /package/dist/{chunk-Y25HSPRJ.js.map → chunk-OPUEQSKM.js.map} +0 -0
- /package/dist/{chunk-3J3W23S4.js.map → chunk-OXLB5M5M.js.map} +0 -0
- /package/dist/{chunk-QJ5TU5J6.js.map → chunk-OXYWSVOJ.js.map} +0 -0
- /package/dist/{chunk-XGX2WOV2.js.map → chunk-PE4ZP7MX.js.map} +0 -0
- /package/dist/{chunk-NY5VYGTP.js.map → chunk-PHZOMTI6.js.map} +0 -0
- /package/dist/{chunk-T37PAZT2.js.map → chunk-PIAG4UJT.js.map} +0 -0
- /package/dist/{chunk-KG7FPYM2.js.map → chunk-PYWIHAVD.js.map} +0 -0
- /package/dist/{chunk-SNDHR5QA.js.map → chunk-QKNPF6ZD.js.map} +0 -0
- /package/dist/{chunk-ZFJ2FQUH.js.map → chunk-QOBA6PHB.js.map} +0 -0
- /package/dist/{chunk-3KMYOPBI.js.map → chunk-QPPQXU3U.js.map} +0 -0
- /package/dist/{chunk-TTKDFRON.js.map → chunk-QTKNS2U2.js.map} +0 -0
- /package/dist/{chunk-SJAUMPL3.js.map → chunk-QTLIXCVN.js.map} +0 -0
- /package/dist/{chunk-O37YK4P6.js.map → chunk-R5LRBDEM.js.map} +0 -0
- /package/dist/{chunk-TRMZQRVV.js.map → chunk-RRC7F3QQ.js.map} +0 -0
- /package/dist/{chunk-ERRTBCDW.js.map → chunk-SEYCF446.js.map} +0 -0
- /package/dist/{chunk-GXPZJ2QN.js.map → chunk-SF52UGHZ.js.map} +0 -0
- /package/dist/{chunk-ZVXKWLLE.js.map → chunk-SVNH6P7O.js.map} +0 -0
- /package/dist/{chunk-34FVKJS2.js.map → chunk-SWFZJROM.js.map} +0 -0
- /package/dist/{chunk-SEC6FPWC.js.map → chunk-UCNIJ2IW.js.map} +0 -0
- /package/dist/{chunk-R6T25WTZ.js.map → chunk-UFUYTWEF.js.map} +0 -0
- /package/dist/{chunk-L5IYVZM2.js.map → chunk-ULW4EWAA.js.map} +0 -0
- /package/dist/{chunk-ECJIMIEJ.js.map → chunk-UROKPFIS.js.map} +0 -0
- /package/dist/{chunk-4ULRDQVD.js.map → chunk-VCOIFNYH.js.map} +0 -0
- /package/dist/{chunk-52IYZCRS.js.map → chunk-VPF5A7CM.js.map} +0 -0
- /package/dist/{chunk-HAJYFRXL.js.map → chunk-VV6FDIP5.js.map} +0 -0
- /package/dist/{chunk-XJHUSJY6.js.map → chunk-WRTG3KXU.js.map} +0 -0
- /package/dist/{chunk-2SGREP24.js.map → chunk-XAW5GL6B.js.map} +0 -0
- /package/dist/{chunk-7O4HFODK.js.map → chunk-XRNJRQ6Q.js.map} +0 -0
- /package/dist/{chunk-PN72Z2W2.js.map → chunk-Y5GQO6CR.js.map} +0 -0
- /package/dist/{chunk-62QMJYML.js.map → chunk-YE4RCEEJ.js.map} +0 -0
- /package/dist/{chunk-EHIISZYD.js.map → chunk-YJYKSMLF.js.map} +0 -0
- /package/dist/{chunk-W7C7HZFJ.js.map → chunk-YO54MA7R.js.map} +0 -0
- /package/dist/{chunk-2MXDSPUO.js.map → chunk-Z6T6VDDA.js.map} +0 -0
- /package/dist/{chunk-XPDUBDPL.js.map → chunk-ZOH672S6.js.map} +0 -0
- /package/dist/{claim-NRNO4XCO.js.map → claim-2JNNC66N.js.map} +0 -0
- /package/dist/{client-463NKLRT.js.map → client-YUVT3RZN.js.map} +0 -0
- /package/dist/{code-R4JOQ27J.js.map → code-LOOWLRUL.js.map} +0 -0
- /package/dist/{companies-4TOBU44J.js.map → companies-4NJU5TLU.js.map} +0 -0
- /package/dist/{company-RK34S3IA.js.map → company-QOYWS4W6.js.map} +0 -0
- /package/dist/{complete-7BNBQ5AI.js.map → complete-7FX2K3PV.js.map} +0 -0
- /package/dist/{config-GDLHHBJZ.js.map → config-AOF6ACIP.js.map} +0 -0
- /package/dist/{connect-CRIRSXN3.js.map → connect-H2HSPMRT.js.map} +0 -0
- /package/dist/{content-FCO6MGXW.js.map → content-NCW5IJFR.js.map} +0 -0
- /package/dist/{conversation-4CQG2B2C.js.map → conversation-4M7YMQOL.js.map} +0 -0
- /package/dist/{conversion-report-PDTQTRVB.js.map → conversion-report-G5JMZNYV.js.map} +0 -0
- /package/dist/{conversion-upload-command-MEO4WLZH.js.map → conversion-upload-command-43PZFYT7.js.map} +0 -0
- /package/dist/{conversion-writes-ZVBOXUIA.js.map → conversion-writes-JQQCCGPO.js.map} +0 -0
- /package/dist/{conversions-BND5HYTL.js.map → conversions-UO4CQNF6.js.map} +0 -0
- /package/dist/{conversions-POBKTXQF.js.map → conversions-Z7FW7CFT.js.map} +0 -0
- /package/dist/{copy-writes-EUFEVWDW.js.map → copy-writes-ONVSSBLJ.js.map} +0 -0
- /package/dist/{countries-TKL5T5JL.js.map → countries-Q6TA42P7.js.map} +0 -0
- /package/dist/{create-BJ7XBNY5.js.map → create-4SFO4AQZ.js.map} +0 -0
- /package/dist/{create-YSGBH6Q4.js.map → create-D5MA64KL.js.map} +0 -0
- /package/dist/{create-XN4KVB5U.js.map → create-GJ4ZMY3A.js.map} +0 -0
- /package/dist/{create-PYP3QWTL.js.map → create-QVY6DSYM.js.map} +0 -0
- /package/dist/{creatives-ANTJUTIE.js.map → creatives-ADH6HCCA.js.map} +0 -0
- /package/dist/{creatives-57XIJAEG.js.map → creatives-R3XILT6D.js.map} +0 -0
- /package/dist/{creatives-6VJDUHEY.js.map → creatives-S3EZCXUT.js.map} +0 -0
- /package/dist/{credentials-KIH6ICDU.js.map → credentials-EQRB6XGZ.js.map} +0 -0
- /package/dist/{critique-GWRXVXVG.js.map → critique-4YRRUNAU.js.map} +0 -0
- /package/dist/{critique-MZUTDK4V.js.map → critique-JCU2ATT6.js.map} +0 -0
- /package/dist/{crm-QSHUYXTW.js.map → crm-AF6XOOSF.js.map} +0 -0
- /package/dist/{crm-Y5QTZAHO.js.map → crm-LSMFGR6R.js.map} +0 -0
- /package/dist/{crop-WKTW3EMP.js.map → crop-RDP7YCNV.js.map} +0 -0
- /package/dist/{currency-PTOI5SPU.js.map → currency-4KNOOZUU.js.map} +0 -0
- /package/dist/{custom-conversions-NDY5RHSM.js.map → custom-conversions-7MZFTHUM.js.map} +0 -0
- /package/dist/{customers-2G32E6W7.js.map → customers-MM3VIZNA.js.map} +0 -0
- /package/dist/{decide-X2UAKYXK.js.map → decide-OPCCKAIT.js.map} +0 -0
- /package/dist/{delete-3H6YH4YK.js.map → delete-CO2YBPTI.js.map} +0 -0
- /package/dist/{delete-HIAZHA56.js.map → delete-D7HTW32U.js.map} +0 -0
- /package/dist/{delete-2ZTMTKYD.js.map → delete-GKQTDOZF.js.map} +0 -0
- /package/dist/{delete-I43JQH2E.js.map → delete-JUPBYK3H.js.map} +0 -0
- /package/dist/{delete-RF44ILYE.js.map → delete-R3LXCKA4.js.map} +0 -0
- /package/dist/{demographics-2UYQW6II.js.map → demographics-DK5JDY6M.js.map} +0 -0
- /package/dist/{describe-M6DYXNQC.js.map → describe-537PPL7P.js.map} +0 -0
- /package/dist/{describe-OQ6R3EF7.js.map → describe-GIG46DT5.js.map} +0 -0
- /package/dist/{dimensions-DGYM5E5P.js.map → dimensions-UXK7DMTF.js.map} +0 -0
- /package/dist/{discard-NKPQ73UM.js.map → discard-DEJOM62Y.js.map} +0 -0
- /package/dist/{discover-XLIH7RCB.js.map → discover-MKFDG6NK.js.map} +0 -0
- /package/dist/{discover-YKMBVSPF.js.map → discover-U6YLVLTF.js.map} +0 -0
- /package/dist/{domain-LUDUZB3F.js.map → domain-MBOMV3CQ.js.map} +0 -0
- /package/dist/{download-LL6DL62N.js.map → download-KN2I55SA.js.map} +0 -0
- /package/dist/{download-SFWMT7DL.js.map → download-PRBLR6IQ.js.map} +0 -0
- /package/dist/{draft-7LPUJZCF.js.map → draft-BMNBT37B.js.map} +0 -0
- /package/dist/{draft-T7TWIFEX.js.map → draft-CGPVRRKC.js.map} +0 -0
- /package/dist/{draft-736FJJWK.js.map → draft-F74OIT5O.js.map} +0 -0
- /package/dist/{draft-MPWR47CG.js.map → draft-FIEZWBIX.js.map} +0 -0
- /package/dist/{draft-G432FJ7N.js.map → draft-H5RVDTFD.js.map} +0 -0
- /package/dist/{draft-XAAIGE6Q.js.map → draft-HZ5T6NOI.js.map} +0 -0
- /package/dist/{draft-R5ND5SWT.js.map → draft-UMPCOCP6.js.map} +0 -0
- /package/dist/{draft-374Z4MGY.js.map → draft-XEUHTUMR.js.map} +0 -0
- /package/dist/{env-DQHY5ODN.js.map → env-VBSATLEF.js.map} +0 -0
- /package/dist/{experiment-MO6MT6OJ.js.map → experiment-2XR6MBE2.js.map} +0 -0
- /package/dist/{experiments-OGZV73W6.js.map → experiments-YNJZCMQM.js.map} +0 -0
- /package/dist/{export-6Z6QBU6V.js.map → export-YCLJG5YP.js.map} +0 -0
- /package/dist/{extract-YGOQBOQK.js.map → extract-E3CMEN5U.js.map} +0 -0
- /package/dist/{facets-OLZ7JLFL.js.map → facets-Y4OACBMC.js.map} +0 -0
- /package/dist/{favorites-R3JO4SJJ.js.map → favorites-NSQX6HKB.js.map} +0 -0
- /package/dist/{feed-IUMMHM3I.js.map → feed-TKMMYAEH.js.map} +0 -0
- /package/dist/{feedback-TJRYTOR3.js.map → feedback-MORAVN52.js.map} +0 -0
- /package/dist/{feedback-record-7IAJI5IY.js.map → feedback-record-M3RB7H2C.js.map} +0 -0
- /package/dist/{fetch-AL44XS4Q.js.map → fetch-EHP2FK6Y.js.map} +0 -0
- /package/dist/{fetch-K3NRT2L2.js.map → fetch-XU6QVWMS.js.map} +0 -0
- /package/dist/{find-ZFIGMRYQ.js.map → find-I7U3THF3.js.map} +0 -0
- /package/dist/{fit-5NVXWXZV.js.map → fit-IHUUFCGI.js.map} +0 -0
- /package/dist/{flows-LL5SPPIK.js.map → flows-WSCIMXQX.js.map} +0 -0
- /package/dist/{follow-SS374QUW.js.map → follow-A46RAJEX.js.map} +0 -0
- /package/dist/{follow-competitors-3LTOTTBY.js.map → follow-competitors-VU2L3KWF.js.map} +0 -0
- /package/dist/{following-YMA5O3LF.js.map → following-UOUNSU6P.js.map} +0 -0
- /package/dist/{fonts-E3CNWPD5.js.map → fonts-3QW7EDHE.js.map} +0 -0
- /package/dist/{forecast-KOBF5TKM.js.map → forecast-2WVHMSZP.js.map} +0 -0
- /package/dist/{forecast-PWGN4ETP.js.map → forecast-F25LSCM5.js.map} +0 -0
- /package/dist/{funding-KLIZ73SS.js.map → funding-2VROIMLS.js.map} +0 -0
- /package/dist/{funnel-XIZROHV7.js.map → funnel-35DYDBJH.js.map} +0 -0
- /package/dist/{ga4-XPCE4EK5.js.map → ga4-ULHKTF23.js.map} +0 -0
- /package/dist/{generate-GHIXVLMY.js.map → generate-Z7AROAES.js.map} +0 -0
- /package/dist/{get-WS744HAO.js.map → get-4CAX33L2.js.map} +0 -0
- /package/dist/{get-HCGFATFD.js.map → get-ABQZJ2VQ.js.map} +0 -0
- /package/dist/{get-RDTJSWSA.js.map → get-IF7KHMSI.js.map} +0 -0
- /package/dist/{get-XPJ4BZGP.js.map → get-N7X75ZJO.js.map} +0 -0
- /package/dist/{get-SGNT4JG2.js.map → get-ZISAHMTQ.js.map} +0 -0
- /package/dist/{gif-YK5HJXRE.js.map → gif-QLNWBFAH.js.map} +0 -0
- /package/dist/{google-BI45CXMW.js.map → google-FDR55RRD.js.map} +0 -0
- /package/dist/{google-5JV7OMOH.js.map → google-M6XR7YGT.js.map} +0 -0
- /package/dist/{google-ads-DYZGUM6W.js.map → google-ads-NCSMNNND.js.map} +0 -0
- /package/dist/{group-7OWIYAKJ.js.map → group-HAQM6P7M.js.map} +0 -0
- /package/dist/{group-H6ZYRPE6.js.map → group-XVDH2ONO.js.map} +0 -0
- /package/dist/{gsc-HI2KXDEU.js.map → gsc-GQFI6I2D.js.map} +0 -0
- /package/dist/{history-3EQQHYKT.js.map → history-FGQ2H7XH.js.map} +0 -0
- /package/dist/{history-SQPJ7PPE.js.map → history-LTOFKBMJ.js.map} +0 -0
- /package/dist/{history-RD2YMNNL.js.map → history-VJ254UXF.js.map} +0 -0
- /package/dist/{hubspot-MYTV36SM.js.map → hubspot-W2NM75YK.js.map} +0 -0
- /package/dist/{icon-HLJCWTR3.js.map → icon-F7AOOTFI.js.map} +0 -0
- /package/dist/{ideas-CVXHFVX7.js.map → ideas-54KFDNDM.js.map} +0 -0
- /package/dist/{images-XP4TKE2F.js.map → images-JOEVCCP6.js.map} +0 -0
- /package/dist/{improve-BRC4R6MW.js.map → improve-LIKOER3S.js.map} +0 -0
- /package/dist/{ingest-4GNJ2PWL.js.map → ingest-6R7XUL46.js.map} +0 -0
- /package/dist/{insights-IVW6W5CP.js.map → insights-QNE6XCBA.js.map} +0 -0
- /package/dist/{insights-CN3GUTT7.js.map → insights-UXUUOQB7.js.map} +0 -0
- /package/dist/{inspect-25IVRU45.js.map → inspect-MGOR77FP.js.map} +0 -0
- /package/dist/{inspiration-D75DO3MD.js.map → inspiration-VXNGKAJV.js.map} +0 -0
- /package/dist/{instant-experiences-6F6GXZ67.js.map → instant-experiences-MT2XMQNH.js.map} +0 -0
- /package/dist/{intent-3GDLPKKN.js.map → intent-FZWPRUCI.js.map} +0 -0
- /package/dist/{job-2JJNKUHT.js.map → job-TS34W4IU.js.map} +0 -0
- /package/dist/{job-create-BNTNZCSP.js.map → job-create-FXXDR2EE.js.map} +0 -0
- /package/dist/{job-status-N7RWRDRO.js.map → job-status-R2H4HNC5.js.map} +0 -0
- /package/dist/{keep-Z2WH3CKU.js.map → keep-YSU3XMW3.js.map} +0 -0
- /package/dist/{keyword-gap-B2WPVHOB.js.map → keyword-gap-4ECYPWXJ.js.map} +0 -0
- /package/dist/{keyword-metrics-UDGWN7BO.js.map → keyword-metrics-SBIRN5KC.js.map} +0 -0
- /package/dist/{keywords-for-site-GEG6AXD3.js.map → keywords-for-site-TLNPJHT2.js.map} +0 -0
- /package/dist/{knowledge-PKXPN4RV.js.map → knowledge-L3VLOVLG.js.map} +0 -0
- /package/dist/{landing-O2ZUIUGE.js.map → landing-ZICSVWKF.js.map} +0 -0
- /package/dist/{landings-7QRITXZ2.js.map → landings-XTPNPTHN.js.map} +0 -0
- /package/dist/{languages-RZLMZR57.js.map → languages-DIKRMAYE.js.map} +0 -0
- /package/dist/{languages-UJAOPTV2.js.map → languages-VNZQ5USL.js.map} +0 -0
- /package/dist/{launches-4H6ANGTG.js.map → launches-5R7EUONQ.js.map} +0 -0
- /package/dist/{layerize-P5LFIA4X.js.map → layerize-Q2QWDARG.js.map} +0 -0
- /package/dist/{lead-routes-WVXWVG62.js.map → lead-routes-IXUCGINI.js.map} +0 -0
- /package/dist/{leads-MTTOYNPM.js.map → leads-JUQFNK55.js.map} +0 -0
- /package/dist/{leads-CJKRKB2Q.js.map → leads-UVG6VYAC.js.map} +0 -0
- /package/dist/{learn-QPXZZIZZ.js.map → learn-A6BT25LQ.js.map} +0 -0
- /package/dist/{library-VW27X75P.js.map → library-G5YAFLTR.js.map} +0 -0
- /package/dist/{lighthouse-FGUFJRGR.js.map → lighthouse-BCBV2XGP.js.map} +0 -0
- /package/dist/{line-item-writes-RVOAMJ5R.js.map → line-item-writes-NW7A6HNH.js.map} +0 -0
- /package/dist/{line-items-POZRAJLC.js.map → line-items-OAG3QMDE.js.map} +0 -0
- /package/dist/{link-IXEZKRM7.js.map → link-4VJ7FSOA.js.map} +0 -0
- /package/dist/{linkedin-5PYG5HEM.js.map → linkedin-CKOWKD4M.js.map} +0 -0
- /package/dist/{linkedin-person-EMJXEZYR.js.map → linkedin-person-C22IDK7S.js.map} +0 -0
- /package/dist/{list-OZCU2T22.js.map → list-2DKLO6AO.js.map} +0 -0
- /package/dist/{list-7GDMM26I.js.map → list-4SDJZVOL.js.map} +0 -0
- /package/dist/{list-UG4V5AM2.js.map → list-6YW4I4VG.js.map} +0 -0
- /package/dist/{list-4KS7WSUG.js.map → list-CDDXHMJQ.js.map} +0 -0
- /package/dist/{list-PTK2HOUY.js.map → list-GS42LK5C.js.map} +0 -0
- /package/dist/{list-Q5LVTPQP.js.map → list-HWNHRWGB.js.map} +0 -0
- /package/dist/{list-J5KWXHFO.js.map → list-QSBEYU45.js.map} +0 -0
- /package/dist/{list-DVVOP6FM.js.map → list-ZFGOONWL.js.map} +0 -0
- /package/dist/{list-XOYU7UTX.js.map → list-ZORO7PFP.js.map} +0 -0
- /package/dist/{locations-VJX64ZZR.js.map → locations-4RDUHKVR.js.map} +0 -0
- /package/dist/{locations-EISZ6JOT.js.map → locations-HATR6PSC.js.map} +0 -0
- /package/dist/{log-2F2N24DT.js.map → log-OSJHKHPV.js.map} +0 -0
- /package/dist/{logo-H2KHGLYD.js.map → logo-ABO4HJRG.js.map} +0 -0
- /package/dist/{lookup-K57ITJWF.js.map → lookup-SPNT3W3W.js.map} +0 -0
- /package/dist/{make-T6HLXIYY.js.map → make-7CIVNW77.js.map} +0 -0
- /package/dist/{map-QGJZIC5N.js.map → map-PMGZDXAN.js.map} +0 -0
- /package/dist/{mcp-RSW7KAWP.js.map → mcp-MOOOTRYG.js.map} +0 -0
- /package/dist/{media-K5RJXLTN.js.map → media-CIJW2Q3I.js.map} +0 -0
- /package/dist/{media-HDHZULQ7.js.map → media-GZKW2PZB.js.map} +0 -0
- /package/dist/{media-sources-7R7FO53Y.js.map → media-sources-5OYCKQ5J.js.map} +0 -0
- /package/dist/{members-B6TKGGT5.js.map → members-QG5IP5HM.js.map} +0 -0
- /package/dist/{meme-QMCUGXUE.js.map → meme-BPWX7YQH.js.map} +0 -0
- /package/dist/{meta-MOSJVYIE.js.map → meta-KVOSCSPJ.js.map} +0 -0
- /package/dist/{metrics-PRIKXVYZ.js.map → metrics-R4YS2JL6.js.map} +0 -0
- /package/dist/{models-M3E4YFCT.js.map → models-RJMZV5SH.js.map} +0 -0
- /package/dist/{normalize-5B4EQLUX.js.map → normalize-LATTXSL3.js.map} +0 -0
- /package/dist/{normalize-5QIGANTK.js.map → normalize-NMNOJ6Q5.js.map} +0 -0
- /package/dist/{options-K33CJOR6.js.map → options-KALH5TB7.js.map} +0 -0
- /package/dist/{organization-A4NFWWWI.js.map → organization-AGCF7DUJ.js.map} +0 -0
- /package/dist/{output-U5ZV6PST.js.map → output-34QMC3OU.js.map} +0 -0
- /package/dist/{page-XVOUD4VV.js.map → page-UDF3LJHP.js.map} +0 -0
- /package/dist/{page-photos-4JTIKXAW.js.map → page-photos-FCBW5UZS.js.map} +0 -0
- /package/dist/{pages-BAUS7LQM.js.map → pages-5W5G4MRB.js.map} +0 -0
- /package/dist/{performance-MHJDRLEK.js.map → performance-SITVZQWX.js.map} +0 -0
- /package/dist/{performance-NVURSEZ6.js.map → performance-YNXPUSGJ.js.map} +0 -0
- /package/dist/{pinterest-NA6HGPMB.js.map → pinterest-IABDXLF5.js.map} +0 -0
- /package/dist/{pixels-QOSEYXCP.js.map → pixels-4QAWLSEL.js.map} +0 -0
- /package/dist/{pixels-THDQD3RF.js.map → pixels-TYJVE377.js.map} +0 -0
- /package/dist/{plan-JYSHKPZQ.js.map → plan-I6EFL7RC.js.map} +0 -0
- /package/dist/{posts-ILAFADBW.js.map → posts-SXQSLOFV.js.map} +0 -0
- /package/dist/{preview-X6EJGPAY.js.map → preview-7Y5LE24E.js.map} +0 -0
- /package/dist/{profile-YHI65VGK.js.map → profile-R5VPOOJU.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-MXXVRLVQ.js.map → promoted-tweet-writes-NAHPJ3VD.js.map} +0 -0
- /package/dist/{promoted-tweets-HFLGXWX2.js.map → promoted-tweets-2XQ4MWAC.js.map} +0 -0
- /package/dist/{properties-ZLY6NYVK.js.map → properties-2D2BIDGC.js.map} +0 -0
- /package/dist/{publish-6ZXFUBGP.js.map → publish-UITYPUBD.js.map} +0 -0
- /package/dist/{query-HFHTLNDN.js.map → query-LB5H7IRK.js.map} +0 -0
- /package/dist/{query-WMEX73ZB.js.map → query-RE7NB2BK.js.map} +0 -0
- /package/dist/{questionnaire-Y37I64FO.js.map → questionnaire-U767HYDE.js.map} +0 -0
- /package/dist/{read-2HQEZIJW.js.map → read-3TCDDALC.js.map} +0 -0
- /package/dist/{reddit-BIHGJPGP.js.map → reddit-6XIARCTX.js.map} +0 -0
- /package/dist/{refresh-4O32S4YR.js.map → refresh-6UCN7PDX.js.map} +0 -0
- /package/dist/{refresh-LVV4SPLT.js.map → refresh-GIB6QQZS.js.map} +0 -0
- /package/dist/{release-VIPNSPQ5.js.map → release-IN65L23O.js.map} +0 -0
- /package/dist/{relevant-pages-B5SYN575.js.map → relevant-pages-W7IM6YQW.js.map} +0 -0
- /package/dist/{remove-TPOWWFZ6.js.map → remove-LZQHDFZF.js.map} +0 -0
- /package/dist/{remove-2E77743U.js.map → remove-X3XWVE2M.js.map} +0 -0
- /package/dist/{reopen-UOBTJBMQ.js.map → reopen-RMMQ55CH.js.map} +0 -0
- /package/dist/{rerun-UPDIXTEL.js.map → rerun-ON6YCJAL.js.map} +0 -0
- /package/dist/{research-ELM3KHGE.js.map → research-LZBPCXIW.js.map} +0 -0
- /package/dist/{research-FOJIDMSE.js.map → research-W5KUOBXZ.js.map} +0 -0
- /package/dist/{reset-FTLWUFZK.js.map → reset-MUWXTLIB.js.map} +0 -0
- /package/dist/{reset-GIXXLPHQ.js.map → reset-VQNKXFAF.js.map} +0 -0
- /package/dist/{resolve-QHR5JJTJ.js.map → resolve-DMGWLMTC.js.map} +0 -0
- /package/dist/{retry-NY5KFEDA.js.map → retry-YI4YLYTQ.js.map} +0 -0
- /package/dist/{retry-HNWXJR5U.js.map → retry-ZQUJPKQH.js.map} +0 -0
- /package/dist/{retry-failed-OAH7JQKD.js.map → retry-failed-PEAUXGNT.js.map} +0 -0
- /package/dist/{revenue-JFMUODJO.js.map → revenue-6YZAOMF6.js.map} +0 -0
- /package/dist/{rule-writes-A4BFYHPA.js.map → rule-writes-G25O5JZS.js.map} +0 -0
- /package/dist/{rules-56E55SGC.js.map → rules-FHVZEN4D.js.map} +0 -0
- /package/dist/{rules-HLREXY2M.js.map → rules-KSOAKEI3.js.map} +0 -0
- /package/dist/{rules-add-ZOPOWJMY.js.map → rules-add-7X46VTIJ.js.map} +0 -0
- /package/dist/{run-4UIPMCSN.js.map → run-TA6HYFKZ.js.map} +0 -0
- /package/dist/{run-GACZDI6Q.js.map → run-YORKHK6S.js.map} +0 -0
- /package/dist/{scaffold-ad-Z2HSN4PE.js.map → scaffold-ad-RHSHBCVV.js.map} +0 -0
- /package/dist/{scaffold-static-ad-ODZGTIM5.js.map → scaffold-static-ad-XNOGCMPF.js.map} +0 -0
- /package/dist/{scaffold-video-EHGAMEEP.js.map → scaffold-video-XEVJQ7QZ.js.map} +0 -0
- /package/dist/{schedule-ZATNBBWD.js.map → schedule-TMTLYULK.js.map} +0 -0
- /package/dist/{schedule-OFPSZVZ2.js.map → schedule-TNF6M6UD.js.map} +0 -0
- /package/dist/{scheduled-agents-4VY4CAA2.js.map → scheduled-agents-TS3WLRCM.js.map} +0 -0
- /package/dist/{schema-EYGPETLF.js.map → schema-2YQAQVON.js.map} +0 -0
- /package/dist/{schema-OGP4DUPP.js.map → schema-6S5ZEPBS.js.map} +0 -0
- /package/dist/{scrape-ZHL2BHS7.js.map → scrape-FDBYU3TU.js.map} +0 -0
- /package/dist/{screenshot-ADMRDYWN.js.map → screenshot-QSRWL4J6.js.map} +0 -0
- /package/dist/{search-CQUS7EOM.js.map → search-BOCQFUM3.js.map} +0 -0
- /package/dist/{search-MKVVMJ2Q.js.map → search-CENPR7GA.js.map} +0 -0
- /package/dist/{search-HF5ECIYW.js.map → search-GEXDRTAQ.js.map} +0 -0
- /package/dist/{search-6W4HXR2S.js.map → search-LFTFNDMC.js.map} +0 -0
- /package/dist/{search-QUF6LHQ5.js.map → search-LTUUAGZG.js.map} +0 -0
- /package/dist/{search-6ZWI2NML.js.map → search-PYLNVZXI.js.map} +0 -0
- /package/dist/{search-copy-O6FDX4HT.js.map → search-copy-RLRRR3LB.js.map} +0 -0
- /package/dist/{seeds-5TM3O3K3.js.map → seeds-E2GLHJ2T.js.map} +0 -0
- /package/dist/{select-FCQUYBKV.js.map → select-BXBNFGVL.js.map} +0 -0
- /package/dist/{sends-MZKHZZGJ.js.map → sends-NBTGBZT7.js.map} +0 -0
- /package/dist/{sequences-3CEVHGHB.js.map → sequences-UOIHUOD3.js.map} +0 -0
- /package/dist/{set-prompt-IBAG6BDA.js.map → set-prompt-JJWBB23C.js.map} +0 -0
- /package/dist/{setup-links-4STQ5B4P.js.map → setup-links-6ANVKZCE.js.map} +0 -0
- /package/dist/{shared-I3SB77VH.js.map → shared-IMDHTVSW.js.map} +0 -0
- /package/dist/{shopify-7LDHCWUQ.js.map → shopify-6ISTKZCA.js.map} +0 -0
- /package/dist/{site-I3NFMPJB.js.map → site-OIV55MGO.js.map} +0 -0
- /package/dist/{skills-O6EQOAMQ.js.map → skills-FBIVWINH.js.map} +0 -0
- /package/dist/{sources-ZM7LEIMM.js.map → sources-5L4S5BQV.js.map} +0 -0
- /package/dist/{sources-K2LILGTW.js.map → sources-GLJWZFHZ.js.map} +0 -0
- /package/dist/{stale-VR5QAYB6.js.map → stale-SK2SDGOT.js.map} +0 -0
- /package/dist/{stats-QQRYOMZA.js.map → stats-2NLNQBRY.js.map} +0 -0
- /package/dist/{status-5OMVGFCH.js.map → status-TD7ISXC5.js.map} +0 -0
- /package/dist/{sticker-654HS3K2.js.map → sticker-4NKFAGEK.js.map} +0 -0
- /package/dist/{stock-35LOO3YN.js.map → stock-XOXZGGU3.js.map} +0 -0
- /package/dist/{studies-IGOCWM7F.js.map → studies-C5IINK5Y.js.map} +0 -0
- /package/dist/{studio-3D42TUJX.js.map → studio-IDNM42JP.js.map} +0 -0
- /package/dist/{study-writes-Z5P2W7JH.js.map → study-writes-GJXLMM3D.js.map} +0 -0
- /package/dist/{suggest-JASHCOL5.js.map → suggest-Z553OSYW.js.map} +0 -0
- /package/dist/{sync-URIRLHTS.js.map → sync-CIRDY55O.js.map} +0 -0
- /package/dist/{sync-RCDODSOD.js.map → sync-PVIFUXX3.js.map} +0 -0
- /package/dist/{sync-6AN67IX3.js.map → sync-UBOHNOXB.js.map} +0 -0
- /package/dist/{sync-definition-MZUJOJYI.js.map → sync-definition-7NBT6LTK.js.map} +0 -0
- /package/dist/{tag-7YMFAZQQ.js.map → tag-22TFBGDG.js.map} +0 -0
- /package/dist/{tag-manager-LU4GAZ6R.js.map → tag-manager-QLZHU6NG.js.map} +0 -0
- /package/dist/{tags-6A7QOYBI.js.map → tags-3HB7N5WB.js.map} +0 -0
- /package/dist/{tags-JHT3Q6VO.js.map → tags-DG3XQ4SF.js.map} +0 -0
- /package/dist/{tags-MTVZJHCE.js.map → tags-T4EN6XYE.js.map} +0 -0
- /package/dist/{tags-KSMLT4G2.js.map → tags-T6THTVNP.js.map} +0 -0
- /package/dist/{tags-OU32R2SH.js.map → tags-XY6R2VJ6.js.map} +0 -0
- /package/dist/{targeting-7HXKBXWY.js.map → targeting-GNEBULXU.js.map} +0 -0
- /package/dist/{targeting-constants-QIB3UZHM.js.map → targeting-constants-GR6BVM2H.js.map} +0 -0
- /package/dist/{targeting-criteria-NUXZB7NP.js.map → targeting-criteria-CL472KJO.js.map} +0 -0
- /package/dist/{targets-LQ7HGI73.js.map → targets-7AQMSO6H.js.map} +0 -0
- /package/dist/{terms-X4OJWTQH.js.map → terms-LG7FYQOG.js.map} +0 -0
- /package/dist/{testimonials-Z2KOOMVH.js.map → testimonials-4QWVSEPU.js.map} +0 -0
- /package/dist/{themes-6KVP3COR.js.map → themes-ZTM4OVGK.js.map} +0 -0
- /package/dist/{top-companies-WWNPUJ23.js.map → top-companies-PMFYOAFK.js.map} +0 -0
- /package/dist/{transcript-P7HKVABU.js.map → transcript-YWFYNFWX.js.map} +0 -0
- /package/dist/{translate-II4JY2XW.js.map → translate-VMQHPX4B.js.map} +0 -0
- /package/dist/{triggers-Z3LV3KJR.js.map → triggers-JKXISN45.js.map} +0 -0
- /package/dist/{tweets-X5PTAT6F.js.map → tweets-IF5FFFTH.js.map} +0 -0
- /package/dist/{unfollow-S5LHFLGW.js.map → unfollow-CDUOZWM7.js.map} +0 -0
- /package/dist/{unlink-XTZA474P.js.map → unlink-IUAFDLBT.js.map} +0 -0
- /package/dist/{unstage-AVLORZLW.js.map → unstage-OVOZE6DA.js.map} +0 -0
- /package/dist/{unstage-QXOL5DXZ.js.map → unstage-ZYT5RNLK.js.map} +0 -0
- /package/dist/{update-UE4XVBKL.js.map → update-23Q4T2J5.js.map} +0 -0
- /package/dist/{update-5ZNS2DKP.js.map → update-74VME6PN.js.map} +0 -0
- /package/dist/{update-MDVZ24VQ.js.map → update-O22DAZVX.js.map} +0 -0
- /package/dist/{update-DDKNKV6M.js.map → update-Q3WJ3DQN.js.map} +0 -0
- /package/dist/{update-3NA6ABLW.js.map → update-QAWK3O7L.js.map} +0 -0
- /package/dist/{upload-SYFB2VTJ.js.map → upload-EAEILUQB.js.map} +0 -0
- /package/dist/{upscale-P5EYUVOZ.js.map → upscale-HB6L6SZG.js.map} +0 -0
- /package/dist/{url-options-DJZV3ADK.js.map → url-options-M7RX2TD4.js.map} +0 -0
- /package/dist/{url-params-Y5XQSDEF.js.map → url-params-E5ON6W2N.js.map} +0 -0
- /package/dist/{validate-BCK22BQL.js.map → validate-NB6PS5PF.js.map} +0 -0
- /package/dist/{variant-JQVZUUA4.js.map → variant-O7LXOA2E.js.map} +0 -0
- /package/dist/{videos-YCQVOOFE.js.map → videos-SS2Y6FJF.js.map} +0 -0
- /package/dist/{view-IKKRJ5YD.js.map → view-ED636LWD.js.map} +0 -0
- /package/dist/{viewer-check-5GREZIVJ.js.map → viewer-check-CWS6OVM7.js.map} +0 -0
- /package/dist/{web-7TPDDBI6.js.map → web-HT22JFQR.js.map} +0 -0
- /package/dist/{winners-4PKEVMUC.js.map → winners-ZG5SHNBS.js.map} +0 -0
- /package/dist/{winning-ads-7X5EWSJX.js.map → winning-ads-FXTP4PWZ.js.map} +0 -0
- /package/dist/{write-commands-V77MD5SC.js.map → write-commands-5YVQKO7E.js.map} +0 -0
- /package/dist/{write-commands-CTLF2M6L.js.map → write-commands-AIWR7NBO.js.map} +0 -0
- /package/dist/{write-commands-FIS6Y2MN.js.map → write-commands-UK6MKGHI.js.map} +0 -0
- /package/dist/{write-commands-CY734U34.js.map → write-commands-W3UN6F4Y.js.map} +0 -0
- /package/dist/{x-EMLFCHSG.js.map → x-KEMAY75C.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../api/src/ad-library/wire.ts","../src/schemas.ts","../src/unknown-flags.ts","../src/printed-envelope.ts","../src/output-flag.ts","../src/field-mask.ts","../src/output.ts"],"sourcesContent":["/**\n * Wire contract for `/api/ad-library/*` — the Baker-side surface over the ad-dna\n * \"winners\" service (`apps/ad-dna-service`, ads.withbaker.com).\n *\n * Two kinds of schema live here:\n * - **Request** schemas are strict: they validate CLI/dashboard input at the\n * backend boundary (`schema.parse(...)`).\n * - **Lean response** schemas describe the shape *our* routes/actions emit. The\n * raw ad-dna envelope is large and occasionally messy, so the backend client\n * coerces it into these lean shapes by hand (see `adLibrary/client.ts`); the\n * schemas are the contract the CLI + dashboard bind to, not a parser for the\n * upstream payload.\n *\n * Pure + zod-only (no `convex` import), like the rest of `@baker/api`.\n */\nimport { z } from \"zod\";\n\n// ---------------------------------------------------------------------------\n// Platforms. The ad-dna corpus has a discovery connector per platform, so the\n// surfaces we expose are limited to the ones with a connector. (Result rows may\n// still carry a legacy platform string from older data, so result `platform`\n// stays a plain string; only *inputs* are constrained.)\n// ---------------------------------------------------------------------------\n\nexport const adLibraryPlatformSchema = z.enum([\"meta\", \"linkedin\", \"tiktok\", \"google\"]);\nexport type AdLibraryPlatform = z.infer<typeof adLibraryPlatformSchema>;\n\n/**\n * Whether a corpus row's platform is one Baker can follow. Corpus rows carry a\n * free-text platform (legacy data, and platforms the DNA schema knows about\n * before a connector exists), so a membership test — not a cast — is what\n * decides which of an advertiser's platform identities we subscribe to.\n */\nexport function isFollowablePlatform(platform: string | null | undefined): platform is AdLibraryPlatform {\n return adLibraryPlatformSchema.safeParse(platform).success;\n}\n\n// ---------------------------------------------------------------------------\n// Winner search — `/api/ad-library/winners/search`\n// ---------------------------------------------------------------------------\n\n/** Where an ad is in its life: launched ≤7d, ≤21d, ≤60d, older; stopped ≤14d or later; or not checked recently. */\nexport const adLifecycleStageSchema = z.enum([\n \"new\",\n \"testing\",\n \"proven\",\n \"evergreen\",\n \"killed_early\",\n \"retired\",\n \"unverified\",\n]);\nexport type AdLifecycleStage = z.infer<typeof adLifecycleStageSchema>;\n\nexport const winnersHardFiltersSchema = z.object({\n platform: z.array(z.string()).optional(),\n format: z.array(z.string()).optional(),\n winner_category: z.array(z.string()).optional(),\n awareness_stage: z.array(z.string()).optional(),\n country: z.array(z.string()).optional(),\n language: z.array(z.string()).optional(),\n advertiser_ids: z.array(z.string()).optional(),\n exclude_advertiser_ids: z.array(z.string()).optional(),\n industry_cluster_ids: z.array(z.string()).optional(),\n business_model_cluster_ids: z.array(z.string()).optional(),\n // Proven HOOK seeds (from the `/api/ad-library/seed-catalog` rollup) — narrows\n // a find-similar search to ads on a chosen winning hook pattern, no cluster\n // lookup. Forwarded verbatim to ad-dna's `hard_filters.hook_archetype_seeds`;\n // must live in this schema or the strict boundary parse would drop it.\n hook_archetype_seeds: z.array(z.string()).optional(),\n // A static's container (comparison_table, before_after_split, …), the values\n // `/api/ad-library/seed-catalog` ranks as formats: the best proven example of\n // a container whatever category it sells.\n static_format_patterns: z.array(z.string()).optional(),\n // Who the ad was made for, as the library judged it from the creative: pick\n // references whose audience matches ours (a cold brief, cold references).\n audience_temperature: z.array(z.string()).optional(),\n funnel_stage: z.array(z.string()).optional(),\n advertiser_size: z.array(z.string()).optional(),\n // `false` drops the ads known to work only on viewers who already know the\n // brand (an ad not judged yet is kept); `true` keeps only those.\n presumes_brand_knowledge: z.boolean().optional(),\n first_seen_after: z.string().optional(),\n first_seen_before: z.string().optional(),\n // Where the ad is in its life (any of these stages), read by ad-dna from its\n // dates at search time; and `true` for only the version a brand kept after\n // testing it against others (`false` drops those).\n lifecycle_stage: z.array(z.string()).optional(),\n survived_test: z.boolean().optional(),\n // `true` keeps only ads a creative can be built on (pictures and videos a\n // brand designed): drops Google search text, Shopping and app ads. A format\n // list that names `text` lifts it.\n design_reference: z.boolean().optional(),\n // `true` keeps only Meta partnership ads (run by the brand with a creator or\n // another brand); `false` drops them.\n partnership: z.boolean().optional(),\n});\nexport type WinnersHardFilters = z.infer<typeof winnersHardFiltersSchema>;\n\n/**\n * A first-seen bound as ad-dna requires it (an ISO datetime in UTC). A bare\n * date reads as the start of that day; an offset is converted to UTC.\n */\nconst firstSeenBoundSchema = z\n .union([z.iso.date(), z.iso.datetime({ offset: true })], {\n error: \"first_seen_after/first_seen_before must be an ISO date (2026-01-01) or datetime (2026-01-01T00:00:00Z)\",\n })\n .transform((value) => new Date(value.length === 10 ? `${value}T00:00:00Z` : value).toISOString());\n\n// ad-dna's closed vocabularies for the search filters, mirrored here so a typo\n// is refused with the valid values before a paid search. Sources:\n// apps/ad-dna-service/src/schema/enums.ts (format, winner category, awareness\n// stage) and packages/ad-dna/src/schema/enums.ts (`staticFormatPatternEnum`,\n// and the stored audience temperature, funnel stage and advertiser size).\n// Platform is the connector set above, not every platform the DNA knows.\nexport const adFormatSchema = z.enum([\"video\", \"static\", \"carousel\", \"text\"]);\nexport const winnerCategorySchema = z.enum([\n \"winner\",\n \"grand_slam_winner\",\n \"scaled_winner\",\n \"low_profile_winner\",\n \"rising\",\n \"evergreen\",\n \"low_traction_dud\",\n \"thrash_iteration\",\n \"thrash_family\",\n \"false_winner\",\n \"untested\",\n \"dud\",\n]);\nexport const awarenessStageSchema = z.enum([\n \"unaware\",\n \"problem_aware\",\n \"solution_aware\",\n \"product_aware\",\n \"most_aware\",\n]);\nexport const audienceTemperatureSchema = z.enum([\"0_cold\", \"1_warm_engaged\", \"2_hot_visited\", \"3_customer\"]);\nexport const funnelStageSchema = z.enum([\"TOF\", \"MOF\", \"BOF\"]);\nexport const advertiserSizeSchema = z.enum([\"solo\", \"smb\", \"mid\", \"enterprise\"]);\nexport const staticFormatPatternSchema = z.enum([\n \"clean_product\",\n \"lifestyle_photo\",\n \"headline_card\",\n \"infographic\",\n \"chat_screenshot\",\n \"tweet_screenshot\",\n \"review_screenshot\",\n \"before_after_split\",\n \"comparison_table\",\n \"list_card\",\n \"meme_template\",\n \"native_post_lookalike\",\n \"stock_photo_overlay\",\n \"founder_portrait\",\n \"testimonial_quote\",\n \"packshot_minimalist\",\n \"four_panel_lifestyle_grid\",\n \"two_panel_split\",\n \"notes_app_screenshot\",\n \"founder_letter_textonly\",\n \"us_vs_them_grid\",\n \"benefit_callout_grid\",\n \"create_your_own_adventure_meme\",\n \"quad_split\",\n \"stories_style_casual_static\",\n]);\n\n/** The filters as a caller's input is checked where it enters Baker, before a paid search. */\nconst validatedHardFiltersSchema = winnersHardFiltersSchema.extend({\n platform: z.array(adLibraryPlatformSchema).optional(),\n format: z.array(adFormatSchema).optional(),\n winner_category: z.array(winnerCategorySchema).optional(),\n awareness_stage: z.array(awarenessStageSchema).optional(),\n static_format_patterns: z.array(staticFormatPatternSchema).optional(),\n audience_temperature: z.array(audienceTemperatureSchema).optional(),\n funnel_stage: z.array(funnelStageSchema).optional(),\n advertiser_size: z.array(advertiserSizeSchema).optional(),\n first_seen_after: firstSeenBoundSchema.optional(),\n first_seen_before: firstSeenBoundSchema.optional(),\n lifecycle_stage: z.array(adLifecycleStageSchema).optional(),\n});\n\nexport const winnersSortSchema = z.enum([\"winner\", \"longest_running\", \"newest\"]);\nexport type WinnersSort = z.infer<typeof winnersSortSchema>;\n\nconst winnersSearchFields = z.object({\n free_text_query: z.string().max(500).optional(),\n ref_ad_id: z.string().optional(),\n limit: z.number().int().min(1).max(100).optional(),\n // Pagination offset for infinite scroll. The browse view (no query) scrolls\n // the whole library; a text/similar search scrolls its bounded ranked pool.\n offset: z.number().int().min(0).optional(),\n // Per-advertiser cap: past it a brand's ads are dropped. `0` = no cap (the\n // library browse view sends it so a facet-filtered slice shows every winner\n // and matches the facet-rail count); omit it to spread the brands instead,\n // three each at the top and none dropped.\n max_per_advertiser: z.number().int().min(0).max(50).optional(),\n // ad-dna reads one advertiser in `advertiser_ids` as browsing that brand, and\n // keeps its measured failures. `false` keeps it a reference search: what\n // Baker sends when it narrowed to the company's followed brands itself.\n brand_browse: z.boolean().optional(),\n min_relevance: z.number().min(0).max(1).optional(),\n // One page picked for variety (different brands, containers and hooks)\n // instead of rank order: a reference set for N concepts. Ignores offset.\n diverse: z.boolean().optional(),\n // The order of a browse (no query): by winner score (default), by how long\n // the ad has run, or by when it was first seen. A query ranks by relevance\n // blended with winner score, so `sort` only means something without one.\n sort: winnersSortSchema.optional(),\n hard_filters: winnersHardFiltersSchema.optional(),\n // `score_breakdown` surfaces the \"why it ranked\" panel; facets drive the\n // filter rail. thumbnails/full_dna_url are opt-in extras.\n include: z.array(z.enum([\"score_breakdown\", \"facets\", \"full_dna_url\", \"thumbnails\"])).optional(),\n});\n\nconst hasSearchInput = (b: { free_text_query?: string; ref_ad_id?: string; hard_filters?: unknown }): boolean =>\n b.free_text_query !== undefined || b.ref_ad_id !== undefined || b.hard_filters !== undefined;\nconst SEARCH_INPUT_MESSAGE = \"Provide free_text_query, ref_ad_id, or hard_filters\";\n\n/** The request ad-dna's `/v1/search` answers, forwarded verbatim. */\nexport type WinnersSearchRequest = z.infer<typeof winnersSearchFields>;\n\n/**\n * Which brands a reference search draws from. The corpus is shared by every\n * Baker company, so `all` can surface a brand some other client follows.\n * - `followed-first` (default): followed brands first, topped up from the\n * whole library when fewer than `limit` of them clear the relevance floor.\n * A company that follows nobody gets the whole library, as `all` would.\n * - `followed`: only brands this company follows.\n * - `all`: the whole library.\n */\nexport const winnerSearchScopeSchema = z.enum([\"all\", \"followed\", \"followed-first\"]);\nexport type WinnerSearchScope = z.infer<typeof winnerSearchScopeSchema>;\n\n/** `/api/ad-library/winners/search`: the ad-dna request plus a scope Baker resolves from the API key's company. */\nexport const scopedWinnersSearchRequestSchema = winnersSearchFields\n .extend({\n scope: winnerSearchScopeSchema.default(\"followed-first\"),\n hard_filters: validatedHardFiltersSchema.optional(),\n })\n .refine(hasSearchInput, { message: SEARCH_INPUT_MESSAGE })\n // Paging a merged two-phase answer has no stable meaning: page 2 of \"followed\n // first\" depends on how many followed ads page 1 happened to hold.\n .refine((b) => b.scope !== \"followed-first\" || !b.offset, {\n message: \"offset is not supported with scope followed-first; raise limit instead\",\n });\nexport type ScopedWinnersSearchRequest = z.infer<typeof scopedWinnersSearchRequestSchema>;\n\n/** DNA \"why it works\" summary — every field nullable (ad-dna omits freely). */\nexport const winningAdDnaSchema = z.object({\n creative_concept: z.string().nullable(),\n angle: z.string().nullable(),\n awareness_stage: z.string().nullable(),\n // How many claims the ad's market has already heard (s1 first to say it … s5 tired of claims).\n // Optional while an older ad-dna does not send it.\n sophistication_stage: z.string().nullable().optional(),\n audience_temperature: z.string().nullable(),\n // Who else the ad was made for, and whether its copy only works on viewers who\n // already know the brand (null: not judged yet). Optional while an older\n // ad-dna does not send them.\n funnel_stage: z.string().nullable().optional(),\n advertiser_size: z.string().nullable().optional(),\n presumes_brand_knowledge: z.boolean().nullable().optional(),\n brand_knowledge_reason: z.string().nullable().optional(),\n target_persona: z.string().nullable(),\n hook_archetype: z.string().nullable(),\n // The proven hook pattern (`winning-ads hooks` seed) the free-text\n // `hook_archetype` matches: the value two ads can share. Optional while an\n // older ad-dna does not send it.\n hook_seed: z.string().nullable().optional(),\n creator_type: z.string().nullable(),\n industry: z.string().nullable(),\n business_model: z.string().nullable(),\n // What the viewer sees, the static's container (comparison_table, …) and why\n // it works: pick a reference on its move, not on its angle label.\n visual: z.string().nullable(),\n container: z.string().nullable(),\n mechanism: z.string().nullable(),\n});\nexport type WinningAdDna = z.infer<typeof winningAdDnaSchema>;\n\n/** The \"why it ranked\" breakdown — present only when include=score_breakdown. */\nexport const winningAdScoreBreakdownSchema = z.object({\n relevance: z.number().nullable(),\n judge_reason: z.string().nullable(),\n winner_score: z.number().nullable(),\n final_score: z.number().nullable(),\n});\nexport type WinningAdScoreBreakdown = z.infer<typeof winningAdScoreBreakdownSchema>;\n\n/**\n * How strongly an ad's run proves it works, read off `winner_score` (0..1).\n * Across the corpus (2026-10-10) the median Meta winner scored 0.33 and the top\n * quarter 0.5. Null when the ad has no score.\n */\nexport type ProofStrength = \"strong\" | \"some\" | \"little\";\nexport const STRONG_PROOF_SCORE = 0.4;\nexport const SOME_PROOF_SCORE = 0.2;\n\nexport function proofStrength(score: number | null | undefined): ProofStrength | null {\n if (score === null || score === undefined) return null;\n if (score >= STRONG_PROOF_SCORE) return \"strong\";\n return score >= SOME_PROOF_SCORE ? \"some\" : \"little\";\n}\n\n/**\n * Whether to call the ad a winner. The library files every ad that delivered\n * as `winner_category: \"winner\"` (that is what keeps it searchable), whatever\n * its score; a winner, to a marketer, is an ad its run strongly proves.\n */\nexport function isWinner(category: string | null | undefined, score: number | null | undefined): boolean {\n return category === \"winner\" && proofStrength(score) === \"strong\";\n}\n\n/** One winner card. Search returns one row per *creative family*. */\nexport const winningAdSchema = z.object({\n ad_id: z.string().nullable(),\n advertiser_id: z.string().nullable(),\n advertiser: z.string().nullable(),\n platform: z.string().nullable(),\n format: z.string().nullable(),\n media_url: z.string().nullable(),\n media_kind: z.string().nullable(),\n thumbnail_url: z.string().nullable(),\n // Query match ∈ [0,1]; null on pure winner browse (no query).\n relevance: z.number().nullable(),\n // How proven in-market (global creative strength).\n winner_score: z.number().nullable(),\n winner_category: z.string().nullable(),\n // The score ad-dna ranked the result by (relevance blended with winner\n // score, or the winner score on a browse). Search results only.\n final_score: z.number().nullable().optional(),\n days_active: z.number().nullable(),\n reach: z.number().nullable(),\n // Null when the brand hasn't been checked recently enough to say.\n active: z.boolean().nullable(),\n // When the brand's ads were last checked: the date `active` was observed.\n active_checked_at: z.string().nullable(),\n // Creative family grouping (search dedups launches into one card).\n creative_id: z.string().nullable(),\n family_id: z.string().nullable(),\n member_count: z.number().nullable(),\n sibling_ad_ids: z.array(z.string()),\n // Where the ad is in its life, and whether it is the version its brand kept\n // after testing: what competitors kept is a stronger reference than what\n // merely runs. Search results only; absent on an older ad-dna.\n stage: adLifecycleStageSchema.nullable().optional(),\n survived_test: z.boolean().nullable().optional(),\n // A Meta partnership ad, run by the brand with a creator or another brand,\n // and who with (null when Meta does not say). Null for every other ad;\n // absent on an older ad-dna.\n partnership: z.object({ partner_name: z.string().nullable() }).nullable().optional(),\n dna: winningAdDnaSchema,\n score_breakdown: winningAdScoreBreakdownSchema.nullable(),\n});\nexport type WinningAd = z.infer<typeof winningAdSchema>;\n\n// `value` is the token the filter matches on (a cluster id, or the raw text\n// when a value has no cluster). `label` is the human-readable name to show;\n// absent when it's identical to `value`.\nexport const facetCountSchema = z.object({ value: z.string(), label: z.string().optional(), count: z.number() });\nexport type FacetCount = z.infer<typeof facetCountSchema>;\n\nexport const winnersFacetsSchema = z.object({\n industry: z.array(facetCountSchema),\n creator_type: z.array(facetCountSchema),\n winner_category: z.array(facetCountSchema),\n format: z.array(facetCountSchema),\n business_model: z.array(facetCountSchema),\n});\nexport type WinnersFacets = z.infer<typeof winnersFacetsSchema>;\n\nexport const winnersSearchResponseSchema = z.object({\n results: z.array(winningAdSchema),\n facets: winnersFacetsSchema.nullable(),\n pool_size: z.number().nullable(),\n // Bucketed confidence of the top match; null on pure browse.\n match_confidence: z.enum([\"high\", \"medium\", \"low\"]).nullable(),\n below_floor_count: z.number().nullable(),\n query_id: z.string().nullable(),\n // Pagination window for infinite scroll. `offset` echoes the request; `total`\n // is how many winners this query+filters can scroll through; `has_more` is\n // true when more pages exist. Null on an older ad-dna that predates paging —\n // the dashboard then falls back to a single non-paged page.\n offset: z.number().nullable(),\n total: z.number().nullable(),\n has_more: z.boolean().nullable(),\n // Ads the corpus holds for each requested `country`; null when the search did\n // not filter by country. Tells \"no winners matched\" apart from \"unsupported\"\n // (an unknown code is refused outright).\n country_coverage: z.array(z.object({ code: z.string(), ads: z.number() })).nullable(),\n});\nexport type WinnersSearchResponse = z.infer<typeof winnersSearchResponseSchema>;\n\n/** Where a scoped search result came from: a brand this company follows, or the shared library. */\nexport const winnerSourceSchema = z.enum([\"followed\", \"library\"]);\nexport type WinnerSource = z.infer<typeof winnerSourceSchema>;\n\n/**\n * What Baker knows about a reference beyond the library: how many companies\n * turned it into a creative that reached their Workspace, whether this company\n * already did (such results are listed last), and how the creatives adapted\n * from it were judged: `approved` and `rejected` count the review verdicts\n * across every company's creatives with this source ad, counts only.\n */\nexport const referenceUsesSchema = z.object({\n companies: z.number(),\n ours: z.boolean(),\n approved: z.number(),\n rejected: z.number(),\n});\nexport type ReferenceUses = z.infer<typeof referenceUsesSchema>;\n\nexport const scopedWinningAdSchema = winningAdSchema.extend({\n source: winnerSourceSchema,\n baker_uses: referenceUsesSchema.optional(),\n});\nexport type ScopedWinningAd = z.infer<typeof scopedWinningAdSchema>;\n\nexport const scopedWinnersSearchResponseSchema = winnersSearchResponseSchema.extend({\n results: z.array(scopedWinningAdSchema),\n scope: winnerSearchScopeSchema,\n // How many brands the company follows; 0 means `followed` answers empty and\n // `followed-first` is the whole library.\n following_count: z.number(),\n});\nexport type ScopedWinnersSearchResponse = z.infer<typeof scopedWinnersSearchResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Advertisers (corpus) — `/api/ad-library/advertisers`\n// ---------------------------------------------------------------------------\n\nexport const advertiserPlatformSchema = z.object({\n platform: z.string(),\n external_id: z.string().nullable(),\n region: z.string().nullable(),\n // The account's own name, e.g. one Facebook page per market; null until its first scan.\n name: z.string().nullable(),\n});\nexport type AdvertiserPlatform = z.infer<typeof advertiserPlatformSchema>;\n\n/**\n * A scan of the brand that is in line, under way (or about to be retried), or failed in the last day —\n * whoever started it. ad-dna reads it off each account's latest discovery job\n * (`src/discovery/scanStatus.ts`); null when there is none.\n */\nexport const advertiserScanSchema = z.object({\n state: z.enum([\"waiting\", \"running\", \"failed\"]),\n ads_found: z.number(),\n since: z.string(),\n});\nexport type AdvertiserScan = z.infer<typeof advertiserScanSchema>;\n\n/** A brand as it exists in the shared ad-dna corpus. */\nexport const corpusAdvertiserSchema = z.object({\n advertiser_id: z.string(),\n label: z.string().nullable(),\n scraped_name: z.string().nullable(),\n image_url: z.string().nullable(),\n platforms: z.array(advertiserPlatformSchema),\n platform_count: z.number().nullable(),\n family_count: z.number().nullable(),\n active_ad_count: z.number().nullable(),\n total_ad_count: z.number().nullable(),\n total_reach: z.number().nullable(),\n last_synced_at: z.string().nullable(),\n // Only the detail read carries it; older ad-dna builds send none.\n scan: advertiserScanSchema.nullable().optional(),\n});\nexport type CorpusAdvertiser = z.infer<typeof corpusAdvertiserSchema>;\n\nexport const advertiserSearchRequestSchema = z.object({\n q: z.string().optional(),\n platform: adLibraryPlatformSchema.optional(),\n limit: z.number().int().min(1).max(100).optional(),\n offset: z.number().int().min(0).optional(),\n});\nexport type AdvertiserSearchRequest = z.infer<typeof advertiserSearchRequestSchema>;\n\nexport const advertiserSearchResponseSchema = z.object({\n advertisers: z.array(corpusAdvertiserSchema),\n total: z.number().nullable(),\n});\nexport type AdvertiserSearchResponse = z.infer<typeof advertiserSearchResponseSchema>;\n\n/** Convergence: is the brand still exploring angles or has it converged? */\nexport const advertiserConvergenceSchema = z.object({\n convergence_state: z.string().nullable(),\n dimension_summary: z.unknown().nullable(),\n iteration_velocity_30d: z.number().nullable(),\n last_refresh_completed_at: z.string().nullable(),\n});\nexport type AdvertiserConvergence = z.infer<typeof advertiserConvergenceSchema>;\n\n// ---------------------------------------------------------------------------\n// Brand profile — what a brand is doing, read off its ads (ad-dna\n// GET /v1/advertisers/:id/profile; src/profile/advertiserProfile.ts)\n// ---------------------------------------------------------------------------\n\nconst profileFormatSchema = z.enum([\"image\", \"video\", \"carousel\", \"text\"]);\n\nconst profileAdRefSchema = z.object({\n ad_id: z.string(),\n platform: z.string(),\n format: profileFormatSchema,\n headline: z.string().nullable(),\n media_url: z.string().nullable(),\n media_kind: z.enum([\"image\", \"video\"]).nullable(),\n is_active: z.boolean(),\n});\nexport type ProfileAdRef = z.infer<typeof profileAdRefSchema>;\n\nconst formatMixSchema = z.record(profileFormatSchema, z.number());\n\nconst spendFigureSchema = z.object({ min: z.number(), low: z.number(), high: z.number() });\n\n/**\n * Estimated spend in USD from published delivery (Meta reach, LinkedIn,\n * TikTok and Google bands) × benchmark CPM and frequency, or the spend Google\n * publishes (political ads) as it is. `min` counts measured delivery\n * only at the cheapest price; `low`–`high` is the range. Null when no ad\n * carries any delivery figure: unknown, never zero.\n */\nexport const advertiserSpendSchema = spendFigureSchema.extend({\n currency: z.literal(\"USD\"),\n method: z.string(),\n /** First day any priced ad was seen: the lifetime figure runs from here to now. Absent on older responses. */\n since: z.string().nullable().optional(),\n last_30_days: spendFigureSchema,\n /**\n * Every platform the brand runs on. `ads` counts all its ads there; a\n * platform that publishes no delivery is listed with zeros and every ad\n * `unpriced_ads`. Older ad-dna lists priced platforms only, without the last 30 days.\n */\n by_platform: z.array(\n spendFigureSchema.extend({\n platform: z.string(),\n ads: z.number(),\n measured_ads: z.number(),\n last_30_days: spendFigureSchema.optional(),\n unpriced_ads: z.number().optional(),\n }),\n ),\n measured_ads: z.number(),\n extrapolated_ads: z.number(),\n unpriced_ads: z.number(),\n});\nexport type AdvertiserSpend = z.infer<typeof advertiserSpendSchema>;\n\n/** One concept launched in several versions, and the version the brand kept. */\nexport const creativeTestSchema = z.object({\n family_id: z.string(),\n concept: z.string().nullable(),\n launched_at: z.string(),\n versions: z.number(),\n still_running: z.number(),\n cut_early: z.number(),\n status: z.enum([\"running\", \"decided\"]),\n // When it was decided: the first version cut, or its third week with none cut. Null while running.\n decided_at: z.string().nullable().optional(),\n winner_ad_id: z.string().nullable(),\n ad_ids: z.array(z.string()),\n what_differed: z.array(z.object({ dimension: z.string(), winner: z.string(), others: z.array(z.string()) })),\n});\nexport type CreativeTest = z.infer<typeof creativeTestSchema>;\n\n/**\n * Where a launch's idea (its ad family) stood the day it launched: the `new`\n * idea, another version while the brand was still `testing` it, or a version\n * built on a `winner` the brand had already kept.\n */\nexport const ideaStandingSchema = z.enum([\"new\", \"testing\", \"winner\"]);\nexport type IdeaStanding = z.infer<typeof ideaStandingSchema>;\n\n/**\n * A set of launches by idea: distinct new ideas, and ads per standing.\n * Optional while the service that sends it may lag the dashboard.\n */\nconst ideaTallyShape = {\n new_ideas: z.number().optional(),\n idea_ads: z.object({ new: z.number(), testing: z.number(), winner: z.number() }).optional(),\n};\n\nexport const advertiserProfileSchema = z.object({\n spend: advertiserSpendSchema.nullable(),\n tests: z.array(creativeTestSchema),\n launch_weeks: z.array(\n z.object({\n week_start: z.string(),\n launched: z.number(),\n still_running: z.number(),\n stopped_early: z.number(),\n ...ideaTallyShape,\n }),\n ),\n similar: z.array(\n z.object({\n advertiser_id: z.string(),\n label: z.string().nullable(),\n shared_ads: z.number(),\n platforms: z.array(z.string()),\n }),\n ),\n /**\n * Each day's launches, in ads, in creatives (one creative runs in many ads)\n * and by idea. The creative counts, `ad_count` and `idea` are optional while\n * the service that sends them may lag the dashboard; without them `ads` is\n * one per ad.\n */\n launch_calendar: z.array(\n z.object({\n date: z.string(),\n launched: z.number(),\n still_running: z.number(),\n creatives: z.number().optional(),\n creatives_running: z.number().optional(),\n ...ideaTallyShape,\n ads: z.array(\n profileAdRefSchema.extend({ ad_count: z.number().optional(), idea: ideaStandingSchema.nullable().optional() }),\n ),\n }),\n ),\n recent_launches: z.array(\n profileAdRefSchema.extend({\n first_seen_at: z.string().nullable(),\n stage: adLifecycleStageSchema,\n idea: ideaStandingSchema.nullable().optional(),\n }),\n ),\n landing_pages: z.array(\n z.object({\n page: z.string(),\n url: z.string(),\n ads: z.number(),\n active_ads: z.number(),\n last_seen_at: z.string().nullable(),\n }),\n ),\n audiences: z.object({\n inferred: z.array(z.object({ audience: z.string(), ads: z.number() })),\n measured: z\n .object({\n ages: z.array(z.object({ age_range: z.string(), male: z.number(), female: z.number(), unknown: z.number() })),\n countries: z.array(z.object({ country: z.string(), reach: z.number() })),\n })\n .nullable(),\n /**\n * Google: who the ads were declared to target (by how many ads name each\n * value) and the countries Google showed them in, by impressions. Google\n * publishes both only for ads shown in the EU. Null when no ad carries any.\n */\n targeting: z\n .object({\n ages: z.array(z.object({ value: z.string(), ads: z.number() })),\n genders: z.array(z.object({ value: z.string(), ads: z.number() })),\n locations: z.array(z.object({ value: z.string(), excluded: z.boolean(), ads: z.number() })),\n countries: z.array(z.object({ country: z.string(), impressions: z.number() })),\n })\n .nullable()\n .optional(),\n }),\n freshness: z.object({\n last_checked_at: z.string().nullable(),\n next_scan_at: z.string().nullable(),\n platforms: z.array(z.object({ platform: z.string(), last_checked_at: z.string().nullable() })),\n }),\n media_mix: z.object({ total: formatMixSchema, active: formatMixSchema }),\n platform_split: z.object({ total: z.record(z.string(), z.number()), active: z.record(z.string(), z.number()) }),\n counts: z.object({\n total_ads: z.number(),\n active_ads: z.number(),\n unique_creatives: z.number(),\n /** Distinct ideas (ad families; a creative with no family yet is its own). */\n unique_ideas: z.number().optional(),\n unique_copies: z.number(),\n unique_headlines: z.number(),\n unique_landing_pages: z.number(),\n new_ads_per_week: z.number(),\n }),\n});\nexport type AdvertiserProfile = z.infer<typeof advertiserProfileSchema>;\n\n/** CLI `winning-ads launches`: what followed brands launched lately, and what still runs. */\nexport const advertiserLaunchesSchema = z.object({\n since_days: z.number(),\n advertisers: z.array(\n z.object({\n advertiser_id: z.string(),\n label: z.string().nullable(),\n launched: z.number(),\n still_running: z.number(),\n launches: z.array(\n profileAdRefSchema.extend({\n first_seen_at: z.string().nullable(),\n stage: adLifecycleStageSchema,\n idea: ideaStandingSchema.nullable().optional(),\n }),\n ),\n // The tests the brand decided in the window: the version kept and what\n // differed. Absent on an older ad-dna.\n tests_decided: z.array(creativeTestSchema).optional(),\n }),\n ),\n});\nexport type AdvertiserLaunches = z.infer<typeof advertiserLaunchesSchema>;\n\n// ---------------------------------------------------------------------------\n// Brand landing pages — every page a brand's ads point to (ad-dna\n// GET /v1/advertisers/:id/landing-pages), each with Baker's analysis of it\n// (Convex landingSources: studied once per page, shared by every company).\n// ---------------------------------------------------------------------------\n\n/**\n * One landing page of a brand as ad-dna stores it: counts, platforms, first and\n * last use, the ads that point there. A link counts as the page it leads to;\n * Instant Forms, chats and app stores are not pages. In use now first.\n */\nexport const advertiserLandingPageSchema = z.object({\n /** `https://host/path`, no www., query or fragment: the page's identity and the address it is analysed at. */\n canonical_url: z.string(),\n /** The link of the page's most recently seen ad. */\n url: z.string(),\n domain: z.string(),\n path: z.string(),\n ads: z.number(),\n active_ads: z.number(),\n platforms: z.array(z.string()),\n first_seen_at: z.string().nullable(),\n last_seen_at: z.string().nullable(),\n /** The stretches ads pointed here, oldest first; `to` is null on the one still running. Older ad-dna omits it. */\n windows: z.array(z.object({ from: z.string(), to: z.string().nullable() })).default([]),\n /**\n * Only Google search ads name it: the address printed on the ad, whose path\n * the advertiser types freely, not a page known to exist. Older ad-dna omits it.\n */\n address_only: z.boolean().default(false),\n ads_sample: z.array(profileAdRefSchema),\n});\nexport type AdvertiserLandingPage = z.infer<typeof advertiserLandingPageSchema>;\n\nexport const advertiserLandingPagesSchema = z.object({\n advertiser_id: z.string(),\n total_pages: z.number(),\n pages: z.array(advertiserLandingPageSchema),\n});\nexport type AdvertiserLandingPages = z.infer<typeof advertiserLandingPagesSchema>;\n\n/** not_analysed: never asked for (or studied without its pitch); analysing: being read now; failed: the page could not be read. */\nexport const landingAnalysisStatusSchema = z.enum([\"not_analysed\", \"analysing\", \"ready\", \"failed\"]);\nexport type LandingAnalysisStatus = z.infer<typeof landingAnalysisStatusSchema>;\n\n/** How a page sells, read off it: `pagePitchSchema` (@baker/landing-dna) on the wire. */\nexport const landingPitchSchema = z.object({\n headline: z.string().nullable(),\n subheadline: z.string().nullable(),\n value_propositions: z.array(z.string()),\n offer: z.string().nullable(),\n pricing: z.array(z.string()),\n ctas: z.array(z.string()),\n proof: z.array(z.object({ kind: z.string(), detail: z.string() })),\n audience: z.string().nullable(),\n summary: z.string(),\n /** The page's sections top to bottom (site chrome left out). */\n sections: z.array(z.object({ type: z.string(), headline: z.string().nullable() })),\n});\nexport type LandingPitch = z.infer<typeof landingPitchSchema>;\n\nexport const landingAnalysisSchema = z.object({\n status: landingAnalysisStatusSchema,\n title: z.string().nullable(),\n /** The whole page, top to bottom; read the top for a thumbnail. */\n screenshot_url: z.string().nullable(),\n studied_at: z.string().nullable(),\n /** Why the page could not be read, in product words; null unless `failed`. */\n error: z.string().nullable(),\n /** Null until the page's pitch has been read. */\n pitch: landingPitchSchema.nullable(),\n});\nexport type LandingAnalysis = z.infer<typeof landingAnalysisSchema>;\n\n/** `GET /api/ad-library/landing-pages`: every page of the brand, each with its analysis. */\nexport const brandLandingPagesSchema = z.object({\n advertiser_id: z.string(),\n total_pages: z.number(),\n pages: z.array(advertiserLandingPageSchema.extend({ analysis: landingAnalysisSchema })),\n});\nexport type BrandLandingPages = z.infer<typeof brandLandingPagesSchema>;\nexport type BrandLandingPage = BrandLandingPages[\"pages\"][number];\n\n/** The most pages one analyse request starts: each is a browser study and a model read. */\nexport const LANDING_ANALYSE_BATCH = 5;\n\n/** `POST /api/ad-library/landing-pages/analyse`: study these pages (their links as listed). */\nexport const analyseLandingPagesRequestSchema = z.object({\n urls: z.array(z.string().min(1)).min(1).max(LANDING_ANALYSE_BATCH),\n});\nexport type AnalyseLandingPagesRequest = z.infer<typeof analyseLandingPagesRequestSchema>;\n\nexport const analyseLandingPagesResponseSchema = z.object({\n pages: z.array(z.object({ url: z.string(), status: landingAnalysisStatusSchema, error: z.string().nullable() })),\n});\nexport type AnalyseLandingPagesResponse = z.infer<typeof analyseLandingPagesResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Resolve + preview — turn a domain / URL / brand into a platform identity\n// ---------------------------------------------------------------------------\n\n/** The confirmation-modal card: who we resolved + the id we'd ingest. */\nexport const resolvePreviewSchema = z.object({\n platform: adLibraryPlatformSchema,\n external_id: z.string(),\n name: z.string(),\n image_url: z.string().nullable(),\n category: z.string().nullable(),\n industry: z.string().nullable(),\n website: z.string().nullable(),\n followers: z.number().nullable(),\n});\nexport type ResolvePreview = z.infer<typeof resolvePreviewSchema>;\n\n// ---------------------------------------------------------------------------\n// Followed advertisers (Baker-side subscriptions)\n// ---------------------------------------------------------------------------\n\n/**\n * `discovering` = still enumerating the brand's ads upstream.\n * `ingesting` = enumeration done, the ads it found are still being processed.\n * `ready` = there is something to look at.\n *\n * The middle state exists because enumeration finishes long before the ads it\n * queued actually land. Without it a brand with a thousand pending ads reported\n * a confident zero the moment its spinner stopped.\n */\nexport const followedStatusSchema = z.enum([\"discovering\", \"ingesting\", \"ready\"]);\nexport type FollowedStatus = z.infer<typeof followedStatusSchema>;\n\nexport const followedAdvertiserSchema = z.object({\n // Baker subscription row id (used to unfollow).\n followed_id: z.string(),\n advertiser_id: z.string(),\n label: z.string(),\n image_url: z.string().nullable(),\n platforms: z.array(z.object({ platform: adLibraryPlatformSchema, external_id: z.string() })),\n status: followedStatusSchema,\n active_ad_count: z.number().nullable(),\n total_ad_count: z.number().nullable(),\n family_count: z.number().nullable(),\n // Progress while status is \"discovering\" or \"ingesting\". `adding_ingested`\n // and `adding_enqueued` are both counts for the CURRENT run, so they read as\n // a fraction; `total_ad_count` is the brand's whole corpus and is not.\n adding_discovered: z.number().nullable(),\n adding_enqueued: z.number().nullable(),\n adding_ingested: z.number().nullable(),\n // A discovery job ended in failure, so this brand's ads are under-counted.\n // Distinguishes \"we couldn't finish looking\" from \"this brand runs no ads\".\n discovery_failed: z.boolean().nullable(),\n // The current run is still in line upstream: nothing has started on it yet,\n // which on a backed-up queue can last hours. Optional for older backends.\n adding_waiting: z.boolean().optional(),\n // When the run's poll last checked in (ms). See `isScanInFlight`.\n adding_checked_at: z.number().optional(),\n});\nexport type FollowedAdvertiser = z.infer<typeof followedAdvertiserSchema>;\n\n/**\n * An unsettled run whose poll has not checked in for this long has lost it (a\n * deploy between ticks): the backstop cron re-arms it, and a new scan may\n * replace it. Comfortably longer than the slowest poll interval.\n */\nexport const FOLLOWED_SCAN_QUIET_MS = 15 * 60_000;\n\n/**\n * Whether a followed brand's scan is still under way, so another must not\n * start beside it. A run whose poll went quiet no longer counts: holding it\n * would leave the brand un-rescannable until the cron got round to it.\n */\nexport function isScanInFlight(scan: { status: FollowedStatus; checkedAt: number }, now: number): boolean {\n return scan.status !== \"ready\" && now - scan.checkedAt < FOLLOWED_SCAN_QUIET_MS;\n}\n\nexport const followingListResponseSchema = z.object({\n following: z.array(followedAdvertiserSchema),\n});\nexport type FollowingListResponse = z.infer<typeof followingListResponseSchema>;\n\n// --- Follow (composite: search-first → subscribe, else resolve + enqueue) ---\n\n/**\n * Everything one paste found of a brand. `accounts` are certainly the brand's\n * (linked from its website or named by the link pasted) and are tracked on\n * follow; `suggestions` are only named like it (country pages, per-market\n * entities) and are tracked only once someone picks them.\n */\nexport const brandDiscoverySchema = z.object({\n accounts: z.array(resolvePreviewSchema),\n suggestions: z.array(resolvePreviewSchema),\n});\nexport type BrandDiscovery = z.infer<typeof brandDiscoverySchema>;\n\n/** `POST /api/ad-library/discover`: what a website, name or link finds, without following anything. */\nexport const discoverRequestSchema = z.object({ input: z.string().min(1) });\nexport type DiscoverRequest = z.infer<typeof discoverRequestSchema>;\n\n/** The most inputs one brand is extended with in a single call. */\nexport const BRAND_ACCOUNTS_MAX = 20;\n\n/**\n * What to paste to name exactly this account again — its Ad Library link for a\n * Meta page, its id for a Google advertiser — so a suggestion can be handed\n * straight to `baker winning-ads add-accounts`. A bare page id would not do: it\n * reads as a LinkedIn company id too.\n */\nexport function brandAccountInput(account: Pick<ResolvePreview, \"platform\" | \"external_id\">): string {\n return ACCOUNT_INPUT[account.platform](account.external_id);\n}\n\nconst ACCOUNT_INPUT: Record<AdLibraryPlatform, (externalId: string) => string> = {\n meta: (id) => `https://www.facebook.com/ads/library/?view_all_page_id=${id}`,\n linkedin: (id) => `https://www.linkedin.com/company/${id}`,\n google: (id) => id,\n tiktok: (id) => id,\n};\n\n/**\n * The account's public ad library, opened on exactly this account — where a\n * person checks it really is the brand's before tracking it.\n */\nexport function adLibraryUrl(account: Pick<ResolvePreview, \"platform\" | \"external_id\">): string {\n return LIBRARY_URL[account.platform](account.external_id);\n}\n\nconst LIBRARY_URL: Record<AdLibraryPlatform, (externalId: string) => string> = {\n meta: (id) =>\n `https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=ALL&view_all_page_id=${encodeURIComponent(id)}`,\n linkedin: (id) => `https://www.linkedin.com/ad-library/search?companyIds=${encodeURIComponent(id)}`,\n // TikTok's library is searched by the advertiser's registered name, which is the id we keep.\n tiktok: (id) => `https://library.tiktok.com/ads?region=all&adv_name=${encodeURIComponent(id)}&query_type=1`,\n google: (id) => `https://adstransparency.google.com/advertiser/${encodeURIComponent(id)}?region=anywhere`,\n};\n\nexport const followRequestSchema = z.object({\n input: z.string().min(1),\n // Retired: every platform is tried for every input. Still accepted so older\n // CLIs keep working; a profile link already says which platform it is.\n platform: adLibraryPlatformSchema.optional(),\n // Optional override for the display label; defaults to the resolved name.\n label: z.string().optional(),\n});\nexport type FollowRequest = z.infer<typeof followRequestSchema>;\n\nexport const followResponseSchema = z.object({\n // \"following\" = subscribed to an advertiser already in the corpus (no\n // ingestion). \"added\" = a new advertiser was enqueued for discovery.\n // \"ambiguous\" = the identity mapped to multiple corpus advertisers; the\n // caller must pick one of `candidates`. \"unconfirmed\" = only accounts named\n // like the brand turned up (`suggestions`), so nothing was followed.\n status: z.enum([\"following\", \"added\", \"ambiguous\", \"unconfirmed\"]),\n advertiser: followedAdvertiserSchema.nullable(),\n preview: resolvePreviewSchema.nullable(),\n candidates: z.array(corpusAdvertiserSchema).nullable(),\n // Accounts only named like the brand (another market's page), not tracked\n // until added with `add-accounts`. Present on a single follow.\n suggestions: z.array(resolvePreviewSchema).optional(),\n});\nexport type FollowResponse = z.infer<typeof followResponseSchema>;\n\n/**\n * `POST /api/ad-library/add`: put a brand's ads in Baker's library without\n * anyone following it — every account its website links, on every platform\n * and in every country. For a brand nobody here should follow, such as a client\n * being set up from its organization's workspace.\n */\nexport const libraryAddRequestSchema = z.object({ input: z.string().min(1) });\nexport type LibraryAddRequest = z.infer<typeof libraryAddRequestSchema>;\n\nexport const libraryAddResponseSchema = z.object({\n // \"added\" = new to the library, its ads are being collected. \"in_library\" =\n // already there (any account it did not have yet is being collected).\n // \"ambiguous\" = the accounts belong to several brands already in it, see\n // `candidates`. \"unconfirmed\" = only accounts named like the brand turned up\n // (`suggestions`), so nothing was added.\n status: z.enum([\"added\", \"in_library\", \"ambiguous\", \"unconfirmed\"]),\n advertiser_id: z.string().nullable(),\n label: z.string().nullable(),\n // The accounts it was added with: those its website links, or the link given.\n accounts: z.array(resolvePreviewSchema),\n // How many accounts are being collected now; 0 when the library had them all.\n collecting: z.number(),\n candidates: z.array(corpusAdvertiserSchema).nullable(),\n suggestions: z.array(resolvePreviewSchema),\n});\nexport type LibraryAddResponse = z.infer<typeof libraryAddResponseSchema>;\n\n// --- Batch follow (add many brands at once, e.g. every competitor domain) ---\n\n// Cap the batch so one call can't fan out into an unbounded number of paid\n// resolve lookups + ad-dna adds. A competitor set is ~7-20 brands in practice.\nexport const FOLLOW_BATCH_MAX = 50;\n\nexport const followBatchRequestSchema = z.object({\n // One entry per brand — a domain (best; resolves both Meta + LinkedIn), a\n // profile / ad-library URL, or a brand name.\n inputs: z.array(z.string().min(1)).min(1).max(FOLLOW_BATCH_MAX),\n // Retired: every platform is tried for every input. Still accepted so older\n // CLIs keep working.\n platform: adLibraryPlatformSchema.optional(),\n});\nexport type FollowBatchRequest = z.infer<typeof followBatchRequestSchema>;\n\nexport const followBatchResultSchema = z.object({\n // Echoes the input so the caller can line results up with what it sent.\n input: z.string(),\n // \"following\"/\"added\" mirror the single-follow statuses; \"ambiguous\" needs a\n // manual pick; \"failed\" = we couldn't resolve or add it (see `error`).\n status: z.enum([\"following\", \"added\", \"ambiguous\", \"failed\"]),\n advertiser: followedAdvertiserSchema.nullable(),\n // Present only when status is \"failed\" — a plain-language reason.\n error: z.string().nullable(),\n});\nexport type FollowBatchResult = z.infer<typeof followBatchResultSchema>;\n\nexport const followBatchResponseSchema = z.object({\n results: z.array(followBatchResultSchema),\n // Rollup counts across the batch for a one-glance summary.\n followed_count: z.number(),\n added_count: z.number(),\n ambiguous_count: z.number(),\n failed_count: z.number(),\n});\nexport type FollowBatchResponse = z.infer<typeof followBatchResponseSchema>;\n\n/**\n * `POST /api/ad-library/accounts/add`: track more accounts under a brand\n * already followed — another market's Facebook page, a second LinkedIn\n * company. Each input is a link, a website or an advertiser id.\n */\nexport const addBrandAccountsRequestSchema = z.object({\n advertiser_id: z.string().min(1),\n inputs: z.array(z.string().min(1)).min(1).max(BRAND_ACCOUNTS_MAX),\n});\nexport type AddBrandAccountsRequest = z.infer<typeof addBrandAccountsRequestSchema>;\n\nexport const addBrandAccountsResponseSchema = z.object({\n advertiser: followedAdvertiserSchema.nullable(),\n // Newly tracked; their ads are being collected.\n added: z.array(resolvePreviewSchema),\n // Already part of this brand — nothing to do.\n already_tracked: z.array(resolvePreviewSchema),\n // Inputs nothing could be found for, each with a plain-language reason.\n failed: z.array(z.object({ input: z.string(), error: z.string() })),\n});\nexport type AddBrandAccountsResponse = z.infer<typeof addBrandAccountsResponseSchema>;\n\nexport const unfollowRequestSchema = z.object({\n // Accept either the Baker subscription id or the corpus advertiser id.\n followed_id: z.string().optional(),\n advertiser_id: z.string().optional(),\n});\nexport type UnfollowRequest = z.infer<typeof unfollowRequestSchema>;\n\nexport const unfollowResponseSchema = z.object({ removed: z.boolean() });\nexport type UnfollowResponse = z.infer<typeof unfollowResponseSchema>;\n\n// --- Winners for one advertiser ---\n\nexport const platformWinnersSchema = z.object({\n platform: adLibraryPlatformSchema,\n winners: z.array(winningAdSchema),\n});\nexport type PlatformWinners = z.infer<typeof platformWinnersSchema>;\n\nexport const advertiserWinnersResponseSchema = z.object({\n advertiser_id: z.string(),\n winners: z.array(winningAdSchema),\n // `per_platform`: each platform's own top winners. Scores are not comparable\n // across platforms, so the all-platform list can be one platform's ads only.\n by_platform: z.array(platformWinnersSchema).optional(),\n});\nexport type AdvertiserWinnersResponse = z.infer<typeof advertiserWinnersResponseSchema>;\n\n// --- Every ad of one advertiser (the brand page's \"All ads\") ---\n\nexport const advertiserAdsRunningSchema = z.enum([\"all\", \"running\", \"stopped\"]);\nexport type AdvertiserAdsRunning = z.infer<typeof advertiserAdsRunningSchema>;\nexport const ADVERTISER_ADS_MAX_LIMIT = 100;\n\nexport const advertiserAdsRequestSchema = z.object({\n id: z.string().min(1),\n platform: adLibraryPlatformSchema.optional(),\n running: advertiserAdsRunningSchema.default(\"all\"),\n // Comma list (\"text,video\"): only those formats; every format when absent.\n format: z\n .string()\n .transform((s) =>\n s\n .split(\",\")\n .map((f) => f.trim())\n .filter(Boolean),\n )\n .pipe(z.array(adFormatSchema).min(1))\n .optional(),\n limit: z.coerce.number().int().min(1).max(ADVERTISER_ADS_MAX_LIMIT).default(24),\n offset: z.coerce.number().int().min(0).default(0),\n});\nexport type AdvertiserAdsRequest = z.infer<typeof advertiserAdsRequestSchema>;\n\nexport const advertiserAdsResponseSchema = z.object({\n advertiser_id: z.string(),\n ads: z.array(winningAdSchema),\n // Every ad the filters match; null from an older library, where a short page means the end.\n total: z.number().nullable(),\n});\nexport type AdvertiserAdsResponse = z.infer<typeof advertiserAdsResponseSchema>;\n\n// --- Search copy: what one brand says on Google Search ---\n\n/** What a search-ad headline leads with (ad-dna extractor/searchAdHeadlines.ts). */\nexport const searchHeadlineHookSchema = z.enum([\n \"category\",\n \"brand\",\n \"free\",\n \"price_discount\",\n \"outcome\",\n \"proof\",\n \"new_timely\",\n \"comparison\",\n \"audience\",\n \"location\",\n \"feature\",\n \"call_to_action\",\n \"question\",\n]);\n\nexport const searchCopyRequestSchema = z.object({\n id: z.string().min(1),\n limit: z.coerce.number().int().min(1).max(100).default(15),\n});\nexport type SearchCopyRequest = z.infer<typeof searchCopyRequestSchema>;\n\n/** One headline, description, sitelink or callout across a brand's search ads. */\nconst searchCopyPartSchema = z.object({\n text: z.string(),\n // \"dropped\": every ad that carried it has stopped.\n status: z.enum([\"running\", \"dropped\"]),\n ads: z.number(),\n running_ads: z.number(),\n first_seen: z.string().nullable(),\n last_seen: z.string().nullable(),\n longest_days: z.number().nullable(),\n landing_pages: z.array(z.string()),\n example_ad_id: z.string(),\n});\n\nexport const searchCopySchema = z.object({\n // `read`: ads whose parts have been read; the rest were extracted before.\n totals: z.object({ ads: z.number(), running: z.number(), read: z.number(), with_sitelinks: z.number() }),\n // Distinct parts of each kind, past the list cut. Optional: an older library does not send it.\n part_totals: z\n .object({ headlines: z.number(), descriptions: z.number(), sitelinks: z.number(), callouts: z.number() })\n .optional(),\n headlines: z.array(\n searchCopyPartSchema.extend({ hook: searchHeadlineHookSchema.nullable(), names_rival: z.boolean() }),\n ),\n descriptions: z.array(searchCopyPartSchema),\n sitelinks: z.array(searchCopyPartSchema),\n callouts: z.array(searchCopyPartSchema),\n hooks: z.array(z.object({ hook: searchHeadlineHookSchema, running: z.number(), dropped: z.number() })),\n rival_headlines: z.array(z.string()),\n});\nexport type SearchCopy = z.infer<typeof searchCopySchema>;\n\nexport const searchCopyResponseSchema = searchCopySchema.extend({ advertiser_id: z.string() });\nexport type SearchCopyResponse = z.infer<typeof searchCopyResponseSchema>;\n\nexport const searchCopyPartKindSchema = z.enum([\"headlines\", \"descriptions\", \"sitelinks\", \"callouts\"]);\nexport type SearchCopyPartKind = z.infer<typeof searchCopyPartKindSchema>;\n\nexport const searchCopyPageRequestSchema = z.object({\n id: z.string().min(1),\n part: searchCopyPartKindSchema,\n offset: z.coerce.number().int().min(0).default(0),\n limit: z.coerce.number().int().min(1).max(100).default(15),\n});\nexport type SearchCopyPageRequest = z.infer<typeof searchCopyPageRequestSchema>;\n\n/** One page of one kind of part, in the search-copy order; only headlines carry a hook. */\nexport const searchCopyPageSchema = z.object({\n parts: z.array(\n searchCopyPartSchema.extend({\n hook: searchHeadlineHookSchema.nullable().optional(),\n names_rival: z.boolean().optional(),\n }),\n ),\n total: z.number(),\n});\nexport type SearchCopyPage = z.infer<typeof searchCopyPageSchema>;\n\n/** `GET /api/ad-library/advertiser-search-copy/page`: the page, and which brand, kind and offset it is. */\nexport const searchCopyPageResponseSchema = searchCopyPageSchema.extend({\n advertiser_id: z.string(),\n part: searchCopyPartKindSchema,\n offset: z.number(),\n});\nexport type SearchCopyPageResponse = z.infer<typeof searchCopyPageResponseSchema>;\n\n// --- Feed: winners across every followed advertiser (browse + trim) ---\n\nexport const feedRequestSchema = z.object({\n // Optional subset of your followed advertiser ids to narrow to (\"trim down\n // per advertiser\"). Ids you don't follow are ignored and echoed back in\n // `unknown_requested`. Omit to browse winners across every brand you follow.\n advertiser_ids: z.array(z.string()).optional(),\n platform: adLibraryPlatformSchema.optional(),\n winner_category: z.array(z.string()).optional(),\n format: z.array(z.string()).optional(),\n // The feed shows designed pictures and videos by default; `true` adds Google\n // search text, Shopping and app ads.\n all_kinds: z.boolean().optional(),\n // Winners kept per advertiser so no single brand floods the feed. `0` = no\n // cap. Default applied by the route.\n per_advertiser: z.number().int().min(0).max(50).optional(),\n // Total winners returned across all followed advertisers.\n limit: z.number().int().min(1).max(200).optional(),\n});\nexport type FeedRequest = z.infer<typeof feedRequestSchema>;\n\nexport const feedResponseSchema = z.object({\n // The feed only ever reads followed brands, so every winner is `followed`:\n // the same `source` a scoped search carries, so the surfaces agree.\n winners: z.array(winningAdSchema.extend({ source: winnerSourceSchema })),\n // How many brands the company follows (regardless of the trim).\n following_count: z.number(),\n // The advertiser ids actually queried (follows ∩ requested subset).\n advertiser_ids: z.array(z.string()),\n // Requested ids that aren't followed — a hint the caller mistyped or hasn't\n // followed them yet.\n unknown_requested: z.array(z.string()),\n});\nexport type FeedResponse = z.infer<typeof feedResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Seed catalog — `/api/ad-library/seed-catalog`\n//\n// Reads ad-dna's corpus-wide `pattern_stats` rollup: the top winner-weighted\n// enum SEEDS for one taxonomy field (hook archetype, persuasion mechanism, or\n// static-ad format), optionally narrowed to a platform / awareness / industry\n// segment. Grounds a creative in a PROVEN pattern for the exact segment before\n// it grounds in a real reference.\n// ---------------------------------------------------------------------------\n\nexport const seedCatalogFieldSchema = z.enum([\"hook_archetype\", \"mechanism_type\", \"static_format_pattern\"]);\nexport type SeedCatalogField = z.infer<typeof seedCatalogFieldSchema>;\n\nexport const seedCatalogRequestSchema = z.object({\n field: seedCatalogFieldSchema,\n platform: z.string().optional(),\n awareness_stage: z.string().optional(),\n industry: z.string().optional(),\n limit: z.number().int().min(1).max(100).optional(),\n});\nexport type SeedCatalogRequest = z.infer<typeof seedCatalogRequestSchema>;\n\nexport const patternSeedSchema = z.object({\n key: z.string(),\n count: z.number(),\n sum_winner_score: z.number(),\n mean_winner_score: z.number(),\n winner_share: z.number(),\n // How the seed did inside the brands that used it, the order of the catalog:\n // the mean, over brands, of how much more often their creatives with the seed\n // ran 60 days than their others (0 until five brands have a verdict), and\n // how many brands it won and lost inside.\n lift: z.number(),\n brands_for: z.number(),\n brands_against: z.number(),\n // Per-segment counts (platform/awareness_stage/industry → value → n); present\n // only on `--full`, so the response can stay lean by default.\n breakdown_by: z.record(z.string(), z.unknown()).nullable(),\n});\nexport type PatternSeed = z.infer<typeof patternSeedSchema>;\n\nexport const seedCatalogSegmentSchema = z.object({\n platform: z.string().nullable(),\n awareness_stage: z.string().nullable(),\n industry: z.string().nullable(),\n});\nexport type SeedCatalogSegment = z.infer<typeof seedCatalogSegmentSchema>;\n\nexport const seedCatalogResponseSchema = z.object({\n field: z.string(),\n segment: seedCatalogSegmentSchema.nullable(),\n patterns: z.array(patternSeedSchema),\n});\nexport type SeedCatalogResponse = z.infer<typeof seedCatalogResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Ad content — `/api/ad-library/ad-content`\n//\n// Per-ad drill-down for *reading what's inside* one winning creative: the spoken\n// transcript, the on-screen text, the ad copy, and (with --full) the speech,\n// pacing, and soundtrack detail. `search`/`winners`/`feed` return a lean\n// shortlist to pick from; this is the deliberate \"open this one and understand\n// it\" step, keyed by the `ad_id` those surfaces return. Sourced from ad-dna\n// `GET /v1/ads/:id`, which returns the whole `full_dna`; the backend client\n// projects it down to this lean shape (transcript/overlays live only there).\n// ---------------------------------------------------------------------------\n\nexport const adContentRequestSchema = z.object({\n ad_id: z.string().min(1),\n platform: adLibraryPlatformSchema.optional(),\n});\nexport type AdContentRequest = z.infer<typeof adContentRequestSchema>;\n\n/**\n * `POST /api/ad-library/reference-read`: one library ad's picture read as a static ad built on\n * it needs it (the describe blueprint and the identity-critical elements), made once by the\n * backend and shared by every company. `reused` is a read another build already paid for.\n */\nexport const referenceReadRequestSchema = z.object({\n ad_id: z.string().min(1),\n platform: adLibraryPlatformSchema.default(\"meta\"),\n});\nexport type ReferenceReadRequest = z.input<typeof referenceReadRequestSchema>;\n\nexport const referenceReadResponseSchema = z.object({\n blueprint: z.record(z.string(), z.unknown()),\n elements: z.array(z.unknown()),\n credits_charged: z.number(),\n reused: z.boolean(),\n});\nexport type ReferenceReadResponse = z.infer<typeof referenceReadResponseSchema>;\n\n/**\n * One piece of on-screen text: the words shown on the frame, when + where, and\n * the job they do (headline, benefit, cta…). A video overlay carries its time;\n * a static ad's in-image text has none; a carousel card's text carries `card`.\n */\nexport const adContentOverlaySchema = z.object({\n text: z.string(),\n appears_at_s: z.number().nullable(),\n position: z.string().nullable(),\n role: z.string().nullable(),\n card: z.number().nullable(),\n});\nexport type AdContentOverlay = z.infer<typeof adContentOverlaySchema>;\n\n/** Voiceover detail — how the ad speaks, not just what it says. --full only. */\nexport const adContentSpeechSchema = z.object({\n speech_pct_of_runtime: z.number().nullable(),\n speaker_count: z.number().nullable(),\n voiceover_vs_sync: z.string().nullable(),\n is_direct_address: z.boolean().nullable(),\n speech_emotion_dominant: z.string().nullable(),\n});\nexport type AdContentSpeech = z.infer<typeof adContentSpeechSchema>;\n\n/** Shot pacing + key timeline moments. --full only. */\nexport const adContentPacingSchema = z.object({\n scene_count: z.number().nullable(),\n avg_shot_length_s: z.number().nullable(),\n pacing_shape: z.string().nullable(),\n hook_ends_at_s: z.number().nullable(),\n cta_first_shown_at_s: z.number().nullable(),\n product_first_appears_at_s: z.number().nullable(),\n});\nexport type AdContentPacing = z.infer<typeof adContentPacingSchema>;\n\n/** Recognised soundtrack (AudD), when matched. --full only. */\nexport const adContentMusicSchema = z.object({\n track_title: z.string().nullable(),\n track_artist: z.string().nullable(),\n});\nexport type AdContentMusic = z.infer<typeof adContentMusicSchema>;\n\n/**\n * How a static ad (or carousel) is built: what to reproduce when it is the\n * reference: its container, composition, colours, the CTA drawn into it and the\n * attention markers on it. A carousel is read from its first card and has no\n * `format_pattern`. Video ads fill only the format-neutral fields.\n */\nexport const adContentLayoutSchema = z.object({\n format_pattern: z.string().nullable(),\n composition: z.string().nullable(),\n focal_subject: z.string().nullable(),\n aspect_ratio: z.string().nullable(),\n background: z.string().nullable(),\n palette_mood: z.string().nullable(),\n colors: z.array(z.string()),\n production: z.string().nullable(),\n aesthetic: z.array(z.string()),\n cta_in_image: z.string().nullable(),\n markers: z.array(z.string()),\n card_roles: z.array(z.string()),\n});\nexport type AdContentLayout = z.infer<typeof adContentLayoutSchema>;\n\n/** The persuasion an ad carries: who it speaks to and how it convinces them. */\nexport const adContentMessageSchema = z.object({\n awareness_stage: z.string().nullable(),\n sophistication: z.string().nullable(),\n mechanism: z.string().nullable(),\n pain_points: z.array(z.string()),\n desires: z.array(z.string()),\n value_props: z.array(z.string()),\n objections_handled: z.array(z.string()),\n proof: z.array(z.string()),\n risk_reversal: z.array(z.string()),\n});\nexport type AdContentMessage = z.infer<typeof adContentMessageSchema>;\n\n/**\n * The offer the ad makes. The extractor fills absent parts with \"none\" / \"n_a\";\n * those arrive as null or empty, so a filled field is always a real finding.\n */\nexport const adContentOfferSchema = z.object({\n offer_type: z.string().nullable(),\n pricing_model: z.string().nullable(),\n entry_price: z.string().nullable(),\n no_credit_card: z.boolean().nullable(),\n guarantee: z.array(z.string()),\n guarantee_days: z.number().nullable(),\n urgency: z.string().nullable(),\n bonus: z.string().nullable(),\n});\nexport type AdContentOffer = z.infer<typeof adContentOfferSchema>;\n\n/** Where one ad is in its life and how the test it was part of ended (ad-dna `GET /v1/ads/:id` `lifecycle`). */\nexport const adLifecycleSchema = z.object({\n stage: adLifecycleStageSchema,\n survived_test: z.boolean(),\n test: creativeTestSchema.nullable(),\n});\nexport type AdLifecycle = z.infer<typeof adLifecycleSchema>;\n\n/**\n * The readable content of one ad. `transcript`, `has_speech`, `speech`, `pacing`,\n * and `music` describe a *video*; they're null/empty for a static or carousel ad.\n * `on_screen_text` holds a video's timed overlays, or the text drawn into a\n * static or carousel image. The copy fields (`primary_text`, `headline`, `cta`)\n * apply to every format.\n */\n/** The kinds of ad Google's Ads Transparency Center shows (`full_dna.platform_meta.google_ad_type`). */\nexport const GOOGLE_AD_TYPES = [\"search\", \"display\", \"shopping\", \"youtube\", \"app\"] as const;\nexport const googleAdTypeSchema = z.enum(GOOGLE_AD_TYPES);\nexport type GoogleAdType = z.infer<typeof googleAdTypeSchema>;\n\n/** Where an ad's link goes when it is no web page of the brand's (ad-dna profile/linkDestination.ts). */\nexport const landingElsewhereSchema = z.enum([\n \"meta_native\",\n \"linkedin_native\",\n \"messaging\",\n \"social_profile\",\n \"app_store\",\n \"file\",\n]);\nexport type LandingElsewhere = z.infer<typeof landingElsewhereSchema>;\n\n/**\n * A Google search ad read into its parts (ad-dna `full_dna.search_ad`): what a\n * search ad is made of, in place of the picture analysis every other ad gets.\n * Google does not disclose where each sitelink leads.\n */\nexport const adContentSearchAdSchema = z.object({\n // A hook this version does not know reads as none rather than losing the ad's parts.\n headlines: z.array(z.object({ text: z.string(), hook: searchHeadlineHookSchema.nullable().catch(null) })),\n descriptions: z.array(z.string()),\n sitelinks: z.array(z.string()),\n callouts: z.array(z.string()),\n rating: z.object({ stars: z.number().nullable(), reviews: z.number().nullable() }).nullable(),\n});\nexport type AdContentSearchAd = z.infer<typeof adContentSearchAdSchema>;\n\nexport const adContentSchema = z.object({\n ad_id: z.string().nullable(),\n advertiser: z.string().nullable(),\n advertiser_id: z.string().nullable(),\n platform: z.string().nullable(),\n format: z.string().nullable(),\n media_kind: z.string().nullable(),\n media_url: z.string().nullable(),\n winner_score: z.number().nullable(),\n winner_category: z.string().nullable(),\n summary: z.string().nullable(),\n angle: z.string().nullable(),\n hook_archetype: z.string().nullable(),\n // Spoken words (video only; null when the ad has no speech track).\n transcript: z.string().nullable(),\n has_speech: z.boolean().nullable(),\n speech: adContentSpeechSchema,\n // On-screen text / captions.\n has_captions: z.boolean().nullable(),\n caption_style: z.string().nullable(),\n on_screen_text: z.array(adContentOverlaySchema),\n // Copy the viewer reads outside the media.\n primary_text: z.string().nullable(),\n headline: z.string().nullable(),\n // Where the ad sends people: the page a short or tracking link leads to once\n // followed. Null when the link opens no page of the brand's; optional while\n // an older backend does not send it.\n landing_url: z.string().nullable().optional(),\n // Why the link opens no page: an Instant Form or Experience inside Meta, a\n // chat, an app store, a social profile, a LinkedIn page, a file.\n landing_elsewhere: landingElsewhereSchema.nullable().optional(),\n cta: z.string().nullable(),\n // Structure + soundtrack.\n pacing: adContentPacingSchema,\n music: adContentMusicSchema,\n layout: adContentLayoutSchema,\n message: adContentMessageSchema,\n offer: adContentOfferSchema,\n // Where the ad is in its life, whether it is the version its brand kept\n // after testing, and the test when it is one version of a tested concept.\n // Absent on an older ad-dna.\n lifecycle: adLifecycleSchema.nullable().optional(),\n // Which kind of Google ad it is; null off Google or when the library does\n // not say. Absent on an older ad-dna.\n google_ad_type: googleAdTypeSchema.nullable().optional(),\n // A Google search ad's headlines, descriptions, sitelinks, callouts and\n // rating; null on every other ad. A search ad has no layout, colours or\n // on-screen text of its own (Google draws it), so those stay empty on it.\n // Absent on an older backend.\n search_ad: adContentSearchAdSchema.nullable().optional(),\n});\nexport type AdContent = z.infer<typeof adContentSchema>;\n\nexport const adContentResponseSchema = z.object({ ad: adContentSchema });\nexport type AdContentResponse = z.infer<typeof adContentResponseSchema>;\n\n// ---------------------------------------------------------------------------\n// Ad DNA detail — the dashboard's reference-ad panel only.\n//\n// Everything in one ad's `full_dna` that `AdContent` does not already carry:\n// the colours with their share of the frame, the video's story beat by beat,\n// each carousel card, where it ran and to whom, and every other extracted\n// trait grouped by what it describes. Not on the CLI: the agent reads the lean\n// `AdContent`, and this is the depth a person browses.\n// ---------------------------------------------------------------------------\n\n/** One colour of the ad and the share of the frame it covers (0–1). */\nexport const adDnaColorSchema = z.object({\n hex: z.string(),\n share: z.number().nullable(),\n});\nexport type AdDnaColor = z.infer<typeof adDnaColorSchema>;\n\n/** One beat of a video as the watch saw and heard it, in order. */\nexport const adDnaSceneSchema = z.object({\n start_s: z.number(),\n end_s: z.number(),\n role: z.string().nullable(),\n visual: z.string(),\n speech: z.string().nullable(),\n on_screen_text: z.string().nullable(),\n sound: z.string().nullable(),\n});\nexport type AdDnaScene = z.infer<typeof adDnaSceneSchema>;\n\n/** A moment on a video's timeline: when the hook ends, the product, price or CTA first shows, the logo. */\nexport const adDnaMomentSchema = z.object({\n kind: z.enum([\"hook_ends\", \"product\", \"price\", \"cta\", \"logo\"]),\n at_s: z.number(),\n});\nexport type AdDnaMoment = z.infer<typeof adDnaMomentSchema>;\n\nexport const adDnaStorySchema = z.object({\n duration_s: z.number().nullable(),\n summary: z.string().nullable(),\n hook: z.string().nullable(),\n scenes: z.array(adDnaSceneSchema),\n moments: z.array(adDnaMomentSchema),\n});\nexport type AdDnaStory = z.infer<typeof adDnaStorySchema>;\n\n/** One carousel card: its job in the sequence, how it is laid out and coloured, and how it leads on. */\nexport const adDnaCardSchema = z.object({\n index: z.number(),\n role: z.string().nullable(),\n layout: z.string().nullable(),\n colors: z.array(adDnaColorSchema),\n open_loop: z.string().nullable(),\n transition: z.string().nullable(),\n});\nexport type AdDnaCard = z.infer<typeof adDnaCardSchema>;\n\n/** People reached in one age band (Meta's EU transparency breakdown, summed over countries). */\nexport const adDnaAgeReachSchema = z.object({\n age_range: z.string(),\n female: z.number(),\n male: z.number(),\n unknown: z.number(),\n});\nexport type AdDnaAgeReach = z.infer<typeof adDnaAgeReachSchema>;\n\n/** Where the ad ran and who saw it, as the platform discloses it. */\nexport const adDnaReachSchema = z.object({\n total: z.number().nullable(),\n eu_total: z.number().nullable(),\n ages: z.object({ min: z.number(), max: z.number() }).nullable(),\n gender: z.string().nullable(),\n locations: z.array(z.string()),\n excluded_locations: z.array(z.string()),\n channels: z.array(z.string()),\n by_age: z.array(adDnaAgeReachSchema),\n});\nexport type AdDnaReach = z.infer<typeof adDnaReachSchema>;\n\n/** One extracted trait. `key` is the DNA field name; a yes/no trait is kept only when true. */\nexport const adDnaTraitSchema = z.object({\n key: z.string(),\n value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),\n});\nexport type AdDnaTrait = z.infer<typeof adDnaTraitSchema>;\n\nexport const adDnaTraitGroupKeySchema = z.enum([\n \"audience\",\n \"business\",\n \"message\",\n \"copy\",\n \"look\",\n \"cast\",\n \"pacing\",\n \"sound\",\n \"on_screen_text\",\n \"branding\",\n \"subject\",\n \"cta_visual\",\n \"markers\",\n \"carousel\",\n \"offer\",\n \"delivery\",\n]);\nexport type AdDnaTraitGroupKey = z.infer<typeof adDnaTraitGroupKeySchema>;\n\nexport const adDnaTraitGroupSchema = z.object({\n key: adDnaTraitGroupKeySchema,\n traits: z.array(adDnaTraitSchema),\n});\nexport type AdDnaTraitGroup = z.infer<typeof adDnaTraitGroupSchema>;\n\nexport const adDnaDetailSchema = z.object({\n palette: z.array(adDnaColorSchema),\n background_hex: z.string().nullable(),\n button_hex: z.string().nullable(),\n story: adDnaStorySchema.nullable(),\n cards: z.array(adDnaCardSchema),\n reach: adDnaReachSchema.nullable(),\n groups: z.array(adDnaTraitGroupSchema),\n extracted_at: z.string().nullable(),\n});\nexport type AdDnaDetail = z.infer<typeof adDnaDetailSchema>;\n\n/** One stored carousel card's media: `index` from 0, matching the DNA's `card_index`. */\nexport const adCardMediaSchema = z.object({\n index: z.number(),\n url: z.string(),\n kind: z.enum([\"image\", \"video\"]).nullable(),\n});\nexport type AdCardMedia = z.infer<typeof adCardMediaSchema>;\n\n/**\n * What the reference-ad panel loads when an ad opens: its readable content, the\n * rest of its DNA, and every carousel card's media (empty for other formats and\n * for carousels whose other cards were never stored — they show their first).\n */\nexport const adDetailSchema = z.object({\n content: adContentSchema,\n dna: adDnaDetailSchema,\n card_media: z.array(adCardMediaSchema),\n});\nexport type AdDetail = z.infer<typeof adDetailSchema>;\n","export interface ArgSchema {\n type: string;\n description: string;\n required: boolean;\n default?: unknown;\n enum?: string[];\n}\n\nexport interface CommandSchema {\n command: string;\n description: string;\n args: Record<string, ArgSchema>;\n}\n\nconst registry = new Map<string, CommandSchema>();\n\n/**\n * The commands the schemas describe, as `cli.ts` loaded them. Held here rather\n * than imported by `baker schema`: the root lazily imports that command, and an\n * import back would put every command's loader in one chunk.\n */\nlet tree: object | undefined;\n\nexport function registerCommandTree(root: object): void {\n tree = root;\n}\n\nexport function commandTree(): object | undefined {\n return tree;\n}\n\nexport function registerSchema(schema: CommandSchema): void {\n registry.set(schema.command, schema);\n}\n\nexport function getSchema(command: string): CommandSchema | undefined {\n return registry.get(command);\n}\n\nexport function listSchemas(): string[] {\n return [...registry.keys()];\n}\n\n/** A name compared the way the command line spells it: case and hyphens aside. */\nexport function spellingKey(name: string): string {\n return name.toLowerCase().replaceAll(\"-\", \"\");\n}\n\n/**\n * The registered name a command path addresses, however it was typed.\n *\n * Schemas are registered under dotted camelCase names (`tagManager.read`), while\n * the command line — and every message the CLI prints about a command — spells\n * the same path with spaces and kebab-case (`tag-manager read`). Both forms must\n * resolve, or the CLI's own advice to run `baker schema <command>` is a dead end.\n */\nexport function resolveSchemaName(words: string[], names: string[]): string | undefined {\n const joined = words.join(\".\");\n if (names.includes(joined)) {\n return joined;\n }\n const matches = names.filter((name) => spellingKey(name) === spellingKey(joined));\n return matches.length === 1 ? matches[0] : undefined;\n}\n\n/** The schema of the command path, typed with spaces or dots. */\nexport function findSchema(words: string[]): CommandSchema | undefined {\n const name = resolveSchemaName(words, listSchemas());\n return name === undefined ? undefined : registry.get(name);\n}\n","/**\n * Refusing a flag the command never declared.\n *\n * citty drops an unrecognised `--flag` silently, which is the worst possible\n * behaviour for this CLI's caller. An agent asked `ga4 query` for one event with\n * `--dimension-filter`, got the unfiltered totals back, and had no way to tell\n * them apart from filtered ones — five identical tables that looked like five\n * different events. A command that answers a question nobody asked is worse than\n * one that fails, because only the failure is visible.\n *\n * Everything here fails *open*: anything this module cannot introspect with\n * certainty is treated as accepted. A guard that blocks a valid command is a\n * worse bug than the one it exists to catch.\n */\n\nimport { stripVTControlCharacters } from \"node:util\";\nimport { type ArgsDef, parseArgs } from \"citty\";\nimport { quote } from \"shell-quote\";\nimport { findSchema, spellingKey } from \"./schemas.ts\";\n\n/**\n * All this module reads of a command. Deliberately not citty's `CommandDef`:\n * that type is generic over the command's own args and invariant in it, so every\n * real command is a *different* `CommandDef<…>` and none of them is assignable to\n * the bare one. Naming the two fields actually inspected accepts all of them and\n * says what the module depends on.\n */\nexport type IntrospectableCommand = {\n // `unknown` rather than a record because citty allows both to be declared\n // lazily — a function or a promise — and both are narrowed at runtime below.\n readonly args?: unknown;\n readonly subCommands?: unknown;\n /** Read only to tell a group that runs without a subcommand from one that needs it. */\n readonly run?: unknown;\n readonly default?: unknown;\n};\n\n/** Handled by citty itself on every command, so never declared in `args`. */\nconst ALWAYS_ACCEPTED = new Set([\"help\", \"h\", \"version\"]);\n\n/**\n * Subcommands can be declared lazily (a function or a promise). None are today,\n * and resolving one would make this async for every caller — so an unresolvable\n * branch stops the walk and the command is treated as accepting anything.\n */\nfunction subCommandsOf(command: IntrospectableCommand): Record<string, unknown> | null {\n const sub = command.subCommands;\n return sub && typeof sub === \"object\" ? (sub as Record<string, unknown>) : null;\n}\n\nfunction argsOf(command: IntrospectableCommand): Record<string, unknown> | null {\n const args = command.args;\n return args && typeof args === \"object\" ? (args as Record<string, unknown>) : null;\n}\n\n/**\n * The command `argv` actually addresses, plus whether the walk completed. A walk\n * that stopped early (a lazy subcommand, an unknown name) yields `resolved:\n * false` and no flag is judged — the command it would have reached is the only\n * thing that knows which flags are its own.\n */\nfunction resolveCommand(\n root: IntrospectableCommand,\n argv: string[],\n): { command: IntrospectableCommand; resolved: boolean } {\n let command = root;\n for (const token of argv) {\n if (token === \"--\" || token.startsWith(\"-\")) {\n break;\n }\n const subCommands = subCommandsOf(command);\n if (!subCommands) {\n break;\n }\n const next = subCommands[token];\n if (next === undefined) {\n // A positional argument, not a subcommand name — the walk is over and this\n // command is the one whose flags apply.\n break;\n }\n if (typeof next !== \"object\") {\n return { command, resolved: false };\n }\n command = next as IntrospectableCommand;\n }\n return { command, resolved: true };\n}\n\nfunction typeOf(def: unknown): string | undefined {\n return def && typeof def === \"object\" ? (def as { type?: string }).type : undefined;\n}\n\n/**\n * Every flag name this command answers to. Declared options, plus the `--no-x`\n * form citty synthesises for a boolean `x`.\n *\n * Positionals are excluded, and that exclusion is the point rather than a\n * detail. citty takes them by position only, so `winning-ads search --query\n * shoes` does not set the query — it is dropped, and the command runs an\n * unfiltered search that looks exactly like a filtered one. Accepting the name\n * because it appears in `args` would wave through the precise failure this\n * module exists to stop.\n */\nfunction acceptedNames(command: IntrospectableCommand): Set<string> | null {\n const args = argsOf(command);\n if (!args) {\n return null;\n }\n const names = new Set<string>(ALWAYS_ACCEPTED);\n for (const [name, def] of Object.entries(args)) {\n if (typeOf(def) === \"positional\") {\n continue;\n }\n // citty normalises between the two spellings, so an arg declared `runId`\n // answers to `--run-id` too. Judging only the declared one refuses a form the\n // command accepts — a guard rejecting a working call, which is the one\n // failure this module is not allowed to have. It also sent someone to\n // \"correct\" a doc that had been right all along.\n for (const spelling of [name, kebab(name), camel(name)]) {\n names.add(spelling);\n if (typeOf(def) === \"boolean\") {\n names.add(`no-${spelling}`);\n }\n }\n }\n return names;\n}\n\nfunction kebab(name: string): string {\n return name.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction camel(name: string): string {\n return name.replace(/-([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * Flags in `argv` that the addressed command does not declare, in the form the\n * caller typed them (`--dimension-filter`), so the message can quote it back.\n *\n * Returns empty whenever the answer is not certain: a command with no `args` at\n * all is a parent whose real flags live on a subcommand, and judging it would\n * reject the working call `ads meta pixels --stats`.\n */\nexport function findUnknownFlags(root: IntrospectableCommand, argv: string[]): string[] {\n const { command, resolved } = resolveCommand(root, argv);\n if (!resolved) {\n return [];\n }\n const accepted = acceptedNames(command);\n if (!accepted) {\n return [];\n }\n const unknown: string[] = [];\n for (const token of argv) {\n // Everything after `--` is the caller's own payload, not ours to read.\n if (token === \"--\") {\n break;\n }\n if (!token.startsWith(\"--\")) {\n continue;\n }\n const name = token.slice(2).split(\"=\")[0] ?? \"\";\n if (name.length > 0 && !accepted.has(name) && !unknown.includes(token)) {\n unknown.push(token);\n }\n }\n return unknown;\n}\n\n/**\n * Flags an agent invents for an idea the command spells another way, each with\n * the spellings that mean the same, best first. Spelling cannot find these, and\n * worse, it finds a neighbour that means something else: `analytics releases\n * --path` was sent to `--page`, a page NUMBER, and the next call failed on it.\n * Only a candidate the command declares is ever offered, and never `--from` or\n * `--to`: on some commands those are dates, on others an event source or a new\n * name, so a date word is sent only to a flag whose name says it is a date.\n */\nconst SYNONYMS: Readonly<Record<string, readonly string[]>> = {\n from: [\"start-date\", \"start\", \"since\"],\n since: [\"start-date\", \"start\"],\n start: [\"start-date\", \"since\"],\n to: [\"end-date\", \"end\", \"until\"],\n until: [\"end-date\", \"end\"],\n end: [\"end-date\", \"until\"],\n path: [\"landing\"],\n url: [\"landing\"],\n};\n\n/**\n * The declared flag an unknown one was most likely reaching for, or null when\n * nothing is close enough to be worth saying.\n *\n * Shared prefix carries more weight than edit distance, because these misses are\n * plausible inventions rather than typos: `--dimension-filter` is nine characters\n * of agreement with `--dimensions` and seven of disagreement, so distance alone\n * scores it as unrelated and stays silent exactly when the answer is obvious.\n */\nexport function closestFlag(unknown: string, command: IntrospectableCommand): string | null {\n const accepted = acceptedNames(command);\n if (!accepted) {\n return null;\n }\n const name = unknown.replace(/^--/, \"\").split(\"=\")[0] ?? \"\";\n const synonym = SYNONYMS[name]?.find((candidate) => accepted.has(candidate));\n if (synonym) {\n return `--${synonym}`;\n }\n const scored = [...accepted]\n .filter((candidate) => !ALWAYS_ACCEPTED.has(candidate))\n .map((candidate) => ({\n candidate,\n prefix: sharedPrefix(name, candidate),\n distance: editDistance(name, candidate),\n }))\n .filter(({ prefix, distance }) => prefix >= 4 || distance <= typoBudget(name))\n .sort((a, b) => b.prefix - a.prefix || a.distance - b.distance);\n return scored[0] ? `--${scored[0].candidate}` : null;\n}\n\n/**\n * How many edits still read as a typo of `name` rather than another word. A flat\n * three let `--from` reach `--full` and `--path` reach `--page`: on four letters,\n * two or three edits leave a different word, and the agent followed it into a\n * flag that meant something else. A third of the length still reaches\n * `--dimensions` from `--dimenions` and drops those.\n */\nfunction typoBudget(name: string): number {\n return Math.max(1, Math.floor(name.length / 3));\n}\n\nfunction sharedPrefix(a: string, b: string): number {\n let i = 0;\n while (i < a.length && i < b.length && a[i] === b[i]) {\n i++;\n }\n return i;\n}\n\nfunction editDistance(a: string, b: string): number {\n let previous = Array.from({ length: b.length + 1 }, (_, j) => j);\n for (let i = 1; i <= a.length; i++) {\n const current = [i];\n for (let j = 1; j <= b.length; j++) {\n const substitution = (previous[j - 1] ?? 0) + (a[i - 1] === b[j - 1] ? 0 : 1);\n current.push(Math.min((previous[j] ?? 0) + 1, (current[j - 1] ?? 0) + 1, substitution));\n }\n previous = current;\n }\n return previous[b.length] ?? 0;\n}\n\n/** The command `argv` addresses, for a caller that needs it to build a suggestion. */\nexport function commandFor(root: IntrospectableCommand, argv: string[]): IntrospectableCommand | null {\n const { command, resolved } = resolveCommand(root, argv);\n return resolved ? command : null;\n}\n\n/** A flag to offer instead, with what the command says it takes. */\nexport type FlagSuggestion = { flag: string; description?: string };\n\n/**\n * The flag an unknown one was reaching for, with the first sentence of its own\n * description: `--path` is sent to `--landing`, which takes an internalId, and\n * the name alone invites `--landing /pricing`.\n */\nexport function suggestFlag(unknown: string, command: IntrospectableCommand): FlagSuggestion | null {\n const flag = closestFlag(unknown, command);\n if (!flag) {\n return null;\n }\n const args = argsOf(command) ?? {};\n const name = flag.slice(2);\n const def = args[name] ?? args[camel(name)];\n const described = def && typeof def === \"object\" ? (def as { description?: unknown }).description : undefined;\n const description =\n typeof described === \"string\"\n ? described\n .split(/(?<!\\b(?:e\\.g|i\\.e|vs))\\.\\s/)[0]\n ?.trim()\n .replace(/\\.$/, \"\")\n : \"\";\n return description ? { flag, description } : { flag };\n}\n\nfunction suggestionText(suggestion: FlagSuggestion | null): string {\n if (!suggestion) {\n return \"\";\n }\n return suggestion.description\n ? `Did you mean ${suggestion.flag}? It is described as: ${suggestion.description}. `\n : `Did you mean ${suggestion.flag}? `;\n}\n\n/**\n * Said when `--output` is refused. Any command that prints the JSON envelope\n * takes `--output json` (`output-flag.ts`), so the refusal is either another\n * format on a command without that view, or one of the few that print text.\n */\nconst OUTPUT_EXPLANATION =\n \"This command has no --output option: `--output json` is accepted by every command that prints the JSON \" +\n \"envelope, and md or files only where `baker schema` lists `output`. Drop the option and read the default output. \";\n\n/**\n * The refusal itself, as the envelope every other failure uses.\n *\n * `fix` tells the agent to re-read the schema rather than retry the same call:\n * the flag it invented is usually a capability it assumed, and the useful next\n * move is finding out what the command really offers — sometimes another flag,\n * sometimes a different shape of query entirely. Only a command that registers a\n * schema is sent to `baker schema`; the rest are sent to `--help`, because advice\n * that ends in NOT_FOUND costs the agent a call and teaches it nothing.\n */\nexport function unknownFlagEnvelope(\n unknown: string[],\n commandPath: string,\n suggestion: FlagSuggestion | null,\n hasSchema: boolean,\n) {\n const list = unknown.join(\", \");\n return {\n ok: false as const,\n error: {\n code: \"UNKNOWN_ARGUMENT\",\n message: `${list} ${unknown.length > 1 ? \"are not options\" : \"is not an option\"} of \\`baker ${commandPath}\\`.`,\n fix: {\n action: hasSchema ? \"check_schema\" : \"check_help\",\n explanation:\n (unknown.some((flag) => flag === \"--output\" || flag.startsWith(\"--output=\")) ? OUTPUT_EXPLANATION : \"\") +\n suggestionText(suggestion) +\n `Run \\`${hasSchema ? `baker schema ${commandPath}` : `baker ${commandPath} --help`}\\` to see every ` +\n `option this command takes. Do not re-run the same ` +\n `call: until this version an unrecognised option was accepted and ignored, so a command that looked ` +\n `like it had filtered or narrowed the result was in fact answering the unfiltered question.`,\n },\n retryable: false,\n },\n };\n}\n\n/** The subcommand path the caller addressed (`ga4 query`), for the message. */\nexport function commandPathOf(root: IntrospectableCommand, argv: string[]): string {\n const path: string[] = [];\n let command = root;\n for (const token of argv) {\n if (token === \"--\" || token.startsWith(\"-\")) {\n break;\n }\n const subCommands = subCommandsOf(command);\n const next = subCommands?.[token];\n if (next === undefined || typeof next !== \"object\") {\n break;\n }\n path.push(token);\n command = next as IntrospectableCommand;\n }\n return path.join(\" \");\n}\n\n/**\n * Stop before the command runs when it was handed an option it does not have.\n *\n * Deliberately at the entry point rather than inside each command: the fault is\n * in the parse, so by the time any `run` is reached the flag is already gone and\n * there is nothing left to notice.\n */\nexport function refuseUnknownFlags(root: IntrospectableCommand, argv: string[], typed: string[] = argv): void {\n const refusal = unknownFlagRefusal(root, argv, typed);\n if (!refusal) {\n return;\n }\n // Written here rather than through a command's output helper: this runs before\n // any command is resolved, so it cannot depend on one of them for the envelope\n // every command shares.\n process.stdout.write(`${JSON.stringify(refusal, null, 2)}\\n`);\n process.exit(1);\n}\n\n/**\n * The refusal of `argv` for the options its command does not declare, or null\n * when it declares them all. `typed` is the call as the caller wrote it, before\n * `cli.ts` took `--company`, `--fields` and the like off: a corrected call is\n * built from it, so re-running it changes nothing but the one argument.\n */\nexport function unknownFlagRefusal(root: IntrospectableCommand, argv: string[], typed: string[] = argv) {\n const unknown = findUnknownFlags(root, argv);\n if (unknown.length === 0) {\n return null;\n }\n const command = commandFor(root, argv);\n const first = unknown[0];\n const suggestion = command && first ? suggestFlag(first, command) : null;\n const path = commandPathOf(root, argv);\n const envelope = unknownFlagEnvelope(unknown, path, suggestion, findSchema(path.split(\" \")) !== undefined);\n if (!command || !first) {\n return envelope;\n }\n const positional = positionalNamed(first, command);\n if (!positional) {\n return envelope;\n }\n const correctedCommand =\n unknown.length === 1 ? positionalCall(command, path, argv, typed, root, first, positional) : null;\n return {\n ...envelope,\n error: {\n ...envelope.error,\n fix: {\n action: \"use_positional\" as const,\n explanation:\n `\\`${first.split(\"=\")[0]}\\` is not an option: \\`${positional.name}\\` is a positional argument of \\`baker ${path}\\`, ` +\n `so write its value bare, with no flag${positional.index === 0 ? \", right after the command\" : \"\"}.`,\n ...(correctedCommand ? { correctedCommand } : {}),\n usage: usageLine(path, usageArgsOf(command)),\n validOptions: optionsOf(command),\n },\n },\n };\n}\n\n/** One argument as a call writes it: bare or behind a flag, needed or not. */\nexport type UsageArg = { name: string; positional: boolean; required: boolean; boolean: boolean };\n\n/** The command's arguments by citty's own rules: a positional is required unless it says otherwise or has a default, an option only when it says so. */\nexport function usageArgsOf(command: IntrospectableCommand): (UsageArg & { description: string })[] {\n return Object.entries(argsOf(command) ?? {}).map(([name, def]) => {\n const {\n required,\n default: fallback,\n description,\n } = (def ?? {}) as { required?: unknown; default?: unknown; description?: unknown };\n const positional = typeOf(def) === \"positional\";\n return {\n name,\n positional,\n required: positional ? required !== false && fallback === undefined : required === true,\n boolean: typeOf(def) === \"boolean\",\n description: typeof description === \"string\" ? description : \"\",\n };\n });\n}\n\n/** The options the command declares, as typed on the command line. */\nfunction optionsOf(command: IntrospectableCommand): string[] {\n return usageArgsOf(command)\n .filter((arg) => !arg.positional)\n .map((arg) => `--${kebab(arg.name)}`);\n}\n\n/**\n * How a call is written: the positionals in the order citty fills them\n * (`<id>` required, `[id]` optional), then the required options, then\n * `[options]` when there are others — the one line that says which values go\n * bare and which take a flag.\n */\nexport function usageLine(path: string, args: readonly UsageArg[]): string {\n const positionals = args\n .filter((arg) => arg.positional)\n .map((arg) => (arg.required ? `<${arg.name}>` : `[${arg.name}]`));\n const options = args.filter((arg) => !arg.positional);\n const required = options\n .filter((arg) => arg.required)\n .map((arg) => (arg.boolean ? `--${kebab(arg.name)}` : `--${kebab(arg.name)} <${kebab(arg.name)}>`));\n const more = options.length > required.length ? [\"[options]\"] : [];\n return [\"baker\", path, ...positionals, ...required, ...more].filter((part) => part !== \"\").join(\" \");\n}\n\n/** The positionals the command declares, in the order citty fills them. */\nfunction positionalsOf(command: IntrospectableCommand): string[] {\n return Object.entries(argsOf(command) ?? {})\n .filter(([, def]) => typeOf(def) === \"positional\")\n .map(([name]) => name);\n}\n\n/**\n * The positional an unknown option names (`--id` on a command whose `<id>` is\n * positional), or null. citty drops `--id x` without a word, so the guard\n * refuses it; the refusal can say exactly what was meant, since the command\n * itself declares the name.\n */\nfunction positionalNamed(flag: string, command: IntrospectableCommand): { name: string; index: number } | null {\n const key = spellingKey(flag.replace(/^--/, \"\").split(\"=\")[0] ?? \"\");\n const positionals = positionalsOf(command);\n const index = positionals.findIndex((name) => spellingKey(name) === key);\n const name = positionals[index];\n return name === undefined ? null : { name, index };\n}\n\n/**\n * `argv` with the option's value moved to where citty reads the positional, as\n * one shell line — or null when that place is not certain: a later positional,\n * one already given, or an option with no value.\n */\nfunction positionalCall(\n command: IntrospectableCommand,\n path: string,\n argv: string[],\n typed: string[],\n root: IntrospectableCommand,\n flag: string,\n positional: { index: number },\n): string | null {\n const judged = withoutOption(argv, path, flag);\n const written = withoutOption(typed, path, flag);\n if (positional.index !== 0 || !judged || !written || commandPathOf(root, typed) !== path) {\n return null;\n }\n try {\n // Counted on the call the guard judged: the options taken off before it are not this command's to parse.\n // The positional being corrected is missing from it by construction, so none is held required here.\n if (parseArgs(judged.others, positionalsOptional(command))._.length > 0) {\n return null;\n }\n } catch {\n return null;\n }\n // A value starting with `-` would be read as short options, so it goes after `--`, where citty reads it as the positional.\n const words = written.value.startsWith(\"-\")\n ? [...written.others, \"--\", written.value]\n : [written.value, ...written.others];\n return `baker ${path} ${words.map(shellWord).join(\" \")}`;\n}\n\n/**\n * shell-quote double-quotes a word holding a `'` and writes its `!` as `\\!`, which the shell keeps\n * inside double quotes (GAQL's `!= 'REMOVED'` would arrive as `\\!=`), so such a word is single-quoted instead.\n */\nfunction shellWord(word: string): string {\n if (word.includes(\"'\") && word.includes(\"!\")) {\n return `'${word.replaceAll(\"'\", `'\\\\''`)}'`;\n }\n return quote([word]);\n}\n\n/** The command's arguments with every positional optional, to count the ones a call gives without demanding any. */\nfunction positionalsOptional(command: IntrospectableCommand): ArgsDef {\n return Object.fromEntries(\n Object.entries(argsOf(command) ?? {}).map(([name, def]) => [\n name,\n typeOf(def) === \"positional\" ? { ...(def as object), required: false } : def,\n ]),\n ) as ArgsDef;\n}\n\n/** The words after the command with the option and its value taken out, and that value — or null when it has none. */\nfunction withoutOption(argv: string[], path: string, flag: string): { value: string; others: string[] } | null {\n const rest = argv.slice(path === \"\" ? 0 : path.split(\" \").length);\n const at = rest.indexOf(flag);\n const inline = flag.includes(\"=\");\n const value = inline ? flag.slice(flag.indexOf(\"=\") + 1) : rest[at + 1];\n if (at < 0 || value === undefined || value === \"\" || (!inline && value.startsWith(\"-\"))) {\n return null;\n }\n return { value, others: [...rest.slice(0, at), ...rest.slice(at + (inline ? 1 : 2))] };\n}\n\n/**\n * Where to send an agent whose call was refused before it ran: the command's\n * schema when it registers one, else its `--help` — never to a schema that\n * answers NOT_FOUND.\n */\nfunction lookItUp(commandPath: string): { action: \"check_schema\" | \"check_help\"; how: string } {\n const hasSchema = commandPath !== \"\" && findSchema(commandPath.split(\" \")) !== undefined;\n return hasSchema\n ? { action: \"check_schema\", how: `Run \\`baker schema ${commandPath}\\` to see every argument it takes.` }\n : {\n action: \"check_help\",\n how: `Run \\`baker${commandPath ? ` ${commandPath}` : \"\"} --help\\` to see every argument it takes.`,\n };\n}\n\nfunction invalidArgsEnvelope(message: string, commandPath: string, explanation = \"\") {\n const { action, how } = lookItUp(commandPath);\n return {\n ok: false as const,\n error: {\n code: \"INVALID_ARGS\",\n message,\n fix: { action, explanation: `${explanation}${how}` },\n retryable: false,\n },\n };\n}\n\nfunction subCommandNames(command: IntrospectableCommand): string[] {\n return Object.keys(subCommandsOf(command) ?? {});\n}\n\n/**\n * The subcommand of `parent` a mistyped name was reaching for, or null when none\n * is close. Two edits at least: a swapped pair (`chioces`) is two, and the names\n * are a short closed list, so a near one is the one meant.\n */\nfunction closestSubCommand(name: string, parent: IntrospectableCommand): string | null {\n const scored = subCommandNames(parent)\n .map((candidate) => ({ candidate, distance: editDistance(name, candidate) }))\n .filter(({ distance }) => distance <= Math.max(2, typoBudget(name)))\n .sort((a, b) => a.distance - b.distance);\n return scored[0]?.candidate ?? null;\n}\n\n/** citty's own refusal: an Error named `CLIError` with one of these codes. */\nconst CITTY_REFUSALS = new Set([\"EARG\", \"E_UNKNOWN_COMMAND\", \"E_NO_COMMAND\"]);\n\nfunction cittyRefusalCode(error: unknown): string | null {\n if (!(error instanceof Error) || error.name !== \"CLIError\") {\n return null;\n }\n const code = (error as { code?: unknown }).code;\n return typeof code === \"string\" && CITTY_REFUSALS.has(code) ? code : null;\n}\n\n/**\n * The first word after the command path that is not a flag or a flag's value:\n * the name citty did not know. Parsed against the command's own flags, as citty\n * does, so a value of one it declares (`--platforms meta`) is not taken for it.\n */\nfunction firstUnknownWord(argv: string[], pathLength: number, command: IntrospectableCommand): string | undefined {\n const rest = argv.slice(pathLength);\n try {\n return parseArgs(rest, (argsOf(command) ?? {}) as ArgsDef)._[0];\n } catch {\n return rest.find((token) => !token.startsWith(\"-\"));\n }\n}\n\n/**\n * citty's refusal of a call it could not parse — a missing required argument,\n * an unknown subcommand, a parent called with none — as the envelope every\n * other failure uses, or null for any other error.\n *\n * citty itself prints its usage text on stderr and exits 1 with nothing on\n * stdout, so the agent's parse of the envelope failed on an empty string and it\n * never learned what was missing.\n */\nexport function parseRefusalEnvelope(error: unknown, root: IntrospectableCommand, argv: string[]) {\n const code = cittyRefusalCode(error);\n if (code === null || !(error instanceof Error)) {\n return null;\n }\n const path = commandPathOf(root, argv);\n const command = commandFor(root, argv) ?? root;\n const where = `\\`baker${path ? ` ${path}` : \"\"}\\``;\n if (code === \"E_UNKNOWN_COMMAND\") {\n const word = firstUnknownWord(argv, path === \"\" ? 0 : path.split(\" \").length, command) ?? \"\";\n const closest = closestSubCommand(word, command);\n return invalidArgsEnvelope(\n `\\`${word}\\` is not a command of ${where}. Its commands: ${subCommandNames(command).join(\", \")}.`,\n path,\n closest ? `Did you mean \\`baker${path ? ` ${path}` : \"\"} ${closest}\\`? ` : \"\",\n );\n }\n if (code === \"E_NO_COMMAND\") {\n return invalidArgsEnvelope(`${where} needs a command: one of ${subCommandNames(command).join(\", \")}.`, path);\n }\n return invalidArgsEnvelope(missingArgMessage(error.message, where), path);\n}\n\n/** citty's \"Missing required …\" as the argument the way it is typed (`<id>`, `--dimension`). */\nfunction missingArgMessage(cittyMessage: string, where: string): string {\n // citty colours the names it quotes.\n const plain = stripVTControlCharacters(cittyMessage);\n const positional = /^Missing required positional argument: (\\S+)/.exec(plain)?.[1];\n const missing = positional ? `<${positional.toLowerCase()}>` : /^Missing required argument: (--\\S+)/.exec(plain)?.[1];\n return missing ? `${missing} is required by ${where}.` : `${plain.replace(/\\.$/, \"\")} (${where}).`;\n}\n\n/**\n * Commands whose own code reads the positionals (`args._`): a list of targets,\n * a target where no positional is declared, a value refused with its own\n * message (`credentials`, which must never echo it). Each entry is a command\n * path or a whole family. Every other command takes exactly the positionals it\n * declares. `unknown-flags.test.ts` fails when a file starts reading\n * positionals without being looked at here.\n */\nconst READS_ITS_OWN_POSITIONALS: readonly string[] = [\n \"schema\",\n \"actions status\",\n \"credentials\",\n \"images download\",\n ...[\"get\", \"ingest\", \"use\", \"delete\"].map((name) => `images ${name}`),\n \"videos get\",\n \"videos ingest\",\n \"testimonials get\",\n \"landing critique\",\n \"ads performance families choices\",\n \"ads google\",\n \"ads meta\",\n \"ads linkedin\",\n \"ads x\",\n \"ads chatgpt\",\n ...[\n \"key-event\",\n \"custom-dimension\",\n \"custom-metric\",\n \"custom-event\",\n \"data-retention\",\n \"audience\",\n \"property\",\n \"ads-link\",\n \"enhanced-measurement\",\n \"draft\",\n ].map((name) => `ga4 ${name}`),\n ...[\"tag\", \"trigger\", \"variable\", \"folder\", \"builtin\", \"draft\"].map((name) => `tag-manager ${name}`),\n ...[\"product\", \"promotions\", \"change\", \"draft\", \"changes\", \"undo\"].map((name) => `shopify ${name}`),\n];\n\nfunction readsItsOwnPositionals(commandPath: string): boolean {\n return READS_ITS_OWN_POSITIONALS.some((entry) => commandPath === entry || commandPath.startsWith(`${entry} `));\n}\n\n/**\n * Words after the command that no positional it declares takes, as typed.\n * citty keeps them in `args._` and nothing reads them, so `pacing 2026-09`\n * answered the current month and `--full false` set the flag to TRUE: a read\n * that looks like the one asked and is not.\n *\n * Fails open like the rest of this module: nothing is judged on a parent (citty\n * names an unknown subcommand itself), after `--`, on a command that reads its\n * own positionals, or when the arguments cannot be parsed (a missing required\n * one, which citty refuses on its own).\n */\nexport function findStrayPositionals(root: IntrospectableCommand, argv: string[]): string[] {\n const { command, resolved } = resolveCommand(root, argv);\n const args = argsOf(command) ?? {};\n const path = commandPathOf(root, argv);\n if (!resolved || subCommandsOf(command) || argv.includes(\"--\") || readsItsOwnPositionals(path)) {\n return [];\n }\n const rest = argv.slice(path === \"\" ? 0 : path.split(\" \").length);\n let positionals: string[];\n try {\n positionals = parseArgs(rest, args as ArgsDef)._;\n } catch {\n return [];\n }\n const declared = Object.values(args).filter((def) => typeOf(def) === \"positional\").length;\n return positionals.slice(declared);\n}\n\nconst BOOLEAN_WORD = /^(true|false)$/i;\n\n/** Stop before the command runs when it was handed words it would silently drop. */\nexport function refuseStrayPositionals(root: IntrospectableCommand, argv: string[]): void {\n const stray = findStrayPositionals(root, argv);\n if (stray.length === 0) {\n return;\n }\n const path = commandPathOf(root, argv);\n const declared = Object.entries(argsOf(commandFor(root, argv) ?? root) ?? {})\n .filter(([, def]) => typeOf(def) === \"positional\")\n .map(([name]) => `<${name}>`);\n const takes = declared.length === 0 ? \"takes no positional argument\" : `takes only ${declared.join(\" \")}`;\n const booleanWord = stray.some((word) => BOOLEAN_WORD.test(word))\n ? \"A boolean flag written with a space is set to TRUE and the word is dropped: attach it instead (--flag=false), or use --no-flag. \"\n : \"\";\n process.stdout.write(\n `${JSON.stringify(\n invalidArgsEnvelope(\n `${stray.map((word) => `\\`${word}\\``).join(\", \")}: \\`baker ${path}\\` ${takes}, so ${stray.length > 1 ? \"these were\" : \"this was\"} not read.`,\n path,\n `${booleanWord}Pass each value with the flag it belongs to (\\`--name value\\`), or drop it. `,\n ),\n null,\n 2,\n )}\\n`,\n );\n process.exit(1);\n}\n","/**\n * Reading and rewriting the JSON envelope a command has already printed.\n *\n * The flags every command answers to without declaring them (`--fields`,\n * `--full`) act on stdout, the one output layer every family writer shares.\n * Each writer prints its envelope in one `write` call, so each call is judged\n * whole; anything that is not an envelope passes through as it was written.\n */\n\n/** A printed text parsed as an envelope (`{ ok: boolean, … }`), or null when it is not one. */\nexport function parsePrintedEnvelope(text: string): Record<string, unknown> | null {\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n } catch {\n return null;\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return null;\n }\n return typeof (parsed as Record<string, unknown>).ok === \"boolean\" ? (parsed as Record<string, unknown>) : null;\n}\n\n/** The envelope re-printed with the indentation and trailing newline `text` came with. */\nexport function reprint(text: string, envelope: Record<string, unknown>): string {\n const indent = text.trimStart().startsWith(\"{\\n\") ? 2 : undefined;\n return `${JSON.stringify(envelope, null, indent)}${text.endsWith(\"\\n\") ? \"\\n\" : \"\"}`;\n}\n\nexport function withHint(envelope: Record<string, unknown>, hint: string): Record<string, unknown> {\n return { ...envelope, hints: [...(Array.isArray(envelope.hints) ? envelope.hints : []), hint] };\n}\n\n/** The one method of a stream a rewrite replaces — `process.stdout` in the CLI. */\nexport type WriteTarget = { write(chunk: string | Uint8Array, ...rest: never[]): boolean };\n\n/**\n * Rewrite every text written to `stream` from now on. `rewrite` returns the\n * text to write instead, or null to let the chunk through untouched.\n * `sawEnvelope()` says whether any chunk was rewritten, so the caller can tell\n * the agent when the command printed nothing its flag could act on.\n */\nexport function rewriteWrites(\n stream: WriteTarget,\n rewrite: (text: string) => string | null,\n): { sawEnvelope: () => boolean } {\n let applied = false;\n const write = stream.write.bind(stream);\n stream.write = (chunk: string | Uint8Array, ...rest: never[]): boolean => {\n const rewritten = typeof chunk === \"string\" ? rewrite(chunk) : null;\n if (rewritten === null) {\n return write(chunk, ...rest);\n }\n applied = true;\n return write(rewritten, ...rest);\n };\n return { sawEnvelope: () => applied };\n}\n","/**\n * `--output json` on every command.\n *\n * About a third of the commands declare `--output` (the ads, analytics-report,\n * library and research families); the rest print the JSON envelope and declare\n * nothing. An agent that has just used `--output json` on `ads meta` carries it\n * to `chats list`, and since unknown options are refused rather than dropped\n * (`unknown-flags.ts`) the call failed on a flag that asked for exactly what the\n * command was about to print. Four Sessions lost a call and a retry to it.\n *\n * So `json` — and only `json` — is taken on a command that did not declare the\n * option: it is dropped where the envelope is already the output, and handed to\n * the command's own `--json` switch where a readable view is the default. `md`\n * and `files` still need a renderer the command owns, so they are left for the\n * guard to refuse, which names this rule in its fix.\n */\n\nimport { parsePrintedEnvelope, type WriteTarget } from \"./printed-envelope.ts\";\nimport { commandFor, commandPathOf, type IntrospectableCommand } from \"./unknown-flags.ts\";\n\nconst FLAG = \"--output\";\nconst ENVELOPE = \"json\";\n\n/**\n * Commands whose stdout is neither the envelope nor switchable to it: a progress\n * line, or a Markdown brief. Accepting `--output json` there would promise a\n * shape they never print, so the guard keeps refusing it.\n */\nexport const PRINTS_NO_ENVELOPE: ReadonlySet<string> = new Set([\"analytics sending-events\", \"canvas sync-definition\"]);\n\n/**\n * Commands that print progress lines while they work and their envelope last.\n * `--output json` is taken there and moves the progress to stderr, so stdout is\n * the envelope alone — the agent that asked for it parsed the whole stdout and\n * fell back to `rfind('\\n{\\n')` (BAKER-1412, BAKER-1800). Their result sits\n * beside `ok` rather than under `data`, so `--fields` and `--full` have nothing\n * to act on and stay refused.\n */\nexport const PRINTS_PROGRESS_BEFORE_ENVELOPE: ReadonlySet<string> = new Set([\"canvas run\", \"canvas rerun\"]);\n\n/**\n * Commands that declare `--output` for something other than a format: on\n * `creatives publish` it names the cover size. They print the envelope, so\n * `--output json` is the envelope request there too and is taken off before\n * the command reads its own option; citty keeps a repeated option's last value,\n * so `--output 4:5 --output json` asked for a cover named \"json\" (BAKER-1800).\n */\nconst OUTPUT_IS_NOT_A_FORMAT: ReadonlySet<string> = new Set([\"creatives publish\"]);\n\n/** Whether `--fields` and `--full` can act on what the command at `commandPath` prints. */\nexport function printsDataEnvelope(commandPath: string): boolean {\n return !PRINTS_NO_ENVELOPE.has(commandPath) && !PRINTS_PROGRESS_BEFORE_ENVELOPE.has(commandPath);\n}\n\nexport function declaredArg(command: IntrospectableCommand, name: string): { type?: string } | null {\n const args = command.args;\n if (!args || typeof args !== \"object\" || !(name in args)) {\n return null;\n }\n const def = (args as Record<string, unknown>)[name];\n return def && typeof def === \"object\" ? (def as { type?: string }) : {};\n}\n\n/** Index and token count of each `--output json` before `--`. */\nfunction envelopeRequests(argv: string[]): Array<{ index: number; length: 1 | 2 }> {\n const end = argv.indexOf(\"--\");\n const limit = end === -1 ? argv.length : end;\n const found: Array<{ index: number; length: 1 | 2 }> = [];\n for (let index = 0; index < limit; index++) {\n const token = argv[index];\n if (token === `${FLAG}=${ENVELOPE}`) {\n found.push({ index, length: 1 });\n } else if (token === FLAG && argv[index + 1] === ENVELOPE && index + 1 < limit) {\n found.push({ index, length: 2 });\n index++;\n }\n }\n return found;\n}\n\n/**\n * `argv` with `--output json` translated for the command it addresses, before\n * the unknown-option guard reads it. A command that declares `--output` as a format gets\n * the flag untouched; one that cannot print the envelope is left to be refused.\n */\nexport function outputFlagForCommand(root: IntrospectableCommand, argv: string[]): string[] {\n const requests = envelopeRequests(argv);\n if (requests.length === 0) {\n return argv;\n }\n const command = commandFor(root, argv);\n if (!command) {\n return argv;\n }\n const path = commandPathOf(root, argv);\n const ownFormat = declaredArg(command, \"output\") !== null && !OUTPUT_IS_NOT_A_FORMAT.has(path);\n if (ownFormat || PRINTS_NO_ENVELOPE.has(path)) {\n return argv;\n }\n const jsonSwitch = declaredArg(command, \"json\")?.type === \"boolean\";\n const dropped = new Set(requests.flatMap(({ index, length }) => (length === 2 ? [index, index + 1] : [index])));\n const first = requests[0]?.index;\n return argv.flatMap((token, index) => {\n if (!dropped.has(index)) {\n return [token];\n }\n return jsonSwitch && index === first ? [\"--json\"] : [];\n });\n}\n\n/**\n * Whether `argv` asks a command that prints progress before its envelope for\n * the envelope alone. Read before `outputFlagForCommand` takes the flag off.\n */\nexport function asksForEnvelopeAlone(root: IntrospectableCommand, argv: string[]): boolean {\n return envelopeRequests(argv).length > 0 && PRINTS_PROGRESS_BEFORE_ENVELOPE.has(commandPathOf(root, argv));\n}\n\n/**\n * From now on, every envelope — success or failure, whichever stream the\n * command wrote it to — goes to `stdout`, and every other line to `stderr`.\n * Each envelope is printed in one `write` call, so each call is judged whole.\n */\nexport function envelopeAloneOnStdout(stdout: WriteTarget, stderr: WriteTarget): void {\n const toStdout = stdout.write.bind(stdout);\n const toStderr = stderr.write.bind(stderr);\n const route = (chunk: string | Uint8Array, ...rest: never[]): boolean =>\n typeof chunk === \"string\" && parsePrintedEnvelope(chunk) !== null\n ? toStdout(chunk, ...rest)\n : toStderr(chunk, ...rest);\n stdout.write = route;\n stderr.write = route;\n}\n","/**\n * `--fields a,b,c` on every command that prints the JSON envelope.\n *\n * The conventions doc has always presented `--fields` as the way to narrow a\n * read, but only the commands that declared it took it: two dozen image, video,\n * winning-ads and ads commands. Everywhere else the unknown-option guard\n * (`unknown-flags.ts`) refused it, and the agent — told by the doc to narrow in\n * the query rather than in a pipe — burned a call per command finding out\n * (BAKER-666: eight `experiment plan` calls in one Session; BAKER-182, -370,\n * -642 and more for other families).\n *\n * So a command that does not declare `--fields` gets it here, applied to what it\n * prints rather than to what it asks for: stdout is the one output layer every\n * command shares, whichever of the family writers built the envelope. A command\n * that declares `--fields` keeps its own meaning — on `ads meta insights` it is\n * which metrics Meta returns, not a mask — and one that prints no envelope at all is\n * left to the guard, as with `--output json` (`output-flag.ts`).\n */\n\nimport { declaredArg, printsDataEnvelope } from \"./output-flag.ts\";\nimport { parsePrintedEnvelope, reprint, rewriteWrites, type WriteTarget, withHint } from \"./printed-envelope.ts\";\nimport { commandFor, commandPathOf, type IntrospectableCommand } from \"./unknown-flags.ts\";\n\nconst FLAG = \"--fields\";\n\nfunction parseFields(value: string): string[] {\n return value\n .split(\",\")\n .map((field) => field.trim())\n .filter((field) => field.length > 0);\n}\n\n/**\n * `argv` without `--fields`, and the fields it asked for, when the addressed\n * command prints the envelope and does not declare the option itself. Otherwise\n * `argv` is returned untouched with `fields: null`, for the command or the guard\n * to judge.\n */\nexport function takeFieldsFlag(\n root: IntrospectableCommand,\n argv: string[],\n): { argv: string[]; fields: string[] | null } {\n const end = argv.indexOf(\"--\");\n const limit = end === -1 ? argv.length : end;\n const taken = new Set<number>();\n const fields: string[] = [];\n for (let index = 0; index < limit; index++) {\n const token = argv[index] ?? \"\";\n if (token.startsWith(`${FLAG}=`)) {\n taken.add(index);\n fields.push(...parseFields(token.slice(FLAG.length + 1)));\n } else if (token === FLAG) {\n const value = argv[index + 1];\n // A bare `--fields` names nothing to keep; the guard says so.\n if (value === undefined || index + 1 >= limit || value.startsWith(\"-\")) {\n return { argv, fields: null };\n }\n taken.add(index).add(index + 1);\n fields.push(...parseFields(value));\n index++;\n }\n }\n if (taken.size === 0 || fields.length === 0) {\n return { argv, fields: null };\n }\n const command = commandFor(root, argv);\n if (!command || declaredArg(command, \"fields\") || !printsDataEnvelope(commandPathOf(root, argv))) {\n return { argv, fields: null };\n }\n return { argv: argv.filter((_, index) => !taken.has(index)), fields };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction pick(record: Record<string, unknown>, fields: string[]): Record<string, unknown> {\n return Object.fromEntries(fields.filter((field) => field in record).map((field) => [field, record[field]]));\n}\n\n/**\n * The one non-empty list of records `data` holds (`chats list` prints\n * `{ chats: [...] }`), or null when it holds none or several. An empty list is\n * never it: `[]` is as much a record's `tags` as a wrapper's rows.\n */\nfunction soleList(data: Record<string, unknown>): [string, Record<string, unknown>[]] | null {\n const lists = Object.entries(data).filter(\n (entry): entry is [string, Record<string, unknown>[]] =>\n Array.isArray(entry[1]) && entry[1].length > 0 && entry[1].every((item) => isRecord(item)),\n );\n return lists.length === 1 ? (lists[0] ?? null) : null;\n}\n\n/**\n * The key of the list whose rows the fields address: the fields that are not\n * `data`'s own keys, when a row carries one of them. Otherwise null, and the\n * fields address `data` itself — a list a record merely holds\n * (`levels_not_read`) is not taken for rows no named field is on, or a miss\n * would come back as the whole record with that one list emptied.\n */\nfunction wrappedList(data: Record<string, unknown>, fields: string[]): string | null {\n const rowFields = fields.filter((field) => !(field in data));\n const list = soleList(data);\n if (list === null || !list[1].some((row) => rowFields.some((field) => field in row))) {\n return null;\n }\n return list[0];\n}\n\n/** The records the fields are read against: the rows, or `data` itself. */\nfunction recordsOf(data: unknown, fields: string[]): unknown[] {\n if (Array.isArray(data)) {\n return data;\n }\n if (!isRecord(data)) {\n return [];\n }\n const list = wrappedList(data, fields);\n return list === null ? [data] : (data[list] as unknown[]);\n}\n\n/**\n * `data` narrowed to the named keys of each record — the rows when it is a\n * list or wraps one, `data` itself when it is one record. Everything around the\n * rows (`meta`, `hints`, warnings, a wrapper's totals) is kept: it is what says\n * whether the rows can be trusted, and the reason the doc sends agents to\n * `--fields` instead of a pipe. Fields that name the wrapper's own keys as well\n * as the rows' narrow both: the wrapper to its named keys, the rows to theirs.\n */\nfunction maskData(data: unknown, fields: string[]): unknown {\n const maskWith = (keep: string[]) => (item: unknown) => (isRecord(item) ? pick(item, keep) : item);\n if (Array.isArray(data)) {\n return data.map(maskWith(fields));\n }\n if (!isRecord(data)) {\n return data;\n }\n const list = wrappedList(data, fields);\n if (list === null) {\n return pick(data, fields);\n }\n const wrapperFields = fields.filter((field) => field in data);\n const rows = recordsOf(data, fields).map(maskWith(fields.filter((field) => !(field in data))));\n return { ...(wrapperFields.length > 0 ? pick(data, wrapperFields) : data), [list]: rows };\n}\n\n/**\n * A name no record carried, said out loud. Dropped quietly, it comes back as a\n * row without the key, which reads as \"that value is empty\" rather than \"there\n * is no such field\" (BAKER-197).\n */\nfunction unmatchedHint(data: unknown, fields: string[]): string | null {\n const records = recordsOf(data, fields).filter(isRecord);\n if (records.length === 0) {\n return null;\n }\n // A record's keys and its one list's row keys: either may be what was meant.\n const keys = isRecord(data) ? [data, ...(soleList(data)?.[1] ?? [])] : records;\n const carried = new Set(keys.flatMap((record) => Object.keys(record)));\n const unmatched = fields.filter((field) => !carried.has(field));\n if (unmatched.length === 0) {\n return null;\n }\n return `--fields matched nothing for: ${unmatched.join(\", \")}. The keys data carries are: ${[...carried].join(\", \")}.`;\n}\n\nconst NO_DATA_HINT =\n \"--fields was not applied: this result carries no data to narrow, so it is printed whole. Drop --fields on this command.\";\n\n/**\n * The text a command printed, with its envelope masked, or null when the text\n * is no envelope at all (a Markdown view, a progress line). An error or a dry\n * run is an envelope with no `data` to mask, and comes back as it was printed.\n * A success that prints its result beside `ok` rather than under `data`\n * (`canvas validate`, `canvas critique`) comes back whole with a hint saying the\n * flag was not applied, so it is not read as a narrowed answer. The indentation\n * it was printed with is kept, so a masked read looks like any other.\n */\nexport function maskPrintedEnvelope(text: string, fields: string[]): string | null {\n const parsed = parsePrintedEnvelope(text);\n if (parsed === null) {\n return null;\n }\n if (parsed.ok !== true || \"dryRun\" in parsed) {\n return text;\n }\n return reprint(text, maskEnvelope(parsed, fields));\n}\n\n/**\n * A success envelope with `data` narrowed to the fields, a hint for any field\n * nothing carried, or a hint that nothing was narrowed when there is no `data`.\n * Shared with `writeOutput`, whose commands declare `--fields` themselves.\n */\nexport function maskEnvelope(envelope: Record<string, unknown>, fields: string[]): Record<string, unknown> {\n if (!(\"data\" in envelope)) {\n return withHint(envelope, NO_DATA_HINT);\n }\n const masked: Record<string, unknown> = { ...envelope, data: maskData(envelope.data, fields) };\n const miss = unmatchedHint(envelope.data, fields);\n return miss ? withHint(masked, miss) : masked;\n}\n\n/**\n * Mask every envelope written to `stream` from now on. `sawEnvelope()` says\n * whether one was printed, so the caller can tell the agent when the command\n * printed none and the flag changed nothing.\n */\nexport function maskWrites(stream: WriteTarget, fields: string[]): { sawEnvelope: () => boolean } {\n return rewriteWrites(stream, (text) => maskPrintedEnvelope(text, fields));\n}\n\n/**\n * The mask on the CLI's own stdout, and a note on stderr when the command\n * printed no envelope for it to act on — a readable view such as `tags list`\n * without `--json` — so the agent is not left believing the output was narrowed.\n */\nexport function installFieldMask(fields: string[], commandPath: string): void {\n const mask = maskWrites(process.stdout, fields);\n process.on(\"exit\", () => {\n if (!mask.sawEnvelope()) {\n process.stderr.write(\n `--fields was not applied: \\`baker ${commandPath}\\` printed no JSON envelope to narrow. ` +\n \"Add --output json to get the envelope, or drop --fields.\\n\",\n );\n }\n });\n}\n","import { adContentSearchAdSchema, type ProofStrength, proofStrength } from \"@baker/api/ad-library\";\nimport { maskEnvelope } from \"./field-mask.ts\";\n\nexport type OutputFormat = \"json\" | \"files\" | \"md\";\n\n/**\n * Why a read returned nothing, measured rather than guessed.\n *\n * An empty array is ambiguous in a way that costs real accuracy: \"your filters\n * excluded everything\", \"the library is empty\", and \"nothing is connected\" are\n * three different situations with three different next moves, and they are\n * indistinguishable from `data.length === 0`. Left to infer, an agent picks the\n * most dramatic reading and writes it down as fact — `baker testimonials list`\n * used to declare \"this company has NO review corpus connected\" on any empty\n * unfiltered browse, having never checked.\n *\n * So a command that can cheaply establish the reason should say which it is, and\n * one that cannot should omit this rather than fill it in speculatively. `reason`\n * is a family-specific slug; `detail` is prose an agent can quote and still be\n * saying something true.\n */\nexport interface EmptyEvidence {\n reason: string;\n detail: string;\n}\n\ntype SuccessEnvelope<T> = {\n ok: true;\n data: T;\n meta?: { cursor?: string; hasMore?: boolean; count?: number; empty?: EmptyEvidence };\n hints?: string[];\n};\n\ninterface ErrorEnvelope {\n ok: false;\n error: {\n code: string;\n message: string;\n /**\n * Structured remediation. `action` + `explanation` are the contract every\n * family honors; a family may hang its own fields off the same object when\n * the fix needs data (`ads google query` carries `correctedCommand`,\n * `brand fonts` carries the weights Google does serve) — otherwise the only\n * remedy an agent can read is \"re-run the command that just failed\".\n */\n fix?: string | ({ action: string; explanation: string } & Record<string, unknown>);\n retryable?: boolean;\n };\n /** A next step for a refusal that has no fix, e.g. how to find what was not found. */\n hints?: string[];\n}\n\ninterface DryRunEnvelope {\n ok: true;\n dryRun: true;\n operation: string;\n params: Record<string, unknown>;\n}\n\ntype Envelope<T> = SuccessEnvelope<T> | ErrorEnvelope | DryRunEnvelope;\n\ntype Normalizer = (record: Record<string, unknown>, full: boolean) => Record<string, unknown>;\n\nconst ASPECT_RATIO_MAP: Record<string, number> = {\n \"1:1\": 1,\n \"16:9\": 16 / 9,\n \"9:16\": 9 / 16,\n \"2:3\": 2 / 3,\n \"3:4\": 3 / 4,\n \"1:2\": 1 / 2,\n \"2:1\": 2,\n \"4:5\": 4 / 5,\n \"3:2\": 3 / 2,\n \"4:3\": 4 / 3,\n};\n\nconst ASPECT_RATIO_TOLERANCE = 0.08;\n\nexport function formatAspectRatio(ratio: number | undefined): string | null {\n if (ratio === undefined || ratio === null) {\n return null;\n }\n for (const [label, value] of Object.entries(ASPECT_RATIO_MAP)) {\n if (Math.abs(ratio - value) / value < ASPECT_RATIO_TOLERANCE) {\n return label;\n }\n }\n return null;\n}\n\n/** The set an asset arrived in, flattened for display. Absent for standalone\n * assets. Carousel slides and page scrapes only make sense as a set, so the\n * position travels with every projection that names the asset. */\nfunction groupSummary(record: Record<string, unknown>): Record<string, unknown> | null {\n const key = record.groupKey;\n if (typeof key !== \"string\" || !key) {\n return null;\n }\n const index = typeof record.groupIndex === \"number\" ? record.groupIndex : null;\n const size = typeof record.groupSize === \"number\" ? record.groupSize : null;\n return {\n key,\n kind: typeof record.groupKind === \"string\" ? record.groupKind : null,\n position: index === null ? null : size === null ? `${index + 1}` : `${index + 1} of ${size}`,\n title: typeof record.groupTitle === \"string\" ? record.groupTitle : null,\n url: typeof record.groupUrl === \"string\" ? record.groupUrl : null,\n };\n}\n\n/** People as one readable line each: \"customer — Ana Ruiz (speaking)\". */\nfunction peopleLines(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.flatMap((entry) => {\n const person = asRecord(entry);\n const role = typeof person.role === \"string\" ? person.role : \"\";\n if (!role) {\n return [];\n }\n const identity = typeof person.identity === \"string\" && person.identity ? ` — ${person.identity}` : \"\";\n const appearance = typeof person.appearance === \"string\" && person.appearance ? ` (${person.appearance})` : \"\";\n const speaking = person.speaking === true ? \" [speaking]\" : \"\";\n return [`${role}${identity}${appearance}${speaking}`];\n });\n}\n\ninterface ImageCompact {\n _id: string;\n name: string;\n imageUrl: string;\n description: string;\n tags: unknown[];\n width: number | null;\n height: number | null;\n subject: string | null;\n brandOwnership: string | null;\n people: string[];\n textInImage: unknown[];\n group: Record<string, unknown> | null;\n}\n\nexport function compactImage(image: Record<string, unknown>): ImageCompact {\n const analysis = asRecord(image.analysis);\n return {\n _id: String(image._id ?? \"\"),\n name: String(image.name ?? \"\"),\n imageUrl: String(image.imageUrl ?? \"\"),\n description: String(image.description ?? \"\"),\n tags: Array.isArray(image.tags) ? image.tags : [],\n // Two numbers that are not about choosing the image but about placing it.\n // A remote <BakerImage> with no width/height makes Astro DOWNLOAD the file\n // at build time just to measure it — one request per image per build, on a\n // build that is otherwise offline, and a single dropped connection there\n // fails a client's whole verify. They are cheap enough to always carry, and\n // burying them behind --full meant the agent placing the image never had\n // them.\n width: typeof image.width === \"number\" ? image.width : null,\n height: typeof image.height === \"number\" ? image.height : null,\n // The facts that decide a pick, so choosing does not need a second call:\n // whose brand it is, who is in it, and what text is burned in.\n subject: typeof analysis.subject === \"string\" ? analysis.subject : null,\n brandOwnership: typeof analysis.brandOwnership === \"string\" ? analysis.brandOwnership : null,\n people: peopleLines(analysis.people),\n textInImage: Array.isArray(analysis.textInImage) ? analysis.textInImage : [],\n group: groupSummary(image),\n };\n}\n\nexport function fullImage(image: Record<string, unknown>): Record<string, unknown> {\n const compact = compactImage(image);\n return {\n ...compact,\n aspectRatio: formatAspectRatio(image.aspectRatio as number | undefined),\n dominantColor: (image.dominantColor as string) ?? null,\n imagePalette: Array.isArray(image.imagePalette) ? image.imagePalette : [],\n source: String(image.source ?? \"\"),\n externalUrl: (image.externalUrl as string) ?? null,\n originalFilename: (image.originalFilename as string) ?? null,\n descriptionContext: (image.descriptionContext as string) ?? null,\n style: typeof asRecord(image.analysis).style === \"string\" ? asRecord(image.analysis).style : null,\n composition: typeof asRecord(image.analysis).composition === \"string\" ? asRecord(image.analysis).composition : null,\n usageNotes: typeof asRecord(image.analysis).usageNotes === \"string\" ? asRecord(image.analysis).usageNotes : null,\n createdAt: (image.createdAt as number) ?? null,\n };\n}\n\nfunction imageNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown> {\n if (full) {\n return fullImage(record);\n }\n return compactImage(record) as unknown as Record<string, unknown>;\n}\n\ninterface VideoCompact {\n _id: string;\n name: string;\n thumbnailUrl: string;\n description: string;\n tags: unknown[];\n status: string;\n subject: string | null;\n brandOwnership: string | null;\n people: string[];\n spokenLanguages: unknown[];\n hook: string | null;\n format: string | null;\n tone: string | null;\n productClaims: unknown[] | null;\n sceneCount: number;\n group: Record<string, unknown> | null;\n}\n\n/**\n * Whether a clip can sell: a customer vouching or a creator doing a trend,\n * meant or played for laughs, and what it actually says about the offer.\n * `null` means the clip predates these fields, not that it has none.\n */\nfunction sellingFacts(analysis: Record<string, unknown>): Pick<VideoCompact, \"format\" | \"tone\" | \"productClaims\"> {\n return {\n format: typeof analysis.format === \"string\" ? analysis.format : null,\n tone: typeof analysis.tone === \"string\" ? analysis.tone : null,\n productClaims: Array.isArray(analysis.productClaims) ? analysis.productClaims : null,\n };\n}\n\nexport function compactVideo(video: Record<string, unknown>): VideoCompact {\n const analysis = asRecord(video.analysis);\n const sceneCount =\n typeof video.sceneCount === \"number\" ? video.sceneCount : Array.isArray(video.scenes) ? video.scenes.length : 0;\n return {\n _id: String(video._id ?? \"\"),\n name: String(video.name ?? \"\"),\n thumbnailUrl: String(video.thumbnailUrl ?? \"\"),\n description: String(video.description ?? \"\"),\n tags: Array.isArray(video.tags) ? video.tags : [],\n status: String(video.status ?? \"\"),\n // What decides whether this clip is usable, without a second call: who is\n // on camera and in what role, what language they speak, how it opens, and\n // how many beats there are to cut from.\n subject: typeof analysis.subject === \"string\" ? analysis.subject : null,\n brandOwnership: typeof analysis.brandOwnership === \"string\" ? analysis.brandOwnership : null,\n people: peopleLines(analysis.people),\n spokenLanguages: Array.isArray(analysis.spokenLanguages) ? analysis.spokenLanguages : [],\n hook: typeof analysis.hook === \"string\" ? analysis.hook : null,\n ...sellingFacts(analysis),\n sceneCount,\n group: groupSummary(video),\n };\n}\n\n// Scene breakdown → readable lines, e.g. \"Founder intro (0-4.5s)\". Baker\n// auto-transcribes + scene-splits every uploaded video, so `--full` is where an\n// agent reads what the client's OWN clip actually says and shows.\n/** Shot, overlay state and spoken line for one beat — the part that decides\n * whether you can cut to it or lay copy over it. */\nfunction sceneDecoration(scene: Record<string, unknown>): string {\n const shot = typeof scene.shot === \"string\" && scene.shot ? ` [${scene.shot}]` : \"\";\n // How the beat arrives — \"hard cut\", \"glitch\", \"fades to white\". Where a trim\n // or a splice can land depends on it.\n const change = typeof scene.visualChange === \"string\" && scene.visualChange ? ` <${scene.visualChange}>` : \"\";\n\n const overlayText = Array.isArray(scene.onScreenText) ? scene.onScreenText.filter(Boolean) : [];\n let overlay = \"\";\n if (scene.hasOverlay === true) {\n overlay = overlayText.length > 0 ? ` — banner: \"${overlayText.join('\" / \"')}\"` : \" — banner\";\n } else if (scene.hasOverlay === false) {\n overlay = \" — clean frame\";\n }\n\n const spoken = typeof scene.spoken === \"string\" && scene.spoken ? ` — says: \"${scene.spoken}\"` : \"\";\n return `${shot}${change}${overlay}${spoken}`;\n}\n\nfunction sceneLines(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.flatMap((s) => {\n const scene = asRecord(s);\n const title = typeof scene.title === \"string\" ? scene.title : \"\";\n if (!title) {\n return [];\n }\n const start = round2(scene.startSecond);\n const end = round2(scene.endSecond);\n const range = start !== null && end !== null ? ` (${start}-${end}s)` : \"\";\n // A bare title + range does not say whether the beat can be reused. The\n // shot, whether a banner already covers it, and what it says do.\n return [`${title}${range}${sceneDecoration(scene)}`];\n });\n}\n\nfunction fullVideo(video: Record<string, unknown>): Record<string, unknown> {\n const compact = compactVideo(video);\n return {\n ...compact,\n duration: (video.duration as number) ?? null,\n muxPlaybackId: String(video.muxPlaybackId ?? \"\"),\n source: String(video.source ?? \"\"),\n // The spoken transcript + AI scene breakdown of the client's own clip — the\n // \"understand what's in this video\" payload. Kept out of the compact/search\n // projection (too large for a list) and surfaced here on --full.\n transcript: (video.transcript as string) ?? null,\n transcript_segment_count: Array.isArray(video.transcriptSegments) ? video.transcriptSegments.length : 0,\n scenes: sceneLines(video.scenes),\n originalFilename: (video.originalFilename as string) ?? null,\n descriptionContext: (video.descriptionContext as string) ?? null,\n shotStyle: typeof asRecord(video.analysis).shotStyle === \"string\" ? asRecord(video.analysis).shotStyle : null,\n audioStyle: typeof asRecord(video.analysis).audioStyle === \"string\" ? asRecord(video.analysis).audioStyle : null,\n onScreenText: Array.isArray(asRecord(video.analysis).onScreenText) ? asRecord(video.analysis).onScreenText : [],\n usageNotes: typeof asRecord(video.analysis).usageNotes === \"string\" ? asRecord(video.analysis).usageNotes : null,\n createdAt: (video.createdAt as number) ?? null,\n };\n}\n\nexport function videoNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown> {\n if (full) {\n return fullVideo(record);\n }\n return compactVideo(record) as unknown as Record<string, unknown>;\n}\n\ninterface TestimonialCompact {\n _id: string;\n reviewerName: string;\n reviewText: string;\n rating: number | null;\n sentiment: string | null;\n tags: unknown[];\n sourceType: string;\n}\n\nfunction truncate(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return `${text.slice(0, maxLength)}...`;\n}\n\nfunction compactTestimonial(record: Record<string, unknown>): TestimonialCompact {\n return {\n _id: String(record._id ?? \"\"),\n reviewerName: String(record.reviewerName ?? \"\"),\n reviewText: truncate(String(record.reviewText ?? \"\"), 200),\n rating: (record.rating as number) ?? null,\n sentiment: (record.sentiment as string) ?? null,\n tags: Array.isArray(record.tags) ? record.tags : [],\n sourceType: String(record.sourceType ?? \"\"),\n };\n}\n\nfunction fullTestimonial(record: Record<string, unknown>): Record<string, unknown> {\n const compact = compactTestimonial(record);\n return {\n ...compact,\n reviewText: String(record.reviewText ?? \"\"),\n highlight: (record.highlight as string) ?? null,\n summary: (record.summary as string) ?? null,\n language: (record.language as string) ?? null,\n reviewerImageUrl: (record.reviewerImageUrl as string) ?? null,\n sourceUrl: (record.sourceUrl as string) ?? null,\n reviewDate: (record.reviewDate as number) ?? null,\n createdAt: (record.createdAt as number) ?? null,\n status: String(record.status ?? \"\"),\n };\n}\n\nexport function testimonialNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown> {\n if (full) {\n return fullTestimonial(record);\n }\n return compactTestimonial(record) as unknown as Record<string, unknown>;\n}\n\n// The minimal set an agent needs to DECIDE between reference ads. `summary` is\n// the one-line \"what it's about\"; `media_url` is the creative (video for video,\n// image for static — there is no separate poster). `advertiser_id` is kept so\n// the agent can exclude that advertiser on a re-search. The proof signals\n// (`winner_category`, `proof`, `days_active`, `active`) ride along because they\n// are what the agent picks on — `winner_category: \"winner\"` only means the ad\n// delivered, `proof` says how strongly its run proves it; the rest (DNA detail, reach) is opt-in via --full to keep\n// the agent's context lean.\ninterface WinningAdCompact {\n advertiser: string;\n platform: string;\n format: string;\n relevance: number | null;\n winner_score: number | null;\n winner_category: string | null;\n proof: ProofStrength | null;\n days_active: number | null;\n active: boolean | null;\n summary: string;\n advertiser_id: string;\n ad_id: string;\n media_url: string;\n // Where the ad is in its life (new, testing, proven, evergreen, killed_early,\n // retired, unverified), and `true` when it is the version its brand kept\n // after testing it against others: a stronger reference than one that merely runs.\n stage?: string;\n survived_test?: true;\n // A Meta partnership ad (the brand ran it with a creator or another brand),\n // and who with when Meta names them.\n partnership?: true;\n partner?: string;\n // What the viewer sees and the static's container, when the library knows\n // them: enough to pick a reference on its move without opening the image.\n visual?: string;\n container?: string;\n // Why it works, in one line: what a reference is picked on.\n mechanism?: string;\n // Who the ad was made for, when the library knows: a reference transfers\n // when its audience matches the one we are making ours for.\n audience_temperature?: string;\n funnel_stage?: string;\n advertiser_size?: string;\n // Whether the copy only works on viewers who already know the brand, with\n // what they'd need to know when it does. Absent when not judged yet.\n presumes_brand_knowledge?: boolean;\n brand_knowledge_reason?: string;\n // How many Baker companies adapted this ad, and whether this one did: only\n // when any did (a second creative from one ad is a variant, not a concept).\n // `approved` / `rejected` count how those creatives were judged, when any was.\n baker_uses?: number;\n already_adapted?: true;\n approved?: number;\n rejected?: number;\n // Only on a scoped search: whether the brand is one the company follows.\n source?: \"followed\" | \"library\";\n}\n\nfunction round2(value: unknown): number | null {\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n return null;\n }\n return Math.round(value * 100) / 100;\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" ? (value as Record<string, unknown>) : {};\n}\n\n// Records here are the lean shape the backend proxy already projected\n// (flat fields + a nested `dna` object) — see /api/winning-ads/search.\nfunction bakerUses(value: unknown): Pick<WinningAdCompact, \"baker_uses\" | \"already_adapted\" | \"approved\" | \"rejected\"> {\n const uses = asRecord(value);\n const companies = typeof uses.companies === \"number\" ? uses.companies : 0;\n if (companies === 0) return {};\n const count = (n: unknown) => (typeof n === \"number\" && n > 0 ? n : undefined);\n const approved = count(uses.approved);\n const rejected = count(uses.rejected);\n return {\n baker_uses: companies,\n ...(uses.ours === true ? { already_adapted: true as const } : {}),\n ...(approved !== undefined ? { approved } : {}),\n ...(rejected !== undefined ? { rejected } : {}),\n };\n}\n\n// What the ad shows and why it works, only when the library knows it.\nfunction dnaMove(dna: Record<string, unknown>): Pick<WinningAdCompact, \"visual\" | \"container\" | \"mechanism\"> {\n const text = (value: unknown) => (typeof value === \"string\" && value ? value : undefined);\n const visual = text(dna.visual);\n const container = text(dna.container);\n const mechanism = text(dna.mechanism);\n return {\n ...(visual ? { visual } : {}),\n ...(container ? { container } : {}),\n ...(mechanism ? { mechanism } : {}),\n };\n}\n\ntype AudienceSignals = Pick<\n WinningAdCompact,\n \"audience_temperature\" | \"funnel_stage\" | \"advertiser_size\" | \"presumes_brand_knowledge\" | \"brand_knowledge_reason\"\n>;\n\n// Who the ad was made for, only the signals the library judged. The reason is\n// kept only when the ad leans on its brand: that is when it changes the pick.\nfunction dnaAudience(dna: Record<string, unknown>): AudienceSignals {\n const text = (value: unknown) => (typeof value === \"string\" && value ? value : undefined);\n const audienceTemperature = text(dna.audience_temperature);\n const funnelStage = text(dna.funnel_stage);\n const advertiserSize = text(dna.advertiser_size);\n const presumes = typeof dna.presumes_brand_knowledge === \"boolean\" ? dna.presumes_brand_knowledge : undefined;\n const reason = presumes ? text(dna.brand_knowledge_reason) : undefined;\n return {\n ...(audienceTemperature ? { audience_temperature: audienceTemperature } : {}),\n ...(funnelStage ? { funnel_stage: funnelStage } : {}),\n ...(advertiserSize ? { advertiser_size: advertiserSize } : {}),\n ...(presumes !== undefined ? { presumes_brand_knowledge: presumes } : {}),\n ...(reason ? { brand_knowledge_reason: reason } : {}),\n };\n}\n\nfunction partnershipFields(value: unknown): { partnership?: true; partner?: string } {\n if (value === null || typeof value !== \"object\") return {};\n const partner = asRecord(value).partner_name;\n return { partnership: true, ...(typeof partner === \"string\" && partner ? { partner } : {}) };\n}\n\nexport function compactWinningAd(record: Record<string, unknown>): WinningAdCompact {\n const dna = asRecord(record.dna);\n return {\n advertiser: String(record.advertiser ?? \"\"),\n platform: String(record.platform ?? \"\"),\n format: String(record.format ?? \"\"),\n relevance: round2(record.relevance),\n winner_score: round2(record.winner_score),\n winner_category: typeof record.winner_category === \"string\" ? record.winner_category : null,\n proof: proofStrength(typeof record.winner_score === \"number\" ? record.winner_score : null),\n days_active: typeof record.days_active === \"number\" ? record.days_active : null,\n active: typeof record.active === \"boolean\" ? record.active : null,\n summary: String(dna.creative_concept ?? \"\"),\n advertiser_id: String(record.advertiser_id ?? \"\"),\n ad_id: String(record.ad_id ?? \"\"),\n media_url: String(record.media_url ?? \"\"),\n ...(typeof record.stage === \"string\" ? { stage: record.stage } : {}),\n ...(record.survived_test === true ? { survived_test: true as const } : {}),\n ...partnershipFields(record.partnership),\n ...dnaMove(dna),\n ...dnaAudience(dna),\n ...bakerUses(record.baker_uses),\n ...(record.source === \"followed\" || record.source === \"library\" ? { source: record.source } : {}),\n };\n}\n\nexport function fullWinningAd(record: Record<string, unknown>): Record<string, unknown> {\n const compact = compactWinningAd(record);\n const dna = asRecord(record.dna);\n return {\n ...compact,\n media_kind: (record.media_kind as string) ?? null,\n reach: (record.reach as number) ?? null,\n angle: (dna.angle as string) ?? null,\n awareness_stage: (dna.awareness_stage as string) ?? null,\n target_persona: (dna.target_persona as string) ?? null,\n hook_archetype: (dna.hook_archetype as string) ?? null,\n mechanism: (dna.mechanism as string) ?? null,\n industry: (dna.industry as string) ?? null,\n };\n}\n\nexport function winningAdNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown> {\n if (full) {\n return fullWinningAd(record);\n }\n return compactWinningAd(record) as unknown as Record<string, unknown>;\n}\n\n// --- Ad content (\"read what's inside one creative\") -------------------------\n\n// `detailed` (--full) appends the overlay's role + on-screen position, e.g.\n// `\"GLOBAL PAYROLL @0.5s [hook, top]\"` — the wire schema and backend mapper\n// carry these per overlay precisely so the agent can place text faithfully\n// when reproducing the creative; compact stays lean (just text + timestamp).\n/**\n * Text drawn into a static image or carousel card has no timing; what matters\n * to reproduce it is the job it does and the card it sits on, so those lead\n * the line (\"card 2 · headline: …\").\n */\nfunction inImageLine(item: Record<string, unknown>, text: string, detailed: boolean): string {\n const card = typeof item.card === \"number\" ? `card ${item.card} · ` : \"\";\n const role = typeof item.role === \"string\" && item.role.length > 0 ? `${item.role}: ` : \"\";\n const position =\n detailed && typeof item.position === \"string\" && item.position.length > 0 ? ` [${item.position}]` : \"\";\n return `${card}${role}${text}${position}`;\n}\n\nfunction overlayLines(value: unknown, detailed = false, inImage = false): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.flatMap((o) => {\n const item = asRecord(o);\n const text = typeof item.text === \"string\" ? item.text : \"\";\n if (!text) {\n return [];\n }\n if (inImage) {\n return [inImageLine(item, text, detailed)];\n }\n const at = round2(item.appears_at_s);\n let line = at !== null ? `${text} @${at}s` : text;\n if (detailed) {\n const tags = [item.role, item.position].filter((t): t is string => typeof t === \"string\" && t.length > 0);\n if (tags.length) {\n line += ` [${tags.join(\", \")}]`;\n }\n }\n return [line];\n });\n}\n\n// The minimal set to UNDERSTAND a creative: what's said (transcript), what's\n// shown (on_screen_text), and the copy around it. Speech/pacing/soundtrack\n// detail is opt-in via --full so the agent's context stays lean.\nconst STOPPED_STAGES = new Set([\"killed_early\", \"retired\"]);\n\n/**\n * Where the ad is in its life and, when it is one version of a concept its\n * brand tested, how the test ended for this version (kept, cut, or still\n * running) and what the kept version did differently. Nothing from an older\n * library.\n */\nfunction adLifecycleFields(adId: unknown, value: unknown): Record<string, unknown> {\n const lifecycle = asRecord(value);\n if (typeof lifecycle.stage !== \"string\") return {};\n const test = asRecord(lifecycle.test);\n const keptAdId = typeof test.winner_ad_id === \"string\" ? test.winner_ad_id : null;\n const thisVersion =\n keptAdId !== null && keptAdId === adId ? \"kept\" : STOPPED_STAGES.has(lifecycle.stage) ? \"cut\" : \"running\";\n return {\n stage: lifecycle.stage,\n ...(lifecycle.survived_test === true ? { survived_test: true } : {}),\n ...(typeof test.status === \"string\"\n ? {\n test: {\n status: test.status,\n versions: test.versions,\n this_version: thisVersion,\n kept_ad_id: keptAdId,\n what_differed: test.what_differed ?? [],\n },\n }\n : {}),\n };\n}\n\n/**\n * Where the ad sends people and, on Google, which kind of ad it is (search |\n * display | shopping | youtube | app: only display and YouTube ads are design\n * references). Left out when the library does not say.\n */\nfunction landingAndKind(record: Record<string, unknown>): {\n landing_url?: string;\n landing_elsewhere?: string;\n google_ad_type?: string;\n} {\n return {\n ...(typeof record.landing_url === \"string\" ? { landing_url: record.landing_url } : {}),\n // Why the link opens no page: meta_native (an Instant Form or Experience), messaging, app_store…\n ...(typeof record.landing_elsewhere === \"string\" ? { landing_elsewhere: record.landing_elsewhere } : {}),\n ...(typeof record.google_ad_type === \"string\" ? { google_ad_type: record.google_ad_type } : {}),\n };\n}\n\n/**\n * A Google search ad's parts: headlines (with what each leads with),\n * descriptions, sitelinks, callouts and rating, each only when it has one.\n * Google does not say where a sitelink leads.\n */\nfunction searchAdParts(raw: unknown): Record<string, unknown> {\n const parsed = adContentSearchAdSchema.safeParse(raw);\n if (!parsed.success) return {};\n const { headlines, descriptions, sitelinks, callouts, rating } = parsed.data;\n return filledOnly({\n headlines: headlines.map((h) => (h.hook ? `${h.text} (${h.hook})` : h.text)),\n descriptions,\n sitelinks,\n callouts,\n rating,\n });\n}\n\nexport function compactAdContent(record: Record<string, unknown>): Record<string, unknown> {\n const inImage = record.format === \"static\" || record.format === \"carousel\";\n return {\n ad_id: (record.ad_id as string) ?? null,\n advertiser: (record.advertiser as string) ?? null,\n format: (record.format as string) ?? null,\n media_kind: (record.media_kind as string) ?? null,\n media_url: (record.media_url as string) ?? null,\n summary: (record.summary as string) ?? null,\n transcript: (record.transcript as string) ?? null,\n on_screen_text: overlayLines(record.on_screen_text, false, inImage),\n // The container a static reference is built on (comparison_table, before_after_split…).\n ...(inImage ? { format_pattern: (asRecord(record.layout).format_pattern as string) ?? null } : {}),\n has_captions: typeof record.has_captions === \"boolean\" ? record.has_captions : null,\n primary_text: (record.primary_text as string) ?? null,\n headline: (record.headline as string) ?? null,\n cta: (record.cta as string) ?? null,\n ...landingAndKind(record),\n ...searchAdParts(record.search_ad),\n ...adLifecycleFields(record.ad_id, record.lifecycle),\n };\n}\n\n/** Drop null and empty-list fields: in --full a present field is always a finding. */\nfunction filledOnly(value: unknown): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(asRecord(value)).filter(\n ([, v]) => v !== null && v !== undefined && !(Array.isArray(v) && v.length === 0),\n ),\n );\n}\n\nexport function fullAdContent(record: Record<string, unknown>): Record<string, unknown> {\n const speech = asRecord(record.speech);\n const pacing = asRecord(record.pacing);\n const music = asRecord(record.music);\n return {\n ...compactAdContent(record),\n platform: (record.platform as string) ?? null,\n // Re-derive with role/position tags — the lean compact version dropped them.\n on_screen_text: overlayLines(\n record.on_screen_text,\n true,\n record.format === \"static\" || record.format === \"carousel\",\n ),\n winner_score: round2(record.winner_score),\n winner_category: (record.winner_category as string) ?? null,\n angle: (record.angle as string) ?? null,\n hook_archetype: (record.hook_archetype as string) ?? null,\n caption_style: (record.caption_style as string) ?? null,\n has_speech: typeof record.has_speech === \"boolean\" ? record.has_speech : null,\n speech_pct_of_runtime: round2(speech.speech_pct_of_runtime),\n speaker_count: (speech.speaker_count as number) ?? null,\n voiceover_vs_sync: (speech.voiceover_vs_sync as string) ?? null,\n is_direct_address: typeof speech.is_direct_address === \"boolean\" ? speech.is_direct_address : null,\n speech_emotion_dominant: (speech.speech_emotion_dominant as string) ?? null,\n scene_count: (pacing.scene_count as number) ?? null,\n avg_shot_length_s: round2(pacing.avg_shot_length_s),\n pacing_shape: (pacing.pacing_shape as string) ?? null,\n hook_ends_at_s: round2(pacing.hook_ends_at_s),\n cta_first_shown_at_s: round2(pacing.cta_first_shown_at_s),\n product_first_appears_at_s: round2(pacing.product_first_appears_at_s),\n music_track_title: (music.track_title as string) ?? null,\n music_track_artist: (music.track_artist as string) ?? null,\n // How it is built, how it persuades, and what it offers, flattened like\n // speech/pacing above so --output md renders them, and only when present.\n ...filledOnly(record.layout),\n ...filledOnly(record.message),\n ...filledOnly(record.offer),\n };\n}\n\nexport function adContentNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown> {\n return full ? fullAdContent(record) : compactAdContent(record);\n}\n\nexport function applyFieldMask<T extends Record<string, unknown>>(data: T, fields: string[]): Partial<T> {\n const result: Partial<T> = {};\n for (const field of fields) {\n if (field in data) {\n (result as Record<string, unknown>)[field] = data[field];\n }\n }\n return result;\n}\n\nfunction write(text: string): void {\n process.stdout.write(text);\n}\n\nexport function writeJson<T>(envelope: Envelope<T>): void {\n write(`${JSON.stringify(envelope, null, 2)}\\n`);\n}\n\n/** One table cell: a nested value as JSON, so `--output md` never prints \"[object Object]\". */\nfunction cell(value: unknown): string {\n if (value === null || value === undefined) return \"\";\n return typeof value === \"object\" ? JSON.stringify(value) : String(value);\n}\n\nfunction writeFiles(data: Record<string, unknown>[], fields: string[]): void {\n // Header line\n write(`${fields.join(\"\\t\")}\\n`);\n for (const item of data) {\n const values = fields.map((f) => cell(item[f]));\n write(`${values.join(\"\\t\")}\\n`);\n }\n}\n\nfunction writeMd(data: Record<string, unknown>[], fields: string[]): void {\n // Header\n write(`| ${fields.join(\" | \")} |\\n`);\n // Separator\n write(`| ${fields.map(() => \"---\").join(\" | \")} |\\n`);\n // Rows\n for (const item of data) {\n const values = fields.map((f) => cell(item[f]));\n write(`| ${values.join(\" | \")} |\\n`);\n }\n}\n\nfunction normalizeData<T>(\n envelope: SuccessEnvelope<T>,\n fields: string[] | undefined,\n full: boolean,\n normalizer: Normalizer,\n): Record<string, unknown>[] {\n const raw = Array.isArray(envelope.data) ? envelope.data : [envelope.data];\n const items: Record<string, unknown>[] = raw.map((item) => {\n const record = item as Record<string, unknown>;\n return normalizer(record, full);\n });\n\n if (fields) {\n return items.map((item) => applyFieldMask(item, fields));\n }\n return items;\n}\n\nexport function writeOutput<T>(\n envelope: Envelope<T>,\n format: OutputFormat,\n fields?: string[],\n full?: boolean,\n normalizer?: Normalizer,\n): void {\n // Errors and dry runs always output JSON\n if (!envelope.ok || \"dryRun\" in envelope) {\n writeJson(envelope);\n return;\n }\n\n if (format === \"json\") {\n write(`${JSON.stringify(fields ? maskEnvelope(envelope, fields) : envelope, null, 2)}\\n`);\n return;\n }\n\n // A format we do not implement falls back to the envelope rather than off the\n // end of this function. Three `if`s and no `else` meant `--output csv` — which\n // the top-level help advertised and nothing implemented — wrote nothing at\n // all and exited 0, and an empty stdout is indistinguishable from a success\n // with no rows. The note goes to stderr so the JSON on stdout stays parseable.\n if (format !== \"files\" && format !== \"md\") {\n process.stderr.write(`Unknown --output \"${String(format)}\". Valid formats: json, files, md. Using json.\\n`);\n writeJson(envelope);\n return;\n }\n\n const items = normalizeData(envelope, fields, full ?? false, normalizer ?? imageNormalizer);\n const displayFields = fields ?? Object.keys(items[0] ?? {});\n\n if (format === \"files\") {\n writeFiles(items, displayFields);\n } else {\n writeMd(items, displayFields);\n }\n writeHints(envelope.hints);\n}\n\n/**\n * Hints, for the formats whose stdout has no room for them.\n *\n * `files` and `md` project the rows and nothing else, so a hint carried in the\n * envelope disappeared in exactly the case it earns its keep: an empty result,\n * where stdout is a bare header line and the hint is the only thing that says\n * what to do next. stderr keeps the rows parseable while still reaching the\n * agent. (The research family solved this already — `research/output.ts`.)\n */\nfunction writeHints(hints: string[] | undefined): void {\n for (const hint of hints ?? []) {\n process.stderr.write(`${hint}\\n`);\n }\n}\n"],"mappings":"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","names":["name","write","FLAG"]}
|