@koda-sl/baker-cli 0.497.0 → 0.498.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 (1553) hide show
  1. package/README.md +132 -0
  2. package/dist/account-263FLP5Y.js +80 -0
  3. package/dist/account-Q3BRNQUW.js +139 -0
  4. package/dist/account-Q3BRNQUW.js.map +1 -0
  5. package/dist/account-Y2NNZBQU.js +80 -0
  6. package/dist/account-assets-FGXPTJAC.js +290 -0
  7. package/dist/account-assets-FGXPTJAC.js.map +1 -0
  8. package/dist/account-level-HHFTDEEF.js +609 -0
  9. package/dist/account-level-HHFTDEEF.js.map +1 -0
  10. package/dist/account-reads-LJCF2BT6.js +219 -0
  11. package/dist/account-reads-LJCF2BT6.js.map +1 -0
  12. package/dist/account-users-65TL5KL7.js +62 -0
  13. package/dist/account-writes-M274CK75.js +66 -0
  14. package/dist/accounts-4HPLJD7O.js +115 -0
  15. package/dist/accounts-FGBD6Y23.js +76 -0
  16. package/dist/accounts-FGBD6Y23.js.map +1 -0
  17. package/dist/accounts-OWLAMDJX.js +114 -0
  18. package/dist/accounts-ST32A4L4.js +78 -0
  19. package/dist/accounts-VVMBENKE.js +612 -0
  20. package/dist/actions-EAMKQC4A.js +55 -0
  21. package/dist/active-entities-2TRODKWO.js +103 -0
  22. package/dist/activecampaign-XYEFFSZF.js +936 -0
  23. package/dist/activities-CRMTS5Y7.js +75 -0
  24. package/dist/activities-CRMTS5Y7.js.map +1 -0
  25. package/dist/ad-group-writes-M7S67GLQ.js +170 -0
  26. package/dist/ad-groups-BF4KNJFS.js +68 -0
  27. package/dist/ad-writes-FNWVH7SP.js +174 -0
  28. package/dist/add-2OOHZBKD.js +80 -0
  29. package/dist/add-5PK6LCD2.js +81 -0
  30. package/dist/add-EXF7UGIG.js +148 -0
  31. package/dist/add-IJA475VW.js +105 -0
  32. package/dist/add-UGMEJ5L3.js +303 -0
  33. package/dist/add-WZFXWMG7.js +97 -0
  34. package/dist/add-accounts-KQUUBIIG.js +91 -0
  35. package/dist/ads-3RBMFZMU.js +115 -0
  36. package/dist/ads-3RBMFZMU.js.map +1 -0
  37. package/dist/ads-6GTQ2HS4.js +43 -0
  38. package/dist/ads-6GTQ2HS4.js.map +1 -0
  39. package/dist/ads-C6LVVX4F.js +128 -0
  40. package/dist/ads-TLJI5KCA.js +77 -0
  41. package/dist/adsets-2536GR4Q.js +178 -0
  42. package/dist/adsets-2536GR4Q.js.map +1 -0
  43. package/dist/advertisers-OHTC7Q63.js +125 -0
  44. package/dist/advertisers-RBLLFCET.js +121 -0
  45. package/dist/analytics-QQ7PLUU3.js +434 -0
  46. package/dist/analytics-UXUF6IVD.js +1981 -0
  47. package/dist/analytics-UXUF6IVD.js.map +1 -0
  48. package/dist/animate-G2PISVIA.js +480 -0
  49. package/dist/asset-writes-LW3KSG2B.js +48 -0
  50. package/dist/assign-UC6OK2R7.js +78 -0
  51. package/dist/audience-size-4S2ZWQ3G.js +74 -0
  52. package/dist/audience-writes-75HWK4IY.js +325 -0
  53. package/dist/audience-writes-75HWK4IY.js.map +1 -0
  54. package/dist/audiences-2342U7XH.js +85 -0
  55. package/dist/audiences-EZO6PYRL.js +268 -0
  56. package/dist/audiences-OS4U3J6Y.js +86 -0
  57. package/dist/audiences-OS4U3J6Y.js.map +1 -0
  58. package/dist/audit-KQ7GVWMO.js +88 -0
  59. package/dist/audit-QTLUKQW5.js +152 -0
  60. package/dist/autocomplete-XMRWWWJB.js +112 -0
  61. package/dist/avatars-QU5GIMCL.js +38 -0
  62. package/dist/bid-pricing-KBWHJKVH.js +101 -0
  63. package/dist/brand-REYK7QBZ.js +22 -0
  64. package/dist/brief-ZGGGJTBT.js +541 -0
  65. package/dist/brief-ZGGGJTBT.js.map +1 -0
  66. package/dist/businesses-T77Z5X35.js +54 -0
  67. package/dist/businesses-T77Z5X35.js.map +1 -0
  68. package/dist/campaign-groups-47IYCWKX.js +97 -0
  69. package/dist/campaign-writes-IPSJMNQX.js +166 -0
  70. package/dist/campaign-writes-RHMIJAC3.js +170 -0
  71. package/dist/campaigns-7WLJWRVB.js +76 -0
  72. package/dist/campaigns-N3GQSKRU.js +128 -0
  73. package/dist/campaigns-N3GQSKRU.js.map +1 -0
  74. package/dist/campaigns-NTEP5DKT.js +107 -0
  75. package/dist/campaigns-SCV5ZDLA.js +111 -0
  76. package/dist/canvas-X55KDZQX.js +46 -0
  77. package/dist/capabilities-FJIYYIMF.js +145 -0
  78. package/dist/cards-UZ3TAVOU.js +85 -0
  79. package/dist/catalog-OLWWOUXL.js +65 -0
  80. package/dist/catalogs-4PEZDXLP.js +128 -0
  81. package/dist/catalogs-WRBUBIRV.js +779 -0
  82. package/dist/catalogs-WRBUBIRV.js.map +1 -0
  83. package/dist/changes-T6RKIP2B.js +135 -0
  84. package/dist/chatgpt-J3ITRRCX.js +47 -0
  85. package/dist/chats-PAHEOSL5.js +277 -0
  86. package/dist/check-PAVRHQAR.js +105 -0
  87. package/dist/chunk-23HT4U3O.js +66 -0
  88. package/dist/chunk-25IPX5BK.js +592 -0
  89. package/dist/chunk-2M36ESEZ.js +84 -0
  90. package/dist/chunk-2Q324LIK.js +333 -0
  91. package/dist/chunk-2YUVO3LP.js +46 -0
  92. package/dist/chunk-3BAAO72V.js +56 -0
  93. package/dist/chunk-3FF5UMV5.js +89 -0
  94. package/dist/chunk-3Q32TXSP.js +35 -0
  95. package/dist/chunk-3Z3O7ZD6.js +197 -0
  96. package/dist/chunk-44QHWWUX.js +224 -0
  97. package/dist/chunk-4D5OBSWR.js +98 -0
  98. package/dist/chunk-4ISA7PPB.js +219 -0
  99. package/dist/chunk-4WI5PJU6.js +249 -0
  100. package/dist/chunk-52KXFESB.js +136 -0
  101. package/dist/chunk-565M26EE.js +25 -0
  102. package/dist/chunk-5B2WEPYR.js +4226 -0
  103. package/dist/chunk-5B2WEPYR.js.map +1 -0
  104. package/dist/chunk-5LYTDXWP.js +106 -0
  105. package/dist/chunk-5NYU2UYT.js +159 -0
  106. package/dist/chunk-6IFTTSHH.js +66 -0
  107. package/dist/chunk-6M22WJ5Y.js +455 -0
  108. package/dist/chunk-6PWVNCQH.js +74 -0
  109. package/dist/chunk-6UW4J6IU.js +215 -0
  110. package/dist/chunk-6ZFOF6J2.js +103 -0
  111. package/dist/chunk-73JJQ2DB.js +287 -0
  112. package/dist/chunk-73LQJBBF.js +274 -0
  113. package/dist/chunk-7IAA3REE.js +1079 -0
  114. package/dist/chunk-AL6AEGWH.js +2140 -0
  115. package/dist/chunk-AL6AEGWH.js.map +1 -0
  116. package/dist/chunk-ANLLW3KZ.js +228 -0
  117. package/dist/chunk-AQE4Q7K3.js +149 -0
  118. package/dist/chunk-AQE4Q7K3.js.map +1 -0
  119. package/dist/chunk-AS46I4WH.js +220 -0
  120. package/dist/chunk-ASHCV6DO.js +207 -0
  121. package/dist/chunk-BCFIMEZJ.js +296 -0
  122. package/dist/chunk-BJY6223Q.js +942 -0
  123. package/dist/chunk-BSFJW7LD.js +401 -0
  124. package/dist/chunk-BSFJW7LD.js.map +1 -0
  125. package/dist/chunk-BTGOVA2H.js +75 -0
  126. package/dist/chunk-BX4JR6ZU.js +111 -0
  127. package/dist/chunk-BYDTLQ77.js +547 -0
  128. package/dist/chunk-CFUFTIOU.js +156 -0
  129. package/dist/chunk-CFZUKCC3.js +846 -0
  130. package/dist/chunk-CVHUZFHA.js +494 -0
  131. package/dist/chunk-EGHPYAI7.js +170 -0
  132. package/dist/chunk-EGHPYAI7.js.map +1 -0
  133. package/dist/chunk-EHS3QWHJ.js +206 -0
  134. package/dist/chunk-EKX37C3T.js +518 -0
  135. package/dist/chunk-EKX37C3T.js.map +1 -0
  136. package/dist/chunk-ERMKQMMJ.js +64 -0
  137. package/dist/chunk-ERSL4WZT.js +4251 -0
  138. package/dist/chunk-ERSL4WZT.js.map +1 -0
  139. package/dist/chunk-EZMF6W4M.js +64 -0
  140. package/dist/chunk-FO2JX473.js +1518 -0
  141. package/dist/chunk-FUFMB3MS.js +61 -0
  142. package/dist/chunk-GDFJOCDO.js +1084 -0
  143. package/dist/chunk-GDFJOCDO.js.map +1 -0
  144. package/dist/chunk-GZWBHJ4Y.js +191 -0
  145. package/dist/chunk-HIAXIRPX.js +225 -0
  146. package/dist/chunk-HLIZO3FD.js +76 -0
  147. package/dist/chunk-HS56YCCN.js +225 -0
  148. package/dist/chunk-HVJ25XVM.js +131 -0
  149. package/dist/chunk-IL36BNFB.js +169 -0
  150. package/dist/chunk-IMHJU7FX.js +23 -0
  151. package/dist/chunk-J5JYBRUE.js +344 -0
  152. package/dist/chunk-J6Q6RPKY.js +67 -0
  153. package/dist/chunk-JASI6RR6.js +1606 -0
  154. package/dist/chunk-JTXOP6YW.js +831 -0
  155. package/dist/chunk-JWBJFF2K.js +122 -0
  156. package/dist/chunk-K5X62YHZ.js +6831 -0
  157. package/dist/chunk-K5X62YHZ.js.map +1 -0
  158. package/dist/chunk-K76OKYM7.js +45 -0
  159. package/dist/chunk-KBSWQKOT.js +320 -0
  160. package/dist/chunk-KS7VB275.js +285 -0
  161. package/dist/chunk-KW5WVJTH.js +544 -0
  162. package/dist/chunk-KZRJLBQO.js +349 -0
  163. package/dist/chunk-L3FWLIAU.js +188 -0
  164. package/dist/chunk-L6GYTD3A.js +1919 -0
  165. package/dist/chunk-LAL4PKNJ.js +455 -0
  166. package/dist/chunk-LAL4PKNJ.js.map +1 -0
  167. package/dist/chunk-M2LBB44P.js +207 -0
  168. package/dist/chunk-M2LBB44P.js.map +1 -0
  169. package/dist/chunk-MITWP546.js +84 -0
  170. package/dist/chunk-MRQKDVDR.js +42 -0
  171. package/dist/chunk-NBAJACSF.js +26 -0
  172. package/dist/chunk-NBWZ6YFU.js +142 -0
  173. package/dist/chunk-NWML6X6Y.js +97 -0
  174. package/dist/chunk-NX5U6BXW.js +297 -0
  175. package/dist/chunk-PEY4YGW3.js +57 -0
  176. package/dist/chunk-PGRDGQ23.js +150 -0
  177. package/dist/chunk-Q6GYSW47.js +52 -0
  178. package/dist/chunk-QDJRLPT5.js +76 -0
  179. package/dist/chunk-QM7OZC3R.js +392 -0
  180. package/dist/chunk-QO46CYKH.js +275 -0
  181. package/dist/chunk-QR44DQTC.js +66 -0
  182. package/dist/chunk-QVRVSFIQ.js +3868 -0
  183. package/dist/chunk-R6OMFEFR.js +195 -0
  184. package/dist/chunk-R6OMFEFR.js.map +1 -0
  185. package/dist/chunk-RAUZWRJC.js +74 -0
  186. package/dist/chunk-RF73OV6K.js +19 -0
  187. package/dist/chunk-RKP76SGL.js +139 -0
  188. package/dist/chunk-RXNBOUCW.js +910 -0
  189. package/dist/chunk-RXNBOUCW.js.map +1 -0
  190. package/dist/chunk-S6VQMNPI.js +74 -0
  191. package/dist/chunk-SGUUPOPY.js +51 -0
  192. package/dist/chunk-SJJHM57A.js +843 -0
  193. package/dist/chunk-SQ23BTGW.js +676 -0
  194. package/dist/chunk-SQ23BTGW.js.map +1 -0
  195. package/dist/chunk-SVNKWUBQ.js +191 -0
  196. package/dist/chunk-SVNKWUBQ.js.map +1 -0
  197. package/dist/chunk-T7JGOFVX.js +91 -0
  198. package/dist/chunk-TEX7Z7WC.js +2903 -0
  199. package/dist/chunk-TEX7Z7WC.js.map +1 -0
  200. package/dist/chunk-TPQOIWSU.js +58 -0
  201. package/dist/chunk-TSVC2RTQ.js +179 -0
  202. package/dist/chunk-TSVC2RTQ.js.map +1 -0
  203. package/dist/chunk-U3LW43UG.js +604 -0
  204. package/dist/chunk-UAKNLPIU.js +1744 -0
  205. package/dist/chunk-UI6BKYQD.js +225 -0
  206. package/dist/chunk-UI6BKYQD.js.map +1 -0
  207. package/dist/chunk-US3NQJ4L.js +8954 -0
  208. package/dist/chunk-US3NQJ4L.js.map +1 -0
  209. package/dist/chunk-UWABLMIK.js +479 -0
  210. package/dist/chunk-UWABLMIK.js.map +1 -0
  211. package/dist/chunk-V7T3OXUT.js +638 -0
  212. package/dist/chunk-V7T3OXUT.js.map +1 -0
  213. package/dist/chunk-VE4BTRLV.js +167 -0
  214. package/dist/chunk-VR6BCP3U.js +5368 -0
  215. package/dist/chunk-VSVAXKKS.js +97 -0
  216. package/dist/chunk-VWUGI7LE.js +94 -0
  217. package/dist/chunk-W3H7CX5E.js +175 -0
  218. package/dist/chunk-W3H7CX5E.js.map +1 -0
  219. package/dist/chunk-W5IS6CMZ.js +166 -0
  220. package/dist/chunk-WAMT3TUD.js +8914 -0
  221. package/dist/chunk-WN6WHZRC.js +191 -0
  222. package/dist/chunk-WO2SGESS.js +148 -0
  223. package/dist/chunk-WU6ULBSY.js +661 -0
  224. package/dist/chunk-X6KDRJZE.js +69 -0
  225. package/dist/chunk-X6KDRJZE.js.map +1 -0
  226. package/dist/chunk-XOHXG5TG.js +472 -0
  227. package/dist/chunk-XPNCOUXB.js +125 -0
  228. package/dist/chunk-XS7FMDCX.js +363 -0
  229. package/dist/chunk-XVMRO6W5.js +97 -0
  230. package/dist/chunk-Y2JZX6JB.js +137 -0
  231. package/dist/chunk-Y2JZX6JB.js.map +1 -0
  232. package/dist/chunk-Y4UQHVTM.js +39 -0
  233. package/dist/chunk-YGCRKABE.js +391 -0
  234. package/dist/chunk-YJKAVF3E.js +98 -0
  235. package/dist/chunk-ZFINQBE7.js +23992 -0
  236. package/dist/chunk-ZJMOYNZF.js +46 -0
  237. package/dist/chunk-ZZCJNSZ6.js +106 -0
  238. package/dist/claim-WJ5TLA74.js +198 -0
  239. package/dist/cli.js +43 -42
  240. package/dist/cli.js.map +1 -1
  241. package/dist/client-PVBPZ7PY.js +19 -0
  242. package/dist/code-CSXOLKOP.js +76 -0
  243. package/dist/companies-3QI5C5Y6.js +196 -0
  244. package/dist/complete-ASGIH43P.js +82 -0
  245. package/dist/config-MNPHHWYU.js +88 -0
  246. package/dist/connect-F2PU33RV.js +43 -0
  247. package/dist/content-UYBZ5S7Z.js +85 -0
  248. package/dist/conversation-BYO57I25.js +94 -0
  249. package/dist/conversion-report-UCP43YAG.js +125 -0
  250. package/dist/conversion-upload-command-YVA3Y7GJ.js +439 -0
  251. package/dist/conversion-upload-command-YVA3Y7GJ.js.map +1 -0
  252. package/dist/conversion-writes-6ZIY7DHZ.js +120 -0
  253. package/dist/conversions-BDSIXF2V.js +76 -0
  254. package/dist/conversions-JBZD2FZN.js +138 -0
  255. package/dist/copy-writes-SIQPN7L4.js +168 -0
  256. package/dist/copy-writes-SIQPN7L4.js.map +1 -0
  257. package/dist/countries-N2PAVVCQ.js +82 -0
  258. package/dist/create-EDDKOKK6.js +133 -0
  259. package/dist/create-PESL7TJ5.js +237 -0
  260. package/dist/create-PESL7TJ5.js.map +1 -0
  261. package/dist/create-UXH5MYEO.js +208 -0
  262. package/dist/create-YEHXJBFR.js +60 -0
  263. package/dist/creatives-3HSV4K6W.js +89 -0
  264. package/dist/creatives-3HSV4K6W.js.map +1 -0
  265. package/dist/creatives-3TRWYOYU.js +221 -0
  266. package/dist/creatives-KYSRCR5C.js +58 -0
  267. package/dist/credentials-Z4KS5QU6.js +288 -0
  268. package/dist/critique-NYW7FEPO.js +230 -0
  269. package/dist/critique-NYW7FEPO.js.map +1 -0
  270. package/dist/critique-YZWJ3ABO.js +1459 -0
  271. package/dist/crm-CDAVHXUS.js +319 -0
  272. package/dist/crm-TMEDDF67.js +225 -0
  273. package/dist/crop-4WS3WNXI.js +113 -0
  274. package/dist/currency-K4PRDLDG.js +88 -0
  275. package/dist/custom-conversions-XY6G3BXU.js +128 -0
  276. package/dist/custom-conversions-XY6G3BXU.js.map +1 -0
  277. package/dist/customers-R6HXVXAS.js +57 -0
  278. package/dist/decide-IWUWMLIG.js +199 -0
  279. package/dist/delete-DECECVGG.js +65 -0
  280. package/dist/delete-F6AEBS4G.js +55 -0
  281. package/dist/delete-H2L2EGKF.js +71 -0
  282. package/dist/delete-R5IY7VHP.js +71 -0
  283. package/dist/delete-UCL6SL5B.js +67 -0
  284. package/dist/delete-Z4LRS6FG.js +69 -0
  285. package/dist/demographics-JFUKFKK7.js +139 -0
  286. package/dist/describe-44KTJQ6Z.js +97 -0
  287. package/dist/describe-V7LY3RUT.js +97 -0
  288. package/dist/dimensions-FZAJYJJ4.js +101 -0
  289. package/dist/discard-W4B5GF4S.js +67 -0
  290. package/dist/discover-E7OE4WFV.js +93 -0
  291. package/dist/discover-OYVXV25X.js +172 -0
  292. package/dist/domain-5WXROX3N.js +99 -0
  293. package/dist/download-JNNN7GSF.js +299 -0
  294. package/dist/draft-5I6DUWGA.js +281 -0
  295. package/dist/draft-KYARHXHR.js +333 -0
  296. package/dist/draft-RCD6ETPQ.js +308 -0
  297. package/dist/draft-SET2FGU3.js +218 -0
  298. package/dist/draft-URGXA6TO.js +238 -0
  299. package/dist/draft-URGXA6TO.js.map +1 -0
  300. package/dist/draft-US7FTGVC.js +103 -0
  301. package/dist/draft-XK4QG5HQ.js +100 -0
  302. package/dist/draft-YPSHMRPS.js +308 -0
  303. package/dist/draft-YPSHMRPS.js.map +1 -0
  304. package/dist/engine/index.js +13 -13
  305. package/dist/env-3ZELNMXQ.js +51 -0
  306. package/dist/experiment-IKWEIJKD.js +1397 -0
  307. package/dist/experiments-LEAZ4BNF.js +234 -0
  308. package/dist/export-HMF33UYY.js +168 -0
  309. package/dist/extract-PK3MHV6C.js +113 -0
  310. package/dist/facets-WSFLCFYN.js +115 -0
  311. package/dist/favorites-Z7MKEDY3.js +178 -0
  312. package/dist/feed-6VZ3XWKC.js +177 -0
  313. package/dist/feedback-4Y76VRYD.js +109 -0
  314. package/dist/feedback-4Y76VRYD.js.map +1 -0
  315. package/dist/feedback-record-NJAUC2KM.js +263 -0
  316. package/dist/feedback-record-NJAUC2KM.js.map +1 -0
  317. package/dist/fetch-3DI7EKDS.js +177 -0
  318. package/dist/fetch-LGKTI6A6.js +139 -0
  319. package/dist/find-PAWW75PW.js +134 -0
  320. package/dist/fit-FROY76YE.js +63 -0
  321. package/dist/flows-M5DQAKCJ.js +248 -0
  322. package/dist/follow-PNWO2V4L.js +94 -0
  323. package/dist/follow-competitors-BFUGW6PC.js +112 -0
  324. package/dist/following-LKNHRKVC.js +113 -0
  325. package/dist/fonts-G3UCJ6UI.js +37 -0
  326. package/dist/forecast-OOGPMYEK.js +169 -0
  327. package/dist/forecast-OOGPMYEK.js.map +1 -0
  328. package/dist/forecast-VFGNPTYV.js +119 -0
  329. package/dist/funding-O5ZRZN7D.js +85 -0
  330. package/dist/funnel-PNN4HMDB.js +395 -0
  331. package/dist/funnel-PNN4HMDB.js.map +1 -0
  332. package/dist/ga4-SSRVUS7H.js +55 -0
  333. package/dist/generate-T3B6GOO6.js +263 -0
  334. package/dist/get-2BJKONHE.js +61 -0
  335. package/dist/get-6MHTPGHS.js +80 -0
  336. package/dist/get-DDBTEMJL.js +59 -0
  337. package/dist/get-G7JYP5E5.js +57 -0
  338. package/dist/get-IIIYTJY4.js +63 -0
  339. package/dist/get-JE3VGJPS.js +92 -0
  340. package/dist/get-KL7VTM6W.js +38 -0
  341. package/dist/get-ZNCET7LN.js +63 -0
  342. package/dist/gif-HZC5PIGN.js +102 -0
  343. package/dist/google-2JAG2MZJ.js +136 -0
  344. package/dist/google-JQHC36XQ.js +3266 -0
  345. package/dist/google-JQHC36XQ.js.map +1 -0
  346. package/dist/google-ads-Q2WVOJU2.js +196 -0
  347. package/dist/group-5KTGIHXJ.js +43 -0
  348. package/dist/group-6U4GJLHB.js +43 -0
  349. package/dist/gsc-76PWFEHH.js +30 -0
  350. package/dist/history-BVMIJLIL.js +67 -0
  351. package/dist/history-W22KYHZV.js +134 -0
  352. package/dist/hubspot-RF4FMSX2.js +780 -0
  353. package/dist/icon-ENQRKK4O.js +137 -0
  354. package/dist/ideas-Y7HFEXFE.js +43 -0
  355. package/dist/images-2PKU5XDS.js +92 -0
  356. package/dist/improve-L43S5YWU.js +86 -0
  357. package/dist/ingest-JHJOFWIU.js +108 -0
  358. package/dist/ingest-JU67Z5D3.js +24 -0
  359. package/dist/insights-HOOHR2FS.js +425 -0
  360. package/dist/insights-HOOHR2FS.js.map +1 -0
  361. package/dist/insights-NOOVPFK3.js +122 -0
  362. package/dist/inspect-53NDMKC5.js +190 -0
  363. package/dist/inspiration-6NICXN3P.js +53 -0
  364. package/dist/instant-experiences-3LQ7RR6D.js +258 -0
  365. package/dist/instant-experiences-3LQ7RR6D.js.map +1 -0
  366. package/dist/intent-MLZCTLEX.js +95 -0
  367. package/dist/job-EXB5MGPT.js +202 -0
  368. package/dist/job-create-EPYGKZPB.js +109 -0
  369. package/dist/job-status-E7YXP2PT.js +74 -0
  370. package/dist/keep-ELL3JFEC.js +78 -0
  371. package/dist/keyword-gap-WD5TDZFR.js +130 -0
  372. package/dist/keyword-metrics-QMQCZKMX.js +198 -0
  373. package/dist/keywords-for-site-WL54QH6G.js +129 -0
  374. package/dist/landing-ZHCVMCYK.js +28 -0
  375. package/dist/landings-YVXUVNPA.js +151 -0
  376. package/dist/languages-F4FX2VC2.js +40 -0
  377. package/dist/languages-YIYCOFLI.js +55 -0
  378. package/dist/launches-G5AYQIEO.js +19 -0
  379. package/dist/layerize-EEHJX2QP.js +190 -0
  380. package/dist/leads-BDGL7TNL.js +538 -0
  381. package/dist/leads-BDGL7TNL.js.map +1 -0
  382. package/dist/leads-C26QFD46.js +113 -0
  383. package/dist/learn-YRHVTBEW.js +205 -0
  384. package/dist/library-GLXT2ZZI.js +109 -0
  385. package/dist/lighthouse-DUAYYKVA.js +75 -0
  386. package/dist/line-item-writes-HSXCO3UM.js +209 -0
  387. package/dist/line-items-LU7VFYJ3.js +103 -0
  388. package/dist/link-N4F54R2W.js +65 -0
  389. package/dist/linkedin-F43WCEFC.js +1314 -0
  390. package/dist/list-CMCHPFU4.js +76 -0
  391. package/dist/list-EXKTPY65.js +57 -0
  392. package/dist/list-FGWN66JV.js +65 -0
  393. package/dist/list-H4YHY65J.js +304 -0
  394. package/dist/list-IIUY5WTV.js +93 -0
  395. package/dist/list-MNFGWVNZ.js +152 -0
  396. package/dist/list-QUQ5TUDK.js +51 -0
  397. package/dist/list-TY5WZFFE.js +50 -0
  398. package/dist/list-YWEP74CM.js +65 -0
  399. package/dist/locations-N3USZ27M.js +40 -0
  400. package/dist/locations-S67HBZA7.js +67 -0
  401. package/dist/log-CGQRPLGU.js +93 -0
  402. package/dist/logo-IXIQBWRL.js +18 -0
  403. package/dist/lookup-NKLRB3NS.js +22 -0
  404. package/dist/make-WOO3XWQ2.js +1368 -0
  405. package/dist/make-WOO3XWQ2.js.map +1 -0
  406. package/dist/map-GW7NDNYC.js +434 -0
  407. package/dist/mcp-DUTXWJFC.js +715 -0
  408. package/dist/media-2JCAFWCU.js +89 -0
  409. package/dist/media-NPMNY5MJ.js +18 -0
  410. package/dist/media-sources-J2LY7NLR.js +35 -0
  411. package/dist/members-5YUHOWVS.js +45 -0
  412. package/dist/meme-G2HE54IY.js +100 -0
  413. package/dist/meta-ACKABP2H.js +122 -0
  414. package/dist/metrics-ZNQDSBVO.js +152 -0
  415. package/dist/models-QAR6ZOM3.js +155 -0
  416. package/dist/normalize-QP5Z5EYO.js +142 -0
  417. package/dist/normalize-X6GW75LV.js +806 -0
  418. package/dist/options-743FW5PT.js +123 -0
  419. package/dist/organization-OW6WPRA3.js +947 -0
  420. package/dist/output-GAAXGXQS.js +24 -0
  421. package/dist/page-ZA6VOW7F.js +105 -0
  422. package/dist/page-photos-B5775SA4.js +116 -0
  423. package/dist/page-photos-B5775SA4.js.map +1 -0
  424. package/dist/pages-Q4LDTTOZ.js +67 -0
  425. package/dist/pages-Q4LDTTOZ.js.map +1 -0
  426. package/dist/performance-F7OHUDYL.js +25 -0
  427. package/dist/pinterest-SH7Q3BGY.js +96 -0
  428. package/dist/pixels-CKH6Q2LC.js +109 -0
  429. package/dist/pixels-CKH6Q2LC.js.map +1 -0
  430. package/dist/pixels-YVOTALZW.js +60 -0
  431. package/dist/plan-SF3AJ3U3.js +207 -0
  432. package/dist/posts-JMGQEPWZ.js +34 -0
  433. package/dist/preview-UJH6FFJV.js +216 -0
  434. package/dist/preview-UJH6FFJV.js.map +1 -0
  435. package/dist/profile-GE6L5LGA.js +159 -0
  436. package/dist/promoted-tweet-writes-T2ZN246D.js +181 -0
  437. package/dist/promoted-tweets-EW3VXPZU.js +119 -0
  438. package/dist/properties-EJ6ANQZO.js +101 -0
  439. package/dist/publish-PIUYQKOE.js +342 -0
  440. package/dist/query-732XAQUN.js +61 -0
  441. package/dist/query-D7OVFIC4.js +236 -0
  442. package/dist/query-EKMXON7N.js +247 -0
  443. package/dist/questionnaire-RSAGT4BO.js +93 -0
  444. package/dist/read-JQ3OAR7D.js +141 -0
  445. package/dist/reddit-33K3IIHG.js +27 -0
  446. package/dist/refresh-JIJVT3SV.js +95 -0
  447. package/dist/refresh-Q5ZVBWQX.js +42 -0
  448. package/dist/release-3MTLVI3Q.js +61 -0
  449. package/dist/relevant-pages-HKF77GO5.js +99 -0
  450. package/dist/remove-3EIQM4ZN.js +51 -0
  451. package/dist/remove-T6UJSL5S.js +49 -0
  452. package/dist/reopen-56LN4EDE.js +64 -0
  453. package/dist/rerun-FQCYQ5OO.js +93 -0
  454. package/dist/rerun-FQCYQ5OO.js.map +1 -0
  455. package/dist/research-IU26Y65V.js +263 -0
  456. package/dist/research-P5FLAJIZ.js +62 -0
  457. package/dist/reset-7L6UNBW6.js +55 -0
  458. package/dist/reset-7T3QY4MY.js +55 -0
  459. package/dist/resolve-LZGMF3RI.js +122 -0
  460. package/dist/retry-CCQPI5MS.js +63 -0
  461. package/dist/retry-EJIMFCPU.js +61 -0
  462. package/dist/retry-failed-FTS44UES.js +45 -0
  463. package/dist/revenue-3WIZFO4L.js +89 -0
  464. package/dist/rule-writes-GOUJ7QDD.js +523 -0
  465. package/dist/rule-writes-GOUJ7QDD.js.map +1 -0
  466. package/dist/rules-CC4M4WH5.js +217 -0
  467. package/dist/rules-CC4M4WH5.js.map +1 -0
  468. package/dist/rules-TMLFDY6X.js +97 -0
  469. package/dist/rules-add-O766M6I5.js +463 -0
  470. package/dist/run-Y7VNP5EE.js +67 -0
  471. package/dist/run-ZXGD5GAY.js +68 -0
  472. package/dist/scaffold-ad-RM7ZUCJQ.js +1514 -0
  473. package/dist/scaffold-ad-RM7ZUCJQ.js.map +1 -0
  474. package/dist/scaffold-static-ad-KLP7UD3Q.js +1008 -0
  475. package/dist/scaffold-static-ad-KLP7UD3Q.js.map +1 -0
  476. package/dist/scaffold-video-B7KMSBCG.js +886 -0
  477. package/dist/scaffold-video-B7KMSBCG.js.map +1 -0
  478. package/dist/schedule-AJDMS4BD.js +62 -0
  479. package/dist/schedule-NCCNWKDY.js +67 -0
  480. package/dist/scheduled-agents-PCS3VL4R.js +50 -0
  481. package/dist/schema-KIA5RJDM.js +69 -0
  482. package/dist/schema-ZUOO5D6X.js +133 -0
  483. package/dist/scrape-MWW6FBUC.js +2241 -0
  484. package/dist/screenshot-6K7AEO4C.js +102 -0
  485. package/dist/search-2VJC4CVT.js +26 -0
  486. package/dist/search-EUGQ45JM.js +224 -0
  487. package/dist/search-L5CMOZA3.js +175 -0
  488. package/dist/search-NPL5TN7D.js +92 -0
  489. package/dist/search-RZKZUUZC.js +91 -0
  490. package/dist/search-YLKXXAYA.js +51 -0
  491. package/dist/search-copy-LC5EPYJG.js +168 -0
  492. package/dist/seeds-JI34P4HA.js +101 -0
  493. package/dist/select-ZAJH4HZ5.js +104 -0
  494. package/dist/select-ZAJH4HZ5.js.map +1 -0
  495. package/dist/sends-7WGK6K6C.js +309 -0
  496. package/dist/sequences-IIEG46TU.js +146 -0
  497. package/dist/set-prompt-6H6JQW3X.js +196 -0
  498. package/dist/set-prompt-6H6JQW3X.js.map +1 -0
  499. package/dist/setup-links-VNEI42A5.js +142 -0
  500. package/dist/shared-UNQ3OBEC.js +32 -0
  501. package/dist/shopify-TOUT5NTX.js +3956 -0
  502. package/dist/shopify-TOUT5NTX.js.map +1 -0
  503. package/dist/site-E4EUL77X.js +178 -0
  504. package/dist/sitemaps-R6462TYK.js +87 -0
  505. package/dist/sites-BS5SBTVM.js +101 -0
  506. package/dist/skills-7BZQVAEY.js +47 -0
  507. package/dist/sources-6TCMSLQK.js +30 -0
  508. package/dist/sources-LO3YOOQO.js +455 -0
  509. package/dist/stale-DWC6547O.js +74 -0
  510. package/dist/stale-DWC6547O.js.map +1 -0
  511. package/dist/stats-TVQVRDQS.js +34 -0
  512. package/dist/status-J4K5HOKZ.js +63 -0
  513. package/dist/sticker-IQTULOZN.js +94 -0
  514. package/dist/stock-25YD32HR.js +179 -0
  515. package/dist/studies-GVNMVY57.js +250 -0
  516. package/dist/studies-GVNMVY57.js.map +1 -0
  517. package/dist/studio-2M2XBR7E.js +49 -0
  518. package/dist/study-writes-GHA7REOK.js +468 -0
  519. package/dist/study-writes-GHA7REOK.js.map +1 -0
  520. package/dist/suggest-6PNUDXOE.js +66 -0
  521. package/dist/sync-3HWGVAQV.js +55 -0
  522. package/dist/sync-4IBJWSBV.js +55 -0
  523. package/dist/sync-GHPIPBO6.js +265 -0
  524. package/dist/sync-definition-HEASUFK6.js +67 -0
  525. package/dist/tag-76TTKDKF.js +57 -0
  526. package/dist/tag-manager-4AJIUX7V.js +43 -0
  527. package/dist/tags-2XK6ZQI2.js +26 -0
  528. package/dist/tags-6LW4FTZ3.js +21 -0
  529. package/dist/tags-QEAH2IRF.js +21 -0
  530. package/dist/tags-XTY5VXDS.js +225 -0
  531. package/dist/tags-ZPBHZBLV.js +21 -0
  532. package/dist/targeting-7IF7LRXO.js +760 -0
  533. package/dist/targeting-7IF7LRXO.js.map +1 -0
  534. package/dist/targeting-constants-ARGJ3QQV.js +118 -0
  535. package/dist/targeting-criteria-GMWARSTV.js +113 -0
  536. package/dist/targets-I2WFL6JZ.js +104 -0
  537. package/dist/terms-YM6UNNYX.js +102 -0
  538. package/dist/terms-YM6UNNYX.js.map +1 -0
  539. package/dist/testimonials-DKFN34CI.js +32 -0
  540. package/dist/themes-XXVYTL54.js +95 -0
  541. package/dist/themes-XXVYTL54.js.map +1 -0
  542. package/dist/top-companies-7C3QZ3Q4.js +109 -0
  543. package/dist/translate-W6S6U4EE.js +607 -0
  544. package/dist/translate-W6S6U4EE.js.map +1 -0
  545. package/dist/triggers-I6BWR2BN.js +143 -0
  546. package/dist/tweets-SGNWR3H5.js +123 -0
  547. package/dist/unfollow-TMZ76BRA.js +46 -0
  548. package/dist/unlink-CD7WJQBU.js +68 -0
  549. package/dist/unstage-ATF3XNAD.js +95 -0
  550. package/dist/unstage-KP5VRZMN.js +86 -0
  551. package/dist/update-4EZRHJNR.js +81 -0
  552. package/dist/update-5MWCI3DR.js +64 -0
  553. package/dist/update-7XYPACZR.js +189 -0
  554. package/dist/update-FLNXNPQA.js +99 -0
  555. package/dist/update-K75QQ2GN.js +153 -0
  556. package/dist/upload-NSSD63IM.js +150 -0
  557. package/dist/upload-O4IINV5I.js +127 -0
  558. package/dist/upscale-UXOBILTP.js +109 -0
  559. package/dist/url-options-UK244DY7.js +130 -0
  560. package/dist/url-params-2SXL2PX4.js +99 -0
  561. package/dist/use-F5TRLSNK.js +95 -0
  562. package/dist/validate-2N3N3ING.js +120 -0
  563. package/dist/validate-2N3N3ING.js.map +1 -0
  564. package/dist/variant-KLBKFKHB.js +338 -0
  565. package/dist/videos-TBYEUE35.js +39 -0
  566. package/dist/view-R64LLT5L.js +121 -0
  567. package/dist/viewer-check-KBF5PCQV.js +81 -0
  568. package/dist/web-TMQHTWRB.js +141 -0
  569. package/dist/winners-VN2EHFDV.js +113 -0
  570. package/dist/winning-ads-YYBQZJRL.js +86 -0
  571. package/dist/write-commands-3RLSYXOH.js +1170 -0
  572. package/dist/write-commands-3RLSYXOH.js.map +1 -0
  573. package/dist/write-commands-AGKTMDAR.js +713 -0
  574. package/dist/write-commands-EZH66GPE.js +1493 -0
  575. package/dist/write-commands-G6423E2M.js +206 -0
  576. package/dist/x-JGV5D7AV.js +47 -0
  577. package/package.json +2 -1
  578. package/dist/account-EF6OPUJT.js +0 -80
  579. package/dist/account-RKULYCBU.js +0 -138
  580. package/dist/account-RKULYCBU.js.map +0 -1
  581. package/dist/account-ZKJFX2GK.js +0 -80
  582. package/dist/account-assets-CFAOK5DT.js +0 -289
  583. package/dist/account-assets-CFAOK5DT.js.map +0 -1
  584. package/dist/account-level-FYY73RMI.js +0 -608
  585. package/dist/account-level-FYY73RMI.js.map +0 -1
  586. package/dist/account-reads-CDZ3EL5D.js +0 -218
  587. package/dist/account-reads-CDZ3EL5D.js.map +0 -1
  588. package/dist/account-users-SZCYHVBM.js +0 -62
  589. package/dist/account-writes-VWU4FRGQ.js +0 -66
  590. package/dist/accounts-5DFYKYSM.js +0 -78
  591. package/dist/accounts-GVNJHHCS.js +0 -75
  592. package/dist/accounts-GVNJHHCS.js.map +0 -1
  593. package/dist/accounts-OGAIQNE6.js +0 -612
  594. package/dist/accounts-SLFTEHCR.js +0 -114
  595. package/dist/accounts-W4BPE2CS.js +0 -115
  596. package/dist/actions-FMNJSOBA.js +0 -55
  597. package/dist/active-entities-6LIZ63M5.js +0 -103
  598. package/dist/activecampaign-LYYYH6XD.js +0 -936
  599. package/dist/activities-EBYAXP7Y.js +0 -74
  600. package/dist/activities-EBYAXP7Y.js.map +0 -1
  601. package/dist/ad-group-writes-ID6I3QUZ.js +0 -170
  602. package/dist/ad-groups-M7CV6NTH.js +0 -68
  603. package/dist/ad-writes-TSOAZYRE.js +0 -174
  604. package/dist/add-44SGKTS4.js +0 -97
  605. package/dist/add-6DDU34GR.js +0 -81
  606. package/dist/add-AOQLZRPC.js +0 -80
  607. package/dist/add-HWXEPSZF.js +0 -105
  608. package/dist/add-VDZPGZF5.js +0 -148
  609. package/dist/add-YYP3O536.js +0 -303
  610. package/dist/add-accounts-QM4TQGDW.js +0 -91
  611. package/dist/ads-CGLO73MH.js +0 -77
  612. package/dist/ads-KDIRM745.js +0 -128
  613. package/dist/ads-OLXSDPD6.js +0 -40
  614. package/dist/ads-OLXSDPD6.js.map +0 -1
  615. package/dist/ads-YN2RFVXT.js +0 -114
  616. package/dist/ads-YN2RFVXT.js.map +0 -1
  617. package/dist/adsets-Y6BI4PKX.js +0 -177
  618. package/dist/adsets-Y6BI4PKX.js.map +0 -1
  619. package/dist/advertisers-OMB4FKK6.js +0 -125
  620. package/dist/advertisers-STYAIX72.js +0 -121
  621. package/dist/analytics-6WBK4VFO.js +0 -1977
  622. package/dist/analytics-6WBK4VFO.js.map +0 -1
  623. package/dist/analytics-DHB325DM.js +0 -434
  624. package/dist/animate-RGZWDZG2.js +0 -480
  625. package/dist/asset-writes-IO4QAGHL.js +0 -47
  626. package/dist/assign-BFXHYTMF.js +0 -78
  627. package/dist/audience-size-XWHZV2GH.js +0 -74
  628. package/dist/audience-writes-A2BWAI6W.js +0 -324
  629. package/dist/audience-writes-A2BWAI6W.js.map +0 -1
  630. package/dist/audiences-CDMGWVPJ.js +0 -84
  631. package/dist/audiences-CDMGWVPJ.js.map +0 -1
  632. package/dist/audiences-CHSF4TQR.js +0 -85
  633. package/dist/audiences-WXIP5PJH.js +0 -268
  634. package/dist/audit-IYGRU7LD.js +0 -152
  635. package/dist/audit-SJKN45IG.js +0 -88
  636. package/dist/autocomplete-SDDSJTAF.js +0 -112
  637. package/dist/avatars-I4H3NMEJ.js +0 -38
  638. package/dist/bid-pricing-OVYBDRMV.js +0 -101
  639. package/dist/brand-3V7ECY7D.js +0 -22
  640. package/dist/brief-U2W7KMFC.js +0 -539
  641. package/dist/brief-U2W7KMFC.js.map +0 -1
  642. package/dist/businesses-LPMQQGET.js +0 -53
  643. package/dist/businesses-LPMQQGET.js.map +0 -1
  644. package/dist/campaign-groups-FJHBVUA3.js +0 -97
  645. package/dist/campaign-writes-W5IL6ZGB.js +0 -170
  646. package/dist/campaign-writes-XKYYMZML.js +0 -166
  647. package/dist/campaigns-E5UW4I3X.js +0 -111
  648. package/dist/campaigns-FLTPD66X.js +0 -76
  649. package/dist/campaigns-GMWDSTYE.js +0 -127
  650. package/dist/campaigns-GMWDSTYE.js.map +0 -1
  651. package/dist/campaigns-MCB76NPQ.js +0 -107
  652. package/dist/canvas-JCNKMGCG.js +0 -46
  653. package/dist/capabilities-CLTZCXCZ.js +0 -145
  654. package/dist/cards-DVC5NT5X.js +0 -85
  655. package/dist/catalog-ZDLQAODO.js +0 -65
  656. package/dist/catalogs-26VXVUST.js +0 -128
  657. package/dist/catalogs-L4JLSLHY.js +0 -778
  658. package/dist/catalogs-L4JLSLHY.js.map +0 -1
  659. package/dist/changes-SX2N5KIO.js +0 -135
  660. package/dist/chatgpt-XFZ42NXC.js +0 -47
  661. package/dist/chats-DTJSBDWO.js +0 -277
  662. package/dist/check-CZTS64AW.js +0 -105
  663. package/dist/chunk-2VIZ4UUZ.js +0 -320
  664. package/dist/chunk-2YKXDFYX.js +0 -191
  665. package/dist/chunk-2YTBPRRG.js +0 -207
  666. package/dist/chunk-3RGR6COY.js +0 -219
  667. package/dist/chunk-3S274625.js +0 -131
  668. package/dist/chunk-3SNCMEJB.js +0 -97
  669. package/dist/chunk-4Z5BOHCH.js +0 -42
  670. package/dist/chunk-57KKVDDR.js +0 -472
  671. package/dist/chunk-5GQCN2QZ.js +0 -391
  672. package/dist/chunk-5VKADFSS.js +0 -111
  673. package/dist/chunk-5YKNG6NN.js +0 -45
  674. package/dist/chunk-6UNOK7WV.js +0 -97
  675. package/dist/chunk-6YLNY6CK.js +0 -220
  676. package/dist/chunk-7KHTJQGV.js +0 -1518
  677. package/dist/chunk-7QGFO35A.js +0 -23
  678. package/dist/chunk-A3DKSAEL.js +0 -1606
  679. package/dist/chunk-A4DZ5L3T.js +0 -665
  680. package/dist/chunk-A4DZ5L3T.js.map +0 -1
  681. package/dist/chunk-A4MVVPJ2.js +0 -4204
  682. package/dist/chunk-A4MVVPJ2.js.map +0 -1
  683. package/dist/chunk-A6WKCV3V.js +0 -75
  684. package/dist/chunk-ACDLKTUP.js +0 -23992
  685. package/dist/chunk-AV7ALENU.js +0 -191
  686. package/dist/chunk-B7GF34FU.js +0 -8914
  687. package/dist/chunk-BAXDNVT2.js +0 -225
  688. package/dist/chunk-BC2BXRXY.js +0 -2887
  689. package/dist/chunk-BC2BXRXY.js.map +0 -1
  690. package/dist/chunk-BDYLILMW.js +0 -150
  691. package/dist/chunk-BK2W6XNJ.js +0 -205
  692. package/dist/chunk-BK2W6XNJ.js.map +0 -1
  693. package/dist/chunk-BRLFQ4VX.js +0 -604
  694. package/dist/chunk-BVF2P65L.js +0 -58
  695. package/dist/chunk-CBXIUKGG.js +0 -74
  696. package/dist/chunk-CRIP3IUP.js +0 -191
  697. package/dist/chunk-CRIP3IUP.js.map +0 -1
  698. package/dist/chunk-CZYLHFSD.js +0 -106
  699. package/dist/chunk-D5NEIESR.js +0 -215
  700. package/dist/chunk-DJE7UXYT.js +0 -831
  701. package/dist/chunk-EFWXYUSK.js +0 -139
  702. package/dist/chunk-EGPYWJGZ.js +0 -98
  703. package/dist/chunk-EJ4QCMM6.js +0 -285
  704. package/dist/chunk-EONSZAZB.js +0 -3868
  705. package/dist/chunk-F2OCUTMQ.js +0 -544
  706. package/dist/chunk-F377KYIM.js +0 -274
  707. package/dist/chunk-FALJQCWL.js +0 -661
  708. package/dist/chunk-FCM6VPFP.js +0 -98
  709. package/dist/chunk-FG3MV2XM.js +0 -89
  710. package/dist/chunk-FKG476GH.js +0 -392
  711. package/dist/chunk-FKYPAGKK.js +0 -1919
  712. package/dist/chunk-FUGQSIYG.js +0 -297
  713. package/dist/chunk-G4OFH3MX.js +0 -455
  714. package/dist/chunk-G4OFH3MX.js.map +0 -1
  715. package/dist/chunk-GZ4A2VYW.js +0 -39
  716. package/dist/chunk-HLVRHBKL.js +0 -1078
  717. package/dist/chunk-HLVRHBKL.js.map +0 -1
  718. package/dist/chunk-HPLHAHG5.js +0 -275
  719. package/dist/chunk-I24YT2KG.js +0 -122
  720. package/dist/chunk-IBTSIPYA.js +0 -74
  721. package/dist/chunk-IFDZZOUC.js +0 -903
  722. package/dist/chunk-IFDZZOUC.js.map +0 -1
  723. package/dist/chunk-IZU6AR7D.js +0 -287
  724. package/dist/chunk-JHUYPCMT.js +0 -74
  725. package/dist/chunk-JVVUI55M.js +0 -455
  726. package/dist/chunk-JX7BX2NB.js +0 -333
  727. package/dist/chunk-KKSHEPBY.js +0 -363
  728. package/dist/chunk-KNY4DLVF.js +0 -67
  729. package/dist/chunk-KQ7RCLGC.js +0 -547
  730. package/dist/chunk-KXCKTEJ6.js +0 -76
  731. package/dist/chunk-L7WMS5PW.js +0 -172
  732. package/dist/chunk-L7WMS5PW.js.map +0 -1
  733. package/dist/chunk-LBRO4MTL.js +0 -19
  734. package/dist/chunk-LK6W5FDV.js +0 -35
  735. package/dist/chunk-LNRPOULW.js +0 -224
  736. package/dist/chunk-LX6WC2XZ.js +0 -942
  737. package/dist/chunk-LZ5PTBWR.js +0 -66
  738. package/dist/chunk-MMGTJBM6.js +0 -142
  739. package/dist/chunk-MOFMOYUA.js +0 -148
  740. package/dist/chunk-MSQR5I52.js +0 -56
  741. package/dist/chunk-NA7PXVCW.js +0 -106
  742. package/dist/chunk-NZKBW4YB.js +0 -846
  743. package/dist/chunk-O37VU7FG.js +0 -6799
  744. package/dist/chunk-O37VU7FG.js.map +0 -1
  745. package/dist/chunk-OEZYSL3U.js +0 -51
  746. package/dist/chunk-OL7JS4NG.js +0 -5368
  747. package/dist/chunk-OOVHBMQB.js +0 -103
  748. package/dist/chunk-PAJJXZ3Z.js +0 -170
  749. package/dist/chunk-PAJJXZ3Z.js.map +0 -1
  750. package/dist/chunk-PTH7VWKK.js +0 -159
  751. package/dist/chunk-PYD6IGW6.js +0 -401
  752. package/dist/chunk-PYD6IGW6.js.map +0 -1
  753. package/dist/chunk-Q5QHNTHA.js +0 -97
  754. package/dist/chunk-QANGHND7.js +0 -2140
  755. package/dist/chunk-QANGHND7.js.map +0 -1
  756. package/dist/chunk-QE2E4EYJ.js +0 -349
  757. package/dist/chunk-QG4MW2V4.js +0 -25
  758. package/dist/chunk-QMOYQJIN.js +0 -46
  759. package/dist/chunk-QNJVRI3E.js +0 -84
  760. package/dist/chunk-QRLTVJ6F.js +0 -167
  761. package/dist/chunk-QZF4BVKL.js +0 -66
  762. package/dist/chunk-R25JC3BD.js +0 -125
  763. package/dist/chunk-RITUSBYO.js +0 -61
  764. package/dist/chunk-RJZS4XDJ.js +0 -64
  765. package/dist/chunk-RMMSBI5C.js +0 -149
  766. package/dist/chunk-RMMSBI5C.js.map +0 -1
  767. package/dist/chunk-RUHZ7BRN.js +0 -163
  768. package/dist/chunk-RUHZ7BRN.js.map +0 -1
  769. package/dist/chunk-RVTXDQYC.js +0 -46
  770. package/dist/chunk-S4VLLGTW.js +0 -843
  771. package/dist/chunk-SSTL3A7Z.js +0 -206
  772. package/dist/chunk-SVM3DGAQ.js +0 -228
  773. package/dist/chunk-SZNGQ2GF.js +0 -64
  774. package/dist/chunk-TD4SO6TR.js +0 -169
  775. package/dist/chunk-TQNDAOMB.js +0 -188
  776. package/dist/chunk-U6RONIJC.js +0 -52
  777. package/dist/chunk-U7YR5CZL.js +0 -1744
  778. package/dist/chunk-UFKO626N.js +0 -84
  779. package/dist/chunk-UZ4RTOFG.js +0 -91
  780. package/dist/chunk-VAX7PFQV.js +0 -592
  781. package/dist/chunk-VDRSZK4P.js +0 -494
  782. package/dist/chunk-VDTOAZ6W.js +0 -76
  783. package/dist/chunk-VI5YQQ63.js +0 -296
  784. package/dist/chunk-VNU2EYD4.js +0 -344
  785. package/dist/chunk-WHWSLDNR.js +0 -166
  786. package/dist/chunk-WT4WDIXA.js +0 -156
  787. package/dist/chunk-WTJSMYY2.js +0 -4249
  788. package/dist/chunk-WTJSMYY2.js.map +0 -1
  789. package/dist/chunk-X5QWQNAX.js +0 -26
  790. package/dist/chunk-XEX23CIB.js +0 -160
  791. package/dist/chunk-XEX23CIB.js.map +0 -1
  792. package/dist/chunk-XQIOCIDO.js +0 -204
  793. package/dist/chunk-XQIOCIDO.js.map +0 -1
  794. package/dist/chunk-XRIM7NYV.js +0 -136
  795. package/dist/chunk-XXDF25BW.js +0 -8939
  796. package/dist/chunk-XXDF25BW.js.map +0 -1
  797. package/dist/chunk-Y46FE75E.js +0 -627
  798. package/dist/chunk-Y46FE75E.js.map +0 -1
  799. package/dist/chunk-Y4OYFJP7.js +0 -94
  800. package/dist/chunk-YJ3LSFMX.js +0 -249
  801. package/dist/chunk-YV7PKHFB.js +0 -66
  802. package/dist/chunk-YVK5RT3B.js +0 -197
  803. package/dist/chunk-YWWRLZUR.js +0 -433
  804. package/dist/chunk-YWWRLZUR.js.map +0 -1
  805. package/dist/chunk-Z4S5BCVZ.js +0 -57
  806. package/dist/chunk-ZA7OQLDJ.js +0 -225
  807. package/dist/chunk-ZYGK7GAK.js +0 -1079
  808. package/dist/claim-TSFPWTQY.js +0 -198
  809. package/dist/client-PFQ3SLQ4.js +0 -19
  810. package/dist/code-OF7NV2EG.js +0 -76
  811. package/dist/companies-P7FZNJQV.js +0 -196
  812. package/dist/complete-SYDIHMD5.js +0 -82
  813. package/dist/config-YVNIYO5K.js +0 -88
  814. package/dist/connect-COS6G45S.js +0 -43
  815. package/dist/content-JDTHVSPS.js +0 -85
  816. package/dist/conversation-UJOWMJRH.js +0 -94
  817. package/dist/conversion-report-7JJ5L6WH.js +0 -125
  818. package/dist/conversion-upload-command-UO2QWG3J.js +0 -438
  819. package/dist/conversion-upload-command-UO2QWG3J.js.map +0 -1
  820. package/dist/conversion-writes-GIGAZT4T.js +0 -120
  821. package/dist/conversions-CIJZLGII.js +0 -76
  822. package/dist/conversions-ONOIEILU.js +0 -138
  823. package/dist/copy-writes-SKHINWEA.js +0 -167
  824. package/dist/copy-writes-SKHINWEA.js.map +0 -1
  825. package/dist/countries-F5ISQB3M.js +0 -82
  826. package/dist/create-DPQRYQXK.js +0 -208
  827. package/dist/create-JD76Z4A4.js +0 -60
  828. package/dist/create-NOT3HGP2.js +0 -133
  829. package/dist/create-ZYEB7SHF.js +0 -236
  830. package/dist/create-ZYEB7SHF.js.map +0 -1
  831. package/dist/creatives-26MRMCDJ.js +0 -88
  832. package/dist/creatives-26MRMCDJ.js.map +0 -1
  833. package/dist/creatives-LRSELC7Y.js +0 -221
  834. package/dist/creatives-SEQHJD2M.js +0 -58
  835. package/dist/credentials-LHPTUVVA.js +0 -288
  836. package/dist/critique-Q7GSZ5RP.js +0 -1459
  837. package/dist/critique-RR2XOQCE.js +0 -228
  838. package/dist/critique-RR2XOQCE.js.map +0 -1
  839. package/dist/crm-J7EU32PL.js +0 -319
  840. package/dist/crm-MC444ZVU.js +0 -225
  841. package/dist/crop-PWHHLMDF.js +0 -113
  842. package/dist/currency-TAEJVMVK.js +0 -88
  843. package/dist/custom-conversions-RLBWJL7D.js +0 -127
  844. package/dist/custom-conversions-RLBWJL7D.js.map +0 -1
  845. package/dist/customers-LMSX33FO.js +0 -57
  846. package/dist/decide-E4AREOPP.js +0 -199
  847. package/dist/delete-3US2W4F6.js +0 -71
  848. package/dist/delete-BQBVATMF.js +0 -55
  849. package/dist/delete-K7A3AUPH.js +0 -65
  850. package/dist/delete-THR72JIR.js +0 -71
  851. package/dist/delete-VV2ICIHF.js +0 -67
  852. package/dist/delete-XBIME2H4.js +0 -69
  853. package/dist/demographics-7GWUXXS6.js +0 -139
  854. package/dist/describe-HOMUJ4T4.js +0 -97
  855. package/dist/describe-JVHEKSX3.js +0 -97
  856. package/dist/dimensions-K2WK7QBJ.js +0 -101
  857. package/dist/discard-3CLZ4DPD.js +0 -67
  858. package/dist/discover-5Z253HXF.js +0 -172
  859. package/dist/discover-SII47P73.js +0 -93
  860. package/dist/domain-ZS74BSE6.js +0 -99
  861. package/dist/download-DHB3EIMS.js +0 -299
  862. package/dist/draft-7DWRFCXW.js +0 -281
  863. package/dist/draft-DHDDPACQ.js +0 -103
  864. package/dist/draft-E47E762T.js +0 -100
  865. package/dist/draft-EHU4A7EZ.js +0 -237
  866. package/dist/draft-EHU4A7EZ.js.map +0 -1
  867. package/dist/draft-J3B33RAZ.js +0 -308
  868. package/dist/draft-MNEM4N5W.js +0 -307
  869. package/dist/draft-MNEM4N5W.js.map +0 -1
  870. package/dist/draft-MZLWVX3D.js +0 -218
  871. package/dist/draft-R56PIXCV.js +0 -333
  872. package/dist/env-PKUYZY5O.js +0 -51
  873. package/dist/experiment-7RJ5X2LL.js +0 -1397
  874. package/dist/experiments-NOSJJMYI.js +0 -234
  875. package/dist/export-AGDNQZKC.js +0 -168
  876. package/dist/extract-4MIPIBVC.js +0 -113
  877. package/dist/facets-E6SHYUAI.js +0 -115
  878. package/dist/favorites-XHY64GCM.js +0 -178
  879. package/dist/feed-724KWSNI.js +0 -177
  880. package/dist/feedback-HXCQBV7S.js +0 -107
  881. package/dist/feedback-HXCQBV7S.js.map +0 -1
  882. package/dist/feedback-record-GXPYXNT6.js +0 -261
  883. package/dist/feedback-record-GXPYXNT6.js.map +0 -1
  884. package/dist/fetch-HMUGSRE4.js +0 -177
  885. package/dist/fetch-RYS6DEJH.js +0 -139
  886. package/dist/find-2EPXK5RF.js +0 -134
  887. package/dist/fit-W7UNFZT5.js +0 -63
  888. package/dist/flows-SO5J3M3X.js +0 -248
  889. package/dist/follow-LRGW6OHI.js +0 -94
  890. package/dist/follow-competitors-UUN7EKFR.js +0 -112
  891. package/dist/following-ISRRC2QL.js +0 -113
  892. package/dist/fonts-N42UYWTX.js +0 -37
  893. package/dist/forecast-24LGJVLC.js +0 -119
  894. package/dist/forecast-W7Z5TVQX.js +0 -168
  895. package/dist/forecast-W7Z5TVQX.js.map +0 -1
  896. package/dist/funding-KMXQ6CXM.js +0 -85
  897. package/dist/funnel-NYT36B3C.js +0 -395
  898. package/dist/funnel-NYT36B3C.js.map +0 -1
  899. package/dist/ga4-6EIQC2TG.js +0 -55
  900. package/dist/generate-Y76WU7M7.js +0 -263
  901. package/dist/get-23L2AVTV.js +0 -63
  902. package/dist/get-GDI2MOAU.js +0 -92
  903. package/dist/get-JPOUTSU5.js +0 -63
  904. package/dist/get-KAGO4EC5.js +0 -80
  905. package/dist/get-LNLY2RWU.js +0 -61
  906. package/dist/get-PZX27LQY.js +0 -38
  907. package/dist/get-R5JAFHTH.js +0 -57
  908. package/dist/get-VFRJAC2I.js +0 -59
  909. package/dist/gif-DVNNWOYA.js +0 -102
  910. package/dist/google-O5OI6QFU.js +0 -136
  911. package/dist/google-WYXDMH2N.js +0 -3265
  912. package/dist/google-WYXDMH2N.js.map +0 -1
  913. package/dist/google-ads-6X4BHGUR.js +0 -196
  914. package/dist/group-HNRZJMZX.js +0 -43
  915. package/dist/group-QPQUCV6E.js +0 -43
  916. package/dist/gsc-BM3T2GDL.js +0 -30
  917. package/dist/history-DGHMJ2XF.js +0 -67
  918. package/dist/history-LGOWYLBE.js +0 -134
  919. package/dist/hubspot-LJB3ETUT.js +0 -780
  920. package/dist/icon-B7DG53S5.js +0 -137
  921. package/dist/ideas-DYN2DMFN.js +0 -41
  922. package/dist/images-EQCUXEHF.js +0 -92
  923. package/dist/improve-56FHWRWN.js +0 -86
  924. package/dist/ingest-B46AY3QU.js +0 -24
  925. package/dist/ingest-T7ZS2R4U.js +0 -108
  926. package/dist/insights-BPKB6VSU.js +0 -424
  927. package/dist/insights-BPKB6VSU.js.map +0 -1
  928. package/dist/insights-EU45J56U.js +0 -122
  929. package/dist/inspect-BSNGAT2S.js +0 -190
  930. package/dist/inspiration-TCCKM4R7.js +0 -53
  931. package/dist/instant-experiences-WEENYTWD.js +0 -257
  932. package/dist/instant-experiences-WEENYTWD.js.map +0 -1
  933. package/dist/intent-FUGWRUSW.js +0 -95
  934. package/dist/job-Z34BGXVD.js +0 -202
  935. package/dist/job-create-HNMMERM5.js +0 -109
  936. package/dist/job-status-PDXGKBDG.js +0 -74
  937. package/dist/keep-WI7GMNYE.js +0 -78
  938. package/dist/keyword-gap-DXTKZLV2.js +0 -130
  939. package/dist/keyword-metrics-KNTIN4ZK.js +0 -198
  940. package/dist/keywords-for-site-S4MXGXWR.js +0 -129
  941. package/dist/landing-WVPA7NBR.js +0 -28
  942. package/dist/landings-W2ZW3WJK.js +0 -151
  943. package/dist/languages-73GOUAHX.js +0 -55
  944. package/dist/languages-XRTTEJ5P.js +0 -40
  945. package/dist/launches-4VFF5MNM.js +0 -19
  946. package/dist/layerize-IUDRVV3C.js +0 -190
  947. package/dist/leads-EINV5FK3.js +0 -113
  948. package/dist/leads-JURNJJNU.js +0 -537
  949. package/dist/leads-JURNJJNU.js.map +0 -1
  950. package/dist/learn-7Z2VR6MS.js +0 -205
  951. package/dist/library-2WYYM6ED.js +0 -109
  952. package/dist/lighthouse-ZZUYZALE.js +0 -75
  953. package/dist/line-item-writes-Z3TIB5KZ.js +0 -209
  954. package/dist/line-items-OEWYOPFP.js +0 -103
  955. package/dist/link-KYHUIPJE.js +0 -65
  956. package/dist/linkedin-JVB4HXJC.js +0 -1314
  957. package/dist/list-BWE7FL7W.js +0 -65
  958. package/dist/list-EORTO73V.js +0 -93
  959. package/dist/list-G3E4NIKR.js +0 -76
  960. package/dist/list-QCEOM2BJ.js +0 -57
  961. package/dist/list-QQVLURKH.js +0 -152
  962. package/dist/list-QUFCV73J.js +0 -51
  963. package/dist/list-QWGKRUSM.js +0 -65
  964. package/dist/list-WRBWQASJ.js +0 -50
  965. package/dist/list-Z6NMNK3T.js +0 -304
  966. package/dist/locations-PCZPKH47.js +0 -40
  967. package/dist/locations-TGJH3URF.js +0 -67
  968. package/dist/log-RUMKYPYK.js +0 -93
  969. package/dist/logo-QTSBKP2J.js +0 -18
  970. package/dist/lookup-J54KJAMC.js +0 -22
  971. package/dist/make-IJGCQA7C.js +0 -1354
  972. package/dist/make-IJGCQA7C.js.map +0 -1
  973. package/dist/map-QZHIJFQT.js +0 -434
  974. package/dist/mcp-ZH2XDV5P.js +0 -715
  975. package/dist/media-GXZ5JI5U.js +0 -89
  976. package/dist/media-NRMVRXLD.js +0 -18
  977. package/dist/media-sources-SQ2RPDBO.js +0 -35
  978. package/dist/members-4YX7JEZM.js +0 -45
  979. package/dist/meme-AX5INYIP.js +0 -100
  980. package/dist/meta-62YDR5B2.js +0 -122
  981. package/dist/metrics-PYPCW7FJ.js +0 -152
  982. package/dist/models-IAGO5GIH.js +0 -155
  983. package/dist/normalize-ABIWLRIT.js +0 -142
  984. package/dist/normalize-TW2OZKJX.js +0 -806
  985. package/dist/options-SVCQVTNE.js +0 -123
  986. package/dist/organization-FNKDC742.js +0 -947
  987. package/dist/output-573CQXXP.js +0 -24
  988. package/dist/page-QQD5IFO6.js +0 -105
  989. package/dist/page-photos-B6NQY5TW.js +0 -115
  990. package/dist/page-photos-B6NQY5TW.js.map +0 -1
  991. package/dist/pages-Q3SUE6HW.js +0 -66
  992. package/dist/pages-Q3SUE6HW.js.map +0 -1
  993. package/dist/performance-HTU5FR2K.js +0 -25
  994. package/dist/pinterest-H6V4KNL2.js +0 -96
  995. package/dist/pixels-EEZ7TTL4.js +0 -108
  996. package/dist/pixels-EEZ7TTL4.js.map +0 -1
  997. package/dist/pixels-R4MOLWAR.js +0 -60
  998. package/dist/plan-W2K45F7K.js +0 -207
  999. package/dist/posts-3DAPTBH2.js +0 -34
  1000. package/dist/preview-5JSWQIM6.js +0 -215
  1001. package/dist/preview-5JSWQIM6.js.map +0 -1
  1002. package/dist/profile-4QZXRUR6.js +0 -159
  1003. package/dist/promoted-tweet-writes-DD3CJNWW.js +0 -181
  1004. package/dist/promoted-tweets-TTWN5OMW.js +0 -119
  1005. package/dist/properties-KUNLF5I2.js +0 -101
  1006. package/dist/publish-Z62KGDJ2.js +0 -342
  1007. package/dist/query-72E5HVAO.js +0 -247
  1008. package/dist/query-RODBIIWT.js +0 -236
  1009. package/dist/query-XDHZMGLX.js +0 -61
  1010. package/dist/questionnaire-GMU66CSP.js +0 -93
  1011. package/dist/read-X45BP6TW.js +0 -141
  1012. package/dist/reddit-6C3PT5CT.js +0 -27
  1013. package/dist/refresh-HCQXVFVR.js +0 -95
  1014. package/dist/refresh-ZCGH64OZ.js +0 -42
  1015. package/dist/release-FIHW2HCH.js +0 -61
  1016. package/dist/relevant-pages-CTG72PBR.js +0 -99
  1017. package/dist/remove-CBR7NVMI.js +0 -51
  1018. package/dist/remove-PUZP5GWN.js +0 -49
  1019. package/dist/reopen-EJGLRQWR.js +0 -64
  1020. package/dist/rerun-TVBZXASH.js +0 -91
  1021. package/dist/rerun-TVBZXASH.js.map +0 -1
  1022. package/dist/research-L25D4WHQ.js +0 -263
  1023. package/dist/research-YCMMQVK6.js +0 -62
  1024. package/dist/reset-HKKCWKZ7.js +0 -55
  1025. package/dist/reset-SRL6I6GP.js +0 -55
  1026. package/dist/resolve-POMTTAFR.js +0 -122
  1027. package/dist/retry-MEPTOAV2.js +0 -61
  1028. package/dist/retry-RNGM3KKA.js +0 -63
  1029. package/dist/retry-failed-5EWFM364.js +0 -45
  1030. package/dist/revenue-X4KPTSAM.js +0 -89
  1031. package/dist/rule-writes-DGVDURHR.js +0 -522
  1032. package/dist/rule-writes-DGVDURHR.js.map +0 -1
  1033. package/dist/rules-OIQT255A.js +0 -216
  1034. package/dist/rules-OIQT255A.js.map +0 -1
  1035. package/dist/rules-VK7YA23Q.js +0 -97
  1036. package/dist/rules-add-VG7AT6EG.js +0 -463
  1037. package/dist/run-DIDQSZU7.js +0 -67
  1038. package/dist/run-SR7DJ7M5.js +0 -66
  1039. package/dist/scaffold-ad-46GTFUMP.js +0 -1512
  1040. package/dist/scaffold-ad-46GTFUMP.js.map +0 -1
  1041. package/dist/scaffold-static-ad-U63V4UHR.js +0 -1006
  1042. package/dist/scaffold-static-ad-U63V4UHR.js.map +0 -1
  1043. package/dist/scaffold-video-4DNTURH6.js +0 -884
  1044. package/dist/scaffold-video-4DNTURH6.js.map +0 -1
  1045. package/dist/schedule-JO66N7XO.js +0 -62
  1046. package/dist/schedule-JZBIX6LH.js +0 -67
  1047. package/dist/scheduled-agents-N63EZNY6.js +0 -50
  1048. package/dist/schema-B2XANMEY.js +0 -133
  1049. package/dist/schema-C6SGBNA6.js +0 -69
  1050. package/dist/scrape-XRTWSSPE.js +0 -2241
  1051. package/dist/screenshot-3WETJ564.js +0 -102
  1052. package/dist/search-6X7EVOSI.js +0 -224
  1053. package/dist/search-7GHS3OUZ.js +0 -51
  1054. package/dist/search-7ZLOF2AY.js +0 -92
  1055. package/dist/search-HS7OHTFH.js +0 -91
  1056. package/dist/search-IWNAZ52P.js +0 -26
  1057. package/dist/search-W5HZUJA2.js +0 -175
  1058. package/dist/search-copy-ZJHRQCVH.js +0 -168
  1059. package/dist/seeds-5TAEFW6H.js +0 -101
  1060. package/dist/select-LMGLNFWB.js +0 -102
  1061. package/dist/select-LMGLNFWB.js.map +0 -1
  1062. package/dist/sends-JR3QZ2AL.js +0 -309
  1063. package/dist/sequences-UP4ESMFI.js +0 -146
  1064. package/dist/set-prompt-M5E3UZDM.js +0 -194
  1065. package/dist/set-prompt-M5E3UZDM.js.map +0 -1
  1066. package/dist/setup-links-ERBQSKAB.js +0 -142
  1067. package/dist/shared-YBCK75HB.js +0 -31
  1068. package/dist/site-PNVFJRYK.js +0 -178
  1069. package/dist/sitemaps-BGR4QHHJ.js +0 -87
  1070. package/dist/sites-WOIMU334.js +0 -101
  1071. package/dist/skills-OS4PUOGZ.js +0 -47
  1072. package/dist/sources-DMZJPLKC.js +0 -455
  1073. package/dist/sources-HN3GCEDX.js +0 -30
  1074. package/dist/stale-VWN25WTL.js +0 -72
  1075. package/dist/stale-VWN25WTL.js.map +0 -1
  1076. package/dist/stats-CVF6AC7R.js +0 -34
  1077. package/dist/status-SF7DTPCJ.js +0 -63
  1078. package/dist/sticker-KFKL5W7F.js +0 -94
  1079. package/dist/stock-4LPQ6SM7.js +0 -179
  1080. package/dist/studies-RSDWHJ2D.js +0 -249
  1081. package/dist/studies-RSDWHJ2D.js.map +0 -1
  1082. package/dist/studio-NZ6WQ7OE.js +0 -49
  1083. package/dist/study-writes-HVHPR52R.js +0 -467
  1084. package/dist/study-writes-HVHPR52R.js.map +0 -1
  1085. package/dist/suggest-WMMEQCUH.js +0 -66
  1086. package/dist/sync-E7P2PWXG.js +0 -265
  1087. package/dist/sync-F7VNZLWY.js +0 -55
  1088. package/dist/sync-HVNDPBOD.js +0 -55
  1089. package/dist/sync-definition-CKEUYKWN.js +0 -65
  1090. package/dist/tag-KTQ2FV5C.js +0 -57
  1091. package/dist/tag-manager-FLXXLNKP.js +0 -43
  1092. package/dist/tags-EUOOSAKN.js +0 -26
  1093. package/dist/tags-KOMAP2G5.js +0 -21
  1094. package/dist/tags-TKXJGTR3.js +0 -21
  1095. package/dist/tags-VWIPDCUA.js +0 -225
  1096. package/dist/tags-XAB4HWGW.js +0 -21
  1097. package/dist/targeting-FU2LMS2P.js +0 -759
  1098. package/dist/targeting-FU2LMS2P.js.map +0 -1
  1099. package/dist/targeting-constants-Y3FAQOFH.js +0 -118
  1100. package/dist/targeting-criteria-HE7K52WN.js +0 -113
  1101. package/dist/targets-NA4XPDBF.js +0 -104
  1102. package/dist/testimonials-3Q5XM7JD.js +0 -32
  1103. package/dist/themes-JZ3DPE7L.js +0 -94
  1104. package/dist/themes-JZ3DPE7L.js.map +0 -1
  1105. package/dist/top-companies-TKO4QGPJ.js +0 -109
  1106. package/dist/translate-YVIZ5T44.js +0 -605
  1107. package/dist/translate-YVIZ5T44.js.map +0 -1
  1108. package/dist/triggers-QX7VW7UO.js +0 -143
  1109. package/dist/tweets-XOINDJA7.js +0 -123
  1110. package/dist/unfollow-JSLPUZK5.js +0 -46
  1111. package/dist/unlink-64SRPUNG.js +0 -68
  1112. package/dist/unstage-5X2MOUMF.js +0 -86
  1113. package/dist/unstage-C2RAUVF6.js +0 -95
  1114. package/dist/update-22ZBHURE.js +0 -81
  1115. package/dist/update-2LTPSGWT.js +0 -99
  1116. package/dist/update-DOKS7ATM.js +0 -189
  1117. package/dist/update-FB6X463M.js +0 -64
  1118. package/dist/update-QIZ7XFAM.js +0 -153
  1119. package/dist/upload-XJ7TUVIK.js +0 -127
  1120. package/dist/upload-ZO2B6UW5.js +0 -150
  1121. package/dist/upscale-6WADWURL.js +0 -109
  1122. package/dist/url-options-VNX5KYUQ.js +0 -130
  1123. package/dist/url-params-KLQOLNPS.js +0 -99
  1124. package/dist/use-NVXOEN4O.js +0 -95
  1125. package/dist/validate-YTBJBG44.js +0 -118
  1126. package/dist/validate-YTBJBG44.js.map +0 -1
  1127. package/dist/variant-BN72AP34.js +0 -338
  1128. package/dist/videos-WAPUPJVT.js +0 -39
  1129. package/dist/view-Z5JEMRNU.js +0 -121
  1130. package/dist/viewer-check-GHQA3UY2.js +0 -81
  1131. package/dist/web-6JMWERTT.js +0 -141
  1132. package/dist/winners-2FZXH22W.js +0 -113
  1133. package/dist/winning-ads-XCVUAIOU.js +0 -86
  1134. package/dist/write-commands-3CX4M6CB.js +0 -713
  1135. package/dist/write-commands-N74CDMQM.js +0 -1493
  1136. package/dist/write-commands-YPT3ZLUW.js +0 -206
  1137. package/dist/write-commands-ZEIAQS6T.js +0 -1165
  1138. package/dist/write-commands-ZEIAQS6T.js.map +0 -1
  1139. package/dist/x-SI4KYDEY.js +0 -47
  1140. /package/dist/{account-EF6OPUJT.js.map → account-263FLP5Y.js.map} +0 -0
  1141. /package/dist/{account-ZKJFX2GK.js.map → account-Y2NNZBQU.js.map} +0 -0
  1142. /package/dist/{account-users-SZCYHVBM.js.map → account-users-65TL5KL7.js.map} +0 -0
  1143. /package/dist/{account-writes-VWU4FRGQ.js.map → account-writes-M274CK75.js.map} +0 -0
  1144. /package/dist/{accounts-W4BPE2CS.js.map → accounts-4HPLJD7O.js.map} +0 -0
  1145. /package/dist/{accounts-SLFTEHCR.js.map → accounts-OWLAMDJX.js.map} +0 -0
  1146. /package/dist/{accounts-5DFYKYSM.js.map → accounts-ST32A4L4.js.map} +0 -0
  1147. /package/dist/{accounts-OGAIQNE6.js.map → accounts-VVMBENKE.js.map} +0 -0
  1148. /package/dist/{actions-FMNJSOBA.js.map → actions-EAMKQC4A.js.map} +0 -0
  1149. /package/dist/{active-entities-6LIZ63M5.js.map → active-entities-2TRODKWO.js.map} +0 -0
  1150. /package/dist/{activecampaign-LYYYH6XD.js.map → activecampaign-XYEFFSZF.js.map} +0 -0
  1151. /package/dist/{ad-group-writes-ID6I3QUZ.js.map → ad-group-writes-M7S67GLQ.js.map} +0 -0
  1152. /package/dist/{ad-groups-M7CV6NTH.js.map → ad-groups-BF4KNJFS.js.map} +0 -0
  1153. /package/dist/{ad-writes-TSOAZYRE.js.map → ad-writes-FNWVH7SP.js.map} +0 -0
  1154. /package/dist/{add-AOQLZRPC.js.map → add-2OOHZBKD.js.map} +0 -0
  1155. /package/dist/{add-6DDU34GR.js.map → add-5PK6LCD2.js.map} +0 -0
  1156. /package/dist/{add-VDZPGZF5.js.map → add-EXF7UGIG.js.map} +0 -0
  1157. /package/dist/{add-HWXEPSZF.js.map → add-IJA475VW.js.map} +0 -0
  1158. /package/dist/{add-YYP3O536.js.map → add-UGMEJ5L3.js.map} +0 -0
  1159. /package/dist/{add-44SGKTS4.js.map → add-WZFXWMG7.js.map} +0 -0
  1160. /package/dist/{add-accounts-QM4TQGDW.js.map → add-accounts-KQUUBIIG.js.map} +0 -0
  1161. /package/dist/{ads-KDIRM745.js.map → ads-C6LVVX4F.js.map} +0 -0
  1162. /package/dist/{ads-CGLO73MH.js.map → ads-TLJI5KCA.js.map} +0 -0
  1163. /package/dist/{advertisers-OMB4FKK6.js.map → advertisers-OHTC7Q63.js.map} +0 -0
  1164. /package/dist/{advertisers-STYAIX72.js.map → advertisers-RBLLFCET.js.map} +0 -0
  1165. /package/dist/{analytics-DHB325DM.js.map → analytics-QQ7PLUU3.js.map} +0 -0
  1166. /package/dist/{animate-RGZWDZG2.js.map → animate-G2PISVIA.js.map} +0 -0
  1167. /package/dist/{asset-writes-IO4QAGHL.js.map → asset-writes-LW3KSG2B.js.map} +0 -0
  1168. /package/dist/{assign-BFXHYTMF.js.map → assign-UC6OK2R7.js.map} +0 -0
  1169. /package/dist/{audience-size-XWHZV2GH.js.map → audience-size-4S2ZWQ3G.js.map} +0 -0
  1170. /package/dist/{audiences-CHSF4TQR.js.map → audiences-2342U7XH.js.map} +0 -0
  1171. /package/dist/{audiences-WXIP5PJH.js.map → audiences-EZO6PYRL.js.map} +0 -0
  1172. /package/dist/{audit-SJKN45IG.js.map → audit-KQ7GVWMO.js.map} +0 -0
  1173. /package/dist/{audit-IYGRU7LD.js.map → audit-QTLUKQW5.js.map} +0 -0
  1174. /package/dist/{autocomplete-SDDSJTAF.js.map → autocomplete-XMRWWWJB.js.map} +0 -0
  1175. /package/dist/{avatars-I4H3NMEJ.js.map → avatars-QU5GIMCL.js.map} +0 -0
  1176. /package/dist/{bid-pricing-OVYBDRMV.js.map → bid-pricing-KBWHJKVH.js.map} +0 -0
  1177. /package/dist/{brand-3V7ECY7D.js.map → brand-REYK7QBZ.js.map} +0 -0
  1178. /package/dist/{campaign-groups-FJHBVUA3.js.map → campaign-groups-47IYCWKX.js.map} +0 -0
  1179. /package/dist/{campaign-writes-XKYYMZML.js.map → campaign-writes-IPSJMNQX.js.map} +0 -0
  1180. /package/dist/{campaign-writes-W5IL6ZGB.js.map → campaign-writes-RHMIJAC3.js.map} +0 -0
  1181. /package/dist/{campaigns-FLTPD66X.js.map → campaigns-7WLJWRVB.js.map} +0 -0
  1182. /package/dist/{campaigns-MCB76NPQ.js.map → campaigns-NTEP5DKT.js.map} +0 -0
  1183. /package/dist/{campaigns-E5UW4I3X.js.map → campaigns-SCV5ZDLA.js.map} +0 -0
  1184. /package/dist/{canvas-JCNKMGCG.js.map → canvas-X55KDZQX.js.map} +0 -0
  1185. /package/dist/{capabilities-CLTZCXCZ.js.map → capabilities-FJIYYIMF.js.map} +0 -0
  1186. /package/dist/{cards-DVC5NT5X.js.map → cards-UZ3TAVOU.js.map} +0 -0
  1187. /package/dist/{catalog-ZDLQAODO.js.map → catalog-OLWWOUXL.js.map} +0 -0
  1188. /package/dist/{catalogs-26VXVUST.js.map → catalogs-4PEZDXLP.js.map} +0 -0
  1189. /package/dist/{changes-SX2N5KIO.js.map → changes-T6RKIP2B.js.map} +0 -0
  1190. /package/dist/{chatgpt-XFZ42NXC.js.map → chatgpt-J3ITRRCX.js.map} +0 -0
  1191. /package/dist/{chats-DTJSBDWO.js.map → chats-PAHEOSL5.js.map} +0 -0
  1192. /package/dist/{check-CZTS64AW.js.map → check-PAVRHQAR.js.map} +0 -0
  1193. /package/dist/{chunk-LZ5PTBWR.js.map → chunk-23HT4U3O.js.map} +0 -0
  1194. /package/dist/{chunk-VAX7PFQV.js.map → chunk-25IPX5BK.js.map} +0 -0
  1195. /package/dist/{chunk-QNJVRI3E.js.map → chunk-2M36ESEZ.js.map} +0 -0
  1196. /package/dist/{chunk-JX7BX2NB.js.map → chunk-2Q324LIK.js.map} +0 -0
  1197. /package/dist/{chunk-QMOYQJIN.js.map → chunk-2YUVO3LP.js.map} +0 -0
  1198. /package/dist/{chunk-MSQR5I52.js.map → chunk-3BAAO72V.js.map} +0 -0
  1199. /package/dist/{chunk-FG3MV2XM.js.map → chunk-3FF5UMV5.js.map} +0 -0
  1200. /package/dist/{chunk-LK6W5FDV.js.map → chunk-3Q32TXSP.js.map} +0 -0
  1201. /package/dist/{chunk-YVK5RT3B.js.map → chunk-3Z3O7ZD6.js.map} +0 -0
  1202. /package/dist/{chunk-LNRPOULW.js.map → chunk-44QHWWUX.js.map} +0 -0
  1203. /package/dist/{chunk-EGPYWJGZ.js.map → chunk-4D5OBSWR.js.map} +0 -0
  1204. /package/dist/{chunk-3RGR6COY.js.map → chunk-4ISA7PPB.js.map} +0 -0
  1205. /package/dist/{chunk-YJ3LSFMX.js.map → chunk-4WI5PJU6.js.map} +0 -0
  1206. /package/dist/{chunk-XRIM7NYV.js.map → chunk-52KXFESB.js.map} +0 -0
  1207. /package/dist/{chunk-QG4MW2V4.js.map → chunk-565M26EE.js.map} +0 -0
  1208. /package/dist/{chunk-CZYLHFSD.js.map → chunk-5LYTDXWP.js.map} +0 -0
  1209. /package/dist/{chunk-PTH7VWKK.js.map → chunk-5NYU2UYT.js.map} +0 -0
  1210. /package/dist/{chunk-QZF4BVKL.js.map → chunk-6IFTTSHH.js.map} +0 -0
  1211. /package/dist/{chunk-JVVUI55M.js.map → chunk-6M22WJ5Y.js.map} +0 -0
  1212. /package/dist/{chunk-JHUYPCMT.js.map → chunk-6PWVNCQH.js.map} +0 -0
  1213. /package/dist/{chunk-D5NEIESR.js.map → chunk-6UW4J6IU.js.map} +0 -0
  1214. /package/dist/{chunk-OOVHBMQB.js.map → chunk-6ZFOF6J2.js.map} +0 -0
  1215. /package/dist/{chunk-IZU6AR7D.js.map → chunk-73JJQ2DB.js.map} +0 -0
  1216. /package/dist/{chunk-F377KYIM.js.map → chunk-73LQJBBF.js.map} +0 -0
  1217. /package/dist/{chunk-ZYGK7GAK.js.map → chunk-7IAA3REE.js.map} +0 -0
  1218. /package/dist/{chunk-SVM3DGAQ.js.map → chunk-ANLLW3KZ.js.map} +0 -0
  1219. /package/dist/{chunk-6YLNY6CK.js.map → chunk-AS46I4WH.js.map} +0 -0
  1220. /package/dist/{chunk-2YTBPRRG.js.map → chunk-ASHCV6DO.js.map} +0 -0
  1221. /package/dist/{chunk-VI5YQQ63.js.map → chunk-BCFIMEZJ.js.map} +0 -0
  1222. /package/dist/{chunk-LX6WC2XZ.js.map → chunk-BJY6223Q.js.map} +0 -0
  1223. /package/dist/{chunk-A6WKCV3V.js.map → chunk-BTGOVA2H.js.map} +0 -0
  1224. /package/dist/{chunk-5VKADFSS.js.map → chunk-BX4JR6ZU.js.map} +0 -0
  1225. /package/dist/{chunk-KQ7RCLGC.js.map → chunk-BYDTLQ77.js.map} +0 -0
  1226. /package/dist/{chunk-WT4WDIXA.js.map → chunk-CFUFTIOU.js.map} +0 -0
  1227. /package/dist/{chunk-NZKBW4YB.js.map → chunk-CFZUKCC3.js.map} +0 -0
  1228. /package/dist/{chunk-VDRSZK4P.js.map → chunk-CVHUZFHA.js.map} +0 -0
  1229. /package/dist/{chunk-SSTL3A7Z.js.map → chunk-EHS3QWHJ.js.map} +0 -0
  1230. /package/dist/{chunk-SZNGQ2GF.js.map → chunk-ERMKQMMJ.js.map} +0 -0
  1231. /package/dist/{chunk-RJZS4XDJ.js.map → chunk-EZMF6W4M.js.map} +0 -0
  1232. /package/dist/{chunk-7KHTJQGV.js.map → chunk-FO2JX473.js.map} +0 -0
  1233. /package/dist/{chunk-RITUSBYO.js.map → chunk-FUFMB3MS.js.map} +0 -0
  1234. /package/dist/{chunk-AV7ALENU.js.map → chunk-GZWBHJ4Y.js.map} +0 -0
  1235. /package/dist/{chunk-ZA7OQLDJ.js.map → chunk-HIAXIRPX.js.map} +0 -0
  1236. /package/dist/{chunk-VDTOAZ6W.js.map → chunk-HLIZO3FD.js.map} +0 -0
  1237. /package/dist/{chunk-BAXDNVT2.js.map → chunk-HS56YCCN.js.map} +0 -0
  1238. /package/dist/{chunk-3S274625.js.map → chunk-HVJ25XVM.js.map} +0 -0
  1239. /package/dist/{chunk-TD4SO6TR.js.map → chunk-IL36BNFB.js.map} +0 -0
  1240. /package/dist/{chunk-7QGFO35A.js.map → chunk-IMHJU7FX.js.map} +0 -0
  1241. /package/dist/{chunk-VNU2EYD4.js.map → chunk-J5JYBRUE.js.map} +0 -0
  1242. /package/dist/{chunk-KNY4DLVF.js.map → chunk-J6Q6RPKY.js.map} +0 -0
  1243. /package/dist/{chunk-A3DKSAEL.js.map → chunk-JASI6RR6.js.map} +0 -0
  1244. /package/dist/{chunk-DJE7UXYT.js.map → chunk-JTXOP6YW.js.map} +0 -0
  1245. /package/dist/{chunk-I24YT2KG.js.map → chunk-JWBJFF2K.js.map} +0 -0
  1246. /package/dist/{chunk-5YKNG6NN.js.map → chunk-K76OKYM7.js.map} +0 -0
  1247. /package/dist/{chunk-2VIZ4UUZ.js.map → chunk-KBSWQKOT.js.map} +0 -0
  1248. /package/dist/{chunk-EJ4QCMM6.js.map → chunk-KS7VB275.js.map} +0 -0
  1249. /package/dist/{chunk-F2OCUTMQ.js.map → chunk-KW5WVJTH.js.map} +0 -0
  1250. /package/dist/{chunk-QE2E4EYJ.js.map → chunk-KZRJLBQO.js.map} +0 -0
  1251. /package/dist/{chunk-TQNDAOMB.js.map → chunk-L3FWLIAU.js.map} +0 -0
  1252. /package/dist/{chunk-FKYPAGKK.js.map → chunk-L6GYTD3A.js.map} +0 -0
  1253. /package/dist/{chunk-UFKO626N.js.map → chunk-MITWP546.js.map} +0 -0
  1254. /package/dist/{chunk-4Z5BOHCH.js.map → chunk-MRQKDVDR.js.map} +0 -0
  1255. /package/dist/{chunk-X5QWQNAX.js.map → chunk-NBAJACSF.js.map} +0 -0
  1256. /package/dist/{chunk-MMGTJBM6.js.map → chunk-NBWZ6YFU.js.map} +0 -0
  1257. /package/dist/{chunk-3SNCMEJB.js.map → chunk-NWML6X6Y.js.map} +0 -0
  1258. /package/dist/{chunk-FUGQSIYG.js.map → chunk-NX5U6BXW.js.map} +0 -0
  1259. /package/dist/{chunk-Z4S5BCVZ.js.map → chunk-PEY4YGW3.js.map} +0 -0
  1260. /package/dist/{chunk-BDYLILMW.js.map → chunk-PGRDGQ23.js.map} +0 -0
  1261. /package/dist/{chunk-U6RONIJC.js.map → chunk-Q6GYSW47.js.map} +0 -0
  1262. /package/dist/{chunk-KXCKTEJ6.js.map → chunk-QDJRLPT5.js.map} +0 -0
  1263. /package/dist/{chunk-FKG476GH.js.map → chunk-QM7OZC3R.js.map} +0 -0
  1264. /package/dist/{chunk-HPLHAHG5.js.map → chunk-QO46CYKH.js.map} +0 -0
  1265. /package/dist/{chunk-YV7PKHFB.js.map → chunk-QR44DQTC.js.map} +0 -0
  1266. /package/dist/{chunk-EONSZAZB.js.map → chunk-QVRVSFIQ.js.map} +0 -0
  1267. /package/dist/{chunk-CBXIUKGG.js.map → chunk-RAUZWRJC.js.map} +0 -0
  1268. /package/dist/{chunk-LBRO4MTL.js.map → chunk-RF73OV6K.js.map} +0 -0
  1269. /package/dist/{chunk-EFWXYUSK.js.map → chunk-RKP76SGL.js.map} +0 -0
  1270. /package/dist/{chunk-IBTSIPYA.js.map → chunk-S6VQMNPI.js.map} +0 -0
  1271. /package/dist/{chunk-OEZYSL3U.js.map → chunk-SGUUPOPY.js.map} +0 -0
  1272. /package/dist/{chunk-S4VLLGTW.js.map → chunk-SJJHM57A.js.map} +0 -0
  1273. /package/dist/{chunk-UZ4RTOFG.js.map → chunk-T7JGOFVX.js.map} +0 -0
  1274. /package/dist/{chunk-BVF2P65L.js.map → chunk-TPQOIWSU.js.map} +0 -0
  1275. /package/dist/{chunk-BRLFQ4VX.js.map → chunk-U3LW43UG.js.map} +0 -0
  1276. /package/dist/{chunk-U7YR5CZL.js.map → chunk-UAKNLPIU.js.map} +0 -0
  1277. /package/dist/{chunk-QRLTVJ6F.js.map → chunk-VE4BTRLV.js.map} +0 -0
  1278. /package/dist/{chunk-OL7JS4NG.js.map → chunk-VR6BCP3U.js.map} +0 -0
  1279. /package/dist/{chunk-Q5QHNTHA.js.map → chunk-VSVAXKKS.js.map} +0 -0
  1280. /package/dist/{chunk-Y4OYFJP7.js.map → chunk-VWUGI7LE.js.map} +0 -0
  1281. /package/dist/{chunk-WHWSLDNR.js.map → chunk-W5IS6CMZ.js.map} +0 -0
  1282. /package/dist/{chunk-B7GF34FU.js.map → chunk-WAMT3TUD.js.map} +0 -0
  1283. /package/dist/{chunk-2YKXDFYX.js.map → chunk-WN6WHZRC.js.map} +0 -0
  1284. /package/dist/{chunk-MOFMOYUA.js.map → chunk-WO2SGESS.js.map} +0 -0
  1285. /package/dist/{chunk-FALJQCWL.js.map → chunk-WU6ULBSY.js.map} +0 -0
  1286. /package/dist/{chunk-57KKVDDR.js.map → chunk-XOHXG5TG.js.map} +0 -0
  1287. /package/dist/{chunk-R25JC3BD.js.map → chunk-XPNCOUXB.js.map} +0 -0
  1288. /package/dist/{chunk-KKSHEPBY.js.map → chunk-XS7FMDCX.js.map} +0 -0
  1289. /package/dist/{chunk-6UNOK7WV.js.map → chunk-XVMRO6W5.js.map} +0 -0
  1290. /package/dist/{chunk-GZ4A2VYW.js.map → chunk-Y4UQHVTM.js.map} +0 -0
  1291. /package/dist/{chunk-5GQCN2QZ.js.map → chunk-YGCRKABE.js.map} +0 -0
  1292. /package/dist/{chunk-FCM6VPFP.js.map → chunk-YJKAVF3E.js.map} +0 -0
  1293. /package/dist/{chunk-ACDLKTUP.js.map → chunk-ZFINQBE7.js.map} +0 -0
  1294. /package/dist/{chunk-RVTXDQYC.js.map → chunk-ZJMOYNZF.js.map} +0 -0
  1295. /package/dist/{chunk-NA7PXVCW.js.map → chunk-ZZCJNSZ6.js.map} +0 -0
  1296. /package/dist/{claim-TSFPWTQY.js.map → claim-WJ5TLA74.js.map} +0 -0
  1297. /package/dist/{client-PFQ3SLQ4.js.map → client-PVBPZ7PY.js.map} +0 -0
  1298. /package/dist/{code-OF7NV2EG.js.map → code-CSXOLKOP.js.map} +0 -0
  1299. /package/dist/{companies-P7FZNJQV.js.map → companies-3QI5C5Y6.js.map} +0 -0
  1300. /package/dist/{complete-SYDIHMD5.js.map → complete-ASGIH43P.js.map} +0 -0
  1301. /package/dist/{config-YVNIYO5K.js.map → config-MNPHHWYU.js.map} +0 -0
  1302. /package/dist/{connect-COS6G45S.js.map → connect-F2PU33RV.js.map} +0 -0
  1303. /package/dist/{content-JDTHVSPS.js.map → content-UYBZ5S7Z.js.map} +0 -0
  1304. /package/dist/{conversation-UJOWMJRH.js.map → conversation-BYO57I25.js.map} +0 -0
  1305. /package/dist/{conversion-report-7JJ5L6WH.js.map → conversion-report-UCP43YAG.js.map} +0 -0
  1306. /package/dist/{conversion-writes-GIGAZT4T.js.map → conversion-writes-6ZIY7DHZ.js.map} +0 -0
  1307. /package/dist/{conversions-CIJZLGII.js.map → conversions-BDSIXF2V.js.map} +0 -0
  1308. /package/dist/{conversions-ONOIEILU.js.map → conversions-JBZD2FZN.js.map} +0 -0
  1309. /package/dist/{countries-F5ISQB3M.js.map → countries-N2PAVVCQ.js.map} +0 -0
  1310. /package/dist/{create-NOT3HGP2.js.map → create-EDDKOKK6.js.map} +0 -0
  1311. /package/dist/{create-DPQRYQXK.js.map → create-UXH5MYEO.js.map} +0 -0
  1312. /package/dist/{create-JD76Z4A4.js.map → create-YEHXJBFR.js.map} +0 -0
  1313. /package/dist/{creatives-LRSELC7Y.js.map → creatives-3TRWYOYU.js.map} +0 -0
  1314. /package/dist/{creatives-SEQHJD2M.js.map → creatives-KYSRCR5C.js.map} +0 -0
  1315. /package/dist/{credentials-LHPTUVVA.js.map → credentials-Z4KS5QU6.js.map} +0 -0
  1316. /package/dist/{critique-Q7GSZ5RP.js.map → critique-YZWJ3ABO.js.map} +0 -0
  1317. /package/dist/{crm-J7EU32PL.js.map → crm-CDAVHXUS.js.map} +0 -0
  1318. /package/dist/{crm-MC444ZVU.js.map → crm-TMEDDF67.js.map} +0 -0
  1319. /package/dist/{crop-PWHHLMDF.js.map → crop-4WS3WNXI.js.map} +0 -0
  1320. /package/dist/{currency-TAEJVMVK.js.map → currency-K4PRDLDG.js.map} +0 -0
  1321. /package/dist/{customers-LMSX33FO.js.map → customers-R6HXVXAS.js.map} +0 -0
  1322. /package/dist/{decide-E4AREOPP.js.map → decide-IWUWMLIG.js.map} +0 -0
  1323. /package/dist/{delete-K7A3AUPH.js.map → delete-DECECVGG.js.map} +0 -0
  1324. /package/dist/{delete-BQBVATMF.js.map → delete-F6AEBS4G.js.map} +0 -0
  1325. /package/dist/{delete-THR72JIR.js.map → delete-H2L2EGKF.js.map} +0 -0
  1326. /package/dist/{delete-3US2W4F6.js.map → delete-R5IY7VHP.js.map} +0 -0
  1327. /package/dist/{delete-VV2ICIHF.js.map → delete-UCL6SL5B.js.map} +0 -0
  1328. /package/dist/{delete-XBIME2H4.js.map → delete-Z4LRS6FG.js.map} +0 -0
  1329. /package/dist/{demographics-7GWUXXS6.js.map → demographics-JFUKFKK7.js.map} +0 -0
  1330. /package/dist/{describe-HOMUJ4T4.js.map → describe-44KTJQ6Z.js.map} +0 -0
  1331. /package/dist/{describe-JVHEKSX3.js.map → describe-V7LY3RUT.js.map} +0 -0
  1332. /package/dist/{dimensions-K2WK7QBJ.js.map → dimensions-FZAJYJJ4.js.map} +0 -0
  1333. /package/dist/{discard-3CLZ4DPD.js.map → discard-W4B5GF4S.js.map} +0 -0
  1334. /package/dist/{discover-SII47P73.js.map → discover-E7OE4WFV.js.map} +0 -0
  1335. /package/dist/{discover-5Z253HXF.js.map → discover-OYVXV25X.js.map} +0 -0
  1336. /package/dist/{domain-ZS74BSE6.js.map → domain-5WXROX3N.js.map} +0 -0
  1337. /package/dist/{download-DHB3EIMS.js.map → download-JNNN7GSF.js.map} +0 -0
  1338. /package/dist/{draft-7DWRFCXW.js.map → draft-5I6DUWGA.js.map} +0 -0
  1339. /package/dist/{draft-R56PIXCV.js.map → draft-KYARHXHR.js.map} +0 -0
  1340. /package/dist/{draft-J3B33RAZ.js.map → draft-RCD6ETPQ.js.map} +0 -0
  1341. /package/dist/{draft-MZLWVX3D.js.map → draft-SET2FGU3.js.map} +0 -0
  1342. /package/dist/{draft-DHDDPACQ.js.map → draft-US7FTGVC.js.map} +0 -0
  1343. /package/dist/{draft-E47E762T.js.map → draft-XK4QG5HQ.js.map} +0 -0
  1344. /package/dist/{env-PKUYZY5O.js.map → env-3ZELNMXQ.js.map} +0 -0
  1345. /package/dist/{experiment-7RJ5X2LL.js.map → experiment-IKWEIJKD.js.map} +0 -0
  1346. /package/dist/{experiments-NOSJJMYI.js.map → experiments-LEAZ4BNF.js.map} +0 -0
  1347. /package/dist/{export-AGDNQZKC.js.map → export-HMF33UYY.js.map} +0 -0
  1348. /package/dist/{extract-4MIPIBVC.js.map → extract-PK3MHV6C.js.map} +0 -0
  1349. /package/dist/{facets-E6SHYUAI.js.map → facets-WSFLCFYN.js.map} +0 -0
  1350. /package/dist/{favorites-XHY64GCM.js.map → favorites-Z7MKEDY3.js.map} +0 -0
  1351. /package/dist/{feed-724KWSNI.js.map → feed-6VZ3XWKC.js.map} +0 -0
  1352. /package/dist/{fetch-HMUGSRE4.js.map → fetch-3DI7EKDS.js.map} +0 -0
  1353. /package/dist/{fetch-RYS6DEJH.js.map → fetch-LGKTI6A6.js.map} +0 -0
  1354. /package/dist/{find-2EPXK5RF.js.map → find-PAWW75PW.js.map} +0 -0
  1355. /package/dist/{fit-W7UNFZT5.js.map → fit-FROY76YE.js.map} +0 -0
  1356. /package/dist/{flows-SO5J3M3X.js.map → flows-M5DQAKCJ.js.map} +0 -0
  1357. /package/dist/{follow-LRGW6OHI.js.map → follow-PNWO2V4L.js.map} +0 -0
  1358. /package/dist/{follow-competitors-UUN7EKFR.js.map → follow-competitors-BFUGW6PC.js.map} +0 -0
  1359. /package/dist/{following-ISRRC2QL.js.map → following-LKNHRKVC.js.map} +0 -0
  1360. /package/dist/{fonts-N42UYWTX.js.map → fonts-G3UCJ6UI.js.map} +0 -0
  1361. /package/dist/{forecast-24LGJVLC.js.map → forecast-VFGNPTYV.js.map} +0 -0
  1362. /package/dist/{funding-KMXQ6CXM.js.map → funding-O5ZRZN7D.js.map} +0 -0
  1363. /package/dist/{ga4-6EIQC2TG.js.map → ga4-SSRVUS7H.js.map} +0 -0
  1364. /package/dist/{generate-Y76WU7M7.js.map → generate-T3B6GOO6.js.map} +0 -0
  1365. /package/dist/{get-LNLY2RWU.js.map → get-2BJKONHE.js.map} +0 -0
  1366. /package/dist/{get-KAGO4EC5.js.map → get-6MHTPGHS.js.map} +0 -0
  1367. /package/dist/{get-VFRJAC2I.js.map → get-DDBTEMJL.js.map} +0 -0
  1368. /package/dist/{get-R5JAFHTH.js.map → get-G7JYP5E5.js.map} +0 -0
  1369. /package/dist/{get-JPOUTSU5.js.map → get-IIIYTJY4.js.map} +0 -0
  1370. /package/dist/{get-GDI2MOAU.js.map → get-JE3VGJPS.js.map} +0 -0
  1371. /package/dist/{get-PZX27LQY.js.map → get-KL7VTM6W.js.map} +0 -0
  1372. /package/dist/{get-23L2AVTV.js.map → get-ZNCET7LN.js.map} +0 -0
  1373. /package/dist/{gif-DVNNWOYA.js.map → gif-HZC5PIGN.js.map} +0 -0
  1374. /package/dist/{google-O5OI6QFU.js.map → google-2JAG2MZJ.js.map} +0 -0
  1375. /package/dist/{google-ads-6X4BHGUR.js.map → google-ads-Q2WVOJU2.js.map} +0 -0
  1376. /package/dist/{group-HNRZJMZX.js.map → group-5KTGIHXJ.js.map} +0 -0
  1377. /package/dist/{group-QPQUCV6E.js.map → group-6U4GJLHB.js.map} +0 -0
  1378. /package/dist/{gsc-BM3T2GDL.js.map → gsc-76PWFEHH.js.map} +0 -0
  1379. /package/dist/{history-DGHMJ2XF.js.map → history-BVMIJLIL.js.map} +0 -0
  1380. /package/dist/{history-LGOWYLBE.js.map → history-W22KYHZV.js.map} +0 -0
  1381. /package/dist/{hubspot-LJB3ETUT.js.map → hubspot-RF4FMSX2.js.map} +0 -0
  1382. /package/dist/{icon-B7DG53S5.js.map → icon-ENQRKK4O.js.map} +0 -0
  1383. /package/dist/{ideas-DYN2DMFN.js.map → ideas-Y7HFEXFE.js.map} +0 -0
  1384. /package/dist/{images-EQCUXEHF.js.map → images-2PKU5XDS.js.map} +0 -0
  1385. /package/dist/{improve-56FHWRWN.js.map → improve-L43S5YWU.js.map} +0 -0
  1386. /package/dist/{ingest-T7ZS2R4U.js.map → ingest-JHJOFWIU.js.map} +0 -0
  1387. /package/dist/{ingest-B46AY3QU.js.map → ingest-JU67Z5D3.js.map} +0 -0
  1388. /package/dist/{insights-EU45J56U.js.map → insights-NOOVPFK3.js.map} +0 -0
  1389. /package/dist/{inspect-BSNGAT2S.js.map → inspect-53NDMKC5.js.map} +0 -0
  1390. /package/dist/{inspiration-TCCKM4R7.js.map → inspiration-6NICXN3P.js.map} +0 -0
  1391. /package/dist/{intent-FUGWRUSW.js.map → intent-MLZCTLEX.js.map} +0 -0
  1392. /package/dist/{job-Z34BGXVD.js.map → job-EXB5MGPT.js.map} +0 -0
  1393. /package/dist/{job-create-HNMMERM5.js.map → job-create-EPYGKZPB.js.map} +0 -0
  1394. /package/dist/{job-status-PDXGKBDG.js.map → job-status-E7YXP2PT.js.map} +0 -0
  1395. /package/dist/{keep-WI7GMNYE.js.map → keep-ELL3JFEC.js.map} +0 -0
  1396. /package/dist/{keyword-gap-DXTKZLV2.js.map → keyword-gap-WD5TDZFR.js.map} +0 -0
  1397. /package/dist/{keyword-metrics-KNTIN4ZK.js.map → keyword-metrics-QMQCZKMX.js.map} +0 -0
  1398. /package/dist/{keywords-for-site-S4MXGXWR.js.map → keywords-for-site-WL54QH6G.js.map} +0 -0
  1399. /package/dist/{landing-WVPA7NBR.js.map → landing-ZHCVMCYK.js.map} +0 -0
  1400. /package/dist/{landings-W2ZW3WJK.js.map → landings-YVXUVNPA.js.map} +0 -0
  1401. /package/dist/{languages-XRTTEJ5P.js.map → languages-F4FX2VC2.js.map} +0 -0
  1402. /package/dist/{languages-73GOUAHX.js.map → languages-YIYCOFLI.js.map} +0 -0
  1403. /package/dist/{launches-4VFF5MNM.js.map → launches-G5AYQIEO.js.map} +0 -0
  1404. /package/dist/{layerize-IUDRVV3C.js.map → layerize-EEHJX2QP.js.map} +0 -0
  1405. /package/dist/{leads-EINV5FK3.js.map → leads-C26QFD46.js.map} +0 -0
  1406. /package/dist/{learn-7Z2VR6MS.js.map → learn-YRHVTBEW.js.map} +0 -0
  1407. /package/dist/{library-2WYYM6ED.js.map → library-GLXT2ZZI.js.map} +0 -0
  1408. /package/dist/{lighthouse-ZZUYZALE.js.map → lighthouse-DUAYYKVA.js.map} +0 -0
  1409. /package/dist/{line-item-writes-Z3TIB5KZ.js.map → line-item-writes-HSXCO3UM.js.map} +0 -0
  1410. /package/dist/{line-items-OEWYOPFP.js.map → line-items-LU7VFYJ3.js.map} +0 -0
  1411. /package/dist/{link-KYHUIPJE.js.map → link-N4F54R2W.js.map} +0 -0
  1412. /package/dist/{linkedin-JVB4HXJC.js.map → linkedin-F43WCEFC.js.map} +0 -0
  1413. /package/dist/{list-G3E4NIKR.js.map → list-CMCHPFU4.js.map} +0 -0
  1414. /package/dist/{list-QCEOM2BJ.js.map → list-EXKTPY65.js.map} +0 -0
  1415. /package/dist/{list-BWE7FL7W.js.map → list-FGWN66JV.js.map} +0 -0
  1416. /package/dist/{list-Z6NMNK3T.js.map → list-H4YHY65J.js.map} +0 -0
  1417. /package/dist/{list-EORTO73V.js.map → list-IIUY5WTV.js.map} +0 -0
  1418. /package/dist/{list-QQVLURKH.js.map → list-MNFGWVNZ.js.map} +0 -0
  1419. /package/dist/{list-QUFCV73J.js.map → list-QUQ5TUDK.js.map} +0 -0
  1420. /package/dist/{list-WRBWQASJ.js.map → list-TY5WZFFE.js.map} +0 -0
  1421. /package/dist/{list-QWGKRUSM.js.map → list-YWEP74CM.js.map} +0 -0
  1422. /package/dist/{locations-PCZPKH47.js.map → locations-N3USZ27M.js.map} +0 -0
  1423. /package/dist/{locations-TGJH3URF.js.map → locations-S67HBZA7.js.map} +0 -0
  1424. /package/dist/{log-RUMKYPYK.js.map → log-CGQRPLGU.js.map} +0 -0
  1425. /package/dist/{logo-QTSBKP2J.js.map → logo-IXIQBWRL.js.map} +0 -0
  1426. /package/dist/{lookup-J54KJAMC.js.map → lookup-NKLRB3NS.js.map} +0 -0
  1427. /package/dist/{map-QZHIJFQT.js.map → map-GW7NDNYC.js.map} +0 -0
  1428. /package/dist/{mcp-ZH2XDV5P.js.map → mcp-DUTXWJFC.js.map} +0 -0
  1429. /package/dist/{media-GXZ5JI5U.js.map → media-2JCAFWCU.js.map} +0 -0
  1430. /package/dist/{media-NRMVRXLD.js.map → media-NPMNY5MJ.js.map} +0 -0
  1431. /package/dist/{media-sources-SQ2RPDBO.js.map → media-sources-J2LY7NLR.js.map} +0 -0
  1432. /package/dist/{members-4YX7JEZM.js.map → members-5YUHOWVS.js.map} +0 -0
  1433. /package/dist/{meme-AX5INYIP.js.map → meme-G2HE54IY.js.map} +0 -0
  1434. /package/dist/{meta-62YDR5B2.js.map → meta-ACKABP2H.js.map} +0 -0
  1435. /package/dist/{metrics-PYPCW7FJ.js.map → metrics-ZNQDSBVO.js.map} +0 -0
  1436. /package/dist/{models-IAGO5GIH.js.map → models-QAR6ZOM3.js.map} +0 -0
  1437. /package/dist/{normalize-ABIWLRIT.js.map → normalize-QP5Z5EYO.js.map} +0 -0
  1438. /package/dist/{normalize-TW2OZKJX.js.map → normalize-X6GW75LV.js.map} +0 -0
  1439. /package/dist/{options-SVCQVTNE.js.map → options-743FW5PT.js.map} +0 -0
  1440. /package/dist/{organization-FNKDC742.js.map → organization-OW6WPRA3.js.map} +0 -0
  1441. /package/dist/{output-573CQXXP.js.map → output-GAAXGXQS.js.map} +0 -0
  1442. /package/dist/{page-QQD5IFO6.js.map → page-ZA6VOW7F.js.map} +0 -0
  1443. /package/dist/{performance-HTU5FR2K.js.map → performance-F7OHUDYL.js.map} +0 -0
  1444. /package/dist/{pinterest-H6V4KNL2.js.map → pinterest-SH7Q3BGY.js.map} +0 -0
  1445. /package/dist/{pixels-R4MOLWAR.js.map → pixels-YVOTALZW.js.map} +0 -0
  1446. /package/dist/{plan-W2K45F7K.js.map → plan-SF3AJ3U3.js.map} +0 -0
  1447. /package/dist/{posts-3DAPTBH2.js.map → posts-JMGQEPWZ.js.map} +0 -0
  1448. /package/dist/{profile-4QZXRUR6.js.map → profile-GE6L5LGA.js.map} +0 -0
  1449. /package/dist/{promoted-tweet-writes-DD3CJNWW.js.map → promoted-tweet-writes-T2ZN246D.js.map} +0 -0
  1450. /package/dist/{promoted-tweets-TTWN5OMW.js.map → promoted-tweets-EW3VXPZU.js.map} +0 -0
  1451. /package/dist/{properties-KUNLF5I2.js.map → properties-EJ6ANQZO.js.map} +0 -0
  1452. /package/dist/{publish-Z62KGDJ2.js.map → publish-PIUYQKOE.js.map} +0 -0
  1453. /package/dist/{query-XDHZMGLX.js.map → query-732XAQUN.js.map} +0 -0
  1454. /package/dist/{query-RODBIIWT.js.map → query-D7OVFIC4.js.map} +0 -0
  1455. /package/dist/{query-72E5HVAO.js.map → query-EKMXON7N.js.map} +0 -0
  1456. /package/dist/{questionnaire-GMU66CSP.js.map → questionnaire-RSAGT4BO.js.map} +0 -0
  1457. /package/dist/{read-X45BP6TW.js.map → read-JQ3OAR7D.js.map} +0 -0
  1458. /package/dist/{reddit-6C3PT5CT.js.map → reddit-33K3IIHG.js.map} +0 -0
  1459. /package/dist/{refresh-HCQXVFVR.js.map → refresh-JIJVT3SV.js.map} +0 -0
  1460. /package/dist/{refresh-ZCGH64OZ.js.map → refresh-Q5ZVBWQX.js.map} +0 -0
  1461. /package/dist/{release-FIHW2HCH.js.map → release-3MTLVI3Q.js.map} +0 -0
  1462. /package/dist/{relevant-pages-CTG72PBR.js.map → relevant-pages-HKF77GO5.js.map} +0 -0
  1463. /package/dist/{remove-CBR7NVMI.js.map → remove-3EIQM4ZN.js.map} +0 -0
  1464. /package/dist/{remove-PUZP5GWN.js.map → remove-T6UJSL5S.js.map} +0 -0
  1465. /package/dist/{reopen-EJGLRQWR.js.map → reopen-56LN4EDE.js.map} +0 -0
  1466. /package/dist/{research-L25D4WHQ.js.map → research-IU26Y65V.js.map} +0 -0
  1467. /package/dist/{research-YCMMQVK6.js.map → research-P5FLAJIZ.js.map} +0 -0
  1468. /package/dist/{reset-SRL6I6GP.js.map → reset-7L6UNBW6.js.map} +0 -0
  1469. /package/dist/{reset-HKKCWKZ7.js.map → reset-7T3QY4MY.js.map} +0 -0
  1470. /package/dist/{resolve-POMTTAFR.js.map → resolve-LZGMF3RI.js.map} +0 -0
  1471. /package/dist/{retry-RNGM3KKA.js.map → retry-CCQPI5MS.js.map} +0 -0
  1472. /package/dist/{retry-MEPTOAV2.js.map → retry-EJIMFCPU.js.map} +0 -0
  1473. /package/dist/{retry-failed-5EWFM364.js.map → retry-failed-FTS44UES.js.map} +0 -0
  1474. /package/dist/{revenue-X4KPTSAM.js.map → revenue-3WIZFO4L.js.map} +0 -0
  1475. /package/dist/{rules-VK7YA23Q.js.map → rules-TMLFDY6X.js.map} +0 -0
  1476. /package/dist/{rules-add-VG7AT6EG.js.map → rules-add-O766M6I5.js.map} +0 -0
  1477. /package/dist/{run-DIDQSZU7.js.map → run-Y7VNP5EE.js.map} +0 -0
  1478. /package/dist/{run-SR7DJ7M5.js.map → run-ZXGD5GAY.js.map} +0 -0
  1479. /package/dist/{schedule-JO66N7XO.js.map → schedule-AJDMS4BD.js.map} +0 -0
  1480. /package/dist/{schedule-JZBIX6LH.js.map → schedule-NCCNWKDY.js.map} +0 -0
  1481. /package/dist/{scheduled-agents-N63EZNY6.js.map → scheduled-agents-PCS3VL4R.js.map} +0 -0
  1482. /package/dist/{schema-C6SGBNA6.js.map → schema-KIA5RJDM.js.map} +0 -0
  1483. /package/dist/{schema-B2XANMEY.js.map → schema-ZUOO5D6X.js.map} +0 -0
  1484. /package/dist/{scrape-XRTWSSPE.js.map → scrape-MWW6FBUC.js.map} +0 -0
  1485. /package/dist/{screenshot-3WETJ564.js.map → screenshot-6K7AEO4C.js.map} +0 -0
  1486. /package/dist/{search-IWNAZ52P.js.map → search-2VJC4CVT.js.map} +0 -0
  1487. /package/dist/{search-6X7EVOSI.js.map → search-EUGQ45JM.js.map} +0 -0
  1488. /package/dist/{search-W5HZUJA2.js.map → search-L5CMOZA3.js.map} +0 -0
  1489. /package/dist/{search-7ZLOF2AY.js.map → search-NPL5TN7D.js.map} +0 -0
  1490. /package/dist/{search-HS7OHTFH.js.map → search-RZKZUUZC.js.map} +0 -0
  1491. /package/dist/{search-7GHS3OUZ.js.map → search-YLKXXAYA.js.map} +0 -0
  1492. /package/dist/{search-copy-ZJHRQCVH.js.map → search-copy-LC5EPYJG.js.map} +0 -0
  1493. /package/dist/{seeds-5TAEFW6H.js.map → seeds-JI34P4HA.js.map} +0 -0
  1494. /package/dist/{sends-JR3QZ2AL.js.map → sends-7WGK6K6C.js.map} +0 -0
  1495. /package/dist/{sequences-UP4ESMFI.js.map → sequences-IIEG46TU.js.map} +0 -0
  1496. /package/dist/{setup-links-ERBQSKAB.js.map → setup-links-VNEI42A5.js.map} +0 -0
  1497. /package/dist/{shared-YBCK75HB.js.map → shared-UNQ3OBEC.js.map} +0 -0
  1498. /package/dist/{site-PNVFJRYK.js.map → site-E4EUL77X.js.map} +0 -0
  1499. /package/dist/{sitemaps-BGR4QHHJ.js.map → sitemaps-R6462TYK.js.map} +0 -0
  1500. /package/dist/{sites-WOIMU334.js.map → sites-BS5SBTVM.js.map} +0 -0
  1501. /package/dist/{skills-OS4PUOGZ.js.map → skills-7BZQVAEY.js.map} +0 -0
  1502. /package/dist/{sources-HN3GCEDX.js.map → sources-6TCMSLQK.js.map} +0 -0
  1503. /package/dist/{sources-DMZJPLKC.js.map → sources-LO3YOOQO.js.map} +0 -0
  1504. /package/dist/{stats-CVF6AC7R.js.map → stats-TVQVRDQS.js.map} +0 -0
  1505. /package/dist/{status-SF7DTPCJ.js.map → status-J4K5HOKZ.js.map} +0 -0
  1506. /package/dist/{sticker-KFKL5W7F.js.map → sticker-IQTULOZN.js.map} +0 -0
  1507. /package/dist/{stock-4LPQ6SM7.js.map → stock-25YD32HR.js.map} +0 -0
  1508. /package/dist/{studio-NZ6WQ7OE.js.map → studio-2M2XBR7E.js.map} +0 -0
  1509. /package/dist/{suggest-WMMEQCUH.js.map → suggest-6PNUDXOE.js.map} +0 -0
  1510. /package/dist/{sync-F7VNZLWY.js.map → sync-3HWGVAQV.js.map} +0 -0
  1511. /package/dist/{sync-HVNDPBOD.js.map → sync-4IBJWSBV.js.map} +0 -0
  1512. /package/dist/{sync-E7P2PWXG.js.map → sync-GHPIPBO6.js.map} +0 -0
  1513. /package/dist/{sync-definition-CKEUYKWN.js.map → sync-definition-HEASUFK6.js.map} +0 -0
  1514. /package/dist/{tag-KTQ2FV5C.js.map → tag-76TTKDKF.js.map} +0 -0
  1515. /package/dist/{tag-manager-FLXXLNKP.js.map → tag-manager-4AJIUX7V.js.map} +0 -0
  1516. /package/dist/{tags-EUOOSAKN.js.map → tags-2XK6ZQI2.js.map} +0 -0
  1517. /package/dist/{tags-TKXJGTR3.js.map → tags-6LW4FTZ3.js.map} +0 -0
  1518. /package/dist/{tags-XAB4HWGW.js.map → tags-QEAH2IRF.js.map} +0 -0
  1519. /package/dist/{tags-VWIPDCUA.js.map → tags-XTY5VXDS.js.map} +0 -0
  1520. /package/dist/{tags-KOMAP2G5.js.map → tags-ZPBHZBLV.js.map} +0 -0
  1521. /package/dist/{targeting-constants-Y3FAQOFH.js.map → targeting-constants-ARGJ3QQV.js.map} +0 -0
  1522. /package/dist/{targeting-criteria-HE7K52WN.js.map → targeting-criteria-GMWARSTV.js.map} +0 -0
  1523. /package/dist/{targets-NA4XPDBF.js.map → targets-I2WFL6JZ.js.map} +0 -0
  1524. /package/dist/{testimonials-3Q5XM7JD.js.map → testimonials-DKFN34CI.js.map} +0 -0
  1525. /package/dist/{top-companies-TKO4QGPJ.js.map → top-companies-7C3QZ3Q4.js.map} +0 -0
  1526. /package/dist/{triggers-QX7VW7UO.js.map → triggers-I6BWR2BN.js.map} +0 -0
  1527. /package/dist/{tweets-XOINDJA7.js.map → tweets-SGNWR3H5.js.map} +0 -0
  1528. /package/dist/{unfollow-JSLPUZK5.js.map → unfollow-TMZ76BRA.js.map} +0 -0
  1529. /package/dist/{unlink-64SRPUNG.js.map → unlink-CD7WJQBU.js.map} +0 -0
  1530. /package/dist/{unstage-C2RAUVF6.js.map → unstage-ATF3XNAD.js.map} +0 -0
  1531. /package/dist/{unstage-5X2MOUMF.js.map → unstage-KP5VRZMN.js.map} +0 -0
  1532. /package/dist/{update-22ZBHURE.js.map → update-4EZRHJNR.js.map} +0 -0
  1533. /package/dist/{update-FB6X463M.js.map → update-5MWCI3DR.js.map} +0 -0
  1534. /package/dist/{update-DOKS7ATM.js.map → update-7XYPACZR.js.map} +0 -0
  1535. /package/dist/{update-2LTPSGWT.js.map → update-FLNXNPQA.js.map} +0 -0
  1536. /package/dist/{update-QIZ7XFAM.js.map → update-K75QQ2GN.js.map} +0 -0
  1537. /package/dist/{upload-ZO2B6UW5.js.map → upload-NSSD63IM.js.map} +0 -0
  1538. /package/dist/{upload-XJ7TUVIK.js.map → upload-O4IINV5I.js.map} +0 -0
  1539. /package/dist/{upscale-6WADWURL.js.map → upscale-UXOBILTP.js.map} +0 -0
  1540. /package/dist/{url-options-VNX5KYUQ.js.map → url-options-UK244DY7.js.map} +0 -0
  1541. /package/dist/{url-params-KLQOLNPS.js.map → url-params-2SXL2PX4.js.map} +0 -0
  1542. /package/dist/{use-NVXOEN4O.js.map → use-F5TRLSNK.js.map} +0 -0
  1543. /package/dist/{variant-BN72AP34.js.map → variant-KLBKFKHB.js.map} +0 -0
  1544. /package/dist/{videos-WAPUPJVT.js.map → videos-TBYEUE35.js.map} +0 -0
  1545. /package/dist/{view-Z5JEMRNU.js.map → view-R64LLT5L.js.map} +0 -0
  1546. /package/dist/{viewer-check-GHQA3UY2.js.map → viewer-check-KBF5PCQV.js.map} +0 -0
  1547. /package/dist/{web-6JMWERTT.js.map → web-TMQHTWRB.js.map} +0 -0
  1548. /package/dist/{winners-2FZXH22W.js.map → winners-VN2EHFDV.js.map} +0 -0
  1549. /package/dist/{winning-ads-XCVUAIOU.js.map → winning-ads-YYBQZJRL.js.map} +0 -0
  1550. /package/dist/{write-commands-3CX4M6CB.js.map → write-commands-AGKTMDAR.js.map} +0 -0
  1551. /package/dist/{write-commands-N74CDMQM.js.map → write-commands-EZH66GPE.js.map} +0 -0
  1552. /package/dist/{write-commands-YPT3ZLUW.js.map → write-commands-G6423E2M.js.map} +0 -0
  1553. /package/dist/{x-SI4KYDEY.js.map → x-JGV5D7AV.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../api/src/ads-meta/adStudies.ts","../../api/src/ads-meta/limits.ts"],"sourcesContent":["/**\n * Meta A/B tests (ad studies, `POST /{business_id}/ad_studies`) — the staged contract.\n *\n * A split test divides one audience into non-overlapping groups and shows each\n * group one version — an ad set or a campaign — so the versions are compared\n * on people who saw only that one. Meta owns the split, the measurement and the\n * verdict; Baker stages the test and creates it at Publish.\n *\n * The payload keeps Meta's own shape — `cells[{name, treatment_percentage,\n * adsets|campaigns}]`, unix-second times, `confidence_level` as 0.8/0.9/0.95 —\n * so a test read with `baker ads meta studies --study-id` reads back the way it\n * was staged.\n *\n * Meta's API takes far more than Ads Manager does (live, v25.0, 2026-10-14: a\n * one-cell test, cells summing to 80, a 5% cell, a one-hour or 100-day test,\n * the same ad set in both cells, and an ad-set cell beside a campaign cell were\n * all created). Each of those is a test that cannot answer its question, so the\n * refusals below are Ads Manager's rules for an A/B test, not the API's, and\n * each one says why. The API's own refusals are marked \"live\".\n */\nimport { z } from \"zod\";\nimport { NUMERIC_ID_REGEX, TEMP_REF_REGEX } from \"./limits\";\n\nconst DAY_SECONDS = 86_400;\n\nconst entityRefSchema = z.string().refine((value) => NUMERIC_ID_REGEX.test(value) || TEMP_REF_REGEX.test(value), {\n message: \"expected a numeric Meta id or a meta_temp_* reference from this chat\",\n});\n\nexport const adStudyCellSchema = z.strictObject({\n name: z.string().min(1).max(100),\n /** Share of the audience that sees this version, in percent. */\n treatment_percentage: z.number().positive().max(100),\n /** A lift study: the share of the audience held out from the ads, so what they do is the baseline. */\n control_percentage: z.number().positive().max(100).optional(),\n adsets: z.array(entityRefSchema).min(1).max(100).optional(),\n campaigns: z.array(entityRefSchema).min(1).max(100).optional(),\n /** A creative test: the one ad this version runs. */\n ads: z.array(entityRefSchema).min(1).max(100).optional(),\n});\nexport type AdStudyCell = z.infer<typeof adStudyCellSchema>;\n\n/** Live: Meta refuses any other value (\"Confidence interval value must be 0.8, 0.9, or 0.95\"). */\nexport const AD_STUDY_CONFIDENCE_LEVELS = [0.8, 0.9, 0.95] as const;\nconst confidenceLevelSchema = z\n .number()\n .refine((value) => (AD_STUDY_CONFIDENCE_LEVELS as readonly number[]).includes(value), {\n message: \"confidence_level must be 0.8, 0.9 or 0.95 (80%, 90% or 95%)\",\n });\n\nconst eventSourceSchema = z.strictObject({\n id: z.string().regex(NUMERIC_ID_REGEX),\n /** Pixel or app events counted, e.g. Lead, Purchase. Meta stores pixel events by their standard name. */\n event_names: z.array(z.string().min(1)).min(1).optional(),\n});\n\n/** What a split test is decided on. Meta's other objective types (SALES, BRAND, …) belong to lift studies. */\nexport const AD_STUDY_OBJECTIVE_TYPES = [\n \"CONVERSIONS\",\n \"SALES\",\n \"NONSALES\",\n \"BRAND\",\n \"BRANDLIFT\",\n \"MAE\",\n \"MAI\",\n] as const;\n\nexport const adStudyObjectiveSchema = z.strictObject({\n name: z.string().min(1).max(100),\n /** A split test is decided on CONVERSIONS; a lift study may measure sales, brand, app events (Meta's types). */\n type: z.enum(AD_STUDY_OBJECTIVE_TYPES).default(\"CONVERSIONS\"),\n is_primary: z.boolean().optional(),\n adspixels: z.array(eventSourceSchema).min(1).optional(),\n customconversions: z.array(eventSourceSchema).min(1).optional(),\n applications: z.array(eventSourceSchema).min(1).optional(),\n offsite_datasets: z.array(eventSourceSchema).min(1).optional(),\n});\nexport type AdStudyObjective = z.infer<typeof adStudyObjectiveSchema>;\n\nconst OBJECTIVE_SOURCES = [\"adspixels\", \"customconversions\", \"applications\", \"offsite_datasets\"] as const;\n\nexport interface AdStudyIssue {\n path: PropertyKey[];\n message: string;\n}\n\n/** Ads Manager's limits; Meta's API documents up to 150 cells of up to 100 objects. */\nexport const AD_STUDY_MIN_CELLS = 2;\nexport const AD_STUDY_MAX_CELLS = 150;\n\n/** The ad sets, campaigns or ads a version runs. */\nexport function cellObjects(cell: Pick<AdStudyCell, \"adsets\" | \"campaigns\" | \"ads\">): string[] {\n return [...(cell.adsets ?? []), ...(cell.campaigns ?? []), ...(cell.ads ?? [])];\n}\n\nexport type AdStudyLevel = \"adsets\" | \"campaigns\" | \"ads\";\n\n/** What the versions are — ad sets, campaigns or ads — or undefined while they disagree. */\nexport function adStudyLevel(\n cells: readonly Pick<AdStudyCell, \"adsets\" | \"campaigns\" | \"ads\">[],\n): AdStudyLevel | undefined {\n const levels = new Set(\n cells.flatMap((cell) =>\n [cell.adsets ? \"adsets\" : [], cell.campaigns ? \"campaigns\" : [], cell.ads ? \"ads\" : []].flat(),\n ),\n );\n return levels.size === 1 ? ([...levels][0] as AdStudyLevel) : undefined;\n}\n\nfunction levelIssues(cells: readonly AdStudyCell[]): AdStudyIssue[] {\n const issues: AdStudyIssue[] = [];\n cells.forEach((cell, index) => {\n if (cellObjects(cell).length === 0) {\n issues.push({\n path: [\"cells\", index],\n message: `version \"${cell.name}\" runs nothing — give it the ad sets (adsets) or campaigns (campaigns) it shows`,\n });\n }\n });\n if (cells.some((cell) => cell.ads)) {\n issues.push({\n path: [\"cells\"],\n message:\n 'an A/B test compares ad sets or campaigns — to compare single ads of one ad set, stage a creative test (type \"SPLIT_TEST_V2\", `--type creative`)',\n });\n }\n const named = cells.filter((cell) => cellObjects(cell).length > 0);\n if (named.length > 0 && adStudyLevel(named) === undefined) {\n issues.push({\n path: [\"cells\"],\n message:\n \"the versions must be all ad sets or all campaigns — comparing an ad set with a campaign compares two different things\",\n });\n }\n return issues;\n}\n\nfunction duplicateObjectIssues(cells: readonly AdStudyCell[]): AdStudyIssue[] {\n const seen = new Map<string, number>();\n const issues: AdStudyIssue[] = [];\n cells.forEach((cell, index) => {\n for (const id of cellObjects(cell)) {\n const first = seen.get(id);\n if (first !== undefined && first !== index) {\n issues.push({\n path: [\"cells\", index],\n message: `${id} is in more than one version — each version must run its own ad sets or campaigns, or it is compared with itself`,\n });\n }\n seen.set(id, first ?? index);\n }\n });\n return issues;\n}\n\nfunction shareIssues(cells: readonly { treatment_percentage: number }[]): AdStudyIssue[] {\n const total = Math.round(cells.reduce((sum, cell) => sum + cell.treatment_percentage, 0) * 100) / 100;\n if (total === 100) {\n return [];\n }\n // Live: Meta refuses more than 100 (1840025) and creates anything under it.\n return [\n {\n path: [\"cells\"],\n message: `the versions' shares must add up to 100% (now ${total}%) — every person in the test sees exactly one version`,\n },\n ];\n}\n\nfunction cellIssues(cells: readonly AdStudyCell[]): AdStudyIssue[] {\n if (cells.length < AD_STUDY_MIN_CELLS) {\n return [\n {\n path: [\"cells\"],\n message: `an A/B test needs at least 2 versions (cells) — with ${cells.length} there is nothing to compare`,\n },\n ];\n }\n const issues: AdStudyIssue[] = [...shareIssues(cells)];\n issues.push(...levelIssues(cells), ...duplicateObjectIssues(cells));\n return issues;\n}\n\n/**\n * Ads Manager runs an A/B test for 1 to 30 days and recommends at least 7.\n * Meta's API created a one-hour and a 100-day test (live): neither is one Meta\n * can call — an hour reaches nobody, and past a month the audience the test\n * started with has changed under it.\n */\nexport const AD_STUDY_MIN_DAYS = 1;\nexport const AD_STUDY_MAX_DAYS = 30;\nexport const AD_STUDY_RECOMMENDED_DAYS = 7;\n\nexport function adStudyDays(startTime: number, endTime: number): number {\n return Math.round(((endTime - startTime) / DAY_SECONDS) * 10) / 10;\n}\n\nexport function scheduleIssues(startTime: number, endTime: number): AdStudyIssue[] {\n if (endTime <= startTime) {\n return [{ path: [\"end_time\"], message: \"the test ends before it starts — end_time must be after start_time\" }];\n }\n const days = adStudyDays(startTime, endTime);\n if (endTime - startTime < AD_STUDY_MIN_DAYS * DAY_SECONDS) {\n return [{ path: [\"end_time\"], message: `an A/B test runs for at least 1 day (this one: ${days} days)` }];\n }\n if (endTime - startTime > AD_STUDY_MAX_DAYS * DAY_SECONDS) {\n return [\n {\n path: [\"end_time\"],\n message: `an A/B test runs for at most 30 days, as in Ads Manager (this one: ${days} days) — split a longer question into two tests`,\n },\n ];\n }\n return [];\n}\n\nfunction objectiveIssues(objectives: readonly AdStudyObjective[] | undefined): AdStudyIssue[] {\n if (!objectives || objectives.length === 0) {\n return [];\n }\n const issues: AdStudyIssue[] = [];\n objectives.forEach((objective, index) => {\n if (!OBJECTIVE_SOURCES.some((source) => objective[source] !== undefined)) {\n issues.push({\n path: [\"objectives\", index],\n message: `measure \"${objective.name}\" counts nothing — give it a pixel event (adspixels), a custom conversion (customconversions) or an app event (applications)`,\n });\n }\n });\n const primaries = objectives.filter((objective) => objective.is_primary === true).length;\n const implicitPrimary = objectives.length === 1 && objectives[0]?.is_primary === undefined;\n if (primaries !== 1 && !implicitPrimary) {\n issues.push({\n path: [\"objectives\"],\n message: `a test is decided on exactly one primary measure (is_primary: true) — ${primaries} are marked`,\n });\n }\n return issues;\n}\n\n/**\n * A lift study measures what the ads ADD: each cell holds a share of its\n * audience out (`control_percentage`) and compares it with the share that\n * sees the ads. One cell is a whole study. Live on v26.0 (2026-10-15) Meta\n * created a one-cell 90/10 conversion lift study on a campaign of\n * act_1342210013621203 once it named `observation_end_time` (≥ the end,\n * 1840009) and `cooldown_start_time` (1840013) — Baker fills both.\n */\nexport const LIFT_MAX_DAYS = 90;\n\n/** Meta subcode 1840009: a lift study or creative test is read until it ends, at the least. */\nfunction observationEndIssues(\n study: Pick<AdStudyCreate, \"end_time\"> & Partial<Pick<AdStudyCreate, \"observation_end_time\">>,\n): AdStudyIssue[] {\n if (study.observation_end_time === undefined || study.observation_end_time >= study.end_time) return [];\n return [\n {\n path: [\"observation_end_time\"],\n message: \"observation_end_time must run at least until the study ends (end_time) — Meta reads results until then\",\n },\n ];\n}\n\nfunction liftIssues(\n study: Pick<AdStudyCreate, \"cells\" | \"start_time\" | \"end_time\" | \"objectives\"> &\n Partial<Pick<AdStudyCreate, \"observation_end_time\">>,\n): AdStudyIssue[] {\n const issues: AdStudyIssue[] = [];\n if (study.cells.length === 0) issues.push({ path: [\"cells\"], message: \"a lift study needs at least one cell\" });\n study.cells.forEach((cell, index) => {\n const total = cell.treatment_percentage + (cell.control_percentage ?? 0);\n if (cell.control_percentage === undefined) {\n issues.push({\n path: [\"cells\", index, \"control_percentage\"],\n message: `cell \"${cell.name}\" holds nobody out — give it a control_percentage (the people who do not see the ads)`,\n });\n } else if (total > 100) {\n issues.push({\n path: [\"cells\", index],\n message: `cell \"${cell.name}\" splits ${total}% of its audience — at most 100%`,\n });\n }\n if (cell.ads)\n issues.push({\n path: [\"cells\", index, \"ads\"],\n message: \"a lift study measures campaigns or ad sets, not single ads\",\n });\n else if (!cell.campaigns && !cell.adsets)\n issues.push({\n path: [\"cells\", index],\n message: `cell \"${cell.name}\" runs nothing — give it the campaigns (campaigns) or ad sets (adsets) whose lift it measures`,\n });\n });\n issues.push(...observationEndIssues(study));\n if (!study.objectives || study.objectives.length === 0) {\n issues.push({\n path: [\"objectives\"],\n message: \"a lift study needs a measure — the pixel event or conversion whose lift it reads\",\n });\n }\n if (study.end_time <= study.start_time) {\n issues.push({ path: [\"end_time\"], message: \"the study ends before it starts\" });\n } else if (study.end_time - study.start_time > LIFT_MAX_DAYS * DAY_SECONDS) {\n issues.push({ path: [\"end_time\"], message: \"a lift study runs for at most 90 days\" });\n }\n return [...issues, ...duplicateObjectIssues(study.cells), ...objectiveIssues(study.objectives)].filter(\n (issue, index, all) => all.findIndex((other) => other.message === issue.message) === index,\n );\n}\n\n/**\n * A creative test (`SPLIT_TEST_V2`): 2 to 5 ads of ONE ad set, each version\n * one ad, compared on a share of the ad set's budget (`testDailyBudget`, sent\n * as `creative_test_config.daily_budget`). Live on v26.0 (2026-10-15) Meta\n * created one over two paused ads of a €5/day ad set with a €2 test budget,\n * and refused `lifetime_budget_percentage` on that daily-budget ad set\n * (5024025 \"does not align with the campaign's budget\").\n */\nexport const CREATIVE_TEST_MIN_CELLS = 2;\nexport const CREATIVE_TEST_MAX_CELLS = 5;\n\nfunction creativeTestIssues(\n study: Pick<AdStudyCreate, \"cells\" | \"start_time\" | \"end_time\" | \"testDailyBudget\"> &\n Partial<Pick<AdStudyCreate, \"observation_end_time\">>,\n): AdStudyIssue[] {\n const issues: AdStudyIssue[] = [];\n if (study.cells.length < CREATIVE_TEST_MIN_CELLS || study.cells.length > CREATIVE_TEST_MAX_CELLS) {\n issues.push({ path: [\"cells\"], message: `a creative test compares 2 to 5 ads (now ${study.cells.length})` });\n }\n study.cells.forEach((cell, index) => {\n if (cell.ads?.length !== 1 || cell.adsets || cell.campaigns) {\n issues.push({ path: [\"cells\", index], message: `version \"${cell.name}\" runs exactly one ad (ads: [<ad id>])` });\n }\n });\n if (!study.testDailyBudget) {\n issues.push({\n path: [\"testDailyBudget\"],\n message: \"a creative test needs testDailyBudget — the part of the ad set's daily budget the test spends\",\n });\n }\n return [\n ...issues,\n ...shareIssues(study.cells),\n ...duplicateObjectIssues(study.cells),\n ...scheduleIssues(study.start_time, study.end_time),\n ...observationEndIssues(study),\n ];\n}\n\n/** Everything wrong with a test as it would be created, in the words a refusal reads. */\nexport function adStudyIssues(\n study: Pick<AdStudyCreate, \"cells\" | \"start_time\" | \"end_time\" | \"objectives\"> &\n Partial<Pick<AdStudyCreate, \"type\" | \"testDailyBudget\" | \"observation_end_time\">>,\n): AdStudyIssue[] {\n if (study.type === \"LIFT\") return liftIssues(study);\n if (study.type === \"SPLIT_TEST_V2\") return creativeTestIssues(study);\n return [\n ...cellIssues(study.cells),\n ...scheduleIssues(study.start_time, study.end_time),\n ...objectiveIssues(study.objectives),\n ];\n}\n\nfunction addIssues(issues: readonly AdStudyIssue[], ctx: z.RefinementCtx): void {\n for (const issue of issues) {\n ctx.addIssue({ code: \"custom\", path: issue.path, message: issue.message });\n }\n}\n\n/** A split (A/B) test, a lift study, or a creative test of single ads. */\nexport const AD_STUDY_TYPES = [\"SPLIT_TEST\", \"LIFT\", \"SPLIT_TEST_V2\"] as const;\n\nconst adStudyCreateBaseSchema = z.strictObject({\n name: z.string().min(1).max(255),\n description: z.string().max(1000).optional(),\n type: z.enum(AD_STUDY_TYPES).default(\"SPLIT_TEST\"),\n start_time: z.number().int().positive(),\n end_time: z.number().int().positive(),\n /** A lift study or creative test: when Meta stops counting results (≥ the end). Defaults to the end. */\n observation_end_time: z.number().int().positive().optional(),\n /** A creative test: the part of the ad set's daily budget it spends, major units. */\n testDailyBudget: z\n .strictObject({\n amount: z.string().regex(/^\\d+(\\.\\d{1,2})?$/, \"expected a decimal amount like 2 or 2.50\"),\n currencyCode: z.string().length(3).optional(),\n })\n .optional(),\n cells: z.array(adStudyCellSchema).max(AD_STUDY_MAX_CELLS),\n /** How sure Meta must be before it names a winner; Meta applies its own when none is sent. */\n confidence_level: confidenceLevelSchema.optional(),\n /** What the test is decided on. Without one, Meta compares cost per result on the campaigns' objective. */\n objectives: z.array(adStudyObjectiveSchema).max(10).optional(),\n /** The Business that owns the test — Meta creates studies on a Business. Filled by the backend from the ad account. */\n business_id: z.string().regex(NUMERIC_ID_REGEX).optional(),\n});\nexport type AdStudyCreate = z.infer<typeof adStudyCreateBaseSchema>;\n\nexport const adStudyCreateSchema = adStudyCreateBaseSchema.superRefine((study, ctx) =>\n addIssues(adStudyIssues(study), ctx),\n);\n\n/** Within this long of its start, a test may be published too late — Meta then refuses it (1840012). */\nconst START_SOON_SECONDS = 6 * 3600;\n\n/** Non-blocking notes on a staged test: things Meta takes but a marketer should know. */\nexport function adStudyWarnings(study: AdStudyCreate, nowSeconds: number): string[] {\n const warnings: string[] = [];\n if (study.end_time - study.start_time < AD_STUDY_RECOMMENDED_DAYS * DAY_SECONDS) {\n warnings.push(\n `this test runs ${adStudyDays(study.start_time, study.end_time)} days — Meta recommends at least 7 days for a result it can call`,\n );\n }\n if (study.start_time - nowSeconds < START_SOON_SECONDS) {\n warnings.push(\n \"this test starts within 6 hours — publish before then, or Meta refuses it because its start has passed\",\n );\n }\n for (const cell of study.cells) {\n if (cell.treatment_percentage < SMALL_VERSION_PERCENT) {\n warnings.push(\n `${cell.name} gets ${cell.treatment_percentage}% of the audience — Meta takes it, but a version under ${SMALL_VERSION_PERCENT}% rarely gathers enough results for Meta to call a winner (Meta's guidance is at least ${SMALL_VERSION_PERCENT}% per version)`,\n );\n }\n }\n return warnings;\n}\n\n/**\n * Below this share a version is warned about, not refused: live on v25.0\n * (2026-10-14) Meta created a test split 95/5, against its own guidance of at\n * least 10% per version.\n */\nconst SMALL_VERSION_PERCENT = 10;\n\n// --- Update ---\n\n/** A live version's new share, named by its cell id (`studies --study-id` lists them). */\nexport const adStudyCellShareSchema = z.strictObject({\n id: z.string().regex(NUMERIC_ID_REGEX),\n treatment_percentage: z.number().positive().max(100),\n});\n\n/**\n * What a live test takes, from Meta's update reference and what it answered\n * live. Once a test has started its start and its split are fixed (1840011,\n * live), so those are refused at staging against the test as it stands; its\n * name, description and end move freely, and the end can move later again\n * even after the test has ended (live).\n */\nconst adStudyUpdateBaseSchema = z.strictObject({\n name: z.string().min(1).max(255).optional(),\n description: z.string().max(1000).optional(),\n start_time: z.number().int().positive().optional(),\n end_time: z.number().int().positive().optional(),\n /** A lift study or creative test: when Meta stops counting results (≥ the end). Moved out with a later end on its own (`carryObservationEnd`). */\n observation_end_time: z.number().int().positive().optional(),\n /** End the test at publish: the end is set a few minutes after the change applies (Meta refuses an end in the past). */\n end_now: z.literal(true).optional(),\n confidence_level: confidenceLevelSchema.optional(),\n /** Every version's new share — Meta re-splits the whole audience at once, so name every cell. */\n cells: z.array(adStudyCellShareSchema).min(AD_STUDY_MIN_CELLS).optional(),\n /** Delete the test. Meta removes it, results and all; ending it keeps them. */\n status: z.literal(\"DELETED\").optional(),\n});\nexport type AdStudyUpdate = z.infer<typeof adStudyUpdateBaseSchema>;\n\nfunction updateShapeIssues(p: AdStudyUpdate): AdStudyIssue[] {\n const set = Object.entries(p).filter(([, value]) => value !== undefined);\n if (set.length === 0) {\n return [{ path: [], message: \"update needs at least one field\" }];\n }\n if (p.status === \"DELETED\" && set.length > 1) {\n return [{ path: [\"status\"], message: \"delete alone — a deleted test takes no other change\" }];\n }\n const issues: AdStudyIssue[] = [];\n if (p.end_now && p.end_time !== undefined) {\n issues.push({ path: [\"end_now\"], message: \"end now or set end_time, not both\" });\n }\n if (p.observation_end_time !== undefined && p.end_time !== undefined && p.observation_end_time < p.end_time) {\n issues.push({\n path: [\"observation_end_time\"],\n message: \"observation_end_time must run at least until the study ends (end_time) — Meta reads results until then\",\n });\n }\n if (p.cells) {\n issues.push(...shareIssues(p.cells));\n const ids = p.cells.map((cell) => cell.id);\n if (new Set(ids).size !== ids.length) {\n issues.push({ path: [\"cells\"], message: \"each version's share is given once\" });\n }\n }\n return issues;\n}\n\nexport const adStudyUpdateSchema = adStudyUpdateBaseSchema.superRefine((p, ctx) =>\n addIssues(updateShapeIssues(p), ctx),\n);\n\n/**\n * Room a publish needs between the check and Meta's call: the merge, the\n * workflow's queue and the ops staged ahead of the test all run first.\n */\nexport const AD_STUDY_PUBLISH_MARGIN_SECONDS = 600;\n\n/**\n * Why a staged test's times no longer hold at publish, or undefined. Staging\n * checked them against the moment it ran; a chat published a day later meets\n * Meta's own refusal (1840012) after the merge, when nothing can be fixed. So\n * publish holds the change back first, with what to do.\n */\nexport function adStudyPublishTimeBlocker(\n kind: \"adStudy.create\" | \"adStudy.update\",\n payload: Pick<AdStudyUpdate, \"start_time\" | \"end_time\">,\n nowSeconds: number,\n): string | undefined {\n const deadline = nowSeconds + AD_STUDY_PUBLISH_MARGIN_SECONDS;\n if (payload.start_time !== undefined && payload.start_time <= deadline) {\n return kind === \"adStudy.create\"\n ? \"this A/B test's start has passed (or is minutes away) since it was staged, and Meta refuses a test that starts in the past — re-stage it with a later start\"\n : \"this test's new start has passed (or is minutes away) since it was staged, and Meta refuses a start in the past — re-stage the change with a later start\";\n }\n if (payload.end_time !== undefined && payload.end_time <= deadline) {\n return \"this test's new end has passed (or is minutes away) since it was staged, and Meta refuses an end in the past — re-stage it with a later end, or end the test now (`studies end`)\";\n }\n return undefined;\n}\n\n// --- References, wire, reads ---\n\nexport type AdStudyRefEntity = \"adSet\" | \"campaign\" | \"ad\";\n\n/** The meta_temp_* refs a test's versions name — the ad sets and campaigns this chat creates first. */\nconst CELL_REF_ENTITIES = [\n [\"ads\", \"ad\"],\n [\"adsets\", \"adSet\"],\n [\"campaigns\", \"campaign\"],\n] as const;\n\nexport function adStudyTempRefs(\n cells: readonly Pick<AdStudyCell, \"adsets\" | \"campaigns\" | \"ads\">[] | undefined,\n): { ref: string; entity: AdStudyRefEntity }[] {\n return (cells ?? []).flatMap((cell) =>\n CELL_REF_ENTITIES.flatMap(([key, entity]) =>\n (cell[key] ?? []).filter((id) => TEMP_REF_REGEX.test(id)).map((ref) => ({ ref, entity })),\n ),\n );\n}\n\n/** A live cell as Meta returns it: id lists wrapped in `{data: [{id, name}]}`. */\ninterface WireCell {\n id?: unknown;\n name?: unknown;\n treatment_percentage?: unknown;\n control_percentage?: unknown;\n adsets?: { data?: { id?: unknown; name?: unknown }[] };\n campaigns?: { data?: { id?: unknown; name?: unknown }[] };\n ads?: { data?: { id?: unknown; name?: unknown }[] };\n}\n\n/** A live test in staged vocabulary, with the names of what its versions run. */\nexport interface AdStudySnapshot {\n id: string;\n name?: string;\n description?: string;\n type?: string;\n start_time?: number;\n end_time?: number;\n /** A lift study or creative test: when Meta stops counting results (≥ the end). */\n observation_end_time?: number;\n business_id?: string;\n cells: (AdStudyCell & { id: string })[];\n objectives?: AdStudyObjective[];\n names: Record<string, string>;\n}\n\n/** Meta's ISO time (`2026-10-16T14:28:53+0000`) as unix seconds. */\nexport function unixSeconds(value: unknown): number | undefined {\n if (typeof value === \"number\") {\n return value > 1e12 ? Math.floor(value / 1000) : value;\n }\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n const iso = value.replace(/([+-]\\d{2})(\\d{2})$/, \"$1:$2\");\n const ms = Date.parse(iso);\n return Number.isNaN(ms) ? undefined : Math.floor(ms / 1000);\n}\n\nfunction wireIds(edge: WireCell[\"adsets\"], names: Record<string, string>): string[] | undefined {\n const rows = edge?.data;\n if (!rows || rows.length === 0) {\n return undefined;\n }\n return rows.flatMap((row) => {\n if (typeof row.id !== \"string\") return [];\n if (typeof row.name === \"string\") names[row.id] = row.name;\n return [row.id];\n });\n}\n\nfunction text(value: unknown): string | undefined {\n return typeof value === \"string\" && value !== \"\" ? value : undefined;\n}\n\nfunction wireSources(edge: unknown): { id: string; event_names?: string[] }[] | undefined {\n const rows = (edge as { data?: { id?: unknown; event_names?: unknown }[] } | undefined)?.data;\n if (!rows || rows.length === 0) {\n return undefined;\n }\n return rows.map((row) => ({\n id: String(row.id ?? \"\"),\n ...(Array.isArray(row.event_names) && row.event_names.length > 0\n ? { event_names: row.event_names.map(String) }\n : {}),\n }));\n}\n\nfunction objectivesFromWire(edge: unknown): AdStudyObjective[] | undefined {\n const rows = (edge as { data?: Record<string, unknown>[] } | undefined)?.data;\n if (!rows || rows.length === 0) {\n return undefined;\n }\n return rows.map((row) => {\n const objective: AdStudyObjective = {\n name: String(row.name ?? \"\"),\n type: \"CONVERSIONS\",\n ...(typeof row.is_primary === \"boolean\" ? { is_primary: row.is_primary } : {}),\n };\n for (const source of OBJECTIVE_SOURCES) {\n const sources = wireSources(row[source]);\n if (sources) objective[source] = sources;\n }\n return objective;\n });\n}\n\nexport function adStudyFromWire(node: Record<string, unknown>): AdStudySnapshot {\n const names: Record<string, string> = {};\n const cellRows = ((node.cells as { data?: WireCell[] } | undefined)?.data ?? []) as WireCell[];\n const cells = cellRows.map((cell) => {\n const adsets = wireIds(cell.adsets, names);\n const campaigns = wireIds(cell.campaigns, names);\n const ads = wireIds(cell.ads, names);\n return {\n id: String(cell.id ?? \"\"),\n name: String(cell.name ?? \"\"),\n treatment_percentage: Number(cell.treatment_percentage ?? 0),\n ...(typeof cell.control_percentage === \"number\" ? { control_percentage: cell.control_percentage } : {}),\n ...(adsets ? { adsets } : {}),\n ...(campaigns ? { campaigns } : {}),\n ...(ads ? { ads } : {}),\n };\n });\n const out: AdStudySnapshot = { id: String(node.id ?? \"\"), cells, names };\n const fields: Array<[keyof AdStudySnapshot, unknown]> = [\n [\"name\", text(node.name)],\n [\"description\", text(node.description)],\n [\"type\", text(node.type)],\n [\"start_time\", unixSeconds(node.start_time)],\n [\"end_time\", unixSeconds(node.end_time)],\n [\"observation_end_time\", unixSeconds(node.observation_end_time)],\n [\"business_id\", text((node.business as { id?: unknown } | undefined)?.id)],\n [\"objectives\", objectivesFromWire(node.objectives)],\n ];\n for (const [key, value] of fields) {\n if (value !== undefined) (out as unknown as Record<string, unknown>)[key] = value;\n }\n return out;\n}\n\n/**\n * A staged test as Meta takes it on create: the Business is the path, not a\n * field, and a lone measure is the primary one — Meta decides on the primary.\n */\nexport function adStudyCreateToWire(p: AdStudyCreate): Record<string, unknown> {\n const { business_id: _business, objectives, testDailyBudget: _budget, observation_end_time, ...study } = p;\n const lonePrimary = objectives?.length === 1 && objectives[0]?.is_primary === undefined;\n // A lift study and a creative test both need these two; Meta's own\n // creative-test guide sets them to the start and the end.\n const windows =\n p.type === \"SPLIT_TEST\"\n ? {}\n : { cooldown_start_time: p.start_time, observation_end_time: observation_end_time ?? p.end_time };\n return {\n ...study,\n ...windows,\n ...(objectives ? { objectives: lonePrimary ? [{ ...objectives[0], is_primary: true }] : objectives } : {}),\n };\n}\n\n/**\n * \"End now\" lands this far after the change applies. Meta refuses an end in\n * the past, and refused one two seconds ahead (live) — the clock it checks\n * against runs ahead of the request.\n */\nexport const AD_STUDY_END_NOW_LEAD_SECONDS = 300;\n\n/** A staged change as Meta takes it on `POST /{study_id}`; `nowSeconds` places an \"end now\". */\n/**\n * A lift study or creative test counts results until its observation end, and\n * Meta refuses an end after it (1840009, as on create). So a later end moves\n * the observation end out with it, staged where the review shows it; an A/B\n * test has none, and an observation end the change names is kept.\n */\nexport function carryObservationEnd(\n update: AdStudyUpdate,\n live: Pick<AdStudySnapshot, \"type\" | \"observation_end_time\">,\n): AdStudyUpdate {\n const counting = live.observation_end_time;\n if (\n live.type === \"SPLIT_TEST\" ||\n counting === undefined ||\n update.observation_end_time !== undefined ||\n update.end_time === undefined ||\n update.end_time <= counting\n ) {\n return update;\n }\n return { ...update, observation_end_time: update.end_time };\n}\n\nexport function adStudyUpdateToWire(p: AdStudyUpdate, nowSeconds: number): Record<string, unknown> {\n const { end_now, status: _status, ...fields } = p;\n return end_now ? { ...fields, end_time: nowSeconds + AD_STUDY_END_NOW_LEAD_SECONDS } : fields;\n}\n","/**\n * Single source of truth for Meta Marketing API write constraints\n * (Graph API v25.0). Every zod schema in `ops.ts` reads from here — no\n * scattered literals. The naming follows Meta's object graph: Campaign →\n * Ad Set → Ad Creative → Ad, plus Custom Audiences and media.\n */\n\nexport const META_LIMITS = {\n /** Meta caps the labels on one object at 50 (`adlabels`, \"max 50\"); it documents no name length, so 255. */\n adLabel: {\n nameMax: 255,\n perObjectMax: 50,\n },\n campaign: {\n nameMax: 400,\n },\n adSet: {\n nameMax: 400,\n /**\n * Meta's own bounds for a minimum ROAS, as a multiple of spend (2 = 200%):\n * \"roas_average_floor … should be larger than or equal to 0.001 and smaller\n * than or equal to 1000\" (subcode 1815888, live on v25.0, 2026-10-14).\n */\n minRoasMin: 0.001,\n minRoasMax: 1000,\n /** Frequency caps: `interval_days` and `max_frequency` are each 1–90 (Meta's #100 refusal, live v25.0). */\n frequencyIntervalDaysMax: 90,\n frequencyMaxImpressionsMax: 90,\n /** \"You can set up a maximum of 50 high demand periods per campaign or ad set\" (High Demand Period reference). */\n budgetSchedulesMax: 50,\n },\n ad: {\n nameMax: 400,\n },\n creative: {\n nameMax: 400,\n /** Feed truncates the primary text past this with \"… See more\". */\n messageSoftMax: 125,\n messageHardMax: 5000,\n /** Below this, primary text reads as too thin to carry a hook + value + reason to act. */\n messageGoodMin: 40,\n headlineMax: 255,\n descriptionMax: 300,\n carouselCardsMin: 2,\n carouselCardsMax: 10,\n /** Carousels tell a fuller story and give Meta more to optimize at this many cards. */\n carouselCardsGoodMin: 3,\n dynamicTextsMin: 1,\n dynamicTextsMax: 5,\n /** Dynamic ads mix and match best with at least this many media assets. */\n dynamicAssetsGoodMin: 3,\n /**\n * `asset_feed_spec` limits (Meta's Asset Feed Spec Options, \"restrictions\"):\n * body text 1024 characters, titles and descriptions 255, at most 10\n * images and 10 videos, 30 assets in all (the ad format counts as one).\n */\n assetFeedBodyMax: 1024,\n assetFeedTitleMax: 255,\n assetFeedImagesMax: 10,\n assetFeedVideosMax: 10,\n assetFeedAssetsMax: 30,\n },\n audience: {\n nameMax: 100,\n /** Website/engagement audiences below this rarely serve. */\n minLookalikeSourceRows: 100,\n retentionDaysMax: 180,\n /**\n * People a chat can stage on one customer list. Not Meta's limit (it takes 10,000 per request and\n * any number of requests): the hashed list rides inside the chat's draft, one Convex document of\n * at most 1 MiB shared by every staged change, and a hashed person is up to ~230 bytes.\n */\n membersMax: 2000,\n },\n customConversion: {\n nameMax: 100,\n descriptionMax: 500,\n /**\n * Meta's hard cap per ad account. It matters because deleting a custom\n * conversion archives it rather than removing it, so a chat that creates\n * one per campaign spends slots that only a person, in Events Manager, can\n * think about reclaiming.\n */\n perAccountMax: 100,\n },\n} as const;\n\n// --- Campaign ---\n\nexport const OBJECTIVES = [\n \"OUTCOME_TRAFFIC\",\n \"OUTCOME_ENGAGEMENT\",\n \"OUTCOME_LEADS\",\n \"OUTCOME_SALES\",\n \"OUTCOME_AWARENESS\",\n \"OUTCOME_APP_PROMOTION\",\n] as const;\nexport type MetaObjective = (typeof OBJECTIVES)[number];\n\nexport const SPECIAL_AD_CATEGORIES = [\n \"NONE\",\n \"HOUSING\",\n \"EMPLOYMENT\",\n /** Deprecated by Meta on 2025-01-14 — replaced by FINANCIAL_PRODUCTS_SERVICES. Still accepted as input and mapped on the wire. */\n \"CREDIT\",\n \"ISSUES_ELECTIONS_POLITICS\",\n \"FINANCIAL_PRODUCTS_SERVICES\",\n \"ONLINE_GAMBLING_AND_GAMING\",\n] as const;\nexport type MetaSpecialAdCategory = (typeof SPECIAL_AD_CATEGORIES)[number];\n\n/** ISO Alpha-2 country declaration is mandatory for these categories. */\nexport const SPECIAL_CATEGORIES_REQUIRING_COUNTRY: readonly MetaSpecialAdCategory[] = [\"ISSUES_ELECTIONS_POLITICS\"];\n\nexport const BUYING_TYPES = [\"AUCTION\", \"RESERVED\"] as const;\n\nexport const BID_STRATEGIES = [\n \"LOWEST_COST_WITHOUT_CAP\",\n \"LOWEST_COST_WITH_BID_CAP\",\n \"COST_CAP\",\n \"LOWEST_COST_WITH_MIN_ROAS\",\n] as const;\nexport type MetaBidStrategy = (typeof BID_STRATEGIES)[number];\n\n/** Bid strategies that require an explicit `bid_amount` on the ad set. */\nexport const BID_STRATEGIES_REQUIRING_AMOUNT: readonly MetaBidStrategy[] = [\"LOWEST_COST_WITH_BID_CAP\", \"COST_CAP\"];\n\n/**\n * Bid strategies that must NOT carry a `bid_amount` — Meta rejects one.\n * Auto-bid (`LOWEST_COST_WITHOUT_CAP`) has no cap; `LOWEST_COST_WITH_MIN_ROAS`\n * uses `bid_constraints.roas_average_floor` instead of a flat amount.\n */\n/**\n * Meta takes a minimum ROAS as `bid_constraints.roas_average_floor`, an integer\n * scaled 10000×: 10000 is 1.0× (100%), 23300 is 2.33×. Baker stages the\n * multiple itself and scales it on the wire, the way money is staged in major\n * units and converted there.\n */\nexport const ROAS_FLOOR_SCALE = 10000;\n\nexport const BID_STRATEGIES_FORBIDDING_AMOUNT: readonly MetaBidStrategy[] = [\n \"LOWEST_COST_WITHOUT_CAP\",\n \"LOWEST_COST_WITH_MIN_ROAS\",\n];\n\n// --- Ad set ---\n\nexport const BILLING_EVENTS = [\n \"APP_INSTALLS\",\n \"CLICKS\",\n \"IMPRESSIONS\",\n \"LINK_CLICKS\",\n \"NONE\",\n \"OFFER_CLAIMS\",\n \"PAGE_LIKES\",\n \"POST_ENGAGEMENT\",\n \"THRUPLAY\",\n \"PURCHASE\",\n \"LISTING_INTERACTION\",\n] as const;\nexport type MetaBillingEvent = (typeof BILLING_EVENTS)[number];\n\nexport const OPTIMIZATION_GOALS = [\n \"NONE\",\n \"APP_INSTALLS\",\n \"AD_RECALL_LIFT\",\n \"ENGAGED_USERS\",\n \"EVENT_RESPONSES\",\n \"IMPRESSIONS\",\n \"LEAD_GENERATION\",\n \"QUALITY_LEAD\",\n \"QUALITY_CALL\",\n \"LINK_CLICKS\",\n \"OFFSITE_CONVERSIONS\",\n \"LANDING_PAGE_VIEWS\",\n \"PAGE_LIKES\",\n \"POST_ENGAGEMENT\",\n \"REACH\",\n \"THRUPLAY\",\n \"VALUE\",\n \"CONVERSATIONS\",\n \"DERIVED_EVENTS\",\n // Added 2026-09-18 from Meta's own generated enum spec\n // (facebook-business-sdk-codegen › AdSet_optimization_goal). Every one of these\n // is a goal Meta accepts and Baker used to refuse at stage time — the messaging\n // and Instagram-profile goals are the ones that cost real campaigns, because a\n // click-to-WhatsApp ad set cannot be expressed without them.\n \"ADVERTISER_SILOED_VALUE\",\n \"APP_INSTALLS_AND_OFFSITE_CONVERSIONS\",\n \"AUTOMATIC_OBJECTIVE\",\n \"ENGAGED_PAGE_VIEWS\",\n \"IN_APP_VALUE\",\n \"MEANINGFUL_CALL_ATTEMPT\",\n \"MESSAGING_APPOINTMENT_CONVERSION\",\n \"MESSAGING_DEEP_CONVERSATION_AND_FOLLOW\",\n \"MESSAGING_PURCHASE_CONVERSION\",\n \"PROFILE_AND_PAGE_ENGAGEMENT\",\n \"PROFILE_VISIT\",\n \"REMINDERS_SET\",\n \"SUBSCRIBERS\",\n \"VISIT_INSTAGRAM_PROFILE\",\n] as const;\nexport type MetaOptimizationGoal = (typeof OPTIMIZATION_GOALS)[number];\n\n/**\n * Optimization goals Meta rejects without a `promoted_object.page_id` — the\n * lead-form and page goals where the promoted object *is* the page (instant\n * forms, page likes). Missing it fails publish with subcode 1815430\n * (\"Please select a promoted object for your ad set\").\n */\nexport const OPTIMIZATION_GOALS_REQUIRING_PAGE: readonly MetaOptimizationGoal[] = [\n \"LEAD_GENERATION\",\n \"QUALITY_LEAD\",\n \"PAGE_LIKES\",\n];\n\n/**\n * Web-conversion goals Meta rejects without `promoted_object.pixel_id` +\n * `custom_event_type` — the pixel/event the ad set optimizes toward. Meta docs:\n * \"For OFFSITE_CONVERSIONS: Requires pixel_id and custom_event_type.\"\n */\nexport const OPTIMIZATION_GOALS_REQUIRING_PIXEL: readonly MetaOptimizationGoal[] = [\"OFFSITE_CONVERSIONS\"];\n\n/**\n * Value-optimization goals need `custom_event_type` plus a conversion *source* —\n * `pixel_id` for web value optimization, or `application_id` for app value\n * optimization (AEO/VO). Requiring `pixel_id` unconditionally would reject a\n * legitimate app-based VALUE campaign, so we accept either source.\n */\nexport const OPTIMIZATION_GOALS_REQUIRING_CONVERSION_SOURCE: readonly MetaOptimizationGoal[] = [\"VALUE\"];\n\n/** App-promotion goals Meta rejects without `promoted_object.application_id`. */\nexport const OPTIMIZATION_GOALS_REQUIRING_APP: readonly MetaOptimizationGoal[] = [\"APP_INSTALLS\"];\n\n/**\n * `PHONE_CALL` is CONTESTED and deliberately kept. Meta's Destination Type page\n * documents it; Meta's own generated enum spec does not list it. Neither source\n * settles it and a create is the only thing that would, so it stays accepted —\n * removing a value Meta takes breaks a campaign shape, keeping one it refuses\n * costs a single publish error that names itself.\n */\nexport const DESTINATION_TYPES = [\n \"WEBSITE\",\n \"APP\",\n \"MESSENGER\",\n \"INSTAGRAM_DIRECT\",\n \"ON_AD\",\n \"ON_PAGE\",\n \"ON_POST\",\n \"ON_VIDEO\",\n \"WHATSAPP\",\n \"PHONE_CALL\",\n \"INSTAGRAM_PROFILE\",\n \"SHOP_AUTOMATIC\",\n // Added 2026-09-18 from adcampaign_destination_type. The four MESSAGING_* values\n // are the click-to-message destinations (Messenger / Instagram Direct / WhatsApp\n // in every combination Meta ships); without them Baker could not stage a\n // click-to-WhatsApp ad set at all.\n \"APPLINKS_AUTOMATIC\",\n \"FACEBOOK\",\n \"FACEBOOK_LIVE\",\n \"FACEBOOK_PAGE\",\n \"IMAGINE\",\n \"INSTAGRAM_LIVE\",\n \"INSTAGRAM_PROFILE_AND_FACEBOOK_PAGE\",\n \"MESSAGING_INSTAGRAM_DIRECT_MESSENGER\",\n \"MESSAGING_INSTAGRAM_DIRECT_MESSENGER_WHATSAPP\",\n \"MESSAGING_INSTAGRAM_DIRECT_WHATSAPP\",\n \"MESSAGING_MESSENGER_WHATSAPP\",\n \"ON_EVENT\",\n] as const;\nexport type MetaDestinationType = (typeof DESTINATION_TYPES)[number];\n\nexport const CUSTOM_EVENT_TYPES = [\n \"PURCHASE\",\n \"LEAD\",\n \"COMPLETE_REGISTRATION\",\n \"ADD_TO_CART\",\n \"ADD_PAYMENT_INFO\",\n \"INITIATED_CHECKOUT\",\n \"CONTENT_VIEW\",\n \"SEARCH\",\n \"SUBSCRIBE\",\n \"START_TRIAL\",\n \"CONTACT\",\n \"OTHER\",\n // Added 2026-09-18 from AdPromotedObject_custom_event_type. SCHEDULE,\n // SUBMIT_APPLICATION, SERVICE_BOOKING_REQUEST and\n // MESSAGING_CONVERSATION_STARTED_7D are the conversions service businesses and\n // click-to-message campaigns actually optimize toward.\n \"ACHIEVEMENT_UNLOCKED\",\n \"ADD_TO_WISHLIST\",\n \"AD_IMPRESSION\",\n \"CUSTOMIZE_PRODUCT\",\n \"D2_RETENTION\",\n \"D7_RETENTION\",\n \"DONATE\",\n \"FIND_LOCATION\",\n \"LEVEL_ACHIEVED\",\n \"LISTING_INTERACTION\",\n \"MESSAGING_CONVERSATION_STARTED_7D\",\n \"RATE\",\n \"SCHEDULE\",\n \"SERVICE_BOOKING_REQUEST\",\n \"SPENT_CREDITS\",\n \"SUBMIT_APPLICATION\",\n \"TUTORIAL_COMPLETION\",\n] as const;\n\n/**\n * The only goals Meta lets an ad set cap frequency on: \"Writes to this field are\n * only available in ad sets where REACH and THRUPLAY are the performance goal\"\n * (Ad Account Ad Sets reference); anything else is subcode 1815211, live v25.0.\n */\nexport const OPTIMIZATION_GOALS_WITH_FREQUENCY_CAP: readonly MetaOptimizationGoal[] = [\"REACH\", \"THRUPLAY\"];\n\n/**\n * What a frequency cap counts — the values Meta's own refusal lists on v25.0.\n * Not all of them work: see `validateFrequencyCap` (VIDEO_VIEWS fails with an\n * unknown error, VIDEO_VIEWS_6S is REACH-only).\n */\nexport const FREQUENCY_CAP_EVENTS = [\n \"IMPRESSIONS\",\n \"VIDEO_VIEWS\",\n \"VIDEO_VIEWS_2S\",\n \"VIDEO_VIEWS_15S\",\n \"VIDEO_VIEWS_6S\",\n] as const;\n\n/**\n * CAP holds people at or below the number; TARGET aims at it — reach-and-frequency\n * only: live on v25.0 an auction ad set's TARGET cap passed the dry run and was\n * refused at create for having no prediction (subcode 3858652), so staging\n * refuses it (`validateFrequencyCap`). Kept so a live ad set carrying one reads.\n */\nexport const FREQUENCY_CAP_TYPES = [\"CAP\", \"TARGET\"] as const;\n\n/**\n * How an ad set spends through its day. `standard` spreads the budget evenly;\n * `no_pacing` (Ads Manager's accelerated delivery) spends as fast as it can and\n * only works on a bid cap; `day_parting` runs only in the hours `adset_schedule`\n * names. Sent as Meta's one-element `pacing_type` list.\n */\nexport const PACING_TYPES = [\"standard\", \"no_pacing\", \"day_parting\"] as const;\nexport type MetaPacingType = (typeof PACING_TYPES)[number];\n\n/** Whose clock an ad schedule follows: the viewer's (USER) or the ad account's (ADVERTISER). */\nexport const SCHEDULE_TIMEZONE_TYPES = [\"USER\", \"ADVERTISER\"] as const;\n\nexport const ATTRIBUTION_EVENT_TYPES = [\"CLICK_THROUGH\", \"VIEW_THROUGH\", \"ENGAGED_VIDEO_VIEW\"] as const;\nexport const ATTRIBUTION_WINDOW_DAYS = [1, 7] as const;\n\n/**\n * The longest window Meta still takes per event, live on v25.0 (2026-10-14):\n * a 28-day click is refused for every goal (\"supported values is/are\n * attribution window of 1, 7 day(s)\", subcode 1885423), a view or an engaged\n * video view only counts for one day (\"supported combination of click-through\n * and view-through attribution window values are: (1, 0), (1, 1), (7, 0),\n * (7, 1)\", subcode 1885501). Which combinations a given goal takes is narrower\n * still and Meta's to say — the stage-time dry run asks it.\n */\nexport const ATTRIBUTION_MAX_WINDOW_DAYS: Readonly<Record<(typeof ATTRIBUTION_EVENT_TYPES)[number], number>> = {\n CLICK_THROUGH: 7,\n VIEW_THROUGH: 1,\n ENGAGED_VIDEO_VIEW: 1,\n};\n\n// --- Advantage+ Audience (targeting_automation.advantage_audience) ---\n\n/**\n * With Advantage+ Audience on (`advantage_audience: 1`, the Meta v23+ default\n * when age/gender/custom-audience/detailed inclusions are default or omitted),\n * age & gender become mere suggestions: `age_max` is pinned to 65 and `age_min`\n * is limited to 18–25. Setting a narrower `age_max`, an `age_min` above 25, or a\n * single-gender restriction is rejected (subcode 1870189, \"add a lower maximum\n * age as a suggestion instead\"). To enforce a HARD age/gender limit you must set\n * `advantage_audience: 0`.\n */\nexport const ADVANTAGE_AUDIENCE_OPEN_AGE_MAX = 65;\nexport const ADVANTAGE_AUDIENCE_MAX_HARD_AGE_MIN = 25;\n\n// --- EU Digital Services Act (DSA) ---\n\n/**\n * When an ad set targets any EU country, Meta requires `dsa_beneficiary` and\n * `dsa_payor` (who benefits from / pays for the ad) for Digital Services Act\n * compliance — the create is rejected without them. The backend auto-fills both\n * from the ad account's business name when the caller omits them.\n */\nexport const EU_DSA_COUNTRIES = new Set([\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CY\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"GR\",\n \"HU\",\n \"IE\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n]);\n\n// --- Ad creative ---\n\n/**\n * Every button Meta accepts on `object_story_spec.link_data.call_to_action.type`\n * — a single ad, a video ad, and each card of a carousel.\n *\n * Read off Meta itself on 2026-09-01 by posting an invalid type and keeping the\n * list its 400 enumerates, because the published reference and the live\n * validator disagree: `SEE_DETAILS` is missing from the docs page and accepted\n * by the API, and it is the button three of one client's live ads actually use.\n * This list used to be a hand-picked 27, so those ads could not be rebuilt\n * through Baker at all — the button was the thing that stopped them.\n *\n * Meta keeps a SECOND, different list for `asset_feed_spec.call_to_action_types`\n * ({@link ASSET_FEED_CTA_TYPES}). Neither contains the other:\n * `SEE_DETAILS` is link-only, `GET_STARTED` and `VIEW_CART` are feed-only. A\n * value in the wrong slot is refused at creation, so the two are kept apart\n * rather than unioned.\n */\nexport const CTA_TYPES = [\n \"BOOK_TRAVEL\",\n \"CONTACT_US\",\n \"DONATE\",\n \"DONATE_NOW\",\n \"DOWNLOAD\",\n \"GET_DIRECTIONS\",\n \"GO_LIVE\",\n \"INTERESTED\",\n \"LEARN_MORE\",\n \"SEE_DETAILS\",\n \"LIKE_PAGE\",\n \"MESSAGE_PAGE\",\n \"RAISE_MONEY\",\n \"SAVE\",\n \"SEND_TIP\",\n \"SHOP_NOW\",\n \"SIGN_UP\",\n \"VIEW_INSTAGRAM_PROFILE\",\n \"INSTAGRAM_MESSAGE\",\n \"LOYALTY_LEARN_MORE\",\n \"PURCHASE_GIFT_CARDS\",\n \"PAY_TO_ACCESS\",\n \"SEE_MORE\",\n \"TRY_IN_CAMERA\",\n \"WHATSAPP_LINK\",\n \"GET_IN_TOUCH\",\n \"TRY_NOW\",\n \"ASK_A_QUESTION\",\n \"START_A_CHAT\",\n \"CHAT_NOW\",\n \"ASK_US\",\n \"CHAT_WITH_US\",\n \"BOOK_NOW\",\n \"CHECK_AVAILABILITY\",\n \"ORDER_NOW\",\n \"WHATSAPP_MESSAGE\",\n \"GET_MOBILE_APP\",\n \"INSTALL_MOBILE_APP\",\n \"USE_MOBILE_APP\",\n \"INSTALL_APP\",\n \"USE_APP\",\n \"PLAY_GAME\",\n \"TRY_DEMO\",\n \"WATCH_VIDEO\",\n \"WATCH_MORE\",\n \"OPEN_LINK\",\n \"NO_BUTTON\",\n \"LISTEN_MUSIC\",\n \"MOBILE_DOWNLOAD\",\n \"GET_OFFER\",\n \"GET_OFFER_VIEW\",\n \"BUY_NOW\",\n \"BUY_TICKETS\",\n \"UPDATE_APP\",\n \"BET_NOW\",\n \"ADD_TO_CART\",\n \"SELL_NOW\",\n \"GET_SHOWTIMES\",\n \"LISTEN_NOW\",\n \"GET_EVENT_TICKETS\",\n \"REMIND_ME\",\n \"SEARCH_MORE\",\n \"PRE_REGISTER\",\n \"SWIPE_UP_PRODUCT\",\n \"SWIPE_UP_SHOP\",\n \"PLAY_GAME_ON_FACEBOOK\",\n \"VISIT_WORLD\",\n \"OPEN_INSTANT_APP\",\n \"JOIN_GROUP\",\n \"GET_PROMOTIONS\",\n \"SEND_UPDATES\",\n \"INQUIRE_NOW\",\n \"VISIT_PROFILE\",\n \"CHAT_ON_WHATSAPP\",\n \"EXPLORE_MORE\",\n \"CONFIRM\",\n \"JOIN_CHANNEL\",\n \"MAKE_AN_APPOINTMENT\",\n \"ASK_ABOUT_SERVICES\",\n \"BOOK_A_CONSULTATION\",\n \"GET_A_QUOTE\",\n \"BUY_VIA_MESSAGE\",\n \"ASK_FOR_MORE_INFO\",\n \"VIEW_PRODUCT\",\n \"VIEW_CHANNEL\",\n \"WATCH_LIVE_VIDEO\",\n \"JOIN_LIVE_VIDEO\",\n \"IMAGINE\",\n \"CALL\",\n \"MISSED_CALL\",\n \"CALL_NOW\",\n \"CALL_ME\",\n \"APPLY_NOW\",\n \"BUY\",\n \"GET_QUOTE\",\n \"SUBSCRIBE\",\n \"RECORD_NOW\",\n \"VOTE_NOW\",\n \"GIVE_FREE_RIDES\",\n \"REGISTER_NOW\",\n \"OPEN_MESSENGER_EXT\",\n \"EVENT_RSVP\",\n \"CIVIC_ACTION\",\n \"SEND_INVITES\",\n \"REFER_FRIENDS\",\n \"REQUEST_TIME\",\n \"SEE_MENU\",\n \"SEARCH\",\n \"TRY_IT\",\n \"TRY_ON\",\n \"LINK_CARD\",\n \"DIAL_CODE\",\n \"FIND_YOUR_GROUPS\",\n \"START_ORDER\",\n // Added 2026-09-18 from Meta's generated enum spec\n // (AdCreative_call_to_action_type). Additive on purpose: 37 of the values above\n // are absent from that spec and present in the live 400, which is the\n // disagreement the note above is about — so the spec widens this list and never\n // prunes it.\n \"AUDIO_CALL\",\n \"BROWSE_SHOP\",\n \"CONTACT\",\n \"FIND_A_GROUP\",\n \"FIND_OUT_MORE\",\n \"FOLLOW_NEWS_STORYLINE\",\n \"FOLLOW_PAGE\",\n \"FOLLOW_USER\",\n \"GET_DETAILS\",\n \"GET_STARTED\",\n \"SAY_THANKS\",\n \"SEE_SHOP\",\n \"SEND_A_GIFT\",\n \"SEND_GIFT_MONEY\",\n \"SHARE\",\n \"SHOP_WITH_AI\",\n \"SOTTO_SUBSCRIBE\",\n \"TRY_ON_WITH_AI\",\n \"VIDEO_ANNOTATION\",\n \"VIDEO_CALL\",\n \"VIEW_CART\",\n \"VIEW_IN_CART\",\n \"VISIT_PAGES_FEED\",\n \"VISIT_WEBSITE\",\n \"WOODHENGE_SUPPORT\",\n] as const;\nexport type MetaCtaType = (typeof CTA_TYPES)[number];\n\n/**\n * The buttons a dynamic / flexible creative may list in\n * `asset_feed_spec.call_to_action_types`. Read off Meta the same way and on the\n * same day as {@link CTA_TYPES}, and deliberately a separate list — see the\n * note there.\n */\nexport const ASSET_FEED_CTA_TYPES = [\n \"OPEN_LINK\",\n \"LIKE_PAGE\",\n \"SHOP_NOW\",\n \"PLAY_GAME\",\n \"INSTALL_APP\",\n \"USE_APP\",\n \"CALL\",\n \"CALL_ME\",\n \"VIDEO_CALL\",\n \"INSTALL_MOBILE_APP\",\n \"USE_MOBILE_APP\",\n \"MOBILE_DOWNLOAD\",\n \"BOOK_TRAVEL\",\n \"LISTEN_MUSIC\",\n \"WATCH_VIDEO\",\n \"LEARN_MORE\",\n \"SIGN_UP\",\n \"DOWNLOAD\",\n \"WATCH_MORE\",\n \"NO_BUTTON\",\n \"VISIT_PAGES_FEED\",\n \"CALL_NOW\",\n \"APPLY_NOW\",\n \"CONTACT\",\n \"BUY_NOW\",\n \"GET_OFFER\",\n \"GET_OFFER_VIEW\",\n \"BUY_TICKETS\",\n \"UPDATE_APP\",\n \"GET_DIRECTIONS\",\n \"BUY\",\n \"SEND_UPDATES\",\n \"MESSAGE_PAGE\",\n \"DONATE\",\n \"SUBSCRIBE\",\n \"SAY_THANKS\",\n \"SELL_NOW\",\n \"SHARE\",\n \"DONATE_NOW\",\n \"GET_QUOTE\",\n \"CONTACT_US\",\n \"ORDER_NOW\",\n \"START_ORDER\",\n \"ADD_TO_CART\",\n \"VIEW_CART\",\n \"VIEW_IN_CART\",\n \"VIDEO_ANNOTATION\",\n \"RECORD_NOW\",\n \"INQUIRE_NOW\",\n \"CONFIRM\",\n \"REFER_FRIENDS\",\n \"REQUEST_TIME\",\n \"GET_SHOWTIMES\",\n \"LISTEN_NOW\",\n \"TRY_DEMO\",\n \"WOODHENGE_SUPPORT\",\n \"SOTTO_SUBSCRIBE\",\n \"FOLLOW_USER\",\n \"RAISE_MONEY\",\n \"SEE_SHOP\",\n \"GET_DETAILS\",\n \"FIND_OUT_MORE\",\n \"VISIT_WEBSITE\",\n \"BROWSE_SHOP\",\n \"EVENT_RSVP\",\n \"WHATSAPP_MESSAGE\",\n \"FOLLOW_NEWS_STORYLINE\",\n \"SEE_MORE\",\n \"BOOK_NOW\",\n \"FIND_A_GROUP\",\n \"FIND_YOUR_GROUPS\",\n \"PAY_TO_ACCESS\",\n \"PURCHASE_GIFT_CARDS\",\n \"FOLLOW_PAGE\",\n \"SEND_A_GIFT\",\n \"SWIPE_UP_SHOP\",\n \"SWIPE_UP_PRODUCT\",\n \"SEND_GIFT_MONEY\",\n \"PLAY_GAME_ON_FACEBOOK\",\n \"GET_STARTED\",\n \"OPEN_INSTANT_APP\",\n \"AUDIO_CALL\",\n \"GET_PROMOTIONS\",\n \"JOIN_CHANNEL\",\n \"MAKE_AN_APPOINTMENT\",\n \"ASK_ABOUT_SERVICES\",\n \"BOOK_A_CONSULTATION\",\n \"GET_A_QUOTE\",\n \"BUY_VIA_MESSAGE\",\n \"ASK_FOR_MORE_INFO\",\n \"CHAT_WITH_US\",\n \"VIEW_PRODUCT\",\n \"VIEW_CHANNEL\",\n \"GET_IN_TOUCH\",\n \"ASK_A_QUESTION\",\n \"START_A_CHAT\",\n \"CHAT_NOW\",\n \"ASK_US\",\n \"WATCH_LIVE_VIDEO\",\n \"JOIN_LIVE_VIDEO\",\n \"SHOP_WITH_AI\",\n \"TRY_ON_WITH_AI\",\n] as const;\nexport type MetaAssetFeedCtaType = (typeof ASSET_FEED_CTA_TYPES)[number];\n\n/**\n * The buttons Meta allows on a creative that opens an instant form. Meta's\n * lead-ads guide names exactly these six for `link_data.call_to_action`, and\n * anything else is refused at creation with \"Invalid value field\n * lead_gen_form_id for CTA type: <TYPE>\" (subcode 1856030) — which is a publish\n * failure, after the ad's siblings have already been created on the account.\n * One real chat staged six instant-form creatives, two of them on CONTACT_US:\n * both creatives were rejected and both of their ads were skipped, leaving four\n * of six ads live and nobody able to tell why from Meta's sentence.\n */\nexport const LEAD_FORM_CTA_TYPES = [\n \"APPLY_NOW\",\n \"DOWNLOAD\",\n \"GET_QUOTE\",\n \"LEARN_MORE\",\n \"SIGN_UP\",\n \"SUBSCRIBE\",\n] as const satisfies readonly MetaCtaType[];\n\n/** `asset_feed_spec.ad_formats` (Asset Feed Spec Options): `AUTOMATIC_FORMAT` mixes pictures and videos. */\nexport const AD_FORMATS = [\"SINGLE_IMAGE\", \"CAROUSEL\", \"SINGLE_VIDEO\", \"AUTOMATIC_FORMAT\"] as const;\nexport type MetaAdFormat = (typeof AD_FORMATS)[number];\n\n/** Advantage+ Creative enroll state (case-sensitive) — set per individual feature. */\nexport const ENROLL_STATUSES = [\"OPT_IN\", \"OPT_OUT\"] as const;\nexport type MetaEnrollStatus = (typeof ENROLL_STATUSES)[number];\n\n/**\n * Meta deprecated the `standard_enhancements` bundle key at Marketing API v22.0\n * — including it in `creative_features_spec` now hard-fails (error subcode\n * 3858504: \"Including standard enhancements field in creative has been\n * deprecated. Please choose to set individual features instead.\"). The bundle is\n * replaced by these individual feature keys, opted in/out one at a time.\n *\n * Meta does NOT publish a per-media eligibility matrix and validates features\n * server-side, so we expand our master toggle into ONLY keys confirmed present\n * in the current `AdCreativeFeaturesSpec`, scoped to the creative's media type.\n * Callers needing a specific feature pass it explicitly via `enhancements.features`.\n */\nexport const STANDARD_ENHANCEMENT_IMAGE_FEATURES = [\n \"image_templates\",\n \"image_touchups\",\n \"text_optimizations\",\n \"inline_comment\",\n] as const;\n/** Video keeps only the universally-valid text/comment enhancements (visual crop keys aren't in the confirmed spec list). */\nexport const STANDARD_ENHANCEMENT_VIDEO_FEATURES = [\"text_optimizations\", \"inline_comment\"] as const;\n\n/**\n * Advantage+ Creative features that change the picture or video itself —\n * adding frames, re-cropping, AI outpainting, animating a still, generating\n * music, cutting a video. Read off a live creative's\n * `degrees_of_freedom_spec.creative_features_spec` (82 keys, v25.0,\n * 2026-10-14) and every one accepted as OPT_OUT by a validate-only create.\n *\n * Every composed creative sends them all OPT_OUT, so Meta changes nobody's\n * pixels by default; one is switched on only when the user asked for it by name.\n */\nexport const VISUAL_ENHANCEMENT_FEATURES = {\n adapt_to_placement: \"Adapt the picture to each placement\",\n add_text_overlay: \"Add text on top of the media\",\n audio: \"Add audio\",\n carousel_to_video: \"Turn the carousel into a video\",\n creative_stickers: \"Add stickers\",\n cv_transformation: \"Visual transformations\",\n image_animation: \"Animate the picture\",\n image_auto_crop: \"Crop the picture automatically\",\n image_background_gen: \"Generate a new background\",\n image_banner: \"Add a banner\",\n image_brightness_and_contrast: \"Adjust brightness and contrast\",\n image_end_card: \"Add an end card\",\n image_enhancement: \"Enhance the picture\",\n image_templates: \"Put the picture in a template frame\",\n image_text_translation: \"Translate text in the picture\",\n image_touchups: \"Touch up the picture\",\n image_uncrop: \"Expand the picture with AI\",\n media_liquidity_animated_image: \"Animate the picture\",\n media_type_automation: \"Turn the picture into a video\",\n multi_photo_to_video: \"Turn several pictures into a video\",\n music_generation: \"Generate music\",\n pac_genai_recomposition: \"Recompose the media with AI per placement\",\n pac_recomposition: \"Recompose the media per placement\",\n replace_media_text: \"Replace text in the media\",\n reveal_details_over_time: \"Reveal details over time\",\n text_overlay_translation: \"Translate text overlays\",\n translate_voiceover: \"Translate the voiceover\",\n video_auto_crop: \"Crop the video automatically\",\n video_filtering: \"Filter the video\",\n video_highlight: \"Cut a highlight from the video\",\n video_highlights: \"Cut highlights from the video\",\n video_to_image: \"Turn the video into a picture\",\n video_uncrop: \"Expand the video with AI\",\n video_uncrop_9x16_to_9x18: \"Expand a vertical video\",\n ig_video_native_subtitle: \"Add subtitles to the video\",\n} as const satisfies Record<string, string>;\nexport type VisualEnhancementFeature = keyof typeof VISUAL_ENHANCEMENT_FEATURES;\n\n/** The features that change the media which these enhancements switch on, in the reviewer's words. */\nexport function visualEnhancementsOn(enhancements: { features?: Record<string, string> } | undefined): string[] {\n return Object.entries(enhancements?.features ?? {})\n .filter(([key, status]) => status === \"OPT_IN\" && key in VISUAL_ENHANCEMENT_FEATURES)\n .map(([key]) => VISUAL_ENHANCEMENT_FEATURES[key as VisualEnhancementFeature]);\n}\n\n/** What the enhancements switch turns on or off: suggestions to the words, never to the media. */\nexport const TEXT_ENHANCEMENT_FEATURES = [\"text_optimizations\", \"inline_comment\"] as const;\n\n// --- Statuses ---\n\nexport const ENTITY_STATUSES = [\"ACTIVE\", \"PAUSED\", \"DELETED\", \"ARCHIVED\"] as const;\nexport type MetaEntityStatus = (typeof ENTITY_STATUSES)[number];\n\n/** Statuses a create op may request (Meta forbids launching straight to DELETED/ARCHIVED). */\nexport const STAGEABLE_CREATE_STATUSES = [\"ACTIVE\", \"PAUSED\"] as const;\n/**\n * Statuses a campaign, ad set or ad update op may set. ARCHIVED keeps the entity\n * readable in Ads Manager (and counts toward Meta's archived-object limit);\n * DELETED removes it for good and cannot be undone. The CLI stages DELETED only\n * through its `delete` command; `update --status` refuses it.\n */\nexport const UPDATE_STATUSES = [\"ACTIVE\", \"PAUSED\", \"ARCHIVED\", \"DELETED\"] as const;\n/**\n * Statuses a creative update may set. DELETED is how a creative is deleted —\n * `POST /{creative_id}` with `status: DELETED` (live on v25.0, 2026-10-14) —\n * and Meta refuses it for a creative an ad still uses.\n */\nexport const CREATIVE_UPDATE_STATUSES = [\"ACTIVE\", \"PAUSED\", \"ARCHIVED\", \"DELETED\"] as const;\n\n// --- Custom audiences ---\n\nexport const CUSTOM_AUDIENCE_SUBTYPES = [\"CUSTOM\", \"WEBSITE\", \"ENGAGEMENT\", \"LOOKALIKE\"] as const;\nexport type MetaCustomAudienceSubtype = (typeof CUSTOM_AUDIENCE_SUBTYPES)[number];\n\n/**\n * Where the rows of a customer-file audience came from. Meta publishes exactly\n * these three, and the field is a data-provenance declaration about personal\n * data — the one place in this file where a free string was the wrong type.\n */\nexport const CUSTOMER_FILE_SOURCES = [\n \"USER_PROVIDED_ONLY\",\n \"PARTNER_PROVIDED_ONLY\",\n \"BOTH_USER_AND_PARTNER_PROVIDED\",\n] as const;\nexport type MetaCustomerFileSource = (typeof CUSTOMER_FILE_SOURCES)[number];\n\n// --- Media ---\n\nexport const MEDIA_KINDS = [\"image\", \"video\"] as const;\nexport type MetaMediaKind = (typeof MEDIA_KINDS)[number];\n\n// --- Money ---\n\n// Minor-unit conversion for the wire lives in the backend's single source of\n// truth, `ads/meta/currency.ts` (Meta's own offset table: whole-unit and\n// hundredth currencies, an unlisted one refused). It is intentionally NOT duplicated here.\n\n/**\n * Indicative per-currency daily-budget floors (Meta enforces the authoritative\n * per-account `min_daily_budget` at stage time; these only catch obvious\n * mistakes offline). Amounts in major units.\n */\nexport const CURRENCY_MINIMUMS: Record<string, { dailyBudgetMin: number }> = {\n USD: { dailyBudgetMin: 1 },\n EUR: { dailyBudgetMin: 1 },\n GBP: { dailyBudgetMin: 1 },\n};\nexport const DEFAULT_CURRENCY_MINIMUM = { dailyBudgetMin: 1 };\n\n// --- Refs / ids ---\n\nexport const TEMP_REF_PREFIX = \"meta_temp_\";\nexport const TEMP_REF_REGEX = /^meta_temp_[A-Za-z0-9_-]{4,}$/;\n/** Meta node ids are bare numeric strings (the `act_` prefix is stripped for scoping). */\nexport const NUMERIC_ID_REGEX = /^\\d+$/;\n/** Ad-image hashes are hex; be lenient on length across Graph versions. */\nexport const IMAGE_HASH_REGEX = /^[A-Fa-f0-9]{16,}$/;\nexport const SIMULATED_ID_PREFIX = \"sim_meta_\";\n"],"mappings":"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AA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA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","names":[]}
