@koda-sl/baker-cli 0.513.0 → 0.514.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 +2 -2
- package/dist/account-D6LEVVWT.js +82 -0
- package/dist/account-D6LEVVWT.js.map +1 -0
- package/dist/account-SGK3IJ6N.js +82 -0
- package/dist/account-SGK3IJ6N.js.map +1 -0
- package/dist/account-assets-J5Z4URLQ.js +290 -0
- package/dist/account-level-4SBYYHRS.js +611 -0
- package/dist/account-level-4SBYYHRS.js.map +1 -0
- package/dist/account-reads-2MSUVG46.js +219 -0
- package/dist/account-users-MHC7AD6K.js +64 -0
- package/dist/account-users-MHC7AD6K.js.map +1 -0
- package/dist/account-writes-QQQC54WC.js +68 -0
- package/dist/account-writes-QQQC54WC.js.map +1 -0
- package/dist/accounts-2O6I7YBN.js +80 -0
- package/dist/accounts-2O6I7YBN.js.map +1 -0
- package/dist/accounts-QNE5QWBG.js +701 -0
- package/dist/accounts-QNE5QWBG.js.map +1 -0
- package/dist/actions-D7OWCP36.js +55 -0
- package/dist/activecampaign-LBS4M4C4.js +938 -0
- package/dist/activecampaign-LBS4M4C4.js.map +1 -0
- package/dist/ad-group-writes-CJTTUUIT.js +172 -0
- package/dist/ad-group-writes-CJTTUUIT.js.map +1 -0
- package/dist/ad-groups-HLGSVH74.js +70 -0
- package/dist/ad-groups-HLGSVH74.js.map +1 -0
- package/dist/ad-writes-3UE3U7VE.js +176 -0
- package/dist/ad-writes-3UE3U7VE.js.map +1 -0
- package/dist/add-HFQB2NTU.js +107 -0
- package/dist/add-HFQB2NTU.js.map +1 -0
- package/dist/add-IUYE5H6A.js +305 -0
- package/dist/add-IUYE5H6A.js.map +1 -0
- package/dist/ads-HLUJB5SQ.js +48 -0
- package/dist/ads-MAOI7S6V.js +115 -0
- package/dist/ads-PYNDMHUD.js +79 -0
- package/dist/ads-PYNDMHUD.js.map +1 -0
- package/dist/adsets-QRKICEFD.js +182 -0
- package/dist/advertisers-XXM6POO5.js +123 -0
- package/dist/advertisers-XXM6POO5.js.map +1 -0
- package/dist/analytics-AULKYNNT.js +447 -0
- package/dist/analytics-AULKYNNT.js.map +1 -0
- package/dist/analytics-DNDTC643.js +2437 -0
- package/dist/analytics-DNDTC643.js.map +1 -0
- package/dist/asset-writes-JLVUAVUZ.js +50 -0
- package/dist/assign-2GQVQKKO.js +80 -0
- package/dist/assign-2GQVQKKO.js.map +1 -0
- package/dist/audience-size-C3YHQPZB.js +76 -0
- package/dist/audience-size-C3YHQPZB.js.map +1 -0
- package/dist/audience-writes-CDKQB3SM.js +327 -0
- package/dist/audience-writes-CDKQB3SM.js.map +1 -0
- package/dist/audiences-CDDI5HR5.js +86 -0
- package/dist/audiences-M3A3QK52.js +280 -0
- package/dist/audiences-M3A3QK52.js.map +1 -0
- package/dist/audit-FLPJ7GTE.js +154 -0
- package/dist/audit-FLPJ7GTE.js.map +1 -0
- package/dist/autocomplete-ZYMHHV7E.js +114 -0
- package/dist/autocomplete-ZYMHHV7E.js.map +1 -0
- package/dist/avatars-WZ2JDMHH.js +38 -0
- package/dist/bid-pricing-H3M63PTW.js +103 -0
- package/dist/bid-pricing-H3M63PTW.js.map +1 -0
- package/dist/brand-IZTTBZII.js +22 -0
- package/dist/brief-OPQ7ICOY.js +543 -0
- package/dist/brief-OPQ7ICOY.js.map +1 -0
- package/dist/campaign-groups-IQSDKOVI.js +99 -0
- package/dist/campaign-groups-IQSDKOVI.js.map +1 -0
- package/dist/campaign-writes-APAAV4ZU.js +168 -0
- package/dist/campaign-writes-APAAV4ZU.js.map +1 -0
- package/dist/campaign-writes-BN4PZP4Z.js +176 -0
- package/dist/campaign-writes-BN4PZP4Z.js.map +1 -0
- package/dist/campaigns-4Y3JQC2U.js +111 -0
- package/dist/campaigns-GA34MEN2.js +78 -0
- package/dist/campaigns-GA34MEN2.js.map +1 -0
- package/dist/campaigns-HES5MDUG.js +130 -0
- package/dist/campaigns-K2FVD3XW.js +113 -0
- package/dist/campaigns-K2FVD3XW.js.map +1 -0
- package/dist/canvas-IQ753Q2O.js +46 -0
- package/dist/capabilities-ZITW4RF7.js +147 -0
- package/dist/capabilities-ZITW4RF7.js.map +1 -0
- package/dist/catalogs-TGLSJEK5.js +781 -0
- package/dist/catalogs-TGLSJEK5.js.map +1 -0
- package/dist/catalogs-ZR7DECMG.js +130 -0
- package/dist/catalogs-ZR7DECMG.js.map +1 -0
- package/dist/changes-VWKTM27U.js +135 -0
- package/dist/chatgpt-OPOD2WHB.js +47 -0
- package/dist/chats-AL2SYBJO.js +279 -0
- package/dist/chats-AL2SYBJO.js.map +1 -0
- package/dist/check-U2YLRD6H.js +107 -0
- package/dist/check-U2YLRD6H.js.map +1 -0
- package/dist/chunk-2GYCWRF3.js +170 -0
- package/dist/chunk-2L7F7KR4.js +61 -0
- package/dist/chunk-44ZRCSR7.js +228 -0
- package/dist/chunk-46YLDIQG.js +4254 -0
- package/dist/chunk-4EDWXZ3I.js +363 -0
- package/dist/chunk-4FFBGR5L.js +66 -0
- package/dist/chunk-4UQRXKYJ.js +219 -0
- package/dist/chunk-4UZUUSVL.js +592 -0
- package/dist/chunk-4XHCEYHI.js +831 -0
- package/dist/chunk-4Z6PVR3M.js +479 -0
- package/dist/chunk-5Y5FZV2W.js +122 -0
- package/dist/chunk-6HJXLGDV.js +392 -0
- package/dist/chunk-6S5CWGDA.js +429 -0
- package/dist/chunk-6VYROVWO.js +494 -0
- package/dist/chunk-7BUIOP36.js +287 -0
- package/dist/chunk-AQRXXC6E.js +319 -0
- package/dist/chunk-ARBXT73X.js +387 -0
- package/dist/chunk-BEZHQIEI.js +97 -0
- package/dist/chunk-BFURWHVR.js +547 -0
- package/dist/chunk-BX6B25KK.js +358 -0
- package/dist/chunk-BX6B25KK.js.map +1 -0
- package/dist/chunk-DSCEXBDR.js +676 -0
- package/dist/chunk-FLWDFPXE.js +23 -0
- package/dist/chunk-FRNBRN2C.js +1646 -0
- package/dist/chunk-G4FG5EQO.js +110 -0
- package/dist/chunk-G4FG5EQO.js.map +1 -0
- package/dist/chunk-GE3VT3CA.js +51 -0
- package/dist/chunk-GW2WRZZA.js +24026 -0
- package/dist/chunk-GW2WRZZA.js.map +1 -0
- package/dist/chunk-HGBJQGO5.js +142 -0
- package/dist/chunk-I7AYMJZA.js +783 -0
- package/dist/chunk-IRM273C7.js +207 -0
- package/dist/chunk-IWKD56AY.js +156 -0
- package/dist/chunk-JLAQWMVF.js +3868 -0
- package/dist/chunk-JOE42ZW6.js +2984 -0
- package/dist/chunk-JOE42ZW6.js.map +1 -0
- package/dist/chunk-K6NULQN7.js +57 -0
- package/dist/chunk-L2BRAC2J.js +19 -0
- package/dist/chunk-LGMI4LSY.js +455 -0
- package/dist/chunk-NB2FU6EZ.js +179 -0
- package/dist/chunk-NKQWDEB7.js +115 -0
- package/dist/chunk-NKQWDEB7.js.map +1 -0
- package/dist/chunk-NWF2LRKO.js +188 -0
- package/dist/chunk-OG47L5GG.js +275 -0
- package/dist/chunk-OR6KVLI5.js +169 -0
- package/dist/chunk-PC3FJEZH.js +7211 -0
- package/dist/chunk-PC3FJEZH.js.map +1 -0
- package/dist/chunk-Q3GSVLE5.js +4274 -0
- package/dist/chunk-Q3GSVLE5.js.map +1 -0
- package/dist/chunk-QDQZ62FL.js +207 -0
- package/dist/chunk-QIOFOD4K.js +344 -0
- package/dist/chunk-R2SYF5FC.js +249 -0
- package/dist/chunk-RTH2I55B.js +942 -0
- package/dist/chunk-S6VFDNSQ.js +63 -0
- package/dist/chunk-SG2TDQEE.js +150 -0
- package/dist/chunk-SOPVIIUW.js +68 -0
- package/dist/chunk-SOPVIIUW.js.map +1 -0
- package/dist/chunk-T3P6O2VU.js +89 -0
- package/dist/chunk-TXDE2QJ3.js +604 -0
- package/dist/chunk-UDIEKCIR.js +203 -0
- package/dist/chunk-USCADMM3.js +163 -0
- package/dist/chunk-UUGISMNE.js +910 -0
- package/dist/chunk-VDPOCAQ2.js +197 -0
- package/dist/chunk-VEJ3QX6M.js +103 -0
- package/dist/chunk-VFJB7OG6.js +91 -0
- package/dist/chunk-VRIPVLE7.js +8954 -0
- package/dist/chunk-WFY7KSHB.js +274 -0
- package/dist/chunk-WLESMH4J.js +45 -0
- package/dist/chunk-XHQYFNNK.js +846 -0
- package/dist/chunk-XOQNM7I4.js +396 -0
- package/dist/chunk-XOQNM7I4.js.map +1 -0
- package/dist/chunk-YILZR3XI.js +224 -0
- package/dist/chunk-YJFLXOH4.js +191 -0
- package/dist/chunk-YWHZYR6S.js +297 -0
- package/dist/claim-GOLUTAJ3.js +200 -0
- package/dist/claim-GOLUTAJ3.js.map +1 -0
- package/dist/cli.js +30 -30
- package/dist/companies-4AJJGTMC.js +198 -0
- package/dist/companies-4AJJGTMC.js.map +1 -0
- package/dist/company-MOSPLRZJ.js +308 -0
- package/dist/company-MOSPLRZJ.js.map +1 -0
- package/dist/complete-777BDV45.js +84 -0
- package/dist/complete-777BDV45.js.map +1 -0
- package/dist/connect-3YY7MF3I.js +45 -0
- package/dist/conversation-KROMHDHK.js +96 -0
- package/dist/conversation-KROMHDHK.js.map +1 -0
- package/dist/conversion-report-JZHI2IHY.js +127 -0
- package/dist/conversion-report-JZHI2IHY.js.map +1 -0
- package/dist/conversion-upload-command-7RSZ5ZQU.js +439 -0
- package/dist/conversion-writes-SNCLQDXQ.js +122 -0
- package/dist/conversion-writes-SNCLQDXQ.js.map +1 -0
- package/dist/conversions-43EYP2W2.js +140 -0
- package/dist/conversions-43EYP2W2.js.map +1 -0
- package/dist/conversions-EUOWILCQ.js +78 -0
- package/dist/conversions-EUOWILCQ.js.map +1 -0
- package/dist/copy-writes-CIHIFLY6.js +170 -0
- package/dist/copy-writes-CIHIFLY6.js.map +1 -0
- package/dist/create-3WOZO2XT.js +239 -0
- package/dist/create-3WOZO2XT.js.map +1 -0
- package/dist/create-7IFYLX7P.js +210 -0
- package/dist/create-7IFYLX7P.js.map +1 -0
- package/dist/create-FOHIQC3E.js +62 -0
- package/dist/create-FOHIQC3E.js.map +1 -0
- package/dist/create-UWQSQTK6.js +135 -0
- package/dist/create-UWQSQTK6.js.map +1 -0
- package/dist/creatives-2DR3QHJW.js +58 -0
- package/dist/creatives-BB6S2OF6.js +89 -0
- package/dist/creatives-KUO67WYA.js +223 -0
- package/dist/creatives-KUO67WYA.js.map +1 -0
- package/dist/credentials-IP4L37XP.js +290 -0
- package/dist/credentials-IP4L37XP.js.map +1 -0
- package/dist/critique-LGDNMLBL.js +232 -0
- package/dist/critique-LGDNMLBL.js.map +1 -0
- package/dist/critique-LJMFAURK.js +1451 -0
- package/dist/critique-LJMFAURK.js.map +1 -0
- package/dist/crm-BNYW7PF7.js +323 -0
- package/dist/crm-BNYW7PF7.js.map +1 -0
- package/dist/crm-J53V2QTN.js +227 -0
- package/dist/crm-J53V2QTN.js.map +1 -0
- package/dist/currency-X7Y6TSLF.js +88 -0
- package/dist/custom-conversions-HAGG72LF.js +128 -0
- package/dist/customers-663K2OCP.js +59 -0
- package/dist/delete-5W3YVA4L.js +67 -0
- package/dist/delete-5W3YVA4L.js.map +1 -0
- package/dist/delete-6U7E6YUW.js +57 -0
- package/dist/delete-6U7E6YUW.js.map +1 -0
- package/dist/delete-G4NY6ZG6.js +69 -0
- package/dist/delete-G4NY6ZG6.js.map +1 -0
- package/dist/demographics-4Y5LTCU4.js +141 -0
- package/dist/demographics-4Y5LTCU4.js.map +1 -0
- package/dist/discard-RKCZNKMN.js +69 -0
- package/dist/discard-RKCZNKMN.js.map +1 -0
- package/dist/discover-6DORQWXY.js +172 -0
- package/dist/domain-PLA2O4FW.js +101 -0
- package/dist/domain-PLA2O4FW.js.map +1 -0
- package/dist/download-4EFLVSA4.js +172 -0
- package/dist/download-4EFLVSA4.js.map +1 -0
- package/dist/draft-4V7W5DV2.js +310 -0
- package/dist/draft-4V7W5DV2.js.map +1 -0
- package/dist/draft-HY3U2GHU.js +283 -0
- package/dist/draft-HY3U2GHU.js.map +1 -0
- package/dist/draft-JMNAGW7C.js +220 -0
- package/dist/draft-JMNAGW7C.js.map +1 -0
- package/dist/draft-R6EKORNS.js +308 -0
- package/dist/draft-TRPQCJ4B.js +335 -0
- package/dist/draft-TRPQCJ4B.js.map +1 -0
- package/dist/experiments-4V242DG2.js +236 -0
- package/dist/experiments-4V242DG2.js.map +1 -0
- package/dist/facets-WXJ2MCU6.js +117 -0
- package/dist/facets-WXJ2MCU6.js.map +1 -0
- package/dist/feedback-IRSRPXV6.js +111 -0
- package/dist/feedback-IRSRPXV6.js.map +1 -0
- package/dist/feedback-record-DT3R4NA3.js +265 -0
- package/dist/feedback-record-DT3R4NA3.js.map +1 -0
- package/dist/fetch-YLQP5VQL.js +179 -0
- package/dist/fetch-YLQP5VQL.js.map +1 -0
- package/dist/fit-BEFCY2B4.js +65 -0
- package/dist/flows-FDMF3F3P.js +250 -0
- package/dist/flows-FDMF3F3P.js.map +1 -0
- package/dist/fonts-C6XN5667.js +39 -0
- package/dist/forecast-BTPIXEQ5.js +169 -0
- package/dist/forecast-ZTXZD3HD.js +121 -0
- package/dist/forecast-ZTXZD3HD.js.map +1 -0
- package/dist/funnel-7KOEX7YM.js +397 -0
- package/dist/funnel-7KOEX7YM.js.map +1 -0
- package/dist/get-KBSKPTAV.js +59 -0
- package/dist/get-KBSKPTAV.js.map +1 -0
- package/dist/get-OSVQVMP6.js +82 -0
- package/dist/get-OSVQVMP6.js.map +1 -0
- package/dist/google-M6BJ22UL.js +3267 -0
- package/dist/google-ads-XCJVAXWF.js +198 -0
- package/dist/google-ads-XCJVAXWF.js.map +1 -0
- package/dist/history-3NTM5SFN.js +69 -0
- package/dist/history-3NTM5SFN.js.map +1 -0
- package/dist/history-4TN2A6BL.js +136 -0
- package/dist/history-4TN2A6BL.js.map +1 -0
- package/dist/history-5IWW2X33.js +102 -0
- package/dist/history-5IWW2X33.js.map +1 -0
- package/dist/hubspot-HMVSRJQZ.js +782 -0
- package/dist/hubspot-HMVSRJQZ.js.map +1 -0
- package/dist/ideas-M66FU45H.js +45 -0
- package/dist/images-MM5OPUKV.js +92 -0
- package/dist/ingest-GU3WEBN3.js +110 -0
- package/dist/ingest-GU3WEBN3.js.map +1 -0
- package/dist/ingest-KMLYCFF4.js +26 -0
- package/dist/insights-CQCWOCIT.js +132 -0
- package/dist/insights-CQCWOCIT.js.map +1 -0
- package/dist/insights-XZL2EM53.js +439 -0
- package/dist/insights-XZL2EM53.js.map +1 -0
- package/dist/inspect-4JO2J3D6.js +192 -0
- package/dist/inspect-4JO2J3D6.js.map +1 -0
- package/dist/instant-experiences-RM4MLJTL.js +260 -0
- package/dist/instant-experiences-RM4MLJTL.js.map +1 -0
- package/dist/intent-YCQCUCV3.js +95 -0
- package/dist/keyword-gap-PUSF7EKY.js +130 -0
- package/dist/keyword-metrics-JXBM22ZD.js +200 -0
- package/dist/keyword-metrics-JXBM22ZD.js.map +1 -0
- package/dist/keywords-for-site-OAYA7KP7.js +131 -0
- package/dist/keywords-for-site-OAYA7KP7.js.map +1 -0
- package/dist/landing-OZU5RRFV.js +28 -0
- package/dist/languages-SLFV73GE.js +40 -0
- package/dist/leads-Q7APIJRQ.js +115 -0
- package/dist/leads-Q7APIJRQ.js.map +1 -0
- package/dist/leads-ULYHTG22.js +540 -0
- package/dist/leads-ULYHTG22.js.map +1 -0
- package/dist/learn-NBBJRMVZ.js +207 -0
- package/dist/learn-NBBJRMVZ.js.map +1 -0
- package/dist/line-item-writes-X3L5NQEH.js +211 -0
- package/dist/line-item-writes-X3L5NQEH.js.map +1 -0
- package/dist/line-items-NJMEPEF5.js +107 -0
- package/dist/link-WZSNUQQ2.js +67 -0
- package/dist/link-WZSNUQQ2.js.map +1 -0
- package/dist/linkedin-55PAID62.js +1316 -0
- package/dist/linkedin-55PAID62.js.map +1 -0
- package/dist/linkedin-person-MVRI7LLC.js +139 -0
- package/dist/linkedin-person-MVRI7LLC.js.map +1 -0
- package/dist/list-6S54IAUX.js +67 -0
- package/dist/list-6S54IAUX.js.map +1 -0
- package/dist/list-QRJ4E3SC.js +154 -0
- package/dist/list-QRJ4E3SC.js.map +1 -0
- package/dist/list-RZUDFLJN.js +306 -0
- package/dist/list-RZUDFLJN.js.map +1 -0
- package/dist/locations-T2OMP6QN.js +40 -0
- package/dist/locations-W3VOYBWL.js +69 -0
- package/dist/locations-W3VOYBWL.js.map +1 -0
- package/dist/log-53SAPZZ3.js +95 -0
- package/dist/log-53SAPZZ3.js.map +1 -0
- package/dist/lookup-S5VG7AWH.js +23 -0
- package/dist/make-ZF3YIMKW.js +1370 -0
- package/dist/make-ZF3YIMKW.js.map +1 -0
- package/dist/map-J37QFJSV.js +436 -0
- package/dist/map-J37QFJSV.js.map +1 -0
- package/dist/mcp-YRIFPYNU.js +717 -0
- package/dist/mcp-YRIFPYNU.js.map +1 -0
- package/dist/media-P4T4ZBNS.js +18 -0
- package/dist/media-sources-EQI3U4TC.js +35 -0
- package/dist/members-GYVMSCKL.js +47 -0
- package/dist/members-GYVMSCKL.js.map +1 -0
- package/dist/meta-IPLWNYC7.js +122 -0
- package/dist/metrics-4YVJHYRI.js +152 -0
- package/dist/normalize-MFN3WCH5.js +144 -0
- package/dist/normalize-MFN3WCH5.js.map +1 -0
- package/dist/options-DLHDHO7H.js +125 -0
- package/dist/options-DLHDHO7H.js.map +1 -0
- package/dist/organization-C2VOA2SD.js +949 -0
- package/dist/organization-C2VOA2SD.js.map +1 -0
- package/dist/page-photos-OQ5QATQH.js +118 -0
- package/dist/page-photos-OQ5QATQH.js.map +1 -0
- package/dist/performance-NIF3CESZ.js +27 -0
- package/dist/performance-T6TBVHVU.js +5541 -0
- package/dist/performance-T6TBVHVU.js.map +1 -0
- package/dist/pixels-LQAJOZIM.js +62 -0
- package/dist/pixels-LQAJOZIM.js.map +1 -0
- package/dist/plan-7UF76Q6U.js +208 -0
- package/dist/plan-7UF76Q6U.js.map +1 -0
- package/dist/preview-LRJOQ7LM.js +218 -0
- package/dist/preview-LRJOQ7LM.js.map +1 -0
- package/dist/promoted-tweet-writes-Y6BBOWDL.js +183 -0
- package/dist/promoted-tweet-writes-Y6BBOWDL.js.map +1 -0
- package/dist/promoted-tweets-RJT53DRM.js +119 -0
- package/dist/publish-IOTMJCCY.js +344 -0
- package/dist/publish-IOTMJCCY.js.map +1 -0
- package/dist/query-XZMDGRO5.js +62 -0
- package/dist/questionnaire-DWEH5II4.js +94 -0
- package/dist/questionnaire-DWEH5II4.js.map +1 -0
- package/dist/reddit-JIHMAKAQ.js +29 -0
- package/dist/refresh-OQZ263CS.js +97 -0
- package/dist/refresh-OQZ263CS.js.map +1 -0
- package/dist/release-4CHFURO3.js +63 -0
- package/dist/release-4CHFURO3.js.map +1 -0
- package/dist/relevant-pages-FS7GBVXK.js +99 -0
- package/dist/remove-IJQPHPDI.js +53 -0
- package/dist/remove-IJQPHPDI.js.map +1 -0
- package/dist/reopen-YTLPVKUR.js +66 -0
- package/dist/reopen-YTLPVKUR.js.map +1 -0
- package/dist/rerun-C7NB7B35.js +95 -0
- package/dist/rerun-C7NB7B35.js.map +1 -0
- package/dist/research-PNBACCCP.js +72 -0
- package/dist/research-TLHNPK3O.js +265 -0
- package/dist/research-TLHNPK3O.js.map +1 -0
- package/dist/reset-JVLW7HA2.js +57 -0
- package/dist/reset-JVLW7HA2.js.map +1 -0
- package/dist/reset-Y6FXLAQE.js +57 -0
- package/dist/reset-Y6FXLAQE.js.map +1 -0
- package/dist/resolve-YLRESES5.js +124 -0
- package/dist/resolve-YLRESES5.js.map +1 -0
- package/dist/retry-3V3IGDRR.js +65 -0
- package/dist/retry-3V3IGDRR.js.map +1 -0
- package/dist/retry-AEKQLQMP.js +63 -0
- package/dist/retry-AEKQLQMP.js.map +1 -0
- package/dist/revenue-E4GQIOUY.js +91 -0
- package/dist/revenue-E4GQIOUY.js.map +1 -0
- package/dist/rule-writes-UAVWT4XS.js +525 -0
- package/dist/rule-writes-UAVWT4XS.js.map +1 -0
- package/dist/rules-34BQAWU3.js +99 -0
- package/dist/rules-34BQAWU3.js.map +1 -0
- package/dist/rules-ZVS2MWED.js +217 -0
- package/dist/rules-add-CM5XUYNS.js +465 -0
- package/dist/rules-add-CM5XUYNS.js.map +1 -0
- package/dist/run-MD64RDHZ.js +69 -0
- package/dist/run-MD64RDHZ.js.map +1 -0
- package/dist/run-QCNRR3CA.js +70 -0
- package/dist/scaffold-ad-NADPY3CB.js +1516 -0
- package/dist/scaffold-ad-NADPY3CB.js.map +1 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js +1015 -0
- package/dist/scaffold-static-ad-5YEYYVYH.js.map +1 -0
- package/dist/scaffold-video-W7DF2CBJ.js +888 -0
- package/dist/scaffold-video-W7DF2CBJ.js.map +1 -0
- package/dist/schedule-CTRRF6TS.js +64 -0
- package/dist/schedule-CTRRF6TS.js.map +1 -0
- package/dist/scheduled-agents-OXYAVSIE.js +55 -0
- package/dist/schema-BEUYOGSW.js +135 -0
- package/dist/schema-BEUYOGSW.js.map +1 -0
- package/dist/search-GFJKWPKN.js +177 -0
- package/dist/search-GFJKWPKN.js.map +1 -0
- package/dist/select-S72CCL57.js +106 -0
- package/dist/select-S72CCL57.js.map +1 -0
- package/dist/sends-LAY5C74B.js +349 -0
- package/dist/sends-LAY5C74B.js.map +1 -0
- package/dist/set-prompt-YYFDRXRI.js +198 -0
- package/dist/set-prompt-YYFDRXRI.js.map +1 -0
- package/dist/setup-links-D4JJLESN.js +144 -0
- package/dist/setup-links-D4JJLESN.js.map +1 -0
- package/dist/shopify-T4UWFIQC.js +3958 -0
- package/dist/shopify-T4UWFIQC.js.map +1 -0
- package/dist/site-BBZAUZA3.js +180 -0
- package/dist/site-BBZAUZA3.js.map +1 -0
- package/dist/sources-BUPV7H7F.js +457 -0
- package/dist/sources-BUPV7H7F.js.map +1 -0
- package/dist/sources-FLUGHSVP.js +30 -0
- package/dist/stale-HP54JS5X.js +76 -0
- package/dist/stale-HP54JS5X.js.map +1 -0
- package/dist/status-CLSWQFCQ.js +65 -0
- package/dist/status-CLSWQFCQ.js.map +1 -0
- package/dist/studies-EPO2AM4M.js +250 -0
- package/dist/study-writes-7FP443QQ.js +470 -0
- package/dist/study-writes-7FP443QQ.js.map +1 -0
- package/dist/sync-4YTVVEVC.js +57 -0
- package/dist/sync-4YTVVEVC.js.map +1 -0
- package/dist/sync-definition-OGQ5XTQE.js +69 -0
- package/dist/tags-CZTRQNXV.js +26 -0
- package/dist/tags-FDQXWTCQ.js +23 -0
- package/dist/tags-FDQXWTCQ.js.map +1 -0
- package/dist/tags-R67DKRZ6.js +23 -0
- package/dist/tags-R67DKRZ6.js.map +1 -0
- package/dist/tags-SA2LU6AW.js +227 -0
- package/dist/tags-SA2LU6AW.js.map +1 -0
- package/dist/tags-ZOXX6VRE.js +23 -0
- package/dist/tags-ZOXX6VRE.js.map +1 -0
- package/dist/targeting-NKZFEZD7.js +762 -0
- package/dist/targeting-NKZFEZD7.js.map +1 -0
- package/dist/targeting-criteria-AQYXVSGN.js +113 -0
- package/dist/targets-UUVCEG3F.js +106 -0
- package/dist/targets-UUVCEG3F.js.map +1 -0
- package/dist/testimonials-G3OCNPBY.js +32 -0
- package/dist/themes-FEVYZZCW.js +95 -0
- package/dist/top-companies-BQGWKYUK.js +111 -0
- package/dist/top-companies-BQGWKYUK.js.map +1 -0
- package/dist/transcript-U46AEOEI.js +165 -0
- package/dist/transcript-U46AEOEI.js.map +1 -0
- package/dist/translate-AS7JVKYM.js +609 -0
- package/dist/translate-AS7JVKYM.js.map +1 -0
- package/dist/triggers-ECRBPYYF.js +144 -0
- package/dist/triggers-ECRBPYYF.js.map +1 -0
- package/dist/unlink-VDNCSRJV.js +70 -0
- package/dist/unlink-VDNCSRJV.js.map +1 -0
- package/dist/unstage-ATDXUYP2.js +88 -0
- package/dist/unstage-ATDXUYP2.js.map +1 -0
- package/dist/unstage-ZA3WQBEA.js +96 -0
- package/dist/unstage-ZA3WQBEA.js.map +1 -0
- package/dist/update-FJ6TBV3E.js +101 -0
- package/dist/update-FJ6TBV3E.js.map +1 -0
- package/dist/update-HDBJCSTI.js +66 -0
- package/dist/update-HDBJCSTI.js.map +1 -0
- package/dist/update-U43DJRGV.js +155 -0
- package/dist/update-U43DJRGV.js.map +1 -0
- package/dist/update-Z7TIUBMJ.js +192 -0
- package/dist/update-Z7TIUBMJ.js.map +1 -0
- package/dist/upload-LXCFSRIU.js +129 -0
- package/dist/upload-LXCFSRIU.js.map +1 -0
- package/dist/url-options-Z4BQBEMI.js +131 -0
- package/dist/url-options-Z4BQBEMI.js.map +1 -0
- package/dist/url-params-J7RKP5RB.js +101 -0
- package/dist/url-params-J7RKP5RB.js.map +1 -0
- package/dist/validate-VR3HEOMJ.js +122 -0
- package/dist/validate-VR3HEOMJ.js.map +1 -0
- package/dist/videos-36AXDUGZ.js +41 -0
- package/dist/viewer-check-6HL4OUQY.js +83 -0
- package/dist/web-7BRJRQX7.js +143 -0
- package/dist/web-7BRJRQX7.js.map +1 -0
- package/dist/winning-ads-GMM5W2O4.js +86 -0
- package/dist/write-commands-IM5DPG3R.js +1502 -0
- package/dist/write-commands-IM5DPG3R.js.map +1 -0
- package/dist/write-commands-OGVDWWBV.js +1172 -0
- package/dist/write-commands-OGVDWWBV.js.map +1 -0
- package/dist/x-HGFAL3NY.js +47 -0
- package/package.json +1 -1
- package/dist/account-UUAEQWO3.js +0 -80
- package/dist/account-UUAEQWO3.js.map +0 -1
- package/dist/account-WLQBAQMD.js +0 -80
- package/dist/account-WLQBAQMD.js.map +0 -1
- package/dist/account-assets-O7IA37RE.js +0 -290
- package/dist/account-level-EU7BWCO7.js +0 -609
- package/dist/account-level-EU7BWCO7.js.map +0 -1
- package/dist/account-reads-SNOWDHHF.js +0 -219
- package/dist/account-users-NV37Z2XJ.js +0 -62
- package/dist/account-users-NV37Z2XJ.js.map +0 -1
- package/dist/account-writes-TU3WJRSI.js +0 -66
- package/dist/account-writes-TU3WJRSI.js.map +0 -1
- package/dist/accounts-MZ6SETJJ.js +0 -78
- package/dist/accounts-MZ6SETJJ.js.map +0 -1
- package/dist/accounts-U7ZBEAY6.js +0 -699
- package/dist/accounts-U7ZBEAY6.js.map +0 -1
- package/dist/actions-4JYHXRFH.js +0 -55
- package/dist/activecampaign-IDBV26HH.js +0 -936
- package/dist/activecampaign-IDBV26HH.js.map +0 -1
- package/dist/ad-group-writes-HLBWN4E4.js +0 -170
- package/dist/ad-group-writes-HLBWN4E4.js.map +0 -1
- package/dist/ad-groups-33NZD6J3.js +0 -68
- package/dist/ad-groups-33NZD6J3.js.map +0 -1
- package/dist/ad-writes-7ZDNDZ2E.js +0 -174
- package/dist/ad-writes-7ZDNDZ2E.js.map +0 -1
- package/dist/add-AF42LQQQ.js +0 -105
- package/dist/add-AF42LQQQ.js.map +0 -1
- package/dist/add-LJRZYJ7I.js +0 -303
- package/dist/add-LJRZYJ7I.js.map +0 -1
- package/dist/ads-KBE5JXCH.js +0 -115
- package/dist/ads-LXWXOQHX.js +0 -48
- package/dist/ads-X3AM6M7L.js +0 -77
- package/dist/ads-X3AM6M7L.js.map +0 -1
- package/dist/adsets-YWBJFPAZ.js +0 -182
- package/dist/advertisers-6FOCN2W3.js +0 -121
- package/dist/advertisers-6FOCN2W3.js.map +0 -1
- package/dist/analytics-64HBRJJE.js +0 -2435
- package/dist/analytics-64HBRJJE.js.map +0 -1
- package/dist/analytics-VY5NL2GL.js +0 -445
- package/dist/analytics-VY5NL2GL.js.map +0 -1
- package/dist/asset-writes-72DEVXGO.js +0 -48
- package/dist/assign-N2I2BM67.js +0 -78
- package/dist/assign-N2I2BM67.js.map +0 -1
- package/dist/audience-size-H5DEZXJN.js +0 -74
- package/dist/audience-size-H5DEZXJN.js.map +0 -1
- package/dist/audience-writes-KCHLNFSI.js +0 -325
- package/dist/audience-writes-KCHLNFSI.js.map +0 -1
- package/dist/audiences-QAH42HIM.js +0 -86
- package/dist/audiences-WCDWN64L.js +0 -268
- package/dist/audiences-WCDWN64L.js.map +0 -1
- package/dist/audit-2AAF6AOX.js +0 -152
- package/dist/audit-2AAF6AOX.js.map +0 -1
- package/dist/autocomplete-3GSKRNCZ.js +0 -112
- package/dist/autocomplete-3GSKRNCZ.js.map +0 -1
- package/dist/avatars-N6W6HUPP.js +0 -38
- package/dist/bid-pricing-IMITXHXN.js +0 -101
- package/dist/bid-pricing-IMITXHXN.js.map +0 -1
- package/dist/brand-ITWQVZD2.js +0 -22
- package/dist/brief-JJNEYPYB.js +0 -541
- package/dist/brief-JJNEYPYB.js.map +0 -1
- package/dist/campaign-groups-TTQLP32Q.js +0 -97
- package/dist/campaign-groups-TTQLP32Q.js.map +0 -1
- package/dist/campaign-writes-MAKPHQ3V.js +0 -166
- package/dist/campaign-writes-MAKPHQ3V.js.map +0 -1
- package/dist/campaign-writes-XO74BALZ.js +0 -174
- package/dist/campaign-writes-XO74BALZ.js.map +0 -1
- package/dist/campaigns-5BIDXYSR.js +0 -111
- package/dist/campaigns-LS65QM6W.js +0 -76
- package/dist/campaigns-LS65QM6W.js.map +0 -1
- package/dist/campaigns-XZOQ2VTK.js +0 -130
- package/dist/campaigns-XZPXCS7I.js +0 -111
- package/dist/campaigns-XZPXCS7I.js.map +0 -1
- package/dist/canvas-SL3RMOY5.js +0 -46
- package/dist/capabilities-LSR5GCE6.js +0 -145
- package/dist/capabilities-LSR5GCE6.js.map +0 -1
- package/dist/catalogs-JLCSFZYC.js +0 -779
- package/dist/catalogs-JLCSFZYC.js.map +0 -1
- package/dist/catalogs-T23RKYFC.js +0 -128
- package/dist/catalogs-T23RKYFC.js.map +0 -1
- package/dist/changes-36C754R4.js +0 -135
- package/dist/chatgpt-3WFOPURY.js +0 -47
- package/dist/chats-GGYTXNJS.js +0 -277
- package/dist/chats-GGYTXNJS.js.map +0 -1
- package/dist/check-P7UPBBG7.js +0 -105
- package/dist/check-P7UPBBG7.js.map +0 -1
- package/dist/chunk-2TOIY2WN.js +0 -4254
- package/dist/chunk-4D46PS6J.js +0 -344
- package/dist/chunk-4GAEB6NK.js +0 -228
- package/dist/chunk-5XTGG4PV.js +0 -274
- package/dist/chunk-6JCX3YLM.js +0 -249
- package/dist/chunk-7J3NZBPV.js +0 -2982
- package/dist/chunk-7J3NZBPV.js.map +0 -1
- package/dist/chunk-ALMYGH5U.js +0 -479
- package/dist/chunk-AQKRSEBQ.js +0 -103
- package/dist/chunk-BL6RTOK3.js +0 -297
- package/dist/chunk-C6CBBZBO.js +0 -203
- package/dist/chunk-CCEDZTP7.js +0 -391
- package/dist/chunk-CCEDZTP7.js.map +0 -1
- package/dist/chunk-CKQTJ2LV.js +0 -89
- package/dist/chunk-D3KLDIPQ.js +0 -45
- package/dist/chunk-DL2UJNJ7.js +0 -8954
- package/dist/chunk-DQ54POZN.js +0 -363
- package/dist/chunk-EDLZGTGN.js +0 -216
- package/dist/chunk-EDLZGTGN.js.map +0 -1
- package/dist/chunk-EXSHBYNQ.js +0 -349
- package/dist/chunk-EXSHBYNQ.js.map +0 -1
- package/dist/chunk-FFFJBNHA.js +0 -63
- package/dist/chunk-FKQK22IX.js +0 -51
- package/dist/chunk-FLK6QHOY.js +0 -142
- package/dist/chunk-GACSA5A6.js +0 -1646
- package/dist/chunk-HJKYTNAZ.js +0 -61
- package/dist/chunk-INUU3752.js +0 -392
- package/dist/chunk-IQHO2ABF.js +0 -197
- package/dist/chunk-J3UWMBOP.js +0 -547
- package/dist/chunk-JDR3HUEL.js +0 -191
- package/dist/chunk-JI77AKT6.js +0 -19
- package/dist/chunk-JNURZHZJ.js +0 -942
- package/dist/chunk-JSNMKTFM.js +0 -592
- package/dist/chunk-K4FLWDEX.js +0 -122
- package/dist/chunk-KBRJSPIM.js +0 -676
- package/dist/chunk-LAC6YHHX.js +0 -97
- package/dist/chunk-M7HD42M6.js +0 -24017
- package/dist/chunk-M7HD42M6.js.map +0 -1
- package/dist/chunk-MGYC2IRC.js +0 -783
- package/dist/chunk-MI4HXE7M.js +0 -23
- package/dist/chunk-MJ7RNDD4.js +0 -910
- package/dist/chunk-OBJCNGZL.js +0 -207
- package/dist/chunk-OJGYYH6K.js +0 -179
- package/dist/chunk-OLBLXJNI.js +0 -224
- package/dist/chunk-PFTYKINE.js +0 -207
- package/dist/chunk-PLBITHV6.js +0 -846
- package/dist/chunk-Q6JMMBSQ.js +0 -831
- package/dist/chunk-RAQHUMKS.js +0 -169
- package/dist/chunk-SA22KXWT.js +0 -163
- package/dist/chunk-SIXU5PDF.js +0 -66
- package/dist/chunk-SXMK5AEJ.js +0 -494
- package/dist/chunk-TTLD66NI.js +0 -319
- package/dist/chunk-TVAIOC77.js +0 -287
- package/dist/chunk-TVTSA4EN.js +0 -188
- package/dist/chunk-V5NHJU3M.js +0 -604
- package/dist/chunk-VIPKDXGU.js +0 -4229
- package/dist/chunk-VIPKDXGU.js.map +0 -1
- package/dist/chunk-W4D7C74B.js +0 -387
- package/dist/chunk-WF25CCLD.js +0 -170
- package/dist/chunk-WQPUX3BA.js +0 -275
- package/dist/chunk-WR3FR3K3.js +0 -156
- package/dist/chunk-XDNJC62G.js +0 -91
- package/dist/chunk-XE6N4SZI.js +0 -429
- package/dist/chunk-XGPU2VDU.js +0 -219
- package/dist/chunk-XUJZO7MZ.js +0 -57
- package/dist/chunk-Y67LUJBE.js +0 -455
- package/dist/chunk-Y7XSDJEA.js +0 -3868
- package/dist/chunk-ZNNQK366.js +0 -7198
- package/dist/chunk-ZNNQK366.js.map +0 -1
- package/dist/chunk-ZNRGH4NS.js +0 -150
- package/dist/claim-4KUETSW3.js +0 -198
- package/dist/claim-4KUETSW3.js.map +0 -1
- package/dist/companies-XFO6WPVT.js +0 -196
- package/dist/companies-XFO6WPVT.js.map +0 -1
- package/dist/company-OJGISG7K.js +0 -306
- package/dist/company-OJGISG7K.js.map +0 -1
- package/dist/complete-CXOST5J3.js +0 -82
- package/dist/complete-CXOST5J3.js.map +0 -1
- package/dist/connect-HPQ32KGV.js +0 -43
- package/dist/conversation-D5HKCTDA.js +0 -94
- package/dist/conversation-D5HKCTDA.js.map +0 -1
- package/dist/conversion-report-DKXFHLLX.js +0 -125
- package/dist/conversion-report-DKXFHLLX.js.map +0 -1
- package/dist/conversion-upload-command-KTYAY7IG.js +0 -439
- package/dist/conversion-writes-7ODJDAUP.js +0 -120
- package/dist/conversion-writes-7ODJDAUP.js.map +0 -1
- package/dist/conversions-BKVGNNC6.js +0 -76
- package/dist/conversions-BKVGNNC6.js.map +0 -1
- package/dist/conversions-SYNDEB6D.js +0 -138
- package/dist/conversions-SYNDEB6D.js.map +0 -1
- package/dist/copy-writes-P4WK6OPM.js +0 -168
- package/dist/copy-writes-P4WK6OPM.js.map +0 -1
- package/dist/create-7D4VD4TC.js +0 -208
- package/dist/create-7D4VD4TC.js.map +0 -1
- package/dist/create-7QDEAWZS.js +0 -133
- package/dist/create-7QDEAWZS.js.map +0 -1
- package/dist/create-IQSYEC4M.js +0 -60
- package/dist/create-IQSYEC4M.js.map +0 -1
- package/dist/create-TQSCM7MG.js +0 -237
- package/dist/create-TQSCM7MG.js.map +0 -1
- package/dist/creatives-JPKA2RHU.js +0 -89
- package/dist/creatives-RNOL4F4E.js +0 -58
- package/dist/creatives-RXI27T2D.js +0 -221
- package/dist/creatives-RXI27T2D.js.map +0 -1
- package/dist/credentials-PYW55B52.js +0 -288
- package/dist/credentials-PYW55B52.js.map +0 -1
- package/dist/critique-2SYHNAW5.js +0 -1449
- package/dist/critique-2SYHNAW5.js.map +0 -1
- package/dist/critique-72GFZSHA.js +0 -230
- package/dist/critique-72GFZSHA.js.map +0 -1
- package/dist/crm-EATDSXXB.js +0 -225
- package/dist/crm-EATDSXXB.js.map +0 -1
- package/dist/crm-XXP3VBYD.js +0 -321
- package/dist/crm-XXP3VBYD.js.map +0 -1
- package/dist/currency-R4ORE2U3.js +0 -88
- package/dist/custom-conversions-5HJBB5XL.js +0 -128
- package/dist/customers-OFZTEXST.js +0 -57
- package/dist/delete-FGVZIK4R.js +0 -55
- package/dist/delete-FGVZIK4R.js.map +0 -1
- package/dist/delete-HBZZL4UA.js +0 -67
- package/dist/delete-HBZZL4UA.js.map +0 -1
- package/dist/delete-JOUXMRIX.js +0 -65
- package/dist/delete-JOUXMRIX.js.map +0 -1
- package/dist/demographics-SB7NBYOI.js +0 -139
- package/dist/demographics-SB7NBYOI.js.map +0 -1
- package/dist/discard-YYGIRDII.js +0 -67
- package/dist/discard-YYGIRDII.js.map +0 -1
- package/dist/discover-GSJRZUOC.js +0 -172
- package/dist/domain-3KRAJAUH.js +0 -99
- package/dist/domain-3KRAJAUH.js.map +0 -1
- package/dist/download-QCBKJ6OR.js +0 -170
- package/dist/download-QCBKJ6OR.js.map +0 -1
- package/dist/draft-7CGFFZTH.js +0 -333
- package/dist/draft-7CGFFZTH.js.map +0 -1
- package/dist/draft-BI4NW6AU.js +0 -308
- package/dist/draft-BI4NW6AU.js.map +0 -1
- package/dist/draft-LPVK6YHI.js +0 -281
- package/dist/draft-LPVK6YHI.js.map +0 -1
- package/dist/draft-QF5JEUTH.js +0 -218
- package/dist/draft-QF5JEUTH.js.map +0 -1
- package/dist/draft-WYDMLNYA.js +0 -308
- package/dist/experiments-ZCEYRP3H.js +0 -234
- package/dist/experiments-ZCEYRP3H.js.map +0 -1
- package/dist/facets-G7ZDPI5Q.js +0 -115
- package/dist/facets-G7ZDPI5Q.js.map +0 -1
- package/dist/feedback-3U3CL2VB.js +0 -109
- package/dist/feedback-3U3CL2VB.js.map +0 -1
- package/dist/feedback-record-4ZHPENIP.js +0 -263
- package/dist/feedback-record-4ZHPENIP.js.map +0 -1
- package/dist/fetch-PNVNNWTP.js +0 -177
- package/dist/fetch-PNVNNWTP.js.map +0 -1
- package/dist/fit-53DGYRFD.js +0 -63
- package/dist/flows-JXLQBP5Q.js +0 -248
- package/dist/flows-JXLQBP5Q.js.map +0 -1
- package/dist/fonts-LFMBUT4R.js +0 -37
- package/dist/forecast-4AG5F7YC.js +0 -169
- package/dist/forecast-VZAXI74O.js +0 -119
- package/dist/forecast-VZAXI74O.js.map +0 -1
- package/dist/funnel-EACC35UD.js +0 -395
- package/dist/funnel-EACC35UD.js.map +0 -1
- package/dist/get-AXBVYGAC.js +0 -57
- package/dist/get-AXBVYGAC.js.map +0 -1
- package/dist/get-D6A27Q4E.js +0 -80
- package/dist/get-D6A27Q4E.js.map +0 -1
- package/dist/google-NAA4BASO.js +0 -3267
- package/dist/google-ads-OIYUNDXQ.js +0 -196
- package/dist/google-ads-OIYUNDXQ.js.map +0 -1
- package/dist/history-5MRLNTCI.js +0 -67
- package/dist/history-5MRLNTCI.js.map +0 -1
- package/dist/history-IDYNIB6R.js +0 -134
- package/dist/history-IDYNIB6R.js.map +0 -1
- package/dist/history-IOUKN3WD.js +0 -100
- package/dist/history-IOUKN3WD.js.map +0 -1
- package/dist/hubspot-HL6WGC4G.js +0 -780
- package/dist/hubspot-HL6WGC4G.js.map +0 -1
- package/dist/ideas-NK3KQHAK.js +0 -43
- package/dist/images-2XS3JT7E.js +0 -92
- package/dist/ingest-DHXWZZX4.js +0 -24
- package/dist/ingest-FGTJRCWK.js +0 -108
- package/dist/ingest-FGTJRCWK.js.map +0 -1
- package/dist/insights-M3CYB22P.js +0 -437
- package/dist/insights-M3CYB22P.js.map +0 -1
- package/dist/insights-XCT3ONC7.js +0 -130
- package/dist/insights-XCT3ONC7.js.map +0 -1
- package/dist/inspect-53GGYRC4.js +0 -190
- package/dist/inspect-53GGYRC4.js.map +0 -1
- package/dist/instant-experiences-HT3HB4QZ.js +0 -258
- package/dist/instant-experiences-HT3HB4QZ.js.map +0 -1
- package/dist/intent-NSHW7EJT.js +0 -95
- package/dist/keyword-gap-ITTWKBWZ.js +0 -130
- package/dist/keyword-metrics-LWPE3HHW.js +0 -198
- package/dist/keyword-metrics-LWPE3HHW.js.map +0 -1
- package/dist/keywords-for-site-5K25VJ35.js +0 -129
- package/dist/keywords-for-site-5K25VJ35.js.map +0 -1
- package/dist/landing-QONUUP3C.js +0 -28
- package/dist/languages-MEFQQBJ2.js +0 -40
- package/dist/leads-FSSISJGL.js +0 -113
- package/dist/leads-FSSISJGL.js.map +0 -1
- package/dist/leads-SZOGCQFK.js +0 -538
- package/dist/leads-SZOGCQFK.js.map +0 -1
- package/dist/learn-FWWJWBDN.js +0 -205
- package/dist/learn-FWWJWBDN.js.map +0 -1
- package/dist/line-item-writes-A3UQ44NG.js +0 -209
- package/dist/line-item-writes-A3UQ44NG.js.map +0 -1
- package/dist/line-items-OH426JGT.js +0 -107
- package/dist/link-67E4NVEX.js +0 -65
- package/dist/link-67E4NVEX.js.map +0 -1
- package/dist/linkedin-CT2OSQ2I.js +0 -1314
- package/dist/linkedin-CT2OSQ2I.js.map +0 -1
- package/dist/linkedin-person-OSNLPLJJ.js +0 -137
- package/dist/linkedin-person-OSNLPLJJ.js.map +0 -1
- package/dist/list-J4OUXAKN.js +0 -65
- package/dist/list-J4OUXAKN.js.map +0 -1
- package/dist/list-L2OQK4W3.js +0 -304
- package/dist/list-L2OQK4W3.js.map +0 -1
- package/dist/list-LHMDAA2D.js +0 -152
- package/dist/list-LHMDAA2D.js.map +0 -1
- package/dist/locations-RLWAS6AC.js +0 -40
- package/dist/locations-UKBOT6SB.js +0 -67
- package/dist/locations-UKBOT6SB.js.map +0 -1
- package/dist/log-4EIV54V4.js +0 -93
- package/dist/log-4EIV54V4.js.map +0 -1
- package/dist/lookup-ZJIP2M4X.js +0 -22
- package/dist/make-MFU3CSN7.js +0 -1368
- package/dist/make-MFU3CSN7.js.map +0 -1
- package/dist/map-VWWWMQLK.js +0 -434
- package/dist/map-VWWWMQLK.js.map +0 -1
- package/dist/mcp-EKLO2VD7.js +0 -715
- package/dist/mcp-EKLO2VD7.js.map +0 -1
- package/dist/media-ZWN7E777.js +0 -18
- package/dist/media-sources-7L622UTF.js +0 -35
- package/dist/members-QK5M5NCJ.js +0 -45
- package/dist/members-QK5M5NCJ.js.map +0 -1
- package/dist/meta-EHKXH257.js +0 -122
- package/dist/metrics-K6FDCMK7.js +0 -152
- package/dist/normalize-WI4OGKH5.js +0 -142
- package/dist/normalize-WI4OGKH5.js.map +0 -1
- package/dist/options-FKJ2QXI6.js +0 -123
- package/dist/options-FKJ2QXI6.js.map +0 -1
- package/dist/organization-7A7MPUDG.js +0 -947
- package/dist/organization-7A7MPUDG.js.map +0 -1
- package/dist/page-photos-HWKQOSCU.js +0 -116
- package/dist/page-photos-HWKQOSCU.js.map +0 -1
- package/dist/performance-K4VB6L6Z.js +0 -25
- package/dist/performance-LHAL53YO.js +0 -5539
- package/dist/performance-LHAL53YO.js.map +0 -1
- package/dist/pixels-Z7ZGXAGB.js +0 -60
- package/dist/pixels-Z7ZGXAGB.js.map +0 -1
- package/dist/plan-TVQSEKYL.js +0 -207
- package/dist/plan-TVQSEKYL.js.map +0 -1
- package/dist/preview-CWRGDFCP.js +0 -216
- package/dist/preview-CWRGDFCP.js.map +0 -1
- package/dist/promoted-tweet-writes-V4ZVJOJU.js +0 -181
- package/dist/promoted-tweet-writes-V4ZVJOJU.js.map +0 -1
- package/dist/promoted-tweets-KPG4IUVD.js +0 -119
- package/dist/publish-Y465CVUD.js +0 -342
- package/dist/publish-Y465CVUD.js.map +0 -1
- package/dist/query-QM7MBQD7.js +0 -62
- package/dist/questionnaire-LEZJLMAV.js +0 -93
- package/dist/questionnaire-LEZJLMAV.js.map +0 -1
- package/dist/reddit-Z7DOVIGR.js +0 -27
- package/dist/refresh-A6TW2Z2F.js +0 -95
- package/dist/refresh-A6TW2Z2F.js.map +0 -1
- package/dist/release-UFESJ4TM.js +0 -61
- package/dist/release-UFESJ4TM.js.map +0 -1
- package/dist/relevant-pages-VOICMQ7U.js +0 -99
- package/dist/remove-YONNYA4G.js +0 -51
- package/dist/remove-YONNYA4G.js.map +0 -1
- package/dist/reopen-FYJU2IPO.js +0 -64
- package/dist/reopen-FYJU2IPO.js.map +0 -1
- package/dist/rerun-B5SBG6ZE.js +0 -93
- package/dist/rerun-B5SBG6ZE.js.map +0 -1
- package/dist/research-HW4EVOZU.js +0 -72
- package/dist/research-OV53DIBX.js +0 -263
- package/dist/research-OV53DIBX.js.map +0 -1
- package/dist/reset-R4SIQXFH.js +0 -55
- package/dist/reset-R4SIQXFH.js.map +0 -1
- package/dist/reset-X6ODAKYH.js +0 -55
- package/dist/reset-X6ODAKYH.js.map +0 -1
- package/dist/resolve-DNRJCLCR.js +0 -122
- package/dist/resolve-DNRJCLCR.js.map +0 -1
- package/dist/retry-D5MKBHUB.js +0 -63
- package/dist/retry-D5MKBHUB.js.map +0 -1
- package/dist/retry-DVFLE7JY.js +0 -61
- package/dist/retry-DVFLE7JY.js.map +0 -1
- package/dist/revenue-QGI6XWSK.js +0 -89
- package/dist/revenue-QGI6XWSK.js.map +0 -1
- package/dist/rule-writes-S3RN47OG.js +0 -523
- package/dist/rule-writes-S3RN47OG.js.map +0 -1
- package/dist/rules-KTJ2ZZ62.js +0 -217
- package/dist/rules-TR6BAC23.js +0 -97
- package/dist/rules-TR6BAC23.js.map +0 -1
- package/dist/rules-add-T5ZO5RLR.js +0 -463
- package/dist/rules-add-T5ZO5RLR.js.map +0 -1
- package/dist/run-WZ5IXWA4.js +0 -67
- package/dist/run-WZ5IXWA4.js.map +0 -1
- package/dist/run-YRR3KOUU.js +0 -68
- package/dist/scaffold-ad-DNUCGCIH.js +0 -1514
- package/dist/scaffold-ad-DNUCGCIH.js.map +0 -1
- package/dist/scaffold-static-ad-VR65EZAG.js +0 -1013
- package/dist/scaffold-static-ad-VR65EZAG.js.map +0 -1
- package/dist/scaffold-video-JLMKCCWE.js +0 -886
- package/dist/scaffold-video-JLMKCCWE.js.map +0 -1
- package/dist/schedule-VRHCVBZA.js +0 -62
- package/dist/schedule-VRHCVBZA.js.map +0 -1
- package/dist/scheduled-agents-DG7FTCUZ.js +0 -55
- package/dist/schema-WZKDWF5N.js +0 -133
- package/dist/schema-WZKDWF5N.js.map +0 -1
- package/dist/search-MN66QIKJ.js +0 -175
- package/dist/search-MN66QIKJ.js.map +0 -1
- package/dist/select-IPSM2BF2.js +0 -104
- package/dist/select-IPSM2BF2.js.map +0 -1
- package/dist/sends-6FI7WELX.js +0 -348
- package/dist/sends-6FI7WELX.js.map +0 -1
- package/dist/set-prompt-N6BD3DME.js +0 -196
- package/dist/set-prompt-N6BD3DME.js.map +0 -1
- package/dist/setup-links-GTA2AROS.js +0 -142
- package/dist/setup-links-GTA2AROS.js.map +0 -1
- package/dist/shopify-S4TG6WJH.js +0 -3956
- package/dist/shopify-S4TG6WJH.js.map +0 -1
- package/dist/site-NY622E3H.js +0 -178
- package/dist/site-NY622E3H.js.map +0 -1
- package/dist/sources-4F2XO7Z6.js +0 -455
- package/dist/sources-4F2XO7Z6.js.map +0 -1
- package/dist/sources-562ITR77.js +0 -30
- package/dist/stale-JKM6MXJF.js +0 -74
- package/dist/stale-JKM6MXJF.js.map +0 -1
- package/dist/status-AUWMUDA4.js +0 -63
- package/dist/status-AUWMUDA4.js.map +0 -1
- package/dist/studies-ZOEUY6YP.js +0 -250
- package/dist/study-writes-DTGMCNFP.js +0 -468
- package/dist/study-writes-DTGMCNFP.js.map +0 -1
- package/dist/sync-76MCGHX4.js +0 -55
- package/dist/sync-76MCGHX4.js.map +0 -1
- package/dist/sync-definition-NJPT6ABG.js +0 -67
- package/dist/tags-5KBOJJ5R.js +0 -26
- package/dist/tags-CSMLTHTU.js +0 -21
- package/dist/tags-CSMLTHTU.js.map +0 -1
- package/dist/tags-IFRZYM3G.js +0 -21
- package/dist/tags-IFRZYM3G.js.map +0 -1
- package/dist/tags-S44ADJ75.js +0 -21
- package/dist/tags-S44ADJ75.js.map +0 -1
- package/dist/tags-WR7IY3OT.js +0 -225
- package/dist/tags-WR7IY3OT.js.map +0 -1
- package/dist/targeting-VBQY3HUN.js +0 -760
- package/dist/targeting-VBQY3HUN.js.map +0 -1
- package/dist/targeting-criteria-FJWNK53T.js +0 -113
- package/dist/targets-2EHMMXD4.js +0 -104
- package/dist/targets-2EHMMXD4.js.map +0 -1
- package/dist/testimonials-WAPFIGFJ.js +0 -32
- package/dist/themes-B4LCQUXB.js +0 -95
- package/dist/top-companies-DJ2XQKMW.js +0 -109
- package/dist/top-companies-DJ2XQKMW.js.map +0 -1
- package/dist/transcript-J3LGOHCM.js +0 -163
- package/dist/transcript-J3LGOHCM.js.map +0 -1
- package/dist/translate-6RXO4C6Z.js +0 -607
- package/dist/translate-6RXO4C6Z.js.map +0 -1
- package/dist/triggers-CYXPNHQB.js +0 -142
- package/dist/triggers-CYXPNHQB.js.map +0 -1
- package/dist/unlink-5FJI7XZB.js +0 -68
- package/dist/unlink-5FJI7XZB.js.map +0 -1
- package/dist/unstage-54ZE2SZK.js +0 -86
- package/dist/unstage-54ZE2SZK.js.map +0 -1
- package/dist/unstage-MDSSPUKV.js +0 -95
- package/dist/unstage-MDSSPUKV.js.map +0 -1
- package/dist/update-BVBFNFMO.js +0 -99
- package/dist/update-BVBFNFMO.js.map +0 -1
- package/dist/update-GV3T7ZRC.js +0 -190
- package/dist/update-GV3T7ZRC.js.map +0 -1
- package/dist/update-PUQWUGPJ.js +0 -64
- package/dist/update-PUQWUGPJ.js.map +0 -1
- package/dist/update-YQBK6C3L.js +0 -153
- package/dist/update-YQBK6C3L.js.map +0 -1
- package/dist/upload-PXT5JAEV.js +0 -127
- package/dist/upload-PXT5JAEV.js.map +0 -1
- package/dist/url-options-IHL4OU4C.js +0 -130
- package/dist/url-options-IHL4OU4C.js.map +0 -1
- package/dist/url-params-IYUI6SFJ.js +0 -99
- package/dist/url-params-IYUI6SFJ.js.map +0 -1
- package/dist/validate-AD7F7LQ5.js +0 -120
- package/dist/validate-AD7F7LQ5.js.map +0 -1
- package/dist/videos-ZJCTODEB.js +0 -41
- package/dist/viewer-check-GWZNGWCO.js +0 -81
- package/dist/web-76CWAZNW.js +0 -141
- package/dist/web-76CWAZNW.js.map +0 -1
- package/dist/winning-ads-W7GTXTX7.js +0 -86
- package/dist/write-commands-K6M3RTVK.js +0 -1170
- package/dist/write-commands-K6M3RTVK.js.map +0 -1
- package/dist/write-commands-VPU53DLB.js +0 -1498
- package/dist/write-commands-VPU53DLB.js.map +0 -1
- package/dist/x-V4NNNWRU.js +0 -47
- /package/dist/{account-assets-O7IA37RE.js.map → account-assets-J5Z4URLQ.js.map} +0 -0
- /package/dist/{account-reads-SNOWDHHF.js.map → account-reads-2MSUVG46.js.map} +0 -0
- /package/dist/{actions-4JYHXRFH.js.map → actions-D7OWCP36.js.map} +0 -0
- /package/dist/{ads-LXWXOQHX.js.map → ads-HLUJB5SQ.js.map} +0 -0
- /package/dist/{ads-KBE5JXCH.js.map → ads-MAOI7S6V.js.map} +0 -0
- /package/dist/{adsets-YWBJFPAZ.js.map → adsets-QRKICEFD.js.map} +0 -0
- /package/dist/{asset-writes-72DEVXGO.js.map → asset-writes-JLVUAVUZ.js.map} +0 -0
- /package/dist/{audiences-QAH42HIM.js.map → audiences-CDDI5HR5.js.map} +0 -0
- /package/dist/{avatars-N6W6HUPP.js.map → avatars-WZ2JDMHH.js.map} +0 -0
- /package/dist/{brand-ITWQVZD2.js.map → brand-IZTTBZII.js.map} +0 -0
- /package/dist/{campaigns-5BIDXYSR.js.map → campaigns-4Y3JQC2U.js.map} +0 -0
- /package/dist/{campaigns-XZOQ2VTK.js.map → campaigns-HES5MDUG.js.map} +0 -0
- /package/dist/{canvas-SL3RMOY5.js.map → canvas-IQ753Q2O.js.map} +0 -0
- /package/dist/{changes-36C754R4.js.map → changes-VWKTM27U.js.map} +0 -0
- /package/dist/{chatgpt-3WFOPURY.js.map → chatgpt-OPOD2WHB.js.map} +0 -0
- /package/dist/{chunk-WF25CCLD.js.map → chunk-2GYCWRF3.js.map} +0 -0
- /package/dist/{chunk-HJKYTNAZ.js.map → chunk-2L7F7KR4.js.map} +0 -0
- /package/dist/{chunk-4GAEB6NK.js.map → chunk-44ZRCSR7.js.map} +0 -0
- /package/dist/{chunk-2TOIY2WN.js.map → chunk-46YLDIQG.js.map} +0 -0
- /package/dist/{chunk-DQ54POZN.js.map → chunk-4EDWXZ3I.js.map} +0 -0
- /package/dist/{chunk-SIXU5PDF.js.map → chunk-4FFBGR5L.js.map} +0 -0
- /package/dist/{chunk-XGPU2VDU.js.map → chunk-4UQRXKYJ.js.map} +0 -0
- /package/dist/{chunk-JSNMKTFM.js.map → chunk-4UZUUSVL.js.map} +0 -0
- /package/dist/{chunk-Q6JMMBSQ.js.map → chunk-4XHCEYHI.js.map} +0 -0
- /package/dist/{chunk-ALMYGH5U.js.map → chunk-4Z6PVR3M.js.map} +0 -0
- /package/dist/{chunk-K4FLWDEX.js.map → chunk-5Y5FZV2W.js.map} +0 -0
- /package/dist/{chunk-INUU3752.js.map → chunk-6HJXLGDV.js.map} +0 -0
- /package/dist/{chunk-XE6N4SZI.js.map → chunk-6S5CWGDA.js.map} +0 -0
- /package/dist/{chunk-SXMK5AEJ.js.map → chunk-6VYROVWO.js.map} +0 -0
- /package/dist/{chunk-TVAIOC77.js.map → chunk-7BUIOP36.js.map} +0 -0
- /package/dist/{chunk-TTLD66NI.js.map → chunk-AQRXXC6E.js.map} +0 -0
- /package/dist/{chunk-W4D7C74B.js.map → chunk-ARBXT73X.js.map} +0 -0
- /package/dist/{chunk-LAC6YHHX.js.map → chunk-BEZHQIEI.js.map} +0 -0
- /package/dist/{chunk-J3UWMBOP.js.map → chunk-BFURWHVR.js.map} +0 -0
- /package/dist/{chunk-KBRJSPIM.js.map → chunk-DSCEXBDR.js.map} +0 -0
- /package/dist/{chunk-MI4HXE7M.js.map → chunk-FLWDFPXE.js.map} +0 -0
- /package/dist/{chunk-GACSA5A6.js.map → chunk-FRNBRN2C.js.map} +0 -0
- /package/dist/{chunk-FKQK22IX.js.map → chunk-GE3VT3CA.js.map} +0 -0
- /package/dist/{chunk-FLK6QHOY.js.map → chunk-HGBJQGO5.js.map} +0 -0
- /package/dist/{chunk-MGYC2IRC.js.map → chunk-I7AYMJZA.js.map} +0 -0
- /package/dist/{chunk-PFTYKINE.js.map → chunk-IRM273C7.js.map} +0 -0
- /package/dist/{chunk-WR3FR3K3.js.map → chunk-IWKD56AY.js.map} +0 -0
- /package/dist/{chunk-Y7XSDJEA.js.map → chunk-JLAQWMVF.js.map} +0 -0
- /package/dist/{chunk-XUJZO7MZ.js.map → chunk-K6NULQN7.js.map} +0 -0
- /package/dist/{chunk-JI77AKT6.js.map → chunk-L2BRAC2J.js.map} +0 -0
- /package/dist/{chunk-Y67LUJBE.js.map → chunk-LGMI4LSY.js.map} +0 -0
- /package/dist/{chunk-OJGYYH6K.js.map → chunk-NB2FU6EZ.js.map} +0 -0
- /package/dist/{chunk-TVTSA4EN.js.map → chunk-NWF2LRKO.js.map} +0 -0
- /package/dist/{chunk-WQPUX3BA.js.map → chunk-OG47L5GG.js.map} +0 -0
- /package/dist/{chunk-RAQHUMKS.js.map → chunk-OR6KVLI5.js.map} +0 -0
- /package/dist/{chunk-OBJCNGZL.js.map → chunk-QDQZ62FL.js.map} +0 -0
- /package/dist/{chunk-4D46PS6J.js.map → chunk-QIOFOD4K.js.map} +0 -0
- /package/dist/{chunk-6JCX3YLM.js.map → chunk-R2SYF5FC.js.map} +0 -0
- /package/dist/{chunk-JNURZHZJ.js.map → chunk-RTH2I55B.js.map} +0 -0
- /package/dist/{chunk-FFFJBNHA.js.map → chunk-S6VFDNSQ.js.map} +0 -0
- /package/dist/{chunk-ZNRGH4NS.js.map → chunk-SG2TDQEE.js.map} +0 -0
- /package/dist/{chunk-CKQTJ2LV.js.map → chunk-T3P6O2VU.js.map} +0 -0
- /package/dist/{chunk-V5NHJU3M.js.map → chunk-TXDE2QJ3.js.map} +0 -0
- /package/dist/{chunk-C6CBBZBO.js.map → chunk-UDIEKCIR.js.map} +0 -0
- /package/dist/{chunk-SA22KXWT.js.map → chunk-USCADMM3.js.map} +0 -0
- /package/dist/{chunk-MJ7RNDD4.js.map → chunk-UUGISMNE.js.map} +0 -0
- /package/dist/{chunk-IQHO2ABF.js.map → chunk-VDPOCAQ2.js.map} +0 -0
- /package/dist/{chunk-AQKRSEBQ.js.map → chunk-VEJ3QX6M.js.map} +0 -0
- /package/dist/{chunk-XDNJC62G.js.map → chunk-VFJB7OG6.js.map} +0 -0
- /package/dist/{chunk-DL2UJNJ7.js.map → chunk-VRIPVLE7.js.map} +0 -0
- /package/dist/{chunk-5XTGG4PV.js.map → chunk-WFY7KSHB.js.map} +0 -0
- /package/dist/{chunk-D3KLDIPQ.js.map → chunk-WLESMH4J.js.map} +0 -0
- /package/dist/{chunk-PLBITHV6.js.map → chunk-XHQYFNNK.js.map} +0 -0
- /package/dist/{chunk-OLBLXJNI.js.map → chunk-YILZR3XI.js.map} +0 -0
- /package/dist/{chunk-JDR3HUEL.js.map → chunk-YJFLXOH4.js.map} +0 -0
- /package/dist/{chunk-BL6RTOK3.js.map → chunk-YWHZYR6S.js.map} +0 -0
- /package/dist/{connect-HPQ32KGV.js.map → connect-3YY7MF3I.js.map} +0 -0
- /package/dist/{conversion-upload-command-KTYAY7IG.js.map → conversion-upload-command-7RSZ5ZQU.js.map} +0 -0
- /package/dist/{creatives-RNOL4F4E.js.map → creatives-2DR3QHJW.js.map} +0 -0
- /package/dist/{creatives-JPKA2RHU.js.map → creatives-BB6S2OF6.js.map} +0 -0
- /package/dist/{currency-R4ORE2U3.js.map → currency-X7Y6TSLF.js.map} +0 -0
- /package/dist/{custom-conversions-5HJBB5XL.js.map → custom-conversions-HAGG72LF.js.map} +0 -0
- /package/dist/{customers-OFZTEXST.js.map → customers-663K2OCP.js.map} +0 -0
- /package/dist/{discover-GSJRZUOC.js.map → discover-6DORQWXY.js.map} +0 -0
- /package/dist/{draft-WYDMLNYA.js.map → draft-R6EKORNS.js.map} +0 -0
- /package/dist/{fit-53DGYRFD.js.map → fit-BEFCY2B4.js.map} +0 -0
- /package/dist/{fonts-LFMBUT4R.js.map → fonts-C6XN5667.js.map} +0 -0
- /package/dist/{forecast-4AG5F7YC.js.map → forecast-BTPIXEQ5.js.map} +0 -0
- /package/dist/{google-NAA4BASO.js.map → google-M6BJ22UL.js.map} +0 -0
- /package/dist/{ideas-NK3KQHAK.js.map → ideas-M66FU45H.js.map} +0 -0
- /package/dist/{images-2XS3JT7E.js.map → images-MM5OPUKV.js.map} +0 -0
- /package/dist/{ingest-DHXWZZX4.js.map → ingest-KMLYCFF4.js.map} +0 -0
- /package/dist/{intent-NSHW7EJT.js.map → intent-YCQCUCV3.js.map} +0 -0
- /package/dist/{keyword-gap-ITTWKBWZ.js.map → keyword-gap-PUSF7EKY.js.map} +0 -0
- /package/dist/{landing-QONUUP3C.js.map → landing-OZU5RRFV.js.map} +0 -0
- /package/dist/{languages-MEFQQBJ2.js.map → languages-SLFV73GE.js.map} +0 -0
- /package/dist/{line-items-OH426JGT.js.map → line-items-NJMEPEF5.js.map} +0 -0
- /package/dist/{locations-RLWAS6AC.js.map → locations-T2OMP6QN.js.map} +0 -0
- /package/dist/{lookup-ZJIP2M4X.js.map → lookup-S5VG7AWH.js.map} +0 -0
- /package/dist/{media-ZWN7E777.js.map → media-P4T4ZBNS.js.map} +0 -0
- /package/dist/{media-sources-7L622UTF.js.map → media-sources-EQI3U4TC.js.map} +0 -0
- /package/dist/{meta-EHKXH257.js.map → meta-IPLWNYC7.js.map} +0 -0
- /package/dist/{metrics-K6FDCMK7.js.map → metrics-4YVJHYRI.js.map} +0 -0
- /package/dist/{performance-K4VB6L6Z.js.map → performance-NIF3CESZ.js.map} +0 -0
- /package/dist/{promoted-tweets-KPG4IUVD.js.map → promoted-tweets-RJT53DRM.js.map} +0 -0
- /package/dist/{query-QM7MBQD7.js.map → query-XZMDGRO5.js.map} +0 -0
- /package/dist/{reddit-Z7DOVIGR.js.map → reddit-JIHMAKAQ.js.map} +0 -0
- /package/dist/{relevant-pages-VOICMQ7U.js.map → relevant-pages-FS7GBVXK.js.map} +0 -0
- /package/dist/{research-HW4EVOZU.js.map → research-PNBACCCP.js.map} +0 -0
- /package/dist/{rules-KTJ2ZZ62.js.map → rules-ZVS2MWED.js.map} +0 -0
- /package/dist/{run-YRR3KOUU.js.map → run-QCNRR3CA.js.map} +0 -0
- /package/dist/{scheduled-agents-DG7FTCUZ.js.map → scheduled-agents-OXYAVSIE.js.map} +0 -0
- /package/dist/{sources-562ITR77.js.map → sources-FLUGHSVP.js.map} +0 -0
- /package/dist/{studies-ZOEUY6YP.js.map → studies-EPO2AM4M.js.map} +0 -0
- /package/dist/{sync-definition-NJPT6ABG.js.map → sync-definition-OGQ5XTQE.js.map} +0 -0
- /package/dist/{tags-5KBOJJ5R.js.map → tags-CZTRQNXV.js.map} +0 -0
- /package/dist/{targeting-criteria-FJWNK53T.js.map → targeting-criteria-AQYXVSGN.js.map} +0 -0
- /package/dist/{testimonials-WAPFIGFJ.js.map → testimonials-G3OCNPBY.js.map} +0 -0
- /package/dist/{themes-B4LCQUXB.js.map → themes-FEVYZZCW.js.map} +0 -0
- /package/dist/{videos-ZJCTODEB.js.map → videos-36AXDUGZ.js.map} +0 -0
- /package/dist/{viewer-check-GWZNGWCO.js.map → viewer-check-6HL4OUQY.js.map} +0 -0
- /package/dist/{winning-ads-W7GTXTX7.js.map → winning-ads-GMM5W2O4.js.map} +0 -0
- /package/dist/{x-V4NNNWRU.js.map → x-HGFAL3NY.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/creatives/brief.ts","../src/commands/creatives/brief-model.ts"],"sourcesContent":["/**\n * `baker creatives brief`: everything the agent needs before deciding what ads to make, in one\n * compact read. Who sees the ads, what the account says works and where it loses people, what the\n * company's reviewers liked, what customers said, and which ideas already exist. Each part is\n * read on its own and a failed read is reported as missing, never as a failed brief.\n */\nimport { readFileSync } from \"node:fs\";\nimport { readdir, readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { CreativePerformance, CreativesFeedbackResponse, CreativesPerformanceResponse } from \"@baker/api\";\nimport type { ScopedWinnersSearchResponse } from \"@baker/api/ad-library\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../client.ts\";\nimport { readCompanyReading } from \"../../engine/creative-context/company.ts\";\nimport { readAllRules } from \"../../engine/creative-context/index.ts\";\nimport { selectRules } from \"../../engine/creative-rules/select.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { type ViewerProfile, viewerFromKnowledge } from \"../../viewer-profile.ts\";\nimport { findWorkspaceRoot } from \"../canvas/normalize-paths.ts\";\nimport { liveViewerLookups } from \"../canvas/viewer-check.ts\";\nimport { researchCustomers } from \"../research/customers.ts\";\nimport { buildSearchBody } from \"../winning-ads/search.ts\";\nimport {\n type Bottleneck,\n type CustomerTruth,\n customerTruth,\n diagnoseBottleneck,\n type MarketMap,\n marketMap,\n resultsOf,\n} from \"./brief-model.ts\";\nimport { buildNext, ideasReport } from \"./ideas.ts\";\nimport { AWARENESS_STAGES, IDEA_ANGLES, IDEA_FORMATS } from \"./ideas-model.ts\";\nimport { readInsights } from \"./ideas-workspace.ts\";\nimport { withDefinitions } from \"./performance.ts\";\nimport { readCreativeSpecs, rulesHints, rulesView, waiverCounts } from \"./rules-view.ts\";\n\nconst 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.\n\n baker creatives brief # the viewer from the Knowledge\n baker creatives brief --adset <id> # the viewer that ad set reaches\n baker creatives brief --account-id act_<id> # when more than one Meta account is connected\n\nThen 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).`;\n\nconst ARGS = {\n adset: {\n type: \"string\",\n description: \"The Meta ad set the ads are for: its viewer replaces the Knowledge's\",\n required: false,\n },\n \"account-id\": {\n type: \"string\",\n description: \"Meta ad account to read (act_<id>); default: the one connected account\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Every quote, idea and creative instead of the top few\",\n required: false,\n default: false,\n },\n research: {\n type: \"boolean\",\n description: \"Gather customer quotes first when few are on file (default true; --no-research skips it)\",\n required: false,\n default: true,\n },\n} as const;\n\nregisterSchema({ command: \"creatives.brief\", description: DESCRIPTION, args: ARGS });\n\ntype Section<T> = T | { unavailable: string };\n\nconst unavailable = (err: unknown) => ({\n unavailable: err instanceof Error ? err.message.slice(0, 200) : \"could not be read\",\n});\n\nasync function section<T>(read: () => Promise<T>): Promise<Section<T>> {\n try {\n return await read();\n } catch (err) {\n return unavailable(err);\n }\n}\n\nfunction isAvailable<T>(value: Section<T>): value is T {\n return !(value !== null && typeof value === \"object\" && \"unavailable\" in value);\n}\n\nasync function companyStatus(root: string): Promise<\"ready\" | \"missing\"> {\n const doc = await readFile(path.join(root, \"COMPANY.md\"), \"utf8\").catch(() => \"\");\n return doc.trim() && !/^#\\s*Company\\s*\\n+\\s*TODO/m.test(doc) ? \"ready\" : \"missing\";\n}\n\nasync function readOffers(root: string): Promise<string[]> {\n const dir = path.join(root, \"src\", \"content\", \"offers\");\n const files = ((await readdir(dir, { recursive: true }).catch(() => [])) as string[]).filter((f) =>\n f.endsWith(\".md\"),\n );\n return files.map((f) => f.replace(/\\.md$/, \"\")).sort();\n}\n\nfunction readDefinition(root: string, slug: string): string | null {\n try {\n return readFileSync(path.join(root, \"src\", \"creatives\", slug, \"_definition.md\"), \"utf8\");\n } catch {\n return null;\n }\n}\n\nasync function readViewer(root: string, adSet: string | undefined): Promise<ViewerProfile> {\n const lookups = liveViewerLookups(root);\n if (adSet) {\n const read = await lookups.adSetViewer(adSet).catch(() => null);\n if (read) return read;\n }\n const personas = await lookups.personas().catch(() => []);\n return viewerFromKnowledge({ personas: personas.map((p) => p.segment ?? p.title ?? p.slug) });\n}\n\nconst MARKET_ADS = 40;\nconst MARKET_FALLBACK_ADS = 15;\n/**\n * The most a market search may hold the brief: a followed brands' browse answers in ~2 s, a short\n * library query in ~8 s (dev, Oct 2026). The market is context, not a step: a slow library leaves it out.\n */\nconst MARKET_SEARCH_MS = 12_000;\n\n/** What the market's ads already say: the brands the company follows, else the whole library. */\nasync function readMarket(root: string): Promise<MarketMap | null> {\n const company = await readCompanyReading(root);\n // What a library files the company under, in English; its own words when no model read it.\n const query = company?.category ?? company?.sells;\n if (!query) return null;\n const search = (body: Record<string, unknown>) =>\n apiPost<ScopedWinnersSearchResponse>(\"/api/ad-library/winners/search\", body, {\n timeoutMs: MARKET_SEARCH_MS,\n }).catch((err: unknown) => {\n if (err instanceof ApiError && err.code === \"TIMEOUT\") {\n throw new Error(\"the ad library did not answer in time, so competitors' claims are left out\");\n }\n throw err;\n });\n // The followed brands' best ads, browsed (no query, so no relevance judge), and the library's ads\n // for what the company sells, asked at once: the second answers in ~8 s, after the first's ~2 s.\n const [followed, all] = await Promise.allSettled([\n search(buildSearchBody({ scope: \"followed\", platform: \"meta\", limit: MARKET_ADS, maxPerAdvertiser: 8 })),\n search(buildSearchBody({ query, scope: \"all\", platform: \"meta\", limit: MARKET_FALLBACK_ADS, maxPerAdvertiser: 3 })),\n ]);\n if (followed.status === \"fulfilled\" && followed.value.results.length > 0)\n return marketMap(followed.value.results, \"followed\");\n if (all.status === \"rejected\") throw all.reason;\n return all.value.results.length > 0 ? marketMap(all.value.results, \"library\") : null;\n}\n\ntype MetaAccount = { externalId?: unknown; id?: unknown };\n\nasync function metaAccountId(given: string | undefined): Promise<string | null> {\n if (given) return given.startsWith(\"act_\") ? given : `act_${given}`;\n const named = getEnv().BAKER_META_AD_ACCOUNT_ID;\n if (named) return `act_${named.replace(/^act_/, \"\")}`;\n const accounts = await apiGet<MetaAccount[]>(\"/api/ads/meta/accounts\");\n const ids = accounts.flatMap((a) => {\n const id = a.externalId ?? a.id;\n return typeof id === \"string\" && id ? [id] : [];\n });\n if (ids.length !== 1) return null;\n const id = ids[0] as string;\n return id.startsWith(\"act_\") ? id : `act_${id}`;\n}\n\nasync function readBottleneck(accountId: string): Promise<Bottleneck> {\n const rows = await apiPost<Array<Record<string, unknown>>>(\"/api/ads/meta/insights\", {\n object: accountId,\n level: \"account\",\n fields: [\"impressions\", \"inline_link_clicks\", \"actions\", \"spend\"],\n actionBreakdowns: [\"action_type\"],\n datePreset: \"last_30d\",\n limit: 10,\n });\n const totals = { impressions: 0, linkClicks: 0, results: 0 };\n for (const row of rows) {\n totals.impressions += Number(row.impressions ?? 0);\n totals.linkClicks += Number(row.inline_link_clicks ?? 0);\n totals.results += resultsOf(row.actions);\n }\n return diagnoseBottleneck(totals);\n}\n\nfunction leanCreative(c: CreativePerformance) {\n return {\n creative: c.slug ?? c.title,\n costPerResult: c.costPerResult,\n ...(c.currency ? { currency: c.currency } : {}),\n ctr: c.ctr,\n fatigue: c.fatigue,\n ...(c.definition?.idea ? { idea: c.definition.idea } : {}),\n ...(c.definition?.angle ? { angle: c.definition.angle } : {}),\n };\n}\n\n/** The own-account read: the best creatives by cost per result, and the ones to replace. Pure. */\nexport function whatWorks(creatives: readonly CreativePerformance[], limit = 3) {\n const priced = creatives.filter((c) => c.costPerResult !== null && c.costPerResult > 0);\n const best = [...priced].sort((a, b) => (a.costPerResult ?? 0) - (b.costPerResult ?? 0)).slice(0, limit);\n const tired = creatives.filter((c) => c.fatigue === \"fatigued\" || c.fatigue === \"dead\");\n return { best: best.map(leanCreative), replace: tired.map(leanCreative) };\n}\n\ntype BriefParts = {\n company: \"ready\" | \"missing\";\n customers: CustomerTruth;\n bottleneck: Section<Bottleneck> | null;\n ideasToBuild: number;\n buildNext: string[];\n approved: number;\n rejected: number;\n market?: MarketMap | null;\n /** What earlier ideas did once their ads ran (`baker creatives learn`). */\n learned: { winners: LearnedIdea[]; failed: LearnedIdea[] };\n /** The customer research this brief ran itself, few quotes being on file. */\n researched?: { written: number };\n /** How many of the company's rules hold for its ads (`rules`). */\n rules?: number;\n};\n\ntype LearnedIdea = { idea: string; message: string };\n\n/** A market whose ads mostly speak at stage s3 or later has heard the plain claim already. */\nconst HEARD_IT_ALL = /^s[345]/;\n\n/** What the brief says about customer quotes: what its own research found, or that it is needed. Pure. */\nfunction customersHint(parts: Pick<BriefParts, \"customers\" | \"researched\">): string | null {\n if (parts.researched) {\n return parts.researched.written > 0\n ? `${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\\`.`\n : \"Customer research found nothing to keep: ideas go in as explore bets (an empty `evidence` list). Never research customers again in this turn.\";\n }\n if (!parts.customers.thin) return null;\n 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.`;\n}\n\n/** The one or two next steps the brief points to. Pure. */\nexport function briefHints(parts: BriefParts): string[] {\n const hints: string[] = [];\n if (parts.company === \"missing\") {\n hints.push(\"COMPANY.md is empty: run /company-discovery first, or every idea is a guess about the business.\");\n }\n const customers = customersHint(parts);\n if (customers) hints.push(customers);\n if (parts.rules) {\n hints.push(\n `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>\"}]\\`).`,\n );\n }\n if (parts.bottleneck && isAvailable(parts.bottleneck) && parts.bottleneck.verdict === \"after_click\") {\n hints.push(\"The account loses people after the click: tell the person, and make one idea an offer idea.\");\n }\n if (parts.market?.sophistication && HEARD_IT_ALL.test(parts.market.sophistication)) {\n hints.push(\n `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.`,\n );\n }\n // Every claim, not only the ones several brands share word for word: the same claim is often worded apart.\n // A claim kept after testing is one a competitor proved, not only launched: labelled, it leads.\n const claims =\n parts.market?.saying.map((s) =>\n s.kept_brands ? `\"${s.angle}\" (kept after testing by ${s.kept_brands})` : `\"${s.angle}\"`,\n ) ?? [];\n if (claims.length > 0) {\n hints.push(\n `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.`,\n );\n }\n for (const won of parts.learned.winners) {\n hints.push(\n `${won.idea} won in the account (\"${won.message}\"): build on it first, the same message in a new format or for a new persona.`,\n );\n }\n if (parts.learned.failed.length > 0) {\n const lost = parts.learned.failed.map((f) => `\"${f.message}\"`).join(\", \");\n hints.push(`Never repeat a message that lost in the account: ${lost}.`);\n }\n if (parts.rejected > parts.approved && parts.rejected > 0) {\n hints.push(\n \"Reviewers rejected more than they approved: read `taste.notes` (their own words) and keep every idea clear of each.\",\n );\n }\n if (parts.buildNext.length > 0) {\n hints.push(`Ideas ready to build: ${parts.buildNext.join(\", \")} (\\`baker creatives make <idea>\\`).`);\n } else {\n hints.push(\n `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(\", \")}.`,\n );\n }\n return hints;\n}\n\ntype BriefArgs = { adset?: string; accountId?: string; full: boolean };\n\nasync function readBrief(root: string, args: BriefArgs) {\n // Every read starts at once: the account's diagnosis waits only for the account, never for the rest.\n const account = metaAccountId(args.accountId).catch(() => null);\n const [company, offers, viewer, insights, ideas, performance, feedback, accountId, bottleneck, market, rules, specs] =\n await Promise.all([\n companyStatus(root),\n readOffers(root),\n readViewer(root, args.adset),\n readInsights(root),\n ideasReport(root),\n section(async () =>\n withDefinitions(await apiPost<CreativesPerformanceResponse>(\"/api/creatives/performance\", {}), (slug) =>\n readDefinition(root, slug),\n ),\n ),\n section(() => apiPost<CreativesFeedbackResponse>(\"/api/creatives/feedback\", {})),\n account,\n account.then((id) => (id ? section(() => readBottleneck(id)) : null)),\n section(() => readMarket(root)),\n readAllRules(root).then((all) => selectRules(all, {})),\n readCreativeSpecs(root),\n ]);\n return {\n company,\n offers,\n viewer,\n insights,\n ideas,\n performance,\n feedback,\n accountId,\n bottleneck,\n market,\n rules,\n specs,\n };\n}\n\ntype Brief = Awaited<ReturnType<typeof readBrief>>;\n\nfunction accountPart(brief: Brief, full: boolean) {\n if (!brief.accountId) {\n return { unavailable: \"no single Meta ad account connected: pass --account-id act_<id>, or work from customers\" };\n }\n const works = isAvailable(brief.performance)\n ? whatWorks(brief.performance.data.creatives, full ? 10 : 3)\n : { creatives: brief.performance };\n return { id: brief.accountId, bottleneck: brief.bottleneck, ...works };\n}\n\nfunction marketPart(market: Section<MarketMap | null>, full: boolean) {\n if (!isAvailable(market)) return market;\n if (!market) return { unavailable: \"no library ads match what COMPANY.md says the company sells\" };\n if (full) return market;\n const { containers: _containers, ...lean } = market;\n return lean;\n}\n\n/** What the company's reviewers said: the counts, and each distinct thing they said in their own words. Pure. */\nexport function tastePart(feedback: CreativesFeedbackResponse) {\n const { summary, notes } = feedback.data;\n return {\n approved: summary.approved,\n rejected: summary.rejected,\n topRejectionReasons: summary.topRejectionReasons.slice(0, 3).map((r) => r.label),\n ...(notes && notes.length > 0 ? { notes: notes.map((n) => ({ creative: n.creative, note: n.note })) } : {}),\n };\n}\n\n/** The brief as the agent reads it, and the hints that point at the next step. */\nexport function briefEnvelope(brief: Brief, full: boolean, researched?: { written: number }) {\n const customers = customerTruth(brief.insights);\n const summary = isAvailable(brief.feedback) ? brief.feedback.data.summary : null;\n const next = buildNext(brief.ideas.ideas);\n const toBuild = brief.ideas.ideas.filter((i) => i.status === \"idea\").length;\n const withStatus = (status: string) =>\n brief.ideas.ideas.filter((i) => i.status === status).map((i) => ({ idea: i.id, message: i.message }));\n const learned = { winners: withStatus(\"winner\"), failed: withStatus(\"failed\") };\n return {\n ok: true as const,\n data: {\n company: brief.company,\n viewer: { temperature: brief.viewer.temperature, knows: brief.viewer.knows, source: brief.viewer.source },\n offers: brief.offers,\n account: accountPart(brief, full),\n taste: isAvailable(brief.feedback) ? tastePart(brief.feedback) : brief.feedback,\n customers: full\n ? { ...customers, quotes: brief.insights.map((i) => ({ id: i.id, type: i.type, quote: i.quote })) }\n : customers,\n market: marketPart(brief.market, full),\n rules: rulesView(brief.rules, { full }),\n ideas: {\n to_build: toBuild,\n built: brief.ideas.ideas.length - toBuild,\n build_next: next,\n ...(learned.winners.length > 0 ? { winners: learned.winners } : {}),\n ...(learned.failed.length > 0 ? { failed: learned.failed } : {}),\n },\n },\n hints: briefHints({\n company: brief.company,\n customers,\n bottleneck: brief.bottleneck,\n ideasToBuild: toBuild,\n buildNext: next,\n approved: summary?.approved ?? 0,\n rejected: summary?.rejected ?? 0,\n market: isAvailable(brief.market) ? brief.market : null,\n learned,\n ...(researched ? { researched } : {}),\n rules: brief.rules.length,\n }).concat(rulesHints(brief.rules, waiverCounts(brief.specs))),\n };\n}\n\nexport const briefCommand = defineCommand({\n meta: { name: \"brief\", description: DESCRIPTION },\n args: ARGS,\n async run({ args }) {\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const full = args.full === true;\n // Few quotes on file: the research runs alongside the reads, never left to the agent (dev, Oct\n // 2026: told to run it first, the chat agent skipped it and every idea went in as an explore bet).\n const thin = args.research !== false && customerTruth(await readInsights(root)).thin;\n const research = thin ? researchCustomers(root, {}).catch(() => null) : null;\n const brief = await readBrief(root, {\n ...(typeof args.adset === \"string\" && args.adset ? { adset: args.adset } : {}),\n ...(typeof args[\"account-id\"] === \"string\" && args[\"account-id\"] ? { accountId: args[\"account-id\"] } : {}),\n full,\n });\n const found = research ? await research : null;\n const written = found?.shown.length ?? 0;\n const insights = written > 0 ? await readInsights(root) : brief.insights;\n writeJson(briefEnvelope({ ...brief, insights }, full, research ? { written } : undefined));\n },\n});\n","/**\n * The judgments `baker creatives brief` makes from the numbers, so the agent reads a verdict\n * instead of applying thresholds from prose. Pure.\n */\nimport { AWARENESS_STAGES, type Insight } from \"./ideas-model.ts\";\n\n/** Below this many impressions the account has not said anything yet. */\nconst MIN_IMPRESSIONS = 1000;\n/** meta-ads-playbook 17-testing-methodology § \"Bottleneck identification\". */\nconst LOW_CTR = 1.5;\nconst LOW_CVR = 1;\n\nexport type Bottleneck = {\n verdict: \"hook\" | \"after_click\" | \"none\" | \"too_little_data\";\n ctr: number | null;\n cvr: number | null;\n why: string;\n};\n\nconst round = (n: number) => Math.round(n * 100) / 100;\n\n/** Where the account loses people: before the click (the hook), after it (page or offer), or nowhere. */\nexport function diagnoseBottleneck(totals: { impressions: number; linkClicks: number; results: number }): Bottleneck {\n const ctr = totals.impressions > 0 ? round((totals.linkClicks / totals.impressions) * 100) : null;\n const cvr = totals.linkClicks > 0 ? round((totals.results / totals.linkClicks) * 100) : null;\n if (totals.impressions < MIN_IMPRESSIONS || ctr === null) {\n return { verdict: \"too_little_data\", ctr, cvr, why: \"Too little delivery in the last 30 days to call it.\" };\n }\n if (ctr < LOW_CTR) {\n return {\n verdict: \"hook\",\n ctr,\n cvr,\n why: `Link click-through ${ctr}% (under ${LOW_CTR}%): people scroll past. New ideas and hooks are the fix.`,\n };\n }\n if (cvr !== null && cvr < LOW_CVR) {\n return {\n verdict: \"after_click\",\n ctr,\n cvr,\n 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.`,\n };\n }\n return {\n verdict: \"none\",\n ctr,\n cvr,\n why: `Click-through ${ctr}% and ${cvr ?? 0}% of clicks act: the ads work. Build on the winners first.`,\n };\n}\n\nconst CONVERSION_ACTION =\n /^(lead|purchase|complete_registration|submit_application|schedule|contact|start_trial|subscribe|offsite_conversion\\.|onsite_conversion\\.lead|onsite_web_lead|omni_purchase|omni_complete_registration)/;\n\n/** The conversions in a Meta `actions[]` list, engagement left out. */\nexport function resultsOf(actions: unknown): number {\n if (!Array.isArray(actions)) return 0;\n let total = 0;\n for (const action of actions) {\n const type = (action as { action_type?: unknown })?.action_type;\n const value = Number((action as { value?: unknown })?.value ?? 0);\n if (typeof type === \"string\" && CONVERSION_ACTION.test(type) && Number.isFinite(value)) total += value;\n }\n return total;\n}\n\nconst MIN_OBSERVED = 5;\nconst MAX_QUOTES = 6;\n\nexport type CustomerTruth = {\n total: number;\n observed: number;\n thin: boolean;\n byType: Record<string, number>;\n /** One observed quote per kind of truth, the strongest material for ideas and hooks. */\n quotes: Array<{ id: string; type: string; quote: string }>;\n};\n\nexport function customerTruth(insights: readonly Insight[]): CustomerTruth {\n const byType: Record<string, number> = {};\n for (const insight of insights) byType[insight.type] = (byType[insight.type] ?? 0) + 1;\n const observed = insights.filter((i) => i.status === \"observed\");\n const seen = new Set<string>();\n const quotes: CustomerTruth[\"quotes\"] = [];\n for (const insight of observed) {\n if (seen.has(insight.type) || quotes.length >= MAX_QUOTES) continue;\n seen.add(insight.type);\n quotes.push({\n id: insight.id,\n type: insight.type,\n quote: insight.quote.length > 140 ? `${insight.quote.slice(0, 137)}...` : insight.quote,\n });\n }\n return { total: insights.length, observed: observed.length, thin: observed.length < MIN_OBSERVED, byType, quotes };\n}\n\n/**\n * One library ad as the market map reads it: whose it is, what its DNA says,\n * and where it is in its life (`stage`, and `survived_test` when it is the\n * version its brand kept after testing).\n */\nexport type MarketAd = {\n advertiser: string | null;\n stage?: string | null;\n survived_test?: boolean | null;\n dna: {\n angle?: string | null;\n awareness_stage?: string | null;\n container?: string | null;\n sophistication_stage?: string | null;\n };\n};\n\nexport type MarketMap = {\n source: \"followed\" | \"library\";\n ads: number;\n brands: number;\n /** The stage most of the market's ads speak at: s1 first to say it … s5 tired of claims. */\n sophistication: string | null;\n /**\n * What the market already says: an idea that says the same is not a new idea. What competitors\n * kept after testing leads (`kept_brands`: how many brands kept an ad saying it), then most brands.\n */\n saying: Array<{ angle: string; brands: number; kept_brands?: number }>;\n /** How many of these ads competitors kept after testing; absent when none (or an older library). */\n kept_ads?: number;\n awareness: Record<string, number>;\n containers: Record<string, number>;\n /** Awareness stages none of these ads speaks to. */\n unspoken: string[];\n};\n\nconst MAX_SAYING = 6;\nconst KEPT_STAGES = new Set([\"proven\", \"evergreen\"]);\n\n/** What a competitor kept after testing: the version a test kept, or an ad running past its test window. */\nexport function keptAfterTesting(ad: Pick<MarketAd, \"stage\" | \"survived_test\">): boolean {\n return ad.survived_test === true || KEPT_STAGES.has(ad.stage ?? \"\");\n}\n/** Two angles sharing this share of their content words say the same thing. */\nconst SAME_ANGLE = 0.4;\n\n/** An angle's content words: 4+ letters, a plural folded to its singular. */\nfunction angleWords(angle: string): Set<string> {\n return new Set(\n angle\n .toLowerCase()\n .split(/[^\\p{L}]+/u)\n .filter((w) => w.length >= 4 && w !== \"your\" && w !== \"with\")\n .map((w) => w.replace(/s$/, \"\")),\n );\n}\n\n/** Shared words over all words (Jaccard). */\nfunction overlap(a: ReadonlySet<string>, b: ReadonlySet<string>): number {\n const shared = [...a].filter((w) => b.has(w)).length;\n const all = new Set([...a, ...b]).size;\n return all === 0 ? 0 : shared / all;\n}\n\nfunction tally(values: ReadonlyArray<string | null | undefined>): Record<string, number> {\n const counts: Record<string, number> = {};\n for (const value of values) if (value) counts[value] = (counts[value] ?? 0) + 1;\n return counts;\n}\n\n/** What the market's ads already say and to whom, from a library search over it. Pure. */\nexport function marketMap(ads: readonly MarketAd[], source: MarketMap[\"source\"]): MarketMap {\n const groups: Array<{ angle: string; words: Set<string>; brands: Set<string>; kept: Set<string> }> = [];\n for (const ad of ads) {\n const angle = ad.dna.angle?.trim();\n if (!angle) continue;\n const words = angleWords(angle);\n const brand = ad.advertiser ?? \"?\";\n let group = groups.find((g) => overlap(g.words, words) >= SAME_ANGLE);\n if (!group) {\n group = { angle, words, brands: new Set(), kept: new Set() };\n groups.push(group);\n }\n group.brands.add(brand);\n if (keptAfterTesting(ad)) group.kept.add(brand);\n }\n const saying = groups\n .map((g) => ({ angle: g.angle, brands: g.brands.size, ...(g.kept.size > 0 ? { kept_brands: g.kept.size } : {}) }))\n .sort((a, b) => (b.kept_brands ?? 0) - (a.kept_brands ?? 0) || b.brands - a.brands)\n .slice(0, MAX_SAYING);\n const keptAds = ads.filter(keptAfterTesting).length;\n const stages = tally(ads.map((a) => a.dna.sophistication_stage));\n const sophistication = Object.entries(stages).sort((a, b) => b[1] - a[1])[0]?.[0] ?? null;\n const awareness = tally(ads.map((a) => a.dna.awareness_stage));\n return {\n source,\n ads: ads.length,\n brands: new Set(ads.map((a) => a.advertiser ?? \"?\")).size,\n sophistication,\n saying,\n awareness,\n containers: tally(ads.map((a) => a.dna.container)),\n unspoken: AWARENESS_STAGES.filter((stage) => !awareness[stage]),\n ...(keptAds > 0 ? { kept_ads: keptAds } : {}),\n };\n}\n"],"mappings":"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","names":["id"]}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
csvOrJson,
|
|
3
|
-
handleLinkedinError,
|
|
4
|
-
resolveAccountIdArg,
|
|
5
|
-
resolveStatusFilter,
|
|
6
|
-
statusesArgDescription
|
|
7
|
-
} from "./chunk-PFTYKINE.js";
|
|
8
|
-
import {
|
|
9
|
-
writeAdsJson,
|
|
10
|
-
writeAdsOutput
|
|
11
|
-
} from "./chunk-ZRP7Y2DM.js";
|
|
12
|
-
import {
|
|
13
|
-
NO_CACHE_ARG
|
|
14
|
-
} from "./chunk-AGBBTTKA.js";
|
|
15
|
-
import "./chunk-ZNNQK366.js";
|
|
16
|
-
import "./chunk-CAZGM2NX.js";
|
|
17
|
-
import "./chunk-NZS3KEQ2.js";
|
|
18
|
-
import "./chunk-GIWHHCD6.js";
|
|
19
|
-
import "./chunk-NSBNIPIW.js";
|
|
20
|
-
import "./chunk-2TOIY2WN.js";
|
|
21
|
-
import {
|
|
22
|
-
apiGet
|
|
23
|
-
} from "./chunk-X7VQFLHI.js";
|
|
24
|
-
import "./chunk-LU4HI4KI.js";
|
|
25
|
-
import "./chunk-LGK7UWBN.js";
|
|
26
|
-
import "./chunk-Q7US4OOA.js";
|
|
27
|
-
import "./chunk-YQSBHWOI.js";
|
|
28
|
-
|
|
29
|
-
// src/commands/ads/linkedin/campaign-groups.ts
|
|
30
|
-
import { defineCommand } from "citty";
|
|
31
|
-
var listArgs = {
|
|
32
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
33
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
34
|
-
"all-statuses": { type: "boolean", description: "Drop the default ACTIVE filter" },
|
|
35
|
-
statuses: { type: "string", description: statusesArgDescription("campaignGroups") },
|
|
36
|
-
limit: { type: "string", description: "Max rows (default: 500)" },
|
|
37
|
-
"no-cache": NO_CACHE_ARG,
|
|
38
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
|
|
39
|
-
};
|
|
40
|
-
var campaignGroupsListCommand = defineCommand({
|
|
41
|
-
meta: {
|
|
42
|
-
name: "list",
|
|
43
|
-
description: "List LinkedIn campaign groups. Runs by default when no subcommand is given."
|
|
44
|
-
},
|
|
45
|
-
args: listArgs,
|
|
46
|
-
run: async ({ args }) => {
|
|
47
|
-
const accountId = resolveAccountIdArg(args);
|
|
48
|
-
try {
|
|
49
|
-
const params = { "account-id": accountId };
|
|
50
|
-
const statuses = resolveStatusFilter(args, "campaignGroups");
|
|
51
|
-
if (statuses) params.statuses = statuses.join(",");
|
|
52
|
-
if (args.limit) params.limit = String(args.limit);
|
|
53
|
-
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
54
|
-
const data = await apiGet("/api/ads/linkedin/campaign-groups", params);
|
|
55
|
-
const fmt = csvOrJson(args);
|
|
56
|
-
if (fmt !== "json") {
|
|
57
|
-
writeAdsOutput(data, fmt);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
writeAdsJson({ ok: true, data });
|
|
61
|
-
} catch (err) {
|
|
62
|
-
handleLinkedinError(err);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
var campaignGroupsCommand = defineCommand({
|
|
67
|
-
meta: {
|
|
68
|
-
name: "campaign-groups",
|
|
69
|
-
description: `List LinkedIn campaign groups, or stage writes (create/update/pause/resume/duplicate).
|
|
70
|
-
|
|
71
|
-
Default: ACTIVE only. Pass --all-statuses to widen, or --statuses ACTIVE,PAUSED to override.
|
|
72
|
-
Write subcommands stage ops on this chat's draft and apply only when the chat is published.
|
|
73
|
-
|
|
74
|
-
Examples:
|
|
75
|
-
baker ads linkedin campaign-groups --account-id 503001492
|
|
76
|
-
baker ads linkedin campaign-groups --account-id 503001492 --all-statuses
|
|
77
|
-
baker ads linkedin campaign-groups create --name "Q3 ABM" --start 2026-07-10 --total-budget 5000 --currency EUR`
|
|
78
|
-
},
|
|
79
|
-
subCommands: {
|
|
80
|
-
list: campaignGroupsListCommand,
|
|
81
|
-
create: () => import("./write-commands-VPU53DLB.js").then((m) => m.campaignGroupsCreateCommand),
|
|
82
|
-
update: () => import("./write-commands-VPU53DLB.js").then((m) => m.campaignGroupsUpdateCommand),
|
|
83
|
-
pause: () => import("./write-commands-VPU53DLB.js").then((m) => m.campaignGroupsPauseCommand),
|
|
84
|
-
resume: () => import("./write-commands-VPU53DLB.js").then((m) => m.campaignGroupsResumeCommand),
|
|
85
|
-
duplicate: () => import("./write-commands-VPU53DLB.js").then((m) => m.campaignGroupsDuplicateCommand),
|
|
86
|
-
delete: () => import("./write-commands-VPU53DLB.js").then((m) => m.campaignGroupsDeleteCommand)
|
|
87
|
-
},
|
|
88
|
-
// A parent must never declare `run`: citty falls through to it *after* running
|
|
89
|
-
// the matched subcommand, so every write would also trigger a full live list.
|
|
90
|
-
// `args` stays here so citty's subcommand scan knows which flags take a value.
|
|
91
|
-
args: listArgs,
|
|
92
|
-
default: "list"
|
|
93
|
-
});
|
|
94
|
-
export {
|
|
95
|
-
campaignGroupsCommand
|
|
96
|
-
};
|
|
97
|
-
//# sourceMappingURL=campaign-groups-TTQLP32Q.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/campaign-groups.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport {\n csvOrJson,\n handleLinkedinError,\n resolveAccountIdArg,\n resolveStatusFilter,\n statusesArgDescription,\n} from \"./shared.ts\";\n\ninterface LinkedinCampaignGroupRow {\n id: string;\n urn: string;\n account: string;\n name?: string;\n status?: string;\n test?: boolean;\n totalBudget?: { amount?: string; currencyCode?: string };\n runSchedule?: { start?: number; end?: number };\n}\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n \"all-statuses\": { type: \"boolean\", description: \"Drop the default ACTIVE filter\" },\n statuses: { type: \"string\", description: statusesArgDescription(\"campaignGroups\") },\n limit: { type: \"string\", description: \"Max rows (default: 500)\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n} as const;\n\nconst campaignGroupsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"List LinkedIn campaign groups. Runs by default when no subcommand is given.\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n const statuses = resolveStatusFilter(args, \"campaignGroups\");\n if (statuses) params.statuses = statuses.join(\",\");\n if (args.limit) params.limit = String(args.limit);\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n\n const data = await apiGet<LinkedinCampaignGroupRow[]>(\"/api/ads/linkedin/campaign-groups\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data as unknown as Array<Record<string, unknown>>, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n\nexport const campaignGroupsCommand = defineCommand({\n meta: {\n name: \"campaign-groups\",\n description: `List LinkedIn campaign groups, or stage writes (create/update/pause/resume/duplicate).\n\nDefault: ACTIVE only. Pass --all-statuses to widen, or --statuses ACTIVE,PAUSED to override.\nWrite subcommands stage ops on this chat's draft and apply only when the chat is published.\n\nExamples:\n baker ads linkedin campaign-groups --account-id 503001492\n baker ads linkedin campaign-groups --account-id 503001492 --all-statuses\n baker ads linkedin campaign-groups create --name \"Q3 ABM\" --start 2026-07-10 --total-budget 5000 --currency EUR`,\n },\n subCommands: {\n list: campaignGroupsListCommand,\n create: () => import(\"./write-commands.ts\").then((m) => m.campaignGroupsCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.campaignGroupsUpdateCommand),\n pause: () => import(\"./write-commands.ts\").then((m) => m.campaignGroupsPauseCommand),\n resume: () => import(\"./write-commands.ts\").then((m) => m.campaignGroupsResumeCommand),\n duplicate: () => import(\"./write-commands.ts\").then((m) => m.campaignGroupsDuplicateCommand),\n delete: () => import(\"./write-commands.ts\").then((m) => m.campaignGroupsDeleteCommand),\n },\n // A parent must never declare `run`: citty falls through to it *after* running\n // the matched subcommand, so every write would also trigger a full live list.\n // `args` stays here so citty's subcommand scan knows which flags take a value.\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAuB9B,IAAM,WAAW;AAAA,EACf,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,EAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,EACvE,gBAAgB,EAAE,MAAM,WAAW,aAAa,iCAAiC;AAAA,EACjF,UAAU,EAAE,MAAM,UAAU,aAAa,uBAAuB,gBAAgB,EAAE;AAAA,EAClF,OAAO,EAAE,MAAM,UAAU,aAAa,0BAA0B;AAAA,EAChE,YAAY;AAAA,EACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,qBAAqB,SAAS,OAAO;AAC9E;AAEA,IAAM,4BAA4B,cAAc;AAAA,EAC9C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,YAAM,WAAW,oBAAoB,MAAM,gBAAgB;AAC3D,UAAI,SAAU,QAAO,WAAW,SAAS,KAAK,GAAG;AACjD,UAAI,KAAK,MAAO,QAAO,QAAQ,OAAO,KAAK,KAAK;AAChD,UAAI,KAAK,UAAU,EAAG,QAAO,YAAY,IAAI;AAE7C,YAAM,OAAO,MAAM,OAAmC,qCAAqC,MAAM;AACjG,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,MAAmD,GAAG;AACrE;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,wBAAwB,cAAc;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,2BAA2B;AAAA,IACrF,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,2BAA2B;AAAA,IACrF,OAAO,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,0BAA0B;AAAA,IACnF,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,2BAA2B;AAAA,IACrF,WAAW,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,8BAA8B;AAAA,IAC3F,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,2BAA2B;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA,EAIA,MAAM;AAAA,EACN,SAAS;AACX,CAAC;","names":[]}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
compact,
|
|
3
|
-
microsFromArg,
|
|
4
|
-
requireTarget,
|
|
5
|
-
requireTargets,
|
|
6
|
-
stageAccountId,
|
|
7
|
-
stageXOp,
|
|
8
|
-
stageXOps
|
|
9
|
-
} from "./chunk-RAQHUMKS.js";
|
|
10
|
-
import "./chunk-FIN4ZXGJ.js";
|
|
11
|
-
import "./chunk-7NF73SCB.js";
|
|
12
|
-
import "./chunk-ZRP7Y2DM.js";
|
|
13
|
-
import "./chunk-ZNNQK366.js";
|
|
14
|
-
import "./chunk-CAZGM2NX.js";
|
|
15
|
-
import "./chunk-NZS3KEQ2.js";
|
|
16
|
-
import "./chunk-GIWHHCD6.js";
|
|
17
|
-
import "./chunk-NSBNIPIW.js";
|
|
18
|
-
import "./chunk-2TOIY2WN.js";
|
|
19
|
-
import "./chunk-X7VQFLHI.js";
|
|
20
|
-
import "./chunk-LU4HI4KI.js";
|
|
21
|
-
import "./chunk-LGK7UWBN.js";
|
|
22
|
-
import {
|
|
23
|
-
registerSchema
|
|
24
|
-
} from "./chunk-Q7US4OOA.js";
|
|
25
|
-
import "./chunk-YQSBHWOI.js";
|
|
26
|
-
|
|
27
|
-
// src/commands/ads/x/campaign-writes.ts
|
|
28
|
-
import { defineCommand } from "citty";
|
|
29
|
-
var BUDGET_ARGS = {
|
|
30
|
-
"daily-budget": { type: "string", description: "Daily budget in account currency, e.g. 12.50" },
|
|
31
|
-
"total-budget": { type: "string", description: "Lifetime budget in account currency \u2014 must exceed the daily budget" }
|
|
32
|
-
};
|
|
33
|
-
registerSchema({
|
|
34
|
-
command: "ads.x.campaigns.create",
|
|
35
|
-
description: "Stage a new X campaign on this chat's draft. Needs a funding instrument (`baker ads x funding`). Defaults to PAUSED \u2014 an ACTIVE campaign starts spending the moment the chat publishes.",
|
|
36
|
-
args: {
|
|
37
|
-
"account-id": { type: "string", description: "X Ads account ID", required: false },
|
|
38
|
-
name: { type: "string", description: "Campaign name", required: true },
|
|
39
|
-
"funding-instrument-id": { type: "string", description: "From `baker ads x funding`", required: true },
|
|
40
|
-
status: { type: "string", description: "ACTIVE | PAUSED | DRAFT (default PAUSED)", required: false },
|
|
41
|
-
"daily-budget": { type: "string", description: "Daily budget in account currency", required: false },
|
|
42
|
-
"total-budget": { type: "string", description: "Lifetime budget in account currency", required: false },
|
|
43
|
-
"budget-optimization": { type: "string", description: "CAMPAIGN | LINE_ITEM", required: false }
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
var campaignsCreateCommand = defineCommand({
|
|
47
|
-
meta: {
|
|
48
|
-
name: "create",
|
|
49
|
-
description: `Stage a new campaign (applies when the chat is published).
|
|
50
|
-
|
|
51
|
-
Examples:
|
|
52
|
-
baker ads x campaigns create --name "zz-baker-harness" --funding-instrument-id vtbot --daily-budget 5`
|
|
53
|
-
},
|
|
54
|
-
args: {
|
|
55
|
-
"account-id": { type: "string", description: "X Ads account ID" },
|
|
56
|
-
name: { type: "string", description: "Campaign name", required: true },
|
|
57
|
-
"funding-instrument-id": { type: "string", description: "Funding instrument id", required: true },
|
|
58
|
-
status: { type: "string", description: "ACTIVE | PAUSED | DRAFT (default PAUSED)" },
|
|
59
|
-
...BUDGET_ARGS,
|
|
60
|
-
"budget-optimization": { type: "string", description: "CAMPAIGN | LINE_ITEM" }
|
|
61
|
-
},
|
|
62
|
-
run: async ({ args }) => {
|
|
63
|
-
const accountId = await stageAccountId(args);
|
|
64
|
-
await stageXOp({
|
|
65
|
-
kind: "campaign.create",
|
|
66
|
-
accountId,
|
|
67
|
-
payload: compact({
|
|
68
|
-
name: args.name,
|
|
69
|
-
fundingInstrumentId: args["funding-instrument-id"],
|
|
70
|
-
entityStatus: args.status,
|
|
71
|
-
budgetOptimization: args["budget-optimization"],
|
|
72
|
-
dailyBudgetAmountLocalMicro: microsFromArg(args["daily-budget"], "--daily-budget"),
|
|
73
|
-
totalBudgetAmountLocalMicro: microsFromArg(args["total-budget"], "--total-budget")
|
|
74
|
-
})
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
registerSchema({
|
|
79
|
-
command: "ads.x.campaigns.update",
|
|
80
|
-
description: "Stage a change to an existing X campaign. Staging the same campaign twice amends the staged change in place rather than queueing two writes.",
|
|
81
|
-
args: {
|
|
82
|
-
id: { type: "positional", description: "Campaign id", required: true },
|
|
83
|
-
"account-id": { type: "string", description: "X Ads account ID", required: false },
|
|
84
|
-
name: { type: "string", description: "New name", required: false },
|
|
85
|
-
status: { type: "string", description: "ACTIVE | PAUSED", required: false },
|
|
86
|
-
"daily-budget": { type: "string", description: "Daily budget in account currency", required: false },
|
|
87
|
-
"total-budget": { type: "string", description: "Lifetime budget in account currency", required: false },
|
|
88
|
-
"budget-optimization": { type: "string", description: "CAMPAIGN | LINE_ITEM", required: false }
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
var campaignsUpdateCommand = defineCommand({
|
|
92
|
-
meta: {
|
|
93
|
-
name: "update",
|
|
94
|
-
description: `Stage a change to a campaign.
|
|
95
|
-
|
|
96
|
-
Examples:
|
|
97
|
-
baker ads x campaigns update oilf0 --daily-budget 20
|
|
98
|
-
baker ads x campaigns update oilf0 --name "Spring push"`
|
|
99
|
-
},
|
|
100
|
-
args: {
|
|
101
|
-
id: { type: "positional", description: "Campaign id", required: true },
|
|
102
|
-
"account-id": { type: "string", description: "X Ads account ID" },
|
|
103
|
-
name: { type: "string", description: "New name" },
|
|
104
|
-
status: { type: "string", description: "ACTIVE | PAUSED" },
|
|
105
|
-
...BUDGET_ARGS,
|
|
106
|
-
"budget-optimization": { type: "string", description: "CAMPAIGN | LINE_ITEM" }
|
|
107
|
-
},
|
|
108
|
-
run: async ({ args }) => {
|
|
109
|
-
const accountId = await stageAccountId(args);
|
|
110
|
-
await stageXOp({
|
|
111
|
-
kind: "campaign.update",
|
|
112
|
-
accountId,
|
|
113
|
-
target: requireTarget(args, "id"),
|
|
114
|
-
payload: compact({
|
|
115
|
-
name: args.name,
|
|
116
|
-
entityStatus: args.status,
|
|
117
|
-
budgetOptimization: args["budget-optimization"],
|
|
118
|
-
dailyBudgetAmountLocalMicro: microsFromArg(args["daily-budget"], "--daily-budget"),
|
|
119
|
-
totalBudgetAmountLocalMicro: microsFromArg(args["total-budget"], "--total-budget")
|
|
120
|
-
})
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
function statusCommand(name, status) {
|
|
125
|
-
registerSchema({
|
|
126
|
-
command: `ads.x.campaigns.${name}`,
|
|
127
|
-
description: `Stage ${name === "pause" ? "a pause" : "a resume"} for one or more X campaigns. Pass every id in one call.`,
|
|
128
|
-
args: {
|
|
129
|
-
ids: { type: "positional", description: "Campaign ids, comma-separated", required: true },
|
|
130
|
-
"account-id": { type: "string", description: "X Ads account ID", required: false }
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
return defineCommand({
|
|
134
|
-
meta: {
|
|
135
|
-
name,
|
|
136
|
-
description: `Stage ${name === "pause" ? "pausing" : "resuming"} campaigns.
|
|
137
|
-
|
|
138
|
-
Example:
|
|
139
|
-
baker ads x campaigns ${name} oilf0,omyq3`
|
|
140
|
-
},
|
|
141
|
-
args: {
|
|
142
|
-
ids: { type: "positional", description: "Campaign ids, comma-separated", required: true },
|
|
143
|
-
"account-id": { type: "string", description: "X Ads account ID" }
|
|
144
|
-
},
|
|
145
|
-
run: async ({ args }) => {
|
|
146
|
-
const accountId = await stageAccountId(args);
|
|
147
|
-
await stageXOps(
|
|
148
|
-
requireTargets(args, "ids").map((id) => ({
|
|
149
|
-
kind: "campaign.update",
|
|
150
|
-
accountId,
|
|
151
|
-
target: id,
|
|
152
|
-
payload: { entityStatus: status }
|
|
153
|
-
}))
|
|
154
|
-
);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
var campaignsPauseCommand = statusCommand("pause", "PAUSED");
|
|
159
|
-
var campaignsResumeCommand = statusCommand("resume", "ACTIVE");
|
|
160
|
-
export {
|
|
161
|
-
campaignsCreateCommand,
|
|
162
|
-
campaignsPauseCommand,
|
|
163
|
-
campaignsResumeCommand,
|
|
164
|
-
campaignsUpdateCommand
|
|
165
|
-
};
|
|
166
|
-
//# sourceMappingURL=campaign-writes-MAKPHQ3V.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/x/campaign-writes.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport {\n compact,\n microsFromArg,\n requireTarget,\n requireTargets,\n stageAccountId,\n stageXOp,\n stageXOps,\n} from \"./write-shared.ts\";\n\n/**\n * Staged campaign writes. Nothing here calls X: each command appends an op to\n * this chat's draft, which applies when the chat publishes.\n */\n\nconst BUDGET_ARGS = {\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency, e.g. 12.50\" },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency — must exceed the daily budget\" },\n} as const;\n\nregisterSchema({\n command: \"ads.x.campaigns.create\",\n description:\n \"Stage a new X campaign on this chat's draft. Needs a funding instrument (`baker ads x funding`). Defaults to PAUSED — an ACTIVE campaign starts spending the moment the chat publishes.\",\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n name: { type: \"string\", description: \"Campaign name\", required: true },\n \"funding-instrument-id\": { type: \"string\", description: \"From `baker ads x funding`\", required: true },\n status: { type: \"string\", description: \"ACTIVE | PAUSED | DRAFT (default PAUSED)\", required: false },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency\", required: false },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency\", required: false },\n \"budget-optimization\": { type: \"string\", description: \"CAMPAIGN | LINE_ITEM\", required: false },\n },\n});\n\nexport const campaignsCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a new campaign (applies when the chat is published).\n\nExamples:\n baker ads x campaigns create --name \"zz-baker-harness\" --funding-instrument-id vtbot --daily-budget 5`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\" },\n name: { type: \"string\", description: \"Campaign name\", required: true },\n \"funding-instrument-id\": { type: \"string\", description: \"Funding instrument id\", required: true },\n status: { type: \"string\", description: \"ACTIVE | PAUSED | DRAFT (default PAUSED)\" },\n ...BUDGET_ARGS,\n \"budget-optimization\": { type: \"string\", description: \"CAMPAIGN | LINE_ITEM\" },\n },\n run: async ({ args }) => {\n const accountId = await stageAccountId(args);\n await stageXOp({\n kind: \"campaign.create\",\n accountId,\n payload: compact({\n name: args.name,\n fundingInstrumentId: args[\"funding-instrument-id\"],\n entityStatus: args.status,\n budgetOptimization: args[\"budget-optimization\"],\n dailyBudgetAmountLocalMicro: microsFromArg(args[\"daily-budget\"], \"--daily-budget\"),\n totalBudgetAmountLocalMicro: microsFromArg(args[\"total-budget\"], \"--total-budget\"),\n }),\n });\n },\n});\n\nregisterSchema({\n command: \"ads.x.campaigns.update\",\n description:\n \"Stage a change to an existing X campaign. Staging the same campaign twice amends the staged change in place rather than queueing two writes.\",\n args: {\n id: { type: \"positional\", description: \"Campaign id\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n name: { type: \"string\", description: \"New name\", required: false },\n status: { type: \"string\", description: \"ACTIVE | PAUSED\", required: false },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency\", required: false },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency\", required: false },\n \"budget-optimization\": { type: \"string\", description: \"CAMPAIGN | LINE_ITEM\", required: false },\n },\n});\n\nexport const campaignsUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Stage a change to a campaign.\n\nExamples:\n baker ads x campaigns update oilf0 --daily-budget 20\n baker ads x campaigns update oilf0 --name \"Spring push\"`,\n },\n args: {\n id: { type: \"positional\", description: \"Campaign id\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\" },\n name: { type: \"string\", description: \"New name\" },\n status: { type: \"string\", description: \"ACTIVE | PAUSED\" },\n ...BUDGET_ARGS,\n \"budget-optimization\": { type: \"string\", description: \"CAMPAIGN | LINE_ITEM\" },\n },\n run: async ({ args }) => {\n const accountId = await stageAccountId(args);\n await stageXOp({\n kind: \"campaign.update\",\n accountId,\n target: requireTarget(args, \"id\"),\n payload: compact({\n name: args.name,\n entityStatus: args.status,\n budgetOptimization: args[\"budget-optimization\"],\n dailyBudgetAmountLocalMicro: microsFromArg(args[\"daily-budget\"], \"--daily-budget\"),\n totalBudgetAmountLocalMicro: microsFromArg(args[\"total-budget\"], \"--total-budget\"),\n }),\n });\n },\n});\n\nfunction statusCommand(name: \"pause\" | \"resume\", status: \"PAUSED\" | \"ACTIVE\") {\n registerSchema({\n command: `ads.x.campaigns.${name}`,\n description: `Stage ${name === \"pause\" ? \"a pause\" : \"a resume\"} for one or more X campaigns. Pass every id in one call.`,\n args: {\n ids: { type: \"positional\", description: \"Campaign ids, comma-separated\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n },\n });\n return defineCommand({\n meta: {\n name,\n description: `Stage ${name === \"pause\" ? \"pausing\" : \"resuming\"} campaigns.\n\nExample:\n baker ads x campaigns ${name} oilf0,omyq3`,\n },\n args: {\n ids: { type: \"positional\", description: \"Campaign ids, comma-separated\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\" },\n },\n run: async ({ args }) => {\n const accountId = await stageAccountId(args);\n await stageXOps(\n requireTargets(args, \"ids\").map((id) => ({\n kind: \"campaign.update\",\n accountId,\n target: id,\n payload: { entityStatus: status },\n })),\n );\n },\n });\n}\n\nexport const campaignsPauseCommand = statusCommand(\"pause\", \"PAUSED\");\nexport const campaignsResumeCommand = statusCommand(\"resume\", \"ACTIVE\");\n"],"mappings":"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","names":[]}
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
clearableArg,
|
|
3
|
-
clearableCsvArg,
|
|
4
|
-
compact,
|
|
5
|
-
csvArg,
|
|
6
|
-
lowerArg,
|
|
7
|
-
lowerCsvArg,
|
|
8
|
-
microsFromArg,
|
|
9
|
-
requireTarget,
|
|
10
|
-
schemaArgs,
|
|
11
|
-
stageChatgptOp,
|
|
12
|
-
statusCommand
|
|
13
|
-
} from "./chunk-5XTGG4PV.js";
|
|
14
|
-
import {
|
|
15
|
-
CHATGPT_ADS_REFERENCE
|
|
16
|
-
} from "./chunk-M7HD42M6.js";
|
|
17
|
-
import "./chunk-ZRP7Y2DM.js";
|
|
18
|
-
import "./chunk-X7VQFLHI.js";
|
|
19
|
-
import "./chunk-LU4HI4KI.js";
|
|
20
|
-
import "./chunk-LGK7UWBN.js";
|
|
21
|
-
import {
|
|
22
|
-
registerSchema
|
|
23
|
-
} from "./chunk-Q7US4OOA.js";
|
|
24
|
-
import "./chunk-YQSBHWOI.js";
|
|
25
|
-
|
|
26
|
-
// src/commands/ads/chatgpt/campaign-writes.ts
|
|
27
|
-
import { defineCommand } from "citty";
|
|
28
|
-
var REFERENCE = CHATGPT_ADS_REFERENCE.campaigns;
|
|
29
|
-
var SHARED_ARGS = {
|
|
30
|
-
name: { type: "string", description: "Campaign name (3+ characters)" },
|
|
31
|
-
description: { type: "string", description: "Internal description" },
|
|
32
|
-
"daily-budget": { type: "string", description: "Daily budget in account currency, e.g. 20 \u2014 or --lifetime-budget" },
|
|
33
|
-
"lifetime-budget": { type: "string", description: "Budget for the whole run in account currency" },
|
|
34
|
-
start: { type: "string", description: "Start, ISO 8601 (default: at publish)" },
|
|
35
|
-
end: { type: "string", description: "End, ISO 8601 (default: runs until paused)" },
|
|
36
|
-
countries: {
|
|
37
|
-
type: "string",
|
|
38
|
-
description: "Two-letter country codes, comma-separated, e.g. ES,MX. Changing any place or audience keeps the others as they are live"
|
|
39
|
-
},
|
|
40
|
-
"location-ids": {
|
|
41
|
-
type: "string",
|
|
42
|
-
description: "Region, market or postcode ids from `baker ads chatgpt locations`, comma-separated"
|
|
43
|
-
},
|
|
44
|
-
"excluded-countries": { type: "string", description: "Countries it never serves in, comma-separated \u2014 none clears" },
|
|
45
|
-
"excluded-location-ids": {
|
|
46
|
-
type: "string",
|
|
47
|
-
description: "Regions, markets or postcodes it never serves in, comma-separated \u2014 none clears"
|
|
48
|
-
},
|
|
49
|
-
"audience-ids": { type: "string", description: "Custom audiences it serves only to, comma-separated \u2014 none clears" },
|
|
50
|
-
"excluded-audience-ids": {
|
|
51
|
-
type: "string",
|
|
52
|
-
description: "Custom audiences it never serves, comma-separated \u2014 none clears"
|
|
53
|
-
},
|
|
54
|
-
"tracking-template": {
|
|
55
|
-
type: "string",
|
|
56
|
-
description: "Query string added to every landing page, e.g. utm_source=chatgpt&utm_campaign={campaign_id}&campaign_id={campaign_id}&ad_group_id={ad_group_id}&ad_id={ad_id} \u2014 keep the ids under those names, which Baker analytics splits by; the oppref click id is added by ChatGPT Ads itself. none clears"
|
|
57
|
-
},
|
|
58
|
-
platforms: {
|
|
59
|
-
type: "string",
|
|
60
|
-
description: "ios_app, android_app, web, desktop_web, ios_web, android_web \u2014 comma-separated (default: all)"
|
|
61
|
-
},
|
|
62
|
-
status: { type: "string", description: "paused (default) | active \u2014 active can spend the moment the chat publishes" },
|
|
63
|
-
"conversion-event-ids": {
|
|
64
|
-
type: "string",
|
|
65
|
-
description: "Conversions it measures, comma-separated (each id from `baker ads chatgpt conversions`, or a staged chatgpt_temp_ ref). On update it replaces the whole list. A conversions campaign takes exactly one standard conversion, fixed at creation"
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
var CREATE_ARGS = {
|
|
69
|
-
...SHARED_ARGS,
|
|
70
|
-
"catalog-id": {
|
|
71
|
-
type: "string",
|
|
72
|
-
description: "Make it a catalog campaign: its ads come from this product catalog (fd_\u2026 from `catalogs`). Countries only; fixed once created"
|
|
73
|
-
},
|
|
74
|
-
name: { type: "string", description: "Campaign name (3+ characters)", required: true },
|
|
75
|
-
objective: { type: "string", description: "impressions | clicks | conversions \u2014 fixed once created", required: true }
|
|
76
|
-
};
|
|
77
|
-
var UPDATE_ARGS = {
|
|
78
|
-
id: { type: "positional", description: "Campaign id (cmpn_\u2026) or a staged chatgpt_temp_ ref", required: true },
|
|
79
|
-
...SHARED_ARGS
|
|
80
|
-
};
|
|
81
|
-
function sharedPayload(args) {
|
|
82
|
-
return {
|
|
83
|
-
name: args.name,
|
|
84
|
-
description: args.description,
|
|
85
|
-
dailyBudgetMicros: microsFromArg(args["daily-budget"], "--daily-budget"),
|
|
86
|
-
lifetimeBudgetMicros: microsFromArg(args["lifetime-budget"], "--lifetime-budget"),
|
|
87
|
-
startTime: args.start,
|
|
88
|
-
endTime: args.end,
|
|
89
|
-
countries: clearableCsvArg(args.countries),
|
|
90
|
-
locationIds: clearableCsvArg(args["location-ids"]),
|
|
91
|
-
excludedCountries: clearableCsvArg(args["excluded-countries"]),
|
|
92
|
-
excludedLocationIds: clearableCsvArg(args["excluded-location-ids"]),
|
|
93
|
-
audienceIds: clearableCsvArg(args["audience-ids"]),
|
|
94
|
-
excludedAudienceIds: clearableCsvArg(args["excluded-audience-ids"]),
|
|
95
|
-
trackingTemplate: clearableArg(args["tracking-template"]),
|
|
96
|
-
platforms: lowerCsvArg(args.platforms),
|
|
97
|
-
status: lowerArg(args.status),
|
|
98
|
-
conversionEventSettingIds: csvArg(args["conversion-event-ids"])
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
function campaignUpdateOp(args) {
|
|
102
|
-
return {
|
|
103
|
-
kind: "campaign.update",
|
|
104
|
-
target: requireTarget(args, "id"),
|
|
105
|
-
payload: compact(sharedPayload(args))
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
function campaignCreateOp(args) {
|
|
109
|
-
return {
|
|
110
|
-
kind: "campaign.create",
|
|
111
|
-
payload: compact({
|
|
112
|
-
...sharedPayload(args),
|
|
113
|
-
objective: lowerArg(args.objective),
|
|
114
|
-
productFeedId: args["catalog-id"]
|
|
115
|
-
})
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
registerSchema({
|
|
119
|
-
command: "ads.chatgpt.campaigns.create",
|
|
120
|
-
description: "Stage a new ChatGPT Ads campaign on this chat's draft. Staged paused by default \u2014 nothing reaches ChatGPT Ads until the chat is published. Needs exactly one of --daily-budget or --lifetime-budget. The objective (and a conversions campaign's event) cannot change once it exists.",
|
|
121
|
-
args: schemaArgs(CREATE_ARGS)
|
|
122
|
-
});
|
|
123
|
-
var campaignsCreateCommand = defineCommand({
|
|
124
|
-
meta: {
|
|
125
|
-
name: "create",
|
|
126
|
-
description: `Stage a new campaign (applies when the chat is published). Needs exactly one of --daily-budget or --lifetime-budget.
|
|
127
|
-
|
|
128
|
-
Examples:
|
|
129
|
-
baker ads chatgpt campaigns create --name "Spring push" --objective clicks --daily-budget 20 --countries ES
|
|
130
|
-
baker ads chatgpt campaigns create --name "Leads" --objective conversions --daily-budget 30 --conversion-event-ids 6ab69300554481a1`
|
|
131
|
-
},
|
|
132
|
-
args: CREATE_ARGS,
|
|
133
|
-
run: async ({ args }) => {
|
|
134
|
-
await stageChatgptOp(campaignCreateOp(args), REFERENCE, (staged) => [
|
|
135
|
-
`Next, give it an ad group: baker ads chatgpt ad-groups create --campaign-id ${staged.ref} --name "\u2026" --context-hints "\u2026" --max-bid 2.50`,
|
|
136
|
-
"Check this summary against everything the user asked for \u2014 countries, places to leave out, budget, dates \u2014 and stage what is missing before saying it is ready."
|
|
137
|
-
]);
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
registerSchema({
|
|
141
|
-
command: "ads.chatgpt.campaigns.update",
|
|
142
|
-
description: "Stage a change to a campaign \u2014 name, budget, schedule, places, audiences, platforms, tracking template or status. Changing any place or audience keeps the others as they are live; `none` clears a list. Staging the same campaign twice amends the staged change. A daily budget cannot become a lifetime one.",
|
|
143
|
-
args: schemaArgs(UPDATE_ARGS)
|
|
144
|
-
});
|
|
145
|
-
var campaignsUpdateCommand = defineCommand({
|
|
146
|
-
meta: {
|
|
147
|
-
name: "update",
|
|
148
|
-
description: `Stage a change to a campaign.
|
|
149
|
-
|
|
150
|
-
Examples:
|
|
151
|
-
baker ads chatgpt campaigns update cmpn_123 --daily-budget 35
|
|
152
|
-
baker ads chatgpt campaigns update cmpn_123 --countries ES,PT
|
|
153
|
-
baker ads chatgpt campaigns update cmpn_123 --excluded-location-ids 2000393
|
|
154
|
-
baker ads chatgpt campaigns update cmpn_123 --tracking-template "utm_source=chatgpt&utm_campaign={campaign_id}"
|
|
155
|
-
baker ads chatgpt campaigns update cmpn_123 --conversion-event-ids 6ab69300554481a1,6ab69300554481a2`
|
|
156
|
-
},
|
|
157
|
-
args: UPDATE_ARGS,
|
|
158
|
-
run: async ({ args }) => {
|
|
159
|
-
await stageChatgptOp(campaignUpdateOp(args), REFERENCE);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
var campaignsPauseCommand = statusCommand("campaign", "pause", REFERENCE);
|
|
163
|
-
var campaignsResumeCommand = statusCommand("campaign", "resume", REFERENCE);
|
|
164
|
-
var campaignsArchiveCommand = statusCommand("campaign", "archive", REFERENCE);
|
|
165
|
-
export {
|
|
166
|
-
campaignCreateOp,
|
|
167
|
-
campaignUpdateOp,
|
|
168
|
-
campaignsArchiveCommand,
|
|
169
|
-
campaignsCreateCommand,
|
|
170
|
-
campaignsPauseCommand,
|
|
171
|
-
campaignsResumeCommand,
|
|
172
|
-
campaignsUpdateCommand
|
|
173
|
-
};
|
|
174
|
-
//# sourceMappingURL=campaign-writes-XO74BALZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/chatgpt/campaign-writes.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { CHATGPT_ADS_REFERENCE } from \"./shared.ts\";\nimport {\n clearableArg,\n clearableCsvArg,\n compact,\n csvArg,\n lowerArg,\n lowerCsvArg,\n microsFromArg,\n requireTarget,\n schemaArgs,\n stageChatgptOp,\n statusCommand,\n} from \"./write-shared.ts\";\n\n/**\n * Staged campaign writes. Nothing here calls ChatGPT Ads: each command adds an\n * op to this chat's draft, which applies when the chat is published.\n */\n\nconst REFERENCE = CHATGPT_ADS_REFERENCE.campaigns;\n\nconst SHARED_ARGS = {\n name: { type: \"string\", description: \"Campaign name (3+ characters)\" },\n description: { type: \"string\", description: \"Internal description\" },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency, e.g. 20 — or --lifetime-budget\" },\n \"lifetime-budget\": { type: \"string\", description: \"Budget for the whole run in account currency\" },\n start: { type: \"string\", description: \"Start, ISO 8601 (default: at publish)\" },\n end: { type: \"string\", description: \"End, ISO 8601 (default: runs until paused)\" },\n countries: {\n type: \"string\",\n description:\n \"Two-letter country codes, comma-separated, e.g. ES,MX. Changing any place or audience keeps the others as they are live\",\n },\n \"location-ids\": {\n type: \"string\",\n description: \"Region, market or postcode ids from `baker ads chatgpt locations`, comma-separated\",\n },\n \"excluded-countries\": { type: \"string\", description: \"Countries it never serves in, comma-separated — none clears\" },\n \"excluded-location-ids\": {\n type: \"string\",\n description: \"Regions, markets or postcodes it never serves in, comma-separated — none clears\",\n },\n \"audience-ids\": { type: \"string\", description: \"Custom audiences it serves only to, comma-separated — none clears\" },\n \"excluded-audience-ids\": {\n type: \"string\",\n description: \"Custom audiences it never serves, comma-separated — none clears\",\n },\n \"tracking-template\": {\n type: \"string\",\n description:\n \"Query string added to every landing page, e.g. utm_source=chatgpt&utm_campaign={campaign_id}&campaign_id={campaign_id}&ad_group_id={ad_group_id}&ad_id={ad_id} — keep the ids under those names, which Baker analytics splits by; the oppref click id is added by ChatGPT Ads itself. none clears\",\n },\n platforms: {\n type: \"string\",\n description: \"ios_app, android_app, web, desktop_web, ios_web, android_web — comma-separated (default: all)\",\n },\n status: { type: \"string\", description: \"paused (default) | active — active can spend the moment the chat publishes\" },\n \"conversion-event-ids\": {\n type: \"string\",\n description:\n \"Conversions it measures, comma-separated (each id from `baker ads chatgpt conversions`, or a staged chatgpt_temp_ ref). On update it replaces the whole list. A conversions campaign takes exactly one standard conversion, fixed at creation\",\n },\n} as const;\n\nconst CREATE_ARGS = {\n ...SHARED_ARGS,\n \"catalog-id\": {\n type: \"string\",\n description:\n \"Make it a catalog campaign: its ads come from this product catalog (fd_… from `catalogs`). Countries only; fixed once created\",\n },\n name: { type: \"string\", description: \"Campaign name (3+ characters)\", required: true },\n objective: { type: \"string\", description: \"impressions | clicks | conversions — fixed once created\", required: true },\n} as const;\n\nconst UPDATE_ARGS = {\n id: { type: \"positional\", description: \"Campaign id (cmpn_…) or a staged chatgpt_temp_ ref\", required: true },\n ...SHARED_ARGS,\n} as const;\n\ntype Args = Record<string, unknown>;\n\nfunction sharedPayload(args: Args): Record<string, unknown> {\n return {\n name: args.name,\n description: args.description,\n dailyBudgetMicros: microsFromArg(args[\"daily-budget\"], \"--daily-budget\"),\n lifetimeBudgetMicros: microsFromArg(args[\"lifetime-budget\"], \"--lifetime-budget\"),\n startTime: args.start,\n endTime: args.end,\n countries: clearableCsvArg(args.countries),\n locationIds: clearableCsvArg(args[\"location-ids\"]),\n excludedCountries: clearableCsvArg(args[\"excluded-countries\"]),\n excludedLocationIds: clearableCsvArg(args[\"excluded-location-ids\"]),\n audienceIds: clearableCsvArg(args[\"audience-ids\"]),\n excludedAudienceIds: clearableCsvArg(args[\"excluded-audience-ids\"]),\n trackingTemplate: clearableArg(args[\"tracking-template\"]),\n platforms: lowerCsvArg(args.platforms),\n status: lowerArg(args.status),\n conversionEventSettingIds: csvArg(args[\"conversion-event-ids\"]),\n };\n}\n\nexport function campaignUpdateOp(args: Args): Record<string, unknown> {\n return {\n kind: \"campaign.update\",\n target: requireTarget(args, \"id\"),\n payload: compact(sharedPayload(args)),\n };\n}\n\nexport function campaignCreateOp(args: Args): Record<string, unknown> {\n return {\n kind: \"campaign.create\",\n payload: compact({\n ...sharedPayload(args),\n objective: lowerArg(args.objective),\n productFeedId: args[\"catalog-id\"],\n }),\n };\n}\n\nregisterSchema({\n command: \"ads.chatgpt.campaigns.create\",\n description:\n \"Stage a new ChatGPT Ads campaign on this chat's draft. Staged paused by default — nothing reaches ChatGPT Ads until the chat is published. Needs exactly one of --daily-budget or --lifetime-budget. The objective (and a conversions campaign's event) cannot change once it exists.\",\n args: schemaArgs(CREATE_ARGS),\n});\n\nexport const campaignsCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a new campaign (applies when the chat is published). Needs exactly one of --daily-budget or --lifetime-budget.\n\nExamples:\n baker ads chatgpt campaigns create --name \"Spring push\" --objective clicks --daily-budget 20 --countries ES\n baker ads chatgpt campaigns create --name \"Leads\" --objective conversions --daily-budget 30 --conversion-event-ids 6ab69300554481a1`,\n },\n args: CREATE_ARGS,\n run: async ({ args }) => {\n await stageChatgptOp(campaignCreateOp(args), REFERENCE, (staged) => [\n `Next, give it an ad group: baker ads chatgpt ad-groups create --campaign-id ${staged.ref} --name \"…\" --context-hints \"…\" --max-bid 2.50`,\n \"Check this summary against everything the user asked for — countries, places to leave out, budget, dates — and stage what is missing before saying it is ready.\",\n ]);\n },\n});\n\nregisterSchema({\n command: \"ads.chatgpt.campaigns.update\",\n description:\n \"Stage a change to a campaign — name, budget, schedule, places, audiences, platforms, tracking template or status. Changing any place or audience keeps the others as they are live; `none` clears a list. Staging the same campaign twice amends the staged change. A daily budget cannot become a lifetime one.\",\n args: schemaArgs(UPDATE_ARGS),\n});\n\nexport const campaignsUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Stage a change to a campaign.\n\nExamples:\n baker ads chatgpt campaigns update cmpn_123 --daily-budget 35\n baker ads chatgpt campaigns update cmpn_123 --countries ES,PT\n baker ads chatgpt campaigns update cmpn_123 --excluded-location-ids 2000393\n baker ads chatgpt campaigns update cmpn_123 --tracking-template \"utm_source=chatgpt&utm_campaign={campaign_id}\"\n baker ads chatgpt campaigns update cmpn_123 --conversion-event-ids 6ab69300554481a1,6ab69300554481a2`,\n },\n args: UPDATE_ARGS,\n run: async ({ args }) => {\n await stageChatgptOp(campaignUpdateOp(args), REFERENCE);\n },\n});\n\nexport const campaignsPauseCommand = statusCommand(\"campaign\", \"pause\", REFERENCE);\nexport const campaignsResumeCommand = statusCommand(\"campaign\", \"resume\", REFERENCE);\nexport const campaignsArchiveCommand = statusCommand(\"campaign\", \"archive\", REFERENCE);\n"],"mappings":"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","names":[]}
|