@koda-sl/baker-cli 0.447.0 → 0.448.0-dev.ccc3c9a37

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 (1400) hide show
  1. package/README.md +231 -42
  2. package/dist/account-JG7QD522.js +79 -0
  3. package/dist/account-V6PB6PA5.js +80 -0
  4. package/dist/account-VLPX7EZT.js +49 -0
  5. package/dist/account-reads-4P5L6CJN.js +218 -0
  6. package/dist/account-reads-4P5L6CJN.js.map +1 -0
  7. package/dist/account-writes-BGREY7ZL.js +66 -0
  8. package/dist/accounts-2FINK5GZ.js +114 -0
  9. package/dist/accounts-2UV5Z3Y6.js +75 -0
  10. package/dist/accounts-3EX2PFJB.js +77 -0
  11. package/dist/accounts-G2QT3ZVP.js +115 -0
  12. package/dist/accounts-N63J5YTK.js +611 -0
  13. package/dist/actions-PA2BPIYO.js +55 -0
  14. package/dist/active-entities-RDXDSMA2.js +103 -0
  15. package/dist/activecampaign-EE5ERO25.js +897 -0
  16. package/dist/activecampaign-EE5ERO25.js.map +1 -0
  17. package/dist/activities-RBTU2Q24.js +74 -0
  18. package/dist/ad-group-writes-5NTRJTVE.js +170 -0
  19. package/dist/ad-groups-4OTAKWUC.js +68 -0
  20. package/dist/ad-writes-T7W3DDKK.js +174 -0
  21. package/dist/add-4VKA4NDH.js +105 -0
  22. package/dist/add-MQO33HL3.js +97 -0
  23. package/dist/add-MYPHHYC4.js +302 -0
  24. package/dist/add-MYPHHYC4.js.map +1 -0
  25. package/dist/add-QM7ANAVG.js +104 -0
  26. package/dist/add-accounts-VDSWHJ4K.js +91 -0
  27. package/dist/add-accounts-VDSWHJ4K.js.map +1 -0
  28. package/dist/ads-HYODBAPV.js +128 -0
  29. package/dist/ads-HYODBAPV.js.map +1 -0
  30. package/dist/ads-IJCFN2N3.js +113 -0
  31. package/dist/ads-QKMLAPZC.js +40 -0
  32. package/dist/ads-XYAWONXR.js +77 -0
  33. package/dist/adsets-DPTIKGTG.js +176 -0
  34. package/dist/advertisers-ITFXIXUW.js +125 -0
  35. package/dist/advertisers-ITFXIXUW.js.map +1 -0
  36. package/dist/advertisers-SZFDOPBQ.js +120 -0
  37. package/dist/analytics-HFBYIPZ7.js +433 -0
  38. package/dist/analytics-NDZR33ZJ.js +1976 -0
  39. package/dist/analytics-NDZR33ZJ.js.map +1 -0
  40. package/dist/animate-LUKNHCF4.js +480 -0
  41. package/dist/assign-QCICUD72.js +77 -0
  42. package/dist/audience-size-HML4BLHJ.js +94 -0
  43. package/dist/audiences-BSABKS5K.js +268 -0
  44. package/dist/audiences-FWOOSUSJ.js +78 -0
  45. package/dist/audiences-VK4M7GLQ.js +85 -0
  46. package/dist/audit-DUM55J5U.js +151 -0
  47. package/dist/audit-JR5R75XK.js +88 -0
  48. package/dist/autocomplete-VX4PMMLR.js +111 -0
  49. package/dist/avatars-5KCRSUJ3.js +38 -0
  50. package/dist/bid-pricing-AIUACXUH.js +99 -0
  51. package/dist/brand-UBTC2WXR.js +22 -0
  52. package/dist/brief-NU7ZGPXO.js +490 -0
  53. package/dist/brief-NU7ZGPXO.js.map +1 -0
  54. package/dist/businesses-P3RX4UXS.js +53 -0
  55. package/dist/campaign-groups-SJZEDIBL.js +95 -0
  56. package/dist/campaign-writes-5BPVXG4C.js +170 -0
  57. package/dist/campaign-writes-VE6QLIDA.js +165 -0
  58. package/dist/campaigns-JEWEDCTC.js +109 -0
  59. package/dist/campaigns-MEIMSHJF.js +110 -0
  60. package/dist/campaigns-NCGJNJKS.js +107 -0
  61. package/dist/campaigns-XY7QWHDN.js +76 -0
  62. package/dist/canvas-DK2DH7BA.js +46 -0
  63. package/dist/canvas-DK2DH7BA.js.map +1 -0
  64. package/dist/capabilities-W6SPXOPF.js +144 -0
  65. package/dist/cards-CLD4WX6G.js +85 -0
  66. package/dist/catalog-W6RBOIOF.js +64 -0
  67. package/dist/catalog-W6RBOIOF.js.map +1 -0
  68. package/dist/catalogs-DINPKQXY.js +128 -0
  69. package/dist/changes-N2YZXAPF.js +135 -0
  70. package/dist/chatgpt-TPAP6BVY.js +47 -0
  71. package/dist/chats-FKVVBXVF.js +262 -0
  72. package/dist/chunk-237WE5LX.js +455 -0
  73. package/dist/chunk-237WE5LX.js.map +1 -0
  74. package/dist/chunk-24IQ6K7K.js +103 -0
  75. package/dist/chunk-2FZG5DD2.js +297 -0
  76. package/dist/chunk-2T3EH2MU.js +363 -0
  77. package/dist/chunk-2Y5UE2CV.js +174 -0
  78. package/dist/chunk-2ZZR2SOF.js +215 -0
  79. package/dist/chunk-2ZZR2SOF.js.map +1 -0
  80. package/dist/chunk-3KPQDXIU.js +1830 -0
  81. package/dist/chunk-4AFGT3L3.js +46 -0
  82. package/dist/chunk-4JKBMKFC.js +225 -0
  83. package/dist/chunk-4KBWL7S4.js +610 -0
  84. package/dist/chunk-4R3QKEDV.js +136 -0
  85. package/dist/chunk-536R4RRM.js +166 -0
  86. package/dist/chunk-536R4RRM.js.map +1 -0
  87. package/dist/chunk-57XJ7QF7.js +65 -0
  88. package/dist/chunk-57XJ7QF7.js.map +1 -0
  89. package/dist/chunk-6AJ6ZD73.js +172 -0
  90. package/dist/chunk-6AJ6ZD73.js.map +1 -0
  91. package/dist/chunk-6SL6463H.js +309 -0
  92. package/dist/chunk-7TRSFEHZ.js +51 -0
  93. package/dist/chunk-AOCG7COT.js +474 -0
  94. package/dist/chunk-AOCG7COT.js.map +1 -0
  95. package/dist/chunk-APNV7FMK.js +191 -0
  96. package/dist/chunk-AR7PU7BB.js +76 -0
  97. package/dist/chunk-AR7PU7BB.js.map +1 -0
  98. package/dist/chunk-B2HLSTK6.js +392 -0
  99. package/dist/chunk-B2HLSTK6.js.map +1 -0
  100. package/dist/chunk-B2VKGTBS.js +3151 -0
  101. package/dist/chunk-B2VKGTBS.js.map +1 -0
  102. package/dist/chunk-BC2BXRXY.js +2887 -0
  103. package/dist/chunk-BC2BXRXY.js.map +1 -0
  104. package/dist/chunk-BC6M5YYV.js +1599 -0
  105. package/dist/chunk-BC6M5YYV.js.map +1 -0
  106. package/dist/chunk-BCSOWRQL.js +76 -0
  107. package/dist/chunk-BIZH3X6P.js +817 -0
  108. package/dist/chunk-BIZH3X6P.js.map +1 -0
  109. package/dist/chunk-BJEW3LST.js +296 -0
  110. package/dist/chunk-BYKUAX26.js +106 -0
  111. package/dist/chunk-C4KJHTQU.js +1079 -0
  112. package/dist/chunk-C4KJHTQU.js.map +1 -0
  113. package/dist/chunk-C7NPNSFO.js +169 -0
  114. package/dist/chunk-CAMX6OHF.js +3182 -0
  115. package/dist/chunk-CAMX6OHF.js.map +1 -0
  116. package/dist/chunk-CLK2FPAV.js +76 -0
  117. package/dist/chunk-CLK2FPAV.js.map +1 -0
  118. package/dist/chunk-CVIMIOPO.js +94 -0
  119. package/dist/chunk-D3RTGIT4.js +2102 -0
  120. package/dist/chunk-D3RTGIT4.js.map +1 -0
  121. package/dist/chunk-DAKIMGUS.js +74 -0
  122. package/dist/chunk-DCRUGS3G.js +25 -0
  123. package/dist/chunk-DJPCTTUN.js +1743 -0
  124. package/dist/chunk-DJPCTTUN.js.map +1 -0
  125. package/dist/chunk-DJUHGO3O.js +547 -0
  126. package/dist/chunk-DJUHGO3O.js.map +1 -0
  127. package/dist/chunk-DMA77LLI.js +106 -0
  128. package/dist/chunk-EEEAC655.js +45 -0
  129. package/dist/chunk-EEEAC655.js.map +1 -0
  130. package/dist/chunk-EESOZY5S.js +26 -0
  131. package/dist/chunk-EIZMOICE.js +175 -0
  132. package/dist/chunk-F3IVR3V3.js +136 -0
  133. package/dist/chunk-FSX6CQ2Z.js +188 -0
  134. package/dist/chunk-G7LAQE56.js +56 -0
  135. package/dist/chunk-G7QKXFQ2.js +66 -0
  136. package/dist/chunk-G7XY4T6K.js +23 -0
  137. package/dist/chunk-GIWHHCD6.js +145 -0
  138. package/dist/chunk-GIWHHCD6.js.map +1 -0
  139. package/dist/chunk-GRJCZF2H.js +5187 -0
  140. package/dist/chunk-GRJCZF2H.js.map +1 -0
  141. package/dist/chunk-HCDCWXSU.js +346 -0
  142. package/dist/chunk-HKSLIV4T.js +533 -0
  143. package/dist/chunk-HKSLIV4T.js.map +1 -0
  144. package/dist/chunk-I2DNBEV6.js +4227 -0
  145. package/dist/chunk-I2DNBEV6.js.map +1 -0
  146. package/dist/chunk-I4IVUAQN.js +337 -0
  147. package/dist/chunk-ICJFL7DU.js +35 -0
  148. package/dist/chunk-ICJFL7DU.js.map +1 -0
  149. package/dist/chunk-IWNZCYWI.js +74 -0
  150. package/dist/chunk-JF5LNI6O.js +84 -0
  151. package/dist/chunk-JJZBZYNK.js +96 -0
  152. package/dist/chunk-JPK34QPS.js +134 -0
  153. package/dist/chunk-JPK34QPS.js.map +1 -0
  154. package/dist/chunk-JZP5IODJ.js +98 -0
  155. package/dist/chunk-KL5VTXIK.js +149 -0
  156. package/dist/chunk-KL5VTXIK.js.map +1 -0
  157. package/dist/chunk-KWMYTVHI.js +455 -0
  158. package/dist/chunk-LFGCOAB4.js +75 -0
  159. package/dist/chunk-LLN6WTER.js +665 -0
  160. package/dist/chunk-LLN6WTER.js.map +1 -0
  161. package/dist/chunk-LO7OQKUD.js +4410 -0
  162. package/dist/chunk-LO7OQKUD.js.map +1 -0
  163. package/dist/chunk-LPRUP3ZX.js +172 -0
  164. package/dist/chunk-MAGSNHYB.js +6214 -0
  165. package/dist/chunk-MAGSNHYB.js.map +1 -0
  166. package/dist/chunk-MD3VH5UG.js +84 -0
  167. package/dist/chunk-MFORE6F4.js +19 -0
  168. package/dist/chunk-MMBHCAON.js +160 -0
  169. package/dist/chunk-MMOTJIV6.js +216 -0
  170. package/dist/chunk-MMOTJIV6.js.map +1 -0
  171. package/dist/chunk-NIGGMK7L.js +125 -0
  172. package/dist/chunk-NN7A2ILR.js +433 -0
  173. package/dist/chunk-O356YNIW.js +509 -0
  174. package/dist/chunk-O356YNIW.js.map +1 -0
  175. package/dist/chunk-OUQMJRH6.js +159 -0
  176. package/dist/chunk-OXKUWTFL.js +494 -0
  177. package/dist/chunk-P5T7OZKV.js +26 -0
  178. package/dist/chunk-PAJJXZ3Z.js +170 -0
  179. package/dist/chunk-PC56KVAD.js +74 -0
  180. package/dist/chunk-PEWNEPDR.js +206 -0
  181. package/dist/chunk-PY4FAOW6.js +275 -0
  182. package/dist/chunk-PY4FAOW6.js.map +1 -0
  183. package/dist/chunk-Q2T4XZG4.js +139 -0
  184. package/dist/chunk-QEHICHMP.js +875 -0
  185. package/dist/chunk-QEHICHMP.js.map +1 -0
  186. package/dist/chunk-RCR6RVYE.js +274 -0
  187. package/dist/chunk-RH2H5PBV.js +111 -0
  188. package/dist/chunk-S3L2ITS7.js +111 -0
  189. package/dist/chunk-S3L2ITS7.js.map +1 -0
  190. package/dist/chunk-S3XM4LD3.js +57 -0
  191. package/dist/chunk-SEPPFM5S.js +228 -0
  192. package/dist/chunk-SEPPFM5S.js.map +1 -0
  193. package/dist/chunk-SFHL3KWY.js +96 -0
  194. package/dist/chunk-SQ7DRYCC.js +150 -0
  195. package/dist/chunk-SSVZM3P6.js +333 -0
  196. package/dist/chunk-T64IRDKW.js +52 -0
  197. package/dist/chunk-T64IRDKW.js.map +1 -0
  198. package/dist/chunk-TMNLIA7R.js +60 -0
  199. package/dist/chunk-UF55TADX.js +92 -0
  200. package/dist/chunk-UGI33KTO.js +55 -0
  201. package/dist/chunk-UK2OTLT3.js +197 -0
  202. package/dist/chunk-UU3FGKUW.js +207 -0
  203. package/dist/chunk-UUBHU2TY.js +304 -0
  204. package/dist/chunk-UUBHU2TY.js.map +1 -0
  205. package/dist/chunk-UX7HIGS7.js +67 -0
  206. package/dist/chunk-VDZIGI2C.js +98 -0
  207. package/dist/chunk-VF6JFG27.js +846 -0
  208. package/dist/chunk-VF6JFG27.js.map +1 -0
  209. package/dist/chunk-VKVIBQP3.js +486 -0
  210. package/dist/chunk-VLF2M4GZ.js +592 -0
  211. package/dist/chunk-VTF7XNOP.js +58 -0
  212. package/dist/chunk-WDA3L4NF.js +382 -0
  213. package/dist/chunk-WMN2WKNZ.js +1442 -0
  214. package/dist/chunk-WMN2WKNZ.js.map +1 -0
  215. package/dist/chunk-XDV6Q33B.js +42 -0
  216. package/dist/chunk-XQIOCIDO.js +204 -0
  217. package/dist/chunk-XQIOCIDO.js.map +1 -0
  218. package/dist/chunk-XYC26BDM.js +133 -0
  219. package/dist/chunk-YHQYDNYD.js +23992 -0
  220. package/dist/chunk-YHQYDNYD.js.map +1 -0
  221. package/dist/chunk-YOARYFC2.js +6667 -0
  222. package/dist/chunk-YOARYFC2.js.map +1 -0
  223. package/dist/chunk-YPCVPDU7.js +455 -0
  224. package/dist/chunk-YPCVPDU7.js.map +1 -0
  225. package/dist/chunk-YTWNY3RF.js +97 -0
  226. package/dist/claim-JLVISHS4.js +197 -0
  227. package/dist/cli.js +41 -37
  228. package/dist/cli.js.map +1 -1
  229. package/dist/client-G6DGRGKT.js +19 -0
  230. package/dist/code-AYN42EK7.js +76 -0
  231. package/dist/companies-XDMOP2GL.js +195 -0
  232. package/dist/complete-XM7VLC4F.js +81 -0
  233. package/dist/config-UE7GCROG.js +88 -0
  234. package/dist/connect-VTDKGYP3.js +42 -0
  235. package/dist/content-5LHM4PBE.js +85 -0
  236. package/dist/content-5LHM4PBE.js.map +1 -0
  237. package/dist/conversation-F53OE25Y.js +93 -0
  238. package/dist/conversion-report-35MLL3FA.js +125 -0
  239. package/dist/conversion-upload-command-CV2TA7OV.js +438 -0
  240. package/dist/conversion-writes-NSZPNMPE.js +120 -0
  241. package/dist/conversions-7YO6DDL3.js +135 -0
  242. package/dist/conversions-XNISCCC2.js +76 -0
  243. package/dist/countries-NMWPKFFW.js +82 -0
  244. package/dist/create-ARERZYCL.js +59 -0
  245. package/dist/create-C6ZVYIF5.js +207 -0
  246. package/dist/create-FAPJFCZE.js +235 -0
  247. package/dist/create-M7TUO3XS.js +130 -0
  248. package/dist/creatives-3YIV6IOK.js +182 -0
  249. package/dist/creatives-QZCO6WGH.js +51 -0
  250. package/dist/creatives-WJLJ3NKP.js +87 -0
  251. package/dist/credentials-2DO23MYD.js +287 -0
  252. package/dist/credentials-2DO23MYD.js.map +1 -0
  253. package/dist/critique-56MNXW7R.js +1449 -0
  254. package/dist/critique-KRIKEHF6.js +213 -0
  255. package/dist/crm-OETFQNR3.js +224 -0
  256. package/dist/crm-WXCFB4TU.js +318 -0
  257. package/dist/crop-VCP2JLQL.js +113 -0
  258. package/dist/currency-MNNDKY4Z.js +88 -0
  259. package/dist/custom-conversions-CIU525HM.js +125 -0
  260. package/dist/customers-GTPEABJI.js +56 -0
  261. package/dist/decide-NFTEKQKC.js +199 -0
  262. package/dist/decide-NFTEKQKC.js.map +1 -0
  263. package/dist/delete-5CURRI25.js +71 -0
  264. package/dist/delete-CLC2Q2OE.js +63 -0
  265. package/dist/delete-CQ6Q3URI.js +54 -0
  266. package/dist/delete-JIRZBBDD.js +69 -0
  267. package/dist/delete-LD3F4UIW.js +66 -0
  268. package/dist/delete-LGZ5OI4C.js +71 -0
  269. package/dist/demographics-EK2ZPHWK.js +138 -0
  270. package/dist/describe-BNB6643C.js +97 -0
  271. package/dist/describe-ZXGFTCDR.js +97 -0
  272. package/dist/dimensions-IU4ETG4U.js +101 -0
  273. package/dist/discard-VWCXYJWU.js +66 -0
  274. package/dist/discover-4EQWGIAN.js +172 -0
  275. package/dist/discover-4N3V5K2R.js +93 -0
  276. package/dist/discover-4N3V5K2R.js.map +1 -0
  277. package/dist/domain-I2SAGVAB.js +98 -0
  278. package/dist/download-D7TB4744.js +299 -0
  279. package/dist/draft-4VOOSJQJ.js +233 -0
  280. package/dist/draft-6KG2YFOY.js +328 -0
  281. package/dist/draft-APDGACIC.js +306 -0
  282. package/dist/draft-D76C4JR3.js +103 -0
  283. package/dist/draft-HFH2Y6F5.js +281 -0
  284. package/dist/draft-NLUJX7TA.js +307 -0
  285. package/dist/draft-NLUJX7TA.js.map +1 -0
  286. package/dist/draft-NVVWWQVC.js +217 -0
  287. package/dist/draft-NWLPLTWM.js +100 -0
  288. package/dist/engine/index.d.ts +12 -0
  289. package/dist/engine/index.js +13 -14
  290. package/dist/env-LHLGM2YJ.js +43 -0
  291. package/dist/experiment-4SUIXVBP.js +1397 -0
  292. package/dist/experiment-4SUIXVBP.js.map +1 -0
  293. package/dist/export-VGCFD7GL.js +168 -0
  294. package/dist/extract-32J7V2RX.js +113 -0
  295. package/dist/facets-WVI6VBDC.js +114 -0
  296. package/dist/favorites-WKV5H5OF.js +178 -0
  297. package/dist/feed-2CRO4HA6.js +177 -0
  298. package/dist/feed-2CRO4HA6.js.map +1 -0
  299. package/dist/feedback-NMNKYEMU.js +66 -0
  300. package/dist/feedback-record-2VYBMWMO.js +175 -0
  301. package/dist/fetch-CENBDLT6.js +176 -0
  302. package/dist/fetch-XQFPE3MI.js +139 -0
  303. package/dist/find-PNDKEOXT.js +134 -0
  304. package/dist/fit-SEWGCEW5.js +45 -0
  305. package/dist/flows-3N4RPGSP.js +247 -0
  306. package/dist/flows-3N4RPGSP.js.map +1 -0
  307. package/dist/follow-BB5KUEXZ.js +94 -0
  308. package/dist/follow-BB5KUEXZ.js.map +1 -0
  309. package/dist/follow-competitors-EURYGGXE.js +112 -0
  310. package/dist/follow-competitors-EURYGGXE.js.map +1 -0
  311. package/dist/following-CA5BQXYB.js +113 -0
  312. package/dist/following-CA5BQXYB.js.map +1 -0
  313. package/dist/fonts-KUCQAR7N.js +34 -0
  314. package/dist/forecast-G5KRTVDM.js +168 -0
  315. package/dist/forecast-G5KRTVDM.js.map +1 -0
  316. package/dist/forecast-PI52G2GL.js +104 -0
  317. package/dist/funding-ZRC25X5I.js +85 -0
  318. package/dist/funnel-WGFMUWQP.js +394 -0
  319. package/dist/funnel-WGFMUWQP.js.map +1 -0
  320. package/dist/ga4-YDKXVJOC.js +55 -0
  321. package/dist/generate-BVMMX3SS.js +262 -0
  322. package/dist/get-7MSF4RVQ.js +59 -0
  323. package/dist/get-FILH7BDT.js +78 -0
  324. package/dist/get-FILH7BDT.js.map +1 -0
  325. package/dist/get-KFVPIDIA.js +61 -0
  326. package/dist/get-NHQ2XYKZ.js +63 -0
  327. package/dist/get-TCDAYTZA.js +56 -0
  328. package/dist/get-TCDAYTZA.js.map +1 -0
  329. package/dist/get-UMMTY74K.js +92 -0
  330. package/dist/get-YM77HCL5.js +63 -0
  331. package/dist/gif-X323HXS2.js +94 -0
  332. package/dist/google-76A4MHQH.js +136 -0
  333. package/dist/google-OZTCY7HD.js +3190 -0
  334. package/dist/google-OZTCY7HD.js.map +1 -0
  335. package/dist/google-ads-S6O4MLKA.js +195 -0
  336. package/dist/group-CTIZVYX2.js +43 -0
  337. package/dist/group-HKWQ75CJ.js +43 -0
  338. package/dist/gsc-CORRYJBJ.js +30 -0
  339. package/dist/history-4U7FJGEM.js +133 -0
  340. package/dist/history-BXOMJ5PL.js +67 -0
  341. package/dist/hubspot-I5MFAZ4G.js +779 -0
  342. package/dist/icon-6QW63AHG.js +137 -0
  343. package/dist/ideas-QDS5XA4S.js +32 -0
  344. package/dist/images-NVTA2OHD.js +90 -0
  345. package/dist/improve-WR23CHYH.js +86 -0
  346. package/dist/ingest-QAVJ2J7F.js +107 -0
  347. package/dist/ingest-XJHV3GG6.js +23 -0
  348. package/dist/insights-AW7SOGHI.js +122 -0
  349. package/dist/insights-IJEPLWQH.js +423 -0
  350. package/dist/inspect-7I53PWCF.js +189 -0
  351. package/dist/inspiration-TJJFUVY2.js +53 -0
  352. package/dist/intent-VEUQS34Z.js +95 -0
  353. package/dist/job-K7LAIBYN.js +202 -0
  354. package/dist/job-create-DFZL4CGA.js +109 -0
  355. package/dist/job-status-6Q2TVTEO.js +74 -0
  356. package/dist/keep-XJFCLVCP.js +78 -0
  357. package/dist/keyword-gap-CUOGKUMM.js +130 -0
  358. package/dist/keyword-metrics-LK7FME4N.js +197 -0
  359. package/dist/keywords-for-site-4E7UU44P.js +128 -0
  360. package/dist/landing-I65PFN7H.js +28 -0
  361. package/dist/landings-SQJWZOJR.js +151 -0
  362. package/dist/landings-SQJWZOJR.js.map +1 -0
  363. package/dist/languages-KPPKX3E2.js +40 -0
  364. package/dist/languages-MGEBLO64.js +55 -0
  365. package/dist/launches-E3Y6NCQE.js +19 -0
  366. package/dist/layerize-N4IQ2KE7.js +190 -0
  367. package/dist/leads-PPMOBH7U.js +293 -0
  368. package/dist/leads-TNEQUOUN.js +90 -0
  369. package/dist/learn-QQS323PS.js +203 -0
  370. package/dist/library-4QQAVB6X.js +109 -0
  371. package/dist/lighthouse-CD47CPJM.js +75 -0
  372. package/dist/line-item-writes-QJZQUQ4E.js +208 -0
  373. package/dist/line-items-ESEAXGBV.js +103 -0
  374. package/dist/link-DPJYS4WY.js +64 -0
  375. package/dist/linkedin-EJPNC4VY.js +1008 -0
  376. package/dist/list-A45NTPSJ.js +76 -0
  377. package/dist/list-GNP4GIV2.js +51 -0
  378. package/dist/list-KQFLOVC4.js +57 -0
  379. package/dist/list-MDHK3ENJ.js +50 -0
  380. package/dist/list-PRUFXMXW.js +65 -0
  381. package/dist/list-S3BAQCTL.js +303 -0
  382. package/dist/list-UU5NPLJ7.js +151 -0
  383. package/dist/list-V525A4Z4.js +63 -0
  384. package/dist/locations-J2PVPDZU.js +67 -0
  385. package/dist/locations-TFOYESTF.js +40 -0
  386. package/dist/log-XQBEJOOW.js +92 -0
  387. package/dist/logo-KQD5KUAH.js +18 -0
  388. package/dist/lookup-QCREWUV4.js +22 -0
  389. package/dist/make-NZHJ7ICV.js +633 -0
  390. package/dist/make-NZHJ7ICV.js.map +1 -0
  391. package/dist/map-7SHU5WCJ.js +433 -0
  392. package/dist/map-7SHU5WCJ.js.map +1 -0
  393. package/dist/mcp-GATPHY4D.js +463 -0
  394. package/dist/mcp-GATPHY4D.js.map +1 -0
  395. package/dist/media-2WENMOAA.js +15 -0
  396. package/dist/media-N4C6Q4IV.js +89 -0
  397. package/dist/media-sources-BPOTW6IB.js +32 -0
  398. package/dist/members-BOYZKLNK.js +44 -0
  399. package/dist/meta-PXYHWOOG.js +69 -0
  400. package/dist/metrics-FZANUN7E.js +152 -0
  401. package/dist/models-W6EN3WB7.js +155 -0
  402. package/dist/normalize-LOMDPNFJ.js +806 -0
  403. package/dist/normalize-RP3D7BUT.js +141 -0
  404. package/dist/normalize-RP3D7BUT.js.map +1 -0
  405. package/dist/options-FXND5P2W.js +122 -0
  406. package/dist/options-FXND5P2W.js.map +1 -0
  407. package/dist/output-SR4DN3A4.js +24 -0
  408. package/dist/page-FS76L5WU.js +105 -0
  409. package/dist/pages-INMNJSX2.js +66 -0
  410. package/dist/performance-53D43XVZ.js +24 -0
  411. package/dist/pinterest-JMHFPNVW.js +96 -0
  412. package/dist/pixels-K6ZD7SXV.js +60 -0
  413. package/dist/pixels-XPBBJYE3.js +108 -0
  414. package/dist/plan-45ESBYZA.js +207 -0
  415. package/dist/plan-45ESBYZA.js.map +1 -0
  416. package/dist/preview-KXSNG3BS.js +169 -0
  417. package/dist/profile-I4IXWBAQ.js +159 -0
  418. package/dist/profile-I4IXWBAQ.js.map +1 -0
  419. package/dist/promoted-tweet-writes-I6HVQRDB.js +180 -0
  420. package/dist/promoted-tweets-YAQ5ZUXI.js +119 -0
  421. package/dist/properties-NYNEONHI.js +101 -0
  422. package/dist/publish-Z5DVKZSG.js +322 -0
  423. package/dist/query-MSZPOHFL.js +61 -0
  424. package/dist/query-RK2TFMBI.js +236 -0
  425. package/dist/query-TWNH6GV7.js +247 -0
  426. package/dist/questionnaire-CNXN2TUZ.js +93 -0
  427. package/dist/questionnaire-CNXN2TUZ.js.map +1 -0
  428. package/dist/read-2AGRYWXU.js +141 -0
  429. package/dist/read-2AGRYWXU.js.map +1 -0
  430. package/dist/reddit-6DQTBTO6.js +26 -0
  431. package/dist/refresh-TP2TOGS6.js +94 -0
  432. package/dist/release-PHQEZ2ZX.js +60 -0
  433. package/dist/relevant-pages-ORVFFVAM.js +99 -0
  434. package/dist/remove-ETLMMDEA.js +48 -0
  435. package/dist/remove-KTBM5YSH.js +50 -0
  436. package/dist/reopen-OURQR6U7.js +63 -0
  437. package/dist/rerun-HGCVZ3D4.js +84 -0
  438. package/dist/rerun-HGCVZ3D4.js.map +1 -0
  439. package/dist/research-P23YBKS3.js +62 -0
  440. package/dist/research-WCNWT5Y5.js +262 -0
  441. package/dist/reset-2NCAWWN4.js +54 -0
  442. package/dist/reset-65R2CUB5.js +54 -0
  443. package/dist/resolve-65FKZ23N.js +121 -0
  444. package/dist/retry-P5K6LE6K.js +60 -0
  445. package/dist/retry-UIPDQJ5F.js +62 -0
  446. package/dist/retry-failed-QMWQ6TRL.js +45 -0
  447. package/dist/run-NDMEYUOI.js +59 -0
  448. package/dist/run-OP3T4TCF.js +65 -0
  449. package/dist/scaffold-ad-A5MWIOQJ.js +1548 -0
  450. package/dist/scaffold-ad-A5MWIOQJ.js.map +1 -0
  451. package/dist/scaffold-static-ad-MFPDXR6J.js +971 -0
  452. package/dist/scaffold-static-ad-MFPDXR6J.js.map +1 -0
  453. package/dist/scaffold-video-N6TY36I3.js +872 -0
  454. package/dist/scaffold-video-N6TY36I3.js.map +1 -0
  455. package/dist/schedule-6D667AXB.js +61 -0
  456. package/dist/schedule-KXLQVCZW.js +66 -0
  457. package/dist/scheduled-agents-LYWEX4PU.js +49 -0
  458. package/dist/schema-5HZIAHY3.js +132 -0
  459. package/dist/schema-5HZIAHY3.js.map +1 -0
  460. package/dist/schema-CCFLFAOY.js +63 -0
  461. package/dist/scrape-DBZQFIW7.js +2241 -0
  462. package/dist/screenshot-MPFANYIH.js +102 -0
  463. package/dist/search-4AANIUUL.js +91 -0
  464. package/dist/search-EMJABZYF.js +224 -0
  465. package/dist/search-HQDN7DOF.js +174 -0
  466. package/dist/search-OVHC4CRQ.js +26 -0
  467. package/dist/search-YSGZRANA.js +92 -0
  468. package/dist/search-copy-E3EVO7YT.js +168 -0
  469. package/dist/search-copy-E3EVO7YT.js.map +1 -0
  470. package/dist/seeds-XTBVEHSF.js +101 -0
  471. package/dist/seeds-XTBVEHSF.js.map +1 -0
  472. package/dist/select-C6BKHB4B.js +94 -0
  473. package/dist/sends-HXN5HSF6.js +309 -0
  474. package/dist/sequences-FRK76ZQV.js +146 -0
  475. package/dist/set-prompt-AOSHNBFC.js +185 -0
  476. package/dist/set-prompt-AOSHNBFC.js.map +1 -0
  477. package/dist/setup-links-BM2GLSSO.js +141 -0
  478. package/dist/shared-EH5ZTQXC.js +31 -0
  479. package/dist/site-3PEJYQJW.js +177 -0
  480. package/dist/sitemaps-7KHY2KXI.js +87 -0
  481. package/dist/sites-6B76JW6C.js +101 -0
  482. package/dist/skills-SCTT3LCM.js +47 -0
  483. package/dist/sources-ODJBHNGY.js +30 -0
  484. package/dist/sources-ZTLMXFHK.js +454 -0
  485. package/dist/sources-ZTLMXFHK.js.map +1 -0
  486. package/dist/stale-2O54QXY2.js +63 -0
  487. package/dist/stats-4NBOAOR2.js +34 -0
  488. package/dist/status-NE5OBM4B.js +62 -0
  489. package/dist/sticker-NLXBIOBO.js +94 -0
  490. package/dist/stock-F3SA4VHV.js +179 -0
  491. package/dist/studio-ZPDIOFKL.js +49 -0
  492. package/dist/sync-5GJNZDGZ.js +54 -0
  493. package/dist/sync-FCNFXTFD.js +265 -0
  494. package/dist/sync-YXCZ3DHY.js +54 -0
  495. package/dist/sync-definition-IL6Z4ZI7.js +52 -0
  496. package/dist/sync-definition-IL6Z4ZI7.js.map +1 -0
  497. package/dist/tag-manager-YM4Q3CZT.js +43 -0
  498. package/dist/tags-456UOYJU.js +26 -0
  499. package/dist/tags-5YPYHV5V.js +20 -0
  500. package/dist/tags-HXMHEHG2.js +224 -0
  501. package/dist/tags-K34666RY.js +20 -0
  502. package/dist/tags-NB35ISO3.js +20 -0
  503. package/dist/targeting-constants-3CMGPWRI.js +118 -0
  504. package/dist/targeting-criteria-UKQ4WF5C.js +113 -0
  505. package/dist/targets-VQ4BQ657.js +102 -0
  506. package/dist/templates-PMUIOVDX.js +178 -0
  507. package/dist/testimonials-XZCGVD6V.js +32 -0
  508. package/dist/themes-TVXLYJ7Y.js +94 -0
  509. package/dist/themes-TVXLYJ7Y.js.map +1 -0
  510. package/dist/top-companies-VMRIDOOH.js +108 -0
  511. package/dist/translate-F5KR62LF.js +598 -0
  512. package/dist/triggers-2MZX7W6Y.js +141 -0
  513. package/dist/tweets-XWE3VYQ4.js +123 -0
  514. package/dist/unfollow-7U4UBAJX.js +46 -0
  515. package/dist/unlink-AWSNY3QS.js +67 -0
  516. package/dist/unstage-OGB43ZXO.js +95 -0
  517. package/dist/unstage-RQBOQ4DY.js +84 -0
  518. package/dist/update-4KWYHMLS.js +63 -0
  519. package/dist/update-6DKEWM64.js +142 -0
  520. package/dist/update-G6EKHPIF.js +155 -0
  521. package/dist/update-OFV452AC.js +98 -0
  522. package/dist/upload-6CJWMQ24.js +126 -0
  523. package/dist/upload-GUKMQ5MT.js +150 -0
  524. package/dist/upscale-A456MESF.js +109 -0
  525. package/dist/url-options-FGDOVUSI.js +130 -0
  526. package/dist/url-options-FGDOVUSI.js.map +1 -0
  527. package/dist/url-params-OE3UMYMM.js +98 -0
  528. package/dist/use-HBVKVT5S.js +95 -0
  529. package/dist/validate-ZCUZV3L4.js +88 -0
  530. package/dist/validate-ZCUZV3L4.js.map +1 -0
  531. package/dist/variant-HULP57YI.js +338 -0
  532. package/dist/videos-ION7UT3M.js +39 -0
  533. package/dist/view-GCDEJZII.js +121 -0
  534. package/dist/viewer-check-UKYFBFMY.js +68 -0
  535. package/dist/viewer-check-UKYFBFMY.js.map +1 -0
  536. package/dist/web-CCVD6UZ4.js +140 -0
  537. package/dist/winners-WSMWC4M5.js +113 -0
  538. package/dist/winners-WSMWC4M5.js.map +1 -0
  539. package/dist/winning-ads-UCSSFEXD.js +84 -0
  540. package/dist/winning-ads-UCSSFEXD.js.map +1 -0
  541. package/dist/write-commands-47OP673X.js +713 -0
  542. package/dist/write-commands-IJ5IFHS6.js +737 -0
  543. package/dist/write-commands-NNVDWBLG.js +1015 -0
  544. package/dist/write-commands-OBMIVFZJ.js +206 -0
  545. package/dist/x-U32DT24S.js +47 -0
  546. package/package.json +2 -2
  547. package/dist/account-2ZMZFPIU.js +0 -79
  548. package/dist/account-F6MHQ64I.js +0 -80
  549. package/dist/account-IEVEOFIK.js +0 -49
  550. package/dist/account-writes-ISE4U2FQ.js +0 -66
  551. package/dist/accounts-4CDRK4S4.js +0 -75
  552. package/dist/accounts-5QDKBZMH.js +0 -115
  553. package/dist/accounts-KYJO3JC6.js +0 -114
  554. package/dist/accounts-RHGN5WMU.js +0 -611
  555. package/dist/accounts-VINHZRWA.js +0 -77
  556. package/dist/actions-5F4ZP6M4.js +0 -55
  557. package/dist/active-entities-YUSOUR5M.js +0 -103
  558. package/dist/activities-ZVQOBHZH.js +0 -74
  559. package/dist/ad-group-writes-UU5NNKSO.js +0 -170
  560. package/dist/ad-groups-CGFXZNIA.js +0 -68
  561. package/dist/ad-writes-NALDYWOR.js +0 -174
  562. package/dist/add-577QWMCF.js +0 -97
  563. package/dist/add-CUWAW7KG.js +0 -105
  564. package/dist/add-KBPMSK2P.js +0 -104
  565. package/dist/add-OGH4DZZ5.js +0 -280
  566. package/dist/add-OGH4DZZ5.js.map +0 -1
  567. package/dist/ads-56OWZBXZ.js +0 -40
  568. package/dist/ads-H7GH7A26.js +0 -113
  569. package/dist/ads-PV7GZXPR.js +0 -77
  570. package/dist/adsets-H7QT42U6.js +0 -176
  571. package/dist/advertisers-PM4WPG4N.js +0 -120
  572. package/dist/advertisers-YMHPZYNF.js +0 -111
  573. package/dist/advertisers-YMHPZYNF.js.map +0 -1
  574. package/dist/analytics-5FALU2GL.js +0 -433
  575. package/dist/analytics-JVZKN735.js +0 -1958
  576. package/dist/analytics-JVZKN735.js.map +0 -1
  577. package/dist/animate-FWWHSYPL.js +0 -480
  578. package/dist/assign-KLYZ6USE.js +0 -77
  579. package/dist/audience-size-JHB42DB4.js +0 -94
  580. package/dist/audiences-HFRVIE2X.js +0 -85
  581. package/dist/audiences-JACGRBNN.js +0 -78
  582. package/dist/audiences-VEKGLWBG.js +0 -268
  583. package/dist/audit-5XH7WZIM.js +0 -151
  584. package/dist/audit-AD4ZZNJN.js +0 -88
  585. package/dist/autocomplete-7F3PZLEY.js +0 -111
  586. package/dist/avatars-N4SRNQI7.js +0 -38
  587. package/dist/bid-pricing-VYLVGU26.js +0 -99
  588. package/dist/brand-ASBS2HZM.js +0 -22
  589. package/dist/brief-JSZKDPGU.js +0 -477
  590. package/dist/brief-JSZKDPGU.js.map +0 -1
  591. package/dist/businesses-JBDQZZIG.js +0 -53
  592. package/dist/campaign-groups-ATE2DE4V.js +0 -95
  593. package/dist/campaign-writes-ETT57KLQ.js +0 -165
  594. package/dist/campaign-writes-SX52CJYW.js +0 -170
  595. package/dist/campaigns-FGBAS6AZ.js +0 -107
  596. package/dist/campaigns-J6VZBIV6.js +0 -109
  597. package/dist/campaigns-WBEG5QA4.js +0 -110
  598. package/dist/campaigns-X3DPCCSN.js +0 -76
  599. package/dist/canvas-K7IN7HLO.js +0 -46
  600. package/dist/canvas-K7IN7HLO.js.map +0 -1
  601. package/dist/capabilities-RDAERPYY.js +0 -144
  602. package/dist/cards-4477BFEV.js +0 -85
  603. package/dist/catalog-MENVHL5U.js +0 -65
  604. package/dist/catalog-MENVHL5U.js.map +0 -1
  605. package/dist/catalogs-G3YEVG6S.js +0 -128
  606. package/dist/changes-TP7ZZHB3.js +0 -135
  607. package/dist/chatgpt-QNUN63YS.js +0 -47
  608. package/dist/chats-YIAQGQ3X.js +0 -262
  609. package/dist/chunk-2GK33EJV.js +0 -382
  610. package/dist/chunk-2TK4DEOE.js +0 -74
  611. package/dist/chunk-35XWJEWH.js +0 -274
  612. package/dist/chunk-3CWL2LY4.js +0 -206
  613. package/dist/chunk-4NBVGARW.js +0 -1079
  614. package/dist/chunk-4NBVGARW.js.map +0 -1
  615. package/dist/chunk-4NDCTLI5.js +0 -191
  616. package/dist/chunk-5ARG3CQG.js +0 -141
  617. package/dist/chunk-5ARG3CQG.js.map +0 -1
  618. package/dist/chunk-5R5ADJ47.js +0 -2880
  619. package/dist/chunk-5R5ADJ47.js.map +0 -1
  620. package/dist/chunk-5Z2KSVIV.js +0 -67
  621. package/dist/chunk-65RIB7A6.js +0 -592
  622. package/dist/chunk-6B7VKFS4.js +0 -172
  623. package/dist/chunk-6DB2B3GF.js +0 -175
  624. package/dist/chunk-6G5K6ZC6.js +0 -46
  625. package/dist/chunk-75FDTDLH.js +0 -96
  626. package/dist/chunk-7OFNN4CT.js +0 -58
  627. package/dist/chunk-7SDFKGQ4.js +0 -363
  628. package/dist/chunk-ACANMASG.js +0 -19
  629. package/dist/chunk-ALTBBAYU.js +0 -96
  630. package/dist/chunk-ANCSKUWI.js +0 -433
  631. package/dist/chunk-AWMFUGVX.js +0 -160
  632. package/dist/chunk-BA7FDXQC.js +0 -197
  633. package/dist/chunk-BNCW67EM.js +0 -534
  634. package/dist/chunk-BNCW67EM.js.map +0 -1
  635. package/dist/chunk-BSC33FLJ.js +0 -217
  636. package/dist/chunk-BSC33FLJ.js.map +0 -1
  637. package/dist/chunk-C6U6UDHJ.js +0 -106
  638. package/dist/chunk-CHSNHVYF.js +0 -3182
  639. package/dist/chunk-CHSNHVYF.js.map +0 -1
  640. package/dist/chunk-CYEO5ZIO.js +0 -133
  641. package/dist/chunk-CYEO5ZIO.js.map +0 -1
  642. package/dist/chunk-DKGTQSLR.js +0 -310
  643. package/dist/chunk-DKGTQSLR.js.map +0 -1
  644. package/dist/chunk-DR34ZTWD.js +0 -207
  645. package/dist/chunk-E4MDJBLO.js +0 -163
  646. package/dist/chunk-E4MDJBLO.js.map +0 -1
  647. package/dist/chunk-EFSYTROP.js +0 -94
  648. package/dist/chunk-EH4C4CZK.js +0 -455
  649. package/dist/chunk-F2S5BLPE.js +0 -97
  650. package/dist/chunk-FXED3VZK.js +0 -174
  651. package/dist/chunk-G7UTTEBS.js +0 -337
  652. package/dist/chunk-GATKK4RJ.js +0 -440
  653. package/dist/chunk-GATKK4RJ.js.map +0 -1
  654. package/dist/chunk-GIJT3A5U.js +0 -166
  655. package/dist/chunk-GIJT3A5U.js.map +0 -1
  656. package/dist/chunk-GX6VAHY7.js +0 -830
  657. package/dist/chunk-GX6VAHY7.js.map +0 -1
  658. package/dist/chunk-H26L3OQY.js +0 -42
  659. package/dist/chunk-HIPDMQZ6.js +0 -136
  660. package/dist/chunk-HQSCJYZO.js +0 -26
  661. package/dist/chunk-HZ5DR5MX.js +0 -51
  662. package/dist/chunk-I4NEHDSD.js +0 -813
  663. package/dist/chunk-I4NEHDSD.js.map +0 -1
  664. package/dist/chunk-IFWP3ZDO.js +0 -215
  665. package/dist/chunk-IFWP3ZDO.js.map +0 -1
  666. package/dist/chunk-IM52NHGL.js +0 -390
  667. package/dist/chunk-IM52NHGL.js.map +0 -1
  668. package/dist/chunk-JERXV5A3.js +0 -26
  669. package/dist/chunk-JF47LEPU.js +0 -5163
  670. package/dist/chunk-JF47LEPU.js.map +0 -1
  671. package/dist/chunk-K3PN7TN5.js +0 -84
  672. package/dist/chunk-KBP7WJQB.js +0 -446
  673. package/dist/chunk-KBP7WJQB.js.map +0 -1
  674. package/dist/chunk-KLBTXETO.js +0 -23992
  675. package/dist/chunk-KLBTXETO.js.map +0 -1
  676. package/dist/chunk-KLNKEVIY.js +0 -136
  677. package/dist/chunk-KNWHUMVZ.js +0 -4381
  678. package/dist/chunk-KNWHUMVZ.js.map +0 -1
  679. package/dist/chunk-KNY76UGC.js +0 -84
  680. package/dist/chunk-KQTYTCKQ.js +0 -98
  681. package/dist/chunk-LERTEZST.js +0 -28
  682. package/dist/chunk-LERTEZST.js.map +0 -1
  683. package/dist/chunk-LIQ4SQ2T.js +0 -150
  684. package/dist/chunk-LS5MTRFI.js +0 -106
  685. package/dist/chunk-LW4VSTL5.js +0 -304
  686. package/dist/chunk-LW4VSTL5.js.map +0 -1
  687. package/dist/chunk-LZ73CZGP.js +0 -188
  688. package/dist/chunk-MADAAZZV.js +0 -169
  689. package/dist/chunk-MELOSESI.js +0 -20
  690. package/dist/chunk-MELOSESI.js.map +0 -1
  691. package/dist/chunk-MLU6STIN.js +0 -66
  692. package/dist/chunk-MZL4H5PY.js +0 -225
  693. package/dist/chunk-NAWWC5I3.js +0 -454
  694. package/dist/chunk-NAWWC5I3.js.map +0 -1
  695. package/dist/chunk-NDXBU22S.js +0 -6145
  696. package/dist/chunk-NDXBU22S.js.map +0 -1
  697. package/dist/chunk-NE4F3FHN.js +0 -1854
  698. package/dist/chunk-NE4F3FHN.js.map +0 -1
  699. package/dist/chunk-NU7JSWVA.js +0 -946
  700. package/dist/chunk-NU7JSWVA.js.map +0 -1
  701. package/dist/chunk-OTFHEHIU.js +0 -1706
  702. package/dist/chunk-OTFHEHIU.js.map +0 -1
  703. package/dist/chunk-PBA3YCZA.js +0 -76
  704. package/dist/chunk-PDTB5EX6.js +0 -57
  705. package/dist/chunk-PWGWMIIJ.js +0 -25
  706. package/dist/chunk-QSN5MZGS.js +0 -74
  707. package/dist/chunk-RPUSTYHL.js +0 -170
  708. package/dist/chunk-RX6F3GEA.js +0 -610
  709. package/dist/chunk-SB3GZFCV.js +0 -622
  710. package/dist/chunk-SB3GZFCV.js.map +0 -1
  711. package/dist/chunk-SSJK7FEV.js +0 -2886
  712. package/dist/chunk-SSJK7FEV.js.map +0 -1
  713. package/dist/chunk-STIB5DR5.js +0 -56
  714. package/dist/chunk-T3BDNJIX.js +0 -494
  715. package/dist/chunk-TD2P4HBP.js +0 -55
  716. package/dist/chunk-TEINLN64.js +0 -649
  717. package/dist/chunk-TEINLN64.js.map +0 -1
  718. package/dist/chunk-TIOQ7ZFQ.js +0 -496
  719. package/dist/chunk-TIOQ7ZFQ.js.map +0 -1
  720. package/dist/chunk-U3HAMW5W.js +0 -133
  721. package/dist/chunk-U6SYRIOB.js +0 -486
  722. package/dist/chunk-UC6BWM5J.js +0 -159
  723. package/dist/chunk-ULJ5RFOV.js +0 -76
  724. package/dist/chunk-ULJ5RFOV.js.map +0 -1
  725. package/dist/chunk-VAISMQQB.js +0 -346
  726. package/dist/chunk-VAJBWA2U.js +0 -75
  727. package/dist/chunk-VB6WJJR3.js +0 -1830
  728. package/dist/chunk-VDHQJ6HD.js +0 -23
  729. package/dist/chunk-VFIOJD5M.js +0 -309
  730. package/dist/chunk-VMDAXFRI.js +0 -111
  731. package/dist/chunk-VVZBBKRC.js +0 -296
  732. package/dist/chunk-W3B4BHQU.js +0 -31
  733. package/dist/chunk-W3B4BHQU.js.map +0 -1
  734. package/dist/chunk-W3ZHJJVT.js +0 -139
  735. package/dist/chunk-WNFIJAUO.js +0 -98
  736. package/dist/chunk-WS2GMOSG.js +0 -74
  737. package/dist/chunk-X7ZODEXJ.js +0 -36
  738. package/dist/chunk-X7ZODEXJ.js.map +0 -1
  739. package/dist/chunk-XBOK23HI.js +0 -214
  740. package/dist/chunk-XBOK23HI.js.map +0 -1
  741. package/dist/chunk-XCM6XWOB.js +0 -417
  742. package/dist/chunk-XCM6XWOB.js.map +0 -1
  743. package/dist/chunk-XL3BMSYG.js +0 -125
  744. package/dist/chunk-XMD4SHFI.js +0 -60
  745. package/dist/chunk-Y6QAJNKP.js +0 -1411
  746. package/dist/chunk-Y6QAJNKP.js.map +0 -1
  747. package/dist/chunk-YBMVHGY3.js +0 -333
  748. package/dist/chunk-YBP7O5P4.js +0 -103
  749. package/dist/chunk-YC2TQ3VC.js +0 -297
  750. package/dist/chunk-YPZYOJP6.js +0 -6664
  751. package/dist/chunk-YPZYOJP6.js.map +0 -1
  752. package/dist/chunk-ZJWUBJYQ.js +0 -204
  753. package/dist/chunk-ZJWUBJYQ.js.map +0 -1
  754. package/dist/chunk-ZPU3WDVK.js +0 -92
  755. package/dist/claim-V4F5GZJK.js +0 -197
  756. package/dist/client-VHN32ZRE.js +0 -19
  757. package/dist/code-YS6ZMGX3.js +0 -76
  758. package/dist/companies-NJGJ7XNN.js +0 -195
  759. package/dist/complete-MGNF5OAK.js +0 -81
  760. package/dist/config-CQN5FHMZ.js +0 -88
  761. package/dist/connect-PJOTRTT4.js +0 -36
  762. package/dist/content-3ZPP4SW2.js +0 -81
  763. package/dist/content-3ZPP4SW2.js.map +0 -1
  764. package/dist/conversation-4DM26FRD.js +0 -93
  765. package/dist/conversion-report-N4HANYOB.js +0 -125
  766. package/dist/conversion-upload-command-TZTHU2CD.js +0 -438
  767. package/dist/conversion-writes-LW4HQKK5.js +0 -120
  768. package/dist/conversions-JGECVZSY.js +0 -135
  769. package/dist/conversions-TS723AZV.js +0 -76
  770. package/dist/countries-ESAKTQAE.js +0 -82
  771. package/dist/create-DSGQFBI7.js +0 -207
  772. package/dist/create-I2KVDTCQ.js +0 -59
  773. package/dist/create-SBQWVLXG.js +0 -130
  774. package/dist/create-WOHPIGBK.js +0 -235
  775. package/dist/creatives-4JGVZQGC.js +0 -182
  776. package/dist/creatives-DWO5KEQC.js +0 -51
  777. package/dist/creatives-PSWCNY7U.js +0 -87
  778. package/dist/credentials-UULYCN2L.js +0 -1055
  779. package/dist/credentials-UULYCN2L.js.map +0 -1
  780. package/dist/critique-NGMZK5LX.js +0 -213
  781. package/dist/critique-TIZJ5GFM.js +0 -1449
  782. package/dist/crm-2WAR565U.js +0 -224
  783. package/dist/crm-VDXUO2YU.js +0 -318
  784. package/dist/crop-2J4RKJ6B.js +0 -113
  785. package/dist/currency-XCGKQ7FE.js +0 -88
  786. package/dist/custom-conversions-6P555U2K.js +0 -125
  787. package/dist/customers-ATENMXDO.js +0 -56
  788. package/dist/delete-3AV3ARMX.js +0 -71
  789. package/dist/delete-A5XD52K4.js +0 -69
  790. package/dist/delete-AVMZYNVT.js +0 -54
  791. package/dist/delete-H744GNS4.js +0 -63
  792. package/dist/delete-MRM2S4Z5.js +0 -71
  793. package/dist/delete-OEYPFATY.js +0 -66
  794. package/dist/demographics-M5LJF3RZ.js +0 -138
  795. package/dist/describe-6NVOWIBE.js +0 -97
  796. package/dist/describe-P3PPIQME.js +0 -97
  797. package/dist/dimensions-EYAYO27I.js +0 -101
  798. package/dist/discard-72I6SM7G.js +0 -66
  799. package/dist/discover-BJPZNXUQ.js +0 -172
  800. package/dist/domain-R4EIZD2W.js +0 -98
  801. package/dist/download-7T6HIJKD.js +0 -299
  802. package/dist/draft-34C3F5U4.js +0 -217
  803. package/dist/draft-BBFJNZ5X.js +0 -328
  804. package/dist/draft-BGUJDHXR.js +0 -103
  805. package/dist/draft-BV2QRPZ4.js +0 -107
  806. package/dist/draft-BV2QRPZ4.js.map +0 -1
  807. package/dist/draft-KIBMVKSR.js +0 -100
  808. package/dist/draft-THPZFASM.js +0 -281
  809. package/dist/draft-YDY2Q2K6.js +0 -233
  810. package/dist/draft-YYYRWF7M.js +0 -306
  811. package/dist/env-KIP2J2UB.js +0 -43
  812. package/dist/experiment-LKK77YAN.js +0 -1377
  813. package/dist/experiment-LKK77YAN.js.map +0 -1
  814. package/dist/export-JQRMBJ7D.js +0 -168
  815. package/dist/extract-7QKLME7Z.js +0 -113
  816. package/dist/facets-F2H52MS4.js +0 -114
  817. package/dist/favorites-NSGF4OV5.js +0 -178
  818. package/dist/feed-RV4KPPXM.js +0 -157
  819. package/dist/feed-RV4KPPXM.js.map +0 -1
  820. package/dist/feedback-IQKKT4MC.js +0 -66
  821. package/dist/feedback-record-UZV4Y7UD.js +0 -175
  822. package/dist/fetch-XF76JABV.js +0 -139
  823. package/dist/fetch-ZUAZPLAE.js +0 -176
  824. package/dist/find-OTDIX6V4.js +0 -134
  825. package/dist/fit-2CA4JH7N.js +0 -45
  826. package/dist/flows-CWXCXEUD.js +0 -244
  827. package/dist/flows-CWXCXEUD.js.map +0 -1
  828. package/dist/follow-FN7LV3WV.js +0 -82
  829. package/dist/follow-FN7LV3WV.js.map +0 -1
  830. package/dist/follow-competitors-MKXFHLXB.js +0 -131
  831. package/dist/follow-competitors-MKXFHLXB.js.map +0 -1
  832. package/dist/following-RKC2FLHI.js +0 -109
  833. package/dist/following-RKC2FLHI.js.map +0 -1
  834. package/dist/fonts-F2XUCIIW.js +0 -34
  835. package/dist/forecast-IDKJYM2B.js +0 -104
  836. package/dist/funding-NYO65IMT.js +0 -85
  837. package/dist/funnel-RLGQGYKO.js +0 -837
  838. package/dist/funnel-RLGQGYKO.js.map +0 -1
  839. package/dist/ga4-UDQ2HA2J.js +0 -55
  840. package/dist/generate-MMBYB44G.js +0 -262
  841. package/dist/get-3L6W3E3T.js +0 -59
  842. package/dist/get-6WEYKOY6.js +0 -63
  843. package/dist/get-C6UQ22HH.js +0 -54
  844. package/dist/get-C6UQ22HH.js.map +0 -1
  845. package/dist/get-EEUR6SAW.js +0 -78
  846. package/dist/get-EEUR6SAW.js.map +0 -1
  847. package/dist/get-P743RPSI.js +0 -63
  848. package/dist/get-XN5ZGDIK.js +0 -61
  849. package/dist/get-YIHTAMRT.js +0 -92
  850. package/dist/gif-53ULFVLR.js +0 -94
  851. package/dist/google-35GDU3G3.js +0 -1872
  852. package/dist/google-35GDU3G3.js.map +0 -1
  853. package/dist/google-KTO3PLEU.js +0 -136
  854. package/dist/google-ads-Q37I2D5P.js +0 -195
  855. package/dist/group-EFZ3AJIE.js +0 -43
  856. package/dist/group-GKWCCX66.js +0 -43
  857. package/dist/gsc-P3QYGDV2.js +0 -30
  858. package/dist/history-4II5QA4B.js +0 -133
  859. package/dist/history-DBIEYQHY.js +0 -67
  860. package/dist/hubspot-TTITJFBO.js +0 -779
  861. package/dist/icon-I43F77FV.js +0 -137
  862. package/dist/ideas-V4Q6JDKV.js +0 -32
  863. package/dist/images-SP5REF6E.js +0 -90
  864. package/dist/improve-BCCU5AS6.js +0 -86
  865. package/dist/ingest-574GIFAR.js +0 -107
  866. package/dist/ingest-IC4T76W6.js +0 -23
  867. package/dist/insights-NZWSJKU4.js +0 -423
  868. package/dist/insights-ZIU6FJMS.js +0 -122
  869. package/dist/inspect-ATHYY6A2.js +0 -189
  870. package/dist/inspiration-P265QJ2H.js +0 -53
  871. package/dist/intent-E3UIVZBN.js +0 -95
  872. package/dist/job-L7RJZMSG.js +0 -202
  873. package/dist/job-create-JUDAN52O.js +0 -109
  874. package/dist/job-status-U43WE3RJ.js +0 -74
  875. package/dist/keep-55CPC7DG.js +0 -78
  876. package/dist/keyword-gap-BG6M665A.js +0 -130
  877. package/dist/keyword-metrics-J4UPUDN7.js +0 -197
  878. package/dist/keywords-for-site-MWADFEO2.js +0 -128
  879. package/dist/landing-R6DN7XLK.js +0 -28
  880. package/dist/languages-HORKPDNH.js +0 -40
  881. package/dist/languages-JSGWCC7Z.js +0 -55
  882. package/dist/layerize-RPD6SNP6.js +0 -190
  883. package/dist/leads-7EVHMNUF.js +0 -293
  884. package/dist/leads-JM6HUERX.js +0 -90
  885. package/dist/learn-LGS2F5TR.js +0 -203
  886. package/dist/library-ARKRLCNJ.js +0 -109
  887. package/dist/lighthouse-6ZC45E53.js +0 -75
  888. package/dist/line-item-writes-KUYEXSIH.js +0 -208
  889. package/dist/line-items-GIWLP3FL.js +0 -103
  890. package/dist/link-PVM7XJQI.js +0 -64
  891. package/dist/linkedin-WX54EAX6.js +0 -1008
  892. package/dist/list-4ZKQZBCL.js +0 -151
  893. package/dist/list-7MVBXOJT.js +0 -51
  894. package/dist/list-A5UCIR2J.js +0 -65
  895. package/dist/list-AL7N6X2P.js +0 -50
  896. package/dist/list-LI4OGQFW.js +0 -57
  897. package/dist/list-MCEFXC6L.js +0 -63
  898. package/dist/list-P7NAFN6J.js +0 -76
  899. package/dist/list-WR7QYTON.js +0 -303
  900. package/dist/locations-74TPQWAT.js +0 -67
  901. package/dist/locations-J4G5RNPH.js +0 -40
  902. package/dist/log-U6IWZGOF.js +0 -92
  903. package/dist/logo-2IP663QO.js +0 -18
  904. package/dist/lookup-XK45W2SH.js +0 -22
  905. package/dist/make-RXFHEGUI.js +0 -593
  906. package/dist/make-RXFHEGUI.js.map +0 -1
  907. package/dist/map-TWL7T4KP.js +0 -404
  908. package/dist/map-TWL7T4KP.js.map +0 -1
  909. package/dist/mcp-HVAVJGGS.js +0 -476
  910. package/dist/mcp-HVAVJGGS.js.map +0 -1
  911. package/dist/media-6CQYG4UY.js +0 -89
  912. package/dist/media-M7E6V2XU.js +0 -15
  913. package/dist/media-sources-JWGO23BZ.js +0 -32
  914. package/dist/members-5FAW4YE7.js +0 -44
  915. package/dist/meta-EZ4SY25M.js +0 -69
  916. package/dist/metrics-SQDJ5NQO.js +0 -152
  917. package/dist/models-7U3GRYHF.js +0 -155
  918. package/dist/normalize-GW4GZNVY.js +0 -138
  919. package/dist/normalize-GW4GZNVY.js.map +0 -1
  920. package/dist/normalize-ICQF2AST.js +0 -806
  921. package/dist/options-NSUCENLU.js +0 -121
  922. package/dist/options-NSUCENLU.js.map +0 -1
  923. package/dist/output-RAH3TSIL.js +0 -24
  924. package/dist/page-GS3WLT2C.js +0 -105
  925. package/dist/pages-FXYQLHSJ.js +0 -66
  926. package/dist/performance-FGCDWHMC.js +0 -24
  927. package/dist/pinterest-AUH7WBA7.js +0 -96
  928. package/dist/pixels-45A55MOP.js +0 -60
  929. package/dist/pixels-ZFF4BGUH.js +0 -108
  930. package/dist/preview-AD4GKYIA.js +0 -169
  931. package/dist/promoted-tweet-writes-BPWTDESL.js +0 -180
  932. package/dist/promoted-tweets-OS3NHYVE.js +0 -119
  933. package/dist/properties-L2XIYQDS.js +0 -101
  934. package/dist/publish-SXZEWBVJ.js +0 -322
  935. package/dist/query-IEZRY6HV.js +0 -1341
  936. package/dist/query-IEZRY6HV.js.map +0 -1
  937. package/dist/query-SGGBCHTF.js +0 -236
  938. package/dist/query-VTGVZQIO.js +0 -247
  939. package/dist/read-LSF7DYTG.js +0 -140
  940. package/dist/read-LSF7DYTG.js.map +0 -1
  941. package/dist/reddit-TF6K37SB.js +0 -26
  942. package/dist/refresh-APVDWXRZ.js +0 -94
  943. package/dist/release-32SEJU4L.js +0 -60
  944. package/dist/relevant-pages-OWMNUCP7.js +0 -99
  945. package/dist/remove-6LGGKMLJ.js +0 -48
  946. package/dist/remove-U64GTHLQ.js +0 -50
  947. package/dist/reopen-5VS233SF.js +0 -63
  948. package/dist/rerun-7Z45QOOO.js +0 -85
  949. package/dist/rerun-7Z45QOOO.js.map +0 -1
  950. package/dist/research-O7CJV5IS.js +0 -62
  951. package/dist/research-QYSQ6LW4.js +0 -262
  952. package/dist/reset-22FC7BXQ.js +0 -54
  953. package/dist/reset-47B5VPT4.js +0 -54
  954. package/dist/resolve-7KQGVTQT.js +0 -121
  955. package/dist/retry-J5UVLS72.js +0 -62
  956. package/dist/retry-UJ5UF4BM.js +0 -60
  957. package/dist/retry-failed-6HXPUVXJ.js +0 -45
  958. package/dist/run-SI4FA32F.js +0 -65
  959. package/dist/run-TFLFBQU2.js +0 -60
  960. package/dist/scaffold-ad-SEXNE2K6.js +0 -1549
  961. package/dist/scaffold-ad-SEXNE2K6.js.map +0 -1
  962. package/dist/scaffold-static-ad-VBOL6CLN.js +0 -966
  963. package/dist/scaffold-static-ad-VBOL6CLN.js.map +0 -1
  964. package/dist/scaffold-video-Z37MIBDI.js +0 -873
  965. package/dist/scaffold-video-Z37MIBDI.js.map +0 -1
  966. package/dist/schedule-52ZM4KRQ.js +0 -61
  967. package/dist/schedule-O2K6M43V.js +0 -66
  968. package/dist/scheduled-agents-PCWCQAKP.js +0 -49
  969. package/dist/schema-6GR77VJG.js +0 -63
  970. package/dist/schema-FY6ORDXZ.js +0 -129
  971. package/dist/schema-FY6ORDXZ.js.map +0 -1
  972. package/dist/scrape-ETAMW43A.js +0 -2241
  973. package/dist/screenshot-YCQF25ZB.js +0 -102
  974. package/dist/search-742XSULP.js +0 -224
  975. package/dist/search-MEEM4D3W.js +0 -92
  976. package/dist/search-NS7XNRZC.js +0 -174
  977. package/dist/search-OQNGSMUH.js +0 -91
  978. package/dist/search-UO5KJTYS.js +0 -26
  979. package/dist/seeds-N6FF5S4T.js +0 -101
  980. package/dist/seeds-N6FF5S4T.js.map +0 -1
  981. package/dist/select-4XCYVV2G.js +0 -94
  982. package/dist/sends-WGJVQUMF.js +0 -309
  983. package/dist/sequences-OIPVR7JL.js +0 -146
  984. package/dist/set-prompt-TRJBYA3D.js +0 -186
  985. package/dist/set-prompt-TRJBYA3D.js.map +0 -1
  986. package/dist/setup-links-V3URI7DL.js +0 -141
  987. package/dist/shared-HJDFNID4.js +0 -31
  988. package/dist/site-WIQ7SSU3.js +0 -177
  989. package/dist/sitemaps-POPZJTAX.js +0 -87
  990. package/dist/sites-262H6LM4.js +0 -101
  991. package/dist/skills-6TQZLIMP.js +0 -47
  992. package/dist/sources-DWJXOLEH.js +0 -421
  993. package/dist/sources-DWJXOLEH.js.map +0 -1
  994. package/dist/sources-L453U5MT.js +0 -30
  995. package/dist/stale-6OVG6VME.js +0 -63
  996. package/dist/stats-NNXZMPZR.js +0 -34
  997. package/dist/status-WXWU54WR.js +0 -62
  998. package/dist/sticker-4KMBSMP5.js +0 -94
  999. package/dist/stock-2YCDN3N6.js +0 -179
  1000. package/dist/studio-C5K3YX3P.js +0 -49
  1001. package/dist/sync-CDZUTGV3.js +0 -54
  1002. package/dist/sync-CF7FVUQJ.js +0 -54
  1003. package/dist/sync-ZSNUBYPM.js +0 -265
  1004. package/dist/sync-definition-BAJQUBE3.js +0 -53
  1005. package/dist/tag-manager-DYZUOIAS.js +0 -43
  1006. package/dist/tags-6RY23XOG.js +0 -20
  1007. package/dist/tags-BHFQWNPL.js +0 -224
  1008. package/dist/tags-SG3NVC3J.js +0 -26
  1009. package/dist/tags-VN5HTL35.js +0 -20
  1010. package/dist/tags-WR6PDIDR.js +0 -20
  1011. package/dist/targeting-constants-XJ2VOW7K.js +0 -118
  1012. package/dist/targeting-criteria-5EXP2NXF.js +0 -113
  1013. package/dist/targets-WUVEJPSD.js +0 -102
  1014. package/dist/templates-LOJQX2NG.js +0 -178
  1015. package/dist/testimonials-6M5DXORT.js +0 -32
  1016. package/dist/top-companies-E2OMMPSV.js +0 -108
  1017. package/dist/translate-AW4CUKDA.js +0 -598
  1018. package/dist/triggers-MRXIDCSN.js +0 -141
  1019. package/dist/tweets-ATP3FQAC.js +0 -123
  1020. package/dist/unfollow-CBVPGPF7.js +0 -46
  1021. package/dist/unlink-HNL747YM.js +0 -67
  1022. package/dist/unstage-4ZEULXEQ.js +0 -95
  1023. package/dist/unstage-OL2JDCLK.js +0 -84
  1024. package/dist/update-4KGIT4BF.js +0 -142
  1025. package/dist/update-JPBUF7M2.js +0 -98
  1026. package/dist/update-RTTC3SAK.js +0 -155
  1027. package/dist/update-YNNRX5B2.js +0 -63
  1028. package/dist/upload-L5SYZB3X.js +0 -150
  1029. package/dist/upload-UIXPCSXJ.js +0 -126
  1030. package/dist/upscale-YWRLFU22.js +0 -109
  1031. package/dist/url-options-GGXAL3J4.js +0 -127
  1032. package/dist/url-options-GGXAL3J4.js.map +0 -1
  1033. package/dist/url-params-K47CE7Y5.js +0 -98
  1034. package/dist/use-UT2DIZOG.js +0 -95
  1035. package/dist/validate-TD2BY4VE.js +0 -89
  1036. package/dist/validate-TD2BY4VE.js.map +0 -1
  1037. package/dist/variant-FLZJYGYL.js +0 -338
  1038. package/dist/videos-BP3BKNTY.js +0 -39
  1039. package/dist/view-NPAG66QK.js +0 -121
  1040. package/dist/viewer-check-HFRUJ4ZU.js +0 -69
  1041. package/dist/web-RPSGFN4U.js +0 -140
  1042. package/dist/winners-I5BMATJZ.js +0 -79
  1043. package/dist/winners-I5BMATJZ.js.map +0 -1
  1044. package/dist/winning-ads-WUENRDVJ.js +0 -62
  1045. package/dist/winning-ads-WUENRDVJ.js.map +0 -1
  1046. package/dist/write-commands-4WARNR2T.js +0 -1015
  1047. package/dist/write-commands-ERKVRHTC.js +0 -206
  1048. package/dist/write-commands-TAYGTJEZ.js +0 -737
  1049. package/dist/write-commands-WTRSOSO3.js +0 -713
  1050. package/dist/x-VZCELH3P.js +0 -47
  1051. /package/dist/{account-2ZMZFPIU.js.map → account-JG7QD522.js.map} +0 -0
  1052. /package/dist/{account-F6MHQ64I.js.map → account-V6PB6PA5.js.map} +0 -0
  1053. /package/dist/{account-IEVEOFIK.js.map → account-VLPX7EZT.js.map} +0 -0
  1054. /package/dist/{account-writes-ISE4U2FQ.js.map → account-writes-BGREY7ZL.js.map} +0 -0
  1055. /package/dist/{accounts-KYJO3JC6.js.map → accounts-2FINK5GZ.js.map} +0 -0
  1056. /package/dist/{accounts-4CDRK4S4.js.map → accounts-2UV5Z3Y6.js.map} +0 -0
  1057. /package/dist/{accounts-VINHZRWA.js.map → accounts-3EX2PFJB.js.map} +0 -0
  1058. /package/dist/{accounts-5QDKBZMH.js.map → accounts-G2QT3ZVP.js.map} +0 -0
  1059. /package/dist/{accounts-RHGN5WMU.js.map → accounts-N63J5YTK.js.map} +0 -0
  1060. /package/dist/{actions-5F4ZP6M4.js.map → actions-PA2BPIYO.js.map} +0 -0
  1061. /package/dist/{active-entities-YUSOUR5M.js.map → active-entities-RDXDSMA2.js.map} +0 -0
  1062. /package/dist/{activities-ZVQOBHZH.js.map → activities-RBTU2Q24.js.map} +0 -0
  1063. /package/dist/{ad-group-writes-UU5NNKSO.js.map → ad-group-writes-5NTRJTVE.js.map} +0 -0
  1064. /package/dist/{ad-groups-CGFXZNIA.js.map → ad-groups-4OTAKWUC.js.map} +0 -0
  1065. /package/dist/{ad-writes-NALDYWOR.js.map → ad-writes-T7W3DDKK.js.map} +0 -0
  1066. /package/dist/{add-CUWAW7KG.js.map → add-4VKA4NDH.js.map} +0 -0
  1067. /package/dist/{add-577QWMCF.js.map → add-MQO33HL3.js.map} +0 -0
  1068. /package/dist/{add-KBPMSK2P.js.map → add-QM7ANAVG.js.map} +0 -0
  1069. /package/dist/{ads-H7GH7A26.js.map → ads-IJCFN2N3.js.map} +0 -0
  1070. /package/dist/{ads-56OWZBXZ.js.map → ads-QKMLAPZC.js.map} +0 -0
  1071. /package/dist/{ads-PV7GZXPR.js.map → ads-XYAWONXR.js.map} +0 -0
  1072. /package/dist/{adsets-H7QT42U6.js.map → adsets-DPTIKGTG.js.map} +0 -0
  1073. /package/dist/{advertisers-PM4WPG4N.js.map → advertisers-SZFDOPBQ.js.map} +0 -0
  1074. /package/dist/{analytics-5FALU2GL.js.map → analytics-HFBYIPZ7.js.map} +0 -0
  1075. /package/dist/{animate-FWWHSYPL.js.map → animate-LUKNHCF4.js.map} +0 -0
  1076. /package/dist/{assign-KLYZ6USE.js.map → assign-QCICUD72.js.map} +0 -0
  1077. /package/dist/{audience-size-JHB42DB4.js.map → audience-size-HML4BLHJ.js.map} +0 -0
  1078. /package/dist/{audiences-VEKGLWBG.js.map → audiences-BSABKS5K.js.map} +0 -0
  1079. /package/dist/{audiences-JACGRBNN.js.map → audiences-FWOOSUSJ.js.map} +0 -0
  1080. /package/dist/{audiences-HFRVIE2X.js.map → audiences-VK4M7GLQ.js.map} +0 -0
  1081. /package/dist/{audit-5XH7WZIM.js.map → audit-DUM55J5U.js.map} +0 -0
  1082. /package/dist/{audit-AD4ZZNJN.js.map → audit-JR5R75XK.js.map} +0 -0
  1083. /package/dist/{autocomplete-7F3PZLEY.js.map → autocomplete-VX4PMMLR.js.map} +0 -0
  1084. /package/dist/{avatars-N4SRNQI7.js.map → avatars-5KCRSUJ3.js.map} +0 -0
  1085. /package/dist/{bid-pricing-VYLVGU26.js.map → bid-pricing-AIUACXUH.js.map} +0 -0
  1086. /package/dist/{brand-ASBS2HZM.js.map → brand-UBTC2WXR.js.map} +0 -0
  1087. /package/dist/{businesses-JBDQZZIG.js.map → businesses-P3RX4UXS.js.map} +0 -0
  1088. /package/dist/{campaign-groups-ATE2DE4V.js.map → campaign-groups-SJZEDIBL.js.map} +0 -0
  1089. /package/dist/{campaign-writes-SX52CJYW.js.map → campaign-writes-5BPVXG4C.js.map} +0 -0
  1090. /package/dist/{campaign-writes-ETT57KLQ.js.map → campaign-writes-VE6QLIDA.js.map} +0 -0
  1091. /package/dist/{campaigns-J6VZBIV6.js.map → campaigns-JEWEDCTC.js.map} +0 -0
  1092. /package/dist/{campaigns-WBEG5QA4.js.map → campaigns-MEIMSHJF.js.map} +0 -0
  1093. /package/dist/{campaigns-FGBAS6AZ.js.map → campaigns-NCGJNJKS.js.map} +0 -0
  1094. /package/dist/{campaigns-X3DPCCSN.js.map → campaigns-XY7QWHDN.js.map} +0 -0
  1095. /package/dist/{capabilities-RDAERPYY.js.map → capabilities-W6SPXOPF.js.map} +0 -0
  1096. /package/dist/{cards-4477BFEV.js.map → cards-CLD4WX6G.js.map} +0 -0
  1097. /package/dist/{catalogs-G3YEVG6S.js.map → catalogs-DINPKQXY.js.map} +0 -0
  1098. /package/dist/{changes-TP7ZZHB3.js.map → changes-N2YZXAPF.js.map} +0 -0
  1099. /package/dist/{chatgpt-QNUN63YS.js.map → chatgpt-TPAP6BVY.js.map} +0 -0
  1100. /package/dist/{chats-YIAQGQ3X.js.map → chats-FKVVBXVF.js.map} +0 -0
  1101. /package/dist/{chunk-YBP7O5P4.js.map → chunk-24IQ6K7K.js.map} +0 -0
  1102. /package/dist/{chunk-YC2TQ3VC.js.map → chunk-2FZG5DD2.js.map} +0 -0
  1103. /package/dist/{chunk-7SDFKGQ4.js.map → chunk-2T3EH2MU.js.map} +0 -0
  1104. /package/dist/{chunk-FXED3VZK.js.map → chunk-2Y5UE2CV.js.map} +0 -0
  1105. /package/dist/{chunk-VB6WJJR3.js.map → chunk-3KPQDXIU.js.map} +0 -0
  1106. /package/dist/{chunk-6G5K6ZC6.js.map → chunk-4AFGT3L3.js.map} +0 -0
  1107. /package/dist/{chunk-MZL4H5PY.js.map → chunk-4JKBMKFC.js.map} +0 -0
  1108. /package/dist/{chunk-RX6F3GEA.js.map → chunk-4KBWL7S4.js.map} +0 -0
  1109. /package/dist/{chunk-KLNKEVIY.js.map → chunk-4R3QKEDV.js.map} +0 -0
  1110. /package/dist/{chunk-VFIOJD5M.js.map → chunk-6SL6463H.js.map} +0 -0
  1111. /package/dist/{chunk-HZ5DR5MX.js.map → chunk-7TRSFEHZ.js.map} +0 -0
  1112. /package/dist/{chunk-4NDCTLI5.js.map → chunk-APNV7FMK.js.map} +0 -0
  1113. /package/dist/{chunk-PBA3YCZA.js.map → chunk-BCSOWRQL.js.map} +0 -0
  1114. /package/dist/{chunk-VVZBBKRC.js.map → chunk-BJEW3LST.js.map} +0 -0
  1115. /package/dist/{chunk-LS5MTRFI.js.map → chunk-BYKUAX26.js.map} +0 -0
  1116. /package/dist/{chunk-MADAAZZV.js.map → chunk-C7NPNSFO.js.map} +0 -0
  1117. /package/dist/{chunk-EFSYTROP.js.map → chunk-CVIMIOPO.js.map} +0 -0
  1118. /package/dist/{chunk-WS2GMOSG.js.map → chunk-DAKIMGUS.js.map} +0 -0
  1119. /package/dist/{chunk-PWGWMIIJ.js.map → chunk-DCRUGS3G.js.map} +0 -0
  1120. /package/dist/{chunk-C6U6UDHJ.js.map → chunk-DMA77LLI.js.map} +0 -0
  1121. /package/dist/{chunk-JERXV5A3.js.map → chunk-EESOZY5S.js.map} +0 -0
  1122. /package/dist/{chunk-6DB2B3GF.js.map → chunk-EIZMOICE.js.map} +0 -0
  1123. /package/dist/{chunk-HIPDMQZ6.js.map → chunk-F3IVR3V3.js.map} +0 -0
  1124. /package/dist/{chunk-LZ73CZGP.js.map → chunk-FSX6CQ2Z.js.map} +0 -0
  1125. /package/dist/{chunk-STIB5DR5.js.map → chunk-G7LAQE56.js.map} +0 -0
  1126. /package/dist/{chunk-MLU6STIN.js.map → chunk-G7QKXFQ2.js.map} +0 -0
  1127. /package/dist/{chunk-VDHQJ6HD.js.map → chunk-G7XY4T6K.js.map} +0 -0
  1128. /package/dist/{chunk-VAISMQQB.js.map → chunk-HCDCWXSU.js.map} +0 -0
  1129. /package/dist/{chunk-G7UTTEBS.js.map → chunk-I4IVUAQN.js.map} +0 -0
  1130. /package/dist/{chunk-2TK4DEOE.js.map → chunk-IWNZCYWI.js.map} +0 -0
  1131. /package/dist/{chunk-K3PN7TN5.js.map → chunk-JF5LNI6O.js.map} +0 -0
  1132. /package/dist/{chunk-ALTBBAYU.js.map → chunk-JJZBZYNK.js.map} +0 -0
  1133. /package/dist/{chunk-WNFIJAUO.js.map → chunk-JZP5IODJ.js.map} +0 -0
  1134. /package/dist/{chunk-EH4C4CZK.js.map → chunk-KWMYTVHI.js.map} +0 -0
  1135. /package/dist/{chunk-VAJBWA2U.js.map → chunk-LFGCOAB4.js.map} +0 -0
  1136. /package/dist/{chunk-6B7VKFS4.js.map → chunk-LPRUP3ZX.js.map} +0 -0
  1137. /package/dist/{chunk-KNY76UGC.js.map → chunk-MD3VH5UG.js.map} +0 -0
  1138. /package/dist/{chunk-ACANMASG.js.map → chunk-MFORE6F4.js.map} +0 -0
  1139. /package/dist/{chunk-AWMFUGVX.js.map → chunk-MMBHCAON.js.map} +0 -0
  1140. /package/dist/{chunk-XL3BMSYG.js.map → chunk-NIGGMK7L.js.map} +0 -0
  1141. /package/dist/{chunk-ANCSKUWI.js.map → chunk-NN7A2ILR.js.map} +0 -0
  1142. /package/dist/{chunk-UC6BWM5J.js.map → chunk-OUQMJRH6.js.map} +0 -0
  1143. /package/dist/{chunk-T3BDNJIX.js.map → chunk-OXKUWTFL.js.map} +0 -0
  1144. /package/dist/{chunk-HQSCJYZO.js.map → chunk-P5T7OZKV.js.map} +0 -0
  1145. /package/dist/{chunk-RPUSTYHL.js.map → chunk-PAJJXZ3Z.js.map} +0 -0
  1146. /package/dist/{chunk-QSN5MZGS.js.map → chunk-PC56KVAD.js.map} +0 -0
  1147. /package/dist/{chunk-3CWL2LY4.js.map → chunk-PEWNEPDR.js.map} +0 -0
  1148. /package/dist/{chunk-W3ZHJJVT.js.map → chunk-Q2T4XZG4.js.map} +0 -0
  1149. /package/dist/{chunk-35XWJEWH.js.map → chunk-RCR6RVYE.js.map} +0 -0
  1150. /package/dist/{chunk-VMDAXFRI.js.map → chunk-RH2H5PBV.js.map} +0 -0
  1151. /package/dist/{chunk-PDTB5EX6.js.map → chunk-S3XM4LD3.js.map} +0 -0
  1152. /package/dist/{chunk-75FDTDLH.js.map → chunk-SFHL3KWY.js.map} +0 -0
  1153. /package/dist/{chunk-LIQ4SQ2T.js.map → chunk-SQ7DRYCC.js.map} +0 -0
  1154. /package/dist/{chunk-YBMVHGY3.js.map → chunk-SSVZM3P6.js.map} +0 -0
  1155. /package/dist/{chunk-XMD4SHFI.js.map → chunk-TMNLIA7R.js.map} +0 -0
  1156. /package/dist/{chunk-ZPU3WDVK.js.map → chunk-UF55TADX.js.map} +0 -0
  1157. /package/dist/{chunk-TD2P4HBP.js.map → chunk-UGI33KTO.js.map} +0 -0
  1158. /package/dist/{chunk-BA7FDXQC.js.map → chunk-UK2OTLT3.js.map} +0 -0
  1159. /package/dist/{chunk-DR34ZTWD.js.map → chunk-UU3FGKUW.js.map} +0 -0
  1160. /package/dist/{chunk-5Z2KSVIV.js.map → chunk-UX7HIGS7.js.map} +0 -0
  1161. /package/dist/{chunk-KQTYTCKQ.js.map → chunk-VDZIGI2C.js.map} +0 -0
  1162. /package/dist/{chunk-U6SYRIOB.js.map → chunk-VKVIBQP3.js.map} +0 -0
  1163. /package/dist/{chunk-65RIB7A6.js.map → chunk-VLF2M4GZ.js.map} +0 -0
  1164. /package/dist/{chunk-7OFNN4CT.js.map → chunk-VTF7XNOP.js.map} +0 -0
  1165. /package/dist/{chunk-2GK33EJV.js.map → chunk-WDA3L4NF.js.map} +0 -0
  1166. /package/dist/{chunk-H26L3OQY.js.map → chunk-XDV6Q33B.js.map} +0 -0
  1167. /package/dist/{chunk-U3HAMW5W.js.map → chunk-XYC26BDM.js.map} +0 -0
  1168. /package/dist/{chunk-F2S5BLPE.js.map → chunk-YTWNY3RF.js.map} +0 -0
  1169. /package/dist/{claim-V4F5GZJK.js.map → claim-JLVISHS4.js.map} +0 -0
  1170. /package/dist/{client-VHN32ZRE.js.map → client-G6DGRGKT.js.map} +0 -0
  1171. /package/dist/{code-YS6ZMGX3.js.map → code-AYN42EK7.js.map} +0 -0
  1172. /package/dist/{companies-NJGJ7XNN.js.map → companies-XDMOP2GL.js.map} +0 -0
  1173. /package/dist/{complete-MGNF5OAK.js.map → complete-XM7VLC4F.js.map} +0 -0
  1174. /package/dist/{config-CQN5FHMZ.js.map → config-UE7GCROG.js.map} +0 -0
  1175. /package/dist/{connect-PJOTRTT4.js.map → connect-VTDKGYP3.js.map} +0 -0
  1176. /package/dist/{conversation-4DM26FRD.js.map → conversation-F53OE25Y.js.map} +0 -0
  1177. /package/dist/{conversion-report-N4HANYOB.js.map → conversion-report-35MLL3FA.js.map} +0 -0
  1178. /package/dist/{conversion-upload-command-TZTHU2CD.js.map → conversion-upload-command-CV2TA7OV.js.map} +0 -0
  1179. /package/dist/{conversion-writes-LW4HQKK5.js.map → conversion-writes-NSZPNMPE.js.map} +0 -0
  1180. /package/dist/{conversions-JGECVZSY.js.map → conversions-7YO6DDL3.js.map} +0 -0
  1181. /package/dist/{conversions-TS723AZV.js.map → conversions-XNISCCC2.js.map} +0 -0
  1182. /package/dist/{countries-ESAKTQAE.js.map → countries-NMWPKFFW.js.map} +0 -0
  1183. /package/dist/{create-I2KVDTCQ.js.map → create-ARERZYCL.js.map} +0 -0
  1184. /package/dist/{create-DSGQFBI7.js.map → create-C6ZVYIF5.js.map} +0 -0
  1185. /package/dist/{create-WOHPIGBK.js.map → create-FAPJFCZE.js.map} +0 -0
  1186. /package/dist/{create-SBQWVLXG.js.map → create-M7TUO3XS.js.map} +0 -0
  1187. /package/dist/{creatives-4JGVZQGC.js.map → creatives-3YIV6IOK.js.map} +0 -0
  1188. /package/dist/{creatives-DWO5KEQC.js.map → creatives-QZCO6WGH.js.map} +0 -0
  1189. /package/dist/{creatives-PSWCNY7U.js.map → creatives-WJLJ3NKP.js.map} +0 -0
  1190. /package/dist/{critique-TIZJ5GFM.js.map → critique-56MNXW7R.js.map} +0 -0
  1191. /package/dist/{critique-NGMZK5LX.js.map → critique-KRIKEHF6.js.map} +0 -0
  1192. /package/dist/{crm-2WAR565U.js.map → crm-OETFQNR3.js.map} +0 -0
  1193. /package/dist/{crm-VDXUO2YU.js.map → crm-WXCFB4TU.js.map} +0 -0
  1194. /package/dist/{crop-2J4RKJ6B.js.map → crop-VCP2JLQL.js.map} +0 -0
  1195. /package/dist/{currency-XCGKQ7FE.js.map → currency-MNNDKY4Z.js.map} +0 -0
  1196. /package/dist/{custom-conversions-6P555U2K.js.map → custom-conversions-CIU525HM.js.map} +0 -0
  1197. /package/dist/{customers-ATENMXDO.js.map → customers-GTPEABJI.js.map} +0 -0
  1198. /package/dist/{delete-3AV3ARMX.js.map → delete-5CURRI25.js.map} +0 -0
  1199. /package/dist/{delete-H744GNS4.js.map → delete-CLC2Q2OE.js.map} +0 -0
  1200. /package/dist/{delete-AVMZYNVT.js.map → delete-CQ6Q3URI.js.map} +0 -0
  1201. /package/dist/{delete-A5XD52K4.js.map → delete-JIRZBBDD.js.map} +0 -0
  1202. /package/dist/{delete-OEYPFATY.js.map → delete-LD3F4UIW.js.map} +0 -0
  1203. /package/dist/{delete-MRM2S4Z5.js.map → delete-LGZ5OI4C.js.map} +0 -0
  1204. /package/dist/{demographics-M5LJF3RZ.js.map → demographics-EK2ZPHWK.js.map} +0 -0
  1205. /package/dist/{describe-6NVOWIBE.js.map → describe-BNB6643C.js.map} +0 -0
  1206. /package/dist/{describe-P3PPIQME.js.map → describe-ZXGFTCDR.js.map} +0 -0
  1207. /package/dist/{dimensions-EYAYO27I.js.map → dimensions-IU4ETG4U.js.map} +0 -0
  1208. /package/dist/{discard-72I6SM7G.js.map → discard-VWCXYJWU.js.map} +0 -0
  1209. /package/dist/{discover-BJPZNXUQ.js.map → discover-4EQWGIAN.js.map} +0 -0
  1210. /package/dist/{domain-R4EIZD2W.js.map → domain-I2SAGVAB.js.map} +0 -0
  1211. /package/dist/{download-7T6HIJKD.js.map → download-D7TB4744.js.map} +0 -0
  1212. /package/dist/{draft-YDY2Q2K6.js.map → draft-4VOOSJQJ.js.map} +0 -0
  1213. /package/dist/{draft-BBFJNZ5X.js.map → draft-6KG2YFOY.js.map} +0 -0
  1214. /package/dist/{draft-YYYRWF7M.js.map → draft-APDGACIC.js.map} +0 -0
  1215. /package/dist/{draft-BGUJDHXR.js.map → draft-D76C4JR3.js.map} +0 -0
  1216. /package/dist/{draft-THPZFASM.js.map → draft-HFH2Y6F5.js.map} +0 -0
  1217. /package/dist/{draft-34C3F5U4.js.map → draft-NVVWWQVC.js.map} +0 -0
  1218. /package/dist/{draft-KIBMVKSR.js.map → draft-NWLPLTWM.js.map} +0 -0
  1219. /package/dist/{env-KIP2J2UB.js.map → env-LHLGM2YJ.js.map} +0 -0
  1220. /package/dist/{export-JQRMBJ7D.js.map → export-VGCFD7GL.js.map} +0 -0
  1221. /package/dist/{extract-7QKLME7Z.js.map → extract-32J7V2RX.js.map} +0 -0
  1222. /package/dist/{facets-F2H52MS4.js.map → facets-WVI6VBDC.js.map} +0 -0
  1223. /package/dist/{favorites-NSGF4OV5.js.map → favorites-WKV5H5OF.js.map} +0 -0
  1224. /package/dist/{feedback-IQKKT4MC.js.map → feedback-NMNKYEMU.js.map} +0 -0
  1225. /package/dist/{feedback-record-UZV4Y7UD.js.map → feedback-record-2VYBMWMO.js.map} +0 -0
  1226. /package/dist/{fetch-ZUAZPLAE.js.map → fetch-CENBDLT6.js.map} +0 -0
  1227. /package/dist/{fetch-XF76JABV.js.map → fetch-XQFPE3MI.js.map} +0 -0
  1228. /package/dist/{find-OTDIX6V4.js.map → find-PNDKEOXT.js.map} +0 -0
  1229. /package/dist/{fit-2CA4JH7N.js.map → fit-SEWGCEW5.js.map} +0 -0
  1230. /package/dist/{fonts-F2XUCIIW.js.map → fonts-KUCQAR7N.js.map} +0 -0
  1231. /package/dist/{forecast-IDKJYM2B.js.map → forecast-PI52G2GL.js.map} +0 -0
  1232. /package/dist/{funding-NYO65IMT.js.map → funding-ZRC25X5I.js.map} +0 -0
  1233. /package/dist/{ga4-UDQ2HA2J.js.map → ga4-YDKXVJOC.js.map} +0 -0
  1234. /package/dist/{generate-MMBYB44G.js.map → generate-BVMMX3SS.js.map} +0 -0
  1235. /package/dist/{get-3L6W3E3T.js.map → get-7MSF4RVQ.js.map} +0 -0
  1236. /package/dist/{get-XN5ZGDIK.js.map → get-KFVPIDIA.js.map} +0 -0
  1237. /package/dist/{get-6WEYKOY6.js.map → get-NHQ2XYKZ.js.map} +0 -0
  1238. /package/dist/{get-YIHTAMRT.js.map → get-UMMTY74K.js.map} +0 -0
  1239. /package/dist/{get-P743RPSI.js.map → get-YM77HCL5.js.map} +0 -0
  1240. /package/dist/{gif-53ULFVLR.js.map → gif-X323HXS2.js.map} +0 -0
  1241. /package/dist/{google-KTO3PLEU.js.map → google-76A4MHQH.js.map} +0 -0
  1242. /package/dist/{google-ads-Q37I2D5P.js.map → google-ads-S6O4MLKA.js.map} +0 -0
  1243. /package/dist/{group-GKWCCX66.js.map → group-CTIZVYX2.js.map} +0 -0
  1244. /package/dist/{group-EFZ3AJIE.js.map → group-HKWQ75CJ.js.map} +0 -0
  1245. /package/dist/{gsc-P3QYGDV2.js.map → gsc-CORRYJBJ.js.map} +0 -0
  1246. /package/dist/{history-4II5QA4B.js.map → history-4U7FJGEM.js.map} +0 -0
  1247. /package/dist/{history-DBIEYQHY.js.map → history-BXOMJ5PL.js.map} +0 -0
  1248. /package/dist/{hubspot-TTITJFBO.js.map → hubspot-I5MFAZ4G.js.map} +0 -0
  1249. /package/dist/{icon-I43F77FV.js.map → icon-6QW63AHG.js.map} +0 -0
  1250. /package/dist/{ideas-V4Q6JDKV.js.map → ideas-QDS5XA4S.js.map} +0 -0
  1251. /package/dist/{images-SP5REF6E.js.map → images-NVTA2OHD.js.map} +0 -0
  1252. /package/dist/{improve-BCCU5AS6.js.map → improve-WR23CHYH.js.map} +0 -0
  1253. /package/dist/{ingest-574GIFAR.js.map → ingest-QAVJ2J7F.js.map} +0 -0
  1254. /package/dist/{ingest-IC4T76W6.js.map → ingest-XJHV3GG6.js.map} +0 -0
  1255. /package/dist/{insights-ZIU6FJMS.js.map → insights-AW7SOGHI.js.map} +0 -0
  1256. /package/dist/{insights-NZWSJKU4.js.map → insights-IJEPLWQH.js.map} +0 -0
  1257. /package/dist/{inspect-ATHYY6A2.js.map → inspect-7I53PWCF.js.map} +0 -0
  1258. /package/dist/{inspiration-P265QJ2H.js.map → inspiration-TJJFUVY2.js.map} +0 -0
  1259. /package/dist/{intent-E3UIVZBN.js.map → intent-VEUQS34Z.js.map} +0 -0
  1260. /package/dist/{job-L7RJZMSG.js.map → job-K7LAIBYN.js.map} +0 -0
  1261. /package/dist/{job-create-JUDAN52O.js.map → job-create-DFZL4CGA.js.map} +0 -0
  1262. /package/dist/{job-status-U43WE3RJ.js.map → job-status-6Q2TVTEO.js.map} +0 -0
  1263. /package/dist/{keep-55CPC7DG.js.map → keep-XJFCLVCP.js.map} +0 -0
  1264. /package/dist/{keyword-gap-BG6M665A.js.map → keyword-gap-CUOGKUMM.js.map} +0 -0
  1265. /package/dist/{keyword-metrics-J4UPUDN7.js.map → keyword-metrics-LK7FME4N.js.map} +0 -0
  1266. /package/dist/{keywords-for-site-MWADFEO2.js.map → keywords-for-site-4E7UU44P.js.map} +0 -0
  1267. /package/dist/{landing-R6DN7XLK.js.map → landing-I65PFN7H.js.map} +0 -0
  1268. /package/dist/{languages-HORKPDNH.js.map → languages-KPPKX3E2.js.map} +0 -0
  1269. /package/dist/{languages-JSGWCC7Z.js.map → languages-MGEBLO64.js.map} +0 -0
  1270. /package/dist/{logo-2IP663QO.js.map → launches-E3Y6NCQE.js.map} +0 -0
  1271. /package/dist/{layerize-RPD6SNP6.js.map → layerize-N4IQ2KE7.js.map} +0 -0
  1272. /package/dist/{leads-7EVHMNUF.js.map → leads-PPMOBH7U.js.map} +0 -0
  1273. /package/dist/{leads-JM6HUERX.js.map → leads-TNEQUOUN.js.map} +0 -0
  1274. /package/dist/{learn-LGS2F5TR.js.map → learn-QQS323PS.js.map} +0 -0
  1275. /package/dist/{library-ARKRLCNJ.js.map → library-4QQAVB6X.js.map} +0 -0
  1276. /package/dist/{lighthouse-6ZC45E53.js.map → lighthouse-CD47CPJM.js.map} +0 -0
  1277. /package/dist/{line-item-writes-KUYEXSIH.js.map → line-item-writes-QJZQUQ4E.js.map} +0 -0
  1278. /package/dist/{line-items-GIWLP3FL.js.map → line-items-ESEAXGBV.js.map} +0 -0
  1279. /package/dist/{link-PVM7XJQI.js.map → link-DPJYS4WY.js.map} +0 -0
  1280. /package/dist/{linkedin-WX54EAX6.js.map → linkedin-EJPNC4VY.js.map} +0 -0
  1281. /package/dist/{list-P7NAFN6J.js.map → list-A45NTPSJ.js.map} +0 -0
  1282. /package/dist/{list-7MVBXOJT.js.map → list-GNP4GIV2.js.map} +0 -0
  1283. /package/dist/{list-LI4OGQFW.js.map → list-KQFLOVC4.js.map} +0 -0
  1284. /package/dist/{list-AL7N6X2P.js.map → list-MDHK3ENJ.js.map} +0 -0
  1285. /package/dist/{list-A5UCIR2J.js.map → list-PRUFXMXW.js.map} +0 -0
  1286. /package/dist/{list-WR7QYTON.js.map → list-S3BAQCTL.js.map} +0 -0
  1287. /package/dist/{list-4ZKQZBCL.js.map → list-UU5NPLJ7.js.map} +0 -0
  1288. /package/dist/{list-MCEFXC6L.js.map → list-V525A4Z4.js.map} +0 -0
  1289. /package/dist/{locations-74TPQWAT.js.map → locations-J2PVPDZU.js.map} +0 -0
  1290. /package/dist/{locations-J4G5RNPH.js.map → locations-TFOYESTF.js.map} +0 -0
  1291. /package/dist/{log-U6IWZGOF.js.map → log-XQBEJOOW.js.map} +0 -0
  1292. /package/dist/{lookup-XK45W2SH.js.map → logo-KQD5KUAH.js.map} +0 -0
  1293. /package/dist/{output-RAH3TSIL.js.map → lookup-QCREWUV4.js.map} +0 -0
  1294. /package/dist/{media-M7E6V2XU.js.map → media-2WENMOAA.js.map} +0 -0
  1295. /package/dist/{media-6CQYG4UY.js.map → media-N4C6Q4IV.js.map} +0 -0
  1296. /package/dist/{media-sources-JWGO23BZ.js.map → media-sources-BPOTW6IB.js.map} +0 -0
  1297. /package/dist/{members-5FAW4YE7.js.map → members-BOYZKLNK.js.map} +0 -0
  1298. /package/dist/{meta-EZ4SY25M.js.map → meta-PXYHWOOG.js.map} +0 -0
  1299. /package/dist/{metrics-SQDJ5NQO.js.map → metrics-FZANUN7E.js.map} +0 -0
  1300. /package/dist/{models-7U3GRYHF.js.map → models-W6EN3WB7.js.map} +0 -0
  1301. /package/dist/{normalize-ICQF2AST.js.map → normalize-LOMDPNFJ.js.map} +0 -0
  1302. /package/dist/{performance-FGCDWHMC.js.map → output-SR4DN3A4.js.map} +0 -0
  1303. /package/dist/{page-GS3WLT2C.js.map → page-FS76L5WU.js.map} +0 -0
  1304. /package/dist/{pages-FXYQLHSJ.js.map → pages-INMNJSX2.js.map} +0 -0
  1305. /package/dist/{reddit-TF6K37SB.js.map → performance-53D43XVZ.js.map} +0 -0
  1306. /package/dist/{pinterest-AUH7WBA7.js.map → pinterest-JMHFPNVW.js.map} +0 -0
  1307. /package/dist/{pixels-45A55MOP.js.map → pixels-K6ZD7SXV.js.map} +0 -0
  1308. /package/dist/{pixels-ZFF4BGUH.js.map → pixels-XPBBJYE3.js.map} +0 -0
  1309. /package/dist/{preview-AD4GKYIA.js.map → preview-KXSNG3BS.js.map} +0 -0
  1310. /package/dist/{promoted-tweet-writes-BPWTDESL.js.map → promoted-tweet-writes-I6HVQRDB.js.map} +0 -0
  1311. /package/dist/{promoted-tweets-OS3NHYVE.js.map → promoted-tweets-YAQ5ZUXI.js.map} +0 -0
  1312. /package/dist/{properties-L2XIYQDS.js.map → properties-NYNEONHI.js.map} +0 -0
  1313. /package/dist/{publish-SXZEWBVJ.js.map → publish-Z5DVKZSG.js.map} +0 -0
  1314. /package/dist/{run-TFLFBQU2.js.map → query-MSZPOHFL.js.map} +0 -0
  1315. /package/dist/{query-SGGBCHTF.js.map → query-RK2TFMBI.js.map} +0 -0
  1316. /package/dist/{query-VTGVZQIO.js.map → query-TWNH6GV7.js.map} +0 -0
  1317. /package/dist/{search-UO5KJTYS.js.map → reddit-6DQTBTO6.js.map} +0 -0
  1318. /package/dist/{refresh-APVDWXRZ.js.map → refresh-TP2TOGS6.js.map} +0 -0
  1319. /package/dist/{release-32SEJU4L.js.map → release-PHQEZ2ZX.js.map} +0 -0
  1320. /package/dist/{relevant-pages-OWMNUCP7.js.map → relevant-pages-ORVFFVAM.js.map} +0 -0
  1321. /package/dist/{remove-6LGGKMLJ.js.map → remove-ETLMMDEA.js.map} +0 -0
  1322. /package/dist/{remove-U64GTHLQ.js.map → remove-KTBM5YSH.js.map} +0 -0
  1323. /package/dist/{reopen-5VS233SF.js.map → reopen-OURQR6U7.js.map} +0 -0
  1324. /package/dist/{research-O7CJV5IS.js.map → research-P23YBKS3.js.map} +0 -0
  1325. /package/dist/{research-QYSQ6LW4.js.map → research-WCNWT5Y5.js.map} +0 -0
  1326. /package/dist/{reset-47B5VPT4.js.map → reset-2NCAWWN4.js.map} +0 -0
  1327. /package/dist/{reset-22FC7BXQ.js.map → reset-65R2CUB5.js.map} +0 -0
  1328. /package/dist/{resolve-7KQGVTQT.js.map → resolve-65FKZ23N.js.map} +0 -0
  1329. /package/dist/{retry-UJ5UF4BM.js.map → retry-P5K6LE6K.js.map} +0 -0
  1330. /package/dist/{retry-J5UVLS72.js.map → retry-UIPDQJ5F.js.map} +0 -0
  1331. /package/dist/{retry-failed-6HXPUVXJ.js.map → retry-failed-QMWQ6TRL.js.map} +0 -0
  1332. /package/dist/{shared-HJDFNID4.js.map → run-NDMEYUOI.js.map} +0 -0
  1333. /package/dist/{run-SI4FA32F.js.map → run-OP3T4TCF.js.map} +0 -0
  1334. /package/dist/{schedule-52ZM4KRQ.js.map → schedule-6D667AXB.js.map} +0 -0
  1335. /package/dist/{schedule-O2K6M43V.js.map → schedule-KXLQVCZW.js.map} +0 -0
  1336. /package/dist/{scheduled-agents-PCWCQAKP.js.map → scheduled-agents-LYWEX4PU.js.map} +0 -0
  1337. /package/dist/{schema-6GR77VJG.js.map → schema-CCFLFAOY.js.map} +0 -0
  1338. /package/dist/{scrape-ETAMW43A.js.map → scrape-DBZQFIW7.js.map} +0 -0
  1339. /package/dist/{screenshot-YCQF25ZB.js.map → screenshot-MPFANYIH.js.map} +0 -0
  1340. /package/dist/{search-OQNGSMUH.js.map → search-4AANIUUL.js.map} +0 -0
  1341. /package/dist/{search-742XSULP.js.map → search-EMJABZYF.js.map} +0 -0
  1342. /package/dist/{search-NS7XNRZC.js.map → search-HQDN7DOF.js.map} +0 -0
  1343. /package/dist/{sync-definition-BAJQUBE3.js.map → search-OVHC4CRQ.js.map} +0 -0
  1344. /package/dist/{search-MEEM4D3W.js.map → search-YSGZRANA.js.map} +0 -0
  1345. /package/dist/{select-4XCYVV2G.js.map → select-C6BKHB4B.js.map} +0 -0
  1346. /package/dist/{sends-WGJVQUMF.js.map → sends-HXN5HSF6.js.map} +0 -0
  1347. /package/dist/{sequences-OIPVR7JL.js.map → sequences-FRK76ZQV.js.map} +0 -0
  1348. /package/dist/{setup-links-V3URI7DL.js.map → setup-links-BM2GLSSO.js.map} +0 -0
  1349. /package/dist/{viewer-check-HFRUJ4ZU.js.map → shared-EH5ZTQXC.js.map} +0 -0
  1350. /package/dist/{site-WIQ7SSU3.js.map → site-3PEJYQJW.js.map} +0 -0
  1351. /package/dist/{sitemaps-POPZJTAX.js.map → sitemaps-7KHY2KXI.js.map} +0 -0
  1352. /package/dist/{sites-262H6LM4.js.map → sites-6B76JW6C.js.map} +0 -0
  1353. /package/dist/{skills-6TQZLIMP.js.map → skills-SCTT3LCM.js.map} +0 -0
  1354. /package/dist/{sources-L453U5MT.js.map → sources-ODJBHNGY.js.map} +0 -0
  1355. /package/dist/{stale-6OVG6VME.js.map → stale-2O54QXY2.js.map} +0 -0
  1356. /package/dist/{stats-NNXZMPZR.js.map → stats-4NBOAOR2.js.map} +0 -0
  1357. /package/dist/{status-WXWU54WR.js.map → status-NE5OBM4B.js.map} +0 -0
  1358. /package/dist/{sticker-4KMBSMP5.js.map → sticker-NLXBIOBO.js.map} +0 -0
  1359. /package/dist/{stock-2YCDN3N6.js.map → stock-F3SA4VHV.js.map} +0 -0
  1360. /package/dist/{studio-C5K3YX3P.js.map → studio-ZPDIOFKL.js.map} +0 -0
  1361. /package/dist/{sync-CDZUTGV3.js.map → sync-5GJNZDGZ.js.map} +0 -0
  1362. /package/dist/{sync-ZSNUBYPM.js.map → sync-FCNFXTFD.js.map} +0 -0
  1363. /package/dist/{sync-CF7FVUQJ.js.map → sync-YXCZ3DHY.js.map} +0 -0
  1364. /package/dist/{tag-manager-DYZUOIAS.js.map → tag-manager-YM4Q3CZT.js.map} +0 -0
  1365. /package/dist/{tags-SG3NVC3J.js.map → tags-456UOYJU.js.map} +0 -0
  1366. /package/dist/{tags-6RY23XOG.js.map → tags-5YPYHV5V.js.map} +0 -0
  1367. /package/dist/{tags-BHFQWNPL.js.map → tags-HXMHEHG2.js.map} +0 -0
  1368. /package/dist/{tags-WR6PDIDR.js.map → tags-K34666RY.js.map} +0 -0
  1369. /package/dist/{tags-VN5HTL35.js.map → tags-NB35ISO3.js.map} +0 -0
  1370. /package/dist/{targeting-constants-XJ2VOW7K.js.map → targeting-constants-3CMGPWRI.js.map} +0 -0
  1371. /package/dist/{targeting-criteria-5EXP2NXF.js.map → targeting-criteria-UKQ4WF5C.js.map} +0 -0
  1372. /package/dist/{targets-WUVEJPSD.js.map → targets-VQ4BQ657.js.map} +0 -0
  1373. /package/dist/{templates-LOJQX2NG.js.map → templates-PMUIOVDX.js.map} +0 -0
  1374. /package/dist/{testimonials-6M5DXORT.js.map → testimonials-XZCGVD6V.js.map} +0 -0
  1375. /package/dist/{top-companies-E2OMMPSV.js.map → top-companies-VMRIDOOH.js.map} +0 -0
  1376. /package/dist/{translate-AW4CUKDA.js.map → translate-F5KR62LF.js.map} +0 -0
  1377. /package/dist/{triggers-MRXIDCSN.js.map → triggers-2MZX7W6Y.js.map} +0 -0
  1378. /package/dist/{tweets-ATP3FQAC.js.map → tweets-XWE3VYQ4.js.map} +0 -0
  1379. /package/dist/{unfollow-CBVPGPF7.js.map → unfollow-7U4UBAJX.js.map} +0 -0
  1380. /package/dist/{unlink-HNL747YM.js.map → unlink-AWSNY3QS.js.map} +0 -0
  1381. /package/dist/{unstage-4ZEULXEQ.js.map → unstage-OGB43ZXO.js.map} +0 -0
  1382. /package/dist/{unstage-OL2JDCLK.js.map → unstage-RQBOQ4DY.js.map} +0 -0
  1383. /package/dist/{update-YNNRX5B2.js.map → update-4KWYHMLS.js.map} +0 -0
  1384. /package/dist/{update-4KGIT4BF.js.map → update-6DKEWM64.js.map} +0 -0
  1385. /package/dist/{update-RTTC3SAK.js.map → update-G6EKHPIF.js.map} +0 -0
  1386. /package/dist/{update-JPBUF7M2.js.map → update-OFV452AC.js.map} +0 -0
  1387. /package/dist/{upload-UIXPCSXJ.js.map → upload-6CJWMQ24.js.map} +0 -0
  1388. /package/dist/{upload-L5SYZB3X.js.map → upload-GUKMQ5MT.js.map} +0 -0
  1389. /package/dist/{upscale-YWRLFU22.js.map → upscale-A456MESF.js.map} +0 -0
  1390. /package/dist/{url-params-K47CE7Y5.js.map → url-params-OE3UMYMM.js.map} +0 -0
  1391. /package/dist/{use-UT2DIZOG.js.map → use-HBVKVT5S.js.map} +0 -0
  1392. /package/dist/{variant-FLZJYGYL.js.map → variant-HULP57YI.js.map} +0 -0
  1393. /package/dist/{videos-BP3BKNTY.js.map → videos-ION7UT3M.js.map} +0 -0
  1394. /package/dist/{view-NPAG66QK.js.map → view-GCDEJZII.js.map} +0 -0
  1395. /package/dist/{web-RPSGFN4U.js.map → web-CCVD6UZ4.js.map} +0 -0
  1396. /package/dist/{write-commands-WTRSOSO3.js.map → write-commands-47OP673X.js.map} +0 -0
  1397. /package/dist/{write-commands-TAYGTJEZ.js.map → write-commands-IJ5IFHS6.js.map} +0 -0
  1398. /package/dist/{write-commands-4WARNR2T.js.map → write-commands-NNVDWBLG.js.map} +0 -0
  1399. /package/dist/{write-commands-ERKVRHTC.js.map → write-commands-OBMIVFZJ.js.map} +0 -0
  1400. /package/dist/{x-VZCELH3P.js.map → x-U32DT24S.js.map} +0 -0
