@koda-sl/baker-cli 0.496.0 → 0.497.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 +25 -4
- package/dist/account-ZKJFX2GK.js +80 -0
- package/dist/account-ZKJFX2GK.js.map +1 -0
- package/dist/account-users-SZCYHVBM.js +62 -0
- package/dist/account-users-SZCYHVBM.js.map +1 -0
- package/dist/accounts-5DFYKYSM.js +78 -0
- package/dist/accounts-5DFYKYSM.js.map +1 -0
- package/dist/accounts-OGAIQNE6.js +612 -0
- package/dist/accounts-OGAIQNE6.js.map +1 -0
- package/dist/actions-FMNJSOBA.js +55 -0
- package/dist/activecampaign-LYYYH6XD.js +936 -0
- package/dist/activecampaign-LYYYH6XD.js.map +1 -0
- package/dist/add-AOQLZRPC.js +80 -0
- package/dist/add-AOQLZRPC.js.map +1 -0
- package/dist/add-HWXEPSZF.js +105 -0
- package/dist/add-HWXEPSZF.js.map +1 -0
- package/dist/add-VDZPGZF5.js +148 -0
- package/dist/add-VDZPGZF5.js.map +1 -0
- package/dist/add-YYP3O536.js +303 -0
- package/dist/add-YYP3O536.js.map +1 -0
- package/dist/ads-OLXSDPD6.js +40 -0
- package/dist/advertisers-STYAIX72.js +121 -0
- package/dist/advertisers-STYAIX72.js.map +1 -0
- package/dist/analytics-6WBK4VFO.js +1977 -0
- package/dist/analytics-6WBK4VFO.js.map +1 -0
- package/dist/analytics-DHB325DM.js +434 -0
- package/dist/analytics-DHB325DM.js.map +1 -0
- package/dist/assign-BFXHYTMF.js +78 -0
- package/dist/assign-BFXHYTMF.js.map +1 -0
- package/dist/audience-size-XWHZV2GH.js +74 -0
- package/dist/audience-size-XWHZV2GH.js.map +1 -0
- package/dist/audit-IYGRU7LD.js +152 -0
- package/dist/audit-IYGRU7LD.js.map +1 -0
- package/dist/autocomplete-SDDSJTAF.js +112 -0
- package/dist/autocomplete-SDDSJTAF.js.map +1 -0
- package/dist/avatars-I4H3NMEJ.js +38 -0
- package/dist/bid-pricing-OVYBDRMV.js +101 -0
- package/dist/bid-pricing-OVYBDRMV.js.map +1 -0
- package/dist/brand-3V7ECY7D.js +22 -0
- package/dist/brief-U2W7KMFC.js +539 -0
- package/dist/brief-U2W7KMFC.js.map +1 -0
- package/dist/campaign-groups-FJHBVUA3.js +97 -0
- package/dist/campaign-groups-FJHBVUA3.js.map +1 -0
- package/dist/campaign-writes-XKYYMZML.js +166 -0
- package/dist/campaign-writes-XKYYMZML.js.map +1 -0
- package/dist/campaigns-E5UW4I3X.js +111 -0
- package/dist/campaigns-E5UW4I3X.js.map +1 -0
- package/dist/campaigns-MCB76NPQ.js +107 -0
- package/dist/canvas-JCNKMGCG.js +46 -0
- package/dist/capabilities-CLTZCXCZ.js +145 -0
- package/dist/capabilities-CLTZCXCZ.js.map +1 -0
- package/dist/chatgpt-XFZ42NXC.js +47 -0
- package/dist/chats-DTJSBDWO.js +277 -0
- package/dist/chats-DTJSBDWO.js.map +1 -0
- package/dist/check-CZTS64AW.js +105 -0
- package/dist/check-CZTS64AW.js.map +1 -0
- package/dist/chunk-2YTBPRRG.js +207 -0
- package/dist/chunk-3SNCMEJB.js +97 -0
- package/dist/chunk-7QGFO35A.js +23 -0
- package/dist/chunk-AV7ALENU.js +191 -0
- package/dist/chunk-BRLFQ4VX.js +604 -0
- package/dist/chunk-CAZGM2NX.js +92 -0
- package/dist/chunk-CAZGM2NX.js.map +1 -0
- package/dist/chunk-DJE7UXYT.js +831 -0
- package/dist/chunk-EFWXYUSK.js +139 -0
- package/dist/chunk-EONSZAZB.js +3868 -0
- package/dist/chunk-FALJQCWL.js +661 -0
- package/dist/chunk-FALJQCWL.js.map +1 -0
- package/dist/chunk-FG3MV2XM.js +89 -0
- package/dist/chunk-FKG476GH.js +392 -0
- package/dist/chunk-FUGQSIYG.js +297 -0
- package/dist/chunk-GZ4A2VYW.js +39 -0
- package/dist/chunk-GZ4A2VYW.js.map +1 -0
- package/dist/chunk-HPLHAHG5.js +275 -0
- package/dist/chunk-I24YT2KG.js +122 -0
- package/dist/chunk-IFDZZOUC.js +903 -0
- package/dist/chunk-JVVUI55M.js +455 -0
- package/dist/chunk-KKSHEPBY.js +363 -0
- package/dist/chunk-KQ7RCLGC.js +547 -0
- package/dist/chunk-L7WMS5PW.js +172 -0
- package/dist/chunk-LBRO4MTL.js +19 -0
- package/dist/chunk-LNRPOULW.js +224 -0
- package/dist/chunk-LX6WC2XZ.js +942 -0
- package/dist/chunk-MMGTJBM6.js +142 -0
- package/dist/chunk-NZS3KEQ2.js +97 -0
- package/dist/chunk-NZS3KEQ2.js.map +1 -0
- package/dist/chunk-O37VU7FG.js +6799 -0
- package/dist/chunk-O37VU7FG.js.map +1 -0
- package/dist/chunk-OEZYSL3U.js +51 -0
- package/dist/chunk-OOVHBMQB.js +103 -0
- package/dist/chunk-PTH7VWKK.js +159 -0
- package/dist/chunk-PYD6IGW6.js +401 -0
- package/dist/chunk-PYD6IGW6.js.map +1 -0
- package/dist/chunk-QE2E4EYJ.js +349 -0
- package/dist/chunk-QE2E4EYJ.js.map +1 -0
- package/dist/chunk-QZF4BVKL.js +66 -0
- package/dist/chunk-RITUSBYO.js +61 -0
- package/dist/chunk-SSTL3A7Z.js +206 -0
- package/dist/chunk-SZNGQ2GF.js +64 -0
- package/dist/chunk-SZNGQ2GF.js.map +1 -0
- package/dist/chunk-TD4SO6TR.js +169 -0
- package/dist/chunk-UZ4RTOFG.js +91 -0
- package/dist/chunk-VAX7PFQV.js +592 -0
- package/dist/chunk-VDRSZK4P.js +494 -0
- package/dist/chunk-VNU2EYD4.js +344 -0
- package/dist/chunk-WT4WDIXA.js +156 -0
- package/dist/chunk-XEX23CIB.js +160 -0
- package/dist/chunk-XXDF25BW.js +8939 -0
- package/dist/chunk-YJ3LSFMX.js +249 -0
- package/dist/chunk-YVK5RT3B.js +197 -0
- package/dist/chunk-YWWRLZUR.js +433 -0
- package/dist/chunk-Z4S5BCVZ.js +57 -0
- package/dist/chunk-ZYGK7GAK.js +1079 -0
- package/dist/claim-TSFPWTQY.js +198 -0
- package/dist/claim-TSFPWTQY.js.map +1 -0
- package/dist/cli.js +38 -37
- package/dist/cli.js.map +1 -1
- package/dist/companies-P7FZNJQV.js +196 -0
- package/dist/companies-P7FZNJQV.js.map +1 -0
- package/dist/complete-SYDIHMD5.js +82 -0
- package/dist/complete-SYDIHMD5.js.map +1 -0
- package/dist/connect-COS6G45S.js +43 -0
- package/dist/conversation-UJOWMJRH.js +94 -0
- package/dist/conversation-UJOWMJRH.js.map +1 -0
- package/dist/conversions-ONOIEILU.js +138 -0
- package/dist/conversions-ONOIEILU.js.map +1 -0
- package/dist/create-DPQRYQXK.js +208 -0
- package/dist/create-DPQRYQXK.js.map +1 -0
- package/dist/create-JD76Z4A4.js +60 -0
- package/dist/create-JD76Z4A4.js.map +1 -0
- package/dist/create-NOT3HGP2.js +133 -0
- package/dist/create-NOT3HGP2.js.map +1 -0
- package/dist/create-ZYEB7SHF.js +236 -0
- package/dist/create-ZYEB7SHF.js.map +1 -0
- package/dist/creatives-LRSELC7Y.js +221 -0
- package/dist/creatives-LRSELC7Y.js.map +1 -0
- package/dist/creatives-SEQHJD2M.js +58 -0
- package/dist/credentials-LHPTUVVA.js +288 -0
- package/dist/credentials-LHPTUVVA.js.map +1 -0
- package/dist/critique-Q7GSZ5RP.js +1459 -0
- package/dist/critique-Q7GSZ5RP.js.map +1 -0
- package/dist/critique-RR2XOQCE.js +228 -0
- package/dist/critique-RR2XOQCE.js.map +1 -0
- package/dist/crm-J7EU32PL.js +319 -0
- package/dist/crm-J7EU32PL.js.map +1 -0
- package/dist/crm-MC444ZVU.js +225 -0
- package/dist/crm-MC444ZVU.js.map +1 -0
- package/dist/customers-LMSX33FO.js +57 -0
- package/dist/delete-BQBVATMF.js +55 -0
- package/dist/delete-BQBVATMF.js.map +1 -0
- package/dist/delete-K7A3AUPH.js +65 -0
- package/dist/delete-K7A3AUPH.js.map +1 -0
- package/dist/delete-VV2ICIHF.js +67 -0
- package/dist/delete-VV2ICIHF.js.map +1 -0
- package/dist/demographics-7GWUXXS6.js +139 -0
- package/dist/demographics-7GWUXXS6.js.map +1 -0
- package/dist/discard-3CLZ4DPD.js +67 -0
- package/dist/discard-3CLZ4DPD.js.map +1 -0
- package/dist/domain-ZS74BSE6.js +99 -0
- package/dist/domain-ZS74BSE6.js.map +1 -0
- package/dist/draft-J3B33RAZ.js +308 -0
- package/dist/draft-J3B33RAZ.js.map +1 -0
- package/dist/draft-MZLWVX3D.js +218 -0
- package/dist/draft-MZLWVX3D.js.map +1 -0
- package/dist/draft-R56PIXCV.js +333 -0
- package/dist/draft-R56PIXCV.js.map +1 -0
- package/dist/experiment-7RJ5X2LL.js +1397 -0
- package/dist/experiments-NOSJJMYI.js +234 -0
- package/dist/experiments-NOSJJMYI.js.map +1 -0
- package/dist/facets-E6SHYUAI.js +115 -0
- package/dist/facets-E6SHYUAI.js.map +1 -0
- package/dist/feedback-HXCQBV7S.js +107 -0
- package/dist/feedback-HXCQBV7S.js.map +1 -0
- package/dist/feedback-record-GXPYXNT6.js +261 -0
- package/dist/feedback-record-GXPYXNT6.js.map +1 -0
- package/dist/fetch-HMUGSRE4.js +177 -0
- package/dist/fetch-HMUGSRE4.js.map +1 -0
- package/dist/find-2EPXK5RF.js +134 -0
- package/dist/fit-W7UNFZT5.js +63 -0
- package/dist/flows-SO5J3M3X.js +248 -0
- package/dist/flows-SO5J3M3X.js.map +1 -0
- package/dist/fonts-N42UYWTX.js +37 -0
- package/dist/forecast-24LGJVLC.js +119 -0
- package/dist/forecast-24LGJVLC.js.map +1 -0
- package/dist/funnel-NYT36B3C.js +395 -0
- package/dist/funnel-NYT36B3C.js.map +1 -0
- package/dist/ga4-6EIQC2TG.js +55 -0
- package/dist/get-KAGO4EC5.js +80 -0
- package/dist/get-KAGO4EC5.js.map +1 -0
- package/dist/get-PZX27LQY.js +38 -0
- package/dist/get-PZX27LQY.js.map +1 -0
- package/dist/get-R5JAFHTH.js +57 -0
- package/dist/get-R5JAFHTH.js.map +1 -0
- package/dist/google-O5OI6QFU.js +136 -0
- package/dist/google-ads-6X4BHGUR.js +196 -0
- package/dist/google-ads-6X4BHGUR.js.map +1 -0
- package/dist/gsc-BM3T2GDL.js +30 -0
- package/dist/history-LGOWYLBE.js +134 -0
- package/dist/history-LGOWYLBE.js.map +1 -0
- package/dist/hubspot-LJB3ETUT.js +780 -0
- package/dist/hubspot-LJB3ETUT.js.map +1 -0
- package/dist/icon-B7DG53S5.js +137 -0
- package/dist/ideas-DYN2DMFN.js +41 -0
- package/dist/images-EQCUXEHF.js +92 -0
- package/dist/ingest-B46AY3QU.js +24 -0
- package/dist/ingest-T7ZS2R4U.js +108 -0
- package/dist/ingest-T7ZS2R4U.js.map +1 -0
- package/dist/inspect-BSNGAT2S.js +190 -0
- package/dist/inspect-BSNGAT2S.js.map +1 -0
- package/dist/inspiration-TCCKM4R7.js +53 -0
- package/dist/keyword-metrics-KNTIN4ZK.js +198 -0
- package/dist/keyword-metrics-KNTIN4ZK.js.map +1 -0
- package/dist/keywords-for-site-S4MXGXWR.js +129 -0
- package/dist/keywords-for-site-S4MXGXWR.js.map +1 -0
- package/dist/landing-WVPA7NBR.js +28 -0
- package/dist/leads-EINV5FK3.js +113 -0
- package/dist/leads-EINV5FK3.js.map +1 -0
- package/dist/learn-7Z2VR6MS.js +205 -0
- package/dist/learn-7Z2VR6MS.js.map +1 -0
- package/dist/line-item-writes-Z3TIB5KZ.js +209 -0
- package/dist/line-item-writes-Z3TIB5KZ.js.map +1 -0
- package/dist/line-items-OEWYOPFP.js +103 -0
- package/dist/link-KYHUIPJE.js +65 -0
- package/dist/link-KYHUIPJE.js.map +1 -0
- package/dist/linkedin-JVB4HXJC.js +1314 -0
- package/dist/linkedin-JVB4HXJC.js.map +1 -0
- package/dist/list-EORTO73V.js +93 -0
- package/dist/list-EORTO73V.js.map +1 -0
- package/dist/list-QQVLURKH.js +152 -0
- package/dist/list-QQVLURKH.js.map +1 -0
- package/dist/list-QWGKRUSM.js +65 -0
- package/dist/list-QWGKRUSM.js.map +1 -0
- package/dist/list-WRBWQASJ.js +50 -0
- package/dist/list-Z6NMNK3T.js +304 -0
- package/dist/list-Z6NMNK3T.js.map +1 -0
- package/dist/log-RUMKYPYK.js +93 -0
- package/dist/log-RUMKYPYK.js.map +1 -0
- package/dist/logo-QTSBKP2J.js +18 -0
- package/dist/make-IJGCQA7C.js +1354 -0
- package/dist/make-IJGCQA7C.js.map +1 -0
- package/dist/map-QZHIJFQT.js +434 -0
- package/dist/map-QZHIJFQT.js.map +1 -0
- package/dist/mcp-ZH2XDV5P.js +715 -0
- package/dist/mcp-ZH2XDV5P.js.map +1 -0
- package/dist/media-sources-SQ2RPDBO.js +35 -0
- package/dist/media-sources-SQ2RPDBO.js.map +1 -0
- package/dist/members-4YX7JEZM.js +45 -0
- package/dist/members-4YX7JEZM.js.map +1 -0
- package/dist/normalize-ABIWLRIT.js +142 -0
- package/dist/normalize-ABIWLRIT.js.map +1 -0
- package/dist/options-SVCQVTNE.js +123 -0
- package/dist/options-SVCQVTNE.js.map +1 -0
- package/dist/organization-FNKDC742.js +947 -0
- package/dist/organization-FNKDC742.js.map +1 -0
- package/dist/performance-HTU5FR2K.js +25 -0
- package/dist/posts-3DAPTBH2.js +34 -0
- package/dist/posts-3DAPTBH2.js.map +1 -0
- package/dist/promoted-tweet-writes-DD3CJNWW.js +181 -0
- package/dist/promoted-tweet-writes-DD3CJNWW.js.map +1 -0
- package/dist/promoted-tweets-TTWN5OMW.js +119 -0
- package/dist/publish-Z62KGDJ2.js +342 -0
- package/dist/publish-Z62KGDJ2.js.map +1 -0
- package/dist/reddit-6C3PT5CT.js +27 -0
- package/dist/refresh-HCQXVFVR.js +95 -0
- package/dist/refresh-HCQXVFVR.js.map +1 -0
- package/dist/refresh-ZCGH64OZ.js +42 -0
- package/dist/refresh-ZCGH64OZ.js.map +1 -0
- package/dist/release-FIHW2HCH.js +61 -0
- package/dist/release-FIHW2HCH.js.map +1 -0
- package/dist/remove-CBR7NVMI.js +51 -0
- package/dist/remove-CBR7NVMI.js.map +1 -0
- package/dist/remove-PUZP5GWN.js +49 -0
- package/dist/remove-PUZP5GWN.js.map +1 -0
- package/dist/reopen-EJGLRQWR.js +64 -0
- package/dist/reopen-EJGLRQWR.js.map +1 -0
- package/dist/rerun-TVBZXASH.js +91 -0
- package/dist/rerun-TVBZXASH.js.map +1 -0
- package/dist/research-L25D4WHQ.js +263 -0
- package/dist/research-L25D4WHQ.js.map +1 -0
- package/dist/research-YCMMQVK6.js +62 -0
- package/dist/reset-HKKCWKZ7.js +55 -0
- package/dist/reset-HKKCWKZ7.js.map +1 -0
- package/dist/reset-SRL6I6GP.js +55 -0
- package/dist/reset-SRL6I6GP.js.map +1 -0
- package/dist/resolve-POMTTAFR.js +122 -0
- package/dist/resolve-POMTTAFR.js.map +1 -0
- package/dist/retry-MEPTOAV2.js +61 -0
- package/dist/retry-MEPTOAV2.js.map +1 -0
- package/dist/retry-RNGM3KKA.js +63 -0
- package/dist/retry-RNGM3KKA.js.map +1 -0
- package/dist/revenue-X4KPTSAM.js +89 -0
- package/dist/revenue-X4KPTSAM.js.map +1 -0
- package/dist/rules-VK7YA23Q.js +97 -0
- package/dist/rules-VK7YA23Q.js.map +1 -0
- package/dist/rules-add-VG7AT6EG.js +463 -0
- package/dist/rules-add-VG7AT6EG.js.map +1 -0
- package/dist/run-DIDQSZU7.js +67 -0
- package/dist/run-DIDQSZU7.js.map +1 -0
- package/dist/run-SR7DJ7M5.js +66 -0
- package/dist/scaffold-ad-46GTFUMP.js +1512 -0
- package/dist/scaffold-ad-46GTFUMP.js.map +1 -0
- package/dist/scaffold-static-ad-U63V4UHR.js +1006 -0
- package/dist/scaffold-static-ad-U63V4UHR.js.map +1 -0
- package/dist/scaffold-video-4DNTURH6.js +884 -0
- package/dist/scaffold-video-4DNTURH6.js.map +1 -0
- package/dist/schedule-JO66N7XO.js +62 -0
- package/dist/schedule-JO66N7XO.js.map +1 -0
- package/dist/schedule-JZBIX6LH.js +67 -0
- package/dist/schedule-JZBIX6LH.js.map +1 -0
- package/dist/scheduled-agents-N63EZNY6.js +50 -0
- package/dist/schema-B2XANMEY.js +133 -0
- package/dist/schema-B2XANMEY.js.map +1 -0
- package/dist/schema-C6SGBNA6.js +69 -0
- package/dist/search-7GHS3OUZ.js +51 -0
- package/dist/search-7GHS3OUZ.js.map +1 -0
- package/dist/search-W5HZUJA2.js +175 -0
- package/dist/search-W5HZUJA2.js.map +1 -0
- package/dist/select-LMGLNFWB.js +102 -0
- package/dist/select-LMGLNFWB.js.map +1 -0
- package/dist/set-prompt-M5E3UZDM.js +194 -0
- package/dist/set-prompt-M5E3UZDM.js.map +1 -0
- package/dist/setup-links-ERBQSKAB.js +142 -0
- package/dist/setup-links-ERBQSKAB.js.map +1 -0
- package/dist/site-PNVFJRYK.js +178 -0
- package/dist/site-PNVFJRYK.js.map +1 -0
- package/dist/sources-DMZJPLKC.js +455 -0
- package/dist/sources-DMZJPLKC.js.map +1 -0
- package/dist/sources-HN3GCEDX.js +30 -0
- package/dist/stale-VWN25WTL.js +72 -0
- package/dist/stale-VWN25WTL.js.map +1 -0
- package/dist/stats-CVF6AC7R.js +34 -0
- package/dist/status-SF7DTPCJ.js +63 -0
- package/dist/status-SF7DTPCJ.js.map +1 -0
- package/dist/stock-4LPQ6SM7.js +179 -0
- package/dist/studio-NZ6WQ7OE.js +49 -0
- package/dist/suggest-WMMEQCUH.js +66 -0
- package/dist/suggest-WMMEQCUH.js.map +1 -0
- package/dist/sync-F7VNZLWY.js +55 -0
- package/dist/sync-F7VNZLWY.js.map +1 -0
- package/dist/sync-HVNDPBOD.js +55 -0
- package/dist/sync-HVNDPBOD.js.map +1 -0
- package/dist/sync-definition-CKEUYKWN.js +65 -0
- package/dist/tag-KTQ2FV5C.js +57 -0
- package/dist/tag-KTQ2FV5C.js.map +1 -0
- package/dist/tag-manager-FLXXLNKP.js +43 -0
- package/dist/tags-EUOOSAKN.js +26 -0
- package/dist/tags-KOMAP2G5.js +21 -0
- package/dist/tags-KOMAP2G5.js.map +1 -0
- package/dist/tags-TKXJGTR3.js +21 -0
- package/dist/tags-TKXJGTR3.js.map +1 -0
- package/dist/tags-VWIPDCUA.js +225 -0
- package/dist/tags-VWIPDCUA.js.map +1 -0
- package/dist/tags-XAB4HWGW.js +21 -0
- package/dist/tags-XAB4HWGW.js.map +1 -0
- package/dist/targeting-criteria-HE7K52WN.js +113 -0
- package/dist/targets-NA4XPDBF.js +104 -0
- package/dist/targets-NA4XPDBF.js.map +1 -0
- package/dist/testimonials-3Q5XM7JD.js +32 -0
- package/dist/top-companies-TKO4QGPJ.js +109 -0
- package/dist/top-companies-TKO4QGPJ.js.map +1 -0
- package/dist/translate-YVIZ5T44.js +605 -0
- package/dist/translate-YVIZ5T44.js.map +1 -0
- package/dist/triggers-QX7VW7UO.js +143 -0
- package/dist/triggers-QX7VW7UO.js.map +1 -0
- package/dist/unlink-64SRPUNG.js +68 -0
- package/dist/unlink-64SRPUNG.js.map +1 -0
- package/dist/unstage-5X2MOUMF.js +86 -0
- package/dist/unstage-5X2MOUMF.js.map +1 -0
- package/dist/update-22ZBHURE.js +81 -0
- package/dist/update-22ZBHURE.js.map +1 -0
- package/dist/update-2LTPSGWT.js +99 -0
- package/dist/update-2LTPSGWT.js.map +1 -0
- package/dist/update-DOKS7ATM.js +189 -0
- package/dist/update-DOKS7ATM.js.map +1 -0
- package/dist/update-FB6X463M.js +64 -0
- package/dist/update-FB6X463M.js.map +1 -0
- package/dist/update-QIZ7XFAM.js +153 -0
- package/dist/update-QIZ7XFAM.js.map +1 -0
- package/dist/upload-XJ7TUVIK.js +127 -0
- package/dist/upload-XJ7TUVIK.js.map +1 -0
- package/dist/url-params-KLQOLNPS.js +99 -0
- package/dist/url-params-KLQOLNPS.js.map +1 -0
- package/dist/validate-YTBJBG44.js +118 -0
- package/dist/validate-YTBJBG44.js.map +1 -0
- package/dist/videos-WAPUPJVT.js +39 -0
- package/dist/viewer-check-GHQA3UY2.js +81 -0
- package/dist/web-6JMWERTT.js +141 -0
- package/dist/web-6JMWERTT.js.map +1 -0
- package/dist/winning-ads-XCVUAIOU.js +86 -0
- package/dist/write-commands-N74CDMQM.js +1493 -0
- package/dist/write-commands-N74CDMQM.js.map +1 -0
- package/dist/x-SI4KYDEY.js +47 -0
- package/package.json +1 -1
- package/dist/account-UHNR5KTE.js +0 -79
- package/dist/account-UHNR5KTE.js.map +0 -1
- package/dist/accounts-KMLXHADA.js +0 -77
- package/dist/accounts-KMLXHADA.js.map +0 -1
- package/dist/accounts-QDGNTSTV.js +0 -611
- package/dist/accounts-QDGNTSTV.js.map +0 -1
- package/dist/actions-QL5UD2W4.js +0 -55
- package/dist/activecampaign-5OD45ROS.js +0 -935
- package/dist/activecampaign-5OD45ROS.js.map +0 -1
- package/dist/add-2F7BEVYD.js +0 -105
- package/dist/add-2F7BEVYD.js.map +0 -1
- package/dist/add-6K6LO7CM.js +0 -104
- package/dist/add-6K6LO7CM.js.map +0 -1
- package/dist/add-LYDJZDGO.js +0 -302
- package/dist/add-LYDJZDGO.js.map +0 -1
- package/dist/ads-DHPJFU52.js +0 -40
- package/dist/advertisers-23LU7GTV.js +0 -120
- package/dist/advertisers-23LU7GTV.js.map +0 -1
- package/dist/analytics-HO2SLL4W.js +0 -433
- package/dist/analytics-HO2SLL4W.js.map +0 -1
- package/dist/analytics-LD3D7ISK.js +0 -1976
- package/dist/analytics-LD3D7ISK.js.map +0 -1
- package/dist/assign-CLKJKH2B.js +0 -77
- package/dist/assign-CLKJKH2B.js.map +0 -1
- package/dist/audience-size-NNYYXODL.js +0 -73
- package/dist/audience-size-NNYYXODL.js.map +0 -1
- package/dist/audit-KB4P2XGS.js +0 -151
- package/dist/audit-KB4P2XGS.js.map +0 -1
- package/dist/autocomplete-VZD2SMTE.js +0 -111
- package/dist/autocomplete-VZD2SMTE.js.map +0 -1
- package/dist/avatars-FKOO6VZ2.js +0 -38
- package/dist/bid-pricing-6LLXOLLI.js +0 -100
- package/dist/bid-pricing-6LLXOLLI.js.map +0 -1
- package/dist/brand-NNWHBIAX.js +0 -22
- package/dist/brief-CPJQWT6W.js +0 -538
- package/dist/brief-CPJQWT6W.js.map +0 -1
- package/dist/campaign-groups-YPYNXOWU.js +0 -95
- package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
- package/dist/campaign-writes-UJ4L2O6G.js +0 -165
- package/dist/campaign-writes-UJ4L2O6G.js.map +0 -1
- package/dist/campaigns-HLBZRH5A.js +0 -107
- package/dist/campaigns-N44ZDGB5.js +0 -109
- package/dist/campaigns-N44ZDGB5.js.map +0 -1
- package/dist/canvas-D64GLWUO.js +0 -46
- package/dist/capabilities-LWXCWMIY.js +0 -144
- package/dist/capabilities-LWXCWMIY.js.map +0 -1
- package/dist/chatgpt-YI6YNACI.js +0 -47
- package/dist/chats-7WGC2CVW.js +0 -276
- package/dist/chats-7WGC2CVW.js.map +0 -1
- package/dist/check-EH6BXWWL.js +0 -104
- package/dist/check-EH6BXWWL.js.map +0 -1
- package/dist/chunk-2B772ZEA.js +0 -169
- package/dist/chunk-2KRK667G.js +0 -51
- package/dist/chunk-2TVXJPGR.js +0 -103
- package/dist/chunk-3AMLOCXY.js +0 -392
- package/dist/chunk-3B5LPK6D.js +0 -658
- package/dist/chunk-3B5LPK6D.js.map +0 -1
- package/dist/chunk-3N5A44NQ.js +0 -122
- package/dist/chunk-3WAYZQNV.js +0 -61
- package/dist/chunk-5A257KJA.js +0 -160
- package/dist/chunk-6QGS3RQP.js +0 -363
- package/dist/chunk-AFD32O4A.js +0 -494
- package/dist/chunk-AW2GKIGS.js +0 -433
- package/dist/chunk-CYSBNCPX.js +0 -55
- package/dist/chunk-CYSBNCPX.js.map +0 -1
- package/dist/chunk-DAO63OOP.js +0 -6352
- package/dist/chunk-DAO63OOP.js.map +0 -1
- package/dist/chunk-EMQUW6JB.js +0 -942
- package/dist/chunk-EW3JEKIV.js +0 -139
- package/dist/chunk-FBFWMTOP.js +0 -19
- package/dist/chunk-GXDLWBOY.js +0 -73
- package/dist/chunk-GXDLWBOY.js.map +0 -1
- package/dist/chunk-GXGYTFZA.js +0 -8939
- package/dist/chunk-I7J7YQXZ.js +0 -142
- package/dist/chunk-IBY44U2M.js +0 -1079
- package/dist/chunk-IFXGCI33.js +0 -297
- package/dist/chunk-IKLHXGMF.js +0 -91
- package/dist/chunk-IYTPWAN3.js +0 -604
- package/dist/chunk-J3CWAERS.js +0 -3868
- package/dist/chunk-JH2L5CQD.js +0 -206
- package/dist/chunk-JUVVCA7B.js +0 -97
- package/dist/chunk-MK6XJUCQ.js +0 -197
- package/dist/chunk-N3I6ZXR7.js +0 -66
- package/dist/chunk-NBO2NSAW.js +0 -592
- package/dist/chunk-NEU5QD2C.js +0 -249
- package/dist/chunk-NKIBXOHT.js +0 -344
- package/dist/chunk-OE3MIV4F.js +0 -547
- package/dist/chunk-P2MFWJR3.js +0 -903
- package/dist/chunk-PHCIFBP3.js +0 -89
- package/dist/chunk-PTUXBO5O.js +0 -224
- package/dist/chunk-Q3LXLWZY.js +0 -275
- package/dist/chunk-Q5WBTVA7.js +0 -455
- package/dist/chunk-RDEAVCMF.js +0 -399
- package/dist/chunk-RDEAVCMF.js.map +0 -1
- package/dist/chunk-RGMKXNQP.js +0 -23
- package/dist/chunk-RZTKCCUL.js +0 -831
- package/dist/chunk-TTKBNBQF.js +0 -156
- package/dist/chunk-VB3XUR6A.js +0 -207
- package/dist/chunk-XCKINS7K.js +0 -57
- package/dist/chunk-Y6GKV7CU.js +0 -346
- package/dist/chunk-Y6GKV7CU.js.map +0 -1
- package/dist/chunk-Z2GQREJY.js +0 -159
- package/dist/chunk-ZDAVSTEE.js +0 -172
- package/dist/chunk-ZXCSOVS5.js +0 -191
- package/dist/claim-SVDCQ2AI.js +0 -197
- package/dist/claim-SVDCQ2AI.js.map +0 -1
- package/dist/companies-BYMYQK6A.js +0 -195
- package/dist/companies-BYMYQK6A.js.map +0 -1
- package/dist/complete-NEH3MWRI.js +0 -81
- package/dist/complete-NEH3MWRI.js.map +0 -1
- package/dist/connect-5PGL7ZOM.js +0 -42
- package/dist/conversation-CSOKJXDW.js +0 -93
- package/dist/conversation-CSOKJXDW.js.map +0 -1
- package/dist/conversions-4JOTTFEH.js +0 -135
- package/dist/conversions-4JOTTFEH.js.map +0 -1
- package/dist/create-2XYMBULY.js +0 -207
- package/dist/create-2XYMBULY.js.map +0 -1
- package/dist/create-56PTZABQ.js +0 -235
- package/dist/create-56PTZABQ.js.map +0 -1
- package/dist/create-D6S6TGWY.js +0 -59
- package/dist/create-D6S6TGWY.js.map +0 -1
- package/dist/create-SMW4O5PC.js +0 -132
- package/dist/create-SMW4O5PC.js.map +0 -1
- package/dist/creatives-OO76DAFS.js +0 -58
- package/dist/creatives-VJUYWJL6.js +0 -182
- package/dist/creatives-VJUYWJL6.js.map +0 -1
- package/dist/credentials-2ONYUJW6.js +0 -287
- package/dist/credentials-2ONYUJW6.js.map +0 -1
- package/dist/critique-NDDFSGPE.js +0 -1458
- package/dist/critique-NDDFSGPE.js.map +0 -1
- package/dist/critique-YXZVMLZ4.js +0 -227
- package/dist/critique-YXZVMLZ4.js.map +0 -1
- package/dist/crm-Q6CEP5XV.js +0 -224
- package/dist/crm-Q6CEP5XV.js.map +0 -1
- package/dist/crm-WRONZYDH.js +0 -318
- package/dist/crm-WRONZYDH.js.map +0 -1
- package/dist/customers-2EFYSCU2.js +0 -56
- package/dist/delete-7WEVC3FS.js +0 -66
- package/dist/delete-7WEVC3FS.js.map +0 -1
- package/dist/delete-RBWK255M.js +0 -54
- package/dist/delete-RBWK255M.js.map +0 -1
- package/dist/delete-VN4WWMQF.js +0 -64
- package/dist/delete-VN4WWMQF.js.map +0 -1
- package/dist/demographics-I5XZ435C.js +0 -138
- package/dist/demographics-I5XZ435C.js.map +0 -1
- package/dist/discard-XJLIXTNM.js +0 -66
- package/dist/discard-XJLIXTNM.js.map +0 -1
- package/dist/domain-M7AEGAYI.js +0 -98
- package/dist/domain-M7AEGAYI.js.map +0 -1
- package/dist/draft-5DQI4W5F.js +0 -306
- package/dist/draft-5DQI4W5F.js.map +0 -1
- package/dist/draft-7IIYHSY2.js +0 -332
- package/dist/draft-7IIYHSY2.js.map +0 -1
- package/dist/draft-CN6GKVBF.js +0 -217
- package/dist/draft-CN6GKVBF.js.map +0 -1
- package/dist/experiment-IDDWRCJ7.js +0 -1397
- package/dist/facets-ZLZ6LIHN.js +0 -114
- package/dist/facets-ZLZ6LIHN.js.map +0 -1
- package/dist/feedback-7LEX2P5Q.js +0 -106
- package/dist/feedback-7LEX2P5Q.js.map +0 -1
- package/dist/feedback-record-P4JJ63KA.js +0 -260
- package/dist/feedback-record-P4JJ63KA.js.map +0 -1
- package/dist/fetch-MIVCEHXZ.js +0 -176
- package/dist/fetch-MIVCEHXZ.js.map +0 -1
- package/dist/find-VHN34MWL.js +0 -134
- package/dist/fit-SS6HSZPU.js +0 -62
- package/dist/flows-UTIIHDNE.js +0 -247
- package/dist/flows-UTIIHDNE.js.map +0 -1
- package/dist/fonts-YPNN7ZJP.js +0 -36
- package/dist/forecast-OBSHG2GJ.js +0 -118
- package/dist/forecast-OBSHG2GJ.js.map +0 -1
- package/dist/funnel-A4MXQYBA.js +0 -394
- package/dist/funnel-A4MXQYBA.js.map +0 -1
- package/dist/ga4-ZPAEF2G2.js +0 -55
- package/dist/get-MDAO6I7T.js +0 -56
- package/dist/get-MDAO6I7T.js.map +0 -1
- package/dist/get-ZB553BSH.js +0 -79
- package/dist/get-ZB553BSH.js.map +0 -1
- package/dist/google-C3X7O2UO.js +0 -136
- package/dist/google-ads-FTWL772L.js +0 -195
- package/dist/google-ads-FTWL772L.js.map +0 -1
- package/dist/gsc-SDDHGTZK.js +0 -30
- package/dist/history-WKJYKDMG.js +0 -133
- package/dist/history-WKJYKDMG.js.map +0 -1
- package/dist/hubspot-EPHVEPOO.js +0 -779
- package/dist/hubspot-EPHVEPOO.js.map +0 -1
- package/dist/icon-MYPDC6FM.js +0 -137
- package/dist/ideas-3PBH7VEX.js +0 -40
- package/dist/images-J35C3WG4.js +0 -92
- package/dist/ingest-5QOPUKFE.js +0 -107
- package/dist/ingest-5QOPUKFE.js.map +0 -1
- package/dist/ingest-OKUYP632.js +0 -23
- package/dist/inspect-PMNCP6MV.js +0 -189
- package/dist/inspect-PMNCP6MV.js.map +0 -1
- package/dist/inspiration-QAL7NS7G.js +0 -53
- package/dist/keyword-metrics-R752SJIT.js +0 -197
- package/dist/keyword-metrics-R752SJIT.js.map +0 -1
- package/dist/keywords-for-site-7UWPJYQF.js +0 -128
- package/dist/keywords-for-site-7UWPJYQF.js.map +0 -1
- package/dist/landing-CBVIOGJ5.js +0 -28
- package/dist/leads-LIJS6Y5W.js +0 -90
- package/dist/leads-LIJS6Y5W.js.map +0 -1
- package/dist/learn-N6QV7GXA.js +0 -204
- package/dist/learn-N6QV7GXA.js.map +0 -1
- package/dist/line-item-writes-3WPJXKIL.js +0 -208
- package/dist/line-item-writes-3WPJXKIL.js.map +0 -1
- package/dist/line-items-ZOFKOGAA.js +0 -103
- package/dist/link-DDRQKOUL.js +0 -64
- package/dist/link-DDRQKOUL.js.map +0 -1
- package/dist/linkedin-UWZCF66X.js +0 -1057
- package/dist/linkedin-UWZCF66X.js.map +0 -1
- package/dist/list-5PLXVPLB.js +0 -151
- package/dist/list-5PLXVPLB.js.map +0 -1
- package/dist/list-RC2NX6AX.js +0 -50
- package/dist/list-VSJISE7U.js +0 -303
- package/dist/list-VSJISE7U.js.map +0 -1
- package/dist/list-WTVOBQYX.js +0 -64
- package/dist/list-WTVOBQYX.js.map +0 -1
- package/dist/log-YKKPROLZ.js +0 -92
- package/dist/log-YKKPROLZ.js.map +0 -1
- package/dist/logo-WE2UELX6.js +0 -18
- package/dist/make-RNOWBLZQ.js +0 -1353
- package/dist/make-RNOWBLZQ.js.map +0 -1
- package/dist/map-WTDPQLVO.js +0 -433
- package/dist/map-WTDPQLVO.js.map +0 -1
- package/dist/mcp-XJNSCPP3.js +0 -714
- package/dist/mcp-XJNSCPP3.js.map +0 -1
- package/dist/media-sources-JGBDDXZ5.js +0 -32
- package/dist/media-sources-JGBDDXZ5.js.map +0 -1
- package/dist/members-O3BTMRXX.js +0 -44
- package/dist/members-O3BTMRXX.js.map +0 -1
- package/dist/normalize-R5AYLA2J.js +0 -141
- package/dist/normalize-R5AYLA2J.js.map +0 -1
- package/dist/options-AILRY7JY.js +0 -122
- package/dist/options-AILRY7JY.js.map +0 -1
- package/dist/organization-KJJXZLVK.js +0 -946
- package/dist/organization-KJJXZLVK.js.map +0 -1
- package/dist/performance-7YU4HOGH.js +0 -24
- package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
- package/dist/promoted-tweet-writes-TNELWPVG.js.map +0 -1
- package/dist/promoted-tweets-76WKUFJQ.js +0 -119
- package/dist/publish-BKLHCKHB.js +0 -341
- package/dist/publish-BKLHCKHB.js.map +0 -1
- package/dist/reddit-YK3YUZEI.js +0 -26
- package/dist/refresh-WIII7KXB.js +0 -94
- package/dist/refresh-WIII7KXB.js.map +0 -1
- package/dist/release-ZHXYQI7G.js +0 -60
- package/dist/release-ZHXYQI7G.js.map +0 -1
- package/dist/remove-NOX4BXWK.js +0 -50
- package/dist/remove-NOX4BXWK.js.map +0 -1
- package/dist/remove-VLWRCOEZ.js +0 -48
- package/dist/remove-VLWRCOEZ.js.map +0 -1
- package/dist/reopen-NLWKK5HB.js +0 -63
- package/dist/reopen-NLWKK5HB.js.map +0 -1
- package/dist/rerun-DZWQNMZQ.js +0 -90
- package/dist/rerun-DZWQNMZQ.js.map +0 -1
- package/dist/research-Q3P76RHN.js +0 -62
- package/dist/research-UDZBCDNX.js +0 -262
- package/dist/research-UDZBCDNX.js.map +0 -1
- package/dist/reset-5UHFX7QY.js +0 -54
- package/dist/reset-5UHFX7QY.js.map +0 -1
- package/dist/reset-MTRJQUP7.js +0 -54
- package/dist/reset-MTRJQUP7.js.map +0 -1
- package/dist/resolve-DA72VT7Q.js +0 -121
- package/dist/resolve-DA72VT7Q.js.map +0 -1
- package/dist/retry-LQUBX5TK.js +0 -62
- package/dist/retry-LQUBX5TK.js.map +0 -1
- package/dist/retry-U6F4CS6O.js +0 -60
- package/dist/retry-U6F4CS6O.js.map +0 -1
- package/dist/rules-VS5PZ7VO.js +0 -96
- package/dist/rules-VS5PZ7VO.js.map +0 -1
- package/dist/rules-add-LMVZYDXE.js +0 -462
- package/dist/rules-add-LMVZYDXE.js.map +0 -1
- package/dist/run-6PRA2YSD.js +0 -65
- package/dist/run-R6COFNOR.js +0 -66
- package/dist/run-R6COFNOR.js.map +0 -1
- package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
- package/dist/scaffold-ad-3OVJ7VZQ.js.map +0 -1
- package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
- package/dist/scaffold-static-ad-DDRA3Q5I.js.map +0 -1
- package/dist/scaffold-video-3JZYFYFU.js +0 -883
- package/dist/scaffold-video-3JZYFYFU.js.map +0 -1
- package/dist/schedule-BRSYHMKR.js +0 -66
- package/dist/schedule-BRSYHMKR.js.map +0 -1
- package/dist/schedule-ED2YDUPY.js +0 -61
- package/dist/schedule-ED2YDUPY.js.map +0 -1
- package/dist/scheduled-agents-5P67MVGX.js +0 -50
- package/dist/schema-4XVKERSA.js +0 -132
- package/dist/schema-4XVKERSA.js.map +0 -1
- package/dist/schema-RRAQW3OS.js +0 -69
- package/dist/search-Y2UMIQ57.js +0 -174
- package/dist/search-Y2UMIQ57.js.map +0 -1
- package/dist/select-OZ4E6VLF.js +0 -101
- package/dist/select-OZ4E6VLF.js.map +0 -1
- package/dist/set-prompt-O4YAE4CE.js +0 -193
- package/dist/set-prompt-O4YAE4CE.js.map +0 -1
- package/dist/setup-links-2GJYCV2A.js +0 -141
- package/dist/setup-links-2GJYCV2A.js.map +0 -1
- package/dist/site-47B6V2UX.js +0 -177
- package/dist/site-47B6V2UX.js.map +0 -1
- package/dist/sources-DXPZAPQ7.js +0 -454
- package/dist/sources-DXPZAPQ7.js.map +0 -1
- package/dist/sources-NDXYTASG.js +0 -30
- package/dist/stale-VLVBO2L6.js +0 -71
- package/dist/stale-VLVBO2L6.js.map +0 -1
- package/dist/stats-37OFAMPW.js +0 -34
- package/dist/status-4ODD46XY.js +0 -62
- package/dist/status-4ODD46XY.js.map +0 -1
- package/dist/stock-6R5E7MJX.js +0 -179
- package/dist/studio-LEIGL3Q7.js +0 -49
- package/dist/sync-EKGEWE53.js +0 -54
- package/dist/sync-EKGEWE53.js.map +0 -1
- package/dist/sync-TKNVBUDM.js +0 -54
- package/dist/sync-TKNVBUDM.js.map +0 -1
- package/dist/sync-definition-M5R3H3TP.js +0 -64
- package/dist/tag-manager-3Q55PBEW.js +0 -43
- package/dist/tags-4N5UUUN6.js +0 -26
- package/dist/tags-5NHIAD5A.js +0 -20
- package/dist/tags-5NHIAD5A.js.map +0 -1
- package/dist/tags-UUKWSWCN.js +0 -20
- package/dist/tags-UUKWSWCN.js.map +0 -1
- package/dist/tags-VK7B5DJF.js +0 -20
- package/dist/tags-VK7B5DJF.js.map +0 -1
- package/dist/tags-XAHIB3WA.js +0 -224
- package/dist/tags-XAHIB3WA.js.map +0 -1
- package/dist/targeting-criteria-AVARWV2G.js +0 -113
- package/dist/targets-6RYLQRID.js +0 -103
- package/dist/targets-6RYLQRID.js.map +0 -1
- package/dist/testimonials-6TF6BOFN.js +0 -32
- package/dist/top-companies-45EHRCJD.js +0 -108
- package/dist/top-companies-45EHRCJD.js.map +0 -1
- package/dist/translate-VHLBACCE.js +0 -604
- package/dist/translate-VHLBACCE.js.map +0 -1
- package/dist/triggers-ERQONJNO.js +0 -142
- package/dist/triggers-ERQONJNO.js.map +0 -1
- package/dist/unlink-TPDO6JNF.js +0 -67
- package/dist/unlink-TPDO6JNF.js.map +0 -1
- package/dist/unstage-YKKQQ7LW.js +0 -85
- package/dist/unstage-YKKQQ7LW.js.map +0 -1
- package/dist/update-43WU6X7R.js +0 -63
- package/dist/update-43WU6X7R.js.map +0 -1
- package/dist/update-CAHLAXWO.js +0 -98
- package/dist/update-CAHLAXWO.js.map +0 -1
- package/dist/update-NGH6YADN.js +0 -152
- package/dist/update-NGH6YADN.js.map +0 -1
- package/dist/update-SPJIHHLE.js +0 -188
- package/dist/update-SPJIHHLE.js.map +0 -1
- package/dist/upload-ACESIZIZ.js +0 -126
- package/dist/upload-ACESIZIZ.js.map +0 -1
- package/dist/url-params-MIXEDBF7.js +0 -98
- package/dist/url-params-MIXEDBF7.js.map +0 -1
- package/dist/validate-XJJA7ULE.js +0 -117
- package/dist/validate-XJJA7ULE.js.map +0 -1
- package/dist/videos-LBXPG7WC.js +0 -39
- package/dist/viewer-check-7VJ3GUZX.js +0 -80
- package/dist/web-EWQJC2SD.js +0 -140
- package/dist/web-EWQJC2SD.js.map +0 -1
- package/dist/winning-ads-SAOJAKEQ.js +0 -86
- package/dist/write-commands-QPDE4GWW.js +0 -1024
- package/dist/write-commands-QPDE4GWW.js.map +0 -1
- package/dist/x-LXOJPCRF.js +0 -47
- /package/dist/{actions-QL5UD2W4.js.map → actions-FMNJSOBA.js.map} +0 -0
- /package/dist/{ads-DHPJFU52.js.map → ads-OLXSDPD6.js.map} +0 -0
- /package/dist/{avatars-FKOO6VZ2.js.map → avatars-I4H3NMEJ.js.map} +0 -0
- /package/dist/{brand-NNWHBIAX.js.map → brand-3V7ECY7D.js.map} +0 -0
- /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-MCB76NPQ.js.map} +0 -0
- /package/dist/{canvas-D64GLWUO.js.map → canvas-JCNKMGCG.js.map} +0 -0
- /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-XFZ42NXC.js.map} +0 -0
- /package/dist/{chunk-VB3XUR6A.js.map → chunk-2YTBPRRG.js.map} +0 -0
- /package/dist/{chunk-JUVVCA7B.js.map → chunk-3SNCMEJB.js.map} +0 -0
- /package/dist/{chunk-RGMKXNQP.js.map → chunk-7QGFO35A.js.map} +0 -0
- /package/dist/{chunk-ZXCSOVS5.js.map → chunk-AV7ALENU.js.map} +0 -0
- /package/dist/{chunk-IYTPWAN3.js.map → chunk-BRLFQ4VX.js.map} +0 -0
- /package/dist/{chunk-RZTKCCUL.js.map → chunk-DJE7UXYT.js.map} +0 -0
- /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
- /package/dist/{chunk-J3CWAERS.js.map → chunk-EONSZAZB.js.map} +0 -0
- /package/dist/{chunk-PHCIFBP3.js.map → chunk-FG3MV2XM.js.map} +0 -0
- /package/dist/{chunk-3AMLOCXY.js.map → chunk-FKG476GH.js.map} +0 -0
- /package/dist/{chunk-IFXGCI33.js.map → chunk-FUGQSIYG.js.map} +0 -0
- /package/dist/{chunk-Q3LXLWZY.js.map → chunk-HPLHAHG5.js.map} +0 -0
- /package/dist/{chunk-3N5A44NQ.js.map → chunk-I24YT2KG.js.map} +0 -0
- /package/dist/{chunk-P2MFWJR3.js.map → chunk-IFDZZOUC.js.map} +0 -0
- /package/dist/{chunk-Q5WBTVA7.js.map → chunk-JVVUI55M.js.map} +0 -0
- /package/dist/{chunk-6QGS3RQP.js.map → chunk-KKSHEPBY.js.map} +0 -0
- /package/dist/{chunk-OE3MIV4F.js.map → chunk-KQ7RCLGC.js.map} +0 -0
- /package/dist/{chunk-ZDAVSTEE.js.map → chunk-L7WMS5PW.js.map} +0 -0
- /package/dist/{chunk-FBFWMTOP.js.map → chunk-LBRO4MTL.js.map} +0 -0
- /package/dist/{chunk-PTUXBO5O.js.map → chunk-LNRPOULW.js.map} +0 -0
- /package/dist/{chunk-EMQUW6JB.js.map → chunk-LX6WC2XZ.js.map} +0 -0
- /package/dist/{chunk-I7J7YQXZ.js.map → chunk-MMGTJBM6.js.map} +0 -0
- /package/dist/{chunk-2KRK667G.js.map → chunk-OEZYSL3U.js.map} +0 -0
- /package/dist/{chunk-2TVXJPGR.js.map → chunk-OOVHBMQB.js.map} +0 -0
- /package/dist/{chunk-Z2GQREJY.js.map → chunk-PTH7VWKK.js.map} +0 -0
- /package/dist/{chunk-N3I6ZXR7.js.map → chunk-QZF4BVKL.js.map} +0 -0
- /package/dist/{chunk-3WAYZQNV.js.map → chunk-RITUSBYO.js.map} +0 -0
- /package/dist/{chunk-JH2L5CQD.js.map → chunk-SSTL3A7Z.js.map} +0 -0
- /package/dist/{chunk-2B772ZEA.js.map → chunk-TD4SO6TR.js.map} +0 -0
- /package/dist/{chunk-IKLHXGMF.js.map → chunk-UZ4RTOFG.js.map} +0 -0
- /package/dist/{chunk-NBO2NSAW.js.map → chunk-VAX7PFQV.js.map} +0 -0
- /package/dist/{chunk-AFD32O4A.js.map → chunk-VDRSZK4P.js.map} +0 -0
- /package/dist/{chunk-NKIBXOHT.js.map → chunk-VNU2EYD4.js.map} +0 -0
- /package/dist/{chunk-TTKBNBQF.js.map → chunk-WT4WDIXA.js.map} +0 -0
- /package/dist/{chunk-5A257KJA.js.map → chunk-XEX23CIB.js.map} +0 -0
- /package/dist/{chunk-GXGYTFZA.js.map → chunk-XXDF25BW.js.map} +0 -0
- /package/dist/{chunk-NEU5QD2C.js.map → chunk-YJ3LSFMX.js.map} +0 -0
- /package/dist/{chunk-MK6XJUCQ.js.map → chunk-YVK5RT3B.js.map} +0 -0
- /package/dist/{chunk-AW2GKIGS.js.map → chunk-YWWRLZUR.js.map} +0 -0
- /package/dist/{chunk-XCKINS7K.js.map → chunk-Z4S5BCVZ.js.map} +0 -0
- /package/dist/{chunk-IBY44U2M.js.map → chunk-ZYGK7GAK.js.map} +0 -0
- /package/dist/{connect-5PGL7ZOM.js.map → connect-COS6G45S.js.map} +0 -0
- /package/dist/{creatives-OO76DAFS.js.map → creatives-SEQHJD2M.js.map} +0 -0
- /package/dist/{customers-2EFYSCU2.js.map → customers-LMSX33FO.js.map} +0 -0
- /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
- /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
- /package/dist/{fit-SS6HSZPU.js.map → fit-W7UNFZT5.js.map} +0 -0
- /package/dist/{fonts-YPNN7ZJP.js.map → fonts-N42UYWTX.js.map} +0 -0
- /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
- /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
- /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
- /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
- /package/dist/{ideas-3PBH7VEX.js.map → ideas-DYN2DMFN.js.map} +0 -0
- /package/dist/{images-J35C3WG4.js.map → images-EQCUXEHF.js.map} +0 -0
- /package/dist/{ingest-OKUYP632.js.map → ingest-B46AY3QU.js.map} +0 -0
- /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
- /package/dist/{landing-CBVIOGJ5.js.map → landing-WVPA7NBR.js.map} +0 -0
- /package/dist/{line-items-ZOFKOGAA.js.map → line-items-OEWYOPFP.js.map} +0 -0
- /package/dist/{list-RC2NX6AX.js.map → list-WRBWQASJ.js.map} +0 -0
- /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
- /package/dist/{performance-7YU4HOGH.js.map → performance-HTU5FR2K.js.map} +0 -0
- /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-TTWN5OMW.js.map} +0 -0
- /package/dist/{reddit-YK3YUZEI.js.map → reddit-6C3PT5CT.js.map} +0 -0
- /package/dist/{research-Q3P76RHN.js.map → research-YCMMQVK6.js.map} +0 -0
- /package/dist/{run-6PRA2YSD.js.map → run-SR7DJ7M5.js.map} +0 -0
- /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-N63EZNY6.js.map} +0 -0
- /package/dist/{schema-RRAQW3OS.js.map → schema-C6SGBNA6.js.map} +0 -0
- /package/dist/{sources-NDXYTASG.js.map → sources-HN3GCEDX.js.map} +0 -0
- /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
- /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
- /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ6WQ7OE.js.map} +0 -0
- /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-CKEUYKWN.js.map} +0 -0
- /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
- /package/dist/{tags-4N5UUUN6.js.map → tags-EUOOSAKN.js.map} +0 -0
- /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-HE7K52WN.js.map} +0 -0
- /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-3Q5XM7JD.js.map} +0 -0
- /package/dist/{videos-LBXPG7WC.js.map → videos-WAPUPJVT.js.map} +0 -0
- /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-GHQA3UY2.js.map} +0 -0
- /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-XCVUAIOU.js.map} +0 -0
- /package/dist/{x-LXOJPCRF.js.map → x-SI4KYDEY.js.map} +0 -0
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
csvOrJson,
|
|
3
|
-
handleLinkedinError
|
|
4
|
-
} from "./chunk-VB3XUR6A.js";
|
|
5
|
-
import {
|
|
6
|
-
TABLE_OUTPUT_FORMATS,
|
|
7
|
-
outputFormatRefusal,
|
|
8
|
-
writeAdsJson,
|
|
9
|
-
writeAdsOutput,
|
|
10
|
-
writeJsonEnvelope
|
|
11
|
-
} from "./chunk-2VIZ4UUZ.js";
|
|
12
|
-
import {
|
|
13
|
-
NO_CACHE_ARG
|
|
14
|
-
} from "./chunk-U6RONIJC.js";
|
|
15
|
-
import {
|
|
16
|
-
linkedinCompaniesRequestSchema
|
|
17
|
-
} from "./chunk-DAO63OOP.js";
|
|
18
|
-
import "./chunk-GXDLWBOY.js";
|
|
19
|
-
import "./chunk-GIWHHCD6.js";
|
|
20
|
-
import "./chunk-XQIOCIDO.js";
|
|
21
|
-
import "./chunk-WTJSMYY2.js";
|
|
22
|
-
import {
|
|
23
|
-
apiPost
|
|
24
|
-
} from "./chunk-6YLNY6CK.js";
|
|
25
|
-
import "./chunk-D5NEIESR.js";
|
|
26
|
-
import {
|
|
27
|
-
getEnv
|
|
28
|
-
} from "./chunk-57KKVDDR.js";
|
|
29
|
-
import "./chunk-QANGHND7.js";
|
|
30
|
-
import "./chunk-YQSBHWOI.js";
|
|
31
|
-
|
|
32
|
-
// src/commands/ads/linkedin/companies.ts
|
|
33
|
-
import { defineCommand } from "citty";
|
|
34
|
-
var COMPANIES_PAGE_SIZE = 100;
|
|
35
|
-
var COMPANIES_TIMEOUT_MS = 18e4;
|
|
36
|
-
var CSV_FIELDS = [
|
|
37
|
-
"org",
|
|
38
|
-
"name",
|
|
39
|
-
"domain",
|
|
40
|
-
"domainSource",
|
|
41
|
-
"impressions",
|
|
42
|
-
"clicks",
|
|
43
|
-
"engagements",
|
|
44
|
-
"costLocal",
|
|
45
|
-
"videoViews",
|
|
46
|
-
"months",
|
|
47
|
-
"campaigns"
|
|
48
|
-
];
|
|
49
|
-
function companiesHints(data, request) {
|
|
50
|
-
const hints = [];
|
|
51
|
-
if (data.rows.length === 0) {
|
|
52
|
-
hints.push(
|
|
53
|
-
`No company shows up for ${data.query.start} to ${data.query.end}${data.query.minImpressions > 0 ? ` at --min-impressions ${data.query.minImpressions}` : ""}. LinkedIn reports companies 12-24h late and leaves out any with fewer than 3 events in a month, so a small or new campaign can have none yet. Try a longer period (--last-months 24), drop --min-impressions, or check the campaigns delivered with \`baker ads linkedin analytics\`.`
|
|
54
|
-
);
|
|
55
|
-
return hints;
|
|
56
|
-
}
|
|
57
|
-
const withDomain = data.rows.filter((row) => row.domain !== void 0).length;
|
|
58
|
-
if (withDomain > 0) {
|
|
59
|
-
hints.push(
|
|
60
|
-
`${withDomain} companies came back with a website domain \u2014 if HubSpot is connected, \`baker hubspot companies search --domains <domain,domain,\u2026> --with-deals\` (up to 100 per call) shows which are already accounts and which have deals.`
|
|
61
|
-
);
|
|
62
|
-
} else if (!request.withDomains && data.rows.length > 0) {
|
|
63
|
-
hints.push(
|
|
64
|
-
"Add --with-domains to get each company's website domain, ready for matching against your customer list."
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
if (data.totalCompanies > data.rows.length) {
|
|
68
|
-
const page = data.page ?? 1;
|
|
69
|
-
const first = (page - 1) * COMPANIES_PAGE_SIZE + 1;
|
|
70
|
-
const last = first + data.rows.length - 1;
|
|
71
|
-
const next = last < data.totalCompanies ? ` \u2014 --page ${page + 1} for the next ${COMPANIES_PAGE_SIZE}, ` : " \u2014 ";
|
|
72
|
-
hints.push(
|
|
73
|
-
`Showing companies ${first}-${last} of ${data.totalCompanies.toLocaleString("en")}, most engaged first${next}--full for all, or --min-impressions to trim the tail.`
|
|
74
|
-
);
|
|
75
|
-
}
|
|
76
|
-
if (data.query.by === "none" && data.rows.length > 0) {
|
|
77
|
-
hints.push("--by month shows when each company warmed up; --by campaign shows which campaigns reached it.");
|
|
78
|
-
}
|
|
79
|
-
return hints;
|
|
80
|
-
}
|
|
81
|
-
function csvList(raw) {
|
|
82
|
-
if (typeof raw !== "string") return void 0;
|
|
83
|
-
const items = raw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
84
|
-
return items.length > 0 ? items : void 0;
|
|
85
|
-
}
|
|
86
|
-
var FLAG_OF_FIELD = {
|
|
87
|
-
accountId: "--account-id",
|
|
88
|
-
campaignIds: "--campaign-id",
|
|
89
|
-
lastMonths: "--last-months",
|
|
90
|
-
start: "--start",
|
|
91
|
-
end: "--end",
|
|
92
|
-
by: "--by",
|
|
93
|
-
minImpressions: "--min-impressions",
|
|
94
|
-
page: "--page"
|
|
95
|
-
};
|
|
96
|
-
function flagOf(field) {
|
|
97
|
-
return FLAG_OF_FIELD[field.split(".")[0] ?? ""] ?? (field || "args");
|
|
98
|
-
}
|
|
99
|
-
function optionalNumber(raw) {
|
|
100
|
-
return typeof raw === "string" && raw.trim() !== "" ? Number(raw) : void 0;
|
|
101
|
-
}
|
|
102
|
-
function bareAccountId(raw) {
|
|
103
|
-
return raw?.startsWith("urn:") ? raw.split(":").pop() : raw;
|
|
104
|
-
}
|
|
105
|
-
var companiesCommand = defineCommand({
|
|
106
|
-
meta: {
|
|
107
|
-
name: "companies",
|
|
108
|
-
description: `Which companies your LinkedIn ads reached \u2014 one row per company over the whole period, most engaged first.
|
|
109
|
-
|
|
110
|
-
Start here for "which companies are our ads warming", ABM reporting, or building a warm-account list.
|
|
111
|
-
Rows: {org, name, impressions, clicks, engagements, costLocal}. Defaults: the last 12 calendar
|
|
112
|
-
months, the only selected ad account, 100 companies a page (--page 2 for the next, --full for all).
|
|
113
|
-
|
|
114
|
-
Examples:
|
|
115
|
-
baker ads linkedin companies # last 12 months, whole account
|
|
116
|
-
baker ads linkedin companies --page 2 # the next 100 companies
|
|
117
|
-
baker ads linkedin companies --by month --min-impressions 50 # when each company warmed up
|
|
118
|
-
baker ads linkedin companies --campaign-id 333728193,810055513 --by campaign
|
|
119
|
-
baker ads linkedin companies --with-domains --output csv # + website domain, for CRM matching
|
|
120
|
-
baker ads linkedin companies --last-months 3 --stats # + how complete LinkedIn's data is
|
|
121
|
-
|
|
122
|
-
LinkedIn reports companies 12-24h late and leaves out any company with fewer than 3 events in a month,
|
|
123
|
-
so small companies are undercounted. engagements = LinkedIn's totalEngagements.`
|
|
124
|
-
},
|
|
125
|
-
args: {
|
|
126
|
-
"account-id": {
|
|
127
|
-
type: "string",
|
|
128
|
-
description: "Ad account id (numeric or urn:li:sponsoredAccount:N). Default: the only selected account"
|
|
129
|
-
},
|
|
130
|
-
"campaign-id": { type: "string", description: "Comma-separated campaign ids \u2014 read only these campaigns" },
|
|
131
|
-
"last-months": { type: "string", description: "Calendar months back, including this one (1-24, default 12)" },
|
|
132
|
-
start: { type: "string", description: "Start date YYYY-MM-DD (instead of --last-months)" },
|
|
133
|
-
end: { type: "string", description: "End date YYYY-MM-DD (default today)" },
|
|
134
|
-
by: { type: "string", description: "none | month | campaign \u2014 break each company down (default none)" },
|
|
135
|
-
"with-domains": { type: "boolean", description: "Add each company's website domain and domainSource" },
|
|
136
|
-
"min-impressions": { type: "string", description: "Leave out companies under N impressions over the period" },
|
|
137
|
-
full: { type: "boolean", description: "Every company (not just a page of 100), plus videoViews" },
|
|
138
|
-
page: {
|
|
139
|
-
type: "string",
|
|
140
|
-
description: "Which page of 100 companies, most engaged first (default 1); totalCompanies counts them all"
|
|
141
|
-
},
|
|
142
|
-
stats: { type: "boolean", description: "Add read-quality stats: row counts, cost/reach/domain coverage" },
|
|
143
|
-
"no-cache": NO_CACHE_ARG,
|
|
144
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
|
|
145
|
-
},
|
|
146
|
-
run: async ({ args }) => {
|
|
147
|
-
const input = {
|
|
148
|
-
accountId: bareAccountId(args["account-id"] || getEnv().BAKER_LINKEDIN_AD_ACCOUNT_ID),
|
|
149
|
-
campaignIds: csvList(args["campaign-id"]),
|
|
150
|
-
lastMonths: optionalNumber(args["last-months"]),
|
|
151
|
-
start: args.start,
|
|
152
|
-
end: args.end,
|
|
153
|
-
by: args.by,
|
|
154
|
-
withDomains: Boolean(args["with-domains"]),
|
|
155
|
-
minImpressions: optionalNumber(args["min-impressions"]),
|
|
156
|
-
full: Boolean(args.full),
|
|
157
|
-
page: optionalNumber(args.page),
|
|
158
|
-
stats: Boolean(args.stats),
|
|
159
|
-
skipCache: Boolean(args["no-cache"])
|
|
160
|
-
};
|
|
161
|
-
const parsed = linkedinCompaniesRequestSchema.safeParse(input);
|
|
162
|
-
const formatRefusal = outputFormatRefusal(csvOrJson(args), TABLE_OUTPUT_FORMATS);
|
|
163
|
-
if (!parsed.success || formatRefusal !== null) {
|
|
164
|
-
const issues = parsed.success ? [] : parsed.error.issues;
|
|
165
|
-
const messages = issues.map((issue) => `${flagOf(issue.path.join("."))}: ${issue.message}`);
|
|
166
|
-
writeAdsJson({
|
|
167
|
-
ok: false,
|
|
168
|
-
error: { code: "INVALID_ARGS", message: [...messages, ...formatRefusal ? [formatRefusal] : []].join("; ") }
|
|
169
|
-
});
|
|
170
|
-
process.exit(1);
|
|
171
|
-
}
|
|
172
|
-
try {
|
|
173
|
-
const { data } = await apiPost(
|
|
174
|
-
"/api/ads/linkedin/companies",
|
|
175
|
-
input,
|
|
176
|
-
{ timeoutMs: COMPANIES_TIMEOUT_MS }
|
|
177
|
-
);
|
|
178
|
-
const hints = companiesHints(data, parsed.data);
|
|
179
|
-
const fmt = csvOrJson(args);
|
|
180
|
-
if (fmt !== "json") {
|
|
181
|
-
const notes = [...data.warnings.map((w) => `${w.code}: ${w.message}`), ...hints];
|
|
182
|
-
writeAdsOutput(data.rows, fmt, CSV_FIELDS, notes);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });
|
|
186
|
-
} catch (err) {
|
|
187
|
-
handleLinkedinError(err);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
export {
|
|
192
|
-
companiesCommand,
|
|
193
|
-
companiesHints
|
|
194
|
-
};
|
|
195
|
-
//# sourceMappingURL=companies-BYMYQK6A.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/companies.ts"],"sourcesContent":["import {\n type LINKEDIN_COMPANIES_BY,\n type LinkedinCompaniesRequestInput,\n type LinkedinCompaniesResponse,\n linkedinCompaniesRequestSchema,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { getEnv } from \"../../../env.ts\";\nimport {\n outputFormatRefusal,\n TABLE_OUTPUT_FORMATS,\n writeAdsJson,\n writeAdsOutput,\n writeJsonEnvelope,\n} from \"../output.ts\";\nimport { csvOrJson, handleLinkedinError } from \"./shared.ts\";\n\n/** Companies per page without --full. */\nconst COMPANIES_PAGE_SIZE = 100;\n\n/** A by-campaign read makes one LinkedIn call per delivered campaign. */\nconst COMPANIES_TIMEOUT_MS = 180_000;\n\nconst CSV_FIELDS = [\n \"org\",\n \"name\",\n \"domain\",\n \"domainSource\",\n \"impressions\",\n \"clicks\",\n \"engagements\",\n \"costLocal\",\n \"videoViews\",\n \"months\",\n \"campaigns\",\n];\n\n/** Next steps the agent can't see from the rows alone. */\nexport function companiesHints(data: LinkedinCompaniesResponse, request: { withDomains: boolean }): string[] {\n const hints: string[] = [];\n if (data.rows.length === 0) {\n hints.push(\n `No company shows up for ${data.query.start} to ${data.query.end}${data.query.minImpressions > 0 ? ` at --min-impressions ${data.query.minImpressions}` : \"\"}. LinkedIn reports companies 12-24h late and leaves out any with fewer than 3 events in a month, so a small or new campaign can have none yet. Try a longer period (--last-months 24), drop --min-impressions, or check the campaigns delivered with \\`baker ads linkedin analytics\\`.`,\n );\n return hints;\n }\n const withDomain = data.rows.filter((row) => row.domain !== undefined).length;\n if (withDomain > 0) {\n hints.push(\n `${withDomain} companies came back with a website domain — if HubSpot is connected, \\`baker hubspot companies search --domains <domain,domain,…> --with-deals\\` (up to 100 per call) shows which are already accounts and which have deals.`,\n );\n } else if (!request.withDomains && data.rows.length > 0) {\n hints.push(\n \"Add --with-domains to get each company's website domain, ready for matching against your customer list.\",\n );\n }\n if (data.totalCompanies > data.rows.length) {\n const page = data.page ?? 1;\n const first = (page - 1) * COMPANIES_PAGE_SIZE + 1;\n const last = first + data.rows.length - 1;\n const next = last < data.totalCompanies ? ` — --page ${page + 1} for the next ${COMPANIES_PAGE_SIZE}, ` : \" — \";\n hints.push(\n `Showing companies ${first}-${last} of ${data.totalCompanies.toLocaleString(\"en\")}, most engaged first${next}--full for all, or --min-impressions to trim the tail.`,\n );\n }\n if (data.query.by === \"none\" && data.rows.length > 0) {\n hints.push(\"--by month shows when each company warmed up; --by campaign shows which campaigns reached it.\");\n }\n return hints;\n}\n\nfunction csvList(raw: unknown): string[] | undefined {\n if (typeof raw !== \"string\") return undefined;\n const items = raw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n return items.length > 0 ? items : undefined;\n}\n\n/** Request fields as the flags that set them, so a refusal names what the agent typed. */\nconst FLAG_OF_FIELD: Record<string, string> = {\n accountId: \"--account-id\",\n campaignIds: \"--campaign-id\",\n lastMonths: \"--last-months\",\n start: \"--start\",\n end: \"--end\",\n by: \"--by\",\n minImpressions: \"--min-impressions\",\n page: \"--page\",\n};\n\nfunction flagOf(field: string): string {\n return FLAG_OF_FIELD[field.split(\".\")[0] ?? \"\"] ?? (field || \"args\");\n}\n\nfunction optionalNumber(raw: unknown): number | undefined {\n return typeof raw === \"string\" && raw.trim() !== \"\" ? Number(raw) : undefined;\n}\n\nfunction bareAccountId(raw: string | undefined): string | undefined {\n return raw?.startsWith(\"urn:\") ? raw.split(\":\").pop() : raw;\n}\n\nexport const companiesCommand = defineCommand({\n meta: {\n name: \"companies\",\n description: `Which companies your LinkedIn ads reached — one row per company over the whole period, most engaged first.\n\nStart here for \"which companies are our ads warming\", ABM reporting, or building a warm-account list.\nRows: {org, name, impressions, clicks, engagements, costLocal}. Defaults: the last 12 calendar\nmonths, the only selected ad account, 100 companies a page (--page 2 for the next, --full for all).\n\nExamples:\n baker ads linkedin companies # last 12 months, whole account\n baker ads linkedin companies --page 2 # the next 100 companies\n baker ads linkedin companies --by month --min-impressions 50 # when each company warmed up\n baker ads linkedin companies --campaign-id 333728193,810055513 --by campaign\n baker ads linkedin companies --with-domains --output csv # + website domain, for CRM matching\n baker ads linkedin companies --last-months 3 --stats # + how complete LinkedIn's data is\n\nLinkedIn reports companies 12-24h late and leaves out any company with fewer than 3 events in a month,\nso small companies are undercounted. engagements = LinkedIn's totalEngagements.`,\n },\n args: {\n \"account-id\": {\n type: \"string\",\n description: \"Ad account id (numeric or urn:li:sponsoredAccount:N). Default: the only selected account\",\n },\n \"campaign-id\": { type: \"string\", description: \"Comma-separated campaign ids — read only these campaigns\" },\n \"last-months\": { type: \"string\", description: \"Calendar months back, including this one (1-24, default 12)\" },\n start: { type: \"string\", description: \"Start date YYYY-MM-DD (instead of --last-months)\" },\n end: { type: \"string\", description: \"End date YYYY-MM-DD (default today)\" },\n by: { type: \"string\", description: \"none | month | campaign — break each company down (default none)\" },\n \"with-domains\": { type: \"boolean\", description: \"Add each company's website domain and domainSource\" },\n \"min-impressions\": { type: \"string\", description: \"Leave out companies under N impressions over the period\" },\n full: { type: \"boolean\", description: \"Every company (not just a page of 100), plus videoViews\" },\n page: {\n type: \"string\",\n description: \"Which page of 100 companies, most engaged first (default 1); totalCompanies counts them all\",\n },\n stats: { type: \"boolean\", description: \"Add read-quality stats: row counts, cost/reach/domain coverage\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n const input: LinkedinCompaniesRequestInput = {\n accountId: bareAccountId((args[\"account-id\"] as string | undefined) || getEnv().BAKER_LINKEDIN_AD_ACCOUNT_ID),\n campaignIds: csvList(args[\"campaign-id\"]),\n lastMonths: optionalNumber(args[\"last-months\"]),\n start: args.start as string | undefined,\n end: args.end as string | undefined,\n by: args.by as (typeof LINKEDIN_COMPANIES_BY)[number] | undefined,\n withDomains: Boolean(args[\"with-domains\"]),\n minImpressions: optionalNumber(args[\"min-impressions\"]),\n full: Boolean(args.full),\n page: optionalNumber(args.page),\n stats: Boolean(args.stats),\n skipCache: Boolean(args[\"no-cache\"]),\n };\n const parsed = linkedinCompaniesRequestSchema.safeParse(input);\n const formatRefusal = outputFormatRefusal(csvOrJson(args), TABLE_OUTPUT_FORMATS);\n if (!parsed.success || formatRefusal !== null) {\n const issues = parsed.success ? [] : parsed.error.issues;\n const messages = issues.map((issue) => `${flagOf(issue.path.join(\".\"))}: ${issue.message}`);\n writeAdsJson({\n ok: false,\n error: { code: \"INVALID_ARGS\", message: [...messages, ...(formatRefusal ? [formatRefusal] : [])].join(\"; \") },\n });\n process.exit(1);\n }\n\n try {\n const { data } = await apiPost<{ ok: true; data: LinkedinCompaniesResponse }>(\n \"/api/ads/linkedin/companies\",\n input,\n { timeoutMs: COMPANIES_TIMEOUT_MS },\n );\n const hints = companiesHints(data, parsed.data);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n const notes = [...data.warnings.map((w) => `${w.code}: ${w.message}`), ...hints];\n writeAdsOutput(data.rows, fmt, CSV_FIELDS, notes);\n return;\n }\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
failApi,
|
|
3
|
-
failValidation,
|
|
4
|
-
isTempId,
|
|
5
|
-
writeOk
|
|
6
|
-
} from "./chunk-ZDAVSTEE.js";
|
|
7
|
-
import {
|
|
8
|
-
ACTION_COMPLETE_NOTE_MIN
|
|
9
|
-
} from "./chunk-DAO63OOP.js";
|
|
10
|
-
import "./chunk-GXDLWBOY.js";
|
|
11
|
-
import "./chunk-GIWHHCD6.js";
|
|
12
|
-
import "./chunk-XQIOCIDO.js";
|
|
13
|
-
import "./chunk-WTJSMYY2.js";
|
|
14
|
-
import {
|
|
15
|
-
apiPost,
|
|
16
|
-
validateConvexId
|
|
17
|
-
} from "./chunk-6YLNY6CK.js";
|
|
18
|
-
import "./chunk-D5NEIESR.js";
|
|
19
|
-
import {
|
|
20
|
-
requireChatId
|
|
21
|
-
} from "./chunk-57KKVDDR.js";
|
|
22
|
-
import {
|
|
23
|
-
registerSchema
|
|
24
|
-
} from "./chunk-QANGHND7.js";
|
|
25
|
-
import "./chunk-YQSBHWOI.js";
|
|
26
|
-
|
|
27
|
-
// src/commands/actions/complete.ts
|
|
28
|
-
import { defineCommand } from "citty";
|
|
29
|
-
registerSchema({
|
|
30
|
-
command: "actions.complete",
|
|
31
|
-
description: "Stage completion of an action (it was done). Accepts a real action ID (must be claimed) or a temp ID from the same draft. The action becomes completed when the chat is published. --note is required and must describe what you actually did to resolve it (what changed, where, and the outcome) \u2014 it is the client-facing record surfaced by `baker actions log`. Don't use this to drop an action you no longer want \u2014 to remove a staged op use `actions draft remove`, to close an unwanted published action use `actions discard`.",
|
|
32
|
-
args: {
|
|
33
|
-
id: { type: "string", description: "Action ID or temp ID", required: true },
|
|
34
|
-
note: {
|
|
35
|
-
type: "string",
|
|
36
|
-
description: "REQUIRED. Detailed description of what you did to resolve this: what changed, where, and the outcome. This is the durable, client-facing record shown by `baker actions log`.",
|
|
37
|
-
required: true
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
var completeCommand = defineCommand({
|
|
42
|
-
meta: {
|
|
43
|
-
name: "complete",
|
|
44
|
-
description: "Stage completion of an action. Accepts real IDs (claimed) or temp IDs (same draft). Example: baker actions complete <id>"
|
|
45
|
-
},
|
|
46
|
-
args: {
|
|
47
|
-
id: { type: "positional", description: "Action ID or temp ID", required: false },
|
|
48
|
-
"action-id": { type: "string", description: "Action ID or temp ID", required: false },
|
|
49
|
-
note: {
|
|
50
|
-
type: "string",
|
|
51
|
-
description: "REQUIRED. What you did to resolve this: what changed, where, and the outcome.",
|
|
52
|
-
required: false
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
run: async ({ args }) => {
|
|
56
|
-
try {
|
|
57
|
-
const id = args.id || args["action-id"];
|
|
58
|
-
if (!id) {
|
|
59
|
-
failValidation("Action ID is required.");
|
|
60
|
-
}
|
|
61
|
-
if (!isTempId(id)) {
|
|
62
|
-
validateConvexId(id);
|
|
63
|
-
}
|
|
64
|
-
const note = args.note?.trim() ?? "";
|
|
65
|
-
if (note.length < ACTION_COMPLETE_NOTE_MIN) {
|
|
66
|
-
failValidation(
|
|
67
|
-
`--note is required and must describe what you did (\u2265${ACTION_COMPLETE_NOTE_MIN} chars): what changed, where, and the outcome. This becomes the client-facing record surfaced by \`baker actions log\`.`
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
const chatId = requireChatId();
|
|
71
|
-
await apiPost("/api/actions/complete", { chatId, actionRef: id, note });
|
|
72
|
-
writeOk();
|
|
73
|
-
} catch (err) {
|
|
74
|
-
failApi(err);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
export {
|
|
79
|
-
completeCommand
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=complete-NEH3MWRI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/actions/complete.ts"],"sourcesContent":["import { ACTION_COMPLETE_NOTE_MIN, type ActionsCompleteResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost, validateConvexId } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation, isTempId, writeOk } from \"./shared.ts\";\n\nregisterSchema({\n command: \"actions.complete\",\n description:\n \"Stage completion of an action (it was done). Accepts a real action ID (must be claimed) or a temp ID from the same draft. The action becomes completed when the chat is published. --note is required and must describe what you actually did to resolve it (what changed, where, and the outcome) — it is the client-facing record surfaced by `baker actions log`. Don't use this to drop an action you no longer want — to remove a staged op use `actions draft remove`, to close an unwanted published action use `actions discard`.\",\n args: {\n id: { type: \"string\", description: \"Action ID or temp ID\", required: true },\n note: {\n type: \"string\",\n description:\n \"REQUIRED. Detailed description of what you did to resolve this: what changed, where, and the outcome. This is the durable, client-facing record shown by `baker actions log`.\",\n required: true,\n },\n },\n});\n\nexport const completeCommand = defineCommand({\n meta: {\n name: \"complete\",\n description:\n \"Stage completion of an action. Accepts real IDs (claimed) or temp IDs (same draft). Example: baker actions complete <id>\",\n },\n args: {\n id: { type: \"positional\", description: \"Action ID or temp ID\", required: false },\n \"action-id\": { type: \"string\", description: \"Action ID or temp ID\", required: false },\n note: {\n type: \"string\",\n description: \"REQUIRED. What you did to resolve this: what changed, where, and the outcome.\",\n required: false,\n },\n },\n run: async ({ args }) => {\n try {\n const id = (args.id as string | undefined) || (args[\"action-id\"] as string | undefined);\n if (!id) {\n failValidation(\"Action ID is required.\");\n }\n if (!isTempId(id)) {\n validateConvexId(id);\n }\n const note = (args.note as string | undefined)?.trim() ?? \"\";\n if (note.length < ACTION_COMPLETE_NOTE_MIN) {\n failValidation(\n `--note is required and must describe what you did (≥${ACTION_COMPLETE_NOTE_MIN} chars): what changed, where, and the outcome. This becomes the client-facing record surfaced by \\`baker actions log\\`.`,\n );\n }\n const chatId = requireChatId();\n await apiPost<ActionsCompleteResponse>(\"/api/actions/complete\", { chatId, actionRef: id, note });\n writeOk();\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,UAAU,aAAa,wBAAwB,UAAU,KAAK;AAAA,IAC1E,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aACE;AAAA,MACF,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,cAAc,aAAa,wBAAwB,UAAU,MAAM;AAAA,IAC/E,aAAa,EAAE,MAAM,UAAU,aAAa,wBAAwB,UAAU,MAAM;AAAA,IACpF,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,EACF;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,KAAM,KAAK,MAA8B,KAAK,WAAW;AAC/D,UAAI,CAAC,IAAI;AACP,uBAAe,wBAAwB;AAAA,MACzC;AACA,UAAI,CAAC,SAAS,EAAE,GAAG;AACjB,yBAAiB,EAAE;AAAA,MACrB;AACA,YAAM,OAAQ,KAAK,MAA6B,KAAK,KAAK;AAC1D,UAAI,KAAK,SAAS,0BAA0B;AAC1C;AAAA,UACE,4DAAuD,wBAAwB;AAAA,QACjF;AAAA,MACF;AACA,YAAM,SAAS,cAAc;AAC7B,YAAM,QAAiC,yBAAyB,EAAE,QAAQ,WAAW,IAAI,KAAK,CAAC;AAC/F,cAAQ;AAAA,IACV,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/connect-5PGL7ZOM.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
attachDestination,
|
|
3
|
-
attachSettings,
|
|
4
|
-
attachStep,
|
|
5
|
-
connectCommand,
|
|
6
|
-
copyDestination,
|
|
7
|
-
destinationRefusal,
|
|
8
|
-
restatableTargets,
|
|
9
|
-
sealRequestFor,
|
|
10
|
-
targetsFor,
|
|
11
|
-
unpickedSteps,
|
|
12
|
-
unwiredHubspotForms,
|
|
13
|
-
unwiredSideEffects
|
|
14
|
-
} from "./chunk-OE3MIV4F.js";
|
|
15
|
-
import "./chunk-2KRK667G.js";
|
|
16
|
-
import "./chunk-Q3LXLWZY.js";
|
|
17
|
-
import "./chunk-ZDAVSTEE.js";
|
|
18
|
-
import "./chunk-DAO63OOP.js";
|
|
19
|
-
import "./chunk-GXDLWBOY.js";
|
|
20
|
-
import "./chunk-GIWHHCD6.js";
|
|
21
|
-
import "./chunk-XQIOCIDO.js";
|
|
22
|
-
import "./chunk-WTJSMYY2.js";
|
|
23
|
-
import "./chunk-6YLNY6CK.js";
|
|
24
|
-
import "./chunk-D5NEIESR.js";
|
|
25
|
-
import "./chunk-57KKVDDR.js";
|
|
26
|
-
import "./chunk-QANGHND7.js";
|
|
27
|
-
import "./chunk-YQSBHWOI.js";
|
|
28
|
-
export {
|
|
29
|
-
attachDestination,
|
|
30
|
-
attachSettings,
|
|
31
|
-
attachStep,
|
|
32
|
-
connectCommand,
|
|
33
|
-
copyDestination,
|
|
34
|
-
destinationRefusal,
|
|
35
|
-
restatableTargets,
|
|
36
|
-
sealRequestFor,
|
|
37
|
-
targetsFor,
|
|
38
|
-
unpickedSteps,
|
|
39
|
-
unwiredHubspotForms,
|
|
40
|
-
unwiredSideEffects
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=connect-5PGL7ZOM.js.map
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
csvOrJson,
|
|
3
|
-
daysAgoIso,
|
|
4
|
-
handleLinkedinError,
|
|
5
|
-
todayIso
|
|
6
|
-
} from "./chunk-VB3XUR6A.js";
|
|
7
|
-
import {
|
|
8
|
-
writeAdsJson,
|
|
9
|
-
writeAdsOutput
|
|
10
|
-
} from "./chunk-2VIZ4UUZ.js";
|
|
11
|
-
import {
|
|
12
|
-
NO_CACHE_ARG
|
|
13
|
-
} from "./chunk-U6RONIJC.js";
|
|
14
|
-
import "./chunk-DAO63OOP.js";
|
|
15
|
-
import "./chunk-GXDLWBOY.js";
|
|
16
|
-
import "./chunk-GIWHHCD6.js";
|
|
17
|
-
import "./chunk-XQIOCIDO.js";
|
|
18
|
-
import "./chunk-WTJSMYY2.js";
|
|
19
|
-
import {
|
|
20
|
-
apiPost
|
|
21
|
-
} from "./chunk-6YLNY6CK.js";
|
|
22
|
-
import "./chunk-D5NEIESR.js";
|
|
23
|
-
import "./chunk-57KKVDDR.js";
|
|
24
|
-
import "./chunk-QANGHND7.js";
|
|
25
|
-
import "./chunk-YQSBHWOI.js";
|
|
26
|
-
|
|
27
|
-
// src/commands/ads/linkedin/conversation.ts
|
|
28
|
-
import { defineCommand } from "citty";
|
|
29
|
-
var conversationCommand = defineCommand({
|
|
30
|
-
meta: {
|
|
31
|
-
name: "conversation",
|
|
32
|
-
description: `Per-button click rates inside Sponsored Messaging / Conversation Ads.
|
|
33
|
-
|
|
34
|
-
Returns one row per CONVERSATION_NODE_BUTTON pivot, sorted by clicks desc.
|
|
35
|
-
Use this to A/B test button copy and the cascade tree.
|
|
36
|
-
|
|
37
|
-
Examples:
|
|
38
|
-
baker ads linkedin conversation --campaign-id 1234
|
|
39
|
-
baker ads linkedin conversation --campaign-id 1234 --last-days 30 --output csv`
|
|
40
|
-
},
|
|
41
|
-
args: {
|
|
42
|
-
"campaign-id": {
|
|
43
|
-
type: "string",
|
|
44
|
-
description: "Comma-separated campaign IDs (Conversation Ad campaigns)",
|
|
45
|
-
required: true
|
|
46
|
-
},
|
|
47
|
-
start: { type: "string", description: "Start date YYYY-MM-DD" },
|
|
48
|
-
end: { type: "string", description: "End date YYYY-MM-DD" },
|
|
49
|
-
"last-days": { type: "string", description: "Window relative to today (default: 30)" },
|
|
50
|
-
"no-cache": NO_CACHE_ARG,
|
|
51
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
|
|
52
|
-
},
|
|
53
|
-
run: async ({ args }) => {
|
|
54
|
-
const campaignIdsRaw = args["campaign-id"];
|
|
55
|
-
if (!campaignIdsRaw) {
|
|
56
|
-
handleLinkedinError(new Error("--campaign-id is required"));
|
|
57
|
-
}
|
|
58
|
-
const ids = campaignIdsRaw.split(",").map((s) => s.trim()).filter(Boolean);
|
|
59
|
-
const start = args.start ?? daysAgoIso(args["last-days"] ? Number(args["last-days"]) : 30);
|
|
60
|
-
const end = args.end ?? todayIso();
|
|
61
|
-
try {
|
|
62
|
-
const data = await apiPost("/api/ads/linkedin/analytics", {
|
|
63
|
-
request: {
|
|
64
|
-
level: "campaign",
|
|
65
|
-
ids,
|
|
66
|
-
intent: "inmail",
|
|
67
|
-
pivot: "conversation-node-button",
|
|
68
|
-
start,
|
|
69
|
-
end,
|
|
70
|
-
granularity: "ALL",
|
|
71
|
-
limit: 500
|
|
72
|
-
},
|
|
73
|
-
skipCache: Boolean(args["no-cache"])
|
|
74
|
-
});
|
|
75
|
-
const sorted = [...data.rows].sort((a, b) => Number(b.clicks ?? 0) - Number(a.clicks ?? 0));
|
|
76
|
-
const fmt = csvOrJson(args);
|
|
77
|
-
if (fmt !== "json") {
|
|
78
|
-
writeAdsOutput(sorted, fmt, data.fields);
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
writeAdsJson({
|
|
82
|
-
ok: true,
|
|
83
|
-
data: { query: { campaigns: ids, start, end }, rows: sorted, warnings: data.warnings }
|
|
84
|
-
});
|
|
85
|
-
} catch (err) {
|
|
86
|
-
handleLinkedinError(err);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
export {
|
|
91
|
-
conversationCommand
|
|
92
|
-
};
|
|
93
|
-
//# sourceMappingURL=conversation-CSOKJXDW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/conversation.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { csvOrJson, daysAgoIso, handleLinkedinError, todayIso } from \"./shared.ts\";\n\ninterface AnalyticsResponse {\n rows: Array<Record<string, unknown>>;\n fields: string[];\n warnings: Array<{ code: string; message: string }>;\n}\n\n/**\n * Conversation Ads (Sponsored Messaging) per-button analytics. Wraps\n * --pivot conversation-node-button on /api/ads/linkedin/analytics.\n *\n * Lets agents see which CTA button inside a multi-step Sponsored Message\n * actually drives clicks — no other ad platform exposes this granularity.\n */\nexport const conversationCommand = defineCommand({\n meta: {\n name: \"conversation\",\n description: `Per-button click rates inside Sponsored Messaging / Conversation Ads.\n\nReturns one row per CONVERSATION_NODE_BUTTON pivot, sorted by clicks desc.\nUse this to A/B test button copy and the cascade tree.\n\nExamples:\n baker ads linkedin conversation --campaign-id 1234\n baker ads linkedin conversation --campaign-id 1234 --last-days 30 --output csv`,\n },\n args: {\n \"campaign-id\": {\n type: \"string\",\n description: \"Comma-separated campaign IDs (Conversation Ad campaigns)\",\n required: true,\n },\n start: { type: \"string\", description: \"Start date YYYY-MM-DD\" },\n end: { type: \"string\", description: \"End date YYYY-MM-DD\" },\n \"last-days\": { type: \"string\", description: \"Window relative to today (default: 30)\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n const campaignIdsRaw = args[\"campaign-id\"] as string | undefined;\n if (!campaignIdsRaw) {\n handleLinkedinError(new Error(\"--campaign-id is required\"));\n }\n const ids = campaignIdsRaw\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n const start = (args.start as string | undefined) ?? daysAgoIso(args[\"last-days\"] ? Number(args[\"last-days\"]) : 30);\n const end = (args.end as string | undefined) ?? todayIso();\n\n try {\n const data = await apiPost<AnalyticsResponse>(\"/api/ads/linkedin/analytics\", {\n request: {\n level: \"campaign\",\n ids,\n intent: \"inmail\",\n pivot: \"conversation-node-button\",\n start,\n end,\n granularity: \"ALL\",\n limit: 500,\n },\n skipCache: Boolean(args[\"no-cache\"]),\n });\n const sorted = [...data.rows].sort((a, b) => Number(b.clicks ?? 0) - Number(a.clicks ?? 0));\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(sorted, fmt, data.fields);\n return;\n }\n writeAdsJson({\n ok: true,\n data: { query: { campaigns: ids, start, end }, rows: sorted, warnings: data.warnings },\n });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAmBvB,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQf;AAAA,EACA,MAAM;AAAA,IACJ,eAAe;AAAA,MACb,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,wBAAwB;AAAA,IAC9D,KAAK,EAAE,MAAM,UAAU,aAAa,sBAAsB;AAAA,IAC1D,aAAa,EAAE,MAAM,UAAU,aAAa,yCAAyC;AAAA,IACrF,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,qBAAqB,SAAS,OAAO;AAAA,EAC9E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,iBAAiB,KAAK,aAAa;AACzC,QAAI,CAAC,gBAAgB;AACnB,0BAAoB,IAAI,MAAM,2BAA2B,CAAC;AAAA,IAC5D;AACA,UAAM,MAAM,eACT,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AACjB,UAAM,QAAS,KAAK,SAAgC,WAAW,KAAK,WAAW,IAAI,OAAO,KAAK,WAAW,CAAC,IAAI,EAAE;AACjH,UAAM,MAAO,KAAK,OAA8B,SAAS;AAEzD,QAAI;AACF,YAAM,OAAO,MAAM,QAA2B,+BAA+B;AAAA,QAC3E,SAAS;AAAA,UACP,OAAO;AAAA,UACP;AAAA,UACA,QAAQ;AAAA,UACR,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb,OAAO;AAAA,QACT;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,YAAM,SAAS,CAAC,GAAG,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,EAAE,UAAU,CAAC,IAAI,OAAO,EAAE,UAAU,CAAC,CAAC;AAC1F,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,QAAQ,KAAK,KAAK,MAAM;AACvC;AAAA,MACF;AACA,mBAAa;AAAA,QACX,IAAI;AAAA,QACJ,MAAM,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,IAAI,GAAG,MAAM,QAAQ,UAAU,KAAK,SAAS;AAAA,MACvF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
csvOrJson,
|
|
3
|
-
handleLinkedinError,
|
|
4
|
-
resolveAccountIdArg
|
|
5
|
-
} from "./chunk-VB3XUR6A.js";
|
|
6
|
-
import {
|
|
7
|
-
writeAdsJson,
|
|
8
|
-
writeAdsOutput
|
|
9
|
-
} from "./chunk-2VIZ4UUZ.js";
|
|
10
|
-
import {
|
|
11
|
-
NO_CACHE_ARG
|
|
12
|
-
} from "./chunk-U6RONIJC.js";
|
|
13
|
-
import "./chunk-DAO63OOP.js";
|
|
14
|
-
import "./chunk-GXDLWBOY.js";
|
|
15
|
-
import "./chunk-GIWHHCD6.js";
|
|
16
|
-
import "./chunk-XQIOCIDO.js";
|
|
17
|
-
import "./chunk-WTJSMYY2.js";
|
|
18
|
-
import {
|
|
19
|
-
apiGet
|
|
20
|
-
} from "./chunk-6YLNY6CK.js";
|
|
21
|
-
import "./chunk-D5NEIESR.js";
|
|
22
|
-
import "./chunk-57KKVDDR.js";
|
|
23
|
-
import "./chunk-QANGHND7.js";
|
|
24
|
-
import "./chunk-YQSBHWOI.js";
|
|
25
|
-
|
|
26
|
-
// src/commands/ads/linkedin/conversions.ts
|
|
27
|
-
import { defineCommand } from "citty";
|
|
28
|
-
var DAY_MS = 864e5;
|
|
29
|
-
function healthOf(rules) {
|
|
30
|
-
const enabled = rules.filter((r) => r.enabled !== false);
|
|
31
|
-
const capi = enabled.filter((r) => r.conversionMethod === "CONVERSIONS_API");
|
|
32
|
-
const pixel = enabled.filter((r) => r.conversionMethod === "PIXEL");
|
|
33
|
-
const staleCapi = capi.filter(
|
|
34
|
-
(r) => !r.lastConversionReportedAt || Date.now() - r.lastConversionReportedAt > 7 * DAY_MS
|
|
35
|
-
);
|
|
36
|
-
const longView = enabled.filter(
|
|
37
|
-
(r) => r.viewThroughAttributionWindowSize !== void 0 && r.viewThroughAttributionWindowSize > 7
|
|
38
|
-
);
|
|
39
|
-
const leads = enabled.filter((r) => r.type === "LEAD");
|
|
40
|
-
const wrongDedup = leads.filter((r) => r.countingMethod && r.countingMethod !== "ONE_TIME_EACH_MEMBER");
|
|
41
|
-
return {
|
|
42
|
-
totalRules: rules.length,
|
|
43
|
-
enabledRules: enabled.length,
|
|
44
|
-
capiRules: capi.length,
|
|
45
|
-
pixelRules: pixel.length,
|
|
46
|
-
hasLeadEvent: leads.length > 0,
|
|
47
|
-
hasPurchaseEvent: enabled.some((r) => r.type === "PURCHASE"),
|
|
48
|
-
staleCapiRules: staleCapi,
|
|
49
|
-
longViewWindow: longView,
|
|
50
|
-
wrongLeadDedup: wrongDedup
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
var listCmd = defineCommand({
|
|
54
|
-
meta: {
|
|
55
|
-
name: "list",
|
|
56
|
-
description: `List conversion rules on the account.`
|
|
57
|
-
},
|
|
58
|
-
args: {
|
|
59
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
60
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
61
|
-
"no-cache": NO_CACHE_ARG,
|
|
62
|
-
output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
|
|
63
|
-
},
|
|
64
|
-
run: async ({ args }) => {
|
|
65
|
-
const accountId = resolveAccountIdArg(args);
|
|
66
|
-
try {
|
|
67
|
-
const params = { "account-id": accountId };
|
|
68
|
-
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
69
|
-
const data = await apiGet("/api/ads/linkedin/conversions", params);
|
|
70
|
-
const fmt = csvOrJson(args);
|
|
71
|
-
if (fmt !== "json") {
|
|
72
|
-
writeAdsOutput(data, fmt);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
writeAdsJson({ ok: true, data });
|
|
76
|
-
} catch (err) {
|
|
77
|
-
handleLinkedinError(err);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
var healthCmd = defineCommand({
|
|
82
|
-
meta: {
|
|
83
|
-
name: "health",
|
|
84
|
-
description: `5-point Insight Tag / CAPI health check (playbook \xA707).
|
|
85
|
-
|
|
86
|
-
Surfaces:
|
|
87
|
-
- Are rules enabled?
|
|
88
|
-
- Do we have at least one LEAD or PURCHASE event?
|
|
89
|
-
- Do CAPI rules show recent activity (\u22647 days)?
|
|
90
|
-
- Is the view-through window \u22647 days?
|
|
91
|
-
- Do LEAD rules use ONE_TIME_EACH_MEMBER de-dup?`
|
|
92
|
-
},
|
|
93
|
-
args: {
|
|
94
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
95
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
96
|
-
"no-cache": NO_CACHE_ARG,
|
|
97
|
-
output: { type: "string", description: "json", default: "json" }
|
|
98
|
-
},
|
|
99
|
-
run: async ({ args }) => {
|
|
100
|
-
const accountId = resolveAccountIdArg(args);
|
|
101
|
-
try {
|
|
102
|
-
const params = { "account-id": accountId };
|
|
103
|
-
if (args["no-cache"]) params["skip-cache"] = "true";
|
|
104
|
-
const data = await apiGet("/api/ads/linkedin/conversions", params);
|
|
105
|
-
writeAdsJson({ ok: true, data: healthOf(data) });
|
|
106
|
-
} catch (err) {
|
|
107
|
-
handleLinkedinError(err);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
var conversionsCommand = defineCommand({
|
|
112
|
-
meta: {
|
|
113
|
-
name: "conversions",
|
|
114
|
-
description: `Conversion rules \u2014 Insight Tag and Conversions API.
|
|
115
|
-
|
|
116
|
-
Subcommands:
|
|
117
|
-
list \u2014 every rule on the account
|
|
118
|
-
health \u2014 playbook \xA707 5-point health check
|
|
119
|
-
create / update \u2014 stage a conversion-rule write (applies on chat publish)
|
|
120
|
-
associate-campaign / dissociate-campaign
|
|
121
|
-
\u2014 which ad sets a rule counts for (its own LinkedIn record, not a field on the rule)`
|
|
122
|
-
},
|
|
123
|
-
subCommands: {
|
|
124
|
-
list: listCmd,
|
|
125
|
-
health: healthCmd,
|
|
126
|
-
create: () => import("./write-commands-QPDE4GWW.js").then((m) => m.conversionsCreateCommand),
|
|
127
|
-
update: () => import("./write-commands-QPDE4GWW.js").then((m) => m.conversionsUpdateCommand),
|
|
128
|
-
"associate-campaign": () => import("./write-commands-QPDE4GWW.js").then((m) => m.conversionsAssociateCommand),
|
|
129
|
-
"dissociate-campaign": () => import("./write-commands-QPDE4GWW.js").then((m) => m.conversionsDissociateCommand)
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
export {
|
|
133
|
-
conversionsCommand
|
|
134
|
-
};
|
|
135
|
-
//# sourceMappingURL=conversions-4JOTTFEH.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/conversions.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { csvOrJson, handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface ConversionRule {\n id: string;\n urn: string;\n account: string;\n name?: string;\n type?: string;\n enabled?: boolean;\n conversionMethod?: string;\n attributionType?: string;\n postClickAttributionWindowSize?: number;\n viewThroughAttributionWindowSize?: number;\n associatedCampaigns?: string[];\n countingMethod?: string;\n lastConversionReportedAt?: number;\n}\n\nconst DAY_MS = 86_400_000;\n\nfunction healthOf(rules: ConversionRule[]): {\n totalRules: number;\n enabledRules: number;\n capiRules: number;\n pixelRules: number;\n hasLeadEvent: boolean;\n hasPurchaseEvent: boolean;\n staleCapiRules: ConversionRule[];\n longViewWindow: ConversionRule[];\n wrongLeadDedup: ConversionRule[];\n} {\n const enabled = rules.filter((r) => r.enabled !== false);\n const capi = enabled.filter((r) => r.conversionMethod === \"CONVERSIONS_API\");\n const pixel = enabled.filter((r) => r.conversionMethod === \"PIXEL\");\n const staleCapi = capi.filter(\n (r) => !r.lastConversionReportedAt || Date.now() - r.lastConversionReportedAt > 7 * DAY_MS,\n );\n const longView = enabled.filter(\n (r) => r.viewThroughAttributionWindowSize !== undefined && r.viewThroughAttributionWindowSize > 7,\n );\n const leads = enabled.filter((r) => r.type === \"LEAD\");\n const wrongDedup = leads.filter((r) => r.countingMethod && r.countingMethod !== \"ONE_TIME_EACH_MEMBER\");\n return {\n totalRules: rules.length,\n enabledRules: enabled.length,\n capiRules: capi.length,\n pixelRules: pixel.length,\n hasLeadEvent: leads.length > 0,\n hasPurchaseEvent: enabled.some((r) => r.type === \"PURCHASE\"),\n staleCapiRules: staleCapi,\n longViewWindow: longView,\n wrongLeadDedup: wrongDedup,\n };\n}\n\nconst listCmd = defineCommand({\n meta: {\n name: \"list\",\n description: `List conversion rules on the account.`,\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 \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<ConversionRule[]>(\"/api/ads/linkedin/conversions\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data as unknown as Array<Record<string, unknown>>, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n\nconst healthCmd = defineCommand({\n meta: {\n name: \"health\",\n description: `5-point Insight Tag / CAPI health check (playbook §07).\n\nSurfaces:\n - Are rules enabled?\n - Do we have at least one LEAD or PURCHASE event?\n - Do CAPI rules show recent activity (≤7 days)?\n - Is the view-through window ≤7 days?\n - Do LEAD rules use ONE_TIME_EACH_MEMBER de-dup?`,\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 \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json\", default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<ConversionRule[]>(\"/api/ads/linkedin/conversions\", params);\n writeAdsJson({ ok: true, data: healthOf(data) });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n\nexport const conversionsCommand = defineCommand({\n meta: {\n name: \"conversions\",\n description: `Conversion rules — Insight Tag and Conversions API.\n\nSubcommands:\n list — every rule on the account\n health — playbook §07 5-point health check\n create / update — stage a conversion-rule write (applies on chat publish)\n associate-campaign / dissociate-campaign\n — which ad sets a rule counts for (its own LinkedIn record, not a field on the rule)`,\n },\n subCommands: {\n list: listCmd,\n health: healthCmd,\n create: () => import(\"./write-commands.ts\").then((m) => m.conversionsCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.conversionsUpdateCommand),\n \"associate-campaign\": () => import(\"./write-commands.ts\").then((m) => m.conversionsAssociateCommand),\n \"dissociate-campaign\": () => import(\"./write-commands.ts\").then((m) => m.conversionsDissociateCommand),\n },\n});\n"],"mappings":"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","names":[]}
|