@koda-sl/baker-cli 0.447.0-dev.f5788a631 → 0.447.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 (870) hide show
  1. package/README.md +14 -10
  2. package/dist/account-2ZMZFPIU.js +79 -0
  3. package/dist/account-F6MHQ64I.js +80 -0
  4. package/dist/account-writes-ISE4U2FQ.js +66 -0
  5. package/dist/accounts-RHGN5WMU.js +611 -0
  6. package/dist/accounts-VINHZRWA.js +77 -0
  7. package/dist/actions-5F4ZP6M4.js +55 -0
  8. package/dist/ad-group-writes-UU5NNKSO.js +170 -0
  9. package/dist/ad-groups-CGFXZNIA.js +68 -0
  10. package/dist/ad-writes-NALDYWOR.js +174 -0
  11. package/dist/add-KBPMSK2P.js +104 -0
  12. package/dist/add-OGH4DZZ5.js +280 -0
  13. package/dist/ads-56OWZBXZ.js +40 -0
  14. package/dist/ads-H7GH7A26.js +113 -0
  15. package/dist/ads-PV7GZXPR.js +77 -0
  16. package/dist/adsets-H7QT42U6.js +176 -0
  17. package/dist/advertisers-PM4WPG4N.js +120 -0
  18. package/dist/advertisers-PM4WPG4N.js.map +1 -0
  19. package/dist/analytics-5FALU2GL.js +433 -0
  20. package/dist/analytics-JVZKN735.js +1958 -0
  21. package/dist/animate-FWWHSYPL.js +480 -0
  22. package/dist/assign-KLYZ6USE.js +77 -0
  23. package/dist/audience-size-JHB42DB4.js +94 -0
  24. package/dist/audiences-JACGRBNN.js +78 -0
  25. package/dist/audiences-VEKGLWBG.js +268 -0
  26. package/dist/audit-5XH7WZIM.js +151 -0
  27. package/dist/autocomplete-7F3PZLEY.js +111 -0
  28. package/dist/autocomplete-7F3PZLEY.js.map +1 -0
  29. package/dist/avatars-N4SRNQI7.js +38 -0
  30. package/dist/bid-pricing-VYLVGU26.js +99 -0
  31. package/dist/brand-ASBS2HZM.js +22 -0
  32. package/dist/brief-JSZKDPGU.js +477 -0
  33. package/dist/brief-JSZKDPGU.js.map +1 -0
  34. package/dist/campaign-groups-ATE2DE4V.js +95 -0
  35. package/dist/campaign-writes-ETT57KLQ.js +165 -0
  36. package/dist/campaign-writes-SX52CJYW.js +170 -0
  37. package/dist/campaigns-FGBAS6AZ.js +107 -0
  38. package/dist/campaigns-J6VZBIV6.js +109 -0
  39. package/dist/campaigns-WBEG5QA4.js +110 -0
  40. package/dist/campaigns-X3DPCCSN.js +76 -0
  41. package/dist/canvas-K7IN7HLO.js +46 -0
  42. package/dist/capabilities-RDAERPYY.js +144 -0
  43. package/dist/catalog-MENVHL5U.js +65 -0
  44. package/dist/catalog-MENVHL5U.js.map +1 -0
  45. package/dist/catalogs-G3YEVG6S.js +128 -0
  46. package/dist/changes-TP7ZZHB3.js +135 -0
  47. package/dist/chatgpt-QNUN63YS.js +47 -0
  48. package/dist/chats-YIAQGQ3X.js +262 -0
  49. package/dist/chunk-2GK33EJV.js +382 -0
  50. package/dist/chunk-35XWJEWH.js +274 -0
  51. package/dist/chunk-3CWL2LY4.js +206 -0
  52. package/dist/chunk-3CWL2LY4.js.map +1 -0
  53. package/dist/chunk-4NBVGARW.js +1079 -0
  54. package/dist/chunk-5R5ADJ47.js +2880 -0
  55. package/dist/chunk-5R5ADJ47.js.map +1 -0
  56. package/dist/chunk-65RIB7A6.js +592 -0
  57. package/dist/chunk-6DB2B3GF.js +175 -0
  58. package/dist/chunk-7SDFKGQ4.js +363 -0
  59. package/dist/chunk-ACANMASG.js +19 -0
  60. package/dist/chunk-ALTBBAYU.js +96 -0
  61. package/dist/chunk-ANCSKUWI.js +433 -0
  62. package/dist/chunk-AWMFUGVX.js +160 -0
  63. package/dist/chunk-AWMFUGVX.js.map +1 -0
  64. package/dist/chunk-BA7FDXQC.js +197 -0
  65. package/dist/chunk-BNCW67EM.js +534 -0
  66. package/dist/chunk-BSC33FLJ.js +217 -0
  67. package/dist/chunk-CHSNHVYF.js +3182 -0
  68. package/dist/chunk-CHSNHVYF.js.map +1 -0
  69. package/dist/chunk-DKGTQSLR.js +310 -0
  70. package/dist/chunk-DR34ZTWD.js +207 -0
  71. package/dist/chunk-E4MDJBLO.js +163 -0
  72. package/dist/chunk-EH4C4CZK.js +455 -0
  73. package/dist/chunk-FXED3VZK.js +174 -0
  74. package/dist/chunk-G7UTTEBS.js +337 -0
  75. package/dist/chunk-GATKK4RJ.js +440 -0
  76. package/dist/chunk-GATKK4RJ.js.map +1 -0
  77. package/dist/chunk-GIJT3A5U.js +166 -0
  78. package/dist/chunk-GX6VAHY7.js +830 -0
  79. package/dist/chunk-HIPDMQZ6.js +136 -0
  80. package/dist/chunk-HQSCJYZO.js +26 -0
  81. package/dist/chunk-HZ5DR5MX.js +51 -0
  82. package/dist/chunk-I4NEHDSD.js +813 -0
  83. package/dist/chunk-I4NEHDSD.js.map +1 -0
  84. package/dist/chunk-IM52NHGL.js +390 -0
  85. package/dist/chunk-JF47LEPU.js +5163 -0
  86. package/dist/chunk-JF47LEPU.js.map +1 -0
  87. package/dist/chunk-K3PN7TN5.js +84 -0
  88. package/dist/chunk-KBP7WJQB.js +446 -0
  89. package/dist/chunk-KBP7WJQB.js.map +1 -0
  90. package/dist/chunk-KLBTXETO.js +23992 -0
  91. package/dist/chunk-KLBTXETO.js.map +1 -0
  92. package/dist/chunk-KNWHUMVZ.js +4381 -0
  93. package/dist/chunk-KNWHUMVZ.js.map +1 -0
  94. package/dist/chunk-KQTYTCKQ.js +98 -0
  95. package/dist/chunk-LIQ4SQ2T.js +150 -0
  96. package/dist/chunk-LW4VSTL5.js +304 -0
  97. package/dist/chunk-LW4VSTL5.js.map +1 -0
  98. package/dist/chunk-MADAAZZV.js +169 -0
  99. package/dist/chunk-MLU6STIN.js +66 -0
  100. package/dist/chunk-NDXBU22S.js +6145 -0
  101. package/dist/chunk-NDXBU22S.js.map +1 -0
  102. package/dist/chunk-NE4F3FHN.js +1854 -0
  103. package/dist/chunk-NE4F3FHN.js.map +1 -0
  104. package/dist/chunk-OTFHEHIU.js +1706 -0
  105. package/dist/chunk-OTFHEHIU.js.map +1 -0
  106. package/dist/chunk-PDTB5EX6.js +57 -0
  107. package/dist/chunk-SB3GZFCV.js +622 -0
  108. package/dist/chunk-T3BDNJIX.js +494 -0
  109. package/dist/chunk-TEINLN64.js +649 -0
  110. package/dist/chunk-TEINLN64.js.map +1 -0
  111. package/dist/chunk-TIOQ7ZFQ.js +496 -0
  112. package/dist/chunk-U3HAMW5W.js +133 -0
  113. package/dist/chunk-U6SYRIOB.js +486 -0
  114. package/dist/chunk-UC6BWM5J.js +159 -0
  115. package/dist/chunk-ULJ5RFOV.js +76 -0
  116. package/dist/chunk-VAISMQQB.js +346 -0
  117. package/dist/chunk-VB6WJJR3.js +1830 -0
  118. package/dist/chunk-VB6WJJR3.js.map +1 -0
  119. package/dist/chunk-VDHQJ6HD.js +23 -0
  120. package/dist/chunk-VMDAXFRI.js +111 -0
  121. package/dist/chunk-WNFIJAUO.js +98 -0
  122. package/dist/chunk-WNFIJAUO.js.map +1 -0
  123. package/dist/chunk-XCM6XWOB.js +417 -0
  124. package/dist/chunk-XMD4SHFI.js +60 -0
  125. package/dist/chunk-Y6QAJNKP.js +1411 -0
  126. package/dist/chunk-YBP7O5P4.js +103 -0
  127. package/dist/chunk-YC2TQ3VC.js +297 -0
  128. package/dist/chunk-YPZYOJP6.js +6664 -0
  129. package/dist/chunk-YPZYOJP6.js.map +1 -0
  130. package/dist/chunk-ZPU3WDVK.js +92 -0
  131. package/dist/claim-V4F5GZJK.js +197 -0
  132. package/dist/cli.js +29 -29
  133. package/dist/companies-NJGJ7XNN.js +195 -0
  134. package/dist/complete-MGNF5OAK.js +81 -0
  135. package/dist/connect-PJOTRTT4.js +36 -0
  136. package/dist/conversation-4DM26FRD.js +93 -0
  137. package/dist/conversion-report-N4HANYOB.js +125 -0
  138. package/dist/conversion-upload-command-TZTHU2CD.js +438 -0
  139. package/dist/conversion-writes-LW4HQKK5.js +120 -0
  140. package/dist/conversions-JGECVZSY.js +135 -0
  141. package/dist/conversions-TS723AZV.js +76 -0
  142. package/dist/countries-ESAKTQAE.js +82 -0
  143. package/dist/create-DSGQFBI7.js +207 -0
  144. package/dist/create-I2KVDTCQ.js +59 -0
  145. package/dist/create-SBQWVLXG.js +130 -0
  146. package/dist/create-WOHPIGBK.js +235 -0
  147. package/dist/creatives-4JGVZQGC.js +182 -0
  148. package/dist/creatives-DWO5KEQC.js +51 -0
  149. package/dist/creatives-PSWCNY7U.js +87 -0
  150. package/dist/credentials-UULYCN2L.js +1055 -0
  151. package/dist/credentials-UULYCN2L.js.map +1 -0
  152. package/dist/critique-NGMZK5LX.js +213 -0
  153. package/dist/critique-NGMZK5LX.js.map +1 -0
  154. package/dist/critique-TIZJ5GFM.js +1449 -0
  155. package/dist/crm-2WAR565U.js +224 -0
  156. package/dist/crm-VDXUO2YU.js +318 -0
  157. package/dist/currency-XCGKQ7FE.js +88 -0
  158. package/dist/custom-conversions-6P555U2K.js +125 -0
  159. package/dist/customers-ATENMXDO.js +56 -0
  160. package/dist/delete-AVMZYNVT.js +54 -0
  161. package/dist/delete-H744GNS4.js +63 -0
  162. package/dist/delete-OEYPFATY.js +66 -0
  163. package/dist/demographics-M5LJF3RZ.js +138 -0
  164. package/dist/discard-72I6SM7G.js +66 -0
  165. package/dist/discover-BJPZNXUQ.js +172 -0
  166. package/dist/domain-R4EIZD2W.js +98 -0
  167. package/dist/draft-34C3F5U4.js +217 -0
  168. package/dist/draft-BBFJNZ5X.js +328 -0
  169. package/dist/draft-BV2QRPZ4.js +107 -0
  170. package/dist/draft-THPZFASM.js +281 -0
  171. package/dist/draft-YYYRWF7M.js +306 -0
  172. package/dist/engine/index.d.ts +0 -12
  173. package/dist/engine/index.js +6 -7
  174. package/dist/facets-F2H52MS4.js +114 -0
  175. package/dist/feedback-IQKKT4MC.js +66 -0
  176. package/dist/feedback-IQKKT4MC.js.map +1 -0
  177. package/dist/feedback-record-UZV4Y7UD.js +175 -0
  178. package/dist/feedback-record-UZV4Y7UD.js.map +1 -0
  179. package/dist/fetch-ZUAZPLAE.js +176 -0
  180. package/dist/fetch-ZUAZPLAE.js.map +1 -0
  181. package/dist/fit-2CA4JH7N.js +45 -0
  182. package/dist/flows-CWXCXEUD.js +244 -0
  183. package/dist/follow-FN7LV3WV.js +82 -0
  184. package/dist/follow-competitors-MKXFHLXB.js +131 -0
  185. package/dist/fonts-F2XUCIIW.js +34 -0
  186. package/dist/forecast-IDKJYM2B.js +104 -0
  187. package/dist/funnel-RLGQGYKO.js +837 -0
  188. package/dist/generate-MMBYB44G.js +262 -0
  189. package/dist/get-C6UQ22HH.js +54 -0
  190. package/dist/get-EEUR6SAW.js +78 -0
  191. package/dist/google-35GDU3G3.js +1872 -0
  192. package/dist/google-35GDU3G3.js.map +1 -0
  193. package/dist/google-ads-Q37I2D5P.js +195 -0
  194. package/dist/google-ads-Q37I2D5P.js.map +1 -0
  195. package/dist/history-4II5QA4B.js +133 -0
  196. package/dist/history-DBIEYQHY.js +67 -0
  197. package/dist/hubspot-TTITJFBO.js +779 -0
  198. package/dist/ideas-V4Q6JDKV.js +32 -0
  199. package/dist/images-SP5REF6E.js +90 -0
  200. package/dist/ingest-574GIFAR.js +107 -0
  201. package/dist/ingest-IC4T76W6.js +23 -0
  202. package/dist/insights-ZIU6FJMS.js +122 -0
  203. package/dist/inspect-ATHYY6A2.js +189 -0
  204. package/dist/inspiration-P265QJ2H.js +53 -0
  205. package/dist/intent-E3UIVZBN.js +95 -0
  206. package/dist/keyword-gap-BG6M665A.js +130 -0
  207. package/dist/keyword-metrics-J4UPUDN7.js +197 -0
  208. package/dist/keywords-for-site-MWADFEO2.js +128 -0
  209. package/dist/keywords-for-site-MWADFEO2.js.map +1 -0
  210. package/dist/landing-R6DN7XLK.js +28 -0
  211. package/dist/languages-HORKPDNH.js +40 -0
  212. package/dist/languages-JSGWCC7Z.js +55 -0
  213. package/dist/leads-7EVHMNUF.js +293 -0
  214. package/dist/leads-JM6HUERX.js +90 -0
  215. package/dist/learn-LGS2F5TR.js +203 -0
  216. package/dist/learn-LGS2F5TR.js.map +1 -0
  217. package/dist/lighthouse-6ZC45E53.js +75 -0
  218. package/dist/line-item-writes-KUYEXSIH.js +208 -0
  219. package/dist/line-items-GIWLP3FL.js +103 -0
  220. package/dist/link-PVM7XJQI.js +64 -0
  221. package/dist/linkedin-WX54EAX6.js +1008 -0
  222. package/dist/list-4ZKQZBCL.js +151 -0
  223. package/dist/list-MCEFXC6L.js +63 -0
  224. package/dist/list-WR7QYTON.js +303 -0
  225. package/dist/locations-74TPQWAT.js +67 -0
  226. package/dist/locations-J4G5RNPH.js +40 -0
  227. package/dist/log-U6IWZGOF.js +92 -0
  228. package/dist/make-RXFHEGUI.js +593 -0
  229. package/dist/make-RXFHEGUI.js.map +1 -0
  230. package/dist/map-TWL7T4KP.js +404 -0
  231. package/dist/mcp-HVAVJGGS.js +476 -0
  232. package/dist/media-M7E6V2XU.js +15 -0
  233. package/dist/media-sources-JWGO23BZ.js +32 -0
  234. package/dist/members-5FAW4YE7.js +44 -0
  235. package/dist/meta-EZ4SY25M.js +69 -0
  236. package/dist/metrics-SQDJ5NQO.js +152 -0
  237. package/dist/models-7U3GRYHF.js +155 -0
  238. package/dist/normalize-GW4GZNVY.js +138 -0
  239. package/dist/options-NSUCENLU.js +121 -0
  240. package/dist/performance-FGCDWHMC.js +24 -0
  241. package/dist/pixels-45A55MOP.js +60 -0
  242. package/dist/promoted-tweet-writes-BPWTDESL.js +180 -0
  243. package/dist/promoted-tweets-OS3NHYVE.js +119 -0
  244. package/dist/publish-SXZEWBVJ.js +322 -0
  245. package/dist/query-IEZRY6HV.js +1341 -0
  246. package/dist/reddit-TF6K37SB.js +26 -0
  247. package/dist/refresh-APVDWXRZ.js +94 -0
  248. package/dist/release-32SEJU4L.js +60 -0
  249. package/dist/relevant-pages-OWMNUCP7.js +99 -0
  250. package/dist/remove-U64GTHLQ.js +50 -0
  251. package/dist/reopen-5VS233SF.js +63 -0
  252. package/dist/rerun-7Z45QOOO.js +85 -0
  253. package/dist/rerun-7Z45QOOO.js.map +1 -0
  254. package/dist/research-O7CJV5IS.js +62 -0
  255. package/dist/research-O7CJV5IS.js.map +1 -0
  256. package/dist/research-QYSQ6LW4.js +262 -0
  257. package/dist/reset-22FC7BXQ.js +54 -0
  258. package/dist/reset-47B5VPT4.js +54 -0
  259. package/dist/resolve-7KQGVTQT.js +121 -0
  260. package/dist/retry-J5UVLS72.js +62 -0
  261. package/dist/retry-UJ5UF4BM.js +60 -0
  262. package/dist/run-SI4FA32F.js +65 -0
  263. package/dist/run-TFLFBQU2.js +60 -0
  264. package/dist/scaffold-ad-SEXNE2K6.js +1549 -0
  265. package/dist/scaffold-ad-SEXNE2K6.js.map +1 -0
  266. package/dist/scaffold-static-ad-VBOL6CLN.js +966 -0
  267. package/dist/scaffold-static-ad-VBOL6CLN.js.map +1 -0
  268. package/dist/scaffold-video-Z37MIBDI.js +873 -0
  269. package/dist/scaffold-video-Z37MIBDI.js.map +1 -0
  270. package/dist/schedule-52ZM4KRQ.js +61 -0
  271. package/dist/scheduled-agents-PCWCQAKP.js +49 -0
  272. package/dist/schema-FY6ORDXZ.js +129 -0
  273. package/dist/search-NS7XNRZC.js +174 -0
  274. package/dist/search-UO5KJTYS.js +26 -0
  275. package/dist/select-4XCYVV2G.js +94 -0
  276. package/dist/select-4XCYVV2G.js.map +1 -0
  277. package/dist/set-prompt-TRJBYA3D.js +186 -0
  278. package/dist/set-prompt-TRJBYA3D.js.map +1 -0
  279. package/dist/setup-links-V3URI7DL.js +141 -0
  280. package/dist/site-WIQ7SSU3.js +177 -0
  281. package/dist/sources-DWJXOLEH.js +421 -0
  282. package/dist/sources-L453U5MT.js +30 -0
  283. package/dist/stale-6OVG6VME.js +63 -0
  284. package/dist/stale-6OVG6VME.js.map +1 -0
  285. package/dist/status-WXWU54WR.js +62 -0
  286. package/dist/studio-C5K3YX3P.js +49 -0
  287. package/dist/sync-CDZUTGV3.js +54 -0
  288. package/dist/sync-definition-BAJQUBE3.js +53 -0
  289. package/dist/tag-manager-DYZUOIAS.js +43 -0
  290. package/dist/tags-6RY23XOG.js +20 -0
  291. package/dist/tags-BHFQWNPL.js +224 -0
  292. package/dist/tags-SG3NVC3J.js +26 -0
  293. package/dist/tags-VN5HTL35.js +20 -0
  294. package/dist/tags-WR6PDIDR.js +20 -0
  295. package/dist/targeting-criteria-5EXP2NXF.js +113 -0
  296. package/dist/targets-WUVEJPSD.js +102 -0
  297. package/dist/templates-LOJQX2NG.js +178 -0
  298. package/dist/testimonials-6M5DXORT.js +32 -0
  299. package/dist/top-companies-E2OMMPSV.js +108 -0
  300. package/dist/translate-AW4CUKDA.js +598 -0
  301. package/dist/translate-AW4CUKDA.js.map +1 -0
  302. package/dist/triggers-MRXIDCSN.js +141 -0
  303. package/dist/unlink-HNL747YM.js +67 -0
  304. package/dist/unstage-OL2JDCLK.js +84 -0
  305. package/dist/update-4KGIT4BF.js +142 -0
  306. package/dist/update-JPBUF7M2.js +98 -0
  307. package/dist/update-RTTC3SAK.js +155 -0
  308. package/dist/update-YNNRX5B2.js +63 -0
  309. package/dist/upload-UIXPCSXJ.js +126 -0
  310. package/dist/url-options-GGXAL3J4.js +127 -0
  311. package/dist/url-params-K47CE7Y5.js +98 -0
  312. package/dist/validate-TD2BY4VE.js +89 -0
  313. package/dist/validate-TD2BY4VE.js.map +1 -0
  314. package/dist/videos-BP3BKNTY.js +39 -0
  315. package/dist/viewer-check-HFRUJ4ZU.js +69 -0
  316. package/dist/web-RPSGFN4U.js +140 -0
  317. package/dist/web-RPSGFN4U.js.map +1 -0
  318. package/dist/winning-ads-WUENRDVJ.js +62 -0
  319. package/dist/write-commands-4WARNR2T.js +1015 -0
  320. package/dist/write-commands-TAYGTJEZ.js +737 -0
  321. package/dist/x-VZCELH3P.js +47 -0
  322. package/package.json +1 -1
  323. package/dist/account-4H7QVBRK.js +0 -80
  324. package/dist/account-PCEZQUK7.js +0 -79
  325. package/dist/account-writes-AK42HGRM.js +0 -66
  326. package/dist/accounts-5AXLYU7P.js +0 -77
  327. package/dist/accounts-OSXDZZLY.js +0 -611
  328. package/dist/actions-HM4VVTGW.js +0 -55
  329. package/dist/ad-group-writes-QQS4223F.js +0 -170
  330. package/dist/ad-groups-WGPDPUI2.js +0 -68
  331. package/dist/ad-writes-XE2IE4DS.js +0 -174
  332. package/dist/add-4J2EF54O.js +0 -104
  333. package/dist/add-VZAY57M4.js +0 -280
  334. package/dist/ads-6UEDYT3O.js +0 -113
  335. package/dist/ads-BCOSQALY.js +0 -77
  336. package/dist/ads-NUME2UXH.js +0 -40
  337. package/dist/adsets-Q5DWGANV.js +0 -176
  338. package/dist/advertisers-WSNHNCBQ.js +0 -116
  339. package/dist/advertisers-WSNHNCBQ.js.map +0 -1
  340. package/dist/analytics-PHU7H5VY.js +0 -433
  341. package/dist/analytics-QTR2ZITZ.js +0 -1958
  342. package/dist/animate-3Z7HXOLE.js +0 -480
  343. package/dist/assign-IIAVNATI.js +0 -77
  344. package/dist/audience-size-2L7XMYJL.js +0 -94
  345. package/dist/audiences-AMRFZRZ7.js +0 -78
  346. package/dist/audiences-TGD5US2M.js +0 -268
  347. package/dist/audit-ZCUFJLUG.js +0 -151
  348. package/dist/autocomplete-6PYFCOMX.js +0 -107
  349. package/dist/autocomplete-6PYFCOMX.js.map +0 -1
  350. package/dist/avatars-OEK3FYKK.js +0 -38
  351. package/dist/bid-pricing-FDW3IY6G.js +0 -99
  352. package/dist/brand-OXYFSNA5.js +0 -22
  353. package/dist/brief-TBSXPEXI.js +0 -478
  354. package/dist/brief-TBSXPEXI.js.map +0 -1
  355. package/dist/campaign-groups-5GCFQT2W.js +0 -95
  356. package/dist/campaign-writes-3SJQSCUK.js +0 -165
  357. package/dist/campaign-writes-SXLZFYF6.js +0 -170
  358. package/dist/campaigns-7QDDWZ76.js +0 -107
  359. package/dist/campaigns-D6B6Z67Y.js +0 -110
  360. package/dist/campaigns-SYEOFKFV.js +0 -109
  361. package/dist/campaigns-YS3OGQXO.js +0 -76
  362. package/dist/canvas-B6DPRQGN.js +0 -46
  363. package/dist/capabilities-GVHPHH2G.js +0 -144
  364. package/dist/catalog-TNNG66MH.js +0 -66
  365. package/dist/catalog-TNNG66MH.js.map +0 -1
  366. package/dist/catalogs-BRXEDE56.js +0 -128
  367. package/dist/changes-6QBJMGJC.js +0 -135
  368. package/dist/chatgpt-7W75X3ER.js +0 -47
  369. package/dist/chats-54CWM7DL.js +0 -262
  370. package/dist/chunk-2SCPDSFN.js +0 -150
  371. package/dist/chunk-3X3446TG.js +0 -169
  372. package/dist/chunk-4SJDDGPV.js +0 -1411
  373. package/dist/chunk-4SNOWJV7.js +0 -103
  374. package/dist/chunk-5EEDEVOR.js +0 -486
  375. package/dist/chunk-5VC6IK7B.js +0 -390
  376. package/dist/chunk-654U6NU6.js +0 -534
  377. package/dist/chunk-6HJAHLLA.js +0 -6086
  378. package/dist/chunk-6HJAHLLA.js.map +0 -1
  379. package/dist/chunk-6TCDQSM7.js +0 -111
  380. package/dist/chunk-6YYEBLYI.js +0 -92
  381. package/dist/chunk-7FVWIZHM.js +0 -382
  382. package/dist/chunk-7J6EHOH6.js +0 -274
  383. package/dist/chunk-7JUUKYKG.js +0 -57
  384. package/dist/chunk-ACFWVULZ.js +0 -304
  385. package/dist/chunk-ACFWVULZ.js.map +0 -1
  386. package/dist/chunk-AO5UQQLJ.js +0 -197
  387. package/dist/chunk-CKU4WYTF.js +0 -175
  388. package/dist/chunk-CLMM6P6B.js +0 -1751
  389. package/dist/chunk-CLMM6P6B.js.map +0 -1
  390. package/dist/chunk-DE6ANJLU.js +0 -310
  391. package/dist/chunk-DZSIUEGH.js +0 -136
  392. package/dist/chunk-E5IFTZJ3.js +0 -622
  393. package/dist/chunk-EAHP7L2R.js +0 -363
  394. package/dist/chunk-EPMN4BK7.js +0 -217
  395. package/dist/chunk-EVYXTT7V.js +0 -417
  396. package/dist/chunk-F46KAIBS.js +0 -159
  397. package/dist/chunk-FGH4Z5K5.js +0 -433
  398. package/dist/chunk-FTWJFDIN.js +0 -23992
  399. package/dist/chunk-FTWJFDIN.js.map +0 -1
  400. package/dist/chunk-FYQPB2SS.js +0 -207
  401. package/dist/chunk-GTK46DE3.js +0 -346
  402. package/dist/chunk-H2QNBOPS.js +0 -819
  403. package/dist/chunk-H2QNBOPS.js.map +0 -1
  404. package/dist/chunk-HDWKLFF5.js +0 -96
  405. package/dist/chunk-HO3IUJ4K.js +0 -70
  406. package/dist/chunk-HO3IUJ4K.js.map +0 -1
  407. package/dist/chunk-HRYOZUSK.js +0 -1711
  408. package/dist/chunk-HRYOZUSK.js.map +0 -1
  409. package/dist/chunk-HYCIBVDW.js +0 -98
  410. package/dist/chunk-HYUUH4BE.js +0 -3149
  411. package/dist/chunk-HYUUH4BE.js.map +0 -1
  412. package/dist/chunk-IH4UQ2OK.js +0 -6668
  413. package/dist/chunk-IH4UQ2OK.js.map +0 -1
  414. package/dist/chunk-IKYNOT57.js +0 -131
  415. package/dist/chunk-IKYNOT57.js.map +0 -1
  416. package/dist/chunk-J5IU4OX2.js +0 -297
  417. package/dist/chunk-KMEMA7AZ.js +0 -496
  418. package/dist/chunk-KV5BCSUR.js +0 -337
  419. package/dist/chunk-KWAOTV7F.js +0 -830
  420. package/dist/chunk-L27H2R2N.js +0 -174
  421. package/dist/chunk-NK2UFFVH.js +0 -19
  422. package/dist/chunk-NSA6HRG6.js +0 -60
  423. package/dist/chunk-NTPXZU3V.js +0 -163
  424. package/dist/chunk-OAQPHP6V.js +0 -592
  425. package/dist/chunk-OBDAYP2P.js +0 -3155
  426. package/dist/chunk-OBDAYP2P.js.map +0 -1
  427. package/dist/chunk-PIWMNKWI.js +0 -164
  428. package/dist/chunk-PIWMNKWI.js.map +0 -1
  429. package/dist/chunk-RB5DB3WN.js +0 -1079
  430. package/dist/chunk-RCQJHKK5.js +0 -4374
  431. package/dist/chunk-RCQJHKK5.js.map +0 -1
  432. package/dist/chunk-SKT3SAHG.js +0 -133
  433. package/dist/chunk-T4DD5YMP.js +0 -166
  434. package/dist/chunk-TBEUMOEL.js +0 -95
  435. package/dist/chunk-TBEUMOEL.js.map +0 -1
  436. package/dist/chunk-V2X3KK52.js +0 -420
  437. package/dist/chunk-V2X3KK52.js.map +0 -1
  438. package/dist/chunk-V5WSJP5A.js +0 -51
  439. package/dist/chunk-VJZHVOA4.js +0 -509
  440. package/dist/chunk-VJZHVOA4.js.map +0 -1
  441. package/dist/chunk-WRIC2RPQ.js +0 -23
  442. package/dist/chunk-WTOYCUKH.js +0 -84
  443. package/dist/chunk-WYCVJIHD.js +0 -638
  444. package/dist/chunk-WYCVJIHD.js.map +0 -1
  445. package/dist/chunk-XDNEG2H6.js +0 -5189
  446. package/dist/chunk-XDNEG2H6.js.map +0 -1
  447. package/dist/chunk-XG3XCHN6.js +0 -26
  448. package/dist/chunk-XML7AJM3.js +0 -1854
  449. package/dist/chunk-XML7AJM3.js.map +0 -1
  450. package/dist/chunk-XV6XCFF7.js +0 -494
  451. package/dist/chunk-YUPRCOEN.js +0 -455
  452. package/dist/chunk-ZNBDKK4Y.js +0 -76
  453. package/dist/chunk-ZZQXVYUY.js +0 -66
  454. package/dist/claim-CIASHKMC.js +0 -197
  455. package/dist/companies-ECVMO24S.js +0 -195
  456. package/dist/complete-32CPBFIG.js +0 -81
  457. package/dist/connect-OJSOM6PY.js +0 -36
  458. package/dist/conversation-7FHN5ESN.js +0 -93
  459. package/dist/conversion-report-XQBJ6LG4.js +0 -125
  460. package/dist/conversion-upload-command-BBUXLFT3.js +0 -438
  461. package/dist/conversion-writes-UBCVXP2E.js +0 -120
  462. package/dist/conversions-7YJDNZ7Y.js +0 -135
  463. package/dist/conversions-D236RTUK.js +0 -76
  464. package/dist/countries-FYHM3IMJ.js +0 -82
  465. package/dist/create-2TBDXHAM.js +0 -130
  466. package/dist/create-FE5QLW7V.js +0 -207
  467. package/dist/create-OYT76OMJ.js +0 -235
  468. package/dist/create-ZGRL7YCV.js +0 -59
  469. package/dist/creatives-5MUTX4DQ.js +0 -51
  470. package/dist/creatives-IUB57I3T.js +0 -182
  471. package/dist/creatives-UEPLNCPN.js +0 -87
  472. package/dist/credentials-AETHKP5T.js +0 -1055
  473. package/dist/credentials-AETHKP5T.js.map +0 -1
  474. package/dist/critique-C53EJDPA.js +0 -214
  475. package/dist/critique-C53EJDPA.js.map +0 -1
  476. package/dist/critique-T7HJ42D4.js +0 -1449
  477. package/dist/crm-JP4UOPMN.js +0 -318
  478. package/dist/crm-KH6XX2TT.js +0 -224
  479. package/dist/currency-DJDVIR3C.js +0 -88
  480. package/dist/custom-conversions-2VLJGPRV.js +0 -125
  481. package/dist/customers-7I7UY5PS.js +0 -56
  482. package/dist/delete-6IOUDEWY.js +0 -54
  483. package/dist/delete-ODFKNHAI.js +0 -63
  484. package/dist/delete-RAETUVO2.js +0 -66
  485. package/dist/demographics-2FTDKPBD.js +0 -138
  486. package/dist/discard-ZX5TLFYH.js +0 -66
  487. package/dist/discover-M3ZKKFEL.js +0 -172
  488. package/dist/domain-TH7KIC2T.js +0 -98
  489. package/dist/draft-CRE2Y24G.js +0 -328
  490. package/dist/draft-MNFJ4G3C.js +0 -281
  491. package/dist/draft-S2FSQOJN.js +0 -217
  492. package/dist/draft-SH25PKST.js +0 -107
  493. package/dist/draft-YHUIFDDR.js +0 -306
  494. package/dist/facets-6B2U4BSM.js +0 -114
  495. package/dist/feedback-QGSAJJVC.js +0 -66
  496. package/dist/feedback-QGSAJJVC.js.map +0 -1
  497. package/dist/feedback-record-NUAJ6UBL.js +0 -176
  498. package/dist/feedback-record-NUAJ6UBL.js.map +0 -1
  499. package/dist/fetch-UTTJAOLC.js +0 -171
  500. package/dist/fetch-UTTJAOLC.js.map +0 -1
  501. package/dist/fit-FJ5CLQS4.js +0 -43
  502. package/dist/flows-OGGSWWGT.js +0 -244
  503. package/dist/follow-DUIEGDVK.js +0 -82
  504. package/dist/follow-competitors-IT5ZVJPE.js +0 -131
  505. package/dist/fonts-GCJRLEGD.js +0 -34
  506. package/dist/forecast-2AGTFMXH.js +0 -104
  507. package/dist/funnel-7U55LNJ4.js +0 -837
  508. package/dist/generate-DMQUS665.js +0 -262
  509. package/dist/get-IRJIHOQK.js +0 -78
  510. package/dist/get-N7FR6NFX.js +0 -54
  511. package/dist/google-NYRI2NDZ.js +0 -1872
  512. package/dist/google-NYRI2NDZ.js.map +0 -1
  513. package/dist/history-PSNJAUTW.js +0 -133
  514. package/dist/history-Q3QCT64S.js +0 -67
  515. package/dist/hubspot-2NHL47R2.js +0 -779
  516. package/dist/ideas-22MRXKT7.js +0 -32
  517. package/dist/images-LXFWEON7.js +0 -90
  518. package/dist/ingest-W7VEDEYD.js +0 -107
  519. package/dist/ingest-ZN3DEZHY.js +0 -23
  520. package/dist/insights-LNAXV2CG.js +0 -122
  521. package/dist/inspect-3LBIHMMP.js +0 -189
  522. package/dist/inspiration-I4MMKAWA.js +0 -53
  523. package/dist/intent-ICKFJRT2.js +0 -95
  524. package/dist/keyword-gap-NGPH32FN.js +0 -130
  525. package/dist/keyword-metrics-PZXFB4NG.js +0 -197
  526. package/dist/keywords-for-site-RH47P4GJ.js +0 -124
  527. package/dist/keywords-for-site-RH47P4GJ.js.map +0 -1
  528. package/dist/landing-D7QS42GK.js +0 -28
  529. package/dist/languages-JDYL2N5F.js +0 -40
  530. package/dist/languages-JMVNOHMG.js +0 -55
  531. package/dist/leads-ARUWPHBM.js +0 -293
  532. package/dist/leads-E22XFSX2.js +0 -90
  533. package/dist/learn-Y4KIZNRF.js +0 -204
  534. package/dist/learn-Y4KIZNRF.js.map +0 -1
  535. package/dist/lighthouse-NQBUCHTW.js +0 -75
  536. package/dist/line-item-writes-KA5PVKFO.js +0 -208
  537. package/dist/line-items-3ZFFZCNH.js +0 -103
  538. package/dist/link-AEU6BV75.js +0 -64
  539. package/dist/linkedin-WCB2H5NH.js +0 -1008
  540. package/dist/list-OLX7AI3O.js +0 -63
  541. package/dist/list-PAMYQS4X.js +0 -151
  542. package/dist/list-TOUUGHMS.js +0 -303
  543. package/dist/locations-2NKBJKBT.js +0 -67
  544. package/dist/locations-S4U6IJIS.js +0 -40
  545. package/dist/log-UGVWSK7Z.js +0 -92
  546. package/dist/make-3PZLTEXT.js +0 -516
  547. package/dist/make-3PZLTEXT.js.map +0 -1
  548. package/dist/map-BW4CHSIO.js +0 -404
  549. package/dist/mcp-JOXKA5HY.js +0 -476
  550. package/dist/media-53DJRC4N.js +0 -15
  551. package/dist/media-sources-SJZUOMI2.js +0 -32
  552. package/dist/members-VAX6KAFN.js +0 -44
  553. package/dist/meta-A7KM6TF5.js +0 -69
  554. package/dist/metrics-AY4RP54F.js +0 -152
  555. package/dist/models-5NTC7A5G.js +0 -155
  556. package/dist/normalize-IVQ7I54Z.js +0 -138
  557. package/dist/options-V7C6CU6M.js +0 -121
  558. package/dist/performance-L6RJZPXX.js +0 -24
  559. package/dist/pixels-TZPF746S.js +0 -60
  560. package/dist/promoted-tweet-writes-DBATH765.js +0 -180
  561. package/dist/promoted-tweets-AU3XF3JD.js +0 -119
  562. package/dist/publish-G6DYVT4S.js +0 -322
  563. package/dist/query-CPZZNMDY.js +0 -1341
  564. package/dist/reddit-S2S6C4RT.js +0 -26
  565. package/dist/refresh-ARJ2SOMY.js +0 -94
  566. package/dist/release-3WCBAHPO.js +0 -60
  567. package/dist/relevant-pages-MTMFMBPD.js +0 -99
  568. package/dist/remove-FUAARCSC.js +0 -50
  569. package/dist/reopen-PZI5H4X2.js +0 -63
  570. package/dist/rerun-AUP4XT6T.js +0 -86
  571. package/dist/rerun-AUP4XT6T.js.map +0 -1
  572. package/dist/research-SY3QRGOC.js +0 -262
  573. package/dist/research-TISR736S.js +0 -59
  574. package/dist/research-TISR736S.js.map +0 -1
  575. package/dist/reset-E6F5NXOI.js +0 -54
  576. package/dist/reset-ZWM7DDD7.js +0 -54
  577. package/dist/resolve-I5R5ELMZ.js +0 -121
  578. package/dist/retry-7CFZTKWI.js +0 -60
  579. package/dist/retry-JO3JXXT2.js +0 -62
  580. package/dist/run-JR6SILHL.js +0 -61
  581. package/dist/run-UKB647DI.js +0 -65
  582. package/dist/scaffold-ad-BYGVU7MT.js +0 -1550
  583. package/dist/scaffold-ad-BYGVU7MT.js.map +0 -1
  584. package/dist/scaffold-static-ad-U57V5UV3.js +0 -948
  585. package/dist/scaffold-static-ad-U57V5UV3.js.map +0 -1
  586. package/dist/scaffold-video-POZTINEV.js +0 -874
  587. package/dist/scaffold-video-POZTINEV.js.map +0 -1
  588. package/dist/schedule-SOAHLZZF.js +0 -61
  589. package/dist/scheduled-agents-K5WU7SVJ.js +0 -49
  590. package/dist/schema-SOPL6GJP.js +0 -129
  591. package/dist/search-5VUDFOHI.js +0 -174
  592. package/dist/search-XUIVHGAY.js +0 -26
  593. package/dist/select-T36UH4HL.js +0 -95
  594. package/dist/select-T36UH4HL.js.map +0 -1
  595. package/dist/set-prompt-Y4X7GV2Q.js +0 -187
  596. package/dist/set-prompt-Y4X7GV2Q.js.map +0 -1
  597. package/dist/setup-links-KFROCISS.js +0 -141
  598. package/dist/site-MXPKMRQT.js +0 -177
  599. package/dist/sources-FFHNWVLV.js +0 -30
  600. package/dist/sources-MLDLMEDT.js +0 -421
  601. package/dist/stale-UXL4X4AD.js +0 -64
  602. package/dist/stale-UXL4X4AD.js.map +0 -1
  603. package/dist/status-M47G5HD4.js +0 -62
  604. package/dist/studio-HUEBE6DS.js +0 -49
  605. package/dist/sync-HS7VZJ2H.js +0 -54
  606. package/dist/sync-definition-PY6REQ4J.js +0 -54
  607. package/dist/tag-manager-HREEYGVM.js +0 -43
  608. package/dist/tags-DIXLYB5P.js +0 -224
  609. package/dist/tags-DYRZTYHD.js +0 -20
  610. package/dist/tags-MRG56YOE.js +0 -26
  611. package/dist/tags-WAW6MQAY.js +0 -20
  612. package/dist/tags-Y4HHJJGE.js +0 -20
  613. package/dist/targeting-criteria-5UUESFWC.js +0 -113
  614. package/dist/targets-COZPVG52.js +0 -102
  615. package/dist/templates-75VFYZ3E.js +0 -178
  616. package/dist/testimonials-WJBRWLNW.js +0 -32
  617. package/dist/top-companies-C2R4FG6H.js +0 -108
  618. package/dist/translate-RYAJAFV7.js +0 -599
  619. package/dist/translate-RYAJAFV7.js.map +0 -1
  620. package/dist/triggers-5UHVJPBV.js +0 -141
  621. package/dist/unlink-PLOOAGM3.js +0 -67
  622. package/dist/unstage-JIIOTBTF.js +0 -84
  623. package/dist/update-G6R5ZHUI.js +0 -63
  624. package/dist/update-QYM6U7LL.js +0 -142
  625. package/dist/update-RCP7F5L5.js +0 -98
  626. package/dist/update-RGVNTA5X.js +0 -155
  627. package/dist/upload-EEJ34Q3Y.js +0 -126
  628. package/dist/url-options-QEWKRKZ3.js +0 -127
  629. package/dist/url-params-2G5M2B3J.js +0 -98
  630. package/dist/validate-M33VLUG4.js +0 -90
  631. package/dist/validate-M33VLUG4.js.map +0 -1
  632. package/dist/videos-FVVID55J.js +0 -39
  633. package/dist/viewer-check-2Q3WHSEL.js +0 -70
  634. package/dist/web-WUGLSULO.js +0 -135
  635. package/dist/web-WUGLSULO.js.map +0 -1
  636. package/dist/winning-ads-OSRFHVLV.js +0 -62
  637. package/dist/write-commands-CLJOD2XF.js +0 -1015
  638. package/dist/write-commands-CT74VHH6.js +0 -737
  639. package/dist/x-EBKLJJPJ.js +0 -47
  640. /package/dist/{account-PCEZQUK7.js.map → account-2ZMZFPIU.js.map} +0 -0
  641. /package/dist/{account-4H7QVBRK.js.map → account-F6MHQ64I.js.map} +0 -0
  642. /package/dist/{account-writes-AK42HGRM.js.map → account-writes-ISE4U2FQ.js.map} +0 -0
  643. /package/dist/{accounts-OSXDZZLY.js.map → accounts-RHGN5WMU.js.map} +0 -0
  644. /package/dist/{accounts-5AXLYU7P.js.map → accounts-VINHZRWA.js.map} +0 -0
  645. /package/dist/{actions-HM4VVTGW.js.map → actions-5F4ZP6M4.js.map} +0 -0
  646. /package/dist/{ad-group-writes-QQS4223F.js.map → ad-group-writes-UU5NNKSO.js.map} +0 -0
  647. /package/dist/{ad-groups-WGPDPUI2.js.map → ad-groups-CGFXZNIA.js.map} +0 -0
  648. /package/dist/{ad-writes-XE2IE4DS.js.map → ad-writes-NALDYWOR.js.map} +0 -0
  649. /package/dist/{add-4J2EF54O.js.map → add-KBPMSK2P.js.map} +0 -0
  650. /package/dist/{add-VZAY57M4.js.map → add-OGH4DZZ5.js.map} +0 -0
  651. /package/dist/{ads-NUME2UXH.js.map → ads-56OWZBXZ.js.map} +0 -0
  652. /package/dist/{ads-6UEDYT3O.js.map → ads-H7GH7A26.js.map} +0 -0
  653. /package/dist/{ads-BCOSQALY.js.map → ads-PV7GZXPR.js.map} +0 -0
  654. /package/dist/{adsets-Q5DWGANV.js.map → adsets-H7QT42U6.js.map} +0 -0
  655. /package/dist/{analytics-PHU7H5VY.js.map → analytics-5FALU2GL.js.map} +0 -0
  656. /package/dist/{analytics-QTR2ZITZ.js.map → analytics-JVZKN735.js.map} +0 -0
  657. /package/dist/{animate-3Z7HXOLE.js.map → animate-FWWHSYPL.js.map} +0 -0
  658. /package/dist/{assign-IIAVNATI.js.map → assign-KLYZ6USE.js.map} +0 -0
  659. /package/dist/{audience-size-2L7XMYJL.js.map → audience-size-JHB42DB4.js.map} +0 -0
  660. /package/dist/{audiences-AMRFZRZ7.js.map → audiences-JACGRBNN.js.map} +0 -0
  661. /package/dist/{audiences-TGD5US2M.js.map → audiences-VEKGLWBG.js.map} +0 -0
  662. /package/dist/{audit-ZCUFJLUG.js.map → audit-5XH7WZIM.js.map} +0 -0
  663. /package/dist/{avatars-OEK3FYKK.js.map → avatars-N4SRNQI7.js.map} +0 -0
  664. /package/dist/{bid-pricing-FDW3IY6G.js.map → bid-pricing-VYLVGU26.js.map} +0 -0
  665. /package/dist/{brand-OXYFSNA5.js.map → brand-ASBS2HZM.js.map} +0 -0
  666. /package/dist/{campaign-groups-5GCFQT2W.js.map → campaign-groups-ATE2DE4V.js.map} +0 -0
  667. /package/dist/{campaign-writes-3SJQSCUK.js.map → campaign-writes-ETT57KLQ.js.map} +0 -0
  668. /package/dist/{campaign-writes-SXLZFYF6.js.map → campaign-writes-SX52CJYW.js.map} +0 -0
  669. /package/dist/{campaigns-7QDDWZ76.js.map → campaigns-FGBAS6AZ.js.map} +0 -0
  670. /package/dist/{campaigns-SYEOFKFV.js.map → campaigns-J6VZBIV6.js.map} +0 -0
  671. /package/dist/{campaigns-D6B6Z67Y.js.map → campaigns-WBEG5QA4.js.map} +0 -0
  672. /package/dist/{campaigns-YS3OGQXO.js.map → campaigns-X3DPCCSN.js.map} +0 -0
  673. /package/dist/{canvas-B6DPRQGN.js.map → canvas-K7IN7HLO.js.map} +0 -0
  674. /package/dist/{capabilities-GVHPHH2G.js.map → capabilities-RDAERPYY.js.map} +0 -0
  675. /package/dist/{catalogs-BRXEDE56.js.map → catalogs-G3YEVG6S.js.map} +0 -0
  676. /package/dist/{changes-6QBJMGJC.js.map → changes-TP7ZZHB3.js.map} +0 -0
  677. /package/dist/{chatgpt-7W75X3ER.js.map → chatgpt-QNUN63YS.js.map} +0 -0
  678. /package/dist/{chats-54CWM7DL.js.map → chats-YIAQGQ3X.js.map} +0 -0
  679. /package/dist/{chunk-7FVWIZHM.js.map → chunk-2GK33EJV.js.map} +0 -0
  680. /package/dist/{chunk-7J6EHOH6.js.map → chunk-35XWJEWH.js.map} +0 -0
  681. /package/dist/{chunk-RB5DB3WN.js.map → chunk-4NBVGARW.js.map} +0 -0
  682. /package/dist/{chunk-OAQPHP6V.js.map → chunk-65RIB7A6.js.map} +0 -0
  683. /package/dist/{chunk-CKU4WYTF.js.map → chunk-6DB2B3GF.js.map} +0 -0
  684. /package/dist/{chunk-EAHP7L2R.js.map → chunk-7SDFKGQ4.js.map} +0 -0
  685. /package/dist/{chunk-NK2UFFVH.js.map → chunk-ACANMASG.js.map} +0 -0
  686. /package/dist/{chunk-HDWKLFF5.js.map → chunk-ALTBBAYU.js.map} +0 -0
  687. /package/dist/{chunk-FGH4Z5K5.js.map → chunk-ANCSKUWI.js.map} +0 -0
  688. /package/dist/{chunk-AO5UQQLJ.js.map → chunk-BA7FDXQC.js.map} +0 -0
  689. /package/dist/{chunk-654U6NU6.js.map → chunk-BNCW67EM.js.map} +0 -0
  690. /package/dist/{chunk-EPMN4BK7.js.map → chunk-BSC33FLJ.js.map} +0 -0
  691. /package/dist/{chunk-DE6ANJLU.js.map → chunk-DKGTQSLR.js.map} +0 -0
  692. /package/dist/{chunk-FYQPB2SS.js.map → chunk-DR34ZTWD.js.map} +0 -0
  693. /package/dist/{chunk-NTPXZU3V.js.map → chunk-E4MDJBLO.js.map} +0 -0
  694. /package/dist/{chunk-YUPRCOEN.js.map → chunk-EH4C4CZK.js.map} +0 -0
  695. /package/dist/{chunk-L27H2R2N.js.map → chunk-FXED3VZK.js.map} +0 -0
  696. /package/dist/{chunk-KV5BCSUR.js.map → chunk-G7UTTEBS.js.map} +0 -0
  697. /package/dist/{chunk-T4DD5YMP.js.map → chunk-GIJT3A5U.js.map} +0 -0
  698. /package/dist/{chunk-KWAOTV7F.js.map → chunk-GX6VAHY7.js.map} +0 -0
  699. /package/dist/{chunk-DZSIUEGH.js.map → chunk-HIPDMQZ6.js.map} +0 -0
  700. /package/dist/{chunk-XG3XCHN6.js.map → chunk-HQSCJYZO.js.map} +0 -0
  701. /package/dist/{chunk-V5WSJP5A.js.map → chunk-HZ5DR5MX.js.map} +0 -0
  702. /package/dist/{chunk-5VC6IK7B.js.map → chunk-IM52NHGL.js.map} +0 -0
  703. /package/dist/{chunk-WTOYCUKH.js.map → chunk-K3PN7TN5.js.map} +0 -0
  704. /package/dist/{chunk-HYCIBVDW.js.map → chunk-KQTYTCKQ.js.map} +0 -0
  705. /package/dist/{chunk-2SCPDSFN.js.map → chunk-LIQ4SQ2T.js.map} +0 -0
  706. /package/dist/{chunk-3X3446TG.js.map → chunk-MADAAZZV.js.map} +0 -0
  707. /package/dist/{chunk-ZZQXVYUY.js.map → chunk-MLU6STIN.js.map} +0 -0
  708. /package/dist/{chunk-7JUUKYKG.js.map → chunk-PDTB5EX6.js.map} +0 -0
  709. /package/dist/{chunk-E5IFTZJ3.js.map → chunk-SB3GZFCV.js.map} +0 -0
  710. /package/dist/{chunk-XV6XCFF7.js.map → chunk-T3BDNJIX.js.map} +0 -0
  711. /package/dist/{chunk-KMEMA7AZ.js.map → chunk-TIOQ7ZFQ.js.map} +0 -0
  712. /package/dist/{chunk-SKT3SAHG.js.map → chunk-U3HAMW5W.js.map} +0 -0
  713. /package/dist/{chunk-5EEDEVOR.js.map → chunk-U6SYRIOB.js.map} +0 -0
  714. /package/dist/{chunk-F46KAIBS.js.map → chunk-UC6BWM5J.js.map} +0 -0
  715. /package/dist/{chunk-ZNBDKK4Y.js.map → chunk-ULJ5RFOV.js.map} +0 -0
  716. /package/dist/{chunk-GTK46DE3.js.map → chunk-VAISMQQB.js.map} +0 -0
  717. /package/dist/{chunk-WRIC2RPQ.js.map → chunk-VDHQJ6HD.js.map} +0 -0
  718. /package/dist/{chunk-6TCDQSM7.js.map → chunk-VMDAXFRI.js.map} +0 -0
  719. /package/dist/{chunk-EVYXTT7V.js.map → chunk-XCM6XWOB.js.map} +0 -0
  720. /package/dist/{chunk-NSA6HRG6.js.map → chunk-XMD4SHFI.js.map} +0 -0
  721. /package/dist/{chunk-4SJDDGPV.js.map → chunk-Y6QAJNKP.js.map} +0 -0
  722. /package/dist/{chunk-4SNOWJV7.js.map → chunk-YBP7O5P4.js.map} +0 -0
  723. /package/dist/{chunk-J5IU4OX2.js.map → chunk-YC2TQ3VC.js.map} +0 -0
  724. /package/dist/{chunk-6YYEBLYI.js.map → chunk-ZPU3WDVK.js.map} +0 -0
  725. /package/dist/{claim-CIASHKMC.js.map → claim-V4F5GZJK.js.map} +0 -0
  726. /package/dist/{companies-ECVMO24S.js.map → companies-NJGJ7XNN.js.map} +0 -0
  727. /package/dist/{complete-32CPBFIG.js.map → complete-MGNF5OAK.js.map} +0 -0
  728. /package/dist/{connect-OJSOM6PY.js.map → connect-PJOTRTT4.js.map} +0 -0
  729. /package/dist/{conversation-7FHN5ESN.js.map → conversation-4DM26FRD.js.map} +0 -0
  730. /package/dist/{conversion-report-XQBJ6LG4.js.map → conversion-report-N4HANYOB.js.map} +0 -0
  731. /package/dist/{conversion-upload-command-BBUXLFT3.js.map → conversion-upload-command-TZTHU2CD.js.map} +0 -0
  732. /package/dist/{conversion-writes-UBCVXP2E.js.map → conversion-writes-LW4HQKK5.js.map} +0 -0
  733. /package/dist/{conversions-7YJDNZ7Y.js.map → conversions-JGECVZSY.js.map} +0 -0
  734. /package/dist/{conversions-D236RTUK.js.map → conversions-TS723AZV.js.map} +0 -0
  735. /package/dist/{countries-FYHM3IMJ.js.map → countries-ESAKTQAE.js.map} +0 -0
  736. /package/dist/{create-FE5QLW7V.js.map → create-DSGQFBI7.js.map} +0 -0
  737. /package/dist/{create-ZGRL7YCV.js.map → create-I2KVDTCQ.js.map} +0 -0
  738. /package/dist/{create-2TBDXHAM.js.map → create-SBQWVLXG.js.map} +0 -0
  739. /package/dist/{create-OYT76OMJ.js.map → create-WOHPIGBK.js.map} +0 -0
  740. /package/dist/{creatives-IUB57I3T.js.map → creatives-4JGVZQGC.js.map} +0 -0
  741. /package/dist/{creatives-5MUTX4DQ.js.map → creatives-DWO5KEQC.js.map} +0 -0
  742. /package/dist/{creatives-UEPLNCPN.js.map → creatives-PSWCNY7U.js.map} +0 -0
  743. /package/dist/{critique-T7HJ42D4.js.map → critique-TIZJ5GFM.js.map} +0 -0
  744. /package/dist/{crm-KH6XX2TT.js.map → crm-2WAR565U.js.map} +0 -0
  745. /package/dist/{crm-JP4UOPMN.js.map → crm-VDXUO2YU.js.map} +0 -0
  746. /package/dist/{currency-DJDVIR3C.js.map → currency-XCGKQ7FE.js.map} +0 -0
  747. /package/dist/{custom-conversions-2VLJGPRV.js.map → custom-conversions-6P555U2K.js.map} +0 -0
  748. /package/dist/{customers-7I7UY5PS.js.map → customers-ATENMXDO.js.map} +0 -0
  749. /package/dist/{delete-6IOUDEWY.js.map → delete-AVMZYNVT.js.map} +0 -0
  750. /package/dist/{delete-ODFKNHAI.js.map → delete-H744GNS4.js.map} +0 -0
  751. /package/dist/{delete-RAETUVO2.js.map → delete-OEYPFATY.js.map} +0 -0
  752. /package/dist/{demographics-2FTDKPBD.js.map → demographics-M5LJF3RZ.js.map} +0 -0
  753. /package/dist/{discard-ZX5TLFYH.js.map → discard-72I6SM7G.js.map} +0 -0
  754. /package/dist/{discover-M3ZKKFEL.js.map → discover-BJPZNXUQ.js.map} +0 -0
  755. /package/dist/{domain-TH7KIC2T.js.map → domain-R4EIZD2W.js.map} +0 -0
  756. /package/dist/{draft-S2FSQOJN.js.map → draft-34C3F5U4.js.map} +0 -0
  757. /package/dist/{draft-CRE2Y24G.js.map → draft-BBFJNZ5X.js.map} +0 -0
  758. /package/dist/{draft-SH25PKST.js.map → draft-BV2QRPZ4.js.map} +0 -0
  759. /package/dist/{draft-MNFJ4G3C.js.map → draft-THPZFASM.js.map} +0 -0
  760. /package/dist/{draft-YHUIFDDR.js.map → draft-YYYRWF7M.js.map} +0 -0
  761. /package/dist/{facets-6B2U4BSM.js.map → facets-F2H52MS4.js.map} +0 -0
  762. /package/dist/{fit-FJ5CLQS4.js.map → fit-2CA4JH7N.js.map} +0 -0
  763. /package/dist/{flows-OGGSWWGT.js.map → flows-CWXCXEUD.js.map} +0 -0
  764. /package/dist/{follow-DUIEGDVK.js.map → follow-FN7LV3WV.js.map} +0 -0
  765. /package/dist/{follow-competitors-IT5ZVJPE.js.map → follow-competitors-MKXFHLXB.js.map} +0 -0
  766. /package/dist/{fonts-GCJRLEGD.js.map → fonts-F2XUCIIW.js.map} +0 -0
  767. /package/dist/{forecast-2AGTFMXH.js.map → forecast-IDKJYM2B.js.map} +0 -0
  768. /package/dist/{funnel-7U55LNJ4.js.map → funnel-RLGQGYKO.js.map} +0 -0
  769. /package/dist/{generate-DMQUS665.js.map → generate-MMBYB44G.js.map} +0 -0
  770. /package/dist/{get-N7FR6NFX.js.map → get-C6UQ22HH.js.map} +0 -0
  771. /package/dist/{get-IRJIHOQK.js.map → get-EEUR6SAW.js.map} +0 -0
  772. /package/dist/{history-PSNJAUTW.js.map → history-4II5QA4B.js.map} +0 -0
  773. /package/dist/{history-Q3QCT64S.js.map → history-DBIEYQHY.js.map} +0 -0
  774. /package/dist/{hubspot-2NHL47R2.js.map → hubspot-TTITJFBO.js.map} +0 -0
  775. /package/dist/{ideas-22MRXKT7.js.map → ideas-V4Q6JDKV.js.map} +0 -0
  776. /package/dist/{images-LXFWEON7.js.map → images-SP5REF6E.js.map} +0 -0
  777. /package/dist/{ingest-W7VEDEYD.js.map → ingest-574GIFAR.js.map} +0 -0
  778. /package/dist/{ingest-ZN3DEZHY.js.map → ingest-IC4T76W6.js.map} +0 -0
  779. /package/dist/{insights-LNAXV2CG.js.map → insights-ZIU6FJMS.js.map} +0 -0
  780. /package/dist/{inspect-3LBIHMMP.js.map → inspect-ATHYY6A2.js.map} +0 -0
  781. /package/dist/{inspiration-I4MMKAWA.js.map → inspiration-P265QJ2H.js.map} +0 -0
  782. /package/dist/{intent-ICKFJRT2.js.map → intent-E3UIVZBN.js.map} +0 -0
  783. /package/dist/{keyword-gap-NGPH32FN.js.map → keyword-gap-BG6M665A.js.map} +0 -0
  784. /package/dist/{keyword-metrics-PZXFB4NG.js.map → keyword-metrics-J4UPUDN7.js.map} +0 -0
  785. /package/dist/{landing-D7QS42GK.js.map → landing-R6DN7XLK.js.map} +0 -0
  786. /package/dist/{languages-JDYL2N5F.js.map → languages-HORKPDNH.js.map} +0 -0
  787. /package/dist/{languages-JMVNOHMG.js.map → languages-JSGWCC7Z.js.map} +0 -0
  788. /package/dist/{leads-ARUWPHBM.js.map → leads-7EVHMNUF.js.map} +0 -0
  789. /package/dist/{leads-E22XFSX2.js.map → leads-JM6HUERX.js.map} +0 -0
  790. /package/dist/{lighthouse-NQBUCHTW.js.map → lighthouse-6ZC45E53.js.map} +0 -0
  791. /package/dist/{line-item-writes-KA5PVKFO.js.map → line-item-writes-KUYEXSIH.js.map} +0 -0
  792. /package/dist/{line-items-3ZFFZCNH.js.map → line-items-GIWLP3FL.js.map} +0 -0
  793. /package/dist/{link-AEU6BV75.js.map → link-PVM7XJQI.js.map} +0 -0
  794. /package/dist/{linkedin-WCB2H5NH.js.map → linkedin-WX54EAX6.js.map} +0 -0
  795. /package/dist/{list-PAMYQS4X.js.map → list-4ZKQZBCL.js.map} +0 -0
  796. /package/dist/{list-OLX7AI3O.js.map → list-MCEFXC6L.js.map} +0 -0
  797. /package/dist/{list-TOUUGHMS.js.map → list-WR7QYTON.js.map} +0 -0
  798. /package/dist/{locations-2NKBJKBT.js.map → locations-74TPQWAT.js.map} +0 -0
  799. /package/dist/{locations-S4U6IJIS.js.map → locations-J4G5RNPH.js.map} +0 -0
  800. /package/dist/{log-UGVWSK7Z.js.map → log-U6IWZGOF.js.map} +0 -0
  801. /package/dist/{map-BW4CHSIO.js.map → map-TWL7T4KP.js.map} +0 -0
  802. /package/dist/{mcp-JOXKA5HY.js.map → mcp-HVAVJGGS.js.map} +0 -0
  803. /package/dist/{media-53DJRC4N.js.map → media-M7E6V2XU.js.map} +0 -0
  804. /package/dist/{media-sources-SJZUOMI2.js.map → media-sources-JWGO23BZ.js.map} +0 -0
  805. /package/dist/{members-VAX6KAFN.js.map → members-5FAW4YE7.js.map} +0 -0
  806. /package/dist/{meta-A7KM6TF5.js.map → meta-EZ4SY25M.js.map} +0 -0
  807. /package/dist/{metrics-AY4RP54F.js.map → metrics-SQDJ5NQO.js.map} +0 -0
  808. /package/dist/{models-5NTC7A5G.js.map → models-7U3GRYHF.js.map} +0 -0
  809. /package/dist/{normalize-IVQ7I54Z.js.map → normalize-GW4GZNVY.js.map} +0 -0
  810. /package/dist/{options-V7C6CU6M.js.map → options-NSUCENLU.js.map} +0 -0
  811. /package/dist/{performance-L6RJZPXX.js.map → performance-FGCDWHMC.js.map} +0 -0
  812. /package/dist/{pixels-TZPF746S.js.map → pixels-45A55MOP.js.map} +0 -0
  813. /package/dist/{promoted-tweet-writes-DBATH765.js.map → promoted-tweet-writes-BPWTDESL.js.map} +0 -0
  814. /package/dist/{promoted-tweets-AU3XF3JD.js.map → promoted-tweets-OS3NHYVE.js.map} +0 -0
  815. /package/dist/{publish-G6DYVT4S.js.map → publish-SXZEWBVJ.js.map} +0 -0
  816. /package/dist/{query-CPZZNMDY.js.map → query-IEZRY6HV.js.map} +0 -0
  817. /package/dist/{reddit-S2S6C4RT.js.map → reddit-TF6K37SB.js.map} +0 -0
  818. /package/dist/{refresh-ARJ2SOMY.js.map → refresh-APVDWXRZ.js.map} +0 -0
  819. /package/dist/{release-3WCBAHPO.js.map → release-32SEJU4L.js.map} +0 -0
  820. /package/dist/{relevant-pages-MTMFMBPD.js.map → relevant-pages-OWMNUCP7.js.map} +0 -0
  821. /package/dist/{remove-FUAARCSC.js.map → remove-U64GTHLQ.js.map} +0 -0
  822. /package/dist/{reopen-PZI5H4X2.js.map → reopen-5VS233SF.js.map} +0 -0
  823. /package/dist/{research-SY3QRGOC.js.map → research-QYSQ6LW4.js.map} +0 -0
  824. /package/dist/{reset-E6F5NXOI.js.map → reset-22FC7BXQ.js.map} +0 -0
  825. /package/dist/{reset-ZWM7DDD7.js.map → reset-47B5VPT4.js.map} +0 -0
  826. /package/dist/{resolve-I5R5ELMZ.js.map → resolve-7KQGVTQT.js.map} +0 -0
  827. /package/dist/{retry-JO3JXXT2.js.map → retry-J5UVLS72.js.map} +0 -0
  828. /package/dist/{retry-7CFZTKWI.js.map → retry-UJ5UF4BM.js.map} +0 -0
  829. /package/dist/{run-UKB647DI.js.map → run-SI4FA32F.js.map} +0 -0
  830. /package/dist/{run-JR6SILHL.js.map → run-TFLFBQU2.js.map} +0 -0
  831. /package/dist/{schedule-SOAHLZZF.js.map → schedule-52ZM4KRQ.js.map} +0 -0
  832. /package/dist/{scheduled-agents-K5WU7SVJ.js.map → scheduled-agents-PCWCQAKP.js.map} +0 -0
  833. /package/dist/{schema-SOPL6GJP.js.map → schema-FY6ORDXZ.js.map} +0 -0
  834. /package/dist/{search-5VUDFOHI.js.map → search-NS7XNRZC.js.map} +0 -0
  835. /package/dist/{search-XUIVHGAY.js.map → search-UO5KJTYS.js.map} +0 -0
  836. /package/dist/{setup-links-KFROCISS.js.map → setup-links-V3URI7DL.js.map} +0 -0
  837. /package/dist/{site-MXPKMRQT.js.map → site-WIQ7SSU3.js.map} +0 -0
  838. /package/dist/{sources-MLDLMEDT.js.map → sources-DWJXOLEH.js.map} +0 -0
  839. /package/dist/{sources-FFHNWVLV.js.map → sources-L453U5MT.js.map} +0 -0
  840. /package/dist/{status-M47G5HD4.js.map → status-WXWU54WR.js.map} +0 -0
  841. /package/dist/{studio-HUEBE6DS.js.map → studio-C5K3YX3P.js.map} +0 -0
  842. /package/dist/{sync-HS7VZJ2H.js.map → sync-CDZUTGV3.js.map} +0 -0
  843. /package/dist/{sync-definition-PY6REQ4J.js.map → sync-definition-BAJQUBE3.js.map} +0 -0
  844. /package/dist/{tag-manager-HREEYGVM.js.map → tag-manager-DYZUOIAS.js.map} +0 -0
  845. /package/dist/{tags-WAW6MQAY.js.map → tags-6RY23XOG.js.map} +0 -0
  846. /package/dist/{tags-DIXLYB5P.js.map → tags-BHFQWNPL.js.map} +0 -0
  847. /package/dist/{tags-MRG56YOE.js.map → tags-SG3NVC3J.js.map} +0 -0
  848. /package/dist/{tags-DYRZTYHD.js.map → tags-VN5HTL35.js.map} +0 -0
  849. /package/dist/{tags-Y4HHJJGE.js.map → tags-WR6PDIDR.js.map} +0 -0
  850. /package/dist/{targeting-criteria-5UUESFWC.js.map → targeting-criteria-5EXP2NXF.js.map} +0 -0
  851. /package/dist/{targets-COZPVG52.js.map → targets-WUVEJPSD.js.map} +0 -0
  852. /package/dist/{templates-75VFYZ3E.js.map → templates-LOJQX2NG.js.map} +0 -0
  853. /package/dist/{testimonials-WJBRWLNW.js.map → testimonials-6M5DXORT.js.map} +0 -0
  854. /package/dist/{top-companies-C2R4FG6H.js.map → top-companies-E2OMMPSV.js.map} +0 -0
  855. /package/dist/{triggers-5UHVJPBV.js.map → triggers-MRXIDCSN.js.map} +0 -0
  856. /package/dist/{unlink-PLOOAGM3.js.map → unlink-HNL747YM.js.map} +0 -0
  857. /package/dist/{unstage-JIIOTBTF.js.map → unstage-OL2JDCLK.js.map} +0 -0
  858. /package/dist/{update-QYM6U7LL.js.map → update-4KGIT4BF.js.map} +0 -0
  859. /package/dist/{update-RCP7F5L5.js.map → update-JPBUF7M2.js.map} +0 -0
  860. /package/dist/{update-RGVNTA5X.js.map → update-RTTC3SAK.js.map} +0 -0
  861. /package/dist/{update-G6R5ZHUI.js.map → update-YNNRX5B2.js.map} +0 -0
  862. /package/dist/{upload-EEJ34Q3Y.js.map → upload-UIXPCSXJ.js.map} +0 -0
  863. /package/dist/{url-options-QEWKRKZ3.js.map → url-options-GGXAL3J4.js.map} +0 -0
  864. /package/dist/{url-params-2G5M2B3J.js.map → url-params-K47CE7Y5.js.map} +0 -0
  865. /package/dist/{videos-FVVID55J.js.map → videos-BP3BKNTY.js.map} +0 -0
  866. /package/dist/{viewer-check-2Q3WHSEL.js.map → viewer-check-HFRUJ4ZU.js.map} +0 -0
  867. /package/dist/{winning-ads-OSRFHVLV.js.map → winning-ads-WUENRDVJ.js.map} +0 -0
  868. /package/dist/{write-commands-CLJOD2XF.js.map → write-commands-4WARNR2T.js.map} +0 -0
  869. /package/dist/{write-commands-CT74VHH6.js.map → write-commands-TAYGTJEZ.js.map} +0 -0
  870. /package/dist/{x-EBKLJJPJ.js.map → x-VZCELH3P.js.map} +0 -0
