@koda-sl/baker-cli 0.442.0 → 0.443.0-dev.043c1d4ac

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 (1581) hide show
  1. package/README.md +38 -23
  2. package/canvas/tiktok-captions-composition/index.html +5 -6
  3. package/canvas/tiktok-captions-composition/meta.json +5 -0
  4. package/dist/account-4H7QVBRK.js +80 -0
  5. package/dist/account-4H7QVBRK.js.map +1 -0
  6. package/dist/account-IEVEOFIK.js +49 -0
  7. package/dist/account-IEVEOFIK.js.map +1 -0
  8. package/dist/account-RDRK7NOE.js +79 -0
  9. package/dist/account-RDRK7NOE.js.map +1 -0
  10. package/dist/account-writes-AK42HGRM.js +66 -0
  11. package/dist/account-writes-AK42HGRM.js.map +1 -0
  12. package/dist/accounts-4CDRK4S4.js +75 -0
  13. package/dist/accounts-4CDRK4S4.js.map +1 -0
  14. package/dist/accounts-4TYIUVWY.js +77 -0
  15. package/dist/accounts-4TYIUVWY.js.map +1 -0
  16. package/dist/accounts-5QDKBZMH.js +115 -0
  17. package/dist/accounts-5QDKBZMH.js.map +1 -0
  18. package/dist/accounts-6COLJJHM.js +611 -0
  19. package/dist/accounts-6COLJJHM.js.map +1 -0
  20. package/dist/accounts-KYJO3JC6.js +114 -0
  21. package/dist/accounts-KYJO3JC6.js.map +1 -0
  22. package/dist/actions-PEI6ZQAG.js +55 -0
  23. package/dist/active-entities-YUSOUR5M.js +103 -0
  24. package/dist/active-entities-YUSOUR5M.js.map +1 -0
  25. package/dist/activities-ZVQOBHZH.js +74 -0
  26. package/dist/activities-ZVQOBHZH.js.map +1 -0
  27. package/dist/ad-group-writes-QQS4223F.js +170 -0
  28. package/dist/ad-group-writes-QQS4223F.js.map +1 -0
  29. package/dist/ad-groups-WGPDPUI2.js +68 -0
  30. package/dist/ad-groups-WGPDPUI2.js.map +1 -0
  31. package/dist/ad-writes-XE2IE4DS.js +174 -0
  32. package/dist/ad-writes-XE2IE4DS.js.map +1 -0
  33. package/dist/add-577QWMCF.js +97 -0
  34. package/dist/add-577QWMCF.js.map +1 -0
  35. package/dist/add-CUWAW7KG.js +105 -0
  36. package/dist/add-CUWAW7KG.js.map +1 -0
  37. package/dist/add-XDOQQCHS.js +104 -0
  38. package/dist/add-XDOQQCHS.js.map +1 -0
  39. package/dist/add-XEDSBYLM.js +280 -0
  40. package/dist/add-XEDSBYLM.js.map +1 -0
  41. package/dist/ads-BCOSQALY.js +77 -0
  42. package/dist/ads-BCOSQALY.js.map +1 -0
  43. package/dist/ads-H7GH7A26.js +113 -0
  44. package/dist/ads-H7GH7A26.js.map +1 -0
  45. package/dist/ads-TJ7ACFHG.js +40 -0
  46. package/dist/adsets-H7QT42U6.js +176 -0
  47. package/dist/adsets-H7QT42U6.js.map +1 -0
  48. package/dist/advertisers-WSNHNCBQ.js +116 -0
  49. package/dist/advertisers-WSNHNCBQ.js.map +1 -0
  50. package/dist/advertisers-YMHPZYNF.js +111 -0
  51. package/dist/advertisers-YMHPZYNF.js.map +1 -0
  52. package/dist/analytics-PT2GKCFU.js +1958 -0
  53. package/dist/analytics-PT2GKCFU.js.map +1 -0
  54. package/dist/analytics-ZVWUY66X.js +433 -0
  55. package/dist/analytics-ZVWUY66X.js.map +1 -0
  56. package/dist/animate-3Z7HXOLE.js +480 -0
  57. package/dist/animate-3Z7HXOLE.js.map +1 -0
  58. package/dist/assign-B26AJLGN.js +77 -0
  59. package/dist/assign-B26AJLGN.js.map +1 -0
  60. package/dist/audience-size-ZX565D5P.js +94 -0
  61. package/dist/audience-size-ZX565D5P.js.map +1 -0
  62. package/dist/audiences-HFRVIE2X.js +85 -0
  63. package/dist/audiences-HFRVIE2X.js.map +1 -0
  64. package/dist/audiences-JACGRBNN.js +78 -0
  65. package/dist/audiences-JACGRBNN.js.map +1 -0
  66. package/dist/audiences-TGD5US2M.js +268 -0
  67. package/dist/audiences-TGD5US2M.js.map +1 -0
  68. package/dist/audit-AD4ZZNJN.js +88 -0
  69. package/dist/audit-AD4ZZNJN.js.map +1 -0
  70. package/dist/audit-SAXVPGWS.js +151 -0
  71. package/dist/audit-SAXVPGWS.js.map +1 -0
  72. package/dist/autocomplete-6PYFCOMX.js +107 -0
  73. package/dist/autocomplete-6PYFCOMX.js.map +1 -0
  74. package/dist/avatars-2UQJXHPV.js +38 -0
  75. package/dist/bid-pricing-WSHACGX4.js +99 -0
  76. package/dist/bid-pricing-WSHACGX4.js.map +1 -0
  77. package/dist/brand-XBABUT52.js +22 -0
  78. package/dist/brief-KKNC32TA.js +478 -0
  79. package/dist/brief-KKNC32TA.js.map +1 -0
  80. package/dist/businesses-JBDQZZIG.js +53 -0
  81. package/dist/businesses-JBDQZZIG.js.map +1 -0
  82. package/dist/campaign-groups-G35366AW.js +95 -0
  83. package/dist/campaign-groups-G35366AW.js.map +1 -0
  84. package/dist/campaign-writes-SXLZFYF6.js +170 -0
  85. package/dist/campaign-writes-SXLZFYF6.js.map +1 -0
  86. package/dist/campaign-writes-ZQGN7FQ3.js +165 -0
  87. package/dist/campaign-writes-ZQGN7FQ3.js.map +1 -0
  88. package/dist/campaigns-GXUCHQ2S.js +109 -0
  89. package/dist/campaigns-GXUCHQ2S.js.map +1 -0
  90. package/dist/campaigns-WBEG5QA4.js +110 -0
  91. package/dist/campaigns-WBEG5QA4.js.map +1 -0
  92. package/dist/campaigns-WECN54WV.js +107 -0
  93. package/dist/campaigns-WECN54WV.js.map +1 -0
  94. package/dist/campaigns-YS3OGQXO.js +76 -0
  95. package/dist/campaigns-YS3OGQXO.js.map +1 -0
  96. package/dist/canvas-KEXE5P6S.js +46 -0
  97. package/dist/capabilities-74I5AQ36.js +144 -0
  98. package/dist/capabilities-74I5AQ36.js.map +1 -0
  99. package/dist/cards-4477BFEV.js +85 -0
  100. package/dist/cards-4477BFEV.js.map +1 -0
  101. package/dist/catalog-IQEQ5TGQ.js +66 -0
  102. package/dist/catalog-IQEQ5TGQ.js.map +1 -0
  103. package/dist/catalogs-BRXEDE56.js +128 -0
  104. package/dist/catalogs-BRXEDE56.js.map +1 -0
  105. package/dist/changes-6QBJMGJC.js +135 -0
  106. package/dist/changes-6QBJMGJC.js.map +1 -0
  107. package/dist/chatgpt-7W75X3ER.js +47 -0
  108. package/dist/chats-DWHF64IU.js +262 -0
  109. package/dist/chats-DWHF64IU.js.map +1 -0
  110. package/dist/chunk-27NMXSC3.js +486 -0
  111. package/dist/chunk-27NMXSC3.js.map +1 -0
  112. package/dist/chunk-2CD5ZP7M.js +6659 -0
  113. package/dist/chunk-2CD5ZP7M.js.map +1 -0
  114. package/dist/chunk-2TK4DEOE.js +74 -0
  115. package/dist/chunk-3RJ3VGJP.js +197 -0
  116. package/dist/chunk-3RJ3VGJP.js.map +1 -0
  117. package/dist/chunk-4NDCTLI5.js +191 -0
  118. package/dist/chunk-4NZ47VXO.js +137 -0
  119. package/dist/chunk-4NZ47VXO.js.map +1 -0
  120. package/dist/chunk-4SJDDGPV.js +1411 -0
  121. package/dist/chunk-4SJDDGPV.js.map +1 -0
  122. package/dist/chunk-5ARG3CQG.js +141 -0
  123. package/dist/chunk-5HYSKH77.js +315 -0
  124. package/dist/chunk-5HYSKH77.js.map +1 -0
  125. package/dist/chunk-5Z2KSVIV.js +67 -0
  126. package/dist/chunk-654U6NU6.js +534 -0
  127. package/dist/chunk-654U6NU6.js.map +1 -0
  128. package/dist/chunk-6B7VKFS4.js +172 -0
  129. package/dist/chunk-6G5K6ZC6.js +46 -0
  130. package/dist/chunk-73QKIIIR.js +23 -0
  131. package/dist/chunk-75FDTDLH.js +96 -0
  132. package/dist/chunk-75VNSKS3.js +455 -0
  133. package/dist/chunk-75VNSKS3.js.map +1 -0
  134. package/dist/chunk-7GPDUS3P.js +494 -0
  135. package/dist/chunk-7GPDUS3P.js.map +1 -0
  136. package/dist/chunk-7J6EHOH6.js +274 -0
  137. package/dist/chunk-7OFNN4CT.js +58 -0
  138. package/dist/chunk-7QJVPMVB.js +592 -0
  139. package/dist/chunk-7QJVPMVB.js.map +1 -0
  140. package/dist/chunk-AN447DQB.js +159 -0
  141. package/dist/chunk-AN447DQB.js.map +1 -0
  142. package/dist/chunk-BYDF22T4.js +346 -0
  143. package/dist/chunk-BYDF22T4.js.map +1 -0
  144. package/dist/chunk-C6U6UDHJ.js +106 -0
  145. package/dist/chunk-CLMM6P6B.js +1751 -0
  146. package/dist/chunk-CLMM6P6B.js.map +1 -0
  147. package/dist/chunk-DIY6QR3E.js +96 -0
  148. package/dist/chunk-EFSYTROP.js +94 -0
  149. package/dist/chunk-EIP4PYCL.js +496 -0
  150. package/dist/chunk-EIP4PYCL.js.map +1 -0
  151. package/dist/chunk-EZUG6WE2.js +60 -0
  152. package/dist/chunk-EZUG6WE2.js.map +1 -0
  153. package/dist/chunk-F2S5BLPE.js +97 -0
  154. package/dist/chunk-F2S5BLPE.js.map +1 -0
  155. package/dist/chunk-FEXDI4NM.js +103 -0
  156. package/dist/chunk-FHXIEMCG.js +382 -0
  157. package/dist/chunk-FTWJFDIN.js +23992 -0
  158. package/dist/chunk-FTWJFDIN.js.map +1 -0
  159. package/dist/chunk-FXED3VZK.js +174 -0
  160. package/dist/chunk-FXED3VZK.js.map +1 -0
  161. package/dist/chunk-GIJT3A5U.js +166 -0
  162. package/dist/chunk-GIJT3A5U.js.map +1 -0
  163. package/dist/chunk-H26L3OQY.js +42 -0
  164. package/dist/chunk-HIPDMQZ6.js +136 -0
  165. package/dist/chunk-HMEFD2CG.js +5163 -0
  166. package/dist/chunk-HMEFD2CG.js.map +1 -0
  167. package/dist/chunk-HO3IUJ4K.js +70 -0
  168. package/dist/chunk-HO3IUJ4K.js.map +1 -0
  169. package/dist/chunk-HXTGYOQC.js +813 -0
  170. package/dist/chunk-HXTGYOQC.js.map +1 -0
  171. package/dist/chunk-HYCIBVDW.js +98 -0
  172. package/dist/chunk-ICM2OXZV.js +304 -0
  173. package/dist/chunk-ICM2OXZV.js.map +1 -0
  174. package/dist/chunk-IFWP3ZDO.js +215 -0
  175. package/dist/chunk-IKGWQBKJ.js +422 -0
  176. package/dist/chunk-IKGWQBKJ.js.map +1 -0
  177. package/dist/chunk-IXKEWS7X.js +433 -0
  178. package/dist/chunk-JERXV5A3.js +26 -0
  179. package/dist/chunk-JM73NDCM.js +163 -0
  180. package/dist/chunk-JM73NDCM.js.map +1 -0
  181. package/dist/chunk-K3PN7TN5.js +84 -0
  182. package/dist/chunk-K3PN7TN5.js.map +1 -0
  183. package/dist/chunk-KLNKEVIY.js +136 -0
  184. package/dist/chunk-KNY76UGC.js +84 -0
  185. package/dist/chunk-KWAOTV7F.js +830 -0
  186. package/dist/chunk-L3OLEAJN.js +92 -0
  187. package/dist/chunk-L3OLEAJN.js.map +1 -0
  188. package/dist/chunk-LERTEZST.js +28 -0
  189. package/dist/chunk-LL2CD5WU.js +310 -0
  190. package/dist/chunk-LO6GEJ4Z.js +51 -0
  191. package/dist/chunk-LS5MTRFI.js +106 -0
  192. package/dist/chunk-LZ73CZGP.js +188 -0
  193. package/dist/chunk-MELOSESI.js +20 -0
  194. package/dist/chunk-MLU6STIN.js +66 -0
  195. package/dist/chunk-MLU6STIN.js.map +1 -0
  196. package/dist/chunk-MZL4H5PY.js +225 -0
  197. package/dist/chunk-MZL4H5PY.js.map +1 -0
  198. package/dist/chunk-NAWWC5I3.js +454 -0
  199. package/dist/chunk-NFSLRRIE.js +77 -0
  200. package/dist/chunk-NFSLRRIE.js.map +1 -0
  201. package/dist/chunk-NPE7EWBE.js +297 -0
  202. package/dist/chunk-NU7JSWVA.js +946 -0
  203. package/dist/chunk-NU7JSWVA.js.map +1 -0
  204. package/dist/chunk-OBDAYP2P.js +3155 -0
  205. package/dist/chunk-OBDAYP2P.js.map +1 -0
  206. package/dist/chunk-OC5IJSIW.js +420 -0
  207. package/dist/chunk-OC5IJSIW.js.map +1 -0
  208. package/dist/chunk-OKG6GX2F.js +169 -0
  209. package/dist/chunk-OTFHEHIU.js +1706 -0
  210. package/dist/chunk-OTFHEHIU.js.map +1 -0
  211. package/dist/chunk-PBA3YCZA.js +76 -0
  212. package/dist/chunk-PWGWMIIJ.js +25 -0
  213. package/dist/chunk-QHLB5V7J.js +19 -0
  214. package/dist/chunk-QJE6ZYGI.js +131 -0
  215. package/dist/chunk-QSN5MZGS.js +74 -0
  216. package/dist/chunk-QXZYAIWS.js +390 -0
  217. package/dist/chunk-QXZYAIWS.js.map +1 -0
  218. package/dist/chunk-RRUJQVWA.js +4372 -0
  219. package/dist/chunk-RRUJQVWA.js.map +1 -0
  220. package/dist/chunk-RSW6QJPH.js +217 -0
  221. package/dist/chunk-RX6F3GEA.js +610 -0
  222. package/dist/chunk-RX6F3GEA.js.map +1 -0
  223. package/dist/chunk-SBMIQDCX.js +175 -0
  224. package/dist/chunk-SJDPHVGE.js +363 -0
  225. package/dist/chunk-SJDPHVGE.js.map +1 -0
  226. package/dist/chunk-STIB5DR5.js +56 -0
  227. package/dist/chunk-TBEUMOEL.js +95 -0
  228. package/dist/chunk-TCNNOLVZ.js +207 -0
  229. package/dist/chunk-TCNNOLVZ.js.map +1 -0
  230. package/dist/chunk-TD2P4HBP.js +55 -0
  231. package/dist/chunk-URIYUZIN.js +111 -0
  232. package/dist/chunk-URIYUZIN.js.map +1 -0
  233. package/dist/chunk-VAJBWA2U.js +75 -0
  234. package/dist/chunk-VAJBWA2U.js.map +1 -0
  235. package/dist/chunk-VBHDZSI5.js +57 -0
  236. package/dist/chunk-VFIOJD5M.js +309 -0
  237. package/dist/chunk-VVZBBKRC.js +296 -0
  238. package/dist/chunk-VWCELTQE.js +1079 -0
  239. package/dist/chunk-VWCELTQE.js.map +1 -0
  240. package/dist/chunk-W3B4BHQU.js +31 -0
  241. package/dist/chunk-W3ZHJJVT.js +139 -0
  242. package/dist/chunk-W3ZHJJVT.js.map +1 -0
  243. package/dist/chunk-WS2GMOSG.js +74 -0
  244. package/dist/chunk-XBOK23HI.js +214 -0
  245. package/dist/chunk-XG3XCHN6.js +26 -0
  246. package/dist/chunk-XL3BMSYG.js +125 -0
  247. package/dist/chunk-XWH7CCBL.js +6065 -0
  248. package/dist/chunk-XWH7CCBL.js.map +1 -0
  249. package/dist/chunk-XYMPS526.js +622 -0
  250. package/dist/chunk-Y5ZGWLWP.js +2882 -0
  251. package/dist/chunk-Y5ZGWLWP.js.map +1 -0
  252. package/dist/chunk-YBMVHGY3.js +333 -0
  253. package/dist/chunk-ZJ47BR6X.js +337 -0
  254. package/dist/chunk-ZJ47BR6X.js.map +1 -0
  255. package/dist/chunk-ZNBDKK4Y.js +76 -0
  256. package/dist/chunk-ZNBDKK4Y.js.map +1 -0
  257. package/dist/chunk-ZXTW3TXY.js +133 -0
  258. package/dist/chunk-ZXTW3TXY.js.map +1 -0
  259. package/dist/claim-EIL4ZBSN.js +197 -0
  260. package/dist/claim-EIL4ZBSN.js.map +1 -0
  261. package/dist/cli.js +36 -37
  262. package/dist/cli.js.map +1 -1
  263. package/dist/client-VHN32ZRE.js +19 -0
  264. package/dist/code-YS6ZMGX3.js +76 -0
  265. package/dist/code-YS6ZMGX3.js.map +1 -0
  266. package/dist/companies-2UG7RDYN.js +195 -0
  267. package/dist/companies-2UG7RDYN.js.map +1 -0
  268. package/dist/complete-I4KRFYMD.js +81 -0
  269. package/dist/complete-I4KRFYMD.js.map +1 -0
  270. package/dist/config-CQN5FHMZ.js +88 -0
  271. package/dist/config-CQN5FHMZ.js.map +1 -0
  272. package/dist/connect-TA5W6YGW.js +36 -0
  273. package/dist/content-3ZPP4SW2.js +81 -0
  274. package/dist/content-3ZPP4SW2.js.map +1 -0
  275. package/dist/conversation-BJI54MI6.js +93 -0
  276. package/dist/conversation-BJI54MI6.js.map +1 -0
  277. package/dist/conversion-report-XQBJ6LG4.js +125 -0
  278. package/dist/conversion-report-XQBJ6LG4.js.map +1 -0
  279. package/dist/conversion-upload-command-JULHGVIR.js +438 -0
  280. package/dist/conversion-upload-command-JULHGVIR.js.map +1 -0
  281. package/dist/conversion-writes-UBCVXP2E.js +120 -0
  282. package/dist/conversion-writes-UBCVXP2E.js.map +1 -0
  283. package/dist/conversions-D236RTUK.js +76 -0
  284. package/dist/conversions-D236RTUK.js.map +1 -0
  285. package/dist/conversions-VJOJ5S4U.js +135 -0
  286. package/dist/conversions-VJOJ5S4U.js.map +1 -0
  287. package/dist/countries-FYHM3IMJ.js +82 -0
  288. package/dist/countries-FYHM3IMJ.js.map +1 -0
  289. package/dist/create-E7BIZNUC.js +130 -0
  290. package/dist/create-E7BIZNUC.js.map +1 -0
  291. package/dist/create-HKOO7O5L.js +59 -0
  292. package/dist/create-HKOO7O5L.js.map +1 -0
  293. package/dist/create-JLQCXAT2.js +207 -0
  294. package/dist/create-JLQCXAT2.js.map +1 -0
  295. package/dist/create-VY3RQXOY.js +235 -0
  296. package/dist/create-VY3RQXOY.js.map +1 -0
  297. package/dist/creatives-PSWCNY7U.js +87 -0
  298. package/dist/creatives-PSWCNY7U.js.map +1 -0
  299. package/dist/creatives-QXMBEA2V.js +51 -0
  300. package/dist/creatives-QXMBEA2V.js.map +1 -0
  301. package/dist/creatives-VXQQUH2F.js +182 -0
  302. package/dist/creatives-VXQQUH2F.js.map +1 -0
  303. package/dist/credentials-G5BJK7OR.js +1055 -0
  304. package/dist/credentials-G5BJK7OR.js.map +1 -0
  305. package/dist/critique-CMLAPVUB.js +1449 -0
  306. package/dist/critique-CMLAPVUB.js.map +1 -0
  307. package/dist/critique-O5VNNBPB.js +214 -0
  308. package/dist/critique-O5VNNBPB.js.map +1 -0
  309. package/dist/crm-CL7R67FT.js +224 -0
  310. package/dist/crm-CL7R67FT.js.map +1 -0
  311. package/dist/crm-GJCAM3DI.js +318 -0
  312. package/dist/crm-GJCAM3DI.js.map +1 -0
  313. package/dist/crop-2J4RKJ6B.js +113 -0
  314. package/dist/crop-2J4RKJ6B.js.map +1 -0
  315. package/dist/currency-DJDVIR3C.js +88 -0
  316. package/dist/currency-DJDVIR3C.js.map +1 -0
  317. package/dist/custom-conversions-6P555U2K.js +125 -0
  318. package/dist/custom-conversions-6P555U2K.js.map +1 -0
  319. package/dist/customers-4RJGRR2Y.js +56 -0
  320. package/dist/delete-3AV3ARMX.js +71 -0
  321. package/dist/delete-3AV3ARMX.js.map +1 -0
  322. package/dist/delete-4QXLTL24.js +63 -0
  323. package/dist/delete-4QXLTL24.js.map +1 -0
  324. package/dist/delete-A5XD52K4.js +69 -0
  325. package/dist/delete-A5XD52K4.js.map +1 -0
  326. package/dist/delete-IJNJTAGW.js +54 -0
  327. package/dist/delete-IJNJTAGW.js.map +1 -0
  328. package/dist/delete-MRM2S4Z5.js +71 -0
  329. package/dist/delete-MRM2S4Z5.js.map +1 -0
  330. package/dist/delete-R57JFJ3A.js +66 -0
  331. package/dist/delete-R57JFJ3A.js.map +1 -0
  332. package/dist/demographics-VMARSTTE.js +138 -0
  333. package/dist/demographics-VMARSTTE.js.map +1 -0
  334. package/dist/describe-6NVOWIBE.js +97 -0
  335. package/dist/describe-6NVOWIBE.js.map +1 -0
  336. package/dist/describe-P3PPIQME.js +97 -0
  337. package/dist/describe-P3PPIQME.js.map +1 -0
  338. package/dist/dimensions-EYAYO27I.js +101 -0
  339. package/dist/dimensions-EYAYO27I.js.map +1 -0
  340. package/dist/discard-Y2BKPW4Z.js +66 -0
  341. package/dist/discard-Y2BKPW4Z.js.map +1 -0
  342. package/dist/discover-M3ZKKFEL.js +172 -0
  343. package/dist/discover-M3ZKKFEL.js.map +1 -0
  344. package/dist/domain-YTHDTRWN.js +98 -0
  345. package/dist/domain-YTHDTRWN.js.map +1 -0
  346. package/dist/download-7T6HIJKD.js +299 -0
  347. package/dist/download-7T6HIJKD.js.map +1 -0
  348. package/dist/draft-ABGQYDHP.js +328 -0
  349. package/dist/draft-ABGQYDHP.js.map +1 -0
  350. package/dist/draft-BGUJDHXR.js +103 -0
  351. package/dist/draft-BGUJDHXR.js.map +1 -0
  352. package/dist/draft-KIBMVKSR.js +100 -0
  353. package/dist/draft-KIBMVKSR.js.map +1 -0
  354. package/dist/draft-KOLU5BRR.js +217 -0
  355. package/dist/draft-KOLU5BRR.js.map +1 -0
  356. package/dist/draft-MNFJ4G3C.js +281 -0
  357. package/dist/draft-MNFJ4G3C.js.map +1 -0
  358. package/dist/draft-U6CT6LCC.js +107 -0
  359. package/dist/draft-U6CT6LCC.js.map +1 -0
  360. package/dist/draft-YDY2Q2K6.js +233 -0
  361. package/dist/draft-YDY2Q2K6.js.map +1 -0
  362. package/dist/draft-ZVVUAMMQ.js +306 -0
  363. package/dist/draft-ZVVUAMMQ.js.map +1 -0
  364. package/dist/engine/index.d.ts +10 -0
  365. package/dist/engine/index.js +16 -17
  366. package/dist/env-KIP2J2UB.js +43 -0
  367. package/dist/experiment-LKK77YAN.js +1377 -0
  368. package/dist/experiment-LKK77YAN.js.map +1 -0
  369. package/dist/export-JQRMBJ7D.js +168 -0
  370. package/dist/export-JQRMBJ7D.js.map +1 -0
  371. package/dist/extract-7QKLME7Z.js +113 -0
  372. package/dist/extract-7QKLME7Z.js.map +1 -0
  373. package/dist/facets-UXN4MYPO.js +114 -0
  374. package/dist/facets-UXN4MYPO.js.map +1 -0
  375. package/dist/favorites-NSGF4OV5.js +178 -0
  376. package/dist/favorites-NSGF4OV5.js.map +1 -0
  377. package/dist/feed-RV4KPPXM.js +157 -0
  378. package/dist/feed-RV4KPPXM.js.map +1 -0
  379. package/dist/feedback-3FQYLADC.js +66 -0
  380. package/dist/feedback-3FQYLADC.js.map +1 -0
  381. package/dist/feedback-record-DTRZC73R.js +176 -0
  382. package/dist/feedback-record-DTRZC73R.js.map +1 -0
  383. package/dist/fetch-UTTJAOLC.js +171 -0
  384. package/dist/fetch-UTTJAOLC.js.map +1 -0
  385. package/dist/fetch-XF76JABV.js +139 -0
  386. package/dist/fetch-XF76JABV.js.map +1 -0
  387. package/dist/find-OTDIX6V4.js +134 -0
  388. package/dist/find-OTDIX6V4.js.map +1 -0
  389. package/dist/fit-KXHYKIA4.js +43 -0
  390. package/dist/flows-PB4K66NJ.js +244 -0
  391. package/dist/flows-PB4K66NJ.js.map +1 -0
  392. package/dist/follow-DUIEGDVK.js +82 -0
  393. package/dist/follow-DUIEGDVK.js.map +1 -0
  394. package/dist/follow-competitors-IT5ZVJPE.js +131 -0
  395. package/dist/follow-competitors-IT5ZVJPE.js.map +1 -0
  396. package/dist/following-RKC2FLHI.js +109 -0
  397. package/dist/following-RKC2FLHI.js.map +1 -0
  398. package/dist/fonts-NTOQS2KU.js +34 -0
  399. package/dist/forecast-RWDIDDWP.js +104 -0
  400. package/dist/forecast-RWDIDDWP.js.map +1 -0
  401. package/dist/funding-NYO65IMT.js +85 -0
  402. package/dist/funding-NYO65IMT.js.map +1 -0
  403. package/dist/funnel-XCKPRYTV.js +837 -0
  404. package/dist/funnel-XCKPRYTV.js.map +1 -0
  405. package/dist/ga4-UDQ2HA2J.js +55 -0
  406. package/dist/generate-DMQUS665.js +262 -0
  407. package/dist/generate-DMQUS665.js.map +1 -0
  408. package/dist/get-3L6W3E3T.js +59 -0
  409. package/dist/get-3L6W3E3T.js.map +1 -0
  410. package/dist/get-67IG7SZI.js +78 -0
  411. package/dist/get-67IG7SZI.js.map +1 -0
  412. package/dist/get-6WEYKOY6.js +63 -0
  413. package/dist/get-6WEYKOY6.js.map +1 -0
  414. package/dist/get-P743RPSI.js +63 -0
  415. package/dist/get-P743RPSI.js.map +1 -0
  416. package/dist/get-WO22OCMZ.js +54 -0
  417. package/dist/get-WO22OCMZ.js.map +1 -0
  418. package/dist/get-XN5ZGDIK.js +61 -0
  419. package/dist/get-XN5ZGDIK.js.map +1 -0
  420. package/dist/get-YIHTAMRT.js +92 -0
  421. package/dist/get-YIHTAMRT.js.map +1 -0
  422. package/dist/gif-53ULFVLR.js +94 -0
  423. package/dist/gif-53ULFVLR.js.map +1 -0
  424. package/dist/google-KIBLORXX.js +1872 -0
  425. package/dist/google-KIBLORXX.js.map +1 -0
  426. package/dist/google-KTO3PLEU.js +136 -0
  427. package/dist/google-KTO3PLEU.js.map +1 -0
  428. package/dist/group-EFZ3AJIE.js +43 -0
  429. package/dist/group-EFZ3AJIE.js.map +1 -0
  430. package/dist/group-GKWCCX66.js +43 -0
  431. package/dist/group-GKWCCX66.js.map +1 -0
  432. package/dist/gsc-P3QYGDV2.js +30 -0
  433. package/dist/history-PBFRKLU6.js +133 -0
  434. package/dist/history-PBFRKLU6.js.map +1 -0
  435. package/dist/history-Q3QCT64S.js +67 -0
  436. package/dist/history-Q3QCT64S.js.map +1 -0
  437. package/dist/hubspot-PMOZST7W.js +779 -0
  438. package/dist/hubspot-PMOZST7W.js.map +1 -0
  439. package/dist/icon-I43F77FV.js +137 -0
  440. package/dist/icon-I43F77FV.js.map +1 -0
  441. package/dist/ideas-PU7IAX6F.js +32 -0
  442. package/dist/images-QI2HTX6B.js +90 -0
  443. package/dist/improve-BCCU5AS6.js +86 -0
  444. package/dist/improve-BCCU5AS6.js.map +1 -0
  445. package/dist/ingest-BYJNFOOT.js +23 -0
  446. package/dist/ingest-ZQM47NVZ.js +107 -0
  447. package/dist/ingest-ZQM47NVZ.js.map +1 -0
  448. package/dist/insights-LNAXV2CG.js +122 -0
  449. package/dist/insights-LNAXV2CG.js.map +1 -0
  450. package/dist/insights-NZWSJKU4.js +423 -0
  451. package/dist/insights-NZWSJKU4.js.map +1 -0
  452. package/dist/inspect-CQH55Q6G.js +189 -0
  453. package/dist/inspect-CQH55Q6G.js.map +1 -0
  454. package/dist/inspiration-I4MMKAWA.js +53 -0
  455. package/dist/intent-ICKFJRT2.js +95 -0
  456. package/dist/intent-ICKFJRT2.js.map +1 -0
  457. package/dist/job-L7RJZMSG.js +202 -0
  458. package/dist/job-L7RJZMSG.js.map +1 -0
  459. package/dist/job-create-JUDAN52O.js +109 -0
  460. package/dist/job-create-JUDAN52O.js.map +1 -0
  461. package/dist/job-status-U43WE3RJ.js +74 -0
  462. package/dist/job-status-U43WE3RJ.js.map +1 -0
  463. package/dist/keep-55CPC7DG.js +78 -0
  464. package/dist/keep-55CPC7DG.js.map +1 -0
  465. package/dist/keyword-gap-NGPH32FN.js +130 -0
  466. package/dist/keyword-gap-NGPH32FN.js.map +1 -0
  467. package/dist/keyword-metrics-E3NJUSEQ.js +197 -0
  468. package/dist/keyword-metrics-E3NJUSEQ.js.map +1 -0
  469. package/dist/keywords-for-site-RH47P4GJ.js +124 -0
  470. package/dist/keywords-for-site-RH47P4GJ.js.map +1 -0
  471. package/dist/landing-4PA7GCPM.js +28 -0
  472. package/dist/landing-4PA7GCPM.js.map +1 -0
  473. package/dist/languages-JDYL2N5F.js +40 -0
  474. package/dist/languages-JDYL2N5F.js.map +1 -0
  475. package/dist/languages-JMVNOHMG.js +55 -0
  476. package/dist/languages-JMVNOHMG.js.map +1 -0
  477. package/dist/layerize-RPD6SNP6.js +190 -0
  478. package/dist/layerize-RPD6SNP6.js.map +1 -0
  479. package/dist/leads-7EVHMNUF.js +293 -0
  480. package/dist/leads-7EVHMNUF.js.map +1 -0
  481. package/dist/leads-I7BO5V7P.js +90 -0
  482. package/dist/leads-I7BO5V7P.js.map +1 -0
  483. package/dist/learn-HZU3QWNN.js +204 -0
  484. package/dist/library-ARKRLCNJ.js +109 -0
  485. package/dist/library-ARKRLCNJ.js.map +1 -0
  486. package/dist/lighthouse-NQBUCHTW.js +75 -0
  487. package/dist/lighthouse-NQBUCHTW.js.map +1 -0
  488. package/dist/line-item-writes-JSR53MID.js +208 -0
  489. package/dist/line-item-writes-JSR53MID.js.map +1 -0
  490. package/dist/line-items-2WFLKOOR.js +103 -0
  491. package/dist/line-items-2WFLKOOR.js.map +1 -0
  492. package/dist/link-AYXOJQDV.js +64 -0
  493. package/dist/link-AYXOJQDV.js.map +1 -0
  494. package/dist/linkedin-M2PVZYLV.js +1008 -0
  495. package/dist/linkedin-M2PVZYLV.js.map +1 -0
  496. package/dist/list-3OKEMUFD.js +151 -0
  497. package/dist/list-3OKEMUFD.js.map +1 -0
  498. package/dist/list-4MQC23JH.js +63 -0
  499. package/dist/list-4MQC23JH.js.map +1 -0
  500. package/dist/list-7MVBXOJT.js +51 -0
  501. package/dist/list-7MVBXOJT.js.map +1 -0
  502. package/dist/list-A5UCIR2J.js +65 -0
  503. package/dist/list-A5UCIR2J.js.map +1 -0
  504. package/dist/list-AL7N6X2P.js +50 -0
  505. package/dist/list-AL7N6X2P.js.map +1 -0
  506. package/dist/list-LI4OGQFW.js +57 -0
  507. package/dist/list-LI4OGQFW.js.map +1 -0
  508. package/dist/list-P7NAFN6J.js +76 -0
  509. package/dist/list-P7NAFN6J.js.map +1 -0
  510. package/dist/list-QGLIL7J6.js +303 -0
  511. package/dist/list-QGLIL7J6.js.map +1 -0
  512. package/dist/locations-2NKBJKBT.js +67 -0
  513. package/dist/locations-2NKBJKBT.js.map +1 -0
  514. package/dist/locations-S4U6IJIS.js +40 -0
  515. package/dist/locations-S4U6IJIS.js.map +1 -0
  516. package/dist/log-QHR2JNKW.js +92 -0
  517. package/dist/log-QHR2JNKW.js.map +1 -0
  518. package/dist/logo-2IP663QO.js +18 -0
  519. package/dist/lookup-XK45W2SH.js +22 -0
  520. package/dist/make-ANPR2D2L.js +516 -0
  521. package/dist/make-ANPR2D2L.js.map +1 -0
  522. package/dist/map-3BVFAP33.js +404 -0
  523. package/dist/map-3BVFAP33.js.map +1 -0
  524. package/dist/mcp-LH5KR6RO.js +476 -0
  525. package/dist/mcp-LH5KR6RO.js.map +1 -0
  526. package/dist/media-6CQYG4UY.js +89 -0
  527. package/dist/media-6CQYG4UY.js.map +1 -0
  528. package/dist/media-M7E6V2XU.js +15 -0
  529. package/dist/media-sources-3D246I3O.js +32 -0
  530. package/dist/members-4DUQHLZH.js +44 -0
  531. package/dist/members-4DUQHLZH.js.map +1 -0
  532. package/dist/meta-EZ4SY25M.js +69 -0
  533. package/dist/metrics-AY4RP54F.js +152 -0
  534. package/dist/metrics-AY4RP54F.js.map +1 -0
  535. package/dist/models-5NTC7A5G.js +155 -0
  536. package/dist/models-5NTC7A5G.js.map +1 -0
  537. package/dist/normalize-CD4PQRYY.js +138 -0
  538. package/dist/normalize-CD4PQRYY.js.map +1 -0
  539. package/dist/normalize-ICQF2AST.js +806 -0
  540. package/dist/normalize-ICQF2AST.js.map +1 -0
  541. package/dist/options-6TE5E34Z.js +121 -0
  542. package/dist/options-6TE5E34Z.js.map +1 -0
  543. package/dist/output-RAH3TSIL.js +24 -0
  544. package/dist/page-GS3WLT2C.js +105 -0
  545. package/dist/page-GS3WLT2C.js.map +1 -0
  546. package/dist/pages-FXYQLHSJ.js +66 -0
  547. package/dist/pages-FXYQLHSJ.js.map +1 -0
  548. package/dist/performance-7LQQCEAW.js +24 -0
  549. package/dist/pinterest-AUH7WBA7.js +96 -0
  550. package/dist/pinterest-AUH7WBA7.js.map +1 -0
  551. package/dist/pixels-TZPF746S.js +60 -0
  552. package/dist/pixels-TZPF746S.js.map +1 -0
  553. package/dist/pixels-ZFF4BGUH.js +108 -0
  554. package/dist/pixels-ZFF4BGUH.js.map +1 -0
  555. package/dist/preview-AD4GKYIA.js +169 -0
  556. package/dist/preview-AD4GKYIA.js.map +1 -0
  557. package/dist/promoted-tweet-writes-F76YIMB6.js +180 -0
  558. package/dist/promoted-tweet-writes-F76YIMB6.js.map +1 -0
  559. package/dist/promoted-tweets-EJL37P7K.js +119 -0
  560. package/dist/promoted-tweets-EJL37P7K.js.map +1 -0
  561. package/dist/properties-L2XIYQDS.js +101 -0
  562. package/dist/properties-L2XIYQDS.js.map +1 -0
  563. package/dist/publish-H5S2IKZP.js +322 -0
  564. package/dist/publish-H5S2IKZP.js.map +1 -0
  565. package/dist/query-CPZZNMDY.js +1341 -0
  566. package/dist/query-CPZZNMDY.js.map +1 -0
  567. package/dist/query-SGGBCHTF.js +236 -0
  568. package/dist/query-SGGBCHTF.js.map +1 -0
  569. package/dist/query-VTGVZQIO.js +247 -0
  570. package/dist/query-VTGVZQIO.js.map +1 -0
  571. package/dist/read-LSF7DYTG.js +140 -0
  572. package/dist/read-LSF7DYTG.js.map +1 -0
  573. package/dist/reddit-INGPFGP4.js +26 -0
  574. package/dist/refresh-MKSKISPX.js +94 -0
  575. package/dist/refresh-MKSKISPX.js.map +1 -0
  576. package/dist/release-J5LIAIZT.js +60 -0
  577. package/dist/release-J5LIAIZT.js.map +1 -0
  578. package/dist/relevant-pages-MTMFMBPD.js +99 -0
  579. package/dist/relevant-pages-MTMFMBPD.js.map +1 -0
  580. package/dist/remove-6LGGKMLJ.js +48 -0
  581. package/dist/remove-6LGGKMLJ.js.map +1 -0
  582. package/dist/remove-LYEK7VFV.js +50 -0
  583. package/dist/remove-LYEK7VFV.js.map +1 -0
  584. package/dist/reopen-FR4UBOG7.js +63 -0
  585. package/dist/reopen-FR4UBOG7.js.map +1 -0
  586. package/dist/rerun-3FEOYNG2.js +86 -0
  587. package/dist/rerun-3FEOYNG2.js.map +1 -0
  588. package/dist/research-PA53M335.js +59 -0
  589. package/dist/research-RPJSOWPT.js +226 -0
  590. package/dist/research-RPJSOWPT.js.map +1 -0
  591. package/dist/reset-H3ES4WV5.js +54 -0
  592. package/dist/reset-H3ES4WV5.js.map +1 -0
  593. package/dist/reset-RCYRE5WO.js +54 -0
  594. package/dist/reset-RCYRE5WO.js.map +1 -0
  595. package/dist/resolve-QIDQJCE6.js +121 -0
  596. package/dist/resolve-QIDQJCE6.js.map +1 -0
  597. package/dist/retry-PLLCFOJW.js +60 -0
  598. package/dist/retry-PLLCFOJW.js.map +1 -0
  599. package/dist/retry-WLVMR7XP.js +62 -0
  600. package/dist/retry-WLVMR7XP.js.map +1 -0
  601. package/dist/retry-failed-6HXPUVXJ.js +45 -0
  602. package/dist/retry-failed-6HXPUVXJ.js.map +1 -0
  603. package/dist/run-2IM2QOCI.js +61 -0
  604. package/dist/run-4D7ZCLMF.js +65 -0
  605. package/dist/run-4D7ZCLMF.js.map +1 -0
  606. package/dist/scaffold-ad-YYUVL4IP.js +1550 -0
  607. package/dist/scaffold-ad-YYUVL4IP.js.map +1 -0
  608. package/dist/scaffold-static-ad-SUEYXLOR.js +948 -0
  609. package/dist/scaffold-static-ad-SUEYXLOR.js.map +1 -0
  610. package/dist/scaffold-video-IBH2YJZD.js +874 -0
  611. package/dist/scaffold-video-IBH2YJZD.js.map +1 -0
  612. package/dist/schedule-O2K6M43V.js +66 -0
  613. package/dist/schedule-O2K6M43V.js.map +1 -0
  614. package/dist/schedule-RXUUCNNI.js +61 -0
  615. package/dist/schedule-RXUUCNNI.js.map +1 -0
  616. package/dist/scheduled-agents-2NCGSD76.js +49 -0
  617. package/dist/schema-6GR77VJG.js +63 -0
  618. package/dist/schema-6GR77VJG.js.map +1 -0
  619. package/dist/schema-SFODURN7.js +129 -0
  620. package/dist/schema-SFODURN7.js.map +1 -0
  621. package/dist/scrape-ETAMW43A.js +2241 -0
  622. package/dist/scrape-ETAMW43A.js.map +1 -0
  623. package/dist/screenshot-YCQF25ZB.js +102 -0
  624. package/dist/screenshot-YCQF25ZB.js.map +1 -0
  625. package/dist/search-742XSULP.js +224 -0
  626. package/dist/search-742XSULP.js.map +1 -0
  627. package/dist/search-7QVZOWSI.js +174 -0
  628. package/dist/search-7QVZOWSI.js.map +1 -0
  629. package/dist/search-MEEM4D3W.js +92 -0
  630. package/dist/search-MEEM4D3W.js.map +1 -0
  631. package/dist/search-OQNGSMUH.js +91 -0
  632. package/dist/search-OQNGSMUH.js.map +1 -0
  633. package/dist/search-XUIVHGAY.js +26 -0
  634. package/dist/seeds-N6FF5S4T.js +101 -0
  635. package/dist/seeds-N6FF5S4T.js.map +1 -0
  636. package/dist/select-ZWDEVAH2.js +95 -0
  637. package/dist/sends-WGJVQUMF.js +309 -0
  638. package/dist/sends-WGJVQUMF.js.map +1 -0
  639. package/dist/sequences-OIPVR7JL.js +146 -0
  640. package/dist/sequences-OIPVR7JL.js.map +1 -0
  641. package/dist/set-prompt-SBEOQGCF.js +187 -0
  642. package/dist/set-prompt-SBEOQGCF.js.map +1 -0
  643. package/dist/setup-links-XW4A6L2I.js +141 -0
  644. package/dist/setup-links-XW4A6L2I.js.map +1 -0
  645. package/dist/shared-HJDFNID4.js +31 -0
  646. package/dist/site-6UTQSYIK.js +177 -0
  647. package/dist/site-6UTQSYIK.js.map +1 -0
  648. package/dist/sitemaps-POPZJTAX.js +87 -0
  649. package/dist/sitemaps-POPZJTAX.js.map +1 -0
  650. package/dist/sites-262H6LM4.js +101 -0
  651. package/dist/sites-262H6LM4.js.map +1 -0
  652. package/dist/skills-6TQZLIMP.js +47 -0
  653. package/dist/skills-6TQZLIMP.js.map +1 -0
  654. package/dist/sources-QQNWQLUM.js +421 -0
  655. package/dist/sources-QQNWQLUM.js.map +1 -0
  656. package/dist/sources-UGMZFZ2E.js +30 -0
  657. package/dist/stale-QRO3M5R2.js +64 -0
  658. package/dist/stale-QRO3M5R2.js.map +1 -0
  659. package/dist/stats-NNXZMPZR.js +34 -0
  660. package/dist/status-NXGKJGH7.js +62 -0
  661. package/dist/status-NXGKJGH7.js.map +1 -0
  662. package/dist/sticker-4KMBSMP5.js +94 -0
  663. package/dist/sticker-4KMBSMP5.js.map +1 -0
  664. package/dist/stock-2YCDN3N6.js +179 -0
  665. package/dist/stock-2YCDN3N6.js.map +1 -0
  666. package/dist/studio-HUEBE6DS.js +49 -0
  667. package/dist/sync-CF7FVUQJ.js +54 -0
  668. package/dist/sync-CF7FVUQJ.js.map +1 -0
  669. package/dist/sync-RXS6BPLM.js +54 -0
  670. package/dist/sync-RXS6BPLM.js.map +1 -0
  671. package/dist/sync-ZSNUBYPM.js +265 -0
  672. package/dist/sync-ZSNUBYPM.js.map +1 -0
  673. package/dist/sync-definition-YBDM7D4M.js +54 -0
  674. package/dist/tag-manager-HREEYGVM.js +43 -0
  675. package/dist/tags-C65JB762.js +224 -0
  676. package/dist/tags-C65JB762.js.map +1 -0
  677. package/dist/tags-CMBKEXIZ.js +20 -0
  678. package/dist/tags-CMBKEXIZ.js.map +1 -0
  679. package/dist/tags-GFFQLLG2.js +20 -0
  680. package/dist/tags-GFFQLLG2.js.map +1 -0
  681. package/dist/tags-IJN2SPSM.js +20 -0
  682. package/dist/tags-IJN2SPSM.js.map +1 -0
  683. package/dist/tags-R3K35KTL.js +26 -0
  684. package/dist/targeting-constants-XJ2VOW7K.js +118 -0
  685. package/dist/targeting-constants-XJ2VOW7K.js.map +1 -0
  686. package/dist/targeting-criteria-IHBPLHSX.js +113 -0
  687. package/dist/targeting-criteria-IHBPLHSX.js.map +1 -0
  688. package/dist/targets-JH37NVJF.js +102 -0
  689. package/dist/targets-JH37NVJF.js.map +1 -0
  690. package/dist/templates-HXSHQ23T.js +178 -0
  691. package/dist/templates-HXSHQ23T.js.map +1 -0
  692. package/dist/testimonials-5QGCPZ6K.js +32 -0
  693. package/dist/top-companies-FJEFKVI7.js +108 -0
  694. package/dist/top-companies-FJEFKVI7.js.map +1 -0
  695. package/dist/translate-H7O5K3RC.js +457 -0
  696. package/dist/translate-H7O5K3RC.js.map +1 -0
  697. package/dist/triggers-SEOAAJSS.js +141 -0
  698. package/dist/triggers-SEOAAJSS.js.map +1 -0
  699. package/dist/tweets-ATP3FQAC.js +123 -0
  700. package/dist/tweets-ATP3FQAC.js.map +1 -0
  701. package/dist/unfollow-CBVPGPF7.js +46 -0
  702. package/dist/unfollow-CBVPGPF7.js.map +1 -0
  703. package/dist/unlink-UZDVSHBO.js +67 -0
  704. package/dist/unlink-UZDVSHBO.js.map +1 -0
  705. package/dist/unstage-4ZEULXEQ.js +95 -0
  706. package/dist/unstage-4ZEULXEQ.js.map +1 -0
  707. package/dist/unstage-CE5RRGM5.js +84 -0
  708. package/dist/unstage-CE5RRGM5.js.map +1 -0
  709. package/dist/update-DGZKEP6T.js +63 -0
  710. package/dist/update-DGZKEP6T.js.map +1 -0
  711. package/dist/update-JOS4ITAV.js +142 -0
  712. package/dist/update-JOS4ITAV.js.map +1 -0
  713. package/dist/update-JZ4I6WW7.js +98 -0
  714. package/dist/update-JZ4I6WW7.js.map +1 -0
  715. package/dist/update-ZXOG2V34.js +155 -0
  716. package/dist/update-ZXOG2V34.js.map +1 -0
  717. package/dist/upload-L5SYZB3X.js +150 -0
  718. package/dist/upload-L5SYZB3X.js.map +1 -0
  719. package/dist/upload-SSOPA7ZT.js +126 -0
  720. package/dist/upload-SSOPA7ZT.js.map +1 -0
  721. package/dist/upscale-YWRLFU22.js +109 -0
  722. package/dist/upscale-YWRLFU22.js.map +1 -0
  723. package/dist/url-options-QEWKRKZ3.js +127 -0
  724. package/dist/url-options-QEWKRKZ3.js.map +1 -0
  725. package/dist/url-params-OR5N5EWT.js +98 -0
  726. package/dist/url-params-OR5N5EWT.js.map +1 -0
  727. package/dist/use-UT2DIZOG.js +95 -0
  728. package/dist/use-UT2DIZOG.js.map +1 -0
  729. package/dist/validate-2PLHIP6I.js +90 -0
  730. package/dist/validate-2PLHIP6I.js.map +1 -0
  731. package/dist/variant-FLZJYGYL.js +338 -0
  732. package/dist/variant-FLZJYGYL.js.map +1 -0
  733. package/dist/videos-GIYDCCKR.js +39 -0
  734. package/dist/view-NPAG66QK.js +121 -0
  735. package/dist/view-NPAG66QK.js.map +1 -0
  736. package/dist/viewer-check-VN2JK2LW.js +70 -0
  737. package/dist/web-WUGLSULO.js +135 -0
  738. package/dist/web-WUGLSULO.js.map +1 -0
  739. package/dist/winners-I5BMATJZ.js +79 -0
  740. package/dist/winners-I5BMATJZ.js.map +1 -0
  741. package/dist/winning-ads-7QWEIMRU.js +62 -0
  742. package/dist/write-commands-ERKVRHTC.js +206 -0
  743. package/dist/write-commands-ERKVRHTC.js.map +1 -0
  744. package/dist/write-commands-SVJ43D7G.js +1015 -0
  745. package/dist/write-commands-SVJ43D7G.js.map +1 -0
  746. package/dist/write-commands-TAYGTJEZ.js +737 -0
  747. package/dist/write-commands-TAYGTJEZ.js.map +1 -0
  748. package/dist/write-commands-WTRSOSO3.js +713 -0
  749. package/dist/write-commands-WTRSOSO3.js.map +1 -0
  750. package/dist/x-OEAKQBB7.js +47 -0
  751. package/package.json +1 -1
  752. package/dist/account-5GT2BEST.js +0 -80
  753. package/dist/account-5GT2BEST.js.map +0 -1
  754. package/dist/account-S2RDGMMM.js +0 -81
  755. package/dist/account-S2RDGMMM.js.map +0 -1
  756. package/dist/account-YLZAL6W7.js +0 -50
  757. package/dist/account-YLZAL6W7.js.map +0 -1
  758. package/dist/account-writes-VBY7FJ7C.js +0 -67
  759. package/dist/account-writes-VBY7FJ7C.js.map +0 -1
  760. package/dist/accounts-4IIHAQGS.js +0 -116
  761. package/dist/accounts-4IIHAQGS.js.map +0 -1
  762. package/dist/accounts-E7TRNPFA.js +0 -115
  763. package/dist/accounts-E7TRNPFA.js.map +0 -1
  764. package/dist/accounts-GFJOGX7J.js +0 -613
  765. package/dist/accounts-GFJOGX7J.js.map +0 -1
  766. package/dist/accounts-INB4Z4LZ.js +0 -76
  767. package/dist/accounts-INB4Z4LZ.js.map +0 -1
  768. package/dist/accounts-NLL4QWKY.js +0 -78
  769. package/dist/accounts-NLL4QWKY.js.map +0 -1
  770. package/dist/actions-7XF5L4U3.js +0 -55
  771. package/dist/active-entities-IGQG5EZO.js +0 -104
  772. package/dist/active-entities-IGQG5EZO.js.map +0 -1
  773. package/dist/activities-MH4C4IVV.js +0 -75
  774. package/dist/activities-MH4C4IVV.js.map +0 -1
  775. package/dist/ad-group-writes-B64OBHQ4.js +0 -171
  776. package/dist/ad-group-writes-B64OBHQ4.js.map +0 -1
  777. package/dist/ad-groups-APCFB6SI.js +0 -69
  778. package/dist/ad-groups-APCFB6SI.js.map +0 -1
  779. package/dist/ad-writes-A7P772KD.js +0 -175
  780. package/dist/ad-writes-A7P772KD.js.map +0 -1
  781. package/dist/add-33WQDKGF.js +0 -106
  782. package/dist/add-33WQDKGF.js.map +0 -1
  783. package/dist/add-65OIGMD7.js +0 -99
  784. package/dist/add-65OIGMD7.js.map +0 -1
  785. package/dist/add-EW276CKL.js +0 -282
  786. package/dist/add-EW276CKL.js.map +0 -1
  787. package/dist/add-EXKVB5KR.js +0 -107
  788. package/dist/add-EXKVB5KR.js.map +0 -1
  789. package/dist/ads-A2HP6UVG.js +0 -114
  790. package/dist/ads-A2HP6UVG.js.map +0 -1
  791. package/dist/ads-H6NPLMNX.js +0 -78
  792. package/dist/ads-H6NPLMNX.js.map +0 -1
  793. package/dist/ads-IRE5RZCS.js +0 -40
  794. package/dist/adsets-UZJTGQQM.js +0 -153
  795. package/dist/adsets-UZJTGQQM.js.map +0 -1
  796. package/dist/advertisers-CFS2JAYJ.js +0 -113
  797. package/dist/advertisers-CFS2JAYJ.js.map +0 -1
  798. package/dist/advertisers-WQBPBK4D.js +0 -117
  799. package/dist/advertisers-WQBPBK4D.js.map +0 -1
  800. package/dist/analytics-L46XME7Y.js +0 -434
  801. package/dist/analytics-L46XME7Y.js.map +0 -1
  802. package/dist/analytics-UT7FQ6XA.js +0 -1959
  803. package/dist/analytics-UT7FQ6XA.js.map +0 -1
  804. package/dist/animate-S6ZU3723.js +0 -482
  805. package/dist/animate-S6ZU3723.js.map +0 -1
  806. package/dist/assign-XHHVXXOL.js +0 -79
  807. package/dist/assign-XHHVXXOL.js.map +0 -1
  808. package/dist/audience-size-6FR7WFVU.js +0 -95
  809. package/dist/audience-size-6FR7WFVU.js.map +0 -1
  810. package/dist/audiences-BN2LT7E6.js +0 -86
  811. package/dist/audiences-BN2LT7E6.js.map +0 -1
  812. package/dist/audiences-HQS6V7EV.js +0 -269
  813. package/dist/audiences-HQS6V7EV.js.map +0 -1
  814. package/dist/audiences-JVEXHN67.js +0 -79
  815. package/dist/audiences-JVEXHN67.js.map +0 -1
  816. package/dist/audit-7UDFEGZV.js +0 -152
  817. package/dist/audit-7UDFEGZV.js.map +0 -1
  818. package/dist/audit-YTRTNTAK.js +0 -89
  819. package/dist/audit-YTRTNTAK.js.map +0 -1
  820. package/dist/autocomplete-LAZ6FFG6.js +0 -108
  821. package/dist/autocomplete-LAZ6FFG6.js.map +0 -1
  822. package/dist/avatars-G54K55J3.js +0 -38
  823. package/dist/bid-pricing-EQKORHAA.js +0 -100
  824. package/dist/bid-pricing-EQKORHAA.js.map +0 -1
  825. package/dist/brand-ODTHWWFL.js +0 -22
  826. package/dist/brief-EA4DWOJW.js +0 -479
  827. package/dist/brief-EA4DWOJW.js.map +0 -1
  828. package/dist/businesses-QHNI7MSK.js +0 -54
  829. package/dist/businesses-QHNI7MSK.js.map +0 -1
  830. package/dist/campaign-groups-EJEGKHQD.js +0 -96
  831. package/dist/campaign-groups-EJEGKHQD.js.map +0 -1
  832. package/dist/campaign-writes-DZE43ZOC.js +0 -166
  833. package/dist/campaign-writes-DZE43ZOC.js.map +0 -1
  834. package/dist/campaign-writes-OX62FCEH.js +0 -171
  835. package/dist/campaign-writes-OX62FCEH.js.map +0 -1
  836. package/dist/campaigns-APRWHCGF.js +0 -111
  837. package/dist/campaigns-APRWHCGF.js.map +0 -1
  838. package/dist/campaigns-D2LYKUO2.js +0 -108
  839. package/dist/campaigns-D2LYKUO2.js.map +0 -1
  840. package/dist/campaigns-E3H4POUU.js +0 -77
  841. package/dist/campaigns-E3H4POUU.js.map +0 -1
  842. package/dist/campaigns-OPLRDMJW.js +0 -110
  843. package/dist/campaigns-OPLRDMJW.js.map +0 -1
  844. package/dist/canvas-M5HAG7VA.js +0 -46
  845. package/dist/capabilities-4Q4CMVIE.js +0 -146
  846. package/dist/capabilities-4Q4CMVIE.js.map +0 -1
  847. package/dist/cards-L37M7Q3L.js +0 -86
  848. package/dist/cards-L37M7Q3L.js.map +0 -1
  849. package/dist/catalog-HOWAUW2V.js +0 -67
  850. package/dist/catalog-HOWAUW2V.js.map +0 -1
  851. package/dist/catalogs-XBIQ4PNK.js +0 -129
  852. package/dist/catalogs-XBIQ4PNK.js.map +0 -1
  853. package/dist/changes-HCOPS4FF.js +0 -136
  854. package/dist/changes-HCOPS4FF.js.map +0 -1
  855. package/dist/chatgpt-PLKNBNVL.js +0 -47
  856. package/dist/chats-HELZHJO4.js +0 -264
  857. package/dist/chats-HELZHJO4.js.map +0 -1
  858. package/dist/chunk-3KQ5R3H7.js +0 -45
  859. package/dist/chunk-3KQ5R3H7.js.map +0 -1
  860. package/dist/chunk-4MU3U3SO.js +0 -103
  861. package/dist/chunk-4VKV3DNC.js +0 -23992
  862. package/dist/chunk-4VKV3DNC.js.map +0 -1
  863. package/dist/chunk-5HH4RGC4.js +0 -136
  864. package/dist/chunk-5HH4RGC4.js.map +0 -1
  865. package/dist/chunk-5NQIFCNX.js +0 -141
  866. package/dist/chunk-6CCDQO2F.js +0 -225
  867. package/dist/chunk-6CCDQO2F.js.map +0 -1
  868. package/dist/chunk-6FBZ5E6L.js +0 -96
  869. package/dist/chunk-6YWRJMGR.js +0 -309
  870. package/dist/chunk-73MCYA5Z.js +0 -310
  871. package/dist/chunk-7DQAVVUA.js +0 -130
  872. package/dist/chunk-7DQAVVUA.js.map +0 -1
  873. package/dist/chunk-A3PEJ3V3.js +0 -95
  874. package/dist/chunk-A57AHUNA.js +0 -28
  875. package/dist/chunk-ABELDLY3.js +0 -594
  876. package/dist/chunk-ABELDLY3.js.map +0 -1
  877. package/dist/chunk-AWICKT2B.js +0 -25
  878. package/dist/chunk-AYC2WM4P.js +0 -106
  879. package/dist/chunk-AYC2WM4P.js.map +0 -1
  880. package/dist/chunk-BDD2ILIT.js +0 -56
  881. package/dist/chunk-BSFTG66P.js +0 -2743
  882. package/dist/chunk-BSFTG66P.js.map +0 -1
  883. package/dist/chunk-BSUN6JMU.js +0 -215
  884. package/dist/chunk-CBEL3P22.js +0 -57
  885. package/dist/chunk-CSADPKPC.js +0 -161
  886. package/dist/chunk-CSADPKPC.js.map +0 -1
  887. package/dist/chunk-DPEQVHTX.js +0 -26
  888. package/dist/chunk-DQLBKU7G.js +0 -469
  889. package/dist/chunk-DQLBKU7G.js.map +0 -1
  890. package/dist/chunk-ECXNE6RJ.js +0 -622
  891. package/dist/chunk-EDFVATFW.js +0 -211
  892. package/dist/chunk-EDFVATFW.js.map +0 -1
  893. package/dist/chunk-EPK2GYLV.js +0 -214
  894. package/dist/chunk-EYO62URT.js +0 -172
  895. package/dist/chunk-F3WFP75M.js +0 -94
  896. package/dist/chunk-F6NJAHAZ.js +0 -19
  897. package/dist/chunk-F7HBCFUA.js +0 -188
  898. package/dist/chunk-FCTWXNRC.js +0 -365
  899. package/dist/chunk-FCTWXNRC.js.map +0 -1
  900. package/dist/chunk-FFZBW4CC.js +0 -297
  901. package/dist/chunk-FR345TDN.js +0 -577
  902. package/dist/chunk-FR345TDN.js.map +0 -1
  903. package/dist/chunk-FRVROFI6.js +0 -98
  904. package/dist/chunk-G32FXVQ6.js +0 -31
  905. package/dist/chunk-HA5D6US2.js +0 -26
  906. package/dist/chunk-HWWPDUZM.js +0 -217
  907. package/dist/chunk-IEULFYA2.js +0 -174
  908. package/dist/chunk-IEULFYA2.js.map +0 -1
  909. package/dist/chunk-IMZIECST.js +0 -830
  910. package/dist/chunk-IPF4P6ZQ.js +0 -392
  911. package/dist/chunk-IPF4P6ZQ.js.map +0 -1
  912. package/dist/chunk-IRHNWYDT.js +0 -106
  913. package/dist/chunk-JH7NHC5W.js +0 -169
  914. package/dist/chunk-JIHG6K7N.js +0 -30
  915. package/dist/chunk-JIHG6K7N.js.map +0 -1
  916. package/dist/chunk-JKDITP62.js +0 -1380
  917. package/dist/chunk-JKDITP62.js.map +0 -1
  918. package/dist/chunk-JMXBUIVI.js +0 -84
  919. package/dist/chunk-KHCN2QXV.js +0 -346
  920. package/dist/chunk-KHCN2QXV.js.map +0 -1
  921. package/dist/chunk-KY4MPR6R.js +0 -3155
  922. package/dist/chunk-KY4MPR6R.js.map +0 -1
  923. package/dist/chunk-L4DOL7L7.js +0 -125
  924. package/dist/chunk-L6PDFIND.js +0 -496
  925. package/dist/chunk-L6PDFIND.js.map +0 -1
  926. package/dist/chunk-L7HPNEKW.js +0 -304
  927. package/dist/chunk-L7HPNEKW.js.map +0 -1
  928. package/dist/chunk-LB3VYIS2.js +0 -141
  929. package/dist/chunk-LB3VYIS2.js.map +0 -1
  930. package/dist/chunk-LDVMMLRA.js +0 -106
  931. package/dist/chunk-LQ4HBQ2B.js +0 -433
  932. package/dist/chunk-LXUEWTHJ.js +0 -788
  933. package/dist/chunk-LXUEWTHJ.js.map +0 -1
  934. package/dist/chunk-LYZVLKRA.js +0 -175
  935. package/dist/chunk-MBKCUSMR.js +0 -6078
  936. package/dist/chunk-MBKCUSMR.js.map +0 -1
  937. package/dist/chunk-MPI3SWIT.js +0 -536
  938. package/dist/chunk-MPI3SWIT.js.map +0 -1
  939. package/dist/chunk-MXPFUDFR.js +0 -1024
  940. package/dist/chunk-MXPFUDFR.js.map +0 -1
  941. package/dist/chunk-N5SQSMMR.js +0 -229
  942. package/dist/chunk-N5SQSMMR.js.map +0 -1
  943. package/dist/chunk-NEONVKMJ.js +0 -455
  944. package/dist/chunk-NEONVKMJ.js.map +0 -1
  945. package/dist/chunk-NFSV3CDO.js +0 -6198
  946. package/dist/chunk-NFSV3CDO.js.map +0 -1
  947. package/dist/chunk-NGT6MARJ.js +0 -274
  948. package/dist/chunk-NGYKF4T6.js +0 -20
  949. package/dist/chunk-NMMKTPGI.js +0 -136
  950. package/dist/chunk-O4AXPEOE.js +0 -923
  951. package/dist/chunk-O4AXPEOE.js.map +0 -1
  952. package/dist/chunk-OPEMWO6C.js +0 -5096
  953. package/dist/chunk-OPEMWO6C.js.map +0 -1
  954. package/dist/chunk-OZLBLXTK.js +0 -74
  955. package/dist/chunk-PB4LQHL2.js +0 -4341
  956. package/dist/chunk-PB4LQHL2.js.map +0 -1
  957. package/dist/chunk-PDJZMQ7F.js +0 -316
  958. package/dist/chunk-PDJZMQ7F.js.map +0 -1
  959. package/dist/chunk-PNHDM76R.js +0 -74
  960. package/dist/chunk-PNHDM76R.js.map +0 -1
  961. package/dist/chunk-Q7UF4ERB.js +0 -74
  962. package/dist/chunk-QRXTDXMX.js +0 -129
  963. package/dist/chunk-QRXTDXMX.js.map +0 -1
  964. package/dist/chunk-QTERC4PG.js +0 -1700
  965. package/dist/chunk-QTERC4PG.js.map +0 -1
  966. package/dist/chunk-QYOPQRLI.js +0 -296
  967. package/dist/chunk-R34LJSPM.js +0 -42
  968. package/dist/chunk-R4ODZS43.js +0 -492
  969. package/dist/chunk-R4ODZS43.js.map +0 -1
  970. package/dist/chunk-RJAQEZVD.js +0 -23
  971. package/dist/chunk-RPFBZHHE.js +0 -55
  972. package/dist/chunk-SXRSLUW7.js +0 -454
  973. package/dist/chunk-T5RKIWPQ.js +0 -352
  974. package/dist/chunk-T5RKIWPQ.js.map +0 -1
  975. package/dist/chunk-TCSPJQ2X.js +0 -136
  976. package/dist/chunk-TD44SXQX.js +0 -58
  977. package/dist/chunk-TQAXOBKJ.js +0 -364
  978. package/dist/chunk-TQAXOBKJ.js.map +0 -1
  979. package/dist/chunk-TTFTS2SO.js +0 -131
  980. package/dist/chunk-UA5EUJXV.js +0 -51
  981. package/dist/chunk-W7OFLOZB.js +0 -46
  982. package/dist/chunk-WAQYXH2U.js +0 -76
  983. package/dist/chunk-WWD4PITU.js +0 -333
  984. package/dist/chunk-WZ5YRUQU.js +0 -12
  985. package/dist/chunk-WZ5YRUQU.js.map +0 -1
  986. package/dist/chunk-XEVVAGAG.js +0 -422
  987. package/dist/chunk-XEVVAGAG.js.map +0 -1
  988. package/dist/chunk-Y4JR4RDM.js +0 -74
  989. package/dist/chunk-YMOVI3WT.js +0 -382
  990. package/dist/chunk-YS6PCTPS.js +0 -96
  991. package/dist/chunk-YUP46PWY.js +0 -199
  992. package/dist/chunk-YUP46PWY.js.map +0 -1
  993. package/dist/chunk-Z4NYXXTP.js +0 -42
  994. package/dist/chunk-Z4NYXXTP.js.map +0 -1
  995. package/dist/chunk-Z5AUNK6P.js +0 -1709
  996. package/dist/chunk-Z5AUNK6P.js.map +0 -1
  997. package/dist/chunk-ZAFR46HG.js +0 -67
  998. package/dist/chunk-ZHW3O25C.js +0 -191
  999. package/dist/claim-CG2IMTHK.js +0 -199
  1000. package/dist/claim-CG2IMTHK.js.map +0 -1
  1001. package/dist/client-XKDFFS7O.js +0 -20
  1002. package/dist/code-JWIOO2AJ.js +0 -78
  1003. package/dist/code-JWIOO2AJ.js.map +0 -1
  1004. package/dist/companies-LQN4HUUH.js +0 -196
  1005. package/dist/companies-LQN4HUUH.js.map +0 -1
  1006. package/dist/complete-MKB27QP7.js +0 -82
  1007. package/dist/complete-MKB27QP7.js.map +0 -1
  1008. package/dist/config-LJOEAYFZ.js +0 -89
  1009. package/dist/config-LJOEAYFZ.js.map +0 -1
  1010. package/dist/connect-ATGYJNG4.js +0 -37
  1011. package/dist/content-Y2BJSXG6.js +0 -83
  1012. package/dist/content-Y2BJSXG6.js.map +0 -1
  1013. package/dist/conversation-EFNQM435.js +0 -94
  1014. package/dist/conversation-EFNQM435.js.map +0 -1
  1015. package/dist/conversion-report-EUSTSHPV.js +0 -126
  1016. package/dist/conversion-report-EUSTSHPV.js.map +0 -1
  1017. package/dist/conversion-upload-command-677OT5NZ.js +0 -432
  1018. package/dist/conversion-upload-command-677OT5NZ.js.map +0 -1
  1019. package/dist/conversion-writes-E7M6VHGB.js +0 -121
  1020. package/dist/conversion-writes-E7M6VHGB.js.map +0 -1
  1021. package/dist/conversions-BXZLEXHU.js +0 -136
  1022. package/dist/conversions-BXZLEXHU.js.map +0 -1
  1023. package/dist/conversions-FERAOXWG.js +0 -77
  1024. package/dist/conversions-FERAOXWG.js.map +0 -1
  1025. package/dist/countries-TKPX2GDH.js +0 -83
  1026. package/dist/countries-TKPX2GDH.js.map +0 -1
  1027. package/dist/create-HGMIWFVX.js +0 -132
  1028. package/dist/create-HGMIWFVX.js.map +0 -1
  1029. package/dist/create-LBJV3NPD.js +0 -209
  1030. package/dist/create-LBJV3NPD.js.map +0 -1
  1031. package/dist/create-QTPZ7PP7.js +0 -117
  1032. package/dist/create-QTPZ7PP7.js.map +0 -1
  1033. package/dist/create-SBIHEG25.js +0 -60
  1034. package/dist/create-SBIHEG25.js.map +0 -1
  1035. package/dist/creatives-CIOOFE3T.js +0 -88
  1036. package/dist/creatives-CIOOFE3T.js.map +0 -1
  1037. package/dist/creatives-MIUJAK4E.js +0 -49
  1038. package/dist/creatives-MIUJAK4E.js.map +0 -1
  1039. package/dist/creatives-QXR7QDXM.js +0 -183
  1040. package/dist/creatives-QXR7QDXM.js.map +0 -1
  1041. package/dist/credentials-CMVAKAUL.js +0 -1057
  1042. package/dist/credentials-CMVAKAUL.js.map +0 -1
  1043. package/dist/critique-LUB35ORK.js +0 -213
  1044. package/dist/critique-LUB35ORK.js.map +0 -1
  1045. package/dist/critique-XXCM7YAV.js +0 -1477
  1046. package/dist/critique-XXCM7YAV.js.map +0 -1
  1047. package/dist/crm-EGNVKQHB.js +0 -279
  1048. package/dist/crm-EGNVKQHB.js.map +0 -1
  1049. package/dist/crm-I6IQ5M55.js +0 -226
  1050. package/dist/crm-I6IQ5M55.js.map +0 -1
  1051. package/dist/crop-ES2IDPUL.js +0 -115
  1052. package/dist/crop-ES2IDPUL.js.map +0 -1
  1053. package/dist/currency-VFKYXFBM.js +0 -89
  1054. package/dist/currency-VFKYXFBM.js.map +0 -1
  1055. package/dist/custom-conversions-WPTEXOWR.js +0 -126
  1056. package/dist/custom-conversions-WPTEXOWR.js.map +0 -1
  1057. package/dist/customers-ACRYXALZ.js +0 -58
  1058. package/dist/delete-3AHBFPQJ.js +0 -68
  1059. package/dist/delete-3AHBFPQJ.js.map +0 -1
  1060. package/dist/delete-E7WYQN2L.js +0 -73
  1061. package/dist/delete-E7WYQN2L.js.map +0 -1
  1062. package/dist/delete-EJCB5MHV.js +0 -71
  1063. package/dist/delete-EJCB5MHV.js.map +0 -1
  1064. package/dist/delete-J677F4BG.js +0 -64
  1065. package/dist/delete-J677F4BG.js.map +0 -1
  1066. package/dist/delete-LVQ7R6DI.js +0 -73
  1067. package/dist/delete-LVQ7R6DI.js.map +0 -1
  1068. package/dist/delete-U4K6NIOE.js +0 -55
  1069. package/dist/delete-U4K6NIOE.js.map +0 -1
  1070. package/dist/demographics-RY6R6VWA.js +0 -139
  1071. package/dist/demographics-RY6R6VWA.js.map +0 -1
  1072. package/dist/describe-N36XDO4P.js +0 -99
  1073. package/dist/describe-N36XDO4P.js.map +0 -1
  1074. package/dist/describe-Q5OAJDYH.js +0 -99
  1075. package/dist/describe-Q5OAJDYH.js.map +0 -1
  1076. package/dist/dimensions-YIWQVFTO.js +0 -103
  1077. package/dist/dimensions-YIWQVFTO.js.map +0 -1
  1078. package/dist/discard-UO4DJNP3.js +0 -67
  1079. package/dist/discard-UO4DJNP3.js.map +0 -1
  1080. package/dist/discover-IASOLBUQ.js +0 -173
  1081. package/dist/discover-IASOLBUQ.js.map +0 -1
  1082. package/dist/domain-QBF4TBGL.js +0 -100
  1083. package/dist/domain-QBF4TBGL.js.map +0 -1
  1084. package/dist/download-DKFYGXEH.js +0 -301
  1085. package/dist/download-DKFYGXEH.js.map +0 -1
  1086. package/dist/draft-5ZZOTJZR.js +0 -282
  1087. package/dist/draft-5ZZOTJZR.js.map +0 -1
  1088. package/dist/draft-DKMUTG4F.js +0 -104
  1089. package/dist/draft-DKMUTG4F.js.map +0 -1
  1090. package/dist/draft-FMOQUVPP.js +0 -219
  1091. package/dist/draft-FMOQUVPP.js.map +0 -1
  1092. package/dist/draft-KFXJCKCH.js +0 -234
  1093. package/dist/draft-KFXJCKCH.js.map +0 -1
  1094. package/dist/draft-KJ6SH67P.js +0 -101
  1095. package/dist/draft-KJ6SH67P.js.map +0 -1
  1096. package/dist/draft-QW7EYFFU.js +0 -329
  1097. package/dist/draft-QW7EYFFU.js.map +0 -1
  1098. package/dist/draft-URMXE4U4.js +0 -101
  1099. package/dist/draft-URMXE4U4.js.map +0 -1
  1100. package/dist/draft-ZU7MZLIT.js +0 -300
  1101. package/dist/draft-ZU7MZLIT.js.map +0 -1
  1102. package/dist/env-ODWJOKNV.js +0 -44
  1103. package/dist/experiment-TUKKH6UJ.js +0 -1378
  1104. package/dist/experiment-TUKKH6UJ.js.map +0 -1
  1105. package/dist/export-WXFUVX6F.js +0 -170
  1106. package/dist/export-WXFUVX6F.js.map +0 -1
  1107. package/dist/extract-PY3J3WVF.js +0 -115
  1108. package/dist/extract-PY3J3WVF.js.map +0 -1
  1109. package/dist/facets-NUEIHCKA.js +0 -115
  1110. package/dist/facets-NUEIHCKA.js.map +0 -1
  1111. package/dist/favorites-JDFIYSV2.js +0 -180
  1112. package/dist/favorites-JDFIYSV2.js.map +0 -1
  1113. package/dist/feed-CYFNDBJS.js +0 -159
  1114. package/dist/feed-CYFNDBJS.js.map +0 -1
  1115. package/dist/feedback-E2P3NB7H.js +0 -68
  1116. package/dist/feedback-E2P3NB7H.js.map +0 -1
  1117. package/dist/feedback-record-IMCTEDOX.js +0 -137
  1118. package/dist/feedback-record-IMCTEDOX.js.map +0 -1
  1119. package/dist/fetch-ELSDT3NZ.js +0 -141
  1120. package/dist/fetch-ELSDT3NZ.js.map +0 -1
  1121. package/dist/fetch-NM7MD3CN.js +0 -172
  1122. package/dist/fetch-NM7MD3CN.js.map +0 -1
  1123. package/dist/find-HYMLZCKA.js +0 -136
  1124. package/dist/find-HYMLZCKA.js.map +0 -1
  1125. package/dist/fit-5WZ6NVSF.js +0 -44
  1126. package/dist/flows-ZEUUIXCS.js +0 -246
  1127. package/dist/flows-ZEUUIXCS.js.map +0 -1
  1128. package/dist/follow-RGJ76HHD.js +0 -84
  1129. package/dist/follow-RGJ76HHD.js.map +0 -1
  1130. package/dist/follow-competitors-JMNOP2ZT.js +0 -133
  1131. package/dist/follow-competitors-JMNOP2ZT.js.map +0 -1
  1132. package/dist/following-5GINRDTL.js +0 -111
  1133. package/dist/following-5GINRDTL.js.map +0 -1
  1134. package/dist/fonts-7U7I2TWV.js +0 -27
  1135. package/dist/forecast-PGDYFFKQ.js +0 -105
  1136. package/dist/forecast-PGDYFFKQ.js.map +0 -1
  1137. package/dist/funding-ED6PDKJF.js +0 -86
  1138. package/dist/funding-ED6PDKJF.js.map +0 -1
  1139. package/dist/funnel-IML4F5ZP.js +0 -838
  1140. package/dist/funnel-IML4F5ZP.js.map +0 -1
  1141. package/dist/ga4-QPEXE6YG.js +0 -55
  1142. package/dist/generate-VVTQCJRI.js +0 -264
  1143. package/dist/generate-VVTQCJRI.js.map +0 -1
  1144. package/dist/get-CZSESEHU.js +0 -61
  1145. package/dist/get-CZSESEHU.js.map +0 -1
  1146. package/dist/get-DEGOS3R6.js +0 -63
  1147. package/dist/get-DEGOS3R6.js.map +0 -1
  1148. package/dist/get-L3ZGUJJB.js +0 -65
  1149. package/dist/get-L3ZGUJJB.js.map +0 -1
  1150. package/dist/get-NX5DGSRP.js +0 -65
  1151. package/dist/get-NX5DGSRP.js.map +0 -1
  1152. package/dist/get-TL6UET23.js +0 -56
  1153. package/dist/get-TL6UET23.js.map +0 -1
  1154. package/dist/get-UNZMYRB6.js +0 -80
  1155. package/dist/get-UNZMYRB6.js.map +0 -1
  1156. package/dist/get-ZVRRZDUU.js +0 -94
  1157. package/dist/get-ZVRRZDUU.js.map +0 -1
  1158. package/dist/gif-MNBSPA64.js +0 -96
  1159. package/dist/gif-MNBSPA64.js.map +0 -1
  1160. package/dist/google-C2Z4XWRL.js +0 -1866
  1161. package/dist/google-C2Z4XWRL.js.map +0 -1
  1162. package/dist/google-LJSSLBP3.js +0 -138
  1163. package/dist/google-LJSSLBP3.js.map +0 -1
  1164. package/dist/group-7BGYA6LK.js +0 -44
  1165. package/dist/group-7BGYA6LK.js.map +0 -1
  1166. package/dist/group-MPYAKBH5.js +0 -44
  1167. package/dist/group-MPYAKBH5.js.map +0 -1
  1168. package/dist/gsc-LC5ADBA3.js +0 -30
  1169. package/dist/history-GPQE2ZYR.js +0 -68
  1170. package/dist/history-GPQE2ZYR.js.map +0 -1
  1171. package/dist/history-XTSLGMK6.js +0 -135
  1172. package/dist/history-XTSLGMK6.js.map +0 -1
  1173. package/dist/hubspot-GPTEZD3A.js +0 -781
  1174. package/dist/hubspot-GPTEZD3A.js.map +0 -1
  1175. package/dist/icon-YKMRIU7A.js +0 -139
  1176. package/dist/icon-YKMRIU7A.js.map +0 -1
  1177. package/dist/ideas-NEBJBIBM.js +0 -31
  1178. package/dist/images-ASWWS5TH.js +0 -90
  1179. package/dist/improve-VXDJGXTG.js +0 -88
  1180. package/dist/improve-VXDJGXTG.js.map +0 -1
  1181. package/dist/ingest-AW37RWJN.js +0 -109
  1182. package/dist/ingest-AW37RWJN.js.map +0 -1
  1183. package/dist/ingest-X7UPOCKP.js +0 -24
  1184. package/dist/insights-MHUV75RQ.js +0 -424
  1185. package/dist/insights-MHUV75RQ.js.map +0 -1
  1186. package/dist/insights-NLQXAW3F.js +0 -123
  1187. package/dist/insights-NLQXAW3F.js.map +0 -1
  1188. package/dist/inspect-TXVKPBAR.js +0 -191
  1189. package/dist/inspect-TXVKPBAR.js.map +0 -1
  1190. package/dist/inspiration-64DY3QWN.js +0 -53
  1191. package/dist/intent-3HY6DRHW.js +0 -96
  1192. package/dist/intent-3HY6DRHW.js.map +0 -1
  1193. package/dist/job-L73KC4TC.js +0 -203
  1194. package/dist/job-L73KC4TC.js.map +0 -1
  1195. package/dist/job-create-LR3EHWKO.js +0 -110
  1196. package/dist/job-create-LR3EHWKO.js.map +0 -1
  1197. package/dist/job-status-MSL4EAJT.js +0 -75
  1198. package/dist/job-status-MSL4EAJT.js.map +0 -1
  1199. package/dist/keep-XUATLR5B.js +0 -80
  1200. package/dist/keep-XUATLR5B.js.map +0 -1
  1201. package/dist/keyword-gap-DJAYVD4U.js +0 -131
  1202. package/dist/keyword-gap-DJAYVD4U.js.map +0 -1
  1203. package/dist/keyword-metrics-4FEFFTQO.js +0 -198
  1204. package/dist/keyword-metrics-4FEFFTQO.js.map +0 -1
  1205. package/dist/keywords-for-site-HIMEQY63.js +0 -125
  1206. package/dist/keywords-for-site-HIMEQY63.js.map +0 -1
  1207. package/dist/landing-KU3ILVB3.js +0 -28
  1208. package/dist/landing-KU3ILVB3.js.map +0 -1
  1209. package/dist/languages-4QYK5DMW.js +0 -56
  1210. package/dist/languages-4QYK5DMW.js.map +0 -1
  1211. package/dist/languages-L5E7WS77.js +0 -41
  1212. package/dist/languages-L5E7WS77.js.map +0 -1
  1213. package/dist/layerize-YAVLAXYM.js +0 -192
  1214. package/dist/layerize-YAVLAXYM.js.map +0 -1
  1215. package/dist/leads-DR3EK77T.js +0 -91
  1216. package/dist/leads-DR3EK77T.js.map +0 -1
  1217. package/dist/leads-PFPQOCBR.js +0 -286
  1218. package/dist/leads-PFPQOCBR.js.map +0 -1
  1219. package/dist/learn-D4D75X2Y.js +0 -204
  1220. package/dist/library-E2SJS7PT.js +0 -111
  1221. package/dist/library-E2SJS7PT.js.map +0 -1
  1222. package/dist/lighthouse-QMECKX4R.js +0 -76
  1223. package/dist/lighthouse-QMECKX4R.js.map +0 -1
  1224. package/dist/line-item-writes-XMDA7AZQ.js +0 -209
  1225. package/dist/line-item-writes-XMDA7AZQ.js.map +0 -1
  1226. package/dist/line-items-YGKTYKVE.js +0 -104
  1227. package/dist/line-items-YGKTYKVE.js.map +0 -1
  1228. package/dist/link-AOB3WGGN.js +0 -65
  1229. package/dist/link-AOB3WGGN.js.map +0 -1
  1230. package/dist/linkedin-WRJNY6NY.js +0 -1002
  1231. package/dist/linkedin-WRJNY6NY.js.map +0 -1
  1232. package/dist/list-66VKYGKM.js +0 -52
  1233. package/dist/list-66VKYGKM.js.map +0 -1
  1234. package/dist/list-6DZWRLDN.js +0 -59
  1235. package/dist/list-6DZWRLDN.js.map +0 -1
  1236. package/dist/list-6KJWGPPS.js +0 -67
  1237. package/dist/list-6KJWGPPS.js.map +0 -1
  1238. package/dist/list-GXCKA2AN.js +0 -153
  1239. package/dist/list-GXCKA2AN.js.map +0 -1
  1240. package/dist/list-KNHZPT7L.js +0 -65
  1241. package/dist/list-KNHZPT7L.js.map +0 -1
  1242. package/dist/list-LPETG6A6.js +0 -78
  1243. package/dist/list-LPETG6A6.js.map +0 -1
  1244. package/dist/list-WHJNWHSZ.js +0 -53
  1245. package/dist/list-WHJNWHSZ.js.map +0 -1
  1246. package/dist/list-YV5Z2J6U.js +0 -305
  1247. package/dist/list-YV5Z2J6U.js.map +0 -1
  1248. package/dist/locations-4FZYKG2A.js +0 -68
  1249. package/dist/locations-4FZYKG2A.js.map +0 -1
  1250. package/dist/locations-W32YE2KS.js +0 -41
  1251. package/dist/locations-W32YE2KS.js.map +0 -1
  1252. package/dist/log-YVW46HL7.js +0 -94
  1253. package/dist/log-YVW46HL7.js.map +0 -1
  1254. package/dist/logo-7O7VW5R3.js +0 -19
  1255. package/dist/lookup-Z2X5WAO6.js +0 -23
  1256. package/dist/make-Q6BQ7LNT.js +0 -505
  1257. package/dist/make-Q6BQ7LNT.js.map +0 -1
  1258. package/dist/map-VZM5C6DA.js +0 -406
  1259. package/dist/map-VZM5C6DA.js.map +0 -1
  1260. package/dist/mcp-KSJDALG6.js +0 -478
  1261. package/dist/mcp-KSJDALG6.js.map +0 -1
  1262. package/dist/media-7P66TUIR.js +0 -15
  1263. package/dist/media-JBQKYSRQ.js +0 -90
  1264. package/dist/media-JBQKYSRQ.js.map +0 -1
  1265. package/dist/media-sources-427U333M.js +0 -32
  1266. package/dist/members-ABGEFALK.js +0 -46
  1267. package/dist/members-ABGEFALK.js.map +0 -1
  1268. package/dist/meta-JH4FHVNX.js +0 -69
  1269. package/dist/metrics-ALSPX6EQ.js +0 -153
  1270. package/dist/metrics-ALSPX6EQ.js.map +0 -1
  1271. package/dist/models-7BM5BKXX.js +0 -157
  1272. package/dist/models-7BM5BKXX.js.map +0 -1
  1273. package/dist/normalize-DFK3DGGZ.js +0 -808
  1274. package/dist/normalize-DFK3DGGZ.js.map +0 -1
  1275. package/dist/normalize-NDR7YEQE.js +0 -140
  1276. package/dist/normalize-NDR7YEQE.js.map +0 -1
  1277. package/dist/options-G5VGH22X.js +0 -123
  1278. package/dist/options-G5VGH22X.js.map +0 -1
  1279. package/dist/output-ZLXBAA4O.js +0 -25
  1280. package/dist/page-L7BBMINT.js +0 -107
  1281. package/dist/page-L7BBMINT.js.map +0 -1
  1282. package/dist/pages-NBV35ECG.js +0 -67
  1283. package/dist/pages-NBV35ECG.js.map +0 -1
  1284. package/dist/performance-SOMZNPIG.js +0 -25
  1285. package/dist/pinterest-KXAZTRDP.js +0 -98
  1286. package/dist/pinterest-KXAZTRDP.js.map +0 -1
  1287. package/dist/pixels-DYWHXAJT.js +0 -109
  1288. package/dist/pixels-DYWHXAJT.js.map +0 -1
  1289. package/dist/pixels-UMS2QBUG.js +0 -61
  1290. package/dist/pixels-UMS2QBUG.js.map +0 -1
  1291. package/dist/preview-C5FER5SU.js +0 -170
  1292. package/dist/preview-C5FER5SU.js.map +0 -1
  1293. package/dist/promoted-tweet-writes-3PECZLQA.js +0 -181
  1294. package/dist/promoted-tweet-writes-3PECZLQA.js.map +0 -1
  1295. package/dist/promoted-tweets-GMV6WIWV.js +0 -120
  1296. package/dist/promoted-tweets-GMV6WIWV.js.map +0 -1
  1297. package/dist/properties-YAJQF577.js +0 -102
  1298. package/dist/properties-YAJQF577.js.map +0 -1
  1299. package/dist/publish-5WDUTTG5.js +0 -355
  1300. package/dist/publish-5WDUTTG5.js.map +0 -1
  1301. package/dist/query-TBWL52JI.js +0 -1342
  1302. package/dist/query-TBWL52JI.js.map +0 -1
  1303. package/dist/query-VESQSTQI.js +0 -237
  1304. package/dist/query-VESQSTQI.js.map +0 -1
  1305. package/dist/query-XZQSY62P.js +0 -248
  1306. package/dist/query-XZQSY62P.js.map +0 -1
  1307. package/dist/read-UMAWDVKX.js +0 -141
  1308. package/dist/read-UMAWDVKX.js.map +0 -1
  1309. package/dist/reddit-OPHQFRRC.js +0 -27
  1310. package/dist/refresh-U56RE7DI.js +0 -96
  1311. package/dist/refresh-U56RE7DI.js.map +0 -1
  1312. package/dist/release-P66DYNKQ.js +0 -61
  1313. package/dist/release-P66DYNKQ.js.map +0 -1
  1314. package/dist/relevant-pages-DSQQU6F7.js +0 -100
  1315. package/dist/relevant-pages-DSQQU6F7.js.map +0 -1
  1316. package/dist/remove-GRLXSDZC.js +0 -50
  1317. package/dist/remove-GRLXSDZC.js.map +0 -1
  1318. package/dist/remove-IRIP4OKM.js +0 -52
  1319. package/dist/remove-IRIP4OKM.js.map +0 -1
  1320. package/dist/reopen-PMIO7NJJ.js +0 -65
  1321. package/dist/reopen-PMIO7NJJ.js.map +0 -1
  1322. package/dist/rerun-V4O6TKBY.js +0 -84
  1323. package/dist/rerun-V4O6TKBY.js.map +0 -1
  1324. package/dist/research-MG3MESKH.js +0 -59
  1325. package/dist/research-RFPBKIVP.js +0 -228
  1326. package/dist/research-RFPBKIVP.js.map +0 -1
  1327. package/dist/reset-3HKXFAV7.js +0 -56
  1328. package/dist/reset-3HKXFAV7.js.map +0 -1
  1329. package/dist/reset-LQZA3CIB.js +0 -56
  1330. package/dist/reset-LQZA3CIB.js.map +0 -1
  1331. package/dist/resolve-H33CQAY4.js +0 -122
  1332. package/dist/resolve-H33CQAY4.js.map +0 -1
  1333. package/dist/retry-6F3YAVYQ.js +0 -64
  1334. package/dist/retry-6F3YAVYQ.js.map +0 -1
  1335. package/dist/retry-QWD3HWFP.js +0 -62
  1336. package/dist/retry-QWD3HWFP.js.map +0 -1
  1337. package/dist/retry-failed-7OAJ5TMD.js +0 -47
  1338. package/dist/retry-failed-7OAJ5TMD.js.map +0 -1
  1339. package/dist/run-CGZIVYLV.js +0 -67
  1340. package/dist/run-CGZIVYLV.js.map +0 -1
  1341. package/dist/run-PZF26R6H.js +0 -59
  1342. package/dist/scaffold-ad-AI6R4GDU.js +0 -1458
  1343. package/dist/scaffold-ad-AI6R4GDU.js.map +0 -1
  1344. package/dist/scaffold-static-ad-T7ZDHRB3.js +0 -944
  1345. package/dist/scaffold-static-ad-T7ZDHRB3.js.map +0 -1
  1346. package/dist/scaffold-video-R24U2WC7.js +0 -840
  1347. package/dist/scaffold-video-R24U2WC7.js.map +0 -1
  1348. package/dist/schedule-BK44B77G.js +0 -68
  1349. package/dist/schedule-BK44B77G.js.map +0 -1
  1350. package/dist/schedule-F2EEY4UK.js +0 -63
  1351. package/dist/schedule-F2EEY4UK.js.map +0 -1
  1352. package/dist/scheduled-agents-CIEAOWM6.js +0 -49
  1353. package/dist/schema-3B6FDPBF.js +0 -131
  1354. package/dist/schema-3B6FDPBF.js.map +0 -1
  1355. package/dist/schema-4FOZ5W35.js +0 -65
  1356. package/dist/schema-4FOZ5W35.js.map +0 -1
  1357. package/dist/scrape-P46M2J43.js +0 -2243
  1358. package/dist/scrape-P46M2J43.js.map +0 -1
  1359. package/dist/screenshot-6F7G3LN5.js +0 -104
  1360. package/dist/screenshot-6F7G3LN5.js.map +0 -1
  1361. package/dist/search-23LREBOG.js +0 -94
  1362. package/dist/search-23LREBOG.js.map +0 -1
  1363. package/dist/search-DNYAA6TT.js +0 -176
  1364. package/dist/search-DNYAA6TT.js.map +0 -1
  1365. package/dist/search-FORHMB7P.js +0 -27
  1366. package/dist/search-KQMPPO3X.js +0 -226
  1367. package/dist/search-KQMPPO3X.js.map +0 -1
  1368. package/dist/search-X4AKUB2K.js +0 -93
  1369. package/dist/search-X4AKUB2K.js.map +0 -1
  1370. package/dist/seeds-K4CHZ2HU.js +0 -103
  1371. package/dist/seeds-K4CHZ2HU.js.map +0 -1
  1372. package/dist/select-52K6KZGY.js +0 -95
  1373. package/dist/sends-UH2MZGCD.js +0 -310
  1374. package/dist/sends-UH2MZGCD.js.map +0 -1
  1375. package/dist/sequences-BXGO3NPA.js +0 -148
  1376. package/dist/sequences-BXGO3NPA.js.map +0 -1
  1377. package/dist/set-prompt-3IXP42AK.js +0 -186
  1378. package/dist/set-prompt-3IXP42AK.js.map +0 -1
  1379. package/dist/setup-links-OV6ALAUU.js +0 -143
  1380. package/dist/setup-links-OV6ALAUU.js.map +0 -1
  1381. package/dist/shared-VMV44VPB.js +0 -32
  1382. package/dist/site-MQ5ORTKV.js +0 -179
  1383. package/dist/site-MQ5ORTKV.js.map +0 -1
  1384. package/dist/sitemaps-LKCTG2WM.js +0 -88
  1385. package/dist/sitemaps-LKCTG2WM.js.map +0 -1
  1386. package/dist/sites-YHUF7G4Z.js +0 -102
  1387. package/dist/sites-YHUF7G4Z.js.map +0 -1
  1388. package/dist/skills-CG674XHN.js +0 -49
  1389. package/dist/skills-CG674XHN.js.map +0 -1
  1390. package/dist/sources-44THTN2Y.js +0 -422
  1391. package/dist/sources-44THTN2Y.js.map +0 -1
  1392. package/dist/sources-BQNCLGWT.js +0 -30
  1393. package/dist/stale-JGLP7BAC.js +0 -63
  1394. package/dist/stale-JGLP7BAC.js.map +0 -1
  1395. package/dist/stats-TO3J2FU6.js +0 -34
  1396. package/dist/status-NJ3SMBGS.js +0 -64
  1397. package/dist/status-NJ3SMBGS.js.map +0 -1
  1398. package/dist/sticker-YBOWSWMR.js +0 -96
  1399. package/dist/sticker-YBOWSWMR.js.map +0 -1
  1400. package/dist/stock-E6NMDSVI.js +0 -181
  1401. package/dist/stock-E6NMDSVI.js.map +0 -1
  1402. package/dist/studio-LHH62SZC.js +0 -49
  1403. package/dist/sync-2R5UKTHN.js +0 -56
  1404. package/dist/sync-2R5UKTHN.js.map +0 -1
  1405. package/dist/sync-AZRR5JNS.js +0 -266
  1406. package/dist/sync-AZRR5JNS.js.map +0 -1
  1407. package/dist/sync-ML7E5J22.js +0 -56
  1408. package/dist/sync-ML7E5J22.js.map +0 -1
  1409. package/dist/sync-definition-LBPI7P5F.js +0 -48
  1410. package/dist/tag-manager-D3YNI7JG.js +0 -43
  1411. package/dist/tags-BYGKXDDS.js +0 -21
  1412. package/dist/tags-BYGKXDDS.js.map +0 -1
  1413. package/dist/tags-OOQV4G2Y.js +0 -26
  1414. package/dist/tags-TKYXWGN4.js +0 -21
  1415. package/dist/tags-TKYXWGN4.js.map +0 -1
  1416. package/dist/tags-V732MEES.js +0 -226
  1417. package/dist/tags-V732MEES.js.map +0 -1
  1418. package/dist/tags-YLC46IXM.js +0 -21
  1419. package/dist/tags-YLC46IXM.js.map +0 -1
  1420. package/dist/targeting-constants-XT56MOGP.js +0 -119
  1421. package/dist/targeting-constants-XT56MOGP.js.map +0 -1
  1422. package/dist/targeting-criteria-24X3IIJS.js +0 -114
  1423. package/dist/targeting-criteria-24X3IIJS.js.map +0 -1
  1424. package/dist/targets-AKAN2HFY.js +0 -104
  1425. package/dist/targets-AKAN2HFY.js.map +0 -1
  1426. package/dist/templates-7MRVQTB2.js +0 -180
  1427. package/dist/templates-7MRVQTB2.js.map +0 -1
  1428. package/dist/testimonials-OIZMXEYZ.js +0 -32
  1429. package/dist/top-companies-3IG5FRQ2.js +0 -109
  1430. package/dist/top-companies-3IG5FRQ2.js.map +0 -1
  1431. package/dist/triggers-ZHNWHJG4.js +0 -143
  1432. package/dist/triggers-ZHNWHJG4.js.map +0 -1
  1433. package/dist/tweets-V5R5DUA2.js +0 -124
  1434. package/dist/tweets-V5R5DUA2.js.map +0 -1
  1435. package/dist/unfollow-RYDJDDAV.js +0 -48
  1436. package/dist/unfollow-RYDJDDAV.js.map +0 -1
  1437. package/dist/unlink-CS7QNOU2.js +0 -68
  1438. package/dist/unlink-CS7QNOU2.js.map +0 -1
  1439. package/dist/unstage-DDZ5F2Z6.js +0 -86
  1440. package/dist/unstage-DDZ5F2Z6.js.map +0 -1
  1441. package/dist/unstage-KPLOFKU5.js +0 -96
  1442. package/dist/unstage-KPLOFKU5.js.map +0 -1
  1443. package/dist/update-ASY63WIK.js +0 -157
  1444. package/dist/update-ASY63WIK.js.map +0 -1
  1445. package/dist/update-HA5IQCJ2.js +0 -99
  1446. package/dist/update-HA5IQCJ2.js.map +0 -1
  1447. package/dist/update-R3VD5DC3.js +0 -143
  1448. package/dist/update-R3VD5DC3.js.map +0 -1
  1449. package/dist/update-WMCBSNSD.js +0 -64
  1450. package/dist/update-WMCBSNSD.js.map +0 -1
  1451. package/dist/upload-ADEYBWTV.js +0 -152
  1452. package/dist/upload-ADEYBWTV.js.map +0 -1
  1453. package/dist/upload-WBNPIOVR.js +0 -128
  1454. package/dist/upload-WBNPIOVR.js.map +0 -1
  1455. package/dist/upscale-WYTZPUIA.js +0 -111
  1456. package/dist/upscale-WYTZPUIA.js.map +0 -1
  1457. package/dist/url-options-DOCH5AWX.js +0 -128
  1458. package/dist/url-options-DOCH5AWX.js.map +0 -1
  1459. package/dist/url-params-IYTU3MVV.js +0 -99
  1460. package/dist/url-params-IYTU3MVV.js.map +0 -1
  1461. package/dist/use-RGJMULXG.js +0 -97
  1462. package/dist/use-RGJMULXG.js.map +0 -1
  1463. package/dist/validate-T22BKIFK.js +0 -89
  1464. package/dist/validate-T22BKIFK.js.map +0 -1
  1465. package/dist/variant-3DBL2RDV.js +0 -339
  1466. package/dist/variant-3DBL2RDV.js.map +0 -1
  1467. package/dist/videos-7SB2CLZW.js +0 -39
  1468. package/dist/view-5QDCP7HF.js +0 -123
  1469. package/dist/view-5QDCP7HF.js.map +0 -1
  1470. package/dist/viewer-check-NGIMC2BR.js +0 -66
  1471. package/dist/web-IRWXTGE2.js +0 -136
  1472. package/dist/web-IRWXTGE2.js.map +0 -1
  1473. package/dist/winners-JSI4N26Y.js +0 -81
  1474. package/dist/winners-JSI4N26Y.js.map +0 -1
  1475. package/dist/winning-ads-XQZ6HEX5.js +0 -62
  1476. package/dist/write-commands-3C3TV2YC.js +0 -714
  1477. package/dist/write-commands-3C3TV2YC.js.map +0 -1
  1478. package/dist/write-commands-7WIG5UDU.js +0 -731
  1479. package/dist/write-commands-7WIG5UDU.js.map +0 -1
  1480. package/dist/write-commands-G7HHGAEE.js +0 -1009
  1481. package/dist/write-commands-G7HHGAEE.js.map +0 -1
  1482. package/dist/write-commands-ROQSZFXR.js +0 -207
  1483. package/dist/write-commands-ROQSZFXR.js.map +0 -1
  1484. package/dist/x-BLTCL6L3.js +0 -47
  1485. /package/dist/{actions-7XF5L4U3.js.map → actions-PEI6ZQAG.js.map} +0 -0
  1486. /package/dist/{ads-IRE5RZCS.js.map → ads-TJ7ACFHG.js.map} +0 -0
  1487. /package/dist/{avatars-G54K55J3.js.map → avatars-2UQJXHPV.js.map} +0 -0
  1488. /package/dist/{brand-ODTHWWFL.js.map → brand-XBABUT52.js.map} +0 -0
  1489. /package/dist/{canvas-M5HAG7VA.js.map → canvas-KEXE5P6S.js.map} +0 -0
  1490. /package/dist/{chatgpt-PLKNBNVL.js.map → chatgpt-7W75X3ER.js.map} +0 -0
  1491. /package/dist/{chunk-OZLBLXTK.js.map → chunk-2TK4DEOE.js.map} +0 -0
  1492. /package/dist/{chunk-ZHW3O25C.js.map → chunk-4NDCTLI5.js.map} +0 -0
  1493. /package/dist/{chunk-5NQIFCNX.js.map → chunk-5ARG3CQG.js.map} +0 -0
  1494. /package/dist/{chunk-ZAFR46HG.js.map → chunk-5Z2KSVIV.js.map} +0 -0
  1495. /package/dist/{chunk-EYO62URT.js.map → chunk-6B7VKFS4.js.map} +0 -0
  1496. /package/dist/{chunk-W7OFLOZB.js.map → chunk-6G5K6ZC6.js.map} +0 -0
  1497. /package/dist/{chunk-RJAQEZVD.js.map → chunk-73QKIIIR.js.map} +0 -0
  1498. /package/dist/{chunk-YS6PCTPS.js.map → chunk-75FDTDLH.js.map} +0 -0
  1499. /package/dist/{chunk-NGT6MARJ.js.map → chunk-7J6EHOH6.js.map} +0 -0
  1500. /package/dist/{chunk-TD44SXQX.js.map → chunk-7OFNN4CT.js.map} +0 -0
  1501. /package/dist/{chunk-LDVMMLRA.js.map → chunk-C6U6UDHJ.js.map} +0 -0
  1502. /package/dist/{chunk-6FBZ5E6L.js.map → chunk-DIY6QR3E.js.map} +0 -0
  1503. /package/dist/{chunk-F3WFP75M.js.map → chunk-EFSYTROP.js.map} +0 -0
  1504. /package/dist/{chunk-4MU3U3SO.js.map → chunk-FEXDI4NM.js.map} +0 -0
  1505. /package/dist/{chunk-YMOVI3WT.js.map → chunk-FHXIEMCG.js.map} +0 -0
  1506. /package/dist/{chunk-R34LJSPM.js.map → chunk-H26L3OQY.js.map} +0 -0
  1507. /package/dist/{chunk-NMMKTPGI.js.map → chunk-HIPDMQZ6.js.map} +0 -0
  1508. /package/dist/{chunk-FRVROFI6.js.map → chunk-HYCIBVDW.js.map} +0 -0
  1509. /package/dist/{chunk-BSUN6JMU.js.map → chunk-IFWP3ZDO.js.map} +0 -0
  1510. /package/dist/{chunk-LQ4HBQ2B.js.map → chunk-IXKEWS7X.js.map} +0 -0
  1511. /package/dist/{chunk-DPEQVHTX.js.map → chunk-JERXV5A3.js.map} +0 -0
  1512. /package/dist/{chunk-TCSPJQ2X.js.map → chunk-KLNKEVIY.js.map} +0 -0
  1513. /package/dist/{chunk-JMXBUIVI.js.map → chunk-KNY76UGC.js.map} +0 -0
  1514. /package/dist/{chunk-IMZIECST.js.map → chunk-KWAOTV7F.js.map} +0 -0
  1515. /package/dist/{chunk-A57AHUNA.js.map → chunk-LERTEZST.js.map} +0 -0
  1516. /package/dist/{chunk-73MCYA5Z.js.map → chunk-LL2CD5WU.js.map} +0 -0
  1517. /package/dist/{chunk-UA5EUJXV.js.map → chunk-LO6GEJ4Z.js.map} +0 -0
  1518. /package/dist/{chunk-IRHNWYDT.js.map → chunk-LS5MTRFI.js.map} +0 -0
  1519. /package/dist/{chunk-F7HBCFUA.js.map → chunk-LZ73CZGP.js.map} +0 -0
  1520. /package/dist/{chunk-NGYKF4T6.js.map → chunk-MELOSESI.js.map} +0 -0
  1521. /package/dist/{chunk-SXRSLUW7.js.map → chunk-NAWWC5I3.js.map} +0 -0
  1522. /package/dist/{chunk-FFZBW4CC.js.map → chunk-NPE7EWBE.js.map} +0 -0
  1523. /package/dist/{chunk-JH7NHC5W.js.map → chunk-OKG6GX2F.js.map} +0 -0
  1524. /package/dist/{chunk-WAQYXH2U.js.map → chunk-PBA3YCZA.js.map} +0 -0
  1525. /package/dist/{chunk-AWICKT2B.js.map → chunk-PWGWMIIJ.js.map} +0 -0
  1526. /package/dist/{chunk-F6NJAHAZ.js.map → chunk-QHLB5V7J.js.map} +0 -0
  1527. /package/dist/{chunk-TTFTS2SO.js.map → chunk-QJE6ZYGI.js.map} +0 -0
  1528. /package/dist/{chunk-Y4JR4RDM.js.map → chunk-QSN5MZGS.js.map} +0 -0
  1529. /package/dist/{chunk-HWWPDUZM.js.map → chunk-RSW6QJPH.js.map} +0 -0
  1530. /package/dist/{chunk-LYZVLKRA.js.map → chunk-SBMIQDCX.js.map} +0 -0
  1531. /package/dist/{chunk-BDD2ILIT.js.map → chunk-STIB5DR5.js.map} +0 -0
  1532. /package/dist/{chunk-A3PEJ3V3.js.map → chunk-TBEUMOEL.js.map} +0 -0
  1533. /package/dist/{chunk-RPFBZHHE.js.map → chunk-TD2P4HBP.js.map} +0 -0
  1534. /package/dist/{chunk-CBEL3P22.js.map → chunk-VBHDZSI5.js.map} +0 -0
  1535. /package/dist/{chunk-6YWRJMGR.js.map → chunk-VFIOJD5M.js.map} +0 -0
  1536. /package/dist/{chunk-QYOPQRLI.js.map → chunk-VVZBBKRC.js.map} +0 -0
  1537. /package/dist/{chunk-G32FXVQ6.js.map → chunk-W3B4BHQU.js.map} +0 -0
  1538. /package/dist/{chunk-Q7UF4ERB.js.map → chunk-WS2GMOSG.js.map} +0 -0
  1539. /package/dist/{chunk-EPK2GYLV.js.map → chunk-XBOK23HI.js.map} +0 -0
  1540. /package/dist/{chunk-HA5D6US2.js.map → chunk-XG3XCHN6.js.map} +0 -0
  1541. /package/dist/{chunk-L4DOL7L7.js.map → chunk-XL3BMSYG.js.map} +0 -0
  1542. /package/dist/{chunk-ECXNE6RJ.js.map → chunk-XYMPS526.js.map} +0 -0
  1543. /package/dist/{chunk-WWD4PITU.js.map → chunk-YBMVHGY3.js.map} +0 -0
  1544. /package/dist/{client-XKDFFS7O.js.map → client-VHN32ZRE.js.map} +0 -0
  1545. /package/dist/{connect-ATGYJNG4.js.map → connect-TA5W6YGW.js.map} +0 -0
  1546. /package/dist/{customers-ACRYXALZ.js.map → customers-4RJGRR2Y.js.map} +0 -0
  1547. /package/dist/{env-ODWJOKNV.js.map → env-KIP2J2UB.js.map} +0 -0
  1548. /package/dist/{fit-5WZ6NVSF.js.map → fit-KXHYKIA4.js.map} +0 -0
  1549. /package/dist/{fonts-7U7I2TWV.js.map → fonts-NTOQS2KU.js.map} +0 -0
  1550. /package/dist/{ga4-QPEXE6YG.js.map → ga4-UDQ2HA2J.js.map} +0 -0
  1551. /package/dist/{gsc-LC5ADBA3.js.map → gsc-P3QYGDV2.js.map} +0 -0
  1552. /package/dist/{ideas-NEBJBIBM.js.map → ideas-PU7IAX6F.js.map} +0 -0
  1553. /package/dist/{images-ASWWS5TH.js.map → images-QI2HTX6B.js.map} +0 -0
  1554. /package/dist/{ingest-X7UPOCKP.js.map → ingest-BYJNFOOT.js.map} +0 -0
  1555. /package/dist/{inspiration-64DY3QWN.js.map → inspiration-I4MMKAWA.js.map} +0 -0
  1556. /package/dist/{learn-D4D75X2Y.js.map → learn-HZU3QWNN.js.map} +0 -0
  1557. /package/dist/{logo-7O7VW5R3.js.map → logo-2IP663QO.js.map} +0 -0
  1558. /package/dist/{lookup-Z2X5WAO6.js.map → lookup-XK45W2SH.js.map} +0 -0
  1559. /package/dist/{media-7P66TUIR.js.map → media-M7E6V2XU.js.map} +0 -0
  1560. /package/dist/{media-sources-427U333M.js.map → media-sources-3D246I3O.js.map} +0 -0
  1561. /package/dist/{meta-JH4FHVNX.js.map → meta-EZ4SY25M.js.map} +0 -0
  1562. /package/dist/{output-ZLXBAA4O.js.map → output-RAH3TSIL.js.map} +0 -0
  1563. /package/dist/{performance-SOMZNPIG.js.map → performance-7LQQCEAW.js.map} +0 -0
  1564. /package/dist/{reddit-OPHQFRRC.js.map → reddit-INGPFGP4.js.map} +0 -0
  1565. /package/dist/{research-MG3MESKH.js.map → research-PA53M335.js.map} +0 -0
  1566. /package/dist/{run-PZF26R6H.js.map → run-2IM2QOCI.js.map} +0 -0
  1567. /package/dist/{scheduled-agents-CIEAOWM6.js.map → scheduled-agents-2NCGSD76.js.map} +0 -0
  1568. /package/dist/{search-FORHMB7P.js.map → search-XUIVHGAY.js.map} +0 -0
  1569. /package/dist/{select-52K6KZGY.js.map → select-ZWDEVAH2.js.map} +0 -0
  1570. /package/dist/{shared-VMV44VPB.js.map → shared-HJDFNID4.js.map} +0 -0
  1571. /package/dist/{sources-BQNCLGWT.js.map → sources-UGMZFZ2E.js.map} +0 -0
  1572. /package/dist/{stats-TO3J2FU6.js.map → stats-NNXZMPZR.js.map} +0 -0
  1573. /package/dist/{studio-LHH62SZC.js.map → studio-HUEBE6DS.js.map} +0 -0
  1574. /package/dist/{sync-definition-LBPI7P5F.js.map → sync-definition-YBDM7D4M.js.map} +0 -0
  1575. /package/dist/{tag-manager-D3YNI7JG.js.map → tag-manager-HREEYGVM.js.map} +0 -0
  1576. /package/dist/{tags-OOQV4G2Y.js.map → tags-R3K35KTL.js.map} +0 -0
  1577. /package/dist/{testimonials-OIZMXEYZ.js.map → testimonials-5QGCPZ6K.js.map} +0 -0
  1578. /package/dist/{videos-7SB2CLZW.js.map → videos-GIYDCCKR.js.map} +0 -0
  1579. /package/dist/{viewer-check-NGIMC2BR.js.map → viewer-check-VN2JK2LW.js.map} +0 -0
  1580. /package/dist/{winning-ads-XQZ6HEX5.js.map → winning-ads-7QWEIMRU.js.map} +0 -0
  1581. /package/dist/{x-BLTCL6L3.js.map → x-OEAKQBB7.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../api/src/accounts/crm.ts","../../api/src/accounts/index.ts"],"sourcesContent":["/**\n * The CRM a client sends Baker itself, for Account insights when Baker cannot\n * read the CRM (Salesforce, Pipedrive, a home-grown one).\n *\n * The client decides what Baker sees: companies and deals only, each field but\n * the id optional, and anything that names a person refused rather than\n * ignored — so a careless export cannot hand over contacts by accident.\n *\n * One judge for every door: the HTTP endpoint, the dashboard's spreadsheet\n * upload and the agent's `baker accounts crm check` all run a record through\n * `judgeCrmBatch`, so the three cannot disagree about what is accepted.\n */\n\nimport { z } from \"zod\";\nimport type { FieldSpec } from \"../event-ingest/fields\";\nimport { INGEST_MODE_HEADER, INGEST_MODES } from \"../event-ingest/mode\";\n\nexport const CRM_DEAL_STATUSES = [\"open\", \"won\", \"lost\"] as const;\nexport type CrmDealStatus = (typeof CRM_DEAL_STATUSES)[number];\n\nconst text = (max: number) => z.string().trim().max(max);\n\n/** A field the record needs, flagged so the rejection reads `missing_field` rather than `invalid_field`. */\nfunction needed(context: z.RefinementCtx, field: string, message: string): void {\n context.addIssue({ code: \"custom\", path: [field], message, params: { missing: true } });\n}\n\n/** `2026-03-15`, with a time and a zone or without; anything looser (`March 5`, `03.04.2026`) is not taken. */\nconst ISO_INSTANT = /^(\\d{4}-\\d{2}-\\d{2})([T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)?(Z|[+-]\\d{2}:?\\d{2})?$/;\n\n/** A day or an instant, as ISO 8601; read as UTC when it has no zone. */\nconst instantSchema = z.string().transform((value, context) => {\n const slashed = /^(\\d{1,2})[/.](\\d{1,2})[/.](\\d{4})$/.exec(value);\n if (slashed) {\n const [, first, second, year] = slashed;\n context.addIssue({\n code: \"custom\",\n message: `${value} could be either day first or month first — write it as ${year}-${second?.padStart(2, \"0\")}-${first?.padStart(2, \"0\")} or ${year}-${first?.padStart(2, \"0\")}-${second?.padStart(2, \"0\")}`,\n });\n return z.NEVER;\n }\n const iso = ISO_INSTANT.exec(value);\n const ms = iso ? Date.parse(`${iso[1]}${iso[2]?.replace(\" \", \"T\") ?? \"T00:00:00\"}${iso[3] ?? \"Z\"}`) : Number.NaN;\n if (!Number.isFinite(ms)) {\n context.addIssue({ code: \"custom\", message: `${value} is not a date — use YYYY-MM-DD or an ISO 8601 time` });\n return z.NEVER;\n }\n return new Date(ms).toISOString();\n});\n\nconst amountSchema = z.union([z.number(), z.string().trim()]).transform((value, context) => {\n const amount = typeof value === \"number\" ? value : Number(value);\n if (!Number.isFinite(amount) || amount < 0 || (typeof value === \"string\" && value === \"\")) {\n context.addIssue({ code: \"custom\", message: `${value} is not an amount — send a number like 12000.50` });\n return z.NEVER;\n }\n return amount;\n});\n\nconst companyFields = z.strictObject({\n id: text(128).optional(),\n name: text(300).optional(),\n domain: text(253).optional(),\n linkedinPage: text(300).optional(),\n deleted: z.boolean().optional(),\n});\n\n/**\n * A company is known by its CRM id — or, for a plain list of target companies\n * with no CRM behind it, by its website or LinkedIn page, which Baker turns\n * into the id (`domain:acme.com`) a deal sent with that website files under.\n */\nconst companySchema = companyFields.superRefine((company, context) => {\n if (company.id || company.domain || company.linkedinPage) return;\n needed(context, \"id\", \"needed — or the company's website or LinkedIn page, to know it by\");\n});\n\nconst dealFields = z.strictObject({\n id: text(128).min(1),\n companyId: text(128).optional(),\n companyDomain: text(253).optional(),\n /** The company's name, for a deal sent with `companyDomain` and no company of its own. */\n companyName: text(300).optional(),\n /** The company's LinkedIn page, likewise — the surest match of all. */\n companyLinkedinPage: text(300).optional(),\n name: text(300).optional(),\n amount: amountSchema.nullable().optional(),\n currency: z\n .string()\n .trim()\n .regex(/^[A-Za-z]{3}$/, \"use a three-letter currency code like EUR\")\n .transform((code) => code.toUpperCase())\n .optional(),\n pipeline: text(128).optional(),\n stage: text(128).optional(),\n status: z.enum(CRM_DEAL_STATUSES).optional(),\n createdAt: instantSchema.optional(),\n closedAt: instantSchema.nullable().optional(),\n deleted: z.boolean().optional(),\n});\n\n/**\n * A deal is dated by when it was created (the pipeline it joined) and, once\n * won or lost, by when it closed (the revenue it became). A deletion needs\n * only its id.\n */\nconst dealSchema = dealFields.superRefine((deal, context) => {\n if (deal.deleted === true) return;\n if (deal.createdAt === undefined) needed(context, \"createdAt\", \"needed — the day the deal was created\");\n if ((deal.status === \"won\" || deal.status === \"lost\") && !deal.closedAt) {\n needed(context, \"closedAt\", \"needed when status is won or lost\");\n }\n});\n\nexport interface CrmCompanyInput {\n /** Empty when the company was sent without one: the store knows it by its website or LinkedIn page. */\n id: string;\n name: string;\n domain: string;\n linkedinPage: string;\n deleted: boolean;\n}\n\nexport interface CrmDealInput {\n id: string;\n companyId: string;\n companyDomain: string;\n companyName: string;\n companyLinkedinPage: string;\n name: string;\n amount: number | null;\n currency: string;\n pipeline: string;\n stage: string;\n status: CrmDealStatus | null;\n createdAt: string | null;\n closedAt: string | null;\n deleted: boolean;\n}\n\nexport const CRM_REJECTION_CODES = [\"personal_data\", \"unknown_field\", \"missing_field\", \"invalid_field\"] as const;\nexport type CrmRejectionCode = (typeof CRM_REJECTION_CODES)[number];\n\nexport interface CrmRejection {\n kind: \"company\" | \"deal\";\n index: number;\n id: string;\n code: CrmRejectionCode;\n message: string;\n}\n\nexport interface JudgedCrmBatch {\n companies: CrmCompanyInput[];\n deals: CrmDealInput[];\n rejected: CrmRejection[];\n}\n\nconst PERSON_FIELD = /e-?mail|phone|mobile|first_?name|last_?name|full_?name|contact|person|owner|address|birth/i;\nconst EMAIL_IN_TEXT = /[^\\s@]+@[^\\s@]+\\.[^\\s@]+/;\n\nconst FIELDS = {\n company: Object.keys(companyFields.shape),\n deal: Object.keys(dealFields.shape),\n} as const;\n\n/** A person in the record: a field named for one, or an email address in any value. */\nfunction personIn(raw: unknown): string | null {\n if (raw === null || typeof raw !== \"object\") return null;\n for (const [field, value] of Object.entries(raw)) {\n if (PERSON_FIELD.test(field)) return `${field} names a person — Baker takes companies and deals, never people`;\n if (typeof value === \"string\" && EMAIL_IN_TEXT.test(value)) {\n return `${field} holds an email address — Baker takes companies and deals, never people`;\n }\n }\n return null;\n}\n\nfunction issueMessage(issue: z.core.$ZodIssue): string {\n const field = issue.path.join(\".\");\n return field === \"\" ? issue.message : `${field}: ${issue.message}`;\n}\n\nfunction rejectionFor(\n kind: \"company\" | \"deal\",\n issues: readonly z.core.$ZodIssue[],\n): Pick<CrmRejection, \"code\" | \"message\"> {\n const unknown = issues.find((issue) => issue.code === \"unrecognized_keys\");\n if (unknown && unknown.code === \"unrecognized_keys\") {\n return {\n code: \"unknown_field\",\n message: `unknown field ${unknown.keys.join(\", \")} — send only ${FIELDS[kind].join(\", \")}`,\n };\n }\n const missing = issues.find(\n (issue) =>\n (issue.code === \"invalid_type\" && issue.input === undefined) ||\n (issue.code === \"custom\" && issue.params?.missing === true),\n );\n return {\n code: missing ? \"missing_field\" : \"invalid_field\",\n message: issues.map(issueMessage).join(\"; \"),\n };\n}\n\nfunction recordId(raw: unknown): string {\n const id = (raw as { id?: unknown } | null)?.id;\n return typeof id === \"string\" ? id : \"\";\n}\n\nfunction judgeRecord<T>(\n kind: \"company\" | \"deal\",\n schema: z.ZodType<T>,\n raw: unknown,\n index: number,\n rejected: CrmRejection[],\n): T | null {\n const base = { kind, index, id: recordId(raw) };\n const person = personIn(raw);\n if (person !== null) {\n rejected.push({ ...base, code: \"personal_data\", message: person });\n return null;\n }\n const parsed = schema.safeParse(raw);\n if (!parsed.success) {\n rejected.push({ ...base, ...rejectionFor(kind, parsed.error.issues) });\n return null;\n }\n return parsed.data;\n}\n\n/** Each record on its own: one bad row is named in `rejected`, and the rest are kept. */\nexport function judgeCrmBatch(batch: { companies?: readonly unknown[]; deals?: readonly unknown[] }): JudgedCrmBatch {\n const judged: JudgedCrmBatch = { companies: [], deals: [], rejected: [] };\n (batch.companies ?? []).forEach((raw, index) => {\n const company = judgeRecord(\"company\", companySchema, raw, index, judged.rejected);\n if (company === null) return;\n judged.companies.push({\n id: company.id ?? \"\",\n name: company.name ?? \"\",\n domain: company.domain ?? \"\",\n linkedinPage: company.linkedinPage ?? \"\",\n deleted: company.deleted === true,\n });\n });\n (batch.deals ?? []).forEach((raw, index) => {\n const deal = judgeRecord(\"deal\", dealSchema, raw, index, judged.rejected);\n if (deal === null) return;\n judged.deals.push({\n id: deal.id,\n companyId: deal.companyId ?? \"\",\n companyDomain: deal.companyDomain ?? \"\",\n companyName: deal.companyName ?? \"\",\n companyLinkedinPage: deal.companyLinkedinPage ?? \"\",\n name: deal.name ?? \"\",\n amount: deal.amount ?? null,\n currency: deal.currency ?? \"\",\n pipeline: deal.pipeline ?? \"\",\n stage: deal.stage ?? \"\",\n status: deal.status ?? null,\n createdAt: deal.createdAt ?? null,\n closedAt: deal.closedAt ?? null,\n deleted: deal.deleted === true,\n });\n });\n return judged;\n}\n\n/**\n * A CSV's separator, read off its header: Excel writes `;` where the decimal\n * mark is a comma, and parsing with several at once would split `12.000,50`.\n */\nexport function sheetDelimiter(text: string): \",\" | \";\" | \"\\t\" {\n const header = text.split(/\\r?\\n/, 1)[0] ?? \"\";\n const count = (mark: string) => header.split(mark).length - 1;\n return ([\",\", \";\", \"\\t\"] as const).reduce((best, mark) => (count(mark) > count(best) ? mark : best), \",\");\n}\n\n/** A deals export's column, reduced to letters and digits, → the deal field it fills. */\nconst DEAL_COLUMNS: Readonly<Record<string, keyof z.infer<typeof dealFields>>> = {\n dealid: \"id\",\n opportunityid: \"id\",\n recordid: \"id\",\n id: \"id\",\n dealname: \"name\",\n opportunityname: \"name\",\n name: \"name\",\n companyid: \"companyId\",\n accountid: \"companyId\",\n companyname: \"companyName\",\n accountname: \"companyName\",\n company: \"companyName\",\n account: \"companyName\",\n companydomain: \"companyDomain\",\n domain: \"companyDomain\",\n website: \"companyDomain\",\n companywebsite: \"companyDomain\",\n accountwebsite: \"companyDomain\",\n linkedin: \"companyLinkedinPage\",\n linkedinpage: \"companyLinkedinPage\",\n linkedinurl: \"companyLinkedinPage\",\n companylinkedin: \"companyLinkedinPage\",\n companylinkedinurl: \"companyLinkedinPage\",\n companylinkedinpage: \"companyLinkedinPage\",\n linkedincompanypage: \"companyLinkedinPage\",\n linkedincompanyurl: \"companyLinkedinPage\",\n accountlinkedinurl: \"companyLinkedinPage\",\n amount: \"amount\",\n value: \"amount\",\n dealamount: \"amount\",\n dealvalue: \"amount\",\n currency: \"currency\",\n currencycode: \"currency\",\n currencyisocode: \"currency\",\n dealcurrency: \"currency\",\n pipeline: \"pipeline\",\n dealpipeline: \"pipeline\",\n stage: \"stage\",\n stagename: \"stage\",\n dealstage: \"stage\",\n status: \"status\",\n dealstatus: \"status\",\n createdat: \"createdAt\",\n created: \"createdAt\",\n createdate: \"createdAt\",\n createddate: \"createdAt\",\n closedat: \"closedAt\",\n closed: \"closedAt\",\n closedate: \"closedAt\",\n closeddate: \"closedAt\",\n};\n\n/** A company list's column → the company field it fills: a CRM's accounts export or a plain list of target companies. */\nconst COMPANY_COLUMNS: Readonly<Record<string, keyof z.infer<typeof companyFields>>> = {\n id: \"id\",\n companyid: \"id\",\n accountid: \"id\",\n recordid: \"id\",\n organizationid: \"id\",\n name: \"name\",\n company: \"name\",\n companyname: \"name\",\n account: \"name\",\n accountname: \"name\",\n organization: \"name\",\n organizationname: \"name\",\n domain: \"domain\",\n website: \"domain\",\n url: \"domain\",\n websiteurl: \"domain\",\n companydomain: \"domain\",\n companydomainname: \"domain\",\n companywebsite: \"domain\",\n accountwebsite: \"domain\",\n linkedin: \"linkedinPage\",\n linkedinpage: \"linkedinPage\",\n linkedinurl: \"linkedinPage\",\n linkedincompanypage: \"linkedinPage\",\n linkedincompanyurl: \"linkedinPage\",\n linkedincompanypageurl: \"linkedinPage\",\n companylinkedinurl: \"linkedinPage\",\n companylinkedinpage: \"linkedinPage\",\n};\n\nconst columnKey = (column: string) => column.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n\n/**\n * A spreadsheet amount as the contract takes it: `12,000.50`, `12.000,50` and\n * `12 000` all read as the number they mean — the last separator is the\n * decimal point unless exactly three digits follow it, every other one groups\n * thousands. A linked sheet hands over the raw number a formula left\n * (`110.00000000000001`, `1.5e+21`), which keeps its decimals.\n */\nfunction sheetAmount(cell: string): string {\n if (/^-?\\d+(\\.\\d+)?e[+-]?\\d+$/i.test(cell)) return cell;\n const compact = cell.replace(/[\\s\\u00a0]/g, \"\").replace(/[^\\d.,-]/g, \"\");\n const decimal = /[.,](\\d{1,2}|\\d{4,})$/.exec(compact);\n if (!decimal) return compact.replace(/[.,]/g, \"\");\n const whole = compact.slice(0, decimal.index).replace(/[.,]/g, \"\");\n return `${whole}.${decimal[1]}`;\n}\n\n/** What a spreadsheet holds: one row per deal, or one row per company (an accounts export, a target list). */\nexport type CrmSheetKind = \"deals\" | \"companies\";\n\n/**\n * How much a column matters, in the words a sheet's reader is told: a row\n * without a required one is refused or can never count; a recommended one\n * makes the numbers worth reading; an optional one only labels.\n */\nexport type CrmSheetColumnNeed = \"required\" | \"recommended\" | \"optional\";\n\nexport interface CrmSheetColumn {\n /** The header Baker's templates and the sheets it creates use; `crmBatchFromSheet` reads it, and the names CRMs give it. */\n header: string;\n need: CrmSheetColumnNeed;\n /** What goes in it, in a line. */\n takes: string;\n /** The condition on a requirement — \"or Company LinkedIn\" — when it is not absolute. */\n note?: string;\n example: string;\n /** A second example row: a closed deal, or a company without an id. */\n example2?: string;\n}\n\n/**\n * Every column a hand-kept sheet has, required ones first — the one list the\n * upload's and the linked sheet's column guides, the templates and the sheet\n * Baker creates are all drawn from, so none of them can disagree about what\n * is needed.\n */\nexport const CRM_SHEET_COLUMNS: Readonly<Record<CrmSheetKind, readonly CrmSheetColumn[]>> = {\n deals: [\n {\n header: \"Deal ID\",\n need: \"required\",\n takes: \"Your CRM's id for the deal. The same id again updates the row instead of adding one.\",\n example: \"deal-001\",\n example2: \"deal-002\",\n },\n {\n header: \"Created date\",\n need: \"required\",\n takes: \"The day the deal was created, like 2026-06-15. It dates the deal as pipeline.\",\n example: \"2026-06-15\",\n example2: \"2026-02-01\",\n },\n {\n header: \"Website\",\n need: \"required\",\n takes:\n \"The website of the deal's company, like acme.com. It is how Baker finds the company among those your ads reached.\",\n note: \"or Company LinkedIn\",\n example: \"acme.com\",\n example2: \"globex.com\",\n },\n {\n header: \"Amount\",\n need: \"recommended\",\n takes: \"The deal's value, like 24000. Without it the deal counts but adds no value.\",\n example: \"24000\",\n example2: \"8000\",\n },\n {\n header: \"Currency\",\n need: \"recommended\",\n takes: \"Three letters: EUR, USD, GBP…\",\n example: \"EUR\",\n example2: \"EUR\",\n },\n {\n header: \"Status\",\n need: \"recommended\",\n takes: \"open, won or lost. Without it, you choose which stages mean won and lost.\",\n example: \"open\",\n example2: \"won\",\n },\n {\n header: \"Close date\",\n need: \"recommended\",\n takes: \"The day it was won or lost. Needed once Status is won or lost.\",\n example: \"\",\n example2: \"2026-04-20\",\n },\n {\n header: \"Company\",\n need: \"optional\",\n takes: \"The company's name, as the Accounts screen shows it.\",\n example: \"Acme Inc\",\n example2: \"Globex\",\n },\n {\n header: \"Company LinkedIn\",\n need: \"optional\",\n takes: \"The company's LinkedIn page. The surest match of all, and enough without a Website.\",\n example: \"https://www.linkedin.com/company/acme-inc\",\n example2: \"\",\n },\n {\n header: \"Deal name\",\n need: \"optional\",\n takes: \"The deal's name.\",\n example: \"Acme annual plan\",\n example2: \"Globex pilot\",\n },\n {\n header: \"Pipeline\",\n need: \"optional\",\n takes: \"Its pipeline, if you use several.\",\n example: \"Sales\",\n example2: \"Sales\",\n },\n { header: \"Stage\", need: \"optional\", takes: \"Its stage.\", example: \"Proposal\", example2: \"Closed Won\" },\n ],\n companies: [\n {\n header: \"Website\",\n need: \"required\",\n takes: \"The company's website, like acme.com. It is how Baker finds the company among those your ads reached.\",\n note: \"or LinkedIn page\",\n example: \"acme.com\",\n example2: \"globex.com\",\n },\n {\n header: \"Company name\",\n need: \"recommended\",\n takes: \"The company's name, as the Accounts screen shows it.\",\n example: \"Acme Inc\",\n example2: \"Globex\",\n },\n {\n header: \"LinkedIn page\",\n need: \"optional\",\n takes: \"The company's LinkedIn page. The surest match of all, and enough without a Website.\",\n example: \"https://www.linkedin.com/company/acme-inc\",\n example2: \"\",\n },\n {\n header: \"Company ID\",\n need: \"optional\",\n takes: \"Your CRM's id for the company. Only needed when your deals name their company by this id.\",\n example: \"acct-001\",\n example2: \"\",\n },\n ],\n};\n\nfunction sheetTemplate(columns: readonly CrmSheetColumn[]): string {\n return [\n columns.map((column) => column.header).join(\",\"),\n columns.map((column) => column.example).join(\",\"),\n columns.map((column) => column.example2 ?? \"\").join(\",\"),\n \"\",\n ].join(\"\\n\");\n}\n\n/** A sheet to fill in, for a client exporting by hand: every column Baker reads, and two example rows. */\nexport const CRM_SHEET_TEMPLATE = sheetTemplate(CRM_SHEET_COLUMNS.deals);\n\n/**\n * A company list to fill in: a CRM's accounts, or simply the companies the\n * client sells to. The id is optional — a company without one is known by its\n * website, so a deals sheet naming the same website lands on it.\n */\nexport const CRM_COMPANY_SHEET_TEMPLATE = sheetTemplate(CRM_SHEET_COLUMNS.companies);\n\nexport interface CrmSheet {\n kind: CrmSheetKind;\n batch: { companies?: Array<Record<string, string>>; deals?: Array<Record<string, string>> };\n /** Columns the sheet has that Baker does not take — left behind, never sent. */\n ignoredColumns: string[];\n}\n\n/**\n * Columns only a deals export has. A company export carries a created date\n * and often a lifecycle stage too, so neither decides it.\n */\nconst DEAL_ONLY = new Set([\"id\", \"name\", \"amount\", \"pipeline\", \"stage\", \"status\", \"closedAt\"]);\nconst DEAL_ONLY_KEYS = new Set(\n Object.entries(DEAL_COLUMNS)\n .filter(([key, field]) => DEAL_ONLY.has(field) && COMPANY_COLUMNS[key] === undefined)\n .map(([key]) => key),\n);\n\n/** Deals when any column is one only a deals export has; a company list otherwise. */\nexport function sheetKind(columns: readonly string[]): CrmSheetKind {\n return columns.some((column) => DEAL_ONLY_KEYS.has(columnKey(column))) ? \"deals\" : \"companies\";\n}\n\nconst DATE_FIELDS = new Set([\"createdAt\", \"closedAt\"]);\nconst SLASHED_DAY = /^(\\d{1,2})[/.](\\d{1,2})[/.](\\d{4})$/;\n/** Google Sheets' and Excel's day count starts here: 1 is 31 December 1899. */\nconst SHEET_EPOCH_MS = Date.UTC(1899, 11, 30);\nconst DAY_MS = 86_400_000;\n\n/** How a column writes `12/03/2026`: told by any day past 12 in it; null while every one could be either. */\nfunction slashOrder(cells: readonly string[]): \"dmy\" | \"mdy\" | null {\n for (const cell of cells) {\n const parts = SLASHED_DAY.exec(cell);\n if (!parts) continue;\n if (Number(parts[1]) > 12) return \"dmy\";\n if (Number(parts[2]) > 12) return \"mdy\";\n }\n return null;\n}\n\n/**\n * A spreadsheet's day as the contract takes it: a Sheets or Excel day number\n * (46096, what a date cell holds) or `15/03/2026` / `03/15/2026`, read the way\n * the rest of its column shows. A column whose every day could be either is\n * left as written, and the judge asks for YYYY-MM-DD.\n */\nfunction sheetDate(cell: string, order: \"dmy\" | \"mdy\" | null): string {\n if (/^\\d{5}(\\.\\d+)?$/.test(cell)) {\n return new Date(SHEET_EPOCH_MS + Math.round(Number(cell) * DAY_MS)).toISOString().slice(0, 10);\n }\n const parts = SLASHED_DAY.exec(cell);\n if (!parts || order === null) return cell;\n const [, first = \"\", second = \"\", year] = parts;\n const [day, month] = order === \"dmy\" ? [first, second] : [second, first];\n return `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\n}\n\nfunction sheetCell(field: string, cell: string, order: \"dmy\" | \"mdy\" | null): string {\n if (field === \"amount\") return sheetAmount(cell);\n if (field === \"status\") return cell.toLowerCase();\n if (DATE_FIELDS.has(field)) return sheetDate(cell, order);\n return cell;\n}\n\nfunction sheetRecords(\n rows: ReadonlyArray<Record<string, string>>,\n map: Readonly<Record<string, string>>,\n): Array<Record<string, string>> {\n const cells = (field: string) =>\n rows.flatMap((row) =>\n Object.entries(row)\n .filter(([column]) => map[columnKey(column)] === field)\n .map(([, cell]) => String(cell ?? \"\").trim()),\n );\n const order = slashOrder([...DATE_FIELDS].flatMap(cells));\n return rows.map((row) => {\n const record: Record<string, string> = {};\n for (const [column, raw] of Object.entries(row)) {\n const field = map[columnKey(column)];\n const cell = String(raw ?? \"\").trim();\n if (field === undefined || cell === \"\" || record[field] !== undefined) continue;\n record[field] = sheetCell(field, cell, order);\n }\n return record;\n });\n}\n\n/**\n * A spreadsheet from any CRM — a deals export or a company list, told apart\n * by its columns (`sheetKind`), or as `kind` says — as a batch the judge\n * reads. Columns are recognised by name (Salesforce's, HubSpot's and plain\n * English alike); every other column is left behind, so a sheet with owners'\n * emails in it sends no email.\n */\nexport function crmBatchFromSheet(rows: ReadonlyArray<Record<string, string>>, kind?: CrmSheetKind): CrmSheet {\n const columns = [...new Set(rows.flatMap((row) => Object.keys(row)))];\n const read = kind ?? sheetKind(columns);\n const map: Readonly<Record<string, string>> = read === \"deals\" ? DEAL_COLUMNS : COMPANY_COLUMNS;\n const ignoredColumns = columns.filter((column) => map[columnKey(column)] === undefined);\n const records = sheetRecords(rows, map);\n return {\n kind: read,\n batch: read === \"deals\" ? { deals: records } : { companies: records },\n ignoredColumns,\n };\n}\n\n// ---------------------------------------------------------------------------\n// The wire: where a client's system sends, and what it hears back\n// ---------------------------------------------------------------------------\n\nexport const CRM_PUSH_PATH = \"/v1/accounts/crm\";\n\n/** Companies and deals together, per request. */\nexport const CRM_PUSH_BATCH_MAX = 500;\n\n/** The address to show a developer: the branded host when there is one, the Convex site otherwise. */\nexport function crmPushUrl(brandedUrl: string | undefined, convexSiteUrl: string): string {\n return `${(brandedUrl || convexSiteUrl).replace(/\\/$/, \"\")}${CRM_PUSH_PATH}`;\n}\n\n/**\n * The body's structure only; every record is judged on its own by\n * `judgeCrmBatch`, so one bad row never takes the batch down.\n */\nexport const crmPushRequestSchema = z\n .strictObject({\n companies: z.array(z.unknown()).optional(),\n deals: z.array(z.unknown()).optional(),\n })\n .refine((body) => (body.companies?.length ?? 0) + (body.deals?.length ?? 0) > 0, {\n message: \"send at least one company or deal\",\n })\n .refine((body) => (body.companies?.length ?? 0) + (body.deals?.length ?? 0) <= CRM_PUSH_BATCH_MAX, {\n message: `at most ${CRM_PUSH_BATCH_MAX} companies and deals per request — split the batch`,\n });\nexport type CrmPushRequest = z.infer<typeof crmPushRequestSchema>;\n\nexport const crmRejectionSchema = z.object({\n kind: z.enum([\"company\", \"deal\"]),\n index: z.number().int().nonnegative(),\n id: z.string(),\n code: z.enum(CRM_REJECTION_CODES),\n message: z.string(),\n});\n\nexport const crmPushResponseSchema = z.object({\n /** Echoed from `X-Baker-Mode`: a `test` request is judged in full and stores nothing. */\n mode: z.enum(INGEST_MODES),\n received: z.object({ companies: z.number().int(), deals: z.number().int() }),\n /** Passed the checks: stored in a live send, only judged in a test. */\n accepted: z.object({ companies: z.number().int(), deals: z.number().int() }),\n deleted: z.object({ companies: z.number().int(), deals: z.number().int() }),\n rejected: z.array(crmRejectionSchema),\n});\nexport type CrmPushResponse = z.infer<typeof crmPushResponseSchema>;\n\n/** What a sent CRM holds now, per pipeline and stage — what the setup shows and won/lost is chosen from. */\nexport const crmContentsSchema = z.object({\n companies: z.number().int(),\n deals: z.number().int(),\n stages: z.array(\n z.object({\n pipeline: z.string(),\n stage: z.string(),\n deals: z.number().int(),\n /** Sent as `status: won`. */\n won: z.number().int(),\n /** Sent as `status: lost`. */\n lost: z.number().int(),\n }),\n ),\n});\nexport type CrmContents = z.infer<typeof crmContentsSchema>;\n\n/** How a send arrived: their system posting, a person's upload, or a linked Google Sheet Baker read. */\nexport const CRM_SEND_VIAS = [\"api\", \"upload\", \"sheet\"] as const;\nexport type CrmSendVia = (typeof CRM_SEND_VIAS)[number];\n\nexport const crmPushSummarySchema = z.object({\n at: z.number(),\n via: z.enum(CRM_SEND_VIAS),\n companies: z.number().int(),\n deals: z.number().int(),\n deleted: z.number().int(),\n rejected: z.number().int(),\n samples: z.array(\n z.object({ kind: z.enum([\"company\", \"deal\"]), id: z.string(), code: z.string(), message: z.string() }),\n ),\n});\n\n/** A linked sheet's address in Google Sheets. */\nexport const spreadsheetUrl = (spreadsheetId: string) =>\n `https://docs.google.com/spreadsheets/d/${encodeURIComponent(spreadsheetId)}/edit`;\n\n/**\n * A Google Sheet the client linked: Baker reads it again every night and when\n * asked, and it is the whole truth for what it brought — a row gone from the\n * sheet is gone from Baker.\n */\nexport const crmSheetLinkSchema = z.object({\n id: z.string(),\n spreadsheetName: z.string(),\n /** Where the sheet opens — for a person, or a scenario that writes its rows. */\n url: z.string().optional(),\n tab: z.string(),\n kind: z.enum([\"deals\", \"companies\"]),\n lastRead: z\n .object({\n at: z.number(),\n ok: z.boolean(),\n companies: z.number().int(),\n deals: z.number().int(),\n /** Records the sheet no longer has, removed from Baker. */\n removed: z.number().int(),\n rejected: z.number().int(),\n /** Why the read failed or what was held back, in words. */\n message: z.string().optional(),\n })\n .nullable(),\n});\nexport type CrmSheetLink = z.infer<typeof crmSheetLinkSchema>;\n\n/** Linked sheets per company; each read is one Google request and a store write. */\nexport const CRM_SHEET_LINKS_MAX = 5;\n\n/** `baker accounts crm status`: where deals come from, what arrived last, what the store holds. */\nexport const accountsCrmStatusResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /**\n * Always true, for CLIs from when Account insights was a per-company\n * switch: they read its absence as \"switched off\". Drop it once no\n * Runtime runs one of them.\n */\n enabled: z.literal(true).optional(),\n /** `hubspot` (Baker reads it), `api` (the client sends it), or null before anyone chose. */\n source: z.enum([\"hubspot\", \"api\"]).nullable(),\n /** Where a client's system sends. */\n url: z.string(),\n lastLive: crmPushSummarySchema.nullable(),\n lastTest: crmPushSummarySchema.nullable(),\n /** Google Sheets Baker reads every night, with how the last read went. */\n sheets: z.array(crmSheetLinkSchema),\n /** What the sent CRM holds; null unless the source is `api`. */\n contents: crmContentsSchema.nullable(),\n }),\n});\nexport type AccountsCrmStatusResponse = z.infer<typeof accountsCrmStatusResponseSchema>;\n\n/** `baker accounts crm sheet`: the deals sheet for LinkedIn's Account insights, made in the client's Google Drive. */\nexport const accountsCrmSheetRequestSchema = z.object({\n /** The Google Drive connection to make it with, when the company has more than one. */\n account: z.string().optional(),\n});\nexport type AccountsCrmSheetRequest = z.infer<typeof accountsCrmSheetRequestSchema>;\n\nexport const accountsCrmSheetResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /** False when the company already had the sheet: it is handed back, never made twice. */\n created: z.boolean(),\n spreadsheetName: z.string(),\n url: z.string(),\n tabs: z.array(z.string()),\n }),\n});\nexport type AccountsCrmSheetResponse = z.infer<typeof accountsCrmSheetResponseSchema>;\n\n/** What the curl sends: one company, one deal of it — the shortest body that reads as a real one. */\nexport const CRM_PUSH_EXAMPLE = {\n companies: [{ id: \"acct-001\", name: \"Acme Inc\", domain: \"acme.com\", linkedinPage: \"acme-inc\" }],\n deals: [\n {\n id: \"deal-001\",\n companyId: \"acct-001\",\n name: \"Acme — annual plan\",\n amount: 24000,\n currency: \"EUR\",\n stage: \"Proposal\",\n status: \"open\",\n createdAt: \"2026-06-15\",\n },\n ],\n} as const;\n\nconst MODE_HINT = `\\n# Check it first: add -H '${INGEST_MODE_HEADER}: test' — judged the same way, nothing stored.`;\n\nexport function crmPushCurl(url: string, apiKey: string): string {\n return (\n [\n `curl -X POST ${url} \\\\`,\n ` -H 'Authorization: Bearer ${apiKey}' \\\\`,\n ` -H 'Content-Type: application/json' \\\\`,\n ` -d '${JSON.stringify(CRM_PUSH_EXAMPLE)}'`,\n ].join(\"\\n\") + MODE_HINT\n );\n}\n\nconst PEOPLE_NOTE = \"Anything naming a person — a contact, an owner, an email or phone — is refused, never stored.\";\n\nexport const CRM_COMPANY_FIELDS: readonly FieldSpec[] = [\n {\n name: \"id\",\n need: \"conditional\",\n takes: \"Your CRM's id for the company (1–128 characters).\",\n note: \"Without one, Baker knows the company by its domain (or LinkedIn page) — fine for a plain list of target companies.\",\n },\n { name: \"name\", need: \"optional\", takes: \"The company's name, as the Accounts screen shows it.\" },\n {\n name: \"domain\",\n need: \"optional\",\n takes: \"Its website — acme.com or https://www.acme.com both work.\",\n note: \"The main way a company is matched to the LinkedIn companies your ads reached. Send it whenever you have it.\",\n },\n {\n name: \"linkedinPage\",\n need: \"optional\",\n takes: \"Its LinkedIn page: the URL or the part after /company/.\",\n note: \"The surest match of all when the website is shared or missing.\",\n },\n { name: \"deleted\", need: \"optional\", takes: \"true to remove a company sent before. Only the id is needed.\" },\n];\n\nexport const CRM_DEAL_FIELDS: readonly FieldSpec[] = [\n {\n name: \"id\",\n need: \"required\",\n takes: \"Your CRM's id for the deal (1–128 characters). Sending it again updates it.\",\n },\n {\n name: \"createdAt\",\n need: \"required\",\n takes: \"The day it was created: 2026-06-15 or an ISO 8601 time.\",\n note: \"What dates it as pipeline.\",\n },\n {\n name: \"companyId\",\n need: \"conditional\",\n takes: \"The id of its company, as sent in companies.\",\n note: \"Or send companyDomain (and companyName) instead and skip companies altogether. Use one way consistently. A deal with neither is kept but cannot be influenced.\",\n },\n { name: \"companyDomain\", need: \"conditional\", takes: \"Its company's website, when you send no companies.\" },\n { name: \"companyName\", need: \"optional\", takes: \"Its company's name, with companyDomain.\" },\n {\n name: \"companyLinkedinPage\",\n need: \"optional\",\n takes: \"Its company's LinkedIn page, with companyDomain: the surest match.\",\n },\n { name: \"name\", need: \"optional\", takes: \"The deal's name.\" },\n {\n name: \"amount\",\n need: \"optional\",\n takes: 'Its value: 24000 or \"24000.00\". Left out, the deal counts but adds no value.',\n },\n { name: \"currency\", need: \"optional\", takes: \"Three letters: EUR, USD, GBP…\" },\n { name: \"pipeline\", need: \"optional\", takes: \"Its pipeline's name or id, if you use several.\" },\n { name: \"stage\", need: \"optional\", takes: \"Its stage's name or id.\" },\n {\n name: \"status\",\n need: \"optional\",\n takes: \"open, won or lost.\",\n note: \"Send it and Baker needs nothing else to tell won from lost. Without it, choose which stages mean won and lost in Measure → Accounts.\",\n },\n {\n name: \"closedAt\",\n need: \"conditional\",\n takes: \"The day it was won or lost.\",\n note: \"Needed when status is won or lost: it dates the revenue.\",\n },\n { name: \"deleted\", need: \"optional\", takes: \"true to remove a deal sent before. Only the id is needed.\" },\n];\n\nexport const CRM_RESPONSE_FIELDS: readonly FieldSpec[] = [\n { name: \"mode\", need: \"required\", takes: \"live or test, echoed from X-Baker-Mode.\" },\n { name: \"received\", need: \"required\", takes: \"How many companies and deals arrived.\" },\n { name: \"accepted\", need: \"required\", takes: \"How many passed the checks — stored, unless it was a test.\" },\n { name: \"deleted\", need: \"required\", takes: \"How many removals were accepted.\" },\n {\n name: \"rejected\",\n need: \"required\",\n takes: \"Each refused record: kind, index, id, code and a message saying what to fix.\",\n note: `Codes: ${CRM_REJECTION_CODES.join(\", \")}. ${PEOPLE_NOTE}`,\n },\n];\n\nfunction fieldTable(fields: readonly FieldSpec[]): string {\n return [\n \"| Field | Need | Takes |\",\n \"| --- | --- | --- |\",\n ...fields.map(\n (field) => `| \\`${field.name}\\` | ${field.need} | ${field.takes}${field.note ? ` ${field.note}` : \"\"} |`,\n ),\n ].join(\"\\n\");\n}\n\n/**\n * The whole contract as Markdown, for a developer or their coding assistant —\n * the same tables the dashboard draws, so the two cannot drift.\n */\nexport function crmPushBrief(url: string): string {\n return `# Sending your CRM to Baker\n\nBaker compares the companies your LinkedIn ads reached with your deals. When Baker cannot read\nyour CRM itself, your system sends the companies and deals here — only what you choose to send.\n\n\\`POST ${url}\\` with \\`Authorization: Bearer <key>\\` and \\`Content-Type: application/json\\`.\n\n1. **Use a key that can only send CRM data.** Create it in Baker → Measure → Accounts → Deal\n settings (or Settings → API keys, \"Sending CRM data only\"). Never put it in source or a chat;\n read it from an environment variable.\n2. **Send \\`${INGEST_MODE_HEADER}: test\\` while you build.** It is judged exactly the same way and\n stores nothing.\n3. **Send everything once, then what changes.** Sending a record again with the same \\`id\\`\n updates it; \\`\"deleted\": true\\` removes it. Up to ${CRM_PUSH_BATCH_MAX} records per request; a\n nightly job of your deals changed since the last run is plenty.\n4. **Companies and deals only.** ${PEOPLE_NOTE}\n\nBody: \\`{ \"companies\": [ … ], \"deals\": [ … ] }\\` — either list may be left out.\n\n## Companies\n\n${fieldTable(CRM_COMPANY_FIELDS)}\n\n## Deals\n\n${fieldTable(CRM_DEAL_FIELDS)}\n\n## The answer\n\nA \\`200\\` with \\`{ \"ok\": true, \"data\": { … } }\\`. One bad record never refuses the others: read\n\\`rejected\\`.\n\n${fieldTable(CRM_RESPONSE_FIELDS)}\n\n## Example\n\n\\`\\`\\`json\n${JSON.stringify(CRM_PUSH_EXAMPLE, null, 2)}\n\\`\\`\\`\n`;\n}\n","/**\n * Wire contract for `baker accounts` — which companies the LinkedIn ads are\n * warming, and which CRM deals they influenced — plus the pure rules every\n * reader of those numbers shares.\n *\n * \"Influenced\" is a labelled rule, not credit: a deal is influenced when its\n * company crossed the model's threshold in the months up to and including the\n * deal's reference month. A deal counts in full for every campaign that touched\n * it, so campaign numbers overlap and never sum to the total.\n */\n\nimport { z } from \"zod\";\nimport { calendarDaySchema, todayUtc, windowTooLong } from \"../calendarDays\";\n\nexport const INFLUENCE_MODEL_KINDS = [\"engagement\", \"awareness\", \"intent\"] as const;\nexport type InfluenceModelKind = (typeof INFLUENCE_MODEL_KINDS)[number];\n\nexport const INFLUENCE_METRICS = [\"impressions\", \"engagements\", \"clicks\"] as const;\nexport type InfluenceMetric = (typeof INFLUENCE_METRICS)[number];\n\nexport const DEFAULT_LOOKBACK_MONTHS = 12;\n\n/** `low` is a match read off a subdomain or a name: kept, but out of the headline until confirmed. */\nexport const MATCH_CONFIDENCES = [\"high\", \"low\"] as const;\n\nconst MODEL_METRIC: Record<InfluenceModelKind, { metric: InfluenceMetric; threshold: number }> = {\n engagement: { metric: \"engagements\", threshold: 3 },\n awareness: { metric: \"impressions\", threshold: 7 },\n intent: { metric: \"clicks\", threshold: 3 },\n};\n\nexport interface InfluenceParams {\n metric: InfluenceMetric;\n threshold: number;\n lookbackMonths: number;\n}\n\n/** A rule read for one report only — the saved settings stay as they are. */\nexport interface InfluenceRuleOverride {\n model?: InfluenceModelKind;\n threshold?: number;\n}\n\n/**\n * What the store counts for a company's settings: which metric, how many, how\n * far back. An override's model brings its own default threshold unless the\n * override names one too; the lookback is always the saved one.\n */\nexport function influenceParams(\n settings: {\n model: { kind: InfluenceModelKind; threshold?: number };\n lookbackMonths?: number;\n },\n override: InfluenceRuleOverride = {},\n): InfluenceParams {\n const kind = override.model ?? settings.model.kind;\n const model = MODEL_METRIC[kind];\n const wholeAtLeastOne = (value: number | undefined): value is number =>\n value !== undefined && Number.isInteger(value) && value >= 1;\n const threshold = override.threshold ?? (override.model === undefined ? settings.model.threshold : undefined);\n return {\n metric: model.metric,\n threshold: wholeAtLeastOne(threshold) ? threshold : model.threshold,\n lookbackMonths: wholeAtLeastOne(settings.lookbackMonths) ? settings.lookbackMonths : DEFAULT_LOOKBACK_MONTHS,\n };\n}\n\nexport type WarmFlag = \"new\" | \"rising\";\n\n/**\n * Whether a company is warming, by one metric this period against the period\n * of the same length just before it: `new` when it did nothing before,\n * `rising` when it at least doubled.\n */\nexport function warmFlag(current: number, previous: number): WarmFlag | null {\n if (current <= 0) return null;\n if (previous <= 0) return \"new\";\n return current >= 2 * previous ? \"rising\" : null;\n}\n\n// --- Windows ---\n\n/** The months the nightly sync keeps. */\nexport const ACCOUNTS_MAX_MONTHS = 24;\n\nconst windowFields = {\n /** Calendar months including the current one. */\n lastMonths: z.number().int().min(1).max(ACCOUNTS_MAX_MONTHS).optional(),\n start: calendarDaySchema.optional(),\n end: calendarDaySchema.optional(),\n};\n\n/** A rule read for one report (`InfluenceRuleOverride`); the saved settings stay as they are. */\nconst ruleOverrideFields = {\n model: z.enum(INFLUENCE_MODEL_KINDS).optional(),\n threshold: z.number().int().min(1).optional(),\n};\n\nfunction windowRules(req: { lastMonths?: number; start?: string; end?: string }, ctx: z.RefinementCtx): void {\n if (req.start !== undefined && req.lastMonths !== undefined) {\n ctx.addIssue({ code: \"custom\", path: [\"lastMonths\"], message: \"pass lastMonths or start/end, not both\" });\n }\n if (req.end !== undefined && req.start === undefined) {\n ctx.addIssue({ code: \"custom\", path: [\"end\"], message: \"end needs a start\" });\n }\n if (req.start !== undefined && req.end !== undefined && req.end < req.start) {\n ctx.addIssue({ code: \"custom\", path: [\"end\"], message: \"end is before start\" });\n return;\n }\n const tooLong = req.start === undefined ? null : windowTooLong(req.start, req.end ?? todayUtc(), ACCOUNTS_MAX_MONTHS);\n if (tooLong !== null) ctx.addIssue({ code: \"custom\", path: [\"start\"], message: tooLong });\n}\n\nexport const accountsWindowSchema = z.object({ start: z.string(), end: z.string() });\nexport type AccountsWindow = z.infer<typeof accountsWindowSchema>;\n\n/**\n * The inclusive days a request reads. `lastMonths` counts calendar months\n * including the current one, because the store holds whole months.\n */\nexport function accountsWindow(\n req: { lastMonths?: number; start?: string; end?: string },\n today: string,\n defaultMonths: number,\n): AccountsWindow {\n if (req.start !== undefined) return { start: req.start, end: req.end ?? today };\n const months = req.lastMonths ?? defaultMonths;\n const [year, month] = today.split(\"-\").map(Number);\n const first = new Date(Date.UTC(year ?? 1970, (month ?? 1) - 1 - (months - 1), 1));\n return { start: first.toISOString().slice(0, 10), end: today };\n}\n\nfunction monthIndex(day: string): number {\n const [year, month] = day.split(\"-\").map(Number);\n return (year ?? 1970) * 12 + ((month ?? 1) - 1);\n}\n\nfunction monthStart(index: number): Date {\n return new Date(Date.UTC(Math.floor(index / 12), index % 12, 1));\n}\n\n/**\n * The period New and Rising compare against: as many whole calendar months as\n * the window touches, ending the month before it starts. Whole months, because\n * that is the grain the store keeps.\n */\nexport function previousWindow(window: AccountsWindow): AccountsWindow {\n const first = monthIndex(window.start);\n const months = monthIndex(window.end) - first + 1;\n const lastDay = new Date(monthStart(first).getTime() - 24 * 60 * 60 * 1000);\n return {\n start: monthStart(first - months)\n .toISOString()\n .slice(0, 10),\n end: lastDay.toISOString().slice(0, 10),\n };\n}\n\nconst influenceParamsSchema = z.object({\n metric: z.enum(INFLUENCE_METRICS),\n threshold: z.number(),\n lookbackMonths: z.number(),\n});\n\n// --- Companies reached ---\n\nexport const ACCOUNTS_ENGAGEMENT_DEFAULT_LIMIT = 500;\nexport const ACCOUNTS_ENGAGEMENT_MAX_LIMIT = 5000;\n\nexport const accountEngagementRowSchema = z.object({\n /** LinkedIn organization id; `urn:li:organization:<orgId>` on LinkedIn. */\n orgId: z.string(),\n /** Empty until the nightly sync has looked the company up. */\n name: z.string(),\n domain: z.string(),\n impressions: z.number(),\n clicks: z.number(),\n engagements: z.number(),\n videoViews: z.number(),\n /** LinkedIn does not always report spend per company; 0 then. */\n costLocal: z.number(),\n currency: z.string(),\n /** Months in the window the company saw or did anything. */\n monthsActive: z.number(),\n lastMonth: z.string().nullable(),\n /** The same-length period just before the window. */\n previous: z.object({ impressions: z.number(), clicks: z.number(), engagements: z.number() }),\n /** By engagements against the previous period. */\n flag: z.enum([\"new\", \"rising\"]).nullable(),\n crmCompanyId: z.string().nullable(),\n /** The matched CRM company's name; null without a match. Optional for older servers. */\n crmCompanyName: z.string().nullable().optional(),\n matchConfidence: z.enum(MATCH_CONFIDENCES).nullable(),\n hasOpenDeal: z.boolean(),\n hasWonDeal: z.boolean(),\n hasLostDeal: z.boolean(),\n /** When the company's most recent lost deal closed (created, when it has no close date), ISO; null without one. */\n lastLostAt: z.string().nullable(),\n /**\n * People whose work email named the company's domain on the website or the\n * API in the period, and how many became leads — the touches beside the ads.\n * Null when none did; absent from older servers.\n */\n website: z.object({ people: z.number(), leads: z.number() }).nullable().optional(),\n});\nexport type AccountEngagementRow = z.infer<typeof accountEngagementRowSchema>;\n\n// --- Website people per company ---\n\n/**\n * One company domain's website people, by the work address they gave: how\n * many were seen in the window, how many of them handed a Form a step, and\n * when the first and last of them were seen. `domain` is registrable, as\n * `AccountEngagementRow.domain` is, so the two join on equality. Shown beside\n * LinkedIn engagement, never folded into influence.\n */\nexport const accountWebsiteRowSchema = z.object({\n domain: z.string(),\n people: z.number(),\n leads: z.number(),\n /** ISO. */\n firstSeen: z.string(),\n /** ISO. */\n lastSeen: z.string(),\n});\nexport type AccountWebsiteRow = z.infer<typeof accountWebsiteRowSchema>;\n\nexport const ACCOUNT_DEAL_STATUSES = [\"won\", \"open\", \"lost\", \"none\"] as const;\nexport type AccountDealStatus = (typeof ACCOUNT_DEAL_STATUSES)[number];\n\n/**\n * Where a company stands in the CRM, strongest fact first: a won deal outranks\n * an open one, an open one a lost one; `lost` means every deal it had was lost.\n */\nexport function accountDealStatus(row: {\n hasWonDeal: boolean;\n hasOpenDeal: boolean;\n hasLostDeal: boolean;\n}): AccountDealStatus {\n if (row.hasWonDeal) return \"won\";\n if (row.hasOpenDeal) return \"open\";\n if (row.hasLostDeal) return \"lost\";\n return \"none\";\n}\n\n/** A lost deal stops a company being warm for this many calendar months after it closed. */\nexport const LOST_DEAL_COOLDOWN_MONTHS = 6;\n\n/** `day` minus whole calendar months, clamped to the month's last day: 2026-08-31 − 6 → 2026-02-28. */\nfunction monthsBefore(day: string, months: number): string {\n const [year, month, date] = day.split(\"-\").map(Number);\n const index = (year ?? 1970) * 12 + ((month ?? 1) - 1) - months;\n const lastDate = new Date(Date.UTC(Math.floor(index / 12), (index % 12) + 1, 0)).getUTCDate();\n return new Date(Date.UTC(Math.floor(index / 12), index % 12, Math.min(date ?? 1, lastDate)))\n .toISOString()\n .slice(0, 10);\n}\n\nexport interface WarmAccountsOptions {\n /** Leave out a company below this on one metric in the period — e.g. the influence rule's threshold. */\n minimum?: { metric: InfluenceMetric; value: number };\n}\n\n/**\n * Warm accounts: engaging more than before, and not already somebody's deal —\n * no open deal, never won (a customer is not a prospect), and no deal lost in\n * the last six months. A loss older than that no longer counts, the same rule\n * Fibbler uses, so a company can warm up again. `today` is `YYYY-MM-DD`.\n * Without a `minimum`, one engagement after none already reads as New.\n */\nexport function warmAccounts(\n rows: readonly AccountEngagementRow[],\n today: string,\n options: WarmAccountsOptions = {},\n): AccountEngagementRow[] {\n const cooldownStart = monthsBefore(today, LOST_DEAL_COOLDOWN_MONTHS);\n const { minimum } = options;\n return rows.filter(\n (row) =>\n row.flag !== null &&\n (minimum === undefined || row[minimum.metric] >= minimum.value) &&\n !row.hasOpenDeal &&\n !row.hasWonDeal &&\n !(row.lastLostAt !== null && row.lastLostAt.slice(0, 10) >= cooldownStart),\n );\n}\n\nexport const accountsEngagementRequestSchema = z\n .object({\n ...windowFields,\n /** One campaign's companies; every campaign together when absent. */\n campaignId: z.string().regex(/^\\d+$/, \"use the numeric campaign id\").optional(),\n /** Companies per page. */\n limit: z.number().int().min(1).max(ACCOUNTS_ENGAGEMENT_MAX_LIMIT).default(ACCOUNTS_ENGAGEMENT_DEFAULT_LIMIT),\n /** Which page, 1-based, most engaged first. */\n page: z.number().int().min(1).default(1),\n })\n .superRefine(windowRules);\nexport type AccountsEngagementRequest = z.input<typeof accountsEngagementRequestSchema>;\n\nexport const accountsEngagementResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n window: accountsWindowSchema,\n previousWindow: accountsWindowSchema,\n companies: z.array(accountEngagementRowSchema),\n /** True when more companies were reached than this page and the ones before it hold. */\n truncated: z.boolean(),\n /** Which page this is, and how many companies there are in all. Absent from older servers. */\n pageInfo: z.object({ page: z.number(), pageSize: z.number(), total: z.number(), hasMore: z.boolean() }).optional(),\n /** The company's influence rule (the default one before setup): the minimum `baker accounts warm` applies. */\n rule: influenceParamsSchema.optional(),\n }),\n});\nexport type AccountsEngagementResponse = z.infer<typeof accountsEngagementResponseSchema>;\n\n// --- Influenced deals ---\n\nexport const INFLUENCE_BASES = [\"pipeline\", \"revenue\"] as const;\nexport type InfluenceBasis = (typeof INFLUENCE_BASES)[number];\n\nexport const accountDealRowSchema = z.object({\n dealId: z.string(),\n dealName: z.string(),\n crmCompanyId: z.string(),\n companyName: z.string(),\n domain: z.string(),\n /** Null when the deal has no amount — unknown, not zero. */\n amount: z.number().nullable(),\n currency: z.string(),\n /** Created (pipeline) or closed won (revenue), ISO. The date the lookback counts back from. */\n referenceAt: z.string(),\n /** By the won and lost stages chosen in the settings. */\n status: z.enum([\"open\", \"won\", \"lost\"]),\n /** The model's metric, summed over the company's lookback months. */\n touchValue: z.number(),\n /** The first month inside the lookback the company was reached, `YYYY-MM-01`. */\n firstTouchMonth: z.string().nullable(),\n /** How surely the CRM company is the LinkedIn one; null when no LinkedIn company matched. */\n matchConfidence: z.enum(MATCH_CONFIDENCES).nullable(),\n /** The company crossed the threshold — whatever the match confidence. */\n influenced: z.boolean(),\n});\nexport type AccountDealRow = z.infer<typeof accountDealRowSchema>;\n\n/** An amount per currency. Amounts in different currencies are never added together. */\nexport type MoneyByCurrency = Record<string, number>;\n\nexport const moneyByCurrencySchema = z.record(z.string(), z.number());\n\nexport const influenceSummarySchema = z.object({\n /** Every deal in the window for this basis. */\n deals: z.number(),\n /** Influenced, confirmed matches only — the headline. */\n influencedDeals: z.number(),\n influencedValue: moneyByCurrencySchema,\n /** Influenced deals with no amount entered: counted, not valued. */\n dealsWithoutAmount: z.number(),\n /** Influenced through a match nobody confirmed yet; not in the headline. */\n lowConfidenceDeals: z.number(),\n lowConfidenceValue: moneyByCurrencySchema,\n /** LinkedIn spend on the companies reached in the window, per currency. */\n spend: moneyByCurrencySchema,\n /** Influenced value per 1 of spend — only when both are in the same single currency. */\n valuePerSpend: z.object({ currency: z.string(), value: z.number() }).nullable(),\n});\nexport type InfluenceSummary = z.infer<typeof influenceSummarySchema>;\n\nfunction addMoney(into: MoneyByCurrency, currency: string, amount: number): void {\n const key = currency.trim().toUpperCase() || \"UNKNOWN\";\n into[key] = (into[key] ?? 0) + amount;\n}\n\n/** The headline numbers over one basis's deals. */\nexport function influenceSummary(deals: readonly AccountDealRow[], spend: MoneyByCurrency): InfluenceSummary {\n const influencedValue: MoneyByCurrency = {};\n const lowConfidenceValue: MoneyByCurrency = {};\n let influencedDeals = 0;\n let lowConfidenceDeals = 0;\n let dealsWithoutAmount = 0;\n for (const row of deals) {\n if (!row.influenced || row.matchConfidence === null) continue;\n if (row.matchConfidence === \"low\") {\n lowConfidenceDeals += 1;\n if (row.amount !== null) addMoney(lowConfidenceValue, row.currency, row.amount);\n continue;\n }\n influencedDeals += 1;\n if (row.amount === null) dealsWithoutAmount += 1;\n else addMoney(influencedValue, row.currency, row.amount);\n }\n return {\n deals: deals.length,\n influencedDeals,\n influencedValue,\n dealsWithoutAmount,\n lowConfidenceDeals,\n lowConfidenceValue,\n spend,\n valuePerSpend: valuePerSpend(influencedValue, spend),\n };\n}\n\nfunction valuePerSpend(value: MoneyByCurrency, spend: MoneyByCurrency): InfluenceSummary[\"valuePerSpend\"] {\n const valueCurrencies = Object.keys(value);\n const spendCurrencies = Object.keys(spend).filter((currency) => (spend[currency] ?? 0) > 0);\n const [currency] = valueCurrencies;\n if (currency === undefined || valueCurrencies.length !== 1 || spendCurrencies.length !== 1) return null;\n const spent = spend[spendCurrencies[0] ?? \"\"];\n if (spendCurrencies[0]?.toUpperCase() !== currency || spent === undefined) return null;\n return { currency, value: Math.round(((value[currency] ?? 0) / spent) * 100) / 100 };\n}\n\nexport const ACCOUNTS_INFLUENCED_DEFAULT_MONTHS = 12;\n\nexport const accountsInfluencedRequestSchema = z\n .object({\n ...windowFields,\n /** `pipeline`: deals created in the window and not won. `revenue`: deals closed won in the window. */\n basis: z.enum(INFLUENCE_BASES).default(\"pipeline\"),\n /** Every deal in the window, influenced or not; compact returns the influenced ones. */\n full: z.boolean().default(false),\n ...ruleOverrideFields,\n })\n .superRefine(windowRules);\nexport type AccountsInfluencedRequest = z.input<typeof accountsInfluencedRequestSchema>;\n\nexport const accountsInfluencedResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n window: accountsWindowSchema,\n basis: z.enum(INFLUENCE_BASES),\n rule: influenceParamsSchema,\n summary: influenceSummarySchema,\n /** Influenced deals on confirmed matches; with `full`, every deal in the window. */\n deals: z.array(accountDealRowSchema),\n /** Influenced through a match nobody confirmed yet. Not in `summary`'s headline. */\n lowConfidence: z.array(accountDealRowSchema),\n /** True when the window held more deals than one read returns. */\n truncated: z.boolean(),\n }),\n});\nexport type AccountsInfluencedResponse = z.infer<typeof accountsInfluencedResponseSchema>;\n\n// --- One company's timeline ---\n\nexport const accountsCompanyRequestSchema = z\n .object({\n /** LinkedIn organization id, or its `urn:li:organization:` URN. */\n orgId: z\n .string()\n .transform((value) => value.replace(/^urn:li:organization:/, \"\"))\n .pipe(z.string().regex(/^\\d+$/, \"use the LinkedIn company id or its urn:li:organization URN\"))\n .optional(),\n /** The company's website domain, `acme.com`. */\n domain: z\n .string()\n .min(3)\n .max(253)\n .transform((value) =>\n value\n .trim()\n .toLowerCase()\n .replace(/^https?:\\/\\//, \"\")\n .replace(/^www\\./, \"\")\n .replace(/\\/.*$/, \"\"),\n )\n .optional(),\n })\n .refine((req) => (req.orgId === undefined) !== (req.domain === undefined), {\n message: \"Give a LinkedIn company id or a domain, one of the two.\",\n });\nexport type AccountsCompanyRequest = z.input<typeof accountsCompanyRequestSchema>;\n\nexport const accountCompanyMonthSchema = z.object({\n orgId: z.string(),\n /** Empty for the whole ad account; a campaign id otherwise. */\n campaignId: z.string(),\n /** LinkedIn's name for the campaign; null for the account-wide row, or when LinkedIn could not be asked. */\n campaignName: z.string().nullable(),\n month: z.string(),\n impressions: z.number(),\n clicks: z.number(),\n engagements: z.number(),\n});\nexport type AccountCompanyMonth = z.infer<typeof accountCompanyMonthSchema>;\n\nexport const accountCompanyDealSchema = z.object({\n dealId: z.string(),\n dealName: z.string(),\n amount: z.number().nullable(),\n currency: z.string(),\n status: z.enum([\"open\", \"won\", \"lost\"]),\n createdAt: z.string(),\n closedAt: z.string().nullable(),\n /**\n * The rule's metric over the lookback ending with the deal's reference month\n * (created; closed for a won deal), from the pages in `orgs`. Absent before\n * setup or when the company matched no CRM company.\n */\n touchValue: z.number().optional(),\n /** `touchValue` reached the rule's threshold. */\n influenced: z.boolean().optional(),\n});\nexport type AccountCompanyDeal = z.infer<typeof accountCompanyDealSchema>;\n\nexport const accountCompanyOrgSchema = z.object({\n orgId: z.string(),\n name: z.string(),\n domain: z.string(),\n crmCompanyId: z.string().nullable(),\n matchConfidence: z.enum(MATCH_CONFIDENCES).nullable(),\n});\nexport type AccountCompanyOrg = z.infer<typeof accountCompanyOrgSchema>;\n\nexport const accountsCompanyResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /** Usually one; a domain can name several LinkedIn pages of the same company. */\n orgs: z.array(accountCompanyOrgSchema),\n /** Month by month, per campaign (and the account-wide row, `campaignId: \"\"`), oldest first. */\n months: z.array(accountCompanyMonthSchema),\n /** Deals of the matched CRM company, oldest first. */\n deals: z.array(accountCompanyDealSchema),\n /** The rule `influenced` and `touchValue` on each deal were read with; absent before setup. */\n rule: influenceParamsSchema.optional(),\n }),\n});\nexport type AccountsCompanyResponse = z.infer<typeof accountsCompanyResponseSchema>;\n\n// --- Campaigns ---\n\nexport const accountsCampaignsRequestSchema = z\n .object({ ...windowFields, ...ruleOverrideFields, basis: z.enum(INFLUENCE_BASES).default(\"pipeline\") })\n .superRefine(windowRules);\nexport type AccountsCampaignsRequest = z.input<typeof accountsCampaignsRequestSchema>;\n\nexport const accountCampaignRowSchema = z.object({\n campaignId: z.string(),\n /** LinkedIn's name for the campaign; null when LinkedIn could not be asked or no longer lists it. */\n campaignName: z.string().nullable(),\n /** Companies that saw at least one impression in the window. */\n companiesReached: z.number(),\n /** Companies with at least one engagement in the window. */\n companiesEngaged: z.number(),\n /** Influenced deals (of the read's basis) this campaign touched in their lookback. Overlaps other campaigns. */\n influencedDeals: z.number(),\n influencedValue: moneyByCurrencySchema,\n});\nexport type AccountCampaignRow = z.infer<typeof accountCampaignRowSchema>;\n\nexport const accountsCampaignsResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n window: accountsWindowSchema,\n /** Optional for older servers, which read pipeline only. */\n basis: z.enum(INFLUENCE_BASES).optional(),\n rule: influenceParamsSchema,\n campaigns: z.array(accountCampaignRowSchema),\n }),\n});\nexport type AccountsCampaignsResponse = z.infer<typeof accountsCampaignsResponseSchema>;\n\n// --- Refusals the agent relays ---\n\n/** Deals cannot be counted until someone says where they are and what won and lost mean. */\nexport const ACCOUNTS_NO_SETTINGS_MESSAGE =\n \"Account insights are not set up yet: in Measure → Accounts, say where your deals are (HubSpot or another CRM) and what won and lost mean.\";\nexport * from \"./crm\";\n"],"mappings":"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","names":["text","z","z","z","z","z"]}
