@koda-sl/baker-cli 0.442.0 → 0.443.0-dev.043c1d4ac

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.
Files changed (1581) hide show
  1. package/README.md +38 -23
  2. package/canvas/tiktok-captions-composition/index.html +5 -6
  3. package/canvas/tiktok-captions-composition/meta.json +5 -0
  4. package/dist/account-4H7QVBRK.js +80 -0
  5. package/dist/account-4H7QVBRK.js.map +1 -0
  6. package/dist/account-IEVEOFIK.js +49 -0
  7. package/dist/account-IEVEOFIK.js.map +1 -0
  8. package/dist/account-RDRK7NOE.js +79 -0
  9. package/dist/account-RDRK7NOE.js.map +1 -0
  10. package/dist/account-writes-AK42HGRM.js +66 -0
  11. package/dist/account-writes-AK42HGRM.js.map +1 -0
  12. package/dist/accounts-4CDRK4S4.js +75 -0
  13. package/dist/accounts-4CDRK4S4.js.map +1 -0
  14. package/dist/accounts-4TYIUVWY.js +77 -0
  15. package/dist/accounts-4TYIUVWY.js.map +1 -0
  16. package/dist/accounts-5QDKBZMH.js +115 -0
  17. package/dist/accounts-5QDKBZMH.js.map +1 -0
  18. package/dist/accounts-6COLJJHM.js +611 -0
  19. package/dist/accounts-6COLJJHM.js.map +1 -0
  20. package/dist/accounts-KYJO3JC6.js +114 -0
  21. package/dist/accounts-KYJO3JC6.js.map +1 -0
  22. package/dist/actions-PEI6ZQAG.js +55 -0
  23. package/dist/active-entities-YUSOUR5M.js +103 -0
  24. package/dist/active-entities-YUSOUR5M.js.map +1 -0
  25. package/dist/activities-ZVQOBHZH.js +74 -0
  26. package/dist/activities-ZVQOBHZH.js.map +1 -0
  27. package/dist/ad-group-writes-QQS4223F.js +170 -0
  28. package/dist/ad-group-writes-QQS4223F.js.map +1 -0
  29. package/dist/ad-groups-WGPDPUI2.js +68 -0
  30. package/dist/ad-groups-WGPDPUI2.js.map +1 -0
  31. package/dist/ad-writes-XE2IE4DS.js +174 -0
  32. package/dist/ad-writes-XE2IE4DS.js.map +1 -0
  33. package/dist/add-577QWMCF.js +97 -0
  34. package/dist/add-577QWMCF.js.map +1 -0
  35. package/dist/add-CUWAW7KG.js +105 -0
  36. package/dist/add-CUWAW7KG.js.map +1 -0
  37. package/dist/add-XDOQQCHS.js +104 -0
  38. package/dist/add-XDOQQCHS.js.map +1 -0
  39. package/dist/add-XEDSBYLM.js +280 -0
  40. package/dist/add-XEDSBYLM.js.map +1 -0
  41. package/dist/ads-BCOSQALY.js +77 -0
  42. package/dist/ads-BCOSQALY.js.map +1 -0
  43. package/dist/ads-H7GH7A26.js +113 -0
  44. package/dist/ads-H7GH7A26.js.map +1 -0
  45. package/dist/ads-TJ7ACFHG.js +40 -0
  46. package/dist/adsets-H7QT42U6.js +176 -0
  47. package/dist/adsets-H7QT42U6.js.map +1 -0
  48. package/dist/advertisers-WSNHNCBQ.js +116 -0
  49. package/dist/advertisers-WSNHNCBQ.js.map +1 -0
  50. package/dist/advertisers-YMHPZYNF.js +111 -0
  51. package/dist/advertisers-YMHPZYNF.js.map +1 -0
  52. package/dist/analytics-PT2GKCFU.js +1958 -0
  53. package/dist/analytics-PT2GKCFU.js.map +1 -0
  54. package/dist/analytics-ZVWUY66X.js +433 -0
  55. package/dist/analytics-ZVWUY66X.js.map +1 -0
  56. package/dist/animate-3Z7HXOLE.js +480 -0
  57. package/dist/animate-3Z7HXOLE.js.map +1 -0
  58. package/dist/assign-B26AJLGN.js +77 -0
  59. package/dist/assign-B26AJLGN.js.map +1 -0
  60. package/dist/audience-size-ZX565D5P.js +94 -0
  61. package/dist/audience-size-ZX565D5P.js.map +1 -0
  62. package/dist/audiences-HFRVIE2X.js +85 -0
  63. package/dist/audiences-HFRVIE2X.js.map +1 -0
  64. package/dist/audiences-JACGRBNN.js +78 -0
  65. package/dist/audiences-JACGRBNN.js.map +1 -0
  66. package/dist/audiences-TGD5US2M.js +268 -0
  67. package/dist/audiences-TGD5US2M.js.map +1 -0
  68. package/dist/audit-AD4ZZNJN.js +88 -0
  69. package/dist/audit-AD4ZZNJN.js.map +1 -0
  70. package/dist/audit-SAXVPGWS.js +151 -0
  71. package/dist/audit-SAXVPGWS.js.map +1 -0
  72. package/dist/autocomplete-6PYFCOMX.js +107 -0
  73. package/dist/autocomplete-6PYFCOMX.js.map +1 -0
  74. package/dist/avatars-2UQJXHPV.js +38 -0
  75. package/dist/bid-pricing-WSHACGX4.js +99 -0
  76. package/dist/bid-pricing-WSHACGX4.js.map +1 -0
  77. package/dist/brand-XBABUT52.js +22 -0
  78. package/dist/brief-KKNC32TA.js +478 -0
  79. package/dist/brief-KKNC32TA.js.map +1 -0
  80. package/dist/businesses-JBDQZZIG.js +53 -0
  81. package/dist/businesses-JBDQZZIG.js.map +1 -0
  82. package/dist/campaign-groups-G35366AW.js +95 -0
  83. package/dist/campaign-groups-G35366AW.js.map +1 -0
  84. package/dist/campaign-writes-SXLZFYF6.js +170 -0
  85. package/dist/campaign-writes-SXLZFYF6.js.map +1 -0
  86. package/dist/campaign-writes-ZQGN7FQ3.js +165 -0
  87. package/dist/campaign-writes-ZQGN7FQ3.js.map +1 -0
  88. package/dist/campaigns-GXUCHQ2S.js +109 -0
  89. package/dist/campaigns-GXUCHQ2S.js.map +1 -0
  90. package/dist/campaigns-WBEG5QA4.js +110 -0
  91. package/dist/campaigns-WBEG5QA4.js.map +1 -0
  92. package/dist/campaigns-WECN54WV.js +107 -0
  93. package/dist/campaigns-WECN54WV.js.map +1 -0
  94. package/dist/campaigns-YS3OGQXO.js +76 -0
  95. package/dist/campaigns-YS3OGQXO.js.map +1 -0
  96. package/dist/canvas-KEXE5P6S.js +46 -0
  97. package/dist/capabilities-74I5AQ36.js +144 -0
  98. package/dist/capabilities-74I5AQ36.js.map +1 -0
  99. package/dist/cards-4477BFEV.js +85 -0
  100. package/dist/cards-4477BFEV.js.map +1 -0
  101. package/dist/catalog-IQEQ5TGQ.js +66 -0
  102. package/dist/catalog-IQEQ5TGQ.js.map +1 -0
  103. package/dist/catalogs-BRXEDE56.js +128 -0
  104. package/dist/catalogs-BRXEDE56.js.map +1 -0
  105. package/dist/changes-6QBJMGJC.js +135 -0
  106. package/dist/changes-6QBJMGJC.js.map +1 -0
  107. package/dist/chatgpt-7W75X3ER.js +47 -0
  108. package/dist/chats-DWHF64IU.js +262 -0
  109. package/dist/chats-DWHF64IU.js.map +1 -0
  110. package/dist/chunk-27NMXSC3.js +486 -0
  111. package/dist/chunk-27NMXSC3.js.map +1 -0
  112. package/dist/chunk-2CD5ZP7M.js +6659 -0
  113. package/dist/chunk-2CD5ZP7M.js.map +1 -0
  114. package/dist/chunk-2TK4DEOE.js +74 -0
  115. package/dist/chunk-3RJ3VGJP.js +197 -0
  116. package/dist/chunk-3RJ3VGJP.js.map +1 -0
  117. package/dist/chunk-4NDCTLI5.js +191 -0
  118. package/dist/chunk-4NZ47VXO.js +137 -0
  119. package/dist/chunk-4NZ47VXO.js.map +1 -0
  120. package/dist/chunk-4SJDDGPV.js +1411 -0
  121. package/dist/chunk-4SJDDGPV.js.map +1 -0
  122. package/dist/chunk-5ARG3CQG.js +141 -0
  123. package/dist/chunk-5HYSKH77.js +315 -0
  124. package/dist/chunk-5HYSKH77.js.map +1 -0
  125. package/dist/chunk-5Z2KSVIV.js +67 -0
  126. package/dist/chunk-654U6NU6.js +534 -0
  127. package/dist/chunk-654U6NU6.js.map +1 -0
  128. package/dist/chunk-6B7VKFS4.js +172 -0
  129. package/dist/chunk-6G5K6ZC6.js +46 -0
  130. package/dist/chunk-73QKIIIR.js +23 -0
  131. package/dist/chunk-75FDTDLH.js +96 -0
  132. package/dist/chunk-75VNSKS3.js +455 -0
  133. package/dist/chunk-75VNSKS3.js.map +1 -0
  134. package/dist/chunk-7GPDUS3P.js +494 -0
  135. package/dist/chunk-7GPDUS3P.js.map +1 -0
  136. package/dist/chunk-7J6EHOH6.js +274 -0
  137. package/dist/chunk-7OFNN4CT.js +58 -0
  138. package/dist/chunk-7QJVPMVB.js +592 -0
  139. package/dist/chunk-7QJVPMVB.js.map +1 -0
  140. package/dist/chunk-AN447DQB.js +159 -0
  141. package/dist/chunk-AN447DQB.js.map +1 -0
  142. package/dist/chunk-BYDF22T4.js +346 -0
  143. package/dist/chunk-BYDF22T4.js.map +1 -0
  144. package/dist/chunk-C6U6UDHJ.js +106 -0
  145. package/dist/chunk-CLMM6P6B.js +1751 -0
  146. package/dist/chunk-CLMM6P6B.js.map +1 -0
  147. package/dist/chunk-DIY6QR3E.js +96 -0
  148. package/dist/chunk-EFSYTROP.js +94 -0
  149. package/dist/chunk-EIP4PYCL.js +496 -0
  150. package/dist/chunk-EIP4PYCL.js.map +1 -0
  151. package/dist/chunk-EZUG6WE2.js +60 -0
  152. package/dist/chunk-EZUG6WE2.js.map +1 -0
  153. package/dist/chunk-F2S5BLPE.js +97 -0
  154. package/dist/chunk-F2S5BLPE.js.map +1 -0
  155. package/dist/chunk-FEXDI4NM.js +103 -0
  156. package/dist/chunk-FHXIEMCG.js +382 -0
  157. package/dist/chunk-FTWJFDIN.js +23992 -0
  158. package/dist/chunk-FTWJFDIN.js.map +1 -0
  159. package/dist/chunk-FXED3VZK.js +174 -0
  160. package/dist/chunk-FXED3VZK.js.map +1 -0
  161. package/dist/chunk-GIJT3A5U.js +166 -0
  162. package/dist/chunk-GIJT3A5U.js.map +1 -0
  163. package/dist/chunk-H26L3OQY.js +42 -0
  164. package/dist/chunk-HIPDMQZ6.js +136 -0
  165. package/dist/chunk-HMEFD2CG.js +5163 -0
  166. package/dist/chunk-HMEFD2CG.js.map +1 -0
  167. package/dist/chunk-HO3IUJ4K.js +70 -0
  168. package/dist/chunk-HO3IUJ4K.js.map +1 -0
  169. package/dist/chunk-HXTGYOQC.js +813 -0
  170. package/dist/chunk-HXTGYOQC.js.map +1 -0
  171. package/dist/chunk-HYCIBVDW.js +98 -0
  172. package/dist/chunk-ICM2OXZV.js +304 -0
  173. package/dist/chunk-ICM2OXZV.js.map +1 -0
  174. package/dist/chunk-IFWP3ZDO.js +215 -0
  175. package/dist/chunk-IKGWQBKJ.js +422 -0
  176. package/dist/chunk-IKGWQBKJ.js.map +1 -0
  177. package/dist/chunk-IXKEWS7X.js +433 -0
  178. package/dist/chunk-JERXV5A3.js +26 -0
  179. package/dist/chunk-JM73NDCM.js +163 -0
  180. package/dist/chunk-JM73NDCM.js.map +1 -0
  181. package/dist/chunk-K3PN7TN5.js +84 -0
  182. package/dist/chunk-K3PN7TN5.js.map +1 -0
  183. package/dist/chunk-KLNKEVIY.js +136 -0
  184. package/dist/chunk-KNY76UGC.js +84 -0
  185. package/dist/chunk-KWAOTV7F.js +830 -0
  186. package/dist/chunk-L3OLEAJN.js +92 -0
  187. package/dist/chunk-L3OLEAJN.js.map +1 -0
  188. package/dist/chunk-LERTEZST.js +28 -0
  189. package/dist/chunk-LL2CD5WU.js +310 -0
  190. package/dist/chunk-LO6GEJ4Z.js +51 -0
  191. package/dist/chunk-LS5MTRFI.js +106 -0
  192. package/dist/chunk-LZ73CZGP.js +188 -0
  193. package/dist/chunk-MELOSESI.js +20 -0
  194. package/dist/chunk-MLU6STIN.js +66 -0
  195. package/dist/chunk-MLU6STIN.js.map +1 -0
  196. package/dist/chunk-MZL4H5PY.js +225 -0
  197. package/dist/chunk-MZL4H5PY.js.map +1 -0
  198. package/dist/chunk-NAWWC5I3.js +454 -0
  199. package/dist/chunk-NFSLRRIE.js +77 -0
  200. package/dist/chunk-NFSLRRIE.js.map +1 -0
  201. package/dist/chunk-NPE7EWBE.js +297 -0
  202. package/dist/chunk-NU7JSWVA.js +946 -0
  203. package/dist/chunk-NU7JSWVA.js.map +1 -0
  204. package/dist/chunk-OBDAYP2P.js +3155 -0
  205. package/dist/chunk-OBDAYP2P.js.map +1 -0
  206. package/dist/chunk-OC5IJSIW.js +420 -0
  207. package/dist/chunk-OC5IJSIW.js.map +1 -0
  208. package/dist/chunk-OKG6GX2F.js +169 -0
  209. package/dist/chunk-OTFHEHIU.js +1706 -0
  210. package/dist/chunk-OTFHEHIU.js.map +1 -0
  211. package/dist/chunk-PBA3YCZA.js +76 -0
  212. package/dist/chunk-PWGWMIIJ.js +25 -0
  213. package/dist/chunk-QHLB5V7J.js +19 -0
  214. package/dist/chunk-QJE6ZYGI.js +131 -0
  215. package/dist/chunk-QSN5MZGS.js +74 -0
  216. package/dist/chunk-QXZYAIWS.js +390 -0
  217. package/dist/chunk-QXZYAIWS.js.map +1 -0
  218. package/dist/chunk-RRUJQVWA.js +4372 -0
  219. package/dist/chunk-RRUJQVWA.js.map +1 -0
  220. package/dist/chunk-RSW6QJPH.js +217 -0
  221. package/dist/chunk-RX6F3GEA.js +610 -0
  222. package/dist/chunk-RX6F3GEA.js.map +1 -0
  223. package/dist/chunk-SBMIQDCX.js +175 -0
  224. package/dist/chunk-SJDPHVGE.js +363 -0
  225. package/dist/chunk-SJDPHVGE.js.map +1 -0
  226. package/dist/chunk-STIB5DR5.js +56 -0
  227. package/dist/chunk-TBEUMOEL.js +95 -0
  228. package/dist/chunk-TCNNOLVZ.js +207 -0
  229. package/dist/chunk-TCNNOLVZ.js.map +1 -0
  230. package/dist/chunk-TD2P4HBP.js +55 -0
  231. package/dist/chunk-URIYUZIN.js +111 -0
  232. package/dist/chunk-URIYUZIN.js.map +1 -0
  233. package/dist/chunk-VAJBWA2U.js +75 -0
  234. package/dist/chunk-VAJBWA2U.js.map +1 -0
  235. package/dist/chunk-VBHDZSI5.js +57 -0
  236. package/dist/chunk-VFIOJD5M.js +309 -0
  237. package/dist/chunk-VVZBBKRC.js +296 -0
  238. package/dist/chunk-VWCELTQE.js +1079 -0
  239. package/dist/chunk-VWCELTQE.js.map +1 -0
  240. package/dist/chunk-W3B4BHQU.js +31 -0
  241. package/dist/chunk-W3ZHJJVT.js +139 -0
  242. package/dist/chunk-W3ZHJJVT.js.map +1 -0
  243. package/dist/chunk-WS2GMOSG.js +74 -0
  244. package/dist/chunk-XBOK23HI.js +214 -0
  245. package/dist/chunk-XG3XCHN6.js +26 -0
  246. package/dist/chunk-XL3BMSYG.js +125 -0
  247. package/dist/chunk-XWH7CCBL.js +6065 -0
  248. package/dist/chunk-XWH7CCBL.js.map +1 -0
  249. package/dist/chunk-XYMPS526.js +622 -0
  250. package/dist/chunk-Y5ZGWLWP.js +2882 -0
  251. package/dist/chunk-Y5ZGWLWP.js.map +1 -0
  252. package/dist/chunk-YBMVHGY3.js +333 -0
  253. package/dist/chunk-ZJ47BR6X.js +337 -0
  254. package/dist/chunk-ZJ47BR6X.js.map +1 -0
  255. package/dist/chunk-ZNBDKK4Y.js +76 -0
  256. package/dist/chunk-ZNBDKK4Y.js.map +1 -0
  257. package/dist/chunk-ZXTW3TXY.js +133 -0
  258. package/dist/chunk-ZXTW3TXY.js.map +1 -0
  259. package/dist/claim-EIL4ZBSN.js +197 -0
  260. package/dist/claim-EIL4ZBSN.js.map +1 -0
  261. package/dist/cli.js +36 -37
  262. package/dist/cli.js.map +1 -1
  263. package/dist/client-VHN32ZRE.js +19 -0
  264. package/dist/code-YS6ZMGX3.js +76 -0
  265. package/dist/code-YS6ZMGX3.js.map +1 -0
  266. package/dist/companies-2UG7RDYN.js +195 -0
  267. package/dist/companies-2UG7RDYN.js.map +1 -0
  268. package/dist/complete-I4KRFYMD.js +81 -0
  269. package/dist/complete-I4KRFYMD.js.map +1 -0
  270. package/dist/config-CQN5FHMZ.js +88 -0
  271. package/dist/config-CQN5FHMZ.js.map +1 -0
  272. package/dist/connect-TA5W6YGW.js +36 -0
  273. package/dist/content-3ZPP4SW2.js +81 -0
  274. package/dist/content-3ZPP4SW2.js.map +1 -0
  275. package/dist/conversation-BJI54MI6.js +93 -0
  276. package/dist/conversation-BJI54MI6.js.map +1 -0
  277. package/dist/conversion-report-XQBJ6LG4.js +125 -0
  278. package/dist/conversion-report-XQBJ6LG4.js.map +1 -0
  279. package/dist/conversion-upload-command-JULHGVIR.js +438 -0
  280. package/dist/conversion-upload-command-JULHGVIR.js.map +1 -0
  281. package/dist/conversion-writes-UBCVXP2E.js +120 -0
  282. package/dist/conversion-writes-UBCVXP2E.js.map +1 -0
  283. package/dist/conversions-D236RTUK.js +76 -0
  284. package/dist/conversions-D236RTUK.js.map +1 -0
  285. package/dist/conversions-VJOJ5S4U.js +135 -0
  286. package/dist/conversions-VJOJ5S4U.js.map +1 -0
  287. package/dist/countries-FYHM3IMJ.js +82 -0
  288. package/dist/countries-FYHM3IMJ.js.map +1 -0
  289. package/dist/create-E7BIZNUC.js +130 -0
  290. package/dist/create-E7BIZNUC.js.map +1 -0
  291. package/dist/create-HKOO7O5L.js +59 -0
  292. package/dist/create-HKOO7O5L.js.map +1 -0
  293. package/dist/create-JLQCXAT2.js +207 -0
  294. package/dist/create-JLQCXAT2.js.map +1 -0
  295. package/dist/create-VY3RQXOY.js +235 -0
  296. package/dist/create-VY3RQXOY.js.map +1 -0
  297. package/dist/creatives-PSWCNY7U.js +87 -0
  298. package/dist/creatives-PSWCNY7U.js.map +1 -0
  299. package/dist/creatives-QXMBEA2V.js +51 -0
  300. package/dist/creatives-QXMBEA2V.js.map +1 -0
  301. package/dist/creatives-VXQQUH2F.js +182 -0
  302. package/dist/creatives-VXQQUH2F.js.map +1 -0
  303. package/dist/credentials-G5BJK7OR.js +1055 -0
  304. package/dist/credentials-G5BJK7OR.js.map +1 -0
  305. package/dist/critique-CMLAPVUB.js +1449 -0
  306. package/dist/critique-CMLAPVUB.js.map +1 -0
  307. package/dist/critique-O5VNNBPB.js +214 -0
  308. package/dist/critique-O5VNNBPB.js.map +1 -0
  309. package/dist/crm-CL7R67FT.js +224 -0
  310. package/dist/crm-CL7R67FT.js.map +1 -0
  311. package/dist/crm-GJCAM3DI.js +318 -0
  312. package/dist/crm-GJCAM3DI.js.map +1 -0
  313. package/dist/crop-2J4RKJ6B.js +113 -0
  314. package/dist/crop-2J4RKJ6B.js.map +1 -0
  315. package/dist/currency-DJDVIR3C.js +88 -0
  316. package/dist/currency-DJDVIR3C.js.map +1 -0
  317. package/dist/custom-conversions-6P555U2K.js +125 -0
  318. package/dist/custom-conversions-6P555U2K.js.map +1 -0
  319. package/dist/customers-4RJGRR2Y.js +56 -0
  320. package/dist/delete-3AV3ARMX.js +71 -0
  321. package/dist/delete-3AV3ARMX.js.map +1 -0
  322. package/dist/delete-4QXLTL24.js +63 -0
  323. package/dist/delete-4QXLTL24.js.map +1 -0
  324. package/dist/delete-A5XD52K4.js +69 -0
  325. package/dist/delete-A5XD52K4.js.map +1 -0
  326. package/dist/delete-IJNJTAGW.js +54 -0
  327. package/dist/delete-IJNJTAGW.js.map +1 -0
  328. package/dist/delete-MRM2S4Z5.js +71 -0
  329. package/dist/delete-MRM2S4Z5.js.map +1 -0
  330. package/dist/delete-R57JFJ3A.js +66 -0
  331. package/dist/delete-R57JFJ3A.js.map +1 -0
  332. package/dist/demographics-VMARSTTE.js +138 -0
  333. package/dist/demographics-VMARSTTE.js.map +1 -0
  334. package/dist/describe-6NVOWIBE.js +97 -0
  335. package/dist/describe-6NVOWIBE.js.map +1 -0
  336. package/dist/describe-P3PPIQME.js +97 -0
  337. package/dist/describe-P3PPIQME.js.map +1 -0
  338. package/dist/dimensions-EYAYO27I.js +101 -0
  339. package/dist/dimensions-EYAYO27I.js.map +1 -0
  340. package/dist/discard-Y2BKPW4Z.js +66 -0
  341. package/dist/discard-Y2BKPW4Z.js.map +1 -0
  342. package/dist/discover-M3ZKKFEL.js +172 -0
  343. package/dist/discover-M3ZKKFEL.js.map +1 -0
  344. package/dist/domain-YTHDTRWN.js +98 -0
  345. package/dist/domain-YTHDTRWN.js.map +1 -0
  346. package/dist/download-7T6HIJKD.js +299 -0
  347. package/dist/download-7T6HIJKD.js.map +1 -0
  348. package/dist/draft-ABGQYDHP.js +328 -0
  349. package/dist/draft-ABGQYDHP.js.map +1 -0
  350. package/dist/draft-BGUJDHXR.js +103 -0
  351. package/dist/draft-BGUJDHXR.js.map +1 -0
  352. package/dist/draft-KIBMVKSR.js +100 -0
  353. package/dist/draft-KIBMVKSR.js.map +1 -0
  354. package/dist/draft-KOLU5BRR.js +217 -0
  355. package/dist/draft-KOLU5BRR.js.map +1 -0
  356. package/dist/draft-MNFJ4G3C.js +281 -0
  357. package/dist/draft-MNFJ4G3C.js.map +1 -0
  358. package/dist/draft-U6CT6LCC.js +107 -0
  359. package/dist/draft-U6CT6LCC.js.map +1 -0
  360. package/dist/draft-YDY2Q2K6.js +233 -0
  361. package/dist/draft-YDY2Q2K6.js.map +1 -0
  362. package/dist/draft-ZVVUAMMQ.js +306 -0
  363. package/dist/draft-ZVVUAMMQ.js.map +1 -0
  364. package/dist/engine/index.d.ts +10 -0
  365. package/dist/engine/index.js +16 -17
  366. package/dist/env-KIP2J2UB.js +43 -0
  367. package/dist/experiment-LKK77YAN.js +1377 -0
  368. package/dist/experiment-LKK77YAN.js.map +1 -0
  369. package/dist/export-JQRMBJ7D.js +168 -0
  370. package/dist/export-JQRMBJ7D.js.map +1 -0
  371. package/dist/extract-7QKLME7Z.js +113 -0
  372. package/dist/extract-7QKLME7Z.js.map +1 -0
  373. package/dist/facets-UXN4MYPO.js +114 -0
  374. package/dist/facets-UXN4MYPO.js.map +1 -0
  375. package/dist/favorites-NSGF4OV5.js +178 -0
  376. package/dist/favorites-NSGF4OV5.js.map +1 -0
  377. package/dist/feed-RV4KPPXM.js +157 -0
  378. package/dist/feed-RV4KPPXM.js.map +1 -0
  379. package/dist/feedback-3FQYLADC.js +66 -0
  380. package/dist/feedback-3FQYLADC.js.map +1 -0
  381. package/dist/feedback-record-DTRZC73R.js +176 -0
  382. package/dist/feedback-record-DTRZC73R.js.map +1 -0
  383. package/dist/fetch-UTTJAOLC.js +171 -0
  384. package/dist/fetch-UTTJAOLC.js.map +1 -0
  385. package/dist/fetch-XF76JABV.js +139 -0
  386. package/dist/fetch-XF76JABV.js.map +1 -0
  387. package/dist/find-OTDIX6V4.js +134 -0
  388. package/dist/find-OTDIX6V4.js.map +1 -0
  389. package/dist/fit-KXHYKIA4.js +43 -0
  390. package/dist/flows-PB4K66NJ.js +244 -0
  391. package/dist/flows-PB4K66NJ.js.map +1 -0
  392. package/dist/follow-DUIEGDVK.js +82 -0
  393. package/dist/follow-DUIEGDVK.js.map +1 -0
  394. package/dist/follow-competitors-IT5ZVJPE.js +131 -0
  395. package/dist/follow-competitors-IT5ZVJPE.js.map +1 -0
  396. package/dist/following-RKC2FLHI.js +109 -0
  397. package/dist/following-RKC2FLHI.js.map +1 -0
  398. package/dist/fonts-NTOQS2KU.js +34 -0
  399. package/dist/forecast-RWDIDDWP.js +104 -0
  400. package/dist/forecast-RWDIDDWP.js.map +1 -0
  401. package/dist/funding-NYO65IMT.js +85 -0
  402. package/dist/funding-NYO65IMT.js.map +1 -0
  403. package/dist/funnel-XCKPRYTV.js +837 -0
  404. package/dist/funnel-XCKPRYTV.js.map +1 -0
  405. package/dist/ga4-UDQ2HA2J.js +55 -0
  406. package/dist/generate-DMQUS665.js +262 -0
  407. package/dist/generate-DMQUS665.js.map +1 -0
  408. package/dist/get-3L6W3E3T.js +59 -0
  409. package/dist/get-3L6W3E3T.js.map +1 -0
  410. package/dist/get-67IG7SZI.js +78 -0
  411. package/dist/get-67IG7SZI.js.map +1 -0
  412. package/dist/get-6WEYKOY6.js +63 -0
  413. package/dist/get-6WEYKOY6.js.map +1 -0
  414. package/dist/get-P743RPSI.js +63 -0
  415. package/dist/get-P743RPSI.js.map +1 -0
  416. package/dist/get-WO22OCMZ.js +54 -0
  417. package/dist/get-WO22OCMZ.js.map +1 -0
  418. package/dist/get-XN5ZGDIK.js +61 -0
  419. package/dist/get-XN5ZGDIK.js.map +1 -0
  420. package/dist/get-YIHTAMRT.js +92 -0
  421. package/dist/get-YIHTAMRT.js.map +1 -0
  422. package/dist/gif-53ULFVLR.js +94 -0
  423. package/dist/gif-53ULFVLR.js.map +1 -0
  424. package/dist/google-KIBLORXX.js +1872 -0
  425. package/dist/google-KIBLORXX.js.map +1 -0
  426. package/dist/google-KTO3PLEU.js +136 -0
  427. package/dist/google-KTO3PLEU.js.map +1 -0
  428. package/dist/group-EFZ3AJIE.js +43 -0
  429. package/dist/group-EFZ3AJIE.js.map +1 -0
  430. package/dist/group-GKWCCX66.js +43 -0
  431. package/dist/group-GKWCCX66.js.map +1 -0
  432. package/dist/gsc-P3QYGDV2.js +30 -0
  433. package/dist/history-PBFRKLU6.js +133 -0
  434. package/dist/history-PBFRKLU6.js.map +1 -0
  435. package/dist/history-Q3QCT64S.js +67 -0
  436. package/dist/history-Q3QCT64S.js.map +1 -0
  437. package/dist/hubspot-PMOZST7W.js +779 -0
  438. package/dist/hubspot-PMOZST7W.js.map +1 -0
  439. package/dist/icon-I43F77FV.js +137 -0
  440. package/dist/icon-I43F77FV.js.map +1 -0
  441. package/dist/ideas-PU7IAX6F.js +32 -0
  442. package/dist/images-QI2HTX6B.js +90 -0
  443. package/dist/improve-BCCU5AS6.js +86 -0
  444. package/dist/improve-BCCU5AS6.js.map +1 -0
  445. package/dist/ingest-BYJNFOOT.js +23 -0
  446. package/dist/ingest-ZQM47NVZ.js +107 -0
  447. package/dist/ingest-ZQM47NVZ.js.map +1 -0
  448. package/dist/insights-LNAXV2CG.js +122 -0
  449. package/dist/insights-LNAXV2CG.js.map +1 -0
  450. package/dist/insights-NZWSJKU4.js +423 -0
  451. package/dist/insights-NZWSJKU4.js.map +1 -0
  452. package/dist/inspect-CQH55Q6G.js +189 -0
  453. package/dist/inspect-CQH55Q6G.js.map +1 -0
  454. package/dist/inspiration-I4MMKAWA.js +53 -0
  455. package/dist/intent-ICKFJRT2.js +95 -0
  456. package/dist/intent-ICKFJRT2.js.map +1 -0
  457. package/dist/job-L7RJZMSG.js +202 -0
  458. package/dist/job-L7RJZMSG.js.map +1 -0
  459. package/dist/job-create-JUDAN52O.js +109 -0
  460. package/dist/job-create-JUDAN52O.js.map +1 -0
  461. package/dist/job-status-U43WE3RJ.js +74 -0
  462. package/dist/job-status-U43WE3RJ.js.map +1 -0
  463. package/dist/keep-55CPC7DG.js +78 -0
  464. package/dist/keep-55CPC7DG.js.map +1 -0
  465. package/dist/keyword-gap-NGPH32FN.js +130 -0
  466. package/dist/keyword-gap-NGPH32FN.js.map +1 -0
  467. package/dist/keyword-metrics-E3NJUSEQ.js +197 -0
  468. package/dist/keyword-metrics-E3NJUSEQ.js.map +1 -0
  469. package/dist/keywords-for-site-RH47P4GJ.js +124 -0
  470. package/dist/keywords-for-site-RH47P4GJ.js.map +1 -0
  471. package/dist/landing-4PA7GCPM.js +28 -0
  472. package/dist/landing-4PA7GCPM.js.map +1 -0
  473. package/dist/languages-JDYL2N5F.js +40 -0
  474. package/dist/languages-JDYL2N5F.js.map +1 -0
  475. package/dist/languages-JMVNOHMG.js +55 -0
  476. package/dist/languages-JMVNOHMG.js.map +1 -0
  477. package/dist/layerize-RPD6SNP6.js +190 -0
  478. package/dist/layerize-RPD6SNP6.js.map +1 -0
  479. package/dist/leads-7EVHMNUF.js +293 -0
  480. package/dist/leads-7EVHMNUF.js.map +1 -0
  481. package/dist/leads-I7BO5V7P.js +90 -0
  482. package/dist/leads-I7BO5V7P.js.map +1 -0
  483. package/dist/learn-HZU3QWNN.js +204 -0
  484. package/dist/library-ARKRLCNJ.js +109 -0
  485. package/dist/library-ARKRLCNJ.js.map +1 -0
  486. package/dist/lighthouse-NQBUCHTW.js +75 -0
  487. package/dist/lighthouse-NQBUCHTW.js.map +1 -0
  488. package/dist/line-item-writes-JSR53MID.js +208 -0
  489. package/dist/line-item-writes-JSR53MID.js.map +1 -0
  490. package/dist/line-items-2WFLKOOR.js +103 -0
  491. package/dist/line-items-2WFLKOOR.js.map +1 -0
  492. package/dist/link-AYXOJQDV.js +64 -0
  493. package/dist/link-AYXOJQDV.js.map +1 -0
  494. package/dist/linkedin-M2PVZYLV.js +1008 -0
  495. package/dist/linkedin-M2PVZYLV.js.map +1 -0
  496. package/dist/list-3OKEMUFD.js +151 -0
  497. package/dist/list-3OKEMUFD.js.map +1 -0
  498. package/dist/list-4MQC23JH.js +63 -0
  499. package/dist/list-4MQC23JH.js.map +1 -0
  500. package/dist/list-7MVBXOJT.js +51 -0
  501. package/dist/list-7MVBXOJT.js.map +1 -0
  502. package/dist/list-A5UCIR2J.js +65 -0
  503. package/dist/list-A5UCIR2J.js.map +1 -0
  504. package/dist/list-AL7N6X2P.js +50 -0
  505. package/dist/list-AL7N6X2P.js.map +1 -0
  506. package/dist/list-LI4OGQFW.js +57 -0
  507. package/dist/list-LI4OGQFW.js.map +1 -0
  508. package/dist/list-P7NAFN6J.js +76 -0
  509. package/dist/list-P7NAFN6J.js.map +1 -0
  510. package/dist/list-QGLIL7J6.js +303 -0
  511. package/dist/list-QGLIL7J6.js.map +1 -0
  512. package/dist/locations-2NKBJKBT.js +67 -0
  513. package/dist/locations-2NKBJKBT.js.map +1 -0
  514. package/dist/locations-S4U6IJIS.js +40 -0
  515. package/dist/locations-S4U6IJIS.js.map +1 -0
  516. package/dist/log-QHR2JNKW.js +92 -0
  517. package/dist/log-QHR2JNKW.js.map +1 -0
  518. package/dist/logo-2IP663QO.js +18 -0
  519. package/dist/lookup-XK45W2SH.js +22 -0
  520. package/dist/make-ANPR2D2L.js +516 -0
  521. package/dist/make-ANPR2D2L.js.map +1 -0
  522. package/dist/map-3BVFAP33.js +404 -0
  523. package/dist/map-3BVFAP33.js.map +1 -0
  524. package/dist/mcp-LH5KR6RO.js +476 -0
  525. package/dist/mcp-LH5KR6RO.js.map +1 -0
  526. package/dist/media-6CQYG4UY.js +89 -0
  527. package/dist/media-6CQYG4UY.js.map +1 -0
  528. package/dist/media-M7E6V2XU.js +15 -0
  529. package/dist/media-sources-3D246I3O.js +32 -0
  530. package/dist/members-4DUQHLZH.js +44 -0
  531. package/dist/members-4DUQHLZH.js.map +1 -0
  532. package/dist/meta-EZ4SY25M.js +69 -0
  533. package/dist/metrics-AY4RP54F.js +152 -0
  534. package/dist/metrics-AY4RP54F.js.map +1 -0
  535. package/dist/models-5NTC7A5G.js +155 -0
  536. package/dist/models-5NTC7A5G.js.map +1 -0
  537. package/dist/normalize-CD4PQRYY.js +138 -0
  538. package/dist/normalize-CD4PQRYY.js.map +1 -0
  539. package/dist/normalize-ICQF2AST.js +806 -0
  540. package/dist/normalize-ICQF2AST.js.map +1 -0
  541. package/dist/options-6TE5E34Z.js +121 -0
  542. package/dist/options-6TE5E34Z.js.map +1 -0
  543. package/dist/output-RAH3TSIL.js +24 -0
  544. package/dist/page-GS3WLT2C.js +105 -0
  545. package/dist/page-GS3WLT2C.js.map +1 -0
  546. package/dist/pages-FXYQLHSJ.js +66 -0
  547. package/dist/pages-FXYQLHSJ.js.map +1 -0
  548. package/dist/performance-7LQQCEAW.js +24 -0
  549. package/dist/pinterest-AUH7WBA7.js +96 -0
  550. package/dist/pinterest-AUH7WBA7.js.map +1 -0
  551. package/dist/pixels-TZPF746S.js +60 -0
  552. package/dist/pixels-TZPF746S.js.map +1 -0
  553. package/dist/pixels-ZFF4BGUH.js +108 -0
  554. package/dist/pixels-ZFF4BGUH.js.map +1 -0
  555. package/dist/preview-AD4GKYIA.js +169 -0
  556. package/dist/preview-AD4GKYIA.js.map +1 -0
  557. package/dist/promoted-tweet-writes-F76YIMB6.js +180 -0
  558. package/dist/promoted-tweet-writes-F76YIMB6.js.map +1 -0
  559. package/dist/promoted-tweets-EJL37P7K.js +119 -0
  560. package/dist/promoted-tweets-EJL37P7K.js.map +1 -0
  561. package/dist/properties-L2XIYQDS.js +101 -0
  562. package/dist/properties-L2XIYQDS.js.map +1 -0
  563. package/dist/publish-H5S2IKZP.js +322 -0
  564. package/dist/publish-H5S2IKZP.js.map +1 -0
  565. package/dist/query-CPZZNMDY.js +1341 -0
  566. package/dist/query-CPZZNMDY.js.map +1 -0
  567. package/dist/query-SGGBCHTF.js +236 -0
  568. package/dist/query-SGGBCHTF.js.map +1 -0
  569. package/dist/query-VTGVZQIO.js +247 -0
  570. package/dist/query-VTGVZQIO.js.map +1 -0
  571. package/dist/read-LSF7DYTG.js +140 -0
  572. package/dist/read-LSF7DYTG.js.map +1 -0
  573. package/dist/reddit-INGPFGP4.js +26 -0
  574. package/dist/refresh-MKSKISPX.js +94 -0
  575. package/dist/refresh-MKSKISPX.js.map +1 -0
  576. package/dist/release-J5LIAIZT.js +60 -0
  577. package/dist/release-J5LIAIZT.js.map +1 -0
  578. package/dist/relevant-pages-MTMFMBPD.js +99 -0
  579. package/dist/relevant-pages-MTMFMBPD.js.map +1 -0
  580. package/dist/remove-6LGGKMLJ.js +48 -0
  581. package/dist/remove-6LGGKMLJ.js.map +1 -0
  582. package/dist/remove-LYEK7VFV.js +50 -0
  583. package/dist/remove-LYEK7VFV.js.map +1 -0
  584. package/dist/reopen-FR4UBOG7.js +63 -0
  585. package/dist/reopen-FR4UBOG7.js.map +1 -0
  586. package/dist/rerun-3FEOYNG2.js +86 -0
  587. package/dist/rerun-3FEOYNG2.js.map +1 -0
  588. package/dist/research-PA53M335.js +59 -0
  589. package/dist/research-RPJSOWPT.js +226 -0
  590. package/dist/research-RPJSOWPT.js.map +1 -0
  591. package/dist/reset-H3ES4WV5.js +54 -0
  592. package/dist/reset-H3ES4WV5.js.map +1 -0
  593. package/dist/reset-RCYRE5WO.js +54 -0
  594. package/dist/reset-RCYRE5WO.js.map +1 -0
  595. package/dist/resolve-QIDQJCE6.js +121 -0
  596. package/dist/resolve-QIDQJCE6.js.map +1 -0
  597. package/dist/retry-PLLCFOJW.js +60 -0
  598. package/dist/retry-PLLCFOJW.js.map +1 -0
  599. package/dist/retry-WLVMR7XP.js +62 -0
  600. package/dist/retry-WLVMR7XP.js.map +1 -0
  601. package/dist/retry-failed-6HXPUVXJ.js +45 -0
  602. package/dist/retry-failed-6HXPUVXJ.js.map +1 -0
  603. package/dist/run-2IM2QOCI.js +61 -0
  604. package/dist/run-4D7ZCLMF.js +65 -0
  605. package/dist/run-4D7ZCLMF.js.map +1 -0
  606. package/dist/scaffold-ad-YYUVL4IP.js +1550 -0
  607. package/dist/scaffold-ad-YYUVL4IP.js.map +1 -0
  608. package/dist/scaffold-static-ad-SUEYXLOR.js +948 -0
  609. package/dist/scaffold-static-ad-SUEYXLOR.js.map +1 -0
  610. package/dist/scaffold-video-IBH2YJZD.js +874 -0
  611. package/dist/scaffold-video-IBH2YJZD.js.map +1 -0
  612. package/dist/schedule-O2K6M43V.js +66 -0
  613. package/dist/schedule-O2K6M43V.js.map +1 -0
  614. package/dist/schedule-RXUUCNNI.js +61 -0
  615. package/dist/schedule-RXUUCNNI.js.map +1 -0
  616. package/dist/scheduled-agents-2NCGSD76.js +49 -0
  617. package/dist/schema-6GR77VJG.js +63 -0
  618. package/dist/schema-6GR77VJG.js.map +1 -0
  619. package/dist/schema-SFODURN7.js +129 -0
  620. package/dist/schema-SFODURN7.js.map +1 -0
  621. package/dist/scrape-ETAMW43A.js +2241 -0
  622. package/dist/scrape-ETAMW43A.js.map +1 -0
  623. package/dist/screenshot-YCQF25ZB.js +102 -0
  624. package/dist/screenshot-YCQF25ZB.js.map +1 -0
  625. package/dist/search-742XSULP.js +224 -0
  626. package/dist/search-742XSULP.js.map +1 -0
  627. package/dist/search-7QVZOWSI.js +174 -0
  628. package/dist/search-7QVZOWSI.js.map +1 -0
  629. package/dist/search-MEEM4D3W.js +92 -0
  630. package/dist/search-MEEM4D3W.js.map +1 -0
  631. package/dist/search-OQNGSMUH.js +91 -0
  632. package/dist/search-OQNGSMUH.js.map +1 -0
  633. package/dist/search-XUIVHGAY.js +26 -0
  634. package/dist/seeds-N6FF5S4T.js +101 -0
  635. package/dist/seeds-N6FF5S4T.js.map +1 -0
  636. package/dist/select-ZWDEVAH2.js +95 -0
  637. package/dist/sends-WGJVQUMF.js +309 -0
  638. package/dist/sends-WGJVQUMF.js.map +1 -0
  639. package/dist/sequences-OIPVR7JL.js +146 -0
  640. package/dist/sequences-OIPVR7JL.js.map +1 -0
  641. package/dist/set-prompt-SBEOQGCF.js +187 -0
  642. package/dist/set-prompt-SBEOQGCF.js.map +1 -0
  643. package/dist/setup-links-XW4A6L2I.js +141 -0
  644. package/dist/setup-links-XW4A6L2I.js.map +1 -0
  645. package/dist/shared-HJDFNID4.js +31 -0
  646. package/dist/site-6UTQSYIK.js +177 -0
  647. package/dist/site-6UTQSYIK.js.map +1 -0
  648. package/dist/sitemaps-POPZJTAX.js +87 -0
  649. package/dist/sitemaps-POPZJTAX.js.map +1 -0
  650. package/dist/sites-262H6LM4.js +101 -0
  651. package/dist/sites-262H6LM4.js.map +1 -0
  652. package/dist/skills-6TQZLIMP.js +47 -0
  653. package/dist/skills-6TQZLIMP.js.map +1 -0
  654. package/dist/sources-QQNWQLUM.js +421 -0
  655. package/dist/sources-QQNWQLUM.js.map +1 -0
  656. package/dist/sources-UGMZFZ2E.js +30 -0
  657. package/dist/stale-QRO3M5R2.js +64 -0
  658. package/dist/stale-QRO3M5R2.js.map +1 -0
  659. package/dist/stats-NNXZMPZR.js +34 -0
  660. package/dist/status-NXGKJGH7.js +62 -0
  661. package/dist/status-NXGKJGH7.js.map +1 -0
  662. package/dist/sticker-4KMBSMP5.js +94 -0
  663. package/dist/sticker-4KMBSMP5.js.map +1 -0
  664. package/dist/stock-2YCDN3N6.js +179 -0
  665. package/dist/stock-2YCDN3N6.js.map +1 -0
  666. package/dist/studio-HUEBE6DS.js +49 -0
  667. package/dist/sync-CF7FVUQJ.js +54 -0
  668. package/dist/sync-CF7FVUQJ.js.map +1 -0
  669. package/dist/sync-RXS6BPLM.js +54 -0
  670. package/dist/sync-RXS6BPLM.js.map +1 -0
  671. package/dist/sync-ZSNUBYPM.js +265 -0
  672. package/dist/sync-ZSNUBYPM.js.map +1 -0
  673. package/dist/sync-definition-YBDM7D4M.js +54 -0
  674. package/dist/tag-manager-HREEYGVM.js +43 -0
  675. package/dist/tags-C65JB762.js +224 -0
  676. package/dist/tags-C65JB762.js.map +1 -0
  677. package/dist/tags-CMBKEXIZ.js +20 -0
  678. package/dist/tags-CMBKEXIZ.js.map +1 -0
  679. package/dist/tags-GFFQLLG2.js +20 -0
  680. package/dist/tags-GFFQLLG2.js.map +1 -0
  681. package/dist/tags-IJN2SPSM.js +20 -0
  682. package/dist/tags-IJN2SPSM.js.map +1 -0
  683. package/dist/tags-R3K35KTL.js +26 -0
  684. package/dist/targeting-constants-XJ2VOW7K.js +118 -0
  685. package/dist/targeting-constants-XJ2VOW7K.js.map +1 -0
  686. package/dist/targeting-criteria-IHBPLHSX.js +113 -0
  687. package/dist/targeting-criteria-IHBPLHSX.js.map +1 -0
  688. package/dist/targets-JH37NVJF.js +102 -0
  689. package/dist/targets-JH37NVJF.js.map +1 -0
  690. package/dist/templates-HXSHQ23T.js +178 -0
  691. package/dist/templates-HXSHQ23T.js.map +1 -0
  692. package/dist/testimonials-5QGCPZ6K.js +32 -0
  693. package/dist/top-companies-FJEFKVI7.js +108 -0
  694. package/dist/top-companies-FJEFKVI7.js.map +1 -0
  695. package/dist/translate-H7O5K3RC.js +457 -0
  696. package/dist/translate-H7O5K3RC.js.map +1 -0
  697. package/dist/triggers-SEOAAJSS.js +141 -0
  698. package/dist/triggers-SEOAAJSS.js.map +1 -0
  699. package/dist/tweets-ATP3FQAC.js +123 -0
  700. package/dist/tweets-ATP3FQAC.js.map +1 -0
  701. package/dist/unfollow-CBVPGPF7.js +46 -0
  702. package/dist/unfollow-CBVPGPF7.js.map +1 -0
  703. package/dist/unlink-UZDVSHBO.js +67 -0
  704. package/dist/unlink-UZDVSHBO.js.map +1 -0
  705. package/dist/unstage-4ZEULXEQ.js +95 -0
  706. package/dist/unstage-4ZEULXEQ.js.map +1 -0
  707. package/dist/unstage-CE5RRGM5.js +84 -0
  708. package/dist/unstage-CE5RRGM5.js.map +1 -0
  709. package/dist/update-DGZKEP6T.js +63 -0
  710. package/dist/update-DGZKEP6T.js.map +1 -0
  711. package/dist/update-JOS4ITAV.js +142 -0
  712. package/dist/update-JOS4ITAV.js.map +1 -0
  713. package/dist/update-JZ4I6WW7.js +98 -0
  714. package/dist/update-JZ4I6WW7.js.map +1 -0
  715. package/dist/update-ZXOG2V34.js +155 -0
  716. package/dist/update-ZXOG2V34.js.map +1 -0
  717. package/dist/upload-L5SYZB3X.js +150 -0
  718. package/dist/upload-L5SYZB3X.js.map +1 -0
  719. package/dist/upload-SSOPA7ZT.js +126 -0
  720. package/dist/upload-SSOPA7ZT.js.map +1 -0
  721. package/dist/upscale-YWRLFU22.js +109 -0
  722. package/dist/upscale-YWRLFU22.js.map +1 -0
  723. package/dist/url-options-QEWKRKZ3.js +127 -0
  724. package/dist/url-options-QEWKRKZ3.js.map +1 -0
  725. package/dist/url-params-OR5N5EWT.js +98 -0
  726. package/dist/url-params-OR5N5EWT.js.map +1 -0
  727. package/dist/use-UT2DIZOG.js +95 -0
  728. package/dist/use-UT2DIZOG.js.map +1 -0
  729. package/dist/validate-2PLHIP6I.js +90 -0
  730. package/dist/validate-2PLHIP6I.js.map +1 -0
  731. package/dist/variant-FLZJYGYL.js +338 -0
  732. package/dist/variant-FLZJYGYL.js.map +1 -0
  733. package/dist/videos-GIYDCCKR.js +39 -0
  734. package/dist/view-NPAG66QK.js +121 -0
  735. package/dist/view-NPAG66QK.js.map +1 -0
  736. package/dist/viewer-check-VN2JK2LW.js +70 -0
  737. package/dist/web-WUGLSULO.js +135 -0
  738. package/dist/web-WUGLSULO.js.map +1 -0
  739. package/dist/winners-I5BMATJZ.js +79 -0
  740. package/dist/winners-I5BMATJZ.js.map +1 -0
  741. package/dist/winning-ads-7QWEIMRU.js +62 -0
  742. package/dist/write-commands-ERKVRHTC.js +206 -0
  743. package/dist/write-commands-ERKVRHTC.js.map +1 -0
  744. package/dist/write-commands-SVJ43D7G.js +1015 -0
  745. package/dist/write-commands-SVJ43D7G.js.map +1 -0
  746. package/dist/write-commands-TAYGTJEZ.js +737 -0
  747. package/dist/write-commands-TAYGTJEZ.js.map +1 -0
  748. package/dist/write-commands-WTRSOSO3.js +713 -0
  749. package/dist/write-commands-WTRSOSO3.js.map +1 -0
  750. package/dist/x-OEAKQBB7.js +47 -0
  751. package/package.json +1 -1
  752. package/dist/account-5GT2BEST.js +0 -80
  753. package/dist/account-5GT2BEST.js.map +0 -1
  754. package/dist/account-S2RDGMMM.js +0 -81
  755. package/dist/account-S2RDGMMM.js.map +0 -1
  756. package/dist/account-YLZAL6W7.js +0 -50
  757. package/dist/account-YLZAL6W7.js.map +0 -1
  758. package/dist/account-writes-VBY7FJ7C.js +0 -67
  759. package/dist/account-writes-VBY7FJ7C.js.map +0 -1
  760. package/dist/accounts-4IIHAQGS.js +0 -116
  761. package/dist/accounts-4IIHAQGS.js.map +0 -1
  762. package/dist/accounts-E7TRNPFA.js +0 -115
  763. package/dist/accounts-E7TRNPFA.js.map +0 -1
  764. package/dist/accounts-GFJOGX7J.js +0 -613
  765. package/dist/accounts-GFJOGX7J.js.map +0 -1
  766. package/dist/accounts-INB4Z4LZ.js +0 -76
  767. package/dist/accounts-INB4Z4LZ.js.map +0 -1
  768. package/dist/accounts-NLL4QWKY.js +0 -78
  769. package/dist/accounts-NLL4QWKY.js.map +0 -1
  770. package/dist/actions-7XF5L4U3.js +0 -55
  771. package/dist/active-entities-IGQG5EZO.js +0 -104
  772. package/dist/active-entities-IGQG5EZO.js.map +0 -1
  773. package/dist/activities-MH4C4IVV.js +0 -75
  774. package/dist/activities-MH4C4IVV.js.map +0 -1
  775. package/dist/ad-group-writes-B64OBHQ4.js +0 -171
  776. package/dist/ad-group-writes-B64OBHQ4.js.map +0 -1
  777. package/dist/ad-groups-APCFB6SI.js +0 -69
  778. package/dist/ad-groups-APCFB6SI.js.map +0 -1
  779. package/dist/ad-writes-A7P772KD.js +0 -175
  780. package/dist/ad-writes-A7P772KD.js.map +0 -1
  781. package/dist/add-33WQDKGF.js +0 -106
  782. package/dist/add-33WQDKGF.js.map +0 -1
  783. package/dist/add-65OIGMD7.js +0 -99
  784. package/dist/add-65OIGMD7.js.map +0 -1
  785. package/dist/add-EW276CKL.js +0 -282
  786. package/dist/add-EW276CKL.js.map +0 -1
  787. package/dist/add-EXKVB5KR.js +0 -107
  788. package/dist/add-EXKVB5KR.js.map +0 -1
  789. package/dist/ads-A2HP6UVG.js +0 -114
  790. package/dist/ads-A2HP6UVG.js.map +0 -1
  791. package/dist/ads-H6NPLMNX.js +0 -78
  792. package/dist/ads-H6NPLMNX.js.map +0 -1
  793. package/dist/ads-IRE5RZCS.js +0 -40
  794. package/dist/adsets-UZJTGQQM.js +0 -153
  795. package/dist/adsets-UZJTGQQM.js.map +0 -1
  796. package/dist/advertisers-CFS2JAYJ.js +0 -113
  797. package/dist/advertisers-CFS2JAYJ.js.map +0 -1
  798. package/dist/advertisers-WQBPBK4D.js +0 -117
  799. package/dist/advertisers-WQBPBK4D.js.map +0 -1
  800. package/dist/analytics-L46XME7Y.js +0 -434
  801. package/dist/analytics-L46XME7Y.js.map +0 -1
  802. package/dist/analytics-UT7FQ6XA.js +0 -1959
  803. package/dist/analytics-UT7FQ6XA.js.map +0 -1
  804. package/dist/animate-S6ZU3723.js +0 -482
  805. package/dist/animate-S6ZU3723.js.map +0 -1
  806. package/dist/assign-XHHVXXOL.js +0 -79
  807. package/dist/assign-XHHVXXOL.js.map +0 -1
  808. package/dist/audience-size-6FR7WFVU.js +0 -95
  809. package/dist/audience-size-6FR7WFVU.js.map +0 -1
  810. package/dist/audiences-BN2LT7E6.js +0 -86
  811. package/dist/audiences-BN2LT7E6.js.map +0 -1
  812. package/dist/audiences-HQS6V7EV.js +0 -269
  813. package/dist/audiences-HQS6V7EV.js.map +0 -1
  814. package/dist/audiences-JVEXHN67.js +0 -79
  815. package/dist/audiences-JVEXHN67.js.map +0 -1
  816. package/dist/audit-7UDFEGZV.js +0 -152
  817. package/dist/audit-7UDFEGZV.js.map +0 -1
  818. package/dist/audit-YTRTNTAK.js +0 -89
  819. package/dist/audit-YTRTNTAK.js.map +0 -1
  820. package/dist/autocomplete-LAZ6FFG6.js +0 -108
  821. package/dist/autocomplete-LAZ6FFG6.js.map +0 -1
  822. package/dist/avatars-G54K55J3.js +0 -38
  823. package/dist/bid-pricing-EQKORHAA.js +0 -100
  824. package/dist/bid-pricing-EQKORHAA.js.map +0 -1
  825. package/dist/brand-ODTHWWFL.js +0 -22
  826. package/dist/brief-EA4DWOJW.js +0 -479
  827. package/dist/brief-EA4DWOJW.js.map +0 -1
  828. package/dist/businesses-QHNI7MSK.js +0 -54
  829. package/dist/businesses-QHNI7MSK.js.map +0 -1
  830. package/dist/campaign-groups-EJEGKHQD.js +0 -96
  831. package/dist/campaign-groups-EJEGKHQD.js.map +0 -1
  832. package/dist/campaign-writes-DZE43ZOC.js +0 -166
  833. package/dist/campaign-writes-DZE43ZOC.js.map +0 -1
  834. package/dist/campaign-writes-OX62FCEH.js +0 -171
  835. package/dist/campaign-writes-OX62FCEH.js.map +0 -1
  836. package/dist/campaigns-APRWHCGF.js +0 -111
  837. package/dist/campaigns-APRWHCGF.js.map +0 -1
  838. package/dist/campaigns-D2LYKUO2.js +0 -108
  839. package/dist/campaigns-D2LYKUO2.js.map +0 -1
  840. package/dist/campaigns-E3H4POUU.js +0 -77
  841. package/dist/campaigns-E3H4POUU.js.map +0 -1
  842. package/dist/campaigns-OPLRDMJW.js +0 -110
  843. package/dist/campaigns-OPLRDMJW.js.map +0 -1
  844. package/dist/canvas-M5HAG7VA.js +0 -46
  845. package/dist/capabilities-4Q4CMVIE.js +0 -146
  846. package/dist/capabilities-4Q4CMVIE.js.map +0 -1
  847. package/dist/cards-L37M7Q3L.js +0 -86
  848. package/dist/cards-L37M7Q3L.js.map +0 -1
  849. package/dist/catalog-HOWAUW2V.js +0 -67
  850. package/dist/catalog-HOWAUW2V.js.map +0 -1
  851. package/dist/catalogs-XBIQ4PNK.js +0 -129
  852. package/dist/catalogs-XBIQ4PNK.js.map +0 -1
  853. package/dist/changes-HCOPS4FF.js +0 -136
  854. package/dist/changes-HCOPS4FF.js.map +0 -1
  855. package/dist/chatgpt-PLKNBNVL.js +0 -47
  856. package/dist/chats-HELZHJO4.js +0 -264
  857. package/dist/chats-HELZHJO4.js.map +0 -1
  858. package/dist/chunk-3KQ5R3H7.js +0 -45
  859. package/dist/chunk-3KQ5R3H7.js.map +0 -1
  860. package/dist/chunk-4MU3U3SO.js +0 -103
  861. package/dist/chunk-4VKV3DNC.js +0 -23992
  862. package/dist/chunk-4VKV3DNC.js.map +0 -1
  863. package/dist/chunk-5HH4RGC4.js +0 -136
  864. package/dist/chunk-5HH4RGC4.js.map +0 -1
  865. package/dist/chunk-5NQIFCNX.js +0 -141
  866. package/dist/chunk-6CCDQO2F.js +0 -225
  867. package/dist/chunk-6CCDQO2F.js.map +0 -1
  868. package/dist/chunk-6FBZ5E6L.js +0 -96
  869. package/dist/chunk-6YWRJMGR.js +0 -309
  870. package/dist/chunk-73MCYA5Z.js +0 -310
  871. package/dist/chunk-7DQAVVUA.js +0 -130
  872. package/dist/chunk-7DQAVVUA.js.map +0 -1
  873. package/dist/chunk-A3PEJ3V3.js +0 -95
  874. package/dist/chunk-A57AHUNA.js +0 -28
  875. package/dist/chunk-ABELDLY3.js +0 -594
  876. package/dist/chunk-ABELDLY3.js.map +0 -1
  877. package/dist/chunk-AWICKT2B.js +0 -25
  878. package/dist/chunk-AYC2WM4P.js +0 -106
  879. package/dist/chunk-AYC2WM4P.js.map +0 -1
  880. package/dist/chunk-BDD2ILIT.js +0 -56
  881. package/dist/chunk-BSFTG66P.js +0 -2743
  882. package/dist/chunk-BSFTG66P.js.map +0 -1
  883. package/dist/chunk-BSUN6JMU.js +0 -215
  884. package/dist/chunk-CBEL3P22.js +0 -57
  885. package/dist/chunk-CSADPKPC.js +0 -161
  886. package/dist/chunk-CSADPKPC.js.map +0 -1
  887. package/dist/chunk-DPEQVHTX.js +0 -26
  888. package/dist/chunk-DQLBKU7G.js +0 -469
  889. package/dist/chunk-DQLBKU7G.js.map +0 -1
  890. package/dist/chunk-ECXNE6RJ.js +0 -622
  891. package/dist/chunk-EDFVATFW.js +0 -211
  892. package/dist/chunk-EDFVATFW.js.map +0 -1
  893. package/dist/chunk-EPK2GYLV.js +0 -214
  894. package/dist/chunk-EYO62URT.js +0 -172
  895. package/dist/chunk-F3WFP75M.js +0 -94
  896. package/dist/chunk-F6NJAHAZ.js +0 -19
  897. package/dist/chunk-F7HBCFUA.js +0 -188
  898. package/dist/chunk-FCTWXNRC.js +0 -365
  899. package/dist/chunk-FCTWXNRC.js.map +0 -1
  900. package/dist/chunk-FFZBW4CC.js +0 -297
  901. package/dist/chunk-FR345TDN.js +0 -577
  902. package/dist/chunk-FR345TDN.js.map +0 -1
  903. package/dist/chunk-FRVROFI6.js +0 -98
  904. package/dist/chunk-G32FXVQ6.js +0 -31
  905. package/dist/chunk-HA5D6US2.js +0 -26
  906. package/dist/chunk-HWWPDUZM.js +0 -217
  907. package/dist/chunk-IEULFYA2.js +0 -174
  908. package/dist/chunk-IEULFYA2.js.map +0 -1
  909. package/dist/chunk-IMZIECST.js +0 -830
  910. package/dist/chunk-IPF4P6ZQ.js +0 -392
  911. package/dist/chunk-IPF4P6ZQ.js.map +0 -1
  912. package/dist/chunk-IRHNWYDT.js +0 -106
  913. package/dist/chunk-JH7NHC5W.js +0 -169
  914. package/dist/chunk-JIHG6K7N.js +0 -30
  915. package/dist/chunk-JIHG6K7N.js.map +0 -1
  916. package/dist/chunk-JKDITP62.js +0 -1380
  917. package/dist/chunk-JKDITP62.js.map +0 -1
  918. package/dist/chunk-JMXBUIVI.js +0 -84
  919. package/dist/chunk-KHCN2QXV.js +0 -346
  920. package/dist/chunk-KHCN2QXV.js.map +0 -1
  921. package/dist/chunk-KY4MPR6R.js +0 -3155
  922. package/dist/chunk-KY4MPR6R.js.map +0 -1
  923. package/dist/chunk-L4DOL7L7.js +0 -125
  924. package/dist/chunk-L6PDFIND.js +0 -496
  925. package/dist/chunk-L6PDFIND.js.map +0 -1
  926. package/dist/chunk-L7HPNEKW.js +0 -304
  927. package/dist/chunk-L7HPNEKW.js.map +0 -1
  928. package/dist/chunk-LB3VYIS2.js +0 -141
  929. package/dist/chunk-LB3VYIS2.js.map +0 -1
  930. package/dist/chunk-LDVMMLRA.js +0 -106
  931. package/dist/chunk-LQ4HBQ2B.js +0 -433
  932. package/dist/chunk-LXUEWTHJ.js +0 -788
  933. package/dist/chunk-LXUEWTHJ.js.map +0 -1
  934. package/dist/chunk-LYZVLKRA.js +0 -175
  935. package/dist/chunk-MBKCUSMR.js +0 -6078
  936. package/dist/chunk-MBKCUSMR.js.map +0 -1
  937. package/dist/chunk-MPI3SWIT.js +0 -536
  938. package/dist/chunk-MPI3SWIT.js.map +0 -1
  939. package/dist/chunk-MXPFUDFR.js +0 -1024
  940. package/dist/chunk-MXPFUDFR.js.map +0 -1
  941. package/dist/chunk-N5SQSMMR.js +0 -229
  942. package/dist/chunk-N5SQSMMR.js.map +0 -1
  943. package/dist/chunk-NEONVKMJ.js +0 -455
  944. package/dist/chunk-NEONVKMJ.js.map +0 -1
  945. package/dist/chunk-NFSV3CDO.js +0 -6198
  946. package/dist/chunk-NFSV3CDO.js.map +0 -1
  947. package/dist/chunk-NGT6MARJ.js +0 -274
  948. package/dist/chunk-NGYKF4T6.js +0 -20
  949. package/dist/chunk-NMMKTPGI.js +0 -136
  950. package/dist/chunk-O4AXPEOE.js +0 -923
  951. package/dist/chunk-O4AXPEOE.js.map +0 -1
  952. package/dist/chunk-OPEMWO6C.js +0 -5096
  953. package/dist/chunk-OPEMWO6C.js.map +0 -1
  954. package/dist/chunk-OZLBLXTK.js +0 -74
  955. package/dist/chunk-PB4LQHL2.js +0 -4341
  956. package/dist/chunk-PB4LQHL2.js.map +0 -1
  957. package/dist/chunk-PDJZMQ7F.js +0 -316
  958. package/dist/chunk-PDJZMQ7F.js.map +0 -1
  959. package/dist/chunk-PNHDM76R.js +0 -74
  960. package/dist/chunk-PNHDM76R.js.map +0 -1
  961. package/dist/chunk-Q7UF4ERB.js +0 -74
  962. package/dist/chunk-QRXTDXMX.js +0 -129
  963. package/dist/chunk-QRXTDXMX.js.map +0 -1
  964. package/dist/chunk-QTERC4PG.js +0 -1700
  965. package/dist/chunk-QTERC4PG.js.map +0 -1
  966. package/dist/chunk-QYOPQRLI.js +0 -296
  967. package/dist/chunk-R34LJSPM.js +0 -42
  968. package/dist/chunk-R4ODZS43.js +0 -492
  969. package/dist/chunk-R4ODZS43.js.map +0 -1
  970. package/dist/chunk-RJAQEZVD.js +0 -23
  971. package/dist/chunk-RPFBZHHE.js +0 -55
  972. package/dist/chunk-SXRSLUW7.js +0 -454
  973. package/dist/chunk-T5RKIWPQ.js +0 -352
  974. package/dist/chunk-T5RKIWPQ.js.map +0 -1
  975. package/dist/chunk-TCSPJQ2X.js +0 -136
  976. package/dist/chunk-TD44SXQX.js +0 -58
  977. package/dist/chunk-TQAXOBKJ.js +0 -364
  978. package/dist/chunk-TQAXOBKJ.js.map +0 -1
  979. package/dist/chunk-TTFTS2SO.js +0 -131
  980. package/dist/chunk-UA5EUJXV.js +0 -51
  981. package/dist/chunk-W7OFLOZB.js +0 -46
  982. package/dist/chunk-WAQYXH2U.js +0 -76
  983. package/dist/chunk-WWD4PITU.js +0 -333
  984. package/dist/chunk-WZ5YRUQU.js +0 -12
  985. package/dist/chunk-WZ5YRUQU.js.map +0 -1
  986. package/dist/chunk-XEVVAGAG.js +0 -422
  987. package/dist/chunk-XEVVAGAG.js.map +0 -1
  988. package/dist/chunk-Y4JR4RDM.js +0 -74
  989. package/dist/chunk-YMOVI3WT.js +0 -382
  990. package/dist/chunk-YS6PCTPS.js +0 -96
  991. package/dist/chunk-YUP46PWY.js +0 -199
  992. package/dist/chunk-YUP46PWY.js.map +0 -1
  993. package/dist/chunk-Z4NYXXTP.js +0 -42
  994. package/dist/chunk-Z4NYXXTP.js.map +0 -1
  995. package/dist/chunk-Z5AUNK6P.js +0 -1709
  996. package/dist/chunk-Z5AUNK6P.js.map +0 -1
  997. package/dist/chunk-ZAFR46HG.js +0 -67
  998. package/dist/chunk-ZHW3O25C.js +0 -191
  999. package/dist/claim-CG2IMTHK.js +0 -199
  1000. package/dist/claim-CG2IMTHK.js.map +0 -1
  1001. package/dist/client-XKDFFS7O.js +0 -20
  1002. package/dist/code-JWIOO2AJ.js +0 -78
  1003. package/dist/code-JWIOO2AJ.js.map +0 -1
  1004. package/dist/companies-LQN4HUUH.js +0 -196
  1005. package/dist/companies-LQN4HUUH.js.map +0 -1
  1006. package/dist/complete-MKB27QP7.js +0 -82
  1007. package/dist/complete-MKB27QP7.js.map +0 -1
  1008. package/dist/config-LJOEAYFZ.js +0 -89
  1009. package/dist/config-LJOEAYFZ.js.map +0 -1
  1010. package/dist/connect-ATGYJNG4.js +0 -37
  1011. package/dist/content-Y2BJSXG6.js +0 -83
  1012. package/dist/content-Y2BJSXG6.js.map +0 -1
  1013. package/dist/conversation-EFNQM435.js +0 -94
  1014. package/dist/conversation-EFNQM435.js.map +0 -1
  1015. package/dist/conversion-report-EUSTSHPV.js +0 -126
  1016. package/dist/conversion-report-EUSTSHPV.js.map +0 -1
  1017. package/dist/conversion-upload-command-677OT5NZ.js +0 -432
  1018. package/dist/conversion-upload-command-677OT5NZ.js.map +0 -1
  1019. package/dist/conversion-writes-E7M6VHGB.js +0 -121
  1020. package/dist/conversion-writes-E7M6VHGB.js.map +0 -1
  1021. package/dist/conversions-BXZLEXHU.js +0 -136
  1022. package/dist/conversions-BXZLEXHU.js.map +0 -1
  1023. package/dist/conversions-FERAOXWG.js +0 -77
  1024. package/dist/conversions-FERAOXWG.js.map +0 -1
  1025. package/dist/countries-TKPX2GDH.js +0 -83
  1026. package/dist/countries-TKPX2GDH.js.map +0 -1
  1027. package/dist/create-HGMIWFVX.js +0 -132
  1028. package/dist/create-HGMIWFVX.js.map +0 -1
  1029. package/dist/create-LBJV3NPD.js +0 -209
  1030. package/dist/create-LBJV3NPD.js.map +0 -1
  1031. package/dist/create-QTPZ7PP7.js +0 -117
  1032. package/dist/create-QTPZ7PP7.js.map +0 -1
  1033. package/dist/create-SBIHEG25.js +0 -60
  1034. package/dist/create-SBIHEG25.js.map +0 -1
  1035. package/dist/creatives-CIOOFE3T.js +0 -88
  1036. package/dist/creatives-CIOOFE3T.js.map +0 -1
  1037. package/dist/creatives-MIUJAK4E.js +0 -49
  1038. package/dist/creatives-MIUJAK4E.js.map +0 -1
  1039. package/dist/creatives-QXR7QDXM.js +0 -183
  1040. package/dist/creatives-QXR7QDXM.js.map +0 -1
  1041. package/dist/credentials-CMVAKAUL.js +0 -1057
  1042. package/dist/credentials-CMVAKAUL.js.map +0 -1
  1043. package/dist/critique-LUB35ORK.js +0 -213
  1044. package/dist/critique-LUB35ORK.js.map +0 -1
  1045. package/dist/critique-XXCM7YAV.js +0 -1477
  1046. package/dist/critique-XXCM7YAV.js.map +0 -1
  1047. package/dist/crm-EGNVKQHB.js +0 -279
  1048. package/dist/crm-EGNVKQHB.js.map +0 -1
  1049. package/dist/crm-I6IQ5M55.js +0 -226
  1050. package/dist/crm-I6IQ5M55.js.map +0 -1
  1051. package/dist/crop-ES2IDPUL.js +0 -115
  1052. package/dist/crop-ES2IDPUL.js.map +0 -1
  1053. package/dist/currency-VFKYXFBM.js +0 -89
  1054. package/dist/currency-VFKYXFBM.js.map +0 -1
  1055. package/dist/custom-conversions-WPTEXOWR.js +0 -126
  1056. package/dist/custom-conversions-WPTEXOWR.js.map +0 -1
  1057. package/dist/customers-ACRYXALZ.js +0 -58
  1058. package/dist/delete-3AHBFPQJ.js +0 -68
  1059. package/dist/delete-3AHBFPQJ.js.map +0 -1
  1060. package/dist/delete-E7WYQN2L.js +0 -73
  1061. package/dist/delete-E7WYQN2L.js.map +0 -1
  1062. package/dist/delete-EJCB5MHV.js +0 -71
  1063. package/dist/delete-EJCB5MHV.js.map +0 -1
  1064. package/dist/delete-J677F4BG.js +0 -64
  1065. package/dist/delete-J677F4BG.js.map +0 -1
  1066. package/dist/delete-LVQ7R6DI.js +0 -73
  1067. package/dist/delete-LVQ7R6DI.js.map +0 -1
  1068. package/dist/delete-U4K6NIOE.js +0 -55
  1069. package/dist/delete-U4K6NIOE.js.map +0 -1
  1070. package/dist/demographics-RY6R6VWA.js +0 -139
  1071. package/dist/demographics-RY6R6VWA.js.map +0 -1
  1072. package/dist/describe-N36XDO4P.js +0 -99
  1073. package/dist/describe-N36XDO4P.js.map +0 -1
  1074. package/dist/describe-Q5OAJDYH.js +0 -99
  1075. package/dist/describe-Q5OAJDYH.js.map +0 -1
  1076. package/dist/dimensions-YIWQVFTO.js +0 -103
  1077. package/dist/dimensions-YIWQVFTO.js.map +0 -1
  1078. package/dist/discard-UO4DJNP3.js +0 -67
  1079. package/dist/discard-UO4DJNP3.js.map +0 -1
  1080. package/dist/discover-IASOLBUQ.js +0 -173
  1081. package/dist/discover-IASOLBUQ.js.map +0 -1
  1082. package/dist/domain-QBF4TBGL.js +0 -100
  1083. package/dist/domain-QBF4TBGL.js.map +0 -1
  1084. package/dist/download-DKFYGXEH.js +0 -301
  1085. package/dist/download-DKFYGXEH.js.map +0 -1
  1086. package/dist/draft-5ZZOTJZR.js +0 -282
  1087. package/dist/draft-5ZZOTJZR.js.map +0 -1
  1088. package/dist/draft-DKMUTG4F.js +0 -104
  1089. package/dist/draft-DKMUTG4F.js.map +0 -1
  1090. package/dist/draft-FMOQUVPP.js +0 -219
  1091. package/dist/draft-FMOQUVPP.js.map +0 -1
  1092. package/dist/draft-KFXJCKCH.js +0 -234
  1093. package/dist/draft-KFXJCKCH.js.map +0 -1
  1094. package/dist/draft-KJ6SH67P.js +0 -101
  1095. package/dist/draft-KJ6SH67P.js.map +0 -1
  1096. package/dist/draft-QW7EYFFU.js +0 -329
  1097. package/dist/draft-QW7EYFFU.js.map +0 -1
  1098. package/dist/draft-URMXE4U4.js +0 -101
  1099. package/dist/draft-URMXE4U4.js.map +0 -1
  1100. package/dist/draft-ZU7MZLIT.js +0 -300
  1101. package/dist/draft-ZU7MZLIT.js.map +0 -1
  1102. package/dist/env-ODWJOKNV.js +0 -44
  1103. package/dist/experiment-TUKKH6UJ.js +0 -1378
  1104. package/dist/experiment-TUKKH6UJ.js.map +0 -1
  1105. package/dist/export-WXFUVX6F.js +0 -170
  1106. package/dist/export-WXFUVX6F.js.map +0 -1
  1107. package/dist/extract-PY3J3WVF.js +0 -115
  1108. package/dist/extract-PY3J3WVF.js.map +0 -1
  1109. package/dist/facets-NUEIHCKA.js +0 -115
  1110. package/dist/facets-NUEIHCKA.js.map +0 -1
  1111. package/dist/favorites-JDFIYSV2.js +0 -180
  1112. package/dist/favorites-JDFIYSV2.js.map +0 -1
  1113. package/dist/feed-CYFNDBJS.js +0 -159
  1114. package/dist/feed-CYFNDBJS.js.map +0 -1
  1115. package/dist/feedback-E2P3NB7H.js +0 -68
  1116. package/dist/feedback-E2P3NB7H.js.map +0 -1
  1117. package/dist/feedback-record-IMCTEDOX.js +0 -137
  1118. package/dist/feedback-record-IMCTEDOX.js.map +0 -1
  1119. package/dist/fetch-ELSDT3NZ.js +0 -141
  1120. package/dist/fetch-ELSDT3NZ.js.map +0 -1
  1121. package/dist/fetch-NM7MD3CN.js +0 -172
  1122. package/dist/fetch-NM7MD3CN.js.map +0 -1
  1123. package/dist/find-HYMLZCKA.js +0 -136
  1124. package/dist/find-HYMLZCKA.js.map +0 -1
  1125. package/dist/fit-5WZ6NVSF.js +0 -44
  1126. package/dist/flows-ZEUUIXCS.js +0 -246
  1127. package/dist/flows-ZEUUIXCS.js.map +0 -1
  1128. package/dist/follow-RGJ76HHD.js +0 -84
  1129. package/dist/follow-RGJ76HHD.js.map +0 -1
  1130. package/dist/follow-competitors-JMNOP2ZT.js +0 -133
  1131. package/dist/follow-competitors-JMNOP2ZT.js.map +0 -1
  1132. package/dist/following-5GINRDTL.js +0 -111
  1133. package/dist/following-5GINRDTL.js.map +0 -1
  1134. package/dist/fonts-7U7I2TWV.js +0 -27
  1135. package/dist/forecast-PGDYFFKQ.js +0 -105
  1136. package/dist/forecast-PGDYFFKQ.js.map +0 -1
  1137. package/dist/funding-ED6PDKJF.js +0 -86
  1138. package/dist/funding-ED6PDKJF.js.map +0 -1
  1139. package/dist/funnel-IML4F5ZP.js +0 -838
  1140. package/dist/funnel-IML4F5ZP.js.map +0 -1
  1141. package/dist/ga4-QPEXE6YG.js +0 -55
  1142. package/dist/generate-VVTQCJRI.js +0 -264
  1143. package/dist/generate-VVTQCJRI.js.map +0 -1
  1144. package/dist/get-CZSESEHU.js +0 -61
  1145. package/dist/get-CZSESEHU.js.map +0 -1
  1146. package/dist/get-DEGOS3R6.js +0 -63
  1147. package/dist/get-DEGOS3R6.js.map +0 -1
  1148. package/dist/get-L3ZGUJJB.js +0 -65
  1149. package/dist/get-L3ZGUJJB.js.map +0 -1
  1150. package/dist/get-NX5DGSRP.js +0 -65
  1151. package/dist/get-NX5DGSRP.js.map +0 -1
  1152. package/dist/get-TL6UET23.js +0 -56
  1153. package/dist/get-TL6UET23.js.map +0 -1
  1154. package/dist/get-UNZMYRB6.js +0 -80
  1155. package/dist/get-UNZMYRB6.js.map +0 -1
  1156. package/dist/get-ZVRRZDUU.js +0 -94
  1157. package/dist/get-ZVRRZDUU.js.map +0 -1
  1158. package/dist/gif-MNBSPA64.js +0 -96
  1159. package/dist/gif-MNBSPA64.js.map +0 -1
  1160. package/dist/google-C2Z4XWRL.js +0 -1866
  1161. package/dist/google-C2Z4XWRL.js.map +0 -1
  1162. package/dist/google-LJSSLBP3.js +0 -138
  1163. package/dist/google-LJSSLBP3.js.map +0 -1
  1164. package/dist/group-7BGYA6LK.js +0 -44
  1165. package/dist/group-7BGYA6LK.js.map +0 -1
  1166. package/dist/group-MPYAKBH5.js +0 -44
  1167. package/dist/group-MPYAKBH5.js.map +0 -1
  1168. package/dist/gsc-LC5ADBA3.js +0 -30
  1169. package/dist/history-GPQE2ZYR.js +0 -68
  1170. package/dist/history-GPQE2ZYR.js.map +0 -1
  1171. package/dist/history-XTSLGMK6.js +0 -135
  1172. package/dist/history-XTSLGMK6.js.map +0 -1
  1173. package/dist/hubspot-GPTEZD3A.js +0 -781
  1174. package/dist/hubspot-GPTEZD3A.js.map +0 -1
  1175. package/dist/icon-YKMRIU7A.js +0 -139
  1176. package/dist/icon-YKMRIU7A.js.map +0 -1
  1177. package/dist/ideas-NEBJBIBM.js +0 -31
  1178. package/dist/images-ASWWS5TH.js +0 -90
  1179. package/dist/improve-VXDJGXTG.js +0 -88
  1180. package/dist/improve-VXDJGXTG.js.map +0 -1
  1181. package/dist/ingest-AW37RWJN.js +0 -109
  1182. package/dist/ingest-AW37RWJN.js.map +0 -1
  1183. package/dist/ingest-X7UPOCKP.js +0 -24
  1184. package/dist/insights-MHUV75RQ.js +0 -424
  1185. package/dist/insights-MHUV75RQ.js.map +0 -1
  1186. package/dist/insights-NLQXAW3F.js +0 -123
  1187. package/dist/insights-NLQXAW3F.js.map +0 -1
  1188. package/dist/inspect-TXVKPBAR.js +0 -191
  1189. package/dist/inspect-TXVKPBAR.js.map +0 -1
  1190. package/dist/inspiration-64DY3QWN.js +0 -53
  1191. package/dist/intent-3HY6DRHW.js +0 -96
  1192. package/dist/intent-3HY6DRHW.js.map +0 -1
  1193. package/dist/job-L73KC4TC.js +0 -203
  1194. package/dist/job-L73KC4TC.js.map +0 -1
  1195. package/dist/job-create-LR3EHWKO.js +0 -110
  1196. package/dist/job-create-LR3EHWKO.js.map +0 -1
  1197. package/dist/job-status-MSL4EAJT.js +0 -75
  1198. package/dist/job-status-MSL4EAJT.js.map +0 -1
  1199. package/dist/keep-XUATLR5B.js +0 -80
  1200. package/dist/keep-XUATLR5B.js.map +0 -1
  1201. package/dist/keyword-gap-DJAYVD4U.js +0 -131
  1202. package/dist/keyword-gap-DJAYVD4U.js.map +0 -1
  1203. package/dist/keyword-metrics-4FEFFTQO.js +0 -198
  1204. package/dist/keyword-metrics-4FEFFTQO.js.map +0 -1
  1205. package/dist/keywords-for-site-HIMEQY63.js +0 -125
  1206. package/dist/keywords-for-site-HIMEQY63.js.map +0 -1
  1207. package/dist/landing-KU3ILVB3.js +0 -28
  1208. package/dist/landing-KU3ILVB3.js.map +0 -1
  1209. package/dist/languages-4QYK5DMW.js +0 -56
  1210. package/dist/languages-4QYK5DMW.js.map +0 -1
  1211. package/dist/languages-L5E7WS77.js +0 -41
  1212. package/dist/languages-L5E7WS77.js.map +0 -1
  1213. package/dist/layerize-YAVLAXYM.js +0 -192
  1214. package/dist/layerize-YAVLAXYM.js.map +0 -1
  1215. package/dist/leads-DR3EK77T.js +0 -91
  1216. package/dist/leads-DR3EK77T.js.map +0 -1
  1217. package/dist/leads-PFPQOCBR.js +0 -286
  1218. package/dist/leads-PFPQOCBR.js.map +0 -1
  1219. package/dist/learn-D4D75X2Y.js +0 -204
  1220. package/dist/library-E2SJS7PT.js +0 -111
  1221. package/dist/library-E2SJS7PT.js.map +0 -1
  1222. package/dist/lighthouse-QMECKX4R.js +0 -76
  1223. package/dist/lighthouse-QMECKX4R.js.map +0 -1
  1224. package/dist/line-item-writes-XMDA7AZQ.js +0 -209
  1225. package/dist/line-item-writes-XMDA7AZQ.js.map +0 -1
  1226. package/dist/line-items-YGKTYKVE.js +0 -104
  1227. package/dist/line-items-YGKTYKVE.js.map +0 -1
  1228. package/dist/link-AOB3WGGN.js +0 -65
  1229. package/dist/link-AOB3WGGN.js.map +0 -1
  1230. package/dist/linkedin-WRJNY6NY.js +0 -1002
  1231. package/dist/linkedin-WRJNY6NY.js.map +0 -1
  1232. package/dist/list-66VKYGKM.js +0 -52
  1233. package/dist/list-66VKYGKM.js.map +0 -1
  1234. package/dist/list-6DZWRLDN.js +0 -59
  1235. package/dist/list-6DZWRLDN.js.map +0 -1
  1236. package/dist/list-6KJWGPPS.js +0 -67
  1237. package/dist/list-6KJWGPPS.js.map +0 -1
  1238. package/dist/list-GXCKA2AN.js +0 -153
  1239. package/dist/list-GXCKA2AN.js.map +0 -1
  1240. package/dist/list-KNHZPT7L.js +0 -65
  1241. package/dist/list-KNHZPT7L.js.map +0 -1
  1242. package/dist/list-LPETG6A6.js +0 -78
  1243. package/dist/list-LPETG6A6.js.map +0 -1
  1244. package/dist/list-WHJNWHSZ.js +0 -53
  1245. package/dist/list-WHJNWHSZ.js.map +0 -1
  1246. package/dist/list-YV5Z2J6U.js +0 -305
  1247. package/dist/list-YV5Z2J6U.js.map +0 -1
  1248. package/dist/locations-4FZYKG2A.js +0 -68
  1249. package/dist/locations-4FZYKG2A.js.map +0 -1
  1250. package/dist/locations-W32YE2KS.js +0 -41
  1251. package/dist/locations-W32YE2KS.js.map +0 -1
  1252. package/dist/log-YVW46HL7.js +0 -94
  1253. package/dist/log-YVW46HL7.js.map +0 -1
  1254. package/dist/logo-7O7VW5R3.js +0 -19
  1255. package/dist/lookup-Z2X5WAO6.js +0 -23
  1256. package/dist/make-Q6BQ7LNT.js +0 -505
  1257. package/dist/make-Q6BQ7LNT.js.map +0 -1
  1258. package/dist/map-VZM5C6DA.js +0 -406
  1259. package/dist/map-VZM5C6DA.js.map +0 -1
  1260. package/dist/mcp-KSJDALG6.js +0 -478
  1261. package/dist/mcp-KSJDALG6.js.map +0 -1
  1262. package/dist/media-7P66TUIR.js +0 -15
  1263. package/dist/media-JBQKYSRQ.js +0 -90
  1264. package/dist/media-JBQKYSRQ.js.map +0 -1
  1265. package/dist/media-sources-427U333M.js +0 -32
  1266. package/dist/members-ABGEFALK.js +0 -46
  1267. package/dist/members-ABGEFALK.js.map +0 -1
  1268. package/dist/meta-JH4FHVNX.js +0 -69
  1269. package/dist/metrics-ALSPX6EQ.js +0 -153
  1270. package/dist/metrics-ALSPX6EQ.js.map +0 -1
  1271. package/dist/models-7BM5BKXX.js +0 -157
  1272. package/dist/models-7BM5BKXX.js.map +0 -1
  1273. package/dist/normalize-DFK3DGGZ.js +0 -808
  1274. package/dist/normalize-DFK3DGGZ.js.map +0 -1
  1275. package/dist/normalize-NDR7YEQE.js +0 -140
  1276. package/dist/normalize-NDR7YEQE.js.map +0 -1
  1277. package/dist/options-G5VGH22X.js +0 -123
  1278. package/dist/options-G5VGH22X.js.map +0 -1
  1279. package/dist/output-ZLXBAA4O.js +0 -25
  1280. package/dist/page-L7BBMINT.js +0 -107
  1281. package/dist/page-L7BBMINT.js.map +0 -1
  1282. package/dist/pages-NBV35ECG.js +0 -67
  1283. package/dist/pages-NBV35ECG.js.map +0 -1
  1284. package/dist/performance-SOMZNPIG.js +0 -25
  1285. package/dist/pinterest-KXAZTRDP.js +0 -98
  1286. package/dist/pinterest-KXAZTRDP.js.map +0 -1
  1287. package/dist/pixels-DYWHXAJT.js +0 -109
  1288. package/dist/pixels-DYWHXAJT.js.map +0 -1
  1289. package/dist/pixels-UMS2QBUG.js +0 -61
  1290. package/dist/pixels-UMS2QBUG.js.map +0 -1
  1291. package/dist/preview-C5FER5SU.js +0 -170
  1292. package/dist/preview-C5FER5SU.js.map +0 -1
  1293. package/dist/promoted-tweet-writes-3PECZLQA.js +0 -181
  1294. package/dist/promoted-tweet-writes-3PECZLQA.js.map +0 -1
  1295. package/dist/promoted-tweets-GMV6WIWV.js +0 -120
  1296. package/dist/promoted-tweets-GMV6WIWV.js.map +0 -1
  1297. package/dist/properties-YAJQF577.js +0 -102
  1298. package/dist/properties-YAJQF577.js.map +0 -1
  1299. package/dist/publish-5WDUTTG5.js +0 -355
  1300. package/dist/publish-5WDUTTG5.js.map +0 -1
  1301. package/dist/query-TBWL52JI.js +0 -1342
  1302. package/dist/query-TBWL52JI.js.map +0 -1
  1303. package/dist/query-VESQSTQI.js +0 -237
  1304. package/dist/query-VESQSTQI.js.map +0 -1
  1305. package/dist/query-XZQSY62P.js +0 -248
  1306. package/dist/query-XZQSY62P.js.map +0 -1
  1307. package/dist/read-UMAWDVKX.js +0 -141
  1308. package/dist/read-UMAWDVKX.js.map +0 -1
  1309. package/dist/reddit-OPHQFRRC.js +0 -27
  1310. package/dist/refresh-U56RE7DI.js +0 -96
  1311. package/dist/refresh-U56RE7DI.js.map +0 -1
  1312. package/dist/release-P66DYNKQ.js +0 -61
  1313. package/dist/release-P66DYNKQ.js.map +0 -1
  1314. package/dist/relevant-pages-DSQQU6F7.js +0 -100
  1315. package/dist/relevant-pages-DSQQU6F7.js.map +0 -1
  1316. package/dist/remove-GRLXSDZC.js +0 -50
  1317. package/dist/remove-GRLXSDZC.js.map +0 -1
  1318. package/dist/remove-IRIP4OKM.js +0 -52
  1319. package/dist/remove-IRIP4OKM.js.map +0 -1
  1320. package/dist/reopen-PMIO7NJJ.js +0 -65
  1321. package/dist/reopen-PMIO7NJJ.js.map +0 -1
  1322. package/dist/rerun-V4O6TKBY.js +0 -84
  1323. package/dist/rerun-V4O6TKBY.js.map +0 -1
  1324. package/dist/research-MG3MESKH.js +0 -59
  1325. package/dist/research-RFPBKIVP.js +0 -228
  1326. package/dist/research-RFPBKIVP.js.map +0 -1
  1327. package/dist/reset-3HKXFAV7.js +0 -56
  1328. package/dist/reset-3HKXFAV7.js.map +0 -1
  1329. package/dist/reset-LQZA3CIB.js +0 -56
  1330. package/dist/reset-LQZA3CIB.js.map +0 -1
  1331. package/dist/resolve-H33CQAY4.js +0 -122
  1332. package/dist/resolve-H33CQAY4.js.map +0 -1
  1333. package/dist/retry-6F3YAVYQ.js +0 -64
  1334. package/dist/retry-6F3YAVYQ.js.map +0 -1
  1335. package/dist/retry-QWD3HWFP.js +0 -62
  1336. package/dist/retry-QWD3HWFP.js.map +0 -1
  1337. package/dist/retry-failed-7OAJ5TMD.js +0 -47
  1338. package/dist/retry-failed-7OAJ5TMD.js.map +0 -1
  1339. package/dist/run-CGZIVYLV.js +0 -67
  1340. package/dist/run-CGZIVYLV.js.map +0 -1
  1341. package/dist/run-PZF26R6H.js +0 -59
  1342. package/dist/scaffold-ad-AI6R4GDU.js +0 -1458
  1343. package/dist/scaffold-ad-AI6R4GDU.js.map +0 -1
  1344. package/dist/scaffold-static-ad-T7ZDHRB3.js +0 -944
  1345. package/dist/scaffold-static-ad-T7ZDHRB3.js.map +0 -1
  1346. package/dist/scaffold-video-R24U2WC7.js +0 -840
  1347. package/dist/scaffold-video-R24U2WC7.js.map +0 -1
  1348. package/dist/schedule-BK44B77G.js +0 -68
  1349. package/dist/schedule-BK44B77G.js.map +0 -1
  1350. package/dist/schedule-F2EEY4UK.js +0 -63
  1351. package/dist/schedule-F2EEY4UK.js.map +0 -1
  1352. package/dist/scheduled-agents-CIEAOWM6.js +0 -49
  1353. package/dist/schema-3B6FDPBF.js +0 -131
  1354. package/dist/schema-3B6FDPBF.js.map +0 -1
  1355. package/dist/schema-4FOZ5W35.js +0 -65
  1356. package/dist/schema-4FOZ5W35.js.map +0 -1
  1357. package/dist/scrape-P46M2J43.js +0 -2243
  1358. package/dist/scrape-P46M2J43.js.map +0 -1
  1359. package/dist/screenshot-6F7G3LN5.js +0 -104
  1360. package/dist/screenshot-6F7G3LN5.js.map +0 -1
  1361. package/dist/search-23LREBOG.js +0 -94
  1362. package/dist/search-23LREBOG.js.map +0 -1
  1363. package/dist/search-DNYAA6TT.js +0 -176
  1364. package/dist/search-DNYAA6TT.js.map +0 -1
  1365. package/dist/search-FORHMB7P.js +0 -27
  1366. package/dist/search-KQMPPO3X.js +0 -226
  1367. package/dist/search-KQMPPO3X.js.map +0 -1
  1368. package/dist/search-X4AKUB2K.js +0 -93
  1369. package/dist/search-X4AKUB2K.js.map +0 -1
  1370. package/dist/seeds-K4CHZ2HU.js +0 -103
  1371. package/dist/seeds-K4CHZ2HU.js.map +0 -1
  1372. package/dist/select-52K6KZGY.js +0 -95
  1373. package/dist/sends-UH2MZGCD.js +0 -310
  1374. package/dist/sends-UH2MZGCD.js.map +0 -1
  1375. package/dist/sequences-BXGO3NPA.js +0 -148
  1376. package/dist/sequences-BXGO3NPA.js.map +0 -1
  1377. package/dist/set-prompt-3IXP42AK.js +0 -186
  1378. package/dist/set-prompt-3IXP42AK.js.map +0 -1
  1379. package/dist/setup-links-OV6ALAUU.js +0 -143
  1380. package/dist/setup-links-OV6ALAUU.js.map +0 -1
  1381. package/dist/shared-VMV44VPB.js +0 -32
  1382. package/dist/site-MQ5ORTKV.js +0 -179
  1383. package/dist/site-MQ5ORTKV.js.map +0 -1
  1384. package/dist/sitemaps-LKCTG2WM.js +0 -88
  1385. package/dist/sitemaps-LKCTG2WM.js.map +0 -1
  1386. package/dist/sites-YHUF7G4Z.js +0 -102
  1387. package/dist/sites-YHUF7G4Z.js.map +0 -1
  1388. package/dist/skills-CG674XHN.js +0 -49
  1389. package/dist/skills-CG674XHN.js.map +0 -1
  1390. package/dist/sources-44THTN2Y.js +0 -422
  1391. package/dist/sources-44THTN2Y.js.map +0 -1
  1392. package/dist/sources-BQNCLGWT.js +0 -30
  1393. package/dist/stale-JGLP7BAC.js +0 -63
  1394. package/dist/stale-JGLP7BAC.js.map +0 -1
  1395. package/dist/stats-TO3J2FU6.js +0 -34
  1396. package/dist/status-NJ3SMBGS.js +0 -64
  1397. package/dist/status-NJ3SMBGS.js.map +0 -1
  1398. package/dist/sticker-YBOWSWMR.js +0 -96
  1399. package/dist/sticker-YBOWSWMR.js.map +0 -1
  1400. package/dist/stock-E6NMDSVI.js +0 -181
  1401. package/dist/stock-E6NMDSVI.js.map +0 -1
  1402. package/dist/studio-LHH62SZC.js +0 -49
  1403. package/dist/sync-2R5UKTHN.js +0 -56
  1404. package/dist/sync-2R5UKTHN.js.map +0 -1
  1405. package/dist/sync-AZRR5JNS.js +0 -266
  1406. package/dist/sync-AZRR5JNS.js.map +0 -1
  1407. package/dist/sync-ML7E5J22.js +0 -56
  1408. package/dist/sync-ML7E5J22.js.map +0 -1
  1409. package/dist/sync-definition-LBPI7P5F.js +0 -48
  1410. package/dist/tag-manager-D3YNI7JG.js +0 -43
  1411. package/dist/tags-BYGKXDDS.js +0 -21
  1412. package/dist/tags-BYGKXDDS.js.map +0 -1
  1413. package/dist/tags-OOQV4G2Y.js +0 -26
  1414. package/dist/tags-TKYXWGN4.js +0 -21
  1415. package/dist/tags-TKYXWGN4.js.map +0 -1
  1416. package/dist/tags-V732MEES.js +0 -226
  1417. package/dist/tags-V732MEES.js.map +0 -1
  1418. package/dist/tags-YLC46IXM.js +0 -21
  1419. package/dist/tags-YLC46IXM.js.map +0 -1
  1420. package/dist/targeting-constants-XT56MOGP.js +0 -119
  1421. package/dist/targeting-constants-XT56MOGP.js.map +0 -1
  1422. package/dist/targeting-criteria-24X3IIJS.js +0 -114
  1423. package/dist/targeting-criteria-24X3IIJS.js.map +0 -1
  1424. package/dist/targets-AKAN2HFY.js +0 -104
  1425. package/dist/targets-AKAN2HFY.js.map +0 -1
  1426. package/dist/templates-7MRVQTB2.js +0 -180
  1427. package/dist/templates-7MRVQTB2.js.map +0 -1
  1428. package/dist/testimonials-OIZMXEYZ.js +0 -32
  1429. package/dist/top-companies-3IG5FRQ2.js +0 -109
  1430. package/dist/top-companies-3IG5FRQ2.js.map +0 -1
  1431. package/dist/triggers-ZHNWHJG4.js +0 -143
  1432. package/dist/triggers-ZHNWHJG4.js.map +0 -1
  1433. package/dist/tweets-V5R5DUA2.js +0 -124
  1434. package/dist/tweets-V5R5DUA2.js.map +0 -1
  1435. package/dist/unfollow-RYDJDDAV.js +0 -48
  1436. package/dist/unfollow-RYDJDDAV.js.map +0 -1
  1437. package/dist/unlink-CS7QNOU2.js +0 -68
  1438. package/dist/unlink-CS7QNOU2.js.map +0 -1
  1439. package/dist/unstage-DDZ5F2Z6.js +0 -86
  1440. package/dist/unstage-DDZ5F2Z6.js.map +0 -1
  1441. package/dist/unstage-KPLOFKU5.js +0 -96
  1442. package/dist/unstage-KPLOFKU5.js.map +0 -1
  1443. package/dist/update-ASY63WIK.js +0 -157
  1444. package/dist/update-ASY63WIK.js.map +0 -1
  1445. package/dist/update-HA5IQCJ2.js +0 -99
  1446. package/dist/update-HA5IQCJ2.js.map +0 -1
  1447. package/dist/update-R3VD5DC3.js +0 -143
  1448. package/dist/update-R3VD5DC3.js.map +0 -1
  1449. package/dist/update-WMCBSNSD.js +0 -64
  1450. package/dist/update-WMCBSNSD.js.map +0 -1
  1451. package/dist/upload-ADEYBWTV.js +0 -152
  1452. package/dist/upload-ADEYBWTV.js.map +0 -1
  1453. package/dist/upload-WBNPIOVR.js +0 -128
  1454. package/dist/upload-WBNPIOVR.js.map +0 -1
  1455. package/dist/upscale-WYTZPUIA.js +0 -111
  1456. package/dist/upscale-WYTZPUIA.js.map +0 -1
  1457. package/dist/url-options-DOCH5AWX.js +0 -128
  1458. package/dist/url-options-DOCH5AWX.js.map +0 -1
  1459. package/dist/url-params-IYTU3MVV.js +0 -99
  1460. package/dist/url-params-IYTU3MVV.js.map +0 -1
  1461. package/dist/use-RGJMULXG.js +0 -97
  1462. package/dist/use-RGJMULXG.js.map +0 -1
  1463. package/dist/validate-T22BKIFK.js +0 -89
  1464. package/dist/validate-T22BKIFK.js.map +0 -1
  1465. package/dist/variant-3DBL2RDV.js +0 -339
  1466. package/dist/variant-3DBL2RDV.js.map +0 -1
  1467. package/dist/videos-7SB2CLZW.js +0 -39
  1468. package/dist/view-5QDCP7HF.js +0 -123
  1469. package/dist/view-5QDCP7HF.js.map +0 -1
  1470. package/dist/viewer-check-NGIMC2BR.js +0 -66
  1471. package/dist/web-IRWXTGE2.js +0 -136
  1472. package/dist/web-IRWXTGE2.js.map +0 -1
  1473. package/dist/winners-JSI4N26Y.js +0 -81
  1474. package/dist/winners-JSI4N26Y.js.map +0 -1
  1475. package/dist/winning-ads-XQZ6HEX5.js +0 -62
  1476. package/dist/write-commands-3C3TV2YC.js +0 -714
  1477. package/dist/write-commands-3C3TV2YC.js.map +0 -1
  1478. package/dist/write-commands-7WIG5UDU.js +0 -731
  1479. package/dist/write-commands-7WIG5UDU.js.map +0 -1
  1480. package/dist/write-commands-G7HHGAEE.js +0 -1009
  1481. package/dist/write-commands-G7HHGAEE.js.map +0 -1
  1482. package/dist/write-commands-ROQSZFXR.js +0 -207
  1483. package/dist/write-commands-ROQSZFXR.js.map +0 -1
  1484. package/dist/x-BLTCL6L3.js +0 -47
  1485. /package/dist/{actions-7XF5L4U3.js.map → actions-PEI6ZQAG.js.map} +0 -0
  1486. /package/dist/{ads-IRE5RZCS.js.map → ads-TJ7ACFHG.js.map} +0 -0
  1487. /package/dist/{avatars-G54K55J3.js.map → avatars-2UQJXHPV.js.map} +0 -0
  1488. /package/dist/{brand-ODTHWWFL.js.map → brand-XBABUT52.js.map} +0 -0
  1489. /package/dist/{canvas-M5HAG7VA.js.map → canvas-KEXE5P6S.js.map} +0 -0
  1490. /package/dist/{chatgpt-PLKNBNVL.js.map → chatgpt-7W75X3ER.js.map} +0 -0
  1491. /package/dist/{chunk-OZLBLXTK.js.map → chunk-2TK4DEOE.js.map} +0 -0
  1492. /package/dist/{chunk-ZHW3O25C.js.map → chunk-4NDCTLI5.js.map} +0 -0
  1493. /package/dist/{chunk-5NQIFCNX.js.map → chunk-5ARG3CQG.js.map} +0 -0
  1494. /package/dist/{chunk-ZAFR46HG.js.map → chunk-5Z2KSVIV.js.map} +0 -0
  1495. /package/dist/{chunk-EYO62URT.js.map → chunk-6B7VKFS4.js.map} +0 -0
  1496. /package/dist/{chunk-W7OFLOZB.js.map → chunk-6G5K6ZC6.js.map} +0 -0
  1497. /package/dist/{chunk-RJAQEZVD.js.map → chunk-73QKIIIR.js.map} +0 -0
  1498. /package/dist/{chunk-YS6PCTPS.js.map → chunk-75FDTDLH.js.map} +0 -0
  1499. /package/dist/{chunk-NGT6MARJ.js.map → chunk-7J6EHOH6.js.map} +0 -0
  1500. /package/dist/{chunk-TD44SXQX.js.map → chunk-7OFNN4CT.js.map} +0 -0
  1501. /package/dist/{chunk-LDVMMLRA.js.map → chunk-C6U6UDHJ.js.map} +0 -0
  1502. /package/dist/{chunk-6FBZ5E6L.js.map → chunk-DIY6QR3E.js.map} +0 -0
  1503. /package/dist/{chunk-F3WFP75M.js.map → chunk-EFSYTROP.js.map} +0 -0
  1504. /package/dist/{chunk-4MU3U3SO.js.map → chunk-FEXDI4NM.js.map} +0 -0
  1505. /package/dist/{chunk-YMOVI3WT.js.map → chunk-FHXIEMCG.js.map} +0 -0
  1506. /package/dist/{chunk-R34LJSPM.js.map → chunk-H26L3OQY.js.map} +0 -0
  1507. /package/dist/{chunk-NMMKTPGI.js.map → chunk-HIPDMQZ6.js.map} +0 -0
  1508. /package/dist/{chunk-FRVROFI6.js.map → chunk-HYCIBVDW.js.map} +0 -0
  1509. /package/dist/{chunk-BSUN6JMU.js.map → chunk-IFWP3ZDO.js.map} +0 -0
  1510. /package/dist/{chunk-LQ4HBQ2B.js.map → chunk-IXKEWS7X.js.map} +0 -0
  1511. /package/dist/{chunk-DPEQVHTX.js.map → chunk-JERXV5A3.js.map} +0 -0
  1512. /package/dist/{chunk-TCSPJQ2X.js.map → chunk-KLNKEVIY.js.map} +0 -0
  1513. /package/dist/{chunk-JMXBUIVI.js.map → chunk-KNY76UGC.js.map} +0 -0
  1514. /package/dist/{chunk-IMZIECST.js.map → chunk-KWAOTV7F.js.map} +0 -0
  1515. /package/dist/{chunk-A57AHUNA.js.map → chunk-LERTEZST.js.map} +0 -0
  1516. /package/dist/{chunk-73MCYA5Z.js.map → chunk-LL2CD5WU.js.map} +0 -0
  1517. /package/dist/{chunk-UA5EUJXV.js.map → chunk-LO6GEJ4Z.js.map} +0 -0
  1518. /package/dist/{chunk-IRHNWYDT.js.map → chunk-LS5MTRFI.js.map} +0 -0
  1519. /package/dist/{chunk-F7HBCFUA.js.map → chunk-LZ73CZGP.js.map} +0 -0
  1520. /package/dist/{chunk-NGYKF4T6.js.map → chunk-MELOSESI.js.map} +0 -0
  1521. /package/dist/{chunk-SXRSLUW7.js.map → chunk-NAWWC5I3.js.map} +0 -0
  1522. /package/dist/{chunk-FFZBW4CC.js.map → chunk-NPE7EWBE.js.map} +0 -0
  1523. /package/dist/{chunk-JH7NHC5W.js.map → chunk-OKG6GX2F.js.map} +0 -0
  1524. /package/dist/{chunk-WAQYXH2U.js.map → chunk-PBA3YCZA.js.map} +0 -0
  1525. /package/dist/{chunk-AWICKT2B.js.map → chunk-PWGWMIIJ.js.map} +0 -0
  1526. /package/dist/{chunk-F6NJAHAZ.js.map → chunk-QHLB5V7J.js.map} +0 -0
  1527. /package/dist/{chunk-TTFTS2SO.js.map → chunk-QJE6ZYGI.js.map} +0 -0
  1528. /package/dist/{chunk-Y4JR4RDM.js.map → chunk-QSN5MZGS.js.map} +0 -0
  1529. /package/dist/{chunk-HWWPDUZM.js.map → chunk-RSW6QJPH.js.map} +0 -0
  1530. /package/dist/{chunk-LYZVLKRA.js.map → chunk-SBMIQDCX.js.map} +0 -0
  1531. /package/dist/{chunk-BDD2ILIT.js.map → chunk-STIB5DR5.js.map} +0 -0
  1532. /package/dist/{chunk-A3PEJ3V3.js.map → chunk-TBEUMOEL.js.map} +0 -0
  1533. /package/dist/{chunk-RPFBZHHE.js.map → chunk-TD2P4HBP.js.map} +0 -0
  1534. /package/dist/{chunk-CBEL3P22.js.map → chunk-VBHDZSI5.js.map} +0 -0
  1535. /package/dist/{chunk-6YWRJMGR.js.map → chunk-VFIOJD5M.js.map} +0 -0
  1536. /package/dist/{chunk-QYOPQRLI.js.map → chunk-VVZBBKRC.js.map} +0 -0
  1537. /package/dist/{chunk-G32FXVQ6.js.map → chunk-W3B4BHQU.js.map} +0 -0
  1538. /package/dist/{chunk-Q7UF4ERB.js.map → chunk-WS2GMOSG.js.map} +0 -0
  1539. /package/dist/{chunk-EPK2GYLV.js.map → chunk-XBOK23HI.js.map} +0 -0
  1540. /package/dist/{chunk-HA5D6US2.js.map → chunk-XG3XCHN6.js.map} +0 -0
  1541. /package/dist/{chunk-L4DOL7L7.js.map → chunk-XL3BMSYG.js.map} +0 -0
  1542. /package/dist/{chunk-ECXNE6RJ.js.map → chunk-XYMPS526.js.map} +0 -0
  1543. /package/dist/{chunk-WWD4PITU.js.map → chunk-YBMVHGY3.js.map} +0 -0
  1544. /package/dist/{client-XKDFFS7O.js.map → client-VHN32ZRE.js.map} +0 -0
  1545. /package/dist/{connect-ATGYJNG4.js.map → connect-TA5W6YGW.js.map} +0 -0
  1546. /package/dist/{customers-ACRYXALZ.js.map → customers-4RJGRR2Y.js.map} +0 -0
  1547. /package/dist/{env-ODWJOKNV.js.map → env-KIP2J2UB.js.map} +0 -0
  1548. /package/dist/{fit-5WZ6NVSF.js.map → fit-KXHYKIA4.js.map} +0 -0
  1549. /package/dist/{fonts-7U7I2TWV.js.map → fonts-NTOQS2KU.js.map} +0 -0
  1550. /package/dist/{ga4-QPEXE6YG.js.map → ga4-UDQ2HA2J.js.map} +0 -0
  1551. /package/dist/{gsc-LC5ADBA3.js.map → gsc-P3QYGDV2.js.map} +0 -0
  1552. /package/dist/{ideas-NEBJBIBM.js.map → ideas-PU7IAX6F.js.map} +0 -0
  1553. /package/dist/{images-ASWWS5TH.js.map → images-QI2HTX6B.js.map} +0 -0
  1554. /package/dist/{ingest-X7UPOCKP.js.map → ingest-BYJNFOOT.js.map} +0 -0
  1555. /package/dist/{inspiration-64DY3QWN.js.map → inspiration-I4MMKAWA.js.map} +0 -0
  1556. /package/dist/{learn-D4D75X2Y.js.map → learn-HZU3QWNN.js.map} +0 -0
  1557. /package/dist/{logo-7O7VW5R3.js.map → logo-2IP663QO.js.map} +0 -0
  1558. /package/dist/{lookup-Z2X5WAO6.js.map → lookup-XK45W2SH.js.map} +0 -0
  1559. /package/dist/{media-7P66TUIR.js.map → media-M7E6V2XU.js.map} +0 -0
  1560. /package/dist/{media-sources-427U333M.js.map → media-sources-3D246I3O.js.map} +0 -0
  1561. /package/dist/{meta-JH4FHVNX.js.map → meta-EZ4SY25M.js.map} +0 -0
  1562. /package/dist/{output-ZLXBAA4O.js.map → output-RAH3TSIL.js.map} +0 -0
  1563. /package/dist/{performance-SOMZNPIG.js.map → performance-7LQQCEAW.js.map} +0 -0
  1564. /package/dist/{reddit-OPHQFRRC.js.map → reddit-INGPFGP4.js.map} +0 -0
  1565. /package/dist/{research-MG3MESKH.js.map → research-PA53M335.js.map} +0 -0
  1566. /package/dist/{run-PZF26R6H.js.map → run-2IM2QOCI.js.map} +0 -0
  1567. /package/dist/{scheduled-agents-CIEAOWM6.js.map → scheduled-agents-2NCGSD76.js.map} +0 -0
  1568. /package/dist/{search-FORHMB7P.js.map → search-XUIVHGAY.js.map} +0 -0
  1569. /package/dist/{select-52K6KZGY.js.map → select-ZWDEVAH2.js.map} +0 -0
  1570. /package/dist/{shared-VMV44VPB.js.map → shared-HJDFNID4.js.map} +0 -0
  1571. /package/dist/{sources-BQNCLGWT.js.map → sources-UGMZFZ2E.js.map} +0 -0
  1572. /package/dist/{stats-TO3J2FU6.js.map → stats-NNXZMPZR.js.map} +0 -0
  1573. /package/dist/{studio-LHH62SZC.js.map → studio-HUEBE6DS.js.map} +0 -0
  1574. /package/dist/{sync-definition-LBPI7P5F.js.map → sync-definition-YBDM7D4M.js.map} +0 -0
  1575. /package/dist/{tag-manager-D3YNI7JG.js.map → tag-manager-HREEYGVM.js.map} +0 -0
  1576. /package/dist/{tags-OOQV4G2Y.js.map → tags-R3K35KTL.js.map} +0 -0
  1577. /package/dist/{testimonials-OIZMXEYZ.js.map → testimonials-5QGCPZ6K.js.map} +0 -0
  1578. /package/dist/{videos-7SB2CLZW.js.map → videos-GIYDCCKR.js.map} +0 -0
  1579. /package/dist/{viewer-check-NGIMC2BR.js.map → viewer-check-VN2JK2LW.js.map} +0 -0
  1580. /package/dist/{winning-ads-XQZ6HEX5.js.map → winning-ads-7QWEIMRU.js.map} +0 -0
  1581. /package/dist/{x-BLTCL6L3.js.map → x-OEAKQBB7.js.map} +0 -0