@@ -0,0 +1,1854 @@
1
+ // ../api/src/ads-google/limits.ts
2
+ var GOOGLE_ADS_LIMITS = {
3
+ budget: {
4
+ nameMax: 255,
5
+ amountMicrosMin: 1
6
+ },
7
+ campaign: {
8
+ nameMax: 255,
9
+ /** `campaign.final_url_suffix` — the query string appended to every final URL under the campaign. */
10
+ finalUrlSuffixMax: 2048,
11
+ /** `campaign.tracking_url_template` — the click-measurement URL every ad routes through. */
12
+ trackingUrlTemplateMax: 2048,
13
+ /** `campaign.url_custom_parameters` — Google caps a single entity at 8 `{_name}` parameters. */
14
+ urlCustomParametersMax: 8,
15
+ urlCustomParameterKeyMax: 16,
16
+ urlCustomParameterValueMax: 250,
17
+ /** `campaign.text_guidelines.term_exclusions` — words AI Max and Performance Max must never write. */
18
+ termExclusionsMax: 25,
19
+ termExclusionMax: 30,
20
+ /** `campaign.text_guidelines.messaging_restrictions` — freeform rules for generated text. */
21
+ messagingRestrictionsMax: 40,
22
+ messagingRestrictionMax: 300
23
+ },
24
+ adGroup: {
25
+ nameMax: 255
26
+ },
27
+ keyword: {
28
+ textMax: 80,
29
+ wordsMax: 10
30
+ },
31
+ responsiveSearchAd: {
32
+ headlinesMin: 3,
33
+ headlinesMax: 15,
34
+ headlineTextMax: 30,
35
+ descriptionsMin: 2,
36
+ descriptionsMax: 4,
37
+ descriptionTextMax: 90,
38
+ pathMax: 15
39
+ },
40
+ responsiveDisplayAd: {
41
+ headlinesMin: 1,
42
+ headlinesMax: 5,
43
+ headlineTextMax: 30,
44
+ longHeadlineTextMax: 90,
45
+ descriptionsMin: 1,
46
+ descriptionsMax: 5,
47
+ descriptionTextMax: 90,
48
+ businessNameMax: 25
49
+ },
50
+ appAd: {
51
+ headlinesMin: 1,
52
+ headlinesMax: 5,
53
+ headlineTextMax: 30,
54
+ descriptionsMin: 1,
55
+ descriptionsMax: 5,
56
+ descriptionTextMax: 90,
57
+ imagesMax: 20,
58
+ youtubeVideosMax: 20
59
+ },
60
+ /** `DemandGenMultiAssetAdInfo` — the image-carrying Demand Gen ad. No long headline exists on it. */
61
+ demandGenAd: {
62
+ adNameMax: 255,
63
+ headlinesMin: 1,
64
+ headlinesMax: 5,
65
+ headlineTextMax: 40,
66
+ descriptionsMin: 1,
67
+ descriptionsMax: 5,
68
+ descriptionTextMax: 90,
69
+ businessNameMax: 25
70
+ },
71
+ /**
72
+ * `DemandGenVideoResponsiveAdInfo` — the Demand Gen ad that runs a YouTube video. It is the only
73
+ * ad format with BOTH a headline list and a long-headline list, which is why its copy has no home
74
+ * in `demandGenAd`: every content schema is strict, so a payload naming `longHeadlines` there is
75
+ * refused, and before this format existed a served Demand Gen video ad could not be edited at all.
76
+ */
77
+ demandGenVideoAd: {
78
+ adNameMax: 255,
79
+ headlinesMin: 1,
80
+ headlinesMax: 5,
81
+ headlineTextMax: 40,
82
+ longHeadlinesMin: 1,
83
+ longHeadlinesMax: 5,
84
+ longHeadlineTextMax: 90,
85
+ descriptionsMin: 1,
86
+ descriptionsMax: 5,
87
+ descriptionTextMax: 90,
88
+ businessNameMax: 25
89
+ },
90
+ sharedSet: {
91
+ nameMax: 255
92
+ },
93
+ asset: {
94
+ sitelinkLinkTextMax: 25,
95
+ sitelinkDescriptionMax: 35,
96
+ calloutTextMax: 25,
97
+ // A snippet's HEADER has no length limit of its own — it has to be one of
98
+ // Google's published headers (`structured-snippet-headers.ts`), the longest
99
+ // of which is 29 characters. Only the values are capped.
100
+ structuredSnippetValuesMin: 3,
101
+ structuredSnippetValuesMax: 10,
102
+ /**
103
+ * Per VALUE, not per asset. Google rejects a 26-character value with a bare "Too long." at
104
+ * `structured_snippet_asset.values[i]` — one red row inside an otherwise clean publish, plus
105
+ * every link that depends on the asset. Confirmed live on v23: "Bases de datos vectoriales"
106
+ * (26) rejected, its four neighbours accepted.
107
+ */
108
+ structuredSnippetValueMax: 25
109
+ },
110
+ conversionAction: {
111
+ nameMax: 255
112
+ },
113
+ audience: {
114
+ nameMax: 255
115
+ },
116
+ biddingStrategy: {
117
+ nameMax: 255
118
+ },
119
+ label: {
120
+ nameMax: 255
121
+ },
122
+ assetGroup: {
123
+ nameMax: 255,
124
+ headlinesMin: 3,
125
+ headlinesMax: 15,
126
+ headlineTextMax: 30,
127
+ longHeadlinesMin: 1,
128
+ longHeadlinesMax: 5,
129
+ longHeadlineTextMax: 90,
130
+ descriptionsMin: 2,
131
+ descriptionsMax: 5,
132
+ descriptionTextMax: 90,
133
+ businessNameMax: 25
134
+ }
135
+ };
136
+ var GOOGLE_ADS_QUERY_MAX_PAGE_SIZE = 8192;
137
+ var KEYWORD_MATCH_TYPES = ["EXACT", "PHRASE", "BROAD"];
138
+ var ADVERTISING_CHANNEL_TYPES = [
139
+ "SEARCH",
140
+ "DISPLAY",
141
+ "SHOPPING",
142
+ "VIDEO",
143
+ "PERFORMANCE_MAX",
144
+ "DEMAND_GEN",
145
+ "MULTI_CHANNEL",
146
+ "LOCAL",
147
+ "SMART",
148
+ "TRAVEL",
149
+ "HOTEL"
150
+ // This constant has ONE consumer — `campaignCreateSchema.channelType` — so it is a write-side
151
+ // allowlist, not a vocabulary. A value belongs here only if Baker can legitimately create a
152
+ // campaign of that type. GAQL reads never pass through it (`listSizeRequirement` takes the raw
153
+ // string straight off the row, deliberately), so adding a channel here buys no read coverage.
154
+ //
155
+ // Two omissions are therefore deliberate. DISCOVERY used to sit here: Google renamed it
156
+ // DEMAND_GEN and dropped the old name from the v23 enum, so a campaign staged as DISCOVERY could
157
+ // only ever fail at publish — inside an atomic batch, taking every co-staged op down with it.
158
+ // LOCAL_SERVICES is a real v23 channel but is not creatable through the API; Google's own LSA
159
+ // migration produces those campaigns. Accepting either one would stage a campaign that passes
160
+ // validation, reaches a review card a user approves, and then fails the whole publish.
161
+ ];
162
+ var ADVERTISING_CHANNEL_SUB_TYPES = [
163
+ "SEARCH_MOBILE_APP",
164
+ "DISPLAY_MOBILE_APP",
165
+ "SEARCH_EXPRESS",
166
+ "DISPLAY_EXPRESS",
167
+ "SHOPPING_SMART_ADS",
168
+ "DISPLAY_GMAIL_AD",
169
+ "DISPLAY_SMART_CAMPAIGN",
170
+ "VIDEO_OUTSTREAM",
171
+ "VIDEO_ACTION",
172
+ "VIDEO_NON_SKIPPABLE",
173
+ "APP_CAMPAIGN",
174
+ "APP_CAMPAIGN_FOR_ENGAGEMENT",
175
+ "LOCAL_CAMPAIGN",
176
+ "SHOPPING_COMPARISON_LISTING_ADS",
177
+ "SEARCH_MOBILE_APP_ENGAGEMENT",
178
+ "TRAVEL_ACTIVITIES"
179
+ ];
180
+ var BIDDING_STRATEGY_TYPES = [
181
+ "MANUAL_CPC",
182
+ "MAXIMIZE_CONVERSIONS",
183
+ "MAXIMIZE_CONVERSION_VALUE",
184
+ "TARGET_SPEND",
185
+ "TARGET_CPA",
186
+ "TARGET_ROAS",
187
+ "TARGET_IMPRESSION_SHARE",
188
+ "MANUAL_CPM",
189
+ "MANUAL_CPV",
190
+ "PERCENT_CPC",
191
+ // Demand Gen's "maximize clicks at a target CPC" — `Campaign.target_cpc`, overridable per ad
192
+ // group via `AdGroup.target_cpc_micros`. Confirmed present in v23.
193
+ // It is one of the target-driven strategies governed by the August 2026 budget-limited
194
+ // change, so modelling it as a strategy without a target would leave a Demand Gen
195
+ // campaign's exposure invisible to `biddingTargetWarnings`.
196
+ "TARGET_CPC"
197
+ ];
198
+ var MERGED_TARGET_STRATEGY_CHANNELS = /* @__PURE__ */ new Set(["SEARCH"]);
199
+ var MERGED_TARGET_CPA_MESSAGE = "Google doesn't accept Target CPA as a bidding strategy of its own on a Search campaign \u2014 the target sits inside Maximize conversions. Choose Maximize conversions and give it the same target CPA; it bids exactly the same.";
200
+ var MERGED_TARGET_ROAS_MESSAGE = "Google doesn't accept Target ROAS as a bidding strategy of its own on a Search campaign \u2014 the target sits inside Maximize conversion value. Choose Maximize conversion value and give it the same target ROAS; it bids exactly the same.";
201
+ function mergedTargetStrategyRefusal(channelType, biddingType) {
202
+ if (channelType === void 0 || !MERGED_TARGET_STRATEGY_CHANNELS.has(channelType)) {
203
+ return void 0;
204
+ }
205
+ if (biddingType === "TARGET_CPA") {
206
+ return MERGED_TARGET_CPA_MESSAGE;
207
+ }
208
+ return biddingType === "TARGET_ROAS" ? MERGED_TARGET_ROAS_MESSAGE : void 0;
209
+ }
210
+ var EMBEDDED_TARGET_CPA_DEMAND_GEN_MESSAGE = "Google doesn't accept a target CPA inside Maximize conversions on a Demand Gen campaign \u2014 there the target is its own bidding strategy. Choose Target CPA and give it the same target; it bids exactly the same.";
211
+ function embeddedTargetOnDemandGenRefusal(channelType, bidding) {
212
+ if (channelType !== "DEMAND_GEN" || bidding?.type !== "MAXIMIZE_CONVERSIONS") {
213
+ return void 0;
214
+ }
215
+ return bidding.targetCpaMicros === void 0 ? void 0 : EMBEDDED_TARGET_CPA_DEMAND_GEN_MESSAGE;
216
+ }
217
+ var MANUAL_CPC_DEMAND_GEN_MESSAGE = "Google doesn't accept Manual CPC on a Demand Gen campaign. Choose Maximize conversions (with a Target CPA as its own strategy if you have a target), or Target CPC, which exists on this channel alone.";
218
+ function manualCpcOnDemandGenRefusal(channelType, biddingType) {
219
+ return channelType === "DEMAND_GEN" && biddingType === "MANUAL_CPC" ? MANUAL_CPC_DEMAND_GEN_MESSAGE : void 0;
220
+ }
221
+ var TARGET_CPC_DEMAND_GEN_MESSAGE = "Google only accepts Target CPC on a Demand Gen campaign \u2014 no other campaign type has a target CPC. Pick the bidding this campaign's type supports (Maximize conversions with a target CPA on Search), or set the target CPC on the Demand Gen campaign that should carry it.";
222
+ function demandGenOnlyStrategyRefusal(channelType, biddingType) {
223
+ if (biddingType !== "TARGET_CPC" || channelType === void 0 || channelType === "DEMAND_GEN") {
224
+ return void 0;
225
+ }
226
+ return TARGET_CPC_DEMAND_GEN_MESSAGE;
227
+ }
228
+ var POSITIVE_GEO_TARGET_TYPES = ["PRESENCE_OR_INTEREST", "PRESENCE"];
229
+ var NEGATIVE_GEO_TARGET_TYPES = ["PRESENCE_OR_INTEREST", "PRESENCE"];
230
+ var BUDGET_DELIVERY_METHODS = ["STANDARD", "ACCELERATED"];
231
+ var AD_GROUP_TYPES = [
232
+ "SEARCH_STANDARD",
233
+ "DISPLAY_STANDARD",
234
+ "SHOPPING_PRODUCT_ADS",
235
+ "VIDEO_BUMPER",
236
+ "VIDEO_TRUE_VIEW_IN_STREAM",
237
+ "VIDEO_TRUE_VIEW_IN_DISPLAY",
238
+ "VIDEO_NON_SKIPPABLE_IN_STREAM",
239
+ "VIDEO_RESPONSIVE",
240
+ "VIDEO_EFFICIENT_REACH"
241
+ ];
242
+ var SHARED_SET_TYPES = [
243
+ "NEGATIVE_KEYWORDS",
244
+ "NEGATIVE_PLACEMENTS",
245
+ "ACCOUNT_LEVEL_NEGATIVE_KEYWORDS"
246
+ ];
247
+ var STAGEABLE_CREATE_STATUSES = ["ENABLED", "PAUSED"];
248
+ var PINNED_FIELDS = ["HEADLINE_1", "HEADLINE_2", "HEADLINE_3", "DESCRIPTION_1", "DESCRIPTION_2"];
249
+ var CONVERSION_ACTION_CATEGORIES = [
250
+ "DEFAULT",
251
+ "PAGE_VIEW",
252
+ "PURCHASE",
253
+ "SIGNUP",
254
+ "LEAD",
255
+ "DOWNLOAD",
256
+ "ADD_TO_CART",
257
+ "BEGIN_CHECKOUT",
258
+ "SUBSCRIBE_PAID",
259
+ "PHONE_CALL_LEAD",
260
+ "SUBMIT_LEAD_FORM",
261
+ "BOOK_APPOINTMENT",
262
+ "REQUEST_QUOTE",
263
+ "CONTACT"
264
+ ];
265
+ var CONVERSION_ACTION_TYPES = [
266
+ "WEBPAGE",
267
+ "UPLOAD_CLICKS",
268
+ "UPLOAD_CALLS",
269
+ "WEBSITE_CALL",
270
+ "GOOGLE_ANALYTICS_4_CUSTOM"
271
+ ];
272
+ var CONVERSION_COUNTING_TYPES = ["ONE_PER_CLICK", "MANY_PER_CLICK"];
273
+ var CONVERSION_ORIGINS = [
274
+ "WEBSITE",
275
+ "GOOGLE_HOSTED",
276
+ "APP",
277
+ "CALL_FROM_ADS",
278
+ "STORE",
279
+ "YOUTUBE_HOSTED"
280
+ ];
281
+ var USER_LIST_TYPES = ["CRM_BASED", "RULE_BASED", "LOGICAL", "BASIC", "LOOKALIKE"];
282
+ var TARGETING_DIMENSIONS = [
283
+ "KEYWORD",
284
+ "AUDIENCE",
285
+ "TOPIC",
286
+ "GENDER",
287
+ "AGE_RANGE",
288
+ "PLACEMENT",
289
+ "PARENTAL_STATUS",
290
+ "INCOME_RANGE"
291
+ ];
292
+ var ASSET_FIELD_TYPES = [
293
+ "SITELINK",
294
+ "CALLOUT",
295
+ "STRUCTURED_SNIPPET",
296
+ "CALL",
297
+ "PRICE",
298
+ "PROMOTION",
299
+ "MOBILE_APP",
300
+ "HEADLINE",
301
+ "DESCRIPTION",
302
+ "LOGO",
303
+ /**
304
+ * Kept because a draft staged before {@link IMAGE_ASSET_LINK_MESSAGE} shipped may still carry one,
305
+ * and because it is the field type an asset-group image occupies. It is refused on an
306
+ * `assetLink.attach` — see that message for what Google actually does with it.
307
+ */
308
+ "MARKETING_IMAGE",
309
+ "BUSINESS_NAME",
310
+ /**
311
+ * The one image link a Search campaign takes. It carries the advertiser's logo beside the ad and
312
+ * is the only image field type that survives Google's field-type check at all — swept live on v23
313
+ * and v25, campaign and customer level both answer `CUSTOMER_NOT_VERIFIED` (an account fact,
314
+ * fixed by advertiser verification) rather than a field-type refusal. Ad group level is not a
315
+ * level Google links it at — see {@link BUSINESS_LOGO_LEVEL_MESSAGE}.
316
+ */
317
+ "BUSINESS_LOGO"
318
+ ];
319
+ var BUSINESS_LOGO_LEVEL_MESSAGE = "Google links a BUSINESS_LOGO at campaign or customer level only \u2014 an ad group link comes back UNSUPPORTED_FIELD_TYPE. Attach it to the campaign instead.";
320
+ var IMAGE_ASSET_LINK_FIELD_TYPES = /* @__PURE__ */ new Set([
321
+ "MARKETING_IMAGE",
322
+ "SQUARE_MARKETING_IMAGE",
323
+ "PORTRAIT_MARKETING_IMAGE",
324
+ "AD_IMAGE"
325
+ ]);
326
+ function isImageAssetLinkFieldType(fieldType) {
327
+ return IMAGE_ASSET_LINK_FIELD_TYPES.has(fieldType);
328
+ }
329
+ var ASSET_GROUP_ASSET_FIELD_TYPES = [
330
+ "MARKETING_IMAGE",
331
+ "SQUARE_MARKETING_IMAGE",
332
+ "PORTRAIT_MARKETING_IMAGE",
333
+ "LOGO",
334
+ "LANDSCAPE_LOGO",
335
+ "YOUTUBE_VIDEO",
336
+ "HEADLINE",
337
+ "LONG_HEADLINE",
338
+ "DESCRIPTION",
339
+ "BUSINESS_NAME",
340
+ "CALL_TO_ACTION_SELECTION"
341
+ ];
342
+ var DEVICE_TYPES = ["MOBILE", "TABLET", "DESKTOP", "CONNECTED_TV", "OTHER"];
343
+ var DAYS_OF_WEEK = ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"];
344
+ var CAMPAIGN_OBJECTIVES = [
345
+ "SALES",
346
+ "LEADS",
347
+ "WEBSITE_TRAFFIC",
348
+ "PRODUCT_BRAND_CONSIDERATION",
349
+ "BRAND_AWARENESS_REACH",
350
+ "APP_PROMOTION",
351
+ "LOCAL_STORE_VISITS"
352
+ ];
353
+ var MICROS_PER_UNIT = 1e6;
354
+ function toMicros(amount) {
355
+ return Math.round(amount * MICROS_PER_UNIT);
356
+ }
357
+ var PLAYBOOK_DAILY_BUDGET_FLOOR_MICROS = 10 * MICROS_PER_UNIT;
358
+ var TEMP_REF_REGEX = /^g_temp_[A-Za-z0-9_-]{2,}$/;
359
+ var NUMERIC_ID_REGEX = /^\d+$/;
360
+ var RESOURCE_NAME_REGEX = /^customers\/\d+\/[A-Za-z]+\/[-\w~]+$/;
361
+ var GEO_TARGET_CONSTANT_REGEX = /^geoTargetConstants\/\d+$/;
362
+ var LANGUAGE_CONSTANT_REGEX = /^languageConstants\/\d+$/;
363
+
364
+ // ../api/src/ads-google/conversion-upload.ts
365
+ import { z } from "zod";
366
+ var CONVERSION_UPLOAD_MAX_ROWS = 200;
367
+ var SHA256_HEX_REGEX = /^[0-9a-f]{64}$/i;
368
+ var conversionUploadActionSchema = z.union([
369
+ z.string().regex(NUMERIC_ID_REGEX, "expected the numeric conversion action id"),
370
+ z.string().regex(RESOURCE_NAME_REGEX, "expected a customers/\u2026/conversionActions/\u2026 resource name")
371
+ ]);
372
+ var clickIdSchema = z.string().min(1).max(512).regex(/^[A-Za-z0-9_.-]+$/, "a click id is letters, digits, '-', '_' and '.' only \u2014 paste the id, not the URL");
373
+ var conversionDateTimeSchema = z.string().regex(
374
+ /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/,
375
+ "expected an ISO-8601 instant WITH a timezone, e.g. 2026-08-01T10:00:00Z or 2026-08-01T12:00:00+02:00"
376
+ ).refine((value) => Number.isFinite(Date.parse(value)), "not a real date");
377
+ var emailSchema = z.string().min(3).max(320).refine(
378
+ (value) => SHA256_HEX_REGEX.test(value) || /^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(value),
379
+ "expected an email address"
380
+ );
381
+ var phoneSchema = z.string().min(4).max(64).refine(
382
+ (value) => SHA256_HEX_REGEX.test(value) || /^\+\d[\d\s().-]{6,}$/.test(value),
383
+ "expected a phone number in E.164 with its country code, e.g. +34600111222 \u2014 a local number hashes to something Google cannot match"
384
+ );
385
+ var nameSchema = z.string().min(1).max(120);
386
+ var addressSchema = z.strictObject({
387
+ givenName: nameSchema,
388
+ familyName: nameSchema,
389
+ /** ISO-3166-1 alpha-2, sent in the clear — it is not identifying on its own. */
390
+ regionCode: z.string().regex(/^[A-Z]{2}$/, "expected a 2-letter country code, e.g. ES"),
391
+ /** Sent in the clear, like the country: Google matches on it as a plain string. */
392
+ postalCode: z.string().min(2).max(16),
393
+ addressLine: z.string().min(1).max(200).optional(),
394
+ city: z.string().min(1).max(100).optional(),
395
+ /** State / province / region, whatever the country calls it. */
396
+ administrativeArea: z.string().min(1).max(100).optional()
397
+ }).describe("advanced matching by name and address");
398
+ var conversionCountSchema = z.number().int().positive().max(1e4);
399
+ var CONVERSION_EVENT_SOURCES = ["WEB", "APP", "IN_STORE", "PHONE", "OTHER"];
400
+ var conversionUploadRowSchema = z.strictObject({
401
+ /**
402
+ * The order id the original conversion carried — Baker's server-side tag sends the Form
403
+ * submission id here, so a repair reuses that. Required: without it Google has no way to tell a
404
+ * re-send from a new conversion, and the only way to find out is to double-count.
405
+ */
406
+ orderId: z.string().min(1).max(64),
407
+ conversionDateTime: conversionDateTimeSchema,
408
+ gclid: clickIdSchema.optional(),
409
+ gbraid: clickIdSchema.optional(),
410
+ wbraid: clickIdSchema.optional(),
411
+ email: emailSchema.optional(),
412
+ phone: phoneSchema.optional(),
413
+ address: addressSchema.optional(),
414
+ conversionCount: conversionCountSchema.optional(),
415
+ eventSource: z.enum(CONVERSION_EVENT_SOURCES).optional(),
416
+ value: z.number().nonnegative().optional(),
417
+ currency: z.string().regex(/^[A-Z]{3}$/, "expected a 3-letter currency code, e.g. EUR").optional()
418
+ }).refine(
419
+ (row) => Boolean(row.gclid ?? row.gbraid ?? row.wbraid ?? row.email ?? row.phone ?? row.address),
420
+ "every conversion needs something to match on: a click id (gclid / gbraid / wbraid), or a customer's email, phone or name+address"
421
+ ).refine(
422
+ (row) => [row.gclid, row.gbraid, row.wbraid].filter(Boolean).length <= 1,
423
+ "pass at most one click id per conversion \u2014 gclid, gbraid and wbraid are three ways of naming the same click"
424
+ ).refine(
425
+ (row) => row.value === void 0 || row.currency !== void 0,
426
+ "a conversion with a value needs its currency too"
427
+ ).refine((row) => row.currency === void 0 || row.value !== void 0, "currency was given with no value");
428
+ var conversionUploadSchema = z.strictObject({
429
+ conversionAction: conversionUploadActionSchema,
430
+ conversions: z.array(conversionUploadRowSchema).min(1).max(CONVERSION_UPLOAD_MAX_ROWS)
431
+ }).refine((payload) => {
432
+ const ids = payload.conversions.map((row) => row.orderId);
433
+ return new Set(ids).size === ids.length;
434
+ }, "two conversions share an order id \u2014 each order id can appear once per upload");
435
+ var MS_PER_DAY = 24 * 60 * 60 * 1e3;
436
+
437
+ // ../api/src/ads-google/structured-snippet-headers.ts
438
+ var STRUCTURED_SNIPPET_HEADERS_EN = [
439
+ "Brands",
440
+ "Amenities",
441
+ "Styles",
442
+ "Types",
443
+ "Destinations",
444
+ "Services",
445
+ "Courses",
446
+ "Neighborhoods",
447
+ "Shows",
448
+ "Insurance coverage",
449
+ "Degree programs",
450
+ "Featured hotels",
451
+ "Models"
452
+ ];
453
+ var STRUCTURED_SNIPPET_HEADERS_LOCALIZED = [
454
+ "Aanbevolen hotels",
455
+ "Acara",
456
+ "Apdro\u0161in\u0101\u0161ana",
457
+ "Apkaimes",
458
+ "Arredores",
459
+ "Asigurare",
460
+ "Asseguran\xE7a",
461
+ "Ausstattung",
462
+ "Automerkit",
463
+ "Bairros",
464
+ "Barrios",
465
+ "Barris",
466
+ "Bestemmingen",
467
+ "Biztos\xEDt\xE1si m\xF3dozat",
468
+ "Blagovne znamke",
469
+ "Brand",
470
+ "Br\xE4ndid",
471
+ "Br\xE4ndit",
472
+ "Buurten",
473
+ "Cakupan asuransi",
474
+ "Carreras universitarias",
475
+ "Cartiere",
476
+ "Ch\u01B0\u01A1ng tr\xECnh",
477
+ "Cilji",
478
+ "Cobertura de seguro",
479
+ "Cobertura do seguro",
480
+ "Comodidades",
481
+ "Coperture assicurativa",
482
+ "Corsi",
483
+ "Corsi di laurea",
484
+ "Cours",
485
+ "Couverture d'assurance",
486
+ "Cursos",
487
+ "Cursuri",
488
+ "Cursussen",
489
+ "C\xEDle",
490
+ "C\u1EA5p b\u1EB1ng",
491
+ "Degree programmes",
492
+ "Dekking",
493
+ "Design",
494
+ "Destinacions",
495
+ "Destinasi",
496
+ "Destinasjoner",
497
+ "Destinationer",
498
+ "Destinazioni",
499
+ "Destina\u021Bii",
500
+ "Destinos",
501
+ "Destin\xE1cie",
502
+ "Dienstleistungen",
503
+ "Diplomaprogramok",
504
+ "Dot\u0103ri",
505
+ "Draudimo apr\u0117ptis",
506
+ "Dzielnice",
507
+ "D\u1ECBch v\u1EE5",
508
+ "Emisije",
509
+ "Emisiuni",
510
+ "Espect\xE1culos",
511
+ "Estilos",
512
+ "Estils",
513
+ "Faciliteter",
514
+ "Fasilitas",
515
+ "Fasiliteter",
516
+ "Forsikringsdekning",
517
+ "Forsikringsd\xE6kning",
518
+ "F\xF6rs\xE4kringstyper",
519
+ "Galam\u0113r\u0137i",
520
+ "Gaya",
521
+ "Hizmetler",
522
+ "Hotel consigliati",
523
+ "Hotel ditampilkan",
524
+ "Hotel pilihan",
525
+ "Hoteles destacados",
526
+ "Hotels destacats",
527
+ "Hoteluri prezentate",
528
+ "Hot\xE9is em destaque",
529
+ "Istaknuti hoteli",
530
+ "Itinatampok na hotel",
531
+ "Jenama",
532
+ "Jenis",
533
+ "Kaupunginosat",
534
+ "Kawasan",
535
+ "Kejiranan",
536
+ "Kemudahan",
537
+ "Kh\xE1ch s\u1EA1n n\u1ED5i b\u1EADt",
538
+ "Kh\xF3a h\u1ECDc",
539
+ "Kiemelt sz\xE1llod\xE1k",
540
+ "Kierunki studi\xF3w",
541
+ "Kindlustuskaitse",
542
+ "Ki\u1EC3u",
543
+ "Kohteet",
544
+ "Kraadi\xF5ppeprogrammid",
545
+ "Kritje zavarovanj",
546
+ "Kurs",
547
+ "Kursai",
548
+ "Kurse",
549
+ "Kurser",
550
+ "Kursi",
551
+ "Kurslar",
552
+ "Kurssit",
553
+ "Kursus",
554
+ "Kursused",
555
+ "Kursy",
556
+ "Kurzy",
557
+ "Laidos",
558
+ "Layanan",
559
+ "Licenciaturas",
560
+ "Liputan insurans",
561
+ "Lisans programlar\u0131",
562
+ "Lis\xE4palvelut",
563
+ "Lokalomr\xE5der",
564
+ "Lo\u1EA1i",
565
+ "Mahalleler",
566
+ "Marcas",
567
+ "Markalar",
568
+ "Marken",
569
+ "Marki",
570
+ "Marques",
571
+ "Mata pelajaran",
572
+ "Merek",
573
+ "Merken",
574
+ "Merkevarer",
575
+ "Mga Amenity",
576
+ "Mga Brand",
577
+ "Mga Destinasyon",
578
+ "Mga Istilo",
579
+ "Mga Komunidad",
580
+ "Mga Kurso",
581
+ "Mga Modelo",
582
+ "Mga Palabas",
583
+ "Mga Serbisyo",
584
+ "Mga Uri",
585
+ "Mga degree program",
586
+ "Miejsca",
587
+ "Model",
588
+ "Modele",
589
+ "Modeli",
590
+ "Modeliai",
591
+ "Modelle",
592
+ "Modellek",
593
+ "Modellen",
594
+ "Modeller",
595
+ "Modelli",
596
+ "Modelos",
597
+ "Modely",
598
+ "Mode\u013Ci",
599
+ "Mod\xE8les",
600
+ "Moksliniai laipsniai",
601
+ "Mudelid",
602
+ "Mugavusteenused",
603
+ "M\xE1rk\xE1k",
604
+ "M\u0103rci",
605
+ "M\u0171sorok",
606
+ "Nabolag",
607
+ "Nam\u0173 apylink\u0117s",
608
+ "Neighbourhoods",
609
+ "Oddaje",
610
+ "Odpor\xFA\u010Dan\xE9 hotely",
611
+ "Odredi\u0161ta",
612
+ "Oppiaineet",
613
+ "Osiguranje",
614
+ "Pakalpojumi",
615
+ "Palvelut",
616
+ "Paskirties vietos",
617
+ "Paslaugos",
618
+ "Patogumai",
619
+ "Perkhidmatan",
620
+ "Ph\u1EA1m vi b\u1EA3o hi\u1EC3m",
621
+ "Pied\u0101v\u0101t\u0101s viesn\u012Bcas",
622
+ "Poistenie",
623
+ "Poji\u0161t\u011Bn\xED",
624
+ "Polecane hotele",
625
+ "Ponudba",
626
+ "Po\u0159ady",
627
+ "Predstavljeni hoteli",
628
+ "Preki\u0173 \u017Eenklai",
629
+ "Program",
630
+ "Program ijazah",
631
+ "Program sarjana",
632
+ "Programas",
633
+ "Programas de gradua\xE7\xE3o",
634
+ "Programe de studiu",
635
+ "Programes",
636
+ "Programlar",
637
+ "Programmer",
638
+ "Programmes d'\xE9tudes",
639
+ "Programmi",
640
+ "Programy",
641
+ "P\u0101rraides",
642
+ "Quartieri",
643
+ "Quartiers",
644
+ "Rancangan",
645
+ "Rel\xE1cie",
646
+ "Resm\xE5l",
647
+ "Robne marke",
648
+ "Saated ja etendused",
649
+ "Sadr\u017Eaji",
650
+ "Sakop ng insurance",
651
+ "Serien",
652
+ "Serier",
653
+ "Serveis",
654
+ "Serveis addicionals",
655
+ "Servicii",
656
+ "Servicios",
657
+ "Servicios adicionales",
658
+ "Servizi",
659
+ "Servi\xE7os",
660
+ "Show't",
661
+ "Sigorta kapsam\u0131",
662
+ "Sihtkohad",
663
+ "Si\u016Blomi vie\u0161bu\u010Diai",
664
+ "Slogi",
665
+ "Slu\u017Eby",
666
+ "Soovitatud hotellid",
667
+ "Soseske",
668
+ "Stiilid",
669
+ "Stijlen",
670
+ "Stilar",
671
+ "Stile",
672
+ "Stiler",
673
+ "Stili",
674
+ "Stiliai",
675
+ "Stiller",
676
+ "Stilovi",
677
+ "Stiluri",
678
+ "Storitve",
679
+ "Studieng\xE4nge",
680
+ "Studieprogramma's",
681
+ "Studijn\xED programy",
682
+ "Studijski programi",
683
+ "Studiju programmas",
684
+ "Style",
685
+ "Styly",
686
+ "St\xEDlusok",
687
+ "Sunulan olanaklar",
688
+ "Suositellut hotellit",
689
+ "Szolg\xE1ltat\xE1sok",
690
+ "S\xE9lection d'h\xF4tels",
691
+ "Tanfolyamok",
692
+ "Teenused",
693
+ "Te\u010Dajevi",
694
+ "Te\u010Daji",
695
+ "Th\u01B0\u01A1ng hi\u1EC7u",
696
+ "Tipai",
697
+ "Tipi",
698
+ "Tipos",
699
+ "Tipuri",
700
+ "Tipus",
701
+ "Titulacions",
702
+ "Ti\u1EC7n nghi",
703
+ "Tjenester",
704
+ "Tj\xE4nster",
705
+ "Typen",
706
+ "Typer",
707
+ "Typy",
708
+ "Tyylit",
709
+ "Tyypit",
710
+ "T\xEDpusok",
711
+ "T\xFCrler",
712
+ "T\xFC\xFCbid",
713
+ "Ubezpieczenia",
714
+ "Uddannelser",
715
+ "Udogodnienia",
716
+ "Udvalgte hoteller",
717
+ "Usluge",
718
+ "Us\u0142ugi",
719
+ "Utbildningsprogram",
720
+ "Utdanningsprogrammer",
721
+ "Utvalda hotell",
722
+ "Utvalgte hoteller",
723
+ "Vakuutukset",
724
+ "Varum\xE4rken",
725
+ "Veidi",
726
+ "Versicherungsleistung",
727
+ "Viertel",
728
+ "Voorzieningen",
729
+ "Vorgestellte Hotels",
730
+ "Vrste",
731
+ "Vybavenie",
732
+ "Vybaven\xED",
733
+ "Vybran\xE9 hotely",
734
+ "Vzdel\xE1vacie programy",
735
+ "V\xE1rosr\xE9szek",
736
+ "V\xF9ng l\xE2n c\u1EADn",
737
+ "Ziele",
738
+ "Zna\u010Dky",
739
+ "Zn\xE1m\xE9 oblasti",
740
+ "Z\u012Bmoli",
741
+ "destinasyonlar",
742
+ "\xC9missions",
743
+ "\xC9quipements",
744
+ "\xD6ne \xE7\u0131kan oteller",
745
+ "\xDAti c\xE9lok",
746
+ "\xDCmbruskonnad",
747
+ "\u010Cetvrti",
748
+ "\u0110i\u1EC3m \u0111\u1EBFn",
749
+ "\u0112rt\u012Bbas",
750
+ "\u0160tudijski programi",
751
+ "\u0160tvrte",
752
+ "\u0160t\xFDly",
753
+ "\u0391\u03C3\u03C6\u03B1\u03BB\u03B9\u03C3\u03C4\u03B9\u03BA\u03AE \u03BA\u03AC\u03BB\u03C5\u03C8\u03B7",
754
+ "\u0393\u03B5\u03B9\u03C4\u03BF\u03BD\u03B9\u03AD\u03C2",
755
+ "\u0395\u03BA\u03C0\u03BF\u03BC\u03C0\u03AD\u03C2",
756
+ "\u0395\u03C0\u03C9\u03BD\u03C5\u03BC\u03AF\u03B5\u03C2",
757
+ "\u039C\u03B1\u03B8\u03AE\u03BC\u03B1\u03C4\u03B1",
758
+ "\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03B1",
759
+ "\u039E\u03B5\u03BD\u03BF\u03B4\u03BF\u03C7\u03B5\u03AF\u03B1",
760
+ "\u03A0\u03B1\u03C1\u03BF\u03C7\u03AD\u03C2",
761
+ "\u03A0\u03C1\u03BF\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1 \u03C0\u03C4\u03C5\u03C7\u03AF\u03C9\u03BD",
762
+ "\u03A0\u03C1\u03BF\u03BF\u03C1\u03B9\u03C3\u03BC\u03BF\u03AF",
763
+ "\u03A3\u03C4\u03C5\u03BB",
764
+ "\u03A4\u03CD\u03C0\u03BF\u03B9",
765
+ "\u03A5\u03C0\u03B7\u03C1\u03B5\u03C3\u03AF\u03B5\u03C2",
766
+ "\u0411\u0440\u0435\u043D\u0434\u0438",
767
+ "\u0411\u0440\u0435\u043D\u0434\u044B",
768
+ "\u0414\u0435\u0441\u0442\u0438\u043D\u0430\u0446\u0438\u0438",
769
+ "\u0417\u0430\u0441\u0442\u0440\u0430\u0445\u043E\u0432\u043A\u0430",
770
+ "\u0417\u0440\u0443\u0447\u043D\u043E\u0441\u0442\u0456",
771
+ "\u041A\u0432\u0430\u0440\u0442\u0430\u043B\u0438",
772
+ "\u041A\u0443\u0440\u0441\u0438",
773
+ "\u041A\u0443\u0440\u0441\u043E\u0432\u0435",
774
+ "\u041A\u0443\u0440\u0441\u044B",
775
+ "\u041C\u0430\u0440\u043A\u0438",
776
+ "\u041C\u0435\u0441\u0442\u0430",
777
+ "\u041C\u043E\u0434\u0435\u043B\u0438",
778
+ "\u041C\u043E\u0434\u0435\u043B\u0456",
779
+ "\u041C\u0456\u0441\u0446\u044F",
780
+ "\u041E\u0441\u0432\u0456\u0442\u043D\u0456 \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u0438",
781
+ "\u041F\u043E\u0441\u043B\u0443\u0433\u0438",
782
+ "\u041F\u0440\u0435\u0434\u0430\u0432\u0430\u043D\u0438\u044F",
783
+ "\u041F\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0435\u043D\u0438 \u0445\u043E\u0442\u0435\u043B\u0438",
784
+ "\u041F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B \u0432\u044B\u0441\u0448\u0435\u0433\u043E \u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F",
785
+ "\u0420\u0430\u0439\u043E\u043D\u044B",
786
+ "\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u043E\u0432\u0430\u043D\u0456 \u0433\u043E\u0442\u0435\u043B\u0456",
787
+ "\u0420\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u043C\u044B\u0435 \u043E\u0442\u0435\u043B\u0438",
788
+ "\u0421\u043F\u0435\u0446\u0438\u0430\u043B\u043D\u043E\u0441\u0442\u0438",
789
+ "\u0421\u0442\u0438\u043B\u0438",
790
+ "\u0421\u0442\u0438\u043B\u043E\u0432\u0435",
791
+ "\u0421\u0442\u0438\u043B\u0456",
792
+ "\u0421\u0442\u0440\u0430\u0445\u043E\u0432\u0430\u044F \u0437\u0430\u0449\u0438\u0442\u0430",
793
+ "\u0421\u0442\u0440\u0430\u0445\u043E\u0432\u0438\u0439 \u0437\u0430\u0445\u0438\u0441\u0442",
794
+ "\u0422\u0438\u043F\u0438",
795
+ "\u0422\u0438\u043F\u043E\u0432\u0435",
796
+ "\u0422\u0438\u043F\u044B",
797
+ "\u0423\u0434\u043E\u0431\u0441\u0442\u0432\u0430",
798
+ "\u0423\u0441\u043B\u0443\u0433\u0438",
799
+ "\u0428\u043E\u0443",
800
+ "\u0431\u0440\u0435\u043D\u0434\u043E\u0432\u0438",
801
+ "\u0434\u0435\u043B\u043E\u0432\u0438 \u0433\u0440\u0430\u0434\u0430",
802
+ "\u0434\u0435\u0441\u0442\u0438\u043D\u0430\u0446\u0438\u0458\u0435",
803
+ "\u0434\u0438\u043F\u043B\u043E\u043C\u0435",
804
+ "\u0435\u043C\u0438\u0441\u0438\u0458\u0435",
805
+ "\u0438\u0441\u0442\u0430\u043A\u043D\u0443\u0442\u0438 \u0445\u043E\u0442\u0435\u043B\u0438",
806
+ "\u043A\u0443\u0440\u0441\u0435\u0432\u0438",
807
+ "\u043C\u043E\u0434\u0435\u043B\u0438",
808
+ "\u043E\u0441\u0438\u0433\u0443\u0440\u0430\u045A\u0435",
809
+ "\u0441\u0430\u0434\u0440\u0436\u0430\u0458\u0438",
810
+ "\u0441\u0442\u0438\u043B\u043E\u0432\u0438",
811
+ "\u0442\u0438\u043F\u043E\u0432\u0438",
812
+ "\u0443\u0441\u043B\u0443\u0433\u0435",
813
+ "\u05D3\u05D2\u05DE\u05D9\u05DD",
814
+ "\u05D4\u05D5\u05E4\u05E2\u05D5\u05EA \u05D5\u05EA\u05D5\u05DB\u05E0\u05D9\u05D5\u05EA",
815
+ "\u05D9\u05E2\u05D3\u05D9\u05DD \u05D2\u05D9\u05D0\u05D5\u05D2\u05E8\u05E4\u05D9\u05D9\u05DD",
816
+ "\u05DB\u05D9\u05E1\u05D5\u05D9 \u05D1\u05D9\u05D8\u05D5\u05D7\u05D9",
817
+ "\u05DE\u05D5\u05EA\u05D2\u05D9\u05DD",
818
+ "\u05DE\u05DC\u05D5\u05E0\u05D5\u05EA \u05DE\u05D5\u05DE\u05DC\u05E6\u05D9\u05DD",
819
+ "\u05E1\u05D2\u05E0\u05D5\u05E0\u05D5\u05EA",
820
+ "\u05E1\u05D5\u05D2\u05D9\u05DD",
821
+ "\u05E7\u05D5\u05E8\u05E1\u05D9\u05DD",
822
+ "\u05E9\u05D9\u05E8\u05D5\u05EA\u05D9 \u05D4\u05DE\u05E7\u05D5\u05DD",
823
+ "\u05E9\u05D9\u05E8\u05D5\u05EA\u05D9\u05DD",
824
+ "\u05E9\u05DB\u05D5\u05E0\u05D5\u05EA",
825
+ "\u05EA\u05D5\u05DB\u05E0\u05D9\u05D5\u05EA \u05DC\u05DC\u05D9\u05DE\u05D5\u05D3\u05D9 \u05EA\u05D5\u05D0\u05E8",
826
+ "\u0627\u0644\u0623\u062D\u064A\u0627\u0621",
827
+ "\u0627\u0644\u0623\u0646\u0645\u0627\u0637",
828
+ "\u0627\u0644\u0623\u0646\u0648\u0627\u0639",
829
+ "\u0627\u0644\u062A\u063A\u0637\u064A\u0629 \u0627\u0644\u062A\u0623\u0645\u064A\u0646\u064A\u0629",
830
+ "\u0627\u0644\u062E\u062F\u0645\u0627\u062A",
831
+ "\u0627\u0644\u062F\u0648\u0631\u0627\u062A \u0627\u0644\u062A\u062F\u0631\u064A\u0628\u064A\u0629",
832
+ "\u0627\u0644\u0639\u0631\u0648\u0636",
833
+ "\u0627\u0644\u0639\u0644\u0627\u0645\u0627\u062A \u0627\u0644\u062A\u062C\u0627\u0631\u064A\u0629",
834
+ "\u0627\u0644\u0641\u0646\u0627\u062F\u0642 \u0627\u0644\u0645\u0645\u064A\u0651\u0632\u0629",
835
+ "\u0627\u0644\u0646\u0645\u0627\u0630\u062C",
836
+ "\u0627\u0644\u0648\u062C\u0647\u0627\u062A",
837
+ "\u0628\u0631\u0627\u0645\u062C \u0627\u0644\u0634\u0647\u0627\u062F\u0627\u062A",
838
+ "\u0648\u0633\u0627\u0626\u0644 \u0627\u0644\u0631\u0627\u062D\u0629",
839
+ "\u0906\u0938-\u092A\u0921\u093C\u094B\u0938",
840
+ "\u0917\u0902\u0924\u0935\u094D\u092F",
841
+ "\u0921\u093F\u0917\u094D\u0930\u0940 \u0915\u093E\u0930\u094D\u092F\u0915\u094D\u0930\u092E",
842
+ "\u092A\u093E\u0920\u094D\u200D\u092F\u0915\u094D\u0930\u092E",
843
+ "\u092A\u094D\u0930\u0915\u093E\u0930",
844
+ "\u092A\u094D\u0930\u0926\u0930\u094D\u0936\u093F\u0924 \u0939\u094B\u091F\u0932",
845
+ "\u092C\u0940\u092E\u093E \u0915\u0935\u0930\u0947\u091C",
846
+ "\u092C\u094D\u0930\u093E\u0902\u0921",
847
+ "\u092E\u0949\u0921\u0932",
848
+ "\u0936\u0948\u0932\u093F\u092F\u093E\u0902",
849
+ "\u0936\u094B",
850
+ "\u0938\u0941\u0935\u093F\u0927\u093E\u090F\u0902",
851
+ "\u0938\u0947\u0935\u093E\u090F\u0902",
852
+ "\u0E04\u0E27\u0E32\u0E21\u0E04\u0E38\u0E49\u0E21\u0E04\u0E23\u0E2D\u0E07\u0E43\u0E19\u0E1B\u0E23\u0E30\u0E01\u0E31\u0E19",
853
+ "\u0E1A\u0E23\u0E34\u0E01\u0E32\u0E23",
854
+ "\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17",
855
+ "\u0E1B\u0E25\u0E32\u0E22\u0E17\u0E32\u0E07",
856
+ "\u0E22\u0E48\u0E32\u0E19\u0E43\u0E01\u0E25\u0E49\u0E40\u0E04\u0E35\u0E22\u0E07",
857
+ "\u0E23\u0E38\u0E48\u0E19",
858
+ "\u0E2A\u0E34\u0E48\u0E07\u0E2D\u0E33\u0E19\u0E27\u0E22\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E30\u0E14\u0E27\u0E01",
859
+ "\u0E2A\u0E44\u0E15\u0E25\u0E4C",
860
+ "\u0E2B\u0E25\u0E31\u0E01\u0E2A\u0E39\u0E15\u0E23",
861
+ "\u0E2B\u0E25\u0E31\u0E01\u0E2A\u0E39\u0E15\u0E23\u0E1B\u0E23\u0E34\u0E0D\u0E0D\u0E32",
862
+ "\u0E41\u0E1A\u0E23\u0E19\u0E14\u0E4C",
863
+ "\u0E42\u0E0A\u0E27\u0E4C",
864
+ "\u0E42\u0E23\u0E07\u0E41\u0E23\u0E21\u0E40\u0E14\u0E48\u0E19",
865
+ "\u304A\u3059\u3059\u3081\u306E\u30DB\u30C6\u30EB",
866
+ "\u30B3\u30FC\u30B9",
867
+ "\u30B5\u30FC\u30D3\u30B9",
868
+ "\u30B9\u30BF\u30A4\u30EB",
869
+ "\u30BF\u30A4\u30D7",
870
+ "\u30D6\u30E9\u30F3\u30C9",
871
+ "\u30E2\u30C7\u30EB",
872
+ "\u4FDD\u967A\u306E\u4FDD\u969C",
873
+ "\u4FDD\u969C\u7BC4\u570D",
874
+ "\u5230\u7740\u5730",
875
+ "\u5468\u8FBA\u5730\u57DF",
876
+ "\u54C1\u724C",
877
+ "\u578B\u53F7",
878
+ "\u578B\u865F",
879
+ "\u5B66\u4F4D\u30D7\u30ED\u30B0\u30E9\u30E0",
880
+ "\u5B66\u4F4D\u8BFE\u7A0B",
881
+ "\u5B78\u4F4D\u8AB2\u7A0B",
882
+ "\u627F\u4FDD\u7BC4\u570D",
883
+ "\u670D\u52A1",
884
+ "\u670D\u52D9",
885
+ "\u6B3E\u5F0F",
886
+ "\u7279\u8272\u9152\u5E97",
887
+ "\u756A\u7D44",
888
+ "\u76EE\u7684\u5730",
889
+ "\u793E\u533A",
890
+ "\u793E\u5340",
891
+ "\u7BC0\u76EE",
892
+ "\u7C7B\u578B",
893
+ "\u7CBE\u9009\u9152\u5E97",
894
+ "\u7CBE\u9078\u98EF\u5E97",
895
+ "\u8282\u76EE",
896
+ "\u8A2D\u5099",
897
+ "\u8A2D\u65BD",
898
+ "\u8AB2\u7A0B",
899
+ "\u8BBE\u65BD",
900
+ "\u8BFE\u7A0B",
901
+ "\u9669\u79CD",
902
+ "\u985E\u578B",
903
+ "\uACFC\uC815",
904
+ "\uBAA8\uB378",
905
+ "\uBAA9\uC801\uC9C0",
906
+ "\uBCF4\uD5D8 \uBCF4\uC0C1 \uBC94\uC704",
907
+ "\uBE0C\uB79C\uB4DC",
908
+ "\uC11C\uBE44\uC2A4",
909
+ "\uC2A4\uD0C0\uC77C",
910
+ "\uC720\uD615",
911
+ "\uC778\uADFC \uC9C0\uC5ED",
912
+ "\uCD94\uCC9C \uD638\uD154",
913
+ "\uD3B8\uC758 \uC2DC\uC124",
914
+ "\uD504\uB85C\uADF8\uB7A8",
915
+ "\uD559\uC704 \uCDE8\uB4DD \uD504\uB85C\uADF8\uB7A8"
916
+ ];
917
+ var HEADER_ALIASES = /* @__PURE__ */ new Map([["service catalog", "Services"]]);
918
+ var ACCEPTED = /* @__PURE__ */ new Set([...STRUCTURED_SNIPPET_HEADERS_EN, ...STRUCTURED_SNIPPET_HEADERS_LOCALIZED]);
919
+ var BY_FOLDED_CASE = new Map([...ACCEPTED].map((header) => [header.toLowerCase(), header]));
920
+ function canonicalStructuredSnippetHeader(header) {
921
+ const trimmed = header.trim();
922
+ if (ACCEPTED.has(trimmed)) {
923
+ return trimmed;
924
+ }
925
+ const folded = trimmed.toLowerCase();
926
+ return HEADER_ALIASES.get(folded) ?? BY_FOLDED_CASE.get(folded);
927
+ }
928
+
929
+ // ../api/src/ads-google/ops.ts
930
+ import { z as z2 } from "zod";
931
+ var tempRefSchema = z2.string().regex(TEMP_REF_REGEX, "expected a g_temp_* reference");
932
+ var refSchema = z2.union([
933
+ z2.string().regex(RESOURCE_NAME_REGEX, "expected a customers/\u2026/\u2026/\u2026 resource name"),
934
+ z2.string().regex(NUMERIC_ID_REGEX, "expected a numeric id"),
935
+ tempRefSchema
936
+ ]);
937
+ var targetRefSchema = refSchema;
938
+ var microsSchema = z2.number().int().positive("expected a positive micros amount");
939
+ var httpsUrlSchema = z2.string().url().refine((u) => u.startsWith("https://"), "final URLs must be https");
940
+ var customerIdSchema = z2.string().regex(NUMERIC_ID_REGEX, "customerId must be the bare numeric customer id");
941
+ var stageableStatusSchema = z2.enum(STAGEABLE_CREATE_STATUSES);
942
+ var matchTypeSchema = z2.enum(KEYWORD_MATCH_TYPES);
943
+ var finalUrlSuffixSchema = z2.string().max(GOOGLE_ADS_LIMITS.campaign.finalUrlSuffixMax).refine((s) => !/^[?&]/.test(s), "drop the leading ? or & \u2014 a final URL suffix is bare query parameters").refine((s) => !s.includes("{lpurl}"), "{lpurl} belongs in a tracking template, not in a final URL suffix").refine((s) => !/\s/.test(s), "a final URL suffix cannot contain whitespace").refine((s) => s === "" || s.includes("="), 'expected key=value pairs, e.g. "utm_source=google&utm_agency=baker"');
944
+ var LANDING_PAGE_TAGS = ["{lpurl}", "{unescapedlpurl}", "{escapedlpurl}", "{lpurl+2}", "{lpurl+3}"];
945
+ var trackingUrlTemplateSchema = z2.string().max(GOOGLE_ADS_LIMITS.campaign.trackingUrlTemplateMax).refine((t) => !/\s/.test(t), "a tracking template cannot contain whitespace").refine(
946
+ (t) => t === "" || LANDING_PAGE_TAGS.some((tag) => t.includes(tag)),
947
+ `a tracking template must carry the landing page through one of ${LANDING_PAGE_TAGS.join(", ")}, e.g. "https://tracker.example/?url={lpurl}"`
948
+ ).refine(
949
+ (t) => t === "" || /^(https?:\/\/|\{)/.test(t),
950
+ "a tracking template must start with http://, https:// or a {lpurl} tag"
951
+ );
952
+ var urlCustomParametersSchema = z2.array(
953
+ z2.strictObject({
954
+ key: z2.string().min(1).max(GOOGLE_ADS_LIMITS.campaign.urlCustomParameterKeyMax).regex(/^[A-Za-z0-9_]+$/, "a custom parameter key is letters, digits and underscores only"),
955
+ value: z2.string().max(GOOGLE_ADS_LIMITS.campaign.urlCustomParameterValueMax)
956
+ })
957
+ ).max(GOOGLE_ADS_LIMITS.campaign.urlCustomParametersMax).refine(
958
+ (params) => new Set(params.map((p) => p.key)).size === params.length,
959
+ "each custom parameter key can appear only once"
960
+ );
961
+ var keywordTextSchema = z2.string().min(1).max(GOOGLE_ADS_LIMITS.keyword.textMax).refine((t) => t.trim().split(/\s+/).length <= GOOGLE_ADS_LIMITS.keyword.wordsMax, "keyword exceeds 10 words");
962
+ var budgetCreateSchema = z2.strictObject({
963
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.budget.nameMax),
964
+ amountMicros: microsSchema,
965
+ deliveryMethod: z2.enum(BUDGET_DELIVERY_METHODS).default("STANDARD"),
966
+ explicitlyShared: z2.boolean().default(false)
967
+ });
968
+ var budgetUpdateSchema = z2.strictObject({
969
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.budget.nameMax).optional(),
970
+ amountMicros: microsSchema.optional(),
971
+ deliveryMethod: z2.enum(BUDGET_DELIVERY_METHODS).optional()
972
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
973
+ var biddingConfigSchema = z2.strictObject({
974
+ type: z2.enum(BIDDING_STRATEGY_TYPES),
975
+ targetCpaMicros: microsSchema.optional(),
976
+ targetRoas: z2.number().positive().optional(),
977
+ /** Demand Gen only — `Campaign.target_cpc.target_cpc_micros`. */
978
+ targetCpcMicros: microsSchema.optional(),
979
+ cpcBidCeilingMicros: microsSchema.optional(),
980
+ enhancedCpcEnabled: z2.boolean().optional()
981
+ }).superRefine((p, ctx) => {
982
+ if (p.type === "TARGET_CPA" && p.targetCpaMicros === void 0) {
983
+ ctx.addIssue({ code: "custom", path: ["targetCpaMicros"], message: "TARGET_CPA needs targetCpaMicros" });
984
+ }
985
+ if (p.type === "TARGET_ROAS" && p.targetRoas === void 0) {
986
+ ctx.addIssue({ code: "custom", path: ["targetRoas"], message: "TARGET_ROAS needs targetRoas" });
987
+ }
988
+ if (p.type === "TARGET_CPC" && p.targetCpcMicros === void 0) {
989
+ ctx.addIssue({ code: "custom", path: ["targetCpcMicros"], message: "TARGET_CPC needs targetCpcMicros" });
990
+ }
991
+ });
992
+ var networkSettingsSchema = z2.strictObject({
993
+ targetGoogleSearch: z2.boolean().optional(),
994
+ targetSearchNetwork: z2.boolean().optional(),
995
+ targetContentNetwork: z2.boolean().optional(),
996
+ targetPartnerSearchNetwork: z2.boolean().optional()
997
+ });
998
+ var dateSchema = z2.string().regex(/^\d{4}-\d{2}-\d{2}$/, "expected a YYYY-MM-DD date");
999
+ var geoTargetTypeSettingSchema = z2.strictObject({
1000
+ positiveGeoTargetType: z2.enum(POSITIVE_GEO_TARGET_TYPES).optional(),
1001
+ negativeGeoTargetType: z2.enum(NEGATIVE_GEO_TARGET_TYPES).optional()
1002
+ }).refine(
1003
+ (p) => p.positiveGeoTargetType !== void 0 || p.negativeGeoTargetType !== void 0,
1004
+ "geoTargetTypeSetting needs positiveGeoTargetType and/or negativeGeoTargetType"
1005
+ );
1006
+ var textGuidelinesSchema = z2.strictObject({
1007
+ termExclusions: z2.array(z2.string().trim().min(1).max(GOOGLE_ADS_LIMITS.campaign.termExclusionMax)).max(GOOGLE_ADS_LIMITS.campaign.termExclusionsMax).optional(),
1008
+ messagingRestrictions: z2.array(z2.string().trim().min(1).max(GOOGLE_ADS_LIMITS.campaign.messagingRestrictionMax)).max(GOOGLE_ADS_LIMITS.campaign.messagingRestrictionsMax).refine(
1009
+ (rules) => new Set(rules.map((rule) => rule.toLowerCase())).size === rules.length,
1010
+ "each messaging restriction must be unique"
1011
+ ).optional()
1012
+ }).refine(
1013
+ (p) => p.termExclusions !== void 0 || p.messagingRestrictions !== void 0,
1014
+ "textGuidelines needs termExclusions and/or messagingRestrictions"
1015
+ );
1016
+ var AI_MAX_TEXT_NEEDS_AI_MAX_MESSAGE = "AI Max text customization only works with AI Max on: also turn AI Max on, or leave text customization off.";
1017
+ var AI_MAX_URL_NEEDS_TEXT_MESSAGE = "AI Max final URL expansion only works with text customization on: also turn text customization on, or leave URL expansion off.";
1018
+ var aiMaxSchema = z2.strictObject({
1019
+ enabled: z2.boolean().optional(),
1020
+ textCustomization: z2.boolean().optional(),
1021
+ finalUrlExpansion: z2.boolean().optional()
1022
+ }).superRefine((p, ctx) => {
1023
+ if (p.enabled === void 0 && p.textCustomization === void 0 && p.finalUrlExpansion === void 0) {
1024
+ ctx.addIssue({ code: "custom", message: "aiMax needs enabled, textCustomization and/or finalUrlExpansion" });
1025
+ }
1026
+ if (p.enabled === false && p.textCustomization === true) {
1027
+ ctx.addIssue({ code: "custom", path: ["textCustomization"], message: AI_MAX_TEXT_NEEDS_AI_MAX_MESSAGE });
1028
+ }
1029
+ if (p.textCustomization === false && p.finalUrlExpansion === true) {
1030
+ ctx.addIssue({ code: "custom", path: ["finalUrlExpansion"], message: AI_MAX_URL_NEEDS_TEXT_MESSAGE });
1031
+ }
1032
+ });
1033
+ var AI_MAX_SEARCH_ONLY_MESSAGE = "AI Max exists only on Search campaigns.";
1034
+ function aiMaxCreateRefusal(channelType, aiMax) {
1035
+ if (!aiMax) {
1036
+ return void 0;
1037
+ }
1038
+ if (channelType !== "SEARCH") {
1039
+ return AI_MAX_SEARCH_ONLY_MESSAGE;
1040
+ }
1041
+ if (aiMax.enabled !== true && aiMax.textCustomization === true) {
1042
+ return AI_MAX_TEXT_NEEDS_AI_MAX_MESSAGE;
1043
+ }
1044
+ if (aiMax.textCustomization !== true && aiMax.finalUrlExpansion === true) {
1045
+ return AI_MAX_URL_NEEDS_TEXT_MESSAGE;
1046
+ }
1047
+ return void 0;
1048
+ }
1049
+ var campaignCreateSchema = z2.strictObject({
1050
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.campaign.nameMax),
1051
+ channelType: z2.enum(ADVERTISING_CHANNEL_TYPES),
1052
+ channelSubType: z2.enum(ADVERTISING_CHANNEL_SUB_TYPES).optional(),
1053
+ budget: refSchema,
1054
+ /** Inline standard bidding, or a portfolio strategy ref via biddingStrategy. */
1055
+ bidding: biddingConfigSchema.optional(),
1056
+ biddingStrategy: refSchema.optional(),
1057
+ networkSettings: networkSettingsSchema.optional(),
1058
+ /**
1059
+ * "Location options". Omitted stages Google's own default — reach people *in or interested in*
1060
+ * the targeted locations — so pass `PRESENCE` explicitly when only people physically there count.
1061
+ */
1062
+ geoTargetTypeSetting: geoTargetTypeSettingSchema.optional(),
1063
+ startDate: dateSchema.optional(),
1064
+ endDate: dateSchema.optional(),
1065
+ /** Campaign-level override of the account's final URL suffix — REPLACES it, never merges. */
1066
+ finalUrlSuffix: finalUrlSuffixSchema.optional(),
1067
+ /** Campaign-level override of the account's tracking template — REPLACES it, never merges. */
1068
+ trackingUrlTemplate: trackingUrlTemplateSchema.optional(),
1069
+ /** The `{_name}` parameters this campaign's tracking template and final URLs can reference. */
1070
+ urlCustomParameters: urlCustomParametersSchema.optional(),
1071
+ /** Advisory Google Ads UI objective — drives warnings, not sent to the API. */
1072
+ objective: z2.enum(CAMPAIGN_OBJECTIVES).optional(),
1073
+ /**
1074
+ * Whether the campaign contains EU political advertising. Google requires the declaration on
1075
+ * every campaign create (FieldError.REQUIRED without it); omitted means it does not.
1076
+ */
1077
+ euPoliticalAds: z2.boolean().optional(),
1078
+ /** AI Max for Search. A new campaign has it off unless this turns it on. */
1079
+ aiMax: aiMaxSchema.optional(),
1080
+ status: stageableStatusSchema.default("PAUSED")
1081
+ }).superRefine((p, ctx) => {
1082
+ if (!p.bidding && !p.biddingStrategy) {
1083
+ ctx.addIssue({
1084
+ code: "custom",
1085
+ path: ["bidding"],
1086
+ message: "set an inline bidding strategy or reference a portfolio biddingStrategy"
1087
+ });
1088
+ }
1089
+ if (p.bidding && p.biddingStrategy) {
1090
+ ctx.addIssue({
1091
+ code: "custom",
1092
+ path: ["bidding"],
1093
+ message: "use inline bidding OR a portfolio biddingStrategy, not both"
1094
+ });
1095
+ }
1096
+ if (p.channelType === "PERFORMANCE_MAX" && p.bidding && p.bidding.type === "MANUAL_CPC") {
1097
+ ctx.addIssue({ code: "custom", path: ["bidding"], message: "Performance Max does not support Manual CPC" });
1098
+ }
1099
+ const channelRefusal = mergedTargetStrategyRefusal(p.channelType, p.bidding?.type) ?? demandGenOnlyStrategyRefusal(p.channelType, p.bidding?.type) ?? manualCpcOnDemandGenRefusal(p.channelType, p.bidding?.type) ?? embeddedTargetOnDemandGenRefusal(p.channelType, p.bidding);
1100
+ if (channelRefusal) {
1101
+ ctx.addIssue({ code: "custom", path: ["bidding"], message: channelRefusal });
1102
+ }
1103
+ if (p.startDate && p.endDate && p.endDate <= p.startDate) {
1104
+ ctx.addIssue({ code: "custom", path: ["endDate"], message: "endDate must be after startDate" });
1105
+ }
1106
+ const aiMaxRefusal = aiMaxCreateRefusal(p.channelType, p.aiMax);
1107
+ if (aiMaxRefusal) {
1108
+ ctx.addIssue({ code: "custom", path: ["aiMax"], message: aiMaxRefusal });
1109
+ }
1110
+ });
1111
+ var campaignUpdateSchema = z2.strictObject({
1112
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.campaign.nameMax).optional(),
1113
+ budget: refSchema.optional(),
1114
+ bidding: biddingConfigSchema.optional(),
1115
+ networkSettings: networkSettingsSchema.optional(),
1116
+ /** Switches an existing campaign between "Presence or interest" and "Presence". */
1117
+ geoTargetTypeSetting: geoTargetTypeSettingSchema.optional(),
1118
+ startDate: dateSchema.optional(),
1119
+ endDate: dateSchema.optional(),
1120
+ /** Campaign-level override of the account's final URL suffix. `""` clears it back to the account value. */
1121
+ finalUrlSuffix: finalUrlSuffixSchema.optional(),
1122
+ /** Campaign-level tracking template. `""` clears it back to the account value. */
1123
+ trackingUrlTemplate: trackingUrlTemplateSchema.optional(),
1124
+ /** Replaces the campaign's custom parameters wholesale; `[]` removes them all. */
1125
+ urlCustomParameters: urlCustomParametersSchema.optional(),
1126
+ /** Corrects the campaign's EU political advertising declaration (true = contains, false = does not). */
1127
+ euPoliticalAds: z2.boolean().optional(),
1128
+ /** AI Max / Performance Max text guidelines. Google refuses them on a Search campaign without AI Max. */
1129
+ textGuidelines: textGuidelinesSchema.optional(),
1130
+ /** Turns AI Max or its features on or off. Search campaigns only (checked against the live channel). */
1131
+ aiMax: aiMaxSchema.optional(),
1132
+ status: z2.enum(["ENABLED", "PAUSED", "REMOVED"]).optional()
1133
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
1134
+ var adGroupCreateSchema = z2.strictObject({
1135
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.adGroup.nameMax),
1136
+ campaign: refSchema,
1137
+ /**
1138
+ * Optional, and NOT defaulted: Google derives an ad group's type from its campaign's channel when
1139
+ * it is unset, and for a Demand Gen campaign that is the only way to say it — the v23 enum has no
1140
+ * Demand Gen value at all. A default of `SEARCH_STANDARD` would state a type nobody chose on every
1141
+ * ad group Baker stages, which on a Demand Gen campaign is a whole-batch publish failure.
1142
+ */
1143
+ type: z2.enum(AD_GROUP_TYPES).optional(),
1144
+ cpcBidMicros: microsSchema.optional(),
1145
+ status: stageableStatusSchema.default("PAUSED")
1146
+ });
1147
+ var adGroupUpdateSchema = z2.strictObject({
1148
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.adGroup.nameMax).optional(),
1149
+ cpcBidMicros: microsSchema.optional(),
1150
+ status: z2.enum(["ENABLED", "PAUSED", "REMOVED"]).optional()
1151
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
1152
+ var keywordAddSchema = z2.strictObject({
1153
+ adGroup: refSchema,
1154
+ text: keywordTextSchema,
1155
+ matchType: matchTypeSchema,
1156
+ cpcBidMicros: microsSchema.optional(),
1157
+ finalUrls: z2.array(httpsUrlSchema).optional(),
1158
+ status: stageableStatusSchema.default("ENABLED")
1159
+ });
1160
+ var keywordUpdateSchema = z2.strictObject({
1161
+ cpcBidMicros: microsSchema.optional(),
1162
+ finalUrls: z2.array(httpsUrlSchema).optional(),
1163
+ status: z2.enum(["ENABLED", "PAUSED", "REMOVED"]).optional()
1164
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
1165
+ var negativeKeywordAddSchema = z2.strictObject({
1166
+ level: z2.enum(["adGroup", "campaign"]),
1167
+ parent: refSchema,
1168
+ text: keywordTextSchema,
1169
+ matchType: matchTypeSchema
1170
+ });
1171
+ var sharedSetCreateSchema = z2.strictObject({
1172
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.sharedSet.nameMax),
1173
+ type: z2.enum(SHARED_SET_TYPES).default("NEGATIVE_KEYWORDS")
1174
+ });
1175
+ var sharedSetMemberAddSchema = z2.strictObject({
1176
+ sharedSet: refSchema,
1177
+ text: keywordTextSchema,
1178
+ matchType: matchTypeSchema
1179
+ });
1180
+ var campaignSharedSetAttachSchema = z2.strictObject({
1181
+ campaign: refSchema,
1182
+ sharedSet: refSchema
1183
+ });
1184
+ var adTextAssetSchema = z2.strictObject({
1185
+ text: z2.string().min(1),
1186
+ pinnedField: z2.enum(PINNED_FIELDS).optional()
1187
+ });
1188
+ var responsiveSearchAdSchema = z2.strictObject({
1189
+ format: z2.literal("responsiveSearch"),
1190
+ headlines: z2.array(
1191
+ adTextAssetSchema.refine(
1192
+ (a) => a.text.length <= GOOGLE_ADS_LIMITS.responsiveSearchAd.headlineTextMax,
1193
+ "headline exceeds 30 chars"
1194
+ )
1195
+ ).min(GOOGLE_ADS_LIMITS.responsiveSearchAd.headlinesMin).max(GOOGLE_ADS_LIMITS.responsiveSearchAd.headlinesMax),
1196
+ descriptions: z2.array(
1197
+ adTextAssetSchema.refine(
1198
+ (a) => a.text.length <= GOOGLE_ADS_LIMITS.responsiveSearchAd.descriptionTextMax,
1199
+ "description exceeds 90 chars"
1200
+ )
1201
+ ).min(GOOGLE_ADS_LIMITS.responsiveSearchAd.descriptionsMin).max(GOOGLE_ADS_LIMITS.responsiveSearchAd.descriptionsMax),
1202
+ path1: z2.string().max(GOOGLE_ADS_LIMITS.responsiveSearchAd.pathMax).optional(),
1203
+ path2: z2.string().max(GOOGLE_ADS_LIMITS.responsiveSearchAd.pathMax).optional(),
1204
+ finalUrls: z2.array(httpsUrlSchema).min(1)
1205
+ });
1206
+ var responsiveDisplayAdSchema = z2.strictObject({
1207
+ format: z2.literal("responsiveDisplay"),
1208
+ headlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.responsiveDisplayAd.headlineTextMax) })).min(1).max(5),
1209
+ longHeadline: z2.strictObject({
1210
+ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.responsiveDisplayAd.longHeadlineTextMax)
1211
+ }),
1212
+ descriptions: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.responsiveDisplayAd.descriptionTextMax) })).min(1).max(5),
1213
+ businessName: z2.string().min(1).max(GOOGLE_ADS_LIMITS.responsiveDisplayAd.businessNameMax),
1214
+ // A Responsive Display Ad's images are fields on the ad's own content (never campaign-level
1215
+ // asset links). Google requires ≥1 landscape marketing image (1.91:1) AND ≥1 square marketing
1216
+ // image (1:1) to serve; the logo images are optional.
1217
+ marketingImageAssets: z2.array(refSchema).optional(),
1218
+ squareMarketingImageAssets: z2.array(refSchema).optional(),
1219
+ logoImageAssets: z2.array(refSchema).optional(),
1220
+ finalUrls: z2.array(httpsUrlSchema).min(1)
1221
+ });
1222
+ var callAdSchema = z2.strictObject({
1223
+ format: z2.literal("call"),
1224
+ countryCode: z2.string().length(2),
1225
+ phoneNumber: z2.string().min(3),
1226
+ headline1: z2.string().min(1).max(30),
1227
+ headline2: z2.string().min(1).max(30),
1228
+ description1: z2.string().min(1).max(90),
1229
+ description2: z2.string().min(1).max(90),
1230
+ businessName: z2.string().min(1).max(25),
1231
+ finalUrls: z2.array(httpsUrlSchema).min(1)
1232
+ });
1233
+ var appAdSchema = z2.strictObject({
1234
+ format: z2.literal("app"),
1235
+ headlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.appAd.headlineTextMax) })).min(GOOGLE_ADS_LIMITS.appAd.headlinesMin).max(GOOGLE_ADS_LIMITS.appAd.headlinesMax),
1236
+ descriptions: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.appAd.descriptionTextMax) })).min(GOOGLE_ADS_LIMITS.appAd.descriptionsMin).max(GOOGLE_ADS_LIMITS.appAd.descriptionsMax),
1237
+ // An App campaign ad carries its images on its own content (`AppAdInfo.images`), not as
1238
+ // campaign-level asset links — same shape as a responsive display ad's marketing images.
1239
+ images: z2.array(refSchema).max(GOOGLE_ADS_LIMITS.appAd.imagesMax).optional(),
1240
+ // `AppAdInfo.youtube_videos` — an App ad's videos live on its content too. Without this field
1241
+ // there is no way to express "keep these videos on the ad", so a content update that only
1242
+ // restated headlines silently left the ad's videos to whatever the mask happened to omit.
1243
+ youtubeVideos: z2.array(refSchema).max(GOOGLE_ADS_LIMITS.appAd.youtubeVideosMax).optional()
1244
+ });
1245
+ var videoAdSchema = z2.strictObject({
1246
+ format: z2.literal("video"),
1247
+ // A raw YouTube id is not a publishable Google Ads reference — the video must be staged as
1248
+ // its own `google.asset.create` (type: youtubeVideo) first, then referenced here by asset ref.
1249
+ videoAssets: z2.array(refSchema).min(1),
1250
+ finalUrls: z2.array(httpsUrlSchema).min(1)
1251
+ });
1252
+ var demandGenAdSchema = z2.strictObject({
1253
+ format: z2.literal("demandGen"),
1254
+ /**
1255
+ * `Ad.name`. Accepted here but NOT required: a multi-asset Demand Gen ad published against a live
1256
+ * account with no name was created, and reads back with none. Only the video format requires one.
1257
+ */
1258
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenAd.adNameMax).optional(),
1259
+ headlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenAd.headlineTextMax) })).min(GOOGLE_ADS_LIMITS.demandGenAd.headlinesMin).max(GOOGLE_ADS_LIMITS.demandGenAd.headlinesMax),
1260
+ descriptions: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenAd.descriptionTextMax) })).min(GOOGLE_ADS_LIMITS.demandGenAd.descriptionsMin).max(GOOGLE_ADS_LIMITS.demandGenAd.descriptionsMax),
1261
+ businessName: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenAd.businessNameMax),
1262
+ finalUrls: z2.array(httpsUrlSchema).min(1),
1263
+ imageAssets: z2.array(refSchema).optional(),
1264
+ squareImageAssets: z2.array(refSchema).optional(),
1265
+ logoImageAssets: z2.array(refSchema).optional()
1266
+ });
1267
+ var demandGenVideoAdSchema = z2.strictObject({
1268
+ format: z2.literal("demandGenVideo"),
1269
+ /**
1270
+ * `Ad.name` — the ad's own name, which Google REQUIRES on this format and asks for in its
1271
+ * interface as "Ad name". No other format Baker writes needs one (the multi-asset Demand Gen ad
1272
+ * was published without one and accepted), so nothing carried it: a create without it comes back
1273
+ * as `REQUIRED … at mutate_operations[n].ad_group_ad_operation.create.ad.name`, after every asset
1274
+ * in the same batch has already been created. Optional in the schema because `Ad.name` is
1275
+ * IMMUTABLE — an update must be able to restate the whole content without renaming the ad.
1276
+ */
1277
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.adNameMax).optional(),
1278
+ headlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.headlineTextMax) })).min(GOOGLE_ADS_LIMITS.demandGenVideoAd.headlinesMin).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.headlinesMax),
1279
+ longHeadlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.longHeadlineTextMax) })).min(GOOGLE_ADS_LIMITS.demandGenVideoAd.longHeadlinesMin).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.longHeadlinesMax),
1280
+ descriptions: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.descriptionTextMax) })).min(GOOGLE_ADS_LIMITS.demandGenVideoAd.descriptionsMin).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.descriptionsMax),
1281
+ businessName: z2.string().min(1).max(GOOGLE_ADS_LIMITS.demandGenVideoAd.businessNameMax),
1282
+ finalUrls: z2.array(httpsUrlSchema).min(1),
1283
+ videoAssets: z2.array(refSchema).optional(),
1284
+ logoImageAssets: z2.array(refSchema).optional(),
1285
+ callToActionAssets: z2.array(refSchema).optional()
1286
+ });
1287
+ var adContentSchema = z2.discriminatedUnion("format", [
1288
+ responsiveSearchAdSchema,
1289
+ responsiveDisplayAdSchema,
1290
+ callAdSchema,
1291
+ appAdSchema,
1292
+ videoAdSchema,
1293
+ demandGenAdSchema,
1294
+ demandGenVideoAdSchema
1295
+ ]);
1296
+ var adCreateSchema = z2.strictObject({
1297
+ adGroup: refSchema,
1298
+ status: stageableStatusSchema.default("PAUSED"),
1299
+ content: adContentSchema
1300
+ });
1301
+ var adUpdateSchema = z2.strictObject({
1302
+ status: z2.enum(["ENABLED", "PAUSED", "REMOVED"]).optional(),
1303
+ /** Whole-content replacement for RSA-like formats; re-validated against adContentSchema. */
1304
+ content: z2.record(z2.string(), z2.unknown()).optional()
1305
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
1306
+ var textAssetSchema = z2.strictObject({ type: z2.literal("text"), text: z2.string().min(1) });
1307
+ var imageAssetSchema = z2.strictObject({
1308
+ type: z2.literal("image"),
1309
+ imageId: z2.string().min(1),
1310
+ name: z2.string().optional()
1311
+ });
1312
+ var youtubeVideoAssetSchema = z2.strictObject({
1313
+ type: z2.literal("youtubeVideo"),
1314
+ youtubeVideoId: z2.string().min(1),
1315
+ name: z2.string().optional()
1316
+ });
1317
+ var sitelinkAssetSchema = z2.strictObject({
1318
+ type: z2.literal("sitelink"),
1319
+ linkText: z2.string().min(1).max(GOOGLE_ADS_LIMITS.asset.sitelinkLinkTextMax),
1320
+ description1: z2.string().max(GOOGLE_ADS_LIMITS.asset.sitelinkDescriptionMax).optional(),
1321
+ description2: z2.string().max(GOOGLE_ADS_LIMITS.asset.sitelinkDescriptionMax).optional(),
1322
+ finalUrls: z2.array(httpsUrlSchema).min(1)
1323
+ });
1324
+ var calloutAssetSchema = z2.strictObject({
1325
+ type: z2.literal("callout"),
1326
+ calloutText: z2.string().min(1).max(GOOGLE_ADS_LIMITS.asset.calloutTextMax)
1327
+ });
1328
+ var structuredSnippetHeaderSchema = z2.string().min(1).transform((header, ctx) => {
1329
+ const canonical = canonicalStructuredSnippetHeader(header);
1330
+ if (!canonical) {
1331
+ ctx.addIssue({
1332
+ code: "custom",
1333
+ message: `Google Ads does not accept "${header}" as a structured snippet header. Use one of: ${STRUCTURED_SNIPPET_HEADERS_EN.join(", ")} \u2014 or that header in the campaign's language.`
1334
+ });
1335
+ return z2.NEVER;
1336
+ }
1337
+ return canonical;
1338
+ });
1339
+ var structuredSnippetAssetSchema = z2.strictObject({
1340
+ type: z2.literal("structuredSnippet"),
1341
+ header: structuredSnippetHeaderSchema,
1342
+ values: z2.array(z2.string().min(1).max(GOOGLE_ADS_LIMITS.asset.structuredSnippetValueMax)).min(GOOGLE_ADS_LIMITS.asset.structuredSnippetValuesMin).max(GOOGLE_ADS_LIMITS.asset.structuredSnippetValuesMax)
1343
+ });
1344
+ var callToActionAssetSchema = z2.strictObject({ type: z2.literal("callToAction"), callToAction: z2.string().min(1) });
1345
+ var assetCreateSchema = z2.discriminatedUnion("type", [
1346
+ textAssetSchema,
1347
+ imageAssetSchema,
1348
+ youtubeVideoAssetSchema,
1349
+ sitelinkAssetSchema,
1350
+ calloutAssetSchema,
1351
+ structuredSnippetAssetSchema,
1352
+ callToActionAssetSchema
1353
+ ]);
1354
+ var assetUpdateSchema = z2.strictObject({
1355
+ name: z2.string().min(1).optional(),
1356
+ linkText: z2.string().min(1).max(GOOGLE_ADS_LIMITS.asset.sitelinkLinkTextMax).optional(),
1357
+ description1: z2.string().max(GOOGLE_ADS_LIMITS.asset.sitelinkDescriptionMax).optional(),
1358
+ description2: z2.string().max(GOOGLE_ADS_LIMITS.asset.sitelinkDescriptionMax).optional(),
1359
+ finalUrls: z2.array(httpsUrlSchema).min(1).optional(),
1360
+ calloutText: z2.string().min(1).max(GOOGLE_ADS_LIMITS.asset.calloutTextMax).optional(),
1361
+ header: structuredSnippetHeaderSchema.optional(),
1362
+ values: z2.array(z2.string().min(1).max(GOOGLE_ADS_LIMITS.asset.structuredSnippetValueMax)).min(GOOGLE_ADS_LIMITS.asset.structuredSnippetValuesMin).max(GOOGLE_ADS_LIMITS.asset.structuredSnippetValuesMax).optional(),
1363
+ callToAction: z2.string().min(1).optional(),
1364
+ text: z2.string().min(1).optional()
1365
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
1366
+ var assetLinkAttachSchema = z2.strictObject({
1367
+ level: z2.enum(["campaign", "adGroup", "customer"]),
1368
+ parent: refSchema.optional(),
1369
+ asset: refSchema,
1370
+ // A plain string, not `z.enum(ASSET_FIELD_TYPES)`, so the image refusal below can answer with
1371
+ // the reason instead of an enum listing. An agent reaching for AD_IMAGE is following Google's
1372
+ // own documentation; "Invalid option: expected one of …" sends it to guess another field type,
1373
+ // which is the failure this whole refusal exists to end.
1374
+ fieldType: z2.string().min(1)
1375
+ }).superRefine((value, ctx) => {
1376
+ if (value.level !== "customer" && !value.parent) {
1377
+ ctx.addIssue({
1378
+ code: z2.ZodIssueCode.custom,
1379
+ path: ["parent"],
1380
+ message: `parent is required for a ${value.level}-level asset link (--parent-ref)`
1381
+ });
1382
+ }
1383
+ if (value.fieldType === "BUSINESS_LOGO" && value.level === "adGroup") {
1384
+ ctx.addIssue({ code: z2.ZodIssueCode.custom, path: ["fieldType"], message: BUSINESS_LOGO_LEVEL_MESSAGE });
1385
+ } else if (isImageAssetLinkFieldType(value.fieldType)) {
1386
+ } else if (!ASSET_FIELD_TYPES.includes(value.fieldType)) {
1387
+ ctx.addIssue({
1388
+ code: z2.ZodIssueCode.custom,
1389
+ path: ["fieldType"],
1390
+ message: `expected one of ${ASSET_FIELD_TYPES.join(" | ")}`
1391
+ });
1392
+ }
1393
+ });
1394
+ var assetGroupCreateSchema = z2.strictObject({
1395
+ campaign: refSchema,
1396
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.assetGroup.nameMax),
1397
+ finalUrls: z2.array(httpsUrlSchema).min(1),
1398
+ headlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.assetGroup.headlineTextMax) })).min(GOOGLE_ADS_LIMITS.assetGroup.headlinesMin).max(GOOGLE_ADS_LIMITS.assetGroup.headlinesMax),
1399
+ longHeadlines: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.assetGroup.longHeadlineTextMax) })).min(GOOGLE_ADS_LIMITS.assetGroup.longHeadlinesMin).max(GOOGLE_ADS_LIMITS.assetGroup.longHeadlinesMax),
1400
+ descriptions: z2.array(z2.strictObject({ text: z2.string().min(1).max(GOOGLE_ADS_LIMITS.assetGroup.descriptionTextMax) })).min(GOOGLE_ADS_LIMITS.assetGroup.descriptionsMin).max(GOOGLE_ADS_LIMITS.assetGroup.descriptionsMax),
1401
+ businessName: z2.string().min(1).max(GOOGLE_ADS_LIMITS.assetGroup.businessNameMax),
1402
+ imageAssets: z2.array(refSchema).optional(),
1403
+ squareImageAssets: z2.array(refSchema).optional(),
1404
+ portraitImageAssets: z2.array(refSchema).optional(),
1405
+ logoAssets: z2.array(refSchema).optional(),
1406
+ status: z2.enum(["ENABLED", "PAUSED"]).default("PAUSED")
1407
+ });
1408
+ var assetGroupAssetAttachSchema = z2.strictObject({
1409
+ assetGroup: refSchema,
1410
+ asset: refSchema,
1411
+ fieldType: z2.enum(ASSET_GROUP_ASSET_FIELD_TYPES)
1412
+ });
1413
+ var assetGroupUpdateSchema = z2.strictObject({
1414
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.assetGroup.nameMax).optional(),
1415
+ finalUrls: z2.array(httpsUrlSchema).min(1).optional(),
1416
+ status: z2.enum(["ENABLED", "PAUSED", "REMOVED"]).optional()
1417
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field");
1418
+ var audienceCreateSchema = z2.strictObject({
1419
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.audience.nameMax),
1420
+ type: z2.enum(USER_LIST_TYPES).default("BASIC"),
1421
+ description: z2.string().optional(),
1422
+ /** Customer-match members (crm-based) — file-first for large lists. */
1423
+ members: z2.array(z2.record(z2.string(), z2.string())).optional(),
1424
+ sourceFileRef: z2.string().optional()
1425
+ });
1426
+ var audienceCriterionAttachSchema = z2.strictObject({
1427
+ level: z2.enum(["campaign", "adGroup"]),
1428
+ parent: refSchema,
1429
+ userList: refSchema,
1430
+ negative: z2.boolean().default(false)
1431
+ });
1432
+ var targetRestrictionSchema = z2.strictObject({
1433
+ targetingDimension: z2.enum(TARGETING_DIMENSIONS),
1434
+ bidOnly: z2.boolean()
1435
+ });
1436
+ var targetingSettingSetSchema = z2.strictObject({
1437
+ level: z2.enum(["campaign", "adGroup"]),
1438
+ parent: refSchema,
1439
+ audience: z2.enum(["OBSERVATION", "TARGETING"]),
1440
+ preserved: z2.array(targetRestrictionSchema).optional()
1441
+ });
1442
+ var conversionActionCreateSchema = z2.strictObject({
1443
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.conversionAction.nameMax),
1444
+ type: z2.enum(CONVERSION_ACTION_TYPES).optional(),
1445
+ category: z2.enum(CONVERSION_ACTION_CATEGORIES).optional(),
1446
+ countingType: z2.enum(CONVERSION_COUNTING_TYPES).optional(),
1447
+ defaultValueMicros: microsSchema.optional(),
1448
+ defaultCurrencyCode: z2.string().length(3).optional(),
1449
+ clickThroughLookbackWindowDays: z2.number().int().positive().optional(),
1450
+ viewThroughLookbackWindowDays: z2.number().int().positive().optional(),
1451
+ status: z2.enum(["ENABLED", "PAUSED"]).optional(),
1452
+ /**
1453
+ * Primary = Google bids toward this conversion; secondary = it is only reported ("Primary action
1454
+ * used for bidding optimization" / "Secondary action not used for bidding optimization" in the UI).
1455
+ * Resolves to SECONDARY on create, deliberately: left unset ON THE WIRE, Google picks — and in a
1456
+ * live account some actions were born primary and some secondary, so a new action could silently
1457
+ * join the bidding target of every Maximize-Conversions campaign and redirect real spend. Nothing
1458
+ * exists yet to flip on a create, so a fixed resolved value is safe here in a way it would never be
1459
+ * on an update: joining bidding becomes an explicit `primaryForGoal: true`, never an accident.
1460
+ */
1461
+ primaryForGoal: z2.boolean().optional()
1462
+ });
1463
+ var HIDDEN_CONVERSION_STATUS_ERROR = 'Google rejects status HIDDEN on every conversion action write ("the field\'s value is on a deny-list"), so it is not part of this contract. To stop automated bidding optimizing toward a conversion while it keeps measuring, demote it instead: `baker ads google conversions update --target <id> --no-primary`. To stop it counting altogether, use `status: "REMOVED"`. Pick one of those and carry on with the rest of the job.';
1464
+ var conversionActionUpdateSchema = z2.strictObject({
1465
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.conversionAction.nameMax).optional(),
1466
+ category: z2.enum(CONVERSION_ACTION_CATEGORIES).optional(),
1467
+ countingType: z2.enum(CONVERSION_COUNTING_TYPES).optional(),
1468
+ defaultValueMicros: microsSchema.optional(),
1469
+ defaultCurrencyCode: z2.string().length(3).optional(),
1470
+ clickThroughLookbackWindowDays: z2.number().int().positive().optional(),
1471
+ viewThroughLookbackWindowDays: z2.number().int().positive().optional(),
1472
+ /**
1473
+ * `HIDDEN` is deliberately not writable. Google returns it — an action hidden long ago reads
1474
+ * back as HIDDEN, and every read path keeps it — but it is on the API's deny-list for a write:
1475
+ * `conversion_action.status = HIDDEN` fails with "The field's value is on a deny-list for this
1476
+ * field" even on an ordinary WEBPAGE action with nothing else wrong. Offering it made it the
1477
+ * obvious pick for an agent told to retire an action gently, and the whole cleanup published
1478
+ * nothing.
1479
+ */
1480
+ status: z2.enum(["ENABLED", "REMOVED"], {
1481
+ error: (issue) => issue.input === "HIDDEN" ? HIDDEN_CONVERSION_STATUS_ERROR : void 0
1482
+ }).optional(),
1483
+ /** Promote to primary (bid toward it) or demote to secondary (report only). No default — an
1484
+ * update must never change an existing action's bidding role unless it was asked to. */
1485
+ primaryForGoal: z2.boolean().optional()
1486
+ }).refine((p) => Object.values(p).some((v) => v !== void 0), "update needs at least one field").refine(
1487
+ (p) => p.status !== "REMOVED" || Object.entries(p).every(([k, v]) => k === "status" || v === void 0),
1488
+ 'removing a conversion action cannot be combined with other edits \u2014 `status: "REMOVED"` deletes it, so a name or category sent alongside would be silently discarded. Stage the removal on its own.'
1489
+ );
1490
+ var conversionGoalSetSchema = z2.strictObject({
1491
+ category: z2.enum(CONVERSION_ACTION_CATEGORIES),
1492
+ origin: z2.enum(CONVERSION_ORIGINS),
1493
+ /** True = conversions of this category/origin count toward automated bidding; false = reported only. */
1494
+ biddable: z2.boolean()
1495
+ });
1496
+ var PORTFOLIO_TARGET_CPC_MESSAGE = "portfolio strategies cannot be Target CPC \u2014 it is set on the Demand Gen campaign itself";
1497
+ var biddingStrategyCreateSchema = z2.strictObject({
1498
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.biddingStrategy.nameMax),
1499
+ config: biddingConfigSchema
1500
+ }).superRefine((p, ctx) => {
1501
+ if (p.config.type === "MANUAL_CPC") {
1502
+ ctx.addIssue({ code: "custom", path: ["config", "type"], message: "portfolio strategies cannot be Manual CPC" });
1503
+ }
1504
+ if (p.config.type === "TARGET_CPC") {
1505
+ ctx.addIssue({ code: "custom", path: ["config", "type"], message: PORTFOLIO_TARGET_CPC_MESSAGE });
1506
+ }
1507
+ });
1508
+ var biddingStrategyUpdateSchema = z2.strictObject({
1509
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.biddingStrategy.nameMax).optional(),
1510
+ config: biddingConfigSchema.optional()
1511
+ }).superRefine((p, ctx) => {
1512
+ if (Object.values(p).every((v) => v === void 0)) {
1513
+ ctx.addIssue({ code: "custom", message: "update needs at least one field" });
1514
+ }
1515
+ if (p.config?.type === "TARGET_CPC") {
1516
+ ctx.addIssue({ code: "custom", path: ["config", "type"], message: PORTFOLIO_TARGET_CPC_MESSAGE });
1517
+ }
1518
+ });
1519
+ var labelCreateSchema = z2.strictObject({
1520
+ name: z2.string().min(1).max(GOOGLE_ADS_LIMITS.label.nameMax),
1521
+ backgroundColor: z2.string().regex(/^#[0-9A-Fa-f]{6}$/).optional(),
1522
+ description: z2.string().optional()
1523
+ });
1524
+ var labelAttachSchema = z2.strictObject({
1525
+ level: z2.enum(["campaign", "adGroup", "ad"]),
1526
+ parent: refSchema,
1527
+ label: refSchema
1528
+ });
1529
+ var locationCriterionSchema = z2.strictObject({
1530
+ criterionType: z2.literal("location"),
1531
+ geoTargetConstant: z2.union([z2.string().regex(GEO_TARGET_CONSTANT_REGEX), z2.string().regex(NUMERIC_ID_REGEX)])
1532
+ });
1533
+ var languageCriterionSchema = z2.strictObject({
1534
+ criterionType: z2.literal("language"),
1535
+ languageConstant: z2.union([z2.string().regex(LANGUAGE_CONSTANT_REGEX), z2.string().regex(NUMERIC_ID_REGEX)])
1536
+ });
1537
+ var adScheduleCriterionSchema = z2.strictObject({
1538
+ criterionType: z2.literal("adSchedule"),
1539
+ dayOfWeek: z2.enum(DAYS_OF_WEEK),
1540
+ startHour: z2.number().int().min(0).max(23),
1541
+ startMinute: z2.enum(["ZERO", "FIFTEEN", "THIRTY", "FORTY_FIVE"]).default("ZERO"),
1542
+ endHour: z2.number().int().min(0).max(24),
1543
+ endMinute: z2.enum(["ZERO", "FIFTEEN", "THIRTY", "FORTY_FIVE"]).default("ZERO")
1544
+ });
1545
+ var bidModifierSchema = z2.number().min(0).max(10).refine((v) => v === 0 || v >= 0.1, {
1546
+ message: "bid modifier must be 0 (exclude the device) or between 0.1 and 10.0"
1547
+ });
1548
+ var deviceCriterionSchema = z2.strictObject({
1549
+ criterionType: z2.literal("device"),
1550
+ device: z2.enum(DEVICE_TYPES),
1551
+ bidModifier: bidModifierSchema.optional()
1552
+ });
1553
+ var campaignCriterionAddSchema = z2.strictObject({
1554
+ campaign: refSchema,
1555
+ negative: z2.boolean().default(false),
1556
+ criterion: z2.discriminatedUnion("criterionType", [
1557
+ locationCriterionSchema,
1558
+ languageCriterionSchema,
1559
+ adScheduleCriterionSchema,
1560
+ deviceCriterionSchema
1561
+ ])
1562
+ }).superRefine((val, ctx) => {
1563
+ const c = val.criterion;
1564
+ if (c.criterionType === "adSchedule" && c.endHour === 24 && c.endMinute !== "ZERO") {
1565
+ ctx.addIssue({
1566
+ code: z2.ZodIssueCode.custom,
1567
+ message: "endHour 24 (midnight) cannot have a non-zero endMinute",
1568
+ path: ["criterion", "endMinute"]
1569
+ });
1570
+ }
1571
+ });
1572
+ var campaignCriterionUpdateSchema = z2.strictObject({
1573
+ bidModifier: bidModifierSchema
1574
+ });
1575
+ var GOOGLE_DRAFT_OP_KINDS = [
1576
+ "google.budget.create",
1577
+ "google.budget.update",
1578
+ "google.campaign.create",
1579
+ "google.campaign.update",
1580
+ "google.campaign.pause",
1581
+ "google.campaign.resume",
1582
+ "google.campaign.remove",
1583
+ "google.adGroup.create",
1584
+ "google.adGroup.update",
1585
+ "google.adGroup.pause",
1586
+ "google.adGroup.resume",
1587
+ "google.adGroup.remove",
1588
+ "google.keyword.add",
1589
+ "google.keyword.update",
1590
+ "google.keyword.remove",
1591
+ "google.negativeKeyword.add",
1592
+ "google.negativeKeyword.remove",
1593
+ "google.sharedSet.create",
1594
+ "google.sharedSetMember.add",
1595
+ "google.sharedSetMember.remove",
1596
+ "google.campaignSharedSet.attach",
1597
+ "google.campaignSharedSet.detach",
1598
+ "google.ad.create",
1599
+ "google.ad.update",
1600
+ "google.ad.pause",
1601
+ "google.ad.resume",
1602
+ "google.ad.remove",
1603
+ "google.asset.create",
1604
+ "google.asset.update",
1605
+ "google.assetLink.attach",
1606
+ "google.assetLink.detach",
1607
+ "google.assetGroup.create",
1608
+ "google.assetGroup.update",
1609
+ "google.assetGroupAsset.attach",
1610
+ "google.assetGroupAsset.detach",
1611
+ "google.audience.create",
1612
+ "google.audienceCriterion.attach",
1613
+ "google.audienceCriterion.detach",
1614
+ "google.targetingSetting.set",
1615
+ "google.conversionAction.create",
1616
+ "google.conversionAction.update",
1617
+ "google.conversionAction.goal",
1618
+ "google.conversion.upload",
1619
+ "google.biddingStrategy.create",
1620
+ "google.biddingStrategy.update",
1621
+ "google.label.create",
1622
+ "google.label.attach",
1623
+ "google.campaignCriterion.add",
1624
+ "google.campaignCriterion.update",
1625
+ "google.campaignCriterion.remove"
1626
+ ];
1627
+ var googleDraftOpKindSchema = z2.enum(GOOGLE_DRAFT_OP_KINDS);
1628
+ function createOp(kind, payload) {
1629
+ return z2.object({ kind: z2.literal(kind), customerId: customerIdSchema, payload });
1630
+ }
1631
+ function updateOp(kind, payload) {
1632
+ return z2.object({ kind: z2.literal(kind), customerId: customerIdSchema, target: targetRefSchema, payload });
1633
+ }
1634
+ function targetOp(kind) {
1635
+ return z2.object({ kind: z2.literal(kind), customerId: customerIdSchema, target: targetRefSchema });
1636
+ }
1637
+ var googleDraftOpInputSchema = z2.discriminatedUnion("kind", [
1638
+ createOp("google.budget.create", budgetCreateSchema),
1639
+ updateOp("google.budget.update", budgetUpdateSchema),
1640
+ createOp("google.campaign.create", campaignCreateSchema),
1641
+ updateOp("google.campaign.update", campaignUpdateSchema),
1642
+ targetOp("google.campaign.pause"),
1643
+ targetOp("google.campaign.resume"),
1644
+ targetOp("google.campaign.remove"),
1645
+ createOp("google.adGroup.create", adGroupCreateSchema),
1646
+ updateOp("google.adGroup.update", adGroupUpdateSchema),
1647
+ targetOp("google.adGroup.pause"),
1648
+ targetOp("google.adGroup.resume"),
1649
+ targetOp("google.adGroup.remove"),
1650
+ createOp("google.keyword.add", keywordAddSchema),
1651
+ updateOp("google.keyword.update", keywordUpdateSchema),
1652
+ targetOp("google.keyword.remove"),
1653
+ createOp("google.negativeKeyword.add", negativeKeywordAddSchema),
1654
+ targetOp("google.negativeKeyword.remove"),
1655
+ createOp("google.sharedSet.create", sharedSetCreateSchema),
1656
+ createOp("google.sharedSetMember.add", sharedSetMemberAddSchema),
1657
+ targetOp("google.sharedSetMember.remove"),
1658
+ createOp("google.campaignSharedSet.attach", campaignSharedSetAttachSchema),
1659
+ targetOp("google.campaignSharedSet.detach"),
1660
+ createOp("google.ad.create", adCreateSchema),
1661
+ updateOp("google.ad.update", adUpdateSchema),
1662
+ targetOp("google.ad.pause"),
1663
+ targetOp("google.ad.resume"),
1664
+ targetOp("google.ad.remove"),
1665
+ createOp("google.asset.create", assetCreateSchema),
1666
+ updateOp("google.asset.update", assetUpdateSchema),
1667
+ createOp("google.assetLink.attach", assetLinkAttachSchema),
1668
+ targetOp("google.assetLink.detach"),
1669
+ createOp("google.assetGroup.create", assetGroupCreateSchema),
1670
+ updateOp("google.assetGroup.update", assetGroupUpdateSchema),
1671
+ createOp("google.assetGroupAsset.attach", assetGroupAssetAttachSchema),
1672
+ targetOp("google.assetGroupAsset.detach"),
1673
+ createOp("google.audience.create", audienceCreateSchema),
1674
+ createOp("google.audienceCriterion.attach", audienceCriterionAttachSchema),
1675
+ targetOp("google.audienceCriterion.detach"),
1676
+ createOp("google.targetingSetting.set", targetingSettingSetSchema),
1677
+ createOp("google.conversionAction.create", conversionActionCreateSchema),
1678
+ updateOp("google.conversionAction.update", conversionActionUpdateSchema),
1679
+ createOp("google.conversionAction.goal", conversionGoalSetSchema),
1680
+ createOp("google.conversion.upload", conversionUploadSchema),
1681
+ createOp("google.biddingStrategy.create", biddingStrategyCreateSchema),
1682
+ updateOp("google.biddingStrategy.update", biddingStrategyUpdateSchema),
1683
+ createOp("google.label.create", labelCreateSchema),
1684
+ createOp("google.label.attach", labelAttachSchema),
1685
+ createOp("google.campaignCriterion.add", campaignCriterionAddSchema),
1686
+ updateOp("google.campaignCriterion.update", campaignCriterionUpdateSchema),
1687
+ targetOp("google.campaignCriterion.remove")
1688
+ ]);
1689
+
1690
+ // ../api/src/ads-google/wire.ts
1691
+ import { z as z3 } from "zod";
1692
+ var googleWriteModeSchema = z3.enum(["live", "simulated"]);
1693
+ var publishVerificationSchema = z3.object({
1694
+ status: z3.enum(["confirmed", "unconfirmed", "drifted"]),
1695
+ note: z3.string().optional(),
1696
+ checkedAt: z3.number()
1697
+ });
1698
+ var googleDraftOpResultSchema = z3.object({
1699
+ status: z3.enum(["applied", "simulated", "failed", "skipped"]),
1700
+ resourceName: z3.string().optional(),
1701
+ error: z3.string().optional(),
1702
+ skippedBecause: z3.string().optional(),
1703
+ executedAt: z3.number().optional(),
1704
+ verification: publishVerificationSchema.optional()
1705
+ });
1706
+ var googleDraftStageRequestSchema = z3.object({
1707
+ chatId: z3.string(),
1708
+ op: googleDraftOpInputSchema
1709
+ });
1710
+ var googleDraftStageResponseSchema = z3.discriminatedUnion("staged", [
1711
+ z3.object({
1712
+ staged: z3.literal(true),
1713
+ ref: z3.string(),
1714
+ kind: googleDraftOpKindSchema,
1715
+ mode: googleWriteModeSchema,
1716
+ dependsOn: z3.array(z3.string()),
1717
+ summary: z3.string(),
1718
+ warnings: z3.array(z3.string()),
1719
+ /** True when the op amended an already-staged op in place instead of appending a new one. */
1720
+ amended: z3.boolean().optional()
1721
+ }),
1722
+ z3.object({
1723
+ staged: z3.literal(false),
1724
+ noop: z3.literal(true),
1725
+ kind: googleDraftOpKindSchema,
1726
+ mode: googleWriteModeSchema,
1727
+ summary: z3.string(),
1728
+ reason: z3.string()
1729
+ })
1730
+ ]);
1731
+ var googleDraftAmendRequestSchema = z3.object({
1732
+ chatId: z3.string(),
1733
+ ref: z3.string(),
1734
+ patch: z3.record(z3.string(), z3.unknown())
1735
+ });
1736
+ var googleDraftShowRequestSchema = z3.object({
1737
+ chatId: z3.string(),
1738
+ ref: z3.string()
1739
+ });
1740
+ var GOOGLE_DRAFT_BATCH_MAX = 500;
1741
+ var googleDraftStageBatchRequestSchema = z3.object({
1742
+ chatId: z3.string(),
1743
+ ops: z3.array(googleDraftOpInputSchema).min(1).max(GOOGLE_DRAFT_BATCH_MAX)
1744
+ });
1745
+ var googleDraftStageBatchResponseSchema = z3.object({
1746
+ staged: z3.literal(true),
1747
+ mode: googleWriteModeSchema,
1748
+ count: z3.number(),
1749
+ ops: z3.array(
1750
+ z3.object({
1751
+ ref: z3.string(),
1752
+ kind: googleDraftOpKindSchema,
1753
+ dependsOn: z3.array(z3.string()),
1754
+ summary: z3.string(),
1755
+ warnings: z3.array(z3.string())
1756
+ })
1757
+ ),
1758
+ skipped: z3.array(z3.object({ kind: googleDraftOpKindSchema, summary: z3.string(), reason: z3.string() })).optional()
1759
+ });
1760
+ var googleDraftOpViewSchema = z3.object({
1761
+ ref: z3.string(),
1762
+ kind: googleDraftOpKindSchema,
1763
+ customerId: z3.string(),
1764
+ target: z3.string().optional(),
1765
+ dependsOn: z3.array(z3.string()),
1766
+ summary: z3.string(),
1767
+ stagedAt: z3.number(),
1768
+ result: googleDraftOpResultSchema.optional()
1769
+ });
1770
+ var googleDraftShowResponseSchema = z3.object({
1771
+ op: googleDraftOpViewSchema.extend({
1772
+ payload: z3.unknown().optional(),
1773
+ warnings: z3.array(z3.string()).optional(),
1774
+ annotations: z3.unknown().optional()
1775
+ })
1776
+ });
1777
+ var googleDraftListRequestSchema = z3.object({
1778
+ chatId: z3.string()
1779
+ });
1780
+ var googleDraftAdvisorySchema = z3.object({
1781
+ scope: z3.enum(["campaign", "adGroup"]),
1782
+ message: z3.string()
1783
+ });
1784
+ var googleDraftStatusCollectionSchema = z3.object({
1785
+ label: z3.string(),
1786
+ added: z3.number(),
1787
+ removed: z3.number(),
1788
+ /** Members that stay in the set with a changed value — a device's bid adjustment. Optional: a
1789
+ * status tree built by an older backend carries no such count. */
1790
+ updated: z3.number().optional(),
1791
+ existing: z3.number()
1792
+ });
1793
+ var googleDraftChangeOperationSchema = z3.enum(["create", "update", "pause", "resume", "remove", "upload"]);
1794
+ var googleDraftStatusNodeSchema = z3.lazy(
1795
+ () => z3.object({
1796
+ entity: z3.string(),
1797
+ name: z3.string(),
1798
+ customerId: z3.string(),
1799
+ operation: googleDraftChangeOperationSchema.optional(),
1800
+ existing: z3.boolean(),
1801
+ collections: z3.array(googleDraftStatusCollectionSchema),
1802
+ children: z3.array(googleDraftStatusNodeSchema),
1803
+ warnings: z3.array(z3.string()).optional()
1804
+ })
1805
+ );
1806
+ var googleDraftListResponseSchema = z3.object({
1807
+ status: z3.enum(["active", "publishing", "applied", "discarded", "none"]),
1808
+ mode: googleWriteModeSchema,
1809
+ count: z3.number(),
1810
+ ops: z3.array(googleDraftOpViewSchema),
1811
+ /** Grouped campaign ▸ ad group ▸ ad tree for the readable CLI status view. */
1812
+ tree: z3.array(googleDraftStatusNodeSchema).optional(),
1813
+ /** Non-blocking completeness advisories for the whole draft. */
1814
+ advisories: z3.array(googleDraftAdvisorySchema).optional()
1815
+ });
1816
+ var googleDraftRemoveRequestSchema = z3.object({
1817
+ chatId: z3.string(),
1818
+ ref: z3.string()
1819
+ });
1820
+ var googleDraftRemoveResponseSchema = z3.object({
1821
+ /** The requested ref plus any dependents removed by cascade. */
1822
+ removed: z3.array(z3.string())
1823
+ });
1824
+ var googleDraftClearRequestSchema = z3.object({
1825
+ chatId: z3.string()
1826
+ });
1827
+ var googleDraftClearResponseSchema = z3.object({
1828
+ cleared: z3.number()
1829
+ });
1830
+ var googleFieldErrorSchema = z3.object({
1831
+ path: z3.string(),
1832
+ message: z3.string()
1833
+ });
1834
+ var googleDraftErrorResponseSchema = z3.object({
1835
+ code: z3.string(),
1836
+ error: z3.string(),
1837
+ fields: z3.array(googleFieldErrorSchema).optional()
1838
+ });
1839
+
1840
+ export {
1841
+ GOOGLE_ADS_QUERY_MAX_PAGE_SIZE,
1842
+ POSITIVE_GEO_TARGET_TYPES,
1843
+ NEGATIVE_GEO_TARGET_TYPES,
1844
+ CONVERSION_ACTION_CATEGORIES,
1845
+ CONVERSION_ORIGINS,
1846
+ ASSET_GROUP_ASSET_FIELD_TYPES,
1847
+ toMicros,
1848
+ NUMERIC_ID_REGEX,
1849
+ CONVERSION_UPLOAD_MAX_ROWS,
1850
+ googleDraftOpInputSchema,
1851
+ publishVerificationSchema,
1852
+ GOOGLE_DRAFT_BATCH_MAX
1853
+ };
1854
+ //# sourceMappingURL=chunk-NE4F3FHN.js.map