@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,268 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
csvArg,
|
|
3
|
-
failWriteValidation,
|
|
4
|
-
requireTarget,
|
|
5
|
-
requireTargets,
|
|
6
|
-
schemaArgs,
|
|
7
|
-
stageChatgptOp,
|
|
8
|
-
stageChatgptOps
|
|
9
|
-
} from "./chunk-5XTGG4PV.js";
|
|
10
|
-
import {
|
|
11
|
-
CHATGPT_ADS_REFERENCE,
|
|
12
|
-
CHATGPT_AUDIENCE_USES,
|
|
13
|
-
CHATGPT_MAX_STAGED_MEMBERS,
|
|
14
|
-
runChatgptListRead
|
|
15
|
-
} from "./chunk-M7HD42M6.js";
|
|
16
|
-
import "./chunk-ZRP7Y2DM.js";
|
|
17
|
-
import "./chunk-X7VQFLHI.js";
|
|
18
|
-
import "./chunk-LU4HI4KI.js";
|
|
19
|
-
import "./chunk-LGK7UWBN.js";
|
|
20
|
-
import {
|
|
21
|
-
registerSchema
|
|
22
|
-
} from "./chunk-Q7US4OOA.js";
|
|
23
|
-
import "./chunk-YQSBHWOI.js";
|
|
24
|
-
|
|
25
|
-
// src/commands/ads/chatgpt/audiences.ts
|
|
26
|
-
import { readFileSync } from "fs";
|
|
27
|
-
import { defineCommand } from "citty";
|
|
28
|
-
|
|
29
|
-
// src/commands/ads/chatgpt/audience-members.ts
|
|
30
|
-
import { createHash } from "crypto";
|
|
31
|
-
import { parse } from "csv-parse/sync";
|
|
32
|
-
import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
|
|
33
|
-
function sha256(value) {
|
|
34
|
-
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
35
|
-
}
|
|
36
|
-
function normalizedEmail(value) {
|
|
37
|
-
const email = value.trim().toLowerCase();
|
|
38
|
-
return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(email) ? email : void 0;
|
|
39
|
-
}
|
|
40
|
-
function normalizedPhone(value, defaultCountry) {
|
|
41
|
-
const country = defaultCountry && isSupportedCountry(defaultCountry) ? defaultCountry : void 0;
|
|
42
|
-
const phone = parsePhoneNumberFromString(value.trim(), country);
|
|
43
|
-
return phone?.isValid() ? phone.number : void 0;
|
|
44
|
-
}
|
|
45
|
-
function hashedMembers(input) {
|
|
46
|
-
const rejected = [];
|
|
47
|
-
const emailHashes = /* @__PURE__ */ new Set();
|
|
48
|
-
const phoneHashes = /* @__PURE__ */ new Set();
|
|
49
|
-
for (const value of input.emails) {
|
|
50
|
-
const email = normalizedEmail(value);
|
|
51
|
-
email ? emailHashes.add(sha256(email)) : rejected.push(value.trim());
|
|
52
|
-
}
|
|
53
|
-
for (const value of input.phones) {
|
|
54
|
-
const phone = normalizedPhone(value, input.defaultCountry);
|
|
55
|
-
phone ? phoneHashes.add(sha256(phone)) : rejected.push(value.trim());
|
|
56
|
-
}
|
|
57
|
-
return { emailHashes: [...emailHashes], phoneHashes: [...phoneHashes], rejected };
|
|
58
|
-
}
|
|
59
|
-
function headerWords(cell) {
|
|
60
|
-
return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
|
|
61
|
-
}
|
|
62
|
-
var EMAIL_HEADER = /\b(e ?mail|correo|mail)\b/;
|
|
63
|
-
var PHONE_HEADER = /\b(phone|telefono|movil|mobile|tel|celular)\b/;
|
|
64
|
-
function membersFromFile(content) {
|
|
65
|
-
const rows = parse(content, {
|
|
66
|
-
bom: true,
|
|
67
|
-
skip_empty_lines: true,
|
|
68
|
-
relax_column_count: true,
|
|
69
|
-
trim: true,
|
|
70
|
-
delimiter: [",", ";", " "]
|
|
71
|
-
});
|
|
72
|
-
const header = (rows[0] ?? []).map(headerWords);
|
|
73
|
-
const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));
|
|
74
|
-
const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));
|
|
75
|
-
if (emailColumn >= 0 || phoneColumn >= 0) {
|
|
76
|
-
const cells = (column) => column < 0 ? [] : rows.slice(1).flatMap((row) => row[column] ? [row[column]] : []);
|
|
77
|
-
return { emails: cells(emailColumn), phones: cells(phoneColumn) };
|
|
78
|
-
}
|
|
79
|
-
const values = rows.flatMap((row) => row[0] ? [row[0]] : []);
|
|
80
|
-
return values.some((value) => value.includes("@")) ? { emails: values, phones: [] } : { emails: [], phones: values };
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// src/commands/ads/chatgpt/audiences.ts
|
|
84
|
-
var REFERENCE = CHATGPT_ADS_REFERENCE.audiences;
|
|
85
|
-
var MEMBER_ARGS = {
|
|
86
|
-
emails: { type: "string", description: "Emails, comma-separated" },
|
|
87
|
-
phones: { type: "string", description: "Phones, comma-separated \u2014 E.164 (+34\u2026), or local with --country" },
|
|
88
|
-
file: {
|
|
89
|
-
type: "string",
|
|
90
|
-
description: "A CSV with an email and/or phone column, or one email or phone per line \u2014 the company's own customers"
|
|
91
|
-
},
|
|
92
|
-
country: { type: "string", description: "Country of phones written without a +code, e.g. ES" }
|
|
93
|
-
};
|
|
94
|
-
function membersFromArgs(args, readFile = (path) => readFileSync(path, "utf8")) {
|
|
95
|
-
const fromFile = typeof args.file === "string" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };
|
|
96
|
-
const given = [...csvArg(args.emails) ?? [], ...fromFile.emails];
|
|
97
|
-
const givenPhones = [...csvArg(args.phones) ?? [], ...fromFile.phones];
|
|
98
|
-
const members = hashedMembers({
|
|
99
|
-
emails: given,
|
|
100
|
-
phones: givenPhones,
|
|
101
|
-
defaultCountry: typeof args.country === "string" ? args.country.toUpperCase() : void 0
|
|
102
|
-
});
|
|
103
|
-
const count = members.emailHashes.length + members.phoneHashes.length;
|
|
104
|
-
const offered = given.length + givenPhones.length + (typeof args.file === "string" && args.file ? 1 : 0);
|
|
105
|
-
const refusal = count > CHATGPT_MAX_STAGED_MEMBERS ? `${count} members \u2014 at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file` : count === 0 && offered > 0 ? "none of the values was an email or a valid phone \u2014 name the columns email and phone, and give phones a +country code or --country" : void 0;
|
|
106
|
-
return {
|
|
107
|
-
payload: {
|
|
108
|
-
...members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {},
|
|
109
|
-
...members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}
|
|
110
|
-
},
|
|
111
|
-
rejected: members.rejected.length,
|
|
112
|
-
...refusal ? { refusal } : {}
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
function rejectedHint(rejected) {
|
|
116
|
-
return rejected > 0 ? [
|
|
117
|
-
`${rejected} value(s) were neither an email nor a valid phone and were left out \u2014 phones need a +country code, or --country.`
|
|
118
|
-
] : [];
|
|
119
|
-
}
|
|
120
|
-
var LIST_ARGS = {
|
|
121
|
-
"eligible-for": {
|
|
122
|
-
type: "string",
|
|
123
|
-
description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join("|")}`
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
registerSchema({
|
|
127
|
-
command: "ads.chatgpt.audiences.list",
|
|
128
|
-
description: "The account's custom audiences: status, and matched people as a privacy range (under_25k\u2026). `ready` is not eligibility \u2014 pass --eligible-for to list only those a use accepts.",
|
|
129
|
-
args: schemaArgs(LIST_ARGS)
|
|
130
|
-
});
|
|
131
|
-
var audiencesListCommand = defineCommand({
|
|
132
|
-
meta: { name: "list", description: "List the account's custom audiences." },
|
|
133
|
-
args: LIST_ARGS,
|
|
134
|
-
run: async ({ args }) => {
|
|
135
|
-
const use = typeof args["eligible-for"] === "string" ? args["eligible-for"] : void 0;
|
|
136
|
-
await runChatgptListRead(
|
|
137
|
-
REFERENCE,
|
|
138
|
-
"/api/ads/chatgpt/audiences",
|
|
139
|
-
use ? { eligible_for: use } : void 0,
|
|
140
|
-
(rows) => rows.length === 0 ? ["No audience. Stage one with `baker ads chatgpt audiences create --name \u2026 --file customers.csv`."] : [
|
|
141
|
-
"Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland."
|
|
142
|
-
]
|
|
143
|
-
);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
var CREATE_ARGS = {
|
|
147
|
-
name: { type: "string", description: "Audience name (3+ characters)", required: true },
|
|
148
|
-
description: { type: "string", description: "What the list is" },
|
|
149
|
-
...MEMBER_ARGS
|
|
150
|
-
};
|
|
151
|
-
registerSchema({
|
|
152
|
-
command: "ads.chatgpt.audiences.create",
|
|
153
|
-
description: "Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.",
|
|
154
|
-
args: schemaArgs(CREATE_ARGS)
|
|
155
|
-
});
|
|
156
|
-
var audiencesCreateCommand = defineCommand({
|
|
157
|
-
meta: {
|
|
158
|
-
name: "create",
|
|
159
|
-
description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.
|
|
160
|
-
|
|
161
|
-
Examples:
|
|
162
|
-
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
163
|
-
baker ads chatgpt audiences create --name "Recent buyers" # empty, fill it later with add`
|
|
164
|
-
},
|
|
165
|
-
args: CREATE_ARGS,
|
|
166
|
-
run: async ({ args }) => {
|
|
167
|
-
const { payload, rejected, refusal } = membersFromArgs(args);
|
|
168
|
-
if (refusal) {
|
|
169
|
-
failWriteValidation(refusal);
|
|
170
|
-
}
|
|
171
|
-
await stageChatgptOp(
|
|
172
|
-
{
|
|
173
|
-
kind: "audience.create",
|
|
174
|
-
payload: { name: args.name, ...args.description ? { description: args.description } : {}, ...payload }
|
|
175
|
-
},
|
|
176
|
-
REFERENCE,
|
|
177
|
-
(staged) => [
|
|
178
|
-
...rejectedHint(rejected),
|
|
179
|
-
`Use it on a campaign after the publish, once \`audiences\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`
|
|
180
|
-
]
|
|
181
|
-
);
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
function membersCommand(verb) {
|
|
185
|
-
const args = {
|
|
186
|
-
id: { type: "positional", description: "Audience id (caud_\u2026)", required: true },
|
|
187
|
-
...MEMBER_ARGS
|
|
188
|
-
};
|
|
189
|
-
registerSchema({
|
|
190
|
-
command: `ads.chatgpt.audiences.${verb}`,
|
|
191
|
-
description: `Stage ${verb === "add" ? "adding" : "removing"} members ${verb === "add" ? "to" : "from"} a live custom audience, hashed on this machine. Applies when the chat is published.`,
|
|
192
|
-
args: schemaArgs(args)
|
|
193
|
-
});
|
|
194
|
-
return defineCommand({
|
|
195
|
-
meta: {
|
|
196
|
-
name: verb,
|
|
197
|
-
description: `Stage ${verb === "add" ? "adding" : "removing"} members.
|
|
198
|
-
|
|
199
|
-
Example:
|
|
200
|
-
baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`
|
|
201
|
-
},
|
|
202
|
-
args,
|
|
203
|
-
run: async ({ args: parsed }) => {
|
|
204
|
-
const { payload, rejected, refusal } = membersFromArgs(parsed);
|
|
205
|
-
if (refusal) {
|
|
206
|
-
failWriteValidation(refusal);
|
|
207
|
-
}
|
|
208
|
-
if (!payload.emailHashes && !payload.phoneHashes) {
|
|
209
|
-
failWriteValidation("name at least one email or phone with --emails, --phones or --file");
|
|
210
|
-
}
|
|
211
|
-
await stageChatgptOp(
|
|
212
|
-
{ kind: `audience.${verb}`, target: requireTarget(parsed, "id"), payload },
|
|
213
|
-
REFERENCE,
|
|
214
|
-
() => rejectedHint(rejected)
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
var ARCHIVE_ARGS = {
|
|
220
|
-
ids: { type: "positional", description: "Audience ids, comma-separated", required: true }
|
|
221
|
-
};
|
|
222
|
-
registerSchema({
|
|
223
|
-
command: "ads.chatgpt.audiences.archive",
|
|
224
|
-
description: "Stage archiving custom audiences \u2014 for good: ChatGPT Ads cannot bring one back. Pass every id in one call.",
|
|
225
|
-
args: schemaArgs(ARCHIVE_ARGS)
|
|
226
|
-
});
|
|
227
|
-
var audiencesArchiveCommand = defineCommand({
|
|
228
|
-
meta: {
|
|
229
|
-
name: "archive",
|
|
230
|
-
description: `Stage archiving audiences, for good.
|
|
231
|
-
|
|
232
|
-
Example:
|
|
233
|
-
baker ads chatgpt audiences archive caud_123`
|
|
234
|
-
},
|
|
235
|
-
args: ARCHIVE_ARGS,
|
|
236
|
-
run: async ({ args }) => {
|
|
237
|
-
await stageChatgptOps(
|
|
238
|
-
requireTargets(args, "ids").map((id) => ({ kind: "audience.archive", target: id, payload: {} })),
|
|
239
|
-
REFERENCE
|
|
240
|
-
);
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
var audiencesCommand = defineCommand({
|
|
244
|
-
meta: {
|
|
245
|
-
name: "audiences",
|
|
246
|
-
description: `Custom audiences \u2014 the company's own customer lists a campaign serves to or leaves out.
|
|
247
|
-
|
|
248
|
-
Examples:
|
|
249
|
-
baker ads chatgpt audiences
|
|
250
|
-
baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
|
|
251
|
-
baker ads chatgpt audiences add caud_123 --emails ana@example.com`
|
|
252
|
-
},
|
|
253
|
-
subCommands: {
|
|
254
|
-
list: audiencesListCommand,
|
|
255
|
-
create: audiencesCreateCommand,
|
|
256
|
-
add: membersCommand("add"),
|
|
257
|
-
remove: membersCommand("remove"),
|
|
258
|
-
archive: audiencesArchiveCommand
|
|
259
|
-
},
|
|
260
|
-
// A parent must never declare `run`: citty falls through to it after the matched subcommand.
|
|
261
|
-
args: {},
|
|
262
|
-
default: "list"
|
|
263
|
-
});
|
|
264
|
-
export {
|
|
265
|
-
audiencesCommand,
|
|
266
|
-
membersFromArgs
|
|
267
|
-
};
|
|
268
|
-
//# sourceMappingURL=audiences-WCDWN64L.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/chatgpt/audiences.ts","../src/commands/ads/chatgpt/audience-members.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { CHATGPT_AUDIENCE_USES, CHATGPT_MAX_STAGED_MEMBERS, type ChatgptAdsAudience } from \"@baker/api/ads-chatgpt\";\nimport { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { hashedMembers, membersFromFile } from \"./audience-members.ts\";\nimport { CHATGPT_ADS_REFERENCE, runChatgptListRead } from \"./shared.ts\";\nimport {\n csvArg,\n failWriteValidation,\n requireTarget,\n requireTargets,\n schemaArgs,\n stageChatgptOp,\n stageChatgptOps,\n} from \"./write-shared.ts\";\n\n/**\n * Custom audiences: lists of the company's own customers a campaign serves to\n * or leaves out. Members are hashed on this machine before anything is sent —\n * Baker and ChatGPT Ads only ever see SHA-256 digests.\n */\n\nconst REFERENCE = CHATGPT_ADS_REFERENCE.audiences;\n\nconst MEMBER_ARGS = {\n emails: { type: \"string\", description: \"Emails, comma-separated\" },\n phones: { type: \"string\", description: \"Phones, comma-separated — E.164 (+34…), or local with --country\" },\n file: {\n type: \"string\",\n description:\n \"A CSV with an email and/or phone column, or one email or phone per line — the company's own customers\",\n },\n country: { type: \"string\", description: \"Country of phones written without a +code, e.g. ES\" },\n} as const;\n\ntype Args = Record<string, unknown>;\n\n/** The members the flags name, hashed — with the reason to refuse them when none is usable or there are too many. */\nexport function membersFromArgs(args: Args, readFile: (path: string) => string = (path) => readFileSync(path, \"utf8\")) {\n const fromFile =\n typeof args.file === \"string\" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };\n const given = [...(csvArg(args.emails) ?? []), ...fromFile.emails];\n const givenPhones = [...(csvArg(args.phones) ?? []), ...fromFile.phones];\n const members = hashedMembers({\n emails: given,\n phones: givenPhones,\n defaultCountry: typeof args.country === \"string\" ? args.country.toUpperCase() : undefined,\n });\n const count = members.emailHashes.length + members.phoneHashes.length;\n const offered = given.length + givenPhones.length + (typeof args.file === \"string\" && args.file ? 1 : 0);\n const refusal =\n count > CHATGPT_MAX_STAGED_MEMBERS\n ? `${count} members — at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file`\n : count === 0 && offered > 0\n ? \"none of the values was an email or a valid phone — name the columns email and phone, and give phones a +country code or --country\"\n : undefined;\n return {\n payload: {\n ...(members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {}),\n ...(members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}),\n },\n rejected: members.rejected.length,\n ...(refusal ? { refusal } : {}),\n };\n}\n\nfunction rejectedHint(rejected: number): string[] {\n return rejected > 0\n ? [\n `${rejected} value(s) were neither an email nor a valid phone and were left out — phones need a +country code, or --country.`,\n ]\n : [];\n}\n\nconst LIST_ARGS = {\n \"eligible-for\": {\n type: \"string\",\n description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join(\"|\")}`,\n },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.list\",\n description:\n \"The account's custom audiences: status, and matched people as a privacy range (under_25k…). `ready` is not eligibility — pass --eligible-for to list only those a use accepts.\",\n args: schemaArgs(LIST_ARGS),\n});\n\nconst audiencesListCommand = defineCommand({\n meta: { name: \"list\", description: \"List the account's custom audiences.\" },\n args: LIST_ARGS,\n run: async ({ args }) => {\n const use = typeof args[\"eligible-for\"] === \"string\" ? args[\"eligible-for\"] : undefined;\n await runChatgptListRead<ChatgptAdsAudience[]>(\n REFERENCE,\n \"/api/ads/chatgpt/audiences\",\n use ? { eligible_for: use } : undefined,\n (rows) =>\n rows.length === 0\n ? [\"No audience. Stage one with `baker ads chatgpt audiences create --name … --file customers.csv`.\"]\n : [\n \"Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland.\",\n ],\n );\n },\n});\n\nconst CREATE_ARGS = {\n name: { type: \"string\", description: \"Audience name (3+ characters)\", required: true },\n description: { type: \"string\", description: \"What the list is\" },\n ...MEMBER_ARGS,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.create\",\n description:\n \"Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.\",\n args: schemaArgs(CREATE_ARGS),\n});\n\nconst audiencesCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.\n\nExamples:\n baker ads chatgpt audiences create --name \"Customers 2026\" --file customers.csv --country ES\n baker ads chatgpt audiences create --name \"Recent buyers\" # empty, fill it later with add`,\n },\n args: CREATE_ARGS,\n run: async ({ args }) => {\n const { payload, rejected, refusal } = membersFromArgs(args);\n if (refusal) {\n failWriteValidation(refusal);\n }\n await stageChatgptOp(\n {\n kind: \"audience.create\",\n payload: { name: args.name, ...(args.description ? { description: args.description } : {}), ...payload },\n },\n REFERENCE,\n (staged) => [\n ...rejectedHint(rejected),\n `Use it on a campaign after the publish, once \\`audiences\\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`,\n ],\n );\n },\n});\n\nfunction membersCommand(verb: \"add\" | \"remove\") {\n const args = {\n id: { type: \"positional\", description: \"Audience id (caud_…)\", required: true },\n ...MEMBER_ARGS,\n } as const;\n registerSchema({\n command: `ads.chatgpt.audiences.${verb}`,\n description: `Stage ${verb === \"add\" ? \"adding\" : \"removing\"} members ${verb === \"add\" ? \"to\" : \"from\"} a live custom audience, hashed on this machine. Applies when the chat is published.`,\n args: schemaArgs(args),\n });\n return defineCommand({\n meta: {\n name: verb,\n description: `Stage ${verb === \"add\" ? \"adding\" : \"removing\"} members.\n\nExample:\n baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`,\n },\n args,\n run: async ({ args: parsed }) => {\n const { payload, rejected, refusal } = membersFromArgs(parsed);\n if (refusal) {\n failWriteValidation(refusal);\n }\n if (!payload.emailHashes && !payload.phoneHashes) {\n failWriteValidation(\"name at least one email or phone with --emails, --phones or --file\");\n }\n await stageChatgptOp({ kind: `audience.${verb}`, target: requireTarget(parsed, \"id\"), payload }, REFERENCE, () =>\n rejectedHint(rejected),\n );\n },\n });\n}\n\nconst ARCHIVE_ARGS = {\n ids: { type: \"positional\", description: \"Audience ids, comma-separated\", required: true },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.archive\",\n description:\n \"Stage archiving custom audiences — for good: ChatGPT Ads cannot bring one back. Pass every id in one call.\",\n args: schemaArgs(ARCHIVE_ARGS),\n});\n\nconst audiencesArchiveCommand = defineCommand({\n meta: {\n name: \"archive\",\n description: `Stage archiving audiences, for good.\n\nExample:\n baker ads chatgpt audiences archive caud_123`,\n },\n args: ARCHIVE_ARGS,\n run: async ({ args }) => {\n await stageChatgptOps(\n requireTargets(args, \"ids\").map((id) => ({ kind: \"audience.archive\", target: id, payload: {} })),\n REFERENCE,\n );\n },\n});\n\nexport const audiencesCommand = defineCommand({\n meta: {\n name: \"audiences\",\n description: `Custom audiences — the company's own customer lists a campaign serves to or leaves out.\n\nExamples:\n baker ads chatgpt audiences\n baker ads chatgpt audiences create --name \"Customers 2026\" --file customers.csv --country ES\n baker ads chatgpt audiences add caud_123 --emails ana@example.com`,\n },\n subCommands: {\n list: audiencesListCommand,\n create: audiencesCreateCommand,\n add: membersCommand(\"add\"),\n remove: membersCommand(\"remove\"),\n archive: audiencesArchiveCommand,\n },\n // A parent must never declare `run`: citty falls through to it after the matched subcommand.\n args: {},\n default: \"list\",\n});\n","import { createHash } from \"node:crypto\";\nimport { parse } from \"csv-parse/sync\";\nimport { type CountryCode, isSupportedCountry, parsePhoneNumberFromString } from \"libphonenumber-js\";\n\n/**\n * An audience's members, hashed here — on the agent's machine — so no raw\n * email or phone ever reaches Baker or ChatGPT Ads. The normalization is\n * ChatGPT Ads' own: an email trimmed and lowercased (dots and plus tags kept),\n * a phone in E.164; each is SHA-256 hex.\n */\n\nfunction sha256(value: string): string {\n return createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\n/**\n * One `@`, a dotted domain, and nothing that separates values — a cell holding\n * `ana@x.com;+34…` is two values run together, never an email to hash.\n */\nfunction normalizedEmail(value: string): string | undefined {\n const email = value.trim().toLowerCase();\n return /^[^@\\s;,|]+@[^@\\s;,|]+\\.[^@\\s;,|]+$/.test(email) ? email : undefined;\n}\n\nfunction normalizedPhone(value: string, defaultCountry: string | undefined): string | undefined {\n const country = defaultCountry && isSupportedCountry(defaultCountry) ? (defaultCountry as CountryCode) : undefined;\n const phone = parsePhoneNumberFromString(value.trim(), country);\n return phone?.isValid() ? phone.number : undefined;\n}\n\nexport function hashedMembers(input: {\n emails: readonly string[];\n phones: readonly string[];\n defaultCountry: string | undefined;\n}): { emailHashes: string[]; phoneHashes: string[]; rejected: string[] } {\n const rejected: string[] = [];\n const emailHashes = new Set<string>();\n const phoneHashes = new Set<string>();\n for (const value of input.emails) {\n const email = normalizedEmail(value);\n email ? emailHashes.add(sha256(email)) : rejected.push(value.trim());\n }\n for (const value of input.phones) {\n const phone = normalizedPhone(value, input.defaultCountry);\n phone ? phoneHashes.add(sha256(phone)) : rejected.push(value.trim());\n }\n return { emailHashes: [...emailHashes], phoneHashes: [...phoneHashes], rejected };\n}\n\n/** A header as its words: lowercased, accents and separators gone — \"Teléfono móvil\" is \"telefono movil\". */\nfunction headerWords(cell: string): string {\n return cell\n .normalize(\"NFD\")\n .replace(/\\p{Diacritic}/gu, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .trim();\n}\n\nconst EMAIL_HEADER = /\\b(e ?mail|correo|mail)\\b/;\nconst PHONE_HEADER = /\\b(phone|telefono|movil|mobile|tel|celular)\\b/;\n\n/**\n * A CSV with an email and/or phone column, or a plain list, one value per\n * line — whatever a marketer exported. A plain list is emails, or phones when\n * no line has an `@`.\n */\nexport function membersFromFile(content: string): { emails: string[]; phones: string[] } {\n // Excel writes `;` where the decimal comma is taken, tabs come from a copied sheet.\n const rows: string[][] = parse(content, {\n bom: true,\n skip_empty_lines: true,\n relax_column_count: true,\n trim: true,\n delimiter: [\",\", \";\", \"\\t\"],\n });\n const header = (rows[0] ?? []).map(headerWords);\n const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));\n const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));\n if (emailColumn >= 0 || phoneColumn >= 0) {\n const cells = (column: number) =>\n column < 0 ? [] : rows.slice(1).flatMap((row) => (row[column] ? [row[column]] : []));\n return { emails: cells(emailColumn), phones: cells(phoneColumn) };\n }\n const values = rows.flatMap((row) => (row[0] ? [row[0]] : []));\n return values.some((value) => value.includes(\"@\")) ? { emails: values, phones: [] } : { emails: [], phones: values };\n}\n"],"mappings":"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","names":[]}
|
package/dist/audit-2AAF6AOX.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
handleLinkedinError,
|
|
3
|
-
resolveAccountIdArg
|
|
4
|
-
} from "./chunk-PFTYKINE.js";
|
|
5
|
-
import {
|
|
6
|
-
writeAdsJson
|
|
7
|
-
} from "./chunk-ZRP7Y2DM.js";
|
|
8
|
-
import {
|
|
9
|
-
NO_CACHE_ARG
|
|
10
|
-
} from "./chunk-AGBBTTKA.js";
|
|
11
|
-
import "./chunk-ZNNQK366.js";
|
|
12
|
-
import "./chunk-CAZGM2NX.js";
|
|
13
|
-
import "./chunk-NZS3KEQ2.js";
|
|
14
|
-
import "./chunk-GIWHHCD6.js";
|
|
15
|
-
import "./chunk-NSBNIPIW.js";
|
|
16
|
-
import "./chunk-2TOIY2WN.js";
|
|
17
|
-
import {
|
|
18
|
-
apiPost
|
|
19
|
-
} from "./chunk-X7VQFLHI.js";
|
|
20
|
-
import "./chunk-LU4HI4KI.js";
|
|
21
|
-
import "./chunk-LGK7UWBN.js";
|
|
22
|
-
import "./chunk-Q7US4OOA.js";
|
|
23
|
-
import "./chunk-YQSBHWOI.js";
|
|
24
|
-
|
|
25
|
-
// src/commands/ads/linkedin/audit.ts
|
|
26
|
-
import { defineCommand } from "citty";
|
|
27
|
-
var SEVERITY_RANK = {
|
|
28
|
-
critical: 0,
|
|
29
|
-
high: 1,
|
|
30
|
-
medium: 2,
|
|
31
|
-
low: 3
|
|
32
|
-
};
|
|
33
|
-
var STATUS_RANK = {
|
|
34
|
-
fail: 0,
|
|
35
|
-
warn: 1,
|
|
36
|
-
partial: 2,
|
|
37
|
-
pass: 3,
|
|
38
|
-
n_a: 4
|
|
39
|
-
};
|
|
40
|
-
function filterFindings(findings, severity, area) {
|
|
41
|
-
return findings.filter((f) => {
|
|
42
|
-
if (severity && !severity.includes(f.severity)) return false;
|
|
43
|
-
if (area && !area.includes(f.area)) return false;
|
|
44
|
-
return true;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function sortFindings(findings) {
|
|
48
|
-
return [...findings].sort((a, b) => {
|
|
49
|
-
const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];
|
|
50
|
-
if (sa !== 0) return sa;
|
|
51
|
-
return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
function renderMarkdown(result) {
|
|
55
|
-
const lines = [];
|
|
56
|
-
lines.push(`# LinkedIn Ads Audit \u2014 ${result.account.name} (${result.account.id})`);
|
|
57
|
-
lines.push("");
|
|
58
|
-
lines.push(
|
|
59
|
-
`**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`
|
|
60
|
-
);
|
|
61
|
-
lines.push("");
|
|
62
|
-
lines.push(
|
|
63
|
-
`**Summary:** ${result.summary.pass} pass \u2022 ${result.summary.critical} critical \u2022 ${result.summary.high} high \u2022 ${result.summary.medium} medium \u2022 ${result.summary.low} low \u2022 ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`
|
|
64
|
-
);
|
|
65
|
-
lines.push("");
|
|
66
|
-
lines.push("| # | Area | Check | Status | Severity | Notes |");
|
|
67
|
-
lines.push("|---|------|-------|--------|----------|-------|");
|
|
68
|
-
result.findings.forEach((f, idx) => {
|
|
69
|
-
const note = noteOf(f);
|
|
70
|
-
lines.push(
|
|
71
|
-
`| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`
|
|
72
|
-
);
|
|
73
|
-
});
|
|
74
|
-
return lines.join("\n");
|
|
75
|
-
}
|
|
76
|
-
function escapeMd(text) {
|
|
77
|
-
return text.replace(/\|/g, "\\|").replace(/\n/g, " ");
|
|
78
|
-
}
|
|
79
|
-
function noteOf(f) {
|
|
80
|
-
if (f.status === "pass") return "";
|
|
81
|
-
const ev = f.evidence ? JSON.stringify(f.evidence) : "";
|
|
82
|
-
const fix = f.fix?.explanation ?? "";
|
|
83
|
-
return [fix, ev].filter(Boolean).join(" \u2014 ");
|
|
84
|
-
}
|
|
85
|
-
var auditCommand = defineCommand({
|
|
86
|
-
meta: {
|
|
87
|
-
name: "audit",
|
|
88
|
-
description: `Run a LinkedIn Ads playbook audit \u2014 30+ checks across Settings, Tracking,
|
|
89
|
-
Audience, Campaigns, Creative, Performance, Bidding, and Compliance.
|
|
90
|
-
|
|
91
|
-
Each finding has {id, area, check, status, severity, evidence, fix} fields with
|
|
92
|
-
playbook citations. The default JSON output is agent-friendly; --format md
|
|
93
|
-
renders a deliverable-ready table that mirrors the google-ads-playbook
|
|
94
|
-
10-audit-summary.md style.
|
|
95
|
-
|
|
96
|
-
Exit code 0 always. Use the JSON 'summary' counts to decide if action is needed.
|
|
97
|
-
|
|
98
|
-
Examples:
|
|
99
|
-
baker ads linkedin audit --account-id 503001492
|
|
100
|
-
baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope
|
|
101
|
-
baker ads linkedin audit --account-id 503001492 --window-days 90
|
|
102
|
-
baker ads linkedin audit --account-id 503001492 --severity critical,high
|
|
103
|
-
baker ads linkedin audit --account-id 503001492 --area Settings,Tracking
|
|
104
|
-
baker ads linkedin audit --account-id 503001492 --format md`
|
|
105
|
-
},
|
|
106
|
-
args: {
|
|
107
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
108
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
109
|
-
"campaign-id": { type: "string", description: "Narrow scope to a single campaign" },
|
|
110
|
-
"window-days": { type: "string", description: "Lookback window for performance checks (default: 30)" },
|
|
111
|
-
severity: { type: "string", description: "CSV severity filter: critical,high,medium,low" },
|
|
112
|
-
area: {
|
|
113
|
-
type: "string",
|
|
114
|
-
description: "CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene"
|
|
115
|
-
},
|
|
116
|
-
format: { type: "string", description: "Output format: json | md (default: json)" },
|
|
117
|
-
"no-cache": NO_CACHE_ARG
|
|
118
|
-
},
|
|
119
|
-
run: async ({ args }) => {
|
|
120
|
-
const accountId = resolveAccountIdArg(args);
|
|
121
|
-
const windowDays = args["window-days"] ? Number(args["window-days"]) : 30;
|
|
122
|
-
if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {
|
|
123
|
-
handleLinkedinError(new Error("--window-days must be 1..365"));
|
|
124
|
-
}
|
|
125
|
-
try {
|
|
126
|
-
const data = await apiPost("/api/ads/linkedin/audit", {
|
|
127
|
-
accountId,
|
|
128
|
-
campaignId: args["campaign-id"] ? String(args["campaign-id"]) : void 0,
|
|
129
|
-
windowDays,
|
|
130
|
-
skipCache: Boolean(args["no-cache"])
|
|
131
|
-
});
|
|
132
|
-
const severityFilter = args.severity?.split(",").map((s) => s.trim().toLowerCase()).filter(Boolean);
|
|
133
|
-
const areaFilter = args.area?.split(",").map((s) => s.trim()).filter(Boolean);
|
|
134
|
-
const filtered = filterFindings(data.findings, severityFilter, areaFilter);
|
|
135
|
-
const sorted = sortFindings(filtered);
|
|
136
|
-
const result = { ...data, findings: sorted };
|
|
137
|
-
const fmt = args.format ?? "json";
|
|
138
|
-
if (fmt === "md") {
|
|
139
|
-
process.stdout.write(`${renderMarkdown(result)}
|
|
140
|
-
`);
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
writeAdsJson({ ok: true, data: result });
|
|
144
|
-
} catch (err) {
|
|
145
|
-
handleLinkedinError(err);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
export {
|
|
150
|
-
auditCommand
|
|
151
|
-
};
|
|
152
|
-
//# sourceMappingURL=audit-2AAF6AOX.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/audit.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface AuditFinding {\n id: string;\n area: string;\n check: string;\n status: \"pass\" | \"fail\" | \"partial\" | \"warn\" | \"n_a\";\n severity: \"critical\" | \"high\" | \"medium\" | \"low\";\n evidence?: Record<string, unknown>;\n fix?: { explanation: string; playbookRef?: string; correctedCommand?: string };\n}\n\ninterface AuditResult {\n account: { urn: string; id: string; name: string };\n scope: { campaigns: number; creatives: number; windowDays: number };\n summary: {\n critical: number;\n high: number;\n medium: number;\n low: number;\n pass: number;\n n_a: number;\n totalChecks: number;\n };\n findings: AuditFinding[];\n}\n\nconst SEVERITY_RANK: Record<AuditFinding[\"severity\"], number> = {\n critical: 0,\n high: 1,\n medium: 2,\n low: 3,\n};\n\nconst STATUS_RANK: Record<AuditFinding[\"status\"], number> = {\n fail: 0,\n warn: 1,\n partial: 2,\n pass: 3,\n n_a: 4,\n};\n\nfunction filterFindings(\n findings: AuditFinding[],\n severity: string[] | undefined,\n area: string[] | undefined,\n): AuditFinding[] {\n return findings.filter((f) => {\n if (severity && !severity.includes(f.severity)) return false;\n if (area && !area.includes(f.area)) return false;\n return true;\n });\n}\n\nfunction sortFindings(findings: AuditFinding[]): AuditFinding[] {\n return [...findings].sort((a, b) => {\n const sa = STATUS_RANK[a.status] - STATUS_RANK[b.status];\n if (sa !== 0) return sa;\n return SEVERITY_RANK[a.severity] - SEVERITY_RANK[b.severity];\n });\n}\n\n/**\n * Render the audit as a markdown table that mirrors\n * google-ads-playbook/10-audit-summary.md so the agent can drop it into a\n * client deliverable as-is.\n */\nfunction renderMarkdown(result: AuditResult): string {\n const lines: string[] = [];\n lines.push(`# LinkedIn Ads Audit — ${result.account.name} (${result.account.id})`);\n lines.push(\"\");\n lines.push(\n `**Scope:** ${result.scope.campaigns} campaigns, ${result.scope.creatives} creatives, last ${result.scope.windowDays}d`,\n );\n lines.push(\"\");\n lines.push(\n `**Summary:** ${result.summary.pass} pass • ${result.summary.critical} critical • ${result.summary.high} high • ${result.summary.medium} medium • ${result.summary.low} low • ${result.summary.n_a} n/a (${result.summary.totalChecks} total)`,\n );\n lines.push(\"\");\n lines.push(\"| # | Area | Check | Status | Severity | Notes |\");\n lines.push(\"|---|------|-------|--------|----------|-------|\");\n result.findings.forEach((f, idx) => {\n const note = noteOf(f);\n lines.push(\n `| ${idx + 1} | ${f.area} | ${escapeMd(f.check)} | ${f.status.toUpperCase()} | ${f.severity} | ${escapeMd(note)} |`,\n );\n });\n return lines.join(\"\\n\");\n}\n\nfunction escapeMd(text: string): string {\n return text.replace(/\\|/g, \"\\\\|\").replace(/\\n/g, \" \");\n}\n\nfunction noteOf(f: AuditFinding): string {\n if (f.status === \"pass\") return \"\";\n const ev = f.evidence ? JSON.stringify(f.evidence) : \"\";\n const fix = f.fix?.explanation ?? \"\";\n return [fix, ev].filter(Boolean).join(\" — \");\n}\n\nexport const auditCommand = defineCommand({\n meta: {\n name: \"audit\",\n description: `Run a LinkedIn Ads playbook audit — 30+ checks across Settings, Tracking,\nAudience, Campaigns, Creative, Performance, Bidding, and Compliance.\n\nEach finding has {id, area, check, status, severity, evidence, fix} fields with\nplaybook citations. The default JSON output is agent-friendly; --format md\nrenders a deliverable-ready table that mirrors the google-ads-playbook\n10-audit-summary.md style.\n\nExit code 0 always. Use the JSON 'summary' counts to decide if action is needed.\n\nExamples:\n baker ads linkedin audit --account-id 503001492\n baker ads linkedin audit --account-id 503001492 --campaign-id 1234 # narrow scope\n baker ads linkedin audit --account-id 503001492 --window-days 90\n baker ads linkedin audit --account-id 503001492 --severity critical,high\n baker ads linkedin audit --account-id 503001492 --area Settings,Tracking\n baker ads linkedin audit --account-id 503001492 --format md`,\n },\n args: {\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 \"campaign-id\": { type: \"string\", description: \"Narrow scope to a single campaign\" },\n \"window-days\": { type: \"string\", description: \"Lookback window for performance checks (default: 30)\" },\n severity: { type: \"string\", description: \"CSV severity filter: critical,high,medium,low\" },\n area: {\n type: \"string\",\n description:\n \"CSV area filter: Settings,Tracking,Audience,Campaigns,Creative,Performance,Bidding,Compliance,Hygiene\",\n },\n format: { type: \"string\", description: \"Output format: json | md (default: json)\" },\n \"no-cache\": NO_CACHE_ARG,\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const windowDays = args[\"window-days\"] ? Number(args[\"window-days\"]) : 30;\n if (!Number.isFinite(windowDays) || windowDays < 1 || windowDays > 365) {\n handleLinkedinError(new Error(\"--window-days must be 1..365\"));\n }\n try {\n const data = await apiPost<AuditResult>(\"/api/ads/linkedin/audit\", {\n accountId,\n campaignId: args[\"campaign-id\"] ? String(args[\"campaign-id\"]) : undefined,\n windowDays,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n\n const severityFilter = (args.severity as string | undefined)\n ?.split(\",\")\n .map((s) => s.trim().toLowerCase())\n .filter(Boolean);\n const areaFilter = (args.area as string | undefined)\n ?.split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n const filtered = filterFindings(data.findings, severityFilter, areaFilter);\n const sorted = sortFindings(filtered);\n const result: AuditResult = { ...data, findings: sorted };\n\n const fmt = (args.format as string | undefined) ?? \"json\";\n if (fmt === \"md\") {\n process.stdout.write(`${renderMarkdown(result)}\\n`);\n return;\n }\n writeAdsJson({ ok: true, data: result });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
noSerpRowsHints
|
|
3
|
-
} from "./chunk-TTLD66NI.js";
|
|
4
|
-
import {
|
|
5
|
-
RESEARCH_DATA_NOTE,
|
|
6
|
-
handleResearchError,
|
|
7
|
-
writeResearchHints,
|
|
8
|
-
writeResearchJson,
|
|
9
|
-
writeResearchOutput
|
|
10
|
-
} from "./chunk-GSKZ3ZDO.js";
|
|
11
|
-
import {
|
|
12
|
-
buildResearchQueryContext,
|
|
13
|
-
warnDefaults
|
|
14
|
-
} from "./chunk-ZNRGH4NS.js";
|
|
15
|
-
import "./chunk-4GAEB6NK.js";
|
|
16
|
-
import "./chunk-ZNNQK366.js";
|
|
17
|
-
import "./chunk-CAZGM2NX.js";
|
|
18
|
-
import "./chunk-NZS3KEQ2.js";
|
|
19
|
-
import "./chunk-GIWHHCD6.js";
|
|
20
|
-
import "./chunk-NSBNIPIW.js";
|
|
21
|
-
import "./chunk-2TOIY2WN.js";
|
|
22
|
-
import {
|
|
23
|
-
apiPost
|
|
24
|
-
} from "./chunk-X7VQFLHI.js";
|
|
25
|
-
import "./chunk-LU4HI4KI.js";
|
|
26
|
-
import "./chunk-LGK7UWBN.js";
|
|
27
|
-
import {
|
|
28
|
-
registerSchema
|
|
29
|
-
} from "./chunk-Q7US4OOA.js";
|
|
30
|
-
import "./chunk-YQSBHWOI.js";
|
|
31
|
-
|
|
32
|
-
// src/commands/research/autocomplete.ts
|
|
33
|
-
import { defineCommand } from "citty";
|
|
34
|
-
registerSchema({
|
|
35
|
-
command: "research.autocomplete",
|
|
36
|
-
description: "Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
37
|
-
args: {
|
|
38
|
-
keyword: { type: "string", description: "Seed keyword (positional)", required: true },
|
|
39
|
-
location: {
|
|
40
|
-
type: "string",
|
|
41
|
-
description: "Country code (us, uk, es, de...) or DataForSEO location code. Defaults to us (United States) if omitted",
|
|
42
|
-
required: false
|
|
43
|
-
},
|
|
44
|
-
language: {
|
|
45
|
-
type: "string",
|
|
46
|
-
description: "Language code or name. Defaults to en (English) if omitted",
|
|
47
|
-
required: false
|
|
48
|
-
},
|
|
49
|
-
limit: { type: "string", description: "Max suggestions (default: 10, max: 20)", required: false },
|
|
50
|
-
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
var FIELDS = {
|
|
54
|
-
suggestion: "Autocomplete suggestion from Google"
|
|
55
|
-
};
|
|
56
|
-
var autocompleteCommand = defineCommand({
|
|
57
|
-
meta: {
|
|
58
|
-
name: "autocomplete",
|
|
59
|
-
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
60
|
-
|
|
61
|
-
Examples:
|
|
62
|
-
baker research autocomplete "running shoes"
|
|
63
|
-
baker research autocomplete "crm" --location uk --limit 5`
|
|
64
|
-
},
|
|
65
|
-
args: {
|
|
66
|
-
keyword: { type: "positional", description: "Seed keyword", required: true },
|
|
67
|
-
location: { type: "string", description: "Country code or location code (default: us)", required: false },
|
|
68
|
-
language: { type: "string", description: "Language code or name (default: en)", required: false },
|
|
69
|
-
limit: { type: "string", description: "Max suggestions (default: 10, max: 20)", required: false },
|
|
70
|
-
output: { type: "string", description: "Format: json|csv|md|jsonl", required: false, default: "json" },
|
|
71
|
-
"no-cache": { type: "boolean", description: "Skip server cache, hit API directly", required: false }
|
|
72
|
-
},
|
|
73
|
-
run: async ({ args }) => {
|
|
74
|
-
const keyword = args.keyword;
|
|
75
|
-
const location = args.location || void 0;
|
|
76
|
-
const language = args.language || void 0;
|
|
77
|
-
const limit = args.limit ? Number(args.limit) : void 0;
|
|
78
|
-
const skipCache = args["no-cache"] ? true : void 0;
|
|
79
|
-
const queryContext = buildResearchQueryContext(location, language);
|
|
80
|
-
try {
|
|
81
|
-
const data = await apiPost("/api/research/autocomplete", {
|
|
82
|
-
keyword,
|
|
83
|
-
location,
|
|
84
|
-
language,
|
|
85
|
-
limit,
|
|
86
|
-
skipCache
|
|
87
|
-
});
|
|
88
|
-
warnDefaults(queryContext);
|
|
89
|
-
const format = args.output || "json";
|
|
90
|
-
const hints = noSerpRowsHints(data.length, queryContext);
|
|
91
|
-
if (format !== "json") {
|
|
92
|
-
writeResearchOutput(data, format);
|
|
93
|
-
writeResearchHints(hints, format);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
writeResearchJson({
|
|
97
|
-
ok: true,
|
|
98
|
-
data,
|
|
99
|
-
fields: FIELDS,
|
|
100
|
-
note: RESEARCH_DATA_NOTE,
|
|
101
|
-
query_context: queryContext,
|
|
102
|
-
hints
|
|
103
|
-
});
|
|
104
|
-
} catch (err) {
|
|
105
|
-
handleResearchError(err);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
export {
|
|
110
|
-
autocompleteCommand
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=autocomplete-3GSKRNCZ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/research/autocomplete.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { buildResearchQueryContext, warnDefaults } from \"../../geo-context.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { noSerpRowsHints } from \"./hints.ts\";\nimport {\n handleResearchError,\n RESEARCH_DATA_NOTE,\n writeResearchHints,\n writeResearchJson,\n writeResearchOutput,\n} from \"./output.ts\";\n\nregisterSchema({\n command: \"research.autocomplete\",\n description:\n \"Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. If --location and --language are omitted, defaults to United States (us) and English (en).\",\n args: {\n keyword: { type: \"string\", description: \"Seed keyword (positional)\", required: true },\n location: {\n type: \"string\",\n description:\n \"Country code (us, uk, es, de...) or DataForSEO location code. Defaults to us (United States) if omitted\",\n required: false,\n },\n language: {\n type: \"string\",\n description: \"Language code or name. Defaults to en (English) if omitted\",\n required: false,\n },\n limit: { type: \"string\", description: \"Max suggestions (default: 10, max: 20)\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip server cache, hit API directly\", required: false },\n },\n});\n\ninterface AutocompleteResult {\n suggestion: string;\n}\n\nconst FIELDS: Record<string, string> = {\n suggestion: \"Autocomplete suggestion from Google\",\n};\n\nexport const autocompleteCommand = defineCommand({\n meta: {\n name: \"autocomplete\",\n description: `Get Google Autocomplete suggestions for keyword expansion.\n\nExamples:\n baker research autocomplete \"running shoes\"\n baker research autocomplete \"crm\" --location uk --limit 5`,\n },\n args: {\n keyword: { type: \"positional\", description: \"Seed keyword\", required: true },\n location: { type: \"string\", description: \"Country code or location code (default: us)\", required: false },\n language: { type: \"string\", description: \"Language code or name (default: en)\", required: false },\n limit: { type: \"string\", description: \"Max suggestions (default: 10, max: 20)\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|md|jsonl\", required: false, default: \"json\" },\n \"no-cache\": { type: \"boolean\", description: \"Skip server cache, hit API directly\", required: false },\n },\n run: async ({ args }) => {\n const keyword = args.keyword as string;\n const location = (args.location as string) || undefined;\n const language = (args.language as string) || undefined;\n const limit = args.limit ? Number(args.limit) : undefined;\n const skipCache = args[\"no-cache\"] ? true : undefined;\n const queryContext = buildResearchQueryContext(location, language);\n\n try {\n const data = await apiPost<AutocompleteResult[]>(\"/api/research/autocomplete\", {\n keyword,\n location,\n language,\n limit,\n skipCache,\n });\n\n warnDefaults(queryContext);\n const format = (args.output as string) || \"json\";\n const hints = noSerpRowsHints(data.length, queryContext);\n if (format !== \"json\") {\n writeResearchOutput(data as unknown as Array<Record<string, unknown>>, format);\n writeResearchHints(hints, format);\n return;\n }\n writeResearchJson({\n ok: true,\n data,\n fields: FIELDS,\n note: RESEARCH_DATA_NOTE,\n query_context: queryContext,\n hints,\n });\n } catch (err) {\n handleResearchError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAa9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,KAAK;AAAA,IACpF,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aACE;AAAA,MACF,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,YAAY,EAAE,MAAM,WAAW,aAAa,uCAAuC,UAAU,MAAM;AAAA,EACrG;AACF,CAAC;AAMD,IAAM,SAAiC;AAAA,EACrC,YAAY;AACd;AAEO,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf;AAAA,EACA,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,cAAc,aAAa,gBAAgB,UAAU,KAAK;AAAA,IAC3E,UAAU,EAAE,MAAM,UAAU,aAAa,+CAA+C,UAAU,MAAM;AAAA,IACxG,UAAU,EAAE,MAAM,UAAU,aAAa,uCAAuC,UAAU,MAAM;AAAA,IAChG,OAAO,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAChG,QAAQ,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,OAAO,SAAS,OAAO;AAAA,IACrG,YAAY,EAAE,MAAM,WAAW,aAAa,uCAAuC,UAAU,MAAM;AAAA,EACrG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,UAAU,KAAK;AACrB,UAAM,WAAY,KAAK,YAAuB;AAC9C,UAAM,WAAY,KAAK,YAAuB;AAC9C,UAAM,QAAQ,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAChD,UAAM,YAAY,KAAK,UAAU,IAAI,OAAO;AAC5C,UAAM,eAAe,0BAA0B,UAAU,QAAQ;AAEjE,QAAI;AACF,YAAM,OAAO,MAAM,QAA8B,8BAA8B;AAAA,QAC7E;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAED,mBAAa,YAAY;AACzB,YAAM,SAAU,KAAK,UAAqB;AAC1C,YAAM,QAAQ,gBAAgB,KAAK,QAAQ,YAAY;AACvD,UAAI,WAAW,QAAQ;AACrB,4BAAoB,MAAmD,MAAM;AAC7E,2BAAmB,OAAO,MAAM;AAChC;AAAA,MACF;AACA,wBAAkB;AAAA,QAChB,IAAI;AAAA,QACJ;AAAA,QACA,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,eAAe;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/avatars-N6W6HUPP.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import "./chunk-YQSBHWOI.js";
|
|
2
|
-
|
|
3
|
-
// src/commands/avatars/index.ts
|
|
4
|
-
import { defineCommand } from "citty";
|
|
5
|
-
var avatarsCommand = defineCommand({
|
|
6
|
-
meta: {
|
|
7
|
-
name: "avatars",
|
|
8
|
-
description: `Reusable AI presenters this company can cast into images and video. An avatar holds one settled identity, so the same face can carry a whole campaign. Subcommands: list, get, create, research, update, delete.
|
|
9
|
-
|
|
10
|
-
How casting works:
|
|
11
|
-
1. baker avatars list See who this company already has (reuse before you create)
|
|
12
|
-
2. baker avatars get <handle> Status, identity sheet URL, subject description
|
|
13
|
-
3. baker images generate "<scene>" --reference <sheetUrl>
|
|
14
|
-
Ground the render on the identity sheet, never on a source photo,
|
|
15
|
-
and copy the subject description into the prompt verbatim
|
|
16
|
-
|
|
17
|
-
Examples:
|
|
18
|
-
baker avatars list --status ready --output md
|
|
19
|
-
baker avatars get marta --full
|
|
20
|
-
baker avatars create --name "Marta" --subject "woman in her early 40s, shoulder-length dark hair, light olive skin"
|
|
21
|
-
baker avatars research "Lautaro Suarez, CTO at Vibiz" --create A real, named person, from their public photos
|
|
22
|
-
baker avatars update marta --subject "\u2026" --regenerate-sheet
|
|
23
|
-
baker avatars delete marta --archive
|
|
24
|
-
Full guide: __tooling__/docs/tools/baker/avatars.md`
|
|
25
|
-
},
|
|
26
|
-
subCommands: {
|
|
27
|
-
list: () => import("./list-WIYIF2CI.js").then((m) => m.listCommand),
|
|
28
|
-
get: () => import("./get-75MIX7TJ.js").then((m) => m.getCommand),
|
|
29
|
-
create: () => import("./create-7D4VD4TC.js").then((m) => m.createCommand),
|
|
30
|
-
research: () => import("./research-OV53DIBX.js").then((m) => m.researchCommand),
|
|
31
|
-
update: () => import("./update-GV3T7ZRC.js").then((m) => m.updateCommand),
|
|
32
|
-
delete: () => import("./delete-ULUQIENX.js").then((m) => m.deleteCommand)
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
export {
|
|
36
|
-
avatarsCommand
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=avatars-N6W6HUPP.js.map
|