@koda-sl/baker-cli 0.477.0 → 0.478.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 +9 -2
- package/dist/{account-NCX3VHZT.js → account-JPLZDN6P.js} +4 -4
- package/dist/{accounts-2MQVGI4I.js → accounts-A436U3XR.js} +3 -3
- package/dist/{accounts-MQIYTIAX.js → accounts-CONSIJU6.js} +5 -5
- package/dist/{actions-LRSHHDV2.js → actions-J2YTDYK4.js} +18 -18
- package/dist/{activecampaign-G4XARU6N.js → activecampaign-W4YD73BL.js} +3 -3
- package/dist/{add-ZP47HVHW.js → add-NFBS2JQL.js} +2 -2
- package/dist/{add-2MVZQJYG.js → add-SXFET7AD.js} +3 -3
- package/dist/{ads-7YYCWZIR.js → ads-QDFOWMSP.js} +3 -3
- package/dist/{advertisers-246ZLRFZ.js → advertisers-6ASS5GMI.js} +3 -3
- package/dist/{analytics-WPYPKM6L.js → analytics-DZJDNCAK.js} +6 -6
- package/dist/{analytics-SL56NTIV.js → analytics-VTFXYOVF.js} +3 -3
- package/dist/{assign-WGQVY3DW.js → assign-2NNSXCTL.js} +3 -3
- package/dist/{audience-size-C37XJ6GS.js → audience-size-YAUL5I4L.js} +5 -26
- package/dist/audience-size-YAUL5I4L.js.map +1 -0
- package/dist/{audit-LGD4PMAI.js → audit-DCVOOFPI.js} +3 -3
- package/dist/{autocomplete-PD2EMWRU.js → autocomplete-6VBDEE6O.js} +3 -3
- package/dist/{avatars-U5KAMVNV.js → avatars-AVLB3D5I.js} +4 -4
- package/dist/bid-pricing-GHWQIWCX.js +100 -0
- package/dist/bid-pricing-GHWQIWCX.js.map +1 -0
- package/dist/{brand-2JJ45TBO.js → brand-PPMZKVFC.js} +2 -2
- package/dist/{brief-IMTLJQN2.js → brief-ZUY55FHQ.js} +7 -7
- package/dist/{campaign-groups-ZXRHEEGS.js → campaign-groups-RXN3P22B.js} +8 -8
- package/dist/{campaign-writes-WIBYW73K.js → campaign-writes-FZ2U5IYO.js} +3 -3
- package/dist/{campaigns-CRRLTN74.js → campaigns-C56DUMH6.js} +5 -5
- package/dist/{campaigns-EY3AR4N7.js → campaigns-XNS24UNF.js} +11 -11
- package/dist/{canvas-WFYKZYZD.js → canvas-P64D7YZ7.js} +12 -12
- package/dist/{capabilities-IGKT7D4H.js → capabilities-LGQT5ONL.js} +3 -3
- package/dist/{chats-OXIYXI4U.js → chats-YD36KDU7.js} +3 -3
- package/dist/{chunk-XYOU3ROP.js → chunk-22WY4M2Y.js} +35 -3
- package/dist/chunk-22WY4M2Y.js.map +1 -0
- package/dist/{chunk-3IGY2FWK.js → chunk-3YSLIBIM.js} +4 -4
- package/dist/{chunk-TLQQV5AY.js → chunk-4YEZLIQD.js} +3 -3
- package/dist/{chunk-TOIFDXCW.js → chunk-53JBNG5Q.js} +2 -2
- package/dist/{chunk-GAJQPQWS.js → chunk-A5VAM472.js} +4 -1
- package/dist/{chunk-UMFKMS4U.js → chunk-BOHHB74V.js} +2 -2
- package/dist/{chunk-JU6X4XFU.js → chunk-DWVNYWWQ.js} +2 -2
- package/dist/{chunk-CU2DEMQB.js → chunk-EK2CTQIR.js} +2 -2
- package/dist/{chunk-D5Z34AYL.js → chunk-EYUFEDDT.js} +3 -3
- package/dist/{chunk-4LODOBIN.js → chunk-GUMLW3YA.js} +2 -2
- package/dist/{chunk-JQ4PQ2H6.js → chunk-HSRZIRDM.js} +2 -2
- package/dist/{chunk-F3VR6CTH.js → chunk-IHK2VONG.js} +2 -2
- package/dist/{chunk-37P6DTDJ.js → chunk-JOXSQDDP.js} +2 -2
- package/dist/{chunk-YDWQVAFI.js → chunk-JSELMKJJ.js} +2 -2
- package/dist/{chunk-YDSF4PXO.js → chunk-JVVPLTOK.js} +3 -3
- package/dist/{chunk-LKM3FMYC.js → chunk-KMKELX5X.js} +2 -2
- package/dist/{chunk-O5J5T4ZL.js → chunk-L4LLNGJG.js} +3 -3
- package/dist/{chunk-XKA4ZHGX.js → chunk-LFMKBF6Q.js} +2 -2
- package/dist/{chunk-2SQ6ISRI.js → chunk-LNJNZ4KQ.js} +2 -2
- package/dist/{chunk-PXTFT35U.js → chunk-LWOAW25O.js} +5 -5
- package/dist/{chunk-H4DAEWJQ.js → chunk-LXAODGOM.js} +3 -3
- package/dist/{chunk-WE6K2VVZ.js → chunk-MN25G3MA.js} +2 -2
- package/dist/{chunk-RCMK4FM2.js → chunk-OQAE4GPV.js} +2 -2
- package/dist/{chunk-NHQTEQPR.js → chunk-OWUZN2NC.js} +2 -2
- package/dist/{chunk-O6TGA5HT.js → chunk-PBC63KPH.js} +2 -2
- package/dist/{chunk-7MADMR5U.js → chunk-QSSYLT3W.js} +2 -2
- package/dist/{chunk-SOK7U4NT.js → chunk-SG4BABZ7.js} +2 -2
- package/dist/{chunk-PCSBF6GN.js → chunk-UEC4JUK6.js} +5 -5
- package/dist/{chunk-GRYP7Y5V.js → chunk-UR4PSKOP.js} +2 -2
- package/dist/{chunk-PLK7V2SJ.js → chunk-V3NGFNHO.js} +5 -5
- package/dist/chunk-VX45CG4L.js +61 -0
- package/dist/chunk-VX45CG4L.js.map +1 -0
- package/dist/{chunk-QGSV3IWT.js → chunk-YDOZX6E5.js} +2 -2
- package/dist/{chunk-MICLDQES.js → chunk-YQDRMOMQ.js} +3 -3
- package/dist/{chunk-R4CDO5YH.js → chunk-ZNEUUBRZ.js} +2 -2
- package/dist/{claim-DEQYWQZ4.js → claim-RDP6PVKV.js} +3 -3
- package/dist/cli.js +29 -29
- package/dist/{companies-QM5MOLIZ.js → companies-WSHYZ557.js} +3 -3
- package/dist/{complete-FM6VSFCT.js → complete-MJMDSDTL.js} +3 -3
- package/dist/{connect-YTIE5PRU.js → connect-447TO57M.js} +6 -6
- package/dist/{conversation-VKWYWPB6.js → conversation-22J2PEAU.js} +3 -3
- package/dist/{conversions-QILFJ34A.js → conversions-KNLCEM2G.js} +7 -7
- package/dist/{create-LRVA4MSV.js → create-AVOJFXDX.js} +3 -3
- package/dist/{create-BEH3DUUP.js → create-LP4QECLS.js} +3 -3
- package/dist/{create-C4LTWKD7.js → create-P42BMP2W.js} +3 -3
- package/dist/{create-A7O5CBUS.js → create-XUD5CW7C.js} +2 -2
- package/dist/{creatives-XEKEYLNV.js → creatives-RX3U2DWI.js} +8 -8
- package/dist/{creatives-DRRWFFOH.js → creatives-TUNKTWAB.js} +10 -10
- package/dist/{credentials-GJMH4XRU.js → credentials-FS5XLAEX.js} +3 -3
- package/dist/{critique-GIJUTKIM.js → critique-BNEG5CZK.js} +3 -3
- package/dist/{critique-EJJQVV4D.js → critique-OQWHF4SK.js} +5 -5
- package/dist/{crm-WHK3PL6S.js → crm-3373VMGE.js} +4 -4
- package/dist/{crm-ECMEYPQT.js → crm-HLPVTUIM.js} +4 -4
- package/dist/{customers-XKE3DQR7.js → customers-UCJBL2IP.js} +5 -5
- package/dist/{delete-APRR2OYC.js → delete-7J5VDP6V.js} +2 -2
- package/dist/{delete-QCZUGDIJ.js → delete-UCIUYLIT.js} +3 -3
- package/dist/{delete-DTTEHY6E.js → delete-ZKWLHEZT.js} +3 -3
- package/dist/{demographics-HG7NWA5U.js → demographics-AJPJPJKY.js} +3 -3
- package/dist/{discard-U3DW6WV3.js → discard-H32UEHFB.js} +3 -3
- package/dist/{domain-HTF3ARBJ.js → domain-Q42XWULH.js} +3 -3
- package/dist/{draft-GPL2TZXA.js → draft-3YDWWRPY.js} +3 -3
- package/dist/{draft-5RL6HZ6A.js → draft-ONDP2XRS.js} +4 -4
- package/dist/{draft-KTOZ2AT7.js → draft-ZVMS4RFF.js} +3 -3
- package/dist/{facets-2XQEJNZZ.js → facets-BFKYZCGA.js} +3 -3
- package/dist/{feedback-34M4VJ5S.js → feedback-R3G4EDCT.js} +2 -2
- package/dist/{feedback-record-ZINYAVHA.js → feedback-record-FJSCR6FW.js} +7 -7
- package/dist/{fetch-VYIMA5BI.js → fetch-6SUFMXRQ.js} +3 -3
- package/dist/{flows-ITS573ST.js → flows-OFARDYXZ.js} +10 -10
- package/dist/{fonts-U4YXUNNZ.js → fonts-T4M2DIJV.js} +5 -5
- package/dist/forecast-BA26XWJG.js +118 -0
- package/dist/forecast-BA26XWJG.js.map +1 -0
- package/dist/{funnel-46QWG5DN.js → funnel-RFQFRWPN.js} +4 -4
- package/dist/{get-MVWVS3YT.js → get-2W45IBSR.js} +3 -3
- package/dist/{get-IAJ57JLM.js → get-4LG7Q6AQ.js} +3 -3
- package/dist/{google-ads-DYNDLOBO.js → google-ads-VTOZZ4B5.js} +3 -3
- package/dist/{history-7HFGP7UI.js → history-PGNCHCSU.js} +3 -3
- package/dist/{hubspot-3LWMILTD.js → hubspot-QILJD6UV.js} +7 -7
- package/dist/{ideas-RHOV2ZJ6.js → ideas-4TZUGXTG.js} +2 -2
- package/dist/{images-KXEPMLOC.js → images-EWHRAJ46.js} +4 -4
- package/dist/{ingest-URYQ7BTL.js → ingest-DD6KXDYS.js} +2 -2
- package/dist/{ingest-H4F5TJC3.js → ingest-HIE4SAEY.js} +3 -3
- package/dist/{inspect-IPQTTZK3.js → inspect-5XJ3GTBQ.js} +3 -3
- package/dist/{keyword-metrics-SLCXHPZS.js → keyword-metrics-MGCBJBWU.js} +3 -3
- package/dist/{keywords-for-site-HBQSJKNN.js → keywords-for-site-MZWJ7HBX.js} +3 -3
- package/dist/{landing-PJJGQM3M.js → landing-LIS4NCGW.js} +2 -2
- package/dist/{leads-HXYLSNMB.js → leads-TSNX372E.js} +3 -3
- package/dist/{learn-ZUZ7MEY5.js → learn-N3JFZXAL.js} +4 -4
- package/dist/{line-item-writes-JNHZFCRM.js → line-item-writes-H2ZFXYH3.js} +3 -3
- package/dist/{line-items-WGLNILMH.js → line-items-JBL7LVCS.js} +5 -5
- package/dist/{link-KLFRRU24.js → link-THBFB2H2.js} +3 -3
- package/dist/{linkedin-LPWIZ3SS.js → linkedin-PVGZWXQJ.js} +71 -35
- package/dist/linkedin-PVGZWXQJ.js.map +1 -0
- package/dist/{list-MIGWTOQU.js → list-EIEZNGQ4.js} +3 -3
- package/dist/{list-SW3DF473.js → list-LPFAPCN4.js} +2 -2
- package/dist/{list-E3MCY43O.js → list-LS6TUGD5.js} +3 -3
- package/dist/{log-Y4NIMHFD.js → log-NX7ITJM2.js} +3 -3
- package/dist/{make-IJN6E4Q7.js → make-DBQMLTEI.js} +10 -10
- package/dist/{map-DHQTEDUH.js → map-TI3YWRBW.js} +4 -4
- package/dist/{mcp-ZHASO273.js → mcp-5DZTEDYI.js} +2 -2
- package/dist/{media-sources-MFBQDZNS.js → media-sources-QYRHVUBJ.js} +2 -2
- package/dist/{members-HTHOAHPO.js → members-RV546WDM.js} +3 -3
- package/dist/{normalize-PVOL256M.js → normalize-KKCNCXI2.js} +3 -3
- package/dist/{options-VDTCTJHY.js → options-UMDGX464.js} +6 -6
- package/dist/{organization-VC5RO4FS.js → organization-KQHJ77CV.js} +3 -3
- package/dist/{performance-QOQTL4XM.js → performance-SVWX2S6E.js} +4 -4
- package/dist/{promoted-tweet-writes-6PI2KR65.js → promoted-tweet-writes-XPRWBI7F.js} +3 -3
- package/dist/{promoted-tweets-UJRNHKKO.js → promoted-tweets-W7PCLJMU.js} +3 -3
- package/dist/{publish-R6RINQCF.js → publish-E4M7QXTR.js} +3 -3
- package/dist/{reddit-QWM5ZQ6P.js → reddit-BJDU3BO7.js} +4 -4
- package/dist/{refresh-ZPF7UH3S.js → refresh-OTR4EWLI.js} +2 -2
- package/dist/{release-BZPK2P3R.js → release-QJ4P2AVK.js} +3 -3
- package/dist/{remove-C7ZJYFCG.js → remove-BNO3BWM5.js} +2 -2
- package/dist/{reopen-6Q7NQX2C.js → reopen-BA76RSLQ.js} +3 -3
- package/dist/{rerun-VRZVJDYS.js → rerun-U4I6RPRC.js} +10 -10
- package/dist/{research-X6O7IID6.js → research-3ATNYHRA.js} +2 -2
- package/dist/{research-FXQ6X7BY.js → research-CYZEWHHZ.js} +10 -10
- package/dist/{reset-NXK6NCOO.js → reset-HGTZIAHW.js} +2 -2
- package/dist/{reset-FRNQUCL5.js → reset-NM33L5LY.js} +2 -2
- package/dist/{resolve-WHI4UP4V.js → resolve-L2A3HC56.js} +3 -3
- package/dist/{retry-XMTYWCFA.js → retry-C3PBVY3I.js} +2 -2
- package/dist/{retry-VSFPEXLE.js → retry-ID7ZKLBK.js} +2 -2
- package/dist/{run-TAASFDQ7.js → run-DI4BRLKS.js} +3 -3
- package/dist/{run-HBNAA56X.js → run-IE4GVP4I.js} +10 -10
- package/dist/{scaffold-ad-BV5WK4IA.js → scaffold-ad-VQRC2NA6.js} +8 -8
- package/dist/{scaffold-static-ad-IWNJ6GM7.js → scaffold-static-ad-B4TEGMSE.js} +12 -12
- package/dist/{scaffold-video-JBG7Q45T.js → scaffold-video-BJLKBATO.js} +7 -7
- package/dist/{schedule-P6GVRZ4E.js → schedule-OFYLBZT6.js} +2 -2
- package/dist/{scheduled-agents-TYT5BIBQ.js → scheduled-agents-X2U7J42A.js} +10 -10
- package/dist/{schema-O4CMQQGD.js → schema-CULVYXO7.js} +4 -4
- package/dist/{search-HBFAHH4W.js → search-QDQNZ63X.js} +2 -2
- package/dist/{select-ISR6YEIE.js → select-X3FT42OL.js} +7 -7
- package/dist/{set-prompt-DF7Q6WOF.js → set-prompt-C7HSNTIA.js} +5 -5
- package/dist/{setup-links-GF2IP4TH.js → setup-links-ZK6L7GQD.js} +3 -3
- package/dist/{site-T6V5S5DJ.js → site-6Z5A3G5J.js} +4 -4
- package/dist/{sources-UR3SLKVK.js → sources-7QRFH5AB.js} +6 -6
- package/dist/{sources-5YUE7KUI.js → sources-B2L6X7ZE.js} +6 -6
- package/dist/{stale-6LZAROBI.js → stale-ZGIUVXGA.js} +6 -6
- package/dist/{status-FDKP65DR.js → status-SW3PYV6Q.js} +3 -3
- package/dist/{sync-OGFGTKUK.js → sync-K74WY3AT.js} +2 -2
- package/dist/{sync-definition-MSQFCXRK.js → sync-definition-KKW7R7QS.js} +7 -7
- package/dist/{tags-GLHFHQW2.js → tags-4XQ5MEDJ.js} +3 -3
- package/dist/{tags-PYLVQEVS.js → tags-GJ5MIA6X.js} +3 -3
- package/dist/{tags-SL4F3LLY.js → tags-JXLOCBQ6.js} +3 -3
- package/dist/{tags-67KLYTJF.js → tags-NMZ2NGN2.js} +2 -2
- package/dist/{tags-XMRO4WF6.js → tags-V2SSR5XY.js} +4 -4
- package/dist/{targeting-criteria-VK3IR6N2.js → targeting-criteria-D2ZMGXLI.js} +3 -3
- package/dist/{targets-RCM2ZXSU.js → targets-6QA6MIQU.js} +3 -3
- package/dist/{testimonials-KTHDZ3R5.js → testimonials-LBGJKESG.js} +6 -6
- package/dist/{top-companies-MBTTJTRK.js → top-companies-6D6YFQAB.js} +3 -3
- package/dist/{translate-I6LZ3UZU.js → translate-R4Y2JVXC.js} +10 -10
- package/dist/{triggers-PDIVJDLP.js → triggers-MDZNDNCU.js} +3 -3
- package/dist/{unlink-IHEFAFG6.js → unlink-WS7DVDLH.js} +3 -3
- package/dist/{unstage-NJQAIIPT.js → unstage-K3I2TLRR.js} +3 -3
- package/dist/{update-LR7UW5LL.js → update-HPSXO5WB.js} +3 -3
- package/dist/{update-P5BTLCGG.js → update-J6FHMXWL.js} +3 -3
- package/dist/{update-K5MMOE5N.js → update-LCLRO26T.js} +2 -2
- package/dist/{update-CYQIGHT4.js → update-LZVLBRAX.js} +3 -3
- package/dist/{upload-VVB2LTD2.js → upload-XD7N4PJS.js} +3 -3
- package/dist/{url-params-MSRUZOGT.js → url-params-U5DW22SR.js} +3 -3
- package/dist/{validate-XMEHRCAG.js → validate-PRT6ZD72.js} +5 -5
- package/dist/{videos-EQG7AAXT.js → videos-KCXSXYJK.js} +5 -5
- package/dist/{web-MSYXLOFV.js → web-W2TTELHS.js} +3 -3
- package/dist/{winning-ads-VWBU3BNQ.js → winning-ads-YPQY6GVU.js} +2 -2
- package/dist/{write-commands-PK23JVW3.js → write-commands-SPTWBMLY.js} +4 -4
- package/dist/{x-ZSTQLK6Q.js → x-2Y2DGMPG.js} +6 -6
- package/package.json +1 -1
- package/dist/audience-size-C37XJ6GS.js.map +0 -1
- package/dist/bid-pricing-PP6PV6S4.js +0 -99
- package/dist/bid-pricing-PP6PV6S4.js.map +0 -1
- package/dist/chunk-XYOU3ROP.js.map +0 -1
- package/dist/forecast-AFBIS6WT.js +0 -104
- package/dist/forecast-AFBIS6WT.js.map +0 -1
- package/dist/linkedin-LPWIZ3SS.js.map +0 -1
- /package/dist/{account-NCX3VHZT.js.map → account-JPLZDN6P.js.map} +0 -0
- /package/dist/{accounts-2MQVGI4I.js.map → accounts-A436U3XR.js.map} +0 -0
- /package/dist/{accounts-MQIYTIAX.js.map → accounts-CONSIJU6.js.map} +0 -0
- /package/dist/{actions-LRSHHDV2.js.map → actions-J2YTDYK4.js.map} +0 -0
- /package/dist/{activecampaign-G4XARU6N.js.map → activecampaign-W4YD73BL.js.map} +0 -0
- /package/dist/{add-ZP47HVHW.js.map → add-NFBS2JQL.js.map} +0 -0
- /package/dist/{add-2MVZQJYG.js.map → add-SXFET7AD.js.map} +0 -0
- /package/dist/{ads-7YYCWZIR.js.map → ads-QDFOWMSP.js.map} +0 -0
- /package/dist/{advertisers-246ZLRFZ.js.map → advertisers-6ASS5GMI.js.map} +0 -0
- /package/dist/{analytics-WPYPKM6L.js.map → analytics-DZJDNCAK.js.map} +0 -0
- /package/dist/{analytics-SL56NTIV.js.map → analytics-VTFXYOVF.js.map} +0 -0
- /package/dist/{assign-WGQVY3DW.js.map → assign-2NNSXCTL.js.map} +0 -0
- /package/dist/{audit-LGD4PMAI.js.map → audit-DCVOOFPI.js.map} +0 -0
- /package/dist/{autocomplete-PD2EMWRU.js.map → autocomplete-6VBDEE6O.js.map} +0 -0
- /package/dist/{avatars-U5KAMVNV.js.map → avatars-AVLB3D5I.js.map} +0 -0
- /package/dist/{brand-2JJ45TBO.js.map → brand-PPMZKVFC.js.map} +0 -0
- /package/dist/{brief-IMTLJQN2.js.map → brief-ZUY55FHQ.js.map} +0 -0
- /package/dist/{campaign-groups-ZXRHEEGS.js.map → campaign-groups-RXN3P22B.js.map} +0 -0
- /package/dist/{campaign-writes-WIBYW73K.js.map → campaign-writes-FZ2U5IYO.js.map} +0 -0
- /package/dist/{campaigns-CRRLTN74.js.map → campaigns-C56DUMH6.js.map} +0 -0
- /package/dist/{campaigns-EY3AR4N7.js.map → campaigns-XNS24UNF.js.map} +0 -0
- /package/dist/{canvas-WFYKZYZD.js.map → canvas-P64D7YZ7.js.map} +0 -0
- /package/dist/{capabilities-IGKT7D4H.js.map → capabilities-LGQT5ONL.js.map} +0 -0
- /package/dist/{chats-OXIYXI4U.js.map → chats-YD36KDU7.js.map} +0 -0
- /package/dist/{chunk-3IGY2FWK.js.map → chunk-3YSLIBIM.js.map} +0 -0
- /package/dist/{chunk-TLQQV5AY.js.map → chunk-4YEZLIQD.js.map} +0 -0
- /package/dist/{chunk-TOIFDXCW.js.map → chunk-53JBNG5Q.js.map} +0 -0
- /package/dist/{chunk-GAJQPQWS.js.map → chunk-A5VAM472.js.map} +0 -0
- /package/dist/{chunk-UMFKMS4U.js.map → chunk-BOHHB74V.js.map} +0 -0
- /package/dist/{chunk-JU6X4XFU.js.map → chunk-DWVNYWWQ.js.map} +0 -0
- /package/dist/{chunk-CU2DEMQB.js.map → chunk-EK2CTQIR.js.map} +0 -0
- /package/dist/{chunk-D5Z34AYL.js.map → chunk-EYUFEDDT.js.map} +0 -0
- /package/dist/{chunk-4LODOBIN.js.map → chunk-GUMLW3YA.js.map} +0 -0
- /package/dist/{chunk-JQ4PQ2H6.js.map → chunk-HSRZIRDM.js.map} +0 -0
- /package/dist/{chunk-F3VR6CTH.js.map → chunk-IHK2VONG.js.map} +0 -0
- /package/dist/{chunk-37P6DTDJ.js.map → chunk-JOXSQDDP.js.map} +0 -0
- /package/dist/{chunk-YDWQVAFI.js.map → chunk-JSELMKJJ.js.map} +0 -0
- /package/dist/{chunk-YDSF4PXO.js.map → chunk-JVVPLTOK.js.map} +0 -0
- /package/dist/{chunk-LKM3FMYC.js.map → chunk-KMKELX5X.js.map} +0 -0
- /package/dist/{chunk-O5J5T4ZL.js.map → chunk-L4LLNGJG.js.map} +0 -0
- /package/dist/{chunk-XKA4ZHGX.js.map → chunk-LFMKBF6Q.js.map} +0 -0
- /package/dist/{chunk-2SQ6ISRI.js.map → chunk-LNJNZ4KQ.js.map} +0 -0
- /package/dist/{chunk-PXTFT35U.js.map → chunk-LWOAW25O.js.map} +0 -0
- /package/dist/{chunk-H4DAEWJQ.js.map → chunk-LXAODGOM.js.map} +0 -0
- /package/dist/{chunk-WE6K2VVZ.js.map → chunk-MN25G3MA.js.map} +0 -0
- /package/dist/{chunk-RCMK4FM2.js.map → chunk-OQAE4GPV.js.map} +0 -0
- /package/dist/{chunk-NHQTEQPR.js.map → chunk-OWUZN2NC.js.map} +0 -0
- /package/dist/{chunk-O6TGA5HT.js.map → chunk-PBC63KPH.js.map} +0 -0
- /package/dist/{chunk-7MADMR5U.js.map → chunk-QSSYLT3W.js.map} +0 -0
- /package/dist/{chunk-SOK7U4NT.js.map → chunk-SG4BABZ7.js.map} +0 -0
- /package/dist/{chunk-PCSBF6GN.js.map → chunk-UEC4JUK6.js.map} +0 -0
- /package/dist/{chunk-GRYP7Y5V.js.map → chunk-UR4PSKOP.js.map} +0 -0
- /package/dist/{chunk-PLK7V2SJ.js.map → chunk-V3NGFNHO.js.map} +0 -0
- /package/dist/{chunk-QGSV3IWT.js.map → chunk-YDOZX6E5.js.map} +0 -0
- /package/dist/{chunk-MICLDQES.js.map → chunk-YQDRMOMQ.js.map} +0 -0
- /package/dist/{chunk-R4CDO5YH.js.map → chunk-ZNEUUBRZ.js.map} +0 -0
- /package/dist/{claim-DEQYWQZ4.js.map → claim-RDP6PVKV.js.map} +0 -0
- /package/dist/{companies-QM5MOLIZ.js.map → companies-WSHYZ557.js.map} +0 -0
- /package/dist/{complete-FM6VSFCT.js.map → complete-MJMDSDTL.js.map} +0 -0
- /package/dist/{connect-YTIE5PRU.js.map → connect-447TO57M.js.map} +0 -0
- /package/dist/{conversation-VKWYWPB6.js.map → conversation-22J2PEAU.js.map} +0 -0
- /package/dist/{conversions-QILFJ34A.js.map → conversions-KNLCEM2G.js.map} +0 -0
- /package/dist/{create-LRVA4MSV.js.map → create-AVOJFXDX.js.map} +0 -0
- /package/dist/{create-BEH3DUUP.js.map → create-LP4QECLS.js.map} +0 -0
- /package/dist/{create-C4LTWKD7.js.map → create-P42BMP2W.js.map} +0 -0
- /package/dist/{create-A7O5CBUS.js.map → create-XUD5CW7C.js.map} +0 -0
- /package/dist/{creatives-XEKEYLNV.js.map → creatives-RX3U2DWI.js.map} +0 -0
- /package/dist/{creatives-DRRWFFOH.js.map → creatives-TUNKTWAB.js.map} +0 -0
- /package/dist/{credentials-GJMH4XRU.js.map → credentials-FS5XLAEX.js.map} +0 -0
- /package/dist/{critique-GIJUTKIM.js.map → critique-BNEG5CZK.js.map} +0 -0
- /package/dist/{critique-EJJQVV4D.js.map → critique-OQWHF4SK.js.map} +0 -0
- /package/dist/{crm-WHK3PL6S.js.map → crm-3373VMGE.js.map} +0 -0
- /package/dist/{crm-ECMEYPQT.js.map → crm-HLPVTUIM.js.map} +0 -0
- /package/dist/{customers-XKE3DQR7.js.map → customers-UCJBL2IP.js.map} +0 -0
- /package/dist/{delete-APRR2OYC.js.map → delete-7J5VDP6V.js.map} +0 -0
- /package/dist/{delete-QCZUGDIJ.js.map → delete-UCIUYLIT.js.map} +0 -0
- /package/dist/{delete-DTTEHY6E.js.map → delete-ZKWLHEZT.js.map} +0 -0
- /package/dist/{demographics-HG7NWA5U.js.map → demographics-AJPJPJKY.js.map} +0 -0
- /package/dist/{discard-U3DW6WV3.js.map → discard-H32UEHFB.js.map} +0 -0
- /package/dist/{domain-HTF3ARBJ.js.map → domain-Q42XWULH.js.map} +0 -0
- /package/dist/{draft-GPL2TZXA.js.map → draft-3YDWWRPY.js.map} +0 -0
- /package/dist/{draft-5RL6HZ6A.js.map → draft-ONDP2XRS.js.map} +0 -0
- /package/dist/{draft-KTOZ2AT7.js.map → draft-ZVMS4RFF.js.map} +0 -0
- /package/dist/{facets-2XQEJNZZ.js.map → facets-BFKYZCGA.js.map} +0 -0
- /package/dist/{feedback-34M4VJ5S.js.map → feedback-R3G4EDCT.js.map} +0 -0
- /package/dist/{feedback-record-ZINYAVHA.js.map → feedback-record-FJSCR6FW.js.map} +0 -0
- /package/dist/{fetch-VYIMA5BI.js.map → fetch-6SUFMXRQ.js.map} +0 -0
- /package/dist/{flows-ITS573ST.js.map → flows-OFARDYXZ.js.map} +0 -0
- /package/dist/{fonts-U4YXUNNZ.js.map → fonts-T4M2DIJV.js.map} +0 -0
- /package/dist/{funnel-46QWG5DN.js.map → funnel-RFQFRWPN.js.map} +0 -0
- /package/dist/{get-MVWVS3YT.js.map → get-2W45IBSR.js.map} +0 -0
- /package/dist/{get-IAJ57JLM.js.map → get-4LG7Q6AQ.js.map} +0 -0
- /package/dist/{google-ads-DYNDLOBO.js.map → google-ads-VTOZZ4B5.js.map} +0 -0
- /package/dist/{history-7HFGP7UI.js.map → history-PGNCHCSU.js.map} +0 -0
- /package/dist/{hubspot-3LWMILTD.js.map → hubspot-QILJD6UV.js.map} +0 -0
- /package/dist/{ideas-RHOV2ZJ6.js.map → ideas-4TZUGXTG.js.map} +0 -0
- /package/dist/{images-KXEPMLOC.js.map → images-EWHRAJ46.js.map} +0 -0
- /package/dist/{ingest-URYQ7BTL.js.map → ingest-DD6KXDYS.js.map} +0 -0
- /package/dist/{ingest-H4F5TJC3.js.map → ingest-HIE4SAEY.js.map} +0 -0
- /package/dist/{inspect-IPQTTZK3.js.map → inspect-5XJ3GTBQ.js.map} +0 -0
- /package/dist/{keyword-metrics-SLCXHPZS.js.map → keyword-metrics-MGCBJBWU.js.map} +0 -0
- /package/dist/{keywords-for-site-HBQSJKNN.js.map → keywords-for-site-MZWJ7HBX.js.map} +0 -0
- /package/dist/{landing-PJJGQM3M.js.map → landing-LIS4NCGW.js.map} +0 -0
- /package/dist/{leads-HXYLSNMB.js.map → leads-TSNX372E.js.map} +0 -0
- /package/dist/{learn-ZUZ7MEY5.js.map → learn-N3JFZXAL.js.map} +0 -0
- /package/dist/{line-item-writes-JNHZFCRM.js.map → line-item-writes-H2ZFXYH3.js.map} +0 -0
- /package/dist/{line-items-WGLNILMH.js.map → line-items-JBL7LVCS.js.map} +0 -0
- /package/dist/{link-KLFRRU24.js.map → link-THBFB2H2.js.map} +0 -0
- /package/dist/{list-MIGWTOQU.js.map → list-EIEZNGQ4.js.map} +0 -0
- /package/dist/{list-SW3DF473.js.map → list-LPFAPCN4.js.map} +0 -0
- /package/dist/{list-E3MCY43O.js.map → list-LS6TUGD5.js.map} +0 -0
- /package/dist/{log-Y4NIMHFD.js.map → log-NX7ITJM2.js.map} +0 -0
- /package/dist/{make-IJN6E4Q7.js.map → make-DBQMLTEI.js.map} +0 -0
- /package/dist/{map-DHQTEDUH.js.map → map-TI3YWRBW.js.map} +0 -0
- /package/dist/{mcp-ZHASO273.js.map → mcp-5DZTEDYI.js.map} +0 -0
- /package/dist/{media-sources-MFBQDZNS.js.map → media-sources-QYRHVUBJ.js.map} +0 -0
- /package/dist/{members-HTHOAHPO.js.map → members-RV546WDM.js.map} +0 -0
- /package/dist/{normalize-PVOL256M.js.map → normalize-KKCNCXI2.js.map} +0 -0
- /package/dist/{options-VDTCTJHY.js.map → options-UMDGX464.js.map} +0 -0
- /package/dist/{organization-VC5RO4FS.js.map → organization-KQHJ77CV.js.map} +0 -0
- /package/dist/{performance-QOQTL4XM.js.map → performance-SVWX2S6E.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-6PI2KR65.js.map → promoted-tweet-writes-XPRWBI7F.js.map} +0 -0
- /package/dist/{promoted-tweets-UJRNHKKO.js.map → promoted-tweets-W7PCLJMU.js.map} +0 -0
- /package/dist/{publish-R6RINQCF.js.map → publish-E4M7QXTR.js.map} +0 -0
- /package/dist/{reddit-QWM5ZQ6P.js.map → reddit-BJDU3BO7.js.map} +0 -0
- /package/dist/{refresh-ZPF7UH3S.js.map → refresh-OTR4EWLI.js.map} +0 -0
- /package/dist/{release-BZPK2P3R.js.map → release-QJ4P2AVK.js.map} +0 -0
- /package/dist/{remove-C7ZJYFCG.js.map → remove-BNO3BWM5.js.map} +0 -0
- /package/dist/{reopen-6Q7NQX2C.js.map → reopen-BA76RSLQ.js.map} +0 -0
- /package/dist/{rerun-VRZVJDYS.js.map → rerun-U4I6RPRC.js.map} +0 -0
- /package/dist/{research-X6O7IID6.js.map → research-3ATNYHRA.js.map} +0 -0
- /package/dist/{research-FXQ6X7BY.js.map → research-CYZEWHHZ.js.map} +0 -0
- /package/dist/{reset-NXK6NCOO.js.map → reset-HGTZIAHW.js.map} +0 -0
- /package/dist/{reset-FRNQUCL5.js.map → reset-NM33L5LY.js.map} +0 -0
- /package/dist/{resolve-WHI4UP4V.js.map → resolve-L2A3HC56.js.map} +0 -0
- /package/dist/{retry-XMTYWCFA.js.map → retry-C3PBVY3I.js.map} +0 -0
- /package/dist/{retry-VSFPEXLE.js.map → retry-ID7ZKLBK.js.map} +0 -0
- /package/dist/{run-TAASFDQ7.js.map → run-DI4BRLKS.js.map} +0 -0
- /package/dist/{run-HBNAA56X.js.map → run-IE4GVP4I.js.map} +0 -0
- /package/dist/{scaffold-ad-BV5WK4IA.js.map → scaffold-ad-VQRC2NA6.js.map} +0 -0
- /package/dist/{scaffold-static-ad-IWNJ6GM7.js.map → scaffold-static-ad-B4TEGMSE.js.map} +0 -0
- /package/dist/{scaffold-video-JBG7Q45T.js.map → scaffold-video-BJLKBATO.js.map} +0 -0
- /package/dist/{schedule-P6GVRZ4E.js.map → schedule-OFYLBZT6.js.map} +0 -0
- /package/dist/{scheduled-agents-TYT5BIBQ.js.map → scheduled-agents-X2U7J42A.js.map} +0 -0
- /package/dist/{schema-O4CMQQGD.js.map → schema-CULVYXO7.js.map} +0 -0
- /package/dist/{search-HBFAHH4W.js.map → search-QDQNZ63X.js.map} +0 -0
- /package/dist/{select-ISR6YEIE.js.map → select-X3FT42OL.js.map} +0 -0
- /package/dist/{set-prompt-DF7Q6WOF.js.map → set-prompt-C7HSNTIA.js.map} +0 -0
- /package/dist/{setup-links-GF2IP4TH.js.map → setup-links-ZK6L7GQD.js.map} +0 -0
- /package/dist/{site-T6V5S5DJ.js.map → site-6Z5A3G5J.js.map} +0 -0
- /package/dist/{sources-UR3SLKVK.js.map → sources-7QRFH5AB.js.map} +0 -0
- /package/dist/{sources-5YUE7KUI.js.map → sources-B2L6X7ZE.js.map} +0 -0
- /package/dist/{stale-6LZAROBI.js.map → stale-ZGIUVXGA.js.map} +0 -0
- /package/dist/{status-FDKP65DR.js.map → status-SW3PYV6Q.js.map} +0 -0
- /package/dist/{sync-OGFGTKUK.js.map → sync-K74WY3AT.js.map} +0 -0
- /package/dist/{sync-definition-MSQFCXRK.js.map → sync-definition-KKW7R7QS.js.map} +0 -0
- /package/dist/{tags-GLHFHQW2.js.map → tags-4XQ5MEDJ.js.map} +0 -0
- /package/dist/{tags-PYLVQEVS.js.map → tags-GJ5MIA6X.js.map} +0 -0
- /package/dist/{tags-SL4F3LLY.js.map → tags-JXLOCBQ6.js.map} +0 -0
- /package/dist/{tags-67KLYTJF.js.map → tags-NMZ2NGN2.js.map} +0 -0
- /package/dist/{tags-XMRO4WF6.js.map → tags-V2SSR5XY.js.map} +0 -0
- /package/dist/{targeting-criteria-VK3IR6N2.js.map → targeting-criteria-D2ZMGXLI.js.map} +0 -0
- /package/dist/{targets-RCM2ZXSU.js.map → targets-6QA6MIQU.js.map} +0 -0
- /package/dist/{testimonials-KTHDZ3R5.js.map → testimonials-LBGJKESG.js.map} +0 -0
- /package/dist/{top-companies-MBTTJTRK.js.map → top-companies-6D6YFQAB.js.map} +0 -0
- /package/dist/{translate-I6LZ3UZU.js.map → translate-R4Y2JVXC.js.map} +0 -0
- /package/dist/{triggers-PDIVJDLP.js.map → triggers-MDZNDNCU.js.map} +0 -0
- /package/dist/{unlink-IHEFAFG6.js.map → unlink-WS7DVDLH.js.map} +0 -0
- /package/dist/{unstage-NJQAIIPT.js.map → unstage-K3I2TLRR.js.map} +0 -0
- /package/dist/{update-LR7UW5LL.js.map → update-HPSXO5WB.js.map} +0 -0
- /package/dist/{update-P5BTLCGG.js.map → update-J6FHMXWL.js.map} +0 -0
- /package/dist/{update-K5MMOE5N.js.map → update-LCLRO26T.js.map} +0 -0
- /package/dist/{update-CYQIGHT4.js.map → update-LZVLBRAX.js.map} +0 -0
- /package/dist/{upload-VVB2LTD2.js.map → upload-XD7N4PJS.js.map} +0 -0
- /package/dist/{url-params-MSRUZOGT.js.map → url-params-U5DW22SR.js.map} +0 -0
- /package/dist/{validate-XMEHRCAG.js.map → validate-PRT6ZD72.js.map} +0 -0
- /package/dist/{videos-EQG7AAXT.js.map → videos-KCXSXYJK.js.map} +0 -0
- /package/dist/{web-MSYXLOFV.js.map → web-W2TTELHS.js.map} +0 -0
- /package/dist/{winning-ads-VWBU3BNQ.js.map → winning-ads-YPQY6GVU.js.map} +0 -0
- /package/dist/{write-commands-PK23JVW3.js.map → write-commands-SPTWBMLY.js.map} +0 -0
- /package/dist/{x-ZSTQLK6Q.js.map → x-2Y2DGMPG.js.map} +0 -0
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-FDPBTKXZ.js";
|
|
15
15
|
import {
|
|
16
16
|
AVATAR_HANDLE_PATTERN
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-A5VAM472.js";
|
|
18
18
|
import "./chunk-GXDLWBOY.js";
|
|
19
19
|
import "./chunk-GIWHHCD6.js";
|
|
20
20
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -152,4 +152,4 @@ var updateCommand = defineCommand({
|
|
|
152
152
|
export {
|
|
153
153
|
updateCommand
|
|
154
154
|
};
|
|
155
|
-
//# sourceMappingURL=update-
|
|
155
|
+
//# sourceMappingURL=update-LCLRO26T.js.map
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
parsePriority,
|
|
7
7
|
parseTagList,
|
|
8
8
|
writeOk
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-ZNEUUBRZ.js";
|
|
10
|
+
import "./chunk-A5VAM472.js";
|
|
11
11
|
import "./chunk-GXDLWBOY.js";
|
|
12
12
|
import "./chunk-GIWHHCD6.js";
|
|
13
13
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -95,4 +95,4 @@ var updateCommand = defineCommand({
|
|
|
95
95
|
export {
|
|
96
96
|
updateCommand
|
|
97
97
|
};
|
|
98
|
-
//# sourceMappingURL=update-
|
|
98
|
+
//# sourceMappingURL=update-LZVLBRAX.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runVideoIngest
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KMKELX5X.js";
|
|
4
4
|
import "./chunk-FKOECEVC.js";
|
|
5
5
|
import {
|
|
6
6
|
detectVideoContentType,
|
|
7
7
|
uploadLocalVideo
|
|
8
8
|
} from "./chunk-WOTX7TNV.js";
|
|
9
9
|
import "./chunk-CPTOHQSJ.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-A5VAM472.js";
|
|
11
11
|
import "./chunk-GXDLWBOY.js";
|
|
12
12
|
import "./chunk-GIWHHCD6.js";
|
|
13
13
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -123,4 +123,4 @@ var uploadCommand = defineCommand({
|
|
|
123
123
|
export {
|
|
124
124
|
uploadCommand
|
|
125
125
|
};
|
|
126
|
-
//# sourceMappingURL=upload-
|
|
126
|
+
//# sourceMappingURL=upload-XD7N4PJS.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
handleLinkedinError,
|
|
3
3
|
resolveAccountIdArg
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-22WY4M2Y.js";
|
|
5
5
|
import {
|
|
6
6
|
writeAdsJson
|
|
7
7
|
} from "./chunk-AAF7HL4I.js";
|
|
8
8
|
import {
|
|
9
9
|
LINKEDIN_TRACKING_PARAMS_AD_SET_MAX
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-A5VAM472.js";
|
|
11
11
|
import "./chunk-GXDLWBOY.js";
|
|
12
12
|
import "./chunk-GIWHHCD6.js";
|
|
13
13
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -95,4 +95,4 @@ export {
|
|
|
95
95
|
hints,
|
|
96
96
|
urlParamsCommand
|
|
97
97
|
};
|
|
98
|
-
//# sourceMappingURL=url-params-
|
|
98
|
+
//# sourceMappingURL=url-params-U5DW22SR.js.map
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
exitOnPrepareError,
|
|
6
6
|
prepareCanvas
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3YSLIBIM.js";
|
|
8
8
|
import "./chunk-CMNVR6DX.js";
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-JOXSQDDP.js";
|
|
10
|
+
import "./chunk-PBC63KPH.js";
|
|
11
11
|
import "./chunk-QKUBK3AD.js";
|
|
12
12
|
import "./chunk-HH5PFZ7U.js";
|
|
13
13
|
import "./chunk-ANWV2VTO.js";
|
|
@@ -27,7 +27,7 @@ import "./chunk-UW7PZFWZ.js";
|
|
|
27
27
|
import "./chunk-NKXH3I65.js";
|
|
28
28
|
import "./chunk-CPTOHQSJ.js";
|
|
29
29
|
import "./chunk-JRLGQA2T.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-A5VAM472.js";
|
|
31
31
|
import "./chunk-GXDLWBOY.js";
|
|
32
32
|
import "./chunk-GIWHHCD6.js";
|
|
33
33
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -85,4 +85,4 @@ var validateCommand = defineCommand({
|
|
|
85
85
|
export {
|
|
86
86
|
validateCommand
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=validate-
|
|
88
|
+
//# sourceMappingURL=validate-PRT6ZD72.js.map
|
|
@@ -24,16 +24,16 @@ Full guide: __tooling__/docs/tools/baker/videos.md`
|
|
|
24
24
|
get: () => import("./get-PTOW6PVF.js").then((m) => m.getCommand),
|
|
25
25
|
group: () => import("./group-MBRA2QID.js").then((m) => m.groupCommand),
|
|
26
26
|
search: () => import("./search-52CSDYJS.js").then((m) => m.searchCommand),
|
|
27
|
-
upload: () => import("./upload-
|
|
28
|
-
ingest: () => import("./ingest-
|
|
27
|
+
upload: () => import("./upload-XD7N4PJS.js").then((m) => m.uploadCommand),
|
|
28
|
+
ingest: () => import("./ingest-HIE4SAEY.js").then((m) => m.ingestCommand),
|
|
29
29
|
fetch: () => import("./fetch-6ALLGDRN.js").then((m) => m.fetchCommand),
|
|
30
30
|
describe: () => import("./describe-OAB2FJYK.js").then((m) => m.describeCommand),
|
|
31
31
|
delete: () => import("./delete-I2SIRTMZ.js").then((m) => m.deleteCommand),
|
|
32
|
-
retry: () => import("./retry-
|
|
33
|
-
tags: () => import("./tags-
|
|
32
|
+
retry: () => import("./retry-ID7ZKLBK.js").then((m) => m.retryCommand),
|
|
33
|
+
tags: () => import("./tags-4XQ5MEDJ.js").then((m) => m.tagsCommand)
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
export {
|
|
37
37
|
videosCommand
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=videos-
|
|
39
|
+
//# sourceMappingURL=videos-KCXSXYJK.js.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
webDepthHints
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LFMKBF6Q.js";
|
|
4
4
|
import {
|
|
5
5
|
handleResearchError,
|
|
6
6
|
writeResearchHints,
|
|
7
7
|
writeResearchJson
|
|
8
8
|
} from "./chunk-EQ74MEJN.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-A5VAM472.js";
|
|
10
10
|
import "./chunk-GXDLWBOY.js";
|
|
11
11
|
import "./chunk-GIWHHCD6.js";
|
|
12
12
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -137,4 +137,4 @@ Examples:
|
|
|
137
137
|
export {
|
|
138
138
|
webCommand
|
|
139
139
|
};
|
|
140
|
-
//# sourceMappingURL=web-
|
|
140
|
+
//# sourceMappingURL=web-W2TTELHS.js.map
|
|
@@ -72,7 +72,7 @@ Full guide: __tooling__/docs/tools/baker/winning-ads.md`
|
|
|
72
72
|
content: () => import("./content-ZQB6PXGX.js").then((m) => m.contentCommand),
|
|
73
73
|
fit: () => import("./fit-S4RO2DMX.js").then((m) => m.fitCommand),
|
|
74
74
|
unfollow: () => import("./unfollow-5T2CT3EF.js").then((m) => m.unfollowCommand),
|
|
75
|
-
refresh: () => import("./refresh-
|
|
75
|
+
refresh: () => import("./refresh-OTR4EWLI.js").then((m) => m.refreshCommand),
|
|
76
76
|
hooks: () => import("./seeds-XY3EZ33U.js").then((m) => m.hooksCommand),
|
|
77
77
|
mechanisms: () => import("./seeds-XY3EZ33U.js").then((m) => m.mechanismsCommand),
|
|
78
78
|
formats: () => import("./seeds-XY3EZ33U.js").then((m) => m.formatsCommand)
|
|
@@ -81,4 +81,4 @@ Full guide: __tooling__/docs/tools/baker/winning-ads.md`
|
|
|
81
81
|
export {
|
|
82
82
|
winningAdsCommand
|
|
83
83
|
};
|
|
84
|
-
//# sourceMappingURL=winning-ads-
|
|
84
|
+
//# sourceMappingURL=winning-ads-YPQY6GVU.js.map
|
|
@@ -15,10 +15,10 @@ import {
|
|
|
15
15
|
stageLinkedinOps,
|
|
16
16
|
stageOp,
|
|
17
17
|
stageStatusChange
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-YQDRMOMQ.js";
|
|
19
19
|
import {
|
|
20
20
|
handleLinkedinError
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-22WY4M2Y.js";
|
|
22
22
|
import {
|
|
23
23
|
repeatedValues
|
|
24
24
|
} from "./chunk-ERSX3MKH.js";
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
TEMP_REF_PREFIX,
|
|
40
40
|
TRACKING_PARAM_DYNAMIC_VALUES,
|
|
41
41
|
campaignExcludeCompaniesSchema
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-A5VAM472.js";
|
|
43
43
|
import "./chunk-GXDLWBOY.js";
|
|
44
44
|
import "./chunk-GIWHHCD6.js";
|
|
45
45
|
import "./chunk-XQIOCIDO.js";
|
|
@@ -1012,4 +1012,4 @@ export {
|
|
|
1012
1012
|
leadFormsCommand,
|
|
1013
1013
|
trackingParamsPayload
|
|
1014
1014
|
};
|
|
1015
|
-
//# sourceMappingURL=write-commands-
|
|
1015
|
+
//# sourceMappingURL=write-commands-SPTWBMLY.js.map
|
|
@@ -27,15 +27,15 @@ Full guide: __tooling__/docs/tools/baker/ads-x.md`
|
|
|
27
27
|
subCommands: {
|
|
28
28
|
accounts: () => import("./accounts-T5DCHHZK.js").then((m) => m.accountsCommand),
|
|
29
29
|
funding: () => import("./funding-WSJI56OH.js").then((m) => m.fundingCommand),
|
|
30
|
-
campaigns: () => import("./campaigns-
|
|
31
|
-
"line-items": () => import("./line-items-
|
|
32
|
-
"promoted-tweets": () => import("./promoted-tweets-
|
|
30
|
+
campaigns: () => import("./campaigns-C56DUMH6.js").then((m) => m.campaignsCommand),
|
|
31
|
+
"line-items": () => import("./line-items-JBL7LVCS.js").then((m) => m.lineItemsCommand),
|
|
32
|
+
"promoted-tweets": () => import("./promoted-tweets-W7PCLJMU.js").then((m) => m.promotedTweetsCommand),
|
|
33
33
|
tweets: () => import("./tweets-L4CXZLKQ.js").then((m) => m.tweetsCommand),
|
|
34
34
|
cards: () => import("./cards-IO2Q423H.js").then((m) => m.cardsCommand),
|
|
35
|
-
draft: () => import("./draft-
|
|
35
|
+
draft: () => import("./draft-3YDWWRPY.js").then((m) => m.draftCommand),
|
|
36
36
|
media: () => import("./media-TNB4DLTJ.js").then((m) => m.mediaCommand),
|
|
37
37
|
audiences: () => import("./audiences-GHMNXDPR.js").then((m) => m.audiencesCommand),
|
|
38
|
-
"targeting-criteria": () => import("./targeting-criteria-
|
|
38
|
+
"targeting-criteria": () => import("./targeting-criteria-D2ZMGXLI.js").then((m) => m.targetingCriteriaCommand),
|
|
39
39
|
"targeting-constants": () => import("./targeting-constants-RQT4GLUA.js").then((m) => m.targetingConstantsCommand),
|
|
40
40
|
"active-entities": () => import("./active-entities-QWPGPNGE.js").then((m) => m.activeEntitiesCommand),
|
|
41
41
|
stats: () => import("./stats-QFBTSDVV.js").then((m) => m.statsCommand)
|
|
@@ -44,4 +44,4 @@ Full guide: __tooling__/docs/tools/baker/ads-x.md`
|
|
|
44
44
|
export {
|
|
45
45
|
xCommand
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=x-
|
|
47
|
+
//# sourceMappingURL=x-2Y2DGMPG.js.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/audience-size.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { 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 AudienceSizeResult {\n total: number;\n active: number;\n warnings: string[];\n}\n\n/**\n * Read targeting JSON from --targeting-file, --targeting (inline JSON), or\n * stdin. Returns the parsed object — failure exits via handleLinkedinError.\n */\nfunction loadTargeting(args: Record<string, unknown>): unknown {\n const inline = args.targeting as string | undefined;\n if (inline) {\n try {\n return JSON.parse(inline);\n } catch {\n handleLinkedinError(new Error(\"--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape.\"));\n }\n }\n const file = args[\"targeting-file\"] as string | undefined;\n if (file) {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (e) {\n handleLinkedinError(\n new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : \"I/O error\"}`),\n );\n }\n }\n handleLinkedinError(new Error(\"Pass --targeting-file <path> or --targeting '{...JSON...}'\"));\n}\n\nexport const audienceSizeCommand = defineCommand({\n meta: {\n name: \"audience-size\",\n description: `Estimate audience size for a targeting payload — pre-launch sanity check.\n\nReturns total + active counts plus playbook §04 warnings:\n size <20K → too narrow (will not deliver)\n size <50K → outside the 50K–500K sweet spot\n size >500K → outside the sweet spot\n size >1M → too broad, refine ICP\n\nThe targeting payload must follow LinkedIn's 'targetingCriteria' shape — an\ninclude/exclude tree of and/or boolean operators with adTargetingFacet keys.\nThe simplest form:\n { \"include\": { \"and\": [{ \"or\": { \"urn:li:adTargetingFacet:locations\": [\"urn:li:geo:103644278\"] }}]}}\n\nExamples:\n baker ads linkedin audience-size --account-id 503001492 --targeting-file targeting.json\n baker ads linkedin audience-size --account-id 503001492 --targeting '{\"include\":{\"and\":[]}}'`,\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 targeting: { type: \"string\", description: \"Inline JSON targetingCriteria payload\" },\n \"targeting-file\": { type: \"string\", description: \"Path to JSON file with targetingCriteria\" },\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 const targetingCriteria = loadTargeting(args);\n try {\n const data = await apiPost<AudienceSizeResult>(\"/api/ads/linkedin/audience-size\", {\n accountId,\n targetingCriteria,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAgB9B,SAAS,cAAc,MAAwC;AAC7D,QAAM,SAAS,KAAK;AACpB,MAAI,QAAQ;AACV,QAAI;AACF,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,QAAQ;AACN,0BAAoB,IAAI,MAAM,yEAAyE,CAAC;AAAA,IAC1G;AAAA,EACF;AACA,QAAM,OAAO,KAAK,gBAAgB;AAClC,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,IAC/C,SAAS,GAAG;AACV;AAAA,QACE,IAAI,MAAM,oCAAoC,aAAa,QAAQ,EAAE,UAAU,WAAW,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,IAAI,MAAM,4DAA4D,CAAC;AAC7F;AAEO,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW,EAAE,MAAM,UAAU,aAAa,wCAAwC;AAAA,IAClF,kBAAkB,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAC5F,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,QAAQ,SAAS,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,oBAAoB,cAAc,IAAI;AAC5C,QAAI;AACF,YAAM,OAAO,MAAM,QAA4B,mCAAmC;AAAA,QAChF;AAAA,QACA;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
handleLinkedinError,
|
|
3
|
-
resolveAccountIdArg
|
|
4
|
-
} from "./chunk-XYOU3ROP.js";
|
|
5
|
-
import {
|
|
6
|
-
writeAdsJson
|
|
7
|
-
} from "./chunk-AAF7HL4I.js";
|
|
8
|
-
import {
|
|
9
|
-
NO_CACHE_ARG
|
|
10
|
-
} from "./chunk-O6VUX3O5.js";
|
|
11
|
-
import "./chunk-GAJQPQWS.js";
|
|
12
|
-
import "./chunk-GXDLWBOY.js";
|
|
13
|
-
import "./chunk-GIWHHCD6.js";
|
|
14
|
-
import "./chunk-XQIOCIDO.js";
|
|
15
|
-
import "./chunk-ML7DLFFY.js";
|
|
16
|
-
import {
|
|
17
|
-
apiPost
|
|
18
|
-
} from "./chunk-7ANWFQEA.js";
|
|
19
|
-
import "./chunk-KODTY7PB.js";
|
|
20
|
-
import "./chunk-H5CGVMQW.js";
|
|
21
|
-
import "./chunk-ANYMWCST.js";
|
|
22
|
-
import "./chunk-YQSBHWOI.js";
|
|
23
|
-
|
|
24
|
-
// src/commands/ads/linkedin/bid-pricing.ts
|
|
25
|
-
import { readFileSync } from "fs";
|
|
26
|
-
import { defineCommand } from "citty";
|
|
27
|
-
function loadTargeting(args) {
|
|
28
|
-
const inline = args.targeting;
|
|
29
|
-
if (inline) {
|
|
30
|
-
try {
|
|
31
|
-
return JSON.parse(inline);
|
|
32
|
-
} catch {
|
|
33
|
-
handleLinkedinError(new Error("--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape."));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const file = args["targeting-file"];
|
|
37
|
-
if (file) {
|
|
38
|
-
try {
|
|
39
|
-
return JSON.parse(readFileSync(file, "utf-8"));
|
|
40
|
-
} catch (e) {
|
|
41
|
-
handleLinkedinError(
|
|
42
|
-
new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : "I/O error"}`)
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
handleLinkedinError(new Error("Pass --targeting-file <path> or --targeting '{...JSON...}'"));
|
|
47
|
-
}
|
|
48
|
-
var bidPricingCommand = defineCommand({
|
|
49
|
-
meta: {
|
|
50
|
-
name: "bid-pricing",
|
|
51
|
-
description: `Get LinkedIn's suggested bid range for a targeting + objective + cost type.
|
|
52
|
-
|
|
53
|
-
Returns LinkedIn's min / suggested / max bid plus the playbook \xA706 floor
|
|
54
|
-
(2/3 of suggested \u2014 the recommended manual CPC starting point).
|
|
55
|
-
|
|
56
|
-
Objective types: BRAND_AWARENESS | WEBSITE_TRAFFIC | WEBSITE_VISIT |
|
|
57
|
-
ENGAGEMENT | WEBSITE_CONVERSION | LEAD_GENERATION |
|
|
58
|
-
JOB_APPLICANT | VIDEO_VIEW
|
|
59
|
-
Cost types: CPC | CPM | CPV | CPS
|
|
60
|
-
|
|
61
|
-
Examples:
|
|
62
|
-
baker ads linkedin bid-pricing --account-id 503001492 --objective WEBSITE_CONVERSION --cost-type CPC --targeting-file targeting.json
|
|
63
|
-
baker ads linkedin bid-pricing --account-id 503001492 --objective LEAD_GENERATION --cost-type CPM --targeting '{"include":...}'`
|
|
64
|
-
},
|
|
65
|
-
args: {
|
|
66
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
67
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
68
|
-
objective: {
|
|
69
|
-
type: "string",
|
|
70
|
-
description: "Objective type (e.g. WEBSITE_CONVERSION, LEAD_GENERATION)",
|
|
71
|
-
required: true
|
|
72
|
-
},
|
|
73
|
-
"cost-type": { type: "string", description: "CPC | CPM | CPV | CPS", required: true },
|
|
74
|
-
targeting: { type: "string", description: "Inline JSON targetingCriteria" },
|
|
75
|
-
"targeting-file": { type: "string", description: "Path to JSON file with targetingCriteria" },
|
|
76
|
-
"no-cache": NO_CACHE_ARG,
|
|
77
|
-
output: { type: "string", description: "json", default: "json" }
|
|
78
|
-
},
|
|
79
|
-
run: async ({ args }) => {
|
|
80
|
-
const accountId = resolveAccountIdArg(args);
|
|
81
|
-
const targetingCriteria = loadTargeting(args);
|
|
82
|
-
try {
|
|
83
|
-
const data = await apiPost("/api/ads/linkedin/bid-pricing", {
|
|
84
|
-
accountId,
|
|
85
|
-
objectiveType: String(args.objective),
|
|
86
|
-
costType: String(args["cost-type"]).toUpperCase(),
|
|
87
|
-
targetingCriteria,
|
|
88
|
-
skipCache: Boolean(args["no-cache"])
|
|
89
|
-
});
|
|
90
|
-
writeAdsJson({ ok: true, data });
|
|
91
|
-
} catch (err) {
|
|
92
|
-
handleLinkedinError(err);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
export {
|
|
97
|
-
bidPricingCommand
|
|
98
|
-
};
|
|
99
|
-
//# sourceMappingURL=bid-pricing-PP6PV6S4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/bid-pricing.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { 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 BidPricingResult {\n bidLimits?: { min?: { amount?: string; currencyCode?: string }; max?: { amount?: string; currencyCode?: string } };\n suggestedBid?: {\n default?: { amount?: string; currencyCode?: string };\n min?: { amount?: string; currencyCode?: string };\n max?: { amount?: string; currencyCode?: string };\n };\n costType: string;\n objectiveType: string;\n playbookFloor?: { amount: string; currencyCode: string };\n playbookNote: string;\n}\n\nfunction loadTargeting(args: Record<string, unknown>): unknown {\n const inline = args.targeting as string | undefined;\n if (inline) {\n try {\n return JSON.parse(inline);\n } catch {\n handleLinkedinError(new Error(\"--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape.\"));\n }\n }\n const file = args[\"targeting-file\"] as string | undefined;\n if (file) {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (e) {\n handleLinkedinError(\n new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : \"I/O error\"}`),\n );\n }\n }\n handleLinkedinError(new Error(\"Pass --targeting-file <path> or --targeting '{...JSON...}'\"));\n}\n\nexport const bidPricingCommand = defineCommand({\n meta: {\n name: \"bid-pricing\",\n description: `Get LinkedIn's suggested bid range for a targeting + objective + cost type.\n\nReturns LinkedIn's min / suggested / max bid plus the playbook §06 floor\n(2/3 of suggested — the recommended manual CPC starting point).\n\nObjective types: BRAND_AWARENESS | WEBSITE_TRAFFIC | WEBSITE_VISIT |\n ENGAGEMENT | WEBSITE_CONVERSION | LEAD_GENERATION |\n JOB_APPLICANT | VIDEO_VIEW\nCost types: CPC | CPM | CPV | CPS\n\nExamples:\n baker ads linkedin bid-pricing --account-id 503001492 --objective WEBSITE_CONVERSION --cost-type CPC --targeting-file targeting.json\n baker ads linkedin bid-pricing --account-id 503001492 --objective LEAD_GENERATION --cost-type CPM --targeting '{\"include\":...}'`,\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 objective: {\n type: \"string\",\n description: \"Objective type (e.g. WEBSITE_CONVERSION, LEAD_GENERATION)\",\n required: true,\n },\n \"cost-type\": { type: \"string\", description: \"CPC | CPM | CPV | CPS\", required: true },\n targeting: { type: \"string\", description: \"Inline JSON targetingCriteria\" },\n \"targeting-file\": { type: \"string\", description: \"Path to JSON file with targetingCriteria\" },\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 const targetingCriteria = loadTargeting(args);\n try {\n const data = await apiPost<BidPricingResult>(\"/api/ads/linkedin/bid-pricing\", {\n accountId,\n objectiveType: String(args.objective),\n costType: String(args[\"cost-type\"]).toUpperCase(),\n targetingCriteria,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAmB9B,SAAS,cAAc,MAAwC;AAC7D,QAAM,SAAS,KAAK;AACpB,MAAI,QAAQ;AACV,QAAI;AACF,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,QAAQ;AACN,0BAAoB,IAAI,MAAM,yEAAyE,CAAC;AAAA,IAC1G;AAAA,EACF;AACA,QAAM,OAAO,KAAK,gBAAgB;AAClC,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,IAC/C,SAAS,GAAG;AACV;AAAA,QACE,IAAI,MAAM,oCAAoC,aAAa,QAAQ,EAAE,UAAU,WAAW,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,IAAI,MAAM,4DAA4D,CAAC;AAC7F;AAEO,IAAM,oBAAoB,cAAc;AAAA,EAC7C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW;AAAA,MACT,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,aAAa,EAAE,MAAM,UAAU,aAAa,yBAAyB,UAAU,KAAK;AAAA,IACpF,WAAW,EAAE,MAAM,UAAU,aAAa,gCAAgC;AAAA,IAC1E,kBAAkB,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAC5F,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,QAAQ,SAAS,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,oBAAoB,cAAc,IAAI;AAC5C,QAAI;AACF,YAAM,OAAO,MAAM,QAA0B,iCAAiC;AAAA,QAC5E;AAAA,QACA,eAAe,OAAO,KAAK,SAAS;AAAA,QACpC,UAAU,OAAO,KAAK,WAAW,CAAC,EAAE,YAAY;AAAA,QAChD;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/shared.ts"],"sourcesContent":["import { LINKEDIN_SEARCH_STATUSES, type LinkedinSearchLevel, unsupportedLinkedinSearchStatuses } from \"@baker/api\";\nimport { ApiError } from \"../../../client.ts\";\nimport { getEnv, MissingChatIdError } from \"../../../env.ts\";\nimport { handleConnectionError, needsConnectionFix } from \"../../../error-handler.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport type { AdsErrorEnvelope } from \"../types.ts\";\n\nconst DAY_MS = 86_400_000;\n\n/**\n * Map LinkedIn-flavored API errors into the shared CLI error envelope. The\n * backend already maps LinkedIn `serviceErrorCode` → tagged HTTP status, so by\n * the time we get here we just need to attach an actionable `fix` and exit.\n */\nexport function handleLinkedinError(err: unknown): never {\n if (err instanceof ApiError) {\n if (needsConnectionFix(err.code, err.message)) {\n handleConnectionError(\"linkedin_ads\", err.message);\n }\n if (isNoAccountsSelectedError(err.code, err.message)) {\n handleConnectionError(\"linkedin_ads\", err.message);\n }\n const explanation = explainLinkedinError(err);\n const envelope: AdsErrorEnvelope = {\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n fix: {\n action: explanation.action,\n explanation: explanation.message,\n correctedCommand: explanation.correctedCommand,\n },\n retryable: err.code === \"RATE_LIMITED\" || err.code === \"UNAVAILABLE\" || err.code === \"INTERNAL_ERROR\",\n },\n };\n writeAdsJson(envelope);\n process.exit(1);\n }\n writeAdsJson(unexpectedErrorEnvelope(err));\n process.exit(1);\n}\n\n/**\n * Any failure that is not an API answer. A missing chat id gets its own code\n * and a fix — no retry can supply it — and anything else reads as the network.\n */\nexport function unexpectedErrorEnvelope(err: unknown): {\n ok: false;\n error: Pick<AdsErrorEnvelope[\"error\"], \"code\" | \"message\"> &\n Partial<Pick<AdsErrorEnvelope[\"error\"], \"fix\" | \"retryable\">>;\n} {\n if (err instanceof MissingChatIdError) {\n return {\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n fix: {\n action: \"reject\",\n explanation:\n \"LinkedIn changes are staged in a chat and this run has none. Don't retry: carry on with the rest of the job and tell the user this change couldn't be staged from here.\",\n },\n retryable: false,\n },\n };\n }\n const message = err instanceof Error ? err.message : \"Unexpected error\";\n return { ok: false, error: { code: \"NETWORK_ERROR\", message } };\n}\n\n/**\n * \"No ad accounts selected\" comes back as a 400 (→ VALIDATION_ERROR), which\n * reads like a bad flag but is really an unfinished connection: the user has to\n * pick their accounts again. Route it to the connect flow, not flag advice.\n */\nexport function isNoAccountsSelectedError(code: string, message: string): boolean {\n return code === \"VALIDATION_ERROR\" && /no linkedin ad accounts selected/i.test(message);\n}\n\nfunction explainLinkedinError(err: ApiError): {\n action: AdsErrorEnvelope[\"error\"][\"fix\"][\"action\"];\n message: string;\n correctedCommand?: string;\n} {\n const lower = err.message.toLowerCase();\n if (err.code === \"VALIDATION_ERROR\" && lower.includes(\"granularity\") && lower.includes(\"daily\")) {\n return {\n action: \"retry_with_flag\",\n message:\n \"LinkedIn rejects DAILY granularity when pivoting on demographic dims (job-title, company, etc.). Re-run with --granularity ALL or MONTHLY.\",\n correctedCommand: undefined,\n };\n }\n if (err.code === \"RATE_LIMITED\") {\n return {\n action: \"wait_and_retry\",\n message:\n \"Hit a LinkedIn throttle. The CLI already backs off automatically — if you see this you've exhausted the retry budget. Wait ~60s and retry.\",\n };\n }\n if (err.code === \"INTERNAL_ERROR\" && lower.includes(\"deprecat\")) {\n return {\n action: \"reject\",\n message:\n \"LinkedIn-Version header is deprecated. The backend constant LINKEDIN_API_VERSION needs to be bumped — file an issue or update the constant.\",\n };\n }\n return { action: \"reject\", message: err.message };\n}\n\nconst LI_ACCOUNT_ID_RE = /^(urn:li:sponsoredAccount:)?\\d+$/;\n\n/** Pull the default LinkedIn ad account ID from `--account-id` arg or env. */\nexport function resolveAccountIdArg(args: Record<string, unknown>): string {\n const fromArgs = (args[\"account-id\"] as string | undefined) ?? (args[\"account-urn\"] as string | undefined);\n const id = fromArgs || getEnv().BAKER_LINKEDIN_AD_ACCOUNT_ID;\n if (!id) {\n writeAdsJson({\n ok: false,\n error: {\n code: \"MISSING_ACCOUNT_ID\",\n message:\n \"Pass --account-id (numeric) or --account-urn (urn:li:sponsoredAccount:N), or set BAKER_LINKEDIN_AD_ACCOUNT_ID. Run `baker ads linkedin accounts` to find IDs.\",\n },\n });\n process.exit(1);\n }\n if (!LI_ACCOUNT_ID_RE.test(id)) {\n writeAdsJson({\n ok: false,\n error: {\n code: \"INVALID_ACCOUNT_ID\",\n message: `Invalid LinkedIn account ID \"${id}\". Expected numeric or urn:li:sponsoredAccount:N.`,\n },\n });\n process.exit(1);\n }\n return id.startsWith(\"urn:\") ? (id.split(\":\").pop() ?? id) : id;\n}\n\nexport function todayIso(): string {\n return new Date().toISOString().slice(0, 10);\n}\n\nexport function daysAgoIso(days: number): string {\n return new Date(Date.now() - days * DAY_MS).toISOString().slice(0, 10);\n}\n\nexport function csvOrJson(args: Record<string, unknown>): string {\n return (args.output as string | undefined) ?? \"json\";\n}\n\n/** The `--statuses` help line, listing exactly what LinkedIn accepts at this level. */\nexport function statusesArgDescription(level: LinkedinSearchLevel): string {\n return `CSV of statuses (${LINKEDIN_SEARCH_STATUSES[level].join(\",\")})`;\n}\n\n/**\n * One status LinkedIn does not know fails the whole listing, so refuse it here\n * with the accepted values instead of forwarding LinkedIn's enum error.\n */\nexport function statusFilterError(level: LinkedinSearchLevel, statuses: readonly string[]): AdsErrorEnvelope | null {\n const unsupported = unsupportedLinkedinSearchStatuses(level, statuses);\n if (unsupported.length === 0) {\n return null;\n }\n const accepted = LINKEDIN_SEARCH_STATUSES[level].join(\",\");\n return {\n ok: false,\n error: {\n code: \"INVALID_STATUS\",\n message: `LinkedIn does not accept status ${unsupported.join(\", \")} for this listing.`,\n fix: {\n action: \"retry_with_flag\",\n explanation: `Re-run with --statuses from ${accepted}, or --all-statuses to drop the filter.`,\n },\n retryable: false,\n },\n };\n}\n\n/**\n * Default to ACTIVE-only on listings — almost always what an AI agent or human\n * glance wants. `--all-statuses` widens; `--statuses ACTIVE,PAUSED` overrides.\n */\nexport function resolveStatusFilter(args: Record<string, unknown>, level: LinkedinSearchLevel): string[] | undefined {\n if (args[\"all-statuses\"]) {\n return undefined;\n }\n const explicit = args.statuses as string | undefined;\n if (!explicit) {\n return [\"ACTIVE\"];\n }\n const statuses = explicit\n .split(\",\")\n .map((s) => s.trim().toUpperCase())\n .filter(Boolean);\n const error = statusFilterError(level, statuses);\n if (error) {\n writeAdsJson(error);\n process.exit(1);\n }\n return statuses;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
handleLinkedinError,
|
|
3
|
-
resolveAccountIdArg
|
|
4
|
-
} from "./chunk-XYOU3ROP.js";
|
|
5
|
-
import {
|
|
6
|
-
writeAdsJson
|
|
7
|
-
} from "./chunk-AAF7HL4I.js";
|
|
8
|
-
import {
|
|
9
|
-
NO_CACHE_ARG
|
|
10
|
-
} from "./chunk-O6VUX3O5.js";
|
|
11
|
-
import "./chunk-GAJQPQWS.js";
|
|
12
|
-
import "./chunk-GXDLWBOY.js";
|
|
13
|
-
import "./chunk-GIWHHCD6.js";
|
|
14
|
-
import "./chunk-XQIOCIDO.js";
|
|
15
|
-
import "./chunk-ML7DLFFY.js";
|
|
16
|
-
import {
|
|
17
|
-
apiPost
|
|
18
|
-
} from "./chunk-7ANWFQEA.js";
|
|
19
|
-
import "./chunk-KODTY7PB.js";
|
|
20
|
-
import "./chunk-H5CGVMQW.js";
|
|
21
|
-
import "./chunk-ANYMWCST.js";
|
|
22
|
-
import "./chunk-YQSBHWOI.js";
|
|
23
|
-
|
|
24
|
-
// src/commands/ads/linkedin/forecast.ts
|
|
25
|
-
import { readFileSync } from "fs";
|
|
26
|
-
import { defineCommand } from "citty";
|
|
27
|
-
function loadTargeting(args) {
|
|
28
|
-
const inline = args.targeting;
|
|
29
|
-
if (inline) {
|
|
30
|
-
try {
|
|
31
|
-
return JSON.parse(inline);
|
|
32
|
-
} catch {
|
|
33
|
-
handleLinkedinError(new Error("--targeting must be valid JSON."));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
const file = args["targeting-file"];
|
|
37
|
-
if (file) {
|
|
38
|
-
try {
|
|
39
|
-
return JSON.parse(readFileSync(file, "utf-8"));
|
|
40
|
-
} catch (e) {
|
|
41
|
-
handleLinkedinError(
|
|
42
|
-
new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : "I/O error"}`)
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
handleLinkedinError(new Error("Pass --targeting-file <path> or --targeting '{...JSON...}'"));
|
|
47
|
-
}
|
|
48
|
-
function parseMoney(raw) {
|
|
49
|
-
if (!raw) return void 0;
|
|
50
|
-
const m = /^(\d+(?:\.\d+)?)(?:\s+([A-Z]{3}))?$/.exec(raw.trim());
|
|
51
|
-
if (!m) {
|
|
52
|
-
handleLinkedinError(new Error(`Invalid money "${raw}". Use "100" or "100 EUR".`));
|
|
53
|
-
}
|
|
54
|
-
return { amount: m[1] ?? "0", currencyCode: m[2] ?? "USD" };
|
|
55
|
-
}
|
|
56
|
-
var forecastCommand = defineCommand({
|
|
57
|
-
meta: {
|
|
58
|
-
name: "forecast",
|
|
59
|
-
description: `Forecast reach + impressions + clicks + spend for a hypothetical campaign.
|
|
60
|
-
|
|
61
|
-
Wraps /rest/adSupplyForecasts. Useful for greenfield (\xA714) \u2014 answers
|
|
62
|
-
"if we launch with this budget + targeting + objective, what's the expected delivery?"
|
|
63
|
-
|
|
64
|
-
Examples:
|
|
65
|
-
baker ads linkedin forecast --account-id 503001492 --objective LEAD_GENERATION --cost-type CPC \\
|
|
66
|
-
--daily-budget "200 USD" --bid "8 USD" --targeting-file targeting.json`
|
|
67
|
-
},
|
|
68
|
-
args: {
|
|
69
|
-
"account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
|
|
70
|
-
"account-urn": { type: "string", description: "Alias for --account-id" },
|
|
71
|
-
objective: { type: "string", description: "Objective type", required: true },
|
|
72
|
-
"cost-type": { type: "string", description: "CPC | CPM | CPV | CPS", required: true },
|
|
73
|
-
"daily-budget": { type: "string", description: "e.g. '200 USD' or '200'" },
|
|
74
|
-
"total-budget": { type: "string", description: "e.g. '6000 USD'" },
|
|
75
|
-
bid: { type: "string", description: "Bid e.g. '8 USD'" },
|
|
76
|
-
targeting: { type: "string", description: "Inline JSON targetingCriteria" },
|
|
77
|
-
"targeting-file": { type: "string", description: "Path to JSON file with targetingCriteria" },
|
|
78
|
-
"no-cache": NO_CACHE_ARG,
|
|
79
|
-
output: { type: "string", description: "json", default: "json" }
|
|
80
|
-
},
|
|
81
|
-
run: async ({ args }) => {
|
|
82
|
-
const accountId = resolveAccountIdArg(args);
|
|
83
|
-
const targetingCriteria = loadTargeting(args);
|
|
84
|
-
try {
|
|
85
|
-
const data = await apiPost("/api/ads/linkedin/forecast", {
|
|
86
|
-
accountId,
|
|
87
|
-
objectiveType: String(args.objective),
|
|
88
|
-
costType: String(args["cost-type"]).toUpperCase(),
|
|
89
|
-
targetingCriteria,
|
|
90
|
-
dailyBudget: parseMoney(args["daily-budget"]),
|
|
91
|
-
totalBudget: parseMoney(args["total-budget"]),
|
|
92
|
-
bid: parseMoney(args.bid),
|
|
93
|
-
skipCache: Boolean(args["no-cache"])
|
|
94
|
-
});
|
|
95
|
-
writeAdsJson({ ok: true, data });
|
|
96
|
-
} catch (err) {
|
|
97
|
-
handleLinkedinError(err);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
export {
|
|
102
|
-
forecastCommand
|
|
103
|
-
};
|
|
104
|
-
//# sourceMappingURL=forecast-AFBIS6WT.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/linkedin/forecast.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { 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 ForecastResult {\n impressions?: { min?: number; max?: number };\n reach?: { min?: number; max?: number };\n clicks?: { min?: number; max?: number };\n costInLocalCurrency?: { min?: string; max?: string };\n costInUsd?: { min?: string; max?: string };\n ctr?: { min?: number; max?: number };\n}\n\nfunction loadTargeting(args: Record<string, unknown>): unknown {\n const inline = args.targeting as string | undefined;\n if (inline) {\n try {\n return JSON.parse(inline);\n } catch {\n handleLinkedinError(new Error(\"--targeting must be valid JSON.\"));\n }\n }\n const file = args[\"targeting-file\"] as string | undefined;\n if (file) {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (e) {\n handleLinkedinError(\n new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : \"I/O error\"}`),\n );\n }\n }\n handleLinkedinError(new Error(\"Pass --targeting-file <path> or --targeting '{...JSON...}'\"));\n}\n\nfunction parseMoney(raw: string | undefined): { amount: string; currencyCode: string } | undefined {\n if (!raw) return undefined;\n // Accept either \"100 USD\" or just \"100\" (defaults to USD).\n const m = /^(\\d+(?:\\.\\d+)?)(?:\\s+([A-Z]{3}))?$/.exec(raw.trim());\n if (!m) {\n handleLinkedinError(new Error(`Invalid money \"${raw}\". Use \"100\" or \"100 EUR\".`));\n }\n return { amount: m[1] ?? \"0\", currencyCode: m[2] ?? \"USD\" };\n}\n\nexport const forecastCommand = defineCommand({\n meta: {\n name: \"forecast\",\n description: `Forecast reach + impressions + clicks + spend for a hypothetical campaign.\n\nWraps /rest/adSupplyForecasts. Useful for greenfield (§14) — answers\n\"if we launch with this budget + targeting + objective, what's the expected delivery?\"\n\nExamples:\n baker ads linkedin forecast --account-id 503001492 --objective LEAD_GENERATION --cost-type CPC \\\\\n --daily-budget \"200 USD\" --bid \"8 USD\" --targeting-file targeting.json`,\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 objective: { type: \"string\", description: \"Objective type\", required: true },\n \"cost-type\": { type: \"string\", description: \"CPC | CPM | CPV | CPS\", required: true },\n \"daily-budget\": { type: \"string\", description: \"e.g. '200 USD' or '200'\" },\n \"total-budget\": { type: \"string\", description: \"e.g. '6000 USD'\" },\n bid: { type: \"string\", description: \"Bid e.g. '8 USD'\" },\n targeting: { type: \"string\", description: \"Inline JSON targetingCriteria\" },\n \"targeting-file\": { type: \"string\", description: \"Path to JSON file with targetingCriteria\" },\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 const targetingCriteria = loadTargeting(args);\n try {\n const data = await apiPost<ForecastResult>(\"/api/ads/linkedin/forecast\", {\n accountId,\n objectiveType: String(args.objective),\n costType: String(args[\"cost-type\"]).toUpperCase(),\n targetingCriteria,\n dailyBudget: parseMoney(args[\"daily-budget\"] as string | undefined),\n totalBudget: parseMoney(args[\"total-budget\"] as string | undefined),\n bid: parseMoney(args.bid as string | undefined),\n skipCache: Boolean(args[\"no-cache\"]),\n });\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAe9B,SAAS,cAAc,MAAwC;AAC7D,QAAM,SAAS,KAAK;AACpB,MAAI,QAAQ;AACV,QAAI;AACF,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,QAAQ;AACN,0BAAoB,IAAI,MAAM,iCAAiC,CAAC;AAAA,IAClE;AAAA,EACF;AACA,QAAM,OAAO,KAAK,gBAAgB;AAClC,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,IAC/C,SAAS,GAAG;AACV;AAAA,QACE,IAAI,MAAM,oCAAoC,aAAa,QAAQ,EAAE,UAAU,WAAW,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,IAAI,MAAM,4DAA4D,CAAC;AAC7F;AAEA,SAAS,WAAW,KAA+E;AACjG,MAAI,CAAC,IAAK,QAAO;AAEjB,QAAM,IAAI,sCAAsC,KAAK,IAAI,KAAK,CAAC;AAC/D,MAAI,CAAC,GAAG;AACN,wBAAoB,IAAI,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAAA,EAClF;AACA,SAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC,KAAK,MAAM;AAC5D;AAEO,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW,EAAE,MAAM,UAAU,aAAa,kBAAkB,UAAU,KAAK;AAAA,IAC3E,aAAa,EAAE,MAAM,UAAU,aAAa,yBAAyB,UAAU,KAAK;AAAA,IACpF,gBAAgB,EAAE,MAAM,UAAU,aAAa,0BAA0B;AAAA,IACzE,gBAAgB,EAAE,MAAM,UAAU,aAAa,kBAAkB;AAAA,IACjE,KAAK,EAAE,MAAM,UAAU,aAAa,mBAAmB;AAAA,IACvD,WAAW,EAAE,MAAM,UAAU,aAAa,gCAAgC;AAAA,IAC1E,kBAAkB,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAC5F,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,QAAQ,SAAS,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,oBAAoB,cAAc,IAAI;AAC5C,QAAI;AACF,YAAM,OAAO,MAAM,QAAwB,8BAA8B;AAAA,QACvE;AAAA,QACA,eAAe,OAAO,KAAK,SAAS;AAAA,QACpC,UAAU,OAAO,KAAK,WAAW,CAAC,EAAE,YAAY;AAAA,QAChD;AAAA,QACA,aAAa,WAAW,KAAK,cAAc,CAAuB;AAAA,QAClE,aAAa,WAAW,KAAK,cAAc,CAAuB;AAAA,QAClE,KAAK,WAAW,KAAK,GAAyB;AAAA,QAC9C,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
|