@koda-sl/baker-cli 0.540.0 → 0.541.0-dev.b27330e67
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 +11 -3
- package/dist/account-LKIEXMSK.js +82 -0
- package/dist/account-T26J6HSJ.js +82 -0
- package/dist/account-reads-P2WXB3NZ.js +219 -0
- package/dist/account-users-HB5DPMF4.js +64 -0
- package/dist/account-writes-QEZQCU46.js +68 -0
- package/dist/accounts-7D4O5QMV.js +80 -0
- package/dist/accounts-AOVLG52F.js +701 -0
- package/dist/actions-CMHAY6P5.js +55 -0
- package/dist/activecampaign-U65MB4UD.js +938 -0
- package/dist/ad-group-writes-MVQKICSC.js +172 -0
- package/dist/ad-groups-5OGD7PJ7.js +70 -0
- package/dist/ad-writes-OVD6EESQ.js +176 -0
- package/dist/add-AHRTXSBZ.js +107 -0
- package/dist/add-HGR6XPCB.js +305 -0
- package/dist/ads-BHZLZT3C.js +48 -0
- package/dist/ads-SCWCG2YI.js +79 -0
- package/dist/advertisers-KJDYCVU7.js +123 -0
- package/dist/analytics-2QTC4ZJT.js +2437 -0
- package/dist/analytics-RSCTSZPC.js +447 -0
- package/dist/animate-HV2QJWVE.js +480 -0
- package/dist/assign-RKN3XDEA.js +80 -0
- package/dist/audience-size-J5T2SOWX.js +76 -0
- package/dist/audiences-6N5B7CA2.js +280 -0
- package/dist/audit-O2R2R3BH.js +154 -0
- package/dist/autocomplete-7R5TRWE3.js +114 -0
- package/dist/avatars-URGC2PRJ.js +38 -0
- package/dist/bid-pricing-ZIGIQLKJ.js +103 -0
- package/dist/brand-7MLMDFLT.js +22 -0
- package/dist/brief-ZWIEUGIJ.js +543 -0
- package/dist/campaign-groups-Z6LNJMHY.js +99 -0
- package/dist/campaign-writes-EOFSYPW4.js +168 -0
- package/dist/campaign-writes-TFRV62VN.js +176 -0
- package/dist/campaigns-FHD3KMLV.js +111 -0
- package/dist/campaigns-KPUA4GP2.js +78 -0
- package/dist/campaigns-SIJKAEFM.js +113 -0
- package/dist/canvas-PHUXBTDM.js +46 -0
- package/dist/capabilities-MVOMUZVT.js +147 -0
- package/dist/catalog-JVBRY2U6.js +66 -0
- package/dist/catalogs-QYAAPTMV.js +130 -0
- package/dist/changes-2UFWG4T3.js +143 -0
- package/dist/chatgpt-KJAUJBRK.js +47 -0
- package/dist/chats-ETYNGJ3D.js +449 -0
- package/dist/chats-ETYNGJ3D.js.map +1 -0
- package/dist/check-G6IGCJKG.js +107 -0
- package/dist/chunk-274UO7N7.js +344 -0
- package/dist/chunk-27KV27F6.js +169 -0
- package/dist/chunk-2OCUXPWT.js +1919 -0
- package/dist/chunk-3N7YWOTX.js +438 -0
- package/dist/chunk-4L4SG26L.js +429 -0
- package/dist/chunk-6OIKNJ7G.js +26 -0
- package/dist/chunk-7OLJBIKI.js +494 -0
- package/dist/chunk-7XSVJFA3.js +170 -0
- package/dist/chunk-AHN5UNQP.js +910 -0
- package/dist/chunk-AQBJ3XRD.js +1902 -0
- package/dist/chunk-AUO4QNMI.js +148 -0
- package/dist/chunk-B5MJXVBP.js +66 -0
- package/dist/chunk-B6WOWVAA.js +285 -0
- package/dist/chunk-BF32BRMX.js +98 -0
- package/dist/chunk-BNO3EFGR.js +4266 -0
- package/dist/chunk-BNO3EFGR.js.map +1 -0
- package/dist/chunk-CATPBEZ3.js +51 -0
- package/dist/chunk-DBLOEIJ2.js +5368 -0
- package/dist/chunk-DQIPDAPH.js +274 -0
- package/dist/chunk-E4JZV7ZY.js +455 -0
- package/dist/chunk-F3CZFUXZ.js +3187 -0
- package/dist/chunk-F3CZFUXZ.js.map +1 -0
- package/dist/chunk-FPS7WKLY.js +207 -0
- package/dist/chunk-FSHIEGAY.js +7725 -0
- package/dist/chunk-FY6CMZDG.js +831 -0
- package/dist/chunk-GCFC2MNR.js +228 -0
- package/dist/chunk-H5P4XNTR.js +1646 -0
- package/dist/chunk-H7TJX6MJ.js +19 -0
- package/dist/chunk-HMFIOE4P.js +63 -0
- package/dist/chunk-HMZ6FUXY.js +61 -0
- package/dist/chunk-HN2W55DC.js +156 -0
- package/dist/chunk-HPS7HLN4.js +930 -0
- package/dist/chunk-HXLCETLB.js +3510 -0
- package/dist/chunk-HZQ64QEY.js +479 -0
- package/dist/chunk-I62QW2UL.js +197 -0
- package/dist/chunk-KAUW3OFC.js +843 -0
- package/dist/chunk-KFHW5TCM.js +167 -0
- package/dist/chunk-KT2YKHCH.js +319 -0
- package/dist/chunk-LFWGMR3F.js +91 -0
- package/dist/chunk-LNEUE4BR.js +592 -0
- package/dist/chunk-MDBRRR3J.js +191 -0
- package/dist/chunk-MHRFRSQ6.js +676 -0
- package/dist/chunk-N26ZASAC.js +275 -0
- package/dist/chunk-NPGI5DXP.js +89 -0
- package/dist/chunk-NQF5U6FX.js +150 -0
- package/dist/chunk-NTOCO72A.js +297 -0
- package/dist/chunk-OATKGUUI.js +103 -0
- package/dist/chunk-P2C6X574.js +163 -0
- package/dist/chunk-POI76GQV.js +57 -0
- package/dist/chunk-PZ3EFXL7.js +203 -0
- package/dist/chunk-QCONJUK6.js +387 -0
- package/dist/chunk-RAO7FTMY.js +64 -0
- package/dist/chunk-RM5T4MA6.js +783 -0
- package/dist/chunk-RRH5QWVS.js +91 -0
- package/dist/chunk-SIKCVWM3.js +76 -0
- package/dist/chunk-SPBUHC2K.js +224 -0
- package/dist/chunk-VAWAFQW3.js +142 -0
- package/dist/chunk-VFESCAO4.js +249 -0
- package/dist/chunk-VLE433LA.js +547 -0
- package/dist/chunk-W2MHGOUZ.js +2209 -0
- package/dist/chunk-WM6JHUPY.js +5471 -0
- package/dist/chunk-XAHY53IO.js +857 -0
- package/dist/chunk-XJ62F6EA.js +392 -0
- package/dist/chunk-XMHTLWWE.js +225 -0
- package/dist/chunk-XPXHJ6EP.js +24026 -0
- package/dist/chunk-XPXHJ6EP.js.map +1 -0
- package/dist/chunk-Y3ESEQRI.js +46 -0
- package/dist/chunk-YAX5CGUY.js +638 -0
- package/dist/chunk-YPYI3YBK.js +377 -0
- package/dist/chunk-YXCSJQKQ.js +23 -0
- package/dist/chunk-Z6ZYGDCQ.js +8954 -0
- package/dist/chunk-ZJOXRK2G.js +1518 -0
- package/dist/chunk-ZPHHJPDG.js +131 -0
- package/dist/chunk-ZV4K6E3S.js +604 -0
- package/dist/claim-VN6RHORQ.js +200 -0
- package/dist/cli.js +31 -31
- package/dist/companies-UNXZLC4T.js +198 -0
- package/dist/company-E7J2I4B5.js +308 -0
- package/dist/complete-TI6ME7P2.js +84 -0
- package/dist/connect-VYCZ7APH.js +45 -0
- package/dist/conversation-AVJMT6NK.js +96 -0
- package/dist/conversion-report-GK2FUT2R.js +127 -0
- package/dist/conversion-upload-command-Q7LZFFZL.js +439 -0
- package/dist/conversion-writes-STESFLTB.js +122 -0
- package/dist/conversions-6KDF5AVY.js +140 -0
- package/dist/conversions-JBRU7CGB.js +78 -0
- package/dist/create-7R5HTOI2.js +135 -0
- package/dist/create-BGIE2YTE.js +239 -0
- package/dist/create-HI53LEYE.js +62 -0
- package/dist/create-YVKJC5IT.js +210 -0
- package/dist/creatives-ACU2HGZW.js +223 -0
- package/dist/creatives-ISYALGKS.js +58 -0
- package/dist/credentials-UCROYYPD.js +290 -0
- package/dist/critique-SGEKRORA.js +232 -0
- package/dist/critique-SJLBIGD2.js +1451 -0
- package/dist/crm-OZ626TTR.js +227 -0
- package/dist/crm-X7FX34QY.js +323 -0
- package/dist/currency-HB3MFXLJ.js +88 -0
- package/dist/customers-I3T6HJD4.js +59 -0
- package/dist/delete-24S5ICGH.js +67 -0
- package/dist/delete-ICXIKJZF.js +69 -0
- package/dist/delete-RWZCVPYV.js +57 -0
- package/dist/demographics-PUJKNWCF.js +141 -0
- package/dist/discard-4GLM3TVC.js +69 -0
- package/dist/discover-DLGO3VW6.js +172 -0
- package/dist/domain-A4IVVFI6.js +101 -0
- package/dist/download-KIOTQW3Z.js +172 -0
- package/dist/draft-4MKYX4VU.js +396 -0
- package/dist/draft-6QUGODCB.js +310 -0
- package/dist/draft-AMSBOSM2.js +335 -0
- package/dist/draft-I7HIRQ6F.js +283 -0
- package/dist/draft-IB5A3RFD.js +220 -0
- package/dist/engine/index.js +8 -8
- package/dist/experiments-NW4GVPAF.js +236 -0
- package/dist/facets-SIY7OICY.js +117 -0
- package/dist/feedback-LUNPSQEO.js +115 -0
- package/dist/feedback-record-ML67WVIX.js +269 -0
- package/dist/fetch-T7OO6FDT.js +179 -0
- package/dist/fit-63FKT2JJ.js +65 -0
- package/dist/flows-RWQSQKUL.js +250 -0
- package/dist/fonts-UQ6ISHO3.js +39 -0
- package/dist/forecast-AODSMD7S.js +169 -0
- package/dist/forecast-JTKQQYMN.js +121 -0
- package/dist/funnel-J5IJQPUP.js +397 -0
- package/dist/generate-HSDSCKDW.js +263 -0
- package/dist/get-VLS22SZR.js +82 -0
- package/dist/get-X6TC6UBK.js +59 -0
- package/dist/google-FOZYYKNY.js +3267 -0
- package/dist/google-ads-HBNPBUR4.js +198 -0
- package/dist/history-E25YCUQO.js +153 -0
- package/dist/history-SHQVK5I7.js +69 -0
- package/dist/history-ZNPAN36E.js +102 -0
- package/dist/hubspot-WFJ22XGN.js +782 -0
- package/dist/ideas-FCL5SDI4.js +45 -0
- package/dist/images-SXBR3MLH.js +92 -0
- package/dist/ingest-UJBMV7PZ.js +27 -0
- package/dist/ingest-YRWIO6DV.js +123 -0
- package/dist/insights-7NC2JFXU.js +658 -0
- package/dist/insights-7NC2JFXU.js.map +1 -0
- package/dist/insights-UMPXHRKD.js +132 -0
- package/dist/inspect-I2CJDQSA.js +192 -0
- package/dist/intent-NBP5IDND.js +95 -0
- package/dist/keyword-gap-67UJ2LDD.js +130 -0
- package/dist/keyword-metrics-U6IWGT4N.js +200 -0
- package/dist/keywords-for-site-PXID3WEP.js +131 -0
- package/dist/landing-PIQYR6XI.js +28 -0
- package/dist/languages-TM7SHGRO.js +40 -0
- package/dist/leads-DOFRCD7J.js +115 -0
- package/dist/learn-VMNUQL6D.js +207 -0
- package/dist/line-item-writes-6MCXCXYM.js +211 -0
- package/dist/line-items-X3GEB5P7.js +107 -0
- package/dist/link-TX5PWJBH.js +67 -0
- package/dist/linkedin-3DYXRHL7.js +1328 -0
- package/dist/linkedin-person-TP7DAJST.js +139 -0
- package/dist/list-2WFSHJ2I.js +154 -0
- package/dist/list-GMMNLVCA.js +306 -0
- package/dist/list-I77SLBPO.js +67 -0
- package/dist/locations-HAXZUHJP.js +40 -0
- package/dist/locations-JFBM4XBL.js +69 -0
- package/dist/log-3HSJ3RYY.js +95 -0
- package/dist/make-OKIBB4LM.js +1367 -0
- package/dist/map-O63QGACI.js +436 -0
- package/dist/mcp-GJEZ37AM.js +729 -0
- package/dist/media-sources-KE6XXCTY.js +35 -0
- package/dist/members-WF453RSC.js +47 -0
- package/dist/meta-6IFYEOZL.js +122 -0
- package/dist/metrics-XWHE4LYQ.js +152 -0
- package/dist/models-3C6BWHEC.js +155 -0
- package/dist/normalize-HWMMP6LX.js +144 -0
- package/dist/options-XGYNQCQM.js +125 -0
- package/dist/organization-X27LDCZU.js +949 -0
- package/dist/performance-JLQIJK4V.js +27 -0
- package/dist/performance-XYGEV4TX.js +5565 -0
- package/dist/pixels-PMPL63ON.js +62 -0
- package/dist/promoted-tweet-writes-7DGO5Z2G.js +183 -0
- package/dist/promoted-tweets-SPBZXSYI.js +119 -0
- package/dist/publish-RRJRO5DC.js +344 -0
- package/dist/query-CTQGGPXW.js +62 -0
- package/dist/reddit-OCRVXWJC.js +29 -0
- package/dist/refresh-M6BXIMQD.js +97 -0
- package/dist/release-ZRKZEBEB.js +63 -0
- package/dist/relevant-pages-NPUSAV3K.js +99 -0
- package/dist/remove-JW3RRNB6.js +53 -0
- package/dist/reopen-G6ZE5YNP.js +66 -0
- package/dist/rerun-OKOYKQXC.js +96 -0
- package/dist/research-DZZBRX4V.js +265 -0
- package/dist/research-NLZ34525.js +72 -0
- package/dist/reset-ABZVGJE6.js +57 -0
- package/dist/reset-JYER2WPC.js +57 -0
- package/dist/resolve-EH3ONOYE.js +124 -0
- package/dist/retry-LKJWY5BC.js +63 -0
- package/dist/retry-VY76DPS5.js +65 -0
- package/dist/revenue-7GIOE3TG.js +91 -0
- package/dist/rules-NUNJBT6R.js +99 -0
- package/dist/rules-add-7FB67IDD.js +465 -0
- package/dist/run-3GV2FYWG.js +71 -0
- package/dist/run-OVOXZUXN.js +69 -0
- package/dist/scaffold-ad-7D5EUDU7.js +1513 -0
- package/dist/scaffold-static-ad-TWF2RRM2.js +1011 -0
- package/dist/scaffold-video-4P2ONEQV.js +885 -0
- package/dist/schedule-XQ725JG6.js +64 -0
- package/dist/scheduled-agents-KBSD55GW.js +55 -0
- package/dist/schema-WJVWY4IA.js +135 -0
- package/dist/search-KQGMLU2Z.js +177 -0
- package/dist/select-CLD5MFCK.js +110 -0
- package/dist/set-prompt-COD76I6E.js +199 -0
- package/dist/setup-links-H5L5CJJN.js +144 -0
- package/dist/shopify-M2I65ZB5.js +3958 -0
- package/dist/site-AIJK3MNO.js +180 -0
- package/dist/sources-JRMCBVLK.js +457 -0
- package/dist/sources-YVDTULK6.js +30 -0
- package/dist/stale-AVBULN3A.js +90 -0
- package/dist/status-RXA4BBXZ.js +65 -0
- package/dist/studio-C2UVCTDD.js +49 -0
- package/dist/sync-CMYHAJSZ.js +57 -0
- package/dist/sync-definition-IKI2NFUO.js +70 -0
- package/dist/tags-5IVIDOPC.js +26 -0
- package/dist/tags-5L5MV6XZ.js +23 -0
- package/dist/tags-LIG4SXDB.js +23 -0
- package/dist/tags-LRFFVAZ3.js +227 -0
- package/dist/tags-VMMVSG6J.js +23 -0
- package/dist/targeting-criteria-AMVFYZ2H.js +113 -0
- package/dist/targets-RE24B2LL.js +106 -0
- package/dist/testimonials-FWJRO4MB.js +32 -0
- package/dist/themes-32CUPT4M.js +95 -0
- package/dist/top-companies-6GI6AWGA.js +111 -0
- package/dist/transcript-XMWBCLQO.js +165 -0
- package/dist/translate-2UYIIMEG.js +603 -0
- package/dist/triggers-WCI5DERM.js +144 -0
- package/dist/unlink-MM23NOTI.js +70 -0
- package/dist/unstage-YQXFED4J.js +88 -0
- package/dist/update-3BGBYU5R.js +155 -0
- package/dist/update-A53QG3XM.js +66 -0
- package/dist/update-S2CJ5FNS.js +192 -0
- package/dist/update-VMN5BHTP.js +101 -0
- package/dist/upload-VT7NPRAM.js +130 -0
- package/dist/url-options-JJIA77MZ.js +131 -0
- package/dist/url-params-RFMWR2PZ.js +101 -0
- package/dist/validate-KMY5ZVQX.js +125 -0
- package/dist/videos-DZT3TMKO.js +41 -0
- package/dist/viewer-check-QHXKGGH2.js +83 -0
- package/dist/web-HP45GOIL.js +143 -0
- package/dist/winning-ads-ZJVGEPZ7.js +86 -0
- package/dist/write-commands-YKWSFUO5.js +1525 -0
- package/dist/x-V76UQMEM.js +47 -0
- package/package.json +1 -1
- package/dist/account-JT5DRUNO.js +0 -82
- package/dist/account-V5XHQY2D.js +0 -82
- package/dist/account-reads-CPL3HLZ5.js +0 -219
- package/dist/account-users-AZBPCE3S.js +0 -64
- package/dist/account-writes-MFKCVMMV.js +0 -68
- package/dist/accounts-CZOZDD5I.js +0 -701
- package/dist/accounts-PQZRFWGU.js +0 -80
- package/dist/actions-7ELREPKR.js +0 -55
- package/dist/activecampaign-VOKDHWP7.js +0 -938
- package/dist/ad-group-writes-WFYPFO7R.js +0 -172
- package/dist/ad-groups-IPY3TJUX.js +0 -70
- package/dist/ad-writes-LDNNN72V.js +0 -176
- package/dist/add-NZE6J7AI.js +0 -107
- package/dist/add-RMKXE2ZO.js +0 -305
- package/dist/ads-NTDJRTEG.js +0 -79
- package/dist/ads-SJ6T366Q.js +0 -48
- package/dist/advertisers-E27BJ2FV.js +0 -123
- package/dist/analytics-PJ7JR4VU.js +0 -447
- package/dist/analytics-TBEIK33Y.js +0 -2437
- package/dist/animate-CQON6SZE.js +0 -480
- package/dist/assign-MTHCAP54.js +0 -80
- package/dist/audience-size-AXULID2E.js +0 -76
- package/dist/audiences-KRI7E7FY.js +0 -280
- package/dist/audit-YQIL6UGM.js +0 -154
- package/dist/autocomplete-S2WRGXOM.js +0 -114
- package/dist/avatars-H5RIENFM.js +0 -38
- package/dist/bid-pricing-5RTQDTK3.js +0 -103
- package/dist/brand-YCYKIUIL.js +0 -22
- package/dist/brief-AEICFSR7.js +0 -543
- package/dist/campaign-groups-PZ4J25O5.js +0 -99
- package/dist/campaign-writes-2OSYV72Z.js +0 -168
- package/dist/campaign-writes-DAL4EFIV.js +0 -176
- package/dist/campaigns-CDPQ2RDY.js +0 -111
- package/dist/campaigns-TKQDXU5H.js +0 -78
- package/dist/campaigns-XFIW7ODL.js +0 -113
- package/dist/canvas-FWG5JGG4.js +0 -46
- package/dist/capabilities-Y2UYDZZO.js +0 -147
- package/dist/catalog-6CXOEKBI.js +0 -66
- package/dist/catalogs-ETVY5OZ5.js +0 -130
- package/dist/changes-2P2P4LAU.js +0 -143
- package/dist/chatgpt-GINMQJBI.js +0 -47
- package/dist/chats-HNOUUEII.js +0 -442
- package/dist/chats-HNOUUEII.js.map +0 -1
- package/dist/check-UHV27GZU.js +0 -107
- package/dist/chunk-24SPBLU4.js +0 -1646
- package/dist/chunk-2AJ5UNOF.js +0 -131
- package/dist/chunk-2OEECI2R.js +0 -51
- package/dist/chunk-2Y3VZILY.js +0 -98
- package/dist/chunk-337ZJ3PX.js +0 -377
- package/dist/chunk-35T6LCB2.js +0 -197
- package/dist/chunk-3RWSYI6N.js +0 -63
- package/dist/chunk-3V4R55B4.js +0 -163
- package/dist/chunk-3YHOU5IA.js +0 -169
- package/dist/chunk-4KGQZHCV.js +0 -224
- package/dist/chunk-4PWC4KAK.js +0 -843
- package/dist/chunk-5VVXF3OS.js +0 -676
- package/dist/chunk-7E4S2NBD.js +0 -170
- package/dist/chunk-7Y6CPXM5.js +0 -2209
- package/dist/chunk-A4TWHQEF.js +0 -191
- package/dist/chunk-AMHVCMBW.js +0 -3510
- package/dist/chunk-AUGAC2OT.js +0 -319
- package/dist/chunk-BQSDW6FT.js +0 -344
- package/dist/chunk-C54JXXV3.js +0 -24026
- package/dist/chunk-C54JXXV3.js.map +0 -1
- package/dist/chunk-C6CWI43A.js +0 -392
- package/dist/chunk-CISJ7CUA.js +0 -207
- package/dist/chunk-CKT5SR7F.js +0 -103
- package/dist/chunk-CTBDVZ5E.js +0 -274
- package/dist/chunk-DR7PLON5.js +0 -1902
- package/dist/chunk-EPW33OQJ.js +0 -203
- package/dist/chunk-F4QYUDXE.js +0 -91
- package/dist/chunk-FKGYEK54.js +0 -387
- package/dist/chunk-FSLSISPI.js +0 -46
- package/dist/chunk-GT76FWES.js +0 -1919
- package/dist/chunk-GTIQUOYC.js +0 -148
- package/dist/chunk-GZN2RP7D.js +0 -494
- package/dist/chunk-H23Q55DS.js +0 -604
- package/dist/chunk-H27R5IVQ.js +0 -64
- package/dist/chunk-HDYJ6YVI.js +0 -930
- package/dist/chunk-HHQYP6RM.js +0 -783
- package/dist/chunk-HOZI7GOT.js +0 -66
- package/dist/chunk-IJ5DWALA.js +0 -225
- package/dist/chunk-JAC6JVCI.js +0 -26
- package/dist/chunk-JEMYDBKC.js +0 -547
- package/dist/chunk-KGZXQIM5.js +0 -19
- package/dist/chunk-KSECMOHE.js +0 -857
- package/dist/chunk-LE33VXJV.js +0 -831
- package/dist/chunk-LE6VTYWQ.js +0 -910
- package/dist/chunk-MCJ5I5LR.js +0 -3187
- package/dist/chunk-MCJ5I5LR.js.map +0 -1
- package/dist/chunk-MI3J4O42.js +0 -297
- package/dist/chunk-MIOE5IN3.js +0 -479
- package/dist/chunk-MMUT4W5L.js +0 -438
- package/dist/chunk-MZPS46OR.js +0 -76
- package/dist/chunk-N3T4ALXV.js +0 -8954
- package/dist/chunk-NGXZQESA.js +0 -5471
- package/dist/chunk-NPZ5VWFE.js +0 -592
- package/dist/chunk-NQ5O2NCJ.js +0 -5368
- package/dist/chunk-OQGE5GSP.js +0 -429
- package/dist/chunk-QIZY55Z6.js +0 -89
- package/dist/chunk-RD63FPG6.js +0 -150
- package/dist/chunk-RW32BYY3.js +0 -1518
- package/dist/chunk-RZUXHIRN.js +0 -23
- package/dist/chunk-S4PK55OH.js +0 -156
- package/dist/chunk-T2JHHSPI.js +0 -142
- package/dist/chunk-TFCZOTQ5.js +0 -249
- package/dist/chunk-TI4UL56R.js +0 -4266
- package/dist/chunk-TI4UL56R.js.map +0 -1
- package/dist/chunk-TML65SGQ.js +0 -455
- package/dist/chunk-TP6QJATO.js +0 -57
- package/dist/chunk-TQDZQT6U.js +0 -167
- package/dist/chunk-UIPSSTMA.js +0 -228
- package/dist/chunk-UREDSNQS.js +0 -7725
- package/dist/chunk-VWKFQ4ZY.js +0 -285
- package/dist/chunk-WDPOXO34.js +0 -91
- package/dist/chunk-YFIWCMVC.js +0 -638
- package/dist/chunk-YFRNONXL.js +0 -275
- package/dist/chunk-ZBP735CV.js +0 -61
- package/dist/claim-65UCFSNU.js +0 -200
- package/dist/companies-PUU5HQPO.js +0 -198
- package/dist/company-P64YHCCF.js +0 -308
- package/dist/complete-D7LIEFAQ.js +0 -84
- package/dist/connect-OJEK3NSN.js +0 -45
- package/dist/conversation-S2I75E4X.js +0 -96
- package/dist/conversion-report-JNWBTLA5.js +0 -127
- package/dist/conversion-upload-command-6OKMSO2T.js +0 -439
- package/dist/conversion-writes-2VOWP4RD.js +0 -122
- package/dist/conversions-JGIBYLK5.js +0 -78
- package/dist/conversions-XQLNBKCS.js +0 -140
- package/dist/create-DXRRIN2L.js +0 -210
- package/dist/create-UBQF3F43.js +0 -239
- package/dist/create-URSL4J7P.js +0 -62
- package/dist/create-WTG4PLR7.js +0 -135
- package/dist/creatives-KHU3PAMN.js +0 -223
- package/dist/creatives-MXMQDNL6.js +0 -58
- package/dist/credentials-CMOO7W6D.js +0 -290
- package/dist/critique-455CFJQ2.js +0 -1451
- package/dist/critique-MABDKWHC.js +0 -232
- package/dist/crm-LKQBWL7L.js +0 -227
- package/dist/crm-YAFF2LM2.js +0 -323
- package/dist/currency-JDAVYMD3.js +0 -88
- package/dist/customers-XQJTF7HT.js +0 -59
- package/dist/delete-7OTBPZGJ.js +0 -67
- package/dist/delete-ROD2G6IL.js +0 -57
- package/dist/delete-ZRMD5TG4.js +0 -69
- package/dist/demographics-HM2TV4T2.js +0 -141
- package/dist/discard-55OBCTIR.js +0 -69
- package/dist/discover-VEHKBNCY.js +0 -172
- package/dist/domain-226C6VIF.js +0 -101
- package/dist/download-UMEQIQKE.js +0 -172
- package/dist/draft-DUAFRL2G.js +0 -283
- package/dist/draft-MPSQIDMM.js +0 -310
- package/dist/draft-S2QTWVIA.js +0 -220
- package/dist/draft-TUTXQNHP.js +0 -335
- package/dist/draft-V7VGPJK4.js +0 -396
- package/dist/experiments-6UHDVVII.js +0 -236
- package/dist/facets-BZ5AFGHD.js +0 -117
- package/dist/feedback-A5DR3IMR.js +0 -115
- package/dist/feedback-record-KABFVNHS.js +0 -269
- package/dist/fetch-XNE63FNS.js +0 -179
- package/dist/fit-T2D4E52B.js +0 -65
- package/dist/flows-P5T4LNJ2.js +0 -250
- package/dist/fonts-U3NGQYJN.js +0 -39
- package/dist/forecast-TG5RS5DG.js +0 -121
- package/dist/forecast-UYBYSH3Y.js +0 -169
- package/dist/funnel-D6YXU7C4.js +0 -397
- package/dist/generate-QG7GX6WO.js +0 -263
- package/dist/get-E4VOTCE6.js +0 -59
- package/dist/get-TISXCTDV.js +0 -82
- package/dist/google-UQLYCYSX.js +0 -3267
- package/dist/google-ads-GBX5YHPT.js +0 -198
- package/dist/history-BRWYSJQL.js +0 -153
- package/dist/history-M2KVZ2E7.js +0 -102
- package/dist/history-XOB23MLX.js +0 -69
- package/dist/hubspot-YEZGTOM2.js +0 -782
- package/dist/ideas-J6GCTQ6U.js +0 -45
- package/dist/images-55KBTRVO.js +0 -92
- package/dist/ingest-LKGF5E5V.js +0 -27
- package/dist/ingest-QNV3B2ST.js +0 -123
- package/dist/insights-7CQJOBWX.js +0 -132
- package/dist/insights-UOO6OK3U.js +0 -439
- package/dist/insights-UOO6OK3U.js.map +0 -1
- package/dist/inspect-WNPQXU4H.js +0 -192
- package/dist/intent-P75BDP4H.js +0 -95
- package/dist/keyword-gap-54F6CZLM.js +0 -130
- package/dist/keyword-metrics-SJLYED7I.js +0 -200
- package/dist/keywords-for-site-CY2XUFR4.js +0 -131
- package/dist/landing-DZLICA3P.js +0 -28
- package/dist/languages-PEGOE365.js +0 -40
- package/dist/leads-WBZP37CG.js +0 -115
- package/dist/learn-QNOTY4JA.js +0 -207
- package/dist/line-item-writes-6RNUOFKK.js +0 -211
- package/dist/line-items-YOBU6DYQ.js +0 -107
- package/dist/link-7PEVIIUA.js +0 -67
- package/dist/linkedin-YYNBLBM3.js +0 -1328
- package/dist/linkedin-person-JGQTT54I.js +0 -139
- package/dist/list-H2XBHKQK.js +0 -154
- package/dist/list-IFVBO2E2.js +0 -306
- package/dist/list-N5FHLG2Z.js +0 -67
- package/dist/locations-MXWGZIGU.js +0 -69
- package/dist/locations-SHYN5J4Q.js +0 -40
- package/dist/log-HCWZ6C4R.js +0 -95
- package/dist/make-VZKIB23N.js +0 -1367
- package/dist/map-RFMJ4AF7.js +0 -436
- package/dist/mcp-VRFT3QJW.js +0 -729
- package/dist/media-sources-NTZRJGFU.js +0 -35
- package/dist/members-EOIF2XN3.js +0 -47
- package/dist/meta-MBW5LM5V.js +0 -122
- package/dist/metrics-25LYUEB7.js +0 -152
- package/dist/models-EU3NO4IY.js +0 -155
- package/dist/normalize-UQIZEJHT.js +0 -144
- package/dist/options-Y6JI2ZVZ.js +0 -125
- package/dist/organization-TO2V7AWX.js +0 -949
- package/dist/performance-V26JUNGC.js +0 -27
- package/dist/performance-YAUOH75F.js +0 -5565
- package/dist/pixels-NLH2PN6Q.js +0 -62
- package/dist/promoted-tweet-writes-3SLFZQDA.js +0 -183
- package/dist/promoted-tweets-3WRSJYKK.js +0 -119
- package/dist/publish-T6ITLSJA.js +0 -344
- package/dist/query-SRJXJVDY.js +0 -62
- package/dist/reddit-O2TNBMD6.js +0 -29
- package/dist/refresh-N726O36Z.js +0 -97
- package/dist/release-A5HKTUMV.js +0 -63
- package/dist/relevant-pages-VJHTUJMB.js +0 -99
- package/dist/remove-BHUYRNRU.js +0 -53
- package/dist/reopen-TTDYNANZ.js +0 -66
- package/dist/rerun-KFTQ6Y64.js +0 -96
- package/dist/research-FISSUVIK.js +0 -72
- package/dist/research-YWON4E4H.js +0 -265
- package/dist/reset-SSNHRP5C.js +0 -57
- package/dist/reset-VTNVCE23.js +0 -57
- package/dist/resolve-375FALNN.js +0 -124
- package/dist/retry-PNS6RWJ6.js +0 -63
- package/dist/retry-TLGYZ6RJ.js +0 -65
- package/dist/revenue-6L2AY7L7.js +0 -91
- package/dist/rules-F6J4V7PZ.js +0 -99
- package/dist/rules-add-7UI5A3MJ.js +0 -465
- package/dist/run-B77D2TGX.js +0 -71
- package/dist/run-UN4HXEGZ.js +0 -69
- package/dist/scaffold-ad-74CEBCRR.js +0 -1513
- package/dist/scaffold-static-ad-2IMVWNYB.js +0 -1011
- package/dist/scaffold-video-JDCX3BIT.js +0 -885
- package/dist/schedule-WK5MRYCJ.js +0 -64
- package/dist/scheduled-agents-2NTFBABN.js +0 -55
- package/dist/schema-BBC6AARZ.js +0 -135
- package/dist/search-KC4QRMU2.js +0 -177
- package/dist/select-SZAJR4QY.js +0 -110
- package/dist/set-prompt-KHB4JJV2.js +0 -199
- package/dist/setup-links-SJVDPNOF.js +0 -144
- package/dist/shopify-MODNP6LT.js +0 -3958
- package/dist/site-5K73B2MI.js +0 -180
- package/dist/sources-2E6EK6YK.js +0 -457
- package/dist/sources-S7LAV2EP.js +0 -30
- package/dist/stale-3IPYZ7BI.js +0 -90
- package/dist/status-6QTJSJN7.js +0 -65
- package/dist/studio-4QOFG7MQ.js +0 -49
- package/dist/sync-37P7TZQH.js +0 -57
- package/dist/sync-definition-CDQCNCU2.js +0 -70
- package/dist/tags-2VZUCNNH.js +0 -26
- package/dist/tags-CBINFGAN.js +0 -227
- package/dist/tags-FVRIF3XS.js +0 -23
- package/dist/tags-OB24PQKE.js +0 -23
- package/dist/tags-SS7FE52N.js +0 -23
- package/dist/targeting-criteria-ECC662DL.js +0 -113
- package/dist/targets-GIRHNZ4W.js +0 -106
- package/dist/testimonials-IEJ24MH7.js +0 -32
- package/dist/themes-JBX6W4SP.js +0 -95
- package/dist/top-companies-POSJMWSB.js +0 -111
- package/dist/transcript-FCKURXTT.js +0 -165
- package/dist/translate-F4B3WEJO.js +0 -603
- package/dist/triggers-DRAKT5QB.js +0 -144
- package/dist/unlink-OEUJXG64.js +0 -70
- package/dist/unstage-F362CYM7.js +0 -88
- package/dist/update-4CVNP3B5.js +0 -66
- package/dist/update-BAE3BEEW.js +0 -155
- package/dist/update-UME7HHOC.js +0 -101
- package/dist/update-XOSKQEMK.js +0 -192
- package/dist/upload-BABKWQIN.js +0 -130
- package/dist/url-options-JSRAMMEM.js +0 -131
- package/dist/url-params-ZVIYOHM2.js +0 -101
- package/dist/validate-DN44TVXS.js +0 -125
- package/dist/videos-OVVH4LC2.js +0 -41
- package/dist/viewer-check-SOPRTRNX.js +0 -83
- package/dist/web-PLEFETCJ.js +0 -143
- package/dist/winning-ads-HIP6PWPL.js +0 -86
- package/dist/write-commands-U3JZ6UHG.js +0 -1525
- package/dist/x-ROOD4SQH.js +0 -47
- /package/dist/{account-JT5DRUNO.js.map → account-LKIEXMSK.js.map} +0 -0
- /package/dist/{account-V5XHQY2D.js.map → account-T26J6HSJ.js.map} +0 -0
- /package/dist/{account-reads-CPL3HLZ5.js.map → account-reads-P2WXB3NZ.js.map} +0 -0
- /package/dist/{account-users-AZBPCE3S.js.map → account-users-HB5DPMF4.js.map} +0 -0
- /package/dist/{account-writes-MFKCVMMV.js.map → account-writes-QEZQCU46.js.map} +0 -0
- /package/dist/{accounts-PQZRFWGU.js.map → accounts-7D4O5QMV.js.map} +0 -0
- /package/dist/{accounts-CZOZDD5I.js.map → accounts-AOVLG52F.js.map} +0 -0
- /package/dist/{actions-7ELREPKR.js.map → actions-CMHAY6P5.js.map} +0 -0
- /package/dist/{activecampaign-VOKDHWP7.js.map → activecampaign-U65MB4UD.js.map} +0 -0
- /package/dist/{ad-group-writes-WFYPFO7R.js.map → ad-group-writes-MVQKICSC.js.map} +0 -0
- /package/dist/{ad-groups-IPY3TJUX.js.map → ad-groups-5OGD7PJ7.js.map} +0 -0
- /package/dist/{ad-writes-LDNNN72V.js.map → ad-writes-OVD6EESQ.js.map} +0 -0
- /package/dist/{add-NZE6J7AI.js.map → add-AHRTXSBZ.js.map} +0 -0
- /package/dist/{add-RMKXE2ZO.js.map → add-HGR6XPCB.js.map} +0 -0
- /package/dist/{ads-SJ6T366Q.js.map → ads-BHZLZT3C.js.map} +0 -0
- /package/dist/{ads-NTDJRTEG.js.map → ads-SCWCG2YI.js.map} +0 -0
- /package/dist/{advertisers-E27BJ2FV.js.map → advertisers-KJDYCVU7.js.map} +0 -0
- /package/dist/{analytics-TBEIK33Y.js.map → analytics-2QTC4ZJT.js.map} +0 -0
- /package/dist/{analytics-PJ7JR4VU.js.map → analytics-RSCTSZPC.js.map} +0 -0
- /package/dist/{animate-CQON6SZE.js.map → animate-HV2QJWVE.js.map} +0 -0
- /package/dist/{assign-MTHCAP54.js.map → assign-RKN3XDEA.js.map} +0 -0
- /package/dist/{audience-size-AXULID2E.js.map → audience-size-J5T2SOWX.js.map} +0 -0
- /package/dist/{audiences-KRI7E7FY.js.map → audiences-6N5B7CA2.js.map} +0 -0
- /package/dist/{audit-YQIL6UGM.js.map → audit-O2R2R3BH.js.map} +0 -0
- /package/dist/{autocomplete-S2WRGXOM.js.map → autocomplete-7R5TRWE3.js.map} +0 -0
- /package/dist/{avatars-H5RIENFM.js.map → avatars-URGC2PRJ.js.map} +0 -0
- /package/dist/{bid-pricing-5RTQDTK3.js.map → bid-pricing-ZIGIQLKJ.js.map} +0 -0
- /package/dist/{brand-YCYKIUIL.js.map → brand-7MLMDFLT.js.map} +0 -0
- /package/dist/{brief-AEICFSR7.js.map → brief-ZWIEUGIJ.js.map} +0 -0
- /package/dist/{campaign-groups-PZ4J25O5.js.map → campaign-groups-Z6LNJMHY.js.map} +0 -0
- /package/dist/{campaign-writes-2OSYV72Z.js.map → campaign-writes-EOFSYPW4.js.map} +0 -0
- /package/dist/{campaign-writes-DAL4EFIV.js.map → campaign-writes-TFRV62VN.js.map} +0 -0
- /package/dist/{campaigns-CDPQ2RDY.js.map → campaigns-FHD3KMLV.js.map} +0 -0
- /package/dist/{campaigns-TKQDXU5H.js.map → campaigns-KPUA4GP2.js.map} +0 -0
- /package/dist/{campaigns-XFIW7ODL.js.map → campaigns-SIJKAEFM.js.map} +0 -0
- /package/dist/{canvas-FWG5JGG4.js.map → canvas-PHUXBTDM.js.map} +0 -0
- /package/dist/{capabilities-Y2UYDZZO.js.map → capabilities-MVOMUZVT.js.map} +0 -0
- /package/dist/{catalog-6CXOEKBI.js.map → catalog-JVBRY2U6.js.map} +0 -0
- /package/dist/{catalogs-ETVY5OZ5.js.map → catalogs-QYAAPTMV.js.map} +0 -0
- /package/dist/{changes-2P2P4LAU.js.map → changes-2UFWG4T3.js.map} +0 -0
- /package/dist/{chatgpt-GINMQJBI.js.map → chatgpt-KJAUJBRK.js.map} +0 -0
- /package/dist/{check-UHV27GZU.js.map → check-G6IGCJKG.js.map} +0 -0
- /package/dist/{chunk-BQSDW6FT.js.map → chunk-274UO7N7.js.map} +0 -0
- /package/dist/{chunk-3YHOU5IA.js.map → chunk-27KV27F6.js.map} +0 -0
- /package/dist/{chunk-GT76FWES.js.map → chunk-2OCUXPWT.js.map} +0 -0
- /package/dist/{chunk-MMUT4W5L.js.map → chunk-3N7YWOTX.js.map} +0 -0
- /package/dist/{chunk-OQGE5GSP.js.map → chunk-4L4SG26L.js.map} +0 -0
- /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
- /package/dist/{chunk-GZN2RP7D.js.map → chunk-7OLJBIKI.js.map} +0 -0
- /package/dist/{chunk-7E4S2NBD.js.map → chunk-7XSVJFA3.js.map} +0 -0
- /package/dist/{chunk-LE6VTYWQ.js.map → chunk-AHN5UNQP.js.map} +0 -0
- /package/dist/{chunk-DR7PLON5.js.map → chunk-AQBJ3XRD.js.map} +0 -0
- /package/dist/{chunk-GTIQUOYC.js.map → chunk-AUO4QNMI.js.map} +0 -0
- /package/dist/{chunk-HOZI7GOT.js.map → chunk-B5MJXVBP.js.map} +0 -0
- /package/dist/{chunk-VWKFQ4ZY.js.map → chunk-B6WOWVAA.js.map} +0 -0
- /package/dist/{chunk-2Y3VZILY.js.map → chunk-BF32BRMX.js.map} +0 -0
- /package/dist/{chunk-2OEECI2R.js.map → chunk-CATPBEZ3.js.map} +0 -0
- /package/dist/{chunk-NQ5O2NCJ.js.map → chunk-DBLOEIJ2.js.map} +0 -0
- /package/dist/{chunk-CTBDVZ5E.js.map → chunk-DQIPDAPH.js.map} +0 -0
- /package/dist/{chunk-TML65SGQ.js.map → chunk-E4JZV7ZY.js.map} +0 -0
- /package/dist/{chunk-CISJ7CUA.js.map → chunk-FPS7WKLY.js.map} +0 -0
- /package/dist/{chunk-UREDSNQS.js.map → chunk-FSHIEGAY.js.map} +0 -0
- /package/dist/{chunk-LE33VXJV.js.map → chunk-FY6CMZDG.js.map} +0 -0
- /package/dist/{chunk-UIPSSTMA.js.map → chunk-GCFC2MNR.js.map} +0 -0
- /package/dist/{chunk-24SPBLU4.js.map → chunk-H5P4XNTR.js.map} +0 -0
- /package/dist/{chunk-KGZXQIM5.js.map → chunk-H7TJX6MJ.js.map} +0 -0
- /package/dist/{chunk-3RWSYI6N.js.map → chunk-HMFIOE4P.js.map} +0 -0
- /package/dist/{chunk-ZBP735CV.js.map → chunk-HMZ6FUXY.js.map} +0 -0
- /package/dist/{chunk-S4PK55OH.js.map → chunk-HN2W55DC.js.map} +0 -0
- /package/dist/{chunk-HDYJ6YVI.js.map → chunk-HPS7HLN4.js.map} +0 -0
- /package/dist/{chunk-AMHVCMBW.js.map → chunk-HXLCETLB.js.map} +0 -0
- /package/dist/{chunk-MIOE5IN3.js.map → chunk-HZQ64QEY.js.map} +0 -0
- /package/dist/{chunk-35T6LCB2.js.map → chunk-I62QW2UL.js.map} +0 -0
- /package/dist/{chunk-4PWC4KAK.js.map → chunk-KAUW3OFC.js.map} +0 -0
- /package/dist/{chunk-TQDZQT6U.js.map → chunk-KFHW5TCM.js.map} +0 -0
- /package/dist/{chunk-AUGAC2OT.js.map → chunk-KT2YKHCH.js.map} +0 -0
- /package/dist/{chunk-F4QYUDXE.js.map → chunk-LFWGMR3F.js.map} +0 -0
- /package/dist/{chunk-NPZ5VWFE.js.map → chunk-LNEUE4BR.js.map} +0 -0
- /package/dist/{chunk-A4TWHQEF.js.map → chunk-MDBRRR3J.js.map} +0 -0
- /package/dist/{chunk-5VVXF3OS.js.map → chunk-MHRFRSQ6.js.map} +0 -0
- /package/dist/{chunk-YFRNONXL.js.map → chunk-N26ZASAC.js.map} +0 -0
- /package/dist/{chunk-QIZY55Z6.js.map → chunk-NPGI5DXP.js.map} +0 -0
- /package/dist/{chunk-RD63FPG6.js.map → chunk-NQF5U6FX.js.map} +0 -0
- /package/dist/{chunk-MI3J4O42.js.map → chunk-NTOCO72A.js.map} +0 -0
- /package/dist/{chunk-CKT5SR7F.js.map → chunk-OATKGUUI.js.map} +0 -0
- /package/dist/{chunk-3V4R55B4.js.map → chunk-P2C6X574.js.map} +0 -0
- /package/dist/{chunk-TP6QJATO.js.map → chunk-POI76GQV.js.map} +0 -0
- /package/dist/{chunk-EPW33OQJ.js.map → chunk-PZ3EFXL7.js.map} +0 -0
- /package/dist/{chunk-FKGYEK54.js.map → chunk-QCONJUK6.js.map} +0 -0
- /package/dist/{chunk-H27R5IVQ.js.map → chunk-RAO7FTMY.js.map} +0 -0
- /package/dist/{chunk-HHQYP6RM.js.map → chunk-RM5T4MA6.js.map} +0 -0
- /package/dist/{chunk-WDPOXO34.js.map → chunk-RRH5QWVS.js.map} +0 -0
- /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
- /package/dist/{chunk-4KGQZHCV.js.map → chunk-SPBUHC2K.js.map} +0 -0
- /package/dist/{chunk-T2JHHSPI.js.map → chunk-VAWAFQW3.js.map} +0 -0
- /package/dist/{chunk-TFCZOTQ5.js.map → chunk-VFESCAO4.js.map} +0 -0
- /package/dist/{chunk-JEMYDBKC.js.map → chunk-VLE433LA.js.map} +0 -0
- /package/dist/{chunk-7Y6CPXM5.js.map → chunk-W2MHGOUZ.js.map} +0 -0
- /package/dist/{chunk-NGXZQESA.js.map → chunk-WM6JHUPY.js.map} +0 -0
- /package/dist/{chunk-KSECMOHE.js.map → chunk-XAHY53IO.js.map} +0 -0
- /package/dist/{chunk-C6CWI43A.js.map → chunk-XJ62F6EA.js.map} +0 -0
- /package/dist/{chunk-IJ5DWALA.js.map → chunk-XMHTLWWE.js.map} +0 -0
- /package/dist/{chunk-FSLSISPI.js.map → chunk-Y3ESEQRI.js.map} +0 -0
- /package/dist/{chunk-YFIWCMVC.js.map → chunk-YAX5CGUY.js.map} +0 -0
- /package/dist/{chunk-337ZJ3PX.js.map → chunk-YPYI3YBK.js.map} +0 -0
- /package/dist/{chunk-RZUXHIRN.js.map → chunk-YXCSJQKQ.js.map} +0 -0
- /package/dist/{chunk-N3T4ALXV.js.map → chunk-Z6ZYGDCQ.js.map} +0 -0
- /package/dist/{chunk-RW32BYY3.js.map → chunk-ZJOXRK2G.js.map} +0 -0
- /package/dist/{chunk-2AJ5UNOF.js.map → chunk-ZPHHJPDG.js.map} +0 -0
- /package/dist/{chunk-H23Q55DS.js.map → chunk-ZV4K6E3S.js.map} +0 -0
- /package/dist/{claim-65UCFSNU.js.map → claim-VN6RHORQ.js.map} +0 -0
- /package/dist/{companies-PUU5HQPO.js.map → companies-UNXZLC4T.js.map} +0 -0
- /package/dist/{company-P64YHCCF.js.map → company-E7J2I4B5.js.map} +0 -0
- /package/dist/{complete-D7LIEFAQ.js.map → complete-TI6ME7P2.js.map} +0 -0
- /package/dist/{connect-OJEK3NSN.js.map → connect-VYCZ7APH.js.map} +0 -0
- /package/dist/{conversation-S2I75E4X.js.map → conversation-AVJMT6NK.js.map} +0 -0
- /package/dist/{conversion-report-JNWBTLA5.js.map → conversion-report-GK2FUT2R.js.map} +0 -0
- /package/dist/{conversion-upload-command-6OKMSO2T.js.map → conversion-upload-command-Q7LZFFZL.js.map} +0 -0
- /package/dist/{conversion-writes-2VOWP4RD.js.map → conversion-writes-STESFLTB.js.map} +0 -0
- /package/dist/{conversions-XQLNBKCS.js.map → conversions-6KDF5AVY.js.map} +0 -0
- /package/dist/{conversions-JGIBYLK5.js.map → conversions-JBRU7CGB.js.map} +0 -0
- /package/dist/{create-WTG4PLR7.js.map → create-7R5HTOI2.js.map} +0 -0
- /package/dist/{create-UBQF3F43.js.map → create-BGIE2YTE.js.map} +0 -0
- /package/dist/{create-URSL4J7P.js.map → create-HI53LEYE.js.map} +0 -0
- /package/dist/{create-DXRRIN2L.js.map → create-YVKJC5IT.js.map} +0 -0
- /package/dist/{creatives-KHU3PAMN.js.map → creatives-ACU2HGZW.js.map} +0 -0
- /package/dist/{creatives-MXMQDNL6.js.map → creatives-ISYALGKS.js.map} +0 -0
- /package/dist/{credentials-CMOO7W6D.js.map → credentials-UCROYYPD.js.map} +0 -0
- /package/dist/{critique-MABDKWHC.js.map → critique-SGEKRORA.js.map} +0 -0
- /package/dist/{critique-455CFJQ2.js.map → critique-SJLBIGD2.js.map} +0 -0
- /package/dist/{crm-LKQBWL7L.js.map → crm-OZ626TTR.js.map} +0 -0
- /package/dist/{crm-YAFF2LM2.js.map → crm-X7FX34QY.js.map} +0 -0
- /package/dist/{currency-JDAVYMD3.js.map → currency-HB3MFXLJ.js.map} +0 -0
- /package/dist/{customers-XQJTF7HT.js.map → customers-I3T6HJD4.js.map} +0 -0
- /package/dist/{delete-7OTBPZGJ.js.map → delete-24S5ICGH.js.map} +0 -0
- /package/dist/{delete-ZRMD5TG4.js.map → delete-ICXIKJZF.js.map} +0 -0
- /package/dist/{delete-ROD2G6IL.js.map → delete-RWZCVPYV.js.map} +0 -0
- /package/dist/{demographics-HM2TV4T2.js.map → demographics-PUJKNWCF.js.map} +0 -0
- /package/dist/{discard-55OBCTIR.js.map → discard-4GLM3TVC.js.map} +0 -0
- /package/dist/{discover-VEHKBNCY.js.map → discover-DLGO3VW6.js.map} +0 -0
- /package/dist/{domain-226C6VIF.js.map → domain-A4IVVFI6.js.map} +0 -0
- /package/dist/{download-UMEQIQKE.js.map → download-KIOTQW3Z.js.map} +0 -0
- /package/dist/{draft-V7VGPJK4.js.map → draft-4MKYX4VU.js.map} +0 -0
- /package/dist/{draft-MPSQIDMM.js.map → draft-6QUGODCB.js.map} +0 -0
- /package/dist/{draft-TUTXQNHP.js.map → draft-AMSBOSM2.js.map} +0 -0
- /package/dist/{draft-DUAFRL2G.js.map → draft-I7HIRQ6F.js.map} +0 -0
- /package/dist/{draft-S2QTWVIA.js.map → draft-IB5A3RFD.js.map} +0 -0
- /package/dist/{experiments-6UHDVVII.js.map → experiments-NW4GVPAF.js.map} +0 -0
- /package/dist/{facets-BZ5AFGHD.js.map → facets-SIY7OICY.js.map} +0 -0
- /package/dist/{feedback-A5DR3IMR.js.map → feedback-LUNPSQEO.js.map} +0 -0
- /package/dist/{feedback-record-KABFVNHS.js.map → feedback-record-ML67WVIX.js.map} +0 -0
- /package/dist/{fetch-XNE63FNS.js.map → fetch-T7OO6FDT.js.map} +0 -0
- /package/dist/{fit-T2D4E52B.js.map → fit-63FKT2JJ.js.map} +0 -0
- /package/dist/{flows-P5T4LNJ2.js.map → flows-RWQSQKUL.js.map} +0 -0
- /package/dist/{fonts-U3NGQYJN.js.map → fonts-UQ6ISHO3.js.map} +0 -0
- /package/dist/{forecast-UYBYSH3Y.js.map → forecast-AODSMD7S.js.map} +0 -0
- /package/dist/{forecast-TG5RS5DG.js.map → forecast-JTKQQYMN.js.map} +0 -0
- /package/dist/{funnel-D6YXU7C4.js.map → funnel-J5IJQPUP.js.map} +0 -0
- /package/dist/{generate-QG7GX6WO.js.map → generate-HSDSCKDW.js.map} +0 -0
- /package/dist/{get-TISXCTDV.js.map → get-VLS22SZR.js.map} +0 -0
- /package/dist/{get-E4VOTCE6.js.map → get-X6TC6UBK.js.map} +0 -0
- /package/dist/{google-UQLYCYSX.js.map → google-FOZYYKNY.js.map} +0 -0
- /package/dist/{google-ads-GBX5YHPT.js.map → google-ads-HBNPBUR4.js.map} +0 -0
- /package/dist/{history-BRWYSJQL.js.map → history-E25YCUQO.js.map} +0 -0
- /package/dist/{history-XOB23MLX.js.map → history-SHQVK5I7.js.map} +0 -0
- /package/dist/{history-M2KVZ2E7.js.map → history-ZNPAN36E.js.map} +0 -0
- /package/dist/{hubspot-YEZGTOM2.js.map → hubspot-WFJ22XGN.js.map} +0 -0
- /package/dist/{ideas-J6GCTQ6U.js.map → ideas-FCL5SDI4.js.map} +0 -0
- /package/dist/{images-55KBTRVO.js.map → images-SXBR3MLH.js.map} +0 -0
- /package/dist/{ingest-LKGF5E5V.js.map → ingest-UJBMV7PZ.js.map} +0 -0
- /package/dist/{ingest-QNV3B2ST.js.map → ingest-YRWIO6DV.js.map} +0 -0
- /package/dist/{insights-7CQJOBWX.js.map → insights-UMPXHRKD.js.map} +0 -0
- /package/dist/{inspect-WNPQXU4H.js.map → inspect-I2CJDQSA.js.map} +0 -0
- /package/dist/{intent-P75BDP4H.js.map → intent-NBP5IDND.js.map} +0 -0
- /package/dist/{keyword-gap-54F6CZLM.js.map → keyword-gap-67UJ2LDD.js.map} +0 -0
- /package/dist/{keyword-metrics-SJLYED7I.js.map → keyword-metrics-U6IWGT4N.js.map} +0 -0
- /package/dist/{keywords-for-site-CY2XUFR4.js.map → keywords-for-site-PXID3WEP.js.map} +0 -0
- /package/dist/{landing-DZLICA3P.js.map → landing-PIQYR6XI.js.map} +0 -0
- /package/dist/{languages-PEGOE365.js.map → languages-TM7SHGRO.js.map} +0 -0
- /package/dist/{leads-WBZP37CG.js.map → leads-DOFRCD7J.js.map} +0 -0
- /package/dist/{learn-QNOTY4JA.js.map → learn-VMNUQL6D.js.map} +0 -0
- /package/dist/{line-item-writes-6RNUOFKK.js.map → line-item-writes-6MCXCXYM.js.map} +0 -0
- /package/dist/{line-items-YOBU6DYQ.js.map → line-items-X3GEB5P7.js.map} +0 -0
- /package/dist/{link-7PEVIIUA.js.map → link-TX5PWJBH.js.map} +0 -0
- /package/dist/{linkedin-YYNBLBM3.js.map → linkedin-3DYXRHL7.js.map} +0 -0
- /package/dist/{linkedin-person-JGQTT54I.js.map → linkedin-person-TP7DAJST.js.map} +0 -0
- /package/dist/{list-H2XBHKQK.js.map → list-2WFSHJ2I.js.map} +0 -0
- /package/dist/{list-IFVBO2E2.js.map → list-GMMNLVCA.js.map} +0 -0
- /package/dist/{list-N5FHLG2Z.js.map → list-I77SLBPO.js.map} +0 -0
- /package/dist/{locations-SHYN5J4Q.js.map → locations-HAXZUHJP.js.map} +0 -0
- /package/dist/{locations-MXWGZIGU.js.map → locations-JFBM4XBL.js.map} +0 -0
- /package/dist/{log-HCWZ6C4R.js.map → log-3HSJ3RYY.js.map} +0 -0
- /package/dist/{make-VZKIB23N.js.map → make-OKIBB4LM.js.map} +0 -0
- /package/dist/{map-RFMJ4AF7.js.map → map-O63QGACI.js.map} +0 -0
- /package/dist/{mcp-VRFT3QJW.js.map → mcp-GJEZ37AM.js.map} +0 -0
- /package/dist/{media-sources-NTZRJGFU.js.map → media-sources-KE6XXCTY.js.map} +0 -0
- /package/dist/{members-EOIF2XN3.js.map → members-WF453RSC.js.map} +0 -0
- /package/dist/{meta-MBW5LM5V.js.map → meta-6IFYEOZL.js.map} +0 -0
- /package/dist/{metrics-25LYUEB7.js.map → metrics-XWHE4LYQ.js.map} +0 -0
- /package/dist/{models-EU3NO4IY.js.map → models-3C6BWHEC.js.map} +0 -0
- /package/dist/{normalize-UQIZEJHT.js.map → normalize-HWMMP6LX.js.map} +0 -0
- /package/dist/{options-Y6JI2ZVZ.js.map → options-XGYNQCQM.js.map} +0 -0
- /package/dist/{organization-TO2V7AWX.js.map → organization-X27LDCZU.js.map} +0 -0
- /package/dist/{performance-V26JUNGC.js.map → performance-JLQIJK4V.js.map} +0 -0
- /package/dist/{performance-YAUOH75F.js.map → performance-XYGEV4TX.js.map} +0 -0
- /package/dist/{pixels-NLH2PN6Q.js.map → pixels-PMPL63ON.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-3SLFZQDA.js.map → promoted-tweet-writes-7DGO5Z2G.js.map} +0 -0
- /package/dist/{promoted-tweets-3WRSJYKK.js.map → promoted-tweets-SPBZXSYI.js.map} +0 -0
- /package/dist/{publish-T6ITLSJA.js.map → publish-RRJRO5DC.js.map} +0 -0
- /package/dist/{query-SRJXJVDY.js.map → query-CTQGGPXW.js.map} +0 -0
- /package/dist/{reddit-O2TNBMD6.js.map → reddit-OCRVXWJC.js.map} +0 -0
- /package/dist/{refresh-N726O36Z.js.map → refresh-M6BXIMQD.js.map} +0 -0
- /package/dist/{release-A5HKTUMV.js.map → release-ZRKZEBEB.js.map} +0 -0
- /package/dist/{relevant-pages-VJHTUJMB.js.map → relevant-pages-NPUSAV3K.js.map} +0 -0
- /package/dist/{remove-BHUYRNRU.js.map → remove-JW3RRNB6.js.map} +0 -0
- /package/dist/{reopen-TTDYNANZ.js.map → reopen-G6ZE5YNP.js.map} +0 -0
- /package/dist/{rerun-KFTQ6Y64.js.map → rerun-OKOYKQXC.js.map} +0 -0
- /package/dist/{research-YWON4E4H.js.map → research-DZZBRX4V.js.map} +0 -0
- /package/dist/{research-FISSUVIK.js.map → research-NLZ34525.js.map} +0 -0
- /package/dist/{reset-SSNHRP5C.js.map → reset-ABZVGJE6.js.map} +0 -0
- /package/dist/{reset-VTNVCE23.js.map → reset-JYER2WPC.js.map} +0 -0
- /package/dist/{resolve-375FALNN.js.map → resolve-EH3ONOYE.js.map} +0 -0
- /package/dist/{retry-PNS6RWJ6.js.map → retry-LKJWY5BC.js.map} +0 -0
- /package/dist/{retry-TLGYZ6RJ.js.map → retry-VY76DPS5.js.map} +0 -0
- /package/dist/{revenue-6L2AY7L7.js.map → revenue-7GIOE3TG.js.map} +0 -0
- /package/dist/{rules-F6J4V7PZ.js.map → rules-NUNJBT6R.js.map} +0 -0
- /package/dist/{rules-add-7UI5A3MJ.js.map → rules-add-7FB67IDD.js.map} +0 -0
- /package/dist/{run-B77D2TGX.js.map → run-3GV2FYWG.js.map} +0 -0
- /package/dist/{run-UN4HXEGZ.js.map → run-OVOXZUXN.js.map} +0 -0
- /package/dist/{scaffold-ad-74CEBCRR.js.map → scaffold-ad-7D5EUDU7.js.map} +0 -0
- /package/dist/{scaffold-static-ad-2IMVWNYB.js.map → scaffold-static-ad-TWF2RRM2.js.map} +0 -0
- /package/dist/{scaffold-video-JDCX3BIT.js.map → scaffold-video-4P2ONEQV.js.map} +0 -0
- /package/dist/{schedule-WK5MRYCJ.js.map → schedule-XQ725JG6.js.map} +0 -0
- /package/dist/{scheduled-agents-2NTFBABN.js.map → scheduled-agents-KBSD55GW.js.map} +0 -0
- /package/dist/{schema-BBC6AARZ.js.map → schema-WJVWY4IA.js.map} +0 -0
- /package/dist/{search-KC4QRMU2.js.map → search-KQGMLU2Z.js.map} +0 -0
- /package/dist/{select-SZAJR4QY.js.map → select-CLD5MFCK.js.map} +0 -0
- /package/dist/{set-prompt-KHB4JJV2.js.map → set-prompt-COD76I6E.js.map} +0 -0
- /package/dist/{setup-links-SJVDPNOF.js.map → setup-links-H5L5CJJN.js.map} +0 -0
- /package/dist/{shopify-MODNP6LT.js.map → shopify-M2I65ZB5.js.map} +0 -0
- /package/dist/{site-5K73B2MI.js.map → site-AIJK3MNO.js.map} +0 -0
- /package/dist/{sources-2E6EK6YK.js.map → sources-JRMCBVLK.js.map} +0 -0
- /package/dist/{sources-S7LAV2EP.js.map → sources-YVDTULK6.js.map} +0 -0
- /package/dist/{stale-3IPYZ7BI.js.map → stale-AVBULN3A.js.map} +0 -0
- /package/dist/{status-6QTJSJN7.js.map → status-RXA4BBXZ.js.map} +0 -0
- /package/dist/{studio-4QOFG7MQ.js.map → studio-C2UVCTDD.js.map} +0 -0
- /package/dist/{sync-37P7TZQH.js.map → sync-CMYHAJSZ.js.map} +0 -0
- /package/dist/{sync-definition-CDQCNCU2.js.map → sync-definition-IKI2NFUO.js.map} +0 -0
- /package/dist/{tags-2VZUCNNH.js.map → tags-5IVIDOPC.js.map} +0 -0
- /package/dist/{tags-FVRIF3XS.js.map → tags-5L5MV6XZ.js.map} +0 -0
- /package/dist/{tags-SS7FE52N.js.map → tags-LIG4SXDB.js.map} +0 -0
- /package/dist/{tags-CBINFGAN.js.map → tags-LRFFVAZ3.js.map} +0 -0
- /package/dist/{tags-OB24PQKE.js.map → tags-VMMVSG6J.js.map} +0 -0
- /package/dist/{targeting-criteria-ECC662DL.js.map → targeting-criteria-AMVFYZ2H.js.map} +0 -0
- /package/dist/{targets-GIRHNZ4W.js.map → targets-RE24B2LL.js.map} +0 -0
- /package/dist/{testimonials-IEJ24MH7.js.map → testimonials-FWJRO4MB.js.map} +0 -0
- /package/dist/{themes-JBX6W4SP.js.map → themes-32CUPT4M.js.map} +0 -0
- /package/dist/{top-companies-POSJMWSB.js.map → top-companies-6GI6AWGA.js.map} +0 -0
- /package/dist/{transcript-FCKURXTT.js.map → transcript-XMWBCLQO.js.map} +0 -0
- /package/dist/{translate-F4B3WEJO.js.map → translate-2UYIIMEG.js.map} +0 -0
- /package/dist/{triggers-DRAKT5QB.js.map → triggers-WCI5DERM.js.map} +0 -0
- /package/dist/{unlink-OEUJXG64.js.map → unlink-MM23NOTI.js.map} +0 -0
- /package/dist/{unstage-F362CYM7.js.map → unstage-YQXFED4J.js.map} +0 -0
- /package/dist/{update-BAE3BEEW.js.map → update-3BGBYU5R.js.map} +0 -0
- /package/dist/{update-4CVNP3B5.js.map → update-A53QG3XM.js.map} +0 -0
- /package/dist/{update-XOSKQEMK.js.map → update-S2CJ5FNS.js.map} +0 -0
- /package/dist/{update-UME7HHOC.js.map → update-VMN5BHTP.js.map} +0 -0
- /package/dist/{upload-BABKWQIN.js.map → upload-VT7NPRAM.js.map} +0 -0
- /package/dist/{url-options-JSRAMMEM.js.map → url-options-JJIA77MZ.js.map} +0 -0
- /package/dist/{url-params-ZVIYOHM2.js.map → url-params-RFMWR2PZ.js.map} +0 -0
- /package/dist/{validate-DN44TVXS.js.map → validate-KMY5ZVQX.js.map} +0 -0
- /package/dist/{videos-OVVH4LC2.js.map → videos-DZT3TMKO.js.map} +0 -0
- /package/dist/{viewer-check-SOPRTRNX.js.map → viewer-check-QHXKGGH2.js.map} +0 -0
- /package/dist/{web-PLEFETCJ.js.map → web-HP45GOIL.js.map} +0 -0
- /package/dist/{winning-ads-HIP6PWPL.js.map → winning-ads-ZJVGEPZ7.js.map} +0 -0
- /package/dist/{write-commands-U3JZ6UHG.js.map → write-commands-YKWSFUO5.js.map} +0 -0
- /package/dist/{x-ROOD4SQH.js.map → x-V76UQMEM.js.map} +0 -0
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
import {
|
|
2
|
+
placementFormatNote,
|
|
3
|
+
previewFormatForPosition
|
|
4
|
+
} from "./chunk-GC5P4KWY.js";
|
|
5
|
+
import "./chunk-GDFJOCDO.js";
|
|
6
|
+
import {
|
|
7
|
+
csvOrJson,
|
|
8
|
+
getDateRange,
|
|
9
|
+
handleMetaError
|
|
10
|
+
} from "./chunk-KDDHMKTU.js";
|
|
11
|
+
import {
|
|
12
|
+
metaBreakdownSyncedHint,
|
|
13
|
+
syncedFirstHint
|
|
14
|
+
} from "./chunk-Y2FAUFWK.js";
|
|
15
|
+
import "./chunk-QALAJNBG.js";
|
|
16
|
+
import {
|
|
17
|
+
writeAdsJson,
|
|
18
|
+
writeAdsOutput,
|
|
19
|
+
writeJsonEnvelope
|
|
20
|
+
} from "./chunk-EAHBTBVR.js";
|
|
21
|
+
import {
|
|
22
|
+
NO_CACHE_ARG
|
|
23
|
+
} from "./chunk-3PG7O3ZW.js";
|
|
24
|
+
import "./chunk-SOPVIIUW.js";
|
|
25
|
+
import "./chunk-G4FG5EQO.js";
|
|
26
|
+
import {
|
|
27
|
+
apiGet,
|
|
28
|
+
apiPost
|
|
29
|
+
} from "./chunk-C35UMKYG.js";
|
|
30
|
+
import "./chunk-ELAYD7O3.js";
|
|
31
|
+
import "./chunk-LBIF6FJY.js";
|
|
32
|
+
import "./chunk-TRXGJZDL.js";
|
|
33
|
+
import "./chunk-YQSBHWOI.js";
|
|
34
|
+
|
|
35
|
+
// src/commands/ads/meta/insights.ts
|
|
36
|
+
import { defineCommand } from "citty";
|
|
37
|
+
|
|
38
|
+
// src/commands/ads/meta/insights-actions.ts
|
|
39
|
+
var MIXED_ACTION_FIELDS = /* @__PURE__ */ new Set([
|
|
40
|
+
"actions",
|
|
41
|
+
"unique_actions",
|
|
42
|
+
"action_values",
|
|
43
|
+
"cost_per_action_type",
|
|
44
|
+
"cost_per_unique_action_type",
|
|
45
|
+
"conversions",
|
|
46
|
+
"conversion_values",
|
|
47
|
+
"cost_per_conversion"
|
|
48
|
+
]);
|
|
49
|
+
var ENGAGEMENT_TYPES = /* @__PURE__ */ new Set([
|
|
50
|
+
"page_engagement",
|
|
51
|
+
"post_engagement",
|
|
52
|
+
"post",
|
|
53
|
+
"comment",
|
|
54
|
+
"like",
|
|
55
|
+
"photo_view",
|
|
56
|
+
"video_view",
|
|
57
|
+
"post_reaction",
|
|
58
|
+
"post_interaction_gross",
|
|
59
|
+
"post_interaction_net"
|
|
60
|
+
]);
|
|
61
|
+
var ENGAGEMENT_PREFIX = "onsite_conversion.post_";
|
|
62
|
+
var COMBINED_TYPE = /_add_(?:\d+_s_calls|meta_leads)$/;
|
|
63
|
+
var ALIAS_PREFIXES = [
|
|
64
|
+
"omni_",
|
|
65
|
+
"offsite_conversion.fb_pixel_",
|
|
66
|
+
"onsite_web_app_",
|
|
67
|
+
"onsite_web_",
|
|
68
|
+
"app_custom_event.fb_mobile_"
|
|
69
|
+
];
|
|
70
|
+
var LEAD_ALIASES = /* @__PURE__ */ new Set(["onsite_conversion.lead_grouped", "leadgen_grouped"]);
|
|
71
|
+
function canonicalType(type) {
|
|
72
|
+
if (LEAD_ALIASES.has(type)) return "lead";
|
|
73
|
+
if (type.startsWith("offsite_conversion.fb_pixel_custom")) return type;
|
|
74
|
+
const prefix = ALIAS_PREFIXES.find((p) => type.startsWith(p));
|
|
75
|
+
return prefix ? type.slice(prefix.length) : type;
|
|
76
|
+
}
|
|
77
|
+
function isNoise(type) {
|
|
78
|
+
return ENGAGEMENT_TYPES.has(type) || type.startsWith(ENGAGEMENT_PREFIX) || COMBINED_TYPE.test(type);
|
|
79
|
+
}
|
|
80
|
+
function isActionArray(value) {
|
|
81
|
+
return Array.isArray(value) && value.every((entry) => typeof entry === "object" && entry !== null && typeof entry.action_type === "string");
|
|
82
|
+
}
|
|
83
|
+
function representative(canonical, family) {
|
|
84
|
+
const pick = family.find((entry) => entry.action_type === `omni_${canonical}`) ?? family.find((entry) => entry.action_type === canonical) ?? family.reduce((best, entry) => Number(entry.value) > Number(best.value) ? entry : best);
|
|
85
|
+
return { ...pick, action_type: canonical };
|
|
86
|
+
}
|
|
87
|
+
function sliceOf(entry) {
|
|
88
|
+
return Object.entries(entry).filter(([key]) => key.startsWith("action_") && key !== "action_type");
|
|
89
|
+
}
|
|
90
|
+
function collapse(entries) {
|
|
91
|
+
const families = /* @__PURE__ */ new Map();
|
|
92
|
+
for (const entry of entries) {
|
|
93
|
+
const key = JSON.stringify([canonicalType(entry.action_type), sliceOf(entry)]);
|
|
94
|
+
families.set(key, [...families.get(key) ?? [], entry]);
|
|
95
|
+
}
|
|
96
|
+
return [...families.values()].map((family) => representative(canonicalType(family[0]?.action_type ?? ""), family));
|
|
97
|
+
}
|
|
98
|
+
function keepNamed(entries, wanted) {
|
|
99
|
+
const raw = entries.filter(
|
|
100
|
+
(entry) => wanted.includes(entry.action_type) && canonicalType(entry.action_type) !== entry.action_type || wanted.some((name) => entry.action_type.endsWith(`.${name}`))
|
|
101
|
+
);
|
|
102
|
+
const named = collapse(entries).filter((entry) => wanted.includes(entry.action_type));
|
|
103
|
+
return [...named, ...raw.filter((entry) => !named.some((kept) => kept.action_type === entry.action_type))];
|
|
104
|
+
}
|
|
105
|
+
function compactArray(field, entries, wanted, dropped) {
|
|
106
|
+
if (!MIXED_ACTION_FIELDS.has(field)) return collapse(entries);
|
|
107
|
+
if (wanted) return keepNamed(entries, wanted);
|
|
108
|
+
const kept = entries.filter((entry) => {
|
|
109
|
+
if (!isNoise(entry.action_type)) return true;
|
|
110
|
+
dropped.add(entry.action_type);
|
|
111
|
+
return false;
|
|
112
|
+
});
|
|
113
|
+
return collapse(kept);
|
|
114
|
+
}
|
|
115
|
+
function compactInsightsRows(rows, options) {
|
|
116
|
+
const dropped = /* @__PURE__ */ new Set();
|
|
117
|
+
const compacted = rows.map(
|
|
118
|
+
(row) => Object.fromEntries(
|
|
119
|
+
Object.entries(row).map(([field, value]) => [
|
|
120
|
+
field,
|
|
121
|
+
isActionArray(value) ? compactArray(field, value, options.actionTypes, dropped) : value
|
|
122
|
+
])
|
|
123
|
+
)
|
|
124
|
+
);
|
|
125
|
+
return { rows: compacted, dropped: [...dropped] };
|
|
126
|
+
}
|
|
127
|
+
var COUNT_FIELDS = /* @__PURE__ */ new Set(["actions", "unique_actions", "conversions"]);
|
|
128
|
+
var CUSTOM_EVENT_PREFIX = "offsite_conversion.fb_pixel_custom";
|
|
129
|
+
function columnOf(field, entry) {
|
|
130
|
+
const slice = sliceOf(entry).map(([, value]) => String(value));
|
|
131
|
+
return slice.length === 0 ? `${field}.${entry.action_type}` : `${field}.${entry.action_type}[${slice.join(",")}]`;
|
|
132
|
+
}
|
|
133
|
+
function round2(value) {
|
|
134
|
+
return Math.round(value * 100) / 100;
|
|
135
|
+
}
|
|
136
|
+
function pricedEntry(field, entry, priceAll) {
|
|
137
|
+
if (!COUNT_FIELDS.has(field) || sliceOf(entry).length > 0) return false;
|
|
138
|
+
return priceAll || entry.action_type.startsWith(CUSTOM_EVENT_PREFIX);
|
|
139
|
+
}
|
|
140
|
+
function insightsTable(rows, fields, options = {}) {
|
|
141
|
+
const priceAll = options.priceAll ?? false;
|
|
142
|
+
const period = ["date_start", "date_stop"].filter(
|
|
143
|
+
(field) => !fields.includes(field) && rows.some((row) => row[field] !== void 0)
|
|
144
|
+
);
|
|
145
|
+
const columns = [...period, ...fields].flatMap((field) => {
|
|
146
|
+
const counts = /* @__PURE__ */ new Set();
|
|
147
|
+
const costs = /* @__PURE__ */ new Set();
|
|
148
|
+
for (const row of rows) {
|
|
149
|
+
const value = row[field];
|
|
150
|
+
if (!isActionArray(value)) continue;
|
|
151
|
+
for (const entry of value) {
|
|
152
|
+
counts.add(columnOf(field, entry));
|
|
153
|
+
if (pricedEntry(field, entry, priceAll) && row.spend !== void 0)
|
|
154
|
+
costs.add(`cost_per.${columnOf(field, entry)}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return counts.size === 0 ? [field] : [...counts, ...costs];
|
|
158
|
+
});
|
|
159
|
+
const flat = rows.map((row) => {
|
|
160
|
+
const out = {};
|
|
161
|
+
const spend = Number(row.spend);
|
|
162
|
+
for (const [field, value] of Object.entries(row)) {
|
|
163
|
+
if (!isActionArray(value)) {
|
|
164
|
+
out[field] = value;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
for (const entry of value) {
|
|
168
|
+
const column = columnOf(field, entry);
|
|
169
|
+
out[column] = entry.value;
|
|
170
|
+
const count = Number(entry.value);
|
|
171
|
+
if (pricedEntry(field, entry, priceAll) && Number.isFinite(spend) && count > 0) {
|
|
172
|
+
out[`cost_per.${column}`] = round2(spend / count);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
});
|
|
178
|
+
return { rows: flat, columns };
|
|
179
|
+
}
|
|
180
|
+
var FUNNEL_COLUMNS = ["result_type", "results", "cvr", "cost_per_result"];
|
|
181
|
+
var RESULT_PRIORITY = [
|
|
182
|
+
"purchase",
|
|
183
|
+
"complete_registration",
|
|
184
|
+
"lead",
|
|
185
|
+
"submit_application",
|
|
186
|
+
"subscribe",
|
|
187
|
+
"start_trial",
|
|
188
|
+
"schedule",
|
|
189
|
+
"contact",
|
|
190
|
+
"initiate_checkout",
|
|
191
|
+
"add_payment_info",
|
|
192
|
+
"add_to_cart"
|
|
193
|
+
];
|
|
194
|
+
function countOf(actions, type) {
|
|
195
|
+
return actions.filter((entry) => entry.action_type === type).reduce((sum, entry) => sum + Number(entry.value), 0);
|
|
196
|
+
}
|
|
197
|
+
function resultTypeOf(actions, wanted) {
|
|
198
|
+
const present = new Set(actions.map((entry) => entry.action_type));
|
|
199
|
+
const named = (wanted ?? []).find((name) => [...present].some((type) => type === name || type.endsWith(`.${name}`)));
|
|
200
|
+
if (named) return [...present].find((type) => type === named || type.endsWith(`.${named}`)) ?? null;
|
|
201
|
+
const standard = RESULT_PRIORITY.find((type) => present.has(type));
|
|
202
|
+
if (standard) return standard;
|
|
203
|
+
const custom = actions.filter((entry) => entry.action_type.startsWith(CUSTOM_EVENT_PREFIX)).sort((a, b) => Number(b.value) - Number(a.value));
|
|
204
|
+
return custom[0]?.action_type ?? null;
|
|
205
|
+
}
|
|
206
|
+
function withFunnelResults(rows, options) {
|
|
207
|
+
return rows.map((row) => {
|
|
208
|
+
const actions = isActionArray(row.actions) ? row.actions : [];
|
|
209
|
+
const resultType = resultTypeOf(actions, options.actionTypes);
|
|
210
|
+
const results = resultType === null ? null : countOf(actions, resultType);
|
|
211
|
+
const linkClicks = row.inline_link_clicks !== void 0 ? Number(row.inline_link_clicks) : countOf(actions, "link_click");
|
|
212
|
+
const spend = Number(row.spend);
|
|
213
|
+
return {
|
|
214
|
+
...row,
|
|
215
|
+
result_type: resultType,
|
|
216
|
+
results,
|
|
217
|
+
cvr: results !== null && linkClicks > 0 ? round2(results / linkClicks * 100) : null,
|
|
218
|
+
cost_per_result: results !== null && results > 0 && Number.isFinite(spend) ? round2(spend / results) : null
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// src/commands/ads/meta/placement-delivery.ts
|
|
224
|
+
var MIN_IMPRESSIONS = 20;
|
|
225
|
+
var SILENT_FRACTION_OF_REFERENCE = 0.1;
|
|
226
|
+
var PLAYING_REFERENCE_RATE = 0.5;
|
|
227
|
+
function toNumber(value) {
|
|
228
|
+
const n = Number(value);
|
|
229
|
+
return Number.isFinite(n) ? n : 0;
|
|
230
|
+
}
|
|
231
|
+
function sumActionValues(value) {
|
|
232
|
+
if (!Array.isArray(value)) return 0;
|
|
233
|
+
return value.reduce((total, entry) => {
|
|
234
|
+
const item = entry;
|
|
235
|
+
return total + toNumber(item?.value);
|
|
236
|
+
}, 0);
|
|
237
|
+
}
|
|
238
|
+
function aggregate(rows) {
|
|
239
|
+
const byPlacement = /* @__PURE__ */ new Map();
|
|
240
|
+
let totalImpressions = 0;
|
|
241
|
+
for (const row of rows) {
|
|
242
|
+
const position = row.platform_position;
|
|
243
|
+
if (typeof position !== "string" || position.length === 0) continue;
|
|
244
|
+
const platform = typeof row.publisher_platform === "string" ? row.publisher_platform : "";
|
|
245
|
+
const impressions = toNumber(row.impressions);
|
|
246
|
+
totalImpressions += impressions;
|
|
247
|
+
const key = `${platform}/${position}`;
|
|
248
|
+
const current = byPlacement.get(key) ?? { platform, position, impressions: 0, plays: 0, playRate: 0, share: 0 };
|
|
249
|
+
current.impressions += impressions;
|
|
250
|
+
current.plays += sumActionValues(row.video_play_actions);
|
|
251
|
+
byPlacement.set(key, current);
|
|
252
|
+
}
|
|
253
|
+
return [...byPlacement.values()].map((placement) => ({
|
|
254
|
+
...placement,
|
|
255
|
+
playRate: placement.impressions > 0 ? placement.plays / placement.impressions : 0,
|
|
256
|
+
share: totalImpressions > 0 ? placement.impressions / totalImpressions : 0
|
|
257
|
+
}));
|
|
258
|
+
}
|
|
259
|
+
function previewCommand(placement) {
|
|
260
|
+
const format = previewFormatForPosition(placement.position, placement.platform);
|
|
261
|
+
return format ? `\`baker ads meta preview --creative-id <id> --placement ${placement.position} --platform ${placement.platform}\`` : `no preview format is known for ${placement.position}, so Meta's renderer cannot confirm it \u2014 say the placement is unverified rather than filling the gap`;
|
|
262
|
+
}
|
|
263
|
+
function isSingleAdQuery(rows) {
|
|
264
|
+
const adIds = /* @__PURE__ */ new Set();
|
|
265
|
+
for (const row of rows) {
|
|
266
|
+
if (typeof row.ad_id !== "string" || row.ad_id.length === 0) return false;
|
|
267
|
+
adIds.add(row.ad_id);
|
|
268
|
+
}
|
|
269
|
+
return adIds.size === 1;
|
|
270
|
+
}
|
|
271
|
+
function placementDeliveryHints(rows) {
|
|
272
|
+
const carriesVideoMetrics = rows.some((row) => Array.isArray(row.video_play_actions));
|
|
273
|
+
if (!carriesVideoMetrics || !isSingleAdQuery(rows)) return [];
|
|
274
|
+
const placements = aggregate(rows);
|
|
275
|
+
const judgeable = placements.filter((p) => p.impressions >= MIN_IMPRESSIONS);
|
|
276
|
+
const impressions = judgeable.reduce((total, p) => total + p.impressions, 0);
|
|
277
|
+
const reference = impressions > 0 ? judgeable.reduce((total, p) => total + p.plays, 0) / impressions : 0;
|
|
278
|
+
if (reference < PLAYING_REFERENCE_RATE) return [];
|
|
279
|
+
const silent = judgeable.filter((p) => p.playRate < reference * SILENT_FRACTION_OF_REFERENCE).sort((a, b) => b.impressions - a.impressions);
|
|
280
|
+
if (silent.length === 0) {
|
|
281
|
+
const worst = [...judgeable].sort((a, b) => a.playRate - b.playRate)[0];
|
|
282
|
+
return [
|
|
283
|
+
`Checked every placement above ${MIN_IMPRESSIONS} impressions against this ad's own play rate (${(reference * 100).toFixed(0)}%): no placement is failing to play the video${worst ? `, the lowest being ${worst.platform}/${worst.position} at ${(worst.playRate * 100).toFixed(0)}%` : ""}. So placements do not explain a "it shows as a still image" report \u2014 rule out autoplay off or data saver in the viewer's own app, which renders every video as its cover frame account-wide.`
|
|
284
|
+
];
|
|
285
|
+
}
|
|
286
|
+
const hints = silent.map((placement) => {
|
|
287
|
+
const note = placementFormatNote(placement.position);
|
|
288
|
+
const documented = note ? ` Meta documents this placement: ${note.note}` : "";
|
|
289
|
+
return `${placement.platform}/${placement.position} delivered ${placement.impressions.toLocaleString("en-US")} impressions (${(placement.share * 100).toFixed(1)}% of the total) and ${placement.plays.toLocaleString("en-US")} video plays \u2014 it may not be rendering the video. This is account evidence, not a rule: confirm what Meta renders there with ${previewCommand(placement)} before you say anything about it.${documented}`;
|
|
290
|
+
});
|
|
291
|
+
const combinedShare = silent.reduce((total, placement) => total + placement.share, 0) * 100;
|
|
292
|
+
hints.push(
|
|
293
|
+
`Those placements are ${combinedShare.toFixed(1)}% of delivery in this query. State that share before proposing to remove them \u2014 and note that removing placements from a live ad set is a targeting change, which Meta counts as a significant edit that re-enters the learning phase.`
|
|
294
|
+
);
|
|
295
|
+
return hints;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// src/commands/ads/meta/presets.ts
|
|
299
|
+
var INSIGHTS_INTENTS = {
|
|
300
|
+
baseline: {
|
|
301
|
+
name: "baseline",
|
|
302
|
+
description: "Spend, impressions, clicks, CTR, CPC, CPM. The default question: 'how is delivery?'",
|
|
303
|
+
fields: ["impressions", "reach", "frequency", "spend", "clicks", "ctr", "cpc", "cpm"]
|
|
304
|
+
},
|
|
305
|
+
revenue: {
|
|
306
|
+
name: "revenue",
|
|
307
|
+
description: "Spend, conversions, action_values, purchase_roas. 'How much money are we making?'",
|
|
308
|
+
fields: ["spend", "actions", "action_values", "conversions", "conversion_values", "purchase_roas"],
|
|
309
|
+
actionBreakdowns: ["action_type"]
|
|
310
|
+
},
|
|
311
|
+
funnel: {
|
|
312
|
+
name: "funnel",
|
|
313
|
+
description: "Impression \u2192 click \u2192 landing page \u2192 action. 'Where do users drop off?'",
|
|
314
|
+
fields: ["impressions", "clicks", "inline_link_clicks", "outbound_clicks", "actions", "spend"],
|
|
315
|
+
actionBreakdowns: ["action_type"]
|
|
316
|
+
},
|
|
317
|
+
ranking: {
|
|
318
|
+
name: "ranking",
|
|
319
|
+
description: "Quality, engagement, conversion-rate rankings. 'Which creatives need a refresh?'",
|
|
320
|
+
fields: ["impressions", "spend", "ctr", "quality_ranking", "engagement_rate_ranking", "conversion_rate_ranking"]
|
|
321
|
+
},
|
|
322
|
+
video: {
|
|
323
|
+
name: "video",
|
|
324
|
+
description: "Watch funnel, thruplay cost. 'How are video creatives holding attention?'",
|
|
325
|
+
fields: [
|
|
326
|
+
"impressions",
|
|
327
|
+
"spend",
|
|
328
|
+
"video_play_actions",
|
|
329
|
+
"video_p25_watched_actions",
|
|
330
|
+
"video_p50_watched_actions",
|
|
331
|
+
"video_p75_watched_actions",
|
|
332
|
+
"video_p100_watched_actions",
|
|
333
|
+
"video_thruplay_watched_actions",
|
|
334
|
+
"cost_per_thruplay"
|
|
335
|
+
]
|
|
336
|
+
},
|
|
337
|
+
identity: {
|
|
338
|
+
name: "identity",
|
|
339
|
+
description: "Just the names + spend \u2014 for cheap roll-up summaries.",
|
|
340
|
+
fields: ["spend", "impressions"]
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
var IDENTITY_FIELDS_BY_LEVEL = {
|
|
344
|
+
account: ["account_id", "account_name", "account_currency"],
|
|
345
|
+
campaign: ["campaign_id", "campaign_name", "objective"],
|
|
346
|
+
adset: ["adset_id", "adset_name", "campaign_id", "campaign_name"],
|
|
347
|
+
ad: ["ad_id", "ad_name", "adset_id", "adset_name", "campaign_id", "campaign_name"]
|
|
348
|
+
};
|
|
349
|
+
function composeFields(intent, level) {
|
|
350
|
+
const intentFields = INSIGHTS_INTENTS[intent].fields;
|
|
351
|
+
const identity = IDENTITY_FIELDS_BY_LEVEL[level];
|
|
352
|
+
const seen = /* @__PURE__ */ new Set();
|
|
353
|
+
const out = [];
|
|
354
|
+
for (const f of [...identity, ...intentFields]) {
|
|
355
|
+
if (!seen.has(f)) {
|
|
356
|
+
seen.add(f);
|
|
357
|
+
out.push(f);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return out;
|
|
361
|
+
}
|
|
362
|
+
function getIntent(name) {
|
|
363
|
+
return INSIGHTS_INTENTS[name];
|
|
364
|
+
}
|
|
365
|
+
function listIntents() {
|
|
366
|
+
return Object.values(INSIGHTS_INTENTS);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// src/commands/ads/meta/insights.ts
|
|
370
|
+
var POLL_FIRST_MS = 5e3;
|
|
371
|
+
var POLL_LONGEST_MS = 3e4;
|
|
372
|
+
var POLL_MAX_MS = 10 * 6e4;
|
|
373
|
+
function asyncPollDelayMs(attempt) {
|
|
374
|
+
return Math.min(Math.round(POLL_FIRST_MS * 1.5 ** attempt), POLL_LONGEST_MS);
|
|
375
|
+
}
|
|
376
|
+
var DEFAULT_ATTRIBUTION_WINDOWS = ["7d_click", "1d_view"];
|
|
377
|
+
var DEFAULT_FILTERING = [{ field: "impressions", operator: "GREATER_THAN", value: 0 }];
|
|
378
|
+
function commaSplit(input) {
|
|
379
|
+
if (!input) return void 0;
|
|
380
|
+
return input.split(",").map((s) => s.trim()).filter(Boolean);
|
|
381
|
+
}
|
|
382
|
+
function parseFiltering(raw) {
|
|
383
|
+
if (!raw) return void 0;
|
|
384
|
+
try {
|
|
385
|
+
return JSON.parse(raw);
|
|
386
|
+
} catch {
|
|
387
|
+
handleMetaError(new Error("Invalid --filtering JSON"));
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
function pickIntent(name) {
|
|
391
|
+
if (!name) return "baseline";
|
|
392
|
+
const found = getIntent(name);
|
|
393
|
+
if (!found) {
|
|
394
|
+
handleMetaError(new Error(`Unknown --intent: ${name}. Use --list-intents to see options.`));
|
|
395
|
+
}
|
|
396
|
+
return found.name;
|
|
397
|
+
}
|
|
398
|
+
function pickLevel(args) {
|
|
399
|
+
const raw = args.level;
|
|
400
|
+
if (!raw) return "account";
|
|
401
|
+
if (raw !== "account" && raw !== "campaign" && raw !== "adset" && raw !== "ad") {
|
|
402
|
+
handleMetaError(new Error("--level must be one of: account|campaign|adset|ad"));
|
|
403
|
+
}
|
|
404
|
+
return raw;
|
|
405
|
+
}
|
|
406
|
+
function shouldAutoAsync(body) {
|
|
407
|
+
const breakdownCount = (body.breakdowns ?? []).length;
|
|
408
|
+
if (body.level === "ad" && breakdownCount > 0 && body.object.startsWith("act_")) {
|
|
409
|
+
return true;
|
|
410
|
+
}
|
|
411
|
+
if (breakdownCount > 2) {
|
|
412
|
+
return true;
|
|
413
|
+
}
|
|
414
|
+
if (body.since && body.until) {
|
|
415
|
+
const days = (Date.parse(body.until) - Date.parse(body.since)) / 864e5;
|
|
416
|
+
if (days > 90) {
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return false;
|
|
421
|
+
}
|
|
422
|
+
function wantsAsync(asyncFlag, body) {
|
|
423
|
+
if (asyncFlag === true) return true;
|
|
424
|
+
if (asyncFlag === false) return false;
|
|
425
|
+
return shouldAutoAsync(body);
|
|
426
|
+
}
|
|
427
|
+
function applyDateRange(body, args) {
|
|
428
|
+
const range = getDateRange(args);
|
|
429
|
+
if (range.datePreset) body.datePreset = range.datePreset;
|
|
430
|
+
if (range.since) body.since = range.since;
|
|
431
|
+
if (range.until) body.until = range.until;
|
|
432
|
+
if (!body.datePreset && !(body.since && body.until)) {
|
|
433
|
+
body.datePreset = "last_7d";
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
function buildFiltering(args) {
|
|
437
|
+
const explicit = parseFiltering(args.filtering);
|
|
438
|
+
if (explicit) return explicit;
|
|
439
|
+
if (args["include-undelivered"]) return void 0;
|
|
440
|
+
return DEFAULT_FILTERING;
|
|
441
|
+
}
|
|
442
|
+
function buildAttributionWindows(args) {
|
|
443
|
+
const explicit = commaSplit(args["attribution-windows"]);
|
|
444
|
+
if (explicit) return explicit;
|
|
445
|
+
return DEFAULT_ATTRIBUTION_WINDOWS;
|
|
446
|
+
}
|
|
447
|
+
function buildBody(args) {
|
|
448
|
+
const intent = pickIntent(args.intent);
|
|
449
|
+
const level = pickLevel(args);
|
|
450
|
+
const intentDef = getIntent(intent);
|
|
451
|
+
const explicitFields = commaSplit(args.fields);
|
|
452
|
+
const fields = explicitFields ?? composeFields(intent, level);
|
|
453
|
+
const breakdowns = commaSplit(args.breakdowns);
|
|
454
|
+
const actionBreakdowns = commaSplit(args["action-breakdowns"]) ?? intentDef?.actionBreakdowns;
|
|
455
|
+
const body = {
|
|
456
|
+
object: args.object,
|
|
457
|
+
level,
|
|
458
|
+
fields,
|
|
459
|
+
timeIncrement: args["time-increment"],
|
|
460
|
+
breakdowns,
|
|
461
|
+
actionBreakdowns,
|
|
462
|
+
filtering: buildFiltering(args),
|
|
463
|
+
attributionWindows: buildAttributionWindows(args),
|
|
464
|
+
useAccountAttributionSetting: Boolean(args["use-account-attribution"]),
|
|
465
|
+
useUnifiedAttributionSetting: Boolean(args["use-unified-attribution"]),
|
|
466
|
+
limit: args.limit ? Number(args.limit) : 1e3,
|
|
467
|
+
skipCache: Boolean(args["no-cache"])
|
|
468
|
+
};
|
|
469
|
+
applyDateRange(body, args);
|
|
470
|
+
return body;
|
|
471
|
+
}
|
|
472
|
+
async function pollAsync(reportRunId) {
|
|
473
|
+
const start = Date.now();
|
|
474
|
+
for (let attempt = 0; Date.now() - start < POLL_MAX_MS; attempt++) {
|
|
475
|
+
const status = await apiGet(
|
|
476
|
+
"/api/ads/meta/insights/async/status",
|
|
477
|
+
{ "report-run-id": reportRunId }
|
|
478
|
+
);
|
|
479
|
+
if (status.async_status === "Job Completed") return;
|
|
480
|
+
if (status.async_status === "Job Failed" || status.async_status === "Job Skipped") {
|
|
481
|
+
handleMetaError(new Error(`Async insights job ${status.async_status}`));
|
|
482
|
+
}
|
|
483
|
+
process.stderr.write(
|
|
484
|
+
`Async insights ${status.async_status ?? "queued"} (${Math.round(status.async_percent_completion ?? 0)}%)\u2026
|
|
485
|
+
`
|
|
486
|
+
);
|
|
487
|
+
await new Promise((resolve) => setTimeout(resolve, asyncPollDelayMs(attempt)));
|
|
488
|
+
}
|
|
489
|
+
handleMetaError(new Error("Async insights polling timed out after 10 minutes"));
|
|
490
|
+
}
|
|
491
|
+
async function runAsync(body) {
|
|
492
|
+
const submit = await apiPost("/api/ads/meta/insights/async", body);
|
|
493
|
+
process.stderr.write(`Async insights job: ${submit.reportRunId}
|
|
494
|
+
`);
|
|
495
|
+
await pollAsync(submit.reportRunId);
|
|
496
|
+
return apiPost("/api/ads/meta/insights/async/result", {
|
|
497
|
+
reportRunId: submit.reportRunId,
|
|
498
|
+
fields: body.fields,
|
|
499
|
+
limit: body.limit
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
function sortRowsBySpendDesc(rows) {
|
|
503
|
+
return [...rows].sort((a, b) => {
|
|
504
|
+
const sa = Number(a.spend ?? 0);
|
|
505
|
+
const sb = Number(b.spend ?? 0);
|
|
506
|
+
if (Number.isNaN(sa) || Number.isNaN(sb)) return 0;
|
|
507
|
+
return sb - sa;
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
function syncedHintOf(body) {
|
|
511
|
+
const breakdowns = body.breakdowns ?? [];
|
|
512
|
+
if (breakdowns.length > 0) return metaBreakdownSyncedHint(breakdowns);
|
|
513
|
+
const level = body.level === "adset" ? "ad_group" : body.level;
|
|
514
|
+
return syncedFirstHint("meta", level);
|
|
515
|
+
}
|
|
516
|
+
function shapeRows(rows, args) {
|
|
517
|
+
if (args.full) return { rows, hints: [] };
|
|
518
|
+
const actionTypes = commaSplit(args["action-types"]);
|
|
519
|
+
const { rows: compacted, dropped } = compactInsightsRows(rows, { actionTypes });
|
|
520
|
+
const compact = args.intent === "funnel" ? withFunnelResults(compacted, { actionTypes }) : compacted;
|
|
521
|
+
if (dropped.length === 0) return { rows: compact, hints: [] };
|
|
522
|
+
const named = dropped.slice(0, 4).join(", ");
|
|
523
|
+
const more = dropped.length > 4 ? ` and ${dropped.length - 4} more` : "";
|
|
524
|
+
return {
|
|
525
|
+
rows: compact,
|
|
526
|
+
hints: [
|
|
527
|
+
`Engagement and combined action types were left out (${named}${more}); --action-types <type> keeps one, --full returns every raw action.`
|
|
528
|
+
]
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
var insightsCommand = defineCommand({
|
|
532
|
+
meta: {
|
|
533
|
+
name: "insights",
|
|
534
|
+
description: `Performance reporting \u2014 the main Meta tool for AI agents.
|
|
535
|
+
|
|
536
|
+
Smart defaults so the AI doesn't have to remember every flag:
|
|
537
|
+
--level account (set --level campaign|adset|ad to drill in)
|
|
538
|
+
--intent baseline (or revenue|funnel|ranking|video|identity)
|
|
539
|
+
--date-preset last_7d (override with --since/--until)
|
|
540
|
+
--attribution-windows 7d_click,1d_view (the only ones still working post Jan 2026)
|
|
541
|
+
filter: impressions > 0 (skip undelivered rows; --include-undelivered to keep)
|
|
542
|
+
sort: spend descending (when result fits in memory)
|
|
543
|
+
auto-async when query is heavy (level=ad + breakdowns, big date ranges, etc.)
|
|
544
|
+
|
|
545
|
+
Identity fields (campaign_name, ad_name etc.) are appended automatically based on --level so rows
|
|
546
|
+
are self-describing.
|
|
547
|
+
|
|
548
|
+
Examples \u2014 common AI questions:
|
|
549
|
+
# "How is GreenLeaf doing this week?"
|
|
550
|
+
baker ads meta insights --object act_123
|
|
551
|
+
|
|
552
|
+
# "Which campaigns are profitable?"
|
|
553
|
+
baker ads meta insights --object act_123 --level campaign --intent revenue --date-preset last_28d
|
|
554
|
+
|
|
555
|
+
# "Which creatives need a refresh?"
|
|
556
|
+
baker ads meta insights --object act_123 --level ad --intent ranking --date-preset last_14d
|
|
557
|
+
|
|
558
|
+
# "Where do users drop off the funnel?"
|
|
559
|
+
baker ads meta insights --object act_123 --intent funnel
|
|
560
|
+
|
|
561
|
+
# "Should we shift budget to Instagram?"
|
|
562
|
+
baker ads meta insights --object act_123 --level adset --breakdowns publisher_platform,platform_position
|
|
563
|
+
|
|
564
|
+
# "How many sign-ups and leads per month?" \u2014 one call, one row per month
|
|
565
|
+
baker ads meta insights --object act_123 --intent revenue --action-types complete_registration,lead --time-increment monthly --since 2026-01-01 --until 2026-03-31
|
|
566
|
+
|
|
567
|
+
# Custom field set (escape hatch)
|
|
568
|
+
baker ads meta insights --object act_123 --fields impressions,spend,actions
|
|
569
|
+
|
|
570
|
+
Action arrays (actions, cost_per_action_type, conversions, \u2026) are compact: Meta's aliases of one conversion
|
|
571
|
+
(omni_, offsite_conversion.fb_pixel_, onsite_web_ \u2026) collapse to one entry under its plain name
|
|
572
|
+
(complete_registration, lead, purchase), and engagement counts (likes, saves, video views) are left out.
|
|
573
|
+
--action-types keeps only the named types; --full returns Meta's raw arrays. --output md|csv gives each
|
|
574
|
+
action type its own column (actions.lead, cost_per_action_type.lead); a custom event, or every type --action-types
|
|
575
|
+
names, also gets its cost (cost_per.conversions.<type> = spend / count). --intent funnel adds result_type, results,
|
|
576
|
+
cvr (% of link clicks) and cost_per_result to each row; --action-types <type> picks which action is the result.
|
|
577
|
+
|
|
578
|
+
Async is automatic for heavy queries; pass --async to force it, or --no-async to refuse fallback.`
|
|
579
|
+
},
|
|
580
|
+
args: {
|
|
581
|
+
object: {
|
|
582
|
+
type: "string",
|
|
583
|
+
description: "Object ID \u2014 act_<id> for account, or a campaign/adset/ad ID"
|
|
584
|
+
},
|
|
585
|
+
level: { type: "string", description: "account|campaign|adset|ad (default: account)" },
|
|
586
|
+
intent: { type: "string", description: "baseline|revenue|funnel|ranking|video|identity (default: baseline)" },
|
|
587
|
+
fields: { type: "string", description: "Comma-separated field list (overrides --intent bundle)" },
|
|
588
|
+
"list-intents": { type: "boolean", description: "Print available intents and exit" },
|
|
589
|
+
"date-preset": { type: "string", description: "Meta date preset (last_7d, last_28d, today, ...)" },
|
|
590
|
+
since: { type: "string", description: "Custom start date YYYY-MM-DD" },
|
|
591
|
+
until: { type: "string", description: "Custom end date YYYY-MM-DD" },
|
|
592
|
+
"time-increment": { type: "string", description: "1 (day) | monthly | all_days" },
|
|
593
|
+
breakdowns: { type: "string", description: "Comma-separated breakdowns (e.g. publisher_platform,age)" },
|
|
594
|
+
"action-types": {
|
|
595
|
+
type: "string",
|
|
596
|
+
description: "Keep only these action types in actions/cost_per_action_type/conversions \u2014 plain names (complete_registration,lead,purchase), a raw Meta name, or a custom event's name"
|
|
597
|
+
},
|
|
598
|
+
full: { type: "boolean", description: "Return Meta's raw action arrays: every alias and engagement type" },
|
|
599
|
+
"action-breakdowns": {
|
|
600
|
+
type: "string",
|
|
601
|
+
description: "Slice the actions[] array (default: action_type for revenue/funnel)"
|
|
602
|
+
},
|
|
603
|
+
filtering: { type: "string", description: "Override default filter \u2014 JSON array of {field,operator,value}" },
|
|
604
|
+
"include-undelivered": { type: "boolean", description: "Keep rows where impressions=0 (off by default)" },
|
|
605
|
+
"attribution-windows": {
|
|
606
|
+
type: "string",
|
|
607
|
+
description: "Override default 7d_click,1d_view (only 1d_view, 1d_click, 7d_click, 28d_click work post Jan 2026)"
|
|
608
|
+
},
|
|
609
|
+
"use-account-attribution": { type: "boolean", description: "Use account-saved attribution setting" },
|
|
610
|
+
"use-unified-attribution": { type: "boolean", description: "Use ad-set unified attribution setting" },
|
|
611
|
+
limit: { type: "string", description: "Max rows (default 1000)" },
|
|
612
|
+
// Declaring `no-async` too would be a trap: citty resolves it to `async: false`
|
|
613
|
+
// and never fills an arg of that name, so the declaration reads as supported
|
|
614
|
+
// while nothing consumes it.
|
|
615
|
+
async: { type: "boolean", description: "Force the async submit-and-poll path (--no-async refuses it)" },
|
|
616
|
+
"no-sort": { type: "boolean", description: "Skip default spend-desc sort" },
|
|
617
|
+
"no-cache": NO_CACHE_ARG,
|
|
618
|
+
output: { type: "string", description: "Output format: json|csv|jsonl|md", default: "json" }
|
|
619
|
+
},
|
|
620
|
+
run: async ({ args }) => {
|
|
621
|
+
if (args["list-intents"]) {
|
|
622
|
+
writeAdsJson({ ok: true, data: listIntents() });
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
if (!args.object) {
|
|
626
|
+
writeAdsJson({
|
|
627
|
+
ok: false,
|
|
628
|
+
error: { code: "VALIDATION_ERROR", message: "Missing required argument: --object" }
|
|
629
|
+
});
|
|
630
|
+
process.exit(1);
|
|
631
|
+
}
|
|
632
|
+
const body = buildBody(args);
|
|
633
|
+
const fmt = csvOrJson(args);
|
|
634
|
+
const wantAsync = wantsAsync(args.async, body);
|
|
635
|
+
try {
|
|
636
|
+
const rows = wantAsync ? await runAsync(body) : await apiPost("/api/ads/meta/insights", body);
|
|
637
|
+
const shaped = shapeRows(args["no-sort"] ? rows : sortRowsBySpendDesc(rows), args);
|
|
638
|
+
const sorted = shaped.rows;
|
|
639
|
+
if (fmt !== "json") {
|
|
640
|
+
const fields = args.intent === "funnel" && !args.full ? [...body.fields, ...FUNNEL_COLUMNS] : body.fields;
|
|
641
|
+
const table = args.full || fmt === "jsonl" ? { rows: sorted, columns: fields } : insightsTable(sorted, fields, { priceAll: args["action-types"] !== void 0 });
|
|
642
|
+
writeAdsOutput(table.rows, fmt, table.columns, shaped.hints);
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
const synced = syncedHintOf(body);
|
|
646
|
+
const hints = [...placementDeliveryHints(sorted), ...shaped.hints, ...synced === null ? [] : [synced]];
|
|
647
|
+
writeJsonEnvelope({ ok: true, data: sorted, hints });
|
|
648
|
+
} catch (err) {
|
|
649
|
+
handleMetaError(err);
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
});
|
|
653
|
+
export {
|
|
654
|
+
asyncPollDelayMs,
|
|
655
|
+
insightsCommand,
|
|
656
|
+
wantsAsync
|
|
657
|
+
};
|
|
658
|
+
//# sourceMappingURL=insights-7NC2JFXU.js.map
|