@koda-sl/baker-cli 0.489.0 → 0.490.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -7
- package/dist/{account-Z65CPOWE.js → account-3H6BZO5H.js} +2 -2
- package/dist/account-IKFDY52P.js +138 -0
- package/dist/account-IKFDY52P.js.map +1 -0
- package/dist/account-assets-LKZVWZAR.js +289 -0
- package/dist/account-assets-LKZVWZAR.js.map +1 -0
- package/dist/account-level-UJOZDVXY.js +608 -0
- package/dist/account-level-UJOZDVXY.js.map +1 -0
- package/dist/{account-writes-4N2MA2ZR.js → account-writes-AE5IJGGW.js} +2 -2
- package/dist/{accounts-UA2ZWRN4.js → accounts-K4INATCW.js} +2 -2
- package/dist/{activities-IQPJPP4B.js → activities-T253KK4Q.js} +4 -4
- package/dist/{ad-group-writes-EUTMPBMK.js → ad-group-writes-VRSBI2Z2.js} +2 -2
- package/dist/{ad-groups-OVPAI5RM.js → ad-groups-IEBVEAMS.js} +6 -6
- package/dist/{ad-writes-DACTYFEO.js → ad-writes-ALV4KFPZ.js} +2 -2
- package/dist/{ads-L65JIKCD.js → ads-CQZHD7FC.js} +7 -7
- package/dist/{ads-G6AS5L7G.js → ads-QIKZ6O2N.js} +5 -5
- package/dist/{ads-HXX2IAFF.js → ads-ZEY72UBN.js} +14 -13
- package/dist/ads-ZEY72UBN.js.map +1 -0
- package/dist/{adsets-LPN6WFGF.js → adsets-5H3MOT3D.js} +15 -14
- package/dist/{adsets-LPN6WFGF.js.map → adsets-5H3MOT3D.js.map} +1 -1
- package/dist/{analytics-QKP3A5F3.js → analytics-ALOZ7ZZ4.js} +1 -1
- package/dist/asset-writes-L5TMKIZC.js +47 -0
- package/dist/audience-writes-X52VG35Y.js +324 -0
- package/dist/audience-writes-X52VG35Y.js.map +1 -0
- package/dist/{audiences-RPLVMO4H.js → audiences-AAZH56WD.js} +2 -2
- package/dist/{audiences-XEZHACKH.js → audiences-X3RLGOVM.js} +12 -6
- package/dist/audiences-X3RLGOVM.js.map +1 -0
- package/dist/{avatars-MXTI74VC.js → avatars-YSFFRHDK.js} +1 -1
- package/dist/{brief-BN4UGUXF.js → brief-7S6XCJIA.js} +15 -15
- package/dist/{businesses-PRRYPR7H.js → businesses-H3HIDQX6.js} +2 -2
- package/dist/{campaign-writes-BAFB5E7A.js → campaign-writes-7ZF57KLH.js} +3 -3
- package/dist/campaign-writes-7ZF57KLH.js.map +1 -0
- package/dist/{campaign-writes-U5LTDTYK.js → campaign-writes-U5PUVSMT.js} +2 -2
- package/dist/{campaigns-4SOLY7OR.js → campaigns-AV6G3AUU.js} +32 -15
- package/dist/campaigns-AV6G3AUU.js.map +1 -0
- package/dist/{campaigns-TFEQTSO3.js → campaigns-JEIKY2M4.js} +6 -6
- package/dist/{campaigns-NR6TNQFN.js → campaigns-VTRMKSAT.js} +5 -5
- package/dist/{canvas-GJAQAVS6.js → canvas-SVJEQO4V.js} +13 -13
- package/dist/{catalog-USZL4SGX.js → catalog-S32MX453.js} +5 -5
- package/dist/{catalogs-A7XMEEEP.js → catalogs-OCVXZLIF.js} +2 -2
- package/dist/catalogs-RXJTZTVX.js +778 -0
- package/dist/catalogs-RXJTZTVX.js.map +1 -0
- package/dist/{chatgpt-4PEWDJKP.js → chatgpt-QVF2FD3E.js} +12 -12
- package/dist/{chats-INN2OHSH.js → chats-QG72JB6Y.js} +22 -8
- package/dist/chats-QG72JB6Y.js.map +1 -0
- package/dist/{check-MMJGFFZS.js → check-SLNHVYGS.js} +4 -4
- package/dist/{chunk-7RBJ2Z7Z.js → chunk-2C7AHPM4.js} +25 -6
- package/dist/chunk-2C7AHPM4.js.map +1 -0
- package/dist/{chunk-KPYDTIAI.js → chunk-2WZI36D3.js} +2 -2
- package/dist/{chunk-FUKDI2UK.js → chunk-3W6G6ARX.js} +2 -2
- package/dist/{chunk-JWSEPW7F.js → chunk-46GWHUKN.js} +2 -2
- package/dist/{chunk-3TZVZXM6.js → chunk-4KJMLYCD.js} +6 -6
- package/dist/{chunk-6JWEGFM5.js → chunk-5C35OW7L.js} +38 -7
- package/dist/chunk-5C35OW7L.js.map +1 -0
- package/dist/chunk-5GQCN2QZ.js +391 -0
- package/dist/chunk-5GQCN2QZ.js.map +1 -0
- package/dist/{chunk-KIGGMKAE.js → chunk-65Y3RCWP.js} +4 -2
- package/dist/chunk-65Y3RCWP.js.map +1 -0
- package/dist/{chunk-R3EKM2P2.js → chunk-6NCJGU6I.js} +5 -5
- package/dist/chunk-A4MVVPJ2.js +4204 -0
- package/dist/chunk-A4MVVPJ2.js.map +1 -0
- package/dist/{chunk-LPXSM2DI.js → chunk-AO45BX6Q.js} +3 -3
- package/dist/{chunk-3UXMQ3K2.js → chunk-AQM4JH62.js} +2 -2
- package/dist/chunk-AQM4JH62.js.map +1 -0
- package/dist/{chunk-NPMAATZG.js → chunk-C7NWUCLQ.js} +2 -2
- package/dist/chunk-CP4P6YKM.js +287 -0
- package/dist/chunk-CP4P6YKM.js.map +1 -0
- package/dist/{chunk-OWA7ZLC4.js → chunk-D4CKCNGW.js} +4 -4
- package/dist/{chunk-H5HDZ7IC.js → chunk-DCBZ5CHZ.js} +4 -4
- package/dist/{chunk-C6EYCD5J.js → chunk-FVHJCERJ.js} +5 -5
- package/dist/{chunk-BITS62MF.js → chunk-G6XKD7QE.js} +2 -2
- package/dist/{chunk-QE3JEJXF.js → chunk-GSZZLW5Q.js} +4 -4
- package/dist/chunk-HLVRHBKL.js +1078 -0
- package/dist/chunk-HLVRHBKL.js.map +1 -0
- package/dist/{chunk-TPANP5A2.js → chunk-JKJQWRLO.js} +2 -2
- package/dist/{chunk-62JQQUAU.js → chunk-JQH5VG6F.js} +2 -2
- package/dist/{chunk-6WXV5GTA.js → chunk-JVH5A3XC.js} +2 -2
- package/dist/{chunk-AVNSH2JE.js → chunk-KOXDXSKN.js} +7 -7
- package/dist/{chunk-2XRMPSEV.js → chunk-LXQB4ZGE.js} +2 -2
- package/dist/{chunk-ZL23HA4N.js → chunk-M6PN3VH6.js} +2 -2
- package/dist/{chunk-TZEVD4Q6.js → chunk-P5FRWPG7.js} +2 -2
- package/dist/{chunk-CSZFZKVX.js → chunk-PQJXIY64.js} +5 -5
- package/dist/{chunk-OP7DNHD2.js → chunk-QTOZ32SU.js} +27 -1
- package/dist/chunk-QTOZ32SU.js.map +1 -0
- package/dist/chunk-SVAB6KV5.js +219 -0
- package/dist/chunk-SVAB6KV5.js.map +1 -0
- package/dist/{chunk-LBO2YAZY.js → chunk-UNX6BS4U.js} +15 -15
- package/dist/{chunk-UWXDNVS5.js → chunk-ZJSGGJ5R.js} +2 -2
- package/dist/cli.js +20 -20
- package/dist/{connect-WBGCBBFJ.js → connect-S54TJ6OV.js} +3 -3
- package/dist/{conversion-writes-JU7Q2MUO.js → conversion-writes-ECZBVY7D.js} +2 -2
- package/dist/{conversions-3ISBR3TS.js → conversions-5QCSCRLI.js} +3 -3
- package/dist/copy-writes-D2RTHAL6.js +167 -0
- package/dist/copy-writes-D2RTHAL6.js.map +1 -0
- package/dist/{creatives-VQO2TKE3.js → creatives-5I3G5YP3.js} +2 -2
- package/dist/{creatives-YJ3CXZQC.js → creatives-MZ6ICNSY.js} +5 -4
- package/dist/{creatives-YJ3CXZQC.js.map → creatives-MZ6ICNSY.js.map} +1 -1
- package/dist/{creatives-S5QUWUL6.js → creatives-PCAGWPW3.js} +10 -10
- package/dist/{critique-5LCG5TYF.js → critique-NRHUPIWF.js} +7 -7
- package/dist/{custom-conversions-YRYE65PU.js → custom-conversions-FIP6ZS34.js} +5 -3
- package/dist/{custom-conversions-YRYE65PU.js.map → custom-conversions-FIP6ZS34.js.map} +1 -1
- package/dist/{draft-Y2QJE2NM.js → draft-34CGWUVA.js} +2 -2
- package/dist/{draft-GPN3HOAG.js → draft-4P3YO67N.js} +9 -5
- package/dist/draft-4P3YO67N.js.map +1 -0
- package/dist/{draft-EWDOIXSH.js → draft-L45PGCYZ.js} +7 -3
- package/dist/draft-L45PGCYZ.js.map +1 -0
- package/dist/engine/index.js +4 -4
- package/dist/{experiment-G3FQVAJU.js → experiment-7N4QFRWV.js} +4 -4
- package/dist/{feedback-CAOZPGTT.js → feedback-O3H42V4I.js} +10 -10
- package/dist/{feedback-record-EXV5H6OS.js → feedback-record-FAPN2GBS.js} +12 -12
- package/dist/{find-EVY4XEIQ.js → find-FSQAEGGF.js} +4 -4
- package/dist/{flows-Z7355RMD.js → flows-T22B77J3.js} +3 -3
- package/dist/{funnel-2B3JXJPX.js → funnel-7OA33VRP.js} +5 -5
- package/dist/{ga4-2BL5YAYN.js → ga4-LPDIBNYP.js} +1 -1
- package/dist/{google-7STODZQR.js → google-5ESVO76E.js} +5 -5
- package/dist/{gsc-UU3T2C6B.js → gsc-FIZTQX3N.js} +1 -1
- package/dist/{history-IQ33J5PB.js → history-QKDYBSYM.js} +2 -2
- package/dist/{icon-GB7UH5RF.js → icon-CSVAZ7NE.js} +4 -4
- package/dist/{ideas-F6CIGTVU.js → ideas-JQT422P7.js} +4 -4
- package/dist/{images-WCKTD6Z2.js → images-WBNWK2ZH.js} +6 -6
- package/dist/{insights-4HT2NAYP.js → insights-YWVJMATY.js} +4 -3
- package/dist/{insights-4HT2NAYP.js.map → insights-YWVJMATY.js.map} +1 -1
- package/dist/{inspiration-XQYHBJY2.js → inspiration-IX5N724J.js} +1 -1
- package/dist/instant-experiences-NQ2GWIWL.js +257 -0
- package/dist/instant-experiences-NQ2GWIWL.js.map +1 -0
- package/dist/{landing-WUILAWDS.js → landing-Y6QCTXCZ.js} +2 -2
- package/dist/leads-THI37ZMD.js +537 -0
- package/dist/leads-THI37ZMD.js.map +1 -0
- package/dist/{learn-CC6Q5IK2.js → learn-3BDZUWDT.js} +5 -5
- package/dist/{linkedin-XKVPSCLV.js → linkedin-UGMAFSGO.js} +2 -2
- package/dist/{locations-YA7NZY44.js → locations-HM56X2MK.js} +2 -2
- package/dist/locations-HM56X2MK.js.map +1 -0
- package/dist/{logo-YSNUUT33.js → logo-VHXH4J6A.js} +3 -3
- package/dist/{make-ED7HBLH3.js → make-W2PYZXYF.js} +39 -39
- package/dist/media-H6B7VDON.js +18 -0
- package/dist/media-H6B7VDON.js.map +1 -0
- package/dist/{media-sources-PEHUMH7C.js → media-sources-EZKAJNVD.js} +1 -1
- package/dist/meta-YHDTGJQ6.js +122 -0
- package/dist/meta-YHDTGJQ6.js.map +1 -0
- package/dist/{options-6FCNFWUF.js → options-NSCZSQ5P.js} +3 -3
- package/dist/page-photos-CXRG4AXV.js +115 -0
- package/dist/page-photos-CXRG4AXV.js.map +1 -0
- package/dist/{pages-FTI44OSH.js → pages-PTWRXAZT.js} +2 -2
- package/dist/{pixels-6IUB3Y3H.js → pixels-MYT3TCHZ.js} +2 -2
- package/dist/{pixels-MBKR4XPX.js → pixels-ZZCQUS3J.js} +2 -2
- package/dist/{preview-V4YBD45S.js → preview-XOXAAPMQ.js} +73 -27
- package/dist/preview-XOXAAPMQ.js.map +1 -0
- package/dist/{rerun-A2XHGFZS.js → rerun-5THJLQQJ.js} +18 -18
- package/dist/{research-BLDY5UWH.js → research-JHDWWFL7.js} +1 -1
- package/dist/rule-writes-6ZCAJDYZ.js +522 -0
- package/dist/rule-writes-6ZCAJDYZ.js.map +1 -0
- package/dist/rules-BMYOY2BM.js +216 -0
- package/dist/rules-BMYOY2BM.js.map +1 -0
- package/dist/{rules-SK5DFFPY.js → rules-YLLFDZEM.js} +3 -3
- package/dist/{rules-add-YQNYSME7.js → rules-add-U2GU4AGP.js} +4 -4
- package/dist/{run-KBN5K7LE.js → run-V5YQB6TH.js} +18 -18
- package/dist/{scaffold-ad-6BN5LWQH.js → scaffold-ad-H4GJOKAW.js} +12 -12
- package/dist/{scaffold-static-ad-VVZRAWBR.js → scaffold-static-ad-2YIFHCTL.js} +25 -25
- package/dist/{scaffold-video-LFIYI4GP.js → scaffold-video-3EJLKR2O.js} +14 -14
- package/dist/{select-QBU6ED4K.js → select-I22NPSIW.js} +9 -9
- package/dist/{set-prompt-TL64CRBQ.js → set-prompt-S75OMQ7L.js} +8 -8
- package/dist/{shared-NDRFKAH7.js → shared-3IBNDEFL.js} +2 -2
- package/dist/{sources-RMNFV4CA.js → sources-VA23PDND.js} +1 -1
- package/dist/{stale-ITFCPOER.js → stale-MHTU2NQJ.js} +8 -8
- package/dist/{stats-RCLQE4HJ.js → stats-ZAGJH4AD.js} +1 -1
- package/dist/{stock-ECRBD7RP.js → stock-6SHHLSKG.js} +5 -5
- package/dist/studies-4NIV4D5Y.js +249 -0
- package/dist/studies-4NIV4D5Y.js.map +1 -0
- package/dist/{studio-MARZ22J2.js → studio-ZLCGXFAN.js} +1 -1
- package/dist/study-writes-L2AA2PGL.js +467 -0
- package/dist/study-writes-L2AA2PGL.js.map +1 -0
- package/dist/{sync-definition-C6ROLKJ4.js → sync-definition-2EBSQA6A.js} +11 -11
- package/dist/{tag-manager-G3LBQZUL.js → tag-manager-3CJ66GKJ.js} +1 -1
- package/dist/targeting-LNDQV4EK.js +759 -0
- package/dist/targeting-LNDQV4EK.js.map +1 -0
- package/dist/{testimonials-YMMA5YWL.js → testimonials-GR6TIS5S.js} +2 -2
- package/dist/{translate-OXVIMYHE.js → translate-GEFUP6KQ.js} +18 -18
- package/dist/{validate-ZS2M5Q3V.js → validate-NOWIOAHE.js} +11 -11
- package/dist/{videos-I6YXFBFT.js → videos-XMTDEHEJ.js} +1 -1
- package/dist/{viewer-check-7ZG7KHEN.js → viewer-check-U4XZMMS7.js} +6 -6
- package/dist/viewer-check-U4XZMMS7.js.map +1 -0
- package/dist/{winning-ads-ABN5OULS.js → winning-ads-QOAYIR5U.js} +1 -1
- package/dist/{write-commands-HCQI4Y27.js → write-commands-PEJBTME6.js} +485 -57
- package/dist/write-commands-PEJBTME6.js.map +1 -0
- package/dist/{x-WK2VQDPF.js → x-VCSMV7T5.js} +4 -4
- package/package.json +1 -1
- package/dist/account-7LUQWY6Q.js +0 -49
- package/dist/account-7LUQWY6Q.js.map +0 -1
- package/dist/ads-HXX2IAFF.js.map +0 -1
- package/dist/audiences-XEZHACKH.js.map +0 -1
- package/dist/campaign-writes-BAFB5E7A.js.map +0 -1
- package/dist/campaigns-4SOLY7OR.js.map +0 -1
- package/dist/chats-INN2OHSH.js.map +0 -1
- package/dist/chunk-3UXMQ3K2.js.map +0 -1
- package/dist/chunk-6JWEGFM5.js.map +0 -1
- package/dist/chunk-7RBJ2Z7Z.js.map +0 -1
- package/dist/chunk-GOJXKIFQ.js +0 -1605
- package/dist/chunk-GOJXKIFQ.js.map +0 -1
- package/dist/chunk-KIGGMKAE.js.map +0 -1
- package/dist/chunk-OP7DNHD2.js.map +0 -1
- package/dist/draft-EWDOIXSH.js.map +0 -1
- package/dist/draft-GPN3HOAG.js.map +0 -1
- package/dist/leads-2XOSAYP4.js +0 -293
- package/dist/leads-2XOSAYP4.js.map +0 -1
- package/dist/locations-YA7NZY44.js.map +0 -1
- package/dist/media-ES2UBGYW.js +0 -15
- package/dist/media-ES2UBGYW.js.map +0 -1
- package/dist/meta-AOIPEDV5.js +0 -69
- package/dist/meta-AOIPEDV5.js.map +0 -1
- package/dist/preview-V4YBD45S.js.map +0 -1
- package/dist/write-commands-HCQI4Y27.js.map +0 -1
- /package/dist/{account-Z65CPOWE.js.map → account-3H6BZO5H.js.map} +0 -0
- /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-AE5IJGGW.js.map} +0 -0
- /package/dist/{accounts-UA2ZWRN4.js.map → accounts-K4INATCW.js.map} +0 -0
- /package/dist/{activities-IQPJPP4B.js.map → activities-T253KK4Q.js.map} +0 -0
- /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-VRSBI2Z2.js.map} +0 -0
- /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-IEBVEAMS.js.map} +0 -0
- /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-ALV4KFPZ.js.map} +0 -0
- /package/dist/{ads-L65JIKCD.js.map → ads-CQZHD7FC.js.map} +0 -0
- /package/dist/{ads-G6AS5L7G.js.map → ads-QIKZ6O2N.js.map} +0 -0
- /package/dist/{analytics-QKP3A5F3.js.map → analytics-ALOZ7ZZ4.js.map} +0 -0
- /package/dist/{connect-WBGCBBFJ.js.map → asset-writes-L5TMKIZC.js.map} +0 -0
- /package/dist/{audiences-RPLVMO4H.js.map → audiences-AAZH56WD.js.map} +0 -0
- /package/dist/{avatars-MXTI74VC.js.map → avatars-YSFFRHDK.js.map} +0 -0
- /package/dist/{brief-BN4UGUXF.js.map → brief-7S6XCJIA.js.map} +0 -0
- /package/dist/{businesses-PRRYPR7H.js.map → businesses-H3HIDQX6.js.map} +0 -0
- /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-U5PUVSMT.js.map} +0 -0
- /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-JEIKY2M4.js.map} +0 -0
- /package/dist/{campaigns-NR6TNQFN.js.map → campaigns-VTRMKSAT.js.map} +0 -0
- /package/dist/{canvas-GJAQAVS6.js.map → canvas-SVJEQO4V.js.map} +0 -0
- /package/dist/{catalog-USZL4SGX.js.map → catalog-S32MX453.js.map} +0 -0
- /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-OCVXZLIF.js.map} +0 -0
- /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-QVF2FD3E.js.map} +0 -0
- /package/dist/{check-MMJGFFZS.js.map → check-SLNHVYGS.js.map} +0 -0
- /package/dist/{chunk-KPYDTIAI.js.map → chunk-2WZI36D3.js.map} +0 -0
- /package/dist/{chunk-FUKDI2UK.js.map → chunk-3W6G6ARX.js.map} +0 -0
- /package/dist/{chunk-JWSEPW7F.js.map → chunk-46GWHUKN.js.map} +0 -0
- /package/dist/{chunk-3TZVZXM6.js.map → chunk-4KJMLYCD.js.map} +0 -0
- /package/dist/{chunk-R3EKM2P2.js.map → chunk-6NCJGU6I.js.map} +0 -0
- /package/dist/{chunk-LPXSM2DI.js.map → chunk-AO45BX6Q.js.map} +0 -0
- /package/dist/{chunk-NPMAATZG.js.map → chunk-C7NWUCLQ.js.map} +0 -0
- /package/dist/{chunk-OWA7ZLC4.js.map → chunk-D4CKCNGW.js.map} +0 -0
- /package/dist/{chunk-H5HDZ7IC.js.map → chunk-DCBZ5CHZ.js.map} +0 -0
- /package/dist/{chunk-C6EYCD5J.js.map → chunk-FVHJCERJ.js.map} +0 -0
- /package/dist/{chunk-BITS62MF.js.map → chunk-G6XKD7QE.js.map} +0 -0
- /package/dist/{chunk-QE3JEJXF.js.map → chunk-GSZZLW5Q.js.map} +0 -0
- /package/dist/{chunk-TPANP5A2.js.map → chunk-JKJQWRLO.js.map} +0 -0
- /package/dist/{chunk-62JQQUAU.js.map → chunk-JQH5VG6F.js.map} +0 -0
- /package/dist/{chunk-6WXV5GTA.js.map → chunk-JVH5A3XC.js.map} +0 -0
- /package/dist/{chunk-AVNSH2JE.js.map → chunk-KOXDXSKN.js.map} +0 -0
- /package/dist/{chunk-2XRMPSEV.js.map → chunk-LXQB4ZGE.js.map} +0 -0
- /package/dist/{chunk-ZL23HA4N.js.map → chunk-M6PN3VH6.js.map} +0 -0
- /package/dist/{chunk-TZEVD4Q6.js.map → chunk-P5FRWPG7.js.map} +0 -0
- /package/dist/{chunk-CSZFZKVX.js.map → chunk-PQJXIY64.js.map} +0 -0
- /package/dist/{chunk-LBO2YAZY.js.map → chunk-UNX6BS4U.js.map} +0 -0
- /package/dist/{chunk-UWXDNVS5.js.map → chunk-ZJSGGJ5R.js.map} +0 -0
- /package/dist/{ideas-F6CIGTVU.js.map → connect-S54TJ6OV.js.map} +0 -0
- /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-ECZBVY7D.js.map} +0 -0
- /package/dist/{conversions-3ISBR3TS.js.map → conversions-5QCSCRLI.js.map} +0 -0
- /package/dist/{creatives-VQO2TKE3.js.map → creatives-5I3G5YP3.js.map} +0 -0
- /package/dist/{creatives-S5QUWUL6.js.map → creatives-PCAGWPW3.js.map} +0 -0
- /package/dist/{critique-5LCG5TYF.js.map → critique-NRHUPIWF.js.map} +0 -0
- /package/dist/{draft-Y2QJE2NM.js.map → draft-34CGWUVA.js.map} +0 -0
- /package/dist/{experiment-G3FQVAJU.js.map → experiment-7N4QFRWV.js.map} +0 -0
- /package/dist/{feedback-CAOZPGTT.js.map → feedback-O3H42V4I.js.map} +0 -0
- /package/dist/{feedback-record-EXV5H6OS.js.map → feedback-record-FAPN2GBS.js.map} +0 -0
- /package/dist/{find-EVY4XEIQ.js.map → find-FSQAEGGF.js.map} +0 -0
- /package/dist/{flows-Z7355RMD.js.map → flows-T22B77J3.js.map} +0 -0
- /package/dist/{funnel-2B3JXJPX.js.map → funnel-7OA33VRP.js.map} +0 -0
- /package/dist/{ga4-2BL5YAYN.js.map → ga4-LPDIBNYP.js.map} +0 -0
- /package/dist/{google-7STODZQR.js.map → google-5ESVO76E.js.map} +0 -0
- /package/dist/{gsc-UU3T2C6B.js.map → gsc-FIZTQX3N.js.map} +0 -0
- /package/dist/{history-IQ33J5PB.js.map → history-QKDYBSYM.js.map} +0 -0
- /package/dist/{icon-GB7UH5RF.js.map → icon-CSVAZ7NE.js.map} +0 -0
- /package/dist/{logo-YSNUUT33.js.map → ideas-JQT422P7.js.map} +0 -0
- /package/dist/{images-WCKTD6Z2.js.map → images-WBNWK2ZH.js.map} +0 -0
- /package/dist/{inspiration-XQYHBJY2.js.map → inspiration-IX5N724J.js.map} +0 -0
- /package/dist/{landing-WUILAWDS.js.map → landing-Y6QCTXCZ.js.map} +0 -0
- /package/dist/{learn-CC6Q5IK2.js.map → learn-3BDZUWDT.js.map} +0 -0
- /package/dist/{linkedin-XKVPSCLV.js.map → linkedin-UGMAFSGO.js.map} +0 -0
- /package/dist/{run-KBN5K7LE.js.map → logo-VHXH4J6A.js.map} +0 -0
- /package/dist/{make-ED7HBLH3.js.map → make-W2PYZXYF.js.map} +0 -0
- /package/dist/{media-sources-PEHUMH7C.js.map → media-sources-EZKAJNVD.js.map} +0 -0
- /package/dist/{options-6FCNFWUF.js.map → options-NSCZSQ5P.js.map} +0 -0
- /package/dist/{pages-FTI44OSH.js.map → pages-PTWRXAZT.js.map} +0 -0
- /package/dist/{pixels-6IUB3Y3H.js.map → pixels-MYT3TCHZ.js.map} +0 -0
- /package/dist/{pixels-MBKR4XPX.js.map → pixels-ZZCQUS3J.js.map} +0 -0
- /package/dist/{rerun-A2XHGFZS.js.map → rerun-5THJLQQJ.js.map} +0 -0
- /package/dist/{research-BLDY5UWH.js.map → research-JHDWWFL7.js.map} +0 -0
- /package/dist/{rules-SK5DFFPY.js.map → rules-YLLFDZEM.js.map} +0 -0
- /package/dist/{rules-add-YQNYSME7.js.map → rules-add-U2GU4AGP.js.map} +0 -0
- /package/dist/{shared-NDRFKAH7.js.map → run-V5YQB6TH.js.map} +0 -0
- /package/dist/{scaffold-ad-6BN5LWQH.js.map → scaffold-ad-H4GJOKAW.js.map} +0 -0
- /package/dist/{scaffold-static-ad-VVZRAWBR.js.map → scaffold-static-ad-2YIFHCTL.js.map} +0 -0
- /package/dist/{scaffold-video-LFIYI4GP.js.map → scaffold-video-3EJLKR2O.js.map} +0 -0
- /package/dist/{select-QBU6ED4K.js.map → select-I22NPSIW.js.map} +0 -0
- /package/dist/{set-prompt-TL64CRBQ.js.map → set-prompt-S75OMQ7L.js.map} +0 -0
- /package/dist/{sync-definition-C6ROLKJ4.js.map → shared-3IBNDEFL.js.map} +0 -0
- /package/dist/{sources-RMNFV4CA.js.map → sources-VA23PDND.js.map} +0 -0
- /package/dist/{stale-ITFCPOER.js.map → stale-MHTU2NQJ.js.map} +0 -0
- /package/dist/{stats-RCLQE4HJ.js.map → stats-ZAGJH4AD.js.map} +0 -0
- /package/dist/{stock-ECRBD7RP.js.map → stock-6SHHLSKG.js.map} +0 -0
- /package/dist/{studio-MARZ22J2.js.map → studio-ZLCGXFAN.js.map} +0 -0
- /package/dist/{viewer-check-7ZG7KHEN.js.map → sync-definition-2EBSQA6A.js.map} +0 -0
- /package/dist/{tag-manager-G3LBQZUL.js.map → tag-manager-3CJ66GKJ.js.map} +0 -0
- /package/dist/{testimonials-YMMA5YWL.js.map → testimonials-GR6TIS5S.js.map} +0 -0
- /package/dist/{translate-OXVIMYHE.js.map → translate-GEFUP6KQ.js.map} +0 -0
- /package/dist/{validate-ZS2M5Q3V.js.map → validate-NOWIOAHE.js.map} +0 -0
- /package/dist/{videos-I6YXFBFT.js.map → videos-XMTDEHEJ.js.map} +0 -0
- /package/dist/{winning-ads-ABN5OULS.js.map → winning-ads-QOAYIR5U.js.map} +0 -0
- /package/dist/{x-WK2VQDPF.js.map → x-VCSMV7T5.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/account-level.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { apiGet, apiPost } from \"../../../client.ts\";\nimport { repeatedValues } from \"../../../lib/repeatedFlags.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { dayPartingFromFlags } from \"./delivery-flags.ts\";\nimport { handleMetaError } from \"./shared.ts\";\nimport {\n bareAccountId,\n failWriteValidation,\n loadJsonFileArg,\n numberFlag,\n requireTarget,\n stageOp,\n} from \"./write-shared.ts\";\n\n/**\n * What belongs to the ad account itself rather than to a campaign: its own\n * settings (name, account spending limit), its publisher block lists, and its\n * reach-and-frequency quotes and reservations — plus the posts an ad can boost\n * and the comments on an ad's post. Changes stage on this chat's draft and are\n * made at publish; reads are live.\n */\n\ntype Row = Record<string, unknown>;\ntype Args = Record<string, unknown>;\n\nconst STAGED_NOTE = \"Staged until publish — review with `baker ads meta draft`.\";\nconst schemaAccount = { type: \"string\", description: \"Numeric account ID or act_N\", required: false };\n\nfunction emit(data: unknown, hints: string[] = []): void {\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });\n}\n\nasync function readEdge(params: Record<string, string>): Promise<Row[]> {\n return await apiGet<Row[]>(\"/api/ads/meta/account-edges\", params);\n}\n\n// --- Account settings ---\n\nregisterSchema({\n command: \"ads.meta.account-settings\",\n description:\n \"Stage a change to the ad account's own settings: its name or its account spending limit (set, remove, or count again from zero). Made at publish.\",\n args: {\n \"account-id\": schemaAccount,\n name: { type: \"string\", description: \"New account name\", required: false },\n \"spending-limit\": {\n type: \"string\",\n description: \"Account spending limit, major units (e.g. 5000)\",\n required: false,\n },\n \"remove-spending-limit\": { type: \"boolean\", description: \"Remove the spending limit\", required: false },\n \"reset-spending-limit\": { type: \"boolean\", description: \"Count toward the limit again from zero\", required: false },\n \"default-eu-advertiser\": {\n type: \"string\",\n description: \"Default EU (DSA) advertiser — who the ads are for — for new ad sets; pass with --default-eu-payer\",\n required: false,\n },\n \"default-eu-payer\": {\n type: \"string\",\n description: \"Default EU (DSA) payer for new ad sets; pass with --default-eu-advertiser\",\n required: false,\n },\n \"clear-default-eu\": {\n type: \"boolean\",\n description: \"Clear both the default EU advertiser and payer\",\n required: false,\n },\n },\n});\n\nexport const accountSettingsCommand = defineCommand({\n meta: {\n name: \"account-settings\",\n description: `Change the ad account's own settings — its name or its account spending limit. ${STAGED_NOTE}\nThe limit counts spend from the moment it is set (Meta starts the count again), and every campaign on the account stops when it is reached. Ask the user before touching it — it is account-wide.\nStart here: baker ads meta account --account-id act_123 (shows spend_cap and amount_spent, in minor units)\nExample: baker ads meta account-settings --account-id act_123 --spending-limit 5000\n baker ads meta account-settings --account-id act_123 --remove-spending-limit\nThe EU (DSA) advertiser and payer new ad sets start with — both together, names from \\`baker ads meta dsa-recommendations\\` confirmed with the user:\n baker ads meta account-settings --account-id act_123 --default-eu-advertiser \"Acme SL\" --default-eu-payer \"Acme SL\"`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N — the account itself\" },\n name: { type: \"string\", description: \"New account name\" },\n \"spending-limit\": { type: \"string\", description: \"Account spending limit in the account currency, e.g. 5000\" },\n \"remove-spending-limit\": { type: \"boolean\", description: \"Take the account spending limit away\" },\n \"reset-spending-limit\": { type: \"boolean\", description: \"Keep the limit and count spend toward it from zero\" },\n \"default-eu-advertiser\": {\n type: \"string\",\n description: \"Default EU (DSA) advertiser for new ad sets — with --default-eu-payer (Meta keeps both or neither)\",\n },\n \"default-eu-payer\": { type: \"string\", description: \"Default EU (DSA) payer for new ad sets\" },\n \"clear-default-eu\": { type: \"boolean\", description: \"Clear both the default EU advertiser and payer\" },\n },\n run: async ({ args }) => {\n const accountId = bareAccountId(args as Args);\n if (args[\"remove-spending-limit\"] && args[\"reset-spending-limit\"]) {\n failWriteValidation(\"pass --remove-spending-limit OR --reset-spending-limit\");\n }\n const action = args[\"remove-spending-limit\"] ? \"remove\" : args[\"reset-spending-limit\"] ? \"reset\" : undefined;\n await stageOp({\n kind: \"adAccount.update\",\n accountId,\n target: accountId,\n payload: {\n name: args.name,\n spendCap: args[\"spending-limit\"] ? { amount: String(args[\"spending-limit\"]) } : undefined,\n spendCapAction: action,\n defaultDsaBeneficiary: args[\"default-eu-advertiser\"],\n defaultDsaPayor: args[\"default-eu-payer\"],\n clearDefaultDsa: args[\"clear-default-eu\"] ? true : undefined,\n },\n });\n },\n});\n\n// --- Block lists ---\n\nregisterSchema({\n command: \"ads.meta.block-lists\",\n description:\n \"The ad account's publisher block lists — websites and apps its ads stay off (Audience Network, in-stream). --full lists each list's sites.\",\n args: {\n \"account-id\": schemaAccount,\n full: { type: \"boolean\", description: \"Include each list's sites and apps\", required: false },\n },\n});\n\nconst blockListsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Block lists on the ad account. Runs by default. Example: baker ads meta block-lists --account-id act_123 --full\",\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n full: { type: \"boolean\", description: \"Include each list's sites and apps\" },\n },\n run: async ({ args }) => {\n try {\n const params: Record<string, string> = { edge: \"block-lists\", \"account-id\": bareAccountId(args as Args) };\n if (args.full) params.full = \"true\";\n const rows = await readEdge(params);\n emit(rows, [\n \"Keep an ad set off a list with `adsets create|update --block-list <id>` (repeatable); add sites with `block-lists add <id> --url …`. Meta takes no site off a list and renames none — make a new list instead.\",\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.block-lists.create\",\n description: \"Stage a new publisher block list on the ad account, with its sites and apps. Made at publish.\",\n args: {\n \"account-id\": schemaAccount,\n name: { type: \"string\", description: \"List name\", required: true },\n url: { type: \"string\", description: \"A site (example.com) or app store address — repeatable\", required: false },\n file: { type: \"string\", description: 'JSON file {\"urls\": [...]} for long lists', required: false },\n },\n});\n\nfunction urlsFrom(args: Args, rawArgs: readonly string[]): string[] {\n const file = loadJsonFileArg(args.file);\n const fromFile = Array.isArray(file.urls) ? file.urls.filter((u): u is string => typeof u === \"string\") : [];\n const urls = [...repeatedValues(rawArgs, \"url\", args.url), ...fromFile];\n if (urls.length === 0) failWriteValidation('pass --url (repeatable) or --file with {\"urls\": [...]}');\n return urls;\n}\n\nconst blockListsCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Create a publisher block list. ${STAGED_NOTE}\nExample: baker ads meta block-lists create --account-id act_123 --name \"No gambling sites\" --url casino.example --url bets.example\nThen keep ad sets off it: baker ads meta adsets update <id> --block-list meta_temp_…`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n name: { type: \"string\", description: \"List name\", required: true },\n url: { type: \"string\", description: \"A site (example.com) or app store address — repeatable\" },\n file: { type: \"string\", description: 'JSON file {\"urls\": [...]} for a long list (up to 10,000)' },\n },\n run: async ({ args, rawArgs }) => {\n await stageOp({\n kind: \"publisherBlockList.create\",\n accountId: bareAccountId(args as Args),\n payload: { name: args.name, urls: urlsFrom(args as Args, rawArgs) },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.block-lists.add\",\n description: \"Stage adding sites and apps to a block list. Meta takes none off a list.\",\n args: {\n id: { type: \"positional\", description: \"Block list id\", required: true },\n \"account-id\": schemaAccount,\n url: { type: \"string\", description: \"A site or app store address — repeatable\", required: false },\n file: { type: \"string\", description: 'JSON file {\"urls\": [...]}', required: false },\n },\n});\n\nconst blockListsAddCommand = defineCommand({\n meta: {\n name: \"add\",\n description: `Add sites and apps to a block list. ${STAGED_NOTE}\nExample: baker ads meta block-lists add 120249500506120208 --account-id act_123 --url spam.example`,\n },\n args: {\n id: { type: \"positional\", description: \"Block list id\", required: true },\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n url: { type: \"string\", description: \"A site or app store address — repeatable\" },\n file: { type: \"string\", description: 'JSON file {\"urls\": [...]}' },\n },\n run: async ({ args, rawArgs }) => {\n await stageOp({\n kind: \"publisherBlockList.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"block list\"),\n payload: { addUrls: urlsFrom(args as Args, rawArgs) },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.block-lists.delete\",\n description: \"Stage deleting a block list. Ad sets that used it can show on its sites again.\",\n args: { id: { type: \"positional\", description: \"Block list id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst blockListsDeleteCommand = defineCommand({\n meta: {\n name: \"delete\",\n description: `Delete a block list — ad sets that used it can show on its sites and apps again. ${STAGED_NOTE}\nExample: baker ads meta block-lists delete 120249500506120208 --account-id act_123`,\n },\n args: {\n id: { type: \"positional\", description: \"Block list id\", required: true },\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n },\n run: async ({ args }) => {\n await stageOp({\n kind: \"publisherBlockList.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"block list\"),\n payload: { status: \"DELETED\" },\n });\n },\n});\n\nexport const blockListsCommand = defineCommand({\n meta: {\n name: \"block-lists\",\n description: `Publisher block lists — websites and apps the ad account's ads stay off (Audience Network, in-stream).\n baker ads meta block-lists --account-id act_123 [--full]\n baker ads meta block-lists create --name … --url … | add <id> --url … | delete <id>\nAn ad set uses a list with \\`adsets create|update --block-list <id>\\`; \\`--content-filter FEED_STRICT\\` and \\`--exclude-publisher-category gambling\\` set the rest of its brand safety.`,\n },\n subCommands: {\n list: blockListsListCommand,\n create: blockListsCreateCommand,\n add: blockListsAddCommand,\n delete: blockListsDeleteCommand,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n full: { type: \"boolean\", description: \"Include each list's sites and apps\" },\n },\n default: \"list\",\n});\n\n// --- Reach and frequency ---\n\nregisterSchema({\n command: \"ads.meta.reach-frequency\",\n description:\n \"The ad account's reach-and-frequency quotes and reservations: reach, budget, dates, frequency cap, whether reserved and until when.\",\n args: { \"account-id\": schemaAccount },\n});\n\nconst reachFrequencyListCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Reach-and-frequency quotes on the ad account (reservation_status 1 = reserved, until expiration_time). Runs by default. Example: baker ads meta reach-frequency --account-id act_123\",\n },\n args: { \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" } },\n run: async ({ args }) => {\n try {\n const rows = await readEdge({ edge: \"reach-frequency\", \"account-id\": bareAccountId(args as Args) });\n emit(rows, [\n \"Budgets here are in the account currency's minor units (cents). Reserve a quote with `reach-frequency reserve <id>`; a reserved campaign is `campaigns create --buying-type RESERVED` and its ad set `adsets create --reservation <reservation id>`.\",\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.reach-frequency.predict\",\n description:\n \"Ask Meta for a reach-and-frequency quote: how many people a budget reaches (or what a reach costs) over fixed dates in one country, at a frequency cap. A forecast — holds nothing and spends nothing.\",\n args: {\n \"account-id\": schemaAccount,\n \"page-id\": { type: \"string\", description: \"Facebook Page the ads run as\", required: true },\n budget: { type: \"string\", description: \"Lifetime budget, major units (solves for reach)\", required: false },\n reach: { type: \"string\", description: \"People to reach (solves for budget)\", required: false },\n start: { type: \"string\", description: \"Start, ISO date-time\", required: true },\n end: { type: \"string\", description: \"End, ISO date-time\", required: true },\n \"frequency-cap\": {\n type: \"string\",\n description: \"Most times one person sees it per --frequency-days\",\n required: false,\n },\n \"frequency-days\": { type: \"string\", description: \"Days the cap counts over (default 7)\", required: false },\n objective: { type: \"string\", description: \"REACH (default) | BRAND_AWARENESS | VIDEO_VIEWS | …\", required: false },\n \"optimization-goal\": { type: \"string\", description: \"Optional optimization goal\", required: false },\n \"instagram-user\": { type: \"string\", description: \"Instagram account the ads run as\", required: false },\n \"targeting-file\": { type: \"string\", description: \"Targeting JSON — ONE country\", required: true },\n schedule: { type: \"string\", description: 'Hours to run in, repeatable: \"Mon-Fri 09-18\"', required: false },\n \"target-frequency\": {\n type: \"string\",\n description: \"Balanced frequency: views per person per --target-frequency-days (OUTCOME_AWARENESS + REACH)\",\n required: false,\n },\n \"target-frequency-days\": {\n type: \"string\",\n description: \"Days the target counts over (default 7)\",\n required: false,\n },\n \"instream-package\": {\n type: \"string\",\n description: \"In-stream video packages, repeatable: NORMAL | PREMIUM | SPORTS | …\",\n required: false,\n },\n },\n});\n\nfunction unixSeconds(value: unknown, flag: string): number {\n const ms = typeof value === \"string\" ? Date.parse(value) : Number.NaN;\n if (!Number.isFinite(ms)) failWriteValidation(`${flag} takes an ISO date-time, e.g. 2026-11-01T00:00:00Z`);\n return Math.floor(ms / 1000);\n}\n\nconst reachFrequencyPredictCommand = defineCommand({\n meta: {\n name: \"predict\",\n description: `Ask Meta what a reach-and-frequency buy would reach (or cost). A forecast: nothing is held or spent, and the quote expires on its own.\nStart here: baker ads meta account --account-id act_123 (the account needs CAN_USE_REACH_AND_FREQUENCY; Meta's floor is about 200,000 people per country)\nExample: baker ads meta reach-frequency predict --account-id act_123 --page-id 904238019441800 --budget 1000 --start 2026-11-01T00:00:00Z --end 2026-11-08T00:00:00Z --frequency-cap 2 --targeting-file t.json`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n \"page-id\": { type: \"string\", description: \"Facebook Page the ads run as — from `baker ads meta pages`\" },\n \"instagram-user\": { type: \"string\", description: \"Instagram account the ads run as\" },\n budget: { type: \"string\", description: \"Lifetime budget in the account currency (solves for reach)\" },\n reach: { type: \"string\", description: \"People to reach (solves for budget)\" },\n start: { type: \"string\", description: \"Start, ISO date-time\" },\n end: { type: \"string\", description: \"End, ISO date-time (at most 90 days after the start)\" },\n \"frequency-cap\": { type: \"string\", description: \"Most times one person sees the ads per --frequency-days\" },\n \"frequency-days\": { type: \"string\", description: \"Days the cap counts over (default 7)\" },\n objective: {\n type: \"string\",\n description:\n \"REACH (default) | BRAND_AWARENESS | VIDEO_VIEWS | POST_ENGAGEMENT | LINK_CLICKS | OUTCOME_AWARENESS | OUTCOME_ENGAGEMENT\",\n },\n \"optimization-goal\": { type: \"string\", description: \"Optional optimization goal\" },\n \"targeting-file\": { type: \"string\", description: \"Targeting JSON (as for adsets create) — ONE country\" },\n schedule: {\n type: \"string\",\n description:\n 'Run only in these hours, repeatable: \"<days> <from>-<to>\", e.g. \"Mon-Fri 09-18\". Live, Meta stored day-parted quotes but answered status 18 (no reach) for them',\n },\n \"target-frequency\": {\n type: \"string\",\n description:\n \"Balanced frequency: aim each person at this many views per --target-frequency-days (default 7) instead of a cap — needs --objective OUTCOME_AWARENESS and --optimization-goal REACH\",\n },\n \"target-frequency-days\": { type: \"string\", description: \"Days the target frequency counts over (default 7)\" },\n \"instream-package\": {\n type: \"string\",\n description:\n \"In-stream video packages the ads may run in, repeatable: NORMAL | PREMIUM | SPORTS | ENTERTAINMENT | …\",\n },\n },\n run: async ({ args, rawArgs }) => {\n if (!args[\"targeting-file\"]) failWriteValidation(\"pass --targeting-file (one country)\");\n const reach = numberFlag(args.reach, \"--reach\");\n const instreamPackages = repeatedValues(rawArgs, \"instream-package\", args[\"instream-package\"])\n .flatMap((value) => value.split(\",\"))\n .map((value) => value.trim().toUpperCase())\n .filter(Boolean);\n const body = {\n accountId: bareAccountId(args as Args),\n solveFor: reach !== undefined ? \"budget\" : \"reach\",\n budget: args.budget,\n reach,\n start_time: unixSeconds(args.start, \"--start\"),\n end_time: unixSeconds(args.end, \"--end\"),\n frequencyCap: numberFlag(args[\"frequency-cap\"], \"--frequency-cap\"),\n frequencyCapDays: numberFlag(args[\"frequency-days\"], \"--frequency-days\"),\n objective: args.objective,\n optimization_goal: args[\"optimization-goal\"],\n page_id: args[\"page-id\"],\n instagram_user_id: args[\"instagram-user\"],\n targeting: loadJsonFileArg(args[\"targeting-file\"]),\n targetFrequency: numberFlag(args[\"target-frequency\"], \"--target-frequency\"),\n targetFrequencyDays: numberFlag(args[\"target-frequency-days\"], \"--target-frequency-days\"),\n day_parting_schedule: dayPartingFromFlags(args as Args, rawArgs),\n instream_packages: instreamPackages.length > 0 ? instreamPackages : undefined,\n };\n try {\n const quote = await apiPost<Row>(\"/api/ads/meta/reach-frequency/predict\", body);\n const unanswered =\n quote.status === 1\n ? []\n : [\n `Meta did not quote this (status ${String(quote.status)}, reach 0) — nothing to reserve. Live, a run ending before 6 AM account time on its last day came back this way: move --end later in the day, or widen the audience (Meta's floor is about 200,000 people), and ask again.`,\n ];\n emit(quote, [\n ...unanswered,\n \"external_reach / external_impression are what Meta forecasts; external_budget and the min/max bounds are in minor units (cents). To hold this price, `reach-frequency reserve <id>` (staged, made at publish).\",\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.reach-frequency.reserve\",\n description:\n \"Stage reserving a reach-and-frequency quote: Meta holds its price for about two weeks. Made at publish.\",\n args: { id: { type: \"positional\", description: \"Quote id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst reachFrequencyReserveCommand = defineCommand({\n meta: {\n name: \"reserve\",\n description: `Reserve a reach-and-frequency quote — Meta holds its price until the reservation expires. ${STAGED_NOTE}\nThen buy on it: campaigns create --buying-type RESERVED …, adsets create --reservation meta_temp_… (no budget — it comes from the quote).\nExample: baker ads meta reach-frequency reserve 120249500564540208 --account-id act_123`,\n },\n args: {\n id: { type: \"positional\", description: \"Quote id (from `reach-frequency predict` or the list)\", required: true },\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n },\n run: async ({ args }) => {\n await stageOp({\n kind: \"reachFrequencyReservation.create\",\n accountId: bareAccountId(args as Args),\n payload: { prediction_id: requireTarget(args as Args, \"quote\") },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.reach-frequency.cancel\",\n description: \"Stage cancelling a reach-and-frequency reservation, releasing its price. Made at publish.\",\n args: { id: { type: \"positional\", description: \"Reservation id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst reachFrequencyCancelCommand = defineCommand({\n meta: {\n name: \"cancel\",\n description: `Cancel a reach-and-frequency reservation. ${STAGED_NOTE}\nExample: baker ads meta reach-frequency cancel 120249500569290208 --account-id act_123`,\n },\n args: {\n id: { type: \"positional\", description: \"Reservation id\", required: true },\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n },\n run: async ({ args }) => {\n await stageOp({\n kind: \"reachFrequencyReservation.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"reservation\"),\n payload: { status: \"CANCELLED\" },\n });\n },\n});\n\nexport const reachFrequencyCommand = defineCommand({\n meta: {\n name: \"reach-frequency\",\n description: `Reach and frequency buying (Reservation): a fixed reach at a fixed price over fixed dates.\n baker ads meta reach-frequency --account-id act_123 — quotes and reservations\n baker ads meta reach-frequency predict --budget 1000 --start … --end … --targeting-file t.json — a quote (holds nothing)\n baker ads meta reach-frequency reserve <quote id> | cancel <reservation id> — staged, made at publish`,\n },\n subCommands: {\n list: reachFrequencyListCommand,\n predict: reachFrequencyPredictCommand,\n reserve: reachFrequencyReserveCommand,\n cancel: reachFrequencyCancelCommand,\n },\n args: { \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" } },\n default: \"list\",\n});\n\n// --- Posts an ad can boost, and comments on ads ---\n\nregisterSchema({\n command: \"ads.meta.page-posts\",\n description:\n \"A Facebook Page's recent posts, with is_eligible_for_promotion — the posts a `creatives create --type existing_post --post-id` can boost.\",\n args: { \"page-id\": { type: \"string\", description: \"Facebook Page id\", required: true } },\n});\n\nexport const pagePostsCommand = defineCommand({\n meta: {\n name: \"page-posts\",\n description: `A Facebook Page's recent posts, for boosting one as an ad (keeps its likes and comments).\nExample: baker ads meta page-posts --page-id 904238019441800\nThen: baker ads meta creatives create --type existing_post --post-id <id> (only a post with is_eligible_for_promotion: true)`,\n },\n args: { \"page-id\": { type: \"string\", description: \"Facebook Page id — from `baker ads meta pages`\" } },\n run: async ({ args }) => {\n if (!args[\"page-id\"]) failWriteValidation(\"pass --page-id (from `baker ads meta pages`)\");\n try {\n const rows = await readEdge({ edge: \"page-posts\", \"page-id\": String(args[\"page-id\"]) });\n emit(rows, [\n \"Boost one with `creatives create --type existing_post --post-id <id>`; is_eligible_for_promotion false means Meta will not run it as an ad.\",\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.instagram-media\",\n description:\n \"An Instagram account's posts, for boosting one as an ad (`creatives create --type existing_post --instagram-media-id`).\",\n args: { \"instagram-user\": { type: \"string\", description: \"Instagram account id\", required: true } },\n});\n\nexport const instagramMediaCommand = defineCommand({\n meta: {\n name: \"instagram-media\",\n description: `An Instagram account's posts, for boosting one as an ad.\nExample: baker ads meta instagram-media --instagram-user 17841478810711864\nThen: baker ads meta creatives create --type existing_post --instagram-media-id <id> --page <brand page> --instagram-user <id>`,\n },\n args: {\n \"instagram-user\": {\n type: \"string\",\n description: \"Instagram account id — from `baker ads meta instagram-accounts`\",\n },\n },\n run: async ({ args }) => {\n if (!args[\"instagram-user\"])\n failWriteValidation(\"pass --instagram-user (from `baker ads meta instagram-accounts`)\");\n try {\n emit(await readEdge({ edge: \"instagram-media\", \"instagram-user\": String(args[\"instagram-user\"]) }));\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.comments\",\n description:\n \"The comments on an ad's post (Facebook). Needs Meta permissions the connection may not hold — a refusal says so; moderation then happens in Meta Business Suite.\",\n args: {\n \"ad-id\": { type: \"string\", description: \"Ad id\", required: true },\n full: { type: \"boolean\", description: \"Include who wrote each and its replies count\", required: false },\n },\n});\n\nexport const commentsCommand = defineCommand({\n meta: {\n name: \"comments\",\n description: `The comments people left on an ad's post.\nExample: baker ads meta comments --ad-id 120211234567890\nReading needs a Meta permission Baker's connection does not ask for yet; when Meta refuses, say moderation happens in Meta Business Suite and carry on.`,\n },\n args: {\n \"ad-id\": { type: \"string\", description: \"Ad id — from `baker ads meta ads`\" },\n full: { type: \"boolean\", description: \"Include who wrote each comment\" },\n },\n run: async ({ args }) => {\n if (!args[\"ad-id\"]) failWriteValidation(\"pass --ad-id (from `baker ads meta ads`)\");\n try {\n const params: Record<string, string> = { \"ad-id\": String(args[\"ad-id\"]) };\n if (args.full) params.full = \"true\";\n emit(await apiGet<Row[]>(\"/api/ads/meta/ad-comments\", params));\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\n// --- What else hangs off the account (reads) ---\n\nconst ACCOUNT_DETAILS = {\n recommendations: \"Meta's suggestions for the account (often empty)\",\n users: \"the people on the account and their tasks (MANAGE, ADVERTISE, ANALYZE, DRAFT) — read only\",\n \"account-controls\":\n \"account-wide Advantage+ controls: the minimum age, locations and placements every Advantage+ campaign keeps to — read only\",\n playables: \"playable ads (HTML) uploaded for app ads — read only\",\n \"place-page-sets\": \"store-location page sets for local ads — read only\",\n} as const;\ntype AccountDetail = keyof typeof ACCOUNT_DETAILS;\n\nregisterSchema({\n command: \"ads.meta.account-details\",\n description: `What else belongs to the ad account, read live — --show one of: ${Object.entries(ACCOUNT_DETAILS)\n .map(([name, what]) => `${name} (${what})`)\n .join(\"; \")}.`,\n args: {\n \"account-id\": schemaAccount,\n show: { type: \"string\", description: Object.keys(ACCOUNT_DETAILS).join(\"|\"), required: true },\n },\n});\n\nexport const accountDetailsCommand = defineCommand({\n meta: {\n name: \"account-details\",\n description: `What else belongs to the ad account, read live. Nothing here is changed by Baker.\nExample: baker ads meta account-details --account-id act_123 --show users\n--show ${Object.keys(ACCOUNT_DETAILS).join(\" | \")}`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or act_N\" },\n show: { type: \"string\", description: Object.keys(ACCOUNT_DETAILS).join(\" | \") },\n },\n run: async ({ args }) => {\n const show = String(args.show ?? \"\");\n if (!(show in ACCOUNT_DETAILS)) {\n failWriteValidation(`--show takes ${Object.keys(ACCOUNT_DETAILS).join(\", \")}`);\n }\n try {\n const rows = await readEdge({ edge: show as AccountDetail, \"account-id\": bareAccountId(args as Args) });\n emit(rows, rows.length === 0 ? [`No ${show} on this ad account.`] : []);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
compact,
|
|
3
3
|
schemaArgs,
|
|
4
4
|
stageChatgptOp
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AQM4JH62.js";
|
|
6
6
|
import {
|
|
7
7
|
CHATGPT_ADS_REFERENCE,
|
|
8
8
|
chatgptFailure
|
|
@@ -63,4 +63,4 @@ Examples:
|
|
|
63
63
|
export {
|
|
64
64
|
accountUpdateCommand
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=account-writes-
|
|
66
|
+
//# sourceMappingURL=account-writes-AE5IJGGW.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
csvOrJson,
|
|
3
3
|
handleMetaError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QTOZ32SU.js";
|
|
5
5
|
import {
|
|
6
6
|
connectedResourceHints
|
|
7
7
|
} from "./chunk-P4NSJS54.js";
|
|
@@ -72,4 +72,4 @@ Examples:
|
|
|
72
72
|
export {
|
|
73
73
|
accountsCommand
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=accounts-
|
|
75
|
+
//# sourceMappingURL=accounts-K4INATCW.js.map
|
|
@@ -3,17 +3,17 @@ import {
|
|
|
3
3
|
registerMetaListSchema,
|
|
4
4
|
shapeMetaListRows,
|
|
5
5
|
writeMetaListRows
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2C7AHPM4.js";
|
|
7
7
|
import {
|
|
8
8
|
csvOrJson,
|
|
9
9
|
handleMetaError,
|
|
10
10
|
resolveAccountIdArg
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QTOZ32SU.js";
|
|
12
12
|
import "./chunk-SWL4AAPP.js";
|
|
13
13
|
import {
|
|
14
14
|
NO_CACHE_ARG
|
|
15
15
|
} from "./chunk-K3TNTBZJ.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-65Y3RCWP.js";
|
|
17
17
|
import {
|
|
18
18
|
apiGet
|
|
19
19
|
} from "./chunk-XDZVBX6L.js";
|
|
@@ -71,4 +71,4 @@ Examples:
|
|
|
71
71
|
export {
|
|
72
72
|
activitiesCommand
|
|
73
73
|
};
|
|
74
|
-
//# sourceMappingURL=activities-
|
|
74
|
+
//# sourceMappingURL=activities-T253KK4Q.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
schemaArgs,
|
|
10
10
|
stageChatgptOp,
|
|
11
11
|
statusCommand
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-AQM4JH62.js";
|
|
13
13
|
import {
|
|
14
14
|
CHATGPT_ADS_REFERENCE
|
|
15
15
|
} from "./chunk-IG627WWY.js";
|
|
@@ -167,4 +167,4 @@ export {
|
|
|
167
167
|
audienceBidsArg,
|
|
168
168
|
contextHintsArg
|
|
169
169
|
};
|
|
170
|
-
//# sourceMappingURL=ad-group-writes-
|
|
170
|
+
//# sourceMappingURL=ad-group-writes-VRSBI2Z2.js.map
|
|
@@ -52,11 +52,11 @@ Examples:
|
|
|
52
52
|
},
|
|
53
53
|
subCommands: {
|
|
54
54
|
list: adGroupsListCommand,
|
|
55
|
-
create: () => import("./ad-group-writes-
|
|
56
|
-
update: () => import("./ad-group-writes-
|
|
57
|
-
pause: () => import("./ad-group-writes-
|
|
58
|
-
resume: () => import("./ad-group-writes-
|
|
59
|
-
archive: () => import("./ad-group-writes-
|
|
55
|
+
create: () => import("./ad-group-writes-VRSBI2Z2.js").then((m) => m.adGroupsCreateCommand),
|
|
56
|
+
update: () => import("./ad-group-writes-VRSBI2Z2.js").then((m) => m.adGroupsUpdateCommand),
|
|
57
|
+
pause: () => import("./ad-group-writes-VRSBI2Z2.js").then((m) => m.adGroupsPauseCommand),
|
|
58
|
+
resume: () => import("./ad-group-writes-VRSBI2Z2.js").then((m) => m.adGroupsResumeCommand),
|
|
59
|
+
archive: () => import("./ad-group-writes-VRSBI2Z2.js").then((m) => m.adGroupsArchiveCommand)
|
|
60
60
|
},
|
|
61
61
|
// A parent must never declare `run`: citty falls through to it after the matched subcommand.
|
|
62
62
|
args,
|
|
@@ -65,4 +65,4 @@ Examples:
|
|
|
65
65
|
export {
|
|
66
66
|
adGroupsCommand
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=ad-groups-
|
|
68
|
+
//# sourceMappingURL=ad-groups-IEBVEAMS.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
schemaArgs,
|
|
8
8
|
stageChatgptOp,
|
|
9
9
|
statusCommand
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-AQM4JH62.js";
|
|
11
11
|
import {
|
|
12
12
|
CHATGPT_ADS_REFERENCE
|
|
13
13
|
} from "./chunk-IG627WWY.js";
|
|
@@ -171,4 +171,4 @@ export {
|
|
|
171
171
|
adsUpdateCommand,
|
|
172
172
|
productAdCreateOp
|
|
173
173
|
};
|
|
174
|
-
//# sourceMappingURL=ad-writes-
|
|
174
|
+
//# sourceMappingURL=ad-writes-ALV4KFPZ.js.map
|
|
@@ -60,12 +60,12 @@ Examples:
|
|
|
60
60
|
},
|
|
61
61
|
subCommands: {
|
|
62
62
|
list: adsListCommand,
|
|
63
|
-
create: () => import("./ad-writes-
|
|
64
|
-
update: () => import("./ad-writes-
|
|
65
|
-
pause: () => import("./ad-writes-
|
|
66
|
-
resume: () => import("./ad-writes-
|
|
67
|
-
archive: () => import("./ad-writes-
|
|
68
|
-
"create-product": () => import("./ad-writes-
|
|
63
|
+
create: () => import("./ad-writes-ALV4KFPZ.js").then((m) => m.adsCreateCommand),
|
|
64
|
+
update: () => import("./ad-writes-ALV4KFPZ.js").then((m) => m.adsUpdateCommand),
|
|
65
|
+
pause: () => import("./ad-writes-ALV4KFPZ.js").then((m) => m.adsPauseCommand),
|
|
66
|
+
resume: () => import("./ad-writes-ALV4KFPZ.js").then((m) => m.adsResumeCommand),
|
|
67
|
+
archive: () => import("./ad-writes-ALV4KFPZ.js").then((m) => m.adsArchiveCommand),
|
|
68
|
+
"create-product": () => import("./ad-writes-ALV4KFPZ.js").then((m) => m.adsCreateProductCommand)
|
|
69
69
|
},
|
|
70
70
|
// A parent must never declare `run`: citty falls through to it after the matched subcommand.
|
|
71
71
|
args,
|
|
@@ -74,4 +74,4 @@ Examples:
|
|
|
74
74
|
export {
|
|
75
75
|
adsCommand
|
|
76
76
|
};
|
|
77
|
-
//# sourceMappingURL=ads-
|
|
77
|
+
//# sourceMappingURL=ads-CQZHD7FC.js.map
|
|
@@ -28,13 +28,13 @@ Full guides: __tooling__/docs/tools/baker/ads-<platform>.md (google|meta|linkedi
|
|
|
28
28
|
},
|
|
29
29
|
subCommands: {
|
|
30
30
|
google: () => import("./google-6JZBJ2ZQ.js").then((m) => m.googleCommand),
|
|
31
|
-
meta: () => import("./meta-
|
|
32
|
-
linkedin: () => import("./linkedin-
|
|
33
|
-
x: () => import("./x-
|
|
34
|
-
chatgpt: () => import("./chatgpt-
|
|
31
|
+
meta: () => import("./meta-YHDTGJQ6.js").then((m) => m.metaCommand),
|
|
32
|
+
linkedin: () => import("./linkedin-UGMAFSGO.js").then((m) => m.linkedinCommand),
|
|
33
|
+
x: () => import("./x-VCSMV7T5.js").then((m) => m.xCommand),
|
|
34
|
+
chatgpt: () => import("./chatgpt-QVF2FD3E.js").then((m) => m.chatgptCommand)
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
export {
|
|
38
38
|
adsCommand
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=ads-
|
|
40
|
+
//# sourceMappingURL=ads-QIKZ6O2N.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
registerMetaListSchema,
|
|
4
4
|
shapeMetaListRows,
|
|
5
5
|
writeMetaListRows
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-2C7AHPM4.js";
|
|
7
7
|
import {
|
|
8
8
|
NAME_CONTAINS_ARG,
|
|
9
9
|
csvOrJson,
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
resolveAccountIdArg,
|
|
12
12
|
resolveEffectiveStatus,
|
|
13
13
|
statusFilterHints
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-QTOZ32SU.js";
|
|
15
15
|
import "./chunk-SWL4AAPP.js";
|
|
16
16
|
import {
|
|
17
17
|
NO_CACHE_ARG
|
|
18
18
|
} from "./chunk-K3TNTBZJ.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-65Y3RCWP.js";
|
|
20
20
|
import {
|
|
21
21
|
apiGet
|
|
22
22
|
} from "./chunk-XDZVBX6L.js";
|
|
@@ -71,7 +71,7 @@ var listCommand = defineCommand({
|
|
|
71
71
|
var adsListCommand = defineCommand({
|
|
72
72
|
meta: {
|
|
73
73
|
name: "ads",
|
|
74
|
-
description: `List ads in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate/retag).
|
|
74
|
+
description: `List ads in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate/copy/retag).
|
|
75
75
|
Defaults to ACTIVE only \u2014 pass --all-statuses to widen. Write subcommands stage ops on this chat's draft.
|
|
76
76
|
|
|
77
77
|
The dashboard shows effective_status (e.g. WITH_ISSUES, PENDING_REVIEW, DISAPPROVED, ADSET_PAUSED), not status.
|
|
@@ -91,14 +91,15 @@ Examples:
|
|
|
91
91
|
},
|
|
92
92
|
subCommands: {
|
|
93
93
|
list: listCommand,
|
|
94
|
-
create: () => import("./write-commands-
|
|
95
|
-
update: () => import("./write-commands-
|
|
96
|
-
pause: () => import("./write-commands-
|
|
97
|
-
resume: () => import("./write-commands-
|
|
98
|
-
archive: () => import("./write-commands-
|
|
99
|
-
delete: () => import("./write-commands-
|
|
100
|
-
duplicate: () => import("./write-commands-
|
|
101
|
-
|
|
94
|
+
create: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsCreateCommand),
|
|
95
|
+
update: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsUpdateCommand),
|
|
96
|
+
pause: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsPauseCommand),
|
|
97
|
+
resume: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsResumeCommand),
|
|
98
|
+
archive: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsArchiveCommand),
|
|
99
|
+
delete: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsDeleteCommand),
|
|
100
|
+
duplicate: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsDuplicateCommand),
|
|
101
|
+
copy: () => import("./copy-writes-D2RTHAL6.js").then((m) => m.adsCopyCommand),
|
|
102
|
+
retag: () => import("./write-commands-PEJBTME6.js").then((m) => m.adsRetagCommand)
|
|
102
103
|
},
|
|
103
104
|
// `args` stays even though the parent has no `run`: citty scans rawArgs for the
|
|
104
105
|
// subcommand name using THIS command's arg defs, so without them `--account-id act_1`
|
|
@@ -110,4 +111,4 @@ Examples:
|
|
|
110
111
|
export {
|
|
111
112
|
adsListCommand
|
|
112
113
|
};
|
|
113
|
-
//# sourceMappingURL=ads-
|
|
114
|
+
//# sourceMappingURL=ads-ZEY72UBN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/ads.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { META_LIST_SHAPE_ARGS, registerMetaListSchema, shapeMetaListRows, writeMetaListRows } from \"./list-rows.ts\";\nimport {\n csvOrJson,\n handleMetaError,\n NAME_CONTAINS_ARG,\n resolveAccountIdArg,\n resolveEffectiveStatus,\n statusFilterHints,\n} from \"./shared.ts\";\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID\" },\n \"adset-id\": { type: \"string\", description: \"Filter to one adset\" },\n \"campaign-id\": { type: \"string\", description: \"Filter to one campaign\" },\n \"effective-status\": { type: \"string\", description: \"Comma-separated effective_status filter (overrides default)\" },\n \"all-statuses\": { type: \"boolean\", description: \"Drop the default ACTIVE filter\" },\n \"name-contains\": NAME_CONTAINS_ARG,\n limit: { type: \"string\", description: \"Max rows (default 1000)\" },\n \"no-cache\": NO_CACHE_ARG,\n ...META_LIST_SHAPE_ARGS,\n} as const;\n\nregisterMetaListSchema(\n \"ads\",\n \"List ads in a Meta ad account, as a table by default: id, name, adset_id, campaign_id, effective_status, creative_id, issues (why an ad is WITH_ISSUES), created_time. Start here: baker ads meta ads --adset-id 6123. --fields takes dotted paths (e.g. id,tracking_specs); --full returns every field Meta sent; --output json returns the rows in the envelope.\",\n listArgs,\n);\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List ads in a Meta ad account. Runs by default when no subcommand is given. Example: baker ads meta ads --account-id act_123\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const effectiveStatus = resolveEffectiveStatus(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"adset-id\"]) params[\"adset-id\"] = args[\"adset-id\"] as string;\n if (args[\"campaign-id\"]) params[\"campaign-id\"] = args[\"campaign-id\"] as string;\n if (effectiveStatus) params[\"effective-status\"] = effectiveStatus;\n if (args[\"name-contains\"]) params[\"name-contains\"] = args[\"name-contains\"] as string;\n if (args.limit) params.limit = args.limit as string;\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<Array<Record<string, unknown>>>(\"/api/ads/meta/ads\", params);\n const shaped = shapeMetaListRows(\"ads\", data, args);\n writeMetaListRows(\"ads\", shaped, csvOrJson(args), statusFilterHints(data, effectiveStatus, \"ads\"));\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const adsListCommand = defineCommand({\n meta: {\n name: \"ads\",\n description: `List ads in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate/copy/retag).\nDefaults to ACTIVE only — pass --all-statuses to widen. Write subcommands stage ops on this chat's draft.\n\nThe dashboard shows effective_status (e.g. WITH_ISSUES, PENDING_REVIEW, DISAPPROVED, ADSET_PAUSED), not status.\n\nListings print a table by default: id, name, adset_id, campaign_id, effective_status, creative_id, issues\n(why an ad is WITH_ISSUES), created_time. --fields takes dotted paths (e.g. tracking_specs,\npreview_shareable_link); --full returns every field; --output json returns the rows as JSON.\n\nExamples:\n baker ads meta ads --account-id act_123\n baker ads meta ads --adset-id 6123\n baker ads meta ads --account-id act_123 --all-statuses --name-contains octubre --fields id,name,adset_id,creative_id — find one ad by name\n baker ads meta ads --adset-id 6123 --fields id,name,preview_shareable_link\n baker ads meta ads create --name \"Ad 1\" --adset meta_temp_as01 --creative meta_temp_cr01\n baker ads meta ads pause 6123 --account-id act_123\n baker ads meta ads retag 6123 --set \"utm_medium=paid-social\" — fix tracking on a LIVE ad, keeping everything else`,\n },\n subCommands: {\n list: listCommand,\n create: () => import(\"./write-commands.ts\").then((m) => m.adsCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.adsUpdateCommand),\n pause: () => import(\"./write-commands.ts\").then((m) => m.adsPauseCommand),\n resume: () => import(\"./write-commands.ts\").then((m) => m.adsResumeCommand),\n archive: () => import(\"./write-commands.ts\").then((m) => m.adsArchiveCommand),\n delete: () => import(\"./write-commands.ts\").then((m) => m.adsDeleteCommand),\n duplicate: () => import(\"./write-commands.ts\").then((m) => m.adsDuplicateCommand),\n copy: () => import(\"./copy-writes.ts\").then((m) => m.adsCopyCommand),\n retag: () => import(\"./write-commands.ts\").then((m) => m.adsRetagCommand),\n },\n // `args` stays even though the parent has no `run`: citty scans rawArgs for the\n // subcommand name using THIS command's arg defs, so without them `--account-id act_1`\n // would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare\n // invocation — citty falls through to `run` after a subcommand, double-executing it.\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAa9B,IAAM,WAAW;AAAA,EACf,cAAc,EAAE,MAAM,UAAU,aAAa,qBAAqB;AAAA,EAClE,YAAY,EAAE,MAAM,UAAU,aAAa,sBAAsB;AAAA,EACjE,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,EACvE,oBAAoB,EAAE,MAAM,UAAU,aAAa,8DAA8D;AAAA,EACjH,gBAAgB,EAAE,MAAM,WAAW,aAAa,iCAAiC;AAAA,EACjF,iBAAiB;AAAA,EACjB,OAAO,EAAE,MAAM,UAAU,aAAa,0BAA0B;AAAA,EAChE,YAAY;AAAA,EACZ,GAAG;AACL;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,cAAc,cAAc;AAAA,EAChC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,EACN,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,kBAAkB,uBAAuB,IAAI;AACnD,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,UAAI,KAAK,UAAU,EAAG,QAAO,UAAU,IAAI,KAAK,UAAU;AAC1D,UAAI,KAAK,aAAa,EAAG,QAAO,aAAa,IAAI,KAAK,aAAa;AACnE,UAAI,gBAAiB,QAAO,kBAAkB,IAAI;AAClD,UAAI,KAAK,eAAe,EAAG,QAAO,eAAe,IAAI,KAAK,eAAe;AACzE,UAAI,KAAK,MAAO,QAAO,QAAQ,KAAK;AACpC,UAAI,KAAK,UAAU,EAAG,QAAO,YAAY,IAAI;AAC7C,YAAM,OAAO,MAAM,OAAuC,qBAAqB,MAAM;AACrF,YAAM,SAAS,kBAAkB,OAAO,MAAM,IAAI;AAClD,wBAAkB,OAAO,QAAQ,UAAU,IAAI,GAAG,kBAAkB,MAAM,iBAAiB,KAAK,CAAC;AAAA,IACnG,SAAS,KAAK;AACZ,sBAAgB,GAAG;AAAA,IACrB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBf;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,gBAAgB;AAAA,IAC1E,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,gBAAgB;AAAA,IAC1E,OAAO,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe;AAAA,IACxE,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,gBAAgB;AAAA,IAC1E,SAAS,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,iBAAiB;AAAA,IAC5E,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,gBAAgB;AAAA,IAC1E,WAAW,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,mBAAmB;AAAA,IAChF,MAAM,MAAM,OAAO,2BAAkB,EAAE,KAAK,CAAC,MAAM,EAAE,cAAc;AAAA,IACnE,OAAO,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AAAA,EACN,SAAS;AACX,CAAC;","names":[]}
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
audienceNamesOf,
|
|
5
5
|
flattenViewerRows,
|
|
6
6
|
readAudienceNames
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-G6XKD7QE.js";
|
|
8
8
|
import {
|
|
9
9
|
META_LIST_SHAPE_ARGS,
|
|
10
10
|
registerMetaListSchema,
|
|
11
11
|
shapeMetaListRows,
|
|
12
12
|
writeMetaListRows
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2C7AHPM4.js";
|
|
14
14
|
import {
|
|
15
15
|
NAME_CONTAINS_ARG,
|
|
16
16
|
csvOrJson,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
resolveAccountIdArg,
|
|
19
19
|
resolveEffectiveStatus,
|
|
20
20
|
statusFilterHints
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-QTOZ32SU.js";
|
|
22
22
|
import {
|
|
23
23
|
rememberedJev
|
|
24
24
|
} from "./chunk-FNA277HP.js";
|
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
import {
|
|
35
35
|
NO_CACHE_ARG
|
|
36
36
|
} from "./chunk-K3TNTBZJ.js";
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-2WZI36D3.js";
|
|
38
|
+
import "./chunk-65Y3RCWP.js";
|
|
39
39
|
import "./chunk-DWX44QL6.js";
|
|
40
40
|
import "./chunk-2FSEESJU.js";
|
|
41
41
|
import "./chunk-CVBKW75S.js";
|
|
@@ -138,7 +138,7 @@ var listCommand = defineCommand({
|
|
|
138
138
|
var adsetsCommand = defineCommand({
|
|
139
139
|
meta: {
|
|
140
140
|
name: "adsets",
|
|
141
|
-
description: `List ad sets in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate).
|
|
141
|
+
description: `List ad sets in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate/copy).
|
|
142
142
|
Defaults to ACTIVE only. Write subcommands stage ops on this chat's draft.
|
|
143
143
|
|
|
144
144
|
Listings print a table by default: id, name, campaign_id, effective_status, optimization_goal, billing_event,
|
|
@@ -155,13 +155,14 @@ Examples:
|
|
|
155
155
|
},
|
|
156
156
|
subCommands: {
|
|
157
157
|
list: listCommand,
|
|
158
|
-
create: () => import("./write-commands-
|
|
159
|
-
update: () => import("./write-commands-
|
|
160
|
-
pause: () => import("./write-commands-
|
|
161
|
-
resume: () => import("./write-commands-
|
|
162
|
-
archive: () => import("./write-commands-
|
|
163
|
-
delete: () => import("./write-commands-
|
|
164
|
-
duplicate: () => import("./write-commands-
|
|
158
|
+
create: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsCreateCommand),
|
|
159
|
+
update: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsUpdateCommand),
|
|
160
|
+
pause: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsPauseCommand),
|
|
161
|
+
resume: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsResumeCommand),
|
|
162
|
+
archive: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsArchiveCommand),
|
|
163
|
+
delete: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsDeleteCommand),
|
|
164
|
+
duplicate: () => import("./write-commands-PEJBTME6.js").then((m) => m.adSetsDuplicateCommand),
|
|
165
|
+
copy: () => import("./copy-writes-D2RTHAL6.js").then((m) => m.adSetsCopyCommand)
|
|
165
166
|
},
|
|
166
167
|
// `args` stays even though the parent has no `run`: citty scans rawArgs for the
|
|
167
168
|
// subcommand name using THIS command's arg defs, so without them `--account-id act_1`
|
|
@@ -173,4 +174,4 @@ Examples:
|
|
|
173
174
|
export {
|
|
174
175
|
adsetsCommand
|
|
175
176
|
};
|
|
176
|
-
//# sourceMappingURL=adsets-
|
|
177
|
+
//# sourceMappingURL=adsets-5H3MOT3D.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/ads/meta/adsets.ts"],"sourcesContent":["import path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { readAudienceNames } from \"../../../audience-names.ts\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { rememberedJev } from \"../../../engine/lib/remembered-nouls.ts\";\nimport type { ReviewUsage } from \"../../../engine/nodes/local/lib/render-review.ts\";\nimport { findWorkspaceRoot } from \"../../canvas/normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"../../canvas/unbilled-spend.ts\";\nimport { writeAdsOutput } from \"../output.ts\";\nimport { adSetViewerRows, audienceNamesOf, flattenViewerRows, VIEWER_TABLE_COLUMNS } from \"./adset-viewers.ts\";\nimport { META_LIST_SHAPE_ARGS, registerMetaListSchema, shapeMetaListRows, writeMetaListRows } from \"./list-rows.ts\";\nimport {\n csvOrJson,\n handleMetaError,\n NAME_CONTAINS_ARG,\n resolveAccountIdArg,\n resolveEffectiveStatus,\n statusFilterHints,\n} from \"./shared.ts\";\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID\" },\n \"campaign-id\": { type: \"string\", description: \"Filter to one campaign\" },\n \"effective-status\": { type: \"string\", description: \"Comma-separated effective_status filter (overrides default)\" },\n \"all-statuses\": { type: \"boolean\", description: \"Drop the default ACTIVE filter\" },\n \"name-contains\": NAME_CONTAINS_ARG,\n limit: { type: \"string\", description: \"Max rows (default 1000)\" },\n \"no-cache\": NO_CACHE_ARG,\n audience: {\n type: \"boolean\",\n description:\n \"Who each ad set reaches, instead of the compact row: a viewer per ad set — temperature (cold|warm|hot), what they already know (brand/offer/product), placements, and the reasons, read from its targeting, the account's audiences and the campaign objective. Start here before writing an ad for an ad set: baker ads meta adsets --campaign-id 6123 --audience --output json\",\n },\n ...META_LIST_SHAPE_ARGS,\n} as const;\n\ntype MetaRow = Record<string, unknown>;\n\n/**\n * The audience list and the campaign objectives only sharpen the read: without them\n * each audience is read from its name and the objective is left out, so a refused\n * read degrades the viewer rather than failing the listing.\n */\nasync function readOrEmpty(path: string, params: Record<string, string>, label: string, hints: string[]) {\n try {\n return await apiGet<MetaRow[]>(path, params);\n } catch (err) {\n const message = err instanceof Error ? err.message : \"unknown error\";\n hints.push(`Could not read the account's ${label} (${message}); the viewer was read without them.`);\n return [];\n }\n}\n\nasync function writeAdSetViewers(\n adSets: MetaRow[],\n accountParams: Record<string, string>,\n format: string,\n hints: string[],\n): Promise<void> {\n const [audiences, campaigns] = await Promise.all([\n readOrEmpty(\"/api/ads/meta/audiences\", accountParams, \"audiences\", hints),\n readOrEmpty(\"/api/ads/meta/campaigns\", accountParams, \"campaigns\", hints),\n ]);\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const cacheDir = path.join(root, \"canvas\", \".cache\");\n const spent: ReviewUsage[] = [];\n const readName = await readAudienceNames(\n audienceNamesOf(adSets, audiences),\n rememberedJev(path.join(cacheDir, \"audience-names.json\"), (u) => spent.push(u)),\n );\n await holdUnbilledSpend(cacheDir, spent).catch(() => undefined);\n const rows = adSetViewerRows(adSets, audiences, campaigns, readName);\n if (rows.length > 0) {\n hints.push(\n 'Write each ad for the viewer of the ad set it will run in, then record it in the creative\\'s _definition.md: targetAdSet: \"<ad set id>\" and viewer: { temperature, knows, placements, source }.',\n );\n }\n if (format === \"md\" || format === \"csv\") {\n writeAdsOutput(flattenViewerRows(rows), format, [...VIEWER_TABLE_COLUMNS], hints);\n return;\n }\n writeAdsOutput(rows as unknown as MetaRow[], format, undefined, hints);\n}\n\nregisterMetaListSchema(\n \"adsets\",\n \"List ad sets in a Meta ad account, as a table by default: id, name, campaign_id, effective_status, optimization_goal, billing_event, bid_strategy, budgets, destination_type, is_dynamic_creative, learning_stage, end_time, created_time. Targeting is not in the compact row — ask for it with --fields id,name,targeting (or --full). --audience replaces the row with who each ad set reaches (a viewer: temperature, what they already know, placements, reasons) — read it before writing an ad for an ad set. Start here: baker ads meta adsets --campaign-id 6123 --all-statuses. --output json returns the rows in the envelope.\",\n listArgs,\n);\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List ad sets in a Meta ad account. Runs by default when no subcommand is given. Example: baker ads meta adsets --account-id act_123\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const effectiveStatus = resolveEffectiveStatus(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"campaign-id\"]) params[\"campaign-id\"] = args[\"campaign-id\"] as string;\n if (effectiveStatus) params[\"effective-status\"] = effectiveStatus;\n if (args[\"name-contains\"]) params[\"name-contains\"] = args[\"name-contains\"] as string;\n if (args.limit) params.limit = args.limit as string;\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<Array<Record<string, unknown>>>(\"/api/ads/meta/adsets\", params);\n if (args.audience) {\n const hints = statusFilterHints(data, effectiveStatus, \"ad sets\");\n const accountParams: Record<string, string> = { \"account-id\": accountId };\n if (args[\"no-cache\"]) accountParams[\"skip-cache\"] = \"true\";\n await writeAdSetViewers(data, accountParams, csvOrJson(args), hints);\n return;\n }\n const shaped = shapeMetaListRows(\"adsets\", data, args);\n writeMetaListRows(\"adsets\", shaped, csvOrJson(args), statusFilterHints(data, effectiveStatus, \"ad sets\"));\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const adsetsCommand = defineCommand({\n meta: {\n name: \"adsets\",\n description: `List ad sets in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate).\nDefaults to ACTIVE only. Write subcommands stage ops on this chat's draft.\n\nListings print a table by default: id, name, campaign_id, effective_status, optimization_goal, billing_event,\nbid_strategy, budgets, destination_type, is_dynamic_creative, learning_stage, end_time, created_time. Targeting\nis not in the compact row — ask for it with --fields (dotted paths) or --full. --output json returns the rows as JSON.\n\nExamples:\n baker ads meta adsets --account-id act_123\n baker ads meta adsets --campaign-id 6123456789\n baker ads meta adsets --account-id act_123 --all-statuses --name-contains retargeting — find one ad set by name\n baker ads meta adsets --campaign-id 6123456789 --fields id,name,targeting.geo_locations\n baker ads meta adsets --campaign-id 6123456789 --audience --output json — who each ad set reaches (viewer per ad set)\n baker ads meta adsets create --campaign meta_temp_ab12 --name \"US 25-54\" --optimization-goal LINK_CLICKS --billing-event IMPRESSIONS --daily-budget 50 --targeting-file t.json`,\n },\n subCommands: {\n list: listCommand,\n create: () => import(\"./write-commands.ts\").then((m) => m.adSetsCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.adSetsUpdateCommand),\n pause: () => import(\"./write-commands.ts\").then((m) => m.adSetsPauseCommand),\n resume: () => import(\"./write-commands.ts\").then((m) => m.adSetsResumeCommand),\n archive: () => import(\"./write-commands.ts\").then((m) => m.adSetsArchiveCommand),\n delete: () => import(\"./write-commands.ts\").then((m) => m.adSetsDeleteCommand),\n duplicate: () => import(\"./write-commands.ts\").then((m) => m.adSetsDuplicateCommand),\n },\n // `args` stays even though the parent has no `run`: citty scans rawArgs for the\n // subcommand name using THIS command's arg defs, so without them `--account-id act_1`\n // would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare\n // invocation — citty falls through to `run` after a subcommand, double-executing it.\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":"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","names":["path"]}
|
|
1
|
+
{"version":3,"sources":["../src/commands/ads/meta/adsets.ts"],"sourcesContent":["import path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { readAudienceNames } from \"../../../audience-names.ts\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { rememberedJev } from \"../../../engine/lib/remembered-nouls.ts\";\nimport type { ReviewUsage } from \"../../../engine/nodes/local/lib/render-review.ts\";\nimport { findWorkspaceRoot } from \"../../canvas/normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"../../canvas/unbilled-spend.ts\";\nimport { writeAdsOutput } from \"../output.ts\";\nimport { adSetViewerRows, audienceNamesOf, flattenViewerRows, VIEWER_TABLE_COLUMNS } from \"./adset-viewers.ts\";\nimport { META_LIST_SHAPE_ARGS, registerMetaListSchema, shapeMetaListRows, writeMetaListRows } from \"./list-rows.ts\";\nimport {\n csvOrJson,\n handleMetaError,\n NAME_CONTAINS_ARG,\n resolveAccountIdArg,\n resolveEffectiveStatus,\n statusFilterHints,\n} from \"./shared.ts\";\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID\" },\n \"campaign-id\": { type: \"string\", description: \"Filter to one campaign\" },\n \"effective-status\": { type: \"string\", description: \"Comma-separated effective_status filter (overrides default)\" },\n \"all-statuses\": { type: \"boolean\", description: \"Drop the default ACTIVE filter\" },\n \"name-contains\": NAME_CONTAINS_ARG,\n limit: { type: \"string\", description: \"Max rows (default 1000)\" },\n \"no-cache\": NO_CACHE_ARG,\n audience: {\n type: \"boolean\",\n description:\n \"Who each ad set reaches, instead of the compact row: a viewer per ad set — temperature (cold|warm|hot), what they already know (brand/offer/product), placements, and the reasons, read from its targeting, the account's audiences and the campaign objective. Start here before writing an ad for an ad set: baker ads meta adsets --campaign-id 6123 --audience --output json\",\n },\n ...META_LIST_SHAPE_ARGS,\n} as const;\n\ntype MetaRow = Record<string, unknown>;\n\n/**\n * The audience list and the campaign objectives only sharpen the read: without them\n * each audience is read from its name and the objective is left out, so a refused\n * read degrades the viewer rather than failing the listing.\n */\nasync function readOrEmpty(path: string, params: Record<string, string>, label: string, hints: string[]) {\n try {\n return await apiGet<MetaRow[]>(path, params);\n } catch (err) {\n const message = err instanceof Error ? err.message : \"unknown error\";\n hints.push(`Could not read the account's ${label} (${message}); the viewer was read without them.`);\n return [];\n }\n}\n\nasync function writeAdSetViewers(\n adSets: MetaRow[],\n accountParams: Record<string, string>,\n format: string,\n hints: string[],\n): Promise<void> {\n const [audiences, campaigns] = await Promise.all([\n readOrEmpty(\"/api/ads/meta/audiences\", accountParams, \"audiences\", hints),\n readOrEmpty(\"/api/ads/meta/campaigns\", accountParams, \"campaigns\", hints),\n ]);\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const cacheDir = path.join(root, \"canvas\", \".cache\");\n const spent: ReviewUsage[] = [];\n const readName = await readAudienceNames(\n audienceNamesOf(adSets, audiences),\n rememberedJev(path.join(cacheDir, \"audience-names.json\"), (u) => spent.push(u)),\n );\n await holdUnbilledSpend(cacheDir, spent).catch(() => undefined);\n const rows = adSetViewerRows(adSets, audiences, campaigns, readName);\n if (rows.length > 0) {\n hints.push(\n 'Write each ad for the viewer of the ad set it will run in, then record it in the creative\\'s _definition.md: targetAdSet: \"<ad set id>\" and viewer: { temperature, knows, placements, source }.',\n );\n }\n if (format === \"md\" || format === \"csv\") {\n writeAdsOutput(flattenViewerRows(rows), format, [...VIEWER_TABLE_COLUMNS], hints);\n return;\n }\n writeAdsOutput(rows as unknown as MetaRow[], format, undefined, hints);\n}\n\nregisterMetaListSchema(\n \"adsets\",\n \"List ad sets in a Meta ad account, as a table by default: id, name, campaign_id, effective_status, optimization_goal, billing_event, bid_strategy, budgets, destination_type, is_dynamic_creative, learning_stage, end_time, created_time. Targeting is not in the compact row — ask for it with --fields id,name,targeting (or --full). --audience replaces the row with who each ad set reaches (a viewer: temperature, what they already know, placements, reasons) — read it before writing an ad for an ad set. Start here: baker ads meta adsets --campaign-id 6123 --all-statuses. --output json returns the rows in the envelope.\",\n listArgs,\n);\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List ad sets in a Meta ad account. Runs by default when no subcommand is given. Example: baker ads meta adsets --account-id act_123\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const effectiveStatus = resolveEffectiveStatus(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"campaign-id\"]) params[\"campaign-id\"] = args[\"campaign-id\"] as string;\n if (effectiveStatus) params[\"effective-status\"] = effectiveStatus;\n if (args[\"name-contains\"]) params[\"name-contains\"] = args[\"name-contains\"] as string;\n if (args.limit) params.limit = args.limit as string;\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<Array<Record<string, unknown>>>(\"/api/ads/meta/adsets\", params);\n if (args.audience) {\n const hints = statusFilterHints(data, effectiveStatus, \"ad sets\");\n const accountParams: Record<string, string> = { \"account-id\": accountId };\n if (args[\"no-cache\"]) accountParams[\"skip-cache\"] = \"true\";\n await writeAdSetViewers(data, accountParams, csvOrJson(args), hints);\n return;\n }\n const shaped = shapeMetaListRows(\"adsets\", data, args);\n writeMetaListRows(\"adsets\", shaped, csvOrJson(args), statusFilterHints(data, effectiveStatus, \"ad sets\"));\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const adsetsCommand = defineCommand({\n meta: {\n name: \"adsets\",\n description: `List ad sets in a Meta ad account, or stage writes (create/update/pause/resume/archive/delete/duplicate/copy).\nDefaults to ACTIVE only. Write subcommands stage ops on this chat's draft.\n\nListings print a table by default: id, name, campaign_id, effective_status, optimization_goal, billing_event,\nbid_strategy, budgets, destination_type, is_dynamic_creative, learning_stage, end_time, created_time. Targeting\nis not in the compact row — ask for it with --fields (dotted paths) or --full. --output json returns the rows as JSON.\n\nExamples:\n baker ads meta adsets --account-id act_123\n baker ads meta adsets --campaign-id 6123456789\n baker ads meta adsets --account-id act_123 --all-statuses --name-contains retargeting — find one ad set by name\n baker ads meta adsets --campaign-id 6123456789 --fields id,name,targeting.geo_locations\n baker ads meta adsets --campaign-id 6123456789 --audience --output json — who each ad set reaches (viewer per ad set)\n baker ads meta adsets create --campaign meta_temp_ab12 --name \"US 25-54\" --optimization-goal LINK_CLICKS --billing-event IMPRESSIONS --daily-budget 50 --targeting-file t.json`,\n },\n subCommands: {\n list: listCommand,\n create: () => import(\"./write-commands.ts\").then((m) => m.adSetsCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.adSetsUpdateCommand),\n pause: () => import(\"./write-commands.ts\").then((m) => m.adSetsPauseCommand),\n resume: () => import(\"./write-commands.ts\").then((m) => m.adSetsResumeCommand),\n archive: () => import(\"./write-commands.ts\").then((m) => m.adSetsArchiveCommand),\n delete: () => import(\"./write-commands.ts\").then((m) => m.adSetsDeleteCommand),\n duplicate: () => import(\"./write-commands.ts\").then((m) => m.adSetsDuplicateCommand),\n copy: () => import(\"./copy-writes.ts\").then((m) => m.adSetsCopyCommand),\n },\n // `args` stays even though the parent has no `run`: citty scans rawArgs for the\n // subcommand name using THIS command's arg defs, so without them `--account-id act_1`\n // would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare\n // invocation — citty falls through to `run` after a subcommand, double-executing it.\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":"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","names":["path"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
command,
|
|
3
|
+
creativesDeleteCommand,
|
|
4
|
+
customConversionsDeleteCommand,
|
|
5
|
+
customConversionsUpdateCommand,
|
|
6
|
+
labelsAttachCommand,
|
|
7
|
+
labelsCreateCommand,
|
|
8
|
+
labelsDeleteCommand,
|
|
9
|
+
labelsDetachCommand,
|
|
10
|
+
labelsRenameCommand,
|
|
11
|
+
mediaDeleteCommand
|
|
12
|
+
} from "./chunk-SVAB6KV5.js";
|
|
13
|
+
import "./chunk-5C35OW7L.js";
|
|
14
|
+
import "./chunk-A4MVVPJ2.js";
|
|
15
|
+
import "./chunk-HLVRHBKL.js";
|
|
16
|
+
import "./chunk-QTOZ32SU.js";
|
|
17
|
+
import "./chunk-ERSX3MKH.js";
|
|
18
|
+
import "./chunk-SFJW2KED.js";
|
|
19
|
+
import "./chunk-4NZ47VXO.js";
|
|
20
|
+
import "./chunk-D5FY4FAK.js";
|
|
21
|
+
import "./chunk-FNA277HP.js";
|
|
22
|
+
import "./chunk-SWL4AAPP.js";
|
|
23
|
+
import "./chunk-5WMTPYKT.js";
|
|
24
|
+
import "./chunk-23H4ZJRP.js";
|
|
25
|
+
import "./chunk-DWX44QL6.js";
|
|
26
|
+
import "./chunk-2FSEESJU.js";
|
|
27
|
+
import "./chunk-CVBKW75S.js";
|
|
28
|
+
import "./chunk-BLAHHMPF.js";
|
|
29
|
+
import "./chunk-XQIOCIDO.js";
|
|
30
|
+
import "./chunk-XDZVBX6L.js";
|
|
31
|
+
import "./chunk-N5O67GK5.js";
|
|
32
|
+
import "./chunk-EE72SSB2.js";
|
|
33
|
+
import "./chunk-WNSE7N75.js";
|
|
34
|
+
import "./chunk-YQSBHWOI.js";
|
|
35
|
+
export {
|
|
36
|
+
command,
|
|
37
|
+
creativesDeleteCommand,
|
|
38
|
+
customConversionsDeleteCommand,
|
|
39
|
+
customConversionsUpdateCommand,
|
|
40
|
+
labelsAttachCommand,
|
|
41
|
+
labelsCreateCommand,
|
|
42
|
+
labelsDeleteCommand,
|
|
43
|
+
labelsDetachCommand,
|
|
44
|
+
labelsRenameCommand,
|
|
45
|
+
mediaDeleteCommand
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=asset-writes-L5TMKIZC.js.map
|