@koda-sl/baker-cli 0.572.0 → 0.574.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1537) hide show
  1. package/README.md +43 -8
  2. package/dist/account-WFAMHUCQ.js +82 -0
  3. package/dist/account-Y7ZFEM7U.js +82 -0
  4. package/dist/account-YYB2KWLU.js +139 -0
  5. package/dist/account-assets-BFMQWV33.js +290 -0
  6. package/dist/account-level-47IS2CZB.js +611 -0
  7. package/dist/account-reads-JPQ2K343.js +219 -0
  8. package/dist/account-reads-JPQ2K343.js.map +1 -0
  9. package/dist/account-users-QAFQDSZQ.js +64 -0
  10. package/dist/account-writes-EEKHPF5I.js +68 -0
  11. package/dist/accounts-H3KO5AEN.js +119 -0
  12. package/dist/accounts-LTGUK6OV.js +76 -0
  13. package/dist/accounts-LTUEBWJL.js +115 -0
  14. package/dist/accounts-OHVZAP4D.js +498 -0
  15. package/dist/accounts-OHVZAP4D.js.map +1 -0
  16. package/dist/accounts-TFUGF7UK.js +80 -0
  17. package/dist/actions-FTIRKAAN.js +55 -0
  18. package/dist/active-entities-QWJXR4W6.js +103 -0
  19. package/dist/activecampaign-BCOEXYZ7.js +938 -0
  20. package/dist/activities-ZRP22SC2.js +75 -0
  21. package/dist/ad-group-writes-UDQ4563V.js +172 -0
  22. package/dist/ad-groups-RXT2XKSE.js +70 -0
  23. package/dist/ad-writes-SHLTL2FY.js +176 -0
  24. package/dist/add-F65GOWKP.js +85 -0
  25. package/dist/add-IALA4VRA.js +148 -0
  26. package/dist/add-ITX64WEC.js +81 -0
  27. package/dist/add-L6MKL2G2.js +107 -0
  28. package/dist/add-QGJPTGU7.js +305 -0
  29. package/dist/add-WAVXB2QA.js +97 -0
  30. package/dist/add-accounts-YTLQCSXB.js +91 -0
  31. package/dist/ads-A34INCCM.js +120 -0
  32. package/dist/ads-AKF5AT6O.js +128 -0
  33. package/dist/ads-AYXMFUIF.js +48 -0
  34. package/dist/ads-CUMOMBI3.js +79 -0
  35. package/dist/adsets-HNFBX4LB.js +182 -0
  36. package/dist/advertisers-RVTUZ53M.js +123 -0
  37. package/dist/advertisers-YTG6VA6R.js +125 -0
  38. package/dist/alerts-LZJAF4AQ.js +151 -0
  39. package/dist/alerts-LZJAF4AQ.js.map +1 -0
  40. package/dist/analytics-4YHYFRHH.js +447 -0
  41. package/dist/analytics-RLZ7BXIB.js +2397 -0
  42. package/dist/analytics-RLZ7BXIB.js.map +1 -0
  43. package/dist/animate-MBNFCDUZ.js +480 -0
  44. package/dist/approved-3W56YTOZ.js +73 -0
  45. package/dist/asset-writes-2CYNDRPU.js +50 -0
  46. package/dist/assign-JC5BK5XE.js +80 -0
  47. package/dist/audience-size-ZVRH3BEL.js +76 -0
  48. package/dist/audience-writes-JNVGUHGN.js +327 -0
  49. package/dist/audiences-KBW2UAOP.js +280 -0
  50. package/dist/audiences-OOXSXKIT.js +85 -0
  51. package/dist/audiences-S6TXNKQ2.js +106 -0
  52. package/dist/audit-JXRVO37K.js +154 -0
  53. package/dist/audit-O2RRST7B.js +88 -0
  54. package/dist/autocomplete-CBBFRPJZ.js +114 -0
  55. package/dist/avatars-GB7B2MGR.js +38 -0
  56. package/dist/bid-pricing-G4IXJRVK.js +103 -0
  57. package/dist/brand-VKQ72SRQ.js +22 -0
  58. package/dist/brief-X3FRAPUH.js +543 -0
  59. package/dist/businesses-HOAQVYRH.js +54 -0
  60. package/dist/campaign-groups-NA73I7JR.js +99 -0
  61. package/dist/campaign-writes-JYMQF6CK.js +176 -0
  62. package/dist/campaign-writes-ZOLIX3EB.js +168 -0
  63. package/dist/campaigns-DZAZIUES.js +113 -0
  64. package/dist/campaigns-EEH3VDK6.js +130 -0
  65. package/dist/campaigns-PB3QNTI4.js +111 -0
  66. package/dist/campaigns-TMHFCPAZ.js +78 -0
  67. package/dist/canvas-4EGLYNYM.js +46 -0
  68. package/dist/capabilities-JZFPET7C.js +147 -0
  69. package/dist/cards-OOKI2WSA.js +85 -0
  70. package/dist/catalog-2P422WOQ.js +66 -0
  71. package/dist/catalogs-WBXWK7NT.js +782 -0
  72. package/dist/catalogs-XFYYY3CS.js +130 -0
  73. package/dist/changes-GFJITHF6.js +167 -0
  74. package/dist/changes-GFJITHF6.js.map +1 -0
  75. package/dist/chatgpt-KNLATOZ6.js +47 -0
  76. package/dist/chats-CE7RKD6W.js +589 -0
  77. package/dist/check-SIMBAMXJ.js +107 -0
  78. package/dist/chunk-2NXACVED.js +169 -0
  79. package/dist/chunk-2S3VIE7D.js +312 -0
  80. package/dist/chunk-2ZKQNMK2.js +74 -0
  81. package/dist/chunk-37QNC344.js +843 -0
  82. package/dist/chunk-3WLUQ7DM.js +757 -0
  83. package/dist/chunk-3WLUQ7DM.js.map +1 -0
  84. package/dist/chunk-3WOFZTGC.js +297 -0
  85. package/dist/chunk-3WOFZTGC.js.map +1 -0
  86. package/dist/chunk-45ETXHUI.js +66 -0
  87. package/dist/chunk-46TEYVJ6.js +432 -0
  88. package/dist/chunk-46TEYVJ6.js.map +1 -0
  89. package/dist/chunk-4DHHMWP4.js +24026 -0
  90. package/dist/chunk-4GRVNPHA.js +274 -0
  91. package/dist/chunk-5G7UBTBE.js +962 -0
  92. package/dist/chunk-5HQ64Z7X.js +479 -0
  93. package/dist/chunk-5IHZTLDH.js +288 -0
  94. package/dist/chunk-5QCAWD6V.js +163 -0
  95. package/dist/chunk-62UGVR7Q.js +94 -0
  96. package/dist/chunk-6LLA6IF6.js +285 -0
  97. package/dist/chunk-6PJGHPXG.js +131 -0
  98. package/dist/chunk-6ZW5AR5N.js +84 -0
  99. package/dist/chunk-7DT6XY4A.js +719 -0
  100. package/dist/chunk-7DT6XY4A.js.map +1 -0
  101. package/dist/chunk-7LFOSBF4.js +3510 -0
  102. package/dist/chunk-7PKEBTVP.js +98 -0
  103. package/dist/chunk-7PKEBTVP.js.map +1 -0
  104. package/dist/chunk-7XFQPPYB.js +69 -0
  105. package/dist/chunk-AJ4OO3CV.js +8141 -0
  106. package/dist/chunk-AJ4OO3CV.js.map +1 -0
  107. package/dist/chunk-AWYXZU45.js +51 -0
  108. package/dist/chunk-AYKV2B6X.js +47 -0
  109. package/dist/chunk-AYKV2B6X.js.map +1 -0
  110. package/dist/chunk-AYOTYURE.js +1518 -0
  111. package/dist/chunk-BXR45CRI.js +819 -0
  112. package/dist/chunk-BXR45CRI.js.map +1 -0
  113. package/dist/chunk-BYV4VS5E.js +5471 -0
  114. package/dist/chunk-CGLNCFAG.js +136 -0
  115. package/dist/chunk-CP5IVVYM.js +76 -0
  116. package/dist/chunk-CXVHS2SV.js +91 -0
  117. package/dist/chunk-DCBCEYSH.js +98 -0
  118. package/dist/chunk-DFE77XT5.js +225 -0
  119. package/dist/chunk-DN6EMVA4.js +25 -0
  120. package/dist/chunk-E2G2USTA.js +75 -0
  121. package/dist/chunk-EFZVDV7F.js +1744 -0
  122. package/dist/chunk-FCD5BPC5.js +222 -0
  123. package/dist/chunk-FCD5BPC5.js.map +1 -0
  124. package/dist/chunk-FTP6NDOU.js +1320 -0
  125. package/dist/chunk-FUFLMP4B.js +455 -0
  126. package/dist/chunk-HJS6FPQX.js +152 -0
  127. package/dist/chunk-HZ7QUFUW.js +97 -0
  128. package/dist/chunk-IDFAFNL6.js +297 -0
  129. package/dist/chunk-ILLS2XWG.js +61 -0
  130. package/dist/chunk-IPEQHZ5H.js +724 -0
  131. package/dist/chunk-IPEQHZ5H.js.map +1 -0
  132. package/dist/chunk-ITABNSX6.js +26 -0
  133. package/dist/chunk-JCFZ7ECN.js +246 -0
  134. package/dist/chunk-JTYD7A3C.js +225 -0
  135. package/dist/chunk-K2WKQXGH.js +392 -0
  136. package/dist/chunk-KMZ4YWS4.js +544 -0
  137. package/dist/chunk-KSBXVA4K.js +344 -0
  138. package/dist/chunk-KSJRHAE4.js +156 -0
  139. package/dist/chunk-KYLTADVX.js +494 -0
  140. package/dist/chunk-L6UZM3ZN.js +249 -0
  141. package/dist/chunk-LRIP2J5S.js +5368 -0
  142. package/dist/chunk-M27HR7YD.js +23 -0
  143. package/dist/chunk-M7BSXJNL.js +167 -0
  144. package/dist/chunk-MGUEAG6W.js +73 -0
  145. package/dist/chunk-MIBOIXCP.js +115 -0
  146. package/dist/chunk-MNFJQRUO.js +76 -0
  147. package/dist/chunk-MNJT2F7H.js +504 -0
  148. package/dist/chunk-MNJT2F7H.js.map +1 -0
  149. package/dist/chunk-MQU4LNYG.js +46 -0
  150. package/dist/chunk-MSOFG7FT.js +197 -0
  151. package/dist/chunk-MUT2BPDM.js +46 -0
  152. package/dist/chunk-MUU27AJF.js +203 -0
  153. package/dist/chunk-MVDMMSXS.js +8954 -0
  154. package/dist/chunk-MWPM6HNV.js +138 -0
  155. package/dist/chunk-NE3AZ25Y.js +58 -0
  156. package/dist/chunk-NEALLMDP.js +1919 -0
  157. package/dist/chunk-NZOMEXDN.js +399 -0
  158. package/dist/chunk-O5K5EKJC.js +930 -0
  159. package/dist/chunk-OFSUVUXT.js +215 -0
  160. package/dist/chunk-OMLZ35HJ.js +482 -0
  161. package/dist/chunk-OMLZ35HJ.js.map +1 -0
  162. package/dist/chunk-P3CYWSTO.js +351 -0
  163. package/dist/chunk-P3CYWSTO.js.map +1 -0
  164. package/dist/chunk-P6H6JZXO.js +188 -0
  165. package/dist/chunk-P7OX5Y75.js +1920 -0
  166. package/dist/chunk-QENSBNRJ.js +1258 -0
  167. package/dist/chunk-QENSBNRJ.js.map +1 -0
  168. package/dist/chunk-QY6GNZFH.js +224 -0
  169. package/dist/chunk-RM5JT6XF.js +106 -0
  170. package/dist/chunk-ROWUTQFG.js +125 -0
  171. package/dist/chunk-RSABCQLI.js +45 -0
  172. package/dist/chunk-SGA5V2BM.js +91 -0
  173. package/dist/chunk-SLTZC32B.js +218 -0
  174. package/dist/chunk-SLTZC32B.js.map +1 -0
  175. package/dist/chunk-SO7NANAH.js +69 -0
  176. package/dist/chunk-SQZKWZ6F.js +103 -0
  177. package/dist/chunk-SSFQNMPS.js +259 -0
  178. package/dist/chunk-SSFQNMPS.js.map +1 -0
  179. package/dist/chunk-SULQZX5W.js +42 -0
  180. package/dist/chunk-T3YHV2UM.js +685 -0
  181. package/dist/chunk-T4HIFVNK.js +84 -0
  182. package/dist/chunk-TJTCHTR4.js +343 -0
  183. package/dist/chunk-TUS2VOMZ.js +219 -0
  184. package/dist/chunk-U3LO5TDH.js +296 -0
  185. package/dist/chunk-UDNN4POE.js +111 -0
  186. package/dist/chunk-USFXKWTX.js +79 -0
  187. package/dist/chunk-USFXKWTX.js.map +1 -0
  188. package/dist/chunk-UYOUNHUQ.js +309 -0
  189. package/dist/chunk-UYOUNHUQ.js.map +1 -0
  190. package/dist/chunk-UYVMINV2.js +139 -0
  191. package/dist/chunk-VASOAJDL.js +78 -0
  192. package/dist/chunk-VASOAJDL.js.map +1 -0
  193. package/dist/chunk-VC2XB5JT.js +170 -0
  194. package/dist/chunk-VGJFNHSA.js +56 -0
  195. package/dist/chunk-VJUVTMHY.js +329 -0
  196. package/dist/chunk-VJUVTMHY.js.map +1 -0
  197. package/dist/chunk-VQMEXYP3.js +604 -0
  198. package/dist/chunk-VQOBDHZP.js +106 -0
  199. package/dist/chunk-VRQ5HEVU.js +35 -0
  200. package/dist/chunk-VUG7DFVI.js +220 -0
  201. package/dist/chunk-VVITBZKP.js +97 -0
  202. package/dist/chunk-WB4FNMSI.js +142 -0
  203. package/dist/chunk-WFTTF2MP.js +225 -0
  204. package/dist/chunk-WUNWVQAI.js +89 -0
  205. package/dist/chunk-XGTZ3WQX.js +2234 -0
  206. package/dist/chunk-XGTZ3WQX.js.map +1 -0
  207. package/dist/chunk-XMIV53FM.js +191 -0
  208. package/dist/chunk-XNUUEUJB.js +287 -0
  209. package/dist/chunk-YB2UVOAD.js +64 -0
  210. package/dist/chunk-YP5SD6O2.js +148 -0
  211. package/dist/chunk-YRW2AAKX.js +454 -0
  212. package/dist/chunk-YT6YI47O.js +178 -0
  213. package/dist/chunk-YYFARPMN.js +547 -0
  214. package/dist/chunk-Z2QKUVHP.js +57 -0
  215. package/dist/chunk-Z2WTCFQ6.js +19 -0
  216. package/dist/chunk-Z3KRNKEA.js +64 -0
  217. package/dist/chunk-Z6RTEOEY.js +39 -0
  218. package/dist/cite-I5UV5SKS.js +191 -0
  219. package/dist/claim-QS3M3TOL.js +200 -0
  220. package/dist/cli.js +46 -45
  221. package/dist/cli.js.map +1 -1
  222. package/dist/client-DKZM6XTS.js +19 -0
  223. package/dist/code-D3J5FQCF.js +76 -0
  224. package/dist/companies-XCKJCRHM.js +34 -0
  225. package/dist/company-IQ4LMS24.js +308 -0
  226. package/dist/complete-PPHC25BS.js +84 -0
  227. package/dist/config-ACEF37UO.js +88 -0
  228. package/dist/connect-F6LPMOCU.js +45 -0
  229. package/dist/content-5RTSXURF.js +85 -0
  230. package/dist/conversation-GYDBXZN2.js +96 -0
  231. package/dist/conversion-report-6SVHPLHT.js +127 -0
  232. package/dist/conversion-upload-command-J3STKMAL.js +439 -0
  233. package/dist/conversion-writes-PEKNBIDQ.js +122 -0
  234. package/dist/conversions-7PSI7L55.js +140 -0
  235. package/dist/conversions-ICSKSSLX.js +78 -0
  236. package/dist/copy-writes-ER5ZB5C4.js +170 -0
  237. package/dist/countries-OJZQQYFT.js +82 -0
  238. package/dist/create-AJPHIQIT.js +135 -0
  239. package/dist/create-DM7DUVDQ.js +239 -0
  240. package/dist/create-R6BEEL3J.js +62 -0
  241. package/dist/create-XYJYG7CU.js +218 -0
  242. package/dist/creatives-LD76JBM4.js +58 -0
  243. package/dist/creatives-R6Q2QUQI.js +229 -0
  244. package/dist/creatives-ZGXH7UA7.js +118 -0
  245. package/dist/credentials-P7L6PQKJ.js +290 -0
  246. package/dist/critique-DIVRMX7I.js +1451 -0
  247. package/dist/critique-KLGX7RI6.js +232 -0
  248. package/dist/crm-SBSOI3BQ.js +313 -0
  249. package/dist/crm-SBSOI3BQ.js.map +1 -0
  250. package/dist/crm-Y3F5UUXL.js +323 -0
  251. package/dist/crop-SRCLDYM5.js +113 -0
  252. package/dist/currency-YZBACARU.js +88 -0
  253. package/dist/currency-YZBACARU.js.map +1 -0
  254. package/dist/custom-conversions-RTSR3KKJ.js +128 -0
  255. package/dist/customers-7NG2IPJK.js +65 -0
  256. package/dist/data-QOCDG3ZD.js +455 -0
  257. package/dist/data-QOCDG3ZD.js.map +1 -0
  258. package/dist/decide-2WQKE6HC.js +199 -0
  259. package/dist/delete-DWQS7UCJ.js +85 -0
  260. package/dist/delete-HGIMNZ4V.js +57 -0
  261. package/dist/delete-KDD6QSJA.js +69 -0
  262. package/dist/delete-MJSASLP6.js +69 -0
  263. package/dist/delete-N76JN5MP.js +71 -0
  264. package/dist/delete-S7U6A435.js +67 -0
  265. package/dist/demographics-PNEXYSZD.js +141 -0
  266. package/dist/describe-42XBBR6J.js +97 -0
  267. package/dist/describe-TKOJMWML.js +97 -0
  268. package/dist/dimensions-5OS26IF6.js +101 -0
  269. package/dist/discard-MT26YH73.js +69 -0
  270. package/dist/discover-IDC6PQV2.js +93 -0
  271. package/dist/discover-RKW25QME.js +172 -0
  272. package/dist/discover-RKW25QME.js.map +1 -0
  273. package/dist/domain-H6GRR7WD.js +101 -0
  274. package/dist/download-QCDXPSUM.js +172 -0
  275. package/dist/download-QH4VHDS6.js +337 -0
  276. package/dist/draft-3MYPEBSF.js +260 -0
  277. package/dist/draft-EHDIVMWL.js +615 -0
  278. package/dist/draft-EHDIVMWL.js.map +1 -0
  279. package/dist/draft-EUWOFQXE.js +374 -0
  280. package/dist/draft-FJ55MZB4.js +138 -0
  281. package/dist/draft-FRX24TKC.js +220 -0
  282. package/dist/draft-RKKOSTJF.js +332 -0
  283. package/dist/draft-W7FYHKI2.js +134 -0
  284. package/dist/draft-ZDS6KFZ3.js +315 -0
  285. package/dist/engine/index.js +13 -13
  286. package/dist/env-AMOXYHCA.js +55 -0
  287. package/dist/experiment-TBLKWI2J.js +1397 -0
  288. package/dist/experiments-SJV3ZE46.js +236 -0
  289. package/dist/export-AMOLHZB6.js +168 -0
  290. package/dist/extract-MT3P3SYT.js +143 -0
  291. package/dist/facets-LWJT5J4S.js +117 -0
  292. package/dist/favorites-Z24QDACW.js +178 -0
  293. package/dist/feed-2XCJ2JIV.js +177 -0
  294. package/dist/feedback-AB2QVJU3.js +114 -0
  295. package/dist/feedback-EGVQJTCD.js +115 -0
  296. package/dist/feedback-record-F32XSTKZ.js +269 -0
  297. package/dist/fetch-M5KGRBEI.js +204 -0
  298. package/dist/fetch-Z5MNAIQS.js +139 -0
  299. package/dist/find-XMISWVZT.js +144 -0
  300. package/dist/fit-YDHY7E7H.js +65 -0
  301. package/dist/flows-3V47HJQ3.js +340 -0
  302. package/dist/follow-542NYE76.js +94 -0
  303. package/dist/follow-competitors-NZDLHP7P.js +112 -0
  304. package/dist/following-JTZZCSQX.js +113 -0
  305. package/dist/fonts-3GV2ZO5E.js +39 -0
  306. package/dist/forecast-327XLLZ3.js +169 -0
  307. package/dist/forecast-327XLLZ3.js.map +1 -0
  308. package/dist/forecast-YKHZXBSB.js +121 -0
  309. package/dist/funding-HKPP53U2.js +85 -0
  310. package/dist/funnel-B4WROVPH.js +397 -0
  311. package/dist/ga4-MUIZN7ID.js +55 -0
  312. package/dist/generate-GBFLO76C.js +263 -0
  313. package/dist/get-3QLANJES.js +59 -0
  314. package/dist/get-D5G2RNTR.js +62 -0
  315. package/dist/get-FG3VO3BZ.js +62 -0
  316. package/dist/get-G4UPOHVY.js +74 -0
  317. package/dist/get-GOXOADPY.js +56 -0
  318. package/dist/get-HQUIC2MQ.js +82 -0
  319. package/dist/get-JUI3RVMT.js +38 -0
  320. package/dist/get-T7A3CTS2.js +92 -0
  321. package/dist/gif-4KAQUYPX.js +111 -0
  322. package/dist/google-FMGXNCW3.js +3300 -0
  323. package/dist/google-FMGXNCW3.js.map +1 -0
  324. package/dist/google-PKT7ORVP.js +163 -0
  325. package/dist/google-ads-AKIWTLR4.js +198 -0
  326. package/dist/group-4GYPBQMU.js +43 -0
  327. package/dist/group-GH5CSQKA.js +43 -0
  328. package/dist/gsc-3EIBYMON.js +30 -0
  329. package/dist/history-FX223L6D.js +102 -0
  330. package/dist/history-HB45CGYR.js +153 -0
  331. package/dist/history-K4VYVCZC.js +69 -0
  332. package/dist/hubspot-SBPRX4A7.js +817 -0
  333. package/dist/hubspot-SBPRX4A7.js.map +1 -0
  334. package/dist/icon-VYFLZ4FS.js +138 -0
  335. package/dist/ideas-6GD47AQW.js +45 -0
  336. package/dist/images-BC7ZWZ4B.js +92 -0
  337. package/dist/improve-ZBPSMVFI.js +86 -0
  338. package/dist/ingest-T3FJWORN.js +131 -0
  339. package/dist/ingest-XJ5DDUNG.js +28 -0
  340. package/dist/insights-2NWY4XJR.js +658 -0
  341. package/dist/insights-RHOCF7VR.js +132 -0
  342. package/dist/inspect-GYEHCDZR.js +192 -0
  343. package/dist/inspiration-6FGGHV73.js +53 -0
  344. package/dist/instant-experiences-YZYOLGBA.js +264 -0
  345. package/dist/intent-TKFH57DZ.js +95 -0
  346. package/dist/job-2XYPZRJ6.js +202 -0
  347. package/dist/job-create-BPUOBKXA.js +109 -0
  348. package/dist/job-status-HUDHF6BU.js +74 -0
  349. package/dist/keep-XBYR2NII.js +78 -0
  350. package/dist/keyword-gap-7I2CIUTK.js +130 -0
  351. package/dist/keyword-metrics-K7L6CVTZ.js +200 -0
  352. package/dist/keywords-for-site-HBQBMVFS.js +131 -0
  353. package/dist/knowledge-ILQIN5FL.js +195 -0
  354. package/dist/landing-RYX65ZJJ.js +28 -0
  355. package/dist/landings-GRJAJKHY.js +151 -0
  356. package/dist/languages-22VMY7JN.js +55 -0
  357. package/dist/languages-FMHPUVOL.js +40 -0
  358. package/dist/launches-NUMSS7HP.js +19 -0
  359. package/dist/layerize-TFRXRHVL.js +190 -0
  360. package/dist/lead-routes-D5ITHESC.js +733 -0
  361. package/dist/leads-OAFYKOCF.js +115 -0
  362. package/dist/leads-VEHYM23G.js +541 -0
  363. package/dist/learn-SIATYUQL.js +207 -0
  364. package/dist/library-JB2UBSJ5.js +212 -0
  365. package/dist/lighthouse-EQZFYGFL.js +75 -0
  366. package/dist/line-item-writes-4LAJW33S.js +211 -0
  367. package/dist/line-items-4FLTV275.js +107 -0
  368. package/dist/link-4EWQ6R6D.js +67 -0
  369. package/dist/linkedin-3KNDZPJT.js +1381 -0
  370. package/dist/linkedin-3KNDZPJT.js.map +1 -0
  371. package/dist/linkedin-person-EFBNRT7A.js +139 -0
  372. package/dist/list-5BWNSHYO.js +51 -0
  373. package/dist/list-A363BF25.js +65 -0
  374. package/dist/list-JARIB5LC.js +57 -0
  375. package/dist/list-K7ROIVKU.js +67 -0
  376. package/dist/list-RO4YLUFK.js +76 -0
  377. package/dist/list-TJJPI57I.js +154 -0
  378. package/dist/list-UD43QCLC.js +50 -0
  379. package/dist/list-VGMXUBFE.js +306 -0
  380. package/dist/list-XPLMANXX.js +93 -0
  381. package/dist/locations-DD3JRZ4C.js +69 -0
  382. package/dist/locations-HWMEJ64P.js +40 -0
  383. package/dist/log-M7UCG5LZ.js +95 -0
  384. package/dist/logo-KDGD6LRA.js +19 -0
  385. package/dist/lookup-7HIPFF2U.js +23 -0
  386. package/dist/make-US3C4YLT.js +1367 -0
  387. package/dist/map-OT5M3BJF.js +445 -0
  388. package/dist/mcp-32LXPARX.js +729 -0
  389. package/dist/media-6VI4PN4N.js +18 -0
  390. package/dist/media-WIFXVGKU.js +89 -0
  391. package/dist/media-sources-Z4JJELU7.js +35 -0
  392. package/dist/members-2BNKMQ2I.js +47 -0
  393. package/dist/meme-I43AVLGS.js +108 -0
  394. package/dist/meta-IVCO7HHX.js +152 -0
  395. package/dist/meta-IVCO7HHX.js.map +1 -0
  396. package/dist/metrics-KXTFXSWK.js +152 -0
  397. package/dist/metrics-KXTFXSWK.js.map +1 -0
  398. package/dist/normalize-5B5WIBV4.js +806 -0
  399. package/dist/normalize-GV2POGHI.js +144 -0
  400. package/dist/options-HKGF6VEW.js +125 -0
  401. package/dist/organization-G4VL7IQH.js +949 -0
  402. package/dist/output-W5J5RKRR.js +26 -0
  403. package/dist/page-KUDKDDLJ.js +105 -0
  404. package/dist/page-photos-52S2XRIW.js +118 -0
  405. package/dist/pages-RMTL3RCK.js +67 -0
  406. package/dist/people-2THRDMG4.js +171 -0
  407. package/dist/people-2THRDMG4.js.map +1 -0
  408. package/dist/people-5A6NEDEU.js +164 -0
  409. package/dist/people-5A6NEDEU.js.map +1 -0
  410. package/dist/performance-67DDDP3X.js +5565 -0
  411. package/dist/performance-MF4547I7.js +27 -0
  412. package/dist/pinterest-GMNQ2AVG.js +105 -0
  413. package/dist/pixels-3CINROKJ.js +62 -0
  414. package/dist/pixels-YQJKJWAC.js +109 -0
  415. package/dist/plan-33F5F2OR.js +208 -0
  416. package/dist/posts-MZFKWSZ6.js +36 -0
  417. package/dist/preview-HWM6KHV5.js +245 -0
  418. package/dist/preview-JITAEUWU.js +101 -0
  419. package/dist/profile-OYCGBQWF.js +159 -0
  420. package/dist/promoted-tweet-writes-K7YJNRMS.js +183 -0
  421. package/dist/promoted-tweets-JIKZFJXO.js +119 -0
  422. package/dist/properties-PMY3KKUU.js +101 -0
  423. package/dist/publish-4YT3CR4T.js +350 -0
  424. package/dist/query-ALRSR5OF.js +236 -0
  425. package/dist/query-NYH5PMQF.js +62 -0
  426. package/dist/query-ZGGHOYOH.js +231 -0
  427. package/dist/questionnaire-4AJFPLM2.js +94 -0
  428. package/dist/read-Z7BBSAEK.js +141 -0
  429. package/dist/reddit-CTAWHQ6K.js +29 -0
  430. package/dist/refresh-VE3UKLXX.js +42 -0
  431. package/dist/refresh-YYP23L3T.js +97 -0
  432. package/dist/release-ZPU626XC.js +63 -0
  433. package/dist/relevant-pages-QIF35NBQ.js +99 -0
  434. package/dist/remove-7RQJRXOV.js +53 -0
  435. package/dist/remove-VGEKRK34.js +49 -0
  436. package/dist/reopen-HANTJFNU.js +66 -0
  437. package/dist/rerun-LSWO6K7O.js +97 -0
  438. package/dist/research-YKP5MEEQ.js +78 -0
  439. package/dist/research-YKP5MEEQ.js.map +1 -0
  440. package/dist/research-ZARG4TUX.js +265 -0
  441. package/dist/reset-LO2WLWSF.js +57 -0
  442. package/dist/reset-PDQTEM2J.js +57 -0
  443. package/dist/resolve-RXWBSGHW.js +124 -0
  444. package/dist/retry-M5RY4EFT.js +65 -0
  445. package/dist/retry-WRNZN2GO.js +63 -0
  446. package/dist/retry-failed-GEORPC3E.js +45 -0
  447. package/dist/revenue-IXQTSRYQ.js +91 -0
  448. package/dist/rule-writes-DRZUEIV6.js +530 -0
  449. package/dist/rules-BBALKNBK.js +217 -0
  450. package/dist/rules-O64G4QVU.js +99 -0
  451. package/dist/rules-add-HW6UNH3U.js +465 -0
  452. package/dist/run-ENK7RU6R.js +69 -0
  453. package/dist/run-FO6EDDEN.js +72 -0
  454. package/dist/scaffold-ad-FFKVESN3.js +1513 -0
  455. package/dist/scaffold-static-ad-TWJM3TUK.js +1012 -0
  456. package/dist/scaffold-video-OK4TWNUK.js +885 -0
  457. package/dist/schedule-L5NVM4DN.js +67 -0
  458. package/dist/schedule-U4JVZER5.js +64 -0
  459. package/dist/scheduled-agents-ZIBL3WP5.js +56 -0
  460. package/dist/scheduled-agents-ZIBL3WP5.js.map +1 -0
  461. package/dist/schema-3IEI64TQ.js +152 -0
  462. package/dist/schema-6I2RSDO2.js +135 -0
  463. package/dist/scrape-YEZGRX2B.js +2209 -0
  464. package/dist/screenshot-6EBASY4U.js +103 -0
  465. package/dist/search-BZLTII6V.js +228 -0
  466. package/dist/search-I7CCYBB5.js +92 -0
  467. package/dist/search-NA7DBOLW.js +91 -0
  468. package/dist/search-QONARWFY.js +177 -0
  469. package/dist/search-RM4MN7KO.js +51 -0
  470. package/dist/search-SNEFCCJX.js +26 -0
  471. package/dist/search-copy-S6JVQZLI.js +168 -0
  472. package/dist/seeds-BIY565P3.js +101 -0
  473. package/dist/select-EBLEMFQI.js +110 -0
  474. package/dist/sends-7JKFJTRE.js +349 -0
  475. package/dist/sequences-KZSNIELI.js +146 -0
  476. package/dist/set-prompt-CDYOXIIY.js +199 -0
  477. package/dist/setup-links-QQ2AWOZG.js +144 -0
  478. package/dist/shared-P5UDXZAG.js +34 -0
  479. package/dist/shopify-SSDXRXN5.js +4009 -0
  480. package/dist/site-PHU5BRRL.js +180 -0
  481. package/dist/sitemaps-WCARK2BM.js +77 -0
  482. package/dist/sites-JQZ2ZC6W.js +97 -0
  483. package/dist/skills-V2FRLLOW.js +47 -0
  484. package/dist/sources-I52AANVB.js +30 -0
  485. package/dist/sources-XH6RL3GF.js +457 -0
  486. package/dist/stale-A6RYRZDV.js +90 -0
  487. package/dist/stats-W7CCPRTG.js +34 -0
  488. package/dist/status-O4AGHCJY.js +65 -0
  489. package/dist/sticker-NDSJDIAK.js +103 -0
  490. package/dist/stock-C2TUFJUH.js +212 -0
  491. package/dist/studies-4JOP2GQJ.js +250 -0
  492. package/dist/studio-TG2UAKFI.js +49 -0
  493. package/dist/study-writes-PMTRTUXP.js +471 -0
  494. package/dist/suggest-F5GIJR4K.js +66 -0
  495. package/dist/sync-IDULIJUZ.js +279 -0
  496. package/dist/sync-NNNB2PWZ.js +57 -0
  497. package/dist/sync-STPHWKTE.js +55 -0
  498. package/dist/sync-definition-AABUGAYW.js +70 -0
  499. package/dist/tag-MMY3QT2N.js +57 -0
  500. package/dist/tag-manager-JDGWAHCZ.js +43 -0
  501. package/dist/tags-A2PCL4OL.js +26 -0
  502. package/dist/tags-KH6N6OKV.js +23 -0
  503. package/dist/tags-LAMQOQWY.js +23 -0
  504. package/dist/tags-MIR75PDJ.js +227 -0
  505. package/dist/tags-PHEHMZC7.js +23 -0
  506. package/dist/targeting-AVHPKERN.js +762 -0
  507. package/dist/targeting-constants-T7Y6RVEH.js +118 -0
  508. package/dist/targeting-criteria-MRAEWFOW.js +113 -0
  509. package/dist/targets-JJO4Z4DI.js +106 -0
  510. package/dist/terms-ETG7YCJC.js +102 -0
  511. package/dist/testimonials-5455FK4Y.js +32 -0
  512. package/dist/themes-7XHHY4XY.js +95 -0
  513. package/dist/themes-7XHHY4XY.js.map +1 -0
  514. package/dist/top-companies-5SZO3NVE.js +246 -0
  515. package/dist/top-companies-5SZO3NVE.js.map +1 -0
  516. package/dist/transcript-JHGN7KW7.js +165 -0
  517. package/dist/translate-YWSIWVRT.js +603 -0
  518. package/dist/triggers-RNGTCIVF.js +144 -0
  519. package/dist/tweets-3H7CW3ZI.js +123 -0
  520. package/dist/unfollow-PEEPIMZY.js +46 -0
  521. package/dist/unlink-PACTZ674.js +70 -0
  522. package/dist/unstage-GUPBLCPZ.js +96 -0
  523. package/dist/unstage-NAJI4DDV.js +88 -0
  524. package/dist/update-5EXPDJ2T.js +66 -0
  525. package/dist/update-GK3QSHWA.js +101 -0
  526. package/dist/update-KPWP4DPC.js +192 -0
  527. package/dist/update-TNOOVX3P.js +81 -0
  528. package/dist/update-XZGK5UFK.js +155 -0
  529. package/dist/upload-JYZFK5ZO.js +137 -0
  530. package/dist/upload-W2UTHRP2.js +155 -0
  531. package/dist/upscale-MTWSJ3EJ.js +109 -0
  532. package/dist/url-options-RTTLWCU5.js +131 -0
  533. package/dist/url-options-RTTLWCU5.js.map +1 -0
  534. package/dist/url-params-OHLTOL33.js +101 -0
  535. package/dist/use-K5EP7JJM.js +111 -0
  536. package/dist/validate-H6J4M43Q.js +135 -0
  537. package/dist/variant-BZCX46QL.js +338 -0
  538. package/dist/videos-5N3JQIAY.js +41 -0
  539. package/dist/videos-QIDOIJ24.js +146 -0
  540. package/dist/view-CD5UWMR4.js +133 -0
  541. package/dist/viewer-check-H4OGC5FF.js +83 -0
  542. package/dist/viewer-check-H4OGC5FF.js.map +1 -0
  543. package/dist/web-CV3VMSDO.js +173 -0
  544. package/dist/winners-CSNTBOVM.js +113 -0
  545. package/dist/winning-ads-FVTCV3GX.js +86 -0
  546. package/dist/write-commands-AASXCKRN.js +721 -0
  547. package/dist/write-commands-OV7RE6O2.js +206 -0
  548. package/dist/write-commands-W4Z6MANM.js +1524 -0
  549. package/dist/write-commands-XFYXMTXO.js +1169 -0
  550. package/dist/x-WFYI4F6X.js +47 -0
  551. package/package.json +1 -1
  552. package/dist/account-52WDLW4Z.js +0 -82
  553. package/dist/account-NSBALYYS.js +0 -139
  554. package/dist/account-SGHH4SIM.js +0 -82
  555. package/dist/account-assets-EPEYTJFD.js +0 -290
  556. package/dist/account-level-VD4NLB2D.js +0 -611
  557. package/dist/account-reads-CQIJCPCH.js +0 -219
  558. package/dist/account-reads-CQIJCPCH.js.map +0 -1
  559. package/dist/account-users-KP6A43DU.js +0 -64
  560. package/dist/account-writes-3BJSUM2V.js +0 -68
  561. package/dist/accounts-A47QUTTB.js +0 -76
  562. package/dist/accounts-E5TF2AFI.js +0 -115
  563. package/dist/accounts-FV5FPX3X.js +0 -80
  564. package/dist/accounts-LQFSNBIC.js +0 -713
  565. package/dist/accounts-LQFSNBIC.js.map +0 -1
  566. package/dist/accounts-ZV4IXOF5.js +0 -119
  567. package/dist/actions-RZ62K3WT.js +0 -55
  568. package/dist/active-entities-XRSJNBOV.js +0 -103
  569. package/dist/activecampaign-E6PM6YNO.js +0 -938
  570. package/dist/activities-ZDWREYR7.js +0 -75
  571. package/dist/ad-group-writes-KU4QMQZP.js +0 -172
  572. package/dist/ad-groups-NMW2G32A.js +0 -70
  573. package/dist/ad-writes-7NOFTOM4.js +0 -176
  574. package/dist/add-25YZMFSH.js +0 -85
  575. package/dist/add-7MAL7JRX.js +0 -81
  576. package/dist/add-D44VCDRU.js +0 -148
  577. package/dist/add-HMAQJG4J.js +0 -305
  578. package/dist/add-JO4ZPS23.js +0 -97
  579. package/dist/add-MLTE6PPC.js +0 -107
  580. package/dist/add-accounts-EKMSHAA4.js +0 -91
  581. package/dist/ads-4YZYNU66.js +0 -128
  582. package/dist/ads-DGL5SGP3.js +0 -120
  583. package/dist/ads-P4Z3MLKS.js +0 -79
  584. package/dist/ads-T6J6QQKX.js +0 -48
  585. package/dist/adsets-PSVCPCE3.js +0 -182
  586. package/dist/advertisers-7NAPI5ZU.js +0 -125
  587. package/dist/advertisers-FP7MTMUI.js +0 -123
  588. package/dist/analytics-AYYFKMF6.js +0 -2437
  589. package/dist/analytics-AYYFKMF6.js.map +0 -1
  590. package/dist/analytics-D2IA2P5E.js +0 -447
  591. package/dist/animate-VX7E7KJE.js +0 -480
  592. package/dist/approved-E4EZA5RT.js +0 -73
  593. package/dist/asset-writes-NDSHY5OT.js +0 -50
  594. package/dist/assign-EE4EDOPX.js +0 -80
  595. package/dist/audience-size-SRNH57FA.js +0 -76
  596. package/dist/audience-writes-4KQXVGHO.js +0 -327
  597. package/dist/audiences-P3SPTAJT.js +0 -280
  598. package/dist/audiences-T5LMTT3B.js +0 -85
  599. package/dist/audiences-UHLVATR6.js +0 -106
  600. package/dist/audit-46DO2HV3.js +0 -88
  601. package/dist/audit-R5JG3ABY.js +0 -154
  602. package/dist/autocomplete-AIKXLHME.js +0 -114
  603. package/dist/avatars-3CAQ5OBN.js +0 -38
  604. package/dist/bid-pricing-PDZIJGOX.js +0 -103
  605. package/dist/brand-2SN7MM72.js +0 -22
  606. package/dist/brief-S4R3NZMS.js +0 -543
  607. package/dist/businesses-TRFYMZ4I.js +0 -54
  608. package/dist/campaign-groups-OHL6POG2.js +0 -99
  609. package/dist/campaign-writes-P5XPFTRK.js +0 -176
  610. package/dist/campaign-writes-RKCE4MSZ.js +0 -168
  611. package/dist/campaigns-2MTON2IE.js +0 -130
  612. package/dist/campaigns-HGMQSYUM.js +0 -113
  613. package/dist/campaigns-SWZJVE2T.js +0 -78
  614. package/dist/campaigns-UWUEENB6.js +0 -111
  615. package/dist/canvas-RAPLCU3Y.js +0 -46
  616. package/dist/capabilities-FF6NNJ5L.js +0 -147
  617. package/dist/cards-CXKIVM4D.js +0 -85
  618. package/dist/catalog-TOHUVBEU.js +0 -66
  619. package/dist/catalogs-4DNLG4AM.js +0 -782
  620. package/dist/catalogs-V7PTEJBO.js +0 -130
  621. package/dist/changes-5OW3UYMF.js +0 -167
  622. package/dist/changes-5OW3UYMF.js.map +0 -1
  623. package/dist/chatgpt-JBMYNVJB.js +0 -47
  624. package/dist/chats-XVAFLM47.js +0 -589
  625. package/dist/check-FFRPBGUH.js +0 -107
  626. package/dist/chunk-22RM3UOO.js +0 -63
  627. package/dist/chunk-22RM3UOO.js.map +0 -1
  628. package/dist/chunk-2CC4CPDT.js +0 -225
  629. package/dist/chunk-2EEDKWYY.js +0 -479
  630. package/dist/chunk-2JAO7PMI.js +0 -2235
  631. package/dist/chunk-2JAO7PMI.js.map +0 -1
  632. package/dist/chunk-2K5GSSPU.js +0 -1920
  633. package/dist/chunk-2KQQHBBQ.js +0 -547
  634. package/dist/chunk-2N7TB346.js +0 -5368
  635. package/dist/chunk-33ZP44QR.js +0 -103
  636. package/dist/chunk-34RDCDCF.js +0 -207
  637. package/dist/chunk-34RDCDCF.js.map +0 -1
  638. package/dist/chunk-3GXHML4V.js +0 -106
  639. package/dist/chunk-3QPG2D27.js +0 -125
  640. package/dist/chunk-3WN5GWX4.js +0 -94
  641. package/dist/chunk-47VWQ7FQ.js +0 -843
  642. package/dist/chunk-4AO3LSYM.js +0 -73
  643. package/dist/chunk-4HFM5RCP.js +0 -217
  644. package/dist/chunk-4HFM5RCP.js.map +0 -1
  645. package/dist/chunk-4SAO6RT2.js +0 -962
  646. package/dist/chunk-5QNW5PCM.js +0 -106
  647. package/dist/chunk-5XB352F5.js +0 -197
  648. package/dist/chunk-6EOWBGGW.js +0 -191
  649. package/dist/chunk-6MJKVNLL.js +0 -25
  650. package/dist/chunk-7GFGFBWZ.js +0 -344
  651. package/dist/chunk-7MIOMG22.js +0 -685
  652. package/dist/chunk-7NBQQOCU.js +0 -97
  653. package/dist/chunk-7YEP3NFN.js +0 -163
  654. package/dist/chunk-AP7X3ONA.js +0 -297
  655. package/dist/chunk-AQRBEPZL.js +0 -138
  656. package/dist/chunk-ARCQQUEL.js +0 -220
  657. package/dist/chunk-AXJ2DMM4.js +0 -19
  658. package/dist/chunk-AZIXX73C.js +0 -64
  659. package/dist/chunk-B64KJW5C.js +0 -476
  660. package/dist/chunk-B64KJW5C.js.map +0 -1
  661. package/dist/chunk-BFAPSFS7.js +0 -1518
  662. package/dist/chunk-BIBXZJZI.js +0 -97
  663. package/dist/chunk-C4BPAMAJ.js +0 -8954
  664. package/dist/chunk-C57CXCTI.js +0 -455
  665. package/dist/chunk-C7KV5O5J.js +0 -274
  666. package/dist/chunk-CBVUO7SK.js +0 -1744
  667. package/dist/chunk-CF5I4Q5M.js +0 -69
  668. package/dist/chunk-CKN4HQZM.js +0 -89
  669. package/dist/chunk-CTAXKC5J.js +0 -66
  670. package/dist/chunk-DGHSXHZR.js +0 -136
  671. package/dist/chunk-DHF4FXWS.js +0 -58
  672. package/dist/chunk-DPOUS5DN.js +0 -287
  673. package/dist/chunk-DXQ5DUFU.js +0 -392
  674. package/dist/chunk-EJ6EED6I.js +0 -69
  675. package/dist/chunk-EV2HVFTJ.js +0 -224
  676. package/dist/chunk-FLTAPEVY.js +0 -288
  677. package/dist/chunk-GQUBM3Z6.js +0 -249
  678. package/dist/chunk-H25GY4U4.js +0 -139
  679. package/dist/chunk-H6ASYVQX.js +0 -544
  680. package/dist/chunk-H7LKYGLJ.js +0 -24026
  681. package/dist/chunk-HM4NWA72.js +0 -5471
  682. package/dist/chunk-IB6VWG32.js +0 -755
  683. package/dist/chunk-IB6VWG32.js.map +0 -1
  684. package/dist/chunk-ICASR3ES.js +0 -7901
  685. package/dist/chunk-ICASR3ES.js.map +0 -1
  686. package/dist/chunk-IJ6WA2JW.js +0 -148
  687. package/dist/chunk-ITIUWJGQ.js +0 -131
  688. package/dist/chunk-IYDESWW4.js +0 -74
  689. package/dist/chunk-J4BJLHLQ.js +0 -3510
  690. package/dist/chunk-JAME5NBT.js +0 -42
  691. package/dist/chunk-JCFICJWI.js +0 -831
  692. package/dist/chunk-JCFICJWI.js.map +0 -1
  693. package/dist/chunk-JGK2FDZW.js +0 -1919
  694. package/dist/chunk-JJBO7QIR.js +0 -604
  695. package/dist/chunk-K7APGDEO.js +0 -430
  696. package/dist/chunk-K7APGDEO.js.map +0 -1
  697. package/dist/chunk-KGJ6EIX3.js +0 -76
  698. package/dist/chunk-KJXKLEJ7.js +0 -91
  699. package/dist/chunk-L2LGHWJN.js +0 -156
  700. package/dist/chunk-L4QEMWNJ.js +0 -111
  701. package/dist/chunk-L7I47VGM.js +0 -46
  702. package/dist/chunk-LAOCXV6Z.js +0 -98
  703. package/dist/chunk-LJEJCIHR.js +0 -246
  704. package/dist/chunk-M2RXXLK3.js +0 -51
  705. package/dist/chunk-M4KFO256.js +0 -188
  706. package/dist/chunk-MIHY534L.js +0 -39
  707. package/dist/chunk-MKG57P2E.js +0 -783
  708. package/dist/chunk-MKG57P2E.js.map +0 -1
  709. package/dist/chunk-MKOI6QYM.js +0 -225
  710. package/dist/chunk-MPTNN35I.js +0 -325
  711. package/dist/chunk-MPTNN35I.js.map +0 -1
  712. package/dist/chunk-MTW2NDDD.js +0 -98
  713. package/dist/chunk-MTW2NDDD.js.map +0 -1
  714. package/dist/chunk-MYGPWKEI.js +0 -170
  715. package/dist/chunk-N7EHQNNG.js +0 -312
  716. package/dist/chunk-NAZ7A7LN.js +0 -930
  717. package/dist/chunk-O5VSYBUA.js +0 -343
  718. package/dist/chunk-OHVXHNUR.js +0 -57
  719. package/dist/chunk-OJRS3TGS.js +0 -399
  720. package/dist/chunk-OJZKY5UM.js +0 -46
  721. package/dist/chunk-PRZBEZBA.js +0 -203
  722. package/dist/chunk-PTE6BNCH.js +0 -334
  723. package/dist/chunk-PTE6BNCH.js.map +0 -1
  724. package/dist/chunk-Q3G4ZI2U.js +0 -84
  725. package/dist/chunk-Q5DLTIYL.js +0 -142
  726. package/dist/chunk-Q5XUFN2W.js +0 -35
  727. package/dist/chunk-Q736UFSD.js +0 -75
  728. package/dist/chunk-QVHZTCB5.js +0 -1254
  729. package/dist/chunk-QVHZTCB5.js.map +0 -1
  730. package/dist/chunk-QVO5VPNA.js +0 -169
  731. package/dist/chunk-R7XDGNZD.js +0 -297
  732. package/dist/chunk-R7XDGNZD.js.map +0 -1
  733. package/dist/chunk-RBR5PHYJ.js +0 -91
  734. package/dist/chunk-RHBCKOF2.js +0 -61
  735. package/dist/chunk-RRKUXGAU.js +0 -26
  736. package/dist/chunk-S3XCG55E.js +0 -454
  737. package/dist/chunk-S5S54J2K.js +0 -56
  738. package/dist/chunk-SIRRBWQ2.js +0 -215
  739. package/dist/chunk-SPNF2V46.js +0 -468
  740. package/dist/chunk-SPNF2V46.js.map +0 -1
  741. package/dist/chunk-SPNY52S5.js +0 -494
  742. package/dist/chunk-TEQEZAJI.js +0 -1320
  743. package/dist/chunk-TLQY4QBW.js +0 -84
  744. package/dist/chunk-U6AWJIFP.js +0 -225
  745. package/dist/chunk-UK4XSLV2.js +0 -296
  746. package/dist/chunk-URGXEDFV.js +0 -76
  747. package/dist/chunk-V7EN5LFS.js +0 -115
  748. package/dist/chunk-VAV5CCDD.js +0 -167
  749. package/dist/chunk-VSALEVXN.js +0 -23
  750. package/dist/chunk-W3TZPHZO.js +0 -285
  751. package/dist/chunk-WTPID22G.js +0 -152
  752. package/dist/chunk-XA76OGSL.js +0 -718
  753. package/dist/chunk-XA76OGSL.js.map +0 -1
  754. package/dist/chunk-YAMKCMAS.js +0 -219
  755. package/dist/chunk-YRWCXYWW.js +0 -178
  756. package/dist/chunk-Z3RGBLVJ.js +0 -64
  757. package/dist/chunk-ZCGM7ZWM.js +0 -45
  758. package/dist/cite-WCAOCOO5.js +0 -191
  759. package/dist/claim-YABJMHON.js +0 -200
  760. package/dist/client-VCKP6WBR.js +0 -19
  761. package/dist/code-VXOTFGD2.js +0 -76
  762. package/dist/companies-K2IVXNC5.js +0 -198
  763. package/dist/companies-K2IVXNC5.js.map +0 -1
  764. package/dist/company-6JAVJPSU.js +0 -308
  765. package/dist/complete-4R6O7TAF.js +0 -84
  766. package/dist/config-UR45YCIN.js +0 -88
  767. package/dist/connect-FWT2IC5N.js +0 -45
  768. package/dist/content-EQQIKG5H.js +0 -85
  769. package/dist/conversation-DSRM4JIU.js +0 -96
  770. package/dist/conversion-report-2FREFML5.js +0 -127
  771. package/dist/conversion-upload-command-JAGV6GMG.js +0 -439
  772. package/dist/conversion-writes-JZIJSQ7T.js +0 -122
  773. package/dist/conversions-4D5TEPO4.js +0 -140
  774. package/dist/conversions-Q5EBTEXA.js +0 -78
  775. package/dist/copy-writes-JVUX3YDL.js +0 -170
  776. package/dist/countries-GRCU4IGM.js +0 -82
  777. package/dist/create-3OYFSUR5.js +0 -62
  778. package/dist/create-FMGLMQZC.js +0 -218
  779. package/dist/create-SDFDKJGJ.js +0 -239
  780. package/dist/create-VW23RNWT.js +0 -135
  781. package/dist/creatives-4EPM3RHG.js +0 -118
  782. package/dist/creatives-E33LXJG7.js +0 -229
  783. package/dist/creatives-SLKVFR4Y.js +0 -58
  784. package/dist/credentials-WGGZFBDJ.js +0 -290
  785. package/dist/critique-EOYMGUIK.js +0 -232
  786. package/dist/critique-US4B3ZY5.js +0 -1451
  787. package/dist/crm-T4XPJZTR.js +0 -229
  788. package/dist/crm-T4XPJZTR.js.map +0 -1
  789. package/dist/crm-UBQ735O6.js +0 -323
  790. package/dist/crop-NE7YX4SS.js +0 -113
  791. package/dist/currency-EFDQYW5B.js +0 -88
  792. package/dist/currency-EFDQYW5B.js.map +0 -1
  793. package/dist/custom-conversions-GQTU5E6X.js +0 -128
  794. package/dist/customers-HHQUU3MA.js +0 -65
  795. package/dist/decide-6Q5X3V3F.js +0 -199
  796. package/dist/delete-EKKOEB3N.js +0 -69
  797. package/dist/delete-JPIV5E2Y.js +0 -67
  798. package/dist/delete-QHDDR66K.js +0 -85
  799. package/dist/delete-SP66F7ZV.js +0 -71
  800. package/dist/delete-UC5XQZWC.js +0 -69
  801. package/dist/delete-X5TD7P3U.js +0 -57
  802. package/dist/demographics-6GQYZIVR.js +0 -141
  803. package/dist/describe-DJPIUEFE.js +0 -97
  804. package/dist/describe-MAGTSOW4.js +0 -97
  805. package/dist/dimensions-IC2H7V3H.js +0 -101
  806. package/dist/discard-5UNX5TEZ.js +0 -69
  807. package/dist/discover-BPUUWRBP.js +0 -172
  808. package/dist/discover-BPUUWRBP.js.map +0 -1
  809. package/dist/discover-PSL2NBJL.js +0 -93
  810. package/dist/domain-7BOPJLTP.js +0 -101
  811. package/dist/download-B4IV43AJ.js +0 -172
  812. package/dist/download-EHDJXBAC.js +0 -337
  813. package/dist/draft-27NMTARB.js +0 -134
  814. package/dist/draft-FVB6SEP3.js +0 -332
  815. package/dist/draft-GCOCG4PO.js +0 -315
  816. package/dist/draft-GSDDK6FO.js +0 -614
  817. package/dist/draft-GSDDK6FO.js.map +0 -1
  818. package/dist/draft-JESKGZ6O.js +0 -138
  819. package/dist/draft-MWYKIZC4.js +0 -260
  820. package/dist/draft-QT6MVG47.js +0 -220
  821. package/dist/draft-VRE52N6B.js +0 -374
  822. package/dist/env-NZXNMWSD.js +0 -53
  823. package/dist/experiment-XAYSEYTU.js +0 -1397
  824. package/dist/experiments-3JSDRY5W.js +0 -236
  825. package/dist/export-W54UZ62P.js +0 -168
  826. package/dist/extract-BVSL6H3S.js +0 -143
  827. package/dist/facets-NN33WFSR.js +0 -117
  828. package/dist/favorites-Y6CT6NSQ.js +0 -178
  829. package/dist/feed-35BRQPTH.js +0 -177
  830. package/dist/feedback-BYXZEEW3.js +0 -114
  831. package/dist/feedback-P7ZGD7JV.js +0 -115
  832. package/dist/feedback-record-ZFEXC54P.js +0 -269
  833. package/dist/fetch-3JPN4QAJ.js +0 -204
  834. package/dist/fetch-I6P72CDL.js +0 -139
  835. package/dist/find-SVGRA7IA.js +0 -144
  836. package/dist/fit-2R5NGB7E.js +0 -65
  837. package/dist/flows-XM7GBTIU.js +0 -340
  838. package/dist/follow-24QSDNAG.js +0 -94
  839. package/dist/follow-competitors-AG4E4XFA.js +0 -112
  840. package/dist/following-YGM6TBK3.js +0 -113
  841. package/dist/fonts-IO4X2AKN.js +0 -39
  842. package/dist/forecast-HMNQZFVL.js +0 -169
  843. package/dist/forecast-HMNQZFVL.js.map +0 -1
  844. package/dist/forecast-MOFJ3BKH.js +0 -121
  845. package/dist/funding-WZNGXRLJ.js +0 -85
  846. package/dist/funnel-FR7JQUZW.js +0 -397
  847. package/dist/ga4-W3U5YTRT.js +0 -55
  848. package/dist/generate-KAWRRYTT.js +0 -263
  849. package/dist/get-3MTAVNTP.js +0 -56
  850. package/dist/get-5SPNAIUQ.js +0 -62
  851. package/dist/get-BMJIYS25.js +0 -62
  852. package/dist/get-GEUSRD5Y.js +0 -59
  853. package/dist/get-JIZPYK3Z.js +0 -74
  854. package/dist/get-MXXANBI3.js +0 -82
  855. package/dist/get-TS2ZJDCQ.js +0 -38
  856. package/dist/get-YWDZYEAC.js +0 -92
  857. package/dist/gif-NP6EDGEE.js +0 -111
  858. package/dist/google-3CAUWNWE.js +0 -3300
  859. package/dist/google-3CAUWNWE.js.map +0 -1
  860. package/dist/google-MHFI5OGW.js +0 -163
  861. package/dist/google-ads-ULZRFDZU.js +0 -198
  862. package/dist/group-3DT4UYSR.js +0 -43
  863. package/dist/group-OEKKCFXT.js +0 -43
  864. package/dist/gsc-4FEFPFPB.js +0 -30
  865. package/dist/history-F3U3WNEJ.js +0 -102
  866. package/dist/history-SGFTHPT2.js +0 -153
  867. package/dist/history-YQSYXBJH.js +0 -69
  868. package/dist/hubspot-FASIF5U5.js +0 -814
  869. package/dist/hubspot-FASIF5U5.js.map +0 -1
  870. package/dist/icon-43UJTGGE.js +0 -138
  871. package/dist/ideas-TKCOPOMS.js +0 -45
  872. package/dist/images-K4EPTLTF.js +0 -92
  873. package/dist/improve-IMXQN6OD.js +0 -86
  874. package/dist/ingest-MCCJBWYC.js +0 -131
  875. package/dist/ingest-T3AV5OR4.js +0 -28
  876. package/dist/insights-BR3456EI.js +0 -658
  877. package/dist/insights-UVCFOB3N.js +0 -132
  878. package/dist/inspect-3OHTBHNO.js +0 -192
  879. package/dist/inspiration-XZI5KCQW.js +0 -53
  880. package/dist/instant-experiences-2LKF7XVK.js +0 -264
  881. package/dist/intent-F5NTOSQC.js +0 -95
  882. package/dist/job-GOX3KIKG.js +0 -202
  883. package/dist/job-create-F2PQSN3C.js +0 -109
  884. package/dist/job-status-3FMA5D7T.js +0 -74
  885. package/dist/keep-23ZYMWPG.js +0 -78
  886. package/dist/keyword-gap-EB5QATYN.js +0 -130
  887. package/dist/keyword-metrics-E4PPLUYX.js +0 -200
  888. package/dist/keywords-for-site-HD2FOBMH.js +0 -131
  889. package/dist/knowledge-7M7DSRF3.js +0 -195
  890. package/dist/landing-NC2A277E.js +0 -28
  891. package/dist/landings-VNQ4VA2U.js +0 -151
  892. package/dist/languages-2X22HXM3.js +0 -55
  893. package/dist/languages-4S26FJDP.js +0 -40
  894. package/dist/launches-L4EUROCJ.js +0 -19
  895. package/dist/layerize-6QHQMA7Q.js +0 -190
  896. package/dist/lead-routes-5TPFJEVH.js +0 -733
  897. package/dist/leads-4TLOH47R.js +0 -541
  898. package/dist/leads-LL2S6ENL.js +0 -115
  899. package/dist/learn-2CP2SROJ.js +0 -207
  900. package/dist/library-MNJC24E4.js +0 -212
  901. package/dist/lighthouse-DJMAXFTD.js +0 -75
  902. package/dist/line-item-writes-56A4ITU6.js +0 -211
  903. package/dist/line-items-AIIDDTTH.js +0 -107
  904. package/dist/link-BIXBY5KG.js +0 -67
  905. package/dist/linkedin-TXX22PPH.js +0 -1344
  906. package/dist/linkedin-TXX22PPH.js.map +0 -1
  907. package/dist/linkedin-person-5KEGEX6G.js +0 -139
  908. package/dist/list-2277GCPH.js +0 -51
  909. package/dist/list-537S75BZ.js +0 -76
  910. package/dist/list-C5AT3LF4.js +0 -306
  911. package/dist/list-Q52FPW3H.js +0 -50
  912. package/dist/list-UQNU4QUE.js +0 -154
  913. package/dist/list-V4PSDBLX.js +0 -93
  914. package/dist/list-WIXQXNKB.js +0 -65
  915. package/dist/list-XK33NCSC.js +0 -57
  916. package/dist/list-YBHQ3HIB.js +0 -67
  917. package/dist/locations-UWBQLHXW.js +0 -40
  918. package/dist/locations-WXGOI3VV.js +0 -69
  919. package/dist/log-FZJTWN3S.js +0 -95
  920. package/dist/logo-4LSFZ3ZO.js +0 -19
  921. package/dist/lookup-WIM5WR25.js +0 -23
  922. package/dist/make-CGWFHT3N.js +0 -1367
  923. package/dist/map-WDOBMEAW.js +0 -445
  924. package/dist/mcp-JJZ5YGSS.js +0 -729
  925. package/dist/media-34I7UB7Z.js +0 -89
  926. package/dist/media-KKI3KWLR.js +0 -18
  927. package/dist/media-sources-AJ5USQXV.js +0 -35
  928. package/dist/members-NSR7S62Y.js +0 -47
  929. package/dist/meme-6NFYFQ7T.js +0 -108
  930. package/dist/meta-2UK7KIE4.js +0 -124
  931. package/dist/meta-2UK7KIE4.js.map +0 -1
  932. package/dist/metrics-4AFEEDVP.js +0 -152
  933. package/dist/metrics-4AFEEDVP.js.map +0 -1
  934. package/dist/normalize-G75RDSE4.js +0 -806
  935. package/dist/normalize-RQEHHRES.js +0 -144
  936. package/dist/options-4BW4P6JD.js +0 -125
  937. package/dist/organization-TKGXZYH6.js +0 -949
  938. package/dist/output-ELEO2Z6R.js +0 -24
  939. package/dist/page-4X6IBUWG.js +0 -105
  940. package/dist/page-photos-KNBLMFLN.js +0 -118
  941. package/dist/pages-7HW5YOZV.js +0 -67
  942. package/dist/performance-27VHB3UA.js +0 -27
  943. package/dist/performance-XGHZDQGU.js +0 -5565
  944. package/dist/pinterest-KA6VFDM4.js +0 -105
  945. package/dist/pixels-D5HF24FI.js +0 -109
  946. package/dist/pixels-HEI5WVAO.js +0 -62
  947. package/dist/plan-XCA6R3HZ.js +0 -208
  948. package/dist/posts-ALGM6ONV.js +0 -36
  949. package/dist/preview-2YRMPWI2.js +0 -101
  950. package/dist/preview-55TRUF4Q.js +0 -245
  951. package/dist/profile-NHUPUCBR.js +0 -159
  952. package/dist/promoted-tweet-writes-PT6BW64X.js +0 -183
  953. package/dist/promoted-tweets-SBZXEU7S.js +0 -119
  954. package/dist/properties-2ZXA5BPJ.js +0 -101
  955. package/dist/publish-Z7ZK3XB7.js +0 -350
  956. package/dist/query-63CTX2PH.js +0 -231
  957. package/dist/query-DMWY3TDD.js +0 -236
  958. package/dist/query-K7MYBRTS.js +0 -62
  959. package/dist/questionnaire-WHE42RD4.js +0 -94
  960. package/dist/read-NESEKULG.js +0 -141
  961. package/dist/reddit-L4RQNJBL.js +0 -29
  962. package/dist/refresh-EWALAFUQ.js +0 -97
  963. package/dist/refresh-ILDEPU5A.js +0 -42
  964. package/dist/release-C2H2KBNY.js +0 -63
  965. package/dist/relevant-pages-XYQKVX3U.js +0 -99
  966. package/dist/remove-JOXARFD3.js +0 -53
  967. package/dist/remove-NHE4UT7G.js +0 -49
  968. package/dist/reopen-WRW4JVO2.js +0 -66
  969. package/dist/rerun-3I7MF3FV.js +0 -97
  970. package/dist/research-422BF4O4.js +0 -265
  971. package/dist/research-MCTV6ZJZ.js +0 -75
  972. package/dist/research-MCTV6ZJZ.js.map +0 -1
  973. package/dist/reset-7ANRT4I3.js +0 -57
  974. package/dist/reset-MZDRR5VP.js +0 -57
  975. package/dist/resolve-KKRG65WF.js +0 -124
  976. package/dist/retry-PDKRPWIZ.js +0 -63
  977. package/dist/retry-YZCBWAHT.js +0 -65
  978. package/dist/retry-failed-R5HPQ3KQ.js +0 -45
  979. package/dist/revenue-F7E5ZRLB.js +0 -91
  980. package/dist/rule-writes-QB4IWFCJ.js +0 -530
  981. package/dist/rules-FYVD2QBB.js +0 -217
  982. package/dist/rules-GRLAFAZU.js +0 -99
  983. package/dist/rules-add-3C7LW4HD.js +0 -465
  984. package/dist/run-HJQ4KAWX.js +0 -72
  985. package/dist/run-ZV73UQ3E.js +0 -69
  986. package/dist/scaffold-ad-LBLEARDJ.js +0 -1513
  987. package/dist/scaffold-static-ad-GBRLIWKP.js +0 -1012
  988. package/dist/scaffold-video-EINW32ZH.js +0 -885
  989. package/dist/schedule-D7EDEM45.js +0 -67
  990. package/dist/schedule-X5ZKZXPC.js +0 -64
  991. package/dist/scheduled-agents-APZA42K2.js +0 -55
  992. package/dist/scheduled-agents-APZA42K2.js.map +0 -1
  993. package/dist/schema-6JF4ZNGY.js +0 -135
  994. package/dist/schema-Z43AJOJ4.js +0 -152
  995. package/dist/scrape-VL2RWSTW.js +0 -2209
  996. package/dist/screenshot-Y6EEXS3Q.js +0 -103
  997. package/dist/search-4VAIJA2O.js +0 -177
  998. package/dist/search-CXC7N5XJ.js +0 -51
  999. package/dist/search-JEXYEAPQ.js +0 -228
  1000. package/dist/search-L3GTZYRW.js +0 -92
  1001. package/dist/search-TXBYKNQC.js +0 -91
  1002. package/dist/search-XHSTUBDY.js +0 -26
  1003. package/dist/search-copy-FIPG7OCC.js +0 -168
  1004. package/dist/seeds-ADJKURNG.js +0 -101
  1005. package/dist/select-YZO5DDY6.js +0 -110
  1006. package/dist/sends-RS4LWRAC.js +0 -349
  1007. package/dist/sequences-2RPKDKGQ.js +0 -146
  1008. package/dist/set-prompt-GU3HPWWZ.js +0 -199
  1009. package/dist/setup-links-ORBZ5T4H.js +0 -144
  1010. package/dist/shared-4GGUIOF2.js +0 -32
  1011. package/dist/shopify-SN3TBTL5.js +0 -4009
  1012. package/dist/site-3ZORNMAE.js +0 -180
  1013. package/dist/sitemaps-Z6IELTQV.js +0 -77
  1014. package/dist/sites-KLAKI2EY.js +0 -97
  1015. package/dist/skills-OJP36EVR.js +0 -47
  1016. package/dist/sources-WGEC6FGZ.js +0 -457
  1017. package/dist/sources-WT6M3QIX.js +0 -30
  1018. package/dist/stale-BOT3VZCB.js +0 -90
  1019. package/dist/stats-MIMFX4R7.js +0 -34
  1020. package/dist/status-WED3AXTZ.js +0 -65
  1021. package/dist/sticker-IREEEN7I.js +0 -103
  1022. package/dist/stock-33GHQWNQ.js +0 -212
  1023. package/dist/studies-YGYAH3JI.js +0 -250
  1024. package/dist/studio-4EV5S7PR.js +0 -49
  1025. package/dist/study-writes-UPGJB36A.js +0 -471
  1026. package/dist/suggest-5RTISDLI.js +0 -66
  1027. package/dist/sync-2GLGCSRQ.js +0 -57
  1028. package/dist/sync-OHIXI4I6.js +0 -55
  1029. package/dist/sync-VCAFAYW4.js +0 -279
  1030. package/dist/sync-definition-SNUWHPGO.js +0 -70
  1031. package/dist/tag-DSCUKNC3.js +0 -57
  1032. package/dist/tag-manager-IINALUEJ.js +0 -43
  1033. package/dist/tags-AQNOA7X5.js +0 -23
  1034. package/dist/tags-CVPMOYKI.js +0 -23
  1035. package/dist/tags-IQY7GYMU.js +0 -227
  1036. package/dist/tags-MYUCES3W.js +0 -26
  1037. package/dist/tags-SCMHCPF4.js +0 -23
  1038. package/dist/targeting-BM72UTI6.js +0 -762
  1039. package/dist/targeting-constants-54S3FXIF.js +0 -118
  1040. package/dist/targeting-criteria-RVJHW22S.js +0 -113
  1041. package/dist/targets-G6SN6VTL.js +0 -106
  1042. package/dist/terms-OFHNLW6U.js +0 -102
  1043. package/dist/testimonials-JALUWWLB.js +0 -32
  1044. package/dist/themes-FW3VWZJE.js +0 -95
  1045. package/dist/themes-FW3VWZJE.js.map +0 -1
  1046. package/dist/top-companies-WR6TXTNM.js +0 -111
  1047. package/dist/top-companies-WR6TXTNM.js.map +0 -1
  1048. package/dist/transcript-JMRRJEET.js +0 -165
  1049. package/dist/translate-YNOS5HTV.js +0 -603
  1050. package/dist/triggers-UUSPHGXX.js +0 -144
  1051. package/dist/tweets-TRTXC6O4.js +0 -123
  1052. package/dist/unfollow-DATOGPLZ.js +0 -46
  1053. package/dist/unlink-U5VBTO7P.js +0 -70
  1054. package/dist/unstage-KSYT7FOP.js +0 -88
  1055. package/dist/unstage-LLQCMZ5H.js +0 -96
  1056. package/dist/update-GFKDIJRE.js +0 -66
  1057. package/dist/update-QF6BLM5F.js +0 -101
  1058. package/dist/update-SD5YQIJC.js +0 -81
  1059. package/dist/update-VBQKI72I.js +0 -192
  1060. package/dist/update-ZIKHDZRT.js +0 -155
  1061. package/dist/upload-7PPMVWVA.js +0 -155
  1062. package/dist/upload-UYE73VLK.js +0 -137
  1063. package/dist/upscale-WVJZG76V.js +0 -109
  1064. package/dist/url-options-AHJPR5VY.js +0 -131
  1065. package/dist/url-options-AHJPR5VY.js.map +0 -1
  1066. package/dist/url-params-P6MV2HKB.js +0 -101
  1067. package/dist/use-6FADOAFZ.js +0 -111
  1068. package/dist/validate-TTVHWWX5.js +0 -135
  1069. package/dist/variant-RNM36P4J.js +0 -338
  1070. package/dist/videos-GHFCOTT7.js +0 -146
  1071. package/dist/videos-XGQL37V4.js +0 -41
  1072. package/dist/view-YR6MDLWL.js +0 -133
  1073. package/dist/viewer-check-UPLR7C2K.js +0 -83
  1074. package/dist/web-PIMTCU4V.js +0 -173
  1075. package/dist/winners-4T5RFQXU.js +0 -113
  1076. package/dist/winning-ads-P4MXWYK6.js +0 -86
  1077. package/dist/write-commands-24EOSYWL.js +0 -1524
  1078. package/dist/write-commands-6D55SB56.js +0 -206
  1079. package/dist/write-commands-AIWLEGO2.js +0 -1169
  1080. package/dist/write-commands-UO3OQIHH.js +0 -721
  1081. package/dist/x-HBA6AJJA.js +0 -47
  1082. /package/dist/{account-52WDLW4Z.js.map → account-WFAMHUCQ.js.map} +0 -0
  1083. /package/dist/{account-SGHH4SIM.js.map → account-Y7ZFEM7U.js.map} +0 -0
  1084. /package/dist/{account-NSBALYYS.js.map → account-YYB2KWLU.js.map} +0 -0
  1085. /package/dist/{account-assets-EPEYTJFD.js.map → account-assets-BFMQWV33.js.map} +0 -0
  1086. /package/dist/{account-level-VD4NLB2D.js.map → account-level-47IS2CZB.js.map} +0 -0
  1087. /package/dist/{account-users-KP6A43DU.js.map → account-users-QAFQDSZQ.js.map} +0 -0
  1088. /package/dist/{account-writes-3BJSUM2V.js.map → account-writes-EEKHPF5I.js.map} +0 -0
  1089. /package/dist/{accounts-ZV4IXOF5.js.map → accounts-H3KO5AEN.js.map} +0 -0
  1090. /package/dist/{accounts-A47QUTTB.js.map → accounts-LTGUK6OV.js.map} +0 -0
  1091. /package/dist/{accounts-E5TF2AFI.js.map → accounts-LTUEBWJL.js.map} +0 -0
  1092. /package/dist/{accounts-FV5FPX3X.js.map → accounts-TFUGF7UK.js.map} +0 -0
  1093. /package/dist/{actions-RZ62K3WT.js.map → actions-FTIRKAAN.js.map} +0 -0
  1094. /package/dist/{active-entities-XRSJNBOV.js.map → active-entities-QWJXR4W6.js.map} +0 -0
  1095. /package/dist/{activecampaign-E6PM6YNO.js.map → activecampaign-BCOEXYZ7.js.map} +0 -0
  1096. /package/dist/{activities-ZDWREYR7.js.map → activities-ZRP22SC2.js.map} +0 -0
  1097. /package/dist/{ad-group-writes-KU4QMQZP.js.map → ad-group-writes-UDQ4563V.js.map} +0 -0
  1098. /package/dist/{ad-groups-NMW2G32A.js.map → ad-groups-RXT2XKSE.js.map} +0 -0
  1099. /package/dist/{ad-writes-7NOFTOM4.js.map → ad-writes-SHLTL2FY.js.map} +0 -0
  1100. /package/dist/{add-25YZMFSH.js.map → add-F65GOWKP.js.map} +0 -0
  1101. /package/dist/{add-D44VCDRU.js.map → add-IALA4VRA.js.map} +0 -0
  1102. /package/dist/{add-7MAL7JRX.js.map → add-ITX64WEC.js.map} +0 -0
  1103. /package/dist/{add-MLTE6PPC.js.map → add-L6MKL2G2.js.map} +0 -0
  1104. /package/dist/{add-HMAQJG4J.js.map → add-QGJPTGU7.js.map} +0 -0
  1105. /package/dist/{add-JO4ZPS23.js.map → add-WAVXB2QA.js.map} +0 -0
  1106. /package/dist/{add-accounts-EKMSHAA4.js.map → add-accounts-YTLQCSXB.js.map} +0 -0
  1107. /package/dist/{ads-DGL5SGP3.js.map → ads-A34INCCM.js.map} +0 -0
  1108. /package/dist/{ads-4YZYNU66.js.map → ads-AKF5AT6O.js.map} +0 -0
  1109. /package/dist/{ads-T6J6QQKX.js.map → ads-AYXMFUIF.js.map} +0 -0
  1110. /package/dist/{ads-P4Z3MLKS.js.map → ads-CUMOMBI3.js.map} +0 -0
  1111. /package/dist/{adsets-PSVCPCE3.js.map → adsets-HNFBX4LB.js.map} +0 -0
  1112. /package/dist/{advertisers-FP7MTMUI.js.map → advertisers-RVTUZ53M.js.map} +0 -0
  1113. /package/dist/{advertisers-7NAPI5ZU.js.map → advertisers-YTG6VA6R.js.map} +0 -0
  1114. /package/dist/{analytics-D2IA2P5E.js.map → analytics-4YHYFRHH.js.map} +0 -0
  1115. /package/dist/{animate-VX7E7KJE.js.map → animate-MBNFCDUZ.js.map} +0 -0
  1116. /package/dist/{approved-E4EZA5RT.js.map → approved-3W56YTOZ.js.map} +0 -0
  1117. /package/dist/{asset-writes-NDSHY5OT.js.map → asset-writes-2CYNDRPU.js.map} +0 -0
  1118. /package/dist/{assign-EE4EDOPX.js.map → assign-JC5BK5XE.js.map} +0 -0
  1119. /package/dist/{audience-size-SRNH57FA.js.map → audience-size-ZVRH3BEL.js.map} +0 -0
  1120. /package/dist/{audience-writes-4KQXVGHO.js.map → audience-writes-JNVGUHGN.js.map} +0 -0
  1121. /package/dist/{audiences-P3SPTAJT.js.map → audiences-KBW2UAOP.js.map} +0 -0
  1122. /package/dist/{audiences-T5LMTT3B.js.map → audiences-OOXSXKIT.js.map} +0 -0
  1123. /package/dist/{audiences-UHLVATR6.js.map → audiences-S6TXNKQ2.js.map} +0 -0
  1124. /package/dist/{audit-R5JG3ABY.js.map → audit-JXRVO37K.js.map} +0 -0
  1125. /package/dist/{audit-46DO2HV3.js.map → audit-O2RRST7B.js.map} +0 -0
  1126. /package/dist/{autocomplete-AIKXLHME.js.map → autocomplete-CBBFRPJZ.js.map} +0 -0
  1127. /package/dist/{avatars-3CAQ5OBN.js.map → avatars-GB7B2MGR.js.map} +0 -0
  1128. /package/dist/{bid-pricing-PDZIJGOX.js.map → bid-pricing-G4IXJRVK.js.map} +0 -0
  1129. /package/dist/{brand-2SN7MM72.js.map → brand-VKQ72SRQ.js.map} +0 -0
  1130. /package/dist/{brief-S4R3NZMS.js.map → brief-X3FRAPUH.js.map} +0 -0
  1131. /package/dist/{businesses-TRFYMZ4I.js.map → businesses-HOAQVYRH.js.map} +0 -0
  1132. /package/dist/{campaign-groups-OHL6POG2.js.map → campaign-groups-NA73I7JR.js.map} +0 -0
  1133. /package/dist/{campaign-writes-P5XPFTRK.js.map → campaign-writes-JYMQF6CK.js.map} +0 -0
  1134. /package/dist/{campaign-writes-RKCE4MSZ.js.map → campaign-writes-ZOLIX3EB.js.map} +0 -0
  1135. /package/dist/{campaigns-HGMQSYUM.js.map → campaigns-DZAZIUES.js.map} +0 -0
  1136. /package/dist/{campaigns-2MTON2IE.js.map → campaigns-EEH3VDK6.js.map} +0 -0
  1137. /package/dist/{campaigns-UWUEENB6.js.map → campaigns-PB3QNTI4.js.map} +0 -0
  1138. /package/dist/{campaigns-SWZJVE2T.js.map → campaigns-TMHFCPAZ.js.map} +0 -0
  1139. /package/dist/{canvas-RAPLCU3Y.js.map → canvas-4EGLYNYM.js.map} +0 -0
  1140. /package/dist/{capabilities-FF6NNJ5L.js.map → capabilities-JZFPET7C.js.map} +0 -0
  1141. /package/dist/{cards-CXKIVM4D.js.map → cards-OOKI2WSA.js.map} +0 -0
  1142. /package/dist/{catalog-TOHUVBEU.js.map → catalog-2P422WOQ.js.map} +0 -0
  1143. /package/dist/{catalogs-4DNLG4AM.js.map → catalogs-WBXWK7NT.js.map} +0 -0
  1144. /package/dist/{catalogs-V7PTEJBO.js.map → catalogs-XFYYY3CS.js.map} +0 -0
  1145. /package/dist/{chatgpt-JBMYNVJB.js.map → chatgpt-KNLATOZ6.js.map} +0 -0
  1146. /package/dist/{chats-XVAFLM47.js.map → chats-CE7RKD6W.js.map} +0 -0
  1147. /package/dist/{check-FFRPBGUH.js.map → check-SIMBAMXJ.js.map} +0 -0
  1148. /package/dist/{chunk-QVO5VPNA.js.map → chunk-2NXACVED.js.map} +0 -0
  1149. /package/dist/{chunk-N7EHQNNG.js.map → chunk-2S3VIE7D.js.map} +0 -0
  1150. /package/dist/{chunk-IYDESWW4.js.map → chunk-2ZKQNMK2.js.map} +0 -0
  1151. /package/dist/{chunk-47VWQ7FQ.js.map → chunk-37QNC344.js.map} +0 -0
  1152. /package/dist/{chunk-CTAXKC5J.js.map → chunk-45ETXHUI.js.map} +0 -0
  1153. /package/dist/{chunk-H7LKYGLJ.js.map → chunk-4DHHMWP4.js.map} +0 -0
  1154. /package/dist/{chunk-C7KV5O5J.js.map → chunk-4GRVNPHA.js.map} +0 -0
  1155. /package/dist/{chunk-4SAO6RT2.js.map → chunk-5G7UBTBE.js.map} +0 -0
  1156. /package/dist/{chunk-2EEDKWYY.js.map → chunk-5HQ64Z7X.js.map} +0 -0
  1157. /package/dist/{chunk-FLTAPEVY.js.map → chunk-5IHZTLDH.js.map} +0 -0
  1158. /package/dist/{chunk-7YEP3NFN.js.map → chunk-5QCAWD6V.js.map} +0 -0
  1159. /package/dist/{chunk-3WN5GWX4.js.map → chunk-62UGVR7Q.js.map} +0 -0
  1160. /package/dist/{chunk-W3TZPHZO.js.map → chunk-6LLA6IF6.js.map} +0 -0
  1161. /package/dist/{chunk-ITIUWJGQ.js.map → chunk-6PJGHPXG.js.map} +0 -0
  1162. /package/dist/{chunk-TLQY4QBW.js.map → chunk-6ZW5AR5N.js.map} +0 -0
  1163. /package/dist/{chunk-J4BJLHLQ.js.map → chunk-7LFOSBF4.js.map} +0 -0
  1164. /package/dist/{chunk-EJ6EED6I.js.map → chunk-7XFQPPYB.js.map} +0 -0
  1165. /package/dist/{chunk-M2RXXLK3.js.map → chunk-AWYXZU45.js.map} +0 -0
  1166. /package/dist/{chunk-BFAPSFS7.js.map → chunk-AYOTYURE.js.map} +0 -0
  1167. /package/dist/{chunk-HM4NWA72.js.map → chunk-BYV4VS5E.js.map} +0 -0
  1168. /package/dist/{chunk-DGHSXHZR.js.map → chunk-CGLNCFAG.js.map} +0 -0
  1169. /package/dist/{chunk-KGJ6EIX3.js.map → chunk-CP5IVVYM.js.map} +0 -0
  1170. /package/dist/{chunk-RBR5PHYJ.js.map → chunk-CXVHS2SV.js.map} +0 -0
  1171. /package/dist/{chunk-LAOCXV6Z.js.map → chunk-DCBCEYSH.js.map} +0 -0
  1172. /package/dist/{chunk-MKOI6QYM.js.map → chunk-DFE77XT5.js.map} +0 -0
  1173. /package/dist/{chunk-6MJKVNLL.js.map → chunk-DN6EMVA4.js.map} +0 -0
  1174. /package/dist/{chunk-Q736UFSD.js.map → chunk-E2G2USTA.js.map} +0 -0
  1175. /package/dist/{chunk-CBVUO7SK.js.map → chunk-EFZVDV7F.js.map} +0 -0
  1176. /package/dist/{chunk-TEQEZAJI.js.map → chunk-FTP6NDOU.js.map} +0 -0
  1177. /package/dist/{chunk-C57CXCTI.js.map → chunk-FUFLMP4B.js.map} +0 -0
  1178. /package/dist/{chunk-WTPID22G.js.map → chunk-HJS6FPQX.js.map} +0 -0
  1179. /package/dist/{chunk-BIBXZJZI.js.map → chunk-HZ7QUFUW.js.map} +0 -0
  1180. /package/dist/{chunk-AP7X3ONA.js.map → chunk-IDFAFNL6.js.map} +0 -0
  1181. /package/dist/{chunk-RHBCKOF2.js.map → chunk-ILLS2XWG.js.map} +0 -0
  1182. /package/dist/{chunk-RRKUXGAU.js.map → chunk-ITABNSX6.js.map} +0 -0
  1183. /package/dist/{chunk-LJEJCIHR.js.map → chunk-JCFZ7ECN.js.map} +0 -0
  1184. /package/dist/{chunk-U6AWJIFP.js.map → chunk-JTYD7A3C.js.map} +0 -0
  1185. /package/dist/{chunk-DXQ5DUFU.js.map → chunk-K2WKQXGH.js.map} +0 -0
  1186. /package/dist/{chunk-H6ASYVQX.js.map → chunk-KMZ4YWS4.js.map} +0 -0
  1187. /package/dist/{chunk-7GFGFBWZ.js.map → chunk-KSBXVA4K.js.map} +0 -0
  1188. /package/dist/{chunk-L2LGHWJN.js.map → chunk-KSJRHAE4.js.map} +0 -0
  1189. /package/dist/{chunk-SPNY52S5.js.map → chunk-KYLTADVX.js.map} +0 -0
  1190. /package/dist/{chunk-GQUBM3Z6.js.map → chunk-L6UZM3ZN.js.map} +0 -0
  1191. /package/dist/{chunk-2N7TB346.js.map → chunk-LRIP2J5S.js.map} +0 -0
  1192. /package/dist/{chunk-VSALEVXN.js.map → chunk-M27HR7YD.js.map} +0 -0
  1193. /package/dist/{chunk-VAV5CCDD.js.map → chunk-M7BSXJNL.js.map} +0 -0
  1194. /package/dist/{chunk-4AO3LSYM.js.map → chunk-MGUEAG6W.js.map} +0 -0
  1195. /package/dist/{chunk-V7EN5LFS.js.map → chunk-MIBOIXCP.js.map} +0 -0
  1196. /package/dist/{chunk-URGXEDFV.js.map → chunk-MNFJQRUO.js.map} +0 -0
  1197. /package/dist/{chunk-OJZKY5UM.js.map → chunk-MQU4LNYG.js.map} +0 -0
  1198. /package/dist/{chunk-5XB352F5.js.map → chunk-MSOFG7FT.js.map} +0 -0
  1199. /package/dist/{chunk-L7I47VGM.js.map → chunk-MUT2BPDM.js.map} +0 -0
  1200. /package/dist/{chunk-PRZBEZBA.js.map → chunk-MUU27AJF.js.map} +0 -0
  1201. /package/dist/{chunk-C4BPAMAJ.js.map → chunk-MVDMMSXS.js.map} +0 -0
  1202. /package/dist/{chunk-AQRBEPZL.js.map → chunk-MWPM6HNV.js.map} +0 -0
  1203. /package/dist/{chunk-DHF4FXWS.js.map → chunk-NE3AZ25Y.js.map} +0 -0
  1204. /package/dist/{chunk-JGK2FDZW.js.map → chunk-NEALLMDP.js.map} +0 -0
  1205. /package/dist/{chunk-OJRS3TGS.js.map → chunk-NZOMEXDN.js.map} +0 -0
  1206. /package/dist/{chunk-NAZ7A7LN.js.map → chunk-O5K5EKJC.js.map} +0 -0
  1207. /package/dist/{chunk-SIRRBWQ2.js.map → chunk-OFSUVUXT.js.map} +0 -0
  1208. /package/dist/{chunk-M4KFO256.js.map → chunk-P6H6JZXO.js.map} +0 -0
  1209. /package/dist/{chunk-2K5GSSPU.js.map → chunk-P7OX5Y75.js.map} +0 -0
  1210. /package/dist/{chunk-EV2HVFTJ.js.map → chunk-QY6GNZFH.js.map} +0 -0
  1211. /package/dist/{chunk-3GXHML4V.js.map → chunk-RM5JT6XF.js.map} +0 -0
  1212. /package/dist/{chunk-3QPG2D27.js.map → chunk-ROWUTQFG.js.map} +0 -0
  1213. /package/dist/{chunk-ZCGM7ZWM.js.map → chunk-RSABCQLI.js.map} +0 -0
  1214. /package/dist/{chunk-KJXKLEJ7.js.map → chunk-SGA5V2BM.js.map} +0 -0
  1215. /package/dist/{chunk-CF5I4Q5M.js.map → chunk-SO7NANAH.js.map} +0 -0
  1216. /package/dist/{chunk-33ZP44QR.js.map → chunk-SQZKWZ6F.js.map} +0 -0
  1217. /package/dist/{chunk-JAME5NBT.js.map → chunk-SULQZX5W.js.map} +0 -0
  1218. /package/dist/{chunk-7MIOMG22.js.map → chunk-T3YHV2UM.js.map} +0 -0
  1219. /package/dist/{chunk-Q3G4ZI2U.js.map → chunk-T4HIFVNK.js.map} +0 -0
  1220. /package/dist/{chunk-O5VSYBUA.js.map → chunk-TJTCHTR4.js.map} +0 -0
  1221. /package/dist/{chunk-YAMKCMAS.js.map → chunk-TUS2VOMZ.js.map} +0 -0
  1222. /package/dist/{chunk-UK4XSLV2.js.map → chunk-U3LO5TDH.js.map} +0 -0
  1223. /package/dist/{chunk-L4QEMWNJ.js.map → chunk-UDNN4POE.js.map} +0 -0
  1224. /package/dist/{chunk-H25GY4U4.js.map → chunk-UYVMINV2.js.map} +0 -0
  1225. /package/dist/{chunk-MYGPWKEI.js.map → chunk-VC2XB5JT.js.map} +0 -0
  1226. /package/dist/{chunk-S5S54J2K.js.map → chunk-VGJFNHSA.js.map} +0 -0
  1227. /package/dist/{chunk-JJBO7QIR.js.map → chunk-VQMEXYP3.js.map} +0 -0
  1228. /package/dist/{chunk-5QNW5PCM.js.map → chunk-VQOBDHZP.js.map} +0 -0
  1229. /package/dist/{chunk-Q5XUFN2W.js.map → chunk-VRQ5HEVU.js.map} +0 -0
  1230. /package/dist/{chunk-ARCQQUEL.js.map → chunk-VUG7DFVI.js.map} +0 -0
  1231. /package/dist/{chunk-7NBQQOCU.js.map → chunk-VVITBZKP.js.map} +0 -0
  1232. /package/dist/{chunk-Q5DLTIYL.js.map → chunk-WB4FNMSI.js.map} +0 -0
  1233. /package/dist/{chunk-2CC4CPDT.js.map → chunk-WFTTF2MP.js.map} +0 -0
  1234. /package/dist/{chunk-CKN4HQZM.js.map → chunk-WUNWVQAI.js.map} +0 -0
  1235. /package/dist/{chunk-6EOWBGGW.js.map → chunk-XMIV53FM.js.map} +0 -0
  1236. /package/dist/{chunk-DPOUS5DN.js.map → chunk-XNUUEUJB.js.map} +0 -0
  1237. /package/dist/{chunk-AZIXX73C.js.map → chunk-YB2UVOAD.js.map} +0 -0
  1238. /package/dist/{chunk-IJ6WA2JW.js.map → chunk-YP5SD6O2.js.map} +0 -0
  1239. /package/dist/{chunk-S3XCG55E.js.map → chunk-YRW2AAKX.js.map} +0 -0
  1240. /package/dist/{chunk-YRWCXYWW.js.map → chunk-YT6YI47O.js.map} +0 -0
  1241. /package/dist/{chunk-2KQQHBBQ.js.map → chunk-YYFARPMN.js.map} +0 -0
  1242. /package/dist/{chunk-OHVXHNUR.js.map → chunk-Z2QKUVHP.js.map} +0 -0
  1243. /package/dist/{chunk-AXJ2DMM4.js.map → chunk-Z2WTCFQ6.js.map} +0 -0
  1244. /package/dist/{chunk-Z3RGBLVJ.js.map → chunk-Z3KRNKEA.js.map} +0 -0
  1245. /package/dist/{chunk-MIHY534L.js.map → chunk-Z6RTEOEY.js.map} +0 -0
  1246. /package/dist/{cite-WCAOCOO5.js.map → cite-I5UV5SKS.js.map} +0 -0
  1247. /package/dist/{claim-YABJMHON.js.map → claim-QS3M3TOL.js.map} +0 -0
  1248. /package/dist/{client-VCKP6WBR.js.map → client-DKZM6XTS.js.map} +0 -0
  1249. /package/dist/{code-VXOTFGD2.js.map → code-D3J5FQCF.js.map} +0 -0
  1250. /package/dist/{connect-FWT2IC5N.js.map → companies-XCKJCRHM.js.map} +0 -0
  1251. /package/dist/{company-6JAVJPSU.js.map → company-IQ4LMS24.js.map} +0 -0
  1252. /package/dist/{complete-4R6O7TAF.js.map → complete-PPHC25BS.js.map} +0 -0
  1253. /package/dist/{config-UR45YCIN.js.map → config-ACEF37UO.js.map} +0 -0
  1254. /package/dist/{customers-HHQUU3MA.js.map → connect-F6LPMOCU.js.map} +0 -0
  1255. /package/dist/{content-EQQIKG5H.js.map → content-5RTSXURF.js.map} +0 -0
  1256. /package/dist/{conversation-DSRM4JIU.js.map → conversation-GYDBXZN2.js.map} +0 -0
  1257. /package/dist/{conversion-report-2FREFML5.js.map → conversion-report-6SVHPLHT.js.map} +0 -0
  1258. /package/dist/{conversion-upload-command-JAGV6GMG.js.map → conversion-upload-command-J3STKMAL.js.map} +0 -0
  1259. /package/dist/{conversion-writes-JZIJSQ7T.js.map → conversion-writes-PEKNBIDQ.js.map} +0 -0
  1260. /package/dist/{conversions-4D5TEPO4.js.map → conversions-7PSI7L55.js.map} +0 -0
  1261. /package/dist/{conversions-Q5EBTEXA.js.map → conversions-ICSKSSLX.js.map} +0 -0
  1262. /package/dist/{copy-writes-JVUX3YDL.js.map → copy-writes-ER5ZB5C4.js.map} +0 -0
  1263. /package/dist/{countries-GRCU4IGM.js.map → countries-OJZQQYFT.js.map} +0 -0
  1264. /package/dist/{create-VW23RNWT.js.map → create-AJPHIQIT.js.map} +0 -0
  1265. /package/dist/{create-SDFDKJGJ.js.map → create-DM7DUVDQ.js.map} +0 -0
  1266. /package/dist/{create-3OYFSUR5.js.map → create-R6BEEL3J.js.map} +0 -0
  1267. /package/dist/{create-FMGLMQZC.js.map → create-XYJYG7CU.js.map} +0 -0
  1268. /package/dist/{creatives-SLKVFR4Y.js.map → creatives-LD76JBM4.js.map} +0 -0
  1269. /package/dist/{creatives-E33LXJG7.js.map → creatives-R6Q2QUQI.js.map} +0 -0
  1270. /package/dist/{creatives-4EPM3RHG.js.map → creatives-ZGXH7UA7.js.map} +0 -0
  1271. /package/dist/{credentials-WGGZFBDJ.js.map → credentials-P7L6PQKJ.js.map} +0 -0
  1272. /package/dist/{critique-US4B3ZY5.js.map → critique-DIVRMX7I.js.map} +0 -0
  1273. /package/dist/{critique-EOYMGUIK.js.map → critique-KLGX7RI6.js.map} +0 -0
  1274. /package/dist/{crm-UBQ735O6.js.map → crm-Y3F5UUXL.js.map} +0 -0
  1275. /package/dist/{crop-NE7YX4SS.js.map → crop-SRCLDYM5.js.map} +0 -0
  1276. /package/dist/{custom-conversions-GQTU5E6X.js.map → custom-conversions-RTSR3KKJ.js.map} +0 -0
  1277. /package/dist/{env-NZXNMWSD.js.map → customers-7NG2IPJK.js.map} +0 -0
  1278. /package/dist/{decide-6Q5X3V3F.js.map → decide-2WQKE6HC.js.map} +0 -0
  1279. /package/dist/{delete-QHDDR66K.js.map → delete-DWQS7UCJ.js.map} +0 -0
  1280. /package/dist/{delete-X5TD7P3U.js.map → delete-HGIMNZ4V.js.map} +0 -0
  1281. /package/dist/{delete-UC5XQZWC.js.map → delete-KDD6QSJA.js.map} +0 -0
  1282. /package/dist/{delete-EKKOEB3N.js.map → delete-MJSASLP6.js.map} +0 -0
  1283. /package/dist/{delete-SP66F7ZV.js.map → delete-N76JN5MP.js.map} +0 -0
  1284. /package/dist/{delete-JPIV5E2Y.js.map → delete-S7U6A435.js.map} +0 -0
  1285. /package/dist/{demographics-6GQYZIVR.js.map → demographics-PNEXYSZD.js.map} +0 -0
  1286. /package/dist/{describe-MAGTSOW4.js.map → describe-42XBBR6J.js.map} +0 -0
  1287. /package/dist/{describe-DJPIUEFE.js.map → describe-TKOJMWML.js.map} +0 -0
  1288. /package/dist/{dimensions-IC2H7V3H.js.map → dimensions-5OS26IF6.js.map} +0 -0
  1289. /package/dist/{discard-5UNX5TEZ.js.map → discard-MT26YH73.js.map} +0 -0
  1290. /package/dist/{discover-PSL2NBJL.js.map → discover-IDC6PQV2.js.map} +0 -0
  1291. /package/dist/{domain-7BOPJLTP.js.map → domain-H6GRR7WD.js.map} +0 -0
  1292. /package/dist/{download-B4IV43AJ.js.map → download-QCDXPSUM.js.map} +0 -0
  1293. /package/dist/{download-EHDJXBAC.js.map → download-QH4VHDS6.js.map} +0 -0
  1294. /package/dist/{draft-MWYKIZC4.js.map → draft-3MYPEBSF.js.map} +0 -0
  1295. /package/dist/{draft-VRE52N6B.js.map → draft-EUWOFQXE.js.map} +0 -0
  1296. /package/dist/{draft-JESKGZ6O.js.map → draft-FJ55MZB4.js.map} +0 -0
  1297. /package/dist/{draft-QT6MVG47.js.map → draft-FRX24TKC.js.map} +0 -0
  1298. /package/dist/{draft-FVB6SEP3.js.map → draft-RKKOSTJF.js.map} +0 -0
  1299. /package/dist/{draft-27NMTARB.js.map → draft-W7FYHKI2.js.map} +0 -0
  1300. /package/dist/{draft-GCOCG4PO.js.map → draft-ZDS6KFZ3.js.map} +0 -0
  1301. /package/dist/{fit-2R5NGB7E.js.map → env-AMOXYHCA.js.map} +0 -0
  1302. /package/dist/{experiment-XAYSEYTU.js.map → experiment-TBLKWI2J.js.map} +0 -0
  1303. /package/dist/{experiments-3JSDRY5W.js.map → experiments-SJV3ZE46.js.map} +0 -0
  1304. /package/dist/{export-W54UZ62P.js.map → export-AMOLHZB6.js.map} +0 -0
  1305. /package/dist/{extract-BVSL6H3S.js.map → extract-MT3P3SYT.js.map} +0 -0
  1306. /package/dist/{facets-NN33WFSR.js.map → facets-LWJT5J4S.js.map} +0 -0
  1307. /package/dist/{favorites-Y6CT6NSQ.js.map → favorites-Z24QDACW.js.map} +0 -0
  1308. /package/dist/{feed-35BRQPTH.js.map → feed-2XCJ2JIV.js.map} +0 -0
  1309. /package/dist/{feedback-BYXZEEW3.js.map → feedback-AB2QVJU3.js.map} +0 -0
  1310. /package/dist/{feedback-P7ZGD7JV.js.map → feedback-EGVQJTCD.js.map} +0 -0
  1311. /package/dist/{feedback-record-ZFEXC54P.js.map → feedback-record-F32XSTKZ.js.map} +0 -0
  1312. /package/dist/{fetch-3JPN4QAJ.js.map → fetch-M5KGRBEI.js.map} +0 -0
  1313. /package/dist/{fetch-I6P72CDL.js.map → fetch-Z5MNAIQS.js.map} +0 -0
  1314. /package/dist/{find-SVGRA7IA.js.map → find-XMISWVZT.js.map} +0 -0
  1315. /package/dist/{fonts-IO4X2AKN.js.map → fit-YDHY7E7H.js.map} +0 -0
  1316. /package/dist/{flows-XM7GBTIU.js.map → flows-3V47HJQ3.js.map} +0 -0
  1317. /package/dist/{follow-24QSDNAG.js.map → follow-542NYE76.js.map} +0 -0
  1318. /package/dist/{follow-competitors-AG4E4XFA.js.map → follow-competitors-NZDLHP7P.js.map} +0 -0
  1319. /package/dist/{following-YGM6TBK3.js.map → following-JTZZCSQX.js.map} +0 -0
  1320. /package/dist/{ideas-TKCOPOMS.js.map → fonts-3GV2ZO5E.js.map} +0 -0
  1321. /package/dist/{forecast-MOFJ3BKH.js.map → forecast-YKHZXBSB.js.map} +0 -0
  1322. /package/dist/{funding-WZNGXRLJ.js.map → funding-HKPP53U2.js.map} +0 -0
  1323. /package/dist/{funnel-FR7JQUZW.js.map → funnel-B4WROVPH.js.map} +0 -0
  1324. /package/dist/{ga4-W3U5YTRT.js.map → ga4-MUIZN7ID.js.map} +0 -0
  1325. /package/dist/{generate-KAWRRYTT.js.map → generate-GBFLO76C.js.map} +0 -0
  1326. /package/dist/{get-GEUSRD5Y.js.map → get-3QLANJES.js.map} +0 -0
  1327. /package/dist/{get-5SPNAIUQ.js.map → get-D5G2RNTR.js.map} +0 -0
  1328. /package/dist/{get-BMJIYS25.js.map → get-FG3VO3BZ.js.map} +0 -0
  1329. /package/dist/{get-JIZPYK3Z.js.map → get-G4UPOHVY.js.map} +0 -0
  1330. /package/dist/{get-3MTAVNTP.js.map → get-GOXOADPY.js.map} +0 -0
  1331. /package/dist/{get-MXXANBI3.js.map → get-HQUIC2MQ.js.map} +0 -0
  1332. /package/dist/{get-TS2ZJDCQ.js.map → get-JUI3RVMT.js.map} +0 -0
  1333. /package/dist/{get-YWDZYEAC.js.map → get-T7A3CTS2.js.map} +0 -0
  1334. /package/dist/{gif-NP6EDGEE.js.map → gif-4KAQUYPX.js.map} +0 -0
  1335. /package/dist/{google-MHFI5OGW.js.map → google-PKT7ORVP.js.map} +0 -0
  1336. /package/dist/{google-ads-ULZRFDZU.js.map → google-ads-AKIWTLR4.js.map} +0 -0
  1337. /package/dist/{group-3DT4UYSR.js.map → group-4GYPBQMU.js.map} +0 -0
  1338. /package/dist/{group-OEKKCFXT.js.map → group-GH5CSQKA.js.map} +0 -0
  1339. /package/dist/{gsc-4FEFPFPB.js.map → gsc-3EIBYMON.js.map} +0 -0
  1340. /package/dist/{history-F3U3WNEJ.js.map → history-FX223L6D.js.map} +0 -0
  1341. /package/dist/{history-SGFTHPT2.js.map → history-HB45CGYR.js.map} +0 -0
  1342. /package/dist/{history-YQSYXBJH.js.map → history-K4VYVCZC.js.map} +0 -0
  1343. /package/dist/{icon-43UJTGGE.js.map → icon-VYFLZ4FS.js.map} +0 -0
  1344. /package/dist/{ingest-T3AV5OR4.js.map → ideas-6GD47AQW.js.map} +0 -0
  1345. /package/dist/{images-K4EPTLTF.js.map → images-BC7ZWZ4B.js.map} +0 -0
  1346. /package/dist/{improve-IMXQN6OD.js.map → improve-ZBPSMVFI.js.map} +0 -0
  1347. /package/dist/{ingest-MCCJBWYC.js.map → ingest-T3FJWORN.js.map} +0 -0
  1348. /package/dist/{launches-L4EUROCJ.js.map → ingest-XJ5DDUNG.js.map} +0 -0
  1349. /package/dist/{insights-BR3456EI.js.map → insights-2NWY4XJR.js.map} +0 -0
  1350. /package/dist/{insights-UVCFOB3N.js.map → insights-RHOCF7VR.js.map} +0 -0
  1351. /package/dist/{inspect-3OHTBHNO.js.map → inspect-GYEHCDZR.js.map} +0 -0
  1352. /package/dist/{inspiration-XZI5KCQW.js.map → inspiration-6FGGHV73.js.map} +0 -0
  1353. /package/dist/{instant-experiences-2LKF7XVK.js.map → instant-experiences-YZYOLGBA.js.map} +0 -0
  1354. /package/dist/{intent-F5NTOSQC.js.map → intent-TKFH57DZ.js.map} +0 -0
  1355. /package/dist/{job-GOX3KIKG.js.map → job-2XYPZRJ6.js.map} +0 -0
  1356. /package/dist/{job-create-F2PQSN3C.js.map → job-create-BPUOBKXA.js.map} +0 -0
  1357. /package/dist/{job-status-3FMA5D7T.js.map → job-status-HUDHF6BU.js.map} +0 -0
  1358. /package/dist/{keep-23ZYMWPG.js.map → keep-XBYR2NII.js.map} +0 -0
  1359. /package/dist/{keyword-gap-EB5QATYN.js.map → keyword-gap-7I2CIUTK.js.map} +0 -0
  1360. /package/dist/{keyword-metrics-E4PPLUYX.js.map → keyword-metrics-K7L6CVTZ.js.map} +0 -0
  1361. /package/dist/{keywords-for-site-HD2FOBMH.js.map → keywords-for-site-HBQBMVFS.js.map} +0 -0
  1362. /package/dist/{knowledge-7M7DSRF3.js.map → knowledge-ILQIN5FL.js.map} +0 -0
  1363. /package/dist/{landing-NC2A277E.js.map → landing-RYX65ZJJ.js.map} +0 -0
  1364. /package/dist/{landings-VNQ4VA2U.js.map → landings-GRJAJKHY.js.map} +0 -0
  1365. /package/dist/{languages-2X22HXM3.js.map → languages-22VMY7JN.js.map} +0 -0
  1366. /package/dist/{languages-4S26FJDP.js.map → languages-FMHPUVOL.js.map} +0 -0
  1367. /package/dist/{logo-4LSFZ3ZO.js.map → launches-NUMSS7HP.js.map} +0 -0
  1368. /package/dist/{layerize-6QHQMA7Q.js.map → layerize-TFRXRHVL.js.map} +0 -0
  1369. /package/dist/{lead-routes-5TPFJEVH.js.map → lead-routes-D5ITHESC.js.map} +0 -0
  1370. /package/dist/{leads-LL2S6ENL.js.map → leads-OAFYKOCF.js.map} +0 -0
  1371. /package/dist/{leads-4TLOH47R.js.map → leads-VEHYM23G.js.map} +0 -0
  1372. /package/dist/{learn-2CP2SROJ.js.map → learn-SIATYUQL.js.map} +0 -0
  1373. /package/dist/{library-MNJC24E4.js.map → library-JB2UBSJ5.js.map} +0 -0
  1374. /package/dist/{lighthouse-DJMAXFTD.js.map → lighthouse-EQZFYGFL.js.map} +0 -0
  1375. /package/dist/{line-item-writes-56A4ITU6.js.map → line-item-writes-4LAJW33S.js.map} +0 -0
  1376. /package/dist/{line-items-AIIDDTTH.js.map → line-items-4FLTV275.js.map} +0 -0
  1377. /package/dist/{link-BIXBY5KG.js.map → link-4EWQ6R6D.js.map} +0 -0
  1378. /package/dist/{linkedin-person-5KEGEX6G.js.map → linkedin-person-EFBNRT7A.js.map} +0 -0
  1379. /package/dist/{list-2277GCPH.js.map → list-5BWNSHYO.js.map} +0 -0
  1380. /package/dist/{list-WIXQXNKB.js.map → list-A363BF25.js.map} +0 -0
  1381. /package/dist/{list-XK33NCSC.js.map → list-JARIB5LC.js.map} +0 -0
  1382. /package/dist/{list-YBHQ3HIB.js.map → list-K7ROIVKU.js.map} +0 -0
  1383. /package/dist/{list-537S75BZ.js.map → list-RO4YLUFK.js.map} +0 -0
  1384. /package/dist/{list-UQNU4QUE.js.map → list-TJJPI57I.js.map} +0 -0
  1385. /package/dist/{list-Q52FPW3H.js.map → list-UD43QCLC.js.map} +0 -0
  1386. /package/dist/{list-C5AT3LF4.js.map → list-VGMXUBFE.js.map} +0 -0
  1387. /package/dist/{list-V4PSDBLX.js.map → list-XPLMANXX.js.map} +0 -0
  1388. /package/dist/{locations-WXGOI3VV.js.map → locations-DD3JRZ4C.js.map} +0 -0
  1389. /package/dist/{locations-UWBQLHXW.js.map → locations-HWMEJ64P.js.map} +0 -0
  1390. /package/dist/{log-FZJTWN3S.js.map → log-M7UCG5LZ.js.map} +0 -0
  1391. /package/dist/{lookup-WIM5WR25.js.map → logo-KDGD6LRA.js.map} +0 -0
  1392. /package/dist/{output-ELEO2Z6R.js.map → lookup-7HIPFF2U.js.map} +0 -0
  1393. /package/dist/{make-CGWFHT3N.js.map → make-US3C4YLT.js.map} +0 -0
  1394. /package/dist/{map-WDOBMEAW.js.map → map-OT5M3BJF.js.map} +0 -0
  1395. /package/dist/{mcp-JJZ5YGSS.js.map → mcp-32LXPARX.js.map} +0 -0
  1396. /package/dist/{media-KKI3KWLR.js.map → media-6VI4PN4N.js.map} +0 -0
  1397. /package/dist/{media-34I7UB7Z.js.map → media-WIFXVGKU.js.map} +0 -0
  1398. /package/dist/{media-sources-AJ5USQXV.js.map → media-sources-Z4JJELU7.js.map} +0 -0
  1399. /package/dist/{members-NSR7S62Y.js.map → members-2BNKMQ2I.js.map} +0 -0
  1400. /package/dist/{meme-6NFYFQ7T.js.map → meme-I43AVLGS.js.map} +0 -0
  1401. /package/dist/{normalize-G75RDSE4.js.map → normalize-5B5WIBV4.js.map} +0 -0
  1402. /package/dist/{normalize-RQEHHRES.js.map → normalize-GV2POGHI.js.map} +0 -0
  1403. /package/dist/{options-4BW4P6JD.js.map → options-HKGF6VEW.js.map} +0 -0
  1404. /package/dist/{organization-TKGXZYH6.js.map → organization-G4VL7IQH.js.map} +0 -0
  1405. /package/dist/{performance-27VHB3UA.js.map → output-W5J5RKRR.js.map} +0 -0
  1406. /package/dist/{page-4X6IBUWG.js.map → page-KUDKDDLJ.js.map} +0 -0
  1407. /package/dist/{page-photos-KNBLMFLN.js.map → page-photos-52S2XRIW.js.map} +0 -0
  1408. /package/dist/{pages-7HW5YOZV.js.map → pages-RMTL3RCK.js.map} +0 -0
  1409. /package/dist/{performance-XGHZDQGU.js.map → performance-67DDDP3X.js.map} +0 -0
  1410. /package/dist/{query-K7MYBRTS.js.map → performance-MF4547I7.js.map} +0 -0
  1411. /package/dist/{pinterest-KA6VFDM4.js.map → pinterest-GMNQ2AVG.js.map} +0 -0
  1412. /package/dist/{pixels-HEI5WVAO.js.map → pixels-3CINROKJ.js.map} +0 -0
  1413. /package/dist/{pixels-D5HF24FI.js.map → pixels-YQJKJWAC.js.map} +0 -0
  1414. /package/dist/{plan-XCA6R3HZ.js.map → plan-33F5F2OR.js.map} +0 -0
  1415. /package/dist/{posts-ALGM6ONV.js.map → posts-MZFKWSZ6.js.map} +0 -0
  1416. /package/dist/{preview-55TRUF4Q.js.map → preview-HWM6KHV5.js.map} +0 -0
  1417. /package/dist/{preview-2YRMPWI2.js.map → preview-JITAEUWU.js.map} +0 -0
  1418. /package/dist/{profile-NHUPUCBR.js.map → profile-OYCGBQWF.js.map} +0 -0
  1419. /package/dist/{promoted-tweet-writes-PT6BW64X.js.map → promoted-tweet-writes-K7YJNRMS.js.map} +0 -0
  1420. /package/dist/{promoted-tweets-SBZXEU7S.js.map → promoted-tweets-JIKZFJXO.js.map} +0 -0
  1421. /package/dist/{properties-2ZXA5BPJ.js.map → properties-PMY3KKUU.js.map} +0 -0
  1422. /package/dist/{publish-Z7ZK3XB7.js.map → publish-4YT3CR4T.js.map} +0 -0
  1423. /package/dist/{query-DMWY3TDD.js.map → query-ALRSR5OF.js.map} +0 -0
  1424. /package/dist/{reddit-L4RQNJBL.js.map → query-NYH5PMQF.js.map} +0 -0
  1425. /package/dist/{query-63CTX2PH.js.map → query-ZGGHOYOH.js.map} +0 -0
  1426. /package/dist/{questionnaire-WHE42RD4.js.map → questionnaire-4AJFPLM2.js.map} +0 -0
  1427. /package/dist/{read-NESEKULG.js.map → read-Z7BBSAEK.js.map} +0 -0
  1428. /package/dist/{run-HJQ4KAWX.js.map → reddit-CTAWHQ6K.js.map} +0 -0
  1429. /package/dist/{refresh-ILDEPU5A.js.map → refresh-VE3UKLXX.js.map} +0 -0
  1430. /package/dist/{refresh-EWALAFUQ.js.map → refresh-YYP23L3T.js.map} +0 -0
  1431. /package/dist/{release-C2H2KBNY.js.map → release-ZPU626XC.js.map} +0 -0
  1432. /package/dist/{relevant-pages-XYQKVX3U.js.map → relevant-pages-QIF35NBQ.js.map} +0 -0
  1433. /package/dist/{remove-JOXARFD3.js.map → remove-7RQJRXOV.js.map} +0 -0
  1434. /package/dist/{remove-NHE4UT7G.js.map → remove-VGEKRK34.js.map} +0 -0
  1435. /package/dist/{reopen-WRW4JVO2.js.map → reopen-HANTJFNU.js.map} +0 -0
  1436. /package/dist/{rerun-3I7MF3FV.js.map → rerun-LSWO6K7O.js.map} +0 -0
  1437. /package/dist/{research-422BF4O4.js.map → research-ZARG4TUX.js.map} +0 -0
  1438. /package/dist/{reset-MZDRR5VP.js.map → reset-LO2WLWSF.js.map} +0 -0
  1439. /package/dist/{reset-7ANRT4I3.js.map → reset-PDQTEM2J.js.map} +0 -0
  1440. /package/dist/{resolve-KKRG65WF.js.map → resolve-RXWBSGHW.js.map} +0 -0
  1441. /package/dist/{retry-YZCBWAHT.js.map → retry-M5RY4EFT.js.map} +0 -0
  1442. /package/dist/{retry-PDKRPWIZ.js.map → retry-WRNZN2GO.js.map} +0 -0
  1443. /package/dist/{retry-failed-R5HPQ3KQ.js.map → retry-failed-GEORPC3E.js.map} +0 -0
  1444. /package/dist/{revenue-F7E5ZRLB.js.map → revenue-IXQTSRYQ.js.map} +0 -0
  1445. /package/dist/{rule-writes-QB4IWFCJ.js.map → rule-writes-DRZUEIV6.js.map} +0 -0
  1446. /package/dist/{rules-FYVD2QBB.js.map → rules-BBALKNBK.js.map} +0 -0
  1447. /package/dist/{rules-GRLAFAZU.js.map → rules-O64G4QVU.js.map} +0 -0
  1448. /package/dist/{rules-add-3C7LW4HD.js.map → rules-add-HW6UNH3U.js.map} +0 -0
  1449. /package/dist/{run-ZV73UQ3E.js.map → run-ENK7RU6R.js.map} +0 -0
  1450. /package/dist/{search-XHSTUBDY.js.map → run-FO6EDDEN.js.map} +0 -0
  1451. /package/dist/{scaffold-ad-LBLEARDJ.js.map → scaffold-ad-FFKVESN3.js.map} +0 -0
  1452. /package/dist/{scaffold-static-ad-GBRLIWKP.js.map → scaffold-static-ad-TWJM3TUK.js.map} +0 -0
  1453. /package/dist/{scaffold-video-EINW32ZH.js.map → scaffold-video-OK4TWNUK.js.map} +0 -0
  1454. /package/dist/{schedule-D7EDEM45.js.map → schedule-L5NVM4DN.js.map} +0 -0
  1455. /package/dist/{schedule-X5ZKZXPC.js.map → schedule-U4JVZER5.js.map} +0 -0
  1456. /package/dist/{schema-Z43AJOJ4.js.map → schema-3IEI64TQ.js.map} +0 -0
  1457. /package/dist/{schema-6JF4ZNGY.js.map → schema-6I2RSDO2.js.map} +0 -0
  1458. /package/dist/{scrape-VL2RWSTW.js.map → scrape-YEZGRX2B.js.map} +0 -0
  1459. /package/dist/{screenshot-Y6EEXS3Q.js.map → screenshot-6EBASY4U.js.map} +0 -0
  1460. /package/dist/{search-JEXYEAPQ.js.map → search-BZLTII6V.js.map} +0 -0
  1461. /package/dist/{search-L3GTZYRW.js.map → search-I7CCYBB5.js.map} +0 -0
  1462. /package/dist/{search-TXBYKNQC.js.map → search-NA7DBOLW.js.map} +0 -0
  1463. /package/dist/{search-4VAIJA2O.js.map → search-QONARWFY.js.map} +0 -0
  1464. /package/dist/{search-CXC7N5XJ.js.map → search-RM4MN7KO.js.map} +0 -0
  1465. /package/dist/{shared-4GGUIOF2.js.map → search-SNEFCCJX.js.map} +0 -0
  1466. /package/dist/{search-copy-FIPG7OCC.js.map → search-copy-S6JVQZLI.js.map} +0 -0
  1467. /package/dist/{seeds-ADJKURNG.js.map → seeds-BIY565P3.js.map} +0 -0
  1468. /package/dist/{select-YZO5DDY6.js.map → select-EBLEMFQI.js.map} +0 -0
  1469. /package/dist/{sends-RS4LWRAC.js.map → sends-7JKFJTRE.js.map} +0 -0
  1470. /package/dist/{sequences-2RPKDKGQ.js.map → sequences-KZSNIELI.js.map} +0 -0
  1471. /package/dist/{set-prompt-GU3HPWWZ.js.map → set-prompt-CDYOXIIY.js.map} +0 -0
  1472. /package/dist/{setup-links-ORBZ5T4H.js.map → setup-links-QQ2AWOZG.js.map} +0 -0
  1473. /package/dist/{sync-definition-SNUWHPGO.js.map → shared-P5UDXZAG.js.map} +0 -0
  1474. /package/dist/{shopify-SN3TBTL5.js.map → shopify-SSDXRXN5.js.map} +0 -0
  1475. /package/dist/{site-3ZORNMAE.js.map → site-PHU5BRRL.js.map} +0 -0
  1476. /package/dist/{sitemaps-Z6IELTQV.js.map → sitemaps-WCARK2BM.js.map} +0 -0
  1477. /package/dist/{sites-KLAKI2EY.js.map → sites-JQZ2ZC6W.js.map} +0 -0
  1478. /package/dist/{skills-OJP36EVR.js.map → skills-V2FRLLOW.js.map} +0 -0
  1479. /package/dist/{sources-WT6M3QIX.js.map → sources-I52AANVB.js.map} +0 -0
  1480. /package/dist/{sources-WGEC6FGZ.js.map → sources-XH6RL3GF.js.map} +0 -0
  1481. /package/dist/{stale-BOT3VZCB.js.map → stale-A6RYRZDV.js.map} +0 -0
  1482. /package/dist/{stats-MIMFX4R7.js.map → stats-W7CCPRTG.js.map} +0 -0
  1483. /package/dist/{status-WED3AXTZ.js.map → status-O4AGHCJY.js.map} +0 -0
  1484. /package/dist/{sticker-IREEEN7I.js.map → sticker-NDSJDIAK.js.map} +0 -0
  1485. /package/dist/{stock-33GHQWNQ.js.map → stock-C2TUFJUH.js.map} +0 -0
  1486. /package/dist/{studies-YGYAH3JI.js.map → studies-4JOP2GQJ.js.map} +0 -0
  1487. /package/dist/{studio-4EV5S7PR.js.map → studio-TG2UAKFI.js.map} +0 -0
  1488. /package/dist/{study-writes-UPGJB36A.js.map → study-writes-PMTRTUXP.js.map} +0 -0
  1489. /package/dist/{suggest-5RTISDLI.js.map → suggest-F5GIJR4K.js.map} +0 -0
  1490. /package/dist/{sync-VCAFAYW4.js.map → sync-IDULIJUZ.js.map} +0 -0
  1491. /package/dist/{sync-2GLGCSRQ.js.map → sync-NNNB2PWZ.js.map} +0 -0
  1492. /package/dist/{sync-OHIXI4I6.js.map → sync-STPHWKTE.js.map} +0 -0
  1493. /package/dist/{viewer-check-UPLR7C2K.js.map → sync-definition-AABUGAYW.js.map} +0 -0
  1494. /package/dist/{tag-DSCUKNC3.js.map → tag-MMY3QT2N.js.map} +0 -0
  1495. /package/dist/{tag-manager-IINALUEJ.js.map → tag-manager-JDGWAHCZ.js.map} +0 -0
  1496. /package/dist/{tags-MYUCES3W.js.map → tags-A2PCL4OL.js.map} +0 -0
  1497. /package/dist/{tags-CVPMOYKI.js.map → tags-KH6N6OKV.js.map} +0 -0
  1498. /package/dist/{tags-SCMHCPF4.js.map → tags-LAMQOQWY.js.map} +0 -0
  1499. /package/dist/{tags-IQY7GYMU.js.map → tags-MIR75PDJ.js.map} +0 -0
  1500. /package/dist/{tags-AQNOA7X5.js.map → tags-PHEHMZC7.js.map} +0 -0
  1501. /package/dist/{targeting-BM72UTI6.js.map → targeting-AVHPKERN.js.map} +0 -0
  1502. /package/dist/{targeting-constants-54S3FXIF.js.map → targeting-constants-T7Y6RVEH.js.map} +0 -0
  1503. /package/dist/{targeting-criteria-RVJHW22S.js.map → targeting-criteria-MRAEWFOW.js.map} +0 -0
  1504. /package/dist/{targets-G6SN6VTL.js.map → targets-JJO4Z4DI.js.map} +0 -0
  1505. /package/dist/{terms-OFHNLW6U.js.map → terms-ETG7YCJC.js.map} +0 -0
  1506. /package/dist/{testimonials-JALUWWLB.js.map → testimonials-5455FK4Y.js.map} +0 -0
  1507. /package/dist/{transcript-JMRRJEET.js.map → transcript-JHGN7KW7.js.map} +0 -0
  1508. /package/dist/{translate-YNOS5HTV.js.map → translate-YWSIWVRT.js.map} +0 -0
  1509. /package/dist/{triggers-UUSPHGXX.js.map → triggers-RNGTCIVF.js.map} +0 -0
  1510. /package/dist/{tweets-TRTXC6O4.js.map → tweets-3H7CW3ZI.js.map} +0 -0
  1511. /package/dist/{unfollow-DATOGPLZ.js.map → unfollow-PEEPIMZY.js.map} +0 -0
  1512. /package/dist/{unlink-U5VBTO7P.js.map → unlink-PACTZ674.js.map} +0 -0
  1513. /package/dist/{unstage-LLQCMZ5H.js.map → unstage-GUPBLCPZ.js.map} +0 -0
  1514. /package/dist/{unstage-KSYT7FOP.js.map → unstage-NAJI4DDV.js.map} +0 -0
  1515. /package/dist/{update-GFKDIJRE.js.map → update-5EXPDJ2T.js.map} +0 -0
  1516. /package/dist/{update-QF6BLM5F.js.map → update-GK3QSHWA.js.map} +0 -0
  1517. /package/dist/{update-VBQKI72I.js.map → update-KPWP4DPC.js.map} +0 -0
  1518. /package/dist/{update-SD5YQIJC.js.map → update-TNOOVX3P.js.map} +0 -0
  1519. /package/dist/{update-ZIKHDZRT.js.map → update-XZGK5UFK.js.map} +0 -0
  1520. /package/dist/{upload-UYE73VLK.js.map → upload-JYZFK5ZO.js.map} +0 -0
  1521. /package/dist/{upload-7PPMVWVA.js.map → upload-W2UTHRP2.js.map} +0 -0
  1522. /package/dist/{upscale-WVJZG76V.js.map → upscale-MTWSJ3EJ.js.map} +0 -0
  1523. /package/dist/{url-params-P6MV2HKB.js.map → url-params-OHLTOL33.js.map} +0 -0
  1524. /package/dist/{use-6FADOAFZ.js.map → use-K5EP7JJM.js.map} +0 -0
  1525. /package/dist/{validate-TTVHWWX5.js.map → validate-H6J4M43Q.js.map} +0 -0
  1526. /package/dist/{variant-RNM36P4J.js.map → variant-BZCX46QL.js.map} +0 -0
  1527. /package/dist/{videos-XGQL37V4.js.map → videos-5N3JQIAY.js.map} +0 -0
  1528. /package/dist/{videos-GHFCOTT7.js.map → videos-QIDOIJ24.js.map} +0 -0
  1529. /package/dist/{view-YR6MDLWL.js.map → view-CD5UWMR4.js.map} +0 -0
  1530. /package/dist/{web-PIMTCU4V.js.map → web-CV3VMSDO.js.map} +0 -0
  1531. /package/dist/{winners-4T5RFQXU.js.map → winners-CSNTBOVM.js.map} +0 -0
  1532. /package/dist/{winning-ads-P4MXWYK6.js.map → winning-ads-FVTCV3GX.js.map} +0 -0
  1533. /package/dist/{write-commands-UO3OQIHH.js.map → write-commands-AASXCKRN.js.map} +0 -0
  1534. /package/dist/{write-commands-6D55SB56.js.map → write-commands-OV7RE6O2.js.map} +0 -0
  1535. /package/dist/{write-commands-24EOSYWL.js.map → write-commands-W4Z6MANM.js.map} +0 -0
  1536. /package/dist/{write-commands-AIWLEGO2.js.map → write-commands-XFYXMTXO.js.map} +0 -0
  1537. /package/dist/{x-HBA6AJJA.js.map → x-WFYI4F6X.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/google/query.ts","../src/commands/ads/google/preflight.ts","../src/commands/ads/google/conversion-mix.ts","../src/commands/ads/google/keyword-serving.ts","../src/commands/ads/google/money-units.ts"],"sourcesContent":["import { appendFileSync, existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { GOOGLE_ADS_QUERY_MAX_PAGE_SIZE } from \"@baker/api/ads-google\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../../client.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { buildQueryCacheKey, cacheGet, cacheSet, getManagerIdForCustomer, getQueryTtl } from \"../cache.ts\";\nimport { getFieldDescriptions } from \"../field-descriptions.ts\";\nimport { resolveCustomerId, toCsvRow, writeAdsJson } from \"../output.ts\";\nimport { googlePresetSyncedHint } from \"../synced-first.ts\";\nimport type { AdsErrorEnvelope, AdsFileSummary, AdsSuccessEnvelope, AdsWarning } from \"../types.ts\";\nimport { parseCampaignIds } from \"./campaign-ids.ts\";\nimport { conversionMixWarnings, countRowsWithConversions } from \"./conversion-mix.ts\";\nimport { parseApiError } from \"./error-parser.ts\";\nimport {\n collectKeywordLimits,\n type KeywordLimits,\n type KeywordServingOptions,\n keywordServingWarnings,\n renderKeywordLimits,\n} from \"./keyword-serving.ts\";\nimport { moneyUnitWarnings } from \"./money-units.ts\";\nimport { isSingleRowRead, validatePreflight } from \"./preflight.ts\";\nimport { expandPreset, getPreset, isInventoryPreset, PRESETS, SERVING_CHAINS } from \"./presets.ts\";\n\nregisterSchema({\n command: \"ads.google.query\",\n description:\n \"Run a GAQL (Google Ads Query Language) query, one page at a time. Start here: `baker ads google query --preset campaign-performance` (--list-presets for all). Each read returns one page of --limit rows and, when the account holds more, `pagination.cursor` — pass it back with --cursor for the next page, or use --all --out <file> to read every page. A LIMIT in your own GAQL caps the whole read.\",\n args: {\n query: { type: \"positional\", description: \"GAQL SELECT statement (or pass it with --gaql)\", required: false },\n gaql: {\n type: \"string\",\n description:\n 'GAQL SELECT statement as a flag — same as the positional, for when quoting a positional is awkward: --gaql \"SELECT campaign.name FROM campaign\"',\n required: false,\n },\n \"customer-id\": {\n type: \"string\",\n description:\n \"Google Ads customer ID (10 digits; dashes are fine). Falls back to BAKER_GOOGLE_ADS_CUSTOMER_ID env var.\",\n required: false,\n },\n preset: {\n type: \"string\",\n description: `Named query preset (--list-presets shows each one's GAQL and page size): ${PRESETS.map((p) => p.name).join(\", \")}. Presets return only actually-serving entities (enabled campaign AND ad group AND ad) by default — pass --include-paused to include paused ones.`,\n required: false,\n },\n \"date-range\": {\n type: \"string\",\n description:\n \"Date range for presets: a Google date literal (TODAY, YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, THIS_MONTH, LAST_MONTH …) or BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'. Google has no LAST_90_DAYS — use BETWEEN for any other window.\",\n required: false,\n },\n \"include-paused\": {\n type: \"boolean\",\n description:\n \"Include paused entities in preset results. Off by default: presets return only actually-serving entities. Google Ads has no single serving flag — 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.\",\n required: false,\n },\n limit: {\n type: \"number\",\n description: `Rows per page (default: the preset's page size, else 200; at most ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}). A page size, not a cap: when more rows exist the read returns a cursor, and --all keeps paging.`,\n required: false,\n },\n \"list-presets\": { type: \"boolean\", description: \"List all available query presets\", required: false },\n cursor: {\n type: \"string\",\n description: \"Resume after a previous page: pass its pagination.cursor with the same query and --limit\",\n required: false,\n },\n all: {\n type: \"boolean\",\n description:\n \"Follow every page until the account has no more rows (use with --out for large reads). Needed for any read you will count or total. Only a LIMIT written in the GAQL itself can stop it early.\",\n required: false,\n },\n out: {\n type: \"string\",\n description: \"Write data to file (format from extension: .csv, .jsonl, .json)\",\n required: false,\n },\n append: { type: \"boolean\", description: \"Append to existing file (skip CSV headers)\", required: false },\n output: {\n type: \"string\",\n description: \"Output format: json|csv|jsonl|md\",\n required: false,\n default: \"json\",\n enum: [\"json\", \"csv\", \"jsonl\", \"md\"],\n },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache, hit API directly\", required: false },\n full: {\n type: \"boolean\",\n description:\n \"Include the field description glossary in the JSON envelope. Off by default — rows already carry the data; only ask for this when you need a field's meaning explained.\",\n required: false,\n },\n },\n});\n\ninterface QueryApiResponse {\n rows: Array<Record<string, unknown>>;\n pageToken?: string;\n}\n\nfunction extractFields(rows: Array<Record<string, unknown>>): string[] {\n const keys = new Set<string>();\n foldObservedFields(rows, keys);\n return [...keys];\n}\n\n// The columns a table-shaped read renders: every SELECTed field, in SELECT order, whether or not any\n// row carried it. Deriving them from the rows is what dropped `campaign_conversion_goal.biddable` from\n// an md table: Google omits a false boolean, the first row was a non-biddable goal, and the column\n// that answered the question vanished with no warning. A submessage selected whole expands to the\n// leaves that came back, and a key nobody selected is kept at the end rather than lost.\nexport function resultColumns(gaql: string, rows: Array<Record<string, unknown>>): string[] {\n const observed = extractFields(rows);\n const columns: string[] = [];\n for (const field of parseSelectedFields(gaql)) {\n const leaves = observed.filter((key) => key.startsWith(`${field}.`));\n columns.push(...(leaves.length > 0 ? leaves : [field]));\n }\n for (const key of observed) columns.push(key);\n return [...new Set(columns)];\n}\n\nfunction isCsvPath(filePath: string): boolean {\n return filePath.split(\".\").pop()?.toLowerCase() === \"csv\";\n}\n\nfunction writeRowsToFile(\n filePath: string,\n rows: Array<Record<string, unknown>>,\n fields: string[],\n append: boolean,\n): void {\n if (isCsvPath(filePath)) {\n if (!append || !existsSync(filePath)) {\n writeFileSync(filePath, `${toCsvRow(fields)}\\n`, \"utf-8\");\n }\n const csvRows = rows.map((row) => toCsvRow(fields.map((f) => String(row[f] ?? \"\"))));\n appendFileSync(filePath, `${csvRows.join(\"\\n\")}\\n`, \"utf-8\");\n } else if (filePath.split(\".\").pop()?.toLowerCase() === \"jsonl\") {\n const lines = rows.map((row) => JSON.stringify(row));\n if (append && existsSync(filePath)) {\n appendFileSync(filePath, `${lines.join(\"\\n\")}\\n`, \"utf-8\");\n } else {\n writeFileSync(filePath, `${lines.join(\"\\n\")}\\n`, \"utf-8\");\n }\n } else if (append && existsSync(filePath)) {\n const existing = JSON.parse(readFileSync(filePath, \"utf-8\")) as unknown[];\n writeFileSync(filePath, JSON.stringify([...existing, ...rows], null, 2), \"utf-8\");\n } else {\n writeFileSync(filePath, JSON.stringify(rows, null, 2), \"utf-8\");\n }\n}\n\n// The row cap in force for the whole read, or undefined when nothing caps it. --limit is only the\n// size of a page — the read hands back a cursor when the account holds more — so the one cap left is\n// a LIMIT the statement itself carries. Needed to tell \"this is all there is\" from \"this is as much\n// as the statement asked for\".\n//\n// A statement that returns one row by construction has no cap in force: its LIMIT 1 is the shape of\n// the answer, not a page size, and one row filling it is the whole data set.\nexport function effectiveRowLimit(finalQuery: string): number | undefined {\n if (isSingleRowRead(finalQuery)) return undefined;\n const match = finalQuery.match(/\\bLIMIT\\s+(\\d+)/i);\n return match?.[1] ? Number(match[1]) : undefined;\n}\n\n// One notice per warning, shaped so it survives the format it travels in. The channel never names\n// a warning code: whatever the preflight or a row decoder produces flows through unchanged.\nexport function warningLines(warnings: AdsWarning[], format: string): string[] {\n return warnings.map((w) => {\n const message = w.message.replace(/\\s*\\n\\s*/g, \" \");\n if (format === \"jsonl\") return JSON.stringify({ _baker_warning: { code: w.code, message } });\n if (format === \"md\") return `> **${w.code}** — ${message}`;\n // csv and anything else: a leading # keeps a CSV parser from reading it as a header.\n return `# baker ${w.code}: ${message}`;\n });\n}\n\nexport interface ReadCompleteness {\n rowCount: number;\n /** The statement's own LIMIT — see `effectiveRowLimit`. Undefined when nothing caps the read. */\n effectiveLimit: number | undefined;\n /** The account handed back a next-page cursor that this run did not follow. */\n hasMore: boolean;\n}\n\n// A truncated read that looks complete is the whole failure this guard exists for: rows that stop\n// at a cap are indistinguishable from a data set that happens to be that size, and the agent reads\n// them as the universe. Two things can stop a read short — an unfollowed cursor, or the statement's\n// own LIMIT — and each has its own way on. A read that ran out of rows says nothing.\nexport function completenessWarnings(read: ReadCompleteness): AdsWarning[] {\n const cap = read.effectiveLimit;\n const filledTheCap = cap !== undefined && cap > 0 && read.rowCount >= cap;\n if (!read.hasMore && !filledTheCap) return [];\n const [cause, fix] = read.hasMore\n ? [\n \"More rows are waiting: the account returned a next-page cursor this run did not follow.\",\n \"Re-run with --all --out <file> to read every page, or pass --cursor <pagination.cursor> (same query, same --limit) for the next page.\",\n ]\n : [\n `The ${read.rowCount} rows returned exactly fill the LIMIT in the statement (${cap}).`,\n `Raise the LIMIT in the statement above ${cap}, or drop it — without a LIMIT, --all pages through every row.`,\n ];\n return [\n {\n code: \"TRUNCATED_RESULTS\",\n message: `INCOMPLETE READ — ${cause} These rows are a page, not the data set. Don't count, total or describe them as the whole picture. ${fix}`,\n },\n ];\n}\n\ninterface EnvelopeOptions {\n full: boolean;\n cached: boolean;\n nextCursor?: string;\n}\n\n// The field-description dictionary is a static glossary the agent almost never reads, so it is\n// opt-in via --full rather than a per-call token tax on every JSON envelope.\nexport function buildQueryEnvelope(\n rows: Array<Record<string, unknown>>,\n fieldDescs: Record<string, string>,\n warnings: AdsWarning[],\n options: EnvelopeOptions,\n): AdsSuccessEnvelope<Array<Record<string, unknown>>> {\n // Key order is load-bearing: a pretty-printed envelope of 500 rows read through `head` shows only\n // its first keys, so warnings and pagination go BEFORE data, and a one-line notice closes it for\n // whoever reads the tail.\n const notice = summariseWarnings(warnings);\n return {\n ok: true,\n ...(options.cached ? { cached: true as const } : {}),\n ...(warnings.length > 0 ? { warnings } : {}),\n ...(options.nextCursor ? { pagination: { hasMore: true, cursor: options.nextCursor } } : {}),\n data: rows,\n ...(options.full && Object.keys(fieldDescs).length > 0 ? { fields: fieldDescs } : {}),\n ...(notice ? { notice } : {}),\n };\n}\n\n// One line naming every warning code, so a reader who only sees the end of the output still knows\n// something was flagged. Code-agnostic: any warning the pipeline produces lands here.\nexport function summariseWarnings(warnings: AdsWarning[]): string | undefined {\n if (warnings.length === 0) return undefined;\n const codes = [...new Set(warnings.map((w) => w.code))].join(\", \");\n return `Read the \"warnings\" above before using these rows: ${codes}.`;\n}\n\nexport interface FileSummaryInput {\n file: string;\n rows: number;\n warnings: AdsWarning[];\n complete: boolean;\n}\n\n// The --out branch throws the rows away, so this envelope is the only thing the agent reads about\n// the pull. It carries every warning the read raised, not just the ones a row decoder produced.\nexport function buildFileSummary(input: FileSummaryInput): AdsFileSummary {\n const notice = summariseWarnings(input.warnings);\n return {\n ok: true,\n fields: {},\n file: input.file,\n rows: input.rows,\n complete: input.complete,\n ...(input.warnings.length > 0 ? { warnings: input.warnings } : {}),\n ...(notice ? { notice } : {}),\n };\n}\n\n// Repeating the notice at the tail costs two lines and buys the case that actually bit us: a long\n// CSV read whose output the agent inspects with `tail`. Short reads are visible whole, so once is enough.\nconst REPEAT_NOTICE_ABOVE_ROWS = 20;\n\nexport interface ReadContext {\n /** The statement that ran — its SELECT list, not the rows, decides a table's columns. */\n gaql: string;\n effectiveLimit: number | undefined;\n nextCursor?: string;\n}\n\nfunction writeLine(line: string): void {\n process.stdout.write(`${line}\\n`);\n}\n\ntype RowWriter = (rows: Array<Record<string, unknown>>, fields: string[], notices: string[]) => void;\n\n// The header stays the first line so a CSV reader still parses; the notice sits right under it,\n// where a `head` lands, and repeats at the tail, where a `tail` lands.\nconst writeCsvRows: RowWriter = (rows, fields, notices) => {\n writeLine(toCsvRow(fields));\n for (const line of notices) writeLine(line);\n for (const row of rows) writeLine(toCsvRow(fields.map((f) => String(row[f] ?? \"\"))));\n};\n\nconst writeJsonlRows: RowWriter = (rows, _fields, notices) => {\n for (const line of notices) writeLine(line);\n for (const row of rows) writeLine(JSON.stringify(row));\n};\n\nconst OMITTED = \"(omitted)\";\nconst OMITTED_FALSE = `false ${OMITTED}`;\nconst 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.`;\n\n// A blank cell reads as \"no data\", which is the one thing an omitted field is not. Google omits a\n// false boolean, so in a column that carries a boolean anywhere the omission is spelled out as false.\nfunction mdCell(row: Record<string, unknown>, field: string, booleanColumns: ReadonlySet<string>): string {\n if (!(field in row)) return booleanColumns.has(field) ? OMITTED_FALSE : OMITTED;\n return String(row[field] ?? \"\").replace(/\\|/g, \"\\\\|\");\n}\n\n// A blockquote inside a markdown table would break it, so the notice brackets the table.\nconst writeMdRows: RowWriter = (rows, fields, notices) => {\n const booleanColumns = new Set(fields.filter((f) => rows.some((row) => typeof row[f] === \"boolean\")));\n for (const line of notices) writeLine(line);\n writeLine(`| ${fields.join(\" | \")} |`);\n writeLine(`| ${fields.map(() => \"---\").join(\" | \")} |`);\n for (const row of rows) writeLine(`| ${fields.map((f) => mdCell(row, f, booleanColumns)).join(\" | \")} |`);\n if (rows.some((row) => fields.some((f) => !(f in row)))) writeLine(OMITTED_LEGEND);\n};\n\nconst ROW_WRITERS: Record<string, RowWriter> = { csv: writeCsvRows, jsonl: writeJsonlRows, md: writeMdRows };\n\n// Each writer decides where a notice can sit without wrecking the format it travels in; the tail\n// repeat is common to all of them, because `| tail` is how a long read gets inspected.\nfunction writeRows(format: string, rows: Array<Record<string, unknown>>, columns: string[], notices: string[]): void {\n const write = ROW_WRITERS[format] ?? writeMdRows;\n write(rows, columns, notices);\n if (rows.length > REPEAT_NOTICE_ABOVE_ROWS) {\n for (const line of notices) writeLine(line);\n }\n}\n\nexport function outputResults(\n rows: Array<Record<string, unknown>>,\n fieldDescs: Record<string, string>,\n warnings: AdsWarning[],\n args: Record<string, unknown>,\n cached: boolean,\n read: ReadContext,\n): void {\n const format = (args.output as string) || \"json\";\n const allWarnings = [\n ...warnings,\n ...completenessWarnings({\n rowCount: rows.length,\n effectiveLimit: read.effectiveLimit,\n hasMore: Boolean(read.nextCursor),\n }),\n ];\n // Every format carries its warnings in-band, so stdout is their one channel: a stderr copy reached\n // the agent twice through `2>&1`, and in front of the JSON it made the capture unparseable.\n if (format === \"json\") {\n writeAdsJson(\n buildQueryEnvelope(rows, fieldDescs, allWarnings, {\n full: Boolean(args.full),\n cached,\n nextCursor: read.nextCursor,\n }),\n );\n return;\n }\n writeRows(format, rows, resultColumns(read.gaql, rows), warningLines(allWarnings, format));\n}\n\n/** The statement typed as the positional or as --gaql — never two different ones. */\nexport function resolveGaqlInput(\n args: Record<string, unknown>,\n): { ok: true; gaql: string } | { ok: false; message: string } {\n const positional = typeof args.query === \"string\" ? args.query.trim() : \"\";\n const flag = typeof args.gaql === \"string\" ? args.gaql.trim() : \"\";\n if (positional && flag && positional !== flag) {\n return { ok: false, message: \"Pass the GAQL statement once — as the positional or as --gaql, not both.\" };\n }\n return { ok: true, gaql: positional || flag };\n}\n\nfunction resolveGaql(args: Record<string, unknown>): string | null {\n if (args.preset) {\n const preset = getPreset(args.preset as string);\n if (!preset) {\n const available = PRESETS.map((p) => p.name).join(\", \");\n writeAdsJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: `Unknown preset: \"${args.preset}\". Available: ${available}` },\n });\n return null;\n }\n const campaigns = parseCampaignIds(args[\"campaign-id\"]);\n if (!campaigns.ok) {\n writeAdsJson({ ok: false, error: campaigns.error });\n return null;\n }\n const expanded = expandPreset(preset, {\n dateRange: args[\"date-range\"] as string | undefined,\n includePaused: Boolean(args[\"include-paused\"]),\n campaignIds: campaigns.ids,\n });\n if (expanded.dateRangeError) {\n writeAdsJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: expanded.dateRangeError },\n });\n return null;\n }\n return expanded.query;\n }\n const input = resolveGaqlInput(args);\n if (!input.ok || !input.gaql) {\n writeAdsJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: input.ok\n ? \"Provide a GAQL query (positional or --gaql) or use --preset. Run --list-presets to see options.\"\n : input.message,\n },\n });\n return null;\n }\n return input.gaql;\n}\n\n// Resources whose rows only actually serve when their whole status chain is ENABLED, MINUS the\n// multi-rung ones preflight's SERVING_CHAINS already judges rung by rung. What is left is the\n// single-rung resources: they carry no ancestor to forget, so preflight exempts them by design and\n// this is the only place that says an unfiltered read of them returns paused rows. Two warnings for\n// one defect is how an agent learns to skim past both, so the populations must not overlap.\nconst SERVING_HIERARCHY_RESOURCES = [\n \"campaign\",\n \"ad_group\",\n \"ad_group_ad\",\n \"ad_group_criterion\",\n \"keyword_view\",\n \"search_term_view\",\n \"shopping_performance_view\",\n \"asset_group_asset\",\n].filter((resource) => !(resource in SERVING_CHAINS));\n\n// Extract the WHERE clause's predicates from an uppercased GAQL string — everything between\n// WHERE and the first trailing clause (ORDER BY / LIMIT / PARAMETERS). Returns \"\" when there is\n// no WHERE. Used to detect a real status *filter* rather than a status column in the SELECT list.\n// Keywords are found by word boundary, not by spaces, so a query written over several lines reads\n// the same as one written on a single line.\nfunction whereClause(upperQuery: string): string {\n const where = /\\bWHERE\\b/.exec(upperQuery);\n if (!where) return \"\";\n const rest = upperQuery.slice(where.index + where[0].length);\n const trailing = /\\b(?:ORDER\\s+BY|GROUP\\s+BY|LIMIT|PARAMETERS)\\b/.exec(rest);\n return trailing ? rest.slice(0, trailing.index) : rest;\n}\n\n// Nudge the agent toward serving-only analysis. Presets already default to the serving chain,\n// so this only fires for raw custom GAQL that targets a serving-hierarchy resource without any\n// status predicate — Google Ads has no single serving flag, so an unfiltered query returns\n// paused-parent entities that look live.\nexport function servingScopeWarnings(args: Record<string, unknown>, finalQuery: string): AdsWarning[] {\n // --include-paused only has an effect on presets (expandPreset consumes it). A preset without\n // the flag is serving-only by construction, so it needs no warning; with the flag we say so.\n if (args.preset) {\n // An inventory (`<thing> list`) lists paused entities on purpose: it is where ids to edit come from.\n // A preset with no serving chain has nothing for --include-paused to widen.\n const name = String(args.preset);\n if (!args[\"include-paused\"] || isInventoryPreset(name) || !getPreset(name)?.statusFields?.length) return [];\n return [\n {\n code: \"SERVING_SCOPE\",\n message:\n \"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.\",\n },\n ];\n }\n\n // Raw GAQL: --include-paused is a no-op here, so don't claim paused rows were included. Warn\n // only when the query targets a serving-hierarchy resource with no status filter in its WHERE\n // (a status column in the SELECT list displays status but doesn't filter on it).\n const upper = finalQuery.toUpperCase();\n const fromMatch = upper.match(/\\bFROM\\s+([A-Z_]+)/);\n const resource = fromMatch?.[1]?.toLowerCase();\n const hierarchical = resource ? SERVING_HIERARCHY_RESOURCES.includes(resource) : false;\n const where = whereClause(upper);\n const filtersStatus = where.includes(\".STATUS\");\n // Entities named by id are the ones asked for, paused or not.\n const pinnedById = resource ? new RegExp(`\\\\b${resource.toUpperCase()}\\\\.ID\\\\s*(=|IN\\\\b)`).test(where) : false;\n if (hierarchical && !filtersStatus && !pinnedById) {\n return [\n {\n code: \"SERVING_SCOPE\",\n message:\n \"This query has no status filter, so it may return paused entities that aren't actually serving. Google Ads has no single serving flag — 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.\",\n },\n ];\n }\n return [];\n}\n\n// A performance preset Baker's synced copy also answers: say so, since that read has no rate limit.\nfunction syncedCopyWarnings(args: Record<string, unknown>): AdsWarning[] {\n const hint = googlePresetSyncedHint(typeof args.preset === \"string\" ? args.preset : undefined);\n return hint ? [{ code: \"SYNCED_COPY\", message: hint }] : [];\n}\n\n// Parse the SELECT list out of a GAQL statement. Case-insensitive, newline- and\n// whitespace-tolerant. Returns [] when the statement has no parseable SELECT ... FROM.\nexport function parseSelectedFields(gaql: string): string[] {\n const match = gaql.match(/\\bSELECT\\b([\\s\\S]*?)\\bFROM\\b/i);\n const list = match?.[1];\n if (!list) return [];\n return list\n .split(\",\")\n .map((field) => field.trim())\n .filter((field) => /^[A-Za-z_][A-Za-z0-9_]*(\\.[A-Za-z0-9_]+)*$/.test(field));\n}\n\n// Which SELECTed fields appeared on NO returned row. Google Ads omits a field entirely from a\n// row when it has no value, so a key's absence is \"not observed\", never \"empty\" — and the union\n// across ALL rows is the only honest denominator (one arbitrary row proves nothing).\nfunction foldObservedFields(rows: Array<Record<string, unknown>>, observed: Set<string>): void {\n for (const row of rows) {\n for (const key of Object.keys(row)) observed.add(key);\n }\n}\n\nexport function unobservedSelectedFields(gaql: string, rows: Array<Record<string, unknown>>): string[] {\n const observed = new Set<string>();\n foldObservedFields(rows, observed);\n return unobservedFields(gaql, observed);\n}\n\n// Same verdict from a folded key set instead of the rows, so a read that streamed to disk can\n// still answer it.\nexport function unobservedFields(gaql: string, observed: Set<string>): string[] {\n return parseSelectedFields(gaql).filter((field) => {\n // The backend strips resource_name from every row, so it is never observable.\n if (field.endsWith(\".resource_name\")) return false;\n if (observed.has(field)) return false;\n // A submessage selected as a whole is observed when any of its flattened leaves came back.\n return ![...observed].some((key) => key.startsWith(`${field}.`));\n });\n}\n\n// An absent field must never read as an empty one. Zero rows is a different, already-obvious\n// signal, so this only fires when the read actually returned data.\nexport function missingFieldWarnings(gaql: string, rows: Array<Record<string, unknown>>): AdsWarning[] {\n const observed = new Set<string>();\n foldObservedFields(rows, observed);\n return missingFieldWarningsFor(gaql, observed, rows.length);\n}\n\nexport function missingFieldWarningsFor(gaql: string, observed: Set<string>, rowCount: number): AdsWarning[] {\n if (rowCount === 0) return [];\n const missing = unobservedFields(gaql, observed);\n if (missing.length === 0) return [];\n return [\n {\n code: \"MISSING_FIELDS\",\n 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 — it means this read didn't observe it. Check the level that owns the setting before concluding it is unset.`,\n },\n ];\n}\n\n// A CSV header is fixed on the first page and cannot grow a column later, so a submessage selected\n// whole whose leaves first appear on a later page has nowhere to land in the file. Those values are\n// lost, and MISSING_FIELDS cannot see it (the leaves WERE observed), so the loss is named here.\nexport function unwrittenColumnWarnings(header: string[], observed: Set<string>): AdsWarning[] {\n const written = new Set(header);\n const unwritten = [...observed].filter((key) => !written.has(key));\n if (unwritten.length === 0) return [];\n return [\n {\n code: \"UNWRITTEN_COLUMNS\",\n 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.`,\n },\n ];\n}\n\n// Google omits primary_status_reasons when a keyword has none, so the decoder can only tell\n// \"nothing to report\" from \"we never asked\" by looking at what the statement selected.\nexport function keywordServingOptions(gaql: string): KeywordServingOptions {\n return { statusReasonsSelected: parseSelectedFields(gaql).includes(\"ad_group_criterion.primary_status_reasons\") };\n}\n\nasync function fetchAllPages(\n gaql: string,\n body: Record<string, unknown>,\n args: Record<string, unknown>,\n servingOptions: KeywordServingOptions,\n): Promise<{\n allRows: Array<Record<string, unknown>>;\n lastPageToken?: string;\n totalRowsWritten: number;\n rowsWithConversions: number;\n keywordLimits: KeywordLimits;\n observedFields: Set<string>;\n fileColumns: string[];\n}> {\n let allRows: Array<Record<string, unknown>> = [];\n let pageToken: string | undefined = args.cursor as string | undefined;\n let totalRowsWritten = 0;\n // Folded page by page, since the --out path keeps no rows to count afterwards.\n let rowsWithConversions = 0;\n let keywordLimits: KeywordLimits | undefined;\n const observedFields = new Set<string>();\n // One header for the whole file: fixed on the first page, since a CSV cannot grow a column later.\n let fileColumns: string[] | undefined;\n\n do {\n const requestBody: Record<string, unknown> = { ...body };\n if (pageToken) requestBody.pageToken = pageToken;\n\n const response = await apiPost<QueryApiResponse>(\"/api/ads/google/query\", requestBody);\n const rows = response.rows ?? [];\n pageToken = response.pageToken;\n rowsWithConversions += countRowsWithConversions(rows);\n\n if (args.out) {\n const shouldAppend = (args.append as boolean) || totalRowsWritten > 0;\n fileColumns ??= resultColumns(gaql, rows);\n writeRowsToFile(resolve(args.out as string), rows, fileColumns, shouldAppend);\n totalRowsWritten += rows.length;\n // The rows are gone after this — fold their verdicts now or the file summary has nothing\n // to say about the very pull this preset is sized for.\n keywordLimits = collectKeywordLimits(rows, servingOptions, keywordLimits);\n foldObservedFields(rows, observedFields);\n } else {\n allRows = allRows.concat(rows);\n }\n\n if (!args.all) break;\n } while (pageToken);\n\n return {\n allRows,\n lastPageToken: pageToken,\n totalRowsWritten,\n rowsWithConversions,\n keywordLimits: keywordLimits ?? collectKeywordLimits([], servingOptions),\n observedFields,\n fileColumns: fileColumns ?? [],\n };\n}\n\n/** One cached page: its rows and the cursor to the page after it, so a cache hit still says \"there is more\". */\ninterface CachedPage {\n rows: Array<Record<string, unknown>>;\n cursor?: string;\n}\n\n// A page is cached under the statement, its size and the cursor it starts at — any one of the three\n// changes which rows it holds. An --all read is many pages and never comes from (or goes to) this cache.\nexport function pageCacheKey(customerId: string, query: string, pageSize: number, cursor: string | undefined): string {\n return buildQueryCacheKey(customerId, `${query}\\u0000page=${pageSize}\\u0000cursor=${cursor ?? \"\"}`);\n}\n\nasync function executeQuery(\n finalQuery: string,\n args: Record<string, unknown>,\n customerId: string,\n limit: number,\n warnings: AdsWarning[],\n useCache: boolean,\n cacheKey: string,\n): Promise<void> {\n const body: Record<string, unknown> = { customerId, query: finalQuery, pageSize: limit };\n const managerId = getManagerIdForCustomer(customerId);\n if (managerId) body.managerId = managerId;\n if (!useCache) body.skipCache = true;\n\n const servingOptions = keywordServingOptions(finalQuery);\n const { allRows, lastPageToken, totalRowsWritten, rowsWithConversions, keywordLimits, observedFields, fileColumns } =\n await fetchAllPages(finalQuery, body, args, servingOptions);\n // A read that started after a cursor, or left a page unread, cannot speak for the rows it skipped.\n const readWhole = !args.cursor && !lastPageToken;\n\n if (args.out) {\n const truncation = completenessWarnings({\n rowCount: totalRowsWritten,\n effectiveLimit: effectiveRowLimit(finalQuery),\n hasMore: Boolean(lastPageToken),\n });\n const fileWarnings = [\n ...warnings,\n ...renderKeywordLimits(keywordLimits),\n ...missingFieldWarningsFor(finalQuery, observedFields, totalRowsWritten),\n // Only a CSV has a header to fall out of; json and jsonl files carry every row whole.\n ...(isCsvPath(args.out as string) ? unwrittenColumnWarnings(fileColumns, observedFields) : []),\n ...conversionMixWarnings(finalQuery, readWhole ? rowsWithConversions : undefined),\n ...moneyUnitWarnings(parseSelectedFields(finalQuery)),\n ...truncation,\n ];\n writeAdsJson(\n buildFileSummary({\n file: resolve(args.out as string),\n rows: totalRowsWritten,\n warnings: fileWarnings,\n complete: truncation.length === 0,\n }),\n );\n return;\n }\n\n if (useCache && !args.all && allRows.length > 0) {\n const page: CachedPage = { rows: allRows, ...(lastPageToken ? { cursor: lastPageToken } : {}) };\n cacheSet(\"queries\", cacheKey, page, getQueryTtl(finalQuery), getFieldDescriptions(extractFields(allRows)));\n }\n const fields = extractFields(allRows);\n outputResults(\n allRows,\n getFieldDescriptions(fields),\n [\n ...warnings,\n ...missingFieldWarnings(finalQuery, allRows),\n ...keywordServingWarnings(allRows, servingOptions),\n ...conversionMixWarnings(finalQuery, readWhole ? rowsWithConversions : undefined),\n ...moneyUnitWarnings(resultColumns(finalQuery, allRows)),\n ],\n args,\n false,\n {\n gaql: finalQuery,\n effectiveLimit: effectiveRowLimit(finalQuery),\n nextCursor: lastPageToken,\n },\n );\n}\n\n// A --out read must always produce the file. The --out branch never populates the cache, so a hit\n// there can only come from an earlier stdout read of the same statement — serving it would print\n// rows and leave the file stale or absent, which the next command reads as this pull.\nexport function shouldReadCache(args: Record<string, unknown>): boolean {\n return !args[\"no-cache\"] && !args.out && !args.all;\n}\n\ninterface ValidatedArgs {\n customerId: string;\n limit: number;\n finalQuery: string;\n warnings: AdsWarning[];\n useCache: boolean;\n cacheKey: string;\n}\n\nconst DEFAULT_QUERY_LIMIT = 200;\n\n/**\n * `--limit` is the page size, and the server refuses a page above its cap. Checked here, before any\n * request, so an out-of-range value comes back as the input error it is — sent on, the server's\n * refusal reached the agent as an API_ERROR, indistinguishable from a Google failure.\n */\nexport function parseQueryLimit(\n raw: unknown,\n fallback = DEFAULT_QUERY_LIMIT,\n): { ok: true; limit: number } | { ok: false; error: AdsErrorEnvelope } {\n if (raw === undefined || raw === null || raw === \"\") return { ok: true, limit: fallback };\n const limit = Number(raw);\n if (Number.isInteger(limit) && limit >= 1 && limit <= GOOGLE_ADS_QUERY_MAX_PAGE_SIZE) return { ok: true, limit };\n return {\n ok: false,\n error: {\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: `--limit must be a whole number from 1 to ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE}, got '${String(raw)}'.`,\n fix: {\n action: \"retry_with_flag\",\n explanation: `--limit is the size of one page, at most ${GOOGLE_ADS_QUERY_MAX_PAGE_SIZE} rows. For more rows, keep the page size and add --all --out <file>: it reads every page.`,\n },\n retryable: false,\n },\n },\n };\n}\n\n/** The page size: --limit when given, else the preset's own page size, else 200. */\nexport function queryPageSize(args: Record<string, unknown>): ReturnType<typeof parseQueryLimit> {\n const preset = typeof args.preset === \"string\" ? getPreset(args.preset) : undefined;\n return parseQueryLimit(args.limit, preset?.defaultLimit ?? DEFAULT_QUERY_LIMIT);\n}\n\nasync function validateArgs(args: Record<string, unknown>): Promise<ValidatedArgs | null> {\n const parsedLimit = queryPageSize(args);\n if (!parsedLimit.ok) {\n writeAdsJson(parsedLimit.error);\n process.exit(1);\n }\n const { limit } = parsedLimit;\n const customerId = await resolveCustomerId(args);\n\n const gaql = resolveGaql(args);\n if (!gaql) {\n process.exit(1);\n }\n\n const preflight = validatePreflight(gaql, customerId);\n if (!preflight.valid && preflight.error) {\n writeAdsJson(preflight.error);\n process.exit(1);\n }\n\n const finalQuery = preflight.correctedQuery ?? gaql;\n return {\n customerId,\n limit,\n finalQuery,\n warnings: [...preflight.warnings, ...servingScopeWarnings(args, finalQuery), ...syncedCopyWarnings(args)],\n useCache: !args[\"no-cache\"],\n cacheKey: pageCacheKey(customerId, finalQuery, limit, args.cursor as string | undefined),\n };\n}\n\nfunction handleQueryError(err: unknown, finalQuery: string, customerId: string): never {\n if (err instanceof ApiError) {\n const envelope = parseApiError(err.message, finalQuery, customerId, err.code);\n envelope.error.gaqlExecuted = finalQuery;\n writeAdsJson(envelope);\n process.exit(1);\n }\n writeAdsJson({\n ok: false,\n error: {\n code: \"NETWORK_ERROR\",\n message: err instanceof Error ? err.message : \"Unexpected error\",\n fix: { action: \"wait_and_retry\", explanation: \"Network error — check connectivity and retry\" },\n retryable: true,\n gaqlExecuted: finalQuery,\n },\n } satisfies AdsErrorEnvelope);\n process.exit(1);\n}\n\n/**\n * One read, start to finish: validate, serve a cached page or fetch, then write the envelope. The\n * `query` command and every `<thing> list` command (which hand it a preset) run through here.\n */\nexport async function runQuery(args: Record<string, unknown>): Promise<void> {\n const validated = await validateArgs(args);\n if (!validated) return;\n const { customerId, limit, finalQuery, warnings, useCache, cacheKey } = validated;\n\n if (shouldReadCache(args)) {\n const cached = cacheGet<CachedPage>(\"queries\", cacheKey);\n if (cached && Array.isArray(cached.data.rows)) {\n const rows = cached.data.rows;\n outputResults(\n rows,\n cached.fields ?? getFieldDescriptions(extractFields(rows)),\n [\n ...warnings,\n ...missingFieldWarnings(finalQuery, rows),\n ...keywordServingWarnings(rows, keywordServingOptions(finalQuery)),\n // A cached page is whole only when it starts at the first row and has no page after it.\n ...conversionMixWarnings(\n finalQuery,\n args.cursor || cached.data.cursor ? undefined : countRowsWithConversions(rows),\n ),\n ...moneyUnitWarnings(resultColumns(finalQuery, rows)),\n ],\n args,\n true,\n { gaql: finalQuery, effectiveLimit: effectiveRowLimit(finalQuery), nextCursor: cached.data.cursor },\n );\n return;\n }\n }\n\n try {\n await executeQuery(finalQuery, args, customerId, limit, warnings, useCache, cacheKey);\n } catch (err) {\n handleQueryError(err, finalQuery, customerId);\n }\n}\n\nexport const queryCommand = defineCommand({\n meta: {\n name: \"query\",\n description: `Run GAQL against Google Ads, one page at a time. Supports raw GAQL, presets, paging, file export, and caching.\n\nStart here:\n baker ads google query --list-presets\n baker ads google query --preset campaign-performance --customer-id 1234567890\n\nEach read returns one page (--limit rows; the preset's page size by default, else 200). When the\naccount holds more, the envelope carries pagination.cursor: pass it with --cursor for the next page,\nor read everything with --all --out <file>. A LIMIT written in the GAQL caps the whole read.\n\nExamples:\n baker ads google query \"SELECT campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_7_DAYS\" --customer-id 1234567890\n baker ads google query --gaql \"SELECT ad_group.name FROM ad_group WHERE ad_group.status = 'ENABLED'\" --customer-id 1234567890\n baker ads google query --preset search-terms --customer-id 1234567890 --date-range LAST_7_DAYS --all --out terms.csv\n baker ads google query --preset keyword-serving --customer-id 1234567890 --cursor <pagination.cursor>`,\n },\n args: {\n query: { type: \"positional\", description: \"GAQL SELECT statement\", required: false },\n gaql: {\n type: \"string\",\n description: \"GAQL SELECT statement as a flag (instead of the positional)\",\n required: false,\n },\n \"customer-id\": {\n type: \"string\",\n description: \"Google Ads customer ID (10 digits; dashes are fine)\",\n required: false,\n },\n preset: { type: \"string\", description: \"Named query preset\", required: false },\n \"date-range\": { type: \"string\", description: \"Date range override for presets\", required: false },\n \"include-paused\": {\n type: \"boolean\",\n description: \"Include paused entities in preset results (default: serving entities only)\",\n required: false,\n },\n limit: {\n type: \"string\",\n description: \"Rows per page (default: the preset's page size, else 200)\",\n required: false,\n },\n \"list-presets\": { type: \"boolean\", description: \"List available presets\", required: false },\n cursor: { type: \"string\", description: \"pagination.cursor from the previous page\", required: false },\n all: { type: \"boolean\", description: \"Follow every page (use with --out for large reads)\", required: false },\n out: { type: \"string\", description: \"File path for output\", required: false },\n append: { type: \"boolean\", description: \"Append to file\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|jsonl|md\", required: false, default: \"json\" },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache\", required: false },\n full: { type: \"boolean\", description: \"Include the field description glossary\", required: false },\n },\n run: async ({ args }) => {\n if (args[\"list-presets\"]) {\n writeAdsJson({\n ok: true,\n data: PRESETS.map((p) => ({\n name: p.name,\n description: p.description,\n defaultDateRange: p.defaultDateRange,\n pageSize: p.defaultLimit,\n servingOnly: (p.statusFields?.length ?? 0) > 0,\n gaql: expandPreset(p, {}).query,\n })),\n });\n return;\n }\n\n await runQuery(args);\n },\n});\n","import type { AdsErrorEnvelope, AdsWarning, PreflightResult } from \"../types.ts\";\nimport { NO_OR_EXPLANATION } from \"./correction-table.ts\";\nimport { duringLiteralExplanation, equivalentBetween, isDuringLiteral } from \"./during-literals.ts\";\nimport { LIST_FIELDS, listFieldGuidance } from \"./list-fields.ts\";\nimport { SERVING_CHAINS } from \"./presets.ts\";\n\nfunction buildCommand(query: string, customerId: string): string {\n return `baker ads google query \"${query}\" --customer-id ${customerId}`;\n}\n\n// A rung is also settled when the query pins that level to one named entity: the caller looked at\n// that level and chose it, which is a different act from sweeping it silently.\nconst RUNG_PIN_FIELDS: Record<string, string[]> = {\n \"campaign.status\": [\"campaign.id\", \"campaign.resource_name\"],\n \"ad_group.status\": [\"ad_group.id\", \"ad_group.resource_name\"],\n \"ad_group_criterion.status\": [\"ad_group_criterion.criterion_id\", \"ad_group_criterion.resource_name\"],\n \"ad_group_ad.status\": [\"ad_group_ad.ad.id\", \"ad_group_ad.resource_name\"],\n \"asset_group.status\": [\"asset_group.id\", \"asset_group.resource_name\"],\n \"asset_group_asset.status\": [\"asset_group_asset.resource_name\"],\n \"campaign_asset.status\": [\"campaign_asset.resource_name\"],\n \"ad_group_asset.status\": [\"ad_group_asset.resource_name\"],\n};\n\n// WHERE clause only — a status column in the SELECT list displays status, it does not scope the rows.\nfunction whereClause(query: string): string {\n const match = query.match(/\\bWHERE\\b([\\s\\S]*)$/i);\n if (!match?.[1]) return \"\";\n let rest = match[1];\n for (const trailing of [/\\bORDER\\s+BY\\b/i, /\\bLIMIT\\b/i, /\\bPARAMETERS\\b/i]) {\n const idx = rest.search(trailing);\n if (idx !== -1) rest = rest.slice(0, idx);\n }\n return rest;\n}\n\nfunction selectClause(query: string): string {\n return query.split(/\\bFROM\\b/i)[0] ?? \"\";\n}\n\nfunction mentions(clause: string, field: string): boolean {\n return new RegExp(`(?<![\\\\w.])${field.replace(/\\./g, \"\\\\.\")}\\\\b`, \"i\").test(clause);\n}\n\ninterface ChainAnalysis {\n chain: string[];\n /** Rungs the WHERE clause says nothing about — neither a status predicate nor an entity pin. */\n unscoped: string[];\n /** Rungs the WHERE clause pins to `= 'ENABLED'`, i.e. where the query claims \"this is live\". */\n assertsServing: boolean;\n}\n\nfunction analyzeServingChain(query: string): ChainAnalysis | null {\n const resource = fromResource(query);\n const chain = resource ? SERVING_CHAINS[resource] : undefined;\n if (!chain) return null;\n\n const where = whereClause(query);\n\n // A negative keyword never serves, so the serving chain is not a question anyone is asking of it.\n if (/ad_group_criterion\\.negative\\s*=\\s*TRUE/i.test(where)) return null;\n\n const unscoped = chain.filter((rung) => {\n if (mentions(where, rung)) return false;\n return !(RUNG_PIN_FIELDS[rung] ?? []).some((pin) => mentions(where, pin));\n });\n const assertsServing = chain.some((rung) =>\n new RegExp(`${rung.replace(/\\./g, \"\\\\.\")}\\\\s*=\\\\s*'ENABLED'`, \"i\").test(where),\n );\n\n return { chain, unscoped, assertsServing };\n}\n\n/**\n * REJECT a half-asserted chain. A query that pins one rung to ENABLED and leaves another silent\n * returns rows that read as \"these are live\" and are not — the shape that reported 486 serving\n * keywords when the account had 53. There is no reading of \"enabled criteria in ad groups I did\n * not look at\" that anyone means, so this is refused rather than warned: a warning on this path is\n * dropped by `--output csv` and swallowed by `2>/dev/null`, and no data at all is the only signal\n * that survives.\n */\nfunction rejectPartialChain(query: string, customerId: string, analysis: ChainAnalysis): AdsErrorEnvelope | null {\n if (!analysis.assertsServing || analysis.unscoped.length === 0) return null;\n\n const added = analysis.unscoped.map((rung) => `${rung} = 'ENABLED'`).join(\" AND \");\n // The rungs go into SELECT as well where the resource segments on them — on campaign_asset and\n // ad_group_asset a filtered-but-unselected ancestor is refused outright, so a corrected command\n // that only touched the WHERE clause was one the agent could not run either.\n const fixed = addRequiredAncestorFields(query.replace(/\\bWHERE\\b/i, `WHERE ${added} AND`)).query;\n return {\n ok: false,\n error: {\n code: \"INCOMPLETE_STATUS_CHAIN\",\n message: `This query filters on serving status but leaves ${analysis.unscoped.join(\", \")} unscoped. Google Ads has no single serving flag — a row is live only when its whole chain (${analysis.chain.join(\" → \")}) is ENABLED, so rows under a paused parent will come back looking live.`,\n fix: {\n action: \"retry_with_modified_query\",\n correctedCommand: buildCommand(fixed, customerId),\n 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.`,\n },\n retryable: false,\n },\n };\n}\n\n/**\n * ANNOTATE an unasserted chain. A sweep that claims nothing about serving is a legitimate read —\n * \"show me everything, paused included\" — so the rows are not changed. Every unscoped rung's status\n * column is added to SELECT instead, so the status travels with the data through a CSV, a `--out`\n * file and a `python3` pass. A banner does not survive that trip; a column name does.\n */\nfunction annotateUnscopedChain(query: string, analysis: ChainAnalysis): { query: string; warnings: AdsWarning[] } {\n if (analysis.assertsServing || analysis.unscoped.length === 0) return { query, warnings: [] };\n\n const select = selectClause(query);\n const missing = analysis.unscoped.filter((rung) => !mentions(select, rung));\n if (missing.length === 0) return { query, warnings: [] };\n\n return {\n query: query.replace(/SELECT\\s+/i, `SELECT ${missing.join(\", \")}, `),\n warnings: [\n {\n code: \"SERVING_STATUS_ADDED\",\n message: `Added ${missing.join(\", \")} to SELECT — 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.`,\n },\n ],\n };\n}\n\n// Resources that return exactly one row per account, so no LIMIT can truncate them and no row can be\n// set against another. SELECTing a segment (segments.date, segments.device …) fans one back out into\n// many rows; filtering on a date range in WHERE does not — Google sums the range into the one row,\n// which is exactly what the account-summary preset reads.\nconst SINGLE_ROW_RESOURCES = [\"customer\"];\n\n// The resource named in the FROM clause, lowercased. Newline- and case-tolerant; null when the\n// statement has no FROM.\nexport function fromResource(query: string): string | null {\n const match = query.match(/\\bFROM\\s+([A-Za-z_][A-Za-z0-9_]*)/i);\n return match?.[1]?.toLowerCase() ?? null;\n}\n\n// A statement that returns one row by construction — decided from the statement, never from the rows.\nexport function isSingleRowRead(query: string): boolean {\n const resource = fromResource(query);\n if (!resource || !SINGLE_ROW_RESOURCES.includes(resource)) return false;\n return !/\\bsegments\\./i.test(selectClause(query));\n}\n\n// Resources whose ancestors SEGMENT them: one budget backs many campaigns, one asset is linked from\n// many campaigns/ad groups, so an ancestor field used in WHERE must appear in SELECT too or Google\n// refuses the whole statement with EXPECTED_REFERENCED_FIELD_IN_SELECT_CLAUSE. Verified live on v23:\n// FROM campaign/ad_group/ad_group_ad/ad_group_criterion/asset_group_asset filter their ancestors\n// freely; these three do not.\nconst SEGMENTING_ANCESTORS: Record<string, string[]> = {\n campaign_budget: [\"campaign\"],\n campaign_asset: [\"campaign\"],\n ad_group_asset: [\"campaign\", \"ad_group\"],\n};\n\n/** The ancestor fields a query filters on but does not select — empty unless the resource segments. */\nfunction missingRequiredSelectFields(query: string): string[] {\n const ancestors = SEGMENTING_ANCESTORS[fromResource(query) ?? \"\"];\n if (!ancestors) return [];\n\n const select = selectClause(query);\n // Everything after WHERE, ORDER BY included — an ancestor field is just as referenced there.\n const where = query.split(/\\bWHERE\\b/i)[1] ?? \"\";\n const filtered = ancestors.flatMap(\n (ancestor) => where.match(new RegExp(`(?<![\\\\w.])${ancestor}\\\\.[\\\\w.]+`, \"g\")) ?? [],\n );\n return [...new Set(filtered)].filter((field) => !mentions(select, field));\n}\n\nfunction addRequiredAncestorFields(query: string): { query: string; warnings: AdsWarning[] } {\n const missing = missingRequiredSelectFields(query);\n if (missing.length === 0) return { query, warnings: [] };\n\n return {\n query: query.replace(/SELECT\\s+/i, `SELECT ${missing.join(\", \")}, `),\n warnings: [\n {\n code: \"REQUIRED_FIELD_ADDED\",\n message: `Added ${missing.join(\", \")} to SELECT — ${fromResource(query)} queries must select the ancestor fields used in WHERE`,\n },\n ],\n };\n}\n\nfunction applyAutoFixes(query: string): { query: string; warnings: AdsWarning[] } {\n let corrected = query;\n const warnings: AdsWarning[] = [];\n\n // bare keyword.text → ad_group_criterion.keyword.text\n // Lookbehind skips fields already scoped to a resource (shared_criterion.keyword.text,\n // campaign_criterion.keyword.text, ad_group_criterion.keyword.text) so they pass through untouched.\n if (/(?<![\\w.])keyword\\.text\\b/.test(corrected)) {\n corrected = corrected.replace(/(?<![\\w.])keyword\\.text\\b/g, \"ad_group_criterion.keyword.text\");\n warnings.push({ code: \"FIELD_RENAMED\", message: \"keyword.text → ad_group_criterion.keyword.text\" });\n }\n\n // bare keyword.match_type → ad_group_criterion.keyword.match_type\n if (/(?<![\\w.])keyword\\.match_type\\b/.test(corrected)) {\n corrected = corrected.replace(/(?<![\\w.])keyword\\.match_type\\b/g, \"ad_group_criterion.keyword.match_type\");\n warnings.push({ code: \"FIELD_RENAMED\", message: \"keyword.match_type → ad_group_criterion.keyword.match_type\" });\n }\n\n // shopping_performance_view.product_* → segments.product_*\n if (/shopping_performance_view\\.product_\\w+/.test(corrected)) {\n corrected = corrected.replace(/shopping_performance_view\\.product_(\\w+)/g, \"segments.product_$1\");\n warnings.push({ code: \"FIELD_RENAMED\", message: \"shopping_performance_view.product_* → segments.product_*\" });\n }\n\n // asset.<type>_asset.final_urls → asset.final_urls (final URLs live on the asset itself;\n // the typed sub-message only carries type-specific fields like link_text/descriptions)\n if (/asset\\.\\w+_asset\\.final_(mobile_)?urls\\b/.test(corrected)) {\n corrected = corrected.replace(/asset\\.\\w+_asset\\.final_(mobile_)?urls\\b/g, \"asset.final_$1urls\");\n warnings.push({ code: \"FIELD_RENAMED\", message: \"asset.<type>_asset.final_urls → asset.final_urls\" });\n }\n\n const ancestorFix = addRequiredAncestorFields(corrected);\n corrected = ancestorFix.query;\n warnings.push(...ancestorFix.warnings);\n\n // campaign.status = 'ACTIVE' → 'ENABLED'\n if (/campaign\\.status\\s*=\\s*'ACTIVE'/i.test(corrected)) {\n corrected = corrected.replace(/campaign\\.status\\s*=\\s*'ACTIVE'/gi, \"campaign.status = 'ENABLED'\");\n warnings.push({ code: \"ENUM_CORRECTED\", message: \"campaign.status ACTIVE → ENABLED\" });\n }\n\n // ad_group.status = 'ACTIVE' → 'ENABLED'\n if (/ad_group\\.status\\s*=\\s*'ACTIVE'/i.test(corrected)) {\n corrected = corrected.replace(/ad_group\\.status\\s*=\\s*'ACTIVE'/gi, \"ad_group.status = 'ENABLED'\");\n warnings.push({ code: \"ENUM_CORRECTED\", message: \"ad_group.status ACTIVE → ENABLED\" });\n }\n\n return { query: corrected, warnings };\n}\n\nconst DURING_CLAUSE = /(?<=[a-z_]\\.[a-z_.]+\\s+)DURING\\s+([A-Za-z0-9_]+)/gi;\n\n/**\n * REJECT a DURING literal outside Google's set (LAST_90_DAYS, LAST_12_MONTHS …). Google refuses the\n * whole statement, so it is refused here with the same window spelled as a BETWEEN range.\n */\nfunction rejectUnsupportedDuring(query: string, customerId: string): AdsErrorEnvelope | null {\n const unsupported = [...query.matchAll(DURING_CLAUSE)]\n .map((match) => match[1] ?? \"\")\n .filter((literal) => !isDuringLiteral(literal));\n const literal = unsupported[0];\n if (literal === undefined) return null;\n const now = new Date();\n const between = equivalentBetween(literal, now);\n // Every unsupported clause is rewritten, so the corrected command runs as-is; one with no fixed\n // window leaves nothing runnable to offer.\n const fixed = unsupported.every((l) => equivalentBetween(l, now) !== null)\n ? query.replace(DURING_CLAUSE, (clause, l: string) =>\n isDuringLiteral(l) ? clause : (equivalentBetween(l, now) ?? clause),\n )\n : undefined;\n return {\n ok: false,\n error: {\n code: \"INVALID_DATE_RANGE\",\n message: `DURING ${literal} is not a Google Ads date range, so Google would refuse this query.`,\n fix: {\n action: \"narrow_date_range\",\n ...(fixed ? { correctedCommand: buildCommand(fixed, customerId) } : {}),\n explanation: duringLiteralExplanation(literal, between),\n },\n retryable: false,\n },\n };\n}\n\nconst WHERE_OPERATOR =\n /(?<![\\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;\n\nfunction escapeRegExp(text: string): string {\n return text.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/** The statement without one null test on `field`, with `field` kept in SELECT so the rows still carry it. */\nfunction withoutNullTest(query: string, field: string): string {\n const test = `${escapeRegExp(field)}\\\\s+IS\\\\s+(?:NOT\\\\s+)?NULL\\\\b`;\n const dropped = query\n .replace(new RegExp(`\\\\bWHERE\\\\s+${test}\\\\s+AND\\\\s+`, \"i\"), \"WHERE \")\n .replace(new RegExp(`\\\\s+AND\\\\s+${test}`, \"i\"), \"\")\n .replace(new RegExp(`\\\\s*\\\\bWHERE\\\\s+${test}`, \"i\"), \"\");\n return mentions(selectClause(dropped), field) ? dropped : dropped.replace(/SELECT\\s+/i, `SELECT ${field}, `);\n}\n\n/** `field = 'x'` / `IN (…)` as CONTAINS ANY, `!=` / `NOT IN` as CONTAINS NONE — null when there is no list equivalent. */\nfunction asListCondition(query: string, field: string): string | null {\n const condition = new RegExp(\n `(?<![\\\\w.])${escapeRegExp(field)}\\\\s*(NOT\\\\s+IN\\\\b|IN\\\\b|!=|=)\\\\s*('[^']*'|\\\\([^)]*\\\\))`,\n \"i\",\n );\n const match = query.match(condition);\n if (!match) return null;\n const [, operator = \"\", value = \"\"] = match;\n const contains = /^(=|IN)$/i.test(operator.trim()) ? \"CONTAINS ANY\" : \"CONTAINS NONE\";\n const values = value.startsWith(\"(\") ? value : `(${value})`;\n return query.replace(condition, `${field} ${contains} ${values}`);\n}\n\n/**\n * REJECT an operator a list field does not take. Google filters a list field only with CONTAINS\n * ALL/ANY/NONE and refuses the whole statement otherwise. The corrected read rewrites =/IN/!=/NOT IN\n * to CONTAINS, and drops a null test — which has no list equivalent — keeping the field in SELECT for\n * the caller to filter. LIKE and the rest have no rewrite, so they get the explanation alone.\n */\nfunction rejectListFieldOperator(query: string, customerId: string): AdsErrorEnvelope | null {\n const where = whereClause(query).replace(/'(?:\\\\.|[^'\\\\])*'|\"(?:\\\\.|[^\"\\\\])*\"/g, \"''\");\n const refusals = [...where.matchAll(WHERE_OPERATOR)]\n .map(([, field = \"\", operator = \"\"]) => ({\n field: field.toLowerCase(),\n operator: operator.toUpperCase().replace(/\\s+/g, \" \"),\n }))\n .filter(({ field, operator }) => LIST_FIELDS.has(field) && !operator.startsWith(\"CONTAINS\"));\n const first = refusals[0];\n if (!first) return null;\n const fixed = refusals.reduce<string | null>(\n (corrected, { field, operator }) =>\n corrected === null\n ? null\n : operator.startsWith(\"IS \")\n ? withoutNullTest(corrected, field)\n : asListCondition(corrected, field),\n query,\n );\n return {\n ok: false,\n error: {\n code: \"INVALID_OPERATOR\",\n message: `${first.operator} cannot be used on ${first.field}: it is a list field, so Google would refuse this query.`,\n fix: {\n action: \"change_operator\",\n ...(fixed ? { correctedCommand: buildCommand(fixed, customerId) } : {}),\n explanation: listFieldGuidance(first.field),\n },\n retryable: false,\n },\n };\n}\n\n/** REJECT the function form CONTAINS(field, 'x'), which GAQL does not have — LIKE is the substring match. */\nfunction rejectContainsCall(query: string, customerId: string): AdsErrorEnvelope | null {\n const containsMatch = query.match(/CONTAINS\\s*\\(\\s*([^,]+),\\s*'([^']+)'\\s*\\)/i);\n if (!containsMatch) return null;\n const field = containsMatch[1]?.trim();\n const value = containsMatch[2] ?? \"\";\n const fixed = query.replace(/CONTAINS\\s*\\(\\s*[^,]+,\\s*'[^']+'\\s*\\)/i, `${field} LIKE '%${value}%'`);\n return {\n ok: false,\n error: {\n code: \"INVALID_OPERATOR\",\n message: \"GAQL does not support CONTAINS. Use LIKE with % wildcards.\",\n fix: {\n action: \"change_operator\",\n correctedCommand: buildCommand(fixed, customerId),\n explanation: \"GAQL uses LIKE '%value%' for substring matching, not CONTAINS()\",\n },\n retryable: false,\n },\n };\n}\n\n/**\n * REJECT an OR, or a parenthesised group of conditions, in WHERE. GAQL joins conditions with AND\n * only and Google refuses either shape, naming the token it choked on but not why. Quoted values\n * (single or double quotes, escapes included) are blanked first, and a parenthesis after IN / CONTAINS ANY|ALL|NONE is a value list, not a group.\n */\nfunction rejectOrCondition(query: string): AdsErrorEnvelope | null {\n const where = whereClause(query).replace(/'(?:\\\\.|[^'\\\\])*'|\"(?:\\\\.|[^\"\\\\])*\"/g, \"''\");\n const hasOr = /(?<![\\w.])OR(?![\\w.])/i.test(where);\n const hasGroup = /(?:^|\\bAND|\\bNOT)\\s*\\(/i.test(where);\n if (!hasOr && !hasGroup) return null;\n return {\n ok: false,\n error: {\n code: \"INVALID_SYNTAX\",\n message: `${hasOr ? \"OR\" : \"A parenthesised condition\"} in WHERE: Google would refuse this query.`,\n fix: { action: \"retry_with_modified_query\", explanation: NO_OR_EXPLANATION },\n retryable: false,\n },\n };\n}\n\nexport function validatePreflight(query: string, customerId: string): PreflightResult {\n const warnings: AdsWarning[] = [];\n const corrected = query;\n\n // REJECT: Non-SELECT queries\n const firstWord = corrected.trim().split(/\\s+/)[0]?.toUpperCase();\n if (firstWord && firstWord !== \"SELECT\") {\n return {\n valid: false,\n warnings: [],\n error: {\n ok: false,\n error: {\n code: \"READ_ONLY\",\n message: `Only SELECT queries are allowed. Got: ${firstWord}`,\n fix: {\n action: \"reject\",\n explanation: \"This CLI only supports GAQL SELECT queries for reading data\",\n },\n retryable: false,\n },\n },\n };\n }\n\n // REJECT: Open-ended date range\n const openDateMatch = corrected.match(/segments\\.date\\s*>=\\s*'(\\d{4}-\\d{2}-\\d{2})'/i);\n if (openDateMatch && !/BETWEEN/i.test(corrected)) {\n const startDate = openDateMatch[1] ?? \"\";\n const today = new Date().toISOString().slice(0, 10);\n const fixed = corrected.replace(\n /segments\\.date\\s*>=\\s*'(\\d{4}-\\d{2}-\\d{2})'/i,\n `segments.date BETWEEN '${startDate}' AND '${today}'`,\n );\n return {\n valid: false,\n warnings: [],\n error: {\n ok: false,\n error: {\n code: \"OPEN_ENDED_DATE\",\n message: \"Open-ended date ranges are not supported. Use BETWEEN or DURING.\",\n fix: {\n action: \"narrow_date_range\",\n correctedCommand: buildCommand(fixed, customerId),\n explanation: \"Use BETWEEN with explicit start and end dates\",\n },\n retryable: false,\n },\n },\n };\n }\n\n for (const reject of [rejectContainsCall, rejectOrCondition, rejectListFieldOperator, rejectUnsupportedDuring]) {\n const rejection = reject(corrected, customerId);\n if (rejection) return { valid: false, warnings: [], error: rejection };\n }\n\n // REJECT: conversion action segments are incompatible with cost metrics in GAQL.\n // Split conversion-action breakdowns from spend/cost queries and join by campaign in report code.\n if (/\\bsegments\\.conversion_action_name\\b/i.test(corrected) && /\\bmetrics\\.cost_micros\\b/i.test(corrected)) {\n return {\n valid: false,\n warnings: [],\n error: {\n ok: false,\n error: {\n code: \"INCOMPATIBLE_FIELDS\",\n message: \"segments.conversion_action_name cannot be selected with metrics.cost_micros in one GAQL query.\",\n fix: {\n action: \"split_query\",\n explanation:\n \"Run one campaign spend query with metrics.cost_micros and a separate conversion-action query without cost metrics, then join the results by campaign.\",\n },\n retryable: false,\n },\n },\n };\n }\n\n // WARN: ad_group_criterion without negative field — positives and negatives will be mixed\n if (/FROM\\s+ad_group_criterion\\b/i.test(corrected) && !/ad_group_criterion\\.negative/i.test(corrected)) {\n warnings.push({\n code: \"NEGATIVE_FIELD_MISSING\",\n message:\n \"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.\",\n });\n }\n\n const { query: autoFixed, warnings: autoFixWarnings } = applyAutoFixes(corrected);\n warnings.push(...autoFixWarnings);\n\n // Runs last, on the auto-fixed query, so ACTIVE → ENABLED is already normalised into the chain.\n const analysis = analyzeServingChain(autoFixed);\n if (!analysis) return { valid: true, correctedQuery: autoFixed, warnings };\n\n const rejection = rejectPartialChain(autoFixed, customerId, analysis);\n if (rejection) return { valid: false, warnings: [], error: rejection };\n\n const annotated = annotateUnscopedChain(autoFixed, analysis);\n warnings.push(...annotated.warnings);\n\n return { valid: true, correctedQuery: annotated.query, warnings };\n}\n","/**\n * Refusing to let one `metrics.conversions` column stand for several different events.\n *\n * `metrics.conversions` is not a metric, it is a sum: each campaign contributes whatever conversion\n * actions the account has marked primary for it, and in a real account those differ campaign by\n * campaign — a webinar registration here, a form fill there, a CRM-stage SQL somewhere else. So a\n * total across campaigns adds events that are not the same event, and a conversion rate from one\n * campaign is not comparable with another's.\n *\n * This was learned on a report that put \"our landings 4,6 % CVR vs theirs 3,2 %\" in front of the\n * client. The two sides were different campaign types counting different actions; the client caught\n * it, and the comparison had to be withdrawn. The read that produced it looked completely ordinary:\n * one `landing_page_view` pull with `metrics.conversions` and no campaign filter.\n *\n * The statement decides whether a read can blend actions at all. The rows can only clear it, and only\n * a read that started at the first page and reached the last: fewer than two converting rows leave\n * nothing to total. A read that skipped rows, or left some unread, is judged on the statement alone.\n */\n\nimport type { AdsWarning } from \"../types.ts\";\nimport { isSingleRowRead } from \"./preflight.ts\";\n\n/** Metrics whose value is a sum, or a rate, over whichever conversion actions each campaign counts. */\nconst CONVERSION_METRICS = [\n \"METRICS.CONVERSIONS\",\n \"METRICS.ALL_CONVERSIONS\",\n \"METRICS.CONVERSIONS_VALUE\",\n \"METRICS.ALL_CONVERSIONS_VALUE\",\n \"METRICS.COST_PER_CONVERSION\",\n \"METRICS.COST_PER_ALL_CONVERSIONS\",\n \"METRICS.CONVERSIONS_FROM_INTERACTIONS_RATE\",\n \"METRICS.ALL_CONVERSIONS_FROM_INTERACTIONS_RATE\",\n \"METRICS.VALUE_PER_CONVERSION\",\n \"METRICS.VALUE_PER_ALL_CONVERSIONS\",\n];\n\n/** Segments that split the metric back into one row per action, which is what makes it readable. */\nconst CONVERSION_SEGMENTS = [\"SEGMENTS.CONVERSION_ACTION_NAME\", \"SEGMENTS.CONVERSION_ACTION=\"];\n\n/** A campaign identity pinned by an equality predicate — the one shape that confines a read. */\nconst CAMPAIGN_EQUALITY = /\\bCAMPAIGN\\.(ID|NAME|RESOURCE_NAME)\\s*=/;\n\n// Everything between WHERE and the first trailing clause. A campaign column in the SELECT list\n// names a dimension the rows are broken down by; only a predicate confines the read to one.\nfunction whereClause(upperQuery: string): string {\n const whereIdx = upperQuery.indexOf(\" WHERE \");\n if (whereIdx === -1) return \"\";\n let rest = upperQuery.slice(whereIdx + 7);\n for (const trailing of [\" ORDER BY \", \" GROUP BY \", \" LIMIT \", \" PARAMETERS \"]) {\n const idx = rest.indexOf(trailing);\n if (idx !== -1) rest = rest.slice(0, idx);\n }\n return rest;\n}\n\n// The same prefix the statement check matches by, so `metrics.conversions_by_conversion_date` and\n// `metrics.conversions_value_per_cost` count on a row exactly as they do in the SELECT.\nfunction isConversionMetric(field: string): boolean {\n const upper = field.toUpperCase();\n return CONVERSION_METRICS.some((metric) => upper.startsWith(metric));\n}\n\n// Google omits a zero metric, so an absent key counts as no conversions.\nexport function countRowsWithConversions(rows: Array<Record<string, unknown>>): number {\n return rows.filter((row) =>\n Object.entries(row).some(\n ([field, value]) => isConversionMetric(field) && value !== undefined && value !== null && Number(value) !== 0,\n ),\n ).length;\n}\n\n/**\n * `rowsWithConversions`, only for a read that started at the first page and reached the last: fewer\n * than two leave nothing to total or set side by side. Any other read is judged on the statement.\n */\nexport function conversionMixWarnings(finalQuery: string, rowsWithConversions?: number): AdsWarning[] {\n const upper = ` ${finalQuery.toUpperCase().replace(/\\s+/g, \" \")} `;\n const readsConversions = CONVERSION_METRICS.some((metric) => upper.includes(metric));\n if (!readsConversions) return [];\n if (CONVERSION_SEGMENTS.some((segment) => upper.includes(segment))) return [];\n if (CAMPAIGN_EQUALITY.test(whereClause(upper))) return [];\n // One account-wide row carries no campaign to total across or set beside another.\n if (isSingleRowRead(finalQuery)) return [];\n if (rowsWithConversions !== undefined && rowsWithConversions < 2) return [];\n\n return [\n {\n code: \"CONVERSION_MIX\",\n message:\n \"MIXED CONVERSION ACTIONS — 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 — and carry that caveat into anything you write for the user, not just the analysis.\",\n },\n ];\n}\n","import type { AdsWarning } from \"../types.ts\";\n\n// Google Ads' UI renders \"Eligible (Limited) — Below first page bid (€3.63)\" from three separate\n// API fields: ad_group_criterion.primary_status_reasons, position_estimates.first_page_cpc_micros\n// and effective_cpc_bid_micros. Read raw, that is an enum name and two micro-integers — this\n// module turns them back into the sentence the column was showing, plus what fixes it.\n\nconst BELOW_FIRST_PAGE_BID = \"AD_GROUP_CRITERION_BELOW_FIRST_PAGE_BID\";\n\n// Reasons the keyword itself can act on. The parent-chain ones (CAMPAIGN_PAUSED, AD_GROUP_PAUSED,\n// AD_GROUP_CRITERION_PAUSED/REMOVED, …) restate a status the row already carries, so they are left\n// out rather than reported as a finding.\nconst ACTIONABLE_REASONS: Record<string, { label: string; advice: string }> = {\n [BELOW_FIRST_PAGE_BID]: {\n label: \"Below first page bid\",\n advice:\n \"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\",\n },\n AD_GROUP_CRITERION_LOW_QUALITY: {\n label: \"Low quality score\",\n advice:\n \"a bid raise does not lift quality — 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)\",\n },\n AD_GROUP_CRITERION_RARELY_SERVED: {\n label: \"Rarely served\",\n advice: \"too few people search this term — broaden the match type or drop it, don't bid it up\",\n },\n AD_GROUP_CRITERION_DISAPPROVED: {\n label: \"Disapproved\",\n advice: \"select ad_group_criterion.disapproval_reasons to see which policy blocked it\",\n },\n AD_GROUP_CRITERION_RESTRICTED: {\n label: \"Restricted\",\n advice: \"policy limits where and to whom this keyword may show\",\n },\n AD_GROUP_CRITERION_UNDER_REVIEW: {\n label: \"Under review\",\n advice: \"waiting on Google's review — nothing to change yet\",\n },\n AD_GROUP_CRITERION_PENDING_REVIEW: {\n label: \"Pending review\",\n advice: \"waiting on Google's review — nothing to change yet\",\n },\n AD_GROUP_CRITERION_PAUSED_DUE_TO_LOW_ACTIVITY: {\n label: \"Auto-paused for low activity\",\n advice: \"Google paused it after prolonged low serving — resume it only alongside a change that gives it traffic\",\n },\n};\n\nconst REASON_ORDER = Object.keys(ACTIONABLE_REASONS);\nconst MAX_NAMED_KEYWORDS = 5;\n\n// Google's REST transport serialises int64 as a JSON string, so a micros field arrives as\n// \"3630000\" from the API and as 3630000 from a hand-built fixture. Both have to read the same.\nfunction toMicros(value: unknown): number | null {\n if (typeof value === \"number\" && Number.isFinite(value)) return value;\n if (typeof value === \"string\" && value.trim() !== \"\" && Number.isFinite(Number(value))) return Number(value);\n return null;\n}\n\nfunction formatMoney(micros: number): string {\n return (micros / 1_000_000).toFixed(2);\n}\n\n// A keyword's criterion id is derived from its text + match type, so the same id and the same text\n// repeat in every ad group holding that keyword. Naming a copy without its ad group makes the\n// copies indistinguishable — and identical enough to be silently deduped out of the count.\nfunction keywordLabel(row: Record<string, unknown>): string {\n const text = row[\"ad_group_criterion.keyword.text\"];\n const id = row[\"ad_group_criterion.criterion_id\"];\n const name = typeof text === \"string\" && text !== \"\" ? text : id == null ? \"(unnamed keyword)\" : `criterion ${id}`;\n const adGroup = row[\"ad_group.name\"];\n return typeof adGroup === \"string\" && adGroup !== \"\" ? `${name} (ad group ${adGroup})` : name;\n}\n\n// What makes two rows the same keyword for counting. The ad group is half the identity, so it is\n// part of the key whenever the read selected it.\nfunction keywordKey(row: Record<string, unknown>): string {\n const adGroup = row[\"ad_group.id\"] ?? row[\"ad_group.name\"] ?? \"\";\n const criterion = row[\"ad_group_criterion.criterion_id\"] ?? row[\"ad_group_criterion.keyword.text\"] ?? \"\";\n return `${String(adGroup)}~${String(criterion)}` === \"~\" ? keywordLabel(row) : `${adGroup}~${criterion}`;\n}\n\nfunction reasonsOn(row: Record<string, unknown>): string[] | null {\n const raw = row[\"ad_group_criterion.primary_status_reasons\"];\n if (!Array.isArray(raw)) return null;\n return raw.filter((r): r is string => typeof r === \"string\");\n}\n\n// The bid gap the API states outright, for reads that selected the estimates without the status.\nfunction bidShortfall(row: Record<string, unknown>): string | null {\n const bid = toMicros(row[\"ad_group_criterion.effective_cpc_bid_micros\"] ?? row[\"ad_group_criterion.cpc_bid_micros\"]);\n const firstPage = toMicros(row[\"ad_group_criterion.position_estimates.first_page_cpc_micros\"]);\n if (bid == null || firstPage == null || bid >= firstPage) return null;\n return `bids ${formatMoney(bid)} against a ${formatMoney(firstPage)} first-page estimate`;\n}\n\n// The limits one row reports, each already phrased with the keyword it belongs to.\n//\n// Google omits primary_status_reasons entirely when a keyword has none, so an absent key means\n// two different things: \"nothing to report\" if the read selected the field, \"we never asked\" if it\n// didn't. Only the query knows which, hence statusReasonsSelected — without it, every healthy\n// keyword bidding under a stale estimate gets reported as starved.\nfunction limitsOn(\n row: Record<string, unknown>,\n options: KeywordServingOptions,\n): Array<{ reason: string; detail: string }> {\n const reasons = reasonsOn(row);\n const shortfall = bidShortfall(row);\n const label = keywordLabel(row);\n\n const applicable = reasons\n ? reasons.filter((reason) => reason in ACTIONABLE_REASONS)\n : options.statusReasonsSelected || shortfall === null\n ? []\n : [BELOW_FIRST_PAGE_BID];\n\n return applicable.map((reason) => ({\n reason,\n detail: reason === BELOW_FIRST_PAGE_BID && shortfall ? `\"${label}\" ${shortfall}` : `\"${label}\"`,\n }));\n}\n\nfunction describeLimit(reason: string, details: string[]): string {\n const named = details.slice(0, MAX_NAMED_KEYWORDS).join(\"; \");\n const rest = details.length > MAX_NAMED_KEYWORDS ? ` (+${details.length - MAX_NAMED_KEYWORDS} more)` : \"\";\n const { label, advice } = ACTIONABLE_REASONS[reason] as { label: string; advice: string };\n return `${label} — ${details.length}: ${named}${rest}. Fix: ${advice}.`;\n}\n\nexport interface KeywordServingOptions {\n /** Whether the executed query selected ad_group_criterion.primary_status_reasons. */\n statusReasonsSelected: boolean;\n}\n\n/** Limits found so far: the details to quote per reason, and which keywords they belong to. */\nexport interface KeywordLimits {\n detailsByReason: Map<string, string[]>;\n keywords: Set<string>;\n}\n\n/**\n * Fold one page of rows into the running limits. `--out` streams each page to disk and keeps no\n * rows, so the tally has to survive between pages rather than be recomputed at the end.\n */\nexport function collectKeywordLimits(\n rows: Array<Record<string, unknown>>,\n options: KeywordServingOptions,\n acc: KeywordLimits = { detailsByReason: new Map(), keywords: new Set() },\n): KeywordLimits {\n for (const row of rows) {\n const limits = limitsOn(row, options);\n if (limits.length === 0) continue;\n // Counted once per keyword, however many reasons it carries — Google reports below-first-page-\n // bid and low-quality together on the same keyword all the time.\n acc.keywords.add(keywordKey(row));\n for (const { reason, detail } of limits) {\n const bucket = acc.detailsByReason.get(reason);\n if (bucket) bucket.push(detail);\n else acc.detailsByReason.set(reason, [detail]);\n }\n }\n return acc;\n}\n\n/** Render accumulated limits as the single warning the agent reads. Empty when nothing is limited. */\nexport function renderKeywordLimits(limits: KeywordLimits): AdsWarning[] {\n if (limits.detailsByReason.size === 0) return [];\n\n const sentences = REASON_ORDER.filter((reason) => limits.detailsByReason.has(reason)).map((reason) =>\n describeLimit(reason, limits.detailsByReason.get(reason) ?? []),\n );\n const count = limits.keywords.size;\n\n return [\n {\n code: \"KEYWORD_SERVING_LIMITED\",\n 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).`,\n },\n ];\n}\n\n/**\n * Turn the serving signals on a keyword read into one warning naming what is limited and what\n * fixes it. Silent when the rows carry no serving signal, or when every limit is just a paused\n * parent — a row that already says PAUSED needs no second telling.\n */\nexport function keywordServingWarnings(\n rows: Array<Record<string, unknown>>,\n options: KeywordServingOptions,\n): AdsWarning[] {\n return renderKeywordLimits(collectKeywordLimits(rows, options));\n}\n","/**\n * Google Ads reads keep money in micros (millionths of the account currency),\n * exactly as GAQL returns it, while every money flag (`--amount`, `--cpc-bid`,\n * `--target-cpa`, …) takes whole currency. An amount copied from one into the\n * other is a millionfold raise, so a read that carries a budget, bid or target\n * says so once, next to the rows.\n *\n * Only the settings a flag is set from count: cost metrics are read, not copied\n * into a write, and saying it on every performance read would teach the agent to\n * skip warnings. `*_fraction_micros` is a share, not money.\n */\n\nimport type { AdsWarning } from \"../types.ts\";\n\nfunction isSettingMicros(field: string): boolean {\n return field.endsWith(\"_micros\") && !field.startsWith(\"metrics.\") && !field.endsWith(\"_fraction_micros\");\n}\n\nexport function moneyUnitWarnings(fields: readonly string[]): AdsWarning[] {\n const example = fields.find(isSettingMicros);\n if (!example) return [];\n return [\n {\n code: \"MONEY_IN_MICROS\",\n message:\n `Budgets and bids in these rows are in micros, millionths of the account currency: ${example} 20000000 is 20. ` +\n \"Write flags (--amount, --cpc-bid, --max-cpc, --target-cpa, --target-cpc) take whole currency: --amount 20, never the micros.\",\n },\n ];\n}\n"],"mappings":"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","names":["literal","rejection","whereClause","whereClause"]}
