@koda-sl/baker-cli 0.535.0 → 0.537.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 (1513) hide show
  1. package/README.md +20 -6
  2. package/dist/account-3IA3PYDJ.js +139 -0
  3. package/dist/account-LO57QU6O.js +82 -0
  4. package/dist/account-V5XHQY2D.js +82 -0
  5. package/dist/account-assets-BVEEUGDA.js +290 -0
  6. package/dist/account-level-J37UFQY6.js +611 -0
  7. package/dist/account-reads-CPL3HLZ5.js +219 -0
  8. package/dist/account-users-RF3VN6VL.js +64 -0
  9. package/dist/account-writes-MFKCVMMV.js +68 -0
  10. package/dist/accounts-DTHZLL3R.js +701 -0
  11. package/dist/accounts-FX6V37GX.js +115 -0
  12. package/dist/accounts-GXJPLMHU.js +114 -0
  13. package/dist/accounts-HNZWMTRM.js +76 -0
  14. package/dist/accounts-SJ5MKHKE.js +80 -0
  15. package/dist/actions-LRJRQXC3.js +55 -0
  16. package/dist/active-entities-YIOKHGWY.js +103 -0
  17. package/dist/activecampaign-DMFUWRD6.js +938 -0
  18. package/dist/activities-FXYVPCRJ.js +75 -0
  19. package/dist/ad-group-writes-WFYPFO7R.js +172 -0
  20. package/dist/ad-groups-IPY3TJUX.js +70 -0
  21. package/dist/ad-writes-LDNNN72V.js +176 -0
  22. package/dist/add-3EEREVFI.js +80 -0
  23. package/dist/add-FGB7KM6P.js +148 -0
  24. package/dist/add-FKINXOC2.js +97 -0
  25. package/dist/add-HSF5S544.js +107 -0
  26. package/dist/add-IOIY44HY.js +305 -0
  27. package/dist/add-MTYT3Q4T.js +81 -0
  28. package/dist/add-accounts-WCDQRXRO.js +91 -0
  29. package/dist/ads-4O4TPDAU.js +120 -0
  30. package/dist/ads-CDA6DGGZ.js +48 -0
  31. package/dist/ads-NTDJRTEG.js +79 -0
  32. package/dist/ads-YRV2YERG.js +128 -0
  33. package/dist/adsets-OVFVN5NX.js +182 -0
  34. package/dist/advertisers-663V2F2T.js +125 -0
  35. package/dist/advertisers-T4AGXFN4.js +123 -0
  36. package/dist/analytics-MDIE5CPL.js +2437 -0
  37. package/dist/analytics-TLEWXYXV.js +447 -0
  38. package/dist/animate-CQON6SZE.js +480 -0
  39. package/dist/approved-RFZLJZJH.js +73 -0
  40. package/dist/asset-writes-ZMSJSFTD.js +50 -0
  41. package/dist/assign-N5PNZWUW.js +80 -0
  42. package/dist/audience-size-GMANWKU5.js +76 -0
  43. package/dist/audience-writes-BUWFC5W4.js +327 -0
  44. package/dist/audiences-GD2EPPJJ.js +85 -0
  45. package/dist/audiences-KRI7E7FY.js +280 -0
  46. package/dist/audiences-O464BZ6J.js +86 -0
  47. package/dist/audiences-O464BZ6J.js.map +1 -0
  48. package/dist/audit-DQYC4R74.js +88 -0
  49. package/dist/audit-EGLLMYFY.js +154 -0
  50. package/dist/autocomplete-6DUDQLRT.js +114 -0
  51. package/dist/avatars-UZN75NVZ.js +38 -0
  52. package/dist/bid-pricing-SQERHWYU.js +103 -0
  53. package/dist/brand-XY7EVNPW.js +22 -0
  54. package/dist/brief-NMACLLA2.js +543 -0
  55. package/dist/businesses-IPSDIWUU.js +54 -0
  56. package/dist/businesses-IPSDIWUU.js.map +1 -0
  57. package/dist/campaign-groups-VWSLBQKJ.js +99 -0
  58. package/dist/campaign-writes-DAL4EFIV.js +176 -0
  59. package/dist/campaign-writes-FBIQOLRS.js +168 -0
  60. package/dist/campaigns-64JH3U6Z.js +113 -0
  61. package/dist/campaigns-KYI6WAXT.js +111 -0
  62. package/dist/campaigns-N75G2BDU.js +130 -0
  63. package/dist/campaigns-TKQDXU5H.js +78 -0
  64. package/dist/canvas-DTJM2LTE.js +46 -0
  65. package/dist/capabilities-O5UVQ4KK.js +147 -0
  66. package/dist/cards-TTQTPLCO.js +85 -0
  67. package/dist/catalog-6CXOEKBI.js +66 -0
  68. package/dist/catalogs-ETVY5OZ5.js +130 -0
  69. package/dist/catalogs-LI7NG57R.js +781 -0
  70. package/dist/changes-MHNRAC2E.js +135 -0
  71. package/dist/chatgpt-GINMQJBI.js +47 -0
  72. package/dist/chats-NUO3CA4N.js +384 -0
  73. package/dist/chats-NUO3CA4N.js.map +1 -0
  74. package/dist/check-RRHOCY2U.js +107 -0
  75. package/dist/chunk-2AJ5UNOF.js +131 -0
  76. package/dist/chunk-2Y3VZILY.js +98 -0
  77. package/dist/chunk-35FLLWSQ.js +100 -0
  78. package/dist/chunk-3BOPIUO6.js +163 -0
  79. package/dist/chunk-3LH5ANM4.js +7712 -0
  80. package/dist/chunk-3LH5ANM4.js.map +1 -0
  81. package/dist/chunk-3PG7O3ZW.js +52 -0
  82. package/dist/chunk-3RWSYI6N.js +63 -0
  83. package/dist/chunk-4GQJOHJY.js +69 -0
  84. package/dist/chunk-4OY6SHHM.js +35 -0
  85. package/dist/chunk-4PWC4KAK.js +843 -0
  86. package/dist/chunk-4QLVMG63.js +191 -0
  87. package/dist/chunk-5MMAYAWR.js +103 -0
  88. package/dist/chunk-5VVXF3OS.js +676 -0
  89. package/dist/chunk-5Y3EEI52.js +224 -0
  90. package/dist/chunk-6EMVPPSQ.js +89 -0
  91. package/dist/chunk-6KWPAPFL.js +714 -0
  92. package/dist/chunk-77MDZIHK.js +23 -0
  93. package/dist/chunk-7ZYXRMSM.js +188 -0
  94. package/dist/chunk-A5PQYKVO.js +344 -0
  95. package/dist/chunk-AA3WWPX2.js +392 -0
  96. package/dist/chunk-AL6373J7.js +930 -0
  97. package/dist/chunk-AMHVCMBW.js +3510 -0
  98. package/dist/chunk-AXSSATJW.js +1744 -0
  99. package/dist/chunk-B52GKPH2.js +106 -0
  100. package/dist/chunk-BBGKZJXP.js +69 -0
  101. package/dist/chunk-BQYSBQZ3.js +91 -0
  102. package/dist/chunk-BYZQ43VI.js +592 -0
  103. package/dist/chunk-C35UMKYG.js +229 -0
  104. package/dist/chunk-C54JXXV3.js +24026 -0
  105. package/dist/chunk-C753PJBU.js +91 -0
  106. package/dist/chunk-CB7GZQVN.js +249 -0
  107. package/dist/chunk-CM2LECNX.js +136 -0
  108. package/dist/chunk-CTBDVZ5E.js +274 -0
  109. package/dist/chunk-CV35AJYT.js +57 -0
  110. package/dist/chunk-D2F73AUY.js +64 -0
  111. package/dist/chunk-DNRXEP4A.js +296 -0
  112. package/dist/chunk-DR4TIYTE.js +45 -0
  113. package/dist/chunk-EAHBTBVR.js +324 -0
  114. package/dist/chunk-EJBHZ7AQ.js +387 -0
  115. package/dist/chunk-EKQCHHZW.js +319 -0
  116. package/dist/chunk-ELAYD7O3.js +215 -0
  117. package/dist/chunk-FOD5VSHH.js +51 -0
  118. package/dist/chunk-FRUOWEWZ.js +97 -0
  119. package/dist/chunk-FSLSISPI.js +46 -0
  120. package/dist/chunk-G523URK2.js +438 -0
  121. package/dist/chunk-G6KE737R.js +377 -0
  122. package/dist/chunk-GNZM7SWV.js +156 -0
  123. package/dist/chunk-GRXBD43G.js +169 -0
  124. package/dist/chunk-GT76FWES.js +1919 -0
  125. package/dist/chunk-GTIQUOYC.js +148 -0
  126. package/dist/chunk-GTV62WIS.js +479 -0
  127. package/dist/chunk-GY6N42PE.js +142 -0
  128. package/dist/chunk-H27R5IVQ.js +64 -0
  129. package/dist/chunk-HHQYP6RM.js +783 -0
  130. package/dist/chunk-HN7GK5UX.js +910 -0
  131. package/dist/chunk-I6W6FAUZ.js +547 -0
  132. package/dist/chunk-IJ5DWALA.js +225 -0
  133. package/dist/chunk-ITKTTDC2.js +225 -0
  134. package/dist/chunk-JD4DSJPT.js +76 -0
  135. package/dist/chunk-JQSN5K5B.js +94 -0
  136. package/dist/chunk-JUFABKU4.js +73 -0
  137. package/dist/chunk-K5CEP7W4.js +66 -0
  138. package/dist/chunk-KAJXOGQ2.js +58 -0
  139. package/dist/chunk-KDDHMKTU.js +217 -0
  140. package/dist/chunk-KG7WIVNG.js +111 -0
  141. package/dist/chunk-KJOEW2PI.js +297 -0
  142. package/dist/chunk-KVBNUGQ6.js +197 -0
  143. package/dist/chunk-LBIF6FJY.js +476 -0
  144. package/dist/chunk-LXV2U4MI.js +25 -0
  145. package/dist/chunk-M7FP7DKN.js +39 -0
  146. package/dist/chunk-MFAFGQ7Z.js +200 -0
  147. package/dist/chunk-MLMQR24H.js +1646 -0
  148. package/dist/chunk-MM6CCIL7.js +166 -0
  149. package/dist/chunk-MWJNFGV6.js +42 -0
  150. package/dist/chunk-N2MZLW6O.js +170 -0
  151. package/dist/chunk-NGXZQESA.js +5471 -0
  152. package/dist/chunk-NJIRVF2B.js +8954 -0
  153. package/dist/chunk-NNG4QCKJ.js +207 -0
  154. package/dist/chunk-NPF4KTRK.js +191 -0
  155. package/dist/chunk-NQ5O2NCJ.js +5368 -0
  156. package/dist/chunk-NRMJWNX3.js +97 -0
  157. package/dist/chunk-OTGHCGLW.js +125 -0
  158. package/dist/chunk-OU4TDC2P.js +275 -0
  159. package/dist/chunk-OYYAR5TD.js +333 -0
  160. package/dist/chunk-P7WISPGE.js +61 -0
  161. package/dist/chunk-PEGRQV66.js +106 -0
  162. package/dist/chunk-PQN4PIC6.js +76 -0
  163. package/dist/chunk-R2VP7FK4.js +831 -0
  164. package/dist/chunk-RD63FPG6.js +150 -0
  165. package/dist/chunk-RFR7ZN3P.js +604 -0
  166. package/dist/chunk-RGSSKOTZ.js +56 -0
  167. package/dist/chunk-RW32BYY3.js +1518 -0
  168. package/dist/chunk-S4JAHRIW.js +139 -0
  169. package/dist/chunk-S6KZ4GDL.js +207 -0
  170. package/dist/chunk-SBSFCKOC.js +149 -0
  171. package/dist/chunk-SMDJW5W4.js +19 -0
  172. package/dist/chunk-TFN7L5H3.js +66 -0
  173. package/dist/chunk-THV7SMY6.js +203 -0
  174. package/dist/chunk-TI4UL56R.js +4266 -0
  175. package/dist/chunk-TI4UL56R.js.map +1 -0
  176. package/dist/chunk-TNQJDM2P.js +1902 -0
  177. package/dist/chunk-TQDZQT6U.js +167 -0
  178. package/dist/chunk-TRXGJZDL.js +2503 -0
  179. package/dist/chunk-TRXGJZDL.js.map +1 -0
  180. package/dist/chunk-U4CYQMG5.js +138 -0
  181. package/dist/chunk-UC46M2KW.js +494 -0
  182. package/dist/chunk-UIPSSTMA.js +228 -0
  183. package/dist/chunk-UMQCYEAL.js +98 -0
  184. package/dist/chunk-UT4OM34H.js +46 -0
  185. package/dist/chunk-VMUJ6JHR.js +2209 -0
  186. package/dist/chunk-VPHHCOYS.js +544 -0
  187. package/dist/chunk-VWKFQ4ZY.js +285 -0
  188. package/dist/chunk-W3PJ7V4W.js +84 -0
  189. package/dist/chunk-WAE4G3Q6.js +846 -0
  190. package/dist/chunk-WI3TCYEA.js +74 -0
  191. package/dist/chunk-WQQ7SH3M.js +84 -0
  192. package/dist/chunk-WTODFKZR.js +219 -0
  193. package/dist/chunk-WTYKTPZP.js +455 -0
  194. package/dist/chunk-XFMFZAWL.js +429 -0
  195. package/dist/chunk-YFIWCMVC.js +638 -0
  196. package/dist/chunk-Z4BU2JVK.js +287 -0
  197. package/dist/chunk-ZI7CLQB5.js +26 -0
  198. package/dist/chunk-ZPF253G5.js +75 -0
  199. package/dist/claim-ZKKC5472.js +200 -0
  200. package/dist/cli.js +307 -46
  201. package/dist/cli.js.map +1 -1
  202. package/dist/client-SZ4N5NCP.js +19 -0
  203. package/dist/code-RZXUOVH3.js +76 -0
  204. package/dist/companies-CJFQ63MC.js +198 -0
  205. package/dist/company-7K4EDRIN.js +308 -0
  206. package/dist/complete-ODOQLGSO.js +84 -0
  207. package/dist/config-7RX352G2.js +88 -0
  208. package/dist/connect-APAK3WAY.js +45 -0
  209. package/dist/content-BOERUNX4.js +85 -0
  210. package/dist/conversation-B6V3VCT5.js +96 -0
  211. package/dist/conversion-report-JNWBTLA5.js +127 -0
  212. package/dist/conversion-upload-command-6OKMSO2T.js +439 -0
  213. package/dist/conversion-writes-2VOWP4RD.js +122 -0
  214. package/dist/conversions-D32UTEPH.js +140 -0
  215. package/dist/conversions-JGIBYLK5.js +78 -0
  216. package/dist/copy-writes-PVWZEU4S.js +170 -0
  217. package/dist/countries-Z4IQIMWQ.js +82 -0
  218. package/dist/create-ALMXIVHA.js +239 -0
  219. package/dist/create-EUQYK2SH.js +135 -0
  220. package/dist/create-TOCR7EFZ.js +62 -0
  221. package/dist/create-VAGPIZTU.js +210 -0
  222. package/dist/creatives-62PV7BIF.js +223 -0
  223. package/dist/creatives-HRA4X22I.js +89 -0
  224. package/dist/creatives-HRA4X22I.js.map +1 -0
  225. package/dist/creatives-HUDKBUDS.js +58 -0
  226. package/dist/credentials-WCD4F225.js +290 -0
  227. package/dist/critique-KJXHSKLT.js +1451 -0
  228. package/dist/critique-OO6SORTA.js +232 -0
  229. package/dist/crm-5CYCCV34.js +323 -0
  230. package/dist/crm-YVRIT2RL.js +227 -0
  231. package/dist/crop-JRVHX3PX.js +113 -0
  232. package/dist/currency-SH4DDE3X.js +88 -0
  233. package/dist/custom-conversions-OVUDN3HH.js +128 -0
  234. package/dist/custom-conversions-OVUDN3HH.js.map +1 -0
  235. package/dist/customers-FSOXPMOU.js +59 -0
  236. package/dist/decide-MPNAZFAK.js +199 -0
  237. package/dist/delete-EEU6WJ6M.js +67 -0
  238. package/dist/delete-FWPYWUNU.js +85 -0
  239. package/dist/delete-H7IWZGUZ.js +69 -0
  240. package/dist/delete-JPSIBQXR.js +71 -0
  241. package/dist/delete-QXZFJNUS.js +57 -0
  242. package/dist/delete-RLLRUSGR.js +69 -0
  243. package/dist/demographics-RM5PA54R.js +141 -0
  244. package/dist/describe-OUYPLJJE.js +97 -0
  245. package/dist/describe-XQGFIM2Z.js +97 -0
  246. package/dist/dimensions-MMVCXOFJ.js +101 -0
  247. package/dist/discard-6XOYXNZ6.js +69 -0
  248. package/dist/discover-VEHKBNCY.js +172 -0
  249. package/dist/discover-Z6NS3BP6.js +93 -0
  250. package/dist/domain-X7MT3XUG.js +101 -0
  251. package/dist/download-3JW2NTQZ.js +299 -0
  252. package/dist/download-YQYR5GUP.js +172 -0
  253. package/dist/draft-DSWC37IW.js +103 -0
  254. package/dist/draft-DUAFRL2G.js +283 -0
  255. package/dist/draft-FXMGEY3E.js +220 -0
  256. package/dist/draft-KWXV5YOG.js +240 -0
  257. package/dist/draft-UMNPM5KA.js +100 -0
  258. package/dist/draft-V7VGPJK4.js +396 -0
  259. package/dist/draft-V7VGPJK4.js.map +1 -0
  260. package/dist/draft-XWHU5C5Z.js +335 -0
  261. package/dist/draft-YXGASP7M.js +310 -0
  262. package/dist/engine/index.js +14 -14
  263. package/dist/env-O2JJK34F.js +53 -0
  264. package/dist/experiment-2TTMKPVC.js +1397 -0
  265. package/dist/experiments-2XOC77Y7.js +236 -0
  266. package/dist/export-LRPJXAFA.js +168 -0
  267. package/dist/extract-7IAAZ6RS.js +121 -0
  268. package/dist/extract-7IAAZ6RS.js.map +1 -0
  269. package/dist/facets-7Q36JF2D.js +117 -0
  270. package/dist/favorites-UXNAI5XW.js +178 -0
  271. package/dist/feed-OTUTIGJ6.js +177 -0
  272. package/dist/feedback-WPV2RKJS.js +115 -0
  273. package/dist/feedback-record-UEWS4FZJ.js +269 -0
  274. package/dist/fetch-AARAG6UL.js +179 -0
  275. package/dist/fetch-AG7JJ4BI.js +139 -0
  276. package/dist/find-JH5OMTGJ.js +143 -0
  277. package/dist/fit-T4ALNNXL.js +65 -0
  278. package/dist/flows-PYPA2FM3.js +250 -0
  279. package/dist/follow-WHLTIJPM.js +94 -0
  280. package/dist/follow-competitors-DO7RVQXT.js +112 -0
  281. package/dist/following-ZL34FZ32.js +113 -0
  282. package/dist/fonts-H2GG2JXA.js +39 -0
  283. package/dist/forecast-LMSPNY6X.js +121 -0
  284. package/dist/forecast-UYBYSH3Y.js +169 -0
  285. package/dist/funding-55XBHYY6.js +85 -0
  286. package/dist/funnel-KIYPFPIY.js +397 -0
  287. package/dist/ga4-WIOBF5HW.js +55 -0
  288. package/dist/generate-QG7GX6WO.js +263 -0
  289. package/dist/get-IGXC3JQ5.js +92 -0
  290. package/dist/get-IN6UXQRX.js +59 -0
  291. package/dist/get-P5Z274DM.js +38 -0
  292. package/dist/get-QA333Q5J.js +62 -0
  293. package/dist/get-ROETYEYF.js +82 -0
  294. package/dist/get-TXVHONYI.js +59 -0
  295. package/dist/get-WEWFUNWZ.js +56 -0
  296. package/dist/get-Z46N7LBR.js +66 -0
  297. package/dist/gif-TD37CRTZ.js +110 -0
  298. package/dist/gif-TD37CRTZ.js.map +1 -0
  299. package/dist/google-6A3YLR3K.js +144 -0
  300. package/dist/google-6A3YLR3K.js.map +1 -0
  301. package/dist/google-ZT3J3G4Z.js +3267 -0
  302. package/dist/google-ads-CBJZKTXG.js +198 -0
  303. package/dist/group-6ENUPDYO.js +43 -0
  304. package/dist/group-EYF34B3P.js +43 -0
  305. package/dist/gsc-KDE2DTH2.js +30 -0
  306. package/dist/history-GTT55ZP7.js +102 -0
  307. package/dist/history-UYG35MNJ.js +136 -0
  308. package/dist/history-XOB23MLX.js +69 -0
  309. package/dist/hubspot-B6Z77JY6.js +782 -0
  310. package/dist/icon-N77IGSXP.js +137 -0
  311. package/dist/ideas-RVK4RNKN.js +45 -0
  312. package/dist/images-RGJZ6FJL.js +92 -0
  313. package/dist/improve-BKFZOBXI.js +86 -0
  314. package/dist/ingest-7FHCKRYR.js +27 -0
  315. package/dist/ingest-GBWY2ZEP.js +123 -0
  316. package/dist/insights-7CQJOBWX.js +132 -0
  317. package/dist/insights-UOO6OK3U.js +439 -0
  318. package/dist/insights-UOO6OK3U.js.map +1 -0
  319. package/dist/inspect-RC6GKLIF.js +192 -0
  320. package/dist/inspiration-SQUEBO2K.js +53 -0
  321. package/dist/instant-experiences-3E6RRUHF.js +263 -0
  322. package/dist/instant-experiences-3E6RRUHF.js.map +1 -0
  323. package/dist/intent-P75BDP4H.js +95 -0
  324. package/dist/job-B6UEZLTA.js +202 -0
  325. package/dist/job-create-WM27NOGZ.js +109 -0
  326. package/dist/job-status-6V7DVVYL.js +74 -0
  327. package/dist/keep-ACLZB7KL.js +78 -0
  328. package/dist/keyword-gap-54F6CZLM.js +130 -0
  329. package/dist/keyword-metrics-PL5IYZGN.js +200 -0
  330. package/dist/keywords-for-site-4FMJ5IGN.js +131 -0
  331. package/dist/knowledge-5VEMAHG7.js +195 -0
  332. package/dist/landing-24TVKWTP.js +28 -0
  333. package/dist/landings-Q7T2HSYK.js +151 -0
  334. package/dist/languages-HWMPAPQN.js +55 -0
  335. package/dist/languages-PEGOE365.js +40 -0
  336. package/dist/launches-4HI65M3C.js +19 -0
  337. package/dist/layerize-HXML3KQX.js +190 -0
  338. package/dist/lead-routes-Q2T3RQXN.js +733 -0
  339. package/dist/leads-6TFBPYMM.js +115 -0
  340. package/dist/leads-GZ7RFM7D.js +540 -0
  341. package/dist/leads-GZ7RFM7D.js.map +1 -0
  342. package/dist/learn-4LGNFGWH.js +207 -0
  343. package/dist/library-OVX3OUYV.js +211 -0
  344. package/dist/lighthouse-2TDPDU7J.js +75 -0
  345. package/dist/line-item-writes-AOTRDB4L.js +211 -0
  346. package/dist/line-items-ERV3F2EI.js +107 -0
  347. package/dist/link-QZXI5YJP.js +67 -0
  348. package/dist/linkedin-4BKZ5KUE.js +1328 -0
  349. package/dist/linkedin-person-ZLXMOG2U.js +139 -0
  350. package/dist/list-7FB6764Q.js +67 -0
  351. package/dist/list-AAQISQHE.js +65 -0
  352. package/dist/list-QHAYR2IQ.js +154 -0
  353. package/dist/list-QYUU66YV.js +93 -0
  354. package/dist/list-SDHECXK5.js +57 -0
  355. package/dist/list-U3ZABSGW.js +76 -0
  356. package/dist/list-UCQEHPIR.js +306 -0
  357. package/dist/list-UF7Y4FDE.js +50 -0
  358. package/dist/list-VO473W6E.js +51 -0
  359. package/dist/locations-MXWGZIGU.js +69 -0
  360. package/dist/locations-SHYN5J4Q.js +40 -0
  361. package/dist/log-WPZRUMZU.js +95 -0
  362. package/dist/logo-2NDZ2EVN.js +18 -0
  363. package/dist/lookup-UFVB2ZZF.js +23 -0
  364. package/dist/make-VCAS2M2W.js +1367 -0
  365. package/dist/map-5EQO2VXB.js +436 -0
  366. package/dist/mcp-CKOYL4IU.js +729 -0
  367. package/dist/media-3M3PVSEZ.js +89 -0
  368. package/dist/media-5XRMDMKD.js +18 -0
  369. package/dist/media-sources-EDZ2PBJY.js +35 -0
  370. package/dist/members-E2AGJIU6.js +47 -0
  371. package/dist/meme-EOAFE4FS.js +100 -0
  372. package/dist/meta-CTKXBVXT.js +122 -0
  373. package/dist/metrics-25LYUEB7.js +152 -0
  374. package/dist/models-EU3NO4IY.js +155 -0
  375. package/dist/normalize-NDBXU6UO.js +806 -0
  376. package/dist/normalize-PHJT5CAD.js +144 -0
  377. package/dist/options-KFABOCWK.js +125 -0
  378. package/dist/organization-BP5DTWL7.js +949 -0
  379. package/dist/output-KIQWBKKA.js +24 -0
  380. package/dist/page-GGT3KZ5E.js +105 -0
  381. package/dist/page-photos-FKWHLNWM.js +118 -0
  382. package/dist/pages-JALRE36R.js +67 -0
  383. package/dist/pages-JALRE36R.js.map +1 -0
  384. package/dist/performance-C4M3GJPC.js +27 -0
  385. package/dist/performance-H3SJD3SN.js +5565 -0
  386. package/dist/pinterest-KURR4GJJ.js +104 -0
  387. package/dist/pinterest-KURR4GJJ.js.map +1 -0
  388. package/dist/pixels-6PKYGSQ4.js +109 -0
  389. package/dist/pixels-6PKYGSQ4.js.map +1 -0
  390. package/dist/pixels-NLH2PN6Q.js +62 -0
  391. package/dist/plan-223DL4HG.js +208 -0
  392. package/dist/posts-YPW4NHWM.js +36 -0
  393. package/dist/preview-CD2QADBJ.js +218 -0
  394. package/dist/profile-7KUWZTJR.js +159 -0
  395. package/dist/promoted-tweet-writes-ATWAKV6N.js +183 -0
  396. package/dist/promoted-tweets-TWQP3MDP.js +119 -0
  397. package/dist/properties-LCZX4UJH.js +101 -0
  398. package/dist/publish-Q4W7MI7P.js +344 -0
  399. package/dist/query-RKJS3QOS.js +231 -0
  400. package/dist/query-TP3L4W7Z.js +62 -0
  401. package/dist/query-WX3K7ZDY.js +236 -0
  402. package/dist/questionnaire-CCDUSEI3.js +94 -0
  403. package/dist/read-JTJQSEVB.js +141 -0
  404. package/dist/reddit-JWZYSUAG.js +29 -0
  405. package/dist/refresh-H4DETVS5.js +42 -0
  406. package/dist/refresh-VRBHP4AA.js +97 -0
  407. package/dist/release-OV4ZDCXG.js +63 -0
  408. package/dist/relevant-pages-VJHTUJMB.js +99 -0
  409. package/dist/remove-5FMNASGC.js +49 -0
  410. package/dist/remove-DBCSQSEP.js +53 -0
  411. package/dist/reopen-5ZOEKYQ5.js +66 -0
  412. package/dist/rerun-YMRW6BHM.js +96 -0
  413. package/dist/research-HUM6CF74.js +265 -0
  414. package/dist/research-M3QPWTYX.js +72 -0
  415. package/dist/reset-BPAFOW6M.js +57 -0
  416. package/dist/reset-WAY3BSZX.js +57 -0
  417. package/dist/resolve-AQ6UFEMN.js +124 -0
  418. package/dist/retry-3KYFTPXZ.js +65 -0
  419. package/dist/retry-XO54CIRK.js +63 -0
  420. package/dist/retry-failed-DSVEAY3T.js +45 -0
  421. package/dist/revenue-PPDMQO3H.js +91 -0
  422. package/dist/rule-writes-XSNS3XYK.js +525 -0
  423. package/dist/rules-4ENXG5XW.js +99 -0
  424. package/dist/rules-GHGEVCBQ.js +217 -0
  425. package/dist/rules-add-FTBOOE6L.js +465 -0
  426. package/dist/run-2ZRTKR7A.js +69 -0
  427. package/dist/run-UECCNQ63.js +71 -0
  428. package/dist/scaffold-ad-DFKFUOOZ.js +1513 -0
  429. package/dist/scaffold-static-ad-II3TUE5I.js +1011 -0
  430. package/dist/scaffold-video-IKVYICIY.js +885 -0
  431. package/dist/schedule-ERHKGQID.js +64 -0
  432. package/dist/schedule-Z2AQXR7W.js +67 -0
  433. package/dist/scheduled-agents-ICXFV7NP.js +55 -0
  434. package/dist/schema-BDZA64GZ.js +121 -0
  435. package/dist/schema-NUUZ3MG7.js +135 -0
  436. package/dist/scrape-CTE5SNQN.js +2241 -0
  437. package/dist/screenshot-ELJYTIM7.js +102 -0
  438. package/dist/search-5B5AXN5V.js +91 -0
  439. package/dist/search-7ELGWNMH.js +26 -0
  440. package/dist/search-B2APYHV6.js +177 -0
  441. package/dist/search-KBIF5NZX.js +224 -0
  442. package/dist/search-OF6LTOK6.js +51 -0
  443. package/dist/search-XO5UPSBF.js +92 -0
  444. package/dist/search-copy-DDRY6HPI.js +168 -0
  445. package/dist/seeds-HH5E7GCS.js +101 -0
  446. package/dist/select-WVNPJDXP.js +110 -0
  447. package/dist/sends-H7WMLJ5H.js +349 -0
  448. package/dist/sequences-V4STPHGV.js +146 -0
  449. package/dist/set-prompt-KHBDWDXA.js +199 -0
  450. package/dist/setup-links-R3FH7WK4.js +144 -0
  451. package/dist/shared-P2PFNNJF.js +32 -0
  452. package/dist/shopify-34CFN6SG.js +3958 -0
  453. package/dist/site-H6AMVMIX.js +180 -0
  454. package/dist/sitemaps-KMRWAKNK.js +77 -0
  455. package/dist/sites-3QZDCQRG.js +97 -0
  456. package/dist/skills-KV4X22KQ.js +47 -0
  457. package/dist/sources-2VJMHUH7.js +30 -0
  458. package/dist/sources-S63224S7.js +457 -0
  459. package/dist/stale-6BEHWQZ7.js +90 -0
  460. package/dist/stats-3TAUG3Q3.js +34 -0
  461. package/dist/status-MCMOSDVX.js +65 -0
  462. package/dist/sticker-SH6VUPFR.js +102 -0
  463. package/dist/sticker-SH6VUPFR.js.map +1 -0
  464. package/dist/stock-IICCY3IQ.js +187 -0
  465. package/dist/stock-IICCY3IQ.js.map +1 -0
  466. package/dist/studies-A52C544C.js +250 -0
  467. package/dist/studio-4QOFG7MQ.js +49 -0
  468. package/dist/study-writes-3R4D6C3F.js +470 -0
  469. package/dist/suggest-3CFMURUH.js +66 -0
  470. package/dist/sync-H4XVXITS.js +55 -0
  471. package/dist/sync-TJ7MGFIE.js +279 -0
  472. package/dist/sync-WJCJHNET.js +57 -0
  473. package/dist/sync-definition-THVMBGJR.js +70 -0
  474. package/dist/tag-6WIQLRDW.js +57 -0
  475. package/dist/tag-manager-KWITWX6Y.js +43 -0
  476. package/dist/tags-AGFUJ2BB.js +227 -0
  477. package/dist/tags-OPMPPJY2.js +23 -0
  478. package/dist/tags-VGJ76RJT.js +26 -0
  479. package/dist/tags-VOCMMZ75.js +23 -0
  480. package/dist/tags-WK6P5A4D.js +23 -0
  481. package/dist/targeting-II4CQUPW.js +762 -0
  482. package/dist/targeting-constants-2EHTMIMX.js +118 -0
  483. package/dist/targeting-criteria-KRIMZRVI.js +113 -0
  484. package/dist/targets-MCOEM4XQ.js +106 -0
  485. package/dist/terms-URBA2IXT.js +102 -0
  486. package/dist/testimonials-A2AFXSZV.js +32 -0
  487. package/dist/themes-JBX6W4SP.js +95 -0
  488. package/dist/top-companies-ESCRXLSK.js +111 -0
  489. package/dist/transcript-N2ZWN4CI.js +165 -0
  490. package/dist/translate-YGUYVOGA.js +603 -0
  491. package/dist/triggers-G4EW5XG6.js +144 -0
  492. package/dist/tweets-LECORASF.js +123 -0
  493. package/dist/unfollow-DBV2F7YP.js +46 -0
  494. package/dist/unlink-DRIVH2GT.js +70 -0
  495. package/dist/unstage-WUQV6QBV.js +88 -0
  496. package/dist/unstage-XCH4VBM2.js +96 -0
  497. package/dist/update-5GIAKABM.js +66 -0
  498. package/dist/update-COXCKREW.js +101 -0
  499. package/dist/update-JDFJPQ3O.js +81 -0
  500. package/dist/update-NA4M4J5D.js +155 -0
  501. package/dist/update-T7PSOZES.js +192 -0
  502. package/dist/upload-B27ZJMMZ.js +150 -0
  503. package/dist/upload-IXVEJLZU.js +130 -0
  504. package/dist/upscale-QMBV3AGN.js +109 -0
  505. package/dist/url-options-LHEGWNAH.js +131 -0
  506. package/dist/url-params-IL2M2WZI.js +101 -0
  507. package/dist/use-TBDI3OAN.js +111 -0
  508. package/dist/validate-QAJJ7QCJ.js +125 -0
  509. package/dist/variant-2A5GOOJF.js +338 -0
  510. package/dist/videos-I7PCC2EC.js +41 -0
  511. package/dist/view-GNNIJGGN.js +121 -0
  512. package/dist/viewer-check-PUAWVYWP.js +83 -0
  513. package/dist/web-O2MCPPB5.js +143 -0
  514. package/dist/winners-6CW4CWZI.js +113 -0
  515. package/dist/winning-ads-FTMP4FUC.js +86 -0
  516. package/dist/write-commands-3G5WDFH3.js +206 -0
  517. package/dist/write-commands-NKKNWQIM.js +1525 -0
  518. package/dist/write-commands-TPPJHGMT.js +1172 -0
  519. package/dist/write-commands-UW5LKCAP.js +713 -0
  520. package/dist/x-FPRMRQLQ.js +47 -0
  521. package/package.json +1 -1
  522. package/dist/account-44L7SBXK.js +0 -82
  523. package/dist/account-6Q2YV7BN.js +0 -139
  524. package/dist/account-SM26TMGL.js +0 -82
  525. package/dist/account-assets-VJ5RZH4I.js +0 -290
  526. package/dist/account-level-KI4TEG3G.js +0 -611
  527. package/dist/account-reads-SU7FRG2G.js +0 -219
  528. package/dist/account-users-SN44ZGW2.js +0 -64
  529. package/dist/account-writes-LLRPQU2K.js +0 -68
  530. package/dist/accounts-A2SGFRZP.js +0 -114
  531. package/dist/accounts-ASUFY2DV.js +0 -115
  532. package/dist/accounts-MXVVT7S5.js +0 -80
  533. package/dist/accounts-QVZR4OMQ.js +0 -76
  534. package/dist/accounts-Z33NFG5T.js +0 -701
  535. package/dist/actions-YXXC453H.js +0 -55
  536. package/dist/active-entities-EJCLPIKJ.js +0 -103
  537. package/dist/activecampaign-H6RPYUBL.js +0 -938
  538. package/dist/activities-U7RC275G.js +0 -75
  539. package/dist/ad-group-writes-OWJ4ATKU.js +0 -172
  540. package/dist/ad-groups-IFF4G7CK.js +0 -70
  541. package/dist/ad-writes-OB7BRW5T.js +0 -176
  542. package/dist/add-HLDASH6G.js +0 -148
  543. package/dist/add-LBER2JD6.js +0 -81
  544. package/dist/add-M6CZVT62.js +0 -80
  545. package/dist/add-MYRZZDLQ.js +0 -97
  546. package/dist/add-XOWVJ2JB.js +0 -305
  547. package/dist/add-ZK6LDYDU.js +0 -107
  548. package/dist/add-accounts-HUIKYKRU.js +0 -91
  549. package/dist/ads-24GB65HI.js +0 -79
  550. package/dist/ads-325CHQN5.js +0 -128
  551. package/dist/ads-LF24SJZF.js +0 -48
  552. package/dist/ads-MFXNLNPB.js +0 -120
  553. package/dist/adsets-7ARHJS2F.js +0 -182
  554. package/dist/advertisers-6ZUO7PX2.js +0 -123
  555. package/dist/advertisers-LELAFRUF.js +0 -125
  556. package/dist/analytics-GNZH6RGD.js +0 -447
  557. package/dist/analytics-ZNF4UVZW.js +0 -2437
  558. package/dist/animate-YTC37USA.js +0 -480
  559. package/dist/approved-KKCTQLK7.js +0 -73
  560. package/dist/asset-writes-HAELVVBJ.js +0 -50
  561. package/dist/assign-NDPGS3YZ.js +0 -80
  562. package/dist/audience-size-ZH7WBFQE.js +0 -76
  563. package/dist/audience-writes-XQMSCRQM.js +0 -327
  564. package/dist/audiences-FO3RP6I5.js +0 -86
  565. package/dist/audiences-FO3RP6I5.js.map +0 -1
  566. package/dist/audiences-RLOXMBLX.js +0 -280
  567. package/dist/audiences-ZCGMMUXF.js +0 -85
  568. package/dist/audit-LLXV6ER5.js +0 -88
  569. package/dist/audit-RKWO6DHD.js +0 -154
  570. package/dist/autocomplete-4IG6UPCD.js +0 -114
  571. package/dist/avatars-BOHSTERG.js +0 -38
  572. package/dist/bid-pricing-AAXXSHFA.js +0 -103
  573. package/dist/brand-6A2NLGJT.js +0 -22
  574. package/dist/brief-XC72DOOR.js +0 -543
  575. package/dist/businesses-VXPITYFC.js +0 -54
  576. package/dist/businesses-VXPITYFC.js.map +0 -1
  577. package/dist/campaign-groups-TYE2XFT3.js +0 -99
  578. package/dist/campaign-writes-JWHRXUZZ.js +0 -176
  579. package/dist/campaign-writes-MGRQBCFJ.js +0 -168
  580. package/dist/campaigns-4HC42PEZ.js +0 -113
  581. package/dist/campaigns-5UI2LNQN.js +0 -130
  582. package/dist/campaigns-KUN7KPBU.js +0 -78
  583. package/dist/campaigns-OOHZEMNT.js +0 -111
  584. package/dist/canvas-CRPVKLJX.js +0 -46
  585. package/dist/capabilities-4UEXJERP.js +0 -147
  586. package/dist/cards-3DLNTDSG.js +0 -85
  587. package/dist/catalog-4HOTBBN6.js +0 -66
  588. package/dist/catalogs-GDDFWLKE.js +0 -130
  589. package/dist/catalogs-NU7SKAUB.js +0 -781
  590. package/dist/changes-APSTXCNZ.js +0 -135
  591. package/dist/chatgpt-QEV72AO4.js +0 -47
  592. package/dist/chats-NB5MSWA5.js +0 -279
  593. package/dist/chats-NB5MSWA5.js.map +0 -1
  594. package/dist/check-X3D7LTUW.js +0 -107
  595. package/dist/chunk-2IB2I7X6.js +0 -224
  596. package/dist/chunk-2MRK75I3.js +0 -344
  597. package/dist/chunk-3DKEESUG.js +0 -98
  598. package/dist/chunk-3FEOMQUT.js +0 -106
  599. package/dist/chunk-3PRPX5L7.js +0 -167
  600. package/dist/chunk-44ZRCSR7.js +0 -228
  601. package/dist/chunk-46YLDIQG.js +0 -4254
  602. package/dist/chunk-46YLDIQG.js.map +0 -1
  603. package/dist/chunk-4BKXWROD.js +0 -297
  604. package/dist/chunk-4O3FECSO.js +0 -89
  605. package/dist/chunk-4RAO7ORZ.js +0 -163
  606. package/dist/chunk-4ZPR265V.js +0 -274
  607. package/dist/chunk-532FZFV2.js +0 -46
  608. package/dist/chunk-56OEYUJU.js +0 -61
  609. package/dist/chunk-57V44RUD.js +0 -19
  610. package/dist/chunk-5CXLLV7A.js +0 -219
  611. package/dist/chunk-5K554VU2.js +0 -377
  612. package/dist/chunk-66O7GGOB.js +0 -131
  613. package/dist/chunk-6LU64W5J.js +0 -333
  614. package/dist/chunk-6THXOWAP.js +0 -476
  615. package/dist/chunk-6ZX3Q4X7.js +0 -217
  616. package/dist/chunk-7BJZF77Q.js +0 -1919
  617. package/dist/chunk-7UTWZGIV.js +0 -296
  618. package/dist/chunk-A4T5JI75.js +0 -169
  619. package/dist/chunk-AIOKWGMO.js +0 -75
  620. package/dist/chunk-AYZICIKF.js +0 -287
  621. package/dist/chunk-BLXFCH3B.js +0 -42
  622. package/dist/chunk-C2MBBIZ4.js +0 -604
  623. package/dist/chunk-C4PD5NES.js +0 -26
  624. package/dist/chunk-CHOCMV4I.js +0 -24026
  625. package/dist/chunk-CKTVRR3D.js +0 -57
  626. package/dist/chunk-CTZY7QMT.js +0 -111
  627. package/dist/chunk-CW2RHRH5.js +0 -46
  628. package/dist/chunk-CXRP4X3D.js +0 -56
  629. package/dist/chunk-DSK6RDUR.js +0 -592
  630. package/dist/chunk-DTZNC4XD.js +0 -2209
  631. package/dist/chunk-EDIDGJ6Y.js +0 -285
  632. package/dist/chunk-EJWTQDKA.js +0 -1744
  633. package/dist/chunk-EPSAWDYY.js +0 -76
  634. package/dist/chunk-ERYI4T2D.js +0 -207
  635. package/dist/chunk-FPCJANX2.js +0 -249
  636. package/dist/chunk-FQTMVJEO.js +0 -98
  637. package/dist/chunk-FR3M23HS.js +0 -149
  638. package/dist/chunk-FUC6WHQM.js +0 -225
  639. package/dist/chunk-FVVK6XZ2.js +0 -191
  640. package/dist/chunk-FWIQZEJ4.js +0 -188
  641. package/dist/chunk-GUB3GIXZ.js +0 -91
  642. package/dist/chunk-GXN7TMQO.js +0 -8954
  643. package/dist/chunk-GZS34VKU.js +0 -438
  644. package/dist/chunk-H23ZPEIQ.js +0 -64
  645. package/dist/chunk-HF73QMN2.js +0 -97
  646. package/dist/chunk-HVJJEQDQ.js +0 -7234
  647. package/dist/chunk-HVJJEQDQ.js.map +0 -1
  648. package/dist/chunk-I7AYMJZA.js +0 -783
  649. package/dist/chunk-IC2X5X7J.js +0 -5368
  650. package/dist/chunk-IMBPX3OO.js +0 -676
  651. package/dist/chunk-IPMOG2RC.js +0 -138
  652. package/dist/chunk-IW4JBXYF.js +0 -76
  653. package/dist/chunk-J4MDC54C.js +0 -91
  654. package/dist/chunk-JAV6VUQH.js +0 -494
  655. package/dist/chunk-JBQXHR3O.js +0 -58
  656. package/dist/chunk-JE3RHIQE.js +0 -97
  657. package/dist/chunk-JRX25GPP.js +0 -139
  658. package/dist/chunk-KDQWUSG4.js +0 -84
  659. package/dist/chunk-KGTDEZBS.js +0 -64
  660. package/dist/chunk-KWYHZ454.js +0 -930
  661. package/dist/chunk-LLJW5F2C.js +0 -148
  662. package/dist/chunk-LTXL475T.js +0 -544
  663. package/dist/chunk-MBLKAZUZ.js +0 -103
  664. package/dist/chunk-N64IH7FU.js +0 -166
  665. package/dist/chunk-NT4KXGNJ.js +0 -200
  666. package/dist/chunk-O57XNXSN.js +0 -52
  667. package/dist/chunk-OQ4PTNNH.js +0 -1518
  668. package/dist/chunk-OYNBUT5X.js +0 -479
  669. package/dist/chunk-PDOP76SF.js +0 -3510
  670. package/dist/chunk-PL4RLWSQ.js +0 -225
  671. package/dist/chunk-PXM3ZGEC.js +0 -846
  672. package/dist/chunk-PZ7F2BYO.js +0 -910
  673. package/dist/chunk-QPGPOILB.js +0 -275
  674. package/dist/chunk-QSZPHIQ7.js +0 -51
  675. package/dist/chunk-RC52N27Q.js +0 -203
  676. package/dist/chunk-RJ675DP3.js +0 -84
  677. package/dist/chunk-RPFZLVPG.js +0 -35
  678. package/dist/chunk-S2TDC2VI.js +0 -429
  679. package/dist/chunk-S4XSCFFN.js +0 -45
  680. package/dist/chunk-S6VFDNSQ.js +0 -63
  681. package/dist/chunk-S6WPMD3V.js +0 -2466
  682. package/dist/chunk-S6WPMD3V.js.map +0 -1
  683. package/dist/chunk-SBFNGJ4C.js +0 -324
  684. package/dist/chunk-SBO3MOWQ.js +0 -74
  685. package/dist/chunk-SG2TDQEE.js +0 -150
  686. package/dist/chunk-SM3RFN3C.js +0 -66
  687. package/dist/chunk-SPZYWS6Z.js +0 -170
  688. package/dist/chunk-TGTQIYST.js +0 -191
  689. package/dist/chunk-TM5UTSE4.js +0 -215
  690. package/dist/chunk-TV4OZFMW.js +0 -831
  691. package/dist/chunk-TWXL3GA7.js +0 -73
  692. package/dist/chunk-U645Z2TL.js +0 -23
  693. package/dist/chunk-UBDY5RE4.js +0 -387
  694. package/dist/chunk-UBTGSMWE.js +0 -5471
  695. package/dist/chunk-UODX4YIA.js +0 -714
  696. package/dist/chunk-V3YJ3BTV.js +0 -25
  697. package/dist/chunk-V6F2QWUZ.js +0 -136
  698. package/dist/chunk-VEWMX5XZ.js +0 -94
  699. package/dist/chunk-VP4PO7FW.js +0 -392
  700. package/dist/chunk-VR6OMSSP.js +0 -69
  701. package/dist/chunk-VSH7UW4P.js +0 -1646
  702. package/dist/chunk-VWOKRMUG.js +0 -125
  703. package/dist/chunk-WWLZ5RRU.js +0 -319
  704. package/dist/chunk-WZTSS4SH.js +0 -100
  705. package/dist/chunk-X3QG3PKT.js +0 -207
  706. package/dist/chunk-X6AHLUC7.js +0 -229
  707. package/dist/chunk-XBLD5EKJ.js +0 -142
  708. package/dist/chunk-XQXIRL74.js +0 -455
  709. package/dist/chunk-Y3SGBJN7.js +0 -69
  710. package/dist/chunk-YBE5AAEC.js +0 -547
  711. package/dist/chunk-YPUHGB2E.js +0 -156
  712. package/dist/chunk-YQIURUEL.js +0 -638
  713. package/dist/chunk-YSG2KO4U.js +0 -1902
  714. package/dist/chunk-YYLNXT6O.js +0 -197
  715. package/dist/chunk-Z636K6AJ.js +0 -66
  716. package/dist/chunk-ZHHRXHWD.js +0 -106
  717. package/dist/chunk-ZN22VDFS.js +0 -843
  718. package/dist/chunk-ZYWER6HE.js +0 -39
  719. package/dist/claim-QQ3IXNSN.js +0 -200
  720. package/dist/client-IILD75KL.js +0 -19
  721. package/dist/code-OWFBQYZS.js +0 -76
  722. package/dist/companies-QRENWGJS.js +0 -198
  723. package/dist/company-CGERR3R7.js +0 -308
  724. package/dist/complete-7JD5XWHZ.js +0 -84
  725. package/dist/config-JPA4ZHN2.js +0 -88
  726. package/dist/connect-ZWWL2GLU.js +0 -45
  727. package/dist/content-SOGZTYNO.js +0 -85
  728. package/dist/conversation-TAWGHMFS.js +0 -96
  729. package/dist/conversion-report-ABOKPW3U.js +0 -127
  730. package/dist/conversion-upload-command-BEU3AGKB.js +0 -439
  731. package/dist/conversion-writes-2HEJ5SYB.js +0 -122
  732. package/dist/conversions-6XAGZJ7Z.js +0 -140
  733. package/dist/conversions-UNYDKOB3.js +0 -78
  734. package/dist/copy-writes-RF7MUAWA.js +0 -170
  735. package/dist/countries-4XNZESRQ.js +0 -82
  736. package/dist/create-5PMYFFWZ.js +0 -135
  737. package/dist/create-QFPLBMJR.js +0 -210
  738. package/dist/create-RVB4UTZ4.js +0 -62
  739. package/dist/create-UPWF46TX.js +0 -239
  740. package/dist/creatives-6MXQKT6W.js +0 -89
  741. package/dist/creatives-6MXQKT6W.js.map +0 -1
  742. package/dist/creatives-EZRUJAW4.js +0 -223
  743. package/dist/creatives-W6GRZX7X.js +0 -58
  744. package/dist/credentials-WDJULILX.js +0 -290
  745. package/dist/critique-2IXJR2KB.js +0 -232
  746. package/dist/critique-TVP76CIX.js +0 -1451
  747. package/dist/crm-32RA7QHK.js +0 -227
  748. package/dist/crm-S36XN5QR.js +0 -323
  749. package/dist/crop-L3ALN7OW.js +0 -113
  750. package/dist/currency-N6ARW3QB.js +0 -88
  751. package/dist/custom-conversions-XJJ5V2RR.js +0 -128
  752. package/dist/custom-conversions-XJJ5V2RR.js.map +0 -1
  753. package/dist/customers-7RPTQHNS.js +0 -59
  754. package/dist/decide-LE7542FR.js +0 -199
  755. package/dist/delete-35NTMQY5.js +0 -85
  756. package/dist/delete-B7JWSVXN.js +0 -69
  757. package/dist/delete-CL3N2FD6.js +0 -69
  758. package/dist/delete-DUK6QH53.js +0 -57
  759. package/dist/delete-HJZYARS4.js +0 -71
  760. package/dist/delete-UA3DDTCH.js +0 -67
  761. package/dist/demographics-6Z5AR6PO.js +0 -141
  762. package/dist/describe-PP7D2RE5.js +0 -97
  763. package/dist/describe-VXQA5AHV.js +0 -97
  764. package/dist/dimensions-WUQGLVX6.js +0 -101
  765. package/dist/discard-XL5LST7I.js +0 -69
  766. package/dist/discover-FMF3PNGM.js +0 -172
  767. package/dist/discover-PDVS3ITO.js +0 -93
  768. package/dist/domain-UWNKEZOG.js +0 -101
  769. package/dist/download-FZJLCOSU.js +0 -299
  770. package/dist/download-P7JGNU2K.js +0 -172
  771. package/dist/draft-3E352XHY.js +0 -335
  772. package/dist/draft-4HU72A2M.js +0 -240
  773. package/dist/draft-EIKC67A4.js +0 -310
  774. package/dist/draft-QC5U3HH7.js +0 -103
  775. package/dist/draft-QK7WP6KI.js +0 -100
  776. package/dist/draft-R6CFIHVP.js +0 -308
  777. package/dist/draft-R6CFIHVP.js.map +0 -1
  778. package/dist/draft-RBWJ2KMU.js +0 -283
  779. package/dist/draft-ZEBANBH6.js +0 -220
  780. package/dist/env-KCFPWDRZ.js +0 -53
  781. package/dist/experiment-55H6NBF4.js +0 -1397
  782. package/dist/experiments-A5WEGGYM.js +0 -236
  783. package/dist/export-JSQ62QLT.js +0 -168
  784. package/dist/extract-HPO5NCJM.js +0 -113
  785. package/dist/extract-HPO5NCJM.js.map +0 -1
  786. package/dist/facets-WSZFBNLK.js +0 -117
  787. package/dist/favorites-PZIXDJTK.js +0 -178
  788. package/dist/feed-GTJWBM3A.js +0 -177
  789. package/dist/feedback-QNAWM3CD.js +0 -115
  790. package/dist/feedback-record-74K6PMW5.js +0 -269
  791. package/dist/fetch-D3SDXYHO.js +0 -179
  792. package/dist/fetch-DH3FYWNG.js +0 -139
  793. package/dist/find-Q6YSXK5B.js +0 -143
  794. package/dist/fit-APYTXM7S.js +0 -65
  795. package/dist/flows-CWQB4FEJ.js +0 -250
  796. package/dist/follow-B5LYKQYZ.js +0 -94
  797. package/dist/follow-competitors-7NHOQPC6.js +0 -112
  798. package/dist/following-2M4SVFML.js +0 -113
  799. package/dist/fonts-5BGGVGBL.js +0 -39
  800. package/dist/forecast-IYHLC5L6.js +0 -169
  801. package/dist/forecast-QOOCK3YT.js +0 -121
  802. package/dist/funding-7KPXTSSF.js +0 -85
  803. package/dist/funnel-YS5327T3.js +0 -397
  804. package/dist/ga4-IHDHHB4A.js +0 -55
  805. package/dist/generate-LR4TZ635.js +0 -263
  806. package/dist/get-B4DL3RSO.js +0 -56
  807. package/dist/get-BLLJDQK7.js +0 -62
  808. package/dist/get-EBGMLBMQ.js +0 -66
  809. package/dist/get-L643OWL6.js +0 -92
  810. package/dist/get-PM5BVMMG.js +0 -82
  811. package/dist/get-UOSUCNQL.js +0 -59
  812. package/dist/get-X7CWNYQT.js +0 -38
  813. package/dist/get-ZK2H5LRZ.js +0 -59
  814. package/dist/gif-YOFNJCMU.js +0 -102
  815. package/dist/gif-YOFNJCMU.js.map +0 -1
  816. package/dist/google-5FWAGGXI.js +0 -136
  817. package/dist/google-5FWAGGXI.js.map +0 -1
  818. package/dist/google-GKW4CPUS.js +0 -3267
  819. package/dist/google-ads-HZUAYKS5.js +0 -198
  820. package/dist/group-B7MU5SKI.js +0 -43
  821. package/dist/group-WU4LKKX7.js +0 -43
  822. package/dist/gsc-TP5PZHZG.js +0 -30
  823. package/dist/history-GOEZEU6C.js +0 -102
  824. package/dist/history-LB53QEBX.js +0 -136
  825. package/dist/history-RZ5ZPPYD.js +0 -69
  826. package/dist/hubspot-JUUVPODR.js +0 -782
  827. package/dist/icon-6BMRXD4X.js +0 -137
  828. package/dist/ideas-P2RVSLFZ.js +0 -45
  829. package/dist/images-LVHJRQ2Y.js +0 -92
  830. package/dist/improve-IX6E7OYO.js +0 -86
  831. package/dist/ingest-EOS4AS7U.js +0 -123
  832. package/dist/ingest-OBEZXXEM.js +0 -27
  833. package/dist/insights-LSXXRRIR.js +0 -439
  834. package/dist/insights-LSXXRRIR.js.map +0 -1
  835. package/dist/insights-NYWJYDS6.js +0 -132
  836. package/dist/inspect-KU5IKVXR.js +0 -192
  837. package/dist/inspiration-3EXSU5HR.js +0 -53
  838. package/dist/instant-experiences-S6KD7GHP.js +0 -260
  839. package/dist/instant-experiences-S6KD7GHP.js.map +0 -1
  840. package/dist/intent-M5KVGRGP.js +0 -95
  841. package/dist/job-LE5AG6HJ.js +0 -202
  842. package/dist/job-create-QKYEPYNE.js +0 -109
  843. package/dist/job-status-OG7S2LFM.js +0 -74
  844. package/dist/keep-WG3T4MKZ.js +0 -78
  845. package/dist/keyword-gap-U6R4TI64.js +0 -130
  846. package/dist/keyword-metrics-QVCLFUQU.js +0 -200
  847. package/dist/keywords-for-site-2AKZFIA4.js +0 -131
  848. package/dist/knowledge-IIWKDS45.js +0 -195
  849. package/dist/landing-WYYB7YGD.js +0 -28
  850. package/dist/landings-2CNV325Q.js +0 -151
  851. package/dist/languages-5LHOEANO.js +0 -55
  852. package/dist/languages-FGCGQ3TG.js +0 -40
  853. package/dist/launches-EWT3LHCQ.js +0 -19
  854. package/dist/layerize-QXALSA7Q.js +0 -190
  855. package/dist/lead-routes-FAG5FOZK.js +0 -733
  856. package/dist/leads-6U26QP2Q.js +0 -540
  857. package/dist/leads-6U26QP2Q.js.map +0 -1
  858. package/dist/leads-Y4IHMZ3J.js +0 -115
  859. package/dist/learn-VYJYHPLD.js +0 -207
  860. package/dist/library-5XZP2W22.js +0 -211
  861. package/dist/lighthouse-KAMY3KYG.js +0 -75
  862. package/dist/line-item-writes-NEKWC55T.js +0 -211
  863. package/dist/line-items-KYQ7LCXV.js +0 -107
  864. package/dist/link-QEVXGOTQ.js +0 -67
  865. package/dist/linkedin-YKGXBXIA.js +0 -1328
  866. package/dist/linkedin-person-L2K2IVXM.js +0 -139
  867. package/dist/list-2ALP36HR.js +0 -67
  868. package/dist/list-3OZVH4S4.js +0 -306
  869. package/dist/list-4VJY4BCV.js +0 -51
  870. package/dist/list-AL2HOLWI.js +0 -76
  871. package/dist/list-AZEHYDU7.js +0 -93
  872. package/dist/list-DFT77FDO.js +0 -154
  873. package/dist/list-GHV6665E.js +0 -50
  874. package/dist/list-PBGDATAC.js +0 -57
  875. package/dist/list-SRY3XZOE.js +0 -65
  876. package/dist/locations-LRDYJ43Z.js +0 -69
  877. package/dist/locations-QW7BBT65.js +0 -40
  878. package/dist/log-J4R5IMNC.js +0 -95
  879. package/dist/logo-DBIXKWDV.js +0 -18
  880. package/dist/lookup-CNAZI7WN.js +0 -23
  881. package/dist/make-3ADQJI67.js +0 -1367
  882. package/dist/map-ZX6624KU.js +0 -436
  883. package/dist/mcp-CHQT6PQX.js +0 -729
  884. package/dist/media-7UAKHZZT.js +0 -18
  885. package/dist/media-JESBPCT4.js +0 -89
  886. package/dist/media-sources-JDQH37BR.js +0 -35
  887. package/dist/members-LNZ6QJRQ.js +0 -47
  888. package/dist/meme-QC4B2UOE.js +0 -100
  889. package/dist/meta-RKKGFD2Q.js +0 -122
  890. package/dist/metrics-SSHSXP27.js +0 -152
  891. package/dist/models-6N3BB77L.js +0 -155
  892. package/dist/normalize-32DXOVZ6.js +0 -144
  893. package/dist/normalize-TGEEW5J4.js +0 -806
  894. package/dist/options-WPFLRMPU.js +0 -125
  895. package/dist/organization-RDDPXG6L.js +0 -949
  896. package/dist/output-LTK2VAI2.js +0 -24
  897. package/dist/page-O7HY2KDR.js +0 -105
  898. package/dist/page-photos-IIBLD2M4.js +0 -118
  899. package/dist/pages-JYYYRADM.js +0 -67
  900. package/dist/pages-JYYYRADM.js.map +0 -1
  901. package/dist/performance-2Y7VTU7Z.js +0 -5565
  902. package/dist/performance-UH7XFLLZ.js +0 -27
  903. package/dist/pinterest-P5LS6IM7.js +0 -96
  904. package/dist/pinterest-P5LS6IM7.js.map +0 -1
  905. package/dist/pixels-TAVUGXVE.js +0 -109
  906. package/dist/pixels-TAVUGXVE.js.map +0 -1
  907. package/dist/pixels-XXBXR2V6.js +0 -62
  908. package/dist/plan-XJX4BAFS.js +0 -208
  909. package/dist/posts-QEJH7VY4.js +0 -36
  910. package/dist/preview-KMBPUIKX.js +0 -218
  911. package/dist/profile-HH657NFJ.js +0 -159
  912. package/dist/promoted-tweet-writes-JVTDWIR6.js +0 -183
  913. package/dist/promoted-tweets-6IXM3SQ5.js +0 -119
  914. package/dist/properties-2BEJQW4Y.js +0 -101
  915. package/dist/publish-LZKE7SVL.js +0 -344
  916. package/dist/query-CBSXU3D6.js +0 -236
  917. package/dist/query-SMIKGUVW.js +0 -231
  918. package/dist/query-VG3SSIZW.js +0 -62
  919. package/dist/questionnaire-3WSXQF24.js +0 -94
  920. package/dist/read-HZC3NDNN.js +0 -141
  921. package/dist/reddit-G7VRSYYZ.js +0 -29
  922. package/dist/refresh-2L6ZO3ZT.js +0 -97
  923. package/dist/refresh-I5A3NECZ.js +0 -42
  924. package/dist/release-XSVKJ5CN.js +0 -63
  925. package/dist/relevant-pages-A42RSROV.js +0 -99
  926. package/dist/remove-2ZGE2W4H.js +0 -49
  927. package/dist/remove-V374NEAC.js +0 -53
  928. package/dist/reopen-IGMHWHVQ.js +0 -66
  929. package/dist/rerun-ZNRXUDJK.js +0 -96
  930. package/dist/research-5DVH2LQ7.js +0 -72
  931. package/dist/research-6AJKF745.js +0 -265
  932. package/dist/reset-LGDXOPWW.js +0 -57
  933. package/dist/reset-XSWWWLX7.js +0 -57
  934. package/dist/resolve-O64G4K5K.js +0 -124
  935. package/dist/retry-GHK3YL2J.js +0 -65
  936. package/dist/retry-PBQMXGTI.js +0 -63
  937. package/dist/retry-failed-2P7FOFXN.js +0 -45
  938. package/dist/revenue-W46ID47C.js +0 -91
  939. package/dist/rule-writes-EWHP53UU.js +0 -525
  940. package/dist/rules-GVOTFQFK.js +0 -217
  941. package/dist/rules-YZJ5RVJS.js +0 -99
  942. package/dist/rules-add-EYGAKYYC.js +0 -465
  943. package/dist/run-FWUYEPS6.js +0 -71
  944. package/dist/run-WTVT74DX.js +0 -69
  945. package/dist/scaffold-ad-ZXBNYUSD.js +0 -1513
  946. package/dist/scaffold-static-ad-COCGCL76.js +0 -1011
  947. package/dist/scaffold-video-A3YIXW34.js +0 -885
  948. package/dist/schedule-2ARCAXOP.js +0 -64
  949. package/dist/schedule-UQZFDY2R.js +0 -67
  950. package/dist/scheduled-agents-AK5BIFKJ.js +0 -55
  951. package/dist/schema-GHGIFDA5.js +0 -121
  952. package/dist/schema-TM6N57U7.js +0 -135
  953. package/dist/scrape-KJHI7ZGT.js +0 -2241
  954. package/dist/screenshot-R5WU2CP3.js +0 -102
  955. package/dist/search-4ZC63BDO.js +0 -91
  956. package/dist/search-ASEODLC6.js +0 -51
  957. package/dist/search-HU3BLSA5.js +0 -26
  958. package/dist/search-NR4L4TRU.js +0 -177
  959. package/dist/search-YIS3DVFC.js +0 -92
  960. package/dist/search-Z4PXKQXY.js +0 -224
  961. package/dist/search-copy-TFHTB6R3.js +0 -168
  962. package/dist/seeds-SMIOGN5B.js +0 -101
  963. package/dist/select-7K4NBXC2.js +0 -110
  964. package/dist/sends-E7Z65VUV.js +0 -349
  965. package/dist/sequences-T5M7T6HY.js +0 -146
  966. package/dist/set-prompt-JS376DSE.js +0 -199
  967. package/dist/setup-links-RSTRHPKH.js +0 -144
  968. package/dist/shared-INNJML54.js +0 -32
  969. package/dist/shopify-KASUSQAE.js +0 -3958
  970. package/dist/site-CGSIUC7N.js +0 -180
  971. package/dist/sitemaps-JXHJMTLU.js +0 -77
  972. package/dist/sites-UXBWI7WO.js +0 -97
  973. package/dist/skills-X5XTXI7E.js +0 -47
  974. package/dist/sources-AIGV6DQN.js +0 -457
  975. package/dist/sources-KK5FLKFL.js +0 -30
  976. package/dist/stale-XDMXW4AM.js +0 -90
  977. package/dist/stats-KWP52SMV.js +0 -34
  978. package/dist/status-7RVU6VHP.js +0 -65
  979. package/dist/sticker-XIP3YQHG.js +0 -94
  980. package/dist/sticker-XIP3YQHG.js.map +0 -1
  981. package/dist/stock-LB7DKL3L.js +0 -179
  982. package/dist/stock-LB7DKL3L.js.map +0 -1
  983. package/dist/studies-C6XQBKI6.js +0 -250
  984. package/dist/studio-HGMO77PU.js +0 -49
  985. package/dist/study-writes-XD4CWHMA.js +0 -470
  986. package/dist/suggest-EY4X3CGR.js +0 -66
  987. package/dist/sync-4WHT4CJS.js +0 -57
  988. package/dist/sync-KEWFMT6D.js +0 -279
  989. package/dist/sync-Y3OXWX3C.js +0 -55
  990. package/dist/sync-definition-E3MKIJP2.js +0 -70
  991. package/dist/tag-OHLDMOIE.js +0 -57
  992. package/dist/tag-manager-45NZFX7I.js +0 -43
  993. package/dist/tags-GLMZGAJ4.js +0 -227
  994. package/dist/tags-IDUL2WDF.js +0 -23
  995. package/dist/tags-MBP7RKJQ.js +0 -23
  996. package/dist/tags-UAWNPO5M.js +0 -23
  997. package/dist/tags-X2OZGIDJ.js +0 -26
  998. package/dist/targeting-WMQ5D3FI.js +0 -762
  999. package/dist/targeting-constants-25MFBDE2.js +0 -118
  1000. package/dist/targeting-criteria-UEOUMF2U.js +0 -113
  1001. package/dist/targets-OZ2VLDW6.js +0 -106
  1002. package/dist/terms-IDRQZRWC.js +0 -102
  1003. package/dist/testimonials-FYSEOFYU.js +0 -32
  1004. package/dist/themes-XYP2DCXI.js +0 -95
  1005. package/dist/top-companies-SEFYQRU5.js +0 -111
  1006. package/dist/transcript-YSUXDDPA.js +0 -165
  1007. package/dist/translate-NXWZAE2A.js +0 -603
  1008. package/dist/triggers-UDSWKKGR.js +0 -144
  1009. package/dist/tweets-7LDBHP3Y.js +0 -123
  1010. package/dist/unfollow-76PLUWRU.js +0 -46
  1011. package/dist/unlink-ACJ5OOEM.js +0 -70
  1012. package/dist/unstage-PHH5WTTH.js +0 -96
  1013. package/dist/unstage-YYBHQ5ZI.js +0 -88
  1014. package/dist/update-4BNEAWPH.js +0 -192
  1015. package/dist/update-CMITW6HO.js +0 -66
  1016. package/dist/update-HBQCEZ47.js +0 -81
  1017. package/dist/update-PZDPCWWJ.js +0 -155
  1018. package/dist/update-XXVNBVJC.js +0 -101
  1019. package/dist/upload-HQVNSAQX.js +0 -150
  1020. package/dist/upload-VIV3UFTQ.js +0 -130
  1021. package/dist/upscale-DRLDP2PM.js +0 -109
  1022. package/dist/url-options-AQUKV5I5.js +0 -131
  1023. package/dist/url-params-UKCEPW56.js +0 -101
  1024. package/dist/use-WKSR3Y2T.js +0 -111
  1025. package/dist/validate-AZRFBMPL.js +0 -125
  1026. package/dist/variant-DMGNLXWH.js +0 -338
  1027. package/dist/videos-V6ZPPTXM.js +0 -41
  1028. package/dist/view-O6PUTSFE.js +0 -121
  1029. package/dist/viewer-check-AFJEQXPY.js +0 -83
  1030. package/dist/web-CF3XGTKI.js +0 -143
  1031. package/dist/winners-T4AWAVNU.js +0 -113
  1032. package/dist/winning-ads-IDHEECGY.js +0 -86
  1033. package/dist/write-commands-6GIGWSF4.js +0 -206
  1034. package/dist/write-commands-HMMBM5OC.js +0 -1172
  1035. package/dist/write-commands-KYMBIZ7U.js +0 -713
  1036. package/dist/write-commands-Q4FTWGRN.js +0 -1525
  1037. package/dist/x-32EGBM42.js +0 -47
  1038. /package/dist/{account-6Q2YV7BN.js.map → account-3IA3PYDJ.js.map} +0 -0
  1039. /package/dist/{account-SM26TMGL.js.map → account-LO57QU6O.js.map} +0 -0
  1040. /package/dist/{account-44L7SBXK.js.map → account-V5XHQY2D.js.map} +0 -0
  1041. /package/dist/{account-assets-VJ5RZH4I.js.map → account-assets-BVEEUGDA.js.map} +0 -0
  1042. /package/dist/{account-level-KI4TEG3G.js.map → account-level-J37UFQY6.js.map} +0 -0
  1043. /package/dist/{account-reads-SU7FRG2G.js.map → account-reads-CPL3HLZ5.js.map} +0 -0
  1044. /package/dist/{account-users-SN44ZGW2.js.map → account-users-RF3VN6VL.js.map} +0 -0
  1045. /package/dist/{account-writes-LLRPQU2K.js.map → account-writes-MFKCVMMV.js.map} +0 -0
  1046. /package/dist/{accounts-Z33NFG5T.js.map → accounts-DTHZLL3R.js.map} +0 -0
  1047. /package/dist/{accounts-ASUFY2DV.js.map → accounts-FX6V37GX.js.map} +0 -0
  1048. /package/dist/{accounts-A2SGFRZP.js.map → accounts-GXJPLMHU.js.map} +0 -0
  1049. /package/dist/{accounts-QVZR4OMQ.js.map → accounts-HNZWMTRM.js.map} +0 -0
  1050. /package/dist/{accounts-MXVVT7S5.js.map → accounts-SJ5MKHKE.js.map} +0 -0
  1051. /package/dist/{actions-YXXC453H.js.map → actions-LRJRQXC3.js.map} +0 -0
  1052. /package/dist/{active-entities-EJCLPIKJ.js.map → active-entities-YIOKHGWY.js.map} +0 -0
  1053. /package/dist/{activecampaign-H6RPYUBL.js.map → activecampaign-DMFUWRD6.js.map} +0 -0
  1054. /package/dist/{activities-U7RC275G.js.map → activities-FXYVPCRJ.js.map} +0 -0
  1055. /package/dist/{ad-group-writes-OWJ4ATKU.js.map → ad-group-writes-WFYPFO7R.js.map} +0 -0
  1056. /package/dist/{ad-groups-IFF4G7CK.js.map → ad-groups-IPY3TJUX.js.map} +0 -0
  1057. /package/dist/{ad-writes-OB7BRW5T.js.map → ad-writes-LDNNN72V.js.map} +0 -0
  1058. /package/dist/{add-M6CZVT62.js.map → add-3EEREVFI.js.map} +0 -0
  1059. /package/dist/{add-HLDASH6G.js.map → add-FGB7KM6P.js.map} +0 -0
  1060. /package/dist/{add-MYRZZDLQ.js.map → add-FKINXOC2.js.map} +0 -0
  1061. /package/dist/{add-ZK6LDYDU.js.map → add-HSF5S544.js.map} +0 -0
  1062. /package/dist/{add-XOWVJ2JB.js.map → add-IOIY44HY.js.map} +0 -0
  1063. /package/dist/{add-LBER2JD6.js.map → add-MTYT3Q4T.js.map} +0 -0
  1064. /package/dist/{add-accounts-HUIKYKRU.js.map → add-accounts-WCDQRXRO.js.map} +0 -0
  1065. /package/dist/{ads-MFXNLNPB.js.map → ads-4O4TPDAU.js.map} +0 -0
  1066. /package/dist/{ads-LF24SJZF.js.map → ads-CDA6DGGZ.js.map} +0 -0
  1067. /package/dist/{ads-24GB65HI.js.map → ads-NTDJRTEG.js.map} +0 -0
  1068. /package/dist/{ads-325CHQN5.js.map → ads-YRV2YERG.js.map} +0 -0
  1069. /package/dist/{adsets-7ARHJS2F.js.map → adsets-OVFVN5NX.js.map} +0 -0
  1070. /package/dist/{advertisers-LELAFRUF.js.map → advertisers-663V2F2T.js.map} +0 -0
  1071. /package/dist/{advertisers-6ZUO7PX2.js.map → advertisers-T4AGXFN4.js.map} +0 -0
  1072. /package/dist/{analytics-ZNF4UVZW.js.map → analytics-MDIE5CPL.js.map} +0 -0
  1073. /package/dist/{analytics-GNZH6RGD.js.map → analytics-TLEWXYXV.js.map} +0 -0
  1074. /package/dist/{animate-YTC37USA.js.map → animate-CQON6SZE.js.map} +0 -0
  1075. /package/dist/{approved-KKCTQLK7.js.map → approved-RFZLJZJH.js.map} +0 -0
  1076. /package/dist/{asset-writes-HAELVVBJ.js.map → asset-writes-ZMSJSFTD.js.map} +0 -0
  1077. /package/dist/{assign-NDPGS3YZ.js.map → assign-N5PNZWUW.js.map} +0 -0
  1078. /package/dist/{audience-size-ZH7WBFQE.js.map → audience-size-GMANWKU5.js.map} +0 -0
  1079. /package/dist/{audience-writes-XQMSCRQM.js.map → audience-writes-BUWFC5W4.js.map} +0 -0
  1080. /package/dist/{audiences-ZCGMMUXF.js.map → audiences-GD2EPPJJ.js.map} +0 -0
  1081. /package/dist/{audiences-RLOXMBLX.js.map → audiences-KRI7E7FY.js.map} +0 -0
  1082. /package/dist/{audit-LLXV6ER5.js.map → audit-DQYC4R74.js.map} +0 -0
  1083. /package/dist/{audit-RKWO6DHD.js.map → audit-EGLLMYFY.js.map} +0 -0
  1084. /package/dist/{autocomplete-4IG6UPCD.js.map → autocomplete-6DUDQLRT.js.map} +0 -0
  1085. /package/dist/{avatars-BOHSTERG.js.map → avatars-UZN75NVZ.js.map} +0 -0
  1086. /package/dist/{bid-pricing-AAXXSHFA.js.map → bid-pricing-SQERHWYU.js.map} +0 -0
  1087. /package/dist/{brand-6A2NLGJT.js.map → brand-XY7EVNPW.js.map} +0 -0
  1088. /package/dist/{brief-XC72DOOR.js.map → brief-NMACLLA2.js.map} +0 -0
  1089. /package/dist/{campaign-groups-TYE2XFT3.js.map → campaign-groups-VWSLBQKJ.js.map} +0 -0
  1090. /package/dist/{campaign-writes-JWHRXUZZ.js.map → campaign-writes-DAL4EFIV.js.map} +0 -0
  1091. /package/dist/{campaign-writes-MGRQBCFJ.js.map → campaign-writes-FBIQOLRS.js.map} +0 -0
  1092. /package/dist/{campaigns-4HC42PEZ.js.map → campaigns-64JH3U6Z.js.map} +0 -0
  1093. /package/dist/{campaigns-OOHZEMNT.js.map → campaigns-KYI6WAXT.js.map} +0 -0
  1094. /package/dist/{campaigns-5UI2LNQN.js.map → campaigns-N75G2BDU.js.map} +0 -0
  1095. /package/dist/{campaigns-KUN7KPBU.js.map → campaigns-TKQDXU5H.js.map} +0 -0
  1096. /package/dist/{canvas-CRPVKLJX.js.map → canvas-DTJM2LTE.js.map} +0 -0
  1097. /package/dist/{capabilities-4UEXJERP.js.map → capabilities-O5UVQ4KK.js.map} +0 -0
  1098. /package/dist/{cards-3DLNTDSG.js.map → cards-TTQTPLCO.js.map} +0 -0
  1099. /package/dist/{catalog-4HOTBBN6.js.map → catalog-6CXOEKBI.js.map} +0 -0
  1100. /package/dist/{catalogs-GDDFWLKE.js.map → catalogs-ETVY5OZ5.js.map} +0 -0
  1101. /package/dist/{catalogs-NU7SKAUB.js.map → catalogs-LI7NG57R.js.map} +0 -0
  1102. /package/dist/{changes-APSTXCNZ.js.map → changes-MHNRAC2E.js.map} +0 -0
  1103. /package/dist/{chatgpt-QEV72AO4.js.map → chatgpt-GINMQJBI.js.map} +0 -0
  1104. /package/dist/{check-X3D7LTUW.js.map → check-RRHOCY2U.js.map} +0 -0
  1105. /package/dist/{chunk-66O7GGOB.js.map → chunk-2AJ5UNOF.js.map} +0 -0
  1106. /package/dist/{chunk-3DKEESUG.js.map → chunk-2Y3VZILY.js.map} +0 -0
  1107. /package/dist/{chunk-WZTSS4SH.js.map → chunk-35FLLWSQ.js.map} +0 -0
  1108. /package/dist/{chunk-4RAO7ORZ.js.map → chunk-3BOPIUO6.js.map} +0 -0
  1109. /package/dist/{chunk-O57XNXSN.js.map → chunk-3PG7O3ZW.js.map} +0 -0
  1110. /package/dist/{chunk-S6VFDNSQ.js.map → chunk-3RWSYI6N.js.map} +0 -0
  1111. /package/dist/{chunk-VR6OMSSP.js.map → chunk-4GQJOHJY.js.map} +0 -0
  1112. /package/dist/{chunk-RPFZLVPG.js.map → chunk-4OY6SHHM.js.map} +0 -0
  1113. /package/dist/{chunk-ZN22VDFS.js.map → chunk-4PWC4KAK.js.map} +0 -0
  1114. /package/dist/{chunk-TGTQIYST.js.map → chunk-4QLVMG63.js.map} +0 -0
  1115. /package/dist/{chunk-MBLKAZUZ.js.map → chunk-5MMAYAWR.js.map} +0 -0
  1116. /package/dist/{chunk-IMBPX3OO.js.map → chunk-5VVXF3OS.js.map} +0 -0
  1117. /package/dist/{chunk-2IB2I7X6.js.map → chunk-5Y3EEI52.js.map} +0 -0
  1118. /package/dist/{chunk-4O3FECSO.js.map → chunk-6EMVPPSQ.js.map} +0 -0
  1119. /package/dist/{chunk-UODX4YIA.js.map → chunk-6KWPAPFL.js.map} +0 -0
  1120. /package/dist/{chunk-U645Z2TL.js.map → chunk-77MDZIHK.js.map} +0 -0
  1121. /package/dist/{chunk-FWIQZEJ4.js.map → chunk-7ZYXRMSM.js.map} +0 -0
  1122. /package/dist/{chunk-2MRK75I3.js.map → chunk-A5PQYKVO.js.map} +0 -0
  1123. /package/dist/{chunk-VP4PO7FW.js.map → chunk-AA3WWPX2.js.map} +0 -0
  1124. /package/dist/{chunk-KWYHZ454.js.map → chunk-AL6373J7.js.map} +0 -0
  1125. /package/dist/{chunk-PDOP76SF.js.map → chunk-AMHVCMBW.js.map} +0 -0
  1126. /package/dist/{chunk-EJWTQDKA.js.map → chunk-AXSSATJW.js.map} +0 -0
  1127. /package/dist/{chunk-3FEOMQUT.js.map → chunk-B52GKPH2.js.map} +0 -0
  1128. /package/dist/{chunk-Y3SGBJN7.js.map → chunk-BBGKZJXP.js.map} +0 -0
  1129. /package/dist/{chunk-J4MDC54C.js.map → chunk-BQYSBQZ3.js.map} +0 -0
  1130. /package/dist/{chunk-DSK6RDUR.js.map → chunk-BYZQ43VI.js.map} +0 -0
  1131. /package/dist/{chunk-X6AHLUC7.js.map → chunk-C35UMKYG.js.map} +0 -0
  1132. /package/dist/{chunk-CHOCMV4I.js.map → chunk-C54JXXV3.js.map} +0 -0
  1133. /package/dist/{chunk-GUB3GIXZ.js.map → chunk-C753PJBU.js.map} +0 -0
  1134. /package/dist/{chunk-FPCJANX2.js.map → chunk-CB7GZQVN.js.map} +0 -0
  1135. /package/dist/{chunk-V6F2QWUZ.js.map → chunk-CM2LECNX.js.map} +0 -0
  1136. /package/dist/{chunk-4ZPR265V.js.map → chunk-CTBDVZ5E.js.map} +0 -0
  1137. /package/dist/{chunk-CKTVRR3D.js.map → chunk-CV35AJYT.js.map} +0 -0
  1138. /package/dist/{chunk-KGTDEZBS.js.map → chunk-D2F73AUY.js.map} +0 -0
  1139. /package/dist/{chunk-7UTWZGIV.js.map → chunk-DNRXEP4A.js.map} +0 -0
  1140. /package/dist/{chunk-S4XSCFFN.js.map → chunk-DR4TIYTE.js.map} +0 -0
  1141. /package/dist/{chunk-SBFNGJ4C.js.map → chunk-EAHBTBVR.js.map} +0 -0
  1142. /package/dist/{chunk-UBDY5RE4.js.map → chunk-EJBHZ7AQ.js.map} +0 -0
  1143. /package/dist/{chunk-WWLZ5RRU.js.map → chunk-EKQCHHZW.js.map} +0 -0
  1144. /package/dist/{chunk-TM5UTSE4.js.map → chunk-ELAYD7O3.js.map} +0 -0
  1145. /package/dist/{chunk-QSZPHIQ7.js.map → chunk-FOD5VSHH.js.map} +0 -0
  1146. /package/dist/{chunk-HF73QMN2.js.map → chunk-FRUOWEWZ.js.map} +0 -0
  1147. /package/dist/{chunk-CW2RHRH5.js.map → chunk-FSLSISPI.js.map} +0 -0
  1148. /package/dist/{chunk-GZS34VKU.js.map → chunk-G523URK2.js.map} +0 -0
  1149. /package/dist/{chunk-5K554VU2.js.map → chunk-G6KE737R.js.map} +0 -0
  1150. /package/dist/{chunk-YPUHGB2E.js.map → chunk-GNZM7SWV.js.map} +0 -0
  1151. /package/dist/{chunk-A4T5JI75.js.map → chunk-GRXBD43G.js.map} +0 -0
  1152. /package/dist/{chunk-7BJZF77Q.js.map → chunk-GT76FWES.js.map} +0 -0
  1153. /package/dist/{chunk-LLJW5F2C.js.map → chunk-GTIQUOYC.js.map} +0 -0
  1154. /package/dist/{chunk-OYNBUT5X.js.map → chunk-GTV62WIS.js.map} +0 -0
  1155. /package/dist/{chunk-XBLD5EKJ.js.map → chunk-GY6N42PE.js.map} +0 -0
  1156. /package/dist/{chunk-H23ZPEIQ.js.map → chunk-H27R5IVQ.js.map} +0 -0
  1157. /package/dist/{chunk-I7AYMJZA.js.map → chunk-HHQYP6RM.js.map} +0 -0
  1158. /package/dist/{chunk-PZ7F2BYO.js.map → chunk-HN7GK5UX.js.map} +0 -0
  1159. /package/dist/{chunk-YBE5AAEC.js.map → chunk-I6W6FAUZ.js.map} +0 -0
  1160. /package/dist/{chunk-FUC6WHQM.js.map → chunk-IJ5DWALA.js.map} +0 -0
  1161. /package/dist/{chunk-PL4RLWSQ.js.map → chunk-ITKTTDC2.js.map} +0 -0
  1162. /package/dist/{chunk-EPSAWDYY.js.map → chunk-JD4DSJPT.js.map} +0 -0
  1163. /package/dist/{chunk-VEWMX5XZ.js.map → chunk-JQSN5K5B.js.map} +0 -0
  1164. /package/dist/{chunk-TWXL3GA7.js.map → chunk-JUFABKU4.js.map} +0 -0
  1165. /package/dist/{chunk-Z636K6AJ.js.map → chunk-K5CEP7W4.js.map} +0 -0
  1166. /package/dist/{chunk-JBQXHR3O.js.map → chunk-KAJXOGQ2.js.map} +0 -0
  1167. /package/dist/{chunk-6ZX3Q4X7.js.map → chunk-KDDHMKTU.js.map} +0 -0
  1168. /package/dist/{chunk-CTZY7QMT.js.map → chunk-KG7WIVNG.js.map} +0 -0
  1169. /package/dist/{chunk-4BKXWROD.js.map → chunk-KJOEW2PI.js.map} +0 -0
  1170. /package/dist/{chunk-YYLNXT6O.js.map → chunk-KVBNUGQ6.js.map} +0 -0
  1171. /package/dist/{chunk-6THXOWAP.js.map → chunk-LBIF6FJY.js.map} +0 -0
  1172. /package/dist/{chunk-V3YJ3BTV.js.map → chunk-LXV2U4MI.js.map} +0 -0
  1173. /package/dist/{chunk-ZYWER6HE.js.map → chunk-M7FP7DKN.js.map} +0 -0
  1174. /package/dist/{chunk-NT4KXGNJ.js.map → chunk-MFAFGQ7Z.js.map} +0 -0
  1175. /package/dist/{chunk-VSH7UW4P.js.map → chunk-MLMQR24H.js.map} +0 -0
  1176. /package/dist/{chunk-N64IH7FU.js.map → chunk-MM6CCIL7.js.map} +0 -0
  1177. /package/dist/{chunk-BLXFCH3B.js.map → chunk-MWJNFGV6.js.map} +0 -0
  1178. /package/dist/{chunk-SPZYWS6Z.js.map → chunk-N2MZLW6O.js.map} +0 -0
  1179. /package/dist/{chunk-UBTGSMWE.js.map → chunk-NGXZQESA.js.map} +0 -0
  1180. /package/dist/{chunk-GXN7TMQO.js.map → chunk-NJIRVF2B.js.map} +0 -0
  1181. /package/dist/{chunk-ERYI4T2D.js.map → chunk-NNG4QCKJ.js.map} +0 -0
  1182. /package/dist/{chunk-FVVK6XZ2.js.map → chunk-NPF4KTRK.js.map} +0 -0
  1183. /package/dist/{chunk-IC2X5X7J.js.map → chunk-NQ5O2NCJ.js.map} +0 -0
  1184. /package/dist/{chunk-JE3RHIQE.js.map → chunk-NRMJWNX3.js.map} +0 -0
  1185. /package/dist/{chunk-VWOKRMUG.js.map → chunk-OTGHCGLW.js.map} +0 -0
  1186. /package/dist/{chunk-QPGPOILB.js.map → chunk-OU4TDC2P.js.map} +0 -0
  1187. /package/dist/{chunk-6LU64W5J.js.map → chunk-OYYAR5TD.js.map} +0 -0
  1188. /package/dist/{chunk-56OEYUJU.js.map → chunk-P7WISPGE.js.map} +0 -0
  1189. /package/dist/{chunk-ZHHRXHWD.js.map → chunk-PEGRQV66.js.map} +0 -0
  1190. /package/dist/{chunk-IW4JBXYF.js.map → chunk-PQN4PIC6.js.map} +0 -0
  1191. /package/dist/{chunk-TV4OZFMW.js.map → chunk-R2VP7FK4.js.map} +0 -0
  1192. /package/dist/{chunk-SG2TDQEE.js.map → chunk-RD63FPG6.js.map} +0 -0
  1193. /package/dist/{chunk-C2MBBIZ4.js.map → chunk-RFR7ZN3P.js.map} +0 -0
  1194. /package/dist/{chunk-CXRP4X3D.js.map → chunk-RGSSKOTZ.js.map} +0 -0
  1195. /package/dist/{chunk-OQ4PTNNH.js.map → chunk-RW32BYY3.js.map} +0 -0
  1196. /package/dist/{chunk-JRX25GPP.js.map → chunk-S4JAHRIW.js.map} +0 -0
  1197. /package/dist/{chunk-X3QG3PKT.js.map → chunk-S6KZ4GDL.js.map} +0 -0
  1198. /package/dist/{chunk-FR3M23HS.js.map → chunk-SBSFCKOC.js.map} +0 -0
  1199. /package/dist/{chunk-57V44RUD.js.map → chunk-SMDJW5W4.js.map} +0 -0
  1200. /package/dist/{chunk-SM3RFN3C.js.map → chunk-TFN7L5H3.js.map} +0 -0
  1201. /package/dist/{chunk-RC52N27Q.js.map → chunk-THV7SMY6.js.map} +0 -0
  1202. /package/dist/{chunk-YSG2KO4U.js.map → chunk-TNQJDM2P.js.map} +0 -0
  1203. /package/dist/{chunk-3PRPX5L7.js.map → chunk-TQDZQT6U.js.map} +0 -0
  1204. /package/dist/{chunk-IPMOG2RC.js.map → chunk-U4CYQMG5.js.map} +0 -0
  1205. /package/dist/{chunk-JAV6VUQH.js.map → chunk-UC46M2KW.js.map} +0 -0
  1206. /package/dist/{chunk-44ZRCSR7.js.map → chunk-UIPSSTMA.js.map} +0 -0
  1207. /package/dist/{chunk-FQTMVJEO.js.map → chunk-UMQCYEAL.js.map} +0 -0
  1208. /package/dist/{chunk-532FZFV2.js.map → chunk-UT4OM34H.js.map} +0 -0
  1209. /package/dist/{chunk-DTZNC4XD.js.map → chunk-VMUJ6JHR.js.map} +0 -0
  1210. /package/dist/{chunk-LTXL475T.js.map → chunk-VPHHCOYS.js.map} +0 -0
  1211. /package/dist/{chunk-EDIDGJ6Y.js.map → chunk-VWKFQ4ZY.js.map} +0 -0
  1212. /package/dist/{chunk-RJ675DP3.js.map → chunk-W3PJ7V4W.js.map} +0 -0
  1213. /package/dist/{chunk-PXM3ZGEC.js.map → chunk-WAE4G3Q6.js.map} +0 -0
  1214. /package/dist/{chunk-SBO3MOWQ.js.map → chunk-WI3TCYEA.js.map} +0 -0
  1215. /package/dist/{chunk-KDQWUSG4.js.map → chunk-WQQ7SH3M.js.map} +0 -0
  1216. /package/dist/{chunk-5CXLLV7A.js.map → chunk-WTODFKZR.js.map} +0 -0
  1217. /package/dist/{chunk-XQXIRL74.js.map → chunk-WTYKTPZP.js.map} +0 -0
  1218. /package/dist/{chunk-S2TDC2VI.js.map → chunk-XFMFZAWL.js.map} +0 -0
  1219. /package/dist/{chunk-YQIURUEL.js.map → chunk-YFIWCMVC.js.map} +0 -0
  1220. /package/dist/{chunk-AYZICIKF.js.map → chunk-Z4BU2JVK.js.map} +0 -0
  1221. /package/dist/{chunk-C4PD5NES.js.map → chunk-ZI7CLQB5.js.map} +0 -0
  1222. /package/dist/{chunk-AIOKWGMO.js.map → chunk-ZPF253G5.js.map} +0 -0
  1223. /package/dist/{claim-QQ3IXNSN.js.map → claim-ZKKC5472.js.map} +0 -0
  1224. /package/dist/{client-IILD75KL.js.map → client-SZ4N5NCP.js.map} +0 -0
  1225. /package/dist/{code-OWFBQYZS.js.map → code-RZXUOVH3.js.map} +0 -0
  1226. /package/dist/{companies-QRENWGJS.js.map → companies-CJFQ63MC.js.map} +0 -0
  1227. /package/dist/{company-CGERR3R7.js.map → company-7K4EDRIN.js.map} +0 -0
  1228. /package/dist/{complete-7JD5XWHZ.js.map → complete-ODOQLGSO.js.map} +0 -0
  1229. /package/dist/{config-JPA4ZHN2.js.map → config-7RX352G2.js.map} +0 -0
  1230. /package/dist/{connect-ZWWL2GLU.js.map → connect-APAK3WAY.js.map} +0 -0
  1231. /package/dist/{content-SOGZTYNO.js.map → content-BOERUNX4.js.map} +0 -0
  1232. /package/dist/{conversation-TAWGHMFS.js.map → conversation-B6V3VCT5.js.map} +0 -0
  1233. /package/dist/{conversion-report-ABOKPW3U.js.map → conversion-report-JNWBTLA5.js.map} +0 -0
  1234. /package/dist/{conversion-upload-command-BEU3AGKB.js.map → conversion-upload-command-6OKMSO2T.js.map} +0 -0
  1235. /package/dist/{conversion-writes-2HEJ5SYB.js.map → conversion-writes-2VOWP4RD.js.map} +0 -0
  1236. /package/dist/{conversions-6XAGZJ7Z.js.map → conversions-D32UTEPH.js.map} +0 -0
  1237. /package/dist/{conversions-UNYDKOB3.js.map → conversions-JGIBYLK5.js.map} +0 -0
  1238. /package/dist/{copy-writes-RF7MUAWA.js.map → copy-writes-PVWZEU4S.js.map} +0 -0
  1239. /package/dist/{countries-4XNZESRQ.js.map → countries-Z4IQIMWQ.js.map} +0 -0
  1240. /package/dist/{create-UPWF46TX.js.map → create-ALMXIVHA.js.map} +0 -0
  1241. /package/dist/{create-5PMYFFWZ.js.map → create-EUQYK2SH.js.map} +0 -0
  1242. /package/dist/{create-RVB4UTZ4.js.map → create-TOCR7EFZ.js.map} +0 -0
  1243. /package/dist/{create-QFPLBMJR.js.map → create-VAGPIZTU.js.map} +0 -0
  1244. /package/dist/{creatives-EZRUJAW4.js.map → creatives-62PV7BIF.js.map} +0 -0
  1245. /package/dist/{creatives-W6GRZX7X.js.map → creatives-HUDKBUDS.js.map} +0 -0
  1246. /package/dist/{credentials-WDJULILX.js.map → credentials-WCD4F225.js.map} +0 -0
  1247. /package/dist/{critique-TVP76CIX.js.map → critique-KJXHSKLT.js.map} +0 -0
  1248. /package/dist/{critique-2IXJR2KB.js.map → critique-OO6SORTA.js.map} +0 -0
  1249. /package/dist/{crm-S36XN5QR.js.map → crm-5CYCCV34.js.map} +0 -0
  1250. /package/dist/{crm-32RA7QHK.js.map → crm-YVRIT2RL.js.map} +0 -0
  1251. /package/dist/{crop-L3ALN7OW.js.map → crop-JRVHX3PX.js.map} +0 -0
  1252. /package/dist/{currency-N6ARW3QB.js.map → currency-SH4DDE3X.js.map} +0 -0
  1253. /package/dist/{customers-7RPTQHNS.js.map → customers-FSOXPMOU.js.map} +0 -0
  1254. /package/dist/{decide-LE7542FR.js.map → decide-MPNAZFAK.js.map} +0 -0
  1255. /package/dist/{delete-UA3DDTCH.js.map → delete-EEU6WJ6M.js.map} +0 -0
  1256. /package/dist/{delete-35NTMQY5.js.map → delete-FWPYWUNU.js.map} +0 -0
  1257. /package/dist/{delete-B7JWSVXN.js.map → delete-H7IWZGUZ.js.map} +0 -0
  1258. /package/dist/{delete-HJZYARS4.js.map → delete-JPSIBQXR.js.map} +0 -0
  1259. /package/dist/{delete-DUK6QH53.js.map → delete-QXZFJNUS.js.map} +0 -0
  1260. /package/dist/{delete-CL3N2FD6.js.map → delete-RLLRUSGR.js.map} +0 -0
  1261. /package/dist/{demographics-6Z5AR6PO.js.map → demographics-RM5PA54R.js.map} +0 -0
  1262. /package/dist/{describe-PP7D2RE5.js.map → describe-OUYPLJJE.js.map} +0 -0
  1263. /package/dist/{describe-VXQA5AHV.js.map → describe-XQGFIM2Z.js.map} +0 -0
  1264. /package/dist/{dimensions-WUQGLVX6.js.map → dimensions-MMVCXOFJ.js.map} +0 -0
  1265. /package/dist/{discard-XL5LST7I.js.map → discard-6XOYXNZ6.js.map} +0 -0
  1266. /package/dist/{discover-FMF3PNGM.js.map → discover-VEHKBNCY.js.map} +0 -0
  1267. /package/dist/{discover-PDVS3ITO.js.map → discover-Z6NS3BP6.js.map} +0 -0
  1268. /package/dist/{domain-UWNKEZOG.js.map → domain-X7MT3XUG.js.map} +0 -0
  1269. /package/dist/{download-FZJLCOSU.js.map → download-3JW2NTQZ.js.map} +0 -0
  1270. /package/dist/{download-P7JGNU2K.js.map → download-YQYR5GUP.js.map} +0 -0
  1271. /package/dist/{draft-QC5U3HH7.js.map → draft-DSWC37IW.js.map} +0 -0
  1272. /package/dist/{draft-RBWJ2KMU.js.map → draft-DUAFRL2G.js.map} +0 -0
  1273. /package/dist/{draft-ZEBANBH6.js.map → draft-FXMGEY3E.js.map} +0 -0
  1274. /package/dist/{draft-4HU72A2M.js.map → draft-KWXV5YOG.js.map} +0 -0
  1275. /package/dist/{draft-QK7WP6KI.js.map → draft-UMNPM5KA.js.map} +0 -0
  1276. /package/dist/{draft-3E352XHY.js.map → draft-XWHU5C5Z.js.map} +0 -0
  1277. /package/dist/{draft-EIKC67A4.js.map → draft-YXGASP7M.js.map} +0 -0
  1278. /package/dist/{env-KCFPWDRZ.js.map → env-O2JJK34F.js.map} +0 -0
  1279. /package/dist/{experiment-55H6NBF4.js.map → experiment-2TTMKPVC.js.map} +0 -0
  1280. /package/dist/{experiments-A5WEGGYM.js.map → experiments-2XOC77Y7.js.map} +0 -0
  1281. /package/dist/{export-JSQ62QLT.js.map → export-LRPJXAFA.js.map} +0 -0
  1282. /package/dist/{facets-WSZFBNLK.js.map → facets-7Q36JF2D.js.map} +0 -0
  1283. /package/dist/{favorites-PZIXDJTK.js.map → favorites-UXNAI5XW.js.map} +0 -0
  1284. /package/dist/{feed-GTJWBM3A.js.map → feed-OTUTIGJ6.js.map} +0 -0
  1285. /package/dist/{feedback-QNAWM3CD.js.map → feedback-WPV2RKJS.js.map} +0 -0
  1286. /package/dist/{feedback-record-74K6PMW5.js.map → feedback-record-UEWS4FZJ.js.map} +0 -0
  1287. /package/dist/{fetch-D3SDXYHO.js.map → fetch-AARAG6UL.js.map} +0 -0
  1288. /package/dist/{fetch-DH3FYWNG.js.map → fetch-AG7JJ4BI.js.map} +0 -0
  1289. /package/dist/{find-Q6YSXK5B.js.map → find-JH5OMTGJ.js.map} +0 -0
  1290. /package/dist/{fit-APYTXM7S.js.map → fit-T4ALNNXL.js.map} +0 -0
  1291. /package/dist/{flows-CWQB4FEJ.js.map → flows-PYPA2FM3.js.map} +0 -0
  1292. /package/dist/{follow-B5LYKQYZ.js.map → follow-WHLTIJPM.js.map} +0 -0
  1293. /package/dist/{follow-competitors-7NHOQPC6.js.map → follow-competitors-DO7RVQXT.js.map} +0 -0
  1294. /package/dist/{following-2M4SVFML.js.map → following-ZL34FZ32.js.map} +0 -0
  1295. /package/dist/{fonts-5BGGVGBL.js.map → fonts-H2GG2JXA.js.map} +0 -0
  1296. /package/dist/{forecast-QOOCK3YT.js.map → forecast-LMSPNY6X.js.map} +0 -0
  1297. /package/dist/{forecast-IYHLC5L6.js.map → forecast-UYBYSH3Y.js.map} +0 -0
  1298. /package/dist/{funding-7KPXTSSF.js.map → funding-55XBHYY6.js.map} +0 -0
  1299. /package/dist/{funnel-YS5327T3.js.map → funnel-KIYPFPIY.js.map} +0 -0
  1300. /package/dist/{ga4-IHDHHB4A.js.map → ga4-WIOBF5HW.js.map} +0 -0
  1301. /package/dist/{generate-LR4TZ635.js.map → generate-QG7GX6WO.js.map} +0 -0
  1302. /package/dist/{get-L643OWL6.js.map → get-IGXC3JQ5.js.map} +0 -0
  1303. /package/dist/{get-ZK2H5LRZ.js.map → get-IN6UXQRX.js.map} +0 -0
  1304. /package/dist/{get-X7CWNYQT.js.map → get-P5Z274DM.js.map} +0 -0
  1305. /package/dist/{get-BLLJDQK7.js.map → get-QA333Q5J.js.map} +0 -0
  1306. /package/dist/{get-PM5BVMMG.js.map → get-ROETYEYF.js.map} +0 -0
  1307. /package/dist/{get-UOSUCNQL.js.map → get-TXVHONYI.js.map} +0 -0
  1308. /package/dist/{get-B4DL3RSO.js.map → get-WEWFUNWZ.js.map} +0 -0
  1309. /package/dist/{get-EBGMLBMQ.js.map → get-Z46N7LBR.js.map} +0 -0
  1310. /package/dist/{google-GKW4CPUS.js.map → google-ZT3J3G4Z.js.map} +0 -0
  1311. /package/dist/{google-ads-HZUAYKS5.js.map → google-ads-CBJZKTXG.js.map} +0 -0
  1312. /package/dist/{group-B7MU5SKI.js.map → group-6ENUPDYO.js.map} +0 -0
  1313. /package/dist/{group-WU4LKKX7.js.map → group-EYF34B3P.js.map} +0 -0
  1314. /package/dist/{gsc-TP5PZHZG.js.map → gsc-KDE2DTH2.js.map} +0 -0
  1315. /package/dist/{history-GOEZEU6C.js.map → history-GTT55ZP7.js.map} +0 -0
  1316. /package/dist/{history-LB53QEBX.js.map → history-UYG35MNJ.js.map} +0 -0
  1317. /package/dist/{history-RZ5ZPPYD.js.map → history-XOB23MLX.js.map} +0 -0
  1318. /package/dist/{hubspot-JUUVPODR.js.map → hubspot-B6Z77JY6.js.map} +0 -0
  1319. /package/dist/{icon-6BMRXD4X.js.map → icon-N77IGSXP.js.map} +0 -0
  1320. /package/dist/{ideas-P2RVSLFZ.js.map → ideas-RVK4RNKN.js.map} +0 -0
  1321. /package/dist/{images-LVHJRQ2Y.js.map → images-RGJZ6FJL.js.map} +0 -0
  1322. /package/dist/{improve-IX6E7OYO.js.map → improve-BKFZOBXI.js.map} +0 -0
  1323. /package/dist/{ingest-OBEZXXEM.js.map → ingest-7FHCKRYR.js.map} +0 -0
  1324. /package/dist/{ingest-EOS4AS7U.js.map → ingest-GBWY2ZEP.js.map} +0 -0
  1325. /package/dist/{insights-NYWJYDS6.js.map → insights-7CQJOBWX.js.map} +0 -0
  1326. /package/dist/{inspect-KU5IKVXR.js.map → inspect-RC6GKLIF.js.map} +0 -0
  1327. /package/dist/{inspiration-3EXSU5HR.js.map → inspiration-SQUEBO2K.js.map} +0 -0
  1328. /package/dist/{intent-M5KVGRGP.js.map → intent-P75BDP4H.js.map} +0 -0
  1329. /package/dist/{job-LE5AG6HJ.js.map → job-B6UEZLTA.js.map} +0 -0
  1330. /package/dist/{job-create-QKYEPYNE.js.map → job-create-WM27NOGZ.js.map} +0 -0
  1331. /package/dist/{job-status-OG7S2LFM.js.map → job-status-6V7DVVYL.js.map} +0 -0
  1332. /package/dist/{keep-WG3T4MKZ.js.map → keep-ACLZB7KL.js.map} +0 -0
  1333. /package/dist/{keyword-gap-U6R4TI64.js.map → keyword-gap-54F6CZLM.js.map} +0 -0
  1334. /package/dist/{keyword-metrics-QVCLFUQU.js.map → keyword-metrics-PL5IYZGN.js.map} +0 -0
  1335. /package/dist/{keywords-for-site-2AKZFIA4.js.map → keywords-for-site-4FMJ5IGN.js.map} +0 -0
  1336. /package/dist/{knowledge-IIWKDS45.js.map → knowledge-5VEMAHG7.js.map} +0 -0
  1337. /package/dist/{landing-WYYB7YGD.js.map → landing-24TVKWTP.js.map} +0 -0
  1338. /package/dist/{landings-2CNV325Q.js.map → landings-Q7T2HSYK.js.map} +0 -0
  1339. /package/dist/{languages-5LHOEANO.js.map → languages-HWMPAPQN.js.map} +0 -0
  1340. /package/dist/{languages-FGCGQ3TG.js.map → languages-PEGOE365.js.map} +0 -0
  1341. /package/dist/{launches-EWT3LHCQ.js.map → launches-4HI65M3C.js.map} +0 -0
  1342. /package/dist/{layerize-QXALSA7Q.js.map → layerize-HXML3KQX.js.map} +0 -0
  1343. /package/dist/{lead-routes-FAG5FOZK.js.map → lead-routes-Q2T3RQXN.js.map} +0 -0
  1344. /package/dist/{leads-Y4IHMZ3J.js.map → leads-6TFBPYMM.js.map} +0 -0
  1345. /package/dist/{learn-VYJYHPLD.js.map → learn-4LGNFGWH.js.map} +0 -0
  1346. /package/dist/{library-5XZP2W22.js.map → library-OVX3OUYV.js.map} +0 -0
  1347. /package/dist/{lighthouse-KAMY3KYG.js.map → lighthouse-2TDPDU7J.js.map} +0 -0
  1348. /package/dist/{line-item-writes-NEKWC55T.js.map → line-item-writes-AOTRDB4L.js.map} +0 -0
  1349. /package/dist/{line-items-KYQ7LCXV.js.map → line-items-ERV3F2EI.js.map} +0 -0
  1350. /package/dist/{link-QEVXGOTQ.js.map → link-QZXI5YJP.js.map} +0 -0
  1351. /package/dist/{linkedin-YKGXBXIA.js.map → linkedin-4BKZ5KUE.js.map} +0 -0
  1352. /package/dist/{linkedin-person-L2K2IVXM.js.map → linkedin-person-ZLXMOG2U.js.map} +0 -0
  1353. /package/dist/{list-2ALP36HR.js.map → list-7FB6764Q.js.map} +0 -0
  1354. /package/dist/{list-SRY3XZOE.js.map → list-AAQISQHE.js.map} +0 -0
  1355. /package/dist/{list-DFT77FDO.js.map → list-QHAYR2IQ.js.map} +0 -0
  1356. /package/dist/{list-AZEHYDU7.js.map → list-QYUU66YV.js.map} +0 -0
  1357. /package/dist/{list-PBGDATAC.js.map → list-SDHECXK5.js.map} +0 -0
  1358. /package/dist/{list-AL2HOLWI.js.map → list-U3ZABSGW.js.map} +0 -0
  1359. /package/dist/{list-3OZVH4S4.js.map → list-UCQEHPIR.js.map} +0 -0
  1360. /package/dist/{list-GHV6665E.js.map → list-UF7Y4FDE.js.map} +0 -0
  1361. /package/dist/{list-4VJY4BCV.js.map → list-VO473W6E.js.map} +0 -0
  1362. /package/dist/{locations-LRDYJ43Z.js.map → locations-MXWGZIGU.js.map} +0 -0
  1363. /package/dist/{locations-QW7BBT65.js.map → locations-SHYN5J4Q.js.map} +0 -0
  1364. /package/dist/{log-J4R5IMNC.js.map → log-WPZRUMZU.js.map} +0 -0
  1365. /package/dist/{logo-DBIXKWDV.js.map → logo-2NDZ2EVN.js.map} +0 -0
  1366. /package/dist/{lookup-CNAZI7WN.js.map → lookup-UFVB2ZZF.js.map} +0 -0
  1367. /package/dist/{make-3ADQJI67.js.map → make-VCAS2M2W.js.map} +0 -0
  1368. /package/dist/{map-ZX6624KU.js.map → map-5EQO2VXB.js.map} +0 -0
  1369. /package/dist/{mcp-CHQT6PQX.js.map → mcp-CKOYL4IU.js.map} +0 -0
  1370. /package/dist/{media-JESBPCT4.js.map → media-3M3PVSEZ.js.map} +0 -0
  1371. /package/dist/{media-7UAKHZZT.js.map → media-5XRMDMKD.js.map} +0 -0
  1372. /package/dist/{media-sources-JDQH37BR.js.map → media-sources-EDZ2PBJY.js.map} +0 -0
  1373. /package/dist/{members-LNZ6QJRQ.js.map → members-E2AGJIU6.js.map} +0 -0
  1374. /package/dist/{meme-QC4B2UOE.js.map → meme-EOAFE4FS.js.map} +0 -0
  1375. /package/dist/{meta-RKKGFD2Q.js.map → meta-CTKXBVXT.js.map} +0 -0
  1376. /package/dist/{metrics-SSHSXP27.js.map → metrics-25LYUEB7.js.map} +0 -0
  1377. /package/dist/{models-6N3BB77L.js.map → models-EU3NO4IY.js.map} +0 -0
  1378. /package/dist/{normalize-TGEEW5J4.js.map → normalize-NDBXU6UO.js.map} +0 -0
  1379. /package/dist/{normalize-32DXOVZ6.js.map → normalize-PHJT5CAD.js.map} +0 -0
  1380. /package/dist/{options-WPFLRMPU.js.map → options-KFABOCWK.js.map} +0 -0
  1381. /package/dist/{organization-RDDPXG6L.js.map → organization-BP5DTWL7.js.map} +0 -0
  1382. /package/dist/{output-LTK2VAI2.js.map → output-KIQWBKKA.js.map} +0 -0
  1383. /package/dist/{page-O7HY2KDR.js.map → page-GGT3KZ5E.js.map} +0 -0
  1384. /package/dist/{page-photos-IIBLD2M4.js.map → page-photos-FKWHLNWM.js.map} +0 -0
  1385. /package/dist/{performance-UH7XFLLZ.js.map → performance-C4M3GJPC.js.map} +0 -0
  1386. /package/dist/{performance-2Y7VTU7Z.js.map → performance-H3SJD3SN.js.map} +0 -0
  1387. /package/dist/{pixels-XXBXR2V6.js.map → pixels-NLH2PN6Q.js.map} +0 -0
  1388. /package/dist/{plan-XJX4BAFS.js.map → plan-223DL4HG.js.map} +0 -0
  1389. /package/dist/{posts-QEJH7VY4.js.map → posts-YPW4NHWM.js.map} +0 -0
  1390. /package/dist/{preview-KMBPUIKX.js.map → preview-CD2QADBJ.js.map} +0 -0
  1391. /package/dist/{profile-HH657NFJ.js.map → profile-7KUWZTJR.js.map} +0 -0
  1392. /package/dist/{promoted-tweet-writes-JVTDWIR6.js.map → promoted-tweet-writes-ATWAKV6N.js.map} +0 -0
  1393. /package/dist/{promoted-tweets-6IXM3SQ5.js.map → promoted-tweets-TWQP3MDP.js.map} +0 -0
  1394. /package/dist/{properties-2BEJQW4Y.js.map → properties-LCZX4UJH.js.map} +0 -0
  1395. /package/dist/{publish-LZKE7SVL.js.map → publish-Q4W7MI7P.js.map} +0 -0
  1396. /package/dist/{query-SMIKGUVW.js.map → query-RKJS3QOS.js.map} +0 -0
  1397. /package/dist/{query-VG3SSIZW.js.map → query-TP3L4W7Z.js.map} +0 -0
  1398. /package/dist/{query-CBSXU3D6.js.map → query-WX3K7ZDY.js.map} +0 -0
  1399. /package/dist/{questionnaire-3WSXQF24.js.map → questionnaire-CCDUSEI3.js.map} +0 -0
  1400. /package/dist/{read-HZC3NDNN.js.map → read-JTJQSEVB.js.map} +0 -0
  1401. /package/dist/{reddit-G7VRSYYZ.js.map → reddit-JWZYSUAG.js.map} +0 -0
  1402. /package/dist/{refresh-I5A3NECZ.js.map → refresh-H4DETVS5.js.map} +0 -0
  1403. /package/dist/{refresh-2L6ZO3ZT.js.map → refresh-VRBHP4AA.js.map} +0 -0
  1404. /package/dist/{release-XSVKJ5CN.js.map → release-OV4ZDCXG.js.map} +0 -0
  1405. /package/dist/{relevant-pages-A42RSROV.js.map → relevant-pages-VJHTUJMB.js.map} +0 -0
  1406. /package/dist/{remove-2ZGE2W4H.js.map → remove-5FMNASGC.js.map} +0 -0
  1407. /package/dist/{remove-V374NEAC.js.map → remove-DBCSQSEP.js.map} +0 -0
  1408. /package/dist/{reopen-IGMHWHVQ.js.map → reopen-5ZOEKYQ5.js.map} +0 -0
  1409. /package/dist/{rerun-ZNRXUDJK.js.map → rerun-YMRW6BHM.js.map} +0 -0
  1410. /package/dist/{research-6AJKF745.js.map → research-HUM6CF74.js.map} +0 -0
  1411. /package/dist/{research-5DVH2LQ7.js.map → research-M3QPWTYX.js.map} +0 -0
  1412. /package/dist/{reset-LGDXOPWW.js.map → reset-BPAFOW6M.js.map} +0 -0
  1413. /package/dist/{reset-XSWWWLX7.js.map → reset-WAY3BSZX.js.map} +0 -0
  1414. /package/dist/{resolve-O64G4K5K.js.map → resolve-AQ6UFEMN.js.map} +0 -0
  1415. /package/dist/{retry-GHK3YL2J.js.map → retry-3KYFTPXZ.js.map} +0 -0
  1416. /package/dist/{retry-PBQMXGTI.js.map → retry-XO54CIRK.js.map} +0 -0
  1417. /package/dist/{retry-failed-2P7FOFXN.js.map → retry-failed-DSVEAY3T.js.map} +0 -0
  1418. /package/dist/{revenue-W46ID47C.js.map → revenue-PPDMQO3H.js.map} +0 -0
  1419. /package/dist/{rule-writes-EWHP53UU.js.map → rule-writes-XSNS3XYK.js.map} +0 -0
  1420. /package/dist/{rules-YZJ5RVJS.js.map → rules-4ENXG5XW.js.map} +0 -0
  1421. /package/dist/{rules-GVOTFQFK.js.map → rules-GHGEVCBQ.js.map} +0 -0
  1422. /package/dist/{rules-add-EYGAKYYC.js.map → rules-add-FTBOOE6L.js.map} +0 -0
  1423. /package/dist/{run-WTVT74DX.js.map → run-2ZRTKR7A.js.map} +0 -0
  1424. /package/dist/{run-FWUYEPS6.js.map → run-UECCNQ63.js.map} +0 -0
  1425. /package/dist/{scaffold-ad-ZXBNYUSD.js.map → scaffold-ad-DFKFUOOZ.js.map} +0 -0
  1426. /package/dist/{scaffold-static-ad-COCGCL76.js.map → scaffold-static-ad-II3TUE5I.js.map} +0 -0
  1427. /package/dist/{scaffold-video-A3YIXW34.js.map → scaffold-video-IKVYICIY.js.map} +0 -0
  1428. /package/dist/{schedule-2ARCAXOP.js.map → schedule-ERHKGQID.js.map} +0 -0
  1429. /package/dist/{schedule-UQZFDY2R.js.map → schedule-Z2AQXR7W.js.map} +0 -0
  1430. /package/dist/{scheduled-agents-AK5BIFKJ.js.map → scheduled-agents-ICXFV7NP.js.map} +0 -0
  1431. /package/dist/{schema-GHGIFDA5.js.map → schema-BDZA64GZ.js.map} +0 -0
  1432. /package/dist/{schema-TM6N57U7.js.map → schema-NUUZ3MG7.js.map} +0 -0
  1433. /package/dist/{scrape-KJHI7ZGT.js.map → scrape-CTE5SNQN.js.map} +0 -0
  1434. /package/dist/{screenshot-R5WU2CP3.js.map → screenshot-ELJYTIM7.js.map} +0 -0
  1435. /package/dist/{search-4ZC63BDO.js.map → search-5B5AXN5V.js.map} +0 -0
  1436. /package/dist/{search-HU3BLSA5.js.map → search-7ELGWNMH.js.map} +0 -0
  1437. /package/dist/{search-NR4L4TRU.js.map → search-B2APYHV6.js.map} +0 -0
  1438. /package/dist/{search-Z4PXKQXY.js.map → search-KBIF5NZX.js.map} +0 -0
  1439. /package/dist/{search-ASEODLC6.js.map → search-OF6LTOK6.js.map} +0 -0
  1440. /package/dist/{search-YIS3DVFC.js.map → search-XO5UPSBF.js.map} +0 -0
  1441. /package/dist/{search-copy-TFHTB6R3.js.map → search-copy-DDRY6HPI.js.map} +0 -0
  1442. /package/dist/{seeds-SMIOGN5B.js.map → seeds-HH5E7GCS.js.map} +0 -0
  1443. /package/dist/{select-7K4NBXC2.js.map → select-WVNPJDXP.js.map} +0 -0
  1444. /package/dist/{sends-E7Z65VUV.js.map → sends-H7WMLJ5H.js.map} +0 -0
  1445. /package/dist/{sequences-T5M7T6HY.js.map → sequences-V4STPHGV.js.map} +0 -0
  1446. /package/dist/{set-prompt-JS376DSE.js.map → set-prompt-KHBDWDXA.js.map} +0 -0
  1447. /package/dist/{setup-links-RSTRHPKH.js.map → setup-links-R3FH7WK4.js.map} +0 -0
  1448. /package/dist/{shared-INNJML54.js.map → shared-P2PFNNJF.js.map} +0 -0
  1449. /package/dist/{shopify-KASUSQAE.js.map → shopify-34CFN6SG.js.map} +0 -0
  1450. /package/dist/{site-CGSIUC7N.js.map → site-H6AMVMIX.js.map} +0 -0
  1451. /package/dist/{sitemaps-JXHJMTLU.js.map → sitemaps-KMRWAKNK.js.map} +0 -0
  1452. /package/dist/{sites-UXBWI7WO.js.map → sites-3QZDCQRG.js.map} +0 -0
  1453. /package/dist/{skills-X5XTXI7E.js.map → skills-KV4X22KQ.js.map} +0 -0
  1454. /package/dist/{sources-KK5FLKFL.js.map → sources-2VJMHUH7.js.map} +0 -0
  1455. /package/dist/{sources-AIGV6DQN.js.map → sources-S63224S7.js.map} +0 -0
  1456. /package/dist/{stale-XDMXW4AM.js.map → stale-6BEHWQZ7.js.map} +0 -0
  1457. /package/dist/{stats-KWP52SMV.js.map → stats-3TAUG3Q3.js.map} +0 -0
  1458. /package/dist/{status-7RVU6VHP.js.map → status-MCMOSDVX.js.map} +0 -0
  1459. /package/dist/{studies-C6XQBKI6.js.map → studies-A52C544C.js.map} +0 -0
  1460. /package/dist/{studio-HGMO77PU.js.map → studio-4QOFG7MQ.js.map} +0 -0
  1461. /package/dist/{study-writes-XD4CWHMA.js.map → study-writes-3R4D6C3F.js.map} +0 -0
  1462. /package/dist/{suggest-EY4X3CGR.js.map → suggest-3CFMURUH.js.map} +0 -0
  1463. /package/dist/{sync-Y3OXWX3C.js.map → sync-H4XVXITS.js.map} +0 -0
  1464. /package/dist/{sync-KEWFMT6D.js.map → sync-TJ7MGFIE.js.map} +0 -0
  1465. /package/dist/{sync-4WHT4CJS.js.map → sync-WJCJHNET.js.map} +0 -0
  1466. /package/dist/{sync-definition-E3MKIJP2.js.map → sync-definition-THVMBGJR.js.map} +0 -0
  1467. /package/dist/{tag-OHLDMOIE.js.map → tag-6WIQLRDW.js.map} +0 -0
  1468. /package/dist/{tag-manager-45NZFX7I.js.map → tag-manager-KWITWX6Y.js.map} +0 -0
  1469. /package/dist/{tags-GLMZGAJ4.js.map → tags-AGFUJ2BB.js.map} +0 -0
  1470. /package/dist/{tags-IDUL2WDF.js.map → tags-OPMPPJY2.js.map} +0 -0
  1471. /package/dist/{tags-X2OZGIDJ.js.map → tags-VGJ76RJT.js.map} +0 -0
  1472. /package/dist/{tags-UAWNPO5M.js.map → tags-VOCMMZ75.js.map} +0 -0
  1473. /package/dist/{tags-MBP7RKJQ.js.map → tags-WK6P5A4D.js.map} +0 -0
  1474. /package/dist/{targeting-WMQ5D3FI.js.map → targeting-II4CQUPW.js.map} +0 -0
  1475. /package/dist/{targeting-constants-25MFBDE2.js.map → targeting-constants-2EHTMIMX.js.map} +0 -0
  1476. /package/dist/{targeting-criteria-UEOUMF2U.js.map → targeting-criteria-KRIMZRVI.js.map} +0 -0
  1477. /package/dist/{targets-OZ2VLDW6.js.map → targets-MCOEM4XQ.js.map} +0 -0
  1478. /package/dist/{terms-IDRQZRWC.js.map → terms-URBA2IXT.js.map} +0 -0
  1479. /package/dist/{testimonials-FYSEOFYU.js.map → testimonials-A2AFXSZV.js.map} +0 -0
  1480. /package/dist/{themes-XYP2DCXI.js.map → themes-JBX6W4SP.js.map} +0 -0
  1481. /package/dist/{top-companies-SEFYQRU5.js.map → top-companies-ESCRXLSK.js.map} +0 -0
  1482. /package/dist/{transcript-YSUXDDPA.js.map → transcript-N2ZWN4CI.js.map} +0 -0
  1483. /package/dist/{translate-NXWZAE2A.js.map → translate-YGUYVOGA.js.map} +0 -0
  1484. /package/dist/{triggers-UDSWKKGR.js.map → triggers-G4EW5XG6.js.map} +0 -0
  1485. /package/dist/{tweets-7LDBHP3Y.js.map → tweets-LECORASF.js.map} +0 -0
  1486. /package/dist/{unfollow-76PLUWRU.js.map → unfollow-DBV2F7YP.js.map} +0 -0
  1487. /package/dist/{unlink-ACJ5OOEM.js.map → unlink-DRIVH2GT.js.map} +0 -0
  1488. /package/dist/{unstage-YYBHQ5ZI.js.map → unstage-WUQV6QBV.js.map} +0 -0
  1489. /package/dist/{unstage-PHH5WTTH.js.map → unstage-XCH4VBM2.js.map} +0 -0
  1490. /package/dist/{update-CMITW6HO.js.map → update-5GIAKABM.js.map} +0 -0
  1491. /package/dist/{update-XXVNBVJC.js.map → update-COXCKREW.js.map} +0 -0
  1492. /package/dist/{update-HBQCEZ47.js.map → update-JDFJPQ3O.js.map} +0 -0
  1493. /package/dist/{update-PZDPCWWJ.js.map → update-NA4M4J5D.js.map} +0 -0
  1494. /package/dist/{update-4BNEAWPH.js.map → update-T7PSOZES.js.map} +0 -0
  1495. /package/dist/{upload-HQVNSAQX.js.map → upload-B27ZJMMZ.js.map} +0 -0
  1496. /package/dist/{upload-VIV3UFTQ.js.map → upload-IXVEJLZU.js.map} +0 -0
  1497. /package/dist/{upscale-DRLDP2PM.js.map → upscale-QMBV3AGN.js.map} +0 -0
  1498. /package/dist/{url-options-AQUKV5I5.js.map → url-options-LHEGWNAH.js.map} +0 -0
  1499. /package/dist/{url-params-UKCEPW56.js.map → url-params-IL2M2WZI.js.map} +0 -0
  1500. /package/dist/{use-WKSR3Y2T.js.map → use-TBDI3OAN.js.map} +0 -0
  1501. /package/dist/{validate-AZRFBMPL.js.map → validate-QAJJ7QCJ.js.map} +0 -0
  1502. /package/dist/{variant-DMGNLXWH.js.map → variant-2A5GOOJF.js.map} +0 -0
  1503. /package/dist/{videos-V6ZPPTXM.js.map → videos-I7PCC2EC.js.map} +0 -0
  1504. /package/dist/{view-O6PUTSFE.js.map → view-GNNIJGGN.js.map} +0 -0
  1505. /package/dist/{viewer-check-AFJEQXPY.js.map → viewer-check-PUAWVYWP.js.map} +0 -0
  1506. /package/dist/{web-CF3XGTKI.js.map → web-O2MCPPB5.js.map} +0 -0
  1507. /package/dist/{winners-T4AWAVNU.js.map → winners-6CW4CWZI.js.map} +0 -0
  1508. /package/dist/{winning-ads-IDHEECGY.js.map → winning-ads-FTMP4FUC.js.map} +0 -0
  1509. /package/dist/{write-commands-6GIGWSF4.js.map → write-commands-3G5WDFH3.js.map} +0 -0
  1510. /package/dist/{write-commands-Q4FTWGRN.js.map → write-commands-NKKNWQIM.js.map} +0 -0
  1511. /package/dist/{write-commands-HMMBM5OC.js.map → write-commands-TPPJHGMT.js.map} +0 -0
  1512. /package/dist/{write-commands-KYMBIZ7U.js.map → write-commands-UW5LKCAP.js.map} +0 -0
  1513. /package/dist/{x-32EGBM42.js.map → x-FPRMRQLQ.js.map} +0 -0