@@ -1,1341 +0,0 @@
1
- import {
2
- getFieldDescriptions
3
- } from "./chunk-CYEO5ZIO.js";
4
- import {
5
- LIST_FIELDS,
6
- duringLiteralExplanation,
7
- equivalentBetween,
8
- isDuringLiteral,
9
- listFieldGuidance,
10
- parseApiError
11
- } from "./chunk-GX6VAHY7.js";
12
- import "./chunk-XCM6XWOB.js";
13
- import {
14
- buildQueryCacheKey,
15
- cacheGet,
16
- cacheSet,
17
- getManagerIdForCustomer,
18
- getQueryTtl,
19
- resolveCustomerId,
20
- toCsvRow,
21
- writeAdsJson
22
- } from "./chunk-VFIOJD5M.js";
23
- import {
24
- GOOGLE_ADS_QUERY_MAX_PAGE_SIZE
25
- } from "./chunk-NE4F3FHN.js";
26
- import {
27
- ApiError,
28
- apiPost
29
- } from "./chunk-XBOK23HI.js";
30
- import "./chunk-IFWP3ZDO.js";
31
- import "./chunk-NAWWC5I3.js";
32
- import {
33
- registerSchema
34
- } from "./chunk-NU7JSWVA.js";
35
- import "./chunk-YQSBHWOI.js";
36
-
37
- // src/commands/ads/google/query.ts
38
- import { appendFileSync, existsSync, readFileSync, writeFileSync } from "fs";
39
- import { resolve } from "path";
40
- import { defineCommand } from "citty";
41
-
42
- // src/commands/ads/google/presets.ts
43
- var BETWEEN_RE = /^BETWEEN\s+'[0-9]{4}-[0-9]{2}-[0-9]{2}'\s+AND\s+'[0-9]{4}-[0-9]{2}-[0-9]{2}'$/i;
44
- function isValidDateRange(value) {
45
- const trimmed = value.trim();
46
- return isDuringLiteral(trimmed) || BETWEEN_RE.test(trimmed);
47
- }
48
- function dateRangeError(dateRange, now) {
49
- if (/^[A-Za-z0-9_]+$/.test(dateRange.trim())) {
50
- return `Invalid date range: "${dateRange}". ${duringLiteralExplanation(dateRange, equivalentBetween(dateRange, now))} Pass it as --date-range "BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'".`;
51
- }
52
- return `Invalid date range: "${dateRange}". Use a GAQL date literal (e.g. LAST_30_DAYS, TODAY) or BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'.`;
53
- }
54
- var SERVING_CHAINS = {
55
- keyword_view: ["campaign.status", "ad_group.status", "ad_group_criterion.status"],
56
- ad_group_criterion: ["campaign.status", "ad_group.status", "ad_group_criterion.status"],
57
- ad_group_ad: ["campaign.status", "ad_group.status", "ad_group_ad.status"],
58
- search_term_view: ["campaign.status", "ad_group.status"],
59
- ad_group: ["campaign.status", "ad_group.status"],
60
- asset_group: ["campaign.status", "asset_group.status"],
61
- // An asset link carries its own status, and it is not the campaign's, the ad group's or the asset
62
- // group's. Google returns a REMOVED link like any other row, so a read scoped only to its owners
63
- // lists extensions that are no longer attached to anything — which is what 74 detaches were planned
64
- // from on a live account, every one of them refused at publish as `RESOURCE_NOT_FOUND`.
65
- // `customer_asset` is deliberately absent: one rung, no ancestor to forget.
66
- asset_group_asset: ["campaign.status", "asset_group.status", "asset_group_asset.status"],
67
- campaign_asset: ["campaign.status", "campaign_asset.status"],
68
- ad_group_asset: ["campaign.status", "ad_group.status", "ad_group_asset.status"]
69
- };
70
- var PRESETS = [
71
- {
72
- name: "campaign-performance",
73
- description: "Campaign-level metrics overview",
74
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, campaign.advertising_channel_type, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions, metrics.conversions_value, metrics.ctr, metrics.average_cpc FROM campaign WHERE segments.date DURING {dateRange}{statusScope} ORDER BY metrics.cost_micros DESC LIMIT {limit}`,
75
- defaultDateRange: "LAST_30_DAYS",
76
- defaultLimit: 200,
77
- statusFields: ["campaign.status"]
78
- },
79
- {
80
- name: "budget-limited",
81
- description: "Campaigns Google reports as limited by budget, with each one's bid target next to its actual cost per conversion \u2014 the state where a target above actual now drives delivery up to the target instead of holding recent cost",
82
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, campaign.advertising_channel_type, campaign.bidding_strategy_type, campaign.primary_status, campaign.primary_status_reasons, campaign.target_cpa.target_cpa_micros, campaign.maximize_conversions.target_cpa_micros, campaign.target_roas.target_roas, campaign.maximize_conversion_value.target_roas, campaign.target_cpc.target_cpc_micros, campaign_budget.amount_micros, metrics.cost_micros, metrics.conversions, metrics.conversions_value, metrics.cost_per_conversion, metrics.search_budget_lost_impression_share FROM campaign WHERE campaign.primary_status_reasons CONTAINS ANY (BUDGET_CONSTRAINED) AND segments.date DURING {dateRange}{statusScope} ORDER BY metrics.cost_micros DESC LIMIT {limit}`,
83
- defaultDateRange: "LAST_30_DAYS",
84
- defaultLimit: 200,
85
- statusFields: ["campaign.status"]
86
- },
87
- {
88
- name: "conversions-by-action",
89
- description: "Which conversion action each campaign's conversions actually are \u2014 the read that says whether two campaigns' conversion rates are measuring the same event",
90
- gaqlTemplate: `SELECT campaign.id, campaign.name, segments.conversion_action_name, segments.conversion_action_category, metrics.conversions, metrics.all_conversions FROM campaign WHERE segments.date DURING {dateRange}{statusScope} ORDER BY metrics.conversions DESC LIMIT {limit}`,
91
- defaultDateRange: "LAST_30_DAYS",
92
- defaultLimit: 200,
93
- statusFields: ["campaign.status"]
94
- },
95
- {
96
- name: "keyword-analysis",
97
- description: "Keyword performance with match type and quality",
98
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, ad_group.id, ad_group.name, ad_group.status, ad_group_criterion.criterion_id, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, ad_group_criterion.status, ad_group_criterion.quality_info.quality_score, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions, metrics.ctr FROM keyword_view WHERE segments.date DURING {dateRange}{statusScope} ORDER BY metrics.impressions DESC LIMIT {limit}`,
99
- defaultDateRange: "LAST_30_DAYS",
100
- defaultLimit: 200,
101
- statusFields: ["campaign.status", "ad_group.status", "ad_group_criterion.status"]
102
- },
103
- {
104
- name: "keyword-serving",
105
- description: "Why a keyword is limited \u2014 Google Ads' 'Eligible (Limited) / Below first page bid' column, with the first-page bid estimate, the current max CPC and quality score",
106
- gaqlTemplate: `SELECT campaign.id, campaign.name, ad_group.id, ad_group.name, ad_group_criterion.criterion_id, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, ad_group_criterion.status, ad_group_criterion.primary_status, ad_group_criterion.primary_status_reasons, ad_group_criterion.system_serving_status, ad_group_criterion.approval_status, ad_group_criterion.effective_cpc_bid_micros, ad_group_criterion.effective_cpc_bid_source, ad_group_criterion.position_estimates.first_page_cpc_micros, ad_group_criterion.position_estimates.top_of_page_cpc_micros, ad_group_criterion.quality_info.quality_score, ad_group_criterion.quality_info.creative_quality_score, ad_group_criterion.quality_info.post_click_quality_score, ad_group_criterion.quality_info.search_predicted_ctr FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.negative = FALSE{statusScope} ORDER BY campaign.name LIMIT {limit}`,
107
- defaultDateRange: "ALL_TIME",
108
- defaultLimit: 500,
109
- statusFields: ["campaign.status", "ad_group.status", "ad_group_criterion.status"]
110
- },
111
- {
112
- name: "positive-keywords",
113
- description: "Positive (targeting) keywords only \u2014 excludes negatives",
114
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, ad_group.id, ad_group.name, ad_group.status, ad_group_criterion.criterion_id, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, ad_group_criterion.status, ad_group_criterion.negative FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.negative = FALSE{statusScope} ORDER BY campaign.name LIMIT {limit}`,
115
- defaultDateRange: "ALL_TIME",
116
- defaultLimit: 500,
117
- statusFields: ["campaign.status", "ad_group.status", "ad_group_criterion.status"]
118
- },
119
- {
120
- name: "negative-keywords",
121
- description: "Negative keywords only \u2014 campaign and ad group level",
122
- gaqlTemplate: `SELECT campaign.id, campaign.name, ad_group.name, ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type, ad_group_criterion.negative FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.negative = TRUE AND campaign.status != 'REMOVED' ORDER BY campaign.name LIMIT {limit}`,
123
- defaultDateRange: "ALL_TIME",
124
- defaultLimit: 500
125
- },
126
- {
127
- name: "negative-keyword-lists",
128
- description: "Shared negative keyword lists and the terms inside them (SharedSet members)",
129
- gaqlTemplate: `SELECT shared_set.id, shared_set.name, shared_criterion.keyword.text, shared_criterion.keyword.match_type FROM shared_criterion WHERE shared_set.type = 'NEGATIVE_KEYWORDS' AND shared_set.status = 'ENABLED' ORDER BY shared_set.name LIMIT {limit}`,
130
- defaultDateRange: "ALL_TIME",
131
- defaultLimit: 500
132
- },
133
- {
134
- name: "negative-list-attachments",
135
- description: "Which campaigns each shared negative keyword list is attached to",
136
- gaqlTemplate: `SELECT campaign.id, campaign.name, shared_set.id, shared_set.name FROM campaign_shared_set WHERE shared_set.type = 'NEGATIVE_KEYWORDS' AND campaign_shared_set.status = 'ENABLED' ORDER BY campaign.name LIMIT {limit}`,
137
- defaultDateRange: "ALL_TIME",
138
- defaultLimit: 500
139
- },
140
- {
141
- name: "search-terms",
142
- description: "Actual user search queries triggering ads",
143
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, ad_group.name, ad_group.status, search_term_view.search_term, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions FROM search_term_view WHERE segments.date DURING {dateRange}{statusScope} ORDER BY metrics.impressions DESC LIMIT {limit}`,
144
- defaultDateRange: "LAST_7_DAYS",
145
- defaultLimit: 200,
146
- statusFields: ["campaign.status", "ad_group.status"]
147
- },
148
- {
149
- name: "ad-copy-performance",
150
- description: "Ad headline and description effectiveness",
151
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, ad_group.status, ad_group_ad.status, ad_group_ad.ad.responsive_search_ad.headlines, ad_group_ad.ad.responsive_search_ad.descriptions, ad_group_ad.ad.final_urls, metrics.impressions, metrics.clicks, metrics.conversions, metrics.ctr FROM ad_group_ad WHERE segments.date DURING {dateRange}{statusScope} ORDER BY metrics.impressions DESC LIMIT {limit}`,
152
- defaultDateRange: "LAST_30_DAYS",
153
- defaultLimit: 200,
154
- statusFields: ["campaign.status", "ad_group.status", "ad_group_ad.status"]
155
- },
156
- {
157
- name: "asset-performance",
158
- description: "Performance Max asset performance labels",
159
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, asset_group.name, asset_group.status, asset_group_asset.status, asset_group_asset.field_type, asset_group_asset.performance_label, asset.type, asset.text_asset.text, asset.image_asset.full_size.url FROM asset_group_asset WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX' AND segments.date DURING {dateRange}{statusScope} LIMIT {limit}`,
160
- defaultDateRange: "LAST_30_DAYS",
161
- defaultLimit: 200,
162
- statusFields: ["campaign.status", "asset_group.status", "asset_group_asset.status"]
163
- },
164
- {
165
- name: "shopping-products",
166
- description: "Product-level shopping performance metrics",
167
- gaqlTemplate: `SELECT campaign.id, campaign.name, campaign.status, segments.product_title, segments.product_item_id, segments.product_brand, segments.product_type_l1, metrics.clicks, metrics.impressions, metrics.cost_micros, metrics.conversions FROM shopping_performance_view WHERE segments.date DURING {dateRange}{statusScope} ORDER BY metrics.cost_micros DESC LIMIT {limit}`,
168
- defaultDateRange: "LAST_30_DAYS",
169
- defaultLimit: 200,
170
- statusFields: ["campaign.status"]
171
- },
172
- {
173
- name: "account-summary",
174
- description: "Account-level totals for a date range",
175
- gaqlTemplate: `SELECT customer.id, customer.descriptive_name, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions, metrics.conversions_value FROM customer WHERE segments.date DURING {dateRange} LIMIT 1`,
176
- defaultDateRange: "LAST_30_DAYS",
177
- defaultLimit: 1
178
- }
179
- ];
180
- function getPreset(name) {
181
- return PRESETS.find((p) => p.name === name);
182
- }
183
- function buildStatusScope(statusFields, includePaused) {
184
- if (!statusFields || statusFields.length === 0) return "";
185
- const predicate = includePaused ? "!= 'REMOVED'" : "= 'ENABLED'";
186
- return statusFields.map((field) => ` AND ${field} ${predicate}`).join("");
187
- }
188
- function expandPreset(preset, params, now = /* @__PURE__ */ new Date()) {
189
- const dateRange = params.dateRange ?? preset.defaultDateRange;
190
- const limit = params.limit ?? preset.defaultLimit;
191
- if (preset.gaqlTemplate.includes("{dateRange}") && !isValidDateRange(dateRange)) {
192
- return { query: "", dateRangeError: dateRangeError(dateRange, now) };
193
- }
194
- const statusScope = buildStatusScope(preset.statusFields, params.includePaused ?? false);
195
- const range = dateRange.trim();
196
- const query = preset.gaqlTemplate.replace(/DURING\s+\{dateRange\}/g, BETWEEN_RE.test(range) ? range : `DURING ${range}`).replace(/\{dateRange\}/g, range).replace(/\{limit\}/g, String(limit)).replace(/\{statusScope\}/g, statusScope);
197
- return { query };
198
- }
199
-
200
- // src/commands/ads/google/preflight.ts
201
- function buildCommand(query, customerId) {
202
- return `baker ads google query "${query}" --customer-id ${customerId}`;
203
- }
204
- var RUNG_PIN_FIELDS = {
205
- "campaign.status": ["campaign.id", "campaign.resource_name"],
206
- "ad_group.status": ["ad_group.id", "ad_group.resource_name"],
207
- "ad_group_criterion.status": ["ad_group_criterion.criterion_id", "ad_group_criterion.resource_name"],
208
- "ad_group_ad.status": ["ad_group_ad.ad.id", "ad_group_ad.resource_name"],
209
- "asset_group.status": ["asset_group.id", "asset_group.resource_name"],
210
- "asset_group_asset.status": ["asset_group_asset.resource_name"],
211
- "campaign_asset.status": ["campaign_asset.resource_name"],
212
- "ad_group_asset.status": ["ad_group_asset.resource_name"]
213
- };
214
- function whereClause(query) {
215
- const match = query.match(/\bWHERE\b([\s\S]*)$/i);
216
- if (!match?.[1]) return "";
217
- let rest = match[1];
218
- for (const trailing of [/\bORDER\s+BY\b/i, /\bLIMIT\b/i, /\bPARAMETERS\b/i]) {
219
- const idx = rest.search(trailing);
220
- if (idx !== -1) rest = rest.slice(0, idx);
221
- }
222
- return rest;
223
- }
224
- function selectClause(query) {
225
- return query.split(/\bFROM\b/i)[0] ?? "";
226
- }
227
- function mentions(clause, field) {
228
- return new RegExp(`(?<![\\w.])${field.replace(/\./g, "\\.")}\\b`, "i").test(clause);
229
- }
230
- function analyzeServingChain(query) {
231
- const resource = fromResource(query);
232
- const chain = resource ? SERVING_CHAINS[resource] : void 0;
233
- if (!chain) return null;
234
- const where = whereClause(query);
235
- if (/ad_group_criterion\.negative\s*=\s*TRUE/i.test(where)) return null;
236
- const unscoped = chain.filter((rung) => {
237
- if (mentions(where, rung)) return false;
238
- return !(RUNG_PIN_FIELDS[rung] ?? []).some((pin) => mentions(where, pin));
239
- });
240
- const assertsServing = chain.some(
241
- (rung) => new RegExp(`${rung.replace(/\./g, "\\.")}\\s*=\\s*'ENABLED'`, "i").test(where)
242
- );
243
- return { chain, unscoped, assertsServing };
244
- }
245
- function rejectPartialChain(query, customerId, analysis) {
246
- if (!analysis.assertsServing || analysis.unscoped.length === 0) return null;
247
- const added = analysis.unscoped.map((rung) => `${rung} = 'ENABLED'`).join(" AND ");
248
- const fixed = addRequiredAncestorFields(query.replace(/\bWHERE\b/i, `WHERE ${added} AND`)).query;
249
- return {
250
- ok: false,
251
- error: {
252
- code: "INCOMPLETE_STATUS_CHAIN",
253
- message: `This query filters on serving status but leaves ${analysis.unscoped.join(", ")} unscoped. Google Ads has no single serving flag \u2014 a row is live only when its whole chain (${analysis.chain.join(" \u2192 ")}) is ENABLED, so rows under a paused parent will come back looking live.`,
254
- fix: {
255
- action: "retry_with_modified_query",
256
- correctedCommand: buildCommand(fixed, customerId),
257
- explanation: `Add the missing rungs: ${added}. To look at paused entities on purpose, scope every rung explicitly instead (e.g. ${analysis.unscoped.map((rung) => `${rung} != 'REMOVED'`).join(" AND ")}), or use --preset ... --include-paused.`
258
- },
259
- retryable: false
260
- }
261
- };
262
- }
263
- function annotateUnscopedChain(query, analysis) {
264
- if (analysis.assertsServing || analysis.unscoped.length === 0) return { query, warnings: [] };
265
- const select = selectClause(query);
266
- const missing = analysis.unscoped.filter((rung) => !mentions(select, rung));
267
- if (missing.length === 0) return { query, warnings: [] };
268
- return {
269
- query: query.replace(/SELECT\s+/i, `SELECT ${missing.join(", ")}, `),
270
- warnings: [
271
- {
272
- code: "SERVING_STATUS_ADDED",
273
- message: `Added ${missing.join(", ")} to SELECT \u2014 this query does not scope ${analysis.unscoped.join(", ")}, so it returns paused-parent rows that are not serving. Read those columns before calling any row live; filter every rung = 'ENABLED' to get serving rows only.`
274
- }
275
- ]
276
- };
277
- }
278
- var SINGLE_ROW_RESOURCES = ["customer"];
279
- function fromResource(query) {
280
- const match = query.match(/\bFROM\s+([A-Za-z_][A-Za-z0-9_]*)/i);
281
- return match?.[1]?.toLowerCase() ?? null;
282
- }
283
- function isSingleRowRead(query) {
284
- const resource = fromResource(query);
285
- if (!resource || !SINGLE_ROW_RESOURCES.includes(resource)) return false;
286
- return !/\bsegments\./i.test(selectClause(query));
287
- }
288
- var SEGMENTING_ANCESTORS = {
289
- campaign_budget: ["campaign"],
290
- campaign_asset: ["campaign"],
291
- ad_group_asset: ["campaign", "ad_group"]
292
- };
293
- function missingRequiredSelectFields(query) {
294
- const ancestors = SEGMENTING_ANCESTORS[fromResource(query) ?? ""];
295
- if (!ancestors) return [];
296
- const select = selectClause(query);
297
- const where = query.split(/\bWHERE\b/i)[1] ?? "";
298
- const filtered = ancestors.flatMap(
299
- (ancestor) => where.match(new RegExp(`(?<![\\w.])${ancestor}\\.[\\w.]+`, "g")) ?? []
300
- );
301
- return [...new Set(filtered)].filter((field) => !mentions(select, field));
302
- }
303
- function addRequiredAncestorFields(query) {
304
- const missing = missingRequiredSelectFields(query);
305
- if (missing.length === 0) return { query, warnings: [] };
306
- return {
307
- query: query.replace(/SELECT\s+/i, `SELECT ${missing.join(", ")}, `),
308
- warnings: [
309
- {
310
- code: "REQUIRED_FIELD_ADDED",
311
- message: `Added ${missing.join(", ")} to SELECT \u2014 ${fromResource(query)} queries must select the ancestor fields used in WHERE`
312
- }
313
- ]
314
- };
315
- }
316
- function applyAutoFixes(query, limit) {
317
- let corrected = query;
318
- const warnings = [];
319
- if (/(?<![\w.])keyword\.text\b/.test(corrected)) {
320
- corrected = corrected.replace(/(?<![\w.])keyword\.text\b/g, "ad_group_criterion.keyword.text");
321
- warnings.push({ code: "FIELD_RENAMED", message: "keyword.text \u2192 ad_group_criterion.keyword.text" });
322
- }
323
- if (/(?<![\w.])keyword\.match_type\b/.test(corrected)) {
324
- corrected = corrected.replace(/(?<![\w.])keyword\.match_type\b/g, "ad_group_criterion.keyword.match_type");
325
- warnings.push({ code: "FIELD_RENAMED", message: "keyword.match_type \u2192 ad_group_criterion.keyword.match_type" });
326
- }
327
- if (/shopping_performance_view\.product_\w+/.test(corrected)) {
328
- corrected = corrected.replace(/shopping_performance_view\.product_(\w+)/g, "segments.product_$1");
329
- warnings.push({ code: "FIELD_RENAMED", message: "shopping_performance_view.product_* \u2192 segments.product_*" });
330
- }
331
- if (/asset\.\w+_asset\.final_(mobile_)?urls\b/.test(corrected)) {
332
- corrected = corrected.replace(/asset\.\w+_asset\.final_(mobile_)?urls\b/g, "asset.final_$1urls");
333
- warnings.push({ code: "FIELD_RENAMED", message: "asset.<type>_asset.final_urls \u2192 asset.final_urls" });
334
- }
335
- const ancestorFix = addRequiredAncestorFields(corrected);
336
- corrected = ancestorFix.query;
337
- warnings.push(...ancestorFix.warnings);
338
- if (/campaign\.status\s*=\s*'ACTIVE'/i.test(corrected)) {
339
- corrected = corrected.replace(/campaign\.status\s*=\s*'ACTIVE'/gi, "campaign.status = 'ENABLED'");
340
- warnings.push({ code: "ENUM_CORRECTED", message: "campaign.status ACTIVE \u2192 ENABLED" });
341
- }
342
- if (/ad_group\.status\s*=\s*'ACTIVE'/i.test(corrected)) {
343
- corrected = corrected.replace(/ad_group\.status\s*=\s*'ACTIVE'/gi, "ad_group.status = 'ENABLED'");
344
- warnings.push({ code: "ENUM_CORRECTED", message: "ad_group.status ACTIVE \u2192 ENABLED" });
345
- }
346
- if (!/\bLIMIT\b/i.test(corrected)) {
347
- const effectiveLimit = limit ?? 200;
348
- corrected = `${corrected.trimEnd()} LIMIT ${effectiveLimit}`;
349
- if (!isSingleRowRead(corrected)) {
350
- warnings.push({ code: "AUTO_LIMIT", message: `Added LIMIT ${effectiveLimit}. Use --limit to override.` });
351
- }
352
- }
353
- return { query: corrected, warnings };
354
- }
355
- var DURING_CLAUSE = /(?<=[a-z_]\.[a-z_.]+\s+)DURING\s+([A-Za-z0-9_]+)/gi;
356
- function rejectUnsupportedDuring(query, customerId) {
357
- const unsupported = [...query.matchAll(DURING_CLAUSE)].map((match) => match[1] ?? "").filter((literal2) => !isDuringLiteral(literal2));
358
- const literal = unsupported[0];
359
- if (literal === void 0) return null;
360
- const now = /* @__PURE__ */ new Date();
361
- const between = equivalentBetween(literal, now);
362
- const fixed = unsupported.every((l) => equivalentBetween(l, now) !== null) ? query.replace(
363
- DURING_CLAUSE,
364
- (clause, l) => isDuringLiteral(l) ? clause : equivalentBetween(l, now) ?? clause
365
- ) : void 0;
366
- return {
367
- ok: false,
368
- error: {
369
- code: "INVALID_DATE_RANGE",
370
- message: `DURING ${literal} is not a Google Ads date range, so Google would refuse this query.`,
371
- fix: {
372
- action: "narrow_date_range",
373
- ...fixed ? { correctedCommand: buildCommand(fixed, customerId) } : {},
374
- explanation: duringLiteralExplanation(literal, between)
375
- },
376
- retryable: false
377
- }
378
- };
379
- }
380
- function rejectOversizedLimit(query, customerId) {
381
- const match = query.match(/\bLIMIT\s+(\d+)\s*$/i);
382
- if (!match || Number(match[1]) <= GOOGLE_ADS_QUERY_MAX_PAGE_SIZE) return null;
383
- const fixed = query.replace(/\bLIMIT\s+\d+\s*$/i, `LIMIT ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}`);
384
- return {
385
- ok: false,
386
- error: {
387
- code: "VALIDATION_ERROR",
388
- message: `LIMIT ${match[1]} is more rows than one read can return (${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}).`,
389
- fix: {
390
- action: "retry_with_flag",
391
- correctedCommand: buildCommand(fixed, customerId),
392
- explanation: `One query returns at most ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE} rows. For more, split the read into narrower queries \u2014 a shorter BETWEEN range each, or one campaign each \u2014 write each with --out, and combine the files.`
393
- },
394
- retryable: false
395
- }
396
- };
397
- }
398
- var WHERE_OPERATOR = /(?<![\w.])([a-z_]+(?:\.[a-z_]+)+)\s*(CONTAINS\s+(?:ALL|ANY|NONE)|IS\s+NOT\s+NULL|IS\s+NULL|NOT\s+LIKE|NOT\s+IN|NOT\s+REGEXP_MATCH|REGEXP_MATCH|LIKE|IN|BETWEEN|DURING|!=|<=|>=|=|<|>)/gi;
399
- function escapeRegExp(text) {
400
- return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
401
- }
402
- function withoutNullTest(query, field) {
403
- const test = `${escapeRegExp(field)}\\s+IS\\s+(?:NOT\\s+)?NULL\\b`;
404
- const dropped = query.replace(new RegExp(`\\bWHERE\\s+${test}\\s+AND\\s+`, "i"), "WHERE ").replace(new RegExp(`\\s+AND\\s+${test}`, "i"), "").replace(new RegExp(`\\s*\\bWHERE\\s+${test}`, "i"), "");
405
- return mentions(selectClause(dropped), field) ? dropped : dropped.replace(/SELECT\s+/i, `SELECT ${field}, `);
406
- }
407
- function asListCondition(query, field) {
408
- const condition = new RegExp(
409
- `(?<![\\w.])${escapeRegExp(field)}\\s*(NOT\\s+IN\\b|IN\\b|!=|=)\\s*('[^']*'|\\([^)]*\\))`,
410
- "i"
411
- );
412
- const match = query.match(condition);
413
- if (!match) return null;
414
- const [, operator = "", value = ""] = match;
415
- const contains = /^(=|IN)$/i.test(operator.trim()) ? "CONTAINS ANY" : "CONTAINS NONE";
416
- const values = value.startsWith("(") ? value : `(${value})`;
417
- return query.replace(condition, `${field} ${contains} ${values}`);
418
- }
419
- function rejectListFieldOperator(query, customerId) {
420
- const where = whereClause(query).replace(/'[^']*'/g, "''");
421
- const refusals = [...where.matchAll(WHERE_OPERATOR)].map(([, field = "", operator = ""]) => ({
422
- field: field.toLowerCase(),
423
- operator: operator.toUpperCase().replace(/\s+/g, " ")
424
- })).filter(({ field, operator }) => LIST_FIELDS.has(field) && !operator.startsWith("CONTAINS"));
425
- const first = refusals[0];
426
- if (!first) return null;
427
- const fixed = refusals.reduce(
428
- (corrected, { field, operator }) => corrected === null ? null : operator.startsWith("IS ") ? withoutNullTest(corrected, field) : asListCondition(corrected, field),
429
- query
430
- );
431
- return {
432
- ok: false,
433
- error: {
434
- code: "INVALID_OPERATOR",
435
- message: `${first.operator} cannot be used on ${first.field}: it is a list field, so Google would refuse this query.`,
436
- fix: {
437
- action: "change_operator",
438
- ...fixed ? { correctedCommand: buildCommand(fixed, customerId) } : {},
439
- explanation: listFieldGuidance(first.field)
440
- },
441
- retryable: false
442
- }
443
- };
444
- }
445
- function rejectContainsCall(query, customerId) {
446
- const containsMatch = query.match(/CONTAINS\s*\(\s*([^,]+),\s*'([^']+)'\s*\)/i);
447
- if (!containsMatch) return null;
448
- const field = containsMatch[1]?.trim();
449
- const value = containsMatch[2] ?? "";
450
- const fixed = query.replace(/CONTAINS\s*\(\s*[^,]+,\s*'[^']+'\s*\)/i, `${field} LIKE '%${value}%'`);
451
- return {
452
- ok: false,
453
- error: {
454
- code: "INVALID_OPERATOR",
455
- message: "GAQL does not support CONTAINS. Use LIKE with % wildcards.",
456
- fix: {
457
- action: "change_operator",
458
- correctedCommand: buildCommand(fixed, customerId),
459
- explanation: "GAQL uses LIKE '%value%' for substring matching, not CONTAINS()"
460
- },
461
- retryable: false
462
- }
463
- };
464
- }
465
- function validatePreflight(query, customerId, limit) {
466
- const warnings = [];
467
- const corrected = query;
468
- const firstWord = corrected.trim().split(/\s+/)[0]?.toUpperCase();
469
- if (firstWord && firstWord !== "SELECT") {
470
- return {
471
- valid: false,
472
- warnings: [],
473
- error: {
474
- ok: false,
475
- error: {
476
- code: "READ_ONLY",
477
- message: `Only SELECT queries are allowed. Got: ${firstWord}`,
478
- fix: {
479
- action: "reject",
480
- explanation: "This CLI only supports GAQL SELECT queries for reading data"
481
- },
482
- retryable: false
483
- }
484
- }
485
- };
486
- }
487
- const openDateMatch = corrected.match(/segments\.date\s*>=\s*'(\d{4}-\d{2}-\d{2})'/i);
488
- if (openDateMatch && !/BETWEEN/i.test(corrected)) {
489
- const startDate = openDateMatch[1] ?? "";
490
- const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
491
- const fixed = corrected.replace(
492
- /segments\.date\s*>=\s*'(\d{4}-\d{2}-\d{2})'/i,
493
- `segments.date BETWEEN '${startDate}' AND '${today}'`
494
- );
495
- return {
496
- valid: false,
497
- warnings: [],
498
- error: {
499
- ok: false,
500
- error: {
501
- code: "OPEN_ENDED_DATE",
502
- message: "Open-ended date ranges are not supported. Use BETWEEN or DURING.",
503
- fix: {
504
- action: "narrow_date_range",
505
- correctedCommand: buildCommand(fixed, customerId),
506
- explanation: "Use BETWEEN with explicit start and end dates"
507
- },
508
- retryable: false
509
- }
510
- }
511
- };
512
- }
513
- for (const reject of [rejectContainsCall, rejectListFieldOperator, rejectUnsupportedDuring, rejectOversizedLimit]) {
514
- const rejection2 = reject(corrected, customerId);
515
- if (rejection2) return { valid: false, warnings: [], error: rejection2 };
516
- }
517
- if (/\bsegments\.conversion_action_name\b/i.test(corrected) && /\bmetrics\.cost_micros\b/i.test(corrected)) {
518
- return {
519
- valid: false,
520
- warnings: [],
521
- error: {
522
- ok: false,
523
- error: {
524
- code: "INCOMPATIBLE_FIELDS",
525
- message: "segments.conversion_action_name cannot be selected with metrics.cost_micros in one GAQL query.",
526
- fix: {
527
- action: "split_query",
528
- explanation: "Run one campaign spend query with metrics.cost_micros and a separate conversion-action query without cost metrics, then join the results by campaign."
529
- },
530
- retryable: false
531
- }
532
- }
533
- };
534
- }
535
- if (/FROM\s+ad_group_criterion\b/i.test(corrected) && !/ad_group_criterion\.negative/i.test(corrected)) {
536
- warnings.push({
537
- code: "NEGATIVE_FIELD_MISSING",
538
- message: "ad_group_criterion returns BOTH positive and negative keywords. Add ad_group_criterion.negative to SELECT or filter with WHERE ad_group_criterion.negative = FALSE (positives) / TRUE (negatives). Use --preset positive-keywords or negative-keywords instead."
539
- });
540
- }
541
- const { query: autoFixed, warnings: autoFixWarnings } = applyAutoFixes(corrected, limit);
542
- warnings.push(...autoFixWarnings);
543
- const analysis = analyzeServingChain(autoFixed);
544
- if (!analysis) return { valid: true, correctedQuery: autoFixed, warnings };
545
- const rejection = rejectPartialChain(autoFixed, customerId, analysis);
546
- if (rejection) return { valid: false, warnings: [], error: rejection };
547
- const annotated = annotateUnscopedChain(autoFixed, analysis);
548
- warnings.push(...annotated.warnings);
549
- return { valid: true, correctedQuery: annotated.query, warnings };
550
- }
551
-
552
- // src/commands/ads/google/conversion-mix.ts
553
- var CONVERSION_METRICS = [
554
- "METRICS.CONVERSIONS",
555
- "METRICS.ALL_CONVERSIONS",
556
- "METRICS.CONVERSIONS_VALUE",
557
- "METRICS.ALL_CONVERSIONS_VALUE",
558
- "METRICS.COST_PER_CONVERSION",
559
- "METRICS.COST_PER_ALL_CONVERSIONS",
560
- "METRICS.CONVERSIONS_FROM_INTERACTIONS_RATE",
561
- "METRICS.ALL_CONVERSIONS_FROM_INTERACTIONS_RATE",
562
- "METRICS.VALUE_PER_CONVERSION",
563
- "METRICS.VALUE_PER_ALL_CONVERSIONS"
564
- ];
565
- var CONVERSION_SEGMENTS = ["SEGMENTS.CONVERSION_ACTION_NAME", "SEGMENTS.CONVERSION_ACTION="];
566
- var CAMPAIGN_EQUALITY = /\bCAMPAIGN\.(ID|NAME|RESOURCE_NAME)\s*=/;
567
- function whereClause2(upperQuery) {
568
- const whereIdx = upperQuery.indexOf(" WHERE ");
569
- if (whereIdx === -1) return "";
570
- let rest = upperQuery.slice(whereIdx + 7);
571
- for (const trailing of [" ORDER BY ", " GROUP BY ", " LIMIT ", " PARAMETERS "]) {
572
- const idx = rest.indexOf(trailing);
573
- if (idx !== -1) rest = rest.slice(0, idx);
574
- }
575
- return rest;
576
- }
577
- function conversionMixWarnings(finalQuery) {
578
- const upper = ` ${finalQuery.toUpperCase().replace(/\s+/g, " ")} `;
579
- const readsConversions = CONVERSION_METRICS.some((metric) => upper.includes(metric));
580
- if (!readsConversions) return [];
581
- if (CONVERSION_SEGMENTS.some((segment) => upper.includes(segment))) return [];
582
- if (CAMPAIGN_EQUALITY.test(whereClause2(upper))) return [];
583
- if (isSingleRowRead(finalQuery)) return [];
584
- return [
585
- {
586
- code: "CONVERSION_MIX",
587
- message: "MIXED CONVERSION ACTIONS \u2014 this read covers more than one campaign, and a campaign's conversion figures count whatever conversion actions are primary for it. Those differ campaign by campaign (a webinar registration, an info request, a CRM-stage SQL), so a total across these rows adds different events and a conversion rate from one campaign is not comparable with another's. Before totalling or comparing, re-run segmented by segments.conversion_action_name and check the campaigns you are putting side by side count the same action. If they do not, compare only within one action \u2014 and carry that caveat into anything you write for the user, not just the analysis."
588
- }
589
- ];
590
- }
591
-
592
- // src/commands/ads/google/keyword-serving.ts
593
- var BELOW_FIRST_PAGE_BID = "AD_GROUP_CRITERION_BELOW_FIRST_PAGE_BID";
594
- var ACTIONABLE_REASONS = {
595
- [BELOW_FIRST_PAGE_BID]: {
596
- label: "Below first page bid",
597
- advice: "raise the max CPC (keywords update --cpc-bid) to at least the first-page estimate, or move the ad group onto a smart bidding strategy that sets the bid itself"
598
- },
599
- AD_GROUP_CRITERION_LOW_QUALITY: {
600
- label: "Low quality score",
601
- advice: "a bid raise does not lift quality \u2014 tighten ad relevance to the keyword and the landing page it points at (ad_group_criterion.quality_info.* breaks the score into its three parts)"
602
- },
603
- AD_GROUP_CRITERION_RARELY_SERVED: {
604
- label: "Rarely served",
605
- advice: "too few people search this term \u2014 broaden the match type or drop it, don't bid it up"
606
- },
607
- AD_GROUP_CRITERION_DISAPPROVED: {
608
- label: "Disapproved",
609
- advice: "select ad_group_criterion.disapproval_reasons to see which policy blocked it"
610
- },
611
- AD_GROUP_CRITERION_RESTRICTED: {
612
- label: "Restricted",
613
- advice: "policy limits where and to whom this keyword may show"
614
- },
615
- AD_GROUP_CRITERION_UNDER_REVIEW: {
616
- label: "Under review",
617
- advice: "waiting on Google's review \u2014 nothing to change yet"
618
- },
619
- AD_GROUP_CRITERION_PENDING_REVIEW: {
620
- label: "Pending review",
621
- advice: "waiting on Google's review \u2014 nothing to change yet"
622
- },
623
- AD_GROUP_CRITERION_PAUSED_DUE_TO_LOW_ACTIVITY: {
624
- label: "Auto-paused for low activity",
625
- advice: "Google paused it after prolonged low serving \u2014 resume it only alongside a change that gives it traffic"
626
- }
627
- };
628
- var REASON_ORDER = Object.keys(ACTIONABLE_REASONS);
629
- var MAX_NAMED_KEYWORDS = 5;
630
- function toMicros(value) {
631
- if (typeof value === "number" && Number.isFinite(value)) return value;
632
- if (typeof value === "string" && value.trim() !== "" && Number.isFinite(Number(value))) return Number(value);
633
- return null;
634
- }
635
- function formatMoney(micros) {
636
- return (micros / 1e6).toFixed(2);
637
- }
638
- function keywordLabel(row) {
639
- const text = row["ad_group_criterion.keyword.text"];
640
- const id = row["ad_group_criterion.criterion_id"];
641
- const name = typeof text === "string" && text !== "" ? text : id == null ? "(unnamed keyword)" : `criterion ${id}`;
642
- const adGroup = row["ad_group.name"];
643
- return typeof adGroup === "string" && adGroup !== "" ? `${name} (ad group ${adGroup})` : name;
644
- }
645
- function keywordKey(row) {
646
- const adGroup = row["ad_group.id"] ?? row["ad_group.name"] ?? "";
647
- const criterion = row["ad_group_criterion.criterion_id"] ?? row["ad_group_criterion.keyword.text"] ?? "";
648
- return `${String(adGroup)}~${String(criterion)}` === "~" ? keywordLabel(row) : `${adGroup}~${criterion}`;
649
- }
650
- function reasonsOn(row) {
651
- const raw = row["ad_group_criterion.primary_status_reasons"];
652
- if (!Array.isArray(raw)) return null;
653
- return raw.filter((r) => typeof r === "string");
654
- }
655
- function bidShortfall(row) {
656
- const bid = toMicros(row["ad_group_criterion.effective_cpc_bid_micros"] ?? row["ad_group_criterion.cpc_bid_micros"]);
657
- const firstPage = toMicros(row["ad_group_criterion.position_estimates.first_page_cpc_micros"]);
658
- if (bid == null || firstPage == null || bid >= firstPage) return null;
659
- return `bids ${formatMoney(bid)} against a ${formatMoney(firstPage)} first-page estimate`;
660
- }
661
- function limitsOn(row, options) {
662
- const reasons = reasonsOn(row);
663
- const shortfall = bidShortfall(row);
664
- const label = keywordLabel(row);
665
- const applicable = reasons ? reasons.filter((reason) => reason in ACTIONABLE_REASONS) : options.statusReasonsSelected || shortfall === null ? [] : [BELOW_FIRST_PAGE_BID];
666
- return applicable.map((reason) => ({
667
- reason,
668
- detail: reason === BELOW_FIRST_PAGE_BID && shortfall ? `"${label}" ${shortfall}` : `"${label}"`
669
- }));
670
- }
671
- function describeLimit(reason, details) {
672
- const named = details.slice(0, MAX_NAMED_KEYWORDS).join("; ");
673
- const rest = details.length > MAX_NAMED_KEYWORDS ? ` (+${details.length - MAX_NAMED_KEYWORDS} more)` : "";
674
- const { label, advice } = ACTIONABLE_REASONS[reason];
675
- return `${label} \u2014 ${details.length}: ${named}${rest}. Fix: ${advice}.`;
676
- }
677
- function collectKeywordLimits(rows, options, acc = { detailsByReason: /* @__PURE__ */ new Map(), keywords: /* @__PURE__ */ new Set() }) {
678
- for (const row of rows) {
679
- const limits = limitsOn(row, options);
680
- if (limits.length === 0) continue;
681
- acc.keywords.add(keywordKey(row));
682
- for (const { reason, detail } of limits) {
683
- const bucket = acc.detailsByReason.get(reason);
684
- if (bucket) bucket.push(detail);
685
- else acc.detailsByReason.set(reason, [detail]);
686
- }
687
- }
688
- return acc;
689
- }
690
- function renderKeywordLimits(limits) {
691
- if (limits.detailsByReason.size === 0) return [];
692
- const sentences = REASON_ORDER.filter((reason) => limits.detailsByReason.has(reason)).map(
693
- (reason) => describeLimit(reason, limits.detailsByReason.get(reason) ?? [])
694
- );
695
- const count = limits.keywords.size;
696
- return [
697
- {
698
- code: "KEYWORD_SERVING_LIMITED",
699
- message: `${count} ${count === 1 ? "keyword is" : "keywords are"} limited and not getting the traffic they could. ${sentences.join(" ")} Amounts are in the account currency (baker ads google currency).`
700
- }
701
- ];
702
- }
703
- function keywordServingWarnings(rows, options) {
704
- return renderKeywordLimits(collectKeywordLimits(rows, options));
705
- }
706
-
707
- // src/commands/ads/google/query.ts
708
- registerSchema({
709
- command: "ads.google.query",
710
- description: "Run a GAQL (Google Ads Query Language) query. The most powerful command \u2014 supports any valid SELECT statement. Use --preset for common queries without writing GAQL.",
711
- args: {
712
- query: { type: "string", description: "GAQL SELECT query string", required: false },
713
- "customer-id": {
714
- type: "string",
715
- description: "Google Ads customer ID (10 digits, no dashes). Falls back to BAKER_GOOGLE_ADS_CUSTOMER_ID env var.",
716
- required: false
717
- },
718
- preset: {
719
- type: "string",
720
- description: "Named query preset. Reads (campaign-performance, conversions-by-action, keyword-analysis, keyword-serving, positive-keywords, negative-keywords, negative-keyword-lists, negative-list-attachments, search-terms, ad-copy-performance, asset-performance, shopping-products, account-summary). Presets return only actually-serving entities (enabled campaign AND ad group AND ad) by default \u2014 pass --include-paused to include paused ones.",
721
- required: false
722
- },
723
- "date-range": {
724
- type: "string",
725
- description: "Date range for presets: a Google date literal (TODAY, YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH \u2026) or BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'. Google has no LAST_90_DAYS \u2014 use BETWEEN for any other window.",
726
- required: false
727
- },
728
- "include-paused": {
729
- type: "boolean",
730
- description: "Include paused entities in preset results. Off by default: presets return only actually-serving entities. Google Ads has no single serving flag \u2014 an entity serves only when its whole chain (campaign, ad group, ad) is ENABLED, so recommendations should target serving entities unless the user asks about paused ones.",
731
- required: false
732
- },
733
- limit: {
734
- type: "number",
735
- description: "Max rows in ONE page (default 200), AND the LIMIT added to a query that has none \u2014 so it caps the whole read with --all too. Values up to 8192 are accepted \u2014 the most one read can return. Any read that fills this cap comes back flagged TRUNCATED_RESULTS \u2014 never count or total from one.",
736
- required: false,
737
- default: 200
738
- },
739
- "list-presets": { type: "boolean", description: "List all available query presets", required: false },
740
- cursor: { type: "string", description: "Pagination cursor from previous response", required: false },
741
- all: {
742
- type: "boolean",
743
- description: "Follow every page until the data set is exhausted (use with --out for large datasets). Needed for a read you may count or total, but not sufficient: it exhausts the pages, not the statement's LIMIT, so pair it with a LIMIT in the statement above the row count you expect (at most 8192 \u2014 split bigger reads into narrower queries) and check the read came back without TRUNCATED_RESULTS.",
744
- required: false
745
- },
746
- out: {
747
- type: "string",
748
- description: "Write data to file (format from extension: .csv, .jsonl, .json)",
749
- required: false
750
- },
751
- append: { type: "boolean", description: "Append to existing file (skip CSV headers)", required: false },
752
- output: {
753
- type: "string",
754
- description: "Output format: json|csv|jsonl|md",
755
- required: false,
756
- default: "json",
757
- enum: ["json", "csv", "jsonl", "md"]
758
- },
759
- "no-cache": { type: "boolean", description: "Skip cache, hit API directly", required: false },
760
- full: {
761
- type: "boolean",
762
- description: "Include the field description glossary in the JSON envelope. Off by default \u2014 rows already carry the data; only ask for this when you need a field's meaning explained.",
763
- required: false
764
- }
765
- }
766
- });
767
- function extractFields(rows) {
768
- const keys = /* @__PURE__ */ new Set();
769
- foldObservedFields(rows, keys);
770
- return [...keys];
771
- }
772
- function resultColumns(gaql, rows) {
773
- const observed = extractFields(rows);
774
- const columns = [];
775
- for (const field of parseSelectedFields(gaql)) {
776
- const leaves = observed.filter((key) => key.startsWith(`${field}.`));
777
- columns.push(...leaves.length > 0 ? leaves : [field]);
778
- }
779
- for (const key of observed) columns.push(key);
780
- return [...new Set(columns)];
781
- }
782
- function isCsvPath(filePath) {
783
- return filePath.split(".").pop()?.toLowerCase() === "csv";
784
- }
785
- function writeRowsToFile(filePath, rows, fields, append) {
786
- if (isCsvPath(filePath)) {
787
- if (!append || !existsSync(filePath)) {
788
- writeFileSync(filePath, `${toCsvRow(fields)}
789
- `, "utf-8");
790
- }
791
- const csvRows = rows.map((row) => toCsvRow(fields.map((f) => String(row[f] ?? ""))));
792
- appendFileSync(filePath, `${csvRows.join("\n")}
793
- `, "utf-8");
794
- } else if (filePath.split(".").pop()?.toLowerCase() === "jsonl") {
795
- const lines = rows.map((row) => JSON.stringify(row));
796
- if (append && existsSync(filePath)) {
797
- appendFileSync(filePath, `${lines.join("\n")}
798
- `, "utf-8");
799
- } else {
800
- writeFileSync(filePath, `${lines.join("\n")}
801
- `, "utf-8");
802
- }
803
- } else if (append && existsSync(filePath)) {
804
- const existing = JSON.parse(readFileSync(filePath, "utf-8"));
805
- writeFileSync(filePath, JSON.stringify([...existing, ...rows], null, 2), "utf-8");
806
- } else {
807
- writeFileSync(filePath, JSON.stringify(rows, null, 2), "utf-8");
808
- }
809
- }
810
- function effectiveRowLimit(finalQuery, limit, all = false) {
811
- if (isSingleRowRead(finalQuery)) return void 0;
812
- const match = finalQuery.match(/\bLIMIT\s+(\d+)/i);
813
- const statementLimit = match?.[1] ? Number(match[1]) : void 0;
814
- if (all) return statementLimit;
815
- return statementLimit === void 0 ? limit : Math.min(limit, statementLimit);
816
- }
817
- function warningLines(warnings, format) {
818
- return warnings.map((w) => {
819
- const message = w.message.replace(/\s*\n\s*/g, " ");
820
- if (format === "jsonl") return JSON.stringify({ _baker_warning: { code: w.code, message } });
821
- if (format === "md") return `> **${w.code}** \u2014 ${message}`;
822
- return `# baker ${w.code}: ${message}`;
823
- });
824
- }
825
- function completenessWarnings(read) {
826
- const cap = read.effectiveLimit;
827
- const filledTheCap = cap !== void 0 && cap > 0 && read.rowCount >= cap;
828
- if (!read.hasMore && !filledTheCap) return [];
829
- const cause = read.hasMore ? `More rows are waiting: the account returned a next-page cursor this run did not follow.` : `The ${read.rowCount} rows returned exactly fill the row cap in force (${cap}).`;
830
- const atPageCap = cap !== void 0 && cap >= GOOGLE_ADS_QUERY_MAX_PAGE_SIZE;
831
- const fix = atPageCap ? `${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE} rows is the most one read can return \u2014 split it into narrower queries (a shorter BETWEEN range each, or one campaign each), write each with --out, and combine the files.` : read.all ? `Every page was followed, so the cap is the LIMIT in the statement itself \u2014 raise it above ${cap}, or drop it and pass a larger --limit (up to ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}), then re-run.` : `Re-run with --all --out <file> to page through everything, or raise --limit above ${cap} (up to ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}).`;
832
- return [
833
- {
834
- code: "TRUNCATED_RESULTS",
835
- message: `INCOMPLETE READ \u2014 ${cause} These rows are a page, not the data set. Don't count, total or describe them as the whole picture. ${fix}`
836
- }
837
- ];
838
- }
839
- function buildQueryEnvelope(rows, fieldDescs, warnings, options) {
840
- const notice = summariseWarnings(warnings);
841
- return {
842
- ok: true,
843
- ...options.cached ? { cached: true } : {},
844
- ...warnings.length > 0 ? { warnings } : {},
845
- ...options.nextCursor ? { pagination: { hasMore: true, cursor: options.nextCursor } } : {},
846
- data: rows,
847
- ...options.full && Object.keys(fieldDescs).length > 0 ? { fields: fieldDescs } : {},
848
- ...notice ? { notice } : {}
849
- };
850
- }
851
- function summariseWarnings(warnings) {
852
- if (warnings.length === 0) return void 0;
853
- const codes = [...new Set(warnings.map((w) => w.code))].join(", ");
854
- return `Read the "warnings" above before using these rows: ${codes}.`;
855
- }
856
- function buildFileSummary(input) {
857
- const notice = summariseWarnings(input.warnings);
858
- return {
859
- ok: true,
860
- fields: {},
861
- file: input.file,
862
- rows: input.rows,
863
- complete: input.complete,
864
- ...input.warnings.length > 0 ? { warnings: input.warnings } : {},
865
- ...notice ? { notice } : {}
866
- };
867
- }
868
- var REPEAT_NOTICE_ABOVE_ROWS = 20;
869
- function emitToStderr(notices) {
870
- for (const line of notices) process.stderr.write(`${line}
871
- `);
872
- }
873
- function writeLine(line) {
874
- process.stdout.write(`${line}
875
- `);
876
- }
877
- var writeCsvRows = (rows, fields, notices) => {
878
- writeLine(toCsvRow(fields));
879
- for (const line of notices) writeLine(line);
880
- for (const row of rows) writeLine(toCsvRow(fields.map((f) => String(row[f] ?? ""))));
881
- };
882
- var writeJsonlRows = (rows, _fields, notices) => {
883
- for (const line of notices) writeLine(line);
884
- for (const row of rows) writeLine(JSON.stringify(row));
885
- };
886
- var OMITTED = "(omitted)";
887
- var OMITTED_FALSE = `false ${OMITTED}`;
888
- var OMITTED_LEGEND = `> ${OMITTED} = Google left this field off the row, which is how it sends false, 0 and "not set": the field WAS read. A field with no column here was not read.`;
889
- function mdCell(row, field, booleanColumns) {
890
- if (!(field in row)) return booleanColumns.has(field) ? OMITTED_FALSE : OMITTED;
891
- return String(row[field] ?? "").replace(/\|/g, "\\|");
892
- }
893
- var writeMdRows = (rows, fields, notices) => {
894
- const booleanColumns = new Set(fields.filter((f) => rows.some((row) => typeof row[f] === "boolean")));
895
- for (const line of notices) writeLine(line);
896
- writeLine(`| ${fields.join(" | ")} |`);
897
- writeLine(`| ${fields.map(() => "---").join(" | ")} |`);
898
- for (const row of rows) writeLine(`| ${fields.map((f) => mdCell(row, f, booleanColumns)).join(" | ")} |`);
899
- if (rows.some((row) => fields.some((f) => !(f in row)))) writeLine(OMITTED_LEGEND);
900
- };
901
- var ROW_WRITERS = { csv: writeCsvRows, jsonl: writeJsonlRows, md: writeMdRows };
902
- function writeRows(format, rows, columns, notices) {
903
- const write = ROW_WRITERS[format] ?? writeMdRows;
904
- write(rows, columns, notices);
905
- if (rows.length > REPEAT_NOTICE_ABOVE_ROWS) {
906
- for (const line of notices) writeLine(line);
907
- }
908
- }
909
- function outputResults(rows, fieldDescs, warnings, args, cached, read) {
910
- const format = args.output || "json";
911
- const allWarnings = [
912
- ...warnings,
913
- ...completenessWarnings({
914
- rowCount: rows.length,
915
- effectiveLimit: read.effectiveLimit,
916
- all: read.all,
917
- hasMore: Boolean(read.nextCursor)
918
- })
919
- ];
920
- emitToStderr(warningLines(allWarnings, "csv"));
921
- if (format === "json") {
922
- writeAdsJson(
923
- buildQueryEnvelope(rows, fieldDescs, allWarnings, {
924
- full: Boolean(args.full),
925
- cached,
926
- nextCursor: read.nextCursor
927
- })
928
- );
929
- return;
930
- }
931
- writeRows(format, rows, resultColumns(read.gaql, rows), warningLines(allWarnings, format));
932
- }
933
- function resolveGaql(args, limit) {
934
- if (args.preset) {
935
- const preset = getPreset(args.preset);
936
- if (!preset) {
937
- const available = PRESETS.map((p) => p.name).join(", ");
938
- writeAdsJson({
939
- ok: false,
940
- error: { code: "VALIDATION_ERROR", message: `Unknown preset: "${args.preset}". Available: ${available}` }
941
- });
942
- return null;
943
- }
944
- const expanded = expandPreset(preset, {
945
- dateRange: args["date-range"],
946
- limit,
947
- includePaused: Boolean(args["include-paused"])
948
- });
949
- if (expanded.dateRangeError) {
950
- writeAdsJson({
951
- ok: false,
952
- error: { code: "VALIDATION_ERROR", message: expanded.dateRangeError }
953
- });
954
- return null;
955
- }
956
- return expanded.query;
957
- }
958
- const gaql = args.query ?? "";
959
- if (!gaql) {
960
- writeAdsJson({
961
- ok: false,
962
- error: {
963
- code: "VALIDATION_ERROR",
964
- message: "Provide a GAQL query or use --preset. Run --list-presets to see options."
965
- }
966
- });
967
- return null;
968
- }
969
- return gaql;
970
- }
971
- var SERVING_HIERARCHY_RESOURCES = [
972
- "campaign",
973
- "ad_group",
974
- "ad_group_ad",
975
- "ad_group_criterion",
976
- "keyword_view",
977
- "search_term_view",
978
- "shopping_performance_view",
979
- "asset_group_asset"
980
- ].filter((resource) => !(resource in SERVING_CHAINS));
981
- function whereClause3(upperQuery) {
982
- const whereIdx = upperQuery.indexOf(" WHERE ");
983
- if (whereIdx === -1) return "";
984
- let rest = upperQuery.slice(whereIdx + 7);
985
- for (const trailing of [" ORDER BY ", " GROUP BY ", " LIMIT ", " PARAMETERS "]) {
986
- const idx = rest.indexOf(trailing);
987
- if (idx !== -1) rest = rest.slice(0, idx);
988
- }
989
- return rest;
990
- }
991
- function servingScopeWarnings(args, finalQuery) {
992
- if (args.preset) {
993
- if (!args["include-paused"]) return [];
994
- return [
995
- {
996
- code: "SERVING_SCOPE",
997
- message: "Paused entities are included (--include-paused). Only recommend changes for actually-serving entities (enabled campaign, ad group, and ad) unless the user asked about paused ones."
998
- }
999
- ];
1000
- }
1001
- const upper = finalQuery.toUpperCase();
1002
- const fromMatch = upper.match(/\bFROM\s+([A-Z_]+)/);
1003
- const resource = fromMatch?.[1]?.toLowerCase();
1004
- const hierarchical = resource ? SERVING_HIERARCHY_RESOURCES.includes(resource) : false;
1005
- const filtersStatus = whereClause3(upper).includes(".STATUS");
1006
- if (hierarchical && !filtersStatus) {
1007
- return [
1008
- {
1009
- code: "SERVING_SCOPE",
1010
- message: "This query has no status filter, so it may return paused entities that aren't actually serving. Google Ads has no single serving flag \u2014 an entity serves only when its whole chain is ENABLED. Add campaign.status = 'ENABLED' AND ad_group.status = 'ENABLED' AND ad_group_ad.status = 'ENABLED' (as applicable), or use a --preset, unless you intend to include paused entities."
1011
- }
1012
- ];
1013
- }
1014
- return [];
1015
- }
1016
- function parseSelectedFields(gaql) {
1017
- const match = gaql.match(/\bSELECT\b([\s\S]*?)\bFROM\b/i);
1018
- const list = match?.[1];
1019
- if (!list) return [];
1020
- return list.split(",").map((field) => field.trim()).filter((field) => /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z0-9_]+)*$/.test(field));
1021
- }
1022
- function foldObservedFields(rows, observed) {
1023
- for (const row of rows) {
1024
- for (const key of Object.keys(row)) observed.add(key);
1025
- }
1026
- }
1027
- function unobservedSelectedFields(gaql, rows) {
1028
- const observed = /* @__PURE__ */ new Set();
1029
- foldObservedFields(rows, observed);
1030
- return unobservedFields(gaql, observed);
1031
- }
1032
- function unobservedFields(gaql, observed) {
1033
- return parseSelectedFields(gaql).filter((field) => {
1034
- if (field.endsWith(".resource_name")) return false;
1035
- if (observed.has(field)) return false;
1036
- return ![...observed].some((key) => key.startsWith(`${field}.`));
1037
- });
1038
- }
1039
- function missingFieldWarnings(gaql, rows) {
1040
- const observed = /* @__PURE__ */ new Set();
1041
- foldObservedFields(rows, observed);
1042
- return missingFieldWarningsFor(gaql, observed, rows.length);
1043
- }
1044
- function missingFieldWarningsFor(gaql, observed, rowCount) {
1045
- if (rowCount === 0) return [];
1046
- const missing = unobservedFields(gaql, observed);
1047
- if (missing.length === 0) return [];
1048
- return [
1049
- {
1050
- code: "MISSING_FIELDS",
1051
- message: `These SELECTed fields came back on no row: ${missing.join(", ")}. Google Ads omits a field entirely when it has no value, so this does NOT mean the setting is empty \u2014 it means this read didn't observe it. Check the level that owns the setting before concluding it is unset.`
1052
- }
1053
- ];
1054
- }
1055
- function unwrittenColumnWarnings(header, observed) {
1056
- const written = new Set(header);
1057
- const unwritten = [...observed].filter((key) => !written.has(key));
1058
- if (unwritten.length === 0) return [];
1059
- return [
1060
- {
1061
- code: "UNWRITTEN_COLUMNS",
1062
- message: `The file has no column for ${unwritten.join(", ")}: the header was fixed on the first page, which carried none of them, so their values from later pages are NOT in the file. Do not read those columns as empty. SELECT these fields by name instead of their parent, or write to a .jsonl file, then re-run.`
1063
- }
1064
- ];
1065
- }
1066
- function keywordServingOptions(gaql) {
1067
- return { statusReasonsSelected: parseSelectedFields(gaql).includes("ad_group_criterion.primary_status_reasons") };
1068
- }
1069
- async function fetchAllPages(gaql, body, args, servingOptions) {
1070
- let allRows = [];
1071
- let pageToken = args.cursor;
1072
- let totalRowsWritten = 0;
1073
- let keywordLimits;
1074
- const observedFields = /* @__PURE__ */ new Set();
1075
- let fileColumns;
1076
- do {
1077
- const requestBody = { ...body };
1078
- if (pageToken) requestBody.pageToken = pageToken;
1079
- const response = await apiPost("/api/ads/google/query", requestBody);
1080
- const rows = response.rows ?? [];
1081
- pageToken = response.pageToken;
1082
- if (args.out) {
1083
- const shouldAppend = args.append || totalRowsWritten > 0;
1084
- fileColumns ??= resultColumns(gaql, rows);
1085
- writeRowsToFile(resolve(args.out), rows, fileColumns, shouldAppend);
1086
- totalRowsWritten += rows.length;
1087
- keywordLimits = collectKeywordLimits(rows, servingOptions, keywordLimits);
1088
- foldObservedFields(rows, observedFields);
1089
- } else {
1090
- allRows = allRows.concat(rows);
1091
- }
1092
- if (!args.all) break;
1093
- } while (pageToken);
1094
- return {
1095
- allRows,
1096
- lastPageToken: pageToken,
1097
- totalRowsWritten,
1098
- keywordLimits: keywordLimits ?? collectKeywordLimits([], servingOptions),
1099
- observedFields,
1100
- fileColumns: fileColumns ?? []
1101
- };
1102
- }
1103
- async function executeQuery(finalQuery, args, customerId, limit, warnings, useCache, cacheKey) {
1104
- const body = { customerId, query: finalQuery, pageSize: limit };
1105
- const managerId = getManagerIdForCustomer(customerId);
1106
- if (managerId) body.managerId = managerId;
1107
- if (args.cursor) body.pageToken = args.cursor;
1108
- if (!useCache) body.skipCache = true;
1109
- const servingOptions = keywordServingOptions(finalQuery);
1110
- const { allRows, lastPageToken, totalRowsWritten, keywordLimits, observedFields, fileColumns } = await fetchAllPages(
1111
- finalQuery,
1112
- body,
1113
- args,
1114
- servingOptions
1115
- );
1116
- if (args.out) {
1117
- const truncation = completenessWarnings({
1118
- rowCount: totalRowsWritten,
1119
- effectiveLimit: effectiveRowLimit(finalQuery, limit, Boolean(args.all)),
1120
- all: Boolean(args.all),
1121
- hasMore: Boolean(lastPageToken)
1122
- });
1123
- const fileWarnings = [
1124
- ...warnings,
1125
- ...renderKeywordLimits(keywordLimits),
1126
- ...missingFieldWarningsFor(finalQuery, observedFields, totalRowsWritten),
1127
- // Only a CSV has a header to fall out of; json and jsonl files carry every row whole.
1128
- ...isCsvPath(args.out) ? unwrittenColumnWarnings(fileColumns, observedFields) : [],
1129
- ...conversionMixWarnings(finalQuery),
1130
- ...truncation
1131
- ];
1132
- emitToStderr(warningLines(fileWarnings, "csv"));
1133
- writeAdsJson(
1134
- buildFileSummary({
1135
- file: resolve(args.out),
1136
- rows: totalRowsWritten,
1137
- warnings: fileWarnings,
1138
- complete: truncation.length === 0
1139
- })
1140
- );
1141
- return;
1142
- }
1143
- if (useCache && allRows.length > 0) {
1144
- const fields2 = extractFields(allRows);
1145
- cacheSet("queries", cacheKey, allRows, getQueryTtl(finalQuery), getFieldDescriptions(fields2));
1146
- }
1147
- const fields = extractFields(allRows);
1148
- outputResults(
1149
- allRows,
1150
- getFieldDescriptions(fields),
1151
- [
1152
- ...warnings,
1153
- ...missingFieldWarnings(finalQuery, allRows),
1154
- ...keywordServingWarnings(allRows, servingOptions),
1155
- ...conversionMixWarnings(finalQuery)
1156
- ],
1157
- args,
1158
- false,
1159
- {
1160
- gaql: finalQuery,
1161
- effectiveLimit: effectiveRowLimit(finalQuery, limit, Boolean(args.all)),
1162
- all: Boolean(args.all),
1163
- nextCursor: lastPageToken
1164
- }
1165
- );
1166
- }
1167
- function shouldReadCache(args) {
1168
- return !args["no-cache"] && !args.out;
1169
- }
1170
- var DEFAULT_QUERY_LIMIT = 200;
1171
- function parseQueryLimit(raw) {
1172
- if (raw === void 0 || raw === null || raw === "") return { ok: true, limit: DEFAULT_QUERY_LIMIT };
1173
- const limit = Number(raw);
1174
- if (Number.isInteger(limit) && limit >= 1 && limit <= GOOGLE_ADS_QUERY_MAX_PAGE_SIZE) return { ok: true, limit };
1175
- return {
1176
- ok: false,
1177
- error: {
1178
- ok: false,
1179
- error: {
1180
- code: "VALIDATION_ERROR",
1181
- message: `--limit must be a whole number from 1 to ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}, got '${String(raw)}'.`,
1182
- fix: {
1183
- action: "retry_with_flag",
1184
- explanation: `One read returns at most ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE} rows. For more, split the read into narrower queries (a shorter BETWEEN range each, or one campaign each), write each with --out, and combine the files.`
1185
- },
1186
- retryable: false
1187
- }
1188
- }
1189
- };
1190
- }
1191
- async function validateArgs(args) {
1192
- const parsedLimit = parseQueryLimit(args.limit);
1193
- if (!parsedLimit.ok) {
1194
- writeAdsJson(parsedLimit.error);
1195
- process.exit(1);
1196
- }
1197
- const { limit } = parsedLimit;
1198
- const customerId = await resolveCustomerId(args);
1199
- const gaql = resolveGaql(args, limit);
1200
- if (!gaql) {
1201
- process.exit(1);
1202
- }
1203
- const preflight = validatePreflight(gaql, customerId, limit);
1204
- if (!preflight.valid && preflight.error) {
1205
- writeAdsJson(preflight.error);
1206
- process.exit(1);
1207
- }
1208
- const finalQuery = preflight.correctedQuery ?? gaql;
1209
- return {
1210
- customerId,
1211
- limit,
1212
- finalQuery,
1213
- warnings: [...preflight.warnings, ...servingScopeWarnings(args, finalQuery)],
1214
- useCache: !args["no-cache"],
1215
- cacheKey: buildQueryCacheKey(customerId, finalQuery)
1216
- };
1217
- }
1218
- function handleQueryError(err, finalQuery, customerId) {
1219
- if (err instanceof ApiError) {
1220
- const envelope = parseApiError(err.message, finalQuery, customerId, err.code);
1221
- envelope.error.gaqlExecuted = finalQuery;
1222
- writeAdsJson(envelope);
1223
- process.exit(1);
1224
- }
1225
- writeAdsJson({
1226
- ok: false,
1227
- error: {
1228
- code: "NETWORK_ERROR",
1229
- message: err instanceof Error ? err.message : "Unexpected error",
1230
- fix: { action: "wait_and_retry", explanation: "Network error \u2014 check connectivity and retry" },
1231
- retryable: true,
1232
- gaqlExecuted: finalQuery
1233
- }
1234
- });
1235
- process.exit(1);
1236
- }
1237
- var queryCommand = defineCommand({
1238
- meta: {
1239
- name: "query",
1240
- description: `Run GAQL queries against Google Ads. Supports raw GAQL, presets, pagination, file export, and caching.
1241
-
1242
- Examples:
1243
- baker ads google query "SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_7_DAYS" --customer-id 1234567890
1244
- baker ads google query --preset campaign-performance --customer-id 1234567890
1245
- baker ads google query --preset search-terms --customer-id 1234567890 --date-range LAST_7_DAYS --out results.csv
1246
- baker ads google query --list-presets`
1247
- },
1248
- args: {
1249
- query: { type: "positional", description: "GAQL query string", required: false },
1250
- "customer-id": { type: "string", description: "Google Ads customer ID (10 digits, no dashes)", required: false },
1251
- preset: { type: "string", description: "Named query preset", required: false },
1252
- "date-range": { type: "string", description: "Date range override for presets", required: false },
1253
- "include-paused": {
1254
- type: "boolean",
1255
- description: "Include paused entities in preset results (default: serving entities only)",
1256
- required: false
1257
- },
1258
- limit: {
1259
- type: "string",
1260
- description: "Max rows in one page (default 200); without --all the read stops there",
1261
- required: false
1262
- },
1263
- "list-presets": { type: "boolean", description: "List available presets", required: false },
1264
- cursor: { type: "string", description: "Pagination cursor", required: false },
1265
- all: { type: "boolean", description: "Follow every page (use with --out for large datasets)", required: false },
1266
- out: { type: "string", description: "File path for output", required: false },
1267
- append: { type: "boolean", description: "Append to file", required: false },
1268
- output: { type: "string", description: "Format: json|csv|jsonl|md", required: false, default: "json" },
1269
- "no-cache": { type: "boolean", description: "Skip cache", required: false },
1270
- full: { type: "boolean", description: "Include the field description glossary", required: false }
1271
- },
1272
- run: async ({ args }) => {
1273
- if (args["list-presets"]) {
1274
- writeAdsJson({
1275
- ok: true,
1276
- data: PRESETS.map((p) => ({
1277
- name: p.name,
1278
- description: p.description,
1279
- defaultDateRange: p.defaultDateRange,
1280
- servingOnly: (p.statusFields?.length ?? 0) > 0,
1281
- gaql: expandPreset(p, {}).query
1282
- }))
1283
- });
1284
- return;
1285
- }
1286
- const validated = await validateArgs(args);
1287
- if (!validated) return;
1288
- const { customerId, limit, finalQuery, warnings, useCache, cacheKey } = validated;
1289
- if (shouldReadCache(args)) {
1290
- const cached = cacheGet("queries", cacheKey);
1291
- if (cached) {
1292
- const fields = extractFields(cached.data);
1293
- outputResults(
1294
- cached.data,
1295
- cached.fields ?? getFieldDescriptions(fields),
1296
- [
1297
- ...warnings,
1298
- ...missingFieldWarnings(finalQuery, cached.data),
1299
- ...keywordServingWarnings(cached.data, keywordServingOptions(finalQuery)),
1300
- ...conversionMixWarnings(finalQuery)
1301
- ],
1302
- args,
1303
- true,
1304
- {
1305
- gaql: finalQuery,
1306
- effectiveLimit: effectiveRowLimit(finalQuery, limit, Boolean(args.all)),
1307
- all: Boolean(args.all)
1308
- }
1309
- );
1310
- return;
1311
- }
1312
- }
1313
- try {
1314
- await executeQuery(finalQuery, args, customerId, limit, warnings, useCache, cacheKey);
1315
- } catch (err) {
1316
- handleQueryError(err, finalQuery, customerId);
1317
- }
1318
- }
1319
- });
1320
- export {
1321
- buildFileSummary,
1322
- buildQueryEnvelope,
1323
- completenessWarnings,
1324
- effectiveRowLimit,
1325
- keywordServingOptions,
1326
- missingFieldWarnings,
1327
- missingFieldWarningsFor,
1328
- outputResults,
1329
- parseQueryLimit,
1330
- parseSelectedFields,
1331
- queryCommand,
1332
- resultColumns,
1333
- servingScopeWarnings,
1334
- shouldReadCache,
1335
- summariseWarnings,
1336
- unobservedFields,
1337
- unobservedSelectedFields,
1338
- unwrittenColumnWarnings,
1339
- warningLines
1340
- };
1341
- //# sourceMappingURL=query-IEZRY6HV.js.map