@@ -0,0 +1,224 @@
1
+ import {
2
+ nodeParamsPreview
3
+ } from "./chunk-Z3KRNKEA.js";
4
+ import {
5
+ creativeSlugFromCanvasPath
6
+ } from "./chunk-M7BSXJNL.js";
7
+ import {
8
+ parseDefinitionDelivery,
9
+ parseDefinitionSeriesPlace,
10
+ parseDefinitionSourceFields,
11
+ parseDefinitionStrategyFields,
12
+ prepareCanvas
13
+ } from "./chunk-MVDMMSXS.js";
14
+ import {
15
+ BackendClient
16
+ } from "./chunk-BYV4VS5E.js";
17
+ import {
18
+ nodeDependencies
19
+ } from "./chunk-LRIP2J5S.js";
20
+ import {
21
+ requireCredentialsFromEnv
22
+ } from "./chunk-EFZVDV7F.js";
23
+
24
+ // src/commands/canvas/sync-definition.ts
25
+ import { readdir, readFile, stat } from "fs/promises";
26
+ import path from "path";
27
+ import { parseDocument } from "yaml";
28
+ import { defineCommand } from "citty";
29
+
30
+ // src/commands/canvas/definition-graph.ts
31
+ var MAX_NODES = 300;
32
+ var PREVIEWABLE_INGEST_EXPECTS = /* @__PURE__ */ new Set(["image"]);
33
+ function nodeInputPreviewUrl(type, params) {
34
+ if (type !== "ingest" || !params || typeof params !== "object") return void 0;
35
+ const p = params;
36
+ if (p.source !== "url" || typeof p.url !== "string") return void 0;
37
+ if (!/^https?:\/\//i.test(p.url)) return void 0;
38
+ if (typeof p.expect === "string" && !PREVIEWABLE_INGEST_EXPECTS.has(p.expect)) return void 0;
39
+ return p.url;
40
+ }
41
+ function canvasToDefinitionGraph(canvas) {
42
+ const rawNodes = canvas?.nodes;
43
+ if (!Array.isArray(rawNodes)) return null;
44
+ const parsed = [];
45
+ for (const raw of rawNodes) {
46
+ const id = raw?.id;
47
+ const type = raw?.type;
48
+ if (typeof id !== "string" || typeof type !== "string") continue;
49
+ parsed.push({ id, type, inputs: raw.inputs, params: raw.params });
50
+ if (parsed.length >= MAX_NODES) break;
51
+ }
52
+ if (parsed.length === 0) return null;
53
+ const ids = new Set(parsed.map((n) => n.id));
54
+ const nodes = parsed.map(({ id, type, inputs, params }) => {
55
+ const deps = nodeDependencies({ id, inputs, params }, ids);
56
+ deps.delete(id);
57
+ const depList = [...deps];
58
+ const paramsPreview = nodeParamsPreview(params, depList);
59
+ const base = { id, type };
60
+ if (depList.length > 0) base.deps = depList;
61
+ if (paramsPreview) base.paramsPreview = paramsPreview;
62
+ const inputPreviewUrl = nodeInputPreviewUrl(type, params);
63
+ if (inputPreviewUrl) base.inputPreviewUrl = inputPreviewUrl;
64
+ return base;
65
+ });
66
+ const rawOutput = canvas?.output;
67
+ const outNode = rawOutput?.node;
68
+ const outSlot = rawOutput?.output;
69
+ const output = typeof outNode === "string" && typeof outSlot === "string" ? { node: outNode, output: outSlot } : void 0;
70
+ return { nodes, output };
71
+ }
72
+
73
+ // src/commands/canvas/sync-definition.ts
74
+ function buildDefinitionSyncPayload(input, graph, chatId) {
75
+ const { canvas: _canvas, ...fields } = input;
76
+ return Object.fromEntries([
77
+ ...Object.entries(fields).filter(([, v]) => v !== void 0),
78
+ ["graph", graph],
79
+ ["chatId", chatId]
80
+ ]);
81
+ }
82
+ async function readDefinitionSourceFields(canvasPath) {
83
+ try {
84
+ return parseDefinitionSourceFields(await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8"));
85
+ } catch {
86
+ return {};
87
+ }
88
+ }
89
+ async function readDefinitionPlatforms(canvasPath) {
90
+ const raw = await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8").catch(() => null);
91
+ const delivery = raw === null ? null : parseDefinitionDelivery(raw);
92
+ return delivery ? { platforms: delivery.platforms ?? null } : {};
93
+ }
94
+ async function readDefinitionBody(canvasPath) {
95
+ try {
96
+ return { definition: await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8") };
97
+ } catch {
98
+ return {};
99
+ }
100
+ }
101
+ async function readDefinitionTitle(canvasPath) {
102
+ try {
103
+ const raw = await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8");
104
+ const match = raw.match(/^---\r?\n([\s\S]*?\r?\n)?---/);
105
+ const doc = match ? parseDocument(match[1] ?? "") : null;
106
+ const title = doc && doc.errors.length === 0 ? doc.get("title") : void 0;
107
+ return typeof title === "string" && title.trim() ? title.trim() : void 0;
108
+ } catch {
109
+ return void 0;
110
+ }
111
+ }
112
+ async function readDefinitionStrategyFields(canvasPath) {
113
+ try {
114
+ return parseDefinitionStrategyFields(await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8"));
115
+ } catch {
116
+ return {};
117
+ }
118
+ }
119
+ async function readDefinitionSeriesPlace(canvasPath) {
120
+ try {
121
+ return parseDefinitionSeriesPlace(await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8")) ?? {};
122
+ } catch {
123
+ return {};
124
+ }
125
+ }
126
+ async function syncCreativeDefinitionBestEffort(input) {
127
+ const chatId = process.env.BAKER_CHAT_ID;
128
+ if (!chatId) return;
129
+ const graph = canvasToDefinitionGraph(input.canvas);
130
+ if (!graph || graph.nodes.length === 0) return;
131
+ try {
132
+ const creds = requireCredentialsFromEnv();
133
+ const client = new BackendClient({ baseUrl: creds.url, apiKey: creds.apiKey });
134
+ await client.syncCreativeDefinition(buildDefinitionSyncPayload(input, graph, chatId));
135
+ process.stdout.write(`[definition] synced workflow graph (${graph.nodes.length} nodes) \u2014 view it in the dashboard
136
+ `);
137
+ } catch (e) {
138
+ const msg = e instanceof Error ? e.message : String(e);
139
+ process.stderr.write(`[warn] workflow graph not synced (${msg})
140
+ `);
141
+ }
142
+ }
143
+ async function resolveCanvasPath(inputPath) {
144
+ const resolved = path.resolve(inputPath);
145
+ let dir = resolved;
146
+ try {
147
+ if ((await stat(resolved)).isFile()) {
148
+ if (resolved.endsWith(".canvas.json")) return resolved;
149
+ dir = path.dirname(resolved);
150
+ }
151
+ } catch {
152
+ dir = resolved.endsWith(".canvas.json") ? path.dirname(resolved) : resolved;
153
+ }
154
+ let entries;
155
+ try {
156
+ entries = await readdir(dir);
157
+ } catch {
158
+ return null;
159
+ }
160
+ const canvases = entries.filter((name) => name.endsWith(".canvas.json"));
161
+ const slug = creativeSlugFromCanvasPath(`${dir}/x/`);
162
+ const chosen = (slug ? canvases.find((name) => name === `${slug}.canvas.json`) : void 0) ?? canvases[0];
163
+ return chosen ? path.join(dir, chosen) : null;
164
+ }
165
+ var syncDefinitionCommand = defineCommand({
166
+ meta: {
167
+ name: "sync-definition",
168
+ description: "Push a creative's current node-graph + input thumbnails to the dashboard without rendering. The graph has the creative's blueprint applied (prompt.json and scenes/*.json edits), exactly as `run` would render it, without changing any file. Runs automatically when you edit a creative's canvas.json or prompt.json."
169
+ },
170
+ args: {
171
+ file: {
172
+ type: "positional",
173
+ required: true,
174
+ description: "A path under src/creatives/<slug>/ (the .canvas.json, its prompt.json, or the folder)"
175
+ },
176
+ title: {
177
+ type: "boolean",
178
+ description: "Also record the title its _definition.md gives. Only for a creative just made from another (a series ad, a translation), never on an edit re-sync."
179
+ }
180
+ },
181
+ async run({ args }) {
182
+ const canvasPath = await resolveCanvasPath(String(args.file));
183
+ if (!canvasPath) {
184
+ return;
185
+ }
186
+ const slug = creativeSlugFromCanvasPath(canvasPath);
187
+ if (!slug) return;
188
+ let canvas;
189
+ let sourceSha;
190
+ try {
191
+ const prepared = await prepareCanvas(canvasPath, { write: false });
192
+ canvas = prepared.fileGraph;
193
+ sourceSha = prepared.sourceSha;
194
+ } catch {
195
+ return;
196
+ }
197
+ const title = args.title ? await readDefinitionTitle(canvasPath) : void 0;
198
+ await syncCreativeDefinitionBestEffort({
199
+ slug,
200
+ canvas,
201
+ sourceSha,
202
+ ...title ? { title } : {},
203
+ ...await readDefinitionSourceFields(canvasPath),
204
+ ...await readDefinitionStrategyFields(canvasPath),
205
+ ...await readDefinitionSeriesPlace(canvasPath),
206
+ ...await readDefinitionPlatforms(canvasPath),
207
+ ...await readDefinitionBody(canvasPath)
208
+ });
209
+ }
210
+ });
211
+
212
+ export {
213
+ buildDefinitionSyncPayload,
214
+ readDefinitionSourceFields,
215
+ readDefinitionPlatforms,
216
+ readDefinitionBody,
217
+ readDefinitionTitle,
218
+ readDefinitionStrategyFields,
219
+ readDefinitionSeriesPlace,
220
+ syncCreativeDefinitionBestEffort,
221
+ resolveCanvasPath,
222
+ syncDefinitionCommand
223
+ };
224
+ //# sourceMappingURL=chunk-QY6GNZFH.js.map
@@ -0,0 +1,106 @@
1
+ import {
2
+ cacheGet,
3
+ cacheSet,
4
+ handleConnectionError,
5
+ needsConnectionFix,
6
+ writeAdsJson
7
+ } from "./chunk-VJUVTMHY.js";
8
+ import {
9
+ ApiError,
10
+ apiGet
11
+ } from "./chunk-JCFZ7ECN.js";
12
+ import {
13
+ getEnv
14
+ } from "./chunk-OMLZ35HJ.js";
15
+
16
+ // src/commands/ads/x/output.ts
17
+ var ACCOUNTS_CACHE_TTL_MS = 60 * 60 * 1e3;
18
+ var NO_X_ACCOUNTS_EXPLANATION = "The X Ads connection is live, but X lists no ads accounts for it. That is usually an account X has not activated for advertising yet \u2014 most often one with no billing set up. It does not mean the connection failed, and reconnecting will not change it. An account X omits here still works everywhere else: take its id from the ads.x.com URL (ads.x.com/manager/<id>/\u2026) and pass --account-id <id>, or set BAKER_X_ADS_ACCOUNT_ID.";
19
+ async function fetchXAccounts(useCache) {
20
+ if (useCache) {
21
+ const cached = cacheGet("x-accounts", "list");
22
+ if (cached) return cached.data;
23
+ }
24
+ const params = !useCache ? { "skip-cache": "true" } : void 0;
25
+ const data = await apiGet("/api/ads/x/accounts", params);
26
+ if (useCache) {
27
+ cacheSet("x-accounts", "list", data, ACCOUNTS_CACHE_TTL_MS);
28
+ }
29
+ return data;
30
+ }
31
+ async function resolveXAccountId(args) {
32
+ const fromArgs = args["account-id"];
33
+ const accountId = fromArgs || getEnv().BAKER_X_ADS_ACCOUNT_ID;
34
+ if (accountId) {
35
+ if (!/^[a-z0-9]+$/.test(accountId)) {
36
+ writeAdsJson({
37
+ ok: false,
38
+ error: {
39
+ code: "INVALID_ACCOUNT_ID",
40
+ message: "X Ads account ID must be a base36 string (lowercase letters and digits). Pass --account-id or set BAKER_X_ADS_ACCOUNT_ID."
41
+ }
42
+ });
43
+ process.exit(1);
44
+ }
45
+ return accountId;
46
+ }
47
+ const useCache = !args["no-cache"];
48
+ try {
49
+ const accounts = await fetchXAccounts(useCache);
50
+ const [single] = accounts;
51
+ if (accounts.length === 1 && single) {
52
+ process.stderr.write(`Using account "${single.name}" (${single.id})
53
+ `);
54
+ return single.id;
55
+ }
56
+ if (accounts.length === 0) {
57
+ writeAdsJson({
58
+ ok: false,
59
+ error: {
60
+ code: "INVALID_ACCOUNT_ID",
61
+ message: NO_X_ACCOUNTS_EXPLANATION,
62
+ fix: { action: "reject", explanation: NO_X_ACCOUNTS_EXPLANATION },
63
+ retryable: false
64
+ }
65
+ });
66
+ process.exit(1);
67
+ }
68
+ const list = accounts.map((a) => ` ${a.id} ${a.name}`).join("\n");
69
+ writeAdsJson({
70
+ ok: false,
71
+ error: {
72
+ code: "MULTIPLE_ACCOUNTS",
73
+ message: `Multiple X Ads accounts found. Pass --account-id or set BAKER_X_ADS_ACCOUNT_ID:
74
+ ${list}`
75
+ }
76
+ });
77
+ process.exit(1);
78
+ } catch (err) {
79
+ if (err instanceof ApiError && needsConnectionFix(err.code, err.message)) {
80
+ handleConnectionError("x_ads", err.message);
81
+ }
82
+ writeAdsJson({
83
+ ok: false,
84
+ error: {
85
+ code: "INVALID_ACCOUNT_ID",
86
+ message: "Could not auto-detect account. Pass --account-id or set BAKER_X_ADS_ACCOUNT_ID."
87
+ }
88
+ });
89
+ process.exit(1);
90
+ }
91
+ }
92
+ async function resolveXAccountTimezone(accountId, args) {
93
+ try {
94
+ const accounts = await fetchXAccounts(!args["no-cache"]);
95
+ return accounts.find((a) => a.id === accountId)?.timezone || "UTC";
96
+ } catch {
97
+ return "UTC";
98
+ }
99
+ }
100
+
101
+ export {
102
+ NO_X_ACCOUNTS_EXPLANATION,
103
+ resolveXAccountId,
104
+ resolveXAccountTimezone
105
+ };
106
+ //# sourceMappingURL=chunk-RM5JT6XF.js.map