@@ -0,0 +1,191 @@
1
+ import {
2
+ readRenderState,
3
+ recordSeen
4
+ } from "./chunk-JWBJFF2K.js";
5
+ import {
6
+ GLOBAL_PROMPT_FILE,
7
+ ideaBaseline,
8
+ isVideoBlueprint,
9
+ readIdeaAnchor,
10
+ recordedChanges
11
+ } from "./chunk-US3NQJ4L.js";
12
+ import {
13
+ loadCompositionMeta
14
+ } from "./chunk-WAMT3TUD.js";
15
+ import {
16
+ parseRefExpr
17
+ } from "./chunk-VR6BCP3U.js";
18
+ import {
19
+ resolveAdaptFormats
20
+ } from "./chunk-MCJ5I5LR.js";
21
+ import {
22
+ apiPost
23
+ } from "./chunk-AS46I4WH.js";
24
+
25
+ // src/commands/canvas/output-ratio.ts
26
+ import { readFile } from "fs/promises";
27
+ import path from "path";
28
+ function definitionFormats(markdown) {
29
+ const front = markdown.match(/^---\n([\s\S]*?)\n---/)?.[1];
30
+ if (!front) return [];
31
+ const clean = (s) => s.trim().replace(/^["']|["']$/g, "");
32
+ const flow = front.match(/^formats:\s*\[([^\]]*)\]/m);
33
+ if (flow) return (flow[1] ?? "").split(",").map(clean).filter(Boolean);
34
+ const block = front.match(/^formats:\s*\n((?:\s+-\s+.*\n?)+)/m);
35
+ if (!block) return [];
36
+ return (block[1] ?? "").split("\n").map((l) => l.replace(/^\s+-\s+/, "")).map(clean).filter(Boolean);
37
+ }
38
+ function reduce(width, height) {
39
+ const gcd = (a, b) => b === 0 ? a : gcd(b, a % b);
40
+ const d = gcd(width, height);
41
+ return `${width / d}:${height / d}`;
42
+ }
43
+ async function ratiosOf(nodes, id, seen) {
44
+ const node = nodes.get(id);
45
+ if (!node || seen.has(id)) return null;
46
+ seen.add(id);
47
+ const p = node.params ?? {};
48
+ switch (node.type) {
49
+ case "image_generate":
50
+ return typeof p.aspect_ratio === "string" ? [p.aspect_ratio] : null;
51
+ case "image_aspect_adapt":
52
+ return [...resolveAdaptFormats(p)];
53
+ case "hyperframe_snapshot": {
54
+ if (typeof p.composition !== "string") return null;
55
+ const meta = await loadCompositionMeta(p.composition).catch(() => null);
56
+ return meta ? [reduce(meta.width, meta.height)] : null;
57
+ }
58
+ case "collect": {
59
+ const images = node.inputs?.images;
60
+ if (!Array.isArray(images)) return null;
61
+ const out = [];
62
+ for (const entry of images) {
63
+ const ref = typeof entry === "string" ? parseRefExpr(entry) : null;
64
+ if (!ref || ref.kind !== "ref") return null;
65
+ const upstream = await ratiosOf(nodes, ref.nodeId, seen);
66
+ if (!upstream) return null;
67
+ out.push(ref.index !== void 0 && upstream.length > 1 ? upstream[ref.index] ?? "" : upstream[0] ?? "");
68
+ }
69
+ return out.filter(Boolean);
70
+ }
71
+ default:
72
+ return null;
73
+ }
74
+ }
75
+ async function producedRatios(canvas) {
76
+ const c = canvas;
77
+ if (!Array.isArray(c?.nodes) || typeof c?.output?.node !== "string") return null;
78
+ const nodes = new Map(c.nodes.flatMap((n) => typeof n.id === "string" ? [[n.id, n]] : []));
79
+ return ratiosOf(nodes, c.output.node, /* @__PURE__ */ new Set());
80
+ }
81
+ function value(ratio) {
82
+ const [w, h] = ratio.split(":").map(Number);
83
+ return w && h ? w / h : null;
84
+ }
85
+ function outputRatioWarnings(declared, produced) {
86
+ if (!produced || produced.length === 0) return [];
87
+ const shapes = produced.flatMap((r) => value(r) ?? []);
88
+ return declared.flatMap((format) => {
89
+ const want = value(format);
90
+ if (want === null || shapes.some((s) => Math.abs(s / want - 1) <= 0.02)) return [];
91
+ return [
92
+ {
93
+ path: "output",
94
+ code: "OUTPUT_RATIO_MISMATCH",
95
+ severity: "warning",
96
+ message: `_definition.md declares ${format}, but this canvas delivers ${produced.join(", ")}. A ${format} placement would get the wrong shape: re-scaffold with that format, or fix the formats the creative declares.`
97
+ }
98
+ ];
99
+ });
100
+ }
101
+ async function outputRatioWarningsFor(canvas, canvasPath) {
102
+ const definition = await readFile(path.join(path.dirname(canvasPath), "_definition.md"), "utf8").catch(() => null);
103
+ if (!definition) return [];
104
+ return outputRatioWarnings(definitionFormats(definition), await producedRatios(canvas));
105
+ }
106
+
107
+ // src/commands/canvas/shown-version.ts
108
+ import { z } from "zod";
109
+ var ShownResponse = z.object({
110
+ data: z.object({
111
+ runId: z.string(),
112
+ sourceSha: z.string().optional(),
113
+ createdAt: z.number(),
114
+ canvasSnapshotUrl: z.string().optional()
115
+ })
116
+ });
117
+ var SnapshotEntry = z.object({ path: z.string(), url: z.string() });
118
+ var SnapshotFiles = z.object({ canvas: SnapshotEntry.optional(), files: z.array(SnapshotEntry) });
119
+ var HISTORY = {
120
+ shown: async (slug) => ShownResponse.parse(await apiPost("/api/creatives/run", { slug })).data,
121
+ file: async (url) => {
122
+ const res = await fetch(url);
123
+ return res.ok ? res.json() : null;
124
+ },
125
+ text: async (url) => {
126
+ const res = await fetch(url);
127
+ return res.ok ? res.text() : null;
128
+ }
129
+ };
130
+ async function shownVersion(canvasRoot, slug, sources = HISTORY) {
131
+ const here = await readRenderState(canvasRoot, slug);
132
+ if (here.rendered) return here;
133
+ const run = await sources.shown(slug).catch(() => null);
134
+ if (!run) return here;
135
+ const drawn = run.canvasSnapshotUrl ? await drawnFiles(run.canvasSnapshotUrl, sources) : {};
136
+ return {
137
+ ...here,
138
+ rendered: { sourceSha: run.sourceSha ?? "", runId: run.runId, at: run.createdAt },
139
+ ...drawn.prompt !== void 0 ? { prompt: drawn.prompt } : {},
140
+ ...drawn.definition !== void 0 ? { definition: drawn.definition } : {},
141
+ ...drawn.video ? { video: drawn.video } : {}
142
+ };
143
+ }
144
+ async function drawnFiles(manifestUrl, sources) {
145
+ const manifest = SnapshotFiles.safeParse(await sources.file(manifestUrl).catch(() => null));
146
+ const files = manifest.success ? manifest.data.files : [];
147
+ const urlOf = (file) => files.find((f) => f.path === file)?.url;
148
+ const promptUrl = urlOf(GLOBAL_PROMPT_FILE);
149
+ const definitionUrl = urlOf("_definition.md");
150
+ const read = (url) => url ? sources.file(url).catch(() => null) : Promise.resolve(null);
151
+ const sceneEntries = files.filter((f) => /^scenes\/[^/]+\.json$/.test(f.path)).sort((a, b) => a.path.localeCompare(b.path));
152
+ const [prompt, definition, scenes, canvas, adSpec] = await Promise.all([
153
+ read(promptUrl),
154
+ definitionUrl ? sources.text(definitionUrl).catch(() => null) : null,
155
+ Promise.all(sceneEntries.map((f) => read(f.url))),
156
+ read(manifest.success ? manifest.data.canvas?.url : void 0),
157
+ read(urlOf("ad.spec.json"))
158
+ ]);
159
+ return {
160
+ ...prompt !== null && prompt !== void 0 ? { prompt } : {},
161
+ ...typeof definition === "string" ? { definition } : {},
162
+ video: { scenes: scenes.filter((s) => s !== null), canvas, adSpec }
163
+ };
164
+ }
165
+
166
+ // src/commands/canvas/shown-anchor.ts
167
+ async function shownBaseline(opts) {
168
+ const state = await readRenderState(opts.canvasRoot, opts.slug);
169
+ const known = opts.turnId !== void 0 && state.seen?.turnId === opts.turnId;
170
+ let fallback;
171
+ if (!known && !state.anchor) {
172
+ const shown = opts.shown ?? await shownVersion(opts.canvasRoot, opts.slug, opts.sources);
173
+ if (shown.rendered && shown.prompt !== void 0) {
174
+ const video = typeof shown.prompt === "object" && shown.prompt !== null && isVideoBlueprint(shown.prompt);
175
+ const recorded = shown.video;
176
+ const unrecorded = video && (!recorded || recorded.canvas === null || recorded.canvas === void 0);
177
+ const anchor = unrecorded ? void 0 : (await readIdeaAnchor(opts.creativeDir, { spec: shown.prompt, ...video && recorded ? { recorded } : {} }))?.anchor;
178
+ if (anchor) fallback = { ...anchor, changes: shown.definition ? recordedChanges(shown.definition) : [] };
179
+ }
180
+ }
181
+ const { baseline, seen } = ideaBaseline(state, opts.turnId, fallback);
182
+ if (seen && opts.record) await recordSeen(opts.canvasRoot, opts.slug, seen);
183
+ return baseline ? { baseline } : {};
184
+ }
185
+
186
+ export {
187
+ outputRatioWarningsFor,
188
+ shownVersion,
189
+ shownBaseline
190
+ };
191
+ //# sourceMappingURL=chunk-GZWBHJ4Y.js.map
@@ -0,0 +1,225 @@
1
+ import {
2
+ BRAND_DIR,
3
+ inkLuma,
4
+ logoArtwork
5
+ } from "./chunk-VR6BCP3U.js";
6
+ import {
7
+ fetchExternalBytes
8
+ } from "./chunk-2Q324LIK.js";
9
+ import {
10
+ apiGet,
11
+ apiPost
12
+ } from "./chunk-AS46I4WH.js";
13
+
14
+ // src/commands/canvas/clientLogo.ts
15
+ import { mkdir, readFile, writeFile } from "fs/promises";
16
+ import * as cheerio from "cheerio";
17
+ import path from "path";
18
+ function decideClientLogo(domain, lookup) {
19
+ if (!domain) return { use: false, reason: "no_domain" };
20
+ const verdict = lookup?.brandMatch?.verdict;
21
+ if (verdict === "mismatch") {
22
+ return { use: false, reason: "mismatch", ...lookup?.brandMatch?.name ? { wrongBrand: lookup.brandMatch.name } : {} };
23
+ }
24
+ if (verdict !== "confirmed") return { use: false, reason: "unverified" };
25
+ const url = lookup?.hits?.map((hit) => hit.imageUrl ?? hit.sourceUrl).find((candidate) => Boolean(candidate));
26
+ return url ? { use: true, url } : { use: false, reason: "no_hits" };
27
+ }
28
+ function clientLogoMissNote(decision, domain) {
29
+ switch (decision.reason) {
30
+ case "no_domain":
31
+ return "Baker has no website on record for this company, so their mark could not be looked up.";
32
+ case "mismatch":
33
+ return `The mark found for \`${domain}\` belongs to ${decision.wrongBrand ?? "a different company"}, not to this client, so it was not used.`;
34
+ default:
35
+ return `No brand mark could be confirmed for \`${domain}\`, so nothing was placed.`;
36
+ }
37
+ }
38
+ function hostOf(site) {
39
+ try {
40
+ return new URL(/^https?:\/\//i.test(site) ? site : `https://${site}`).hostname.replace(/^www\./i, "").toLowerCase();
41
+ } catch {
42
+ return null;
43
+ }
44
+ }
45
+ var NOT_THE_LOGO = /favicon|apple-touch|sprite|(?:^|[/_.-])icons?(?:[/_.-]|$)|client|customer|partner|testimonial|trust|badge|award/i;
46
+ function sayings(hit, url) {
47
+ const meta = hit.providerMeta ?? {};
48
+ const given = ["alt", "class", "id", "title"].map((key) => typeof meta[key] === "string" ? meta[key] : "");
49
+ return [new URL(url).pathname, hit.name ?? "", hit.description ?? "", ...given].join(" ");
50
+ }
51
+ function logoFromExtract(hits, domain) {
52
+ const own = hostOf(domain);
53
+ if (!own) return null;
54
+ const candidates = hits.flatMap((hit) => {
55
+ const url = hit.url ?? hit.imageUrl ?? hit.sourceUrl;
56
+ const host = url ? hostOf(url) : null;
57
+ if (!url || !host || host !== own && !host.endsWith(`.${own}`)) return [];
58
+ const said = sayings(hit, url);
59
+ if (!/logo/i.test(said) || NOT_THE_LOGO.test(said)) return [];
60
+ return [{ url, score: (/\.svg(?:\?|$)/i.test(url) ? 2 : 0) + (/logo/i.test(new URL(url).pathname) ? 1 : 0) }];
61
+ });
62
+ candidates.sort((a, b) => b.score - a.score || a.url.length - b.url.length);
63
+ return candidates[0]?.url ?? null;
64
+ }
65
+ var MAX_INLINE_SVG = 3e5;
66
+ var BRAND_PLACES = "header, nav, [role=banner]";
67
+ var IMAGE_ADDRESS = ["src", "data-src", "data-lazy-src", "data-original"];
68
+ function logoFromPage(html, pageUrl, domain) {
69
+ const own = hostOf(domain);
70
+ if (!own) return null;
71
+ const $ = cheerio.load(html);
72
+ for (const el of $(`${BRAND_PLACES}`).find("img, svg").toArray()) {
73
+ const node = $(el);
74
+ const said = [node, node.closest("a")].flatMap((n) => ["class", "id", "alt", "aria-label", "title"].map((k) => n.attr(k) ?? "")).join(" ");
75
+ if (!/logo/i.test(said) || NOT_THE_LOGO.test(said)) continue;
76
+ if (el.tagName === "svg") {
77
+ const svg = standaloneSvg($, node);
78
+ if (svg) return { kind: "svg", svg };
79
+ continue;
80
+ }
81
+ const url = IMAGE_ADDRESS.map((k) => node.attr(k)?.trim() ?? "").filter((a) => a !== "" && !a.startsWith("data:")).map((a) => absolute(a, pageUrl)).find((a) => a !== null);
82
+ const host = url ? hostOf(url) : null;
83
+ if (url && host && (host === own || host.endsWith(`.${own}`))) return { kind: "url", url };
84
+ }
85
+ return null;
86
+ }
87
+ function absolute(address, base) {
88
+ try {
89
+ const url = new URL(address, base);
90
+ return /^https?:$/.test(url.protocol) ? url.href : null;
91
+ } catch {
92
+ return null;
93
+ }
94
+ }
95
+ function standaloneSvg($, node) {
96
+ const draws = node.find("path, circle, rect, polygon, polyline, ellipse, line, text").length > 0;
97
+ if (!draws || node.find("use").length > 0) return null;
98
+ const copy = node.clone();
99
+ if (!copy.attr("xmlns")) copy.attr("xmlns", "http://www.w3.org/2000/svg");
100
+ const svg = $.html(copy);
101
+ return svg.length <= MAX_INLINE_SVG ? svg : null;
102
+ }
103
+ function logoTone(inkLuma2) {
104
+ return inkLuma2 !== null && inkLuma2 > 170 ? "dark" : "light";
105
+ }
106
+ function withLogoRegistered(tokensJson, logo) {
107
+ if (tokensJson === null) return null;
108
+ let tokens;
109
+ try {
110
+ tokens = JSON.parse(tokensJson);
111
+ } catch {
112
+ return null;
113
+ }
114
+ if (!tokens || typeof tokens !== "object" || Array.isArray(tokens)) return null;
115
+ const doc = tokens;
116
+ const logos = Array.isArray(doc.logos) ? doc.logos : [];
117
+ if (logos.some((l) => l?.path === logo.path)) return null;
118
+ const next = { ...doc, logos: [...logos, { variant: "logo", background: logo.background, path: logo.path }] };
119
+ return `${JSON.stringify(next, null, 2)}
120
+ `;
121
+ }
122
+ function logoMissingHint(company, domain) {
123
+ return `No logo on file for ${company}: add it on the Brand page${domain ? ` (we could not find it on ${domain})` : ""}.`;
124
+ }
125
+ function extensionOf(url) {
126
+ return /\.(svg|png|jpg|jpeg|webp)(?:\?|$)/i.exec(url)?.[1]?.toLowerCase() ?? "svg";
127
+ }
128
+ var MAX_LOGO_BYTES = 3e6;
129
+ async function downloaded(url) {
130
+ try {
131
+ const { buffer } = await fetchExternalBytes(url, { maxBytes: MAX_LOGO_BYTES });
132
+ return buffer.byteLength > 0 ? { bytes: buffer, extension: extensionOf(url) } : null;
133
+ } catch {
134
+ return null;
135
+ }
136
+ }
137
+ async function logoOnSite(domain) {
138
+ const host = hostOf(domain);
139
+ if (!host) return null;
140
+ const page = `https://${host}/`;
141
+ try {
142
+ const { buffer } = await fetchExternalBytes(page, { maxBytes: MAX_LOGO_BYTES });
143
+ const found = logoFromPage(buffer.toString("utf8"), page, domain);
144
+ if (found?.kind === "svg") return { bytes: Buffer.from(found.svg, "utf8"), extension: "svg" };
145
+ const file = found ? await downloaded(found.url) : null;
146
+ if (file) return file;
147
+ } catch {
148
+ }
149
+ try {
150
+ const listed = await apiPost("/api/images/extract", { url: page, limit: 50 });
151
+ const url = logoFromExtract(listed.hits ?? [], domain);
152
+ return url ? await downloaded(url) : null;
153
+ } catch {
154
+ return null;
155
+ }
156
+ }
157
+ async function logoSource(domain) {
158
+ let lookup = null;
159
+ if (domain) {
160
+ try {
161
+ lookup = await apiPost("/api/images/logo", { domain, variant: "logo", autoIngest: 1 });
162
+ } catch {
163
+ lookup = null;
164
+ }
165
+ }
166
+ const decision = decideClientLogo(domain, lookup);
167
+ if (decision.use) {
168
+ const file = await downloaded(decision.url);
169
+ if (file) return file;
170
+ }
171
+ if (domain && !(decision.use === false && decision.reason === "mismatch")) {
172
+ const file = await logoOnSite(domain);
173
+ if (file) return file;
174
+ }
175
+ return { note: clientLogoMissNote(decision.use ? { use: false, reason: "no_hits" } : decision, domain) };
176
+ }
177
+ async function inkOf(bytes) {
178
+ try {
179
+ return inkLuma((await logoArtwork(bytes)).data);
180
+ } catch {
181
+ return null;
182
+ }
183
+ }
184
+ async function fetchClientLogo(root = ".") {
185
+ let domain;
186
+ let company;
187
+ try {
188
+ const found = await apiGet("/api/company");
189
+ domain = found.data.domain?.trim() || void 0;
190
+ company = found.data.name;
191
+ } catch {
192
+ domain = void 0;
193
+ }
194
+ const named = { ...domain ? { domain } : {}, ...company ? { company } : {} };
195
+ const source = await logoSource(domain);
196
+ if ("note" in source) return { ok: false, reason: source.note, ...named };
197
+ try {
198
+ const tone = logoTone(await inkOf(source.bytes));
199
+ const dir = path.join(root, BRAND_DIR, "logos");
200
+ await mkdir(dir, { recursive: true });
201
+ const file = path.join(dir, `logo-${tone}.${source.extension}`);
202
+ await writeFile(file, source.bytes);
203
+ await registerLogo(root, path.join(BRAND_DIR, "logos", path.basename(file)), tone);
204
+ return { ok: true, path: file, ...named };
205
+ } catch {
206
+ return { ok: false, reason: clientLogoMissNote({ use: false, reason: "no_hits" }, domain), ...named };
207
+ }
208
+ }
209
+ async function registerLogo(root, relative, background) {
210
+ const tokensPath = path.join(root, BRAND_DIR, "tokens.json");
211
+ const next = withLogoRegistered(await readFile(tokensPath, "utf8").catch(() => null), { path: relative, background });
212
+ if (next !== null) await writeFile(tokensPath, next, "utf8").catch(() => void 0);
213
+ }
214
+ async function withClientLogo(root, kit, reread, fetch = fetchClientLogo) {
215
+ if (kit.logo) return { kit };
216
+ const fetched = await fetch(root).catch(() => null);
217
+ if (fetched?.ok) return { kit: await reread() };
218
+ return { kit, hint: logoMissingHint(fetched?.company ?? "your company", fetched?.domain) };
219
+ }
220
+
221
+ export {
222
+ fetchClientLogo,
223
+ withClientLogo
224
+ };
225
+ //# sourceMappingURL=chunk-HIAXIRPX.js.map