@@ -1,1866 +0,0 @@
1
- import {
2
- AD_COPY_LIST_USAGE,
3
- failWriteValidation,
4
- keywordEntries,
5
- listFlag,
6
- loadJsonFileArg,
7
- mergePayload,
8
- microsFlag,
9
- requireCustomerId,
10
- requireStringFlag,
11
- requireTarget,
12
- stageCreate,
13
- stageGoogleOp,
14
- stageGoogleOps,
15
- stageTarget,
16
- stageUpdate
17
- } from "./chunk-R4ODZS43.js";
18
- import {
19
- repeatedFlagValues,
20
- repeatedValues
21
- } from "./chunk-ERSX3MKH.js";
22
- import {
23
- booleanWordPositionalError
24
- } from "./chunk-QRXTDXMX.js";
25
- import "./chunk-T5RKIWPQ.js";
26
- import "./chunk-D5FY4FAK.js";
27
- import {
28
- ACCOUNT_URL_OPTIONS_LOCATION,
29
- ACCOUNT_URL_OPTIONS_NOT_STAGEABLE
30
- } from "./chunk-EVYXTT7V.js";
31
- import {
32
- writeJsonEnvelope
33
- } from "./chunk-6YWRJMGR.js";
34
- import "./chunk-ZJWUBJYQ.js";
35
- import {
36
- ASSET_GROUP_ASSET_FIELD_TYPES,
37
- CONVERSION_ACTION_CATEGORIES,
38
- CONVERSION_ORIGINS,
39
- NEGATIVE_GEO_TARGET_TYPES,
40
- POSITIVE_GEO_TARGET_TYPES
41
- } from "./chunk-XML7AJM3.js";
42
- import "./chunk-EPK2GYLV.js";
43
- import "./chunk-BSUN6JMU.js";
44
- import "./chunk-SXRSLUW7.js";
45
- import "./chunk-O4AXPEOE.js";
46
- import "./chunk-JIHG6K7N.js";
47
- import "./chunk-YQSBHWOI.js";
48
-
49
- // src/commands/ads/google/index.ts
50
- import { defineCommand as defineCommand3 } from "citty";
51
-
52
- // src/commands/ads/google/keywords/index.ts
53
- import { defineCommand } from "citty";
54
- var keywordsCommand = defineCommand({
55
- meta: {
56
- name: "keywords",
57
- description: `Keyword research tools. Subcommands: discover, metrics, locations, languages.
58
-
59
- Examples:
60
- baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes"
61
- baker ads google keywords metrics --customer-id 1234567890 --keywords "running shoes,nike shoes"
62
- baker ads google keywords locations
63
- baker ads google keywords languages`
64
- },
65
- subCommands: {
66
- discover: () => import("./discover-IASOLBUQ.js").then((m) => m.discoverCommand),
67
- metrics: () => import("./metrics-ALSPX6EQ.js").then((m) => m.metricsCommand),
68
- locations: () => import("./locations-W32YE2KS.js").then((m) => m.locationsCommand),
69
- languages: () => import("./languages-L5E7WS77.js").then((m) => m.languagesCommand)
70
- }
71
- });
72
-
73
- // src/commands/ads/google/write-commands.ts
74
- import { defineCommand as defineCommand2 } from "citty";
75
-
76
- // src/commands/ads/google/ad-copy-flags.ts
77
- var AD_COPY_LIST_FLAGS = ["headlines", "descriptions", "long-headlines"];
78
- function skipBlanks(value, at) {
79
- let i = at;
80
- while (value[i] === " " || value[i] === " ") i++;
81
- return i;
82
- }
83
- function readQuotedField(value, open, flag) {
84
- let text = "";
85
- let j = open + 1;
86
- while (!(value[j] === '"' && value[j + 1] !== '"')) {
87
- if (j >= value.length) {
88
- failWriteValidation(`--${flag} has a quote with no closing quote: ${value} \u2014 ${AD_COPY_LIST_USAGE}`);
89
- }
90
- text += value[j];
91
- j += value[j] === '"' ? 2 : 1;
92
- }
93
- const after = skipBlanks(value, j + 1);
94
- if (after < value.length && value[after] !== ",") {
95
- failWriteValidation(
96
- `--${flag}: text follows the closing quote of "${text}" \u2014 a quoted item must end at a comma. To put a quote inside an item, double it ("") or ${AD_COPY_LIST_USAGE}`
97
- );
98
- }
99
- return { text, next: after + 1 };
100
- }
101
- function splitQuotedList(value, flag) {
102
- const fields = [];
103
- let i = 0;
104
- while (i <= value.length) {
105
- const start = skipBlanks(value, i);
106
- if (value[start] === '"') {
107
- const { text, next } = readQuotedField(value, start, flag);
108
- fields.push({ text, quoted: true });
109
- i = next;
110
- } else {
111
- const comma = value.indexOf(",", start);
112
- const end = comma === -1 ? value.length : comma;
113
- fields.push({ text: value.slice(start, end), quoted: false });
114
- i = end + 1;
115
- }
116
- }
117
- const several = fields.length > 1;
118
- return fields.map((field) => ({ text: field.text.trim(), splitAtComma: several && !field.quoted }));
119
- }
120
- function jsonStringArray(value) {
121
- if (!value.startsWith("[")) return void 0;
122
- try {
123
- const parsed = JSON.parse(value);
124
- return Array.isArray(parsed) && parsed.every((v) => typeof v === "string") ? parsed : void 0;
125
- } catch {
126
- return void 0;
127
- }
128
- }
129
- function parseCopyList(value, flag) {
130
- let items;
131
- if (Array.isArray(value)) {
132
- items = value.filter((v) => typeof v === "string").map((v) => ({ text: v.trim(), splitAtComma: false }));
133
- } else if (typeof value === "string") {
134
- const trimmed = value.trim();
135
- const json = jsonStringArray(trimmed);
136
- items = json ? json.map((v) => ({ text: v.trim(), splitAtComma: false })) : splitQuotedList(trimmed, flag);
137
- } else {
138
- return void 0;
139
- }
140
- const kept = items.filter((item) => item.text.length > 0);
141
- return kept.length > 0 ? kept : void 0;
142
- }
143
- function copyListFlag(value, flag) {
144
- return parseCopyList(value, flag)?.map((item) => item.text);
145
- }
146
- function refuseDashLedValue(rawArgs, flag) {
147
- for (let i = 0; i < rawArgs.length - 1; i++) {
148
- if (rawArgs[i] === "--") return;
149
- const value = rawArgs[i + 1];
150
- if (rawArgs[i] === `--${flag}` && value?.startsWith("-")) {
151
- failWriteValidation(
152
- `--${flag} is followed by "${value}", which starts with a dash and is read as another flag, not as copy. Join copy that starts with a dash to its flag with =: --${flag}="${value}"`
153
- );
154
- }
155
- }
156
- }
157
- function withRepeatedCopyFlags(args, rawArgs) {
158
- const out = { ...args };
159
- for (const flag of AD_COPY_LIST_FLAGS) {
160
- refuseDashLedValue(rawArgs ?? [], flag);
161
- const values = repeatedFlagValues(rawArgs ?? [], flag);
162
- if (values.length > 1) {
163
- out[flag] = values;
164
- }
165
- }
166
- return out;
167
- }
168
- function copyListSplitHints(args) {
169
- const hints = [];
170
- for (const flag of AD_COPY_LIST_FLAGS) {
171
- const items = parseCopyList(args[flag], flag) ?? [];
172
- const fragments = items.filter((item, index) => index > 0 && item.splitAtComma && new RegExp("^\\p{Ll}", "u").test(item.text));
173
- if (fragments.length > 0) {
174
- hints.push(
175
- `--${flag}: ${fragments.map((f) => `"${f.text}"`).join(", ")} starts in lowercase \u2014 it looks like the end of one item cut at a comma. Check the staged copy; if it was one item, fix this op in place with \`draft amend <ref>\` (the ref this response returned) rather than staging it again, which would leave the cut copy staged too \u2014 ${AD_COPY_LIST_USAGE}.`
176
- );
177
- }
178
- }
179
- return hints;
180
- }
181
-
182
- // src/commands/ads/google/write-commands.ts
183
- var customerIdArg = { "customer-id": { type: "string", description: "10-digit Google Ads customer id" } };
184
- var fileArg = {
185
- file: {
186
- type: "string",
187
- description: "The op payload: a JSON file path, or the JSON object inline (flags override it)"
188
- }
189
- };
190
- var STAGED_WRITE = "Stages only \u2014 applies to the live account when the chat is published. Field contract: `baker capabilities google-ads`.";
191
- var BUDGET_DEMAND_HINTS = [
192
- "Check this daily budget against the search volume you measured for these keywords, not against the plan you had before you measured it. A budget many times larger than the traffic the target pool can absorb never spends, and reads to the client as a number nobody costed.",
193
- "No volume measured yet? Pull it first \u2014 `baker ads google query --preset search-terms` for what the account already captures, `baker ads google keywords metrics` for the market estimate (those are planner figures, never account performance)."
194
- ];
195
- var budgetsCommand = defineCommand2({
196
- meta: { name: "budgets", description: "Stage campaign budget create/update" },
197
- subCommands: {
198
- // Fires where the budget is actually set, rather than on whatever the chat happened to stage
199
- // first. A budget several times what the target pool can absorb never spends, and reads to the
200
- // client as a plan nobody costed.
201
- create: defineCommand2({
202
- meta: {
203
- name: "create",
204
- description: `Stage a daily campaign budget; campaigns reference it by the g_temp_* ref it returns (--budget-ref). ${STAGED_WRITE}`
205
- },
206
- args: {
207
- ...customerIdArg,
208
- ...fileArg,
209
- name: { type: "string", description: 'Budget name as shown in Google Ads (e.g. "Brand search \u2014 daily")' },
210
- amount: { type: "string", description: "Daily amount in major currency units (e.g. 50)" },
211
- delivery: { type: "string", description: "STANDARD | ACCELERATED" },
212
- shared: { type: "boolean", description: "Explicitly shared budget" }
213
- },
214
- run: async ({ args }) => {
215
- const customerId = requireCustomerId(args);
216
- const payload = mergePayload(loadJsonFileArg(args.file), {
217
- name: args.name,
218
- amountMicros: microsFlag(args.amount, "--amount"),
219
- deliveryMethod: args.delivery,
220
- explicitlyShared: args.shared || void 0
221
- });
222
- await stageCreate("google.budget.create", customerId, payload, BUDGET_DEMAND_HINTS);
223
- }
224
- }),
225
- update: defineCommand2({
226
- meta: {
227
- name: "update",
228
- description: `Stage a change to an existing budget's name, daily amount or delivery. ${STAGED_WRITE}`
229
- },
230
- args: {
231
- ...customerIdArg,
232
- ...fileArg,
233
- name: { type: "string", description: "New budget name as shown in Google Ads" },
234
- amount: { type: "string", description: "New daily amount in major currency units" },
235
- delivery: { type: "string" }
236
- },
237
- run: async ({ args }) => {
238
- const customerId = requireCustomerId(args);
239
- const target = requireTarget(args, "budget");
240
- const payload = mergePayload(loadJsonFileArg(args.file), {
241
- name: args.name,
242
- amountMicros: microsFlag(args.amount, "--amount"),
243
- deliveryMethod: args.delivery
244
- });
245
- await stageUpdate("google.budget.update", customerId, target, payload, BUDGET_DEMAND_HINTS);
246
- }
247
- })
248
- }
249
- });
250
- var MAX_CPC_STRATEGIES = ["TARGET_IMPRESSION_SHARE", "TARGET_SPEND", "PERCENT_CPC"];
251
- function biddingFromFlags(args) {
252
- const type = args["bidding-strategy"];
253
- const maxCpcMicros = microsFlag(args["max-cpc"], "--max-cpc");
254
- if (!type) {
255
- if (maxCpcMicros !== void 0) {
256
- failWriteValidation(
257
- "--max-cpc needs --bidding-strategy too (the ceiling belongs to a strategy) \u2014 e.g. --bidding-strategy TARGET_IMPRESSION_SHARE --max-cpc 12"
258
- );
259
- }
260
- if (args["target-cpc"] !== void 0) {
261
- failWriteValidation(
262
- "--target-cpc needs --bidding-strategy too (the target belongs to a strategy) \u2014 use --bidding-strategy TARGET_CPC --target-cpc 1.5"
263
- );
264
- }
265
- return void 0;
266
- }
267
- if (maxCpcMicros !== void 0 && !MAX_CPC_STRATEGIES.includes(type.toUpperCase())) {
268
- failWriteValidation(`${type} does not take --max-cpc \u2014 only ${MAX_CPC_STRATEGIES.join(", ")} carry a bid ceiling`);
269
- }
270
- const targetCpcMicros = microsFlag(args["target-cpc"], "--target-cpc");
271
- if (targetCpcMicros !== void 0 && type.toUpperCase() !== "TARGET_CPC") {
272
- failWriteValidation(
273
- `${type} does not take --target-cpc \u2014 pair it with --bidding-strategy TARGET_CPC (Demand Gen campaigns only)`
274
- );
275
- }
276
- return {
277
- type,
278
- targetCpaMicros: microsFlag(args["target-cpa"], "--target-cpa"),
279
- targetRoas: args["target-roas"] !== void 0 ? Number(args["target-roas"]) : void 0,
280
- targetCpcMicros,
281
- cpcBidCeilingMicros: maxCpcMicros
282
- };
283
- }
284
- var maxCpcArg = {
285
- "max-cpc": {
286
- type: "string",
287
- description: "Max CPC bid ceiling (major units) for TARGET_IMPRESSION_SHARE, TARGET_SPEND or PERCENT_CPC"
288
- }
289
- };
290
- var finalUrlSuffixArg = {
291
- "final-url-suffix": {
292
- type: "string",
293
- description: 'Final URL suffix for this campaign \u2014 bare query params, no leading "?" (e.g. "utm_source=google&utm_agency=baker"). REPLACES the account-level suffix for this campaign; pass "" to clear it back to the account value. Account-wide tagging belongs at the account level: --level account tells you where.'
294
- }
295
- };
296
- var urlOptionsArgs = {
297
- "tracking-template": {
298
- type: "string",
299
- description: 'Campaign tracking template \u2014 the click-measurement URL every ad routes through. Must carry the landing page through {lpurl}, e.g. "https://tracker.example/?url={lpurl}". REPLACES the account-level template for this campaign; pass "" to clear it back to the account value.'
300
- },
301
- "custom-param": {
302
- type: "string",
303
- description: "Custom parameter as key=value, referenced in a template or final URL as {_key} (e.g. --custom-param season=summer). Repeat for several; Google allows 8. REPLACES the campaign's whole set."
304
- },
305
- "clear-custom-params": {
306
- type: "boolean",
307
- description: "Remove every custom parameter from this campaign (Google replaces the set wholesale)."
308
- }
309
- };
310
- function urlCustomParametersFromFlags(args, rawArgs) {
311
- const entries = repeatedValues(rawArgs, "custom-param", args["custom-param"]).filter((v) => v.length > 0);
312
- if (entries.length === 0) {
313
- return args["clear-custom-params"] === true ? [] : void 0;
314
- }
315
- if (args["clear-custom-params"] === true) {
316
- failWriteValidation("--clear-custom-params removes every parameter \u2014 pass it OR --custom-param, not both");
317
- }
318
- return entries.map((entry) => {
319
- const split = entry.indexOf("=");
320
- if (split <= 0) {
321
- failWriteValidation(`--custom-param "${entry}" must be key=value (e.g. --custom-param season=summer)`);
322
- }
323
- return { key: entry.slice(0, split), value: entry.slice(split + 1) };
324
- });
325
- }
326
- var aiMaxArgs = {
327
- "ai-max": {
328
- type: "boolean",
329
- description: "AI Max for Search: --ai-max turns it on (Google then matches searches beyond your keywords), --ai-max=false turns it off along with its text customization and URL expansion. Search campaigns only."
330
- },
331
- "ai-max-text": {
332
- type: "boolean",
333
- description: "AI Max text customization: --ai-max-text lets Google write ad text from your landing page and ads (needs AI Max on); --ai-max-text=false stops it. Required before text guidelines."
334
- },
335
- "ai-max-url-expansion": {
336
- type: "boolean",
337
- description: "AI Max final URL expansion: --ai-max-url-expansion lets Google send clicks to the most relevant page of your site (needs text customization on); --ai-max-url-expansion=false keeps every click on your final URLs."
338
- }
339
- };
340
- function aiMaxFromFlags(args) {
341
- const flag = (name) => typeof args[name] === "boolean" ? args[name] : void 0;
342
- const aiMax = {
343
- enabled: flag("ai-max"),
344
- textCustomization: flag("ai-max-text"),
345
- finalUrlExpansion: flag("ai-max-url-expansion")
346
- };
347
- const stated = Object.entries(aiMax).filter(([, v]) => v !== void 0);
348
- return stated.length > 0 ? Object.fromEntries(stated) : void 0;
349
- }
350
- var textGuidelinesArgs = {
351
- "term-exclusion": {
352
- type: "string",
353
- description: `Text guidelines (AI Max Search and Performance Max): a word or phrase Google's generated ad text must never use, up to 30 characters (e.g. --term-exclusion "cheap"). Repeat for several; Google allows 25. REPLACES the campaign's whole list.`
354
- },
355
- "messaging-restriction": {
356
- type: "string",
357
- description: `Text guidelines (AI Max Search and Performance Max): a plain-language rule for Google's generated ad text, up to 300 characters (e.g. --messaging-restriction "Never promise a delivery date"). Repeat for several; Google allows 40. REPLACES the campaign's whole list.`
358
- },
359
- "clear-term-exclusions": {
360
- type: "boolean",
361
- description: "Remove every term exclusion from this campaign's text guidelines."
362
- },
363
- "clear-messaging-restrictions": {
364
- type: "boolean",
365
- description: "Remove every messaging restriction from this campaign's text guidelines."
366
- }
367
- };
368
- function guidelineListFromFlags(args, rawArgs, flag, clearFlag) {
369
- const values = repeatedValues(rawArgs, flag, args[flag]).filter((v) => v.length > 0);
370
- if (values.length === 0) {
371
- return args[clearFlag] === true ? [] : void 0;
372
- }
373
- if (args[clearFlag] === true) {
374
- failWriteValidation(`--${clearFlag} removes the whole list \u2014 pass it OR --${flag}, not both`);
375
- }
376
- return values;
377
- }
378
- function textGuidelinesFromFlags(args, rawArgs) {
379
- const termExclusions = guidelineListFromFlags(args, rawArgs, "term-exclusion", "clear-term-exclusions");
380
- const messagingRestrictions = guidelineListFromFlags(
381
- args,
382
- rawArgs,
383
- "messaging-restriction",
384
- "clear-messaging-restrictions"
385
- );
386
- if (termExclusions === void 0 && messagingRestrictions === void 0) {
387
- return void 0;
388
- }
389
- return {
390
- ...termExclusions !== void 0 ? { termExclusions } : {},
391
- ...messagingRestrictions !== void 0 ? { messagingRestrictions } : {}
392
- };
393
- }
394
- var geoTargetTypeArgs = {
395
- "geo-target-type": {
396
- type: "string",
397
- description: 'Location option \u2014 PRESENCE (only people in your targeted locations) or PRESENCE_OR_INTEREST (also people interested in them). Google applies PRESENCE_OR_INTEREST when this is left out, so pass PRESENCE explicitly for local-service, delivery-radius or in-store campaigns. Sets the same "Location options" as the Google Ads UI.'
398
- },
399
- "negative-geo-target-type": {
400
- type: "string",
401
- description: "How EXCLUDED locations are matched \u2014 PRESENCE (default: excludes people in the location) or PRESENCE_OR_INTEREST (also excludes people interested in it)."
402
- }
403
- };
404
- function enumFlag(value, flag, allowed) {
405
- if (typeof value !== "string" || value.length === 0) {
406
- return void 0;
407
- }
408
- const upper = value.toUpperCase();
409
- if (!allowed.includes(upper)) {
410
- failWriteValidation(`${flag} must be one of ${allowed.join(" | ")}`);
411
- }
412
- return upper;
413
- }
414
- function geoTargetTypeFromFlags(args) {
415
- const positiveGeoTargetType = enumFlag(args["geo-target-type"], "--geo-target-type", POSITIVE_GEO_TARGET_TYPES);
416
- const negativeGeoTargetType = enumFlag(
417
- args["negative-geo-target-type"],
418
- "--negative-geo-target-type",
419
- NEGATIVE_GEO_TARGET_TYPES
420
- );
421
- if (positiveGeoTargetType === void 0 && negativeGeoTargetType === void 0) {
422
- return void 0;
423
- }
424
- return Object.fromEntries(
425
- Object.entries({ positiveGeoTargetType, negativeGeoTargetType }).filter(([, v]) => v !== void 0)
426
- );
427
- }
428
- var NETWORK_SETTING_KEYS = [
429
- "targetGoogleSearch",
430
- "targetSearchNetwork",
431
- "targetContentNetwork",
432
- "targetPartnerSearchNetwork"
433
- ];
434
- var NETWORK_FLAG_VALUES = {
435
- search: "targetGoogleSearch",
436
- "search-partners": "targetSearchNetwork",
437
- partners: "targetSearchNetwork",
438
- display: "targetContentNetwork",
439
- "partner-search": "targetPartnerSearchNetwork"
440
- };
441
- var networksArg = {
442
- networks: {
443
- type: "string",
444
- description: `Networks to serve on, comma-separated: search | search-partners | display | partner-search. Every network you do not list is turned OFF, so state the whole set. Start here: --networks search \u2014 a new Search campaign left unset publishes on Google Search only, because Google's own default adds Search partners and the Display network, which spends the same budget on surfaces the advertiser did not pick. Sets the same "Networks" as the Google Ads UI.`
445
- }
446
- };
447
- function networkSettingsFromFlags(args) {
448
- const raw = args.networks;
449
- if (typeof raw !== "string") {
450
- return void 0;
451
- }
452
- const names = raw.split(",").map((n) => n.trim().toLowerCase()).filter((n) => n.length > 0);
453
- const allowed = Object.keys(NETWORK_FLAG_VALUES).join(" | ");
454
- if (names.length === 0) {
455
- failWriteValidation(`--networks needs at least one of ${allowed}`);
456
- }
457
- const settings = Object.fromEntries(NETWORK_SETTING_KEYS.map((k) => [k, false]));
458
- for (const name of names) {
459
- const key = NETWORK_FLAG_VALUES[name];
460
- if (!key) {
461
- failWriteValidation(`--networks must list only ${allowed}`);
462
- }
463
- settings[key] = true;
464
- }
465
- return settings;
466
- }
467
- function networksHints(payload) {
468
- if (payload.networkSettings !== void 0) {
469
- return [];
470
- }
471
- if (payload.channelType !== "SEARCH") {
472
- return [];
473
- }
474
- return [
475
- "No --networks set, so this campaign publishes on Google Search only \u2014 Search partners and the Display network are off. Re-stage with --networks search,search-partners (or add display) to widen it, and tell the user which networks this campaign serves on."
476
- ];
477
- }
478
- function geoTargetTypeHints(payload) {
479
- if (payload.geoTargetTypeSetting !== void 0) {
480
- return [];
481
- }
482
- return [
483
- `No --geo-target-type set, so this campaign will use Google's default location option "Presence or interest" \u2014 it reaches people interested in your locations, not only people in them. Re-stage with --geo-target-type PRESENCE if the offer is local (in-store, delivery radius, service area), and tell the user which of the two this campaign uses.`
484
- ];
485
- }
486
- function accountLevelNotStageable(customerId, suffix) {
487
- writeJsonEnvelope({
488
- ok: false,
489
- error: {
490
- code: "ACCOUNT_LEVEL_NOT_STAGEABLE",
491
- message: ACCOUNT_URL_OPTIONS_NOT_STAGEABLE,
492
- retryable: false,
493
- fix: {
494
- action: "use_different_resource",
495
- explanation: `Set it once by hand in ${ACCOUNT_URL_OPTIONS_LOCATION} for account ${customerId}, then tell the user that is the only place an account-wide suffix can be changed. Keep going with the rest of the task \u2014 this is not a reason to abort.`,
496
- where: ACCOUNT_URL_OPTIONS_LOCATION,
497
- ...suffix !== void 0 ? { value: suffix } : {},
498
- correctedCommand: `baker ads google campaigns update <campaign-id> --customer-id ${customerId} --final-url-suffix "${suffix ?? "utm_agency=baker"}"`,
499
- correctedCommandCaveat: "Per-campaign fallback only: a campaign suffix REPLACES the account one for that campaign and does not merge, and it covers only the campaigns you stage it on.",
500
- verify: `baker ads google url-options --customer-id ${customerId}`
501
- }
502
- }
503
- });
504
- process.exit(1);
505
- }
506
- var campaignsCommand = defineCommand2({
507
- meta: { name: "campaigns", description: "Stage campaign create/update/pause/resume/remove" },
508
- subCommands: {
509
- create: defineCommand2({
510
- meta: {
511
- name: "create",
512
- description: `Stage a new campaign on a budget (--budget-ref); it is created paused unless --status ENABLED. ${STAGED_WRITE}`
513
- },
514
- args: {
515
- ...customerIdArg,
516
- ...fileArg,
517
- name: { type: "string", description: 'Campaign name, unique in the account (e.g. "Search \u2014 Brand \u2014 ES")' },
518
- "channel-type": {
519
- type: "string",
520
- description: "SEARCH | DISPLAY | SHOPPING | VIDEO | PERFORMANCE_MAX | DEMAND_GEN | \u2026"
521
- },
522
- "sub-type": { type: "string", description: "Advertising channel sub-type" },
523
- "budget-ref": { type: "string", description: "Budget ref (g_temp_*, id, or resource name)" },
524
- "bidding-strategy": {
525
- type: "string",
526
- description: "MANUAL_CPC | MAXIMIZE_CONVERSIONS | MAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | \u2026"
527
- },
528
- "target-cpa": {
529
- type: "string",
530
- description: "Target CPA (major units). On a Search campaign pair it with --bidding-strategy MAXIMIZE_CONVERSIONS \u2014 Google keeps the target inside that strategy and rejects a standalone TARGET_CPA."
531
- },
532
- "target-roas": {
533
- type: "string",
534
- description: "Target ROAS (e.g. 4.0). On a Search campaign pair it with --bidding-strategy MAXIMIZE_CONVERSION_VALUE \u2014 Google keeps the target inside that strategy and rejects a standalone TARGET_ROAS."
535
- },
536
- "target-cpc": {
537
- type: "string",
538
- description: "Target CPC (major units) for Demand Gen \u2014 pair it with --bidding-strategy TARGET_CPC. Demand Gen only; other channels have no target CPC."
539
- },
540
- ...maxCpcArg,
541
- ...finalUrlSuffixArg,
542
- ...urlOptionsArgs,
543
- ...geoTargetTypeArgs,
544
- ...networksArg,
545
- ...aiMaxArgs,
546
- objective: { type: "string", description: "Advisory UI objective (SALES, LEADS, \u2026)" },
547
- "start-date": { type: "string", description: "YYYY-MM-DD" },
548
- "end-date": { type: "string", description: "YYYY-MM-DD" },
549
- "eu-political-ads": {
550
- type: "boolean",
551
- description: "Pass when the campaign contains EU political advertising. Google requires the declaration on every new campaign; omitted stages the campaign as not containing EU political ads."
552
- },
553
- status: { type: "string", description: "ENABLED | PAUSED (default PAUSED)" }
554
- },
555
- run: async ({ args, rawArgs }) => {
556
- const customerId = requireCustomerId(args);
557
- const payload = mergePayload(loadJsonFileArg(args.file), {
558
- name: args.name,
559
- channelType: args["channel-type"],
560
- channelSubType: args["sub-type"],
561
- budget: args["budget-ref"],
562
- bidding: biddingFromFlags(args),
563
- geoTargetTypeSetting: geoTargetTypeFromFlags(args),
564
- networkSettings: networkSettingsFromFlags(args),
565
- finalUrlSuffix: args["final-url-suffix"],
566
- trackingUrlTemplate: args["tracking-template"],
567
- urlCustomParameters: urlCustomParametersFromFlags(args, rawArgs),
568
- objective: args.objective,
569
- startDate: args["start-date"],
570
- endDate: args["end-date"],
571
- euPoliticalAds: args["eu-political-ads"],
572
- aiMax: aiMaxFromFlags(args),
573
- status: args.status
574
- });
575
- await stageCreate("google.campaign.create", customerId, payload, [
576
- ...geoTargetTypeHints(payload),
577
- ...networksHints(payload)
578
- ]);
579
- }
580
- }),
581
- update: defineCommand2({
582
- meta: {
583
- name: "update",
584
- description: `Stage a change to an existing campaign's name, budget, bidding, settings, AI Max switches or text guidelines (what AI Max and Performance Max ad text must avoid). ${STAGED_WRITE}`
585
- },
586
- args: {
587
- ...customerIdArg,
588
- ...fileArg,
589
- name: { type: "string", description: "New campaign name, unique in the account" },
590
- "budget-ref": { type: "string" },
591
- "bidding-strategy": {
592
- type: "string",
593
- description: "MANUAL_CPC | MAXIMIZE_CONVERSIONS | MAXIMIZE_CONVERSION_VALUE | TARGET_SPEND | \u2026"
594
- },
595
- "target-cpa": {
596
- type: "string",
597
- description: "Target CPA (major units). On a Search campaign pair it with --bidding-strategy MAXIMIZE_CONVERSIONS \u2014 Google keeps the target inside that strategy and rejects a standalone TARGET_CPA."
598
- },
599
- "target-roas": {
600
- type: "string",
601
- description: "Target ROAS (e.g. 4.0). On a Search campaign pair it with --bidding-strategy MAXIMIZE_CONVERSION_VALUE \u2014 Google keeps the target inside that strategy and rejects a standalone TARGET_ROAS."
602
- },
603
- "target-cpc": {
604
- type: "string",
605
- description: "Target CPC (major units) for Demand Gen \u2014 pair it with --bidding-strategy TARGET_CPC. Demand Gen only; other channels have no target CPC."
606
- },
607
- ...maxCpcArg,
608
- ...finalUrlSuffixArg,
609
- ...urlOptionsArgs,
610
- ...geoTargetTypeArgs,
611
- ...networksArg,
612
- ...textGuidelinesArgs,
613
- ...aiMaxArgs,
614
- "eu-political-ads": {
615
- type: "boolean",
616
- description: "Corrects the campaign's EU political advertising declaration: --eu-political-ads if it contains EU political ads, --eu-political-ads=false if it does not. Existing campaigns without a declaration block location-targeting changes until one is set."
617
- },
618
- level: {
619
- type: "string",
620
- description: "campaign (default) | account. `account` stages nothing \u2014 it reports where an account-wide final URL suffix has to be set instead."
621
- },
622
- status: { type: "string" }
623
- },
624
- run: async ({ args, rawArgs }) => {
625
- const customerId = requireCustomerId(args);
626
- const level = typeof args.level === "string" && args.level.length > 0 ? args.level : "campaign";
627
- if (level === "account") {
628
- accountLevelNotStageable(customerId, args["final-url-suffix"]);
629
- }
630
- if (level !== "campaign") {
631
- failWriteValidation("--level must be campaign or account");
632
- }
633
- const target = requireTarget(args, "campaign");
634
- const payload = mergePayload(loadJsonFileArg(args.file), {
635
- name: args.name,
636
- budget: args["budget-ref"],
637
- bidding: biddingFromFlags(args),
638
- geoTargetTypeSetting: geoTargetTypeFromFlags(args),
639
- networkSettings: networkSettingsFromFlags(args),
640
- finalUrlSuffix: args["final-url-suffix"],
641
- trackingUrlTemplate: args["tracking-template"],
642
- urlCustomParameters: urlCustomParametersFromFlags(args, rawArgs),
643
- euPoliticalAds: args["eu-political-ads"],
644
- textGuidelines: textGuidelinesFromFlags(args, rawArgs),
645
- aiMax: aiMaxFromFlags(args),
646
- status: args.status
647
- });
648
- await stageUpdate("google.campaign.update", customerId, target, payload);
649
- }
650
- }),
651
- pause: statusCommand("google.campaign.pause", "campaign"),
652
- resume: statusCommand("google.campaign.resume", "campaign"),
653
- remove: statusCommand("google.campaign.remove", "campaign")
654
- }
655
- });
656
- function statusCommand(kind, entity, hints) {
657
- return defineCommand2({
658
- meta: { name: kind.split(".")[2], description: `Stage a ${entity} ${kind.split(".")[2]}` },
659
- args: {
660
- ...customerIdArg,
661
- id: { type: "positional", description: `${entity} resource name or id`, required: false }
662
- },
663
- run: async ({ args }) => {
664
- const customerId = requireCustomerId(args);
665
- await stageTarget(kind, customerId, requireTarget(args, entity), hints);
666
- }
667
- });
668
- }
669
- var adGroupsCommand = defineCommand2({
670
- meta: { name: "ad-groups", description: "Stage ad group create/update/pause/resume/remove" },
671
- subCommands: {
672
- create: defineCommand2({
673
- meta: {
674
- name: "create",
675
- description: `Stage a new ad group in a campaign (--campaign-ref); it is created paused unless --status ENABLED. ${STAGED_WRITE}`
676
- },
677
- args: {
678
- ...customerIdArg,
679
- ...fileArg,
680
- name: {
681
- type: "string",
682
- description: 'Ad group name, unique within its campaign (e.g. "Solar panels \u2014 price")'
683
- },
684
- "campaign-ref": { type: "string", description: "Campaign ref (g_temp_*, id, or resource name)" },
685
- type: {
686
- type: "string",
687
- description: "Ad group type \u2014 leave it out and Google derives it from the campaign's channel, which is required on a Demand Gen campaign (there is no Demand Gen ad group type). SEARCH_STANDARD | DISPLAY_STANDARD | SHOPPING_PRODUCT_ADS | VIDEO_*"
688
- },
689
- "cpc-bid": { type: "string", description: "Default CPC bid in major units" },
690
- status: { type: "string" }
691
- },
692
- run: async ({ args }) => {
693
- const customerId = requireCustomerId(args);
694
- const payload = mergePayload(loadJsonFileArg(args.file), {
695
- name: args.name,
696
- campaign: args["campaign-ref"],
697
- type: args.type,
698
- cpcBidMicros: microsFlag(args["cpc-bid"], "--cpc-bid"),
699
- status: args.status
700
- });
701
- await stageCreate("google.adGroup.create", customerId, payload);
702
- }
703
- }),
704
- update: defineCommand2({
705
- meta: {
706
- name: "update",
707
- description: `Stage a change to an existing ad group's name, default CPC bid or status. ${STAGED_WRITE}`
708
- },
709
- args: {
710
- ...customerIdArg,
711
- ...fileArg,
712
- name: { type: "string", description: "New ad group name, unique within its campaign" },
713
- "cpc-bid": { type: "string" },
714
- status: { type: "string" }
715
- },
716
- run: async ({ args }) => {
717
- const customerId = requireCustomerId(args);
718
- const target = requireTarget(args, "ad group");
719
- const payload = mergePayload(loadJsonFileArg(args.file), {
720
- name: args.name,
721
- cpcBidMicros: microsFlag(args["cpc-bid"], "--cpc-bid"),
722
- status: args.status
723
- });
724
- await stageUpdate("google.adGroup.update", customerId, target, payload);
725
- }
726
- }),
727
- pause: statusCommand("google.adGroup.pause", "ad group"),
728
- resume: statusCommand("google.adGroup.resume", "ad group"),
729
- remove: statusCommand("google.adGroup.remove", "ad group")
730
- }
731
- });
732
- var KEYWORD_KILL_HINTS = [
733
- "Keyword metrics are per ad group. Decide this from keyword_view rows carrying ad_group.id + ad_group_criterion.criterion_id (`--preset keyword-analysis` returns both) \u2014 never from campaign totals or metrics summed across ad groups.",
734
- "The same keyword text in several ad groups shares ONE criterion id, so an aggregate blends the copy that holds the history with the copies that never served. Compare the copies row by row and keep the one with the impressions/conversions; if the keyword is duplicated and only one copy performs, pause the others, not it."
735
- ];
736
- function keywordKillHints(status) {
737
- const kills = typeof status === "string" && ["PAUSED", "REMOVED"].includes(status.toUpperCase());
738
- return kills ? KEYWORD_KILL_HINTS : [];
739
- }
740
- function keywordFinalUrlHints(finalUrl, count) {
741
- if (typeof finalUrl !== "string" || finalUrl.length === 0) {
742
- return [];
743
- }
744
- return count > 1 ? [
745
- `--final-url applied the same landing page to all ${count} keywords \u2014 the flag has no per-keyword form. A keyword-level URL only earns its place when that keyword must land somewhere the ad doesn't, so one URL shared by every keyword belongs on the ad instead: set the ad's final URL to this page and re-stage the keywords without --final-url. Keep it only if this page is genuinely each keyword's own destination and not the ad's.`
746
- ] : [
747
- "Keep --final-url only if this keyword's destination differs from the ad's final URL \u2014 otherwise drop it and let the keyword inherit the ad's landing page."
748
- ];
749
- }
750
- function keywordUpdateFinalUrls(args) {
751
- const finalUrl = args["final-url"];
752
- const clear = args["clear-final-url"] === true;
753
- if (typeof finalUrl !== "string" || finalUrl.length === 0) {
754
- return clear ? [] : void 0;
755
- }
756
- if (clear) {
757
- failWriteValidation(
758
- "--clear-final-url sends the keyword back to the ad's landing page \u2014 pass it OR --final-url, not both"
759
- );
760
- }
761
- return [finalUrl];
762
- }
763
- var keywordWriteSubcommands = {
764
- add: defineCommand2({
765
- meta: { name: "add", description: "Add keyword(s) to an ad group \u2014 one --text or a whole batch" },
766
- args: {
767
- ...customerIdArg,
768
- "ad-group-ref": { type: "string", description: "Ad group ref (g_temp_*, id, or resource name)" },
769
- text: {
770
- type: "string",
771
- description: 'Keyword text \u2014 comma-separate for a batch, optional ":EXACT|:PHRASE|:BROAD" suffix per entry'
772
- },
773
- file: { type: "string", description: "Text file with one keyword[:MATCH_TYPE] per line" },
774
- "match-type": { type: "string", description: "Default match type: EXACT | PHRASE | BROAD" },
775
- "cpc-bid": { type: "string", description: "Keyword CPC bid in major units (applies to all)" },
776
- "final-url": {
777
- type: "string",
778
- description: "Rarely needed: send THIS keyword to a page the ad doesn't go to. Applies to every keyword in the call, so leave it unset unless the destination is keyword-specific \u2014 otherwise set the ad's final URL"
779
- }
780
- },
781
- run: async ({ args, rawArgs }) => {
782
- const customerId = requireCustomerId(args);
783
- const adGroup = requireStringFlag(args["ad-group-ref"], "--ad-group-ref");
784
- const cpcBidMicros = microsFlag(args["cpc-bid"], "--cpc-bid");
785
- const finalUrls = args["final-url"] ? [args["final-url"]] : void 0;
786
- const entries = keywordEntries(args, rawArgs);
787
- await stageGoogleOps(
788
- entries.map((entry) => ({
789
- kind: "google.keyword.add",
790
- customerId,
791
- payload: { adGroup, text: entry.text, matchType: entry.matchType, cpcBidMicros, finalUrls }
792
- })),
793
- keywordFinalUrlHints(args["final-url"], entries.length)
794
- );
795
- }
796
- }),
797
- update: defineCommand2({
798
- meta: { name: "update", description: "Update a keyword" },
799
- args: {
800
- ...customerIdArg,
801
- "cpc-bid": { type: "string" },
802
- status: { type: "string" },
803
- "final-url": {
804
- type: "string",
805
- description: "Rarely needed: send THIS keyword to a page the ad doesn't go to. Leave unset unless the destination is keyword-specific \u2014 otherwise set the ad's final URL"
806
- },
807
- "clear-final-url": {
808
- type: "boolean",
809
- description: "Drop this keyword's own landing page so it inherits the ad's again"
810
- }
811
- },
812
- run: async ({ args }) => {
813
- const customerId = requireCustomerId(args);
814
- const finalUrls = keywordUpdateFinalUrls(args);
815
- await stageUpdate(
816
- "google.keyword.update",
817
- customerId,
818
- requireTarget(args, "keyword"),
819
- { cpcBidMicros: microsFlag(args["cpc-bid"], "--cpc-bid"), status: args.status, finalUrls },
820
- [...keywordKillHints(args.status), ...keywordFinalUrlHints(args["final-url"], 1)]
821
- );
822
- }
823
- }),
824
- remove: statusCommand("google.keyword.remove", "keyword", KEYWORD_KILL_HINTS)
825
- };
826
- var NEGATIVE_COVERAGE_HINTS = [
827
- "Before publishing, confirm each term isn't already blocked: run `baker ads google query --preset negative-keyword-lists` (shared-list terms) and `--preset negative-keywords` (campaign/ad-group negatives).",
828
- "If a term is already in a negative list but still shows in search terms, the list likely isn't attached to this campaign (check `--preset negative-list-attachments`) or its match type is narrower than the query \u2014 explain that instead of staging a duplicate negative."
829
- ];
830
- var negativeKeywordsCommand = defineCommand2({
831
- meta: { name: "negative-keywords", description: "Stage negative keyword add/remove (ad-group or campaign level)" },
832
- subCommands: {
833
- add: defineCommand2({
834
- meta: { name: "add", description: "Add negative keyword(s) \u2014 one --text or a whole batch" },
835
- args: {
836
- ...customerIdArg,
837
- level: { type: "string", description: "adGroup | campaign" },
838
- "parent-ref": { type: "string", description: "Ad group or campaign ref" },
839
- text: {
840
- type: "string",
841
- description: 'Keyword text \u2014 comma-separate for a batch, optional ":MATCH_TYPE" suffix per entry'
842
- },
843
- file: { type: "string", description: "Text file with one keyword[:MATCH_TYPE] per line" },
844
- "match-type": { type: "string", description: "Default match type: EXACT | PHRASE | BROAD" }
845
- },
846
- run: async ({ args, rawArgs }) => {
847
- const customerId = requireCustomerId(args);
848
- const level = requireStringFlag(args.level, "--level");
849
- const parent = requireStringFlag(args["parent-ref"], "--parent-ref");
850
- await stageGoogleOps(
851
- keywordEntries(args, rawArgs).map((entry) => ({
852
- kind: "google.negativeKeyword.add",
853
- customerId,
854
- payload: { level, parent, text: entry.text, matchType: entry.matchType }
855
- })),
856
- NEGATIVE_COVERAGE_HINTS
857
- );
858
- }
859
- }),
860
- remove: statusCommand("google.negativeKeyword.remove", "negative keyword")
861
- }
862
- });
863
- var keywordListsCommand = defineCommand2({
864
- meta: {
865
- name: "keyword-lists",
866
- description: "Stage shared negative keyword lists (create/add/attach/detach). Build at least one shared negative list (brand, competitor, junk-intent terms) and attach it to every campaign to protect spend."
867
- },
868
- subCommands: {
869
- create: defineCommand2({
870
- meta: { name: "create", description: "Create a shared negative keyword list" },
871
- args: {
872
- ...customerIdArg,
873
- name: { type: "string" },
874
- type: {
875
- type: "string",
876
- description: "NEGATIVE_KEYWORDS (default) | NEGATIVE_PLACEMENTS | ACCOUNT_LEVEL_NEGATIVE_KEYWORDS"
877
- }
878
- },
879
- run: async ({ args }) => {
880
- const customerId = requireCustomerId(args);
881
- await stageCreate("google.sharedSet.create", customerId, {
882
- name: requireStringFlag(args.name, "--name"),
883
- type: args.type
884
- });
885
- }
886
- }),
887
- add: defineCommand2({
888
- meta: { name: "add", description: "Add keyword(s) to a shared list \u2014 one --text or a whole batch" },
889
- args: {
890
- ...customerIdArg,
891
- "list-ref": { type: "string", description: "Shared set ref" },
892
- text: {
893
- type: "string",
894
- description: 'Keyword text \u2014 comma-separate for a batch, optional ":MATCH_TYPE" suffix per entry'
895
- },
896
- file: { type: "string", description: "Text file with one keyword[:MATCH_TYPE] per line" },
897
- "match-type": { type: "string", description: "Default match type: EXACT | PHRASE | BROAD" }
898
- },
899
- run: async ({ args, rawArgs }) => {
900
- const customerId = requireCustomerId(args);
901
- const sharedSet = requireStringFlag(args["list-ref"], "--list-ref");
902
- await stageGoogleOps(
903
- keywordEntries(args, rawArgs).map((entry) => ({
904
- kind: "google.sharedSetMember.add",
905
- customerId,
906
- payload: { sharedSet, text: entry.text, matchType: entry.matchType }
907
- }))
908
- );
909
- }
910
- }),
911
- attach: defineCommand2({
912
- meta: { name: "attach", description: "Attach a keyword list to a campaign" },
913
- args: { ...customerIdArg, "campaign-ref": { type: "string" }, "list-ref": { type: "string" } },
914
- run: async ({ args }) => {
915
- const customerId = requireCustomerId(args);
916
- await stageCreate("google.campaignSharedSet.attach", customerId, {
917
- campaign: requireStringFlag(args["campaign-ref"], "--campaign-ref"),
918
- sharedSet: requireStringFlag(args["list-ref"], "--list-ref")
919
- });
920
- }
921
- }),
922
- detach: statusCommand("google.campaignSharedSet.detach", "campaign shared set")
923
- }
924
- });
925
- function rsaContentFromFlags(args) {
926
- const headlines = copyListFlag(args.headlines, "headlines");
927
- const descriptions = copyListFlag(args.descriptions, "descriptions");
928
- if (!headlines || !descriptions) {
929
- failWriteValidation("responsive search ads need --headlines and --descriptions, or use --file");
930
- }
931
- const finalUrls = listFlag(args["final-url"]);
932
- if (!finalUrls) {
933
- failWriteValidation("--final-url is required for a responsive search ad");
934
- }
935
- return {
936
- format: "responsiveSearch",
937
- headlines: headlines.map((text) => ({ text })),
938
- descriptions: descriptions.map((text) => ({ text })),
939
- path1: args.path1,
940
- path2: args.path2,
941
- finalUrls
942
- };
943
- }
944
- function rdaContentFromFlags(args, base) {
945
- const content = {
946
- format: "responsiveDisplay",
947
- ...base !== null && typeof base === "object" && !Array.isArray(base) ? base : {}
948
- };
949
- const headlines = copyListFlag(args.headlines, "headlines");
950
- if (headlines) {
951
- content.headlines = headlines.map((text) => ({ text }));
952
- }
953
- const descriptions = copyListFlag(args.descriptions, "descriptions");
954
- if (descriptions) {
955
- content.descriptions = descriptions.map((text) => ({ text }));
956
- }
957
- if (typeof args["long-headline"] === "string") {
958
- content.longHeadline = { text: args["long-headline"] };
959
- }
960
- if (typeof args["business-name"] === "string") {
961
- content.businessName = args["business-name"];
962
- }
963
- const finalUrls = listFlag(args["final-url"]);
964
- if (finalUrls) {
965
- content.finalUrls = finalUrls;
966
- }
967
- const marketing = listFlag(args["marketing-images"]);
968
- if (marketing) {
969
- content.marketingImageAssets = marketing;
970
- }
971
- const square = listFlag(args["square-marketing-images"]);
972
- if (square) {
973
- content.squareMarketingImageAssets = square;
974
- }
975
- const logos = listFlag(args["logo-images"]);
976
- if (logos) {
977
- content.logoImageAssets = logos;
978
- }
979
- return content;
980
- }
981
- function videoContentFromFlags(args, base) {
982
- const content = {
983
- format: "video",
984
- ...base !== null && typeof base === "object" && !Array.isArray(base) ? base : {}
985
- };
986
- const videoAssets = listFlag(args["video-assets"]);
987
- if (videoAssets) {
988
- content.videoAssets = videoAssets;
989
- }
990
- const finalUrls = listFlag(args["final-url"]);
991
- if (finalUrls) {
992
- content.finalUrls = finalUrls;
993
- }
994
- return content;
995
- }
996
- function demandGenContentFromFlags(args, base) {
997
- const content = {
998
- format: "demandGen",
999
- ...base !== null && typeof base === "object" && !Array.isArray(base) ? base : {}
1000
- };
1001
- if (typeof args["ad-name"] === "string") {
1002
- content.name = args["ad-name"];
1003
- }
1004
- const headlines = copyListFlag(args.headlines, "headlines");
1005
- if (headlines) {
1006
- content.headlines = headlines.map((text) => ({ text }));
1007
- }
1008
- const descriptions = copyListFlag(args.descriptions, "descriptions");
1009
- if (descriptions) {
1010
- content.descriptions = descriptions.map((text) => ({ text }));
1011
- }
1012
- if (typeof args["business-name"] === "string") {
1013
- content.businessName = args["business-name"];
1014
- }
1015
- const finalUrls = listFlag(args["final-url"]);
1016
- if (finalUrls) {
1017
- content.finalUrls = finalUrls;
1018
- }
1019
- const images = listFlag(args["image-assets"]);
1020
- if (images) {
1021
- content.imageAssets = images;
1022
- }
1023
- const squareImages = listFlag(args["square-image-assets"]);
1024
- if (squareImages) {
1025
- content.squareImageAssets = squareImages;
1026
- }
1027
- const logoImages = listFlag(args["logo-image-assets"]);
1028
- if (logoImages) {
1029
- content.logoImageAssets = logoImages;
1030
- }
1031
- return content;
1032
- }
1033
- function demandGenVideoContentFromFlags(args, base) {
1034
- const content = {
1035
- format: "demandGenVideo",
1036
- ...base !== null && typeof base === "object" && !Array.isArray(base) ? base : {}
1037
- };
1038
- if (typeof args["ad-name"] === "string") {
1039
- content.name = args["ad-name"];
1040
- }
1041
- const headlines = copyListFlag(args.headlines, "headlines");
1042
- if (headlines) {
1043
- content.headlines = headlines.map((text) => ({ text }));
1044
- }
1045
- const longHeadlines = copyListFlag(args["long-headlines"], "long-headlines");
1046
- if (longHeadlines) {
1047
- content.longHeadlines = longHeadlines.map((text) => ({ text }));
1048
- }
1049
- const descriptions = copyListFlag(args.descriptions, "descriptions");
1050
- if (descriptions) {
1051
- content.descriptions = descriptions.map((text) => ({ text }));
1052
- }
1053
- if (typeof args["business-name"] === "string") {
1054
- content.businessName = args["business-name"];
1055
- }
1056
- const finalUrls = listFlag(args["final-url"]);
1057
- if (finalUrls) {
1058
- content.finalUrls = finalUrls;
1059
- }
1060
- const videos = listFlag(args["video-assets"]);
1061
- if (videos) {
1062
- content.videoAssets = videos;
1063
- }
1064
- const logoImages = listFlag(args["logo-image-assets"]);
1065
- if (logoImages) {
1066
- content.logoImageAssets = logoImages;
1067
- }
1068
- const callToActions = listFlag(args["call-to-action-assets"]);
1069
- if (callToActions) {
1070
- content.callToActionAssets = callToActions;
1071
- }
1072
- return content;
1073
- }
1074
- function appContentFromFlags(args, base) {
1075
- const content = {
1076
- format: "app",
1077
- ...base !== null && typeof base === "object" && !Array.isArray(base) ? base : {}
1078
- };
1079
- const headlines = copyListFlag(args.headlines, "headlines");
1080
- if (headlines) {
1081
- content.headlines = headlines.map((text) => ({ text }));
1082
- }
1083
- const descriptions = copyListFlag(args.descriptions, "descriptions");
1084
- if (descriptions) {
1085
- content.descriptions = descriptions.map((text) => ({ text }));
1086
- }
1087
- const images = listFlag(args["image-assets"]);
1088
- if (images) {
1089
- content.images = images;
1090
- }
1091
- const videos = listFlag(args["video-assets"]);
1092
- if (videos) {
1093
- content.youtubeVideos = videos;
1094
- }
1095
- return content;
1096
- }
1097
- var FORMAT_CONTENT_FLAGS = {
1098
- responsiveSearch: ["headlines", "descriptions", "path1", "path2", "final-url"],
1099
- responsiveDisplay: [
1100
- "headlines",
1101
- "descriptions",
1102
- "long-headline",
1103
- "business-name",
1104
- "final-url",
1105
- "marketing-images",
1106
- "square-marketing-images",
1107
- "logo-images"
1108
- ],
1109
- video: ["video-assets", "final-url"],
1110
- demandGen: [
1111
- "ad-name",
1112
- "headlines",
1113
- "descriptions",
1114
- "business-name",
1115
- "final-url",
1116
- "image-assets",
1117
- "square-image-assets",
1118
- "logo-image-assets"
1119
- ],
1120
- demandGenVideo: [
1121
- "ad-name",
1122
- "headlines",
1123
- "long-headlines",
1124
- "descriptions",
1125
- "business-name",
1126
- "final-url",
1127
- "video-assets",
1128
- "logo-image-assets",
1129
- "call-to-action-assets"
1130
- ],
1131
- app: ["headlines", "descriptions", "image-assets", "video-assets"],
1132
- // A call ad builds its content from `--file` alone, so EVERY content flag on it is dropped — the
1133
- // same silent drop this gate exists for, on the one format that reads no flags at all.
1134
- call: []
1135
- };
1136
- function formatsReading(flag) {
1137
- return Object.entries(FORMAT_CONTENT_FLAGS).filter(([, flags]) => flags.includes(flag)).map(([format]) => format);
1138
- }
1139
- function assertFlagsFitFormat(args, format) {
1140
- const allowed = FORMAT_CONTENT_FLAGS[format];
1141
- if (!allowed) {
1142
- return;
1143
- }
1144
- const stray = Object.keys(adContentArgs).filter(
1145
- (flag) => flag !== "format" && args[flag] !== void 0 && !allowed.includes(flag)
1146
- );
1147
- if (stray.length === 0) {
1148
- return;
1149
- }
1150
- const detail = stray.map((flag) => {
1151
- const elsewhere = formatsReading(flag);
1152
- return elsewhere.length > 0 ? `--${flag} (${elsewhere.join(" / ")})` : `--${flag}`;
1153
- }).join(", ");
1154
- failWriteValidation(
1155
- `a ${format} ad has no ${stray.map((f) => `--${f}`).join(", ")} \u2014 passing it here would stage the change without it. Formats that take it: ${detail}. Check the format with \`baker ads google query "SELECT ad_group_ad.ad.type FROM ad_group_ad WHERE ad_group_ad.ad.id = <id>"\`.`
1156
- );
1157
- }
1158
- function adContentFromFlags(args, format, fileContent) {
1159
- assertFlagsFitFormat(args, format);
1160
- if (format === "responsiveSearch") {
1161
- return fileContent ?? rsaContentFromFlags(args);
1162
- }
1163
- if (format === "responsiveDisplay") {
1164
- return rdaContentFromFlags(args, fileContent);
1165
- }
1166
- if (format === "video") {
1167
- return videoContentFromFlags(args, fileContent);
1168
- }
1169
- if (format === "demandGen") {
1170
- return demandGenContentFromFlags(args, fileContent);
1171
- }
1172
- if (format === "demandGenVideo") {
1173
- return demandGenVideoContentFromFlags(args, fileContent);
1174
- }
1175
- if (format === "app") {
1176
- return appContentFromFlags(args, fileContent);
1177
- }
1178
- return fileContent ?? failWriteValidation(`--format ${format} needs --file with the ad content`);
1179
- }
1180
- var adContentArgs = {
1181
- format: {
1182
- type: "string",
1183
- description: "responsiveSearch (default) | responsiveDisplay | call | app | video | demandGen | demandGenVideo"
1184
- },
1185
- headlines: {
1186
- type: "string",
1187
- description: `Headlines (RSA/RDA/demandGen/demandGenVideo/app) \u2014 ${AD_COPY_LIST_USAGE}`
1188
- },
1189
- descriptions: {
1190
- type: "string",
1191
- description: `Descriptions (RSA/RDA/demandGen/demandGenVideo/app) \u2014 ${AD_COPY_LIST_USAGE}`
1192
- },
1193
- path1: { type: "string" },
1194
- path2: { type: "string" },
1195
- "long-headline": { type: "string", description: "Long headline (responsiveDisplay)" },
1196
- "ad-name": {
1197
- type: "string",
1198
- description: `The ad's own name, shown as "Ad name" in Google Ads. REQUIRED on a Demand Gen ad (demandGen/demandGenVideo) and on no other format`
1199
- },
1200
- "long-headlines": {
1201
- type: "string",
1202
- description: `Long headlines, up to 5 of 90 chars (demandGenVideo \u2014 no other format has them) \u2014 ${AD_COPY_LIST_USAGE}`
1203
- },
1204
- "business-name": { type: "string", description: "Business name (responsiveDisplay/demandGen/demandGenVideo)" },
1205
- "marketing-images": {
1206
- type: "string",
1207
- description: "Comma-separated marketing image asset refs (responsiveDisplay)"
1208
- },
1209
- "square-marketing-images": {
1210
- type: "string",
1211
- description: "Comma-separated square marketing image asset refs (responsiveDisplay)"
1212
- },
1213
- "logo-images": { type: "string", description: "Comma-separated logo image asset refs (responsiveDisplay)" },
1214
- "video-assets": {
1215
- type: "string",
1216
- description: `Comma-separated video asset refs (video/app/demandGenVideo formats) \u2014 stage the YouTube video as an asset first (assets create --file '{"type":"youtubeVideo",\u2026}')`
1217
- },
1218
- "image-assets": { type: "string", description: "Comma-separated image asset refs (demandGen/app)" },
1219
- "square-image-assets": { type: "string", description: "Comma-separated square image asset refs (demandGen)" },
1220
- "logo-image-assets": {
1221
- type: "string",
1222
- description: "Comma-separated logo image asset refs (demandGen/demandGenVideo)"
1223
- },
1224
- "call-to-action-assets": {
1225
- type: "string",
1226
- description: "Comma-separated callToAction asset refs for the ad's button (demandGenVideo)"
1227
- },
1228
- "final-url": { type: "string", description: "Comma-separated final URLs" }
1229
- };
1230
- function assertNoContentFlags(args) {
1231
- const passed = Object.keys(adContentArgs).filter((flag) => flag !== "format" && args[flag] !== void 0);
1232
- if (passed.length > 0) {
1233
- failWriteValidation(
1234
- `${passed.map((flag) => `--${flag}`).join(", ")} only build an ad's content alongside --format (responsiveSearch | responsiveDisplay | call | app | video | demandGen | demandGenVideo) \u2014 add it, or pass --file with the complete content`
1235
- );
1236
- }
1237
- }
1238
- var adsCommand = defineCommand2({
1239
- meta: { name: "ads", description: "Stage ad create/update/pause/resume/remove" },
1240
- subCommands: {
1241
- create: defineCommand2({
1242
- meta: {
1243
- name: "create",
1244
- description: "Stage an ad (responsive search via flags; other formats via --file). RSA needs 3\u201315 headlines and 2\u20134 descriptions \u2014 give Google 8\u201312 varied headlines to test, and stage 2\u20134 ads per ad group. Performance Max has no ad format of its own \u2014 stage its copy with `asset-groups create`."
1245
- },
1246
- args: {
1247
- ...customerIdArg,
1248
- ...fileArg,
1249
- "ad-group-ref": { type: "string", description: "Ad group ref" },
1250
- ...adContentArgs,
1251
- status: { type: "string" }
1252
- },
1253
- run: async ({ args: parsedArgs, rawArgs }) => {
1254
- const args = withRepeatedCopyFlags(parsedArgs, rawArgs);
1255
- const customerId = requireCustomerId(args);
1256
- const file = loadJsonFileArg(args.file);
1257
- const format = args.format ?? "responsiveSearch";
1258
- const content = adContentFromFlags(args, format, file.content);
1259
- await stageCreate(
1260
- "google.ad.create",
1261
- customerId,
1262
- {
1263
- adGroup: requireStringFlag(args["ad-group-ref"] ?? file.adGroup, "--ad-group-ref"),
1264
- status: args.status ?? file.status,
1265
- content
1266
- },
1267
- copyListSplitHints(args)
1268
- );
1269
- }
1270
- }),
1271
- update: defineCommand2({
1272
- meta: {
1273
- name: "update",
1274
- description: "Stage an ad update. Any content change needs --format plus EVERY required field of that format (or --file with the complete content) \u2014 a field you send replaces its current value wholesale, so a list you pass must already include the entries you want to keep. Optional asset lists you omit entirely are left untouched on the ad. Status-only changes need neither --format nor content flags."
1275
- },
1276
- args: { ...customerIdArg, ...fileArg, ...adContentArgs, status: { type: "string" } },
1277
- run: async ({ args: parsedArgs, rawArgs }) => {
1278
- const args = withRepeatedCopyFlags(parsedArgs, rawArgs);
1279
- const customerId = requireCustomerId(args);
1280
- const file = loadJsonFileArg(args.file);
1281
- const format = args.format;
1282
- if (!format) {
1283
- assertNoContentFlags(args);
1284
- }
1285
- const payload = mergePayload(file, {
1286
- status: args.status,
1287
- ...format ? { content: adContentFromFlags(args, format, file.content) } : {}
1288
- });
1289
- await stageUpdate("google.ad.update", customerId, requireTarget(args, "ad"), payload, [
1290
- ...payload.content !== void 0 ? [
1291
- "Each content field you sent replaces its current value wholesale at publish \u2014 re-check that every headline, description, final URL and asset you want to KEEP is in this payload, not just the ones you changed."
1292
- ] : [],
1293
- ...format ? copyListSplitHints(args) : []
1294
- ]);
1295
- }
1296
- }),
1297
- pause: statusCommand("google.ad.pause", "ad"),
1298
- resume: statusCommand("google.ad.resume", "ad"),
1299
- remove: statusCommand("google.ad.remove", "ad")
1300
- }
1301
- });
1302
- var assetGroupsCommand = defineCommand2({
1303
- meta: {
1304
- name: "asset-groups",
1305
- description: "Stage Performance Max asset group create/update \u2014 the PMax campaign's copy and images."
1306
- },
1307
- subCommands: {
1308
- create: defineCommand2({
1309
- meta: {
1310
- name: "create",
1311
- description: "Stage a Performance Max asset group: 3\u201315 headlines (\u226430ch), 1\u20135 long headlines (\u226490ch), 2\u20135 descriptions (\u226490ch), a business name, and image refs."
1312
- },
1313
- args: {
1314
- ...customerIdArg,
1315
- ...fileArg,
1316
- "campaign-ref": {
1317
- type: "string",
1318
- description: "Performance Max campaign ref (g_temp_*, id, or resource name)"
1319
- },
1320
- name: { type: "string", description: "Asset group name" },
1321
- "final-urls": { type: "string", description: "Comma-separated final URLs" },
1322
- headlines: { type: "string", description: `Headlines (3\u201315, \u226430 chars) \u2014 ${AD_COPY_LIST_USAGE}` },
1323
- "long-headlines": { type: "string", description: `Long headlines (1\u20135, \u226490 chars) \u2014 ${AD_COPY_LIST_USAGE}` },
1324
- descriptions: { type: "string", description: `Descriptions (2\u20135, \u226490 chars) \u2014 ${AD_COPY_LIST_USAGE}` },
1325
- "business-name": { type: "string" },
1326
- "image-assets": { type: "string", description: "Comma-separated marketing image asset refs (1.91:1)" },
1327
- "square-image-assets": {
1328
- type: "string",
1329
- description: "Comma-separated square marketing image asset refs (1:1)"
1330
- },
1331
- "portrait-image-assets": {
1332
- type: "string",
1333
- description: "Comma-separated portrait marketing image asset refs (4:5)"
1334
- },
1335
- "logo-assets": { type: "string", description: "Comma-separated logo image asset refs" },
1336
- status: { type: "string", description: "ENABLED | PAUSED (default PAUSED)" }
1337
- },
1338
- run: async ({ args: parsedArgs, rawArgs }) => {
1339
- const args = withRepeatedCopyFlags(parsedArgs, rawArgs);
1340
- const customerId = requireCustomerId(args);
1341
- const headlines = copyListFlag(args.headlines, "headlines");
1342
- const longHeadlines = copyListFlag(args["long-headlines"], "long-headlines");
1343
- const descriptions = copyListFlag(args.descriptions, "descriptions");
1344
- const payload = mergePayload(loadJsonFileArg(args.file), {
1345
- campaign: args["campaign-ref"],
1346
- name: args.name,
1347
- finalUrls: listFlag(args["final-urls"]),
1348
- headlines: headlines?.map((text) => ({ text })),
1349
- longHeadlines: longHeadlines?.map((text) => ({ text })),
1350
- descriptions: descriptions?.map((text) => ({ text })),
1351
- businessName: args["business-name"],
1352
- imageAssets: listFlag(args["image-assets"]),
1353
- squareImageAssets: listFlag(args["square-image-assets"]),
1354
- portraitImageAssets: listFlag(args["portrait-image-assets"]),
1355
- logoAssets: listFlag(args["logo-assets"]),
1356
- status: args.status
1357
- });
1358
- await stageCreate("google.assetGroup.create", customerId, payload, copyListSplitHints(args));
1359
- }
1360
- }),
1361
- update: defineCommand2({
1362
- meta: { name: "update", description: "Stage a Performance Max asset group update" },
1363
- args: {
1364
- ...customerIdArg,
1365
- ...fileArg,
1366
- name: { type: "string" },
1367
- "final-urls": { type: "string", description: "Comma-separated final URLs" },
1368
- status: { type: "string", description: "ENABLED | PAUSED | REMOVED" }
1369
- },
1370
- run: async ({ args }) => {
1371
- const customerId = requireCustomerId(args);
1372
- const target = requireTarget(args, "asset group");
1373
- const payload = mergePayload(loadJsonFileArg(args.file), {
1374
- name: args.name,
1375
- finalUrls: listFlag(args["final-urls"]),
1376
- status: args.status
1377
- });
1378
- await stageUpdate("google.assetGroup.update", customerId, target, payload);
1379
- }
1380
- }),
1381
- attach: defineCommand2({
1382
- meta: {
1383
- name: "attach",
1384
- description: "Add one existing asset to an existing asset group. Start here to refresh a live PMax group's creatives: attach the new image, then `detach` the old one \u2014 never detach first."
1385
- },
1386
- args: {
1387
- ...customerIdArg,
1388
- ...fileArg,
1389
- "asset-group-ref": { type: "string", description: "Asset group ref (g_temp_*, id, or resource name)" },
1390
- "asset-ref": { type: "string", description: "Asset ref (g_temp_*, id, or resource name)" },
1391
- "field-type": {
1392
- type: "string",
1393
- description: `Slot the asset fills: ${ASSET_GROUP_ASSET_FIELD_TYPES.join(" | ")}`
1394
- }
1395
- },
1396
- run: async ({ args }) => {
1397
- const customerId = requireCustomerId(args);
1398
- const payload = mergePayload(loadJsonFileArg(args.file), {
1399
- assetGroup: args["asset-group-ref"],
1400
- asset: args["asset-ref"],
1401
- fieldType: args["field-type"]
1402
- });
1403
- await stageCreate("google.assetGroupAsset.attach", customerId, payload, [
1404
- "Swapping a creative? Stage the matching `asset-groups detach` for the image this one replaces \u2014 an attach alone grows the group instead of refreshing it.",
1405
- "The field type must match the image's real ratio (1.91:1 \u2192 MARKETING_IMAGE, 1:1 \u2192 SQUARE_MARKETING_IMAGE, 4:5 \u2192 PORTRAIT_MARKETING_IMAGE); Google rejects a mismatch at publish.",
1406
- "Slots have ceilings as well as minimums: BUSINESS_NAME and CALL_TO_ACTION_SELECTION hold 1, LOGO 5, LONG_HEADLINE and DESCRIPTION 5, HEADLINE 15, YOUTUBE_VIDEO 15, images 20. Adding to a full slot is rejected exactly like removing below an empty one, so count what the group already holds (`SELECT asset_group_asset.field_type FROM asset_group_asset WHERE asset_group.id = \u2026`) and stage the detach alongside when it is full."
1407
- ]);
1408
- }
1409
- }),
1410
- detach: statusCommand("google.assetGroupAsset.detach", "asset group asset", [
1411
- "Stage order is execution order \u2014 if you are replacing this image, its `asset-groups attach` must already be staged BEFORE this detach, or Google sees the group below its per-ratio minimum and rejects the removal.",
1412
- "Pass the full composite resource name (customers/{cid}/assetGroupAssets/{assetGroupId}~{assetId}~{FIELD_TYPE}) \u2014 read it from `asset_group_asset.resource_name` via `ads google query`, scoping `asset_group_asset.status != 'REMOVED'`: the link carries its own status and Google returns an already-detached one like any other row."
1413
- ])
1414
- }
1415
- });
1416
- function fileCreateCommand(name, kind, description, hints) {
1417
- return defineCommand2({
1418
- meta: { name, description },
1419
- args: { ...customerIdArg, ...fileArg },
1420
- run: async ({ args }) => {
1421
- const customerId = requireCustomerId(args);
1422
- const payload = loadJsonFileArg(args.file);
1423
- if (Object.keys(payload).length === 0) {
1424
- failWriteValidation(`${kind} needs --file with the op payload`);
1425
- }
1426
- await stageGoogleOp({ kind, customerId, payload }, typeof hints === "function" ? hints(payload) : hints);
1427
- }
1428
- });
1429
- }
1430
- function imageAssetHints(payload) {
1431
- if (payload.type !== "image") {
1432
- return [];
1433
- }
1434
- return [
1435
- "This image publishes into the advertiser's Google Ads asset library \u2014 that half works. What Google refuses is the link that puts it on a Search campaign, so the `assets attach` for it never stores: it is skipped with the reason, and staging it anyway is what tells Baker which campaign these images belong on.",
1436
- "Finish the handover rather than reporting a limitation: tell the user the images are already in their Google Ads account and only need adding to the campaign under Assets, and name the ones you staged. Baker stages the Task for that step itself the moment you stage the image, so it is already in this chat's changes \u2014 do not stage a second one with `baker actions`. Stage the `assets attach` too if you know which campaign they belong on: it is skipped rather than stored, and it is what puts the campaign's name in that Task. Never tell them to upload images they already have. (A Performance Max asset group is different \u2014 images do link there, with `asset-groups attach`.)"
1437
- ];
1438
- }
1439
- var assetsUpdateCommand = defineCommand2({
1440
- meta: {
1441
- name: "update",
1442
- description: "Update a staged or live asset in place (flat partial \u2014 set only the fields that changed). Works across asset types: sitelink (--link-text/--description1/--description2/--final-urls), callout (--callout-text), structured snippet (--header/--values), call-to-action (--cta), text (--text), or --name."
1443
- },
1444
- args: {
1445
- ...customerIdArg,
1446
- ...fileArg,
1447
- name: { type: "string", description: "Asset display name" },
1448
- "link-text": { type: "string", description: "Sitelink link text" },
1449
- description1: { type: "string", description: "Sitelink description line 1" },
1450
- description2: { type: "string", description: "Sitelink description line 2" },
1451
- "final-urls": { type: "string", description: "Comma-separated sitelink final URLs" },
1452
- "callout-text": { type: "string", description: "Callout text" },
1453
- header: { type: "string", description: "Structured snippet header" },
1454
- values: { type: "string", description: "Comma-separated structured snippet values (3-10, max 25 characters each)" },
1455
- cta: { type: "string", description: "Call-to-action text" },
1456
- text: { type: "string", description: "Text asset content" }
1457
- },
1458
- run: async ({ args }) => {
1459
- const customerId = requireCustomerId(args);
1460
- const target = requireTarget(args, "asset");
1461
- const payload = mergePayload(loadJsonFileArg(args.file), {
1462
- name: args.name,
1463
- linkText: args["link-text"],
1464
- description1: args.description1,
1465
- description2: args.description2,
1466
- finalUrls: listFlag(args["final-urls"]),
1467
- calloutText: args["callout-text"],
1468
- header: args.header,
1469
- values: listFlag(args.values),
1470
- callToAction: args.cta,
1471
- text: args.text
1472
- });
1473
- await stageUpdate("google.asset.update", customerId, target, payload);
1474
- }
1475
- });
1476
- var assetsCommand = defineCommand2({
1477
- meta: {
1478
- name: "assets",
1479
- description: "Stage asset create/update + asset-link attach/detach (via --file). For a high-performance Search campaign add \u22654 sitelinks, \u22653 callouts and \u22651 structured snippet per campaign. Image extensions are the one thing you cannot finish here \u2014 `create` uploads the image into the advertiser's account, but Google refuses the link that puts it on a Search campaign, so hand that one step over rather than telling them to upload anything (stage the `attach` regardless: it is skipped, and it is what records the handover Task). The image a Search campaign does take through a link is the advertiser's logo \u2014 BUSINESS_LOGO, at campaign or customer level, on a verified account."
1480
- },
1481
- subCommands: {
1482
- create: fileCreateCommand(
1483
- "create",
1484
- "google.asset.create",
1485
- "Stage an asset (text/image/sitelink/callout/structuredSnippet/\u2026)",
1486
- imageAssetHints
1487
- ),
1488
- update: assetsUpdateCommand,
1489
- attach: fileCreateCommand("attach", "google.assetLink.attach", "Attach an asset to a campaign/adGroup/customer", [
1490
- "Image extensions cannot be linked \u2014 Google refuses AD_IMAGE and every marketing-image field type at every level, on every API version \u2014 but stage the link anyway: it is skipped rather than stored, the rest of a batch is unaffected, and it is what records the handover Task naming those images and that campaign. That is the only record when the images are already in the account and you are uploading nothing. Then tell the user they are already in their Google Ads account and only need adding to the campaign under Assets; do not stage a second Task with `baker actions`. Two images that do link: the advertiser's logo through this command (`BUSINESS_LOGO`, campaign or customer level, on a verified account), and Performance Max asset-group images, which are a different mechanism (`asset-groups attach`)."
1491
- ]),
1492
- detach: statusCommand("google.assetLink.detach", "asset link", [
1493
- "Pass the resource name Google gave you \u2014 `SELECT campaign_asset.resource_name \u2026 FROM campaign_asset WHERE campaign_asset.status != 'REMOVED'` (or `ad_group_asset` / `customer_asset`) \u2014 never one composed out of an owner id and an asset id. A link's own status is not its campaign's and not its ad group's, so an inventory read scoped only to those lists extensions that are already detached, and a link between an asset and an owner that never held it parses fine and exists nowhere. Either way the target is read back before it is staged, and a detach of a link that is not there is refused here rather than at publish."
1494
- ])
1495
- }
1496
- });
1497
- var audienceModeArg = {
1498
- mode: {
1499
- type: "string",
1500
- description: "observation = the audience only adjusts bids, reach is unchanged | targeting = the ads are shown only to people in the audiences attached to this campaign/ad group"
1501
- }
1502
- };
1503
- function requireAudienceMode(value) {
1504
- const mode = typeof value === "string" ? value.toLowerCase() : void 0;
1505
- if (mode !== "observation" && mode !== "targeting") {
1506
- failWriteValidation(
1507
- `pass --mode observation (the audience adjusts bids and reach is unchanged \u2014 the Google Ads interface's default) or --mode targeting (the ads are shown only to people in the audiences on this campaign/ad group). There is no safe default: the API's own default is targeting, which can cut a campaign's reach to the size of the list.`
1508
- );
1509
- }
1510
- return mode === "observation" ? "OBSERVATION" : "TARGETING";
1511
- }
1512
- function requireAudienceLevel(value) {
1513
- const level = requireStringFlag(value, "--level");
1514
- if (level !== "campaign" && level !== "adGroup") {
1515
- failWriteValidation("--level must be campaign or adGroup");
1516
- }
1517
- return level;
1518
- }
1519
- var AUDIENCE_ATTACH_HINTS = [
1520
- 'Read back what the parent ended up with before you report: `baker ads google query "SELECT campaign.id, campaign.targeting_setting.target_restrictions FROM campaign"` (or the ad_group equivalent). A missing AUDIENCE row means TARGETING \u2014 Google does not serialize an empty setting, so absence is a value, not a gap.',
1521
- "Staging checks the list is big enough to serve on this campaign's network (1,000 users on search, 100 on display) and refuses a targeting attach that is not. It does NOT check delivery afterwards, and Google reports no error when an audience stops a campaign serving \u2014 after publishing, read the campaign's impressions for the hour that follows and say what you saw."
1522
- ];
1523
- var audiencesAttachCommand = defineCommand2({
1524
- meta: {
1525
- name: "attach",
1526
- description: "Target or exclude an audience (user list) on a campaign or ad group. Start here: baker ads google audiences attach --customer-id 1234567890 --level campaign --parent 23837707642 --user-list 9398951971 --mode observation. `--mode` is required for a positive attach and decides whether the list only adjusts bids (observation) or narrows who sees the ads (targeting) \u2014 with --mode observation the audience setting is staged alongside the attach, because Google's API otherwise defaults to targeting."
1527
- },
1528
- args: {
1529
- ...customerIdArg,
1530
- ...fileArg,
1531
- ...audienceModeArg,
1532
- level: { type: "string", description: "campaign | adGroup" },
1533
- parent: { type: "string", description: "Campaign or ad group id (or a g_temp_* ref staged earlier)" },
1534
- "user-list": { type: "string", description: "User list id (or a g_temp_* ref from `audiences create`)" },
1535
- negative: { type: "boolean", description: "Exclude this audience instead of targeting it" }
1536
- },
1537
- run: async ({ args }) => {
1538
- const customerId = requireCustomerId(args);
1539
- const payload = mergePayload(loadJsonFileArg(args.file), {
1540
- level: args.level,
1541
- parent: args.parent,
1542
- userList: args["user-list"],
1543
- negative: args.negative
1544
- });
1545
- if (payload.negative === true) {
1546
- if (args.mode !== void 0) {
1547
- failWriteValidation(
1548
- "--mode does not apply to --negative: an excluded audience is excluded under both observation and targeting. Drop --mode, or drop --negative if you meant to target the list."
1549
- );
1550
- }
1551
- await stageGoogleOp({ kind: "google.audienceCriterion.attach", customerId, payload });
1552
- return;
1553
- }
1554
- const ops = audienceAttachOps(customerId, payload, requireAudienceMode(args.mode));
1555
- await stageGoogleOps(ops, AUDIENCE_ATTACH_HINTS);
1556
- }
1557
- });
1558
- function audienceAttachOps(customerId, payload, mode) {
1559
- const attachOp = { kind: "google.audienceCriterion.attach", customerId, payload };
1560
- if (mode === "TARGETING") {
1561
- return [attachOp];
1562
- }
1563
- return [
1564
- {
1565
- kind: "google.targetingSetting.set",
1566
- customerId,
1567
- payload: { level: payload.level, parent: payload.parent, audience: "OBSERVATION" }
1568
- },
1569
- attachOp
1570
- ];
1571
- }
1572
- var audiencesTargetingCommand = defineCommand2({
1573
- meta: {
1574
- name: "targeting",
1575
- description: "Switch the audiences already on a campaign or ad group between observation (they adjust bids only) and targeting (the ads are shown only to people in them) \u2014 the Observation/Targeting selector in the Google Ads interface. Start here: baker ads google audiences targeting 195883284706 --customer-id 1234567890 --level adGroup --mode observation."
1576
- },
1577
- args: {
1578
- ...customerIdArg,
1579
- ...audienceModeArg,
1580
- level: { type: "string", description: "campaign | adGroup" }
1581
- },
1582
- run: async ({ args }) => {
1583
- const customerId = requireCustomerId(args);
1584
- const parent = requireTarget(args, "campaign or ad group");
1585
- await stageGoogleOp({
1586
- kind: "google.targetingSetting.set",
1587
- customerId,
1588
- payload: { level: requireAudienceLevel(args.level), parent, audience: requireAudienceMode(args.mode) }
1589
- });
1590
- }
1591
- });
1592
- var audiencesCommand = defineCommand2({
1593
- meta: {
1594
- name: "audiences",
1595
- description: "Stage audience (user list) create, criterion attach/detach, and the observation/targeting setting the criteria are read under"
1596
- },
1597
- subCommands: {
1598
- create: fileCreateCommand("create", "google.audience.create", "Stage a user-list audience"),
1599
- attach: audiencesAttachCommand,
1600
- detach: statusCommand("google.audienceCriterion.detach", "audience criterion"),
1601
- targeting: audiencesTargetingCommand
1602
- }
1603
- });
1604
- var PRIMARY_FOR_GOAL_QUERY = 'baker ads google query "SELECT conversion_action.name, conversion_action.primary_for_goal, conversion_action.status FROM conversion_action"';
1605
- var CONVERSION_CREATE_HINTS = [
1606
- `A new conversion action is staged as SECONDARY (reported, not bid toward) unless the payload says \`"primaryForGoal": true\` \u2014 Google otherwise decides for you, and an accidentally-primary action redirects the spend of every Maximize Conversions / Target CPA campaign. Ask the user which they want rather than guessing.`
1607
- ];
1608
- var CONVERSION_ROLE_HINTS = [
1609
- `Primary actions are what Maximize Conversions / Target CPA campaigns bid toward. Before publishing, list what the account will be left with: ${PRIMARY_FOR_GOAL_QUERY} \u2014 and say so if this leaves no primary action, because bidding then has nothing to optimize toward.`
1610
- ];
1611
- function conversionGoalFromFlags(args) {
1612
- const booleanWord = booleanWordPositionalError(args, "conversion goal");
1613
- if (booleanWord) {
1614
- failWriteValidation(booleanWord);
1615
- }
1616
- const category = requireStringFlag(args.category, "--category").toUpperCase();
1617
- const origin = requireStringFlag(args.origin, "--origin").toUpperCase();
1618
- if (typeof args.biddable !== "boolean") {
1619
- failWriteValidation(
1620
- "pass --biddable (this conversion category drives automated bidding) or --no-biddable (it is measured only). There is no safe default \u2014 this changes what the whole account bids toward."
1621
- );
1622
- }
1623
- if (!CONVERSION_ACTION_CATEGORIES.includes(category)) {
1624
- failWriteValidation(`--category must be one of ${CONVERSION_ACTION_CATEGORIES.join(" | ")}`);
1625
- }
1626
- if (!CONVERSION_ORIGINS.includes(origin)) {
1627
- failWriteValidation(`--origin must be one of ${CONVERSION_ORIGINS.join(" | ")}`);
1628
- }
1629
- return { category, origin, biddable: args.biddable };
1630
- }
1631
- var CONVERSION_GOAL_QUERY = 'baker ads google query "SELECT customer_conversion_goal.category, customer_conversion_goal.origin, customer_conversion_goal.biddable FROM customer_conversion_goal"';
1632
- var CONVERSION_GOAL_HINTS = [
1633
- `A conversion drives automated bidding only when BOTH halves are on: the action is primary (\`conversions update --primary\`) AND its category's account-level goal is included (this command). Before publishing, read back what the account will bid toward: ${CONVERSION_GOAL_QUERY} \u2014 and say plainly which conversions this leaves driving spend.`
1634
- ];
1635
- var conversionsCommand = defineCommand2({
1636
- meta: {
1637
- name: "conversions",
1638
- description: "Stage conversion action create/update (via --file), the account-level goal, and manual conversion uploads for a period where tracking was broken"
1639
- },
1640
- subCommands: {
1641
- upload: () => import("./conversion-upload-command-677OT5NZ.js").then((m) => m.conversionsUploadCommand),
1642
- create: fileCreateCommand(
1643
- "create",
1644
- "google.conversionAction.create",
1645
- "Stage a conversion action (secondary unless the payload sets primaryForGoal)",
1646
- CONVERSION_CREATE_HINTS
1647
- ),
1648
- update: defineCommand2({
1649
- meta: {
1650
- name: "update",
1651
- description: "Stage a conversion action update. --primary makes it a primary action (automated bidding optimizes toward it); --no-primary demotes it to secondary (reported only)."
1652
- },
1653
- args: {
1654
- ...customerIdArg,
1655
- ...fileArg,
1656
- primary: {
1657
- type: "boolean",
1658
- // The spaced form is refused by `booleanWordPositionalError`, shared by every ad surface
1659
- // and the source of truth for this — the description only states the forms that work.
1660
- description: "Primary action \u2014 automated bidding optimizes toward it. Demote to secondary (reported only) with --no-primary or --primary=false."
1661
- }
1662
- },
1663
- run: async ({ args }) => {
1664
- const customerId = requireCustomerId(args);
1665
- const payload = mergePayload(loadJsonFileArg(args.file), { primaryForGoal: args.primary });
1666
- await stageUpdate(
1667
- "google.conversionAction.update",
1668
- customerId,
1669
- requireTarget(args, "conversion action"),
1670
- payload,
1671
- payload.primaryForGoal === void 0 ? void 0 : CONVERSION_ROLE_HINTS
1672
- );
1673
- }
1674
- }),
1675
- goal: defineCommand2({
1676
- meta: {
1677
- name: "goal",
1678
- description: `Stage the ACCOUNT-LEVEL conversion goal for one (category, origin) pair \u2014 Google Ads' "Included in account-level goals" switch. Start here when a conversion action is already Primary but bidding still ignores it: both halves have to be on. One command per pair. --biddable includes the category in bidding; --no-biddable measures it only.`
1679
- },
1680
- args: {
1681
- ...customerIdArg,
1682
- category: {
1683
- type: "string",
1684
- description: `Conversion category, e.g. PURCHASE, SUBMIT_LEAD_FORM, SIGNUP (${CONVERSION_ACTION_CATEGORIES.join(" | ")})`
1685
- },
1686
- origin: {
1687
- type: "string",
1688
- description: `Where the conversion happens (${CONVERSION_ORIGINS.join(" | ")})`
1689
- },
1690
- biddable: {
1691
- type: "boolean",
1692
- // The spaced form is refused by `booleanWordPositionalError` — the description only states
1693
- // the forms that work.
1694
- description: "Include this category in the account's bidding goals. Exclude it (measured only, never bid toward) with --no-biddable or --biddable=false."
1695
- }
1696
- },
1697
- run: async ({ args }) => {
1698
- const customerId = requireCustomerId(args);
1699
- await stageCreate("google.conversionAction.goal", customerId, conversionGoalFromFlags(args), [
1700
- ...CONVERSION_GOAL_HINTS
1701
- ]);
1702
- }
1703
- })
1704
- }
1705
- });
1706
- var biddingStrategiesCommand = defineCommand2({
1707
- meta: { name: "bidding-strategies", description: "Stage portfolio bidding strategy create/update (via --file)" },
1708
- subCommands: {
1709
- create: fileCreateCommand("create", "google.biddingStrategy.create", "Stage a portfolio bidding strategy"),
1710
- update: defineCommand2({
1711
- meta: { name: "update", description: "Stage a portfolio bidding strategy update" },
1712
- args: { ...customerIdArg, ...fileArg },
1713
- run: async ({ args }) => {
1714
- const customerId = requireCustomerId(args);
1715
- await stageUpdate(
1716
- "google.biddingStrategy.update",
1717
- customerId,
1718
- requireTarget(args, "bidding strategy"),
1719
- loadJsonFileArg(args.file)
1720
- );
1721
- }
1722
- })
1723
- }
1724
- });
1725
- var labelsCommand = defineCommand2({
1726
- meta: { name: "labels", description: "Stage label create + attach (via --file)" },
1727
- subCommands: {
1728
- create: defineCommand2({
1729
- meta: { name: "create", description: "Create a label" },
1730
- args: {
1731
- ...customerIdArg,
1732
- name: { type: "string" },
1733
- "background-color": { type: "string" },
1734
- description: { type: "string" }
1735
- },
1736
- run: async ({ args }) => {
1737
- const customerId = requireCustomerId(args);
1738
- await stageCreate("google.label.create", customerId, {
1739
- name: requireStringFlag(args.name, "--name"),
1740
- backgroundColor: args["background-color"],
1741
- description: args.description
1742
- });
1743
- }
1744
- }),
1745
- attach: fileCreateCommand("attach", "google.label.attach", "Attach a label to a campaign/adGroup/ad")
1746
- }
1747
- });
1748
- function bidModifierFlag(value) {
1749
- if (value === void 0 || value === null || value === "") {
1750
- failWriteValidation(
1751
- "--bid-modifier is required: 1 for no adjustment, 1.25 to bid 25% more, 0.9 to bid 10% less, 0 to stop serving on it"
1752
- );
1753
- }
1754
- const num = Number(value);
1755
- if (Number.isNaN(num) || num < 0 || num > 10 || num > 0 && num < 0.1) {
1756
- failWriteValidation("--bid-modifier must be 0 (stop serving on it) or between 0.1 and 10.0");
1757
- }
1758
- return num;
1759
- }
1760
- var campaignCriteriaCommand = defineCommand2({
1761
- meta: {
1762
- name: "campaign-criteria",
1763
- description: "Stage campaign criteria (location/language/adSchedule/device): add/remove a targeting criterion, or update a device bid adjustment"
1764
- },
1765
- subCommands: {
1766
- add: fileCreateCommand("add", "google.campaignCriterion.add", "Add a campaign criterion"),
1767
- update: defineCommand2({
1768
- meta: {
1769
- name: "update",
1770
- description: "Change a criterion's bid adjustment \u2014 the only way to change a device setting the campaign already has, since Google never lets one be removed. Start here: `campaign-criteria update customers/<cid>/campaignCriteria/<campaignId>~<criterionId> --bid-modifier 1` resets a boost to neutral; --bid-modifier 0 stops ads serving on that device. Use `campaign-criteria add` instead when the campaign has no criterion for that device yet. Read the current ones with: baker ads google query \"SELECT campaign_criterion.resource_name, campaign_criterion.device.type, campaign_criterion.bid_modifier FROM campaign_criterion WHERE campaign_criterion.type = 'DEVICE'\""
1771
- },
1772
- args: {
1773
- ...customerIdArg,
1774
- id: {
1775
- type: "positional",
1776
- description: "Criterion resource name (customers/\u2026/campaignCriteria/{campaignId}~{criterionId})",
1777
- required: false
1778
- },
1779
- "bid-modifier": {
1780
- type: "string",
1781
- description: "1 = no adjustment, 1.25 = bid 25% more, 0.9 = bid 10% less, 0 = don't serve on it"
1782
- }
1783
- },
1784
- run: async ({ args }) => {
1785
- const customerId = requireCustomerId(args);
1786
- const target = requireTarget(args, "campaign criterion");
1787
- await stageUpdate("google.campaignCriterion.update", customerId, target, {
1788
- bidModifier: bidModifierFlag(args["bid-modifier"])
1789
- });
1790
- }
1791
- }),
1792
- remove: defineCommand2({
1793
- meta: {
1794
- name: "remove",
1795
- description: "Stage a campaign criterion remove. Works for what you added \u2014 locations, languages, ad schedules. A device setting CANNOT be removed once the campaign has one: use `campaign-criteria update --bid-modifier` to change or neutralise it instead."
1796
- },
1797
- args: {
1798
- ...customerIdArg,
1799
- id: { type: "positional", description: "Criterion resource name or id", required: false }
1800
- },
1801
- run: async ({ args }) => {
1802
- const customerId = requireCustomerId(args);
1803
- await stageTarget("google.campaignCriterion.remove", customerId, requireTarget(args, "campaign criterion"));
1804
- }
1805
- })
1806
- }
1807
- });
1808
- var googleWriteCommands = {
1809
- budgets: budgetsCommand,
1810
- campaigns: campaignsCommand,
1811
- "ad-groups": adGroupsCommand,
1812
- "negative-keywords": negativeKeywordsCommand,
1813
- "keyword-lists": keywordListsCommand,
1814
- ads: adsCommand,
1815
- assets: assetsCommand,
1816
- "asset-groups": assetGroupsCommand,
1817
- audiences: audiencesCommand,
1818
- conversions: conversionsCommand,
1819
- "bidding-strategies": biddingStrategiesCommand,
1820
- labels: labelsCommand,
1821
- "campaign-criteria": campaignCriteriaCommand
1822
- };
1823
-
1824
- // src/commands/ads/google/index.ts
1825
- var keywordsWithWrites = defineCommand3({
1826
- meta: keywordsCommand.meta,
1827
- subCommands: { ...keywordsCommand.subCommands, ...keywordWriteSubcommands }
1828
- });
1829
- var googleCommand = defineCommand3({
1830
- meta: {
1831
- name: "google",
1832
- description: `Google Ads commands. Query campaigns, keywords, search terms, and more via GAQL.
1833
-
1834
- Start here:
1835
- baker ads google accounts \u2014 list accessible accounts
1836
- baker ads google query --list-presets \u2014 see available query templates
1837
-
1838
- Examples:
1839
- baker ads google query "SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_7_DAYS" --customer-id 1234567890
1840
- baker ads google query --preset campaign-performance --customer-id 1234567890
1841
- baker ads google currency --customer-id 1234567890
1842
- baker ads google url-options --customer-id 1234567890 \u2014 UTM / tracking parameters in force
1843
- baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes"
1844
-
1845
- Staged writes (never touch Google until the chat is published):
1846
- baker ads google budgets create --customer-id 1234567890 --name "Search" --amount 50
1847
- baker ads google campaigns create --customer-id 1234567890 --name "Brand" --channel-type SEARCH --budget-ref g_temp_\u2026 --bidding-strategy MANUAL_CPC
1848
- baker ads google keyword-lists create --customer-id 1234567890 --name "Brand exclusions"
1849
- baker ads google draft list \u2014 review staged Google Ads changes
1850
- Full guide: __tooling__/docs/tools/baker/ads-google.md`
1851
- },
1852
- subCommands: {
1853
- accounts: () => import("./accounts-E7TRNPFA.js").then((m) => m.accountsCommand),
1854
- currency: () => import("./currency-VFKYXFBM.js").then((m) => m.currencyCommand),
1855
- "url-options": () => import("./url-options-DOCH5AWX.js").then((m) => m.urlOptionsCommand),
1856
- changes: () => import("./changes-HCOPS4FF.js").then((m) => m.changesCommand),
1857
- query: () => import("./query-TBWL52JI.js").then((m) => m.queryCommand),
1858
- keywords: keywordsWithWrites,
1859
- ...googleWriteCommands,
1860
- draft: () => import("./draft-URMXE4U4.js").then((m) => m.draftCommand)
1861
- }
1862
- });
1863
- export {
1864
- googleCommand
1865
- };
1866
- //# sourceMappingURL=google-C2Z4XWRL.js.map