@@ -1,229 +0,0 @@
1
- import {
2
- brandTokensSchema
3
- } from "./chunk-MBKCUSMR.js";
4
-
5
- // src/engine/landing/lib/brand-tokens.ts
6
- import { readFile } from "fs/promises";
7
- import path from "path";
8
-
9
- // src/engine/landing/lib/color.ts
10
- var NEUTRAL_COLOR_KEYWORDS = /* @__PURE__ */ new Set([
11
- "transparent",
12
- "currentcolor",
13
- "black",
14
- "white",
15
- "gray",
16
- "grey",
17
- "silver",
18
- "dimgray",
19
- "dimgrey",
20
- "darkgray",
21
- "darkgrey",
22
- "lightgray",
23
- "lightgrey",
24
- "gainsboro",
25
- "whitesmoke"
26
- ]);
27
- function hexChannels(color) {
28
- const long = color.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})(?:[0-9a-f]{2})?$/i);
29
- if (long)
30
- return [
31
- Number.parseInt(long[1] ?? "0", 16),
32
- Number.parseInt(long[2] ?? "0", 16),
33
- Number.parseInt(long[3] ?? "0", 16)
34
- ];
35
- const short = color.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])(?:[0-9a-f])?$/i);
36
- if (short) {
37
- const dup = (s) => Number.parseInt(`${s ?? "0"}${s ?? "0"}`, 16);
38
- return [dup(short[1]), dup(short[2]), dup(short[3])];
39
- }
40
- return null;
41
- }
42
- function parseColor(raw) {
43
- const c = String(raw || "").trim().toLowerCase();
44
- if (!c || c === "transparent") return null;
45
- const rgb = c.match(/rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)(?:[\s,/]+([\d.]+%?))?\s*\)/i);
46
- if (rgb) {
47
- const alpha = rgb[4];
48
- const a = alpha === void 0 ? 1 : alpha.endsWith("%") ? Number.parseFloat(alpha) / 100 : Number.parseFloat(alpha);
49
- return { r: Number(rgb[1]), g: Number(rgb[2]), b: Number(rgb[3]), a };
50
- }
51
- const oklch = parseOklch(c);
52
- if (oklch) return oklch;
53
- const hex = hexChannels(c);
54
- if (hex) return { r: hex[0], g: hex[1], b: hex[2], a: 1 };
55
- return null;
56
- }
57
- function parseOklch(c) {
58
- const m = c.match(/oklch\(\s*([\d.]+%?)\s+([\d.]+%?)\s+([\d.]+)(?:deg)?(?:\s*\/\s*([\d.]+%?))?\s*\)/i);
59
- if (!m) return null;
60
- const pct = (s, scale) => s.endsWith("%") ? Number.parseFloat(s) / 100 * scale : Number.parseFloat(s);
61
- const alpha = m[4];
62
- const a = alpha === void 0 ? 1 : pct(alpha, 1);
63
- return { ...oklchToRgb(pct(m[1] ?? "0", 1), pct(m[2] ?? "0", 0.4), Number.parseFloat(m[3] ?? "0")), a };
64
- }
65
- function oklchToRgb(L, C, H) {
66
- const hRad = H * Math.PI / 180;
67
- const a = C * Math.cos(hRad);
68
- const b = C * Math.sin(hRad);
69
- const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;
70
- const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;
71
- const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;
72
- const lin = [
73
- 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,
74
- -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,
75
- -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s
76
- ].map((v) => {
77
- const g = v <= 31308e-7 ? 12.92 * v : 1.055 * Math.sign(v) * Math.abs(v) ** (1 / 2.4) - 0.055;
78
- return Math.round(Math.max(0, Math.min(1, g)) * 255);
79
- });
80
- return { r: lin[0] ?? 0, g: lin[1] ?? 0, b: lin[2] ?? 0 };
81
- }
82
- function isNeutralAuthoredColor(rawColor) {
83
- const c = String(rawColor || "").trim().toLowerCase();
84
- if (!c) return false;
85
- if (NEUTRAL_COLOR_KEYWORDS.has(c)) return true;
86
- if (/^rgba?\(/i.test(c)) {
87
- const channels2 = c.match(/^rgba?\(\s*([\d.]+)[\s,]+([\d.]+)[\s,]+([\d.]+)/i);
88
- if (channels2) {
89
- const values = [1, 2, 3].map((i) => Number(channels2[i]));
90
- return Math.max(...values) - Math.min(...values) < 30;
91
- }
92
- return false;
93
- }
94
- const oklch = c.match(/oklch\(\s*[\d.]+%?\s+([\d.-]+)/i);
95
- if (oklch) return Number.parseFloat(oklch[1] ?? "0") < 0.02;
96
- const lch = c.match(/lch\(\s*[\d.]+%?\s+([\d.-]+)/i);
97
- if (lch) return Number.parseFloat(lch[1] ?? "0") < 3;
98
- const hsl = c.match(/hsla?\(\s*[\d.-]+\s*,?\s*([\d.]+)%/i);
99
- if (hsl) return Number.parseFloat(hsl[1] ?? "0") < 10;
100
- const channels = hexChannels(c);
101
- if (channels) return Math.max(...channels) - Math.min(...channels) < 30;
102
- return false;
103
- }
104
- function hasChroma(c, threshold = 30) {
105
- if (!c) return false;
106
- return Math.max(c.r, c.g, c.b) - Math.min(c.r, c.g, c.b) >= threshold;
107
- }
108
- function getHue(c) {
109
- if (!c) return 0;
110
- const r = c.r / 255;
111
- const g = c.g / 255;
112
- const b = c.b / 255;
113
- const max = Math.max(r, g, b);
114
- const min = Math.min(r, g, b);
115
- if (max === min) return 0;
116
- const d = max - min;
117
- let h;
118
- if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
119
- else if (max === g) h = ((b - r) / d + 2) / 6;
120
- else h = ((r - g) / d + 4) / 6;
121
- return Math.round(h * 360);
122
- }
123
- function isAiPurpleHue(hue) {
124
- return hue >= 225 && hue <= 310;
125
- }
126
- function isCreamColor(c) {
127
- if (Math.min(c.r, c.g, c.b) < 209) return false;
128
- if (!(c.r >= c.g && c.g >= c.b)) return false;
129
- const warmth = c.r - c.b;
130
- return warmth >= 6 && warmth <= 48;
131
- }
132
-
133
- // src/engine/landing/lib/brand-tokens.ts
134
- var EMPTY = { fonts: /* @__PURE__ */ new Set(), colors: [], hasTokens: false };
135
- function isNotAFamily(value) {
136
- return /^[1-9]00$/.test(value) || /^\d+(?:\.\d+)?(?:px|rem|em|%|pt|vw|vh|ch|ex)$/i.test(value) || /^(?:normal|bold|bolder|lighter|italic|oblique|none|auto|inherit|initial|unset)$/i.test(value);
137
- }
138
- function parseBrandTokens(globalCss, brandMd) {
139
- const fonts = /* @__PURE__ */ new Set();
140
- const colors = [];
141
- parseGlobalCss(globalCss, fonts, colors);
142
- parseBrandMd(brandMd, fonts, colors);
143
- return { fonts, colors, hasTokens: fonts.size > 0 || colors.length > 0 };
144
- }
145
- function parseGlobalCss(rawCss, fonts, colors) {
146
- const globalCss = rawCss.replace(/\/\*[\s\S]*?\*\//g, (block) => block.replace(/[^\n]/g, " "));
147
- for (const m of globalCss.matchAll(/(?<![\w-])--font-([\w-]*)\s*:\s*([^;]+);/gi)) {
148
- const slug = m[1] ?? "";
149
- if (slug.includes("--") || /^weight(?:$|[-\s])/i.test(slug)) continue;
150
- const first = (m[2] ?? "").split(",")[0]?.trim().replace(/^['"]|['"]$/g, "").toLowerCase();
151
- if (!first || isNotAFamily(first)) continue;
152
- fonts.add(first);
153
- }
154
- for (const m of globalCss.matchAll(
155
- /--color-[\w-]*\s*:\s*(#[0-9a-f]{3,8}\b|rgba?\([^)]+\)|oklch\([^)]+\)|hsla?\([^)]+\))/gi
156
- )) {
157
- const c = parseColor(m[1] ?? "");
158
- if (c) colors.push(c);
159
- }
160
- }
161
- function parseBrandMd(brandMd, fonts, colors) {
162
- const isProhibition = (line) => /\b(?:never|don'?t|do not|avoid|not|instead of|ban(?:ned)?)\b/i.test(line);
163
- for (const line of brandMd.split("\n")) {
164
- if (isProhibition(line)) continue;
165
- for (const m of line.matchAll(/#[0-9a-f]{6}\b/gi)) {
166
- const c = parseColor(m[0]);
167
- if (c) colors.push(c);
168
- }
169
- if (!/\b(?:font|typeface|family)\b/i.test(line)) continue;
170
- const named = line.match(/["'`]([A-Za-z][\w ]{1,30})["'`]/g);
171
- if (named) for (const n of named) fonts.add(n.slice(1, -1).trim().toLowerCase());
172
- }
173
- }
174
- function brandTokensFromCanonical(tokens) {
175
- const fonts = new Set(tokens.fonts.map((f) => f.family.toLowerCase()));
176
- const colors = [];
177
- for (const color of tokens.colors) {
178
- const parsed = parseColor(color.value);
179
- if (parsed) colors.push(parsed);
180
- }
181
- return { fonts, colors, hasTokens: fonts.size > 0 || colors.length > 0 };
182
- }
183
- async function loadBrandTokens(projectRoot) {
184
- const tokensRaw = await safeRead(path.join(projectRoot, "src", "brand", "tokens.json"));
185
- if (tokensRaw) {
186
- try {
187
- const canonical = brandTokensSchema.safeParse(JSON.parse(tokensRaw));
188
- if (canonical.success) return brandTokensFromCanonical(canonical.data);
189
- } catch {
190
- }
191
- }
192
- const globalCss = await safeRead(path.join(projectRoot, "src", "styles", "global.css"));
193
- const brandMd = await safeRead(path.join(projectRoot, "src", "brand", "BRAND.md"));
194
- if (!globalCss && !brandMd) return EMPTY;
195
- return parseBrandTokens(globalCss, brandMd);
196
- }
197
- async function safeRead(file) {
198
- try {
199
- return await readFile(file, "utf8");
200
- } catch {
201
- return "";
202
- }
203
- }
204
- function brandCommitsFont(brand, snippet) {
205
- if (brand.fonts.size === 0) return false;
206
- const lower = snippet.toLowerCase();
207
- for (const f of brand.fonts) if (f.length >= 3 && lower.includes(f)) return true;
208
- return false;
209
- }
210
- function brandCommitsAiHue(brand) {
211
- return brand.colors.some((c) => hasChroma(c, 40) && isAiPurpleHue(getHue(c)));
212
- }
213
- function brandCommitsCream(brand) {
214
- return brand.colors.some((c) => isCreamColor(c));
215
- }
216
-
217
- export {
218
- parseColor,
219
- isNeutralAuthoredColor,
220
- hasChroma,
221
- isCreamColor,
222
- isNotAFamily,
223
- parseBrandTokens,
224
- loadBrandTokens,
225
- brandCommitsFont,
226
- brandCommitsAiHue,
227
- brandCommitsCream
228
- };
229
- //# sourceMappingURL=chunk-N5SQSMMR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/engine/landing/lib/brand-tokens.ts","../src/engine/landing/lib/color.ts"],"sourcesContent":["/**\n * Landing anti-slop detector — brand allowlist.\n *\n * The client's committed brand is the allowlist: a value that matches a brand\n * token is a decision, not a tell, so the detector downgrades it to advisory\n * (mirrors impeccable's DESIGN.md drift model). The canonical source is\n * `src/brand/tokens.json` (validated with the shared `@baker/api` schema); a\n * workspace that predates it falls back to the legacy scan of the global.css\n * `@theme` block plus a best-effort BRAND.md text pass.\n *\n * Empty/TODO brand (a fresh scaffold) → no allowlist, full strictness.\n */\n\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { brandTokensSchema, type BrandTokens as CanonicalBrandTokens } from \"@baker/api\";\nimport { getHue, hasChroma, isAiPurpleHue, isCreamColor, parseColor, type Rgb } from \"./color.ts\";\n\nexport type BrandTokens = {\n /** Lowercased committed font-family names (e.g. \"inter\", \"geist\"). */\n fonts: Set<string>;\n /** Parsed committed colors. */\n colors: Rgb[];\n /** True once any real token was found — distinguishes \"branded\" from \"blank\". */\n hasTokens: boolean;\n};\n\nconst EMPTY: BrandTokens = { fonts: new Set(), colors: [], hasTokens: false };\n\n/**\n * A token value that is a weight, a length, or a style keyword — never a family.\n *\n * Deliberately narrow, and the same predicate as `isNotAFamily` in the\n * scaffold's `__tooling__/checks/sdk/theme-css.mjs`. \"Anything starting with a\n * digit\" also swallows the real families that are named with digits — SAP's\n * \"72\", the \"3270\" monospace face — and because the scaffold keeps those,\n * dropping them here made `baker brand fonts check` clear a brand the client's\n * verify then rejected. `__tests__/theme-css-contract.test.ts` pins the two.\n */\nexport function isNotAFamily(value: string): boolean {\n return (\n /^[1-9]00$/.test(value) ||\n /^\\d+(?:\\.\\d+)?(?:px|rem|em|%|pt|vw|vh|ch|ex)$/i.test(value) ||\n /^(?:normal|bold|bolder|lighter|italic|oblique|none|auto|inherit|initial|unset)$/i.test(value)\n );\n}\n\n/** Pure parse of the two brand sources — exported for tests. */\nexport function parseBrandTokens(globalCss: string, brandMd: string): BrandTokens {\n const fonts = new Set<string>();\n const colors: Rgb[] = [];\n parseGlobalCss(globalCss, fonts, colors);\n parseBrandMd(brandMd, fonts, colors);\n return { fonts, colors, hasTokens: fonts.size > 0 || colors.length > 0 };\n}\n\n/** global.css `@theme` tokens: `--font-*` families and `--color-*` values.\n * Comments are stripped first — a commented-out legacy token is not a\n * commitment, and one stale purple would defang the color rules page-wide.\n *\n * The `--font-` match is anchored with a lookbehind and its value is checked:\n * `--text-h1--font-weight: 700` is a Tailwind v4 sub-property, and reading its\n * `--font-weight: 700` substring as a family called \"700\" put a 3-character\n * numeric string into the committed set — which `brandCommitsFont` then\n * substring-matched against every snippet containing \"700\", silently\n * whitelisting off-brand fonts. Mirrors\n * `apps/scaffold-template/__tooling__/checks/sdk/theme-css.mjs`. */\nfunction parseGlobalCss(rawCss: string, fonts: Set<string>, colors: Rgb[]): void {\n const globalCss = rawCss.replace(/\\/\\*[\\s\\S]*?\\*\\//g, (block) => block.replace(/[^\\n]/g, \" \"));\n for (const m of globalCss.matchAll(/(?<![\\w-])--font-([\\w-]*)\\s*:\\s*([^;]+);/gi)) {\n const slug = m[1] ?? \"\";\n if (slug.includes(\"--\") || /^weight(?:$|[-\\s])/i.test(slug)) continue;\n const first = (m[2] ?? \"\")\n .split(\",\")[0]\n ?.trim()\n .replace(/^['\"]|['\"]$/g, \"\")\n .toLowerCase();\n if (!first || isNotAFamily(first)) continue;\n fonts.add(first);\n }\n for (const m of globalCss.matchAll(\n /--color-[\\w-]*\\s*:\\s*(#[0-9a-f]{3,8}\\b|rgba?\\([^)]+\\)|oklch\\([^)]+\\)|hsla?\\([^)]+\\))/gi,\n )) {\n const c = parseColor(m[1] ?? \"\");\n if (c) colors.push(c);\n }\n}\n\n/** BRAND.md: hex literals are committed colors; quoted names on font lines are\n * committed faces. Best-effort — the machine truth is global.css. Lines that\n * PROHIBIT a value (\"never use #7c3aed\", \"don't use 'Inter'\") are skipped, so\n * a ban can't read as a commitment and allowlist the banned value. */\nfunction parseBrandMd(brandMd: string, fonts: Set<string>, colors: Rgb[]): void {\n const isProhibition = (line: string) => /\\b(?:never|don'?t|do not|avoid|not|instead of|ban(?:ned)?)\\b/i.test(line);\n for (const line of brandMd.split(\"\\n\")) {\n if (isProhibition(line)) continue;\n for (const m of line.matchAll(/#[0-9a-f]{6}\\b/gi)) {\n const c = parseColor(m[0]);\n if (c) colors.push(c);\n }\n if (!/\\b(?:font|typeface|family)\\b/i.test(line)) continue;\n const named = line.match(/[\"'`]([A-Za-z][\\w ]{1,30})[\"'`]/g);\n if (named) for (const n of named) fonts.add(n.slice(1, -1).trim().toLowerCase());\n }\n}\n\n/** Canonical tokens.json → allowlist shape — exported for tests. */\nexport function brandTokensFromCanonical(tokens: CanonicalBrandTokens): BrandTokens {\n const fonts = new Set<string>(tokens.fonts.map((f) => f.family.toLowerCase()));\n const colors: Rgb[] = [];\n for (const color of tokens.colors) {\n const parsed = parseColor(color.value);\n if (parsed) colors.push(parsed);\n }\n return { fonts, colors, hasTokens: fonts.size > 0 || colors.length > 0 };\n}\n\n/**\n * Load brand tokens from a project root; degrades to empty when absent.\n * `src/brand/tokens.json` (canonical) wins; an absent or invalid file falls\n * back to the legacy global.css/BRAND.md scan — invalid is the drift\n * validator's finding to report, not a reason to run blind here.\n */\nexport async function loadBrandTokens(projectRoot: string): Promise<BrandTokens> {\n const tokensRaw = await safeRead(path.join(projectRoot, \"src\", \"brand\", \"tokens.json\"));\n if (tokensRaw) {\n try {\n const canonical = brandTokensSchema.safeParse(JSON.parse(tokensRaw));\n if (canonical.success) return brandTokensFromCanonical(canonical.data);\n } catch {\n // fall through to the legacy scan\n }\n }\n const globalCss = await safeRead(path.join(projectRoot, \"src\", \"styles\", \"global.css\"));\n const brandMd = await safeRead(path.join(projectRoot, \"src\", \"brand\", \"BRAND.md\"));\n if (!globalCss && !brandMd) return EMPTY;\n return parseBrandTokens(globalCss, brandMd);\n}\n\nasync function safeRead(file: string): Promise<string> {\n try {\n return await readFile(file, \"utf8\");\n } catch {\n return \"\";\n }\n}\n\n/** Does the brand commit this font name (as it appears in a finding snippet)? */\nexport function brandCommitsFont(brand: BrandTokens, snippet: string): boolean {\n if (brand.fonts.size === 0) return false;\n const lower = snippet.toLowerCase();\n for (const f of brand.fonts) if (f.length >= 3 && lower.includes(f)) return true;\n return false;\n}\n\n/** Does the brand commit a purple/indigo hue (so the AI-palette tell is a choice)? */\nexport function brandCommitsAiHue(brand: BrandTokens): boolean {\n return brand.colors.some((c) => hasChroma(c, 40) && isAiPurpleHue(getHue(c)));\n}\n\n/** Does the brand commit a cream ground (so the cream tell is a choice)? */\nexport function brandCommitsCream(brand: BrandTokens): boolean {\n return brand.colors.some((c) => isCreamColor(c));\n}\n","/**\n * Landing anti-slop detector — color utilities.\n *\n * Ported (with sense) from impeccable's `cli/engine/shared/color.mjs` +\n * `isNeutralAuthoredColor` from `detect-text.mjs`. These parse colors as WRITTEN\n * in authored CSS (hex, named, rgb/hsl/oklch), not just the computed forms a\n * browser emits — because we scan `.astro` source, not a rendered DOM.\n */\n\nexport type Rgb = { r: number; g: number; b: number; a: number };\n\n/** CSS named colors whose channels are equal (achromatic). */\nconst NEUTRAL_COLOR_KEYWORDS = new Set<string>([\n \"transparent\",\n \"currentcolor\",\n \"black\",\n \"white\",\n \"gray\",\n \"grey\",\n \"silver\",\n \"dimgray\",\n \"dimgrey\",\n \"darkgray\",\n \"darkgrey\",\n \"lightgray\",\n \"lightgrey\",\n \"gainsboro\",\n \"whitesmoke\",\n]);\n\nfunction hexChannels(color: string): [number, number, number] | null {\n const long = color.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})(?:[0-9a-f]{2})?$/i);\n if (long)\n return [\n Number.parseInt(long[1] ?? \"0\", 16),\n Number.parseInt(long[2] ?? \"0\", 16),\n Number.parseInt(long[3] ?? \"0\", 16),\n ];\n const short = color.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])(?:[0-9a-f])?$/i);\n if (short) {\n const dup = (s: string | undefined) => Number.parseInt(`${s ?? \"0\"}${s ?? \"0\"}`, 16);\n return [dup(short[1]), dup(short[2]), dup(short[3])];\n }\n return null;\n}\n\n/** Parse any authored hex / rgb() / oklch() color to {r,g,b,a}. Null if unknown. */\nexport function parseColor(raw: string): Rgb | null {\n const c = String(raw || \"\")\n .trim()\n .toLowerCase();\n if (!c || c === \"transparent\") return null;\n const rgb = c.match(/rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)(?:[\\s,/]+([\\d.]+%?))?\\s*\\)/i);\n if (rgb) {\n const alpha = rgb[4];\n const a = alpha === undefined ? 1 : alpha.endsWith(\"%\") ? Number.parseFloat(alpha) / 100 : Number.parseFloat(alpha);\n return { r: Number(rgb[1]), g: Number(rgb[2]), b: Number(rgb[3]), a };\n }\n const oklch = parseOklch(c);\n if (oklch) return oklch;\n const hex = hexChannels(c);\n if (hex) return { r: hex[0], g: hex[1], b: hex[2], a: 1 };\n return null;\n}\n\n/** `oklch(L C H)` / `oklch(L% C H / a)` → Rgb, or null when not oklch. */\nfunction parseOklch(c: string): Rgb | null {\n const m = c.match(/oklch\\(\\s*([\\d.]+%?)\\s+([\\d.]+%?)\\s+([\\d.]+)(?:deg)?(?:\\s*\\/\\s*([\\d.]+%?))?\\s*\\)/i);\n if (!m) return null;\n const pct = (s: string, scale: number) =>\n s.endsWith(\"%\") ? (Number.parseFloat(s) / 100) * scale : Number.parseFloat(s);\n const alpha = m[4];\n const a = alpha === undefined ? 1 : pct(alpha, 1);\n return { ...oklchToRgb(pct(m[1] ?? \"0\", 1), pct(m[2] ?? \"0\", 0.4), Number.parseFloat(m[3] ?? \"0\")), a };\n}\n\n/** oklch(L C H) → sRGB via OKLab (Björn Ottosson's reference constants), so\n * Tailwind v4-idiomatic `@theme` colors participate in the brand allowlist. */\nfunction oklchToRgb(L: number, C: number, H: number): { r: number; g: number; b: number } {\n const hRad = (H * Math.PI) / 180;\n const a = C * Math.cos(hRad);\n const b = C * Math.sin(hRad);\n const l = (L + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m = (L - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s = (L - 0.0894841775 * a - 1.291485548 * b) ** 3;\n const lin = [\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s,\n ].map((v) => {\n const g = v <= 0.0031308 ? 12.92 * v : 1.055 * Math.sign(v) * Math.abs(v) ** (1 / 2.4) - 0.055;\n return Math.round(Math.max(0, Math.min(1, g)) * 255);\n });\n return { r: lin[0] ?? 0, g: lin[1] ?? 0, b: lin[2] ?? 0 };\n}\n\n/**\n * Neutrality test for colors as written in source CSS. Handles hex and named\n * neutrals directly; for rgb()/hsl()/oklch() etc. uses the channel/component\n * spread. An unrecognized spelling stays chromatic so a real accent is never\n * silently skipped (impeccable's fail-toward-detection default).\n */\nexport function isNeutralAuthoredColor(rawColor: string): boolean {\n const c = String(rawColor || \"\")\n .trim()\n .toLowerCase();\n if (!c) return false;\n if (NEUTRAL_COLOR_KEYWORDS.has(c)) return true;\n if (/^rgba?\\(/i.test(c)) {\n const channels = c.match(/^rgba?\\(\\s*([\\d.]+)[\\s,]+([\\d.]+)[\\s,]+([\\d.]+)/i);\n if (channels) {\n const values = [1, 2, 3].map((i) => Number(channels[i]));\n return Math.max(...values) - Math.min(...values) < 30;\n }\n return false;\n }\n // oklch/lch chroma is the second component; hsl saturation is the second.\n const oklch = c.match(/oklch\\(\\s*[\\d.]+%?\\s+([\\d.-]+)/i);\n if (oklch) return Number.parseFloat(oklch[1] ?? \"0\") < 0.02;\n const lch = c.match(/lch\\(\\s*[\\d.]+%?\\s+([\\d.-]+)/i);\n if (lch) return Number.parseFloat(lch[1] ?? \"0\") < 3;\n const hsl = c.match(/hsla?\\(\\s*[\\d.-]+\\s*,?\\s*([\\d.]+)%/i);\n if (hsl) return Number.parseFloat(hsl[1] ?? \"0\") < 10;\n const channels = hexChannels(c);\n if (channels) return Math.max(...channels) - Math.min(...channels) < 30;\n return false;\n}\n\nexport function hasChroma(c: Rgb | null, threshold = 30): boolean {\n if (!c) return false;\n return Math.max(c.r, c.g, c.b) - Math.min(c.r, c.g, c.b) >= threshold;\n}\n\n/** Hue in degrees (0–360) for an rgb color. */\nexport function getHue(c: Rgb | null): number {\n if (!c) return 0;\n const r = c.r / 255;\n const g = c.g / 255;\n const b = c.b / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n if (max === min) return 0;\n const d = max - min;\n let h: number;\n if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n else if (max === g) h = ((b - r) / d + 2) / 6;\n else h = ((r - g) / d + 4) / 6;\n return Math.round(h * 360);\n}\n\n/** Is this hue in the purple/violet/indigo band the AI-palette rule flags?\n * 225–310 covers everything the detection side bans: Tailwind indigo (~239°),\n * the indigo hero hexes (#667eea 229°, #6366f1 239°), violet (#8b5cf6 258°),\n * and purple (#7c3aed 262°+). Keep in lockstep with `AI_PURPLE_HEXES`. */\nexport function isAiPurpleHue(hue: number): boolean {\n return hue >= 225 && hue <= 310;\n}\n\n/** Is this a warm cream/parchment ground (light, r≥g≥b, small warmth)? */\nexport function isCreamColor(c: Rgb): boolean {\n if (Math.min(c.r, c.g, c.b) < 209) return false;\n if (!(c.r >= c.g && c.g >= c.b)) return false;\n const warmth = c.r - c.b;\n return warmth >= 6 && warmth <= 48;\n}\n"],"mappings":"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","names":["channels"]}