@@ -1,1513 +0,0 @@
1
- import {
2
- stampCompositionDims
3
- } from "./chunk-5MBPIONY.js";
4
- import {
5
- fetchClientLogo
6
- } from "./chunk-FUC6WHQM.js";
7
- import {
8
- SHIPPED_CAPTIONS_DIR,
9
- SHIPPED_OVERLAY_COMPOSITION_DIR
10
- } from "./chunk-MZPS46OR.js";
11
- import {
12
- readDefinitionPlatforms,
13
- syncCreativeDefinitionBestEffort
14
- } from "./chunk-2IB2I7X6.js";
15
- import "./chunk-H23ZPEIQ.js";
16
- import {
17
- pinnedModelHint
18
- } from "./chunk-JAC6JVCI.js";
19
- import "./chunk-3PRPX5L7.js";
20
- import {
21
- REBUILD_FILE,
22
- authoredRole,
23
- brandHeadlineFont,
24
- buildCreativeDefinition,
25
- cachedJev,
26
- canvasDims,
27
- carriesOnFromAnswers,
28
- carriesOnQuestions,
29
- computeSourceSha,
30
- definitionPlatformsOf,
31
- escapeHtml,
32
- findBrandRoot,
33
- genAspectsFor,
34
- languageFromAnswer,
35
- languageQuestion,
36
- parseDefinitionStrategyFields,
37
- readNamedTypefaces,
38
- readStaticBrandKit,
39
- renderStyleProjectionFromValue,
40
- resolveAspect,
41
- resolveFormats,
42
- scaffoldVideoCanvas,
43
- spokenLanguage,
44
- titleFromSlug,
45
- voiceGenderModel,
46
- webFontUrl,
47
- writeSceneFiles
48
- } from "./chunk-GXN7TMQO.js";
49
- import "./chunk-Y3SGBJN7.js";
50
- import "./chunk-EKX37C3T.js";
51
- import "./chunk-LLJW5F2C.js";
52
- import "./chunk-XBLD5EKJ.js";
53
- import "./chunk-4O3FECSO.js";
54
- import {
55
- readAvatars
56
- } from "./chunk-V3YJ3BTV.js";
57
- import "./chunk-2MRK75I3.js";
58
- import "./chunk-YQIURUEL.js";
59
- import {
60
- fetchJson,
61
- lookupGoogleCss
62
- } from "./chunk-JAV6VUQH.js";
63
- import "./chunk-XQXIRL74.js";
64
- import "./chunk-FPCJANX2.js";
65
- import "./chunk-66O7GGOB.js";
66
- import "./chunk-JE3RHIQE.js";
67
- import {
68
- holdUnbilledSpend
69
- } from "./chunk-RJ675DP3.js";
70
- import {
71
- findWorkspaceRoot,
72
- resolveRelativeCanvasPaths
73
- } from "./chunk-V6F2QWUZ.js";
74
- import {
75
- defaultRegistry,
76
- validateCanvasDeep
77
- } from "./chunk-UBTGSMWE.js";
78
- import "./chunk-PDOP76SF.js";
79
- import {
80
- BRAND_DIR,
81
- READ_WORDS_PER_SECOND,
82
- markInkIsLight,
83
- markIsReal,
84
- plateIsDark,
85
- readBrandFromWorkspace,
86
- svgIsLiveText,
87
- wordCount
88
- } from "./chunk-IC2X5X7J.js";
89
- import {
90
- videoSafeArea
91
- } from "./chunk-OQ4PTNNH.js";
92
- import "./chunk-DGCUPJZD.js";
93
- import "./chunk-CW2RHRH5.js";
94
- import {
95
- ACTOR_SHEET_MODEL
96
- } from "./chunk-7BJZF77Q.js";
97
- import "./chunk-ZN22VDFS.js";
98
- import {
99
- AD_IMAGE_MODEL,
100
- DEFAULT_VIDEO_GENERATE_MODEL,
101
- SEEDANCE_DURATIONS,
102
- SPOKEN_CLIP_DURATION_S,
103
- VIDEO_GENERATE_MODELS,
104
- clipDurationsFor,
105
- frameRealismDirection,
106
- withoutCastName
107
- } from "./chunk-MCJ5I5LR.js";
108
- import "./chunk-2WZI36D3.js";
109
- import "./chunk-65Y3RCWP.js";
110
- import {
111
- askJevQuestions
112
- } from "./chunk-AIOKWGMO.js";
113
- import "./chunk-EJWTQDKA.js";
114
- import "./chunk-7UTWZGIV.js";
115
- import {
116
- fetchExternalBytes
117
- } from "./chunk-6LU64W5J.js";
118
- import "./chunk-HVJJEQDQ.js";
119
- import "./chunk-QV6AST5T.js";
120
- import "./chunk-WCU362Z6.js";
121
- import "./chunk-GIWHHCD6.js";
122
- import "./chunk-SOPVIIUW.js";
123
- import "./chunk-G4FG5EQO.js";
124
- import "./chunk-NSBNIPIW.js";
125
- import "./chunk-46YLDIQG.js";
126
- import "./chunk-X6AHLUC7.js";
127
- import "./chunk-TM5UTSE4.js";
128
- import "./chunk-6THXOWAP.js";
129
- import {
130
- registerSchema,
131
- writeJson
132
- } from "./chunk-S6WPMD3V.js";
133
- import "./chunk-YQSBHWOI.js";
134
-
135
- // src/commands/canvas/scaffold-ad.ts
136
- import { copyFile, cp, mkdir, readFile, stat, writeFile } from "fs/promises";
137
- import path from "path";
138
- import { defineCommand } from "citty";
139
-
140
- // src/engine/scaffold/ad-spec.ts
141
- import { z } from "zod";
142
- var oneClause = (line) => (line.match(/[.!?](\s|$)/g) ?? []).length <= 1;
143
- var isSpeech = (line) => new RegExp("\\p{L}\\p{L}", "u").test(line);
144
- var Beat = z.object({
145
- /**
146
- * The line the voice says in this beat — ONE clause, ending in its own
147
- * punctuation. It becomes the caption card verbatim.
148
- */
149
- say: z.string().min(1).refine(
150
- isSpeech,
151
- "a beat's line has to be words someone says \u2014 a dot or a dash is not a line, and an ad with no voiceover is not supported yet"
152
- ).refine(oneClause, "a beat is one clause: split a second sentence into its own beat"),
153
- /** What is on screen while it is said, as a shot brief for the video model. */
154
- show: z.string().min(1),
155
- /**
156
- * What this shot SOUNDS like — one effect, in words. Usually absent.
157
- *
158
- * An effect earns its place when the picture shows a SPECIFIC PHYSICAL EVENT the
159
- * viewer expects to hear: a drill tightening a bolt, a door closing, rain on glass, a
160
- * card tapping a reader, a graphic snapping into place. It grounds the shot.
161
- *
162
- * It does NOT belong on a talking head, on a lifestyle shot with no event in it, or
163
- * on a beat that is simply someone sitting and reacting. Sound laid over those reads
164
- * as a stock-library sting, and a bed of them turns a calm ad into a noisy one. Most
165
- * ads are a music bed and a voice; a couple of effects at the right moments, or none
166
- * at all, is a normal and often better answer than one per beat.
167
- *
168
- * Describe the SOUND, not the picture: "a cordless drill tightening a bolt", not "the
169
- * fitter works on the rail".
170
- */
171
- sound: z.string().min(1).max(200).optional(),
172
- /**
173
- * Whether this beat's subject is talking to camera.
174
- *
175
- * Left unset it follows the cast: an ad that cast a presenter, in a shot they are in,
176
- * with a line, is that person speaking. Set it to FALSE for the exception — a cutaway,
177
- * a product shot, a beat you want a narrator to carry over.
178
- *
179
- * It used to be opt-in, back when the only route was dubbing and OFF was the safe
180
- * default. That inverted the moment on-camera started meaning the video model voices
181
- * the clip itself: measured on a real run, a brief that said "talking to camera all the
182
- * way through" produced an ad with her face on screen and a narrator cast from a prose
183
- * description reading her lines, because nothing set this flag.
184
- */
185
- on_camera: z.boolean().optional(),
186
- /**
187
- * Whether the ad's recurring person is in this shot. Defaults to true whenever the
188
- * spec declares a `cast`, because an ad is usually about one person and defaulting
189
- * the other way is how continuity gets forgotten. Set false for a beat they are not
190
- * in — a fitter on a roof, a product close-up.
191
- */
192
- cast: z.boolean().optional()
193
- });
194
- var AdSpec = z.object({
195
- format: z.object({
196
- aspect_ratio: z.string().default("9:16"),
197
- resolution: z.string().default("720p")
198
- }).default({ aspect_ratio: "9:16", resolution: "720p" }),
199
- brand: z.object({
200
- name: z.string().optional(),
201
- /** Figures to lift typographically — the one gold number every ad has. */
202
- highlight: z.array(z.string()).optional(),
203
- /**
204
- * Brand hex colours, most important first. They dress the brand plate and
205
- * the type — never the scenes: pushing hex into a shot brief makes the
206
- * model paint the whole frame that colour, which reads as a filter.
207
- */
208
- palette: z.array(z.string()).optional(),
209
- /** Repo path to the brand mark, so the CTA carries it instead of a name in a font. */
210
- logo: z.string().optional()
211
- }).optional(),
212
- voice: z.object({
213
- description: z.string().min(1),
214
- language: z.string().optional()
215
- }).optional(),
216
- /**
217
- * Where the ad is set, as a place a model can picture: "Spain", "Mexico",
218
- * "the UK". Omitted, it is the country a regional `voice.language` names ("es-MX" →
219
- * Mexico), else nowhere: a language alone names no country.
220
- *
221
- * It exists because nothing else in a shot brief says where it is, and a model
222
- * with no location picks its own. An ad for Spain came back full of British
223
- * houses — sash windows, slate roofs, English suburbs — in every single frame,
224
- * from briefs that were otherwise perfectly good.
225
- */
226
- market: z.string().min(1).optional(),
227
- /**
228
- * The one person the ad is about.
229
- *
230
- * Declared once and grounded on every beat they appear in, because the engine already
231
- * builds a reference sheet from this and tells each frame to render THE SAME
232
- * individual. Without it each beat invents its own face: a 28-second ad came back
233
- * with five different men playing one customer, which reads as a stock-footage
234
- * collage rather than a story.
235
- */
236
- cast: z.object({
237
- /**
238
- * A cast Avatar's handle — `baker avatars list` shows who there is.
239
- *
240
- * The right way to put a person in an ad. The avatar already has a settled
241
- * identity and a rendered identity sheet, so the ad grounds on the same face the
242
- * rest of the company's work uses, and its subject description is copied verbatim
243
- * rather than re-written per spec — re-phrasing it per render is the other reason
244
- * a face drifts across a set.
245
- */
246
- avatar: z.string().min(1).optional(),
247
- /** Who they are, plainly: age, build, hair, wardrobe, the register of the ad. */
248
- description: z.string().min(1).optional()
249
- }).refine((c) => Boolean(c.avatar || c.description), {
250
- message: "give `avatar` (a cast avatar's handle) or `description` \u2014 a cast with neither grounds on nothing"
251
- }).optional(),
252
- /**
253
- * The bed, described in words — or `false` for an ad that is meant to be dry.
254
- *
255
- * Omitted lays a soft, neutral bed. It used to leave the ad silent, on the reasoning
256
- * that silence is a legitimate choice; it is, but only as a choice. In practice nothing
257
- * ever set this, and finished ads shipped with a voice over nothing — which reads as
258
- * unfinished, not as restraint. A bed is the ordinary case, so it is the default, and
259
- * an ad that wants silence says `false` and means it.
260
- *
261
- * The bed never plays over the first beat: the opening line is the scroll-stopper and
262
- * has to read clean. That is the engine's rule, not this one, and it is why the prompt
263
- * is all this needs to carry.
264
- */
265
- music: z.union([z.string().min(1), z.literal(false)]).optional(),
266
- /**
267
- * The place the ad keeps coming back to, held still across every shot.
268
- *
269
- * The person has an identity sheet; nothing held the SETTING. Each shot's start frame is
270
- * generated on its own, so three beats in "her living room" came back as three different
271
- * living rooms. The engine already builds `location` reference sheets — its own comment
272
- * calls them the strongest cross-scene consistency lock it has — and the ad path simply
273
- * never emitted one.
274
- *
275
- * `image` is a real picture of the place, and it is what makes this work at all: a sheet
276
- * fuses source material into a turnaround. Fed nothing, it is not a reference sheet, it
277
- * is `image_generate` with extra steps — the model registry says exactly that. Generate
278
- * the plate once with gpt-image-2 and pass its URL here.
279
- */
280
- set: z.object({
281
- description: z.string().min(1).max(400),
282
- image: z.string().min(1).optional()
283
- }).optional(),
284
- /**
285
- * How the ad closes.
286
- *
287
- * On by default whenever the spec carries a brand, because an ad that stops instead
288
- * of closing is what shipped: the last caption fell four seconds before the last
289
- * frame and the picture simply ran out on a man shuffling paper. The closing beat's
290
- * PICTURE becomes a flat brand plate — the engine already refuses to generate one as
291
- * a photograph, since a video model garbles a wordmark — and the mark and the call to
292
- * action are drawn over it by the composition.
293
- *
294
- * `false` opts out, for an ad that genuinely ends on its footage.
295
- */
296
- end_card: z.union([
297
- z.literal(false),
298
- z.object({
299
- /**
300
- * The words on the button. No default — with none the card carries the mark
301
- * alone, because falling back to the last beat's line printed that sentence
302
- * twice on the closing frame. See `endCardCta`.
303
- */
304
- cta: z.string().min(1).optional()
305
- })
306
- ]).optional(),
307
- /**
308
- * Whether a voice reads the lines.
309
- *
310
- * On by default. Turned off, the ad carries its music and its pictures and the `say`
311
- * lines become ON-SCREEN text instead of spoken ones — which is how most music-led
312
- * social ads are actually built.
313
- *
314
- * It exists because an agent wanted exactly this and had no way to ask: it wrote "·"
315
- * as every line with a voice description reading "No voiceover; music only". The dot
316
- * was sent to the voice model, the near-silence that came back was transcribed, and
317
- * the transcriber hallucinated "Thank you." — which became the ad's only caption card,
318
- * held over all sixteen seconds, in English, in a Spanish ad.
319
- *
320
- * The captions are BETTER on this path, not worse: they come from the script itself
321
- * rather than from transcribing a rendered read, so the text is exact and no speech
322
- * model is between the copy and the screen.
323
- */
324
- voiceover: z.boolean().default(true),
325
- beats: z.array(Beat).min(2)
326
- });
327
- function presenterIsInEveryShot(spec) {
328
- if (!spec.cast) return false;
329
- const storyBeats = spec.beats.filter((_, i) => !(endCardWanted(spec) && i === spec.beats.length - 1));
330
- return storyBeats.length >= 3 && storyBeats.every((b) => b.cast !== false);
331
- }
332
- var CURRENCY_BY_MARKET = {
333
- spain: "\u20AC (euros)",
334
- mexico: "$ (Mexican pesos)",
335
- portugal: "\u20AC (euros)",
336
- brazil: "R$ (reais)",
337
- france: "\u20AC (euros)",
338
- italy: "\u20AC (euros)",
339
- germany: "\u20AC (euros)",
340
- "united kingdom": "\xA3 (pounds sterling)",
341
- "united states": "$ (US dollars)"
342
- };
343
- var currencyFor = (market) => CURRENCY_BY_MARKET[market.trim().toLowerCase().replace(/^the\s+/, "")];
344
- function spokenLanguageFor(spec, known = {}) {
345
- const declared = spec.voice?.language ? spokenLanguage(spec.voice.language) : null;
346
- if (declared) return declared.tag;
347
- const defined = known.definitionLanguage ? spokenLanguage(known.definitionLanguage) : null;
348
- if (defined) return defined.tag;
349
- return known.reading?.scriptLanguage;
350
- }
351
- function marketFor(spec, definitionLanguage) {
352
- if (spec.market) return spec.market;
353
- for (const tag of [spec.voice?.language, definitionLanguage]) {
354
- const region = tag ? spokenLanguage(tag)?.region : void 0;
355
- if (region) return region.name;
356
- }
357
- return void 0;
358
- }
359
- function beatSeconds(line, videoModel) {
360
- const spoken = wordCount(line) / READ_WORDS_PER_SECOND;
361
- const allowed = (videoModel ? clipDurationsFor(videoModel) : void 0) ?? [...SEEDANCE_DURATIONS].sort((a, b) => a - b);
362
- const wanted = Math.max(spoken, SPOKEN_CLIP_DURATION_S);
363
- return allowed.find((d) => d >= wanted) ?? allowed[allowed.length - 1];
364
- }
365
- var BRAND_PLATE = "A solid flat brand colour plate \u2014 an end card. No people, no objects, no scenery, no text of any kind.";
366
- function endCardWanted(spec) {
367
- if (spec.end_card === false) return false;
368
- return Boolean(spec.brand?.name || spec.brand?.logo);
369
- }
370
- function endCardCta(spec) {
371
- if (!endCardWanted(spec)) return null;
372
- const declared = spec.end_card === false ? void 0 : spec.end_card?.cta?.trim();
373
- if (!declared) return null;
374
- const closing = (spec.beats[spec.beats.length - 1]?.say ?? "").trim().toLowerCase();
375
- return declared.toLowerCase().replace(/[.!?]$/, "") === closing.replace(/[.!?]$/, "") ? null : declared;
376
- }
377
- var AD_CAST_ID = "customer";
378
- var AD_NARRATOR_ID = "ad_narrator";
379
- var AD_SET_ID = "set";
380
- function castedAvatarOnRoster(ad, roster) {
381
- if (ad.cast?.avatar) return null;
382
- const haystack = [ad.cast?.description ?? "", ...(ad.beats ?? []).map((b) => b.show ?? "")].join(" ");
383
- if (!haystack.trim()) return null;
384
- const written = new Set(haystack.split(/[^\p{L}\p{N}]+/u).filter(Boolean));
385
- for (const person of roster) {
386
- if (labelWrittenAsName(person.name, written) || labelWrittenAsName(person.handle, written)) return person.handle;
387
- }
388
- return null;
389
- }
390
- function labelWrittenAsName(label, written) {
391
- const token = label.trim();
392
- if (!token || token.includes("-") || token.length < 3) return false;
393
- const folded = token.toLowerCase();
394
- for (const word of written) {
395
- if (word.toLowerCase() === folded && word[0] === word[0]?.toUpperCase()) return true;
396
- }
397
- return false;
398
- }
399
- function adSpecCastElements(spec, avatar) {
400
- const lastIndex = spec.beats.length - 1;
401
- const speakingScenes = spec.beats.map((_, i) => i).filter((i) => !(endCardWanted(spec) && i === lastIndex));
402
- const place = spec.set?.description?.trim();
403
- const elements = [];
404
- if (place && speakingScenes.length > 0) {
405
- elements.push({
406
- type: "location",
407
- label: AD_SET_ID,
408
- cast_id: AD_SET_ID,
409
- description: place,
410
- scenes: speakingScenes,
411
- ...spec.set?.image?.trim() ? { source_image: spec.set.image.trim() } : {}
412
- });
413
- }
414
- const description = (avatar?.subjectDescription ?? spec.cast?.description)?.trim();
415
- if (!description) return elements;
416
- const scenes = spec.beats.map((beat, i) => ({ beat, i })).filter(({ beat, i }) => beat.cast !== false && !(endCardWanted(spec) && i === lastIndex)).map(({ i }) => i);
417
- if (scenes.length === 0) return elements;
418
- const sheet = avatar?.sheetUrl?.trim();
419
- elements.push({
420
- type: "person",
421
- label: AD_CAST_ID,
422
- // Same id the dialogue names as speaker: that pairing is what lets the engine see
423
- // the presenter as present in a scene and route it to native audio.
424
- cast_id: AD_CAST_ID,
425
- description,
426
- scenes,
427
- // An avatar's identity sheet IS the turnaround the engine would otherwise render,
428
- // so it is handed over as one. Left unmarked, the run paid to generate a sheet OF
429
- // a sheet and every frame grounded on the copy instead of the avatar.
430
- ...sheet ? { source_image: sheet, source_is_sheet: true } : {}
431
- });
432
- return elements;
433
- }
434
- function motionPrompt(beat, toCamera, isClosingCard, place) {
435
- if (isClosingCard) return BRAND_PLATE;
436
- const shot = `${beat.show}${place}`;
437
- if (toCamera) return shot;
438
- return `${shot} Nobody in frame is speaking: mouths CLOSED and STILL throughout, no talking, no lip movement. Whoever is in shot is looking, reacting or working \u2014 never addressing the camera.`;
439
- }
440
- function staticTranscript(spec, videoModel) {
441
- const out = [];
442
- let clock = 0;
443
- for (const beat of spec.beats) {
444
- const duration = beatSeconds(beat.say, videoModel);
445
- const words = beat.say.trim().split(/\s+/).filter(Boolean);
446
- const each = words.length > 0 ? duration / words.length : duration;
447
- words.forEach((text, i) => {
448
- const start = clock + i * each;
449
- out.push({
450
- text,
451
- start: Math.round(start * 100) / 100,
452
- end: Math.round((start + each) * 100) / 100
453
- });
454
- });
455
- clock += duration;
456
- }
457
- return out;
458
- }
459
- function spokenVariety(avatarAccent, market) {
460
- const accent = avatarAccent?.trim();
461
- if (accent) return `${accent} \u2014 perform the pronunciation of that region, not a neutral one`;
462
- if (!market) return null;
463
- return `the local accent of ${market} \u2014 the way people there actually speak, not a neighbouring country's variety of the same language`;
464
- }
465
- function musicBed(spec) {
466
- if (spec.music === false) return null;
467
- if (typeof spec.music === "string") return spec.music;
468
- return "A soft, warm instrumental bed that sits well under a spoken voiceover: gentle acoustic guitar or soft piano with light pads, steady and unobtrusive, no vocals, no lyrics, no drop, no build to a climax, nothing that pulls attention off the voice.";
469
- }
470
- function beatToCamera(spec, beat, isClosingCard) {
471
- if (isClosingCard) return false;
472
- if (spec.cast?.avatar && beat.cast !== false) return true;
473
- if (beat.on_camera !== void 0) return beat.on_camera;
474
- return Boolean(spec.cast) && beat.cast !== false;
475
- }
476
- function beatsIntroducingSpeakerOffCamera(spec, reading) {
477
- const closesOnCard = endCardWanted(spec);
478
- const last = spec.beats.length - 1;
479
- return spec.beats.flatMap(
480
- (beat, i) => reading.introducesSpeaker[i] === true && !beatToCamera(spec, beat, closesOnCard && i === last) ? [i] : []
481
- );
482
- }
483
- function beatSpeaksNatively(spec, beat, isClosingCard) {
484
- if (!spec.cast || spec.voiceover === false) return false;
485
- return beatToCamera(spec, beat, isClosingCard) && beat.cast !== false;
486
- }
487
- function beatDialogue(spec, beat, window) {
488
- if (spec.voiceover === false) return [];
489
- const narrator = narratorVoice(spec, window.avatarVoice);
490
- return [
491
- {
492
- line: beat.say,
493
- start_s: window.start,
494
- end_s: window.end,
495
- // Always stated, never left to the engine: absent, it guesses from who is in frame,
496
- // which is how a still photograph once got lip-synced.
497
- on_camera: beatToCamera(spec, beat, window.isClosingCard),
498
- // Naming the CAST as speaker is the other half of what sends this beat down the
499
- // native path. Left unnamed, the speaker defaults to "voiceover" — a narrator, who is
500
- // by definition never on camera — so every beat took the dubbed path: a clip generated
501
- // with one mouth and a separate ElevenLabs track laid over it. That is the mismatch
502
- // behind every "the mouth does not match" in this ad's history.
503
- //
504
- // A beat that is NOT hers names the ad's OWN narrator (`AD_NARRATOR_ID`), rather
505
- // than leaving the label off. A different speaker is what breaks the phrase, and a
506
- // phrase break is what keeps each beat its own clip: left unlabelled, the engine read
507
- // the cutaway as her narrating over an insert in one continuous take and merged the
508
- // beats around it into a single native read with the dubbed one laid on top.
509
- speaker: window.nativeSpeech ? AD_CAST_ID : AD_NARRATOR_ID,
510
- // The narrator is cast from the ad's voice, and failing that from the CAST's own
511
- // description. Naming a speaker of our own cost this: the engine casts an unnamed
512
- // narrator by folding it into the lone presenter and reusing her casting, so the
513
- // closing line inherited her persona for free. Named, it is a speaker in nobody's
514
- // `cast`, and the engine's last-resort description for one of those is the literal
515
- // "<speaker> voice" — so an ad with an avatar, a closing card and no `voice`
516
- // (a perfectly ordinary spec) had its closing tagline cast off the words
517
- // "ad_narrator voice".
518
- ...narrator ? { voice_description: narrator } : {}
519
- }
520
- ];
521
- }
522
- function narratorVoice(spec, avatarVoice) {
523
- return spec.voice?.description?.trim() || avatarVoice?.trim() || spec.cast?.description?.trim() || void 0;
524
- }
525
- function nativeSpeechByBeat(spec, closesOnCard) {
526
- const last = spec.beats.length - 1;
527
- return spec.beats.map((beat, i) => beatSpeaksNatively(spec, beat, closesOnCard && i === last));
528
- }
529
- function voiceoverMode(spec, nativeByBeat, closesOnCard) {
530
- if (spec.voiceover === false) return "none";
531
- const spoken = closesOnCard ? nativeByBeat.slice(0, -1) : nativeByBeat;
532
- const native = spoken.filter(Boolean).length;
533
- if (native === 0) return "voiceover";
534
- return native === spoken.length ? "on_camera" : "mixed";
535
- }
536
- function castRole(spec, reading) {
537
- if (!spec.cast) return void 0;
538
- const described = spec.cast.description?.trim();
539
- if (!described) return "a customer telling their own story, not a worker";
540
- if (reading?.castWorksThere === false) return `${described} \u2014 a customer telling their own story, not a worker`;
541
- return described;
542
- }
543
- function adSpecToBlueprint(spec, opts = {}) {
544
- const avatarAccent = opts.avatarAccent;
545
- const total = spec.beats.length;
546
- const market = marketFor(spec, opts.definitionLanguage);
547
- const place = market ? ` Set in ${market}: the architecture, streets and styling are ${market}'s.` : "";
548
- const currency = market ? currencyFor(market) : void 0;
549
- const physics = frameRealismDirection({ currency, role: castRole(spec, opts.reading) });
550
- const closesOnCard = endCardWanted(spec);
551
- const nativeByBeat = nativeSpeechByBeat(spec, closesOnCard);
552
- const spokenMode = voiceoverMode(spec, nativeByBeat, closesOnCard);
553
- let clock = 0;
554
- const scenes = spec.beats.map((beat, i) => {
555
- const isClosingCard = closesOnCard && i === total - 1;
556
- const duration = beatSeconds(beat.say, opts.videoModel);
557
- const start = clock;
558
- clock += duration;
559
- return {
560
- start_s: Math.round(start * 100) / 100,
561
- end_s: Math.round(clock * 100) / 100,
562
- duration_s: duration,
563
- summary: isClosingCard ? `${BRAND_PLATE} ${beat.say}` : beat.say,
564
- narrative_role: authoredRole(i, total),
565
- ...isClosingCard ? { route_hint: "brand_card" } : {},
566
- // The read is built from per-scene dialogue, not from the global
567
- // transcript: emitting only the transcript scaffolds a SILENT ad. And
568
- // `on_camera` is the engine's own switch for "this line is narration" —
569
- // absent, it guesses from who is in frame, which is how a still photograph
570
- // once got lip-synced.
571
- // No dialogue at all when nobody speaks: an empty array is what stops the engine
572
- // wiring a voice track, and no voice track is what makes this a music-led ad
573
- // rather than one with a silent narrator.
574
- // One effect per beat, placed on this beat's window. The engine clamps the
575
- // length to what the provider accepts. An ad emitted none of these until now,
576
- // so every one shipped with a music bed and no sound design at all.
577
- ...beat.sound?.trim() ? { sfx: [{ sound_effect_prompt: beat.sound.trim(), duration_s: Math.min(duration, 30) }] } : {},
578
- dialogue: beatDialogue(spec, beat, {
579
- start: Math.round(start * 100) / 100,
580
- end: Math.round(clock * 100) / 100,
581
- isClosingCard,
582
- nativeSpeech: nativeByBeat[i] === true,
583
- avatarVoice: opts.avatarVoice
584
- }),
585
- motion_prompt: motionPrompt(beat, beatToCamera(spec, beat, isClosingCard), isClosingCard, place),
586
- start_frame_prompt: isClosingCard ? BRAND_PLATE : `${beat.show}${place}${physics}`
587
- };
588
- });
589
- const accent = spokenVariety(avatarAccent, market);
590
- const narrator = narratorVoice(spec, opts.avatarVoice);
591
- const music = musicBed(spec);
592
- return {
593
- estimated_duration_s: Math.round(clock * 100) / 100,
594
- global: {
595
- transcript: spec.beats.map((b) => b.say).join(" "),
596
- // Resolved: `marketFor` also reads the country a declared regional language names.
597
- ...market ? { market } : {},
598
- voiceover: {
599
- mode: spokenMode,
600
- ...accent ? { accent } : {},
601
- ...narrator ? { voice_description: narrator } : {}
602
- },
603
- ...spec.cast ? {
604
- cast: [
605
- {
606
- id: AD_CAST_ID,
607
- description: (spec.cast.description ?? "the ad's recurring person").trim()
608
- }
609
- ]
610
- } : {},
611
- ...spec.brand?.name || spec.brand?.logo ? {
612
- branding: {
613
- ...spec.brand?.name ? { name: spec.brand.name } : {},
614
- ...spec.brand?.logo ? { logo_path: spec.brand.logo } : {}
615
- }
616
- } : {},
617
- ...spec.brand?.palette?.length ? { style: { palette: spec.brand.palette.map((hex) => ({ hex })) } } : {},
618
- ...music ? { music: { music_prompt: music } } : {}
619
- },
620
- scenes
621
- };
622
- }
623
- var MIN_BEAT_WORDS = 4;
624
- function beatsTooShortToPlay(spec) {
625
- return spec.beats.map((beat, i) => ({ i, words: beat.say.trim().split(/\s+/).filter(Boolean).length })).filter(({ words }) => words < MIN_BEAT_WORDS).map(({ i }) => i + 1);
626
- }
627
-
628
- // src/engine/scaffold/ad-spec-reading.ts
629
- var INTRODUCES_SPEAKER_HELD = 0.5;
630
- var WANTS_LEGIBLE_TEXT_HELD = 0.5;
631
- var WORKS_THERE_HELD = 0.5;
632
- var INTRODUCES_SPEAKER = 'Does the speaker of `line` introduce themselves, saying their own name or who they are ("Hi, I\'m Marta")? A line about somebody else, or a first-person line that names nobody, is not.';
633
- var WANTS_LEGIBLE_TEXT = "Does `brief` ask for words, a number, a price or a figure in the picture to be readable (in focus, legible, highlighted, the point of the shot)? A document, screen or sign that is only present, out of focus or not meant to be read is not.";
634
- var WORKS_THERE = "Does `person` describe someone who works for the business in the ad (an installer, a technician, an employee, a doctor, a chef, its founder or owner, its team) rather than a customer or an ordinary person?";
635
- function adSpecVoices(spec, avatarVoice) {
636
- const all = [spec.voice?.description, avatarVoice, spec.cast?.description].map((d) => d?.trim() ?? "");
637
- return [...new Set(all.filter(Boolean))];
638
- }
639
- function unreadAdSpec(spec) {
640
- return {
641
- introducesSpeaker: spec.beats.map(() => false),
642
- wantsLegibleText: spec.beats.map(() => false),
643
- voiceGenders: {},
644
- captionCarriesOn: [],
645
- read: false
646
- };
647
- }
648
- var yes = (answer, held) => answer !== void 0 && "noul" in answer && answer.noul >= held;
649
- async function readAdSpec(spec, options, readers) {
650
- const lines = spec.beats.map((b) => b.say);
651
- const castDescription = spec.cast?.description?.trim();
652
- const carries = carriesOnQuestions(lines);
653
- const sections = [
654
- { name: "language", questions: options.askLanguage ? [languageQuestion(lines)] : [] },
655
- {
656
- name: "intro",
657
- questions: lines.map((line) => ({ type: "noul", instructions: { line, question: INTRODUCES_SPEAKER } }))
658
- },
659
- {
660
- name: "legible",
661
- questions: spec.beats.map((b) => ({
662
- type: "noul",
663
- instructions: { brief: b.show, question: WANTS_LEGIBLE_TEXT }
664
- }))
665
- },
666
- {
667
- name: "works",
668
- questions: castDescription ? [{ type: "noul", instructions: { person: castDescription, question: WORKS_THERE } }] : []
669
- },
670
- { name: "carries", questions: carries.questions }
671
- ];
672
- const [answers, genders] = await Promise.all([
673
- readers.ask(sections.flatMap((s) => s.questions)),
674
- readers.genders(options.voices).catch(() => null)
675
- ]);
676
- const voiceGenders = genders ?? {};
677
- if (!answers) return { ...unreadAdSpec(spec), voiceGenders };
678
- const bySection = /* @__PURE__ */ new Map();
679
- let at = 0;
680
- for (const section of sections) {
681
- bySection.set(section.name, answers.slice(at, at + section.questions.length));
682
- at += section.questions.length;
683
- }
684
- const of = (name) => bySection.get(name) ?? [];
685
- const scriptLanguage = languageFromAnswer(of("language")[0]);
686
- const works = of("works")[0];
687
- return {
688
- ...scriptLanguage ? { scriptLanguage } : {},
689
- introducesSpeaker: lines.map((_, i) => yes(of("intro")[i], INTRODUCES_SPEAKER_HELD)),
690
- wantsLegibleText: spec.beats.map((_, i) => yes(of("legible")[i], WANTS_LEGIBLE_TEXT_HELD)),
691
- ...works && "noul" in works ? { castWorksThere: works.noul >= WORKS_THERE_HELD } : {},
692
- voiceGenders,
693
- captionCarriesOn: carriesOnFromAnswers(carries.words, of("carries")),
694
- read: true
695
- };
696
- }
697
-
698
- // src/engine/scaffold/ad-display-face.ts
699
- var AD_DISPLAY_FAMILY = "AdDisplay";
700
- function displayFontStack(face) {
701
- const fallback = "'Arial Black', 'Helvetica Neue', Arial, sans-serif";
702
- return face ? `'${face}', ${fallback}` : fallback;
703
- }
704
- function adDisplayFaceCss(file) {
705
- return [
706
- " /* --- the brand's face (baker canvas scaffold-ad) --- */",
707
- ` @font-face { font-family: '${AD_DISPLAY_FAMILY}'; src: url('./${file}'); font-weight: 100 900; font-display: block; }`,
708
- ` .caption-group { font-family: ${displayFontStack(AD_DISPLAY_FAMILY)}; }`
709
- ].join("\n");
710
- }
711
- function injectAdDisplayFace(indexHtml, file) {
712
- return indexHtml.replace(" </style>", `${adDisplayFaceCss(file)}
713
- </style>`);
714
- }
715
-
716
- // src/engine/scaffold/ad-layer-placement.ts
717
- var CAPTION_MIN_LIFT = 0.1;
718
- function adLayerPlacement(aspect) {
719
- const safe = videoSafeArea(aspect);
720
- return {
721
- caption: { bottom: Math.max(safe.bottom, CAPTION_MIN_LIFT), side: Math.max(safe.left, safe.right) },
722
- mark: { top: safe.top, left: safe.left },
723
- card: safe
724
- };
725
- }
726
- var cssPct = (fraction) => `${Math.round(fraction * 1e3) / 10}%`;
727
- function adCaptionPlacementCss(aspect) {
728
- const { caption } = adLayerPlacement(aspect);
729
- return [
730
- " /* --- caption placement (baker canvas scaffold-ad) --- */",
731
- " /* Relative to the frame and inside what the platform leaves clear: Reels covers the",
732
- " bottom 35% of a 9:16 frame, and cards drawn at the old 320px sat under it. */",
733
- ` .caption-container { bottom: ${cssPct(caption.bottom)}; padding: 0 ${cssPct(caption.side)}; }`,
734
- ` .caption-group { bottom: 0; max-width: ${cssPct(1 - 2 * caption.side)}; }`
735
- ].join("\n");
736
- }
737
- function injectAdCaptionPlacement(indexHtml, aspect) {
738
- return indexHtml.replace(" </style>", `${adCaptionPlacementCss(aspect)}
739
- </style>`);
740
- }
741
-
742
- // src/engine/scaffold/ad-brand-overlay.ts
743
- var markFallback = (name) => name.trim() ? ` onerror="this.replaceWith(Object.assign(document.createElement('span'),{className:this.className+' brand-wordmark',textContent:${escapeHtml(JSON.stringify(name.trim()))}}))"` : "";
744
- function buildAdBrandOverlay(opts) {
745
- const { logo, cta, cardAtS, cardDurationS, totalS } = opts;
746
- if (!logo && !cta?.trim()) return "";
747
- const inkClass = opts.markIsLight ? " on-dark" : "";
748
- const parts = [
749
- "<!-- Brand layer, emitted by `baker canvas scaffold-ad`. The mark and the closing",
750
- " card are drawn HERE, by the composition \u2014 never generated as a picture, because",
751
- " a video model garbles a wordmark every time. Restyle freely, but keep the",
752
- " data-start/data-dur attributes and the script below: that script is what shows",
753
- " and hides these, and the host composition has nothing that would. -->"
754
- ];
755
- if (logo) {
756
- parts.push(
757
- `<img class="clip brand-mark${inkClass}" src="${escapeHtml(logo.file)}" alt="${escapeHtml(logo.alt)}" data-start="0" data-dur="${totalS}"${markFallback(logo.alt)} />`
758
- );
759
- }
760
- const cardBits = [];
761
- if (logo) {
762
- cardBits.push(
763
- `<img class="endcard-logo${inkClass}" src="${escapeHtml(logo.file)}" alt="${escapeHtml(logo.alt)}"${markFallback(logo.alt)} />`
764
- );
765
- }
766
- if (cta?.trim()) {
767
- cardBits.push(
768
- `<div class="endcard-cta${opts.plateIsDark ? " on-dark-plate" : ""}">${escapeHtml(cta.trim())}</div>`
769
- );
770
- }
771
- parts.push(
772
- `<div class="clip endcard" data-start="${cardAtS}" data-dur="${cardDurationS}" data-role="cta">`,
773
- ...cardBits.map((b) => ` ${b}`),
774
- "</div>",
775
- brandLayerDriver()
776
- );
777
- return parts.join("\n");
778
- }
779
- function brandLayerDriver() {
780
- return [
781
- "<script>",
782
- " (function () {",
783
- " var els = Array.prototype.slice.call(document.querySelectorAll('.brand-mark, .endcard'));",
784
- " if (!els.length) return;",
785
- " els.forEach(function (el) { gsap.set(el, { visibility: 'hidden' }); });",
786
- " var card = document.querySelector('.endcard');",
787
- " var captions = document.getElementById('captions');",
788
- " function attach(tl) {",
789
- " if (!tl) return;",
790
- " els.forEach(function (el) {",
791
- " var at = parseFloat(el.getAttribute('data-start') || '0') || 0;",
792
- " var dur = parseFloat(el.getAttribute('data-dur') || '0') || 0;",
793
- " tl.set(el, { visibility: 'visible' }, at);",
794
- " if (dur > 0) tl.set(el, { visibility: 'hidden' }, at + dur);",
795
- " });",
796
- " // The closing card owns the frame it lands on. The caption track otherwise",
797
- " // keeps running underneath it, and what it captions there is the line spoken",
798
- " // OVER the card \u2014 the call to action, printed a second time in smaller letters",
799
- " // directly below the button that already says it. Hidden on the CONTAINER and",
800
- " // with `display`, because each caption group sets its own `visibility: visible`",
801
- " // and would win against anything set on its parent.",
802
- " if (card && captions) {",
803
- " var cardAt = parseFloat(card.getAttribute('data-start') || '0') || 0;",
804
- " var cardDur = parseFloat(card.getAttribute('data-dur') || '0') || 0;",
805
- " tl.set(captions, { display: 'none' }, cardAt);",
806
- " if (cardDur > 0) tl.set(captions, { display: '' }, cardAt + cardDur);",
807
- " }",
808
- " }",
809
- " var store = window.__timelines || {};",
810
- " var main = store.main;",
811
- " if (main) { attach(main); return; }",
812
- " Object.defineProperty(store, 'main', {",
813
- " configurable: true,",
814
- " get: function () { return main; },",
815
- " set: function (tl) { main = tl; attach(tl); },",
816
- " });",
817
- " window.__timelines = store;",
818
- " })();",
819
- "</script>"
820
- ].join("\n");
821
- }
822
- function adBrandOverlayCss(opts = {}) {
823
- const { mark, card } = adLayerPlacement(opts.aspect ?? "9:16");
824
- return [
825
- " /* --- brand layer (baker canvas scaffold-ad) --- */",
826
- " /* Positioned by this block alone. The composition that actually renders an ad",
827
- " is the caption track, which has no .pos-* helpers \u2014 relying on them put the",
828
- " brand layer in a file nothing opens and shipped an empty green end plate. */",
829
- " /* Height-led, not width-led. Pinned to 220px WIDE, a wordmark whose SVG",
830
- " viewBox is wider than it is tall rendered clipped \u2014 the first real ad drew",
831
- " `greenlea`. Constraining the height and letting the width follow keeps any",
832
- " aspect ratio whole, and the max-width stops a very wide mark spanning the frame. */",
833
- " /* A LIGHT panel behind the mark by DEFAULT. A brand mark is usually drawn to sit",
834
- " on white \u2014 the first one here was #1D5D47 on transparent \u2014 so a dark backing hid",
835
- " it on the corner and the brand-coloured closing plate erased it completely: the",
836
- " end card came out as an empty green frame with a single leaf floating in it. A",
837
- " near-white panel is the background most marks in a brand kit are designed",
838
- " against; the ones that are not get `.on-dark` below. */",
839
- " /* Placed in percentages inside the frame's safe area (`adLayerPlacement`): at a fixed",
840
- " 90px from the top it sat under the Stories and Reels header on every 9:16 ad. */",
841
- ` .brand-mark { position: absolute; top: ${cssPct(mark.top)}; left: ${cssPct(mark.left)}; height: 52px; width: auto;`,
842
- " max-width: 420px; object-fit: contain; padding: 14px 22px; border-radius: 18px;",
843
- " background: rgba(255,255,255,0.94);",
844
- " filter: drop-shadow(0 3px 10px rgba(0,0,0,0.35)); }",
845
- " /* Centred in the safe area, not the frame, so the mark and the call to action stay",
846
- " clear of the chrome on a 9:16 closing card. */",
847
- ` .endcard { position: absolute; top: ${cssPct(card.top)}; bottom: ${cssPct(card.bottom)}; left: ${cssPct(card.left)}; right: ${cssPct(card.right)};`,
848
- " display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 56px;",
849
- " text-align: center; }",
850
- " /* Sized to FILL, not merely bounded. Given only max-* constraints an SVG",
851
- " renders at its own intrinsic size, and a small viewBox drew a closing mark",
852
- " a few dozen pixels tall in the middle of a 1080px frame. */",
853
- " .endcard-logo { width: 62%; height: auto; max-height: 300px; object-fit: contain;",
854
- " padding: 46px 56px; border-radius: 40px; background: rgba(255,255,255,0.96);",
855
- " box-shadow: 0 10px 40px rgba(0,0,0,0.28); }",
856
- " /* A mark whose own ink is LIGHT gets the opposite panel. The near-white panel",
857
- " above is right for the mark a brand kit usually ships \u2014 drawn to sit on white",
858
- " \u2014 and it erases the one it does not: a client's white `logo-dark.svg` rendered",
859
- " as an empty white box in the corner, and again 300px tall on the closing card.",
860
- " Which one a mark is gets MEASURED off the file (`markInkIsLight`), never read",
861
- " off its name: `logo-dark` names the background it is for in one brand kit and",
862
- " the ink itself in the next. */",
863
- " .brand-mark.on-dark, .endcard-logo.on-dark { background: rgba(16,20,18,0.92); }",
864
- " /* The name, when the mark itself could not be drawn. */",
865
- ` .brand-wordmark { display: inline-block; font-family: ${displayFontStack(opts.face)};`,
866
- " font-weight: 900; color: #14231b; letter-spacing: -0.01em; }",
867
- " .brand-mark.brand-wordmark { font-size: 34px; line-height: 1; height: auto; }",
868
- " .endcard-logo.brand-wordmark { font-size: 96px; line-height: 1; width: auto; }",
869
- " /* Capped and wrapping, not sized to its content: measured in a real browser,",
870
- " `GET YOUR FREE QUOTE` renders 948px wide against a 1080px canvas, so the next",
871
- " slightly longer call to action runs off the frame. Two lines beat an edge. */",
872
- " /* The SAME family the caption track uses, and only names the compiler maps.",
873
- " Declaring one matters \u2014 rendered without it the call to action inherited the",
874
- " document default and came out in Times beside sans-serif captions. But the",
875
- " first attempt led with 'BrandFont', which the overlay composition defines and",
876
- " the caption composition does not: HyperFrames refuses an unmapped family and",
877
- " the whole render died with `No deterministic font mapping for: BrandFont`. */",
878
- " /* The button is the OPPOSITE of the plate it sits on. Filling it with the brand",
879
- " colour made it invisible \u2014 the plate is filled with that same colour, so the",
880
- " button was brand-on-brand and its white copy read as another caption line \u2014",
881
- " and a fixed near-black fill is that defect mirrored, on the black plate an ad",
882
- " with no palette gets. The plate carries the brand; the button carries the",
883
- " contrast. Light copy on the near-black default, dark copy on the light one. */",
884
- ` .endcard-cta { font-family: ${displayFontStack(opts.face)};`,
885
- " font-size: 64px; font-weight: 900; text-transform: uppercase;",
886
- " letter-spacing: 0.01em; color: #fff; padding: 28px 58px; border-radius: 56px;",
887
- " max-width: 900px; line-height: 1.15; background: rgba(0,0,0,0.82); }",
888
- " .endcard-cta.on-dark-plate { background: rgba(255,255,255,0.96); color: #14231b; }"
889
- ].join("\n");
890
- }
891
- function injectAdBrandOverlay(indexHtml, overlayHtml, style = {}) {
892
- if (!overlayHtml.trim()) return indexHtml;
893
- const withCss = indexHtml.replace(" </style>", `${adBrandOverlayCss(style)}
894
- </style>`);
895
- if (withCss.includes("<!--OVERLAYS-->")) return withCss.replace("<!--OVERLAYS-->", () => overlayHtml);
896
- const rootClose = withCss.lastIndexOf("</div>");
897
- if (rootClose === -1) return withCss;
898
- return `${withCss.slice(0, rootClose)}${overlayHtml}
899
- ${withCss.slice(rootClose)}`;
900
- }
901
-
902
- // src/commands/canvas/scaffold-ad.ts
903
- function pinnedOnAvatar(handle, model) {
904
- const hint = pinnedModelHint({ avatar: handle ?? void 0, model, generateAudio: true });
905
- return hint ? [hint] : [];
906
- }
907
- var AD_SPEC_FILE = "ad.spec.json";
908
- registerSchema({
909
- command: "canvas.scaffold-ad",
910
- description: "Build a captioned vertical ad from a WRITTEN SPEC \u2014 no reference video. Start here when someone asks for an ad, a promo or a UGC-style clip and there is nothing to copy: `scaffold-video` reproduces a video you already have, this one writes a new one. You supply a spec of BEATS, and a beat is one line the voice says plus one shot the viewer sees while it is said. Everything else \u2014 the read, the caption cards, the clips, the music, the render \u2014 is derived from that pair, so the ad cannot drift out of sync with itself.",
911
- args: {
912
- spec: {
913
- type: "string",
914
- required: true,
915
- description: 'Path to the ad spec JSON. Shape: { format?, market?, brand?, cast?, end_card?, voice?, music?, beats: [{ say, show, on_camera?, cast? }] }. Fill `brand` from src/brand/BRAND.md \u2014 `palette` (its hex tokens, most important first) and `logo` (the repo path to the mark) are what make the ad look like the client rather than like stock. `market` is where the ad is set ("Mexico"); omitted, it is the country of a regional `voice.language` ("es-MX"), else nowhere \u2014 a language alone names no country, and an ad with no place is what fills a Spanish ad with British houses. `voice.language` is a BCP-47 tag; omitted, the language is read off the `say` lines. `say` is one clause ending in its own punctuation \u2014 it becomes a caption card verbatim, so two sentences in one beat produce a card holding both. `show` is the shot brief for that line. Set `on_camera` only when that beat\'s subject talks to camera. A beat\'s `sound` is one sound effect for that shot, and most beats should not have one. Add it only where the picture shows a specific physical event the viewer expects to hear (a drill tightening a bolt, a door closing, rain on glass, a graphic snapping in). On a talking head or a calm lifestyle shot it reads as a stock sting, and one per beat turns a quiet ad into a noisy one. A music bed plus two well-placed effects beats eight. `voiceover: false` makes it a MUSIC-LED ad: nobody speaks, the `say` lines become on-screen text captioned straight from the script, and it needs `music`. `cast` is WHO the ad is about, and an ad with people in it needs one: `{ "avatar": "marta" }` names a cast avatar (`baker avatars list`) and every beat is grounded on that avatar\'s identity sheet with its subject description copied verbatim \u2014 the same face here as in the rest of the company\'s work. Without it each beat invents its own stranger, which is how one 28-second ad came back with five different men playing one customer. `{ "description": "..." }` invents a realistic person for this one ad: a candid portrait is generated from the description and every beat grounds on it. Use an avatar only when the same actor must recur across ads. A beat sets `cast: false` for a shot they are not in. `end_card` is on by default whenever `brand` is set: the last beat becomes a flat brand plate with the mark and a call to action drawn over it. `{ "cta": "..." }` sets the button copy \u2014 there is no default, so with no `cta` the card carries the mark alone, and a `cta` repeating the closing line is dropped rather than printed twice. `false` keeps the footage.'
916
- },
917
- avatar: {
918
- type: "string",
919
- required: false,
920
- description: "Cast this avatar as the ad's recurring person \u2014 the same flag, the same word and the same meaning as on `baker studio generate` and `baker studio animate`. Every beat they appear in is grounded on their identity sheet and their subject description is copied verbatim, so it is one face throughout and the same face as the rest of the company's work. Overrides `cast.avatar` in the spec. `baker avatars list` shows who there is."
921
- },
922
- "no-brand": {
923
- type: "boolean",
924
- description: "Build the ad with no brand layer at all: no logo and no closing card. For an ad they asked to keep plain. A missing logo does not need it: with no mark in src/brand/logos/ the ad is built without the corner mark and the hints say how to add one. Never draw a stand-in mark.",
925
- required: false,
926
- default: false
927
- },
928
- "video-model": {
929
- type: "string",
930
- required: false,
931
- description: "Curated video model id for the shots. Only for comparing models on one brief.",
932
- enum: [...VIDEO_GENERATE_MODELS]
933
- },
934
- platforms: {
935
- type: "string",
936
- required: false,
937
- description: "Where the ad runs, the main platform first (meta, linkedin, tiktok, \u2026): recorded in _definition.md. Take it from the person's request or the idea."
938
- },
939
- slug: {
940
- type: "string",
941
- required: false,
942
- description: "Creative slug \u2014 writes to src/creatives/<slug>/<slug>.canvas.json"
943
- },
944
- out: {
945
- type: "string",
946
- required: false,
947
- description: "Output canvas path (default <spec-dir>/<name>.canvas.json)"
948
- }
949
- }
950
- });
951
- function avatarVoiceBrief(avatar) {
952
- if (!avatar) return void 0;
953
- const parts = [avatar.subjectDescription, avatar.profile?.persona, avatar.profile?.speech].map((p) => p?.trim()).filter((p) => Boolean(p));
954
- return parts.length > 0 ? parts.join("; ") : void 0;
955
- }
956
- var scaffoldAdCommand = defineCommand({
957
- meta: {
958
- name: "scaffold-ad",
959
- description: 'Build a captioned vertical ad from a written spec, with no reference video to copy.\n\nA spec is a list of BEATS. One beat = one line the voice says + one shot on screen while it is said. That pairing is what keeps the ad honest: the caption card IS the line, so it can never end mid-sentence, and the picture can never drift from the read.\n\nTwo rules the spec enforces for you, both learned the expensive way:\n \u2022 `say` is one clause with its own punctuation. Two sentences in a beat is rejected.\n \u2022 Nobody in shot is speaking unless you set `on_camera` on that beat. A person visibly talking under a voice that is not theirs reads as bad dubbing.\n\nExample spec:\n { "beats": [\n { "say": "Mientras t\xFA sigues pagando la luz a precio de oro,", "show": "Aerial over Spanish rooftops at golden hour." },\n { "say": "Haz clic en el enlace y reserva tu estudio gratuito.", "show": "A couple walking home at sunset." } ] }\n\nWho is in it:\n `cast: { avatar: "marta" }` grounds every beat on that avatar\'s face \u2014 cast one with `baker avatars`.\n Without a cast, each beat invents its own person and the ad reads as a stock-footage collage.\n\nHow it ends: with a `brand`, the last beat closes on a flat brand plate carrying the mark and the CTA.\n\nThen: baker canvas run <the canvas it writes>'
960
- },
961
- args: {
962
- spec: { type: "string", required: true, description: "Path to the ad spec JSON" },
963
- avatar: { type: "string", required: false, description: "Cast this avatar as the ad's recurring person \u2014 the same flag, the same word and the same meaning as on `baker studio generate` and `baker studio animate`. Every beat they appear in is grounded on their identity sheet and their subject description is copied verbatim, so it is one face throughout and the same face as the rest of the company's work. Overrides `cast.avatar` in the spec. `baker avatars list` shows who there is." },
964
- "video-model": {
965
- type: "string",
966
- required: false,
967
- description: "Which curated video model renders the shots. Defaults to the one the lane picks; pass this only to compare models on the same brief, because mixing models across a campaign changes how the same face reads. `baker canvas catalog --node video_generate` lists what each one takes."
968
- },
969
- "no-brand": {
970
- type: "boolean",
971
- required: false,
972
- default: false,
973
- description: "Build the ad with no brand layer at all: no logo and no closing card. For an ad they asked to keep plain. A missing logo does not need it: the ad is then built without the corner mark."
974
- },
975
- platforms: {
976
- type: "string",
977
- required: false,
978
- description: "Where the ad runs, the main platform first (meta, linkedin, tiktok, \u2026): recorded in _definition.md. Take it from the person's request or the idea."
979
- },
980
- slug: {
981
- type: "string",
982
- required: false,
983
- description: "Creative slug \u2014 writes to src/creatives/<slug>/<slug>.canvas.json"
984
- },
985
- out: { type: "string", required: false, description: "Output canvas path" }
986
- },
987
- async run({ args }) {
988
- const specPath = args.spec;
989
- let parsed;
990
- try {
991
- parsed = JSON.parse(await readFile(specPath, "utf-8"));
992
- } catch (e) {
993
- writeJson({
994
- ok: false,
995
- error: {
996
- code: "VALIDATION_ERROR",
997
- message: `Could not read the ad spec at ${specPath}: ${e instanceof Error ? e.message : String(e)}`,
998
- fix: "Write the spec first \u2014 a JSON file with a `beats` array, each beat holding `say` (one clause) and `show` (the shot)."
999
- }
1000
- });
1001
- process.exit(1);
1002
- return;
1003
- }
1004
- const spec = AdSpec.safeParse(parsed);
1005
- if (!spec.success) {
1006
- writeJson({
1007
- ok: false,
1008
- error: {
1009
- code: "VALIDATION_ERROR",
1010
- message: `That ad spec is not usable: ${spec.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ")}`,
1011
- fix: "A beat is ONE line and ONE shot. If a beat holds two sentences, split it into two beats \u2014 the line becomes a caption card verbatim, and a card holding two sentences is the defect this refuses."
1012
- }
1013
- });
1014
- process.exit(1);
1015
- return;
1016
- }
1017
- const flagAvatar = args.avatar?.trim();
1018
- if (flagAvatar) {
1019
- spec.data.cast = { ...spec.data.cast, avatar: flagAvatar };
1020
- }
1021
- let autoCast = null;
1022
- if (!flagAvatar && !spec.data.cast?.avatar) {
1023
- const roster = await readAvatars(
1024
- "/api/avatars",
1025
- { status: "ready" }
1026
- ).catch(() => null);
1027
- const named = roster ? castedAvatarOnRoster(spec.data, roster.avatars) : null;
1028
- if (named) {
1029
- spec.data.cast = { ...spec.data.cast, avatar: named };
1030
- autoCast = named;
1031
- }
1032
- }
1033
- const specArtifact = structuredClone(spec.data);
1034
- if (spec.data.set?.description && !spec.data.set.image?.trim()) {
1035
- writeJson({
1036
- ok: false,
1037
- error: {
1038
- code: "VALIDATION_ERROR",
1039
- message: "This ad names a recurring place but gives no picture of it. A location sheet is fused from a real image; with nothing to fuse there is no sheet, and every shot invents the room again.",
1040
- // Names `studio generate`, which is the command that exists — `baker images`
1041
- // finds and ingests pictures, it does not make them, so the line this used to
1042
- // print could not be run. No `--model` either: the lane already defaults to the
1043
- // curated image model, and the one named here was the legacy id the picker now
1044
- // offers to nobody.
1045
- fix: `Make the plate once, then pass it: \`baker studio generate "${spec.data.set.description}"\`, then put its url in the spec as \`"set": { "description": "\u2026", "image": "<url>" }\`. Drop \`set\` entirely if the ad does not keep returning to one place.`
1046
- }
1047
- });
1048
- process.exit(1);
1049
- return;
1050
- }
1051
- const requestedModel = args["video-model"]?.trim();
1052
- if (requestedModel && !VIDEO_GENERATE_MODELS.includes(requestedModel)) {
1053
- writeJson({
1054
- ok: false,
1055
- error: {
1056
- code: "VALIDATION_ERROR",
1057
- message: `\`${requestedModel}\` is not one of the curated video models.`,
1058
- fix: `Pick one of: ${VIDEO_GENERATE_MODELS.join(", ")}. Leave --video-model off to use the default.`
1059
- }
1060
- });
1061
- process.exit(1);
1062
- return;
1063
- }
1064
- const chosenVideoModel = requestedModel ?? DEFAULT_VIDEO_GENERATE_MODEL;
1065
- const handle = flagAvatar || spec.data.cast?.avatar?.trim();
1066
- let avatar = null;
1067
- let avatarError = null;
1068
- if (handle) {
1069
- try {
1070
- avatar = await readAvatars(
1071
- "/api/avatars/get",
1072
- { handle, full: "true" }
1073
- );
1074
- if (avatar?.status && avatar.status !== "ready") {
1075
- avatarError = `Avatar \`${handle}\` is ${avatar.status}, not ready \u2014 only a ready avatar can be cast. Check \`baker avatars get ${handle}\`.`;
1076
- avatar = null;
1077
- } else if (!avatar?.sheetUrl) {
1078
- avatarError = `Avatar \`${handle}\` has no identity sheet yet, so the ad cannot ground on their face.`;
1079
- avatar = null;
1080
- }
1081
- } catch (e) {
1082
- avatarError = `Could not read avatar \`${handle}\`: ${e instanceof Error ? e.message : String(e)}. \`baker avatars list\` shows who there is.`;
1083
- }
1084
- }
1085
- if (avatarError && !spec.data.cast?.description?.trim()) {
1086
- writeJson({
1087
- ok: false,
1088
- error: {
1089
- code: "VALIDATION_ERROR",
1090
- message: avatarError,
1091
- fix: `This ad casts \`${handle}\` and describes nobody else, so without them every shot renders a person nobody chose. Wait for the avatar and re-run \u2014 \`baker avatars get ${handle} --wait\` returns the moment it is ready \u2014 or cast someone who is (\`baker avatars list\`). To build it with an invented person instead, put a written description in \`cast.description\`.`
1092
- }
1093
- });
1094
- process.exit(1);
1095
- return;
1096
- }
1097
- const fromWorkspace = await readBrandFromWorkspace();
1098
- const filledLogo = !spec.data.brand?.logo && fromWorkspace.logo ? fromWorkspace.logo : void 0;
1099
- const filledPalette = !spec.data.brand?.palette?.length && fromWorkspace.palette?.length ? fromWorkspace.palette : void 0;
1100
- if (filledLogo || filledPalette) {
1101
- spec.data.brand = {
1102
- ...spec.data.brand,
1103
- ...filledLogo ? { logo: filledLogo } : {},
1104
- ...filledPalette ? { palette: filledPalette } : {}
1105
- };
1106
- }
1107
- const resolvedLogo = spec.data.brand?.logo?.trim();
1108
- const logoExists = resolvedLogo ? await stat(resolvedLogo).then(() => true, () => false) : false;
1109
- const noBrand = Boolean(args["no-brand"]);
1110
- const fetched = !logoExists && !noBrand ? await fetchClientLogo() : null;
1111
- if (fetched?.ok) {
1112
- spec.data.brand = { ...spec.data.brand, logo: fetched.path };
1113
- }
1114
- const haveLogo = logoExists || fetched?.ok === true;
1115
- if (!haveLogo && spec.data.brand?.logo) {
1116
- const { logo: _missing, ...rest } = spec.data.brand;
1117
- spec.data.brand = rest;
1118
- }
1119
- const noLogoHint = !haveLogo && !noBrand ? [
1120
- `This ad has no logo on screen: ${resolvedLogo ? `the mark at \`${resolvedLogo}\` does not exist` : `there is no mark in \`${BRAND_DIR}/logos/\``}. ${fetched && !fetched.ok ? `${fetched.reason} ` : ""}Meta still shows the page name and picture above it, so it can run as it is; say in your reply that it has no logo. To add the client's logo, put the file their designer delivered in \`${BRAND_DIR}/logos/\` and re-run this command. Never draw one.`
1121
- ] : [];
1122
- const markPath = spec.data.brand?.logo?.trim();
1123
- if (!noBrand && markPath?.toLowerCase().endsWith(".svg")) {
1124
- const svg = await readFile(markPath, "utf-8").catch(() => null);
1125
- if (svg === null) {
1126
- writeJson({
1127
- ok: false,
1128
- error: {
1129
- code: "VALIDATION_ERROR",
1130
- message: `The brand mark at \`${markPath}\` could not be read, so there is no way to tell whether it is a real logo or a typed stand-in. An ad is not shipped on a mark nobody could open.`,
1131
- fix: `Check the file is there and readable, or put the client's logo in \`${BRAND_DIR}/logos/\` \u2014 the file their designer delivered \u2014 an outlined SVG, or the PNG they gave you.`
1132
- }
1133
- });
1134
- process.exit(1);
1135
- return;
1136
- }
1137
- if (svgIsLiveText(svg)) {
1138
- writeJson({
1139
- ok: false,
1140
- error: {
1141
- code: "VALIDATION_ERROR",
1142
- message: `The mark at \`${markPath}\` draws its wordmark with live \`<text>\`, not outlines. That is a typed stand-in, not a logo: it renders in whatever font the machine happens to have, and the one that shipped this way came out reading "greenle\xE1" in every frame.`,
1143
- fix: `Ask the client for their real logo file and put it in \`${BRAND_DIR}/logos/\` \u2014 the one their designer delivered, as an outlined SVG or a PNG they gave you. Do not redraw it, and do not export this file to PNG: rasterising it only bakes the invented letters into pixels, where nothing downstream can tell they are wrong.`
1144
- }
1145
- });
1146
- process.exit(1);
1147
- return;
1148
- }
1149
- }
1150
- if (!noBrand && markPath && !await markIsReal(markPath)) {
1151
- writeJson({
1152
- ok: false,
1153
- error: {
1154
- code: "VALIDATION_ERROR",
1155
- message: `There is no real logo in \`${BRAND_DIR}/logos/\` \u2014 what is there is a typed stand-in, whose wordmark is drawn as live text in a font the renderer does not have. An ad built on it wears letters the machine invented, and converting it to a PNG only bakes them in.`,
1156
- fix: `Ask the client for their actual logo file and put it in \`${BRAND_DIR}/logos/\` \u2014 the one their designer delivered, as an outlined SVG or a PNG they gave you. Do not redraw it and do not export the stand-in to another format.`
1157
- }
1158
- });
1159
- process.exit(1);
1160
- return;
1161
- }
1162
- if (handle) {
1163
- const names = [handle, avatar?.name].filter((value) => Boolean(value));
1164
- spec.data.beats = spec.data.beats.map((beat) => ({ ...beat, show: withoutCastName(beat.show, names) }));
1165
- if (spec.data.cast?.description) {
1166
- spec.data.cast = { ...spec.data.cast, description: withoutCastName(spec.data.cast.description, names) };
1167
- }
1168
- }
1169
- const avatarVoice = avatarVoiceBrief(avatar);
1170
- if (noBrand || !haveLogo && !endCardCta(spec.data)) spec.data.end_card = false;
1171
- const slug = args.slug ?? path.basename(specPath).replace(/\.[^.]+$/, "");
1172
- const outPath = args.out ?? (args.slug ? path.join("src/creatives", slug, `${slug}.canvas.json`) : path.join(path.dirname(specPath), `${slug}.canvas.json`));
1173
- const definitionLanguage = parseDefinitionStrategyFields(
1174
- await readFile(path.join(path.dirname(outPath), "_definition.md"), "utf8").catch(() => "")
1175
- ).language;
1176
- const cacheDir = path.join(findWorkspaceRoot(path.dirname(path.resolve(outPath))) ?? process.cwd(), "canvas", ".cache");
1177
- const spent = [];
1178
- const reading = await readAdSpec(
1179
- spec.data,
1180
- {
1181
- voices: adSpecVoices(spec.data, avatarVoice),
1182
- askLanguage: !spokenLanguageFor(spec.data, { definitionLanguage })
1183
- },
1184
- {
1185
- ask: cachedJev(cacheDir, (questions) => askJevQuestions(questions, (u) => spent.push(u))),
1186
- genders: voiceGenderModel(cacheDir, (u) => spent.push(u))
1187
- }
1188
- );
1189
- await holdUnbilledSpend(cacheDir, spent).catch(() => {
1190
- });
1191
- const contradicts = spec.data.beats.flatMap((beat, i) => reading.wantsLegibleText[i] ? [{ i, show: beat.show }] : []);
1192
- if (contradicts.length > 0) {
1193
- writeJson({
1194
- ok: false,
1195
- error: {
1196
- code: "VALIDATION_ERROR",
1197
- message: `Beat ${contradicts.map(({ i }) => i + 1).join(", ")} asks the picture for a readable figure (e.g. "${contradicts[0]?.show.trim().slice(0, 90)}"). Every frame also carries "no readable text or numbers", so the two fight and the picture wins \u2014 one such brief rendered a bill reading $58,085.00 over a total of $139.00.`,
1198
- fix: "Say what the shot LOOKS like, not what it reads: 'a bill in her hands, her face falling'. The ad's numbers belong in the `say` line, where the caption track renders them correctly."
1199
- }
1200
- });
1201
- process.exit(1);
1202
- return;
1203
- }
1204
- const introducesOffCamera = beatsIntroducingSpeakerOffCamera(spec.data, reading);
1205
- const firstIntro = introducesOffCamera[0];
1206
- if (firstIntro !== void 0) {
1207
- const line = (spec.data.beats[firstIntro]?.say ?? "").trim();
1208
- writeJson({
1209
- ok: false,
1210
- error: {
1211
- code: "VALIDATION_ERROR",
1212
- message: `Beat ${firstIntro + 1} says "${line}" \u2014 the speaker introducing themselves \u2014 but nobody is on camera saying it. A voice from off screen introducing the person standing in shot reads as a mistake, the same way a moving mouth under someone else's voice does.`,
1213
- fix: 'Either set `on_camera: true` on that beat so they say it themselves \u2014 which needs the avatar to have their own accent \u2014 or rewrite the line as narration about them rather than by them: "Marta instal\xF3 placas en nueve d\xEDas", not "Hola, soy Marta".'
1214
- }
1215
- });
1216
- process.exit(1);
1217
- return;
1218
- }
1219
- const spokenLanguage2 = spokenLanguageFor(spec.data, { definitionLanguage, reading });
1220
- const blueprint = adSpecToBlueprint(spec.data, {
1221
- avatarAccent: avatar?.profile?.accent,
1222
- videoModel: chosenVideoModel,
1223
- ...avatarVoice ? { avatarVoice } : {},
1224
- ...definitionLanguage ? { definitionLanguage } : {},
1225
- reading
1226
- });
1227
- let outAr;
1228
- try {
1229
- outAr = resolveAspect(void 0, spec.data.format.aspect_ratio, genAspectsFor(chosenVideoModel)).outAr;
1230
- } catch (e) {
1231
- writeJson({
1232
- ok: false,
1233
- error: {
1234
- code: "VALIDATION_ERROR",
1235
- message: e instanceof Error ? e.message : String(e),
1236
- fix: 'Set `format.aspect_ratio` to one of the ratios the message lists, e.g. "9:16" for Reels and Stories or "4:5" for the feed.'
1237
- }
1238
- });
1239
- process.exit(1);
1240
- return;
1241
- }
1242
- const outDims = canvasDims(outAr);
1243
- const outDir = path.dirname(outPath);
1244
- await mkdir(outDir, { recursive: true });
1245
- const compositionDest = path.join(outDir, "video-overlay-composition");
1246
- const captionsDest = path.join(outDir, "tiktok-captions-composition");
1247
- await cp(SHIPPED_OVERLAY_COMPOSITION_DIR, compositionDest, { recursive: true });
1248
- await cp(SHIPPED_CAPTIONS_DIR, captionsDest, { recursive: true });
1249
- await stampCompositionDims(compositionDest, outDims);
1250
- await stampCompositionDims(captionsDest, outDims);
1251
- const captionsIndex = path.join(captionsDest, "index.html");
1252
- await writeFile(captionsIndex, injectAdCaptionPlacement(await readFile(captionsIndex, "utf-8"), outAr), "utf-8");
1253
- const face = await stageBrandDisplayFace(outDir, captionsDest);
1254
- if (face) {
1255
- await writeFile(captionsIndex, injectAdDisplayFace(await readFile(captionsIndex, "utf-8"), face.file), "utf-8");
1256
- }
1257
- const blueprintPath = path.join(outDir, "prompt.json");
1258
- const blueprintStylePath = path.join(outDir, "prompt.style.json");
1259
- await writeSceneFiles(outDir, blueprint);
1260
- await writeFile(blueprintStylePath, renderStyleProjectionFromValue(blueprint), "utf8");
1261
- await writeFile(path.join(outDir, AD_SPEC_FILE), `${JSON.stringify(specArtifact, null, 2)}
1262
- `, "utf8");
1263
- const logoPath = noBrand ? void 0 : spec.data.brand?.logo?.trim();
1264
- const transcriptPath = path.join(outDir, "transcript.json");
1265
- if (spec.data.voiceover === false) {
1266
- await writeFile(transcriptPath, `${JSON.stringify(staticTranscript(spec.data, chosenVideoModel), null, 2)}
1267
- `, "utf-8");
1268
- }
1269
- const opts = {
1270
- imageModel: AD_IMAGE_MODEL,
1271
- // The frames' model cannot make the sheet: `image_reference_sheet` registers only
1272
- // the Gemini image models, and a sheet asked of gpt-image is an `unknown_model` node
1273
- // that stops the whole canvas. The same sheet model every other scaffold uses.
1274
- sheetModel: ACTOR_SHEET_MODEL,
1275
- videoModel: chosenVideoModel,
1276
- overlayCompositionPath: path.relative(outDir, compositionDest),
1277
- captionsCompositionPath: path.relative(outDir, captionsDest),
1278
- blueprintPath: path.relative(outDir, blueprintPath),
1279
- blueprintStylePath: path.relative(outDir, blueprintStylePath),
1280
- aspect: spec.data.format.aspect_ratio,
1281
- resolution: spec.data.format.resolution,
1282
- // A beat is one clause and one card, so the cap has to clear a whole clause.
1283
- // The composition's default of 3 is TikTok karaoke styling; applied to an ad
1284
- // it overrode the clause rule on every line and rendered "IS STANDARD. WE".
1285
- // 8 is the composition's own maximum and clears every beat measured here.
1286
- captionWordsPerGroup: 8,
1287
- // The `say` lines are the copy the viewer reads, so they are what the captions print;
1288
- // the transcription of the voice track only times them.
1289
- captionsFromScript: true,
1290
- // Declared, or read off the lines by Jev; never off the voice description.
1291
- ...spokenLanguage2 ? { spokenLanguage: spokenLanguage2 } : {},
1292
- voiceGenders: reading.voiceGenders,
1293
- ...reading.captionCarriesOn.length ? { captionCarriesOn: reading.captionCarriesOn } : {},
1294
- // The avatar's ACCENT reaches the clip through the blueprint (`avatarAccent` above,
1295
- // baked into `global.voiceover.accent`), not a pinned voice. A pinned voice was
1296
- // removed on purpose (ADR 0005): the re-voice is speech-to-speech, so it replaces
1297
- // timbre and keeps the pronunciation it is handed. The clip speaks in the voice the
1298
- // video model renders, and the region is directed in the prompt.
1299
- //
1300
- // Same decision, one step further: with an avatar on camera the clip's own voice is
1301
- // kept, not re-voiced. The re-voice is the speech-to-speech route ADR 0005 measured
1302
- // and rejected — it would swap the voice that matches the mouth and the directed
1303
- // region for one cast off an English stock list. Only the on-camera voice; a
1304
- // voiceover read has no rendered voice to keep and is still cast.
1305
- //
1306
- // The KNOWN RISK this carries, recorded here because it is decided here: keeping the
1307
- // rendered voice also means no pass unifies her beats, and each beat is its own
1308
- // generation, so nothing guarantees two of them sound like the same person. The
1309
- // reference image fixes the face; nothing fixes the voice. Measured on a finished
1310
- // three-beat ad (her, a cutaway, her): median speaking pitch 210.5 Hz and 216.2 Hz,
1311
- // near-identical spreads — the same voice as far as pitch can say — and the two
1312
- // extracts were then listened to side by side and judged to be the same person. Not
1313
- // proof for every ad: one listener, one ad, and pitch is one dimension of a voice.
1314
- //
1315
- // If it does show up, the fix is not to drop `keepRenderedVoice` — that brings back
1316
- // the stock voice this exists to avoid. It is to convert the LATER extracts onto the
1317
- // first beat of the same speaker, which keeps a voice the clip really produced.
1318
- ...avatar ? { keepRenderedVoice: true } : {},
1319
- ...spec.data.voiceover === false ? { staticTranscriptPath: path.relative(outDir, transcriptPath) } : {}
1320
- };
1321
- const canvas = scaffoldVideoCanvas(blueprint, adSpecCastElements(spec.data, avatar), opts);
1322
- const renderNode = canvas.nodes.find((n) => n.type === "hyperframe_render");
1323
- const renderedDir = renderNode ? path.join(outDir, String(renderNode.params?.composition ?? "")) : null;
1324
- let staged = null;
1325
- let markIsLight = false;
1326
- if (logoPath && renderedDir) {
1327
- const ext = path.extname(logoPath) || ".png";
1328
- try {
1329
- await copyFile(logoPath, path.join(renderedDir, `brand-mark${ext}`));
1330
- staged = { file: `brand-mark${ext}`, alt: spec.data.brand?.name ?? "brand" };
1331
- markIsLight = await markInkIsLight(logoPath);
1332
- } catch {
1333
- }
1334
- }
1335
- const closing = blueprint.scenes[blueprint.scenes.length - 1];
1336
- const overlayHtml = !noBrand && endCardWanted(spec.data) && closing && renderedDir ? buildAdBrandOverlay({
1337
- logo: staged,
1338
- cta: endCardCta(spec.data),
1339
- cardAtS: closing.start_s,
1340
- cardDurationS: closing.duration_s,
1341
- totalS: blueprint.estimated_duration_s,
1342
- markIsLight,
1343
- // The card's button is coloured against the plate the engine will fill from
1344
- // this same palette — including the black plate an ad with no palette gets.
1345
- plateIsDark: plateIsDark(spec.data.brand?.palette)
1346
- }) : "";
1347
- if (overlayHtml && renderedDir) {
1348
- const indexPath = path.join(renderedDir, "index.html");
1349
- const html = await readFile(indexPath, "utf-8");
1350
- await writeFile(indexPath, injectAdBrandOverlay(html, overlayHtml, { aspect: outAr, ...face ? { face: AD_DISPLAY_FAMILY } : {} }), "utf-8");
1351
- }
1352
- await writeFile(
1353
- path.join(outDir, REBUILD_FILE),
1354
- `${JSON.stringify({ elements: adSpecCastElements(spec.data, avatar), opts }, null, 2)}
1355
- `,
1356
- "utf8"
1357
- );
1358
- const validation = await validateCanvasDeep(resolveRelativeCanvasPaths(canvas, outDir), defaultRegistry());
1359
- if (!validation.ok) {
1360
- const meta = canvas.metadata;
1361
- meta.todo = { ...meta.todo ?? {}, blocking_validation_issues: validation.issues };
1362
- }
1363
- await writeFile(outPath, `${JSON.stringify(canvas, null, 2)}
1364
- `, "utf-8");
1365
- if (!validation.ok) {
1366
- process.stderr.write(
1367
- `${JSON.stringify(
1368
- {
1369
- ok: false,
1370
- error: { code: "validation", issues: validation.issues },
1371
- canvas_path: outPath,
1372
- note: "The canvas WAS written despite the blocking issue(s). Fix the spec and re-run this command, or fix them in place, then `baker canvas validate` before running."
1373
- },
1374
- null,
1375
- 2
1376
- )}
1377
- `
1378
- );
1379
- process.exit(2);
1380
- return;
1381
- }
1382
- if (args.slug) {
1383
- const definitionPath = path.join(outDir, "_definition.md");
1384
- const definitionExists = await stat(definitionPath).then(() => true, () => false);
1385
- if (!definitionExists) {
1386
- await writeFile(
1387
- definitionPath,
1388
- buildCreativeDefinition({
1389
- title: titleFromSlug(slug),
1390
- kind: "video",
1391
- ...definitionPlatformsOf(args.platforms ? String(args.platforms) : void 0, void 0),
1392
- formats: resolveFormats(spec.data.format.aspect_ratio),
1393
- description: spec.data.beats.map((beat) => beat.say.trim()).join(" ")
1394
- }),
1395
- "utf8"
1396
- );
1397
- }
1398
- await syncCreativeDefinitionBestEffort({
1399
- slug,
1400
- title: titleFromSlug(slug),
1401
- ...await readDefinitionPlatforms(outPath),
1402
- formats: [spec.data.format.aspect_ratio],
1403
- canvas,
1404
- sourceSha: await computeSourceSha(outPath)
1405
- });
1406
- }
1407
- writeJson({
1408
- ok: true,
1409
- data: { canvas: outPath, beats: spec.data.beats.length, slug },
1410
- hints: [
1411
- // Before anything else: a beat too short to play is a beat to merge, and it is
1412
- // free to fix here and expensive to discover in a finished ad.
1413
- ...shortBeatHint(beatsTooShortToPlay(spec.data), spec.data.beats.length),
1414
- ...noLogoHint,
1415
- ...face ? [`The captions and the closing button are set in the brand's face: ${face.label}.`] : [],
1416
- ...noBrand ? [
1417
- "Built with NO brand mark and no closing card, because you passed --no-brand. Say that in your reply: the user is getting an unbranded ad and should know it, not discover it. When they do have a logo, put it in `src/brand/logos/` and re-run without the flag."
1418
- ] : [],
1419
- // Same reasoning as `studio animate`: a cast avatar that speaks routes to the
1420
- // default model on purpose, and pinning one discards that silently. An ad's
1421
- // beats always speak, so there is no silent case to exclude here.
1422
- ...pinnedOnAvatar(handle, requestedModel),
1423
- // `--until frames` on anything carrying a face or a mark, because that is where
1424
- // getting it wrong is expensive: the pictures cost a fraction of the clips, and
1425
- // every defect anyone has caught in a finished ad was visible in them. The run
1426
- // stops, the agent reviews the frames, and continuing pays for none of them twice.
1427
- handle || staged ? `Wrote ${spec.data.beats.length} beats to ${outPath}. Run it with \`baker canvas run ${outPath} --until frames --brief "<what they asked for, their words>"\`, review the frames against the brief and Brand, fix any defects, then resume immediately with the \`--run-id\` it gives you. Wait for the user only when they explicitly requested storyboards only or a review before continuing. This ad carries ${handle ? "a person's face" : "the client's mark"}, and a wrong look costs a whole ad to discover after the clips.` : `Wrote ${spec.data.beats.length} beats to ${outPath}. Run it with \`baker canvas run ${outPath} --brief "<what they asked for, their words>"\`.`,
1428
- ...autoCast ? [
1429
- `Cast \`${autoCast}\` \u2014 the spec described this person in words, and they are one of this company's avatars. Every shot now grounds on their identity sheet and carries their accent and delivery. Write \`"cast": { "avatar": "` + autoCast + '" }` yourself next time; a written description is for someone the company does not have.'
1430
- ] : [],
1431
- `These beats run about ${blueprint.estimated_duration_s}s. If the ask was longer, add beats \u2014 the length is the sum of the lines, so a 25s ad needs roughly 25s of script and cannot be stretched by holding shots.`,
1432
- ...logoPath && !staged ? [`Could not read the logo at \`${logoPath}\` \u2014 the ad has no mark on screen. Give the path as it appears in src/brand/BRAND.md, relative to the workspace root.`] : [],
1433
- ...staged ? ["The brand mark is drawn by the composition \u2014 top-left throughout, and large on the closing card. It is never generated as a picture, so it cannot come back garbled."] : [],
1434
- ...endCardWanted(spec.data) ? ["The last beat closes on a flat brand plate with the call to action over it, instead of one more photograph."] : [],
1435
- ...spec.data.brand?.logo && !filledLogo && !spec.data.brand.logo.startsWith(`${BRAND_DIR}/`) ? [
1436
- `The mark at \`${spec.data.brand.logo}\` is not in \`${BRAND_DIR}/logos/\`. If you drew it for this ad, it is not the client's logo and the ad is going out wearing something you invented \u2014 put the real one in the brand folder (\`/brand-build\`) and re-run. A hand-drawn wordmark also tends to overflow its own viewBox, which renders as a clipped word.`
1437
- ] : [],
1438
- ...filledLogo || filledPalette ? [
1439
- `The spec left the brand empty, so it was read from the workspace: ${[filledLogo ? `logo \`${filledLogo}\`` : null, filledPalette ? `palette ${filledPalette.slice(0, 3).join(", ")}` : null].filter(Boolean).join(" and ")}. Pass them yourself when the ad needs a different mark or colour.`
1440
- ] : [],
1441
- ...avatarError ? [avatarError] : [],
1442
- ...avatar ? [
1443
- ...avatar?.profile?.accent?.trim() ? [] : [
1444
- `Avatar \`${handle}\` has no accent on their profile, so the video model picks a region on its own and usually picks the commonest one. An avatar has no pinned voice by design (ADR 0005) \u2014 the accent IS the lever: \`baker avatars update ${handle} --accent "Spanish from Spain, Madrid"\`.`
1445
- ],
1446
- `Every beat the customer appears in is grounded on \`${handle}\`'s identity sheet, and their subject description was copied into the frames verbatim \u2014 so it is the same face throughout and the same face as the rest of this company's work.`
1447
- ] : [],
1448
- ...presenterIsInEveryShot(spec.data) ? [
1449
- "The presenter is in every beat, so this ad has no cutaway \u2014 the viewer never sees the bill, the roof, the install or the house, only a face. A rendered ad built this way came back as three near-identical shots of one person smiling. Set `cast: false` on the beats that should show the thing itself."
1450
- ] : [],
1451
- ...!spec.data.cast ? [
1452
- 'This ad declares no `cast`, so every beat renders whoever the model invents \u2014 a different face per shot. If a person appears more than once, describe them in `cast: { description: "..." }` (one invented person throughout), or cast an avatar with `cast: { avatar: "<handle>" }` when they must recur across ads.'
1453
- ] : [],
1454
- ...spec.data.cast && !avatar ? [
1455
- "This cast has a description but no avatar, so a realistic person is invented from it for this ad (a candid portrait every beat grounds on). That is right for a one-off ad; if the same actor has to come back in other ads, cast an avatar (`baker avatars list`) and pass `cast.avatar`."
1456
- ] : [],
1457
- ...marketFor(spec.data, definitionLanguage) ? [] : [
1458
- 'This ad names no `market`, so its frames say nowhere and the model picks the place. A language is not a country: set `market` ("Mexico", "Spain") or give `voice.language` with its country ("es-MX") and re-run.'
1459
- ],
1460
- ...reading.read ? [] : [
1461
- `The spec's lines could not be read this time, so ${spokenLanguage2 ? "" : "the voice is cast with no language, "}no voice is held to a gender, captions break on the word count alone, and no line or brief was checked for a self-introduction or readable text. Re-run to read them, or set \`voice.language\` to say the language.`
1462
- ],
1463
- ...spec.data.voiceover === false ? [
1464
- "Nobody speaks in this ad, so the `say` lines are ON-SCREEN text: they are captioned straight from the script, exactly as written, with no voice and no transcription in between. Give it `music` \u2014 a music-led ad with no bed is a silent one."
1465
- ] : [],
1466
- "The caption cards print your `say` lines as written, timed to the voice as it reads them; a word the voice slurs or the recogniser mishears still shows as you wrote it. Read the lines back before running: that is the copy the viewer sees.",
1467
- "Every clip renders with nobody speaking unless a beat set `on_camera`. If a beat needs a presenter talking, set it there rather than describing it in `show`.",
1468
- // Keyed on what is MISSING, not on whether `brand` exists at all: a spec holding
1469
- // `brand.name` and nothing else once rendered 28 seconds with no palette anywhere.
1470
- // A missing logo is said once, by `noLogoHint`.
1471
- ...spec.data.brand?.palette?.length ? [] : [
1472
- "This spec has no `brand.palette`. Read src/brand/BRAND.md and re-run with it: a name alone leaves the ad in someone else's clothes."
1473
- ],
1474
- "`brand.palette` colours the closing plate the card sits on; `brand.logo` is the repo path to the mark, and it is drawn by the composition \u2014 top-left throughout and large on the closing card \u2014 never generated as a picture, so it cannot come back garbled. Give it whenever the client has one."
1475
- ]
1476
- });
1477
- }
1478
- });
1479
- function shortBeatHint(short, total) {
1480
- if (short.length === 0) return [];
1481
- return [
1482
- `Beat${short.length === 1 ? "" : "s"} ${short.join(", ")} of ${total} ${short.length === 1 ? "is" : "are"} a fragment rather than a line \u2014 a few words with a whole shot to themselves. Every beat's picture holds for at least ${SPOKEN_CLIP_DURATION_S}s, so a two-word beat buys six seconds of somebody standing still, and a run of those plays as a slideshow rather than an ad. Don't pad them. Merge them into the beat before or after, so each one carries a whole thought. Edit the spec and re-run this command.`
1483
- ];
1484
- }
1485
- var MAX_FONT_BYTES = 5e6;
1486
- async function stageBrandDisplayFace(outDir, compositionDir) {
1487
- const root = await findBrandRoot(outDir) ?? process.cwd();
1488
- const kit = await readStaticBrandKit(root);
1489
- const face = await brandHeadlineFont({
1490
- file: kit.headlineFont,
1491
- named: await readNamedTypefaces(root),
1492
- resolveUrl: (family, weight) => webFontUrl(family, weight, { lookupGoogleCss, fetchJson })
1493
- }).catch(() => null);
1494
- if (!face) return null;
1495
- try {
1496
- if ("path" in face.slot) {
1497
- const file2 = `brand-face${path.extname(face.slot.path).toLowerCase()}`;
1498
- await copyFile(face.slot.path, path.join(compositionDir, file2));
1499
- return { file: file2, label: `the font file \`${path.relative(root, face.slot.path)}\`` };
1500
- }
1501
- const { buffer } = await fetchExternalBytes(face.slot.url, { maxBytes: MAX_FONT_BYTES });
1502
- const extension = /\.(woff2|woff|ttf|otf)(?:\?|$)/i.exec(face.slot.url)?.[1]?.toLowerCase() ?? "woff2";
1503
- const file = `brand-face.${extension}`;
1504
- await writeFile(path.join(compositionDir, file), buffer);
1505
- return { file, label: `${face.family ?? "the brand's typeface"}, loaded as a web font` };
1506
- } catch {
1507
- return null;
1508
- }
1509
- }
1510
- export {
1511
- scaffoldAdCommand
1512
- };
1513
- //# sourceMappingURL=scaffold-ad-ZXBNYUSD.js.map