@koda-sl/baker-cli 0.489.0 → 0.491.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 +169 -7
- package/dist/account-3H6BZO5H.js +80 -0
- package/dist/account-IKFDY52P.js +138 -0
- package/dist/account-IKFDY52P.js.map +1 -0
- package/dist/account-VGSYM7LY.js +79 -0
- package/dist/account-assets-LKZVWZAR.js +289 -0
- package/dist/account-assets-LKZVWZAR.js.map +1 -0
- package/dist/account-level-UJOZDVXY.js +608 -0
- package/dist/account-level-UJOZDVXY.js.map +1 -0
- package/dist/account-writes-AE5IJGGW.js +66 -0
- package/dist/accounts-2ARS6XP2.js +77 -0
- package/dist/accounts-AQFW4ZUM.js +611 -0
- package/dist/accounts-K4INATCW.js +75 -0
- package/dist/actions-QMUHOAXG.js +55 -0
- package/dist/activecampaign-J3QN5FMG.js +935 -0
- package/dist/activities-T253KK4Q.js +74 -0
- package/dist/ad-group-writes-VRSBI2Z2.js +170 -0
- package/dist/ad-groups-IEBVEAMS.js +68 -0
- package/dist/ad-writes-ALV4KFPZ.js +174 -0
- package/dist/add-VDUA6OWM.js +104 -0
- package/dist/add-XHOKCSW5.js +302 -0
- package/dist/ads-CQZHD7FC.js +77 -0
- package/dist/ads-HGDPNIT6.js +40 -0
- package/dist/ads-ZEY72UBN.js +114 -0
- package/dist/ads-ZEY72UBN.js.map +1 -0
- package/dist/adsets-5H3MOT3D.js +177 -0
- package/dist/adsets-5H3MOT3D.js.map +1 -0
- package/dist/advertisers-UDSEFMP7.js +120 -0
- package/dist/analytics-TBETZOPJ.js +433 -0
- package/dist/analytics-VH74LMMC.js +1976 -0
- package/dist/asset-writes-L5TMKIZC.js +47 -0
- package/dist/assign-6IE2ASFC.js +77 -0
- package/dist/audience-size-CSBWDFEP.js +73 -0
- package/dist/audience-writes-X52VG35Y.js +324 -0
- package/dist/audience-writes-X52VG35Y.js.map +1 -0
- package/dist/audiences-AAZH56WD.js +268 -0
- package/dist/audiences-X3RLGOVM.js +84 -0
- package/dist/audiences-X3RLGOVM.js.map +1 -0
- package/dist/audit-AEENRVGD.js +151 -0
- package/dist/autocomplete-AAGTJHVL.js +111 -0
- package/dist/avatars-VEATUUKU.js +38 -0
- package/dist/bid-pricing-SZTGCZTV.js +100 -0
- package/dist/brand-MXGETE4R.js +22 -0
- package/dist/brief-3GHSHOGM.js +538 -0
- package/dist/businesses-H3HIDQX6.js +53 -0
- package/dist/campaign-groups-WRI56M5X.js +95 -0
- package/dist/campaign-writes-PYGKSCPS.js +165 -0
- package/dist/campaign-writes-PYGKSCPS.js.map +1 -0
- package/dist/campaign-writes-U5PUVSMT.js +170 -0
- package/dist/campaigns-4QWC2JE7.js +109 -0
- package/dist/campaigns-AV6G3AUU.js +127 -0
- package/dist/campaigns-AV6G3AUU.js.map +1 -0
- package/dist/campaigns-JEIKY2M4.js +76 -0
- package/dist/campaigns-Q4HN7HBY.js +107 -0
- package/dist/canvas-VJ3XKCAC.js +46 -0
- package/dist/capabilities-SNGGAOV3.js +144 -0
- package/dist/catalog-S32MX453.js +65 -0
- package/dist/catalogs-OCVXZLIF.js +128 -0
- package/dist/catalogs-RXJTZTVX.js +778 -0
- package/dist/catalogs-RXJTZTVX.js.map +1 -0
- package/dist/chatgpt-QVF2FD3E.js +47 -0
- package/dist/chats-2DRTB7GK.js +276 -0
- package/dist/chats-2DRTB7GK.js.map +1 -0
- package/dist/check-Z6UMIQKD.js +104 -0
- package/dist/chunk-2C7AHPM4.js +191 -0
- package/dist/chunk-2C7AHPM4.js.map +1 -0
- package/dist/chunk-2WZI36D3.js +317 -0
- package/dist/chunk-3AMLOCXY.js +392 -0
- package/dist/chunk-3CVAEQMZ.js +156 -0
- package/dist/chunk-3WAYZQNV.js +61 -0
- package/dist/chunk-46GWHUKN.js +225 -0
- package/dist/chunk-4O6T76A3.js +191 -0
- package/dist/chunk-5C35OW7L.js +205 -0
- package/dist/chunk-5C35OW7L.js.map +1 -0
- package/dist/chunk-5GQCN2QZ.js +391 -0
- package/dist/chunk-5GQCN2QZ.js.map +1 -0
- package/dist/chunk-5MCVK4A3.js +903 -0
- package/dist/chunk-5ZLN23V5.js +97 -0
- package/dist/chunk-65Y3RCWP.js +68 -0
- package/dist/chunk-65Y3RCWP.js.map +1 -0
- package/dist/chunk-77ULVP62.js +547 -0
- package/dist/chunk-A4MVVPJ2.js +4204 -0
- package/dist/chunk-A4MVVPJ2.js.map +1 -0
- package/dist/chunk-AQM4JH62.js +274 -0
- package/dist/chunk-AQM4JH62.js.map +1 -0
- package/dist/chunk-AW2GKIGS.js +433 -0
- package/dist/chunk-BRLY6XD6.js +249 -0
- package/dist/chunk-C7NWUCLQ.js +64 -0
- package/dist/chunk-CP4P6YKM.js +287 -0
- package/dist/chunk-CP4P6YKM.js.map +1 -0
- package/dist/chunk-D4HKJBEW.js +23 -0
- package/dist/chunk-DAO63OOP.js +6352 -0
- package/dist/chunk-DAO63OOP.js.map +1 -0
- package/dist/chunk-DCBZ5CHZ.js +139 -0
- package/dist/chunk-G6XKD7QE.js +77 -0
- package/dist/chunk-GBFL4TD2.js +172 -0
- package/dist/chunk-H5SCKWFT.js +224 -0
- package/dist/chunk-HLVRHBKL.js +1078 -0
- package/dist/chunk-HLVRHBKL.js.map +1 -0
- package/dist/chunk-HXPK6KAL.js +363 -0
- package/dist/chunk-I7GOSMWT.js +197 -0
- package/dist/chunk-IBY44U2M.js +1079 -0
- package/dist/chunk-ITNHIZKK.js +275 -0
- package/dist/chunk-J33P2JNS.js +455 -0
- package/dist/chunk-JH2L5CQD.js +206 -0
- package/dist/chunk-JQH5VG6F.js +5368 -0
- package/dist/chunk-JVH5A3XC.js +8914 -0
- package/dist/chunk-KTOYQP6D.js +169 -0
- package/dist/chunk-LO3IF5PS.js +399 -0
- package/dist/chunk-LRRFGOW3.js +604 -0
- package/dist/chunk-LTPTJWZC.js +942 -0
- package/dist/chunk-MRQHJW5U.js +159 -0
- package/dist/chunk-NHYI7ORL.js +346 -0
- package/dist/chunk-NLI7C3K2.js +51 -0
- package/dist/chunk-NSEMXBUB.js +91 -0
- package/dist/chunk-OM2BRYXJ.js +3868 -0
- package/dist/chunk-OY4SKCIU.js +103 -0
- package/dist/chunk-OYAJNTRO.js +494 -0
- package/dist/chunk-PL7J3DPQ.js +831 -0
- package/dist/chunk-PUSBUMYM.js +89 -0
- package/dist/chunk-QTOZ32SU.js +163 -0
- package/dist/chunk-QTOZ32SU.js.map +1 -0
- package/dist/chunk-RRADFRPI.js +297 -0
- package/dist/chunk-SGEPZB3D.js +344 -0
- package/dist/chunk-SVAB6KV5.js +219 -0
- package/dist/chunk-SVAB6KV5.js.map +1 -0
- package/dist/chunk-TFTZDWCX.js +66 -0
- package/dist/chunk-TG4NCHFS.js +142 -0
- package/dist/chunk-TTHM66TA.js +207 -0
- package/dist/chunk-VL2GNXZY.js +19 -0
- package/dist/chunk-VQPZDM6N.js +160 -0
- package/dist/chunk-XCKINS7K.js +57 -0
- package/dist/chunk-YLYXSJ6O.js +8939 -0
- package/dist/chunk-ZAPO6UWS.js +592 -0
- package/dist/chunk-ZEPUDYPL.js +122 -0
- package/dist/chunk-ZJSGGJ5R.js +167 -0
- package/dist/claim-J2LYNHZK.js +197 -0
- package/dist/cli.js +34 -34
- package/dist/companies-VYY22B6T.js +195 -0
- package/dist/complete-5I32XM7P.js +81 -0
- package/dist/connect-EUFFQQ7O.js +42 -0
- package/dist/conversation-D6KZHGPP.js +93 -0
- package/dist/conversion-writes-ECZBVY7D.js +120 -0
- package/dist/conversions-5QCSCRLI.js +76 -0
- package/dist/conversions-Y3X6ZTTF.js +135 -0
- package/dist/copy-writes-D2RTHAL6.js +167 -0
- package/dist/copy-writes-D2RTHAL6.js.map +1 -0
- package/dist/create-2JCRTQJL.js +59 -0
- package/dist/create-LMSQPHPB.js +235 -0
- package/dist/create-MBLNB5RY.js +132 -0
- package/dist/create-VR7RXKL7.js +207 -0
- package/dist/creatives-5C42BDMW.js +182 -0
- package/dist/creatives-HYPSTANO.js +58 -0
- package/dist/creatives-MZ6ICNSY.js +88 -0
- package/dist/creatives-MZ6ICNSY.js.map +1 -0
- package/dist/credentials-4H4AUYJN.js +287 -0
- package/dist/critique-UOJZWDG2.js +1458 -0
- package/dist/critique-WCWMQQVV.js +227 -0
- package/dist/crm-B7OTHMBP.js +318 -0
- package/dist/crm-DZRWKJ6V.js +224 -0
- package/dist/custom-conversions-FIP6ZS34.js +127 -0
- package/dist/custom-conversions-FIP6ZS34.js.map +1 -0
- package/dist/customers-AOFJJCGD.js +56 -0
- package/dist/delete-DEG5KOBY.js +64 -0
- package/dist/delete-EFIODCXG.js +54 -0
- package/dist/delete-PQIMW2LK.js +66 -0
- package/dist/demographics-F26DIOCM.js +138 -0
- package/dist/discard-2EJY6UGP.js +66 -0
- package/dist/domain-XLJABLWB.js +98 -0
- package/dist/draft-2YND6T4U.js +217 -0
- package/dist/draft-34CGWUVA.js +281 -0
- package/dist/draft-L45PGCYZ.js +237 -0
- package/dist/draft-L45PGCYZ.js.map +1 -0
- package/dist/draft-TCPK6XYW.js +332 -0
- package/dist/draft-TCPK6XYW.js.map +1 -0
- package/dist/draft-WRVEANL5.js +306 -0
- package/dist/engine/index.js +4 -4
- package/dist/experiment-7N4QFRWV.js +1397 -0
- package/dist/facets-OPTNDPW2.js +114 -0
- package/dist/feedback-43BPXNBI.js +106 -0
- package/dist/feedback-record-35ZSDL6Z.js +260 -0
- package/dist/fetch-O46XBA7S.js +176 -0
- package/dist/find-FSQAEGGF.js +134 -0
- package/dist/fit-CWJ5QQ4R.js +62 -0
- package/dist/flows-CVORIQ4B.js +247 -0
- package/dist/fonts-6TPYR6IW.js +36 -0
- package/dist/forecast-2VLA6NJA.js +118 -0
- package/dist/funnel-XLKDLXMG.js +394 -0
- package/dist/ga4-LPDIBNYP.js +55 -0
- package/dist/get-O56GGN3V.js +56 -0
- package/dist/get-WFQ4XEAW.js +79 -0
- package/dist/google-5ESVO76E.js +136 -0
- package/dist/google-ads-DZMOTUY5.js +195 -0
- package/dist/gsc-FIZTQX3N.js +30 -0
- package/dist/history-43BBQZOB.js +133 -0
- package/dist/history-QKDYBSYM.js +67 -0
- package/dist/hubspot-S44MPK3G.js +779 -0
- package/dist/icon-CSVAZ7NE.js +137 -0
- package/dist/ideas-SLP5WXFF.js +40 -0
- package/dist/images-TWZOROCT.js +92 -0
- package/dist/ingest-5GCZ5ZBV.js +23 -0
- package/dist/ingest-P54J4W3V.js +107 -0
- package/dist/insights-YWVJMATY.js +424 -0
- package/dist/insights-YWVJMATY.js.map +1 -0
- package/dist/inspect-S4COGUBC.js +189 -0
- package/dist/inspiration-IX5N724J.js +53 -0
- package/dist/instant-experiences-NQ2GWIWL.js +257 -0
- package/dist/instant-experiences-NQ2GWIWL.js.map +1 -0
- package/dist/keyword-metrics-26CCKFZK.js +197 -0
- package/dist/keywords-for-site-JWWECF63.js +128 -0
- package/dist/landing-VFDRADZY.js +28 -0
- package/dist/leads-DTKKYSKH.js +90 -0
- package/dist/leads-THI37ZMD.js +537 -0
- package/dist/leads-THI37ZMD.js.map +1 -0
- package/dist/learn-GQ75IPRK.js +204 -0
- package/dist/line-item-writes-DVVHVR3Y.js +208 -0
- package/dist/line-items-EOZMK7A5.js +103 -0
- package/dist/link-R5NGCQ5H.js +64 -0
- package/dist/linkedin-DHZO3IJX.js +1057 -0
- package/dist/list-57QBEGLM.js +303 -0
- package/dist/list-Q44BBHDI.js +64 -0
- package/dist/list-W6G2NTG5.js +151 -0
- package/dist/locations-HM56X2MK.js +67 -0
- package/dist/locations-HM56X2MK.js.map +1 -0
- package/dist/log-B6X5EPKA.js +92 -0
- package/dist/logo-VHXH4J6A.js +18 -0
- package/dist/make-OIFLF3QS.js +1353 -0
- package/dist/map-PIOZT2MQ.js +433 -0
- package/dist/mcp-GFKHLWDB.js +714 -0
- package/dist/media-H6B7VDON.js +18 -0
- package/dist/media-H6B7VDON.js.map +1 -0
- package/dist/media-sources-VMMMW5UM.js +32 -0
- package/dist/members-W2QBMNIW.js +44 -0
- package/dist/meta-YHDTGJQ6.js +122 -0
- package/dist/meta-YHDTGJQ6.js.map +1 -0
- package/dist/normalize-N6XC3SLC.js +141 -0
- package/dist/options-XYJY2OEQ.js +122 -0
- package/dist/organization-BVTXCZIV.js +942 -0
- package/dist/organization-BVTXCZIV.js.map +1 -0
- package/dist/page-photos-CXRG4AXV.js +115 -0
- package/dist/page-photos-CXRG4AXV.js.map +1 -0
- package/dist/pages-PTWRXAZT.js +66 -0
- package/dist/performance-7NEZTOJ5.js +24 -0
- package/dist/pixels-MYT3TCHZ.js +60 -0
- package/dist/pixels-ZZCQUS3J.js +108 -0
- package/dist/preview-XOXAAPMQ.js +215 -0
- package/dist/preview-XOXAAPMQ.js.map +1 -0
- package/dist/promoted-tweet-writes-X2F7R2AE.js +180 -0
- package/dist/promoted-tweets-XCSD6VKP.js +119 -0
- package/dist/publish-OBY6E43R.js +341 -0
- package/dist/reddit-WJ6KHYBC.js +26 -0
- package/dist/refresh-G5BQ2LWU.js +94 -0
- package/dist/release-PBZO35KY.js +60 -0
- package/dist/remove-VJ2MEUPM.js +50 -0
- package/dist/reopen-W3LYOHSR.js +63 -0
- package/dist/rerun-4GDNBFNM.js +90 -0
- package/dist/research-4YTFPGH7.js +262 -0
- package/dist/research-LOQRIBO6.js +62 -0
- package/dist/reset-55CCQGXB.js +54 -0
- package/dist/reset-AVTQEJPZ.js +54 -0
- package/dist/resolve-E6FNMFE3.js +121 -0
- package/dist/retry-HBJ7MKVI.js +60 -0
- package/dist/retry-QBRYM6MG.js +62 -0
- package/dist/rule-writes-6ZCAJDYZ.js +522 -0
- package/dist/rule-writes-6ZCAJDYZ.js.map +1 -0
- package/dist/rules-BMYOY2BM.js +216 -0
- package/dist/rules-BMYOY2BM.js.map +1 -0
- package/dist/rules-XNDBGOIS.js +96 -0
- package/dist/rules-add-UM3ZKSVD.js +462 -0
- package/dist/run-D4YHZ4Z4.js +66 -0
- package/dist/run-ZCJ7NP63.js +65 -0
- package/dist/scaffold-ad-VQZAP32M.js +1511 -0
- package/dist/scaffold-static-ad-LEU4M44N.js +1005 -0
- package/dist/scaffold-video-PSWSYRSC.js +883 -0
- package/dist/schedule-AAH7HYFK.js +61 -0
- package/dist/scheduled-agents-HDABMHZI.js +50 -0
- package/dist/schema-OH5OWMVQ.js +132 -0
- package/dist/search-BSDPVSGA.js +174 -0
- package/dist/select-EI4QF4YZ.js +101 -0
- package/dist/set-prompt-RKDAGUWG.js +193 -0
- package/dist/setup-links-CNNJA7AB.js +141 -0
- package/dist/shared-3IBNDEFL.js +31 -0
- package/dist/site-NV4U7PIF.js +177 -0
- package/dist/sources-ATONL7W5.js +454 -0
- package/dist/sources-C3TGHKLQ.js +30 -0
- package/dist/stale-6QPXL6BZ.js +71 -0
- package/dist/stats-ZAGJH4AD.js +34 -0
- package/dist/status-BML3F4MZ.js +62 -0
- package/dist/stock-6SHHLSKG.js +179 -0
- package/dist/studies-4NIV4D5Y.js +249 -0
- package/dist/studies-4NIV4D5Y.js.map +1 -0
- package/dist/studio-ZLCGXFAN.js +49 -0
- package/dist/study-writes-L2AA2PGL.js +467 -0
- package/dist/study-writes-L2AA2PGL.js.map +1 -0
- package/dist/sync-DZAOUQPE.js +54 -0
- package/dist/sync-definition-RFEL65JE.js +64 -0
- package/dist/tag-manager-3CJ66GKJ.js +43 -0
- package/dist/tags-2KSXCJRZ.js +20 -0
- package/dist/tags-662KZJLV.js +26 -0
- package/dist/tags-6QBVW25V.js +20 -0
- package/dist/tags-LQCEJGIL.js +20 -0
- package/dist/tags-RIVD54ZG.js +224 -0
- package/dist/targeting-LNDQV4EK.js +759 -0
- package/dist/targeting-LNDQV4EK.js.map +1 -0
- package/dist/targeting-criteria-XNLYPIL2.js +113 -0
- package/dist/targets-OYIVS5KJ.js +103 -0
- package/dist/testimonials-WT43CF7V.js +32 -0
- package/dist/top-companies-6QQMOS2Y.js +108 -0
- package/dist/translate-7QN7JFGU.js +604 -0
- package/dist/triggers-LVQY3QJ2.js +142 -0
- package/dist/unlink-5ASZTCS2.js +67 -0
- package/dist/unstage-LNZTEATR.js +85 -0
- package/dist/update-7BIR4GYO.js +152 -0
- package/dist/update-BRLM5DB3.js +98 -0
- package/dist/update-DRZAAJQ2.js +63 -0
- package/dist/update-NOWC3ICD.js +188 -0
- package/dist/upload-457Q4ANZ.js +126 -0
- package/dist/url-params-KM4NJGYC.js +98 -0
- package/dist/validate-COLEPJBA.js +117 -0
- package/dist/videos-5IDZTEWC.js +39 -0
- package/dist/viewer-check-433AZPBC.js +80 -0
- package/dist/viewer-check-433AZPBC.js.map +1 -0
- package/dist/web-FZYOCCYN.js +140 -0
- package/dist/winning-ads-I4DMP7RU.js +84 -0
- package/dist/write-commands-FYB6QG7K.js +1024 -0
- package/dist/write-commands-PEJBTME6.js +1165 -0
- package/dist/write-commands-PEJBTME6.js.map +1 -0
- package/dist/x-OMN5DDLM.js +47 -0
- package/package.json +1 -1
- package/dist/account-7LUQWY6Q.js +0 -49
- package/dist/account-7LUQWY6Q.js.map +0 -1
- package/dist/account-KNRDOUJP.js +0 -79
- package/dist/account-Z65CPOWE.js +0 -80
- package/dist/account-writes-4N2MA2ZR.js +0 -66
- package/dist/accounts-RTN5ZGTU.js +0 -611
- package/dist/accounts-RW6KXBOQ.js +0 -77
- package/dist/accounts-UA2ZWRN4.js +0 -75
- package/dist/actions-HNLISA7T.js +0 -55
- package/dist/activecampaign-I5CILZPU.js +0 -935
- package/dist/activities-IQPJPP4B.js +0 -74
- package/dist/ad-group-writes-EUTMPBMK.js +0 -170
- package/dist/ad-groups-OVPAI5RM.js +0 -68
- package/dist/ad-writes-DACTYFEO.js +0 -174
- package/dist/add-6WKPFMLG.js +0 -302
- package/dist/add-XF5COUAS.js +0 -104
- package/dist/ads-G6AS5L7G.js +0 -40
- package/dist/ads-HXX2IAFF.js +0 -113
- package/dist/ads-HXX2IAFF.js.map +0 -1
- package/dist/ads-L65JIKCD.js +0 -77
- package/dist/adsets-LPN6WFGF.js +0 -176
- package/dist/adsets-LPN6WFGF.js.map +0 -1
- package/dist/advertisers-6NUM2Q3A.js +0 -120
- package/dist/analytics-QKP3A5F3.js +0 -1976
- package/dist/analytics-VLHE5A2M.js +0 -433
- package/dist/assign-6HI6TNLP.js +0 -77
- package/dist/audience-size-25LP2OBF.js +0 -73
- package/dist/audiences-RPLVMO4H.js +0 -268
- package/dist/audiences-XEZHACKH.js +0 -78
- package/dist/audiences-XEZHACKH.js.map +0 -1
- package/dist/audit-YY6X2MPA.js +0 -151
- package/dist/autocomplete-SAWJK4NF.js +0 -111
- package/dist/avatars-MXTI74VC.js +0 -38
- package/dist/bid-pricing-HZ74SLEB.js +0 -100
- package/dist/brand-T3OACVQX.js +0 -22
- package/dist/brief-BN4UGUXF.js +0 -538
- package/dist/businesses-PRRYPR7H.js +0 -53
- package/dist/campaign-groups-YJK767AP.js +0 -95
- package/dist/campaign-writes-BAFB5E7A.js +0 -165
- package/dist/campaign-writes-BAFB5E7A.js.map +0 -1
- package/dist/campaign-writes-U5LTDTYK.js +0 -170
- package/dist/campaigns-4SOLY7OR.js +0 -110
- package/dist/campaigns-4SOLY7OR.js.map +0 -1
- package/dist/campaigns-GALDR5KK.js +0 -109
- package/dist/campaigns-NR6TNQFN.js +0 -107
- package/dist/campaigns-TFEQTSO3.js +0 -76
- package/dist/canvas-GJAQAVS6.js +0 -46
- package/dist/capabilities-2KT6TCGZ.js +0 -144
- package/dist/catalog-USZL4SGX.js +0 -65
- package/dist/catalogs-A7XMEEEP.js +0 -128
- package/dist/chatgpt-4PEWDJKP.js +0 -47
- package/dist/chats-INN2OHSH.js +0 -262
- package/dist/chats-INN2OHSH.js.map +0 -1
- package/dist/check-MMJGFFZS.js +0 -104
- package/dist/chunk-2LI6746F.js +0 -103
- package/dist/chunk-2PWNIEW4.js +0 -197
- package/dist/chunk-2XRMPSEV.js +0 -142
- package/dist/chunk-3TZVZXM6.js +0 -224
- package/dist/chunk-3UXMQ3K2.js +0 -274
- package/dist/chunk-3UXMQ3K2.js.map +0 -1
- package/dist/chunk-5HJRZFMW.js +0 -207
- package/dist/chunk-62JQQUAU.js +0 -5368
- package/dist/chunk-66QHX566.js +0 -6306
- package/dist/chunk-66QHX566.js.map +0 -1
- package/dist/chunk-6JWEGFM5.js +0 -174
- package/dist/chunk-6JWEGFM5.js.map +0 -1
- package/dist/chunk-6WCAV27H.js +0 -494
- package/dist/chunk-6WXV5GTA.js +0 -8914
- package/dist/chunk-7RBJ2Z7Z.js +0 -172
- package/dist/chunk-7RBJ2Z7Z.js.map +0 -1
- package/dist/chunk-AVNSH2JE.js +0 -8939
- package/dist/chunk-BITS62MF.js +0 -77
- package/dist/chunk-BL2MX6CR.js +0 -249
- package/dist/chunk-BOPC3D6I.js +0 -604
- package/dist/chunk-C6EYCD5J.js +0 -942
- package/dist/chunk-CSZFZKVX.js +0 -97
- package/dist/chunk-D5CUAOQX.js +0 -297
- package/dist/chunk-D5UXWKLQ.js +0 -903
- package/dist/chunk-FA4YZFRV.js +0 -392
- package/dist/chunk-FUKDI2UK.js +0 -122
- package/dist/chunk-G4STCTY3.js +0 -399
- package/dist/chunk-GOJXKIFQ.js +0 -1605
- package/dist/chunk-GOJXKIFQ.js.map +0 -1
- package/dist/chunk-H5HDZ7IC.js +0 -139
- package/dist/chunk-HSPMBLKE.js +0 -363
- package/dist/chunk-IJ22WP3G.js +0 -275
- package/dist/chunk-ILSKYRDR.js +0 -169
- package/dist/chunk-JQU2LUZG.js +0 -57
- package/dist/chunk-JWSEPW7F.js +0 -225
- package/dist/chunk-KIGGMKAE.js +0 -66
- package/dist/chunk-KIGGMKAE.js.map +0 -1
- package/dist/chunk-KPYDTIAI.js +0 -317
- package/dist/chunk-LBO2YAZY.js +0 -3868
- package/dist/chunk-LOMH4TTC.js +0 -1079
- package/dist/chunk-LPXSM2DI.js +0 -66
- package/dist/chunk-MVB32GPI.js +0 -592
- package/dist/chunk-MXH35PJ5.js +0 -51
- package/dist/chunk-NEIUVSDK.js +0 -206
- package/dist/chunk-NPMAATZG.js +0 -64
- package/dist/chunk-NXZCCGES.js +0 -159
- package/dist/chunk-OP7DNHD2.js +0 -137
- package/dist/chunk-OP7DNHD2.js.map +0 -1
- package/dist/chunk-OWA7ZLC4.js +0 -547
- package/dist/chunk-P3W6SRSQ.js +0 -455
- package/dist/chunk-PA4W7BCQ.js +0 -23
- package/dist/chunk-PTGYM4J6.js +0 -89
- package/dist/chunk-QE3JEJXF.js +0 -831
- package/dist/chunk-QNLJ3GNZ.js +0 -433
- package/dist/chunk-R3EKM2P2.js +0 -191
- package/dist/chunk-SISA4HQR.js +0 -61
- package/dist/chunk-TP7HKSBX.js +0 -172
- package/dist/chunk-TPANP5A2.js +0 -91
- package/dist/chunk-TRPJJMCS.js +0 -346
- package/dist/chunk-TZEVD4Q6.js +0 -160
- package/dist/chunk-UWXDNVS5.js +0 -167
- package/dist/chunk-VD73V44J.js +0 -344
- package/dist/chunk-X7F4Z6UM.js +0 -156
- package/dist/chunk-ZL23HA4N.js +0 -19
- package/dist/claim-SLGYOOWD.js +0 -197
- package/dist/companies-IVMH6YII.js +0 -195
- package/dist/complete-45L2FI2X.js +0 -81
- package/dist/connect-WBGCBBFJ.js +0 -42
- package/dist/conversation-RIOL3OJ7.js +0 -93
- package/dist/conversion-writes-JU7Q2MUO.js +0 -120
- package/dist/conversions-3ISBR3TS.js +0 -76
- package/dist/conversions-TKIXNSYR.js +0 -135
- package/dist/create-7JY2PTIZ.js +0 -132
- package/dist/create-ACLCRXQP.js +0 -59
- package/dist/create-KYBMFD32.js +0 -207
- package/dist/create-VAPJ52GJ.js +0 -235
- package/dist/creatives-S5QUWUL6.js +0 -58
- package/dist/creatives-VQO2TKE3.js +0 -182
- package/dist/creatives-YJ3CXZQC.js +0 -87
- package/dist/creatives-YJ3CXZQC.js.map +0 -1
- package/dist/credentials-YTQ6BHWV.js +0 -287
- package/dist/critique-5LCG5TYF.js +0 -227
- package/dist/critique-BHYJYZDV.js +0 -1458
- package/dist/crm-IKTWHWEB.js +0 -318
- package/dist/crm-N7K57LZJ.js +0 -224
- package/dist/custom-conversions-YRYE65PU.js +0 -125
- package/dist/custom-conversions-YRYE65PU.js.map +0 -1
- package/dist/customers-NLU7NYDC.js +0 -56
- package/dist/delete-26J3X3ZH.js +0 -64
- package/dist/delete-A4F5Z54J.js +0 -66
- package/dist/delete-EVXOFT2H.js +0 -54
- package/dist/demographics-VZKFMM4X.js +0 -138
- package/dist/discard-ULRVUJDV.js +0 -66
- package/dist/domain-L4WCCX7R.js +0 -98
- package/dist/draft-57OQKHZI.js +0 -306
- package/dist/draft-EWDOIXSH.js +0 -233
- package/dist/draft-EWDOIXSH.js.map +0 -1
- package/dist/draft-GPN3HOAG.js +0 -328
- package/dist/draft-GPN3HOAG.js.map +0 -1
- package/dist/draft-O4S5RKWK.js +0 -217
- package/dist/draft-Y2QJE2NM.js +0 -281
- package/dist/experiment-G3FQVAJU.js +0 -1397
- package/dist/facets-EHQKGGJ2.js +0 -114
- package/dist/feedback-CAOZPGTT.js +0 -106
- package/dist/feedback-record-EXV5H6OS.js +0 -260
- package/dist/fetch-ETKT2RBC.js +0 -176
- package/dist/find-EVY4XEIQ.js +0 -134
- package/dist/fit-UJQ47C4A.js +0 -62
- package/dist/flows-Z7355RMD.js +0 -247
- package/dist/fonts-7VWBQPJF.js +0 -36
- package/dist/forecast-OI7YWZ6F.js +0 -118
- package/dist/funnel-2B3JXJPX.js +0 -394
- package/dist/ga4-2BL5YAYN.js +0 -55
- package/dist/get-2RSN4N3J.js +0 -56
- package/dist/get-6N7QJMIP.js +0 -79
- package/dist/google-7STODZQR.js +0 -136
- package/dist/google-ads-G7REKD4A.js +0 -195
- package/dist/gsc-UU3T2C6B.js +0 -30
- package/dist/history-IQ33J5PB.js +0 -67
- package/dist/history-YMK2JNZU.js +0 -133
- package/dist/hubspot-BUFS7S33.js +0 -779
- package/dist/icon-GB7UH5RF.js +0 -137
- package/dist/ideas-F6CIGTVU.js +0 -40
- package/dist/images-WCKTD6Z2.js +0 -92
- package/dist/ingest-RQUJGS7K.js +0 -107
- package/dist/ingest-XLTRLCDV.js +0 -23
- package/dist/insights-4HT2NAYP.js +0 -423
- package/dist/insights-4HT2NAYP.js.map +0 -1
- package/dist/inspect-KFVAMD4N.js +0 -189
- package/dist/inspiration-XQYHBJY2.js +0 -53
- package/dist/keyword-metrics-WYF3QMCW.js +0 -197
- package/dist/keywords-for-site-G5L5EP3T.js +0 -128
- package/dist/landing-WUILAWDS.js +0 -28
- package/dist/leads-2XOSAYP4.js +0 -293
- package/dist/leads-2XOSAYP4.js.map +0 -1
- package/dist/leads-4SJ4NJOI.js +0 -90
- package/dist/learn-CC6Q5IK2.js +0 -204
- package/dist/line-item-writes-YXKYR25W.js +0 -208
- package/dist/line-items-CKUD2UU4.js +0 -103
- package/dist/link-VBYFI7AM.js +0 -64
- package/dist/linkedin-XKVPSCLV.js +0 -1057
- package/dist/list-6ZNZGRRK.js +0 -151
- package/dist/list-ENYDGT3F.js +0 -64
- package/dist/list-VSUF2IWT.js +0 -303
- package/dist/locations-YA7NZY44.js +0 -67
- package/dist/locations-YA7NZY44.js.map +0 -1
- package/dist/log-AACKGBDW.js +0 -92
- package/dist/logo-YSNUUT33.js +0 -18
- package/dist/make-ED7HBLH3.js +0 -1353
- package/dist/map-63CQHWPI.js +0 -433
- package/dist/mcp-RKAXC6IP.js +0 -714
- package/dist/media-ES2UBGYW.js +0 -15
- package/dist/media-ES2UBGYW.js.map +0 -1
- package/dist/media-sources-PEHUMH7C.js +0 -32
- package/dist/members-SELIA674.js +0 -44
- package/dist/meta-AOIPEDV5.js +0 -69
- package/dist/meta-AOIPEDV5.js.map +0 -1
- package/dist/normalize-VAZPTBDX.js +0 -141
- package/dist/options-6FCNFWUF.js +0 -122
- package/dist/organization-SHREKDST.js +0 -881
- package/dist/organization-SHREKDST.js.map +0 -1
- package/dist/pages-FTI44OSH.js +0 -66
- package/dist/performance-K7E5KAZW.js +0 -24
- package/dist/pixels-6IUB3Y3H.js +0 -60
- package/dist/pixels-MBKR4XPX.js +0 -108
- package/dist/preview-V4YBD45S.js +0 -169
- package/dist/preview-V4YBD45S.js.map +0 -1
- package/dist/promoted-tweet-writes-PKEO6WUK.js +0 -180
- package/dist/promoted-tweets-7MXVZRBI.js +0 -119
- package/dist/publish-MPMGRV72.js +0 -341
- package/dist/reddit-XIHRI3CN.js +0 -26
- package/dist/refresh-A27N75NH.js +0 -94
- package/dist/release-UKRB5IUN.js +0 -60
- package/dist/remove-AFNFVPZY.js +0 -50
- package/dist/reopen-M5HE6J3G.js +0 -63
- package/dist/rerun-A2XHGFZS.js +0 -90
- package/dist/research-BLDY5UWH.js +0 -62
- package/dist/research-U7RQXMYH.js +0 -262
- package/dist/reset-4CCWB2RT.js +0 -54
- package/dist/reset-J3KCWFMZ.js +0 -54
- package/dist/resolve-HEK27ANI.js +0 -121
- package/dist/retry-HPZIUG2S.js +0 -62
- package/dist/retry-VVI6N6UR.js +0 -60
- package/dist/rules-SK5DFFPY.js +0 -96
- package/dist/rules-add-YQNYSME7.js +0 -462
- package/dist/run-KBN5K7LE.js +0 -65
- package/dist/run-M7ZDE6IA.js +0 -66
- package/dist/scaffold-ad-6BN5LWQH.js +0 -1511
- package/dist/scaffold-static-ad-VVZRAWBR.js +0 -1005
- package/dist/scaffold-video-LFIYI4GP.js +0 -883
- package/dist/schedule-QMOKWTJ3.js +0 -61
- package/dist/scheduled-agents-FCQHQ6KR.js +0 -50
- package/dist/schema-THFLCMBN.js +0 -132
- package/dist/search-XIUYSWO6.js +0 -174
- package/dist/select-QBU6ED4K.js +0 -101
- package/dist/set-prompt-TL64CRBQ.js +0 -193
- package/dist/setup-links-QVI6NAOK.js +0 -141
- package/dist/shared-NDRFKAH7.js +0 -31
- package/dist/site-PZPJY33N.js +0 -177
- package/dist/sources-ER7ANNG3.js +0 -454
- package/dist/sources-RMNFV4CA.js +0 -30
- package/dist/stale-ITFCPOER.js +0 -71
- package/dist/stats-RCLQE4HJ.js +0 -34
- package/dist/status-ABMJBCPJ.js +0 -62
- package/dist/stock-ECRBD7RP.js +0 -179
- package/dist/studio-MARZ22J2.js +0 -49
- package/dist/sync-QDD3MRJ6.js +0 -54
- package/dist/sync-definition-C6ROLKJ4.js +0 -64
- package/dist/tag-manager-G3LBQZUL.js +0 -43
- package/dist/tags-5JYOEYIT.js +0 -20
- package/dist/tags-B473RWAA.js +0 -224
- package/dist/tags-EWHPUM2V.js +0 -20
- package/dist/tags-KBCX6BDU.js +0 -26
- package/dist/tags-PEWN6GNZ.js +0 -20
- package/dist/targeting-criteria-EU65WUUF.js +0 -113
- package/dist/targets-KVXS5QKM.js +0 -103
- package/dist/testimonials-YMMA5YWL.js +0 -32
- package/dist/top-companies-OOX3DITI.js +0 -108
- package/dist/translate-OXVIMYHE.js +0 -604
- package/dist/triggers-OX2GKG4Y.js +0 -142
- package/dist/unlink-3USEPJSA.js +0 -67
- package/dist/unstage-VSCNPTAC.js +0 -85
- package/dist/update-6JKTH65B.js +0 -152
- package/dist/update-FG4ELXYJ.js +0 -98
- package/dist/update-GZFKHA3A.js +0 -188
- package/dist/update-HZHG67N6.js +0 -63
- package/dist/upload-BKCQ6FRW.js +0 -126
- package/dist/url-params-UN4DRN2H.js +0 -98
- package/dist/validate-ZS2M5Q3V.js +0 -117
- package/dist/videos-I6YXFBFT.js +0 -39
- package/dist/viewer-check-7ZG7KHEN.js +0 -80
- package/dist/web-UGU7YMII.js +0 -140
- package/dist/winning-ads-ABN5OULS.js +0 -84
- package/dist/write-commands-6VR2UD3T.js +0 -1024
- package/dist/write-commands-HCQI4Y27.js +0 -737
- package/dist/write-commands-HCQI4Y27.js.map +0 -1
- package/dist/x-WK2VQDPF.js +0 -47
- /package/dist/{account-Z65CPOWE.js.map → account-3H6BZO5H.js.map} +0 -0
- /package/dist/{account-KNRDOUJP.js.map → account-VGSYM7LY.js.map} +0 -0
- /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-AE5IJGGW.js.map} +0 -0
- /package/dist/{accounts-RW6KXBOQ.js.map → accounts-2ARS6XP2.js.map} +0 -0
- /package/dist/{accounts-RTN5ZGTU.js.map → accounts-AQFW4ZUM.js.map} +0 -0
- /package/dist/{accounts-UA2ZWRN4.js.map → accounts-K4INATCW.js.map} +0 -0
- /package/dist/{actions-HNLISA7T.js.map → actions-QMUHOAXG.js.map} +0 -0
- /package/dist/{activecampaign-I5CILZPU.js.map → activecampaign-J3QN5FMG.js.map} +0 -0
- /package/dist/{activities-IQPJPP4B.js.map → activities-T253KK4Q.js.map} +0 -0
- /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-VRSBI2Z2.js.map} +0 -0
- /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-IEBVEAMS.js.map} +0 -0
- /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-ALV4KFPZ.js.map} +0 -0
- /package/dist/{add-XF5COUAS.js.map → add-VDUA6OWM.js.map} +0 -0
- /package/dist/{add-6WKPFMLG.js.map → add-XHOKCSW5.js.map} +0 -0
- /package/dist/{ads-L65JIKCD.js.map → ads-CQZHD7FC.js.map} +0 -0
- /package/dist/{ads-G6AS5L7G.js.map → ads-HGDPNIT6.js.map} +0 -0
- /package/dist/{advertisers-6NUM2Q3A.js.map → advertisers-UDSEFMP7.js.map} +0 -0
- /package/dist/{analytics-VLHE5A2M.js.map → analytics-TBETZOPJ.js.map} +0 -0
- /package/dist/{analytics-QKP3A5F3.js.map → analytics-VH74LMMC.js.map} +0 -0
- /package/dist/{connect-WBGCBBFJ.js.map → asset-writes-L5TMKIZC.js.map} +0 -0
- /package/dist/{assign-6HI6TNLP.js.map → assign-6IE2ASFC.js.map} +0 -0
- /package/dist/{audience-size-25LP2OBF.js.map → audience-size-CSBWDFEP.js.map} +0 -0
- /package/dist/{audiences-RPLVMO4H.js.map → audiences-AAZH56WD.js.map} +0 -0
- /package/dist/{audit-YY6X2MPA.js.map → audit-AEENRVGD.js.map} +0 -0
- /package/dist/{autocomplete-SAWJK4NF.js.map → autocomplete-AAGTJHVL.js.map} +0 -0
- /package/dist/{avatars-MXTI74VC.js.map → avatars-VEATUUKU.js.map} +0 -0
- /package/dist/{bid-pricing-HZ74SLEB.js.map → bid-pricing-SZTGCZTV.js.map} +0 -0
- /package/dist/{brand-T3OACVQX.js.map → brand-MXGETE4R.js.map} +0 -0
- /package/dist/{brief-BN4UGUXF.js.map → brief-3GHSHOGM.js.map} +0 -0
- /package/dist/{businesses-PRRYPR7H.js.map → businesses-H3HIDQX6.js.map} +0 -0
- /package/dist/{campaign-groups-YJK767AP.js.map → campaign-groups-WRI56M5X.js.map} +0 -0
- /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-U5PUVSMT.js.map} +0 -0
- /package/dist/{campaigns-GALDR5KK.js.map → campaigns-4QWC2JE7.js.map} +0 -0
- /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-JEIKY2M4.js.map} +0 -0
- /package/dist/{campaigns-NR6TNQFN.js.map → campaigns-Q4HN7HBY.js.map} +0 -0
- /package/dist/{canvas-GJAQAVS6.js.map → canvas-VJ3XKCAC.js.map} +0 -0
- /package/dist/{capabilities-2KT6TCGZ.js.map → capabilities-SNGGAOV3.js.map} +0 -0
- /package/dist/{catalog-USZL4SGX.js.map → catalog-S32MX453.js.map} +0 -0
- /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-OCVXZLIF.js.map} +0 -0
- /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-QVF2FD3E.js.map} +0 -0
- /package/dist/{check-MMJGFFZS.js.map → check-Z6UMIQKD.js.map} +0 -0
- /package/dist/{chunk-KPYDTIAI.js.map → chunk-2WZI36D3.js.map} +0 -0
- /package/dist/{chunk-FA4YZFRV.js.map → chunk-3AMLOCXY.js.map} +0 -0
- /package/dist/{chunk-X7F4Z6UM.js.map → chunk-3CVAEQMZ.js.map} +0 -0
- /package/dist/{chunk-SISA4HQR.js.map → chunk-3WAYZQNV.js.map} +0 -0
- /package/dist/{chunk-JWSEPW7F.js.map → chunk-46GWHUKN.js.map} +0 -0
- /package/dist/{chunk-R3EKM2P2.js.map → chunk-4O6T76A3.js.map} +0 -0
- /package/dist/{chunk-D5UXWKLQ.js.map → chunk-5MCVK4A3.js.map} +0 -0
- /package/dist/{chunk-CSZFZKVX.js.map → chunk-5ZLN23V5.js.map} +0 -0
- /package/dist/{chunk-OWA7ZLC4.js.map → chunk-77ULVP62.js.map} +0 -0
- /package/dist/{chunk-QNLJ3GNZ.js.map → chunk-AW2GKIGS.js.map} +0 -0
- /package/dist/{chunk-BL2MX6CR.js.map → chunk-BRLY6XD6.js.map} +0 -0
- /package/dist/{chunk-NPMAATZG.js.map → chunk-C7NWUCLQ.js.map} +0 -0
- /package/dist/{chunk-PA4W7BCQ.js.map → chunk-D4HKJBEW.js.map} +0 -0
- /package/dist/{chunk-H5HDZ7IC.js.map → chunk-DCBZ5CHZ.js.map} +0 -0
- /package/dist/{chunk-BITS62MF.js.map → chunk-G6XKD7QE.js.map} +0 -0
- /package/dist/{chunk-TP7HKSBX.js.map → chunk-GBFL4TD2.js.map} +0 -0
- /package/dist/{chunk-3TZVZXM6.js.map → chunk-H5SCKWFT.js.map} +0 -0
- /package/dist/{chunk-HSPMBLKE.js.map → chunk-HXPK6KAL.js.map} +0 -0
- /package/dist/{chunk-2PWNIEW4.js.map → chunk-I7GOSMWT.js.map} +0 -0
- /package/dist/{chunk-LOMH4TTC.js.map → chunk-IBY44U2M.js.map} +0 -0
- /package/dist/{chunk-IJ22WP3G.js.map → chunk-ITNHIZKK.js.map} +0 -0
- /package/dist/{chunk-P3W6SRSQ.js.map → chunk-J33P2JNS.js.map} +0 -0
- /package/dist/{chunk-NEIUVSDK.js.map → chunk-JH2L5CQD.js.map} +0 -0
- /package/dist/{chunk-62JQQUAU.js.map → chunk-JQH5VG6F.js.map} +0 -0
- /package/dist/{chunk-6WXV5GTA.js.map → chunk-JVH5A3XC.js.map} +0 -0
- /package/dist/{chunk-ILSKYRDR.js.map → chunk-KTOYQP6D.js.map} +0 -0
- /package/dist/{chunk-G4STCTY3.js.map → chunk-LO3IF5PS.js.map} +0 -0
- /package/dist/{chunk-BOPC3D6I.js.map → chunk-LRRFGOW3.js.map} +0 -0
- /package/dist/{chunk-C6EYCD5J.js.map → chunk-LTPTJWZC.js.map} +0 -0
- /package/dist/{chunk-NXZCCGES.js.map → chunk-MRQHJW5U.js.map} +0 -0
- /package/dist/{chunk-TRPJJMCS.js.map → chunk-NHYI7ORL.js.map} +0 -0
- /package/dist/{chunk-MXH35PJ5.js.map → chunk-NLI7C3K2.js.map} +0 -0
- /package/dist/{chunk-TPANP5A2.js.map → chunk-NSEMXBUB.js.map} +0 -0
- /package/dist/{chunk-LBO2YAZY.js.map → chunk-OM2BRYXJ.js.map} +0 -0
- /package/dist/{chunk-2LI6746F.js.map → chunk-OY4SKCIU.js.map} +0 -0
- /package/dist/{chunk-6WCAV27H.js.map → chunk-OYAJNTRO.js.map} +0 -0
- /package/dist/{chunk-QE3JEJXF.js.map → chunk-PL7J3DPQ.js.map} +0 -0
- /package/dist/{chunk-PTGYM4J6.js.map → chunk-PUSBUMYM.js.map} +0 -0
- /package/dist/{chunk-D5CUAOQX.js.map → chunk-RRADFRPI.js.map} +0 -0
- /package/dist/{chunk-VD73V44J.js.map → chunk-SGEPZB3D.js.map} +0 -0
- /package/dist/{chunk-LPXSM2DI.js.map → chunk-TFTZDWCX.js.map} +0 -0
- /package/dist/{chunk-2XRMPSEV.js.map → chunk-TG4NCHFS.js.map} +0 -0
- /package/dist/{chunk-5HJRZFMW.js.map → chunk-TTHM66TA.js.map} +0 -0
- /package/dist/{chunk-ZL23HA4N.js.map → chunk-VL2GNXZY.js.map} +0 -0
- /package/dist/{chunk-TZEVD4Q6.js.map → chunk-VQPZDM6N.js.map} +0 -0
- /package/dist/{chunk-JQU2LUZG.js.map → chunk-XCKINS7K.js.map} +0 -0
- /package/dist/{chunk-AVNSH2JE.js.map → chunk-YLYXSJ6O.js.map} +0 -0
- /package/dist/{chunk-MVB32GPI.js.map → chunk-ZAPO6UWS.js.map} +0 -0
- /package/dist/{chunk-FUKDI2UK.js.map → chunk-ZEPUDYPL.js.map} +0 -0
- /package/dist/{chunk-UWXDNVS5.js.map → chunk-ZJSGGJ5R.js.map} +0 -0
- /package/dist/{claim-SLGYOOWD.js.map → claim-J2LYNHZK.js.map} +0 -0
- /package/dist/{companies-IVMH6YII.js.map → companies-VYY22B6T.js.map} +0 -0
- /package/dist/{complete-45L2FI2X.js.map → complete-5I32XM7P.js.map} +0 -0
- /package/dist/{customers-NLU7NYDC.js.map → connect-EUFFQQ7O.js.map} +0 -0
- /package/dist/{conversation-RIOL3OJ7.js.map → conversation-D6KZHGPP.js.map} +0 -0
- /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-ECZBVY7D.js.map} +0 -0
- /package/dist/{conversions-3ISBR3TS.js.map → conversions-5QCSCRLI.js.map} +0 -0
- /package/dist/{conversions-TKIXNSYR.js.map → conversions-Y3X6ZTTF.js.map} +0 -0
- /package/dist/{create-ACLCRXQP.js.map → create-2JCRTQJL.js.map} +0 -0
- /package/dist/{create-VAPJ52GJ.js.map → create-LMSQPHPB.js.map} +0 -0
- /package/dist/{create-7JY2PTIZ.js.map → create-MBLNB5RY.js.map} +0 -0
- /package/dist/{create-KYBMFD32.js.map → create-VR7RXKL7.js.map} +0 -0
- /package/dist/{creatives-VQO2TKE3.js.map → creatives-5C42BDMW.js.map} +0 -0
- /package/dist/{creatives-S5QUWUL6.js.map → creatives-HYPSTANO.js.map} +0 -0
- /package/dist/{credentials-YTQ6BHWV.js.map → credentials-4H4AUYJN.js.map} +0 -0
- /package/dist/{critique-BHYJYZDV.js.map → critique-UOJZWDG2.js.map} +0 -0
- /package/dist/{critique-5LCG5TYF.js.map → critique-WCWMQQVV.js.map} +0 -0
- /package/dist/{crm-IKTWHWEB.js.map → crm-B7OTHMBP.js.map} +0 -0
- /package/dist/{crm-N7K57LZJ.js.map → crm-DZRWKJ6V.js.map} +0 -0
- /package/dist/{fit-UJQ47C4A.js.map → customers-AOFJJCGD.js.map} +0 -0
- /package/dist/{delete-26J3X3ZH.js.map → delete-DEG5KOBY.js.map} +0 -0
- /package/dist/{delete-EVXOFT2H.js.map → delete-EFIODCXG.js.map} +0 -0
- /package/dist/{delete-A4F5Z54J.js.map → delete-PQIMW2LK.js.map} +0 -0
- /package/dist/{demographics-VZKFMM4X.js.map → demographics-F26DIOCM.js.map} +0 -0
- /package/dist/{discard-ULRVUJDV.js.map → discard-2EJY6UGP.js.map} +0 -0
- /package/dist/{domain-L4WCCX7R.js.map → domain-XLJABLWB.js.map} +0 -0
- /package/dist/{draft-O4S5RKWK.js.map → draft-2YND6T4U.js.map} +0 -0
- /package/dist/{draft-Y2QJE2NM.js.map → draft-34CGWUVA.js.map} +0 -0
- /package/dist/{draft-57OQKHZI.js.map → draft-WRVEANL5.js.map} +0 -0
- /package/dist/{experiment-G3FQVAJU.js.map → experiment-7N4QFRWV.js.map} +0 -0
- /package/dist/{facets-EHQKGGJ2.js.map → facets-OPTNDPW2.js.map} +0 -0
- /package/dist/{feedback-CAOZPGTT.js.map → feedback-43BPXNBI.js.map} +0 -0
- /package/dist/{feedback-record-EXV5H6OS.js.map → feedback-record-35ZSDL6Z.js.map} +0 -0
- /package/dist/{fetch-ETKT2RBC.js.map → fetch-O46XBA7S.js.map} +0 -0
- /package/dist/{find-EVY4XEIQ.js.map → find-FSQAEGGF.js.map} +0 -0
- /package/dist/{fonts-7VWBQPJF.js.map → fit-CWJ5QQ4R.js.map} +0 -0
- /package/dist/{flows-Z7355RMD.js.map → flows-CVORIQ4B.js.map} +0 -0
- /package/dist/{ideas-F6CIGTVU.js.map → fonts-6TPYR6IW.js.map} +0 -0
- /package/dist/{forecast-OI7YWZ6F.js.map → forecast-2VLA6NJA.js.map} +0 -0
- /package/dist/{funnel-2B3JXJPX.js.map → funnel-XLKDLXMG.js.map} +0 -0
- /package/dist/{ga4-2BL5YAYN.js.map → ga4-LPDIBNYP.js.map} +0 -0
- /package/dist/{get-2RSN4N3J.js.map → get-O56GGN3V.js.map} +0 -0
- /package/dist/{get-6N7QJMIP.js.map → get-WFQ4XEAW.js.map} +0 -0
- /package/dist/{google-7STODZQR.js.map → google-5ESVO76E.js.map} +0 -0
- /package/dist/{google-ads-G7REKD4A.js.map → google-ads-DZMOTUY5.js.map} +0 -0
- /package/dist/{gsc-UU3T2C6B.js.map → gsc-FIZTQX3N.js.map} +0 -0
- /package/dist/{history-YMK2JNZU.js.map → history-43BBQZOB.js.map} +0 -0
- /package/dist/{history-IQ33J5PB.js.map → history-QKDYBSYM.js.map} +0 -0
- /package/dist/{hubspot-BUFS7S33.js.map → hubspot-S44MPK3G.js.map} +0 -0
- /package/dist/{icon-GB7UH5RF.js.map → icon-CSVAZ7NE.js.map} +0 -0
- /package/dist/{ingest-XLTRLCDV.js.map → ideas-SLP5WXFF.js.map} +0 -0
- /package/dist/{images-WCKTD6Z2.js.map → images-TWZOROCT.js.map} +0 -0
- /package/dist/{logo-YSNUUT33.js.map → ingest-5GCZ5ZBV.js.map} +0 -0
- /package/dist/{ingest-RQUJGS7K.js.map → ingest-P54J4W3V.js.map} +0 -0
- /package/dist/{inspect-KFVAMD4N.js.map → inspect-S4COGUBC.js.map} +0 -0
- /package/dist/{inspiration-XQYHBJY2.js.map → inspiration-IX5N724J.js.map} +0 -0
- /package/dist/{keyword-metrics-WYF3QMCW.js.map → keyword-metrics-26CCKFZK.js.map} +0 -0
- /package/dist/{keywords-for-site-G5L5EP3T.js.map → keywords-for-site-JWWECF63.js.map} +0 -0
- /package/dist/{landing-WUILAWDS.js.map → landing-VFDRADZY.js.map} +0 -0
- /package/dist/{leads-4SJ4NJOI.js.map → leads-DTKKYSKH.js.map} +0 -0
- /package/dist/{learn-CC6Q5IK2.js.map → learn-GQ75IPRK.js.map} +0 -0
- /package/dist/{line-item-writes-YXKYR25W.js.map → line-item-writes-DVVHVR3Y.js.map} +0 -0
- /package/dist/{line-items-CKUD2UU4.js.map → line-items-EOZMK7A5.js.map} +0 -0
- /package/dist/{link-VBYFI7AM.js.map → link-R5NGCQ5H.js.map} +0 -0
- /package/dist/{linkedin-XKVPSCLV.js.map → linkedin-DHZO3IJX.js.map} +0 -0
- /package/dist/{list-VSUF2IWT.js.map → list-57QBEGLM.js.map} +0 -0
- /package/dist/{list-ENYDGT3F.js.map → list-Q44BBHDI.js.map} +0 -0
- /package/dist/{list-6ZNZGRRK.js.map → list-W6G2NTG5.js.map} +0 -0
- /package/dist/{log-AACKGBDW.js.map → log-B6X5EPKA.js.map} +0 -0
- /package/dist/{performance-K7E5KAZW.js.map → logo-VHXH4J6A.js.map} +0 -0
- /package/dist/{make-ED7HBLH3.js.map → make-OIFLF3QS.js.map} +0 -0
- /package/dist/{map-63CQHWPI.js.map → map-PIOZT2MQ.js.map} +0 -0
- /package/dist/{mcp-RKAXC6IP.js.map → mcp-GFKHLWDB.js.map} +0 -0
- /package/dist/{media-sources-PEHUMH7C.js.map → media-sources-VMMMW5UM.js.map} +0 -0
- /package/dist/{members-SELIA674.js.map → members-W2QBMNIW.js.map} +0 -0
- /package/dist/{normalize-VAZPTBDX.js.map → normalize-N6XC3SLC.js.map} +0 -0
- /package/dist/{options-6FCNFWUF.js.map → options-XYJY2OEQ.js.map} +0 -0
- /package/dist/{pages-FTI44OSH.js.map → pages-PTWRXAZT.js.map} +0 -0
- /package/dist/{reddit-XIHRI3CN.js.map → performance-7NEZTOJ5.js.map} +0 -0
- /package/dist/{pixels-6IUB3Y3H.js.map → pixels-MYT3TCHZ.js.map} +0 -0
- /package/dist/{pixels-MBKR4XPX.js.map → pixels-ZZCQUS3J.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-PKEO6WUK.js.map → promoted-tweet-writes-X2F7R2AE.js.map} +0 -0
- /package/dist/{promoted-tweets-7MXVZRBI.js.map → promoted-tweets-XCSD6VKP.js.map} +0 -0
- /package/dist/{publish-MPMGRV72.js.map → publish-OBY6E43R.js.map} +0 -0
- /package/dist/{run-KBN5K7LE.js.map → reddit-WJ6KHYBC.js.map} +0 -0
- /package/dist/{refresh-A27N75NH.js.map → refresh-G5BQ2LWU.js.map} +0 -0
- /package/dist/{release-UKRB5IUN.js.map → release-PBZO35KY.js.map} +0 -0
- /package/dist/{remove-AFNFVPZY.js.map → remove-VJ2MEUPM.js.map} +0 -0
- /package/dist/{reopen-M5HE6J3G.js.map → reopen-W3LYOHSR.js.map} +0 -0
- /package/dist/{rerun-A2XHGFZS.js.map → rerun-4GDNBFNM.js.map} +0 -0
- /package/dist/{research-U7RQXMYH.js.map → research-4YTFPGH7.js.map} +0 -0
- /package/dist/{research-BLDY5UWH.js.map → research-LOQRIBO6.js.map} +0 -0
- /package/dist/{reset-4CCWB2RT.js.map → reset-55CCQGXB.js.map} +0 -0
- /package/dist/{reset-J3KCWFMZ.js.map → reset-AVTQEJPZ.js.map} +0 -0
- /package/dist/{resolve-HEK27ANI.js.map → resolve-E6FNMFE3.js.map} +0 -0
- /package/dist/{retry-VVI6N6UR.js.map → retry-HBJ7MKVI.js.map} +0 -0
- /package/dist/{retry-HPZIUG2S.js.map → retry-QBRYM6MG.js.map} +0 -0
- /package/dist/{rules-SK5DFFPY.js.map → rules-XNDBGOIS.js.map} +0 -0
- /package/dist/{rules-add-YQNYSME7.js.map → rules-add-UM3ZKSVD.js.map} +0 -0
- /package/dist/{run-M7ZDE6IA.js.map → run-D4YHZ4Z4.js.map} +0 -0
- /package/dist/{shared-NDRFKAH7.js.map → run-ZCJ7NP63.js.map} +0 -0
- /package/dist/{scaffold-ad-6BN5LWQH.js.map → scaffold-ad-VQZAP32M.js.map} +0 -0
- /package/dist/{scaffold-static-ad-VVZRAWBR.js.map → scaffold-static-ad-LEU4M44N.js.map} +0 -0
- /package/dist/{scaffold-video-LFIYI4GP.js.map → scaffold-video-PSWSYRSC.js.map} +0 -0
- /package/dist/{schedule-QMOKWTJ3.js.map → schedule-AAH7HYFK.js.map} +0 -0
- /package/dist/{scheduled-agents-FCQHQ6KR.js.map → scheduled-agents-HDABMHZI.js.map} +0 -0
- /package/dist/{schema-THFLCMBN.js.map → schema-OH5OWMVQ.js.map} +0 -0
- /package/dist/{search-XIUYSWO6.js.map → search-BSDPVSGA.js.map} +0 -0
- /package/dist/{select-QBU6ED4K.js.map → select-EI4QF4YZ.js.map} +0 -0
- /package/dist/{set-prompt-TL64CRBQ.js.map → set-prompt-RKDAGUWG.js.map} +0 -0
- /package/dist/{setup-links-QVI6NAOK.js.map → setup-links-CNNJA7AB.js.map} +0 -0
- /package/dist/{sync-definition-C6ROLKJ4.js.map → shared-3IBNDEFL.js.map} +0 -0
- /package/dist/{site-PZPJY33N.js.map → site-NV4U7PIF.js.map} +0 -0
- /package/dist/{sources-ER7ANNG3.js.map → sources-ATONL7W5.js.map} +0 -0
- /package/dist/{sources-RMNFV4CA.js.map → sources-C3TGHKLQ.js.map} +0 -0
- /package/dist/{stale-ITFCPOER.js.map → stale-6QPXL6BZ.js.map} +0 -0
- /package/dist/{stats-RCLQE4HJ.js.map → stats-ZAGJH4AD.js.map} +0 -0
- /package/dist/{status-ABMJBCPJ.js.map → status-BML3F4MZ.js.map} +0 -0
- /package/dist/{stock-ECRBD7RP.js.map → stock-6SHHLSKG.js.map} +0 -0
- /package/dist/{studio-MARZ22J2.js.map → studio-ZLCGXFAN.js.map} +0 -0
- /package/dist/{sync-QDD3MRJ6.js.map → sync-DZAOUQPE.js.map} +0 -0
- /package/dist/{viewer-check-7ZG7KHEN.js.map → sync-definition-RFEL65JE.js.map} +0 -0
- /package/dist/{tag-manager-G3LBQZUL.js.map → tag-manager-3CJ66GKJ.js.map} +0 -0
- /package/dist/{tags-EWHPUM2V.js.map → tags-2KSXCJRZ.js.map} +0 -0
- /package/dist/{tags-KBCX6BDU.js.map → tags-662KZJLV.js.map} +0 -0
- /package/dist/{tags-5JYOEYIT.js.map → tags-6QBVW25V.js.map} +0 -0
- /package/dist/{tags-PEWN6GNZ.js.map → tags-LQCEJGIL.js.map} +0 -0
- /package/dist/{tags-B473RWAA.js.map → tags-RIVD54ZG.js.map} +0 -0
- /package/dist/{targeting-criteria-EU65WUUF.js.map → targeting-criteria-XNLYPIL2.js.map} +0 -0
- /package/dist/{targets-KVXS5QKM.js.map → targets-OYIVS5KJ.js.map} +0 -0
- /package/dist/{testimonials-YMMA5YWL.js.map → testimonials-WT43CF7V.js.map} +0 -0
- /package/dist/{top-companies-OOX3DITI.js.map → top-companies-6QQMOS2Y.js.map} +0 -0
- /package/dist/{translate-OXVIMYHE.js.map → translate-7QN7JFGU.js.map} +0 -0
- /package/dist/{triggers-OX2GKG4Y.js.map → triggers-LVQY3QJ2.js.map} +0 -0
- /package/dist/{unlink-3USEPJSA.js.map → unlink-5ASZTCS2.js.map} +0 -0
- /package/dist/{unstage-VSCNPTAC.js.map → unstage-LNZTEATR.js.map} +0 -0
- /package/dist/{update-6JKTH65B.js.map → update-7BIR4GYO.js.map} +0 -0
- /package/dist/{update-FG4ELXYJ.js.map → update-BRLM5DB3.js.map} +0 -0
- /package/dist/{update-HZHG67N6.js.map → update-DRZAAJQ2.js.map} +0 -0
- /package/dist/{update-GZFKHA3A.js.map → update-NOWC3ICD.js.map} +0 -0
- /package/dist/{upload-BKCQ6FRW.js.map → upload-457Q4ANZ.js.map} +0 -0
- /package/dist/{url-params-UN4DRN2H.js.map → url-params-KM4NJGYC.js.map} +0 -0
- /package/dist/{validate-ZS2M5Q3V.js.map → validate-COLEPJBA.js.map} +0 -0
- /package/dist/{videos-I6YXFBFT.js.map → videos-5IDZTEWC.js.map} +0 -0
- /package/dist/{web-UGU7YMII.js.map → web-FZYOCCYN.js.map} +0 -0
- /package/dist/{winning-ads-ABN5OULS.js.map → winning-ads-I4DMP7RU.js.map} +0 -0
- /package/dist/{write-commands-6VR2UD3T.js.map → write-commands-FYB6QG7K.js.map} +0 -0
- /package/dist/{x-WK2VQDPF.js.map → x-OMN5DDLM.js.map} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import {
|
|
2
|
+
linkedinBidPricingRequestSchema
|
|
3
|
+
} from "./chunk-3WAYZQNV.js";
|
|
4
|
+
import {
|
|
5
|
+
exitOnInvalidArgs,
|
|
6
|
+
handleLinkedinError,
|
|
7
|
+
loadTargetingArg,
|
|
8
|
+
resolveAccountIdArg
|
|
9
|
+
} from "./chunk-TTHM66TA.js";
|
|
10
|
+
import {
|
|
11
|
+
writeAdsJson
|
|
12
|
+
} from "./chunk-SWL4AAPP.js";
|
|
13
|
+
import {
|
|
14
|
+
NO_CACHE_ARG
|
|
15
|
+
} from "./chunk-K3TNTBZJ.js";
|
|
16
|
+
import "./chunk-DAO63OOP.js";
|
|
17
|
+
import "./chunk-GXDLWBOY.js";
|
|
18
|
+
import "./chunk-GIWHHCD6.js";
|
|
19
|
+
import "./chunk-XQIOCIDO.js";
|
|
20
|
+
import "./chunk-WTJSMYY2.js";
|
|
21
|
+
import {
|
|
22
|
+
apiPost
|
|
23
|
+
} from "./chunk-XDZVBX6L.js";
|
|
24
|
+
import "./chunk-N5O67GK5.js";
|
|
25
|
+
import "./chunk-EE72SSB2.js";
|
|
26
|
+
import "./chunk-WNSE7N75.js";
|
|
27
|
+
import "./chunk-YQSBHWOI.js";
|
|
28
|
+
|
|
29
|
+
// src/commands/ads/linkedin/bid-pricing.ts
|
|
30
|
+
import { defineCommand } from "citty";
|
|
31
|
+
var FLAG_OF_FIELD = {
|
|
32
|
+
objectiveType: "--objective",
|
|
33
|
+
costType: "--cost-type",
|
|
34
|
+
campaignType: "--campaign-type",
|
|
35
|
+
targetingCriteria: "--targeting"
|
|
36
|
+
};
|
|
37
|
+
var bidPricingCommand = defineCommand({
|
|
38
|
+
meta: {
|
|
39
|
+
name: "bid-pricing",
|
|
40
|
+
description: `LinkedIn's suggested bid (min / default / max) for a targeting + objective + bid type \u2014 the same range Campaign Manager shows while building a campaign. Amounts are in the ad account's currency.
|
|
41
|
+
|
|
42
|
+
Also returns the bid limits, LinkedIn's daily budget range, and the playbook \xA706 floor (2/3 of the suggested bid \u2014 the recommended manual CPC starting point). Feed the suggested bid into \`forecast --bid\` for the expected results.
|
|
43
|
+
|
|
44
|
+
Objective types: BRAND_AWARENESS | WEBSITE_VISIT | ENGAGEMENT | VIDEO_VIEW |
|
|
45
|
+
LEAD_GENERATION | WEBSITE_CONVERSION | JOB_APPLICANT | TALENT_LEAD
|
|
46
|
+
Cost types: CPC (default) | CPM | CPV
|
|
47
|
+
|
|
48
|
+
Start here:
|
|
49
|
+
baker ads linkedin bid-pricing --account-id 503001492 --objective LEAD_GENERATION --targeting-file targeting.json
|
|
50
|
+
baker ads linkedin bid-pricing --account-id 503001492 --objective WEBSITE_VISIT --cost-type CPM --targeting '{"include":...}'`
|
|
51
|
+
},
|
|
52
|
+
args: {
|
|
53
|
+
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
54
|
+
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
55
|
+
objective: {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "Objective type (e.g. LEAD_GENERATION, WEBSITE_VISIT)",
|
|
58
|
+
required: true
|
|
59
|
+
},
|
|
60
|
+
"cost-type": { type: "string", description: "CPC (default) | CPM | CPV", default: "CPC" },
|
|
61
|
+
"campaign-type": {
|
|
62
|
+
type: "string",
|
|
63
|
+
description: "SPONSORED_UPDATES (default, sponsored content) | SPONSORED_INMAILS | TEXT_AD",
|
|
64
|
+
default: "SPONSORED_UPDATES"
|
|
65
|
+
},
|
|
66
|
+
"audience-expansion": {
|
|
67
|
+
type: "boolean",
|
|
68
|
+
description: "Price with audience expansion on (default off, the playbook setting)",
|
|
69
|
+
default: false
|
|
70
|
+
},
|
|
71
|
+
targeting: { type: "string", description: "Inline JSON targetingCriteria" },
|
|
72
|
+
"targeting-file": { type: "string", description: "Path to JSON file with targetingCriteria" },
|
|
73
|
+
"no-cache": NO_CACHE_ARG,
|
|
74
|
+
output: { type: "string", description: "json", default: "json" }
|
|
75
|
+
},
|
|
76
|
+
run: async ({ args }) => {
|
|
77
|
+
const accountId = resolveAccountIdArg(args);
|
|
78
|
+
const targetingCriteria = loadTargetingArg(args);
|
|
79
|
+
const parsed = linkedinBidPricingRequestSchema.safeParse({
|
|
80
|
+
accountId,
|
|
81
|
+
objectiveType: String(args.objective).toUpperCase(),
|
|
82
|
+
costType: String(args["cost-type"]).toUpperCase(),
|
|
83
|
+
campaignType: String(args["campaign-type"]).toUpperCase(),
|
|
84
|
+
matchType: args["audience-expansion"] ? "AUDIENCE_EXPANDED" : "EXACT",
|
|
85
|
+
targetingCriteria,
|
|
86
|
+
skipCache: Boolean(args["no-cache"])
|
|
87
|
+
});
|
|
88
|
+
if (!parsed.success) exitOnInvalidArgs(parsed.error.issues, FLAG_OF_FIELD);
|
|
89
|
+
try {
|
|
90
|
+
const data = await apiPost("/api/ads/linkedin/bid-pricing", parsed.data);
|
|
91
|
+
writeAdsJson({ ok: true, data });
|
|
92
|
+
} catch (err) {
|
|
93
|
+
handleLinkedinError(err);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
export {
|
|
98
|
+
bidPricingCommand
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=bid-pricing-SZTGCZTV.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./chunk-YQSBHWOI.js";
|
|
2
|
+
|
|
3
|
+
// src/commands/brand/index.ts
|
|
4
|
+
import { defineCommand } from "citty";
|
|
5
|
+
var brandCommand = defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "brand",
|
|
8
|
+
description: `Brand asset verification for src/brand/.
|
|
9
|
+
|
|
10
|
+
Start here: \`baker brand fonts check\` after defining or editing the brand's typography.
|
|
11
|
+
|
|
12
|
+
Subcommands:
|
|
13
|
+
baker brand fonts \u2014 verify the brand's typefaces really load, and self-host them into src/brand/fonts/`
|
|
14
|
+
},
|
|
15
|
+
subCommands: {
|
|
16
|
+
fonts: () => import("./fonts-6TPYR6IW.js").then((m) => m.fontsCommand)
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
brandCommand
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=brand-MXGETE4R.js.map
|
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readCreativeSpecs,
|
|
3
|
+
rulesHints,
|
|
4
|
+
rulesView,
|
|
5
|
+
waiverCounts
|
|
6
|
+
} from "./chunk-QVQKCVP7.js";
|
|
7
|
+
import {
|
|
8
|
+
liveViewerLookups
|
|
9
|
+
} from "./chunk-PL7J3DPQ.js";
|
|
10
|
+
import "./chunk-TG4NCHFS.js";
|
|
11
|
+
import "./chunk-PUSBUMYM.js";
|
|
12
|
+
import "./chunk-LCW3U4EA.js";
|
|
13
|
+
import {
|
|
14
|
+
buildSearchBody
|
|
15
|
+
} from "./chunk-MXWOYFI2.js";
|
|
16
|
+
import "./chunk-D7KR6KXR.js";
|
|
17
|
+
import "./chunk-I5VZVQBZ.js";
|
|
18
|
+
import {
|
|
19
|
+
buildNext,
|
|
20
|
+
ideasReport
|
|
21
|
+
} from "./chunk-VQPZDM6N.js";
|
|
22
|
+
import {
|
|
23
|
+
readInsights
|
|
24
|
+
} from "./chunk-EOY6BK4C.js";
|
|
25
|
+
import {
|
|
26
|
+
readAllRules,
|
|
27
|
+
readCompanyReading
|
|
28
|
+
} from "./chunk-SGEPZB3D.js";
|
|
29
|
+
import {
|
|
30
|
+
AWARENESS_STAGES,
|
|
31
|
+
IDEA_ANGLES,
|
|
32
|
+
IDEA_FORMATS
|
|
33
|
+
} from "./chunk-G2LGMWNG.js";
|
|
34
|
+
import {
|
|
35
|
+
withDefinitions
|
|
36
|
+
} from "./chunk-MRQHJW5U.js";
|
|
37
|
+
import {
|
|
38
|
+
researchCustomers
|
|
39
|
+
} from "./chunk-ZAPO6UWS.js";
|
|
40
|
+
import "./chunk-RRADFRPI.js";
|
|
41
|
+
import "./chunk-JH2L5CQD.js";
|
|
42
|
+
import "./chunk-BFRIRZRZ.js";
|
|
43
|
+
import "./chunk-JYALBYN7.js";
|
|
44
|
+
import "./chunk-G6XKD7QE.js";
|
|
45
|
+
import "./chunk-ERSX3MKH.js";
|
|
46
|
+
import "./chunk-FNA277HP.js";
|
|
47
|
+
import "./chunk-5WMTPYKT.js";
|
|
48
|
+
import {
|
|
49
|
+
findWorkspaceRoot
|
|
50
|
+
} from "./chunk-23H4ZJRP.js";
|
|
51
|
+
import "./chunk-4AMIHNNP.js";
|
|
52
|
+
import {
|
|
53
|
+
selectRules
|
|
54
|
+
} from "./chunk-IKCP5NCE.js";
|
|
55
|
+
import "./chunk-MCJ5I5LR.js";
|
|
56
|
+
import {
|
|
57
|
+
viewerFromKnowledge
|
|
58
|
+
} from "./chunk-2WZI36D3.js";
|
|
59
|
+
import "./chunk-65Y3RCWP.js";
|
|
60
|
+
import "./chunk-DWX44QL6.js";
|
|
61
|
+
import "./chunk-2FSEESJU.js";
|
|
62
|
+
import "./chunk-CVBKW75S.js";
|
|
63
|
+
import "./chunk-BLAHHMPF.js";
|
|
64
|
+
import "./chunk-GBFL4TD2.js";
|
|
65
|
+
import "./chunk-DAO63OOP.js";
|
|
66
|
+
import "./chunk-GXDLWBOY.js";
|
|
67
|
+
import "./chunk-GIWHHCD6.js";
|
|
68
|
+
import "./chunk-XQIOCIDO.js";
|
|
69
|
+
import "./chunk-WTJSMYY2.js";
|
|
70
|
+
import {
|
|
71
|
+
ApiError,
|
|
72
|
+
apiGet,
|
|
73
|
+
apiPost
|
|
74
|
+
} from "./chunk-XDZVBX6L.js";
|
|
75
|
+
import "./chunk-N5O67GK5.js";
|
|
76
|
+
import {
|
|
77
|
+
getEnv
|
|
78
|
+
} from "./chunk-EE72SSB2.js";
|
|
79
|
+
import {
|
|
80
|
+
registerSchema,
|
|
81
|
+
writeJson
|
|
82
|
+
} from "./chunk-WNSE7N75.js";
|
|
83
|
+
import "./chunk-YQSBHWOI.js";
|
|
84
|
+
|
|
85
|
+
// src/commands/creatives/brief.ts
|
|
86
|
+
import { readFileSync } from "fs";
|
|
87
|
+
import { readdir, readFile } from "fs/promises";
|
|
88
|
+
import path from "path";
|
|
89
|
+
import { defineCommand } from "citty";
|
|
90
|
+
|
|
91
|
+
// src/commands/creatives/brief-model.ts
|
|
92
|
+
var MIN_IMPRESSIONS = 1e3;
|
|
93
|
+
var LOW_CTR = 1.5;
|
|
94
|
+
var LOW_CVR = 1;
|
|
95
|
+
var round = (n) => Math.round(n * 100) / 100;
|
|
96
|
+
function diagnoseBottleneck(totals) {
|
|
97
|
+
const ctr = totals.impressions > 0 ? round(totals.linkClicks / totals.impressions * 100) : null;
|
|
98
|
+
const cvr = totals.linkClicks > 0 ? round(totals.results / totals.linkClicks * 100) : null;
|
|
99
|
+
if (totals.impressions < MIN_IMPRESSIONS || ctr === null) {
|
|
100
|
+
return { verdict: "too_little_data", ctr, cvr, why: "Too little delivery in the last 30 days to call it." };
|
|
101
|
+
}
|
|
102
|
+
if (ctr < LOW_CTR) {
|
|
103
|
+
return {
|
|
104
|
+
verdict: "hook",
|
|
105
|
+
ctr,
|
|
106
|
+
cvr,
|
|
107
|
+
why: `Link click-through ${ctr}% (under ${LOW_CTR}%): people scroll past. New ideas and hooks are the fix.`
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
if (cvr !== null && cvr < LOW_CVR) {
|
|
111
|
+
return {
|
|
112
|
+
verdict: "after_click",
|
|
113
|
+
ctr,
|
|
114
|
+
cvr,
|
|
115
|
+
why: `People click (${ctr}%) but only ${cvr}% act: the page or the offer loses them, and a new ad will not fix that. Say so, make the ads' promise match the page, and make one idea an offer idea.`
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
verdict: "none",
|
|
120
|
+
ctr,
|
|
121
|
+
cvr,
|
|
122
|
+
why: `Click-through ${ctr}% and ${cvr ?? 0}% of clicks act: the ads work. Build on the winners first.`
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
var CONVERSION_ACTION = /^(lead|purchase|complete_registration|submit_application|schedule|contact|start_trial|subscribe|offsite_conversion\.|onsite_conversion\.lead|onsite_web_lead|omni_purchase|omni_complete_registration)/;
|
|
126
|
+
function resultsOf(actions) {
|
|
127
|
+
if (!Array.isArray(actions)) return 0;
|
|
128
|
+
let total = 0;
|
|
129
|
+
for (const action of actions) {
|
|
130
|
+
const type = action?.action_type;
|
|
131
|
+
const value = Number(action?.value ?? 0);
|
|
132
|
+
if (typeof type === "string" && CONVERSION_ACTION.test(type) && Number.isFinite(value)) total += value;
|
|
133
|
+
}
|
|
134
|
+
return total;
|
|
135
|
+
}
|
|
136
|
+
var MIN_OBSERVED = 5;
|
|
137
|
+
var MAX_QUOTES = 6;
|
|
138
|
+
function customerTruth(insights) {
|
|
139
|
+
const byType = {};
|
|
140
|
+
for (const insight of insights) byType[insight.type] = (byType[insight.type] ?? 0) + 1;
|
|
141
|
+
const observed = insights.filter((i) => i.status === "observed");
|
|
142
|
+
const seen = /* @__PURE__ */ new Set();
|
|
143
|
+
const quotes = [];
|
|
144
|
+
for (const insight of observed) {
|
|
145
|
+
if (seen.has(insight.type) || quotes.length >= MAX_QUOTES) continue;
|
|
146
|
+
seen.add(insight.type);
|
|
147
|
+
quotes.push({
|
|
148
|
+
id: insight.id,
|
|
149
|
+
type: insight.type,
|
|
150
|
+
quote: insight.quote.length > 140 ? `${insight.quote.slice(0, 137)}...` : insight.quote
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return { total: insights.length, observed: observed.length, thin: observed.length < MIN_OBSERVED, byType, quotes };
|
|
154
|
+
}
|
|
155
|
+
var MAX_SAYING = 6;
|
|
156
|
+
var KEPT_STAGES = /* @__PURE__ */ new Set(["proven", "evergreen"]);
|
|
157
|
+
function keptAfterTesting(ad) {
|
|
158
|
+
return ad.survived_test === true || KEPT_STAGES.has(ad.stage ?? "");
|
|
159
|
+
}
|
|
160
|
+
var SAME_ANGLE = 0.4;
|
|
161
|
+
function angleWords(angle) {
|
|
162
|
+
return new Set(
|
|
163
|
+
angle.toLowerCase().split(/[^\p{L}]+/u).filter((w) => w.length >= 4 && w !== "your" && w !== "with").map((w) => w.replace(/s$/, ""))
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
function overlap(a, b) {
|
|
167
|
+
const shared = [...a].filter((w) => b.has(w)).length;
|
|
168
|
+
const all = (/* @__PURE__ */ new Set([...a, ...b])).size;
|
|
169
|
+
return all === 0 ? 0 : shared / all;
|
|
170
|
+
}
|
|
171
|
+
function tally(values) {
|
|
172
|
+
const counts = {};
|
|
173
|
+
for (const value of values) if (value) counts[value] = (counts[value] ?? 0) + 1;
|
|
174
|
+
return counts;
|
|
175
|
+
}
|
|
176
|
+
function marketMap(ads, source) {
|
|
177
|
+
const groups = [];
|
|
178
|
+
for (const ad of ads) {
|
|
179
|
+
const angle = ad.dna.angle?.trim();
|
|
180
|
+
if (!angle) continue;
|
|
181
|
+
const words = angleWords(angle);
|
|
182
|
+
const brand = ad.advertiser ?? "?";
|
|
183
|
+
let group = groups.find((g) => overlap(g.words, words) >= SAME_ANGLE);
|
|
184
|
+
if (!group) {
|
|
185
|
+
group = { angle, words, brands: /* @__PURE__ */ new Set(), kept: /* @__PURE__ */ new Set() };
|
|
186
|
+
groups.push(group);
|
|
187
|
+
}
|
|
188
|
+
group.brands.add(brand);
|
|
189
|
+
if (keptAfterTesting(ad)) group.kept.add(brand);
|
|
190
|
+
}
|
|
191
|
+
const saying = groups.map((g) => ({ angle: g.angle, brands: g.brands.size, ...g.kept.size > 0 ? { kept_brands: g.kept.size } : {} })).sort((a, b) => (b.kept_brands ?? 0) - (a.kept_brands ?? 0) || b.brands - a.brands).slice(0, MAX_SAYING);
|
|
192
|
+
const keptAds = ads.filter(keptAfterTesting).length;
|
|
193
|
+
const stages = tally(ads.map((a) => a.dna.sophistication_stage));
|
|
194
|
+
const sophistication = Object.entries(stages).sort((a, b) => b[1] - a[1])[0]?.[0] ?? null;
|
|
195
|
+
const awareness = tally(ads.map((a) => a.dna.awareness_stage));
|
|
196
|
+
return {
|
|
197
|
+
source,
|
|
198
|
+
ads: ads.length,
|
|
199
|
+
brands: new Set(ads.map((a) => a.advertiser ?? "?")).size,
|
|
200
|
+
sophistication,
|
|
201
|
+
saying,
|
|
202
|
+
awareness,
|
|
203
|
+
containers: tally(ads.map((a) => a.dna.container)),
|
|
204
|
+
unspoken: AWARENESS_STAGES.filter((stage) => !awareness[stage]),
|
|
205
|
+
...keptAds > 0 ? { kept_ads: keptAds } : {}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// src/commands/creatives/brief.ts
|
|
210
|
+
var DESCRIPTION = `Start here before making ads: one read of everything that decides what to make. Who sees the ads, what already works in the account and where it loses people (a verdict, not raw numbers), what this company's reviewers approved and rejected and what they said in their own words, the company's standing rules for every ad, what customers said in their own words, and the ideas already on file.
|
|
211
|
+
|
|
212
|
+
baker creatives brief # the viewer from the Knowledge
|
|
213
|
+
baker creatives brief --adset <id> # the viewer that ad set reaches
|
|
214
|
+
baker creatives brief --account-id act_<id> # when more than one Meta account is connected
|
|
215
|
+
|
|
216
|
+
Then write 4-8 ideas in src/creatives/_ideas/ and run \`baker creatives ideas\`. With few customer quotes on file it gathers them itself first (\`baker research customers\`, about 30 s; --no-research to skip).`;
|
|
217
|
+
var ARGS = {
|
|
218
|
+
adset: {
|
|
219
|
+
type: "string",
|
|
220
|
+
description: "The Meta ad set the ads are for: its viewer replaces the Knowledge's",
|
|
221
|
+
required: false
|
|
222
|
+
},
|
|
223
|
+
"account-id": {
|
|
224
|
+
type: "string",
|
|
225
|
+
description: "Meta ad account to read (act_<id>); default: the one connected account",
|
|
226
|
+
required: false
|
|
227
|
+
},
|
|
228
|
+
full: {
|
|
229
|
+
type: "boolean",
|
|
230
|
+
description: "Every quote, idea and creative instead of the top few",
|
|
231
|
+
required: false,
|
|
232
|
+
default: false
|
|
233
|
+
},
|
|
234
|
+
research: {
|
|
235
|
+
type: "boolean",
|
|
236
|
+
description: "Gather customer quotes first when few are on file (default true; --no-research skips it)",
|
|
237
|
+
required: false,
|
|
238
|
+
default: true
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
registerSchema({ command: "creatives.brief", description: DESCRIPTION, args: ARGS });
|
|
242
|
+
var unavailable = (err) => ({
|
|
243
|
+
unavailable: err instanceof Error ? err.message.slice(0, 200) : "could not be read"
|
|
244
|
+
});
|
|
245
|
+
async function section(read) {
|
|
246
|
+
try {
|
|
247
|
+
return await read();
|
|
248
|
+
} catch (err) {
|
|
249
|
+
return unavailable(err);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function isAvailable(value) {
|
|
253
|
+
return !(value !== null && typeof value === "object" && "unavailable" in value);
|
|
254
|
+
}
|
|
255
|
+
async function companyStatus(root) {
|
|
256
|
+
const doc = await readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => "");
|
|
257
|
+
return doc.trim() && !/^#\s*Company\s*\n+\s*TODO/m.test(doc) ? "ready" : "missing";
|
|
258
|
+
}
|
|
259
|
+
async function readOffers(root) {
|
|
260
|
+
const dir = path.join(root, "src", "content", "offers");
|
|
261
|
+
const files = (await readdir(dir, { recursive: true }).catch(() => [])).filter(
|
|
262
|
+
(f) => f.endsWith(".md")
|
|
263
|
+
);
|
|
264
|
+
return files.map((f) => f.replace(/\.md$/, "")).sort();
|
|
265
|
+
}
|
|
266
|
+
function readDefinition(root, slug) {
|
|
267
|
+
try {
|
|
268
|
+
return readFileSync(path.join(root, "src", "creatives", slug, "_definition.md"), "utf8");
|
|
269
|
+
} catch {
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
async function readViewer(root, adSet) {
|
|
274
|
+
const lookups = liveViewerLookups(root);
|
|
275
|
+
if (adSet) {
|
|
276
|
+
const read = await lookups.adSetViewer(adSet).catch(() => null);
|
|
277
|
+
if (read) return read;
|
|
278
|
+
}
|
|
279
|
+
const personas = await lookups.personas().catch(() => []);
|
|
280
|
+
return viewerFromKnowledge({ personas: personas.map((p) => p.segment ?? p.title ?? p.slug) });
|
|
281
|
+
}
|
|
282
|
+
var MARKET_ADS = 40;
|
|
283
|
+
var MARKET_FALLBACK_ADS = 15;
|
|
284
|
+
var MARKET_SEARCH_MS = 12e3;
|
|
285
|
+
async function readMarket(root) {
|
|
286
|
+
const company = await readCompanyReading(root);
|
|
287
|
+
const query = company?.category ?? company?.sells;
|
|
288
|
+
if (!query) return null;
|
|
289
|
+
const search = (body) => apiPost("/api/ad-library/winners/search", body, {
|
|
290
|
+
timeoutMs: MARKET_SEARCH_MS
|
|
291
|
+
}).catch((err) => {
|
|
292
|
+
if (err instanceof ApiError && err.code === "TIMEOUT") {
|
|
293
|
+
throw new Error("the ad library did not answer in time, so competitors' claims are left out");
|
|
294
|
+
}
|
|
295
|
+
throw err;
|
|
296
|
+
});
|
|
297
|
+
const [followed, all] = await Promise.allSettled([
|
|
298
|
+
search(buildSearchBody({ scope: "followed", platform: "meta", limit: MARKET_ADS, maxPerAdvertiser: 8 })),
|
|
299
|
+
search(buildSearchBody({ query, scope: "all", platform: "meta", limit: MARKET_FALLBACK_ADS, maxPerAdvertiser: 3 }))
|
|
300
|
+
]);
|
|
301
|
+
if (followed.status === "fulfilled" && followed.value.results.length > 0)
|
|
302
|
+
return marketMap(followed.value.results, "followed");
|
|
303
|
+
if (all.status === "rejected") throw all.reason;
|
|
304
|
+
return all.value.results.length > 0 ? marketMap(all.value.results, "library") : null;
|
|
305
|
+
}
|
|
306
|
+
async function metaAccountId(given) {
|
|
307
|
+
if (given) return given.startsWith("act_") ? given : `act_${given}`;
|
|
308
|
+
const named = getEnv().BAKER_META_AD_ACCOUNT_ID;
|
|
309
|
+
if (named) return `act_${named.replace(/^act_/, "")}`;
|
|
310
|
+
const accounts = await apiGet("/api/ads/meta/accounts");
|
|
311
|
+
const ids = accounts.flatMap((a) => {
|
|
312
|
+
const id2 = a.externalId ?? a.id;
|
|
313
|
+
return typeof id2 === "string" && id2 ? [id2] : [];
|
|
314
|
+
});
|
|
315
|
+
if (ids.length !== 1) return null;
|
|
316
|
+
const id = ids[0];
|
|
317
|
+
return id.startsWith("act_") ? id : `act_${id}`;
|
|
318
|
+
}
|
|
319
|
+
async function readBottleneck(accountId) {
|
|
320
|
+
const rows = await apiPost("/api/ads/meta/insights", {
|
|
321
|
+
object: accountId,
|
|
322
|
+
level: "account",
|
|
323
|
+
fields: ["impressions", "inline_link_clicks", "actions", "spend"],
|
|
324
|
+
actionBreakdowns: ["action_type"],
|
|
325
|
+
datePreset: "last_30d",
|
|
326
|
+
limit: 10
|
|
327
|
+
});
|
|
328
|
+
const totals = { impressions: 0, linkClicks: 0, results: 0 };
|
|
329
|
+
for (const row of rows) {
|
|
330
|
+
totals.impressions += Number(row.impressions ?? 0);
|
|
331
|
+
totals.linkClicks += Number(row.inline_link_clicks ?? 0);
|
|
332
|
+
totals.results += resultsOf(row.actions);
|
|
333
|
+
}
|
|
334
|
+
return diagnoseBottleneck(totals);
|
|
335
|
+
}
|
|
336
|
+
function leanCreative(c) {
|
|
337
|
+
return {
|
|
338
|
+
creative: c.slug ?? c.title,
|
|
339
|
+
costPerResult: c.costPerResult,
|
|
340
|
+
...c.currency ? { currency: c.currency } : {},
|
|
341
|
+
ctr: c.ctr,
|
|
342
|
+
fatigue: c.fatigue,
|
|
343
|
+
...c.definition?.idea ? { idea: c.definition.idea } : {},
|
|
344
|
+
...c.definition?.angle ? { angle: c.definition.angle } : {}
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
function whatWorks(creatives, limit = 3) {
|
|
348
|
+
const priced = creatives.filter((c) => c.costPerResult !== null && c.costPerResult > 0);
|
|
349
|
+
const best = [...priced].sort((a, b) => (a.costPerResult ?? 0) - (b.costPerResult ?? 0)).slice(0, limit);
|
|
350
|
+
const tired = creatives.filter((c) => c.fatigue === "fatigued" || c.fatigue === "dead");
|
|
351
|
+
return { best: best.map(leanCreative), replace: tired.map(leanCreative) };
|
|
352
|
+
}
|
|
353
|
+
var HEARD_IT_ALL = /^s[345]/;
|
|
354
|
+
function customersHint(parts) {
|
|
355
|
+
if (parts.researched) {
|
|
356
|
+
return parts.researched.written > 0 ? `${parts.researched.written} customer quotes were just gathered from reviews and Reddit and are in \`customers\`: cite them by id in each idea's \`evidence\`.` : "Customer research found nothing to keep: ideas go in as explore bets (an empty `evidence` list). Never research customers again in this turn.";
|
|
357
|
+
}
|
|
358
|
+
if (!parts.customers.thin) return null;
|
|
359
|
+
return `Only ${parts.customers.observed} customer quotes on file: run \`baker research customers\` now, before writing ideas, so they stand on what customers said. It gathers reviews, Reddit and the web and writes the quotes with their sources in about a minute; never a subagent or web searches of your own for this.`;
|
|
360
|
+
}
|
|
361
|
+
function briefHints(parts) {
|
|
362
|
+
const hints = [];
|
|
363
|
+
if (parts.company === "missing") {
|
|
364
|
+
hints.push("COMPANY.md is empty: run /company-discovery first, or every idea is a guess about the business.");
|
|
365
|
+
}
|
|
366
|
+
const customers = customersHint(parts);
|
|
367
|
+
if (customers) hints.push(customers);
|
|
368
|
+
if (parts.rules) {
|
|
369
|
+
hints.push(
|
|
370
|
+
`Write every idea and every ad within the ${parts.rules} rules in \`rules\`: an ad saying words one bans (\`bans\`) is refused before it renders, and every finished ad is checked against the ones a person taught. When the person asks for something a rule forbids, do it and record why in the ad's prompt.json (\`"waive": [{"rule": "<id>", "why": "<their ask>"}]\`).`
|
|
371
|
+
);
|
|
372
|
+
}
|
|
373
|
+
if (parts.bottleneck && isAvailable(parts.bottleneck) && parts.bottleneck.verdict === "after_click") {
|
|
374
|
+
hints.push("The account loses people after the click: tell the person, and make one idea an offer idea.");
|
|
375
|
+
}
|
|
376
|
+
if (parts.market?.sophistication && HEARD_IT_ALL.test(parts.market.sophistication)) {
|
|
377
|
+
hints.push(
|
|
378
|
+
`This market has heard the plain claim (sophistication ${parts.market.sophistication}): lead with how it works (a mechanism), proof, or an angle nobody uses, never a bigger claim.`
|
|
379
|
+
);
|
|
380
|
+
}
|
|
381
|
+
const claims = parts.market?.saying.map(
|
|
382
|
+
(s) => s.kept_brands ? `"${s.angle}" (kept after testing by ${s.kept_brands})` : `"${s.angle}"`
|
|
383
|
+
) ?? [];
|
|
384
|
+
if (claims.length > 0) {
|
|
385
|
+
hints.push(
|
|
386
|
+
`Competitors already say ${claims.join(", ")}. A message one of them could also run is not a new idea, however it is worded: say what only we have (the offer, a proof, a customer's words) or how it works.`
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
for (const won of parts.learned.winners) {
|
|
390
|
+
hints.push(
|
|
391
|
+
`${won.idea} won in the account ("${won.message}"): build on it first, the same message in a new format or for a new persona.`
|
|
392
|
+
);
|
|
393
|
+
}
|
|
394
|
+
if (parts.learned.failed.length > 0) {
|
|
395
|
+
const lost = parts.learned.failed.map((f) => `"${f.message}"`).join(", ");
|
|
396
|
+
hints.push(`Never repeat a message that lost in the account: ${lost}.`);
|
|
397
|
+
}
|
|
398
|
+
if (parts.rejected > parts.approved && parts.rejected > 0) {
|
|
399
|
+
hints.push(
|
|
400
|
+
"Reviewers rejected more than they approved: read `taste.notes` (their own words) and keep every idea clear of each."
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
if (parts.buildNext.length > 0) {
|
|
404
|
+
hints.push(`Ideas ready to build: ${parts.buildNext.join(", ")} (\`baker creatives make <idea>\`).`);
|
|
405
|
+
} else {
|
|
406
|
+
hints.push(
|
|
407
|
+
`Write 4-8 ideas in src/creatives/_ideas/<idea>.md (who, message, evidence, awareness, angle, format, job, why), then \`baker creatives ideas\`. awareness: ${AWARENESS_STAGES.join(" | ")}. angle: ${IDEA_ANGLES.join(", ")}. format: ${IDEA_FORMATS.join(", ")}.`
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
return hints;
|
|
411
|
+
}
|
|
412
|
+
async function readBrief(root, args) {
|
|
413
|
+
const account = metaAccountId(args.accountId).catch(() => null);
|
|
414
|
+
const [company, offers, viewer, insights, ideas, performance, feedback, accountId, bottleneck, market, rules, specs] = await Promise.all([
|
|
415
|
+
companyStatus(root),
|
|
416
|
+
readOffers(root),
|
|
417
|
+
readViewer(root, args.adset),
|
|
418
|
+
readInsights(root),
|
|
419
|
+
ideasReport(root),
|
|
420
|
+
section(
|
|
421
|
+
async () => withDefinitions(
|
|
422
|
+
await apiPost("/api/creatives/performance", {}),
|
|
423
|
+
(slug) => readDefinition(root, slug)
|
|
424
|
+
)
|
|
425
|
+
),
|
|
426
|
+
section(() => apiPost("/api/creatives/feedback", {})),
|
|
427
|
+
account,
|
|
428
|
+
account.then((id) => id ? section(() => readBottleneck(id)) : null),
|
|
429
|
+
section(() => readMarket(root)),
|
|
430
|
+
readAllRules(root).then((all) => selectRules(all, {})),
|
|
431
|
+
readCreativeSpecs(root)
|
|
432
|
+
]);
|
|
433
|
+
return {
|
|
434
|
+
company,
|
|
435
|
+
offers,
|
|
436
|
+
viewer,
|
|
437
|
+
insights,
|
|
438
|
+
ideas,
|
|
439
|
+
performance,
|
|
440
|
+
feedback,
|
|
441
|
+
accountId,
|
|
442
|
+
bottleneck,
|
|
443
|
+
market,
|
|
444
|
+
rules,
|
|
445
|
+
specs
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
function accountPart(brief, full) {
|
|
449
|
+
if (!brief.accountId) {
|
|
450
|
+
return { unavailable: "no single Meta ad account connected: pass --account-id act_<id>, or work from customers" };
|
|
451
|
+
}
|
|
452
|
+
const works = isAvailable(brief.performance) ? whatWorks(brief.performance.data.creatives, full ? 10 : 3) : { creatives: brief.performance };
|
|
453
|
+
return { id: brief.accountId, bottleneck: brief.bottleneck, ...works };
|
|
454
|
+
}
|
|
455
|
+
function marketPart(market, full) {
|
|
456
|
+
if (!isAvailable(market)) return market;
|
|
457
|
+
if (!market) return { unavailable: "no library ads match what COMPANY.md says the company sells" };
|
|
458
|
+
if (full) return market;
|
|
459
|
+
const { containers: _containers, ...lean } = market;
|
|
460
|
+
return lean;
|
|
461
|
+
}
|
|
462
|
+
function tastePart(feedback) {
|
|
463
|
+
const { summary, notes } = feedback.data;
|
|
464
|
+
return {
|
|
465
|
+
approved: summary.approved,
|
|
466
|
+
rejected: summary.rejected,
|
|
467
|
+
topRejectionReasons: summary.topRejectionReasons.slice(0, 3).map((r) => r.label),
|
|
468
|
+
...notes && notes.length > 0 ? { notes: notes.map((n) => ({ creative: n.creative, note: n.note })) } : {}
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
function briefEnvelope(brief, full, researched) {
|
|
472
|
+
const customers = customerTruth(brief.insights);
|
|
473
|
+
const summary = isAvailable(brief.feedback) ? brief.feedback.data.summary : null;
|
|
474
|
+
const next = buildNext(brief.ideas.ideas);
|
|
475
|
+
const toBuild = brief.ideas.ideas.filter((i) => i.status === "idea").length;
|
|
476
|
+
const withStatus = (status) => brief.ideas.ideas.filter((i) => i.status === status).map((i) => ({ idea: i.id, message: i.message }));
|
|
477
|
+
const learned = { winners: withStatus("winner"), failed: withStatus("failed") };
|
|
478
|
+
return {
|
|
479
|
+
ok: true,
|
|
480
|
+
data: {
|
|
481
|
+
company: brief.company,
|
|
482
|
+
viewer: { temperature: brief.viewer.temperature, knows: brief.viewer.knows, source: brief.viewer.source },
|
|
483
|
+
offers: brief.offers,
|
|
484
|
+
account: accountPart(brief, full),
|
|
485
|
+
taste: isAvailable(brief.feedback) ? tastePart(brief.feedback) : brief.feedback,
|
|
486
|
+
customers: full ? { ...customers, quotes: brief.insights.map((i) => ({ id: i.id, type: i.type, quote: i.quote })) } : customers,
|
|
487
|
+
market: marketPart(brief.market, full),
|
|
488
|
+
rules: rulesView(brief.rules, { full }),
|
|
489
|
+
ideas: {
|
|
490
|
+
to_build: toBuild,
|
|
491
|
+
built: brief.ideas.ideas.length - toBuild,
|
|
492
|
+
build_next: next,
|
|
493
|
+
...learned.winners.length > 0 ? { winners: learned.winners } : {},
|
|
494
|
+
...learned.failed.length > 0 ? { failed: learned.failed } : {}
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
hints: briefHints({
|
|
498
|
+
company: brief.company,
|
|
499
|
+
customers,
|
|
500
|
+
bottleneck: brief.bottleneck,
|
|
501
|
+
ideasToBuild: toBuild,
|
|
502
|
+
buildNext: next,
|
|
503
|
+
approved: summary?.approved ?? 0,
|
|
504
|
+
rejected: summary?.rejected ?? 0,
|
|
505
|
+
market: isAvailable(brief.market) ? brief.market : null,
|
|
506
|
+
learned,
|
|
507
|
+
...researched ? { researched } : {},
|
|
508
|
+
rules: brief.rules.length
|
|
509
|
+
}).concat(rulesHints(brief.rules, waiverCounts(brief.specs)))
|
|
510
|
+
};
|
|
511
|
+
}
|
|
512
|
+
var briefCommand = defineCommand({
|
|
513
|
+
meta: { name: "brief", description: DESCRIPTION },
|
|
514
|
+
args: ARGS,
|
|
515
|
+
async run({ args }) {
|
|
516
|
+
const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
|
|
517
|
+
const full = args.full === true;
|
|
518
|
+
const thin = args.research !== false && customerTruth(await readInsights(root)).thin;
|
|
519
|
+
const research = thin ? researchCustomers(root, {}).catch(() => null) : null;
|
|
520
|
+
const brief = await readBrief(root, {
|
|
521
|
+
...typeof args.adset === "string" && args.adset ? { adset: args.adset } : {},
|
|
522
|
+
...typeof args["account-id"] === "string" && args["account-id"] ? { accountId: args["account-id"] } : {},
|
|
523
|
+
full
|
|
524
|
+
});
|
|
525
|
+
const found = research ? await research : null;
|
|
526
|
+
const written = found?.shown.length ?? 0;
|
|
527
|
+
const insights = written > 0 ? await readInsights(root) : brief.insights;
|
|
528
|
+
writeJson(briefEnvelope({ ...brief, insights }, full, research ? { written } : void 0));
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
export {
|
|
532
|
+
briefCommand,
|
|
533
|
+
briefEnvelope,
|
|
534
|
+
briefHints,
|
|
535
|
+
tastePart,
|
|
536
|
+
whatWorks
|
|
537
|
+
};
|
|
538
|
+
//# sourceMappingURL=brief-3GHSHOGM.js.map
|