@koda-sl/baker-cli 0.502.0 → 0.504.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 +10 -1
- package/dist/account-RSOGF4XW.js +80 -0
- package/dist/account-WLQBAQMD.js +80 -0
- package/dist/account-assets-WZOYMT3C.js +290 -0
- package/dist/account-level-XEDTZVNJ.js +609 -0
- package/dist/account-reads-KJHPUVEV.js +219 -0
- package/dist/account-users-X7JTXBHS.js +62 -0
- package/dist/account-writes-TU3WJRSI.js +66 -0
- package/dist/accounts-CC5F7TBB.js +699 -0
- package/dist/accounts-UFPI46P5.js +78 -0
- package/dist/actions-IG2D6NRC.js +55 -0
- package/dist/activecampaign-S76P2FMN.js +936 -0
- package/dist/ad-group-writes-HLBWN4E4.js +170 -0
- package/dist/ad-groups-33NZD6J3.js +68 -0
- package/dist/ad-writes-7ZDNDZ2E.js +174 -0
- package/dist/add-GZV57GNI.js +105 -0
- package/dist/add-V4UNAGVT.js +303 -0
- package/dist/ads-IC52FMFA.js +115 -0
- package/dist/ads-MAPZYX6F.js +48 -0
- package/dist/ads-X3AM6M7L.js +77 -0
- package/dist/adsets-7N4UFAVA.js +182 -0
- package/dist/advertisers-B2YDPIMV.js +121 -0
- package/dist/analytics-4CCQYY7Z.js +2138 -0
- package/dist/analytics-XW4ZEEAR.js +445 -0
- package/dist/asset-writes-QPJDD767.js +48 -0
- package/dist/assign-HE3MH7WE.js +78 -0
- package/dist/audience-size-W33DMJ7E.js +74 -0
- package/dist/audience-writes-KO7L5YLO.js +325 -0
- package/dist/audiences-H5WVE2ZA.js +86 -0
- package/dist/audiences-WCDWN64L.js +268 -0
- package/dist/audit-EFDIMRYT.js +152 -0
- package/dist/autocomplete-H4BKQNXF.js +112 -0
- package/dist/avatars-VYXUQSSE.js +38 -0
- package/dist/bid-pricing-QK4IJUD2.js +101 -0
- package/dist/brand-JB6NXAAL.js +22 -0
- package/dist/brief-G5WEJ52V.js +541 -0
- package/dist/campaign-groups-X2WAZE64.js +97 -0
- package/dist/campaign-writes-LM6W5MIF.js +166 -0
- package/dist/campaign-writes-XO74BALZ.js +174 -0
- package/dist/campaign-writes-XO74BALZ.js.map +1 -0
- package/dist/campaigns-4ERDITZ5.js +111 -0
- package/dist/campaigns-4ERDITZ5.js.map +1 -0
- package/dist/campaigns-7PHPOERA.js +111 -0
- package/dist/campaigns-LS65QM6W.js +76 -0
- package/dist/campaigns-PCD72XQX.js +130 -0
- package/dist/canvas-YULE6CFP.js +46 -0
- package/dist/capabilities-QREOIRIH.js +145 -0
- package/dist/catalogs-OIQS5NSC.js +779 -0
- package/dist/catalogs-T23RKYFC.js +128 -0
- package/dist/changes-36C754R4.js +135 -0
- package/dist/chatgpt-SVGWMEQD.js +47 -0
- package/dist/chats-FF4PN5JC.js +277 -0
- package/dist/check-5UHPABWJ.js +105 -0
- package/dist/chunk-277FW25B.js +406 -0
- package/dist/chunk-2TOIY2WN.js +4254 -0
- package/dist/chunk-2TOIY2WN.js.map +1 -0
- package/dist/chunk-36MUCC42.js +203 -0
- package/dist/chunk-4GAEB6NK.js +228 -0
- package/dist/chunk-5DJ5RNAO.js +66 -0
- package/dist/chunk-5XTGG4PV.js +274 -0
- package/dist/chunk-7LLKJN2O.js +344 -0
- package/dist/chunk-AHUA76NQ.js +363 -0
- package/dist/chunk-BHXFGLY5.js +61 -0
- package/dist/chunk-BOE6YB2D.js +387 -0
- package/dist/chunk-BPRS7VQ3.js +349 -0
- package/dist/chunk-BRA6IXRS.js +910 -0
- package/dist/chunk-BW36QQQU.js +3868 -0
- package/dist/chunk-CCEDZTP7.js +391 -0
- package/dist/chunk-CLUJWAQE.js +207 -0
- package/dist/chunk-D2JFOD5O.js +249 -0
- package/dist/chunk-D735YLAX.js +547 -0
- package/dist/chunk-DM6CEVCN.js +197 -0
- package/dist/chunk-DTUGU4EI.js +169 -0
- package/dist/chunk-DZGXFV6A.js +97 -0
- package/dist/chunk-EXELLNQS.js +7128 -0
- package/dist/chunk-EXELLNQS.js.map +1 -0
- package/dist/chunk-F4RZHA74.js +191 -0
- package/dist/chunk-FFFJBNHA.js +63 -0
- package/dist/chunk-FM6RRYJB.js +163 -0
- package/dist/chunk-GDXJVEVG.js +592 -0
- package/dist/chunk-GJCB46L6.js +479 -0
- package/dist/chunk-GNDSD5VQ.js +297 -0
- package/dist/chunk-HD23TJIT.js +392 -0
- package/dist/chunk-IYMGQATT.js +23 -0
- package/dist/chunk-JOXNUKI7.js +676 -0
- package/dist/chunk-JYG7N6TV.js +455 -0
- package/dist/chunk-K5ZOZ2IY.js +91 -0
- package/dist/chunk-KTCWU4A4.js +494 -0
- package/dist/chunk-KYSTZP7J.js +604 -0
- package/dist/chunk-LE7VW2IU.js +224 -0
- package/dist/chunk-LLBB6OAB.js +1646 -0
- package/dist/chunk-LLBB6OAB.js.map +1 -0
- package/dist/chunk-M7HD42M6.js +24017 -0
- package/dist/chunk-M7HD42M6.js.map +1 -0
- package/dist/chunk-MGYC2IRC.js +783 -0
- package/dist/chunk-MKAYMOZY.js +25 -0
- package/dist/chunk-MKAYMOZY.js.map +1 -0
- package/dist/chunk-NALPM5QO.js +275 -0
- package/dist/chunk-PISGCYXU.js +170 -0
- package/dist/chunk-PLBITHV6.js +846 -0
- package/dist/chunk-RJY5S7RU.js +8954 -0
- package/dist/chunk-ROVV7INH.js +19 -0
- package/dist/chunk-RRJK46PC.js +103 -0
- package/dist/chunk-S335LT4B.js +207 -0
- package/dist/chunk-S3FFLLYF.js +57 -0
- package/dist/chunk-SBFP3REK.js +51 -0
- package/dist/chunk-SG2BCYWB.js +122 -0
- package/dist/chunk-T3KW63H7.js +942 -0
- package/dist/chunk-TLQOMWLQ.js +69 -0
- package/dist/chunk-TLQOMWLQ.js.map +1 -0
- package/dist/chunk-UQ7SJMGJ.js +287 -0
- package/dist/chunk-VIPKDXGU.js +4229 -0
- package/dist/chunk-VIPKDXGU.js.map +1 -0
- package/dist/chunk-WVTKUCAO.js +831 -0
- package/dist/chunk-X45ASFZW.js +142 -0
- package/dist/chunk-YLQWWLCW.js +219 -0
- package/dist/chunk-ZAM6PVHX.js +89 -0
- package/dist/chunk-ZGWXGK5S.js +156 -0
- package/dist/chunk-ZNRGH4NS.js +150 -0
- package/dist/chunk-ZQXHOHSC.js +319 -0
- package/dist/claim-JMF4O2SQ.js +198 -0
- package/dist/cli.js +32 -32
- package/dist/companies-2DHNNS34.js +196 -0
- package/dist/company-UVLP5WE7.js +306 -0
- package/dist/complete-MVR6QHON.js +82 -0
- package/dist/connect-WTDJKDTR.js +43 -0
- package/dist/conversation-O3XOVYC3.js +94 -0
- package/dist/conversion-report-DKXFHLLX.js +125 -0
- package/dist/conversion-upload-command-MHZSSJXN.js +439 -0
- package/dist/conversion-writes-7ODJDAUP.js +120 -0
- package/dist/conversions-BKVGNNC6.js +76 -0
- package/dist/conversions-HUQJ767W.js +138 -0
- package/dist/copy-writes-JH2AECES.js +168 -0
- package/dist/create-EXLN4XHF.js +237 -0
- package/dist/create-TCT3IMAU.js +208 -0
- package/dist/create-YE3VLUUP.js +60 -0
- package/dist/create-YGAMPG2C.js +133 -0
- package/dist/creatives-IXR4RTSF.js +221 -0
- package/dist/creatives-L7F4BF3F.js +89 -0
- package/dist/creatives-WUUHFCFY.js +58 -0
- package/dist/credentials-UY6OPN7W.js +288 -0
- package/dist/critique-DU7K2KVR.js +1459 -0
- package/dist/critique-ZYLCH5SO.js +230 -0
- package/dist/crm-F64BDO4X.js +225 -0
- package/dist/crm-K2QSZ2X7.js +321 -0
- package/dist/currency-R4ORE2U3.js +88 -0
- package/dist/custom-conversions-6KYF26SK.js +128 -0
- package/dist/customers-TJDVAPTR.js +57 -0
- package/dist/delete-4XHBC4UR.js +67 -0
- package/dist/delete-A4R2R7HF.js +55 -0
- package/dist/delete-SUHPUAE5.js +65 -0
- package/dist/demographics-MZBHPCT3.js +139 -0
- package/dist/discard-HUP4DXIJ.js +67 -0
- package/dist/discover-GSJRZUOC.js +172 -0
- package/dist/domain-WFT5NJNP.js +99 -0
- package/dist/download-DAWPUKXP.js +170 -0
- package/dist/download-DAWPUKXP.js.map +1 -0
- package/dist/draft-6HTSF36L.js +333 -0
- package/dist/draft-6XS36CMT.js +218 -0
- package/dist/draft-LPVK6YHI.js +281 -0
- package/dist/draft-RTZBROFS.js +308 -0
- package/dist/draft-SNKUG6UX.js +308 -0
- package/dist/experiments-PJWBABLJ.js +234 -0
- package/dist/facets-SWSXRJ5G.js +115 -0
- package/dist/feedback-HL3RH5AO.js +109 -0
- package/dist/feedback-record-YDI2MHAV.js +263 -0
- package/dist/fetch-ASLXGN7O.js +177 -0
- package/dist/fit-I3FZJKOK.js +63 -0
- package/dist/flows-BP7IQ4YA.js +248 -0
- package/dist/fonts-U23DJIT2.js +37 -0
- package/dist/forecast-DUAOZEMB.js +119 -0
- package/dist/forecast-LXTCKRZE.js +169 -0
- package/dist/funnel-727XATM5.js +395 -0
- package/dist/get-4567QZ5E.js +57 -0
- package/dist/get-PB62YT3J.js +80 -0
- package/dist/google-VPL4KZDP.js +3267 -0
- package/dist/google-ads-XM4NUOST.js +196 -0
- package/dist/history-26OX4MCJ.js +134 -0
- package/dist/history-5MRLNTCI.js +67 -0
- package/dist/hubspot-S3ED4AYK.js +780 -0
- package/dist/ideas-KNIT3KNY.js +43 -0
- package/dist/images-SCC3QYPG.js +92 -0
- package/dist/ingest-667IMIGB.js +24 -0
- package/dist/ingest-PXCOSPP5.js +108 -0
- package/dist/insights-EQW34IL4.js +437 -0
- package/dist/insights-JZVXC7IJ.js +130 -0
- package/dist/inspect-PSWSCTLJ.js +190 -0
- package/dist/instant-experiences-ABIS6KUQ.js +258 -0
- package/dist/intent-NSHW7EJT.js +95 -0
- package/dist/keyword-gap-ITTWKBWZ.js +130 -0
- package/dist/keyword-metrics-HQSNLJM3.js +198 -0
- package/dist/keywords-for-site-FX6KCUNV.js +129 -0
- package/dist/landing-X4PG6XWU.js +28 -0
- package/dist/languages-MEFQQBJ2.js +40 -0
- package/dist/leads-ONFUUBAZ.js +113 -0
- package/dist/leads-WKGUT3EA.js +538 -0
- package/dist/learn-2QPP7NHC.js +205 -0
- package/dist/line-item-writes-2XGDEEV3.js +209 -0
- package/dist/line-items-ZSQS2AWV.js +107 -0
- package/dist/line-items-ZSQS2AWV.js.map +1 -0
- package/dist/link-QL7Y2LML.js +65 -0
- package/dist/linkedin-4MGRSWXZ.js +1314 -0
- package/dist/linkedin-person-E4JJG4J5.js +137 -0
- package/dist/list-4SAXAQCN.js +152 -0
- package/dist/list-GF3LEAM7.js +65 -0
- package/dist/list-KLDAPWIB.js +304 -0
- package/dist/locations-RLWAS6AC.js +40 -0
- package/dist/locations-UKBOT6SB.js +67 -0
- package/dist/log-4LLRZB2M.js +93 -0
- package/dist/make-ZMFGPL7A.js +1368 -0
- package/dist/map-NKRFK545.js +434 -0
- package/dist/mcp-VARLEIKU.js +715 -0
- package/dist/media-LE2PO4Q4.js +18 -0
- package/dist/media-sources-4Y53RHUW.js +35 -0
- package/dist/members-HSPPVHU2.js +45 -0
- package/dist/meta-KS3SQSYZ.js +122 -0
- package/dist/metrics-K6FDCMK7.js +152 -0
- package/dist/normalize-LDIXBNSA.js +142 -0
- package/dist/options-2GEONNJF.js +123 -0
- package/dist/organization-W5JLJ4KP.js +947 -0
- package/dist/page-photos-TOM74T5U.js +116 -0
- package/dist/performance-34LV3QGQ.js +25 -0
- package/dist/performance-CIUVIFD7.js +5445 -0
- package/dist/pixels-Z7ZGXAGB.js +60 -0
- package/dist/posts-37LZKGWU.js +34 -0
- package/dist/preview-CWRGDFCP.js +216 -0
- package/dist/promoted-tweet-writes-7XGCGHPN.js +181 -0
- package/dist/promoted-tweets-EZZHHGS6.js +119 -0
- package/dist/publish-OB7UZSKT.js +342 -0
- package/dist/query-42QT56FJ.js +62 -0
- package/dist/reddit-PR2SBLQN.js +27 -0
- package/dist/refresh-EJ6XQNAQ.js +95 -0
- package/dist/release-FV6M3X4D.js +61 -0
- package/dist/relevant-pages-VOICMQ7U.js +99 -0
- package/dist/remove-6LK6L3KE.js +51 -0
- package/dist/reopen-2VHSGKNJ.js +64 -0
- package/dist/rerun-W6YHMXCK.js +93 -0
- package/dist/research-6NUBHVSB.js +263 -0
- package/dist/research-BYDRBMN5.js +72 -0
- package/dist/reset-MPGBOFJD.js +55 -0
- package/dist/reset-YO66ZZRC.js +55 -0
- package/dist/resolve-SGXOPZ4W.js +122 -0
- package/dist/retry-LXMT4I2X.js +63 -0
- package/dist/retry-Z2ZUPUQI.js +61 -0
- package/dist/revenue-MZ2C65GL.js +89 -0
- package/dist/rule-writes-KLYXCD7Z.js +523 -0
- package/dist/rules-CDMHA2KQ.js +97 -0
- package/dist/rules-NALFFFDR.js +217 -0
- package/dist/rules-add-HEXUMODD.js +463 -0
- package/dist/run-VNL34BKW.js +67 -0
- package/dist/run-WTD73KD5.js +68 -0
- package/dist/scaffold-ad-S2DZSRM4.js +1514 -0
- package/dist/scaffold-static-ad-DW6OMF3D.js +1013 -0
- package/dist/scaffold-video-EXLUICRE.js +886 -0
- package/dist/schedule-7GAFQXF7.js +62 -0
- package/dist/scheduled-agents-7JW3JIOL.js +50 -0
- package/dist/schema-PHGVKZ4X.js +133 -0
- package/dist/search-VCRWREOU.js +175 -0
- package/dist/select-BPGZYHR3.js +104 -0
- package/dist/set-prompt-E776UHMH.js +196 -0
- package/dist/setup-links-2AMTW6O5.js +142 -0
- package/dist/shopify-SUSDBUUZ.js +3956 -0
- package/dist/site-DH6Z2RX3.js +178 -0
- package/dist/sources-PSM2A5QD.js +455 -0
- package/dist/sources-ZJ7EZ6TJ.js +30 -0
- package/dist/stale-RHW4OYXY.js +74 -0
- package/dist/status-JHAVZIYW.js +63 -0
- package/dist/studies-2GPTKJCT.js +250 -0
- package/dist/study-writes-QCSAPE2G.js +468 -0
- package/dist/sync-RQ3NUCGE.js +55 -0
- package/dist/sync-definition-3DRKTX3V.js +67 -0
- package/dist/tag-manager-BVPLGLTF.js +43 -0
- package/dist/tags-A2JZRMKV.js +21 -0
- package/dist/tags-H2PQWUNE.js +26 -0
- package/dist/tags-HOZYO6FL.js +21 -0
- package/dist/tags-WH7LGHNT.js +225 -0
- package/dist/tags-WRUUTQCJ.js +21 -0
- package/dist/targeting-SOMGPSKV.js +760 -0
- package/dist/targeting-constants-236ES5HE.js +118 -0
- package/dist/targeting-criteria-APNZ7DN3.js +113 -0
- package/dist/targets-LNZBOK2B.js +104 -0
- package/dist/testimonials-Y6RADYJ5.js +32 -0
- package/dist/themes-7I6URZUW.js +95 -0
- package/dist/top-companies-HZQTHV2H.js +109 -0
- package/dist/transcript-SRHKH3JL.js +163 -0
- package/dist/translate-C5R3OMTL.js +607 -0
- package/dist/triggers-QISDVK4W.js +142 -0
- package/dist/unlink-2TDYZUCT.js +68 -0
- package/dist/unstage-KRBN7SHW.js +86 -0
- package/dist/update-GE6XVCDF.js +64 -0
- package/dist/update-KG4XAUC7.js +153 -0
- package/dist/update-PAYTKLZ2.js +190 -0
- package/dist/update-QSGTZHD4.js +99 -0
- package/dist/upload-5R5CCOE6.js +127 -0
- package/dist/url-options-LA6BL3GS.js +130 -0
- package/dist/url-params-L4WF3D2V.js +99 -0
- package/dist/validate-6AHIXVW4.js +120 -0
- package/dist/videos-3DPLRMFM.js +41 -0
- package/dist/videos-3DPLRMFM.js.map +1 -0
- package/dist/viewer-check-TEQVRF4O.js +81 -0
- package/dist/web-3G6UP3YV.js +141 -0
- package/dist/winning-ads-7SI2VN7U.js +86 -0
- package/dist/write-commands-UA3FI3EX.js +1170 -0
- package/dist/write-commands-UA3FI3EX.js.map +1 -0
- package/dist/write-commands-ZQ5JYOUB.js +1498 -0
- package/dist/write-commands-ZQ5JYOUB.js.map +1 -0
- package/dist/x-7VY6K7JS.js +47 -0
- package/package.json +1 -1
- package/dist/account-PYK5VMQ4.js +0 -80
- package/dist/account-YSMZB5ZC.js +0 -80
- package/dist/account-assets-LSXSW4RQ.js +0 -290
- package/dist/account-level-6T2WAPF3.js +0 -609
- package/dist/account-reads-2U5OGO72.js +0 -219
- package/dist/account-users-XFNFGZB7.js +0 -62
- package/dist/account-writes-4MAKFM7L.js +0 -66
- package/dist/accounts-ZKY6KPU3.js +0 -78
- package/dist/accounts-ZYOQSFX5.js +0 -699
- package/dist/actions-PF62UVHS.js +0 -55
- package/dist/activecampaign-Q7LLZSZ4.js +0 -936
- package/dist/ad-group-writes-XZ7XSJ3C.js +0 -170
- package/dist/ad-groups-HI5YNTX3.js +0 -68
- package/dist/ad-writes-E2C4BKWT.js +0 -174
- package/dist/add-3GL76LTP.js +0 -105
- package/dist/add-GDEQN43J.js +0 -303
- package/dist/ads-CE3WX7VO.js +0 -48
- package/dist/ads-K2TIHZFC.js +0 -115
- package/dist/ads-VXF5STHG.js +0 -77
- package/dist/adsets-MTB4LNE3.js +0 -182
- package/dist/advertisers-B5L4LZW2.js +0 -121
- package/dist/analytics-BBX6CU3S.js +0 -2138
- package/dist/analytics-WLV24XJE.js +0 -445
- package/dist/asset-writes-6QPHEAKF.js +0 -48
- package/dist/assign-BSV765I3.js +0 -78
- package/dist/audience-size-KJGSHN45.js +0 -74
- package/dist/audience-writes-3PSC7LRY.js +0 -325
- package/dist/audiences-SUW2NSXG.js +0 -268
- package/dist/audiences-UZ2V66OY.js +0 -86
- package/dist/audit-RKDWAPMX.js +0 -152
- package/dist/autocomplete-BNQXAPDX.js +0 -112
- package/dist/avatars-TEZP5DQN.js +0 -38
- package/dist/bid-pricing-ARPPR45O.js +0 -101
- package/dist/brand-JJDZKJSM.js +0 -22
- package/dist/brief-FSVESR44.js +0 -541
- package/dist/campaign-groups-DRUQ5WBQ.js +0 -97
- package/dist/campaign-writes-JFT4OPL5.js +0 -170
- package/dist/campaign-writes-JFT4OPL5.js.map +0 -1
- package/dist/campaign-writes-SDQ7IPHU.js +0 -166
- package/dist/campaigns-FM2V3RIE.js +0 -111
- package/dist/campaigns-UDPZIIPK.js +0 -107
- package/dist/campaigns-UDPZIIPK.js.map +0 -1
- package/dist/campaigns-XFNPYDO6.js +0 -76
- package/dist/campaigns-XSAJ3XSB.js +0 -130
- package/dist/canvas-WEU5LFUO.js +0 -46
- package/dist/capabilities-HMT6ZBPH.js +0 -145
- package/dist/catalogs-AIRFPJAJ.js +0 -779
- package/dist/catalogs-WR3D6VEY.js +0 -128
- package/dist/changes-ONEEMEMT.js +0 -135
- package/dist/chatgpt-23X76OFD.js +0 -47
- package/dist/chats-77MJ5SIT.js +0 -277
- package/dist/check-TA3HM2QA.js +0 -105
- package/dist/chunk-2572627P.js +0 -547
- package/dist/chunk-34Z4YPXD.js +0 -846
- package/dist/chunk-3HFGJFRM.js +0 -387
- package/dist/chunk-3LFPQSSC.js +0 -406
- package/dist/chunk-42YFMKEU.js +0 -191
- package/dist/chunk-457XEP63.js +0 -97
- package/dist/chunk-5KDFRTMY.js +0 -89
- package/dist/chunk-5MSRVAUZ.js +0 -7112
- package/dist/chunk-5MSRVAUZ.js.map +0 -1
- package/dist/chunk-5YFQPJVS.js +0 -287
- package/dist/chunk-5YQATOWK.js +0 -66
- package/dist/chunk-6IE7RGIC.js +0 -363
- package/dist/chunk-6QBSUYQZ.js +0 -197
- package/dist/chunk-6R2BU3FJ.js +0 -207
- package/dist/chunk-AIOICB5Q.js +0 -392
- package/dist/chunk-ANLLW3KZ.js +0 -228
- package/dist/chunk-AZH6H4TV.js +0 -783
- package/dist/chunk-BBBWMD5R.js +0 -274
- package/dist/chunk-C4I5NCMG.js +0 -224
- package/dist/chunk-EBEZFAUH.js +0 -24014
- package/dist/chunk-EBEZFAUH.js.map +0 -1
- package/dist/chunk-ERSL4WZT.js +0 -4251
- package/dist/chunk-ERSL4WZT.js.map +0 -1
- package/dist/chunk-FR6RFLFP.js +0 -942
- package/dist/chunk-GNKICND2.js +0 -604
- package/dist/chunk-GTNNH3AI.js +0 -23
- package/dist/chunk-HH7B2L3Z.js +0 -219
- package/dist/chunk-HITRGZIS.js +0 -57
- package/dist/chunk-HNS5OURO.js +0 -103
- package/dist/chunk-I2C4IUDP.js +0 -831
- package/dist/chunk-I46D7YXI.js +0 -207
- package/dist/chunk-JCRGGVV5.js +0 -910
- package/dist/chunk-JDUPYPYB.js +0 -676
- package/dist/chunk-KMRXPNQA.js +0 -297
- package/dist/chunk-LIX4S3ZM.js +0 -61
- package/dist/chunk-N4CHIGLO.js +0 -51
- package/dist/chunk-N7KICNZD.js +0 -142
- package/dist/chunk-NT3NJVPZ.js +0 -169
- package/dist/chunk-NXWEQTHL.js +0 -1628
- package/dist/chunk-NXWEQTHL.js.map +0 -1
- package/dist/chunk-PFGRHBQY.js +0 -122
- package/dist/chunk-PGRDGQ23.js +0 -150
- package/dist/chunk-QY4GBBOV.js +0 -249
- package/dist/chunk-SHLA4JF7.js +0 -391
- package/dist/chunk-SP6BZLM4.js +0 -494
- package/dist/chunk-SQCALAI7.js +0 -4229
- package/dist/chunk-SQCALAI7.js.map +0 -1
- package/dist/chunk-SSJR3FZ5.js +0 -19
- package/dist/chunk-ST2777KW.js +0 -156
- package/dist/chunk-TESOYFMQ.js +0 -319
- package/dist/chunk-TGQAEHLA.js +0 -170
- package/dist/chunk-UC5HG2UF.js +0 -275
- package/dist/chunk-UQWBJNQY.js +0 -592
- package/dist/chunk-UX45LDRM.js +0 -63
- package/dist/chunk-VAHDJ5CK.js +0 -344
- package/dist/chunk-VM4IQ75N.js +0 -163
- package/dist/chunk-VOAWBGRQ.js +0 -8954
- package/dist/chunk-VRP677NO.js +0 -455
- package/dist/chunk-WAEWKD75.js +0 -479
- package/dist/chunk-X64DJIZG.js +0 -349
- package/dist/chunk-XYBSTW3P.js +0 -203
- package/dist/chunk-YLDZFO3A.js +0 -67
- package/dist/chunk-YLDZFO3A.js.map +0 -1
- package/dist/chunk-YZYDB77W.js +0 -3868
- package/dist/chunk-ZNH45NXP.js +0 -91
- package/dist/claim-CIUU5QEZ.js +0 -198
- package/dist/companies-VV5XD3BP.js +0 -196
- package/dist/company-EZH6ZPXD.js +0 -306
- package/dist/complete-NKYCSYKX.js +0 -82
- package/dist/connect-TFH4AFFO.js +0 -43
- package/dist/conversation-S6CKSNYW.js +0 -94
- package/dist/conversion-report-V3TGPELD.js +0 -125
- package/dist/conversion-upload-command-K2SB6O6K.js +0 -439
- package/dist/conversion-writes-B2QOYL56.js +0 -120
- package/dist/conversions-ILF5HJOO.js +0 -76
- package/dist/conversions-KXYOUSBR.js +0 -138
- package/dist/copy-writes-2XW7VCDE.js +0 -168
- package/dist/create-BZWX5KLI.js +0 -60
- package/dist/create-WEIGJ4BF.js +0 -237
- package/dist/create-XKGV6TEW.js +0 -133
- package/dist/create-Y44CPUE4.js +0 -208
- package/dist/creatives-DPS46JXU.js +0 -89
- package/dist/creatives-P5MX2AZL.js +0 -58
- package/dist/creatives-WFDFLRQV.js +0 -221
- package/dist/credentials-5EOUA5VL.js +0 -288
- package/dist/critique-4ETQZBQG.js +0 -1459
- package/dist/critique-OYUMBZ4Y.js +0 -230
- package/dist/crm-6UU3GFQU.js +0 -225
- package/dist/crm-UGP57XSN.js +0 -321
- package/dist/currency-UVQIYZUP.js +0 -88
- package/dist/custom-conversions-E5RMKIPB.js +0 -128
- package/dist/customers-RT75T4ZB.js +0 -57
- package/dist/delete-37IIUYQU.js +0 -67
- package/dist/delete-E575BF73.js +0 -55
- package/dist/delete-GQYFBLMP.js +0 -65
- package/dist/demographics-3LIUI2SM.js +0 -139
- package/dist/discard-7OARQRS7.js +0 -67
- package/dist/discover-2TPMVIW7.js +0 -172
- package/dist/domain-ZRWUGUOO.js +0 -99
- package/dist/draft-5XV2BJ3N.js +0 -281
- package/dist/draft-A2I4RLMW.js +0 -308
- package/dist/draft-CVSGNA4Z.js +0 -308
- package/dist/draft-SNBK2KY6.js +0 -218
- package/dist/draft-UHNTXGY7.js +0 -333
- package/dist/experiments-IGMLMSLX.js +0 -234
- package/dist/facets-AURXB76V.js +0 -115
- package/dist/feedback-UDTPDCMS.js +0 -109
- package/dist/feedback-record-Z34XJF6K.js +0 -263
- package/dist/fetch-GR3FXFXL.js +0 -177
- package/dist/fit-SLEEJWVR.js +0 -63
- package/dist/flows-NAFSRRY2.js +0 -248
- package/dist/fonts-POBAXXBC.js +0 -37
- package/dist/forecast-CLQKEFI6.js +0 -169
- package/dist/forecast-RN6VUKLS.js +0 -119
- package/dist/funnel-O3XOHYI3.js +0 -395
- package/dist/get-2MC5LYXY.js +0 -80
- package/dist/get-UQ43T25B.js +0 -57
- package/dist/google-ZZCSZR63.js +0 -3267
- package/dist/google-ads-7DJ5STPS.js +0 -196
- package/dist/history-IXV4ZR6F.js +0 -67
- package/dist/history-QRM76S4Q.js +0 -134
- package/dist/hubspot-HVZNR2IR.js +0 -780
- package/dist/ideas-S2UXZSFB.js +0 -43
- package/dist/images-FYSBKRU6.js +0 -92
- package/dist/ingest-37F3NOLA.js +0 -24
- package/dist/ingest-YQINQGG7.js +0 -108
- package/dist/insights-7V3HWXS6.js +0 -437
- package/dist/insights-UKWLUS5P.js +0 -130
- package/dist/inspect-RVU5RDCE.js +0 -190
- package/dist/instant-experiences-47IACDUJ.js +0 -258
- package/dist/intent-57BBLPLP.js +0 -95
- package/dist/keyword-gap-TSIQBZ6G.js +0 -130
- package/dist/keyword-metrics-7XZXPSQO.js +0 -198
- package/dist/keywords-for-site-A43QNTLD.js +0 -129
- package/dist/landing-NFDGD3PQ.js +0 -28
- package/dist/languages-WKOFWZ7S.js +0 -40
- package/dist/leads-OYRLKTS6.js +0 -538
- package/dist/leads-UHJS7VNH.js +0 -113
- package/dist/learn-POJ5ORBK.js +0 -205
- package/dist/line-item-writes-K4BSUEIJ.js +0 -209
- package/dist/line-items-DLLEPPIN.js +0 -103
- package/dist/line-items-DLLEPPIN.js.map +0 -1
- package/dist/link-L2KC5EIZ.js +0 -65
- package/dist/linkedin-A4U6IGZX.js +0 -1314
- package/dist/linkedin-person-DSLAOKKN.js +0 -137
- package/dist/list-JKB33W6K.js +0 -304
- package/dist/list-PHWCEYCP.js +0 -65
- package/dist/list-Y4V276ND.js +0 -152
- package/dist/locations-EQKMPX4G.js +0 -40
- package/dist/locations-MID4EY6D.js +0 -67
- package/dist/log-O3I5JZCM.js +0 -93
- package/dist/make-GLGNEOK6.js +0 -1368
- package/dist/map-D3EH7S2T.js +0 -434
- package/dist/mcp-R4ZTYQW7.js +0 -715
- package/dist/media-2AKV75J4.js +0 -18
- package/dist/media-sources-TVGS34TE.js +0 -35
- package/dist/members-OBA4MXAQ.js +0 -45
- package/dist/meta-CUWDMZQH.js +0 -122
- package/dist/metrics-35OGYZNY.js +0 -152
- package/dist/normalize-HU37AR7G.js +0 -142
- package/dist/options-HLMTCEDW.js +0 -123
- package/dist/organization-6ZVXU5JC.js +0 -947
- package/dist/page-photos-BY7HNDX2.js +0 -116
- package/dist/performance-PIB2AXKO.js +0 -25
- package/dist/performance-V5WZCJYT.js +0 -5445
- package/dist/pixels-WHQLX4FV.js +0 -60
- package/dist/posts-QAMZRCRY.js +0 -34
- package/dist/preview-SIKDCR27.js +0 -216
- package/dist/promoted-tweet-writes-E4EJZM76.js +0 -181
- package/dist/promoted-tweets-M44AIHSQ.js +0 -119
- package/dist/publish-H7UGB5IP.js +0 -342
- package/dist/query-ZH5CWI3X.js +0 -62
- package/dist/reddit-KCPU4RW4.js +0 -27
- package/dist/refresh-WTSCSEQE.js +0 -95
- package/dist/release-SVOT7QVX.js +0 -61
- package/dist/relevant-pages-7KEKKRQ2.js +0 -99
- package/dist/remove-TY3AF5K5.js +0 -51
- package/dist/reopen-WCUZMTYE.js +0 -64
- package/dist/rerun-FKYNFNSI.js +0 -93
- package/dist/research-N2RWKIRQ.js +0 -72
- package/dist/research-X6ITCPFY.js +0 -263
- package/dist/reset-O77UZD6Z.js +0 -55
- package/dist/reset-TDAMB4BO.js +0 -55
- package/dist/resolve-NC4MLM42.js +0 -122
- package/dist/retry-QNXWTHOL.js +0 -63
- package/dist/retry-XVUWY7ZH.js +0 -61
- package/dist/revenue-D3B4DMBC.js +0 -89
- package/dist/rule-writes-BVHLNJLE.js +0 -523
- package/dist/rules-R47FOFVB.js +0 -217
- package/dist/rules-Y3BH7SO5.js +0 -97
- package/dist/rules-add-GSPFBNYU.js +0 -463
- package/dist/run-G6XAJOJ7.js +0 -67
- package/dist/run-ON72O5YS.js +0 -68
- package/dist/scaffold-ad-YF6FUEJZ.js +0 -1514
- package/dist/scaffold-static-ad-KZRXH4WS.js +0 -1013
- package/dist/scaffold-video-BUOCGJNH.js +0 -886
- package/dist/schedule-7EQLO22N.js +0 -62
- package/dist/scheduled-agents-4WCPCMYC.js +0 -50
- package/dist/schema-KM5MFQUQ.js +0 -133
- package/dist/search-YEYQDDLA.js +0 -175
- package/dist/select-QSGZYOFV.js +0 -104
- package/dist/set-prompt-4OTBGPDQ.js +0 -196
- package/dist/setup-links-E2GARNTU.js +0 -142
- package/dist/shopify-GT6PJ77M.js +0 -3956
- package/dist/site-TMF2P7JR.js +0 -178
- package/dist/sources-47LE2UCO.js +0 -455
- package/dist/sources-H6XX2WBO.js +0 -30
- package/dist/stale-JTX5U752.js +0 -74
- package/dist/status-3X3MECDY.js +0 -63
- package/dist/studies-ZYGAQVMK.js +0 -250
- package/dist/study-writes-APXFR4OK.js +0 -468
- package/dist/sync-HWTVXGOT.js +0 -55
- package/dist/sync-definition-CAPYMYIS.js +0 -67
- package/dist/tag-manager-TU3FBSYO.js +0 -43
- package/dist/tags-75QCVBQB.js +0 -26
- package/dist/tags-7BT63PUE.js +0 -21
- package/dist/tags-7K5RSCHI.js +0 -21
- package/dist/tags-IELH7YAY.js +0 -21
- package/dist/tags-UPA4KKQZ.js +0 -225
- package/dist/targeting-EMKTVFJ2.js +0 -760
- package/dist/targeting-constants-QGZOSY4Q.js +0 -118
- package/dist/targeting-criteria-HJQ2FW6E.js +0 -113
- package/dist/targets-CBZ37ALP.js +0 -104
- package/dist/testimonials-4W6HI2PQ.js +0 -32
- package/dist/themes-RDNVUJHG.js +0 -95
- package/dist/top-companies-CW77UVK3.js +0 -109
- package/dist/transcript-FA2TOVPP.js +0 -163
- package/dist/translate-7W7O6W3J.js +0 -607
- package/dist/triggers-MCP6IGTX.js +0 -142
- package/dist/unlink-RK5V4QO2.js +0 -68
- package/dist/unstage-5JTGVEB7.js +0 -86
- package/dist/update-5AAMF5JP.js +0 -153
- package/dist/update-G2KB3RIW.js +0 -64
- package/dist/update-LCE2QN53.js +0 -99
- package/dist/update-M6DFI2XC.js +0 -190
- package/dist/upload-ORFEAADP.js +0 -127
- package/dist/url-options-6U7QCTAY.js +0 -130
- package/dist/url-params-KQIUVVGX.js +0 -99
- package/dist/validate-BF656HWM.js +0 -120
- package/dist/videos-66FB7BPY.js +0 -39
- package/dist/videos-66FB7BPY.js.map +0 -1
- package/dist/viewer-check-THBLTL2G.js +0 -81
- package/dist/web-2EKHRXCS.js +0 -141
- package/dist/winning-ads-LW5SMMLB.js +0 -86
- package/dist/write-commands-2L7T43YO.js +0 -1183
- package/dist/write-commands-2L7T43YO.js.map +0 -1
- package/dist/write-commands-Z556OHHH.js +0 -1493
- package/dist/write-commands-Z556OHHH.js.map +0 -1
- package/dist/x-F5CSO2RN.js +0 -47
- /package/dist/{account-YSMZB5ZC.js.map → account-RSOGF4XW.js.map} +0 -0
- /package/dist/{account-PYK5VMQ4.js.map → account-WLQBAQMD.js.map} +0 -0
- /package/dist/{account-assets-LSXSW4RQ.js.map → account-assets-WZOYMT3C.js.map} +0 -0
- /package/dist/{account-level-6T2WAPF3.js.map → account-level-XEDTZVNJ.js.map} +0 -0
- /package/dist/{account-reads-2U5OGO72.js.map → account-reads-KJHPUVEV.js.map} +0 -0
- /package/dist/{account-users-XFNFGZB7.js.map → account-users-X7JTXBHS.js.map} +0 -0
- /package/dist/{account-writes-4MAKFM7L.js.map → account-writes-TU3WJRSI.js.map} +0 -0
- /package/dist/{accounts-ZYOQSFX5.js.map → accounts-CC5F7TBB.js.map} +0 -0
- /package/dist/{accounts-ZKY6KPU3.js.map → accounts-UFPI46P5.js.map} +0 -0
- /package/dist/{actions-PF62UVHS.js.map → actions-IG2D6NRC.js.map} +0 -0
- /package/dist/{activecampaign-Q7LLZSZ4.js.map → activecampaign-S76P2FMN.js.map} +0 -0
- /package/dist/{ad-group-writes-XZ7XSJ3C.js.map → ad-group-writes-HLBWN4E4.js.map} +0 -0
- /package/dist/{ad-groups-HI5YNTX3.js.map → ad-groups-33NZD6J3.js.map} +0 -0
- /package/dist/{ad-writes-E2C4BKWT.js.map → ad-writes-7ZDNDZ2E.js.map} +0 -0
- /package/dist/{add-3GL76LTP.js.map → add-GZV57GNI.js.map} +0 -0
- /package/dist/{add-GDEQN43J.js.map → add-V4UNAGVT.js.map} +0 -0
- /package/dist/{ads-K2TIHZFC.js.map → ads-IC52FMFA.js.map} +0 -0
- /package/dist/{ads-CE3WX7VO.js.map → ads-MAPZYX6F.js.map} +0 -0
- /package/dist/{ads-VXF5STHG.js.map → ads-X3AM6M7L.js.map} +0 -0
- /package/dist/{adsets-MTB4LNE3.js.map → adsets-7N4UFAVA.js.map} +0 -0
- /package/dist/{advertisers-B5L4LZW2.js.map → advertisers-B2YDPIMV.js.map} +0 -0
- /package/dist/{analytics-BBX6CU3S.js.map → analytics-4CCQYY7Z.js.map} +0 -0
- /package/dist/{analytics-WLV24XJE.js.map → analytics-XW4ZEEAR.js.map} +0 -0
- /package/dist/{asset-writes-6QPHEAKF.js.map → asset-writes-QPJDD767.js.map} +0 -0
- /package/dist/{assign-BSV765I3.js.map → assign-HE3MH7WE.js.map} +0 -0
- /package/dist/{audience-size-KJGSHN45.js.map → audience-size-W33DMJ7E.js.map} +0 -0
- /package/dist/{audience-writes-3PSC7LRY.js.map → audience-writes-KO7L5YLO.js.map} +0 -0
- /package/dist/{audiences-UZ2V66OY.js.map → audiences-H5WVE2ZA.js.map} +0 -0
- /package/dist/{audiences-SUW2NSXG.js.map → audiences-WCDWN64L.js.map} +0 -0
- /package/dist/{audit-RKDWAPMX.js.map → audit-EFDIMRYT.js.map} +0 -0
- /package/dist/{autocomplete-BNQXAPDX.js.map → autocomplete-H4BKQNXF.js.map} +0 -0
- /package/dist/{avatars-TEZP5DQN.js.map → avatars-VYXUQSSE.js.map} +0 -0
- /package/dist/{bid-pricing-ARPPR45O.js.map → bid-pricing-QK4IJUD2.js.map} +0 -0
- /package/dist/{brand-JJDZKJSM.js.map → brand-JB6NXAAL.js.map} +0 -0
- /package/dist/{brief-FSVESR44.js.map → brief-G5WEJ52V.js.map} +0 -0
- /package/dist/{campaign-groups-DRUQ5WBQ.js.map → campaign-groups-X2WAZE64.js.map} +0 -0
- /package/dist/{campaign-writes-SDQ7IPHU.js.map → campaign-writes-LM6W5MIF.js.map} +0 -0
- /package/dist/{campaigns-FM2V3RIE.js.map → campaigns-7PHPOERA.js.map} +0 -0
- /package/dist/{campaigns-XFNPYDO6.js.map → campaigns-LS65QM6W.js.map} +0 -0
- /package/dist/{campaigns-XSAJ3XSB.js.map → campaigns-PCD72XQX.js.map} +0 -0
- /package/dist/{canvas-WEU5LFUO.js.map → canvas-YULE6CFP.js.map} +0 -0
- /package/dist/{capabilities-HMT6ZBPH.js.map → capabilities-QREOIRIH.js.map} +0 -0
- /package/dist/{catalogs-AIRFPJAJ.js.map → catalogs-OIQS5NSC.js.map} +0 -0
- /package/dist/{catalogs-WR3D6VEY.js.map → catalogs-T23RKYFC.js.map} +0 -0
- /package/dist/{changes-ONEEMEMT.js.map → changes-36C754R4.js.map} +0 -0
- /package/dist/{chatgpt-23X76OFD.js.map → chatgpt-SVGWMEQD.js.map} +0 -0
- /package/dist/{chats-77MJ5SIT.js.map → chats-FF4PN5JC.js.map} +0 -0
- /package/dist/{check-TA3HM2QA.js.map → check-5UHPABWJ.js.map} +0 -0
- /package/dist/{chunk-3LFPQSSC.js.map → chunk-277FW25B.js.map} +0 -0
- /package/dist/{chunk-XYBSTW3P.js.map → chunk-36MUCC42.js.map} +0 -0
- /package/dist/{chunk-ANLLW3KZ.js.map → chunk-4GAEB6NK.js.map} +0 -0
- /package/dist/{chunk-5YQATOWK.js.map → chunk-5DJ5RNAO.js.map} +0 -0
- /package/dist/{chunk-BBBWMD5R.js.map → chunk-5XTGG4PV.js.map} +0 -0
- /package/dist/{chunk-VAHDJ5CK.js.map → chunk-7LLKJN2O.js.map} +0 -0
- /package/dist/{chunk-6IE7RGIC.js.map → chunk-AHUA76NQ.js.map} +0 -0
- /package/dist/{chunk-LIX4S3ZM.js.map → chunk-BHXFGLY5.js.map} +0 -0
- /package/dist/{chunk-3HFGJFRM.js.map → chunk-BOE6YB2D.js.map} +0 -0
- /package/dist/{chunk-X64DJIZG.js.map → chunk-BPRS7VQ3.js.map} +0 -0
- /package/dist/{chunk-JCRGGVV5.js.map → chunk-BRA6IXRS.js.map} +0 -0
- /package/dist/{chunk-YZYDB77W.js.map → chunk-BW36QQQU.js.map} +0 -0
- /package/dist/{chunk-SHLA4JF7.js.map → chunk-CCEDZTP7.js.map} +0 -0
- /package/dist/{chunk-I46D7YXI.js.map → chunk-CLUJWAQE.js.map} +0 -0
- /package/dist/{chunk-QY4GBBOV.js.map → chunk-D2JFOD5O.js.map} +0 -0
- /package/dist/{chunk-2572627P.js.map → chunk-D735YLAX.js.map} +0 -0
- /package/dist/{chunk-6QBSUYQZ.js.map → chunk-DM6CEVCN.js.map} +0 -0
- /package/dist/{chunk-NT3NJVPZ.js.map → chunk-DTUGU4EI.js.map} +0 -0
- /package/dist/{chunk-457XEP63.js.map → chunk-DZGXFV6A.js.map} +0 -0
- /package/dist/{chunk-42YFMKEU.js.map → chunk-F4RZHA74.js.map} +0 -0
- /package/dist/{chunk-UX45LDRM.js.map → chunk-FFFJBNHA.js.map} +0 -0
- /package/dist/{chunk-VM4IQ75N.js.map → chunk-FM6RRYJB.js.map} +0 -0
- /package/dist/{chunk-UQWBJNQY.js.map → chunk-GDXJVEVG.js.map} +0 -0
- /package/dist/{chunk-WAEWKD75.js.map → chunk-GJCB46L6.js.map} +0 -0
- /package/dist/{chunk-KMRXPNQA.js.map → chunk-GNDSD5VQ.js.map} +0 -0
- /package/dist/{chunk-AIOICB5Q.js.map → chunk-HD23TJIT.js.map} +0 -0
- /package/dist/{chunk-GTNNH3AI.js.map → chunk-IYMGQATT.js.map} +0 -0
- /package/dist/{chunk-JDUPYPYB.js.map → chunk-JOXNUKI7.js.map} +0 -0
- /package/dist/{chunk-VRP677NO.js.map → chunk-JYG7N6TV.js.map} +0 -0
- /package/dist/{chunk-ZNH45NXP.js.map → chunk-K5ZOZ2IY.js.map} +0 -0
- /package/dist/{chunk-SP6BZLM4.js.map → chunk-KTCWU4A4.js.map} +0 -0
- /package/dist/{chunk-GNKICND2.js.map → chunk-KYSTZP7J.js.map} +0 -0
- /package/dist/{chunk-C4I5NCMG.js.map → chunk-LE7VW2IU.js.map} +0 -0
- /package/dist/{chunk-AZH6H4TV.js.map → chunk-MGYC2IRC.js.map} +0 -0
- /package/dist/{chunk-UC5HG2UF.js.map → chunk-NALPM5QO.js.map} +0 -0
- /package/dist/{chunk-TGQAEHLA.js.map → chunk-PISGCYXU.js.map} +0 -0
- /package/dist/{chunk-34Z4YPXD.js.map → chunk-PLBITHV6.js.map} +0 -0
- /package/dist/{chunk-VOAWBGRQ.js.map → chunk-RJY5S7RU.js.map} +0 -0
- /package/dist/{chunk-SSJR3FZ5.js.map → chunk-ROVV7INH.js.map} +0 -0
- /package/dist/{chunk-HNS5OURO.js.map → chunk-RRJK46PC.js.map} +0 -0
- /package/dist/{chunk-6R2BU3FJ.js.map → chunk-S335LT4B.js.map} +0 -0
- /package/dist/{chunk-HITRGZIS.js.map → chunk-S3FFLLYF.js.map} +0 -0
- /package/dist/{chunk-N4CHIGLO.js.map → chunk-SBFP3REK.js.map} +0 -0
- /package/dist/{chunk-PFGRHBQY.js.map → chunk-SG2BCYWB.js.map} +0 -0
- /package/dist/{chunk-FR6RFLFP.js.map → chunk-T3KW63H7.js.map} +0 -0
- /package/dist/{chunk-5YFQPJVS.js.map → chunk-UQ7SJMGJ.js.map} +0 -0
- /package/dist/{chunk-I2C4IUDP.js.map → chunk-WVTKUCAO.js.map} +0 -0
- /package/dist/{chunk-N7KICNZD.js.map → chunk-X45ASFZW.js.map} +0 -0
- /package/dist/{chunk-HH7B2L3Z.js.map → chunk-YLQWWLCW.js.map} +0 -0
- /package/dist/{chunk-5KDFRTMY.js.map → chunk-ZAM6PVHX.js.map} +0 -0
- /package/dist/{chunk-ST2777KW.js.map → chunk-ZGWXGK5S.js.map} +0 -0
- /package/dist/{chunk-PGRDGQ23.js.map → chunk-ZNRGH4NS.js.map} +0 -0
- /package/dist/{chunk-TESOYFMQ.js.map → chunk-ZQXHOHSC.js.map} +0 -0
- /package/dist/{claim-CIUU5QEZ.js.map → claim-JMF4O2SQ.js.map} +0 -0
- /package/dist/{companies-VV5XD3BP.js.map → companies-2DHNNS34.js.map} +0 -0
- /package/dist/{company-EZH6ZPXD.js.map → company-UVLP5WE7.js.map} +0 -0
- /package/dist/{complete-NKYCSYKX.js.map → complete-MVR6QHON.js.map} +0 -0
- /package/dist/{connect-TFH4AFFO.js.map → connect-WTDJKDTR.js.map} +0 -0
- /package/dist/{conversation-S6CKSNYW.js.map → conversation-O3XOVYC3.js.map} +0 -0
- /package/dist/{conversion-report-V3TGPELD.js.map → conversion-report-DKXFHLLX.js.map} +0 -0
- /package/dist/{conversion-upload-command-K2SB6O6K.js.map → conversion-upload-command-MHZSSJXN.js.map} +0 -0
- /package/dist/{conversion-writes-B2QOYL56.js.map → conversion-writes-7ODJDAUP.js.map} +0 -0
- /package/dist/{conversions-ILF5HJOO.js.map → conversions-BKVGNNC6.js.map} +0 -0
- /package/dist/{conversions-KXYOUSBR.js.map → conversions-HUQJ767W.js.map} +0 -0
- /package/dist/{copy-writes-2XW7VCDE.js.map → copy-writes-JH2AECES.js.map} +0 -0
- /package/dist/{create-WEIGJ4BF.js.map → create-EXLN4XHF.js.map} +0 -0
- /package/dist/{create-Y44CPUE4.js.map → create-TCT3IMAU.js.map} +0 -0
- /package/dist/{create-BZWX5KLI.js.map → create-YE3VLUUP.js.map} +0 -0
- /package/dist/{create-XKGV6TEW.js.map → create-YGAMPG2C.js.map} +0 -0
- /package/dist/{creatives-WFDFLRQV.js.map → creatives-IXR4RTSF.js.map} +0 -0
- /package/dist/{creatives-DPS46JXU.js.map → creatives-L7F4BF3F.js.map} +0 -0
- /package/dist/{creatives-P5MX2AZL.js.map → creatives-WUUHFCFY.js.map} +0 -0
- /package/dist/{credentials-5EOUA5VL.js.map → credentials-UY6OPN7W.js.map} +0 -0
- /package/dist/{critique-4ETQZBQG.js.map → critique-DU7K2KVR.js.map} +0 -0
- /package/dist/{critique-OYUMBZ4Y.js.map → critique-ZYLCH5SO.js.map} +0 -0
- /package/dist/{crm-6UU3GFQU.js.map → crm-F64BDO4X.js.map} +0 -0
- /package/dist/{crm-UGP57XSN.js.map → crm-K2QSZ2X7.js.map} +0 -0
- /package/dist/{currency-UVQIYZUP.js.map → currency-R4ORE2U3.js.map} +0 -0
- /package/dist/{custom-conversions-E5RMKIPB.js.map → custom-conversions-6KYF26SK.js.map} +0 -0
- /package/dist/{customers-RT75T4ZB.js.map → customers-TJDVAPTR.js.map} +0 -0
- /package/dist/{delete-37IIUYQU.js.map → delete-4XHBC4UR.js.map} +0 -0
- /package/dist/{delete-E575BF73.js.map → delete-A4R2R7HF.js.map} +0 -0
- /package/dist/{delete-GQYFBLMP.js.map → delete-SUHPUAE5.js.map} +0 -0
- /package/dist/{demographics-3LIUI2SM.js.map → demographics-MZBHPCT3.js.map} +0 -0
- /package/dist/{discard-7OARQRS7.js.map → discard-HUP4DXIJ.js.map} +0 -0
- /package/dist/{discover-2TPMVIW7.js.map → discover-GSJRZUOC.js.map} +0 -0
- /package/dist/{domain-ZRWUGUOO.js.map → domain-WFT5NJNP.js.map} +0 -0
- /package/dist/{draft-UHNTXGY7.js.map → draft-6HTSF36L.js.map} +0 -0
- /package/dist/{draft-SNBK2KY6.js.map → draft-6XS36CMT.js.map} +0 -0
- /package/dist/{draft-5XV2BJ3N.js.map → draft-LPVK6YHI.js.map} +0 -0
- /package/dist/{draft-CVSGNA4Z.js.map → draft-RTZBROFS.js.map} +0 -0
- /package/dist/{draft-A2I4RLMW.js.map → draft-SNKUG6UX.js.map} +0 -0
- /package/dist/{experiments-IGMLMSLX.js.map → experiments-PJWBABLJ.js.map} +0 -0
- /package/dist/{facets-AURXB76V.js.map → facets-SWSXRJ5G.js.map} +0 -0
- /package/dist/{feedback-UDTPDCMS.js.map → feedback-HL3RH5AO.js.map} +0 -0
- /package/dist/{feedback-record-Z34XJF6K.js.map → feedback-record-YDI2MHAV.js.map} +0 -0
- /package/dist/{fetch-GR3FXFXL.js.map → fetch-ASLXGN7O.js.map} +0 -0
- /package/dist/{fit-SLEEJWVR.js.map → fit-I3FZJKOK.js.map} +0 -0
- /package/dist/{flows-NAFSRRY2.js.map → flows-BP7IQ4YA.js.map} +0 -0
- /package/dist/{fonts-POBAXXBC.js.map → fonts-U23DJIT2.js.map} +0 -0
- /package/dist/{forecast-RN6VUKLS.js.map → forecast-DUAOZEMB.js.map} +0 -0
- /package/dist/{forecast-CLQKEFI6.js.map → forecast-LXTCKRZE.js.map} +0 -0
- /package/dist/{funnel-O3XOHYI3.js.map → funnel-727XATM5.js.map} +0 -0
- /package/dist/{get-UQ43T25B.js.map → get-4567QZ5E.js.map} +0 -0
- /package/dist/{get-2MC5LYXY.js.map → get-PB62YT3J.js.map} +0 -0
- /package/dist/{google-ZZCSZR63.js.map → google-VPL4KZDP.js.map} +0 -0
- /package/dist/{google-ads-7DJ5STPS.js.map → google-ads-XM4NUOST.js.map} +0 -0
- /package/dist/{history-QRM76S4Q.js.map → history-26OX4MCJ.js.map} +0 -0
- /package/dist/{history-IXV4ZR6F.js.map → history-5MRLNTCI.js.map} +0 -0
- /package/dist/{hubspot-HVZNR2IR.js.map → hubspot-S3ED4AYK.js.map} +0 -0
- /package/dist/{ideas-S2UXZSFB.js.map → ideas-KNIT3KNY.js.map} +0 -0
- /package/dist/{images-FYSBKRU6.js.map → images-SCC3QYPG.js.map} +0 -0
- /package/dist/{ingest-37F3NOLA.js.map → ingest-667IMIGB.js.map} +0 -0
- /package/dist/{ingest-YQINQGG7.js.map → ingest-PXCOSPP5.js.map} +0 -0
- /package/dist/{insights-7V3HWXS6.js.map → insights-EQW34IL4.js.map} +0 -0
- /package/dist/{insights-UKWLUS5P.js.map → insights-JZVXC7IJ.js.map} +0 -0
- /package/dist/{inspect-RVU5RDCE.js.map → inspect-PSWSCTLJ.js.map} +0 -0
- /package/dist/{instant-experiences-47IACDUJ.js.map → instant-experiences-ABIS6KUQ.js.map} +0 -0
- /package/dist/{intent-57BBLPLP.js.map → intent-NSHW7EJT.js.map} +0 -0
- /package/dist/{keyword-gap-TSIQBZ6G.js.map → keyword-gap-ITTWKBWZ.js.map} +0 -0
- /package/dist/{keyword-metrics-7XZXPSQO.js.map → keyword-metrics-HQSNLJM3.js.map} +0 -0
- /package/dist/{keywords-for-site-A43QNTLD.js.map → keywords-for-site-FX6KCUNV.js.map} +0 -0
- /package/dist/{landing-NFDGD3PQ.js.map → landing-X4PG6XWU.js.map} +0 -0
- /package/dist/{languages-WKOFWZ7S.js.map → languages-MEFQQBJ2.js.map} +0 -0
- /package/dist/{leads-UHJS7VNH.js.map → leads-ONFUUBAZ.js.map} +0 -0
- /package/dist/{leads-OYRLKTS6.js.map → leads-WKGUT3EA.js.map} +0 -0
- /package/dist/{learn-POJ5ORBK.js.map → learn-2QPP7NHC.js.map} +0 -0
- /package/dist/{line-item-writes-K4BSUEIJ.js.map → line-item-writes-2XGDEEV3.js.map} +0 -0
- /package/dist/{link-L2KC5EIZ.js.map → link-QL7Y2LML.js.map} +0 -0
- /package/dist/{linkedin-A4U6IGZX.js.map → linkedin-4MGRSWXZ.js.map} +0 -0
- /package/dist/{linkedin-person-DSLAOKKN.js.map → linkedin-person-E4JJG4J5.js.map} +0 -0
- /package/dist/{list-Y4V276ND.js.map → list-4SAXAQCN.js.map} +0 -0
- /package/dist/{list-PHWCEYCP.js.map → list-GF3LEAM7.js.map} +0 -0
- /package/dist/{list-JKB33W6K.js.map → list-KLDAPWIB.js.map} +0 -0
- /package/dist/{locations-EQKMPX4G.js.map → locations-RLWAS6AC.js.map} +0 -0
- /package/dist/{locations-MID4EY6D.js.map → locations-UKBOT6SB.js.map} +0 -0
- /package/dist/{log-O3I5JZCM.js.map → log-4LLRZB2M.js.map} +0 -0
- /package/dist/{make-GLGNEOK6.js.map → make-ZMFGPL7A.js.map} +0 -0
- /package/dist/{map-D3EH7S2T.js.map → map-NKRFK545.js.map} +0 -0
- /package/dist/{mcp-R4ZTYQW7.js.map → mcp-VARLEIKU.js.map} +0 -0
- /package/dist/{media-2AKV75J4.js.map → media-LE2PO4Q4.js.map} +0 -0
- /package/dist/{media-sources-TVGS34TE.js.map → media-sources-4Y53RHUW.js.map} +0 -0
- /package/dist/{members-OBA4MXAQ.js.map → members-HSPPVHU2.js.map} +0 -0
- /package/dist/{meta-CUWDMZQH.js.map → meta-KS3SQSYZ.js.map} +0 -0
- /package/dist/{metrics-35OGYZNY.js.map → metrics-K6FDCMK7.js.map} +0 -0
- /package/dist/{normalize-HU37AR7G.js.map → normalize-LDIXBNSA.js.map} +0 -0
- /package/dist/{options-HLMTCEDW.js.map → options-2GEONNJF.js.map} +0 -0
- /package/dist/{organization-6ZVXU5JC.js.map → organization-W5JLJ4KP.js.map} +0 -0
- /package/dist/{page-photos-BY7HNDX2.js.map → page-photos-TOM74T5U.js.map} +0 -0
- /package/dist/{performance-PIB2AXKO.js.map → performance-34LV3QGQ.js.map} +0 -0
- /package/dist/{performance-V5WZCJYT.js.map → performance-CIUVIFD7.js.map} +0 -0
- /package/dist/{pixels-WHQLX4FV.js.map → pixels-Z7ZGXAGB.js.map} +0 -0
- /package/dist/{posts-QAMZRCRY.js.map → posts-37LZKGWU.js.map} +0 -0
- /package/dist/{preview-SIKDCR27.js.map → preview-CWRGDFCP.js.map} +0 -0
- /package/dist/{promoted-tweet-writes-E4EJZM76.js.map → promoted-tweet-writes-7XGCGHPN.js.map} +0 -0
- /package/dist/{promoted-tweets-M44AIHSQ.js.map → promoted-tweets-EZZHHGS6.js.map} +0 -0
- /package/dist/{publish-H7UGB5IP.js.map → publish-OB7UZSKT.js.map} +0 -0
- /package/dist/{query-ZH5CWI3X.js.map → query-42QT56FJ.js.map} +0 -0
- /package/dist/{reddit-KCPU4RW4.js.map → reddit-PR2SBLQN.js.map} +0 -0
- /package/dist/{refresh-WTSCSEQE.js.map → refresh-EJ6XQNAQ.js.map} +0 -0
- /package/dist/{release-SVOT7QVX.js.map → release-FV6M3X4D.js.map} +0 -0
- /package/dist/{relevant-pages-7KEKKRQ2.js.map → relevant-pages-VOICMQ7U.js.map} +0 -0
- /package/dist/{remove-TY3AF5K5.js.map → remove-6LK6L3KE.js.map} +0 -0
- /package/dist/{reopen-WCUZMTYE.js.map → reopen-2VHSGKNJ.js.map} +0 -0
- /package/dist/{rerun-FKYNFNSI.js.map → rerun-W6YHMXCK.js.map} +0 -0
- /package/dist/{research-X6ITCPFY.js.map → research-6NUBHVSB.js.map} +0 -0
- /package/dist/{research-N2RWKIRQ.js.map → research-BYDRBMN5.js.map} +0 -0
- /package/dist/{reset-TDAMB4BO.js.map → reset-MPGBOFJD.js.map} +0 -0
- /package/dist/{reset-O77UZD6Z.js.map → reset-YO66ZZRC.js.map} +0 -0
- /package/dist/{resolve-NC4MLM42.js.map → resolve-SGXOPZ4W.js.map} +0 -0
- /package/dist/{retry-QNXWTHOL.js.map → retry-LXMT4I2X.js.map} +0 -0
- /package/dist/{retry-XVUWY7ZH.js.map → retry-Z2ZUPUQI.js.map} +0 -0
- /package/dist/{revenue-D3B4DMBC.js.map → revenue-MZ2C65GL.js.map} +0 -0
- /package/dist/{rule-writes-BVHLNJLE.js.map → rule-writes-KLYXCD7Z.js.map} +0 -0
- /package/dist/{rules-Y3BH7SO5.js.map → rules-CDMHA2KQ.js.map} +0 -0
- /package/dist/{rules-R47FOFVB.js.map → rules-NALFFFDR.js.map} +0 -0
- /package/dist/{rules-add-GSPFBNYU.js.map → rules-add-HEXUMODD.js.map} +0 -0
- /package/dist/{run-G6XAJOJ7.js.map → run-VNL34BKW.js.map} +0 -0
- /package/dist/{run-ON72O5YS.js.map → run-WTD73KD5.js.map} +0 -0
- /package/dist/{scaffold-ad-YF6FUEJZ.js.map → scaffold-ad-S2DZSRM4.js.map} +0 -0
- /package/dist/{scaffold-static-ad-KZRXH4WS.js.map → scaffold-static-ad-DW6OMF3D.js.map} +0 -0
- /package/dist/{scaffold-video-BUOCGJNH.js.map → scaffold-video-EXLUICRE.js.map} +0 -0
- /package/dist/{schedule-7EQLO22N.js.map → schedule-7GAFQXF7.js.map} +0 -0
- /package/dist/{scheduled-agents-4WCPCMYC.js.map → scheduled-agents-7JW3JIOL.js.map} +0 -0
- /package/dist/{schema-KM5MFQUQ.js.map → schema-PHGVKZ4X.js.map} +0 -0
- /package/dist/{search-YEYQDDLA.js.map → search-VCRWREOU.js.map} +0 -0
- /package/dist/{select-QSGZYOFV.js.map → select-BPGZYHR3.js.map} +0 -0
- /package/dist/{set-prompt-4OTBGPDQ.js.map → set-prompt-E776UHMH.js.map} +0 -0
- /package/dist/{setup-links-E2GARNTU.js.map → setup-links-2AMTW6O5.js.map} +0 -0
- /package/dist/{shopify-GT6PJ77M.js.map → shopify-SUSDBUUZ.js.map} +0 -0
- /package/dist/{site-TMF2P7JR.js.map → site-DH6Z2RX3.js.map} +0 -0
- /package/dist/{sources-47LE2UCO.js.map → sources-PSM2A5QD.js.map} +0 -0
- /package/dist/{sources-H6XX2WBO.js.map → sources-ZJ7EZ6TJ.js.map} +0 -0
- /package/dist/{stale-JTX5U752.js.map → stale-RHW4OYXY.js.map} +0 -0
- /package/dist/{status-3X3MECDY.js.map → status-JHAVZIYW.js.map} +0 -0
- /package/dist/{studies-ZYGAQVMK.js.map → studies-2GPTKJCT.js.map} +0 -0
- /package/dist/{study-writes-APXFR4OK.js.map → study-writes-QCSAPE2G.js.map} +0 -0
- /package/dist/{sync-HWTVXGOT.js.map → sync-RQ3NUCGE.js.map} +0 -0
- /package/dist/{sync-definition-CAPYMYIS.js.map → sync-definition-3DRKTX3V.js.map} +0 -0
- /package/dist/{tag-manager-TU3FBSYO.js.map → tag-manager-BVPLGLTF.js.map} +0 -0
- /package/dist/{tags-IELH7YAY.js.map → tags-A2JZRMKV.js.map} +0 -0
- /package/dist/{tags-75QCVBQB.js.map → tags-H2PQWUNE.js.map} +0 -0
- /package/dist/{tags-7BT63PUE.js.map → tags-HOZYO6FL.js.map} +0 -0
- /package/dist/{tags-UPA4KKQZ.js.map → tags-WH7LGHNT.js.map} +0 -0
- /package/dist/{tags-7K5RSCHI.js.map → tags-WRUUTQCJ.js.map} +0 -0
- /package/dist/{targeting-EMKTVFJ2.js.map → targeting-SOMGPSKV.js.map} +0 -0
- /package/dist/{targeting-constants-QGZOSY4Q.js.map → targeting-constants-236ES5HE.js.map} +0 -0
- /package/dist/{targeting-criteria-HJQ2FW6E.js.map → targeting-criteria-APNZ7DN3.js.map} +0 -0
- /package/dist/{targets-CBZ37ALP.js.map → targets-LNZBOK2B.js.map} +0 -0
- /package/dist/{testimonials-4W6HI2PQ.js.map → testimonials-Y6RADYJ5.js.map} +0 -0
- /package/dist/{themes-RDNVUJHG.js.map → themes-7I6URZUW.js.map} +0 -0
- /package/dist/{top-companies-CW77UVK3.js.map → top-companies-HZQTHV2H.js.map} +0 -0
- /package/dist/{transcript-FA2TOVPP.js.map → transcript-SRHKH3JL.js.map} +0 -0
- /package/dist/{translate-7W7O6W3J.js.map → translate-C5R3OMTL.js.map} +0 -0
- /package/dist/{triggers-MCP6IGTX.js.map → triggers-QISDVK4W.js.map} +0 -0
- /package/dist/{unlink-RK5V4QO2.js.map → unlink-2TDYZUCT.js.map} +0 -0
- /package/dist/{unstage-5JTGVEB7.js.map → unstage-KRBN7SHW.js.map} +0 -0
- /package/dist/{update-G2KB3RIW.js.map → update-GE6XVCDF.js.map} +0 -0
- /package/dist/{update-5AAMF5JP.js.map → update-KG4XAUC7.js.map} +0 -0
- /package/dist/{update-M6DFI2XC.js.map → update-PAYTKLZ2.js.map} +0 -0
- /package/dist/{update-LCE2QN53.js.map → update-QSGTZHD4.js.map} +0 -0
- /package/dist/{upload-ORFEAADP.js.map → upload-5R5CCOE6.js.map} +0 -0
- /package/dist/{url-options-6U7QCTAY.js.map → url-options-LA6BL3GS.js.map} +0 -0
- /package/dist/{url-params-KQIUVVGX.js.map → url-params-L4WF3D2V.js.map} +0 -0
- /package/dist/{validate-BF656HWM.js.map → validate-6AHIXVW4.js.map} +0 -0
- /package/dist/{viewer-check-THBLTL2G.js.map → viewer-check-TEQVRF4O.js.map} +0 -0
- /package/dist/{web-2EKHRXCS.js.map → web-3G6UP3YV.js.map} +0 -0
- /package/dist/{winning-ads-LW5SMMLB.js.map → winning-ads-7SI2VN7U.js.map} +0 -0
- /package/dist/{x-F5CSO2RN.js.map → x-7VY6K7JS.js.map} +0 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import {
|
|
2
|
+
handleMetaError,
|
|
3
|
+
resolveAccountIdArg
|
|
4
|
+
} from "./chunk-B2POVFR2.js";
|
|
5
|
+
import "./chunk-Y2JZX6JB.js";
|
|
6
|
+
import {
|
|
7
|
+
writeJsonEnvelope
|
|
8
|
+
} from "./chunk-ZRP7Y2DM.js";
|
|
9
|
+
import {
|
|
10
|
+
apiGet
|
|
11
|
+
} from "./chunk-X7VQFLHI.js";
|
|
12
|
+
import "./chunk-LU4HI4KI.js";
|
|
13
|
+
import "./chunk-LGK7UWBN.js";
|
|
14
|
+
import {
|
|
15
|
+
registerSchema
|
|
16
|
+
} from "./chunk-Q7US4OOA.js";
|
|
17
|
+
import "./chunk-YQSBHWOI.js";
|
|
18
|
+
|
|
19
|
+
// src/commands/ads/meta/rules.ts
|
|
20
|
+
import { defineCommand } from "citty";
|
|
21
|
+
function compactRule(row) {
|
|
22
|
+
return {
|
|
23
|
+
id: row.id,
|
|
24
|
+
name: row.name,
|
|
25
|
+
status: row.status,
|
|
26
|
+
does: row.description,
|
|
27
|
+
...row.disable_error_code ? { disable_error_code: row.disable_error_code } : {},
|
|
28
|
+
updated_time: row.updated_time
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function ruleListHints(rows) {
|
|
32
|
+
const hints = [];
|
|
33
|
+
if (rows.length === 0) {
|
|
34
|
+
hints.push(
|
|
35
|
+
'No automated rules on this account. Stage one with `baker ads meta rules create --name \u2026 --apply-to ad --when "cost_per_result>20" --action pause`.'
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
const issues = rows.filter((row) => row.status === "HAS_ISSUES");
|
|
39
|
+
if (issues.length > 0) {
|
|
40
|
+
hints.push(
|
|
41
|
+
`${issues.map((row) => row.name ?? row.id).join(", ")} ${issues.length === 1 ? "has" : "have"} been stopped by Meta (HAS_ISSUES) \u2014 read it with --rule-id and fix the spec with \`rules update\`.`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
if (rows.length > 0) {
|
|
45
|
+
hints.push(
|
|
46
|
+
"`rules history --rule-id <id>` shows what a rule did and when; `rules preview <id>` what it would act on now."
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return hints;
|
|
50
|
+
}
|
|
51
|
+
registerSchema({
|
|
52
|
+
command: "ads.meta.rules",
|
|
53
|
+
description: "List the automated rules on a Meta ad account (Ads Manager \u2192 Automated rules): each rule's status and what it does, in words. --rule-id reads one; --full adds its evaluation_spec, execution_spec and schedule_spec in the shape `rules update --file` takes (money in major units of the account currency).",
|
|
54
|
+
args: {
|
|
55
|
+
"account-id": { type: "string", description: "Meta ad account ID (act_123)", required: false },
|
|
56
|
+
"rule-id": { type: "string", description: "Read one rule", required: false },
|
|
57
|
+
full: { type: "boolean", description: "Include the specs and timestamps", required: false }
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
var listCommand = defineCommand({
|
|
61
|
+
meta: {
|
|
62
|
+
name: "list",
|
|
63
|
+
description: "List automated rules. Runs by default. Example: baker ads meta rules --account-id act_123 \xB7 one rule in full: baker ads meta rules --rule-id 1132635173044914 --full"
|
|
64
|
+
},
|
|
65
|
+
args: {
|
|
66
|
+
"account-id": { type: "string", description: "Meta ad account ID" },
|
|
67
|
+
"rule-id": { type: "string", description: "Read one rule" },
|
|
68
|
+
full: { type: "boolean", description: "Include the specs and timestamps" }
|
|
69
|
+
},
|
|
70
|
+
run: async ({ args }) => {
|
|
71
|
+
const accountId = resolveAccountIdArg(args);
|
|
72
|
+
try {
|
|
73
|
+
const params = { "account-id": accountId };
|
|
74
|
+
if (args["rule-id"]) params["rule-id"] = String(args["rule-id"]);
|
|
75
|
+
const rows = await apiGet("/api/ads/meta/rules", params);
|
|
76
|
+
const full = Boolean(args.full) || Boolean(args["rule-id"]);
|
|
77
|
+
writeJsonEnvelope({ ok: true, data: full ? rows : rows.map(compactRule), hints: ruleListHints(rows) });
|
|
78
|
+
} catch (err) {
|
|
79
|
+
handleMetaError(err);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
function compactHistory(row) {
|
|
84
|
+
const changes = (row.results ?? []).flatMap(
|
|
85
|
+
(result) => (result.actions ?? []).map((action) => ({
|
|
86
|
+
object_id: result.object_id,
|
|
87
|
+
action: action.action,
|
|
88
|
+
...action.field ? { field: action.field } : {},
|
|
89
|
+
...action.old_value !== void 0 ? { from: action.old_value } : {},
|
|
90
|
+
...action.new_value !== void 0 ? { to: action.new_value } : {}
|
|
91
|
+
}))
|
|
92
|
+
);
|
|
93
|
+
return {
|
|
94
|
+
timestamp: row.timestamp,
|
|
95
|
+
rule_id: row.rule_id,
|
|
96
|
+
...row.is_manual ? { manual: true } : {},
|
|
97
|
+
changes,
|
|
98
|
+
...row.exception_message ? { error: row.exception_message } : {}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
registerSchema({
|
|
102
|
+
command: "ads.meta.rules.history",
|
|
103
|
+
description: "What automated rules did and when: each run with the objects it changed (PAUSED, CHANGED_BUDGET, \u2026, old \u2192 new value). Without --rule-id, every rule on the account, newest first.",
|
|
104
|
+
args: {
|
|
105
|
+
"account-id": { type: "string", description: "Meta ad account ID (act_123)", required: false },
|
|
106
|
+
"rule-id": { type: "string", description: "One rule's runs", required: false },
|
|
107
|
+
"object-id": { type: "string", description: "Only runs that touched this ad, ad set or campaign", required: false },
|
|
108
|
+
action: { type: "string", description: "Only this action, e.g. PAUSED, CHANGED_BUDGET", required: false },
|
|
109
|
+
"hide-no-changes": { type: "boolean", description: "Drop runs that changed nothing", required: false },
|
|
110
|
+
limit: { type: "string", description: "Max runs (default 50)", required: false },
|
|
111
|
+
full: { type: "boolean", description: "Include the rule's specs at each run", required: false }
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
var historyCommand = defineCommand({
|
|
115
|
+
meta: {
|
|
116
|
+
name: "history",
|
|
117
|
+
description: "What rules did and when. Example: baker ads meta rules history --rule-id 1132635173044914 --hide-no-changes \xB7 every rule: baker ads meta rules history --account-id act_123"
|
|
118
|
+
},
|
|
119
|
+
args: {
|
|
120
|
+
"account-id": { type: "string", description: "Meta ad account ID" },
|
|
121
|
+
"rule-id": { type: "string", description: "One rule's runs" },
|
|
122
|
+
"object-id": { type: "string", description: "Only runs that touched this object" },
|
|
123
|
+
action: { type: "string", description: "Only this action (PAUSED, CHANGED_BUDGET, \u2026)" },
|
|
124
|
+
"hide-no-changes": { type: "boolean", description: "Drop runs that changed nothing" },
|
|
125
|
+
limit: { type: "string", description: "Max runs (default 50)" },
|
|
126
|
+
full: { type: "boolean", description: "Include the rule's specs at each run" }
|
|
127
|
+
},
|
|
128
|
+
run: async ({ args }) => {
|
|
129
|
+
const accountId = resolveAccountIdArg(args);
|
|
130
|
+
try {
|
|
131
|
+
const params = { "account-id": accountId };
|
|
132
|
+
for (const key of ["rule-id", "object-id", "action", "limit"]) {
|
|
133
|
+
if (args[key]) params[key] = String(args[key]);
|
|
134
|
+
}
|
|
135
|
+
if (args["hide-no-changes"]) params["hide-no-changes"] = "true";
|
|
136
|
+
const rows = await apiGet("/api/ads/meta/rules/history", params);
|
|
137
|
+
const hints = rows.length === 0 ? [
|
|
138
|
+
"No runs recorded. A daily rule first runs just after midnight in the ad account's time zone; a switched-off rule never runs."
|
|
139
|
+
] : [];
|
|
140
|
+
writeJsonEnvelope({ ok: true, data: args.full ? rows : rows.map(compactHistory), hints });
|
|
141
|
+
} catch (err) {
|
|
142
|
+
handleMetaError(err);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
registerSchema({
|
|
147
|
+
command: "ads.meta.rules.preview",
|
|
148
|
+
description: "Which ads, ad sets or campaigns a live schedule rule would act on right now, by Meta's own evaluation. Changes nothing.",
|
|
149
|
+
args: {
|
|
150
|
+
id: { type: "positional", description: "Rule id", required: true },
|
|
151
|
+
"account-id": { type: "string", description: "Meta ad account ID (act_123)", required: false }
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
var previewCommand = defineCommand({
|
|
155
|
+
meta: {
|
|
156
|
+
name: "preview",
|
|
157
|
+
description: "What a rule would act on right now (changes nothing). Example: baker ads meta rules preview 1132635173044914"
|
|
158
|
+
},
|
|
159
|
+
args: {
|
|
160
|
+
id: { type: "positional", description: "Rule id", required: true },
|
|
161
|
+
"account-id": { type: "string", description: "Meta ad account ID" }
|
|
162
|
+
},
|
|
163
|
+
run: async ({ args }) => {
|
|
164
|
+
const accountId = resolveAccountIdArg(args);
|
|
165
|
+
try {
|
|
166
|
+
const data = await apiGet("/api/ads/meta/rules/preview", {
|
|
167
|
+
"account-id": accountId,
|
|
168
|
+
"rule-id": String(args.id)
|
|
169
|
+
});
|
|
170
|
+
const hints = data.matched.length === 0 ? ["Nothing matches right now \u2014 the rule would change nothing if it ran now."] : [];
|
|
171
|
+
writeJsonEnvelope({ ok: true, data, hints });
|
|
172
|
+
} catch (err) {
|
|
173
|
+
handleMetaError(err);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
var rulesCommand = defineCommand({
|
|
178
|
+
meta: {
|
|
179
|
+
name: "rules",
|
|
180
|
+
description: `Meta automated rules \u2014 Meta's own automation, which runs on Meta with no Baker involvement once created.
|
|
181
|
+
Use one for a standing "if this metric crosses that line, do X" that needs no judgement; use a Baker scheduled agent when the call needs reasoning.
|
|
182
|
+
|
|
183
|
+
Examples:
|
|
184
|
+
baker ads meta rules --account-id act_123 # every rule, what it does
|
|
185
|
+
baker ads meta rules --rule-id 1132635173044914 # one rule with its specs
|
|
186
|
+
baker ads meta rules history --rule-id 1132635173044914 --hide-no-changes # what it did
|
|
187
|
+
baker ads meta rules preview 1132635173044914 # what it would act on now
|
|
188
|
+
baker ads meta rules create --name "Stop expensive ads" --apply-to ad --when "cost_per_result>20" --action pause
|
|
189
|
+
baker ads meta rules update 1132635173044914 --name "Stop very expensive ads"
|
|
190
|
+
baker ads meta rules disable|enable|delete 1132635173044914
|
|
191
|
+
baker ads meta rules run 1132635173044914 # run it once, at publish`
|
|
192
|
+
},
|
|
193
|
+
subCommands: {
|
|
194
|
+
list: listCommand,
|
|
195
|
+
history: historyCommand,
|
|
196
|
+
preview: previewCommand,
|
|
197
|
+
create: () => import("./rule-writes-KLYXCD7Z.js").then((m) => m.rulesCreateCommand),
|
|
198
|
+
update: () => import("./rule-writes-KLYXCD7Z.js").then((m) => m.rulesUpdateCommand),
|
|
199
|
+
enable: () => import("./rule-writes-KLYXCD7Z.js").then((m) => m.rulesEnableCommand),
|
|
200
|
+
disable: () => import("./rule-writes-KLYXCD7Z.js").then((m) => m.rulesDisableCommand),
|
|
201
|
+
delete: () => import("./rule-writes-KLYXCD7Z.js").then((m) => m.rulesDeleteCommand),
|
|
202
|
+
run: () => import("./rule-writes-KLYXCD7Z.js").then((m) => m.rulesRunCommand)
|
|
203
|
+
},
|
|
204
|
+
args: {
|
|
205
|
+
"account-id": { type: "string", description: "Meta ad account ID" },
|
|
206
|
+
"rule-id": { type: "string", description: "Read one rule" },
|
|
207
|
+
full: { type: "boolean", description: "Include the specs and timestamps" }
|
|
208
|
+
},
|
|
209
|
+
default: "list"
|
|
210
|
+
});
|
|
211
|
+
export {
|
|
212
|
+
compactHistory,
|
|
213
|
+
compactRule,
|
|
214
|
+
ruleListHints,
|
|
215
|
+
rulesCommand
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=rules-NALFFFDR.js.map
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
import {
|
|
2
|
+
rulesView
|
|
3
|
+
} from "./chunk-QVQKCVP7.js";
|
|
4
|
+
import {
|
|
5
|
+
fetchRunRecord
|
|
6
|
+
} from "./chunk-IYMGQATT.js";
|
|
7
|
+
import {
|
|
8
|
+
loadCandidate
|
|
9
|
+
} from "./chunk-ZGWXGK5S.js";
|
|
10
|
+
import {
|
|
11
|
+
readAllRules
|
|
12
|
+
} from "./chunk-7LLKJN2O.js";
|
|
13
|
+
import {
|
|
14
|
+
RULES_DIR,
|
|
15
|
+
RULE_APPLIES,
|
|
16
|
+
RULE_KINDS,
|
|
17
|
+
RULE_STRENGTHS,
|
|
18
|
+
parseRuleFile
|
|
19
|
+
} from "./chunk-A3IQAONL.js";
|
|
20
|
+
import "./chunk-3YJNSUNF.js";
|
|
21
|
+
import {
|
|
22
|
+
holdWorkspaceSpend
|
|
23
|
+
} from "./chunk-E44NXCTL.js";
|
|
24
|
+
import {
|
|
25
|
+
findWorkspaceRoot
|
|
26
|
+
} from "./chunk-EJGAJHLB.js";
|
|
27
|
+
import {
|
|
28
|
+
reviewAgainstRules
|
|
29
|
+
} from "./chunk-MVD7QIXI.js";
|
|
30
|
+
import {
|
|
31
|
+
reviewedRules
|
|
32
|
+
} from "./chunk-7HZSORAB.js";
|
|
33
|
+
import "./chunk-MCJ5I5LR.js";
|
|
34
|
+
import {
|
|
35
|
+
askJev
|
|
36
|
+
} from "./chunk-LNNTHEL7.js";
|
|
37
|
+
import "./chunk-FOMFU2RX.js";
|
|
38
|
+
import "./chunk-PSGIHSNC.js";
|
|
39
|
+
import "./chunk-PONLPYD7.js";
|
|
40
|
+
import "./chunk-EXELLNQS.js";
|
|
41
|
+
import "./chunk-CAZGM2NX.js";
|
|
42
|
+
import "./chunk-NZS3KEQ2.js";
|
|
43
|
+
import "./chunk-GIWHHCD6.js";
|
|
44
|
+
import "./chunk-UI6BKYQD.js";
|
|
45
|
+
import "./chunk-2TOIY2WN.js";
|
|
46
|
+
import {
|
|
47
|
+
apiPost
|
|
48
|
+
} from "./chunk-X7VQFLHI.js";
|
|
49
|
+
import "./chunk-LU4HI4KI.js";
|
|
50
|
+
import "./chunk-LGK7UWBN.js";
|
|
51
|
+
import {
|
|
52
|
+
registerSchema,
|
|
53
|
+
writeJson
|
|
54
|
+
} from "./chunk-Q7US4OOA.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-HEXUMODD.js.map
|