@koda-sl/baker-cli 0.496.0 → 0.497.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -4
- package/dist/account-ZKJFX2GK.js +80 -0
- package/dist/account-ZKJFX2GK.js.map +1 -0
- package/dist/account-users-SZCYHVBM.js +62 -0
- package/dist/account-users-SZCYHVBM.js.map +1 -0
- package/dist/accounts-5DFYKYSM.js +78 -0
- package/dist/accounts-5DFYKYSM.js.map +1 -0
- package/dist/accounts-OGAIQNE6.js +612 -0
- package/dist/accounts-OGAIQNE6.js.map +1 -0
- package/dist/actions-FMNJSOBA.js +55 -0
- package/dist/activecampaign-LYYYH6XD.js +936 -0
- package/dist/activecampaign-LYYYH6XD.js.map +1 -0
- package/dist/add-AOQLZRPC.js +80 -0
- package/dist/add-AOQLZRPC.js.map +1 -0
- package/dist/add-HWXEPSZF.js +105 -0
- package/dist/add-HWXEPSZF.js.map +1 -0
- package/dist/add-VDZPGZF5.js +148 -0
- package/dist/add-VDZPGZF5.js.map +1 -0
- package/dist/add-YYP3O536.js +303 -0
- package/dist/add-YYP3O536.js.map +1 -0
- package/dist/ads-OLXSDPD6.js +40 -0
- package/dist/advertisers-STYAIX72.js +121 -0
- package/dist/advertisers-STYAIX72.js.map +1 -0
- package/dist/analytics-6WBK4VFO.js +1977 -0
- package/dist/analytics-6WBK4VFO.js.map +1 -0
- package/dist/analytics-DHB325DM.js +434 -0
- package/dist/analytics-DHB325DM.js.map +1 -0
- package/dist/assign-BFXHYTMF.js +78 -0
- package/dist/assign-BFXHYTMF.js.map +1 -0
- package/dist/audience-size-XWHZV2GH.js +74 -0
- package/dist/audience-size-XWHZV2GH.js.map +1 -0
- package/dist/audit-IYGRU7LD.js +152 -0
- package/dist/audit-IYGRU7LD.js.map +1 -0
- package/dist/autocomplete-SDDSJTAF.js +112 -0
- package/dist/autocomplete-SDDSJTAF.js.map +1 -0
- package/dist/avatars-I4H3NMEJ.js +38 -0
- package/dist/bid-pricing-OVYBDRMV.js +101 -0
- package/dist/bid-pricing-OVYBDRMV.js.map +1 -0
- package/dist/brand-3V7ECY7D.js +22 -0
- package/dist/brief-U2W7KMFC.js +539 -0
- package/dist/brief-U2W7KMFC.js.map +1 -0
- package/dist/campaign-groups-FJHBVUA3.js +97 -0
- package/dist/campaign-groups-FJHBVUA3.js.map +1 -0
- package/dist/campaign-writes-XKYYMZML.js +166 -0
- package/dist/campaign-writes-XKYYMZML.js.map +1 -0
- package/dist/campaigns-E5UW4I3X.js +111 -0
- package/dist/campaigns-E5UW4I3X.js.map +1 -0
- package/dist/campaigns-MCB76NPQ.js +107 -0
- package/dist/canvas-JCNKMGCG.js +46 -0
- package/dist/capabilities-CLTZCXCZ.js +145 -0
- package/dist/capabilities-CLTZCXCZ.js.map +1 -0
- package/dist/chatgpt-XFZ42NXC.js +47 -0
- package/dist/chats-DTJSBDWO.js +277 -0
- package/dist/chats-DTJSBDWO.js.map +1 -0
- package/dist/check-CZTS64AW.js +105 -0
- package/dist/check-CZTS64AW.js.map +1 -0
- package/dist/chunk-2YTBPRRG.js +207 -0
- package/dist/chunk-3SNCMEJB.js +97 -0
- package/dist/chunk-7QGFO35A.js +23 -0
- package/dist/chunk-AV7ALENU.js +191 -0
- package/dist/chunk-BRLFQ4VX.js +604 -0
- package/dist/chunk-CAZGM2NX.js +92 -0
- package/dist/chunk-CAZGM2NX.js.map +1 -0
- package/dist/chunk-DJE7UXYT.js +831 -0
- package/dist/chunk-EFWXYUSK.js +139 -0
- package/dist/chunk-EONSZAZB.js +3868 -0
- package/dist/chunk-FALJQCWL.js +661 -0
- package/dist/chunk-FALJQCWL.js.map +1 -0
- package/dist/chunk-FG3MV2XM.js +89 -0
- package/dist/chunk-FKG476GH.js +392 -0
- package/dist/chunk-FUGQSIYG.js +297 -0
- package/dist/chunk-GZ4A2VYW.js +39 -0
- package/dist/chunk-GZ4A2VYW.js.map +1 -0
- package/dist/chunk-HPLHAHG5.js +275 -0
- package/dist/chunk-I24YT2KG.js +122 -0
- package/dist/chunk-IFDZZOUC.js +903 -0
- package/dist/chunk-JVVUI55M.js +455 -0
- package/dist/chunk-KKSHEPBY.js +363 -0
- package/dist/chunk-KQ7RCLGC.js +547 -0
- package/dist/chunk-L7WMS5PW.js +172 -0
- package/dist/chunk-LBRO4MTL.js +19 -0
- package/dist/chunk-LNRPOULW.js +224 -0
- package/dist/chunk-LX6WC2XZ.js +942 -0
- package/dist/chunk-MMGTJBM6.js +142 -0
- package/dist/chunk-NZS3KEQ2.js +97 -0
- package/dist/chunk-NZS3KEQ2.js.map +1 -0
- package/dist/chunk-O37VU7FG.js +6799 -0
- package/dist/chunk-O37VU7FG.js.map +1 -0
- package/dist/chunk-OEZYSL3U.js +51 -0
- package/dist/chunk-OOVHBMQB.js +103 -0
- package/dist/chunk-PTH7VWKK.js +159 -0
- package/dist/chunk-PYD6IGW6.js +401 -0
- package/dist/chunk-PYD6IGW6.js.map +1 -0
- package/dist/chunk-QE2E4EYJ.js +349 -0
- package/dist/chunk-QE2E4EYJ.js.map +1 -0
- package/dist/chunk-QZF4BVKL.js +66 -0
- package/dist/chunk-RITUSBYO.js +61 -0
- package/dist/chunk-SSTL3A7Z.js +206 -0
- package/dist/chunk-SZNGQ2GF.js +64 -0
- package/dist/chunk-SZNGQ2GF.js.map +1 -0
- package/dist/chunk-TD4SO6TR.js +169 -0
- package/dist/chunk-UZ4RTOFG.js +91 -0
- package/dist/chunk-VAX7PFQV.js +592 -0
- package/dist/chunk-VDRSZK4P.js +494 -0
- package/dist/chunk-VNU2EYD4.js +344 -0
- package/dist/chunk-WT4WDIXA.js +156 -0
- package/dist/chunk-XEX23CIB.js +160 -0
- package/dist/chunk-XXDF25BW.js +8939 -0
- package/dist/chunk-YJ3LSFMX.js +249 -0
- package/dist/chunk-YVK5RT3B.js +197 -0
- package/dist/chunk-YWWRLZUR.js +433 -0
- package/dist/chunk-Z4S5BCVZ.js +57 -0
- package/dist/chunk-ZYGK7GAK.js +1079 -0
- package/dist/claim-TSFPWTQY.js +198 -0
- package/dist/claim-TSFPWTQY.js.map +1 -0
- package/dist/cli.js +38 -37
- package/dist/cli.js.map +1 -1
- package/dist/companies-P7FZNJQV.js +196 -0
- package/dist/companies-P7FZNJQV.js.map +1 -0
- package/dist/complete-SYDIHMD5.js +82 -0
- package/dist/complete-SYDIHMD5.js.map +1 -0
- package/dist/connect-COS6G45S.js +43 -0
- package/dist/conversation-UJOWMJRH.js +94 -0
- package/dist/conversation-UJOWMJRH.js.map +1 -0
- package/dist/conversions-ONOIEILU.js +138 -0
- package/dist/conversions-ONOIEILU.js.map +1 -0
- package/dist/create-DPQRYQXK.js +208 -0
- package/dist/create-DPQRYQXK.js.map +1 -0
- package/dist/create-JD76Z4A4.js +60 -0
- package/dist/create-JD76Z4A4.js.map +1 -0
- package/dist/create-NOT3HGP2.js +133 -0
- package/dist/create-NOT3HGP2.js.map +1 -0
- package/dist/create-ZYEB7SHF.js +236 -0
- package/dist/create-ZYEB7SHF.js.map +1 -0
- package/dist/creatives-LRSELC7Y.js +221 -0
- package/dist/creatives-LRSELC7Y.js.map +1 -0
- package/dist/creatives-SEQHJD2M.js +58 -0
- package/dist/credentials-LHPTUVVA.js +288 -0
- package/dist/credentials-LHPTUVVA.js.map +1 -0
- package/dist/critique-Q7GSZ5RP.js +1459 -0
- package/dist/critique-Q7GSZ5RP.js.map +1 -0
- package/dist/critique-RR2XOQCE.js +228 -0
- package/dist/critique-RR2XOQCE.js.map +1 -0
- package/dist/crm-J7EU32PL.js +319 -0
- package/dist/crm-J7EU32PL.js.map +1 -0
- package/dist/crm-MC444ZVU.js +225 -0
- package/dist/crm-MC444ZVU.js.map +1 -0
- package/dist/customers-LMSX33FO.js +57 -0
- package/dist/delete-BQBVATMF.js +55 -0
- package/dist/delete-BQBVATMF.js.map +1 -0
- package/dist/delete-K7A3AUPH.js +65 -0
- package/dist/delete-K7A3AUPH.js.map +1 -0
- package/dist/delete-VV2ICIHF.js +67 -0
- package/dist/delete-VV2ICIHF.js.map +1 -0
- package/dist/demographics-7GWUXXS6.js +139 -0
- package/dist/demographics-7GWUXXS6.js.map +1 -0
- package/dist/discard-3CLZ4DPD.js +67 -0
- package/dist/discard-3CLZ4DPD.js.map +1 -0
- package/dist/domain-ZS74BSE6.js +99 -0
- package/dist/domain-ZS74BSE6.js.map +1 -0
- package/dist/draft-J3B33RAZ.js +308 -0
- package/dist/draft-J3B33RAZ.js.map +1 -0
- package/dist/draft-MZLWVX3D.js +218 -0
- package/dist/draft-MZLWVX3D.js.map +1 -0
- package/dist/draft-R56PIXCV.js +333 -0
- package/dist/draft-R56PIXCV.js.map +1 -0
- package/dist/experiment-7RJ5X2LL.js +1397 -0
- package/dist/experiments-NOSJJMYI.js +234 -0
- package/dist/experiments-NOSJJMYI.js.map +1 -0
- package/dist/facets-E6SHYUAI.js +115 -0
- package/dist/facets-E6SHYUAI.js.map +1 -0
- package/dist/feedback-HXCQBV7S.js +107 -0
- package/dist/feedback-HXCQBV7S.js.map +1 -0
- package/dist/feedback-record-GXPYXNT6.js +261 -0
- package/dist/feedback-record-GXPYXNT6.js.map +1 -0
- package/dist/fetch-HMUGSRE4.js +177 -0
- package/dist/fetch-HMUGSRE4.js.map +1 -0
- package/dist/find-2EPXK5RF.js +134 -0
- package/dist/fit-W7UNFZT5.js +63 -0
- package/dist/flows-SO5J3M3X.js +248 -0
- package/dist/flows-SO5J3M3X.js.map +1 -0
- package/dist/fonts-N42UYWTX.js +37 -0
- package/dist/forecast-24LGJVLC.js +119 -0
- package/dist/forecast-24LGJVLC.js.map +1 -0
- package/dist/funnel-NYT36B3C.js +395 -0
- package/dist/funnel-NYT36B3C.js.map +1 -0
- package/dist/ga4-6EIQC2TG.js +55 -0
- package/dist/get-KAGO4EC5.js +80 -0
- package/dist/get-KAGO4EC5.js.map +1 -0
- package/dist/get-PZX27LQY.js +38 -0
- package/dist/get-PZX27LQY.js.map +1 -0
- package/dist/get-R5JAFHTH.js +57 -0
- package/dist/get-R5JAFHTH.js.map +1 -0
- package/dist/google-O5OI6QFU.js +136 -0
- package/dist/google-ads-6X4BHGUR.js +196 -0
- package/dist/google-ads-6X4BHGUR.js.map +1 -0
- package/dist/gsc-BM3T2GDL.js +30 -0
- package/dist/history-LGOWYLBE.js +134 -0
- package/dist/history-LGOWYLBE.js.map +1 -0
- package/dist/hubspot-LJB3ETUT.js +780 -0
- package/dist/hubspot-LJB3ETUT.js.map +1 -0
- package/dist/icon-B7DG53S5.js +137 -0
- package/dist/ideas-DYN2DMFN.js +41 -0
- package/dist/images-EQCUXEHF.js +92 -0
- package/dist/ingest-B46AY3QU.js +24 -0
- package/dist/ingest-T7ZS2R4U.js +108 -0
- package/dist/ingest-T7ZS2R4U.js.map +1 -0
- package/dist/inspect-BSNGAT2S.js +190 -0
- package/dist/inspect-BSNGAT2S.js.map +1 -0
- package/dist/inspiration-TCCKM4R7.js +53 -0
- package/dist/keyword-metrics-KNTIN4ZK.js +198 -0
- package/dist/keyword-metrics-KNTIN4ZK.js.map +1 -0
- package/dist/keywords-for-site-S4MXGXWR.js +129 -0
- package/dist/keywords-for-site-S4MXGXWR.js.map +1 -0
- package/dist/landing-WVPA7NBR.js +28 -0
- package/dist/leads-EINV5FK3.js +113 -0
- package/dist/leads-EINV5FK3.js.map +1 -0
- package/dist/learn-7Z2VR6MS.js +205 -0
- package/dist/learn-7Z2VR6MS.js.map +1 -0
- package/dist/line-item-writes-Z3TIB5KZ.js +209 -0
- package/dist/line-item-writes-Z3TIB5KZ.js.map +1 -0
- package/dist/line-items-OEWYOPFP.js +103 -0
- package/dist/link-KYHUIPJE.js +65 -0
- package/dist/link-KYHUIPJE.js.map +1 -0
- package/dist/linkedin-JVB4HXJC.js +1314 -0
- package/dist/linkedin-JVB4HXJC.js.map +1 -0
- package/dist/list-EORTO73V.js +93 -0
- package/dist/list-EORTO73V.js.map +1 -0
- package/dist/list-QQVLURKH.js +152 -0
- package/dist/list-QQVLURKH.js.map +1 -0
- package/dist/list-QWGKRUSM.js +65 -0
- package/dist/list-QWGKRUSM.js.map +1 -0
- package/dist/list-WRBWQASJ.js +50 -0
- package/dist/list-Z6NMNK3T.js +304 -0
- package/dist/list-Z6NMNK3T.js.map +1 -0
- package/dist/log-RUMKYPYK.js +93 -0
- package/dist/log-RUMKYPYK.js.map +1 -0
- package/dist/logo-QTSBKP2J.js +18 -0
- package/dist/make-IJGCQA7C.js +1354 -0
- package/dist/make-IJGCQA7C.js.map +1 -0
- package/dist/map-QZHIJFQT.js +434 -0
- package/dist/map-QZHIJFQT.js.map +1 -0
- package/dist/mcp-ZH2XDV5P.js +715 -0
- package/dist/mcp-ZH2XDV5P.js.map +1 -0
- package/dist/media-sources-SQ2RPDBO.js +35 -0
- package/dist/media-sources-SQ2RPDBO.js.map +1 -0
- package/dist/members-4YX7JEZM.js +45 -0
- package/dist/members-4YX7JEZM.js.map +1 -0
- package/dist/normalize-ABIWLRIT.js +142 -0
- package/dist/normalize-ABIWLRIT.js.map +1 -0
- package/dist/options-SVCQVTNE.js +123 -0
- package/dist/options-SVCQVTNE.js.map +1 -0
- package/dist/organization-FNKDC742.js +947 -0
- package/dist/organization-FNKDC742.js.map +1 -0
- package/dist/performance-HTU5FR2K.js +25 -0
- package/dist/posts-3DAPTBH2.js +34 -0
- package/dist/posts-3DAPTBH2.js.map +1 -0
- package/dist/promoted-tweet-writes-DD3CJNWW.js +181 -0
- package/dist/promoted-tweet-writes-DD3CJNWW.js.map +1 -0
- package/dist/promoted-tweets-TTWN5OMW.js +119 -0
- package/dist/publish-Z62KGDJ2.js +342 -0
- package/dist/publish-Z62KGDJ2.js.map +1 -0
- package/dist/reddit-6C3PT5CT.js +27 -0
- package/dist/refresh-HCQXVFVR.js +95 -0
- package/dist/refresh-HCQXVFVR.js.map +1 -0
- package/dist/refresh-ZCGH64OZ.js +42 -0
- package/dist/refresh-ZCGH64OZ.js.map +1 -0
- package/dist/release-FIHW2HCH.js +61 -0
- package/dist/release-FIHW2HCH.js.map +1 -0
- package/dist/remove-CBR7NVMI.js +51 -0
- package/dist/remove-CBR7NVMI.js.map +1 -0
- package/dist/remove-PUZP5GWN.js +49 -0
- package/dist/remove-PUZP5GWN.js.map +1 -0
- package/dist/reopen-EJGLRQWR.js +64 -0
- package/dist/reopen-EJGLRQWR.js.map +1 -0
- package/dist/rerun-TVBZXASH.js +91 -0
- package/dist/rerun-TVBZXASH.js.map +1 -0
- package/dist/research-L25D4WHQ.js +263 -0
- package/dist/research-L25D4WHQ.js.map +1 -0
- package/dist/research-YCMMQVK6.js +62 -0
- package/dist/reset-HKKCWKZ7.js +55 -0
- package/dist/reset-HKKCWKZ7.js.map +1 -0
- package/dist/reset-SRL6I6GP.js +55 -0
- package/dist/reset-SRL6I6GP.js.map +1 -0
- package/dist/resolve-POMTTAFR.js +122 -0
- package/dist/resolve-POMTTAFR.js.map +1 -0
- package/dist/retry-MEPTOAV2.js +61 -0
- package/dist/retry-MEPTOAV2.js.map +1 -0
- package/dist/retry-RNGM3KKA.js +63 -0
- package/dist/retry-RNGM3KKA.js.map +1 -0
- package/dist/revenue-X4KPTSAM.js +89 -0
- package/dist/revenue-X4KPTSAM.js.map +1 -0
- package/dist/rules-VK7YA23Q.js +97 -0
- package/dist/rules-VK7YA23Q.js.map +1 -0
- package/dist/rules-add-VG7AT6EG.js +463 -0
- package/dist/rules-add-VG7AT6EG.js.map +1 -0
- package/dist/run-DIDQSZU7.js +67 -0
- package/dist/run-DIDQSZU7.js.map +1 -0
- package/dist/run-SR7DJ7M5.js +66 -0
- package/dist/scaffold-ad-46GTFUMP.js +1512 -0
- package/dist/scaffold-ad-46GTFUMP.js.map +1 -0
- package/dist/scaffold-static-ad-U63V4UHR.js +1006 -0
- package/dist/scaffold-static-ad-U63V4UHR.js.map +1 -0
- package/dist/scaffold-video-4DNTURH6.js +884 -0
- package/dist/scaffold-video-4DNTURH6.js.map +1 -0
- package/dist/schedule-JO66N7XO.js +62 -0
- package/dist/schedule-JO66N7XO.js.map +1 -0
- package/dist/schedule-JZBIX6LH.js +67 -0
- package/dist/schedule-JZBIX6LH.js.map +1 -0
- package/dist/scheduled-agents-N63EZNY6.js +50 -0
- package/dist/schema-B2XANMEY.js +133 -0
- package/dist/schema-B2XANMEY.js.map +1 -0
- package/dist/schema-C6SGBNA6.js +69 -0
- package/dist/search-7GHS3OUZ.js +51 -0
- package/dist/search-7GHS3OUZ.js.map +1 -0
- package/dist/search-W5HZUJA2.js +175 -0
- package/dist/search-W5HZUJA2.js.map +1 -0
- package/dist/select-LMGLNFWB.js +102 -0
- package/dist/select-LMGLNFWB.js.map +1 -0
- package/dist/set-prompt-M5E3UZDM.js +194 -0
- package/dist/set-prompt-M5E3UZDM.js.map +1 -0
- package/dist/setup-links-ERBQSKAB.js +142 -0
- package/dist/setup-links-ERBQSKAB.js.map +1 -0
- package/dist/site-PNVFJRYK.js +178 -0
- package/dist/site-PNVFJRYK.js.map +1 -0
- package/dist/sources-DMZJPLKC.js +455 -0
- package/dist/sources-DMZJPLKC.js.map +1 -0
- package/dist/sources-HN3GCEDX.js +30 -0
- package/dist/stale-VWN25WTL.js +72 -0
- package/dist/stale-VWN25WTL.js.map +1 -0
- package/dist/stats-CVF6AC7R.js +34 -0
- package/dist/status-SF7DTPCJ.js +63 -0
- package/dist/status-SF7DTPCJ.js.map +1 -0
- package/dist/stock-4LPQ6SM7.js +179 -0
- package/dist/studio-NZ6WQ7OE.js +49 -0
- package/dist/suggest-WMMEQCUH.js +66 -0
- package/dist/suggest-WMMEQCUH.js.map +1 -0
- package/dist/sync-F7VNZLWY.js +55 -0
- package/dist/sync-F7VNZLWY.js.map +1 -0
- package/dist/sync-HVNDPBOD.js +55 -0
- package/dist/sync-HVNDPBOD.js.map +1 -0
- package/dist/sync-definition-CKEUYKWN.js +65 -0
- package/dist/tag-KTQ2FV5C.js +57 -0
- package/dist/tag-KTQ2FV5C.js.map +1 -0
- package/dist/tag-manager-FLXXLNKP.js +43 -0
- package/dist/tags-EUOOSAKN.js +26 -0
- package/dist/tags-KOMAP2G5.js +21 -0
- package/dist/tags-KOMAP2G5.js.map +1 -0
- package/dist/tags-TKXJGTR3.js +21 -0
- package/dist/tags-TKXJGTR3.js.map +1 -0
- package/dist/tags-VWIPDCUA.js +225 -0
- package/dist/tags-VWIPDCUA.js.map +1 -0
- package/dist/tags-XAB4HWGW.js +21 -0
- package/dist/tags-XAB4HWGW.js.map +1 -0
- package/dist/targeting-criteria-HE7K52WN.js +113 -0
- package/dist/targets-NA4XPDBF.js +104 -0
- package/dist/targets-NA4XPDBF.js.map +1 -0
- package/dist/testimonials-3Q5XM7JD.js +32 -0
- package/dist/top-companies-TKO4QGPJ.js +109 -0
- package/dist/top-companies-TKO4QGPJ.js.map +1 -0
- package/dist/translate-YVIZ5T44.js +605 -0
- package/dist/translate-YVIZ5T44.js.map +1 -0
- package/dist/triggers-QX7VW7UO.js +143 -0
- package/dist/triggers-QX7VW7UO.js.map +1 -0
- package/dist/unlink-64SRPUNG.js +68 -0
- package/dist/unlink-64SRPUNG.js.map +1 -0
- package/dist/unstage-5X2MOUMF.js +86 -0
- package/dist/unstage-5X2MOUMF.js.map +1 -0
- package/dist/update-22ZBHURE.js +81 -0
- package/dist/update-22ZBHURE.js.map +1 -0
- package/dist/update-2LTPSGWT.js +99 -0
- package/dist/update-2LTPSGWT.js.map +1 -0
- package/dist/update-DOKS7ATM.js +189 -0
- package/dist/update-DOKS7ATM.js.map +1 -0
- package/dist/update-FB6X463M.js +64 -0
- package/dist/update-FB6X463M.js.map +1 -0
- package/dist/update-QIZ7XFAM.js +153 -0
- package/dist/update-QIZ7XFAM.js.map +1 -0
- package/dist/upload-XJ7TUVIK.js +127 -0
- package/dist/upload-XJ7TUVIK.js.map +1 -0
- package/dist/url-params-KLQOLNPS.js +99 -0
- package/dist/url-params-KLQOLNPS.js.map +1 -0
- package/dist/validate-YTBJBG44.js +118 -0
- package/dist/validate-YTBJBG44.js.map +1 -0
- package/dist/videos-WAPUPJVT.js +39 -0
- package/dist/viewer-check-GHQA3UY2.js +81 -0
- package/dist/web-6JMWERTT.js +141 -0
- package/dist/web-6JMWERTT.js.map +1 -0
- package/dist/winning-ads-XCVUAIOU.js +86 -0
- package/dist/write-commands-N74CDMQM.js +1493 -0
- package/dist/write-commands-N74CDMQM.js.map +1 -0
- package/dist/x-SI4KYDEY.js +47 -0
- package/package.json +1 -1
- package/dist/account-UHNR5KTE.js +0 -79
- package/dist/account-UHNR5KTE.js.map +0 -1
- package/dist/accounts-KMLXHADA.js +0 -77
- package/dist/accounts-KMLXHADA.js.map +0 -1
- package/dist/accounts-QDGNTSTV.js +0 -611
- package/dist/accounts-QDGNTSTV.js.map +0 -1
- package/dist/actions-QL5UD2W4.js +0 -55
- package/dist/activecampaign-5OD45ROS.js +0 -935
- package/dist/activecampaign-5OD45ROS.js.map +0 -1
- package/dist/add-2F7BEVYD.js +0 -105
- package/dist/add-2F7BEVYD.js.map +0 -1
- package/dist/add-6K6LO7CM.js +0 -104
- package/dist/add-6K6LO7CM.js.map +0 -1
- package/dist/add-LYDJZDGO.js +0 -302
- package/dist/add-LYDJZDGO.js.map +0 -1
- package/dist/ads-DHPJFU52.js +0 -40
- package/dist/advertisers-23LU7GTV.js +0 -120
- package/dist/advertisers-23LU7GTV.js.map +0 -1
- package/dist/analytics-HO2SLL4W.js +0 -433
- package/dist/analytics-HO2SLL4W.js.map +0 -1
- package/dist/analytics-LD3D7ISK.js +0 -1976
- package/dist/analytics-LD3D7ISK.js.map +0 -1
- package/dist/assign-CLKJKH2B.js +0 -77
- package/dist/assign-CLKJKH2B.js.map +0 -1
- package/dist/audience-size-NNYYXODL.js +0 -73
- package/dist/audience-size-NNYYXODL.js.map +0 -1
- package/dist/audit-KB4P2XGS.js +0 -151
- package/dist/audit-KB4P2XGS.js.map +0 -1
- package/dist/autocomplete-VZD2SMTE.js +0 -111
- package/dist/autocomplete-VZD2SMTE.js.map +0 -1
- package/dist/avatars-FKOO6VZ2.js +0 -38
- package/dist/bid-pricing-6LLXOLLI.js +0 -100
- package/dist/bid-pricing-6LLXOLLI.js.map +0 -1
- package/dist/brand-NNWHBIAX.js +0 -22
- package/dist/brief-CPJQWT6W.js +0 -538
- package/dist/brief-CPJQWT6W.js.map +0 -1
- package/dist/campaign-groups-YPYNXOWU.js +0 -95
- package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
- package/dist/campaign-writes-UJ4L2O6G.js +0 -165
- package/dist/campaign-writes-UJ4L2O6G.js.map +0 -1
- package/dist/campaigns-HLBZRH5A.js +0 -107
- package/dist/campaigns-N44ZDGB5.js +0 -109
- package/dist/campaigns-N44ZDGB5.js.map +0 -1
- package/dist/canvas-D64GLWUO.js +0 -46
- package/dist/capabilities-LWXCWMIY.js +0 -144
- package/dist/capabilities-LWXCWMIY.js.map +0 -1
- package/dist/chatgpt-YI6YNACI.js +0 -47
- package/dist/chats-7WGC2CVW.js +0 -276
- package/dist/chats-7WGC2CVW.js.map +0 -1
- package/dist/check-EH6BXWWL.js +0 -104
- package/dist/check-EH6BXWWL.js.map +0 -1
- package/dist/chunk-2B772ZEA.js +0 -169
- package/dist/chunk-2KRK667G.js +0 -51
- package/dist/chunk-2TVXJPGR.js +0 -103
- package/dist/chunk-3AMLOCXY.js +0 -392
- package/dist/chunk-3B5LPK6D.js +0 -658
- package/dist/chunk-3B5LPK6D.js.map +0 -1
- package/dist/chunk-3N5A44NQ.js +0 -122
- package/dist/chunk-3WAYZQNV.js +0 -61
- package/dist/chunk-5A257KJA.js +0 -160
- package/dist/chunk-6QGS3RQP.js +0 -363
- package/dist/chunk-AFD32O4A.js +0 -494
- package/dist/chunk-AW2GKIGS.js +0 -433
- package/dist/chunk-CYSBNCPX.js +0 -55
- package/dist/chunk-CYSBNCPX.js.map +0 -1
- package/dist/chunk-DAO63OOP.js +0 -6352
- package/dist/chunk-DAO63OOP.js.map +0 -1
- package/dist/chunk-EMQUW6JB.js +0 -942
- package/dist/chunk-EW3JEKIV.js +0 -139
- package/dist/chunk-FBFWMTOP.js +0 -19
- package/dist/chunk-GXDLWBOY.js +0 -73
- package/dist/chunk-GXDLWBOY.js.map +0 -1
- package/dist/chunk-GXGYTFZA.js +0 -8939
- package/dist/chunk-I7J7YQXZ.js +0 -142
- package/dist/chunk-IBY44U2M.js +0 -1079
- package/dist/chunk-IFXGCI33.js +0 -297
- package/dist/chunk-IKLHXGMF.js +0 -91
- package/dist/chunk-IYTPWAN3.js +0 -604
- package/dist/chunk-J3CWAERS.js +0 -3868
- package/dist/chunk-JH2L5CQD.js +0 -206
- package/dist/chunk-JUVVCA7B.js +0 -97
- package/dist/chunk-MK6XJUCQ.js +0 -197
- package/dist/chunk-N3I6ZXR7.js +0 -66
- package/dist/chunk-NBO2NSAW.js +0 -592
- package/dist/chunk-NEU5QD2C.js +0 -249
- package/dist/chunk-NKIBXOHT.js +0 -344
- package/dist/chunk-OE3MIV4F.js +0 -547
- package/dist/chunk-P2MFWJR3.js +0 -903
- package/dist/chunk-PHCIFBP3.js +0 -89
- package/dist/chunk-PTUXBO5O.js +0 -224
- package/dist/chunk-Q3LXLWZY.js +0 -275
- package/dist/chunk-Q5WBTVA7.js +0 -455
- package/dist/chunk-RDEAVCMF.js +0 -399
- package/dist/chunk-RDEAVCMF.js.map +0 -1
- package/dist/chunk-RGMKXNQP.js +0 -23
- package/dist/chunk-RZTKCCUL.js +0 -831
- package/dist/chunk-TTKBNBQF.js +0 -156
- package/dist/chunk-VB3XUR6A.js +0 -207
- package/dist/chunk-XCKINS7K.js +0 -57
- package/dist/chunk-Y6GKV7CU.js +0 -346
- package/dist/chunk-Y6GKV7CU.js.map +0 -1
- package/dist/chunk-Z2GQREJY.js +0 -159
- package/dist/chunk-ZDAVSTEE.js +0 -172
- package/dist/chunk-ZXCSOVS5.js +0 -191
- package/dist/claim-SVDCQ2AI.js +0 -197
- package/dist/claim-SVDCQ2AI.js.map +0 -1
- package/dist/companies-BYMYQK6A.js +0 -195
- package/dist/companies-BYMYQK6A.js.map +0 -1
- package/dist/complete-NEH3MWRI.js +0 -81
- package/dist/complete-NEH3MWRI.js.map +0 -1
- package/dist/connect-5PGL7ZOM.js +0 -42
- package/dist/conversation-CSOKJXDW.js +0 -93
- package/dist/conversation-CSOKJXDW.js.map +0 -1
- package/dist/conversions-4JOTTFEH.js +0 -135
- package/dist/conversions-4JOTTFEH.js.map +0 -1
- package/dist/create-2XYMBULY.js +0 -207
- package/dist/create-2XYMBULY.js.map +0 -1
- package/dist/create-56PTZABQ.js +0 -235
- package/dist/create-56PTZABQ.js.map +0 -1
- package/dist/create-D6S6TGWY.js +0 -59
- package/dist/create-D6S6TGWY.js.map +0 -1
- package/dist/create-SMW4O5PC.js +0 -132
- package/dist/create-SMW4O5PC.js.map +0 -1
- package/dist/creatives-OO76DAFS.js +0 -58
- package/dist/creatives-VJUYWJL6.js +0 -182
- package/dist/creatives-VJUYWJL6.js.map +0 -1
- package/dist/credentials-2ONYUJW6.js +0 -287
- package/dist/credentials-2ONYUJW6.js.map +0 -1
- package/dist/critique-NDDFSGPE.js +0 -1458
- package/dist/critique-NDDFSGPE.js.map +0 -1
- package/dist/critique-YXZVMLZ4.js +0 -227
- package/dist/critique-YXZVMLZ4.js.map +0 -1
- package/dist/crm-Q6CEP5XV.js +0 -224
- package/dist/crm-Q6CEP5XV.js.map +0 -1
- package/dist/crm-WRONZYDH.js +0 -318
- package/dist/crm-WRONZYDH.js.map +0 -1
- package/dist/customers-2EFYSCU2.js +0 -56
- package/dist/delete-7WEVC3FS.js +0 -66
- package/dist/delete-7WEVC3FS.js.map +0 -1
- package/dist/delete-RBWK255M.js +0 -54
- package/dist/delete-RBWK255M.js.map +0 -1
- package/dist/delete-VN4WWMQF.js +0 -64
- package/dist/delete-VN4WWMQF.js.map +0 -1
- package/dist/demographics-I5XZ435C.js +0 -138
- package/dist/demographics-I5XZ435C.js.map +0 -1
- package/dist/discard-XJLIXTNM.js +0 -66
- package/dist/discard-XJLIXTNM.js.map +0 -1
- package/dist/domain-M7AEGAYI.js +0 -98
- package/dist/domain-M7AEGAYI.js.map +0 -1
- package/dist/draft-5DQI4W5F.js +0 -306
- package/dist/draft-5DQI4W5F.js.map +0 -1
- package/dist/draft-7IIYHSY2.js +0 -332
- package/dist/draft-7IIYHSY2.js.map +0 -1
- package/dist/draft-CN6GKVBF.js +0 -217
- package/dist/draft-CN6GKVBF.js.map +0 -1
- package/dist/experiment-IDDWRCJ7.js +0 -1397
- package/dist/facets-ZLZ6LIHN.js +0 -114
- package/dist/facets-ZLZ6LIHN.js.map +0 -1
- package/dist/feedback-7LEX2P5Q.js +0 -106
- package/dist/feedback-7LEX2P5Q.js.map +0 -1
- package/dist/feedback-record-P4JJ63KA.js +0 -260
- package/dist/feedback-record-P4JJ63KA.js.map +0 -1
- package/dist/fetch-MIVCEHXZ.js +0 -176
- package/dist/fetch-MIVCEHXZ.js.map +0 -1
- package/dist/find-VHN34MWL.js +0 -134
- package/dist/fit-SS6HSZPU.js +0 -62
- package/dist/flows-UTIIHDNE.js +0 -247
- package/dist/flows-UTIIHDNE.js.map +0 -1
- package/dist/fonts-YPNN7ZJP.js +0 -36
- package/dist/forecast-OBSHG2GJ.js +0 -118
- package/dist/forecast-OBSHG2GJ.js.map +0 -1
- package/dist/funnel-A4MXQYBA.js +0 -394
- package/dist/funnel-A4MXQYBA.js.map +0 -1
- package/dist/ga4-ZPAEF2G2.js +0 -55
- package/dist/get-MDAO6I7T.js +0 -56
- package/dist/get-MDAO6I7T.js.map +0 -1
- package/dist/get-ZB553BSH.js +0 -79
- package/dist/get-ZB553BSH.js.map +0 -1
- package/dist/google-C3X7O2UO.js +0 -136
- package/dist/google-ads-FTWL772L.js +0 -195
- package/dist/google-ads-FTWL772L.js.map +0 -1
- package/dist/gsc-SDDHGTZK.js +0 -30
- package/dist/history-WKJYKDMG.js +0 -133
- package/dist/history-WKJYKDMG.js.map +0 -1
- package/dist/hubspot-EPHVEPOO.js +0 -779
- package/dist/hubspot-EPHVEPOO.js.map +0 -1
- package/dist/icon-MYPDC6FM.js +0 -137
- package/dist/ideas-3PBH7VEX.js +0 -40
- package/dist/images-J35C3WG4.js +0 -92
- package/dist/ingest-5QOPUKFE.js +0 -107
- package/dist/ingest-5QOPUKFE.js.map +0 -1
- package/dist/ingest-OKUYP632.js +0 -23
- package/dist/inspect-PMNCP6MV.js +0 -189
- package/dist/inspect-PMNCP6MV.js.map +0 -1
- package/dist/inspiration-QAL7NS7G.js +0 -53
- package/dist/keyword-metrics-R752SJIT.js +0 -197
- package/dist/keyword-metrics-R752SJIT.js.map +0 -1
- package/dist/keywords-for-site-7UWPJYQF.js +0 -128
- package/dist/keywords-for-site-7UWPJYQF.js.map +0 -1
- package/dist/landing-CBVIOGJ5.js +0 -28
- package/dist/leads-LIJS6Y5W.js +0 -90
- package/dist/leads-LIJS6Y5W.js.map +0 -1
- package/dist/learn-N6QV7GXA.js +0 -204
- package/dist/learn-N6QV7GXA.js.map +0 -1
- package/dist/line-item-writes-3WPJXKIL.js +0 -208
- package/dist/line-item-writes-3WPJXKIL.js.map +0 -1
- package/dist/line-items-ZOFKOGAA.js +0 -103
- package/dist/link-DDRQKOUL.js +0 -64
- package/dist/link-DDRQKOUL.js.map +0 -1
- package/dist/linkedin-UWZCF66X.js +0 -1057
- package/dist/linkedin-UWZCF66X.js.map +0 -1
- package/dist/list-5PLXVPLB.js +0 -151
- package/dist/list-5PLXVPLB.js.map +0 -1
- package/dist/list-RC2NX6AX.js +0 -50
- package/dist/list-VSJISE7U.js +0 -303
- package/dist/list-VSJISE7U.js.map +0 -1
- package/dist/list-WTVOBQYX.js +0 -64
- package/dist/list-WTVOBQYX.js.map +0 -1
- package/dist/log-YKKPROLZ.js +0 -92
- package/dist/log-YKKPROLZ.js.map +0 -1
- package/dist/logo-WE2UELX6.js +0 -18
- package/dist/make-RNOWBLZQ.js +0 -1353
- package/dist/make-RNOWBLZQ.js.map +0 -1
- package/dist/map-WTDPQLVO.js +0 -433
- package/dist/map-WTDPQLVO.js.map +0 -1
- package/dist/mcp-XJNSCPP3.js +0 -714
- package/dist/mcp-XJNSCPP3.js.map +0 -1
- package/dist/media-sources-JGBDDXZ5.js +0 -32
- package/dist/media-sources-JGBDDXZ5.js.map +0 -1
- package/dist/members-O3BTMRXX.js +0 -44
- package/dist/members-O3BTMRXX.js.map +0 -1
- package/dist/normalize-R5AYLA2J.js +0 -141
- package/dist/normalize-R5AYLA2J.js.map +0 -1
- package/dist/options-AILRY7JY.js +0 -122
- package/dist/options-AILRY7JY.js.map +0 -1
- package/dist/organization-KJJXZLVK.js +0 -946
- package/dist/organization-KJJXZLVK.js.map +0 -1
- package/dist/performance-7YU4HOGH.js +0 -24
- package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
- package/dist/promoted-tweet-writes-TNELWPVG.js.map +0 -1
- package/dist/promoted-tweets-76WKUFJQ.js +0 -119
- package/dist/publish-BKLHCKHB.js +0 -341
- package/dist/publish-BKLHCKHB.js.map +0 -1
- package/dist/reddit-YK3YUZEI.js +0 -26
- package/dist/refresh-WIII7KXB.js +0 -94
- package/dist/refresh-WIII7KXB.js.map +0 -1
- package/dist/release-ZHXYQI7G.js +0 -60
- package/dist/release-ZHXYQI7G.js.map +0 -1
- package/dist/remove-NOX4BXWK.js +0 -50
- package/dist/remove-NOX4BXWK.js.map +0 -1
- package/dist/remove-VLWRCOEZ.js +0 -48
- package/dist/remove-VLWRCOEZ.js.map +0 -1
- package/dist/reopen-NLWKK5HB.js +0 -63
- package/dist/reopen-NLWKK5HB.js.map +0 -1
- package/dist/rerun-DZWQNMZQ.js +0 -90
- package/dist/rerun-DZWQNMZQ.js.map +0 -1
- package/dist/research-Q3P76RHN.js +0 -62
- package/dist/research-UDZBCDNX.js +0 -262
- package/dist/research-UDZBCDNX.js.map +0 -1
- package/dist/reset-5UHFX7QY.js +0 -54
- package/dist/reset-5UHFX7QY.js.map +0 -1
- package/dist/reset-MTRJQUP7.js +0 -54
- package/dist/reset-MTRJQUP7.js.map +0 -1
- package/dist/resolve-DA72VT7Q.js +0 -121
- package/dist/resolve-DA72VT7Q.js.map +0 -1
- package/dist/retry-LQUBX5TK.js +0 -62
- package/dist/retry-LQUBX5TK.js.map +0 -1
- package/dist/retry-U6F4CS6O.js +0 -60
- package/dist/retry-U6F4CS6O.js.map +0 -1
- package/dist/rules-VS5PZ7VO.js +0 -96
- package/dist/rules-VS5PZ7VO.js.map +0 -1
- package/dist/rules-add-LMVZYDXE.js +0 -462
- package/dist/rules-add-LMVZYDXE.js.map +0 -1
- package/dist/run-6PRA2YSD.js +0 -65
- package/dist/run-R6COFNOR.js +0 -66
- package/dist/run-R6COFNOR.js.map +0 -1
- package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
- package/dist/scaffold-ad-3OVJ7VZQ.js.map +0 -1
- package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
- package/dist/scaffold-static-ad-DDRA3Q5I.js.map +0 -1
- package/dist/scaffold-video-3JZYFYFU.js +0 -883
- package/dist/scaffold-video-3JZYFYFU.js.map +0 -1
- package/dist/schedule-BRSYHMKR.js +0 -66
- package/dist/schedule-BRSYHMKR.js.map +0 -1
- package/dist/schedule-ED2YDUPY.js +0 -61
- package/dist/schedule-ED2YDUPY.js.map +0 -1
- package/dist/scheduled-agents-5P67MVGX.js +0 -50
- package/dist/schema-4XVKERSA.js +0 -132
- package/dist/schema-4XVKERSA.js.map +0 -1
- package/dist/schema-RRAQW3OS.js +0 -69
- package/dist/search-Y2UMIQ57.js +0 -174
- package/dist/search-Y2UMIQ57.js.map +0 -1
- package/dist/select-OZ4E6VLF.js +0 -101
- package/dist/select-OZ4E6VLF.js.map +0 -1
- package/dist/set-prompt-O4YAE4CE.js +0 -193
- package/dist/set-prompt-O4YAE4CE.js.map +0 -1
- package/dist/setup-links-2GJYCV2A.js +0 -141
- package/dist/setup-links-2GJYCV2A.js.map +0 -1
- package/dist/site-47B6V2UX.js +0 -177
- package/dist/site-47B6V2UX.js.map +0 -1
- package/dist/sources-DXPZAPQ7.js +0 -454
- package/dist/sources-DXPZAPQ7.js.map +0 -1
- package/dist/sources-NDXYTASG.js +0 -30
- package/dist/stale-VLVBO2L6.js +0 -71
- package/dist/stale-VLVBO2L6.js.map +0 -1
- package/dist/stats-37OFAMPW.js +0 -34
- package/dist/status-4ODD46XY.js +0 -62
- package/dist/status-4ODD46XY.js.map +0 -1
- package/dist/stock-6R5E7MJX.js +0 -179
- package/dist/studio-LEIGL3Q7.js +0 -49
- package/dist/sync-EKGEWE53.js +0 -54
- package/dist/sync-EKGEWE53.js.map +0 -1
- package/dist/sync-TKNVBUDM.js +0 -54
- package/dist/sync-TKNVBUDM.js.map +0 -1
- package/dist/sync-definition-M5R3H3TP.js +0 -64
- package/dist/tag-manager-3Q55PBEW.js +0 -43
- package/dist/tags-4N5UUUN6.js +0 -26
- package/dist/tags-5NHIAD5A.js +0 -20
- package/dist/tags-5NHIAD5A.js.map +0 -1
- package/dist/tags-UUKWSWCN.js +0 -20
- package/dist/tags-UUKWSWCN.js.map +0 -1
- package/dist/tags-VK7B5DJF.js +0 -20
- package/dist/tags-VK7B5DJF.js.map +0 -1
- package/dist/tags-XAHIB3WA.js +0 -224
- package/dist/tags-XAHIB3WA.js.map +0 -1
- package/dist/targeting-criteria-AVARWV2G.js +0 -113
- package/dist/targets-6RYLQRID.js +0 -103
- package/dist/targets-6RYLQRID.js.map +0 -1
- package/dist/testimonials-6TF6BOFN.js +0 -32
- package/dist/top-companies-45EHRCJD.js +0 -108
- package/dist/top-companies-45EHRCJD.js.map +0 -1
- package/dist/translate-VHLBACCE.js +0 -604
- package/dist/translate-VHLBACCE.js.map +0 -1
- package/dist/triggers-ERQONJNO.js +0 -142
- package/dist/triggers-ERQONJNO.js.map +0 -1
- package/dist/unlink-TPDO6JNF.js +0 -67
- package/dist/unlink-TPDO6JNF.js.map +0 -1
- package/dist/unstage-YKKQQ7LW.js +0 -85
- package/dist/unstage-YKKQQ7LW.js.map +0 -1
- package/dist/update-43WU6X7R.js +0 -63
- package/dist/update-43WU6X7R.js.map +0 -1
- package/dist/update-CAHLAXWO.js +0 -98
- package/dist/update-CAHLAXWO.js.map +0 -1
- package/dist/update-NGH6YADN.js +0 -152
- package/dist/update-NGH6YADN.js.map +0 -1
- package/dist/update-SPJIHHLE.js +0 -188
- package/dist/update-SPJIHHLE.js.map +0 -1
- package/dist/upload-ACESIZIZ.js +0 -126
- package/dist/upload-ACESIZIZ.js.map +0 -1
- package/dist/url-params-MIXEDBF7.js +0 -98
- package/dist/url-params-MIXEDBF7.js.map +0 -1
- package/dist/validate-XJJA7ULE.js +0 -117
- package/dist/validate-XJJA7ULE.js.map +0 -1
- package/dist/videos-LBXPG7WC.js +0 -39
- package/dist/viewer-check-7VJ3GUZX.js +0 -80
- package/dist/web-EWQJC2SD.js +0 -140
- package/dist/web-EWQJC2SD.js.map +0 -1
- package/dist/winning-ads-SAOJAKEQ.js +0 -86
- package/dist/write-commands-QPDE4GWW.js +0 -1024
- package/dist/write-commands-QPDE4GWW.js.map +0 -1
- package/dist/x-LXOJPCRF.js +0 -47
- /package/dist/{actions-QL5UD2W4.js.map → actions-FMNJSOBA.js.map} +0 -0
- /package/dist/{ads-DHPJFU52.js.map → ads-OLXSDPD6.js.map} +0 -0
- /package/dist/{avatars-FKOO6VZ2.js.map → avatars-I4H3NMEJ.js.map} +0 -0
- /package/dist/{brand-NNWHBIAX.js.map → brand-3V7ECY7D.js.map} +0 -0
- /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-MCB76NPQ.js.map} +0 -0
- /package/dist/{canvas-D64GLWUO.js.map → canvas-JCNKMGCG.js.map} +0 -0
- /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-XFZ42NXC.js.map} +0 -0
- /package/dist/{chunk-VB3XUR6A.js.map → chunk-2YTBPRRG.js.map} +0 -0
- /package/dist/{chunk-JUVVCA7B.js.map → chunk-3SNCMEJB.js.map} +0 -0
- /package/dist/{chunk-RGMKXNQP.js.map → chunk-7QGFO35A.js.map} +0 -0
- /package/dist/{chunk-ZXCSOVS5.js.map → chunk-AV7ALENU.js.map} +0 -0
- /package/dist/{chunk-IYTPWAN3.js.map → chunk-BRLFQ4VX.js.map} +0 -0
- /package/dist/{chunk-RZTKCCUL.js.map → chunk-DJE7UXYT.js.map} +0 -0
- /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
- /package/dist/{chunk-J3CWAERS.js.map → chunk-EONSZAZB.js.map} +0 -0
- /package/dist/{chunk-PHCIFBP3.js.map → chunk-FG3MV2XM.js.map} +0 -0
- /package/dist/{chunk-3AMLOCXY.js.map → chunk-FKG476GH.js.map} +0 -0
- /package/dist/{chunk-IFXGCI33.js.map → chunk-FUGQSIYG.js.map} +0 -0
- /package/dist/{chunk-Q3LXLWZY.js.map → chunk-HPLHAHG5.js.map} +0 -0
- /package/dist/{chunk-3N5A44NQ.js.map → chunk-I24YT2KG.js.map} +0 -0
- /package/dist/{chunk-P2MFWJR3.js.map → chunk-IFDZZOUC.js.map} +0 -0
- /package/dist/{chunk-Q5WBTVA7.js.map → chunk-JVVUI55M.js.map} +0 -0
- /package/dist/{chunk-6QGS3RQP.js.map → chunk-KKSHEPBY.js.map} +0 -0
- /package/dist/{chunk-OE3MIV4F.js.map → chunk-KQ7RCLGC.js.map} +0 -0
- /package/dist/{chunk-ZDAVSTEE.js.map → chunk-L7WMS5PW.js.map} +0 -0
- /package/dist/{chunk-FBFWMTOP.js.map → chunk-LBRO4MTL.js.map} +0 -0
- /package/dist/{chunk-PTUXBO5O.js.map → chunk-LNRPOULW.js.map} +0 -0
- /package/dist/{chunk-EMQUW6JB.js.map → chunk-LX6WC2XZ.js.map} +0 -0
- /package/dist/{chunk-I7J7YQXZ.js.map → chunk-MMGTJBM6.js.map} +0 -0
- /package/dist/{chunk-2KRK667G.js.map → chunk-OEZYSL3U.js.map} +0 -0
- /package/dist/{chunk-2TVXJPGR.js.map → chunk-OOVHBMQB.js.map} +0 -0
- /package/dist/{chunk-Z2GQREJY.js.map → chunk-PTH7VWKK.js.map} +0 -0
- /package/dist/{chunk-N3I6ZXR7.js.map → chunk-QZF4BVKL.js.map} +0 -0
- /package/dist/{chunk-3WAYZQNV.js.map → chunk-RITUSBYO.js.map} +0 -0
- /package/dist/{chunk-JH2L5CQD.js.map → chunk-SSTL3A7Z.js.map} +0 -0
- /package/dist/{chunk-2B772ZEA.js.map → chunk-TD4SO6TR.js.map} +0 -0
- /package/dist/{chunk-IKLHXGMF.js.map → chunk-UZ4RTOFG.js.map} +0 -0
- /package/dist/{chunk-NBO2NSAW.js.map → chunk-VAX7PFQV.js.map} +0 -0
- /package/dist/{chunk-AFD32O4A.js.map → chunk-VDRSZK4P.js.map} +0 -0
- /package/dist/{chunk-NKIBXOHT.js.map → chunk-VNU2EYD4.js.map} +0 -0
- /package/dist/{chunk-TTKBNBQF.js.map → chunk-WT4WDIXA.js.map} +0 -0
- /package/dist/{chunk-5A257KJA.js.map → chunk-XEX23CIB.js.map} +0 -0
- /package/dist/{chunk-GXGYTFZA.js.map → chunk-XXDF25BW.js.map} +0 -0
- /package/dist/{chunk-NEU5QD2C.js.map → chunk-YJ3LSFMX.js.map} +0 -0
- /package/dist/{chunk-MK6XJUCQ.js.map → chunk-YVK5RT3B.js.map} +0 -0
- /package/dist/{chunk-AW2GKIGS.js.map → chunk-YWWRLZUR.js.map} +0 -0
- /package/dist/{chunk-XCKINS7K.js.map → chunk-Z4S5BCVZ.js.map} +0 -0
- /package/dist/{chunk-IBY44U2M.js.map → chunk-ZYGK7GAK.js.map} +0 -0
- /package/dist/{connect-5PGL7ZOM.js.map → connect-COS6G45S.js.map} +0 -0
- /package/dist/{creatives-OO76DAFS.js.map → creatives-SEQHJD2M.js.map} +0 -0
- /package/dist/{customers-2EFYSCU2.js.map → customers-LMSX33FO.js.map} +0 -0
- /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
- /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
- /package/dist/{fit-SS6HSZPU.js.map → fit-W7UNFZT5.js.map} +0 -0
- /package/dist/{fonts-YPNN7ZJP.js.map → fonts-N42UYWTX.js.map} +0 -0
- /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
- /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
- /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
- /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
- /package/dist/{ideas-3PBH7VEX.js.map → ideas-DYN2DMFN.js.map} +0 -0
- /package/dist/{images-J35C3WG4.js.map → images-EQCUXEHF.js.map} +0 -0
- /package/dist/{ingest-OKUYP632.js.map → ingest-B46AY3QU.js.map} +0 -0
- /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
- /package/dist/{landing-CBVIOGJ5.js.map → landing-WVPA7NBR.js.map} +0 -0
- /package/dist/{line-items-ZOFKOGAA.js.map → line-items-OEWYOPFP.js.map} +0 -0
- /package/dist/{list-RC2NX6AX.js.map → list-WRBWQASJ.js.map} +0 -0
- /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
- /package/dist/{performance-7YU4HOGH.js.map → performance-HTU5FR2K.js.map} +0 -0
- /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-TTWN5OMW.js.map} +0 -0
- /package/dist/{reddit-YK3YUZEI.js.map → reddit-6C3PT5CT.js.map} +0 -0
- /package/dist/{research-Q3P76RHN.js.map → research-YCMMQVK6.js.map} +0 -0
- /package/dist/{run-6PRA2YSD.js.map → run-SR7DJ7M5.js.map} +0 -0
- /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-N63EZNY6.js.map} +0 -0
- /package/dist/{schema-RRAQW3OS.js.map → schema-C6SGBNA6.js.map} +0 -0
- /package/dist/{sources-NDXYTASG.js.map → sources-HN3GCEDX.js.map} +0 -0
- /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
- /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
- /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ6WQ7OE.js.map} +0 -0
- /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-CKEUYKWN.js.map} +0 -0
- /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
- /package/dist/{tags-4N5UUUN6.js.map → tags-EUOOSAKN.js.map} +0 -0
- /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-HE7K52WN.js.map} +0 -0
- /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-3Q5XM7JD.js.map} +0 -0
- /package/dist/{videos-LBXPG7WC.js.map → videos-WAPUPJVT.js.map} +0 -0
- /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-GHQA3UY2.js.map} +0 -0
- /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-XCVUAIOU.js.map} +0 -0
- /package/dist/{x-LXOJPCRF.js.map → x-SI4KYDEY.js.map} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readCreativeSpecs,
|
|
3
|
+
rulesHints,
|
|
4
|
+
rulesView,
|
|
5
|
+
waiverCounts
|
|
6
|
+
} from "./chunk-QVQKCVP7.js";
|
|
7
|
+
import {
|
|
8
|
+
readAllRules
|
|
9
|
+
} from "./chunk-VNU2EYD4.js";
|
|
10
|
+
import "./chunk-Y46FE75E.js";
|
|
11
|
+
import "./chunk-3S274625.js";
|
|
12
|
+
import "./chunk-UFKO626N.js";
|
|
13
|
+
import {
|
|
14
|
+
findWorkspaceRoot
|
|
15
|
+
} from "./chunk-XRIM7NYV.js";
|
|
16
|
+
import {
|
|
17
|
+
selectRules
|
|
18
|
+
} from "./chunk-S4VLLGTW.js";
|
|
19
|
+
import "./chunk-MCJ5I5LR.js";
|
|
20
|
+
import "./chunk-U7YR5CZL.js";
|
|
21
|
+
import "./chunk-VI5YQQ63.js";
|
|
22
|
+
import "./chunk-JX7BX2NB.js";
|
|
23
|
+
import "./chunk-O37VU7FG.js";
|
|
24
|
+
import "./chunk-CAZGM2NX.js";
|
|
25
|
+
import "./chunk-NZS3KEQ2.js";
|
|
26
|
+
import "./chunk-GIWHHCD6.js";
|
|
27
|
+
import "./chunk-XQIOCIDO.js";
|
|
28
|
+
import "./chunk-WTJSMYY2.js";
|
|
29
|
+
import "./chunk-6YLNY6CK.js";
|
|
30
|
+
import "./chunk-D5NEIESR.js";
|
|
31
|
+
import "./chunk-57KKVDDR.js";
|
|
32
|
+
import {
|
|
33
|
+
registerSchema,
|
|
34
|
+
writeJson
|
|
35
|
+
} from "./chunk-QANGHND7.js";
|
|
36
|
+
import "./chunk-YQSBHWOI.js";
|
|
37
|
+
|
|
38
|
+
// src/commands/creatives/rules.ts
|
|
39
|
+
import { defineCommand } from "citty";
|
|
40
|
+
var LIST_DESCRIPTION = `The company's standing rules for every ad: the brand's own (BRAND.md) and the ones a person taught, each with its id, strength (never | must | prefer), what it is about, its words, the person's own words and where it came from. \`baker creatives brief\` carries them too.
|
|
41
|
+
Start here: baker creatives rules list
|
|
42
|
+
baker creatives rules list --kind video --product cubbo-engage # the rules one ad is held to
|
|
43
|
+
baker creatives rules list --all # retired ones and every scope too`;
|
|
44
|
+
var LIST_ARGS = {
|
|
45
|
+
kind: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "static | video: only the rules an ad of this kind is held to",
|
|
48
|
+
required: false
|
|
49
|
+
},
|
|
50
|
+
product: {
|
|
51
|
+
type: "string",
|
|
52
|
+
description: "A product slug (src/content/products/<slug>.md): only the rules an ad of it is held to",
|
|
53
|
+
required: false
|
|
54
|
+
},
|
|
55
|
+
all: {
|
|
56
|
+
type: "boolean",
|
|
57
|
+
description: "Every rule, retired ones and every scope included",
|
|
58
|
+
required: false,
|
|
59
|
+
default: false
|
|
60
|
+
},
|
|
61
|
+
full: { type: "boolean", description: "Each rule and the person's words whole", required: false, default: false }
|
|
62
|
+
};
|
|
63
|
+
registerSchema({ command: "creatives.rules.list", description: LIST_DESCRIPTION, args: LIST_ARGS });
|
|
64
|
+
var listCommand = defineCommand({
|
|
65
|
+
meta: { name: "list", description: LIST_DESCRIPTION },
|
|
66
|
+
args: LIST_ARGS,
|
|
67
|
+
async run({ args }) {
|
|
68
|
+
const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
|
|
69
|
+
const kind = args.kind === "static" || args.kind === "video" ? args.kind : void 0;
|
|
70
|
+
const product = typeof args.product === "string" && args.product ? args.product : void 0;
|
|
71
|
+
const [rules, specs] = await Promise.all([readAllRules(root), readCreativeSpecs(root)]);
|
|
72
|
+
const active = selectRules(rules, { ...kind ? { kind } : {}, ...product ? { product } : {} });
|
|
73
|
+
const shown = args.all === true ? rules : active;
|
|
74
|
+
const hints = rulesHints(active, waiverCounts(specs));
|
|
75
|
+
writeJson({
|
|
76
|
+
ok: true,
|
|
77
|
+
data: { rules: rulesView(shown, { full: args.full === true }), active: active.length, total: rules.length },
|
|
78
|
+
...hints.length > 0 ? { hints } : {}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
var rulesCommand = defineCommand({
|
|
83
|
+
meta: {
|
|
84
|
+
name: "rules",
|
|
85
|
+
description: "The company's standing rules for every ad: list them, add one the person agreed to, retire one."
|
|
86
|
+
},
|
|
87
|
+
subCommands: {
|
|
88
|
+
list: listCommand,
|
|
89
|
+
add: () => import("./rules-add-VG7AT6EG.js").then((m) => m.rulesAddCommand),
|
|
90
|
+
retire: () => import("./rules-add-VG7AT6EG.js").then((m) => m.rulesRetireCommand)
|
|
91
|
+
},
|
|
92
|
+
default: "list"
|
|
93
|
+
});
|
|
94
|
+
export {
|
|
95
|
+
rulesCommand
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=rules-VK7YA23Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/creatives/rules.ts"],"sourcesContent":["/**\n * `baker creatives rules`: the company's standing rules for every ad. The brand's own come from\n * BRAND.md; the learned ones are what a person taught in a chat, saved only after they said yes,\n * one file each in src/content/creative-rules/. Every ad is made and checked against them.\n */\nimport { defineCommand } from \"citty\";\nimport { readAllRules } from \"../../engine/creative-context/index.ts\";\nimport { selectRules } from \"../../engine/creative-rules/select.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { findWorkspaceRoot } from \"../canvas/normalize-paths.ts\";\nimport { readCreativeSpecs, rulesHints, rulesView, waiverCounts } from \"./rules-view.ts\";\n\nconst LIST_DESCRIPTION = `The company's standing rules for every ad: the brand's own (BRAND.md) and the ones a person taught, each with its id, strength (never | must | prefer), what it is about, its words, the person's own words and where it came from. \\`baker creatives brief\\` carries them too.\nStart here: baker creatives rules list\n baker creatives rules list --kind video --product cubbo-engage # the rules one ad is held to\n baker creatives rules list --all # retired ones and every scope too`;\n\nconst LIST_ARGS = {\n kind: {\n type: \"string\",\n description: \"static | video: only the rules an ad of this kind is held to\",\n required: false,\n },\n product: {\n type: \"string\",\n description: \"A product slug (src/content/products/<slug>.md): only the rules an ad of it is held to\",\n required: false,\n },\n all: {\n type: \"boolean\",\n description: \"Every rule, retired ones and every scope included\",\n required: false,\n default: false,\n },\n full: { type: \"boolean\", description: \"Each rule and the person's words whole\", required: false, default: false },\n} as const;\n\nregisterSchema({ command: \"creatives.rules.list\", description: LIST_DESCRIPTION, args: LIST_ARGS });\n\nconst listCommand = defineCommand({\n meta: { name: \"list\", description: LIST_DESCRIPTION },\n args: LIST_ARGS,\n async run({ args }) {\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const kind = args.kind === \"static\" || args.kind === \"video\" ? args.kind : undefined;\n const product = typeof args.product === \"string\" && args.product ? args.product : undefined;\n const [rules, specs] = await Promise.all([readAllRules(root), readCreativeSpecs(root)]);\n const active = selectRules(rules, { ...(kind ? { kind } : {}), ...(product ? { product } : {}) });\n const shown = args.all === true ? rules : active;\n const hints = rulesHints(active, waiverCounts(specs));\n writeJson({\n ok: true,\n data: { rules: rulesView(shown, { full: args.full === true }), active: active.length, total: rules.length },\n ...(hints.length > 0 ? { hints } : {}),\n });\n },\n});\n\nexport const rulesCommand = defineCommand({\n meta: {\n name: \"rules\",\n description: \"The company's standing rules for every ad: list them, add one the person agreed to, retire one.\",\n },\n subCommands: {\n list: listCommand,\n add: () => import(\"./rules-add.ts\").then((m) => m.rulesAddCommand),\n retire: () => import(\"./rules-add.ts\").then((m) => m.rulesRetireCommand),\n },\n default: \"list\",\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,qBAAqB;AAQ9B,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAKzB,IAAM,YAAY;AAAA,EAChB,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AAAA,EACA,MAAM,EAAE,MAAM,WAAW,aAAa,0CAA0C,UAAU,OAAO,SAAS,MAAM;AAClH;AAEA,eAAe,EAAE,SAAS,wBAAwB,aAAa,kBAAkB,MAAM,UAAU,CAAC;AAElG,IAAM,cAAc,cAAc;AAAA,EAChC,MAAM,EAAE,MAAM,QAAQ,aAAa,iBAAiB;AAAA,EACpD,MAAM;AAAA,EACN,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,OAAO,kBAAkB,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI;AAC7D,UAAM,OAAO,KAAK,SAAS,YAAY,KAAK,SAAS,UAAU,KAAK,OAAO;AAC3E,UAAM,UAAU,OAAO,KAAK,YAAY,YAAY,KAAK,UAAU,KAAK,UAAU;AAClF,UAAM,CAAC,OAAO,KAAK,IAAI,MAAM,QAAQ,IAAI,CAAC,aAAa,IAAI,GAAG,kBAAkB,IAAI,CAAC,CAAC;AACtF,UAAM,SAAS,YAAY,OAAO,EAAE,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC,GAAI,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC,EAAG,CAAC;AAChG,UAAM,QAAQ,KAAK,QAAQ,OAAO,QAAQ;AAC1C,UAAM,QAAQ,WAAW,QAAQ,aAAa,KAAK,CAAC;AACpD,cAAU;AAAA,MACR,IAAI;AAAA,MACJ,MAAM,EAAE,OAAO,UAAU,OAAO,EAAE,MAAM,KAAK,SAAS,KAAK,CAAC,GAAG,QAAQ,OAAO,QAAQ,OAAO,MAAM,OAAO;AAAA,MAC1G,GAAI,MAAM,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,IACtC,CAAC;AAAA,EACH;AACF,CAAC;AAEM,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,KAAK,MAAM,OAAO,yBAAgB,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe;AAAA,IACjE,QAAQ,MAAM,OAAO,yBAAgB,EAAE,KAAK,CAAC,MAAM,EAAE,kBAAkB;AAAA,EACzE;AAAA,EACA,SAAS;AACX,CAAC;","names":[]}
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
import {
|
|
2
|
+
loadCandidate
|
|
3
|
+
} from "./chunk-WT4WDIXA.js";
|
|
4
|
+
import {
|
|
5
|
+
rulesView
|
|
6
|
+
} from "./chunk-QVQKCVP7.js";
|
|
7
|
+
import {
|
|
8
|
+
fetchRunRecord
|
|
9
|
+
} from "./chunk-7QGFO35A.js";
|
|
10
|
+
import {
|
|
11
|
+
readAllRules
|
|
12
|
+
} from "./chunk-VNU2EYD4.js";
|
|
13
|
+
import {
|
|
14
|
+
RULES_DIR,
|
|
15
|
+
RULE_APPLIES,
|
|
16
|
+
RULE_KINDS,
|
|
17
|
+
RULE_STRENGTHS,
|
|
18
|
+
parseRuleFile
|
|
19
|
+
} from "./chunk-Y46FE75E.js";
|
|
20
|
+
import "./chunk-3S274625.js";
|
|
21
|
+
import {
|
|
22
|
+
holdWorkspaceSpend
|
|
23
|
+
} from "./chunk-UFKO626N.js";
|
|
24
|
+
import {
|
|
25
|
+
findWorkspaceRoot
|
|
26
|
+
} from "./chunk-XRIM7NYV.js";
|
|
27
|
+
import {
|
|
28
|
+
reviewAgainstRules
|
|
29
|
+
} from "./chunk-QMOYQJIN.js";
|
|
30
|
+
import {
|
|
31
|
+
reviewedRules
|
|
32
|
+
} from "./chunk-S4VLLGTW.js";
|
|
33
|
+
import "./chunk-MCJ5I5LR.js";
|
|
34
|
+
import {
|
|
35
|
+
askJev
|
|
36
|
+
} from "./chunk-A6WKCV3V.js";
|
|
37
|
+
import "./chunk-U7YR5CZL.js";
|
|
38
|
+
import "./chunk-VI5YQQ63.js";
|
|
39
|
+
import "./chunk-JX7BX2NB.js";
|
|
40
|
+
import "./chunk-O37VU7FG.js";
|
|
41
|
+
import "./chunk-CAZGM2NX.js";
|
|
42
|
+
import "./chunk-NZS3KEQ2.js";
|
|
43
|
+
import "./chunk-GIWHHCD6.js";
|
|
44
|
+
import "./chunk-XQIOCIDO.js";
|
|
45
|
+
import "./chunk-WTJSMYY2.js";
|
|
46
|
+
import {
|
|
47
|
+
apiPost
|
|
48
|
+
} from "./chunk-6YLNY6CK.js";
|
|
49
|
+
import "./chunk-D5NEIESR.js";
|
|
50
|
+
import "./chunk-57KKVDDR.js";
|
|
51
|
+
import {
|
|
52
|
+
registerSchema,
|
|
53
|
+
writeJson
|
|
54
|
+
} from "./chunk-QANGHND7.js";
|
|
55
|
+
import "./chunk-YQSBHWOI.js";
|
|
56
|
+
|
|
57
|
+
// src/commands/creatives/rules-add.ts
|
|
58
|
+
import { mkdir, readFile, writeFile } from "fs/promises";
|
|
59
|
+
import path from "path";
|
|
60
|
+
import { defineCommand } from "citty";
|
|
61
|
+
import sharp from "sharp";
|
|
62
|
+
|
|
63
|
+
// src/engine/creative-rules/admission.ts
|
|
64
|
+
async function breaks(rule, version, review) {
|
|
65
|
+
const found = await review(version, [rule]).catch(() => null);
|
|
66
|
+
return found === null ? null : found.filter((f) => f.kind?.rule === rule.id && f.severity === "blocking");
|
|
67
|
+
}
|
|
68
|
+
async function admissionTest(rule, origin, approved, review) {
|
|
69
|
+
const untested = { origin: "untested", approved: { checked: 0, blocked: [] } };
|
|
70
|
+
const tested = { ...rule, strength: rule.strength === "prefer" ? "must" : rule.strength };
|
|
71
|
+
if (reviewedRules([tested]).length === 0) return untested;
|
|
72
|
+
const own = origin ? await breaks(tested, origin, review) : null;
|
|
73
|
+
const results = await Promise.all(
|
|
74
|
+
approved.map(async (v) => ({ runId: v.runId, found: await breaks(tested, v, review) }))
|
|
75
|
+
);
|
|
76
|
+
const looked = results.filter((r) => r.found !== null);
|
|
77
|
+
return {
|
|
78
|
+
origin: own === null ? "untested" : own.length > 0 ? "caught" : "missed",
|
|
79
|
+
approved: {
|
|
80
|
+
checked: looked.length,
|
|
81
|
+
blocked: looked.flatMap(
|
|
82
|
+
(r) => r.found?.[0] ? [{ runId: r.runId, what: r.found[0].what.replace(/^.*?\): /, "") }] : []
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function admissionRefusal(rule, admission) {
|
|
88
|
+
if (admission.origin === "missed") {
|
|
89
|
+
return {
|
|
90
|
+
code: "RULE_MISSES_ITS_AD",
|
|
91
|
+
message: `Not saved: "${rule.text}" does not catch the version it came from (${rule.source.runId ?? "the rejected one"}), so it is worded for something else.`,
|
|
92
|
+
fix: "Reword it to name exactly what was wrong on that version, in the person's words, and add it again; or ask the person what the rule is."
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const blocked = admission.approved.blocked;
|
|
96
|
+
if (blocked.length > 0) {
|
|
97
|
+
return {
|
|
98
|
+
code: "RULE_BLOCKS_APPROVED",
|
|
99
|
+
message: `Not saved: "${rule.text}" would block ${blocked.length} version${blocked.length === 1 ? "" : "s"} the person approved: ${blocked.map((b) => `${b.runId} (${b.what})`).join("; ")}.`,
|
|
100
|
+
fix: "Ask the person whether those approved ads break it. If they do not, reword the rule so it names only what they reject, and add it again."
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/engine/creative-rules/compare.ts
|
|
107
|
+
var SAME = "Do rules `a` and `b` ask the same thing of an ad, in any words or language, so that an ad keeping one keeps the other?";
|
|
108
|
+
var CONFLICT = "Do rules `a` and `b` contradict each other, so that no ad could keep both: following one breaks the other?";
|
|
109
|
+
var SAME_BAND = 0.6;
|
|
110
|
+
var CONFLICT_BAND = 0.6;
|
|
111
|
+
var BATCH = 40;
|
|
112
|
+
function jevPairs(onSpend) {
|
|
113
|
+
return async (pairs) => {
|
|
114
|
+
const answers = [];
|
|
115
|
+
for (let i = 0; i < pairs.length; i += BATCH) {
|
|
116
|
+
const batch = pairs.slice(i, i + BATCH);
|
|
117
|
+
const got = await askJev(
|
|
118
|
+
batch.map((p) => ({ instructions: { a: p.a, b: p.b, question: p.question === "same" ? SAME : CONFLICT } })),
|
|
119
|
+
onSpend
|
|
120
|
+
);
|
|
121
|
+
if (!got) return null;
|
|
122
|
+
answers.push(...got);
|
|
123
|
+
}
|
|
124
|
+
return answers;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
async function compareRule(candidate, existing, ask) {
|
|
128
|
+
const active = existing.filter((r) => r.status === "active" && r.id !== candidate.id);
|
|
129
|
+
if (active.length === 0) return { same: [], conflicts: [], judged: true };
|
|
130
|
+
const pairs = active.flatMap((r) => [
|
|
131
|
+
{ a: candidate.text, b: r.text, question: "same" },
|
|
132
|
+
{ a: candidate.text, b: r.text, question: "conflict" }
|
|
133
|
+
]);
|
|
134
|
+
const answers = await ask(pairs).catch(() => null);
|
|
135
|
+
if (!answers || answers.length !== pairs.length) return { same: [], conflicts: [], judged: false };
|
|
136
|
+
return {
|
|
137
|
+
same: active.filter((_, i) => (answers[2 * i] ?? 0) >= SAME_BAND),
|
|
138
|
+
conflicts: active.filter((_, i) => (answers[2 * i + 1] ?? 0) >= CONFLICT_BAND),
|
|
139
|
+
judged: true
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// src/engine/creative-rules/write.ts
|
|
144
|
+
import { stringify as stringifyYaml } from "yaml";
|
|
145
|
+
function ruleFileText(rule) {
|
|
146
|
+
const frontmatter = {
|
|
147
|
+
strength: rule.strength,
|
|
148
|
+
applies: rule.applies,
|
|
149
|
+
...Object.keys(rule.scope).length > 0 ? { scope: rule.scope } : {},
|
|
150
|
+
...rule.check && Object.keys(rule.check).length > 0 ? { check: rule.check } : {},
|
|
151
|
+
source: rule.source,
|
|
152
|
+
status: rule.status,
|
|
153
|
+
...rule.retiredBy ? { retiredBy: rule.retiredBy } : {}
|
|
154
|
+
};
|
|
155
|
+
const yaml = stringifyYaml(frontmatter, { defaultStringType: "QUOTE_DOUBLE", defaultKeyType: "PLAIN", lineWidth: 0 });
|
|
156
|
+
return `---
|
|
157
|
+
${yaml}---
|
|
158
|
+
${rule.text.trim()}
|
|
159
|
+
${rule.why ? `
|
|
160
|
+
Why: ${rule.why.trim()}
|
|
161
|
+
` : ""}`;
|
|
162
|
+
}
|
|
163
|
+
var SLUG_WORDS = 8;
|
|
164
|
+
function ruleSlug(text2, taken) {
|
|
165
|
+
const base = text2.normalize("NFKD").replace(new RegExp("\\p{M}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim().split(/\s+/).filter(Boolean).slice(0, SLUG_WORDS).join("-") || "rule";
|
|
166
|
+
if (!taken.includes(base)) return base;
|
|
167
|
+
let n = 2;
|
|
168
|
+
while (taken.includes(`${base}-${n}`)) n++;
|
|
169
|
+
return `${base}-${n}`;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// src/commands/creatives/rules-add.ts
|
|
173
|
+
var oneOf = (values, value) => value && values.includes(value) ? value : void 0;
|
|
174
|
+
var defined = (value) => Object.fromEntries(
|
|
175
|
+
Object.entries(value).filter(([, v]) => v !== void 0 && !(Array.isArray(v) && v.length === 0))
|
|
176
|
+
);
|
|
177
|
+
function scopeOf(f, c) {
|
|
178
|
+
return defined({
|
|
179
|
+
kinds: (f.kinds ?? c?.kinds)?.flatMap((k) => oneOf(RULE_KINDS, k) ?? []),
|
|
180
|
+
products: f.products,
|
|
181
|
+
platforms: f.platforms ?? c?.platforms,
|
|
182
|
+
language: f.language ?? c?.language
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
function checkOf(f, c) {
|
|
186
|
+
const realPeople = f.people === void 0 ? c?.people === "real" : f.people === "real";
|
|
187
|
+
return defined({
|
|
188
|
+
forbid: f.forbid ?? c?.forbid,
|
|
189
|
+
require: f.require ?? c?.require,
|
|
190
|
+
allow: f.allow ?? c?.allow,
|
|
191
|
+
people: realPeople ? "real" : void 0
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
function ruleFromInputs(inputs, at) {
|
|
195
|
+
const c = inputs.candidate;
|
|
196
|
+
const f = inputs.flags ?? {};
|
|
197
|
+
const text2 = (f.text ?? c?.text)?.trim();
|
|
198
|
+
if (!text2) return { error: "--text: the rule, in the person's words (or --candidate <id> from `feedback record`)." };
|
|
199
|
+
const check = checkOf(f, c);
|
|
200
|
+
const source = defined({
|
|
201
|
+
kind: c ? "feedback" : "user",
|
|
202
|
+
slug: f.slug ?? c?.source.slug,
|
|
203
|
+
runId: f.run ?? c?.source.runId,
|
|
204
|
+
quote: f.quote ?? c?.source.quote,
|
|
205
|
+
date: at.today
|
|
206
|
+
});
|
|
207
|
+
return {
|
|
208
|
+
id: ruleSlug(f.id ?? text2, at.taken),
|
|
209
|
+
origin: "learned",
|
|
210
|
+
strength: oneOf(RULE_STRENGTHS, f.strength) ?? c?.strength ?? "must",
|
|
211
|
+
applies: oneOf(RULE_APPLIES, f.applies) ?? c?.applies ?? "any",
|
|
212
|
+
scope: scopeOf(f, c),
|
|
213
|
+
...Object.keys(check).length > 0 ? { check } : {},
|
|
214
|
+
text: text2,
|
|
215
|
+
...f.why ? { why: f.why } : {},
|
|
216
|
+
source,
|
|
217
|
+
status: "active"
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
async function versionOf(runId) {
|
|
221
|
+
const record = await fetchRunRecord(runId).catch(() => null);
|
|
222
|
+
const images = (record?.finalOutputs ?? []).filter((o) => o.kind === "image" && o.url);
|
|
223
|
+
const stills = await Promise.all(
|
|
224
|
+
images.map(async (o) => {
|
|
225
|
+
const response = await fetch(o.url).catch(() => null);
|
|
226
|
+
if (!response?.ok) return null;
|
|
227
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
228
|
+
return (await sharp(bytes).resize({ width: 1024 }).jpeg({ quality: 85 }).toBuffer()).toString("base64");
|
|
229
|
+
})
|
|
230
|
+
);
|
|
231
|
+
const kept = images.flatMap(
|
|
232
|
+
(o, i) => stills[i] ? [{ still: stills[i], format: o.label ?? "image" }] : []
|
|
233
|
+
);
|
|
234
|
+
return kept.length > 0 ? { runId, stills: kept.map((k) => k.still), formats: kept.map((k) => k.format) } : null;
|
|
235
|
+
}
|
|
236
|
+
var APPROVED_VERSIONS = 3;
|
|
237
|
+
async function approvedVersions(except, slug) {
|
|
238
|
+
const feedback = await apiPost("/api/creatives/feedback", { full: true }).catch(
|
|
239
|
+
() => null
|
|
240
|
+
);
|
|
241
|
+
const approved = (feedback?.data.recent ?? []).filter((e) => e.verdict === "approved" && e.runId !== except);
|
|
242
|
+
const ordered = [...approved.filter((e) => e.creative !== slug), ...approved.filter((e) => e.creative === slug)];
|
|
243
|
+
const runIds = [...new Set(ordered.map((e) => e.runId))];
|
|
244
|
+
const versions = [];
|
|
245
|
+
for (const runId of runIds) {
|
|
246
|
+
if (versions.length === APPROVED_VERSIONS) break;
|
|
247
|
+
const version = await versionOf(runId);
|
|
248
|
+
if (version) versions.push(version);
|
|
249
|
+
}
|
|
250
|
+
return versions;
|
|
251
|
+
}
|
|
252
|
+
async function admit(rule) {
|
|
253
|
+
const spent = [];
|
|
254
|
+
const review = (version, rules) => reviewAgainstRules({ ...version, rules, onSpend: (u) => spent.push(u) });
|
|
255
|
+
const [origin, approved] = await Promise.all([
|
|
256
|
+
rule.source.runId ? versionOf(rule.source.runId) : Promise.resolve(null),
|
|
257
|
+
approvedVersions(rule.source.runId, rule.source.slug)
|
|
258
|
+
]);
|
|
259
|
+
const admission = await admissionTest(rule, origin, approved, review);
|
|
260
|
+
await holdWorkspaceSpend(spent);
|
|
261
|
+
return admission;
|
|
262
|
+
}
|
|
263
|
+
async function compareHoldingSpend(rule, existing) {
|
|
264
|
+
const spent = [];
|
|
265
|
+
try {
|
|
266
|
+
return await compareRule(
|
|
267
|
+
rule,
|
|
268
|
+
existing,
|
|
269
|
+
jevPairs((u) => spent.push(u))
|
|
270
|
+
);
|
|
271
|
+
} finally {
|
|
272
|
+
await holdWorkspaceSpend(spent);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
async function retireFile(root, id, by) {
|
|
276
|
+
const file = path.join(root, RULES_DIR, `${id}.md`);
|
|
277
|
+
const rule = parseRuleFile(id, await readFile(file, "utf8").catch(() => ""));
|
|
278
|
+
if (!rule) return null;
|
|
279
|
+
const retired = { ...rule, status: "retired", ...by ? { retiredBy: by } : {} };
|
|
280
|
+
await writeFile(file, ruleFileText(retired), "utf8");
|
|
281
|
+
return retired;
|
|
282
|
+
}
|
|
283
|
+
function fail(code, message, fix, extra = {}) {
|
|
284
|
+
writeJson({ ok: false, error: { code, message, ...fix ? { fix } : {}, ...extra } });
|
|
285
|
+
process.exit(1);
|
|
286
|
+
}
|
|
287
|
+
var list = (value) => typeof value === "string" && value.trim() ? value.split(",").map((s) => s.trim()).filter(Boolean) : void 0;
|
|
288
|
+
var text = (value) => typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
289
|
+
var ADD_DESCRIPTION = `Save a rule the person agreed to, for every ad from now on: one file in src/content/creative-rules/, published with the Session. Only after they said yes to "make this a rule for every ad?".
|
|
290
|
+
Start here: baker creatives rules add --candidate rc-1a2b3c4d # a rule \`feedback record\` drafted from their words
|
|
291
|
+
baker creatives rules add --text "No AI-generated people." --strength never --applies cast --people real --quote "<their words>" --slug <ad> --run <r_\u2026>
|
|
292
|
+
It is refused when the company already has it (DUPLICATE_RULE), when it contradicts one (RULE_CONFLICT: ask which wins, then --replaces <id>), when it does not catch the version it came from (RULE_MISSES_ITS_AD), or would block versions the person approved (RULE_BLOCKS_APPROVED): ask the person, never save it anyway.`;
|
|
293
|
+
var ADD_ARGS = {
|
|
294
|
+
candidate: {
|
|
295
|
+
type: "string",
|
|
296
|
+
description: "A rule `feedback record` drafted (rc-\u2026): the flags below override its parts",
|
|
297
|
+
required: false
|
|
298
|
+
},
|
|
299
|
+
text: {
|
|
300
|
+
type: "string",
|
|
301
|
+
description: "The rule, one sentence, in the person's own language and words",
|
|
302
|
+
required: false
|
|
303
|
+
},
|
|
304
|
+
strength: {
|
|
305
|
+
type: "string",
|
|
306
|
+
description: `${RULE_STRENGTHS.join(" | ")}: never and must are checked and block; prefer is a note`,
|
|
307
|
+
required: false
|
|
308
|
+
},
|
|
309
|
+
applies: { type: "string", description: `What of the ad it is about: ${RULE_APPLIES.join(", ")}`, required: false },
|
|
310
|
+
forbid: {
|
|
311
|
+
type: "string",
|
|
312
|
+
description: 'Words it bans, comma-separated, only when a word decides it ("online")',
|
|
313
|
+
required: false
|
|
314
|
+
},
|
|
315
|
+
allow: { type: "string", description: 'The right phrase that holds a banned word ("100 % online")', required: false },
|
|
316
|
+
require: { type: "string", description: "Words every ad must say, comma-separated (rare)", required: false },
|
|
317
|
+
people: {
|
|
318
|
+
type: "string",
|
|
319
|
+
description: "real: only real people appear (a real person's Avatar, a customer, footage or nobody)",
|
|
320
|
+
required: false
|
|
321
|
+
},
|
|
322
|
+
kinds: { type: "string", description: "static,video: only ads of these kinds", required: false },
|
|
323
|
+
products: { type: "string", description: "Product slugs (a business unit): only ads of these", required: false },
|
|
324
|
+
platforms: { type: "string", description: "meta,linkedin,\u2026: only ads for these", required: false },
|
|
325
|
+
language: {
|
|
326
|
+
type: "string",
|
|
327
|
+
description: "The language its words are in (es): its banned words are checked only in ads in it",
|
|
328
|
+
required: false
|
|
329
|
+
},
|
|
330
|
+
quote: { type: "string", description: "The person's own words it came from, verbatim", required: false },
|
|
331
|
+
slug: { type: "string", description: "The creative they said it about", required: false },
|
|
332
|
+
run: { type: "string", description: "The version they said it about (r_\u2026): the rule must catch it", required: false },
|
|
333
|
+
why: { type: "string", description: "Why, in a sentence, when the person said", required: false },
|
|
334
|
+
id: { type: "string", description: "The rule's id (its file name); default: from its words", required: false },
|
|
335
|
+
replaces: {
|
|
336
|
+
type: "string",
|
|
337
|
+
description: "A rule of the person's it contradicts and wins over: retired, never deleted",
|
|
338
|
+
required: false
|
|
339
|
+
}
|
|
340
|
+
};
|
|
341
|
+
registerSchema({ command: "creatives.rules.add", description: ADD_DESCRIPTION, args: ADD_ARGS });
|
|
342
|
+
function brandMdHint(declared, relation) {
|
|
343
|
+
return relation === "same" ? `BRAND.md states this too ("${declared.text}"): now the person confirmed it, every finished ad is checked against it.` : `BRAND.md says otherwise ("${declared.text}"): tell the person, and change only that line of BRAND.md (/brand-build) so it no longer says otherwise; never write the rule itself into BRAND.md, or retiring it would leave it in force.`;
|
|
344
|
+
}
|
|
345
|
+
var rulesAddCommand = defineCommand({
|
|
346
|
+
meta: { name: "add", description: ADD_DESCRIPTION },
|
|
347
|
+
args: ADD_ARGS,
|
|
348
|
+
async run({ args }) {
|
|
349
|
+
const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
|
|
350
|
+
const cacheDir = path.join(root, "canvas", ".cache");
|
|
351
|
+
const candidateId = text(args.candidate);
|
|
352
|
+
const candidate = candidateId ? await loadCandidate(cacheDir, candidateId) : void 0;
|
|
353
|
+
if (candidateId && !candidate) {
|
|
354
|
+
fail(
|
|
355
|
+
"VALIDATION_ERROR",
|
|
356
|
+
`No drafted rule ${candidateId} here.`,
|
|
357
|
+
"Use the id `feedback record` printed in this chat, or pass --text."
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
const all = await readAllRules(root);
|
|
361
|
+
const rule = ruleFromInputs(
|
|
362
|
+
{
|
|
363
|
+
...candidate ? { candidate } : {},
|
|
364
|
+
flags: {
|
|
365
|
+
text: text(args.text),
|
|
366
|
+
strength: text(args.strength),
|
|
367
|
+
applies: text(args.applies),
|
|
368
|
+
forbid: list(args.forbid),
|
|
369
|
+
allow: list(args.allow),
|
|
370
|
+
require: list(args.require),
|
|
371
|
+
people: text(args.people),
|
|
372
|
+
kinds: list(args.kinds),
|
|
373
|
+
products: list(args.products),
|
|
374
|
+
platforms: list(args.platforms),
|
|
375
|
+
language: text(args.language),
|
|
376
|
+
quote: text(args.quote),
|
|
377
|
+
slug: text(args.slug),
|
|
378
|
+
run: text(args.run),
|
|
379
|
+
why: text(args.why),
|
|
380
|
+
id: text(args.id)
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
{ today: (/* @__PURE__ */ new Date()).toISOString().slice(0, 10), taken: all.map((r) => r.id) }
|
|
384
|
+
);
|
|
385
|
+
if ("error" in rule) fail("VALIDATION_ERROR", rule.error);
|
|
386
|
+
const replaces = text(args.replaces);
|
|
387
|
+
const compared = await compareHoldingSpend(rule, all);
|
|
388
|
+
const sameTaught = compared.same.filter((r) => r.origin === "learned");
|
|
389
|
+
if (sameTaught.length > 0) {
|
|
390
|
+
fail(
|
|
391
|
+
"DUPLICATE_RULE",
|
|
392
|
+
`The company already has this rule: ${sameTaught.map((r) => `${r.id} ("${r.text}")`).join("; ")}.`,
|
|
393
|
+
"Nothing to add. If the person wants it worded otherwise, retire that one and add this."
|
|
394
|
+
);
|
|
395
|
+
}
|
|
396
|
+
const conflicts = compared.conflicts.filter((r) => r.origin === "learned" && r.id !== replaces);
|
|
397
|
+
if (conflicts.length > 0) {
|
|
398
|
+
fail(
|
|
399
|
+
"RULE_CONFLICT",
|
|
400
|
+
`It contradicts ${conflicts.map((r) => `${r.id} ("${r.text}")`).join("; ")}.`,
|
|
401
|
+
"Ask the person which one wins. This one: add it again with --replaces <id> (that rule is retired, never deleted). The other: do not add this one."
|
|
402
|
+
);
|
|
403
|
+
}
|
|
404
|
+
const admission = await admit(rule);
|
|
405
|
+
const refusal = admissionRefusal(rule, admission);
|
|
406
|
+
if (refusal) fail(refusal.code, refusal.message, refusal.fix, { admission });
|
|
407
|
+
await mkdir(path.join(root, RULES_DIR), { recursive: true });
|
|
408
|
+
const file = path.join(RULES_DIR, `${rule.id}.md`);
|
|
409
|
+
await writeFile(path.join(root, file), ruleFileText(rule), "utf8");
|
|
410
|
+
const retired = replaces ? await retireFile(root, replaces, rule.id) : null;
|
|
411
|
+
const declared = [...compared.same, ...compared.conflicts].filter((r) => r.origin === "declared");
|
|
412
|
+
writeJson({
|
|
413
|
+
ok: true,
|
|
414
|
+
data: {
|
|
415
|
+
rule: rulesView([rule], { full: true })[0],
|
|
416
|
+
file,
|
|
417
|
+
admission,
|
|
418
|
+
...retired ? { retired: retired.id } : {}
|
|
419
|
+
},
|
|
420
|
+
hints: [
|
|
421
|
+
`Saved for every ad from now on${admission.origin === "untested" ? " (not tested on a version: nothing a picture shows decides it, or the version had no picture)" : ""}. Tell the person in one line, then run \`baker creatives check\`: which ads already made break it.`,
|
|
422
|
+
...compared.judged ? [] : [
|
|
423
|
+
"Whether it repeats or contradicts another rule could not be read (the decision model did not answer): look at `baker creatives rules list`."
|
|
424
|
+
],
|
|
425
|
+
...declared.map((r) => brandMdHint(r, compared.same.includes(r) ? "same" : "conflict"))
|
|
426
|
+
]
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
var RETIRE_DESCRIPTION = `Retire a rule a person taught, when they say it no longer holds or another replaces it: it stays in its file as retired, never deleted, and no ad is held to it.
|
|
431
|
+
Start here: baker creatives rules retire cien-por-cien-online [--by <rule id>|BRAND.md]
|
|
432
|
+
A rule of BRAND.md is changed in BRAND.md (/brand-build).`;
|
|
433
|
+
var RETIRE_ARGS = {
|
|
434
|
+
id: { type: "positional", description: "The rule's id (`baker creatives rules list`)", required: true },
|
|
435
|
+
by: { type: "string", description: "What replaces it: another rule's id, or BRAND.md", required: false }
|
|
436
|
+
};
|
|
437
|
+
registerSchema({ command: "creatives.rules.retire", description: RETIRE_DESCRIPTION, args: RETIRE_ARGS });
|
|
438
|
+
var rulesRetireCommand = defineCommand({
|
|
439
|
+
meta: { name: "retire", description: RETIRE_DESCRIPTION },
|
|
440
|
+
args: RETIRE_ARGS,
|
|
441
|
+
async run({ args }) {
|
|
442
|
+
const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
|
|
443
|
+
const id = String(args.id);
|
|
444
|
+
if (/^brand-[0-9a-f]{8}$/.test(id)) {
|
|
445
|
+
fail("VALIDATION_ERROR", `${id} is a rule of BRAND.md.`, "Change it in BRAND.md with /brand-build.");
|
|
446
|
+
}
|
|
447
|
+
const retired = await retireFile(root, id, text(args.by));
|
|
448
|
+
if (!retired) fail("NOT_FOUND", `No rule ${id} in ${RULES_DIR}.`, "See `baker creatives rules list --all`.");
|
|
449
|
+
writeJson({
|
|
450
|
+
ok: true,
|
|
451
|
+
data: { rule: rulesView([retired], { full: true })[0] },
|
|
452
|
+
hints: ["Retired: no ad is held to it from now on."]
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
});
|
|
456
|
+
export {
|
|
457
|
+
brandMdHint,
|
|
458
|
+
compareHoldingSpend,
|
|
459
|
+
ruleFromInputs,
|
|
460
|
+
rulesAddCommand,
|
|
461
|
+
rulesRetireCommand
|
|
462
|
+
};
|
|
463
|
+
//# sourceMappingURL=rules-add-VG7AT6EG.js.map
|