@koda-sl/baker-cli 0.447.0 → 0.448.0-dev.ccc3c9a37

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 (1400) hide show
  1. package/README.md +231 -42
  2. package/dist/account-JG7QD522.js +79 -0
  3. package/dist/account-V6PB6PA5.js +80 -0
  4. package/dist/account-VLPX7EZT.js +49 -0
  5. package/dist/account-reads-4P5L6CJN.js +218 -0
  6. package/dist/account-reads-4P5L6CJN.js.map +1 -0
  7. package/dist/account-writes-BGREY7ZL.js +66 -0
  8. package/dist/accounts-2FINK5GZ.js +114 -0
  9. package/dist/accounts-2UV5Z3Y6.js +75 -0
  10. package/dist/accounts-3EX2PFJB.js +77 -0
  11. package/dist/accounts-G2QT3ZVP.js +115 -0
  12. package/dist/accounts-N63J5YTK.js +611 -0
  13. package/dist/actions-PA2BPIYO.js +55 -0
  14. package/dist/active-entities-RDXDSMA2.js +103 -0
  15. package/dist/activecampaign-EE5ERO25.js +897 -0
  16. package/dist/activecampaign-EE5ERO25.js.map +1 -0
  17. package/dist/activities-RBTU2Q24.js +74 -0
  18. package/dist/ad-group-writes-5NTRJTVE.js +170 -0
  19. package/dist/ad-groups-4OTAKWUC.js +68 -0
  20. package/dist/ad-writes-T7W3DDKK.js +174 -0
  21. package/dist/add-4VKA4NDH.js +105 -0
  22. package/dist/add-MQO33HL3.js +97 -0
  23. package/dist/add-MYPHHYC4.js +302 -0
  24. package/dist/add-MYPHHYC4.js.map +1 -0
  25. package/dist/add-QM7ANAVG.js +104 -0
  26. package/dist/add-accounts-VDSWHJ4K.js +91 -0
  27. package/dist/add-accounts-VDSWHJ4K.js.map +1 -0
  28. package/dist/ads-HYODBAPV.js +128 -0
  29. package/dist/ads-HYODBAPV.js.map +1 -0
  30. package/dist/ads-IJCFN2N3.js +113 -0
  31. package/dist/ads-QKMLAPZC.js +40 -0
  32. package/dist/ads-XYAWONXR.js +77 -0
  33. package/dist/adsets-DPTIKGTG.js +176 -0
  34. package/dist/advertisers-ITFXIXUW.js +125 -0
  35. package/dist/advertisers-ITFXIXUW.js.map +1 -0
  36. package/dist/advertisers-SZFDOPBQ.js +120 -0
  37. package/dist/analytics-HFBYIPZ7.js +433 -0
  38. package/dist/analytics-NDZR33ZJ.js +1976 -0
  39. package/dist/analytics-NDZR33ZJ.js.map +1 -0
  40. package/dist/animate-LUKNHCF4.js +480 -0
  41. package/dist/assign-QCICUD72.js +77 -0
  42. package/dist/audience-size-HML4BLHJ.js +94 -0
  43. package/dist/audiences-BSABKS5K.js +268 -0
  44. package/dist/audiences-FWOOSUSJ.js +78 -0
  45. package/dist/audiences-VK4M7GLQ.js +85 -0
  46. package/dist/audit-DUM55J5U.js +151 -0
  47. package/dist/audit-JR5R75XK.js +88 -0
  48. package/dist/autocomplete-VX4PMMLR.js +111 -0
  49. package/dist/avatars-5KCRSUJ3.js +38 -0
  50. package/dist/bid-pricing-AIUACXUH.js +99 -0
  51. package/dist/brand-UBTC2WXR.js +22 -0
  52. package/dist/brief-NU7ZGPXO.js +490 -0
  53. package/dist/brief-NU7ZGPXO.js.map +1 -0
  54. package/dist/businesses-P3RX4UXS.js +53 -0
  55. package/dist/campaign-groups-SJZEDIBL.js +95 -0
  56. package/dist/campaign-writes-5BPVXG4C.js +170 -0
  57. package/dist/campaign-writes-VE6QLIDA.js +165 -0
  58. package/dist/campaigns-JEWEDCTC.js +109 -0
  59. package/dist/campaigns-MEIMSHJF.js +110 -0
  60. package/dist/campaigns-NCGJNJKS.js +107 -0
  61. package/dist/campaigns-XY7QWHDN.js +76 -0
  62. package/dist/canvas-DK2DH7BA.js +46 -0
  63. package/dist/canvas-DK2DH7BA.js.map +1 -0
  64. package/dist/capabilities-W6SPXOPF.js +144 -0
  65. package/dist/cards-CLD4WX6G.js +85 -0
  66. package/dist/catalog-W6RBOIOF.js +64 -0
  67. package/dist/catalog-W6RBOIOF.js.map +1 -0
  68. package/dist/catalogs-DINPKQXY.js +128 -0
  69. package/dist/changes-N2YZXAPF.js +135 -0
  70. package/dist/chatgpt-TPAP6BVY.js +47 -0
  71. package/dist/chats-FKVVBXVF.js +262 -0
  72. package/dist/chunk-237WE5LX.js +455 -0
  73. package/dist/chunk-237WE5LX.js.map +1 -0
  74. package/dist/chunk-24IQ6K7K.js +103 -0
  75. package/dist/chunk-2FZG5DD2.js +297 -0
  76. package/dist/chunk-2T3EH2MU.js +363 -0
  77. package/dist/chunk-2Y5UE2CV.js +174 -0
  78. package/dist/chunk-2ZZR2SOF.js +215 -0
  79. package/dist/chunk-2ZZR2SOF.js.map +1 -0
  80. package/dist/chunk-3KPQDXIU.js +1830 -0
  81. package/dist/chunk-4AFGT3L3.js +46 -0
  82. package/dist/chunk-4JKBMKFC.js +225 -0
  83. package/dist/chunk-4KBWL7S4.js +610 -0
  84. package/dist/chunk-4R3QKEDV.js +136 -0
  85. package/dist/chunk-536R4RRM.js +166 -0
  86. package/dist/chunk-536R4RRM.js.map +1 -0
  87. package/dist/chunk-57XJ7QF7.js +65 -0
  88. package/dist/chunk-57XJ7QF7.js.map +1 -0
  89. package/dist/chunk-6AJ6ZD73.js +172 -0
  90. package/dist/chunk-6AJ6ZD73.js.map +1 -0
  91. package/dist/chunk-6SL6463H.js +309 -0
  92. package/dist/chunk-7TRSFEHZ.js +51 -0
  93. package/dist/chunk-AOCG7COT.js +474 -0
  94. package/dist/chunk-AOCG7COT.js.map +1 -0
  95. package/dist/chunk-APNV7FMK.js +191 -0
  96. package/dist/chunk-AR7PU7BB.js +76 -0
  97. package/dist/chunk-AR7PU7BB.js.map +1 -0
  98. package/dist/chunk-B2HLSTK6.js +392 -0
  99. package/dist/chunk-B2HLSTK6.js.map +1 -0
  100. package/dist/chunk-B2VKGTBS.js +3151 -0
  101. package/dist/chunk-B2VKGTBS.js.map +1 -0
  102. package/dist/chunk-BC2BXRXY.js +2887 -0
  103. package/dist/chunk-BC2BXRXY.js.map +1 -0
  104. package/dist/chunk-BC6M5YYV.js +1599 -0
  105. package/dist/chunk-BC6M5YYV.js.map +1 -0
  106. package/dist/chunk-BCSOWRQL.js +76 -0
  107. package/dist/chunk-BIZH3X6P.js +817 -0
  108. package/dist/chunk-BIZH3X6P.js.map +1 -0
  109. package/dist/chunk-BJEW3LST.js +296 -0
  110. package/dist/chunk-BYKUAX26.js +106 -0
  111. package/dist/chunk-C4KJHTQU.js +1079 -0
  112. package/dist/chunk-C4KJHTQU.js.map +1 -0
  113. package/dist/chunk-C7NPNSFO.js +169 -0
  114. package/dist/chunk-CAMX6OHF.js +3182 -0
  115. package/dist/chunk-CAMX6OHF.js.map +1 -0
  116. package/dist/chunk-CLK2FPAV.js +76 -0
  117. package/dist/chunk-CLK2FPAV.js.map +1 -0
  118. package/dist/chunk-CVIMIOPO.js +94 -0
  119. package/dist/chunk-D3RTGIT4.js +2102 -0
  120. package/dist/chunk-D3RTGIT4.js.map +1 -0
  121. package/dist/chunk-DAKIMGUS.js +74 -0
  122. package/dist/chunk-DCRUGS3G.js +25 -0
  123. package/dist/chunk-DJPCTTUN.js +1743 -0
  124. package/dist/chunk-DJPCTTUN.js.map +1 -0
  125. package/dist/chunk-DJUHGO3O.js +547 -0
  126. package/dist/chunk-DJUHGO3O.js.map +1 -0
  127. package/dist/chunk-DMA77LLI.js +106 -0
  128. package/dist/chunk-EEEAC655.js +45 -0
  129. package/dist/chunk-EEEAC655.js.map +1 -0
  130. package/dist/chunk-EESOZY5S.js +26 -0
  131. package/dist/chunk-EIZMOICE.js +175 -0
  132. package/dist/chunk-F3IVR3V3.js +136 -0
  133. package/dist/chunk-FSX6CQ2Z.js +188 -0
  134. package/dist/chunk-G7LAQE56.js +56 -0
  135. package/dist/chunk-G7QKXFQ2.js +66 -0
  136. package/dist/chunk-G7XY4T6K.js +23 -0
  137. package/dist/chunk-GIWHHCD6.js +145 -0
  138. package/dist/chunk-GIWHHCD6.js.map +1 -0
  139. package/dist/chunk-GRJCZF2H.js +5187 -0
  140. package/dist/chunk-GRJCZF2H.js.map +1 -0
  141. package/dist/chunk-HCDCWXSU.js +346 -0
  142. package/dist/chunk-HKSLIV4T.js +533 -0
  143. package/dist/chunk-HKSLIV4T.js.map +1 -0
  144. package/dist/chunk-I2DNBEV6.js +4227 -0
  145. package/dist/chunk-I2DNBEV6.js.map +1 -0
  146. package/dist/chunk-I4IVUAQN.js +337 -0
  147. package/dist/chunk-ICJFL7DU.js +35 -0
  148. package/dist/chunk-ICJFL7DU.js.map +1 -0
  149. package/dist/chunk-IWNZCYWI.js +74 -0
  150. package/dist/chunk-JF5LNI6O.js +84 -0
  151. package/dist/chunk-JJZBZYNK.js +96 -0
  152. package/dist/chunk-JPK34QPS.js +134 -0
  153. package/dist/chunk-JPK34QPS.js.map +1 -0
  154. package/dist/chunk-JZP5IODJ.js +98 -0
  155. package/dist/chunk-KL5VTXIK.js +149 -0
  156. package/dist/chunk-KL5VTXIK.js.map +1 -0
  157. package/dist/chunk-KWMYTVHI.js +455 -0
  158. package/dist/chunk-LFGCOAB4.js +75 -0
  159. package/dist/chunk-LLN6WTER.js +665 -0
  160. package/dist/chunk-LLN6WTER.js.map +1 -0
  161. package/dist/chunk-LO7OQKUD.js +4410 -0
  162. package/dist/chunk-LO7OQKUD.js.map +1 -0
  163. package/dist/chunk-LPRUP3ZX.js +172 -0
  164. package/dist/chunk-MAGSNHYB.js +6214 -0
  165. package/dist/chunk-MAGSNHYB.js.map +1 -0
  166. package/dist/chunk-MD3VH5UG.js +84 -0
  167. package/dist/chunk-MFORE6F4.js +19 -0
  168. package/dist/chunk-MMBHCAON.js +160 -0
  169. package/dist/chunk-MMOTJIV6.js +216 -0
  170. package/dist/chunk-MMOTJIV6.js.map +1 -0
  171. package/dist/chunk-NIGGMK7L.js +125 -0
  172. package/dist/chunk-NN7A2ILR.js +433 -0
  173. package/dist/chunk-O356YNIW.js +509 -0
  174. package/dist/chunk-O356YNIW.js.map +1 -0
  175. package/dist/chunk-OUQMJRH6.js +159 -0
  176. package/dist/chunk-OXKUWTFL.js +494 -0
  177. package/dist/chunk-P5T7OZKV.js +26 -0
  178. package/dist/chunk-PAJJXZ3Z.js +170 -0
  179. package/dist/chunk-PC56KVAD.js +74 -0
  180. package/dist/chunk-PEWNEPDR.js +206 -0
  181. package/dist/chunk-PY4FAOW6.js +275 -0
  182. package/dist/chunk-PY4FAOW6.js.map +1 -0
  183. package/dist/chunk-Q2T4XZG4.js +139 -0
  184. package/dist/chunk-QEHICHMP.js +875 -0
  185. package/dist/chunk-QEHICHMP.js.map +1 -0
  186. package/dist/chunk-RCR6RVYE.js +274 -0
  187. package/dist/chunk-RH2H5PBV.js +111 -0
  188. package/dist/chunk-S3L2ITS7.js +111 -0
  189. package/dist/chunk-S3L2ITS7.js.map +1 -0
  190. package/dist/chunk-S3XM4LD3.js +57 -0
  191. package/dist/chunk-SEPPFM5S.js +228 -0
  192. package/dist/chunk-SEPPFM5S.js.map +1 -0
  193. package/dist/chunk-SFHL3KWY.js +96 -0
  194. package/dist/chunk-SQ7DRYCC.js +150 -0
  195. package/dist/chunk-SSVZM3P6.js +333 -0
  196. package/dist/chunk-T64IRDKW.js +52 -0
  197. package/dist/chunk-T64IRDKW.js.map +1 -0
  198. package/dist/chunk-TMNLIA7R.js +60 -0
  199. package/dist/chunk-UF55TADX.js +92 -0
  200. package/dist/chunk-UGI33KTO.js +55 -0
  201. package/dist/chunk-UK2OTLT3.js +197 -0
  202. package/dist/chunk-UU3FGKUW.js +207 -0
  203. package/dist/chunk-UUBHU2TY.js +304 -0
  204. package/dist/chunk-UUBHU2TY.js.map +1 -0
  205. package/dist/chunk-UX7HIGS7.js +67 -0
  206. package/dist/chunk-VDZIGI2C.js +98 -0
  207. package/dist/chunk-VF6JFG27.js +846 -0
  208. package/dist/chunk-VF6JFG27.js.map +1 -0
  209. package/dist/chunk-VKVIBQP3.js +486 -0
  210. package/dist/chunk-VLF2M4GZ.js +592 -0
  211. package/dist/chunk-VTF7XNOP.js +58 -0
  212. package/dist/chunk-WDA3L4NF.js +382 -0
  213. package/dist/chunk-WMN2WKNZ.js +1442 -0
  214. package/dist/chunk-WMN2WKNZ.js.map +1 -0
  215. package/dist/chunk-XDV6Q33B.js +42 -0
  216. package/dist/chunk-XQIOCIDO.js +204 -0
  217. package/dist/chunk-XQIOCIDO.js.map +1 -0
  218. package/dist/chunk-XYC26BDM.js +133 -0
  219. package/dist/chunk-YHQYDNYD.js +23992 -0
  220. package/dist/chunk-YHQYDNYD.js.map +1 -0
  221. package/dist/chunk-YOARYFC2.js +6667 -0
  222. package/dist/chunk-YOARYFC2.js.map +1 -0
  223. package/dist/chunk-YPCVPDU7.js +455 -0
  224. package/dist/chunk-YPCVPDU7.js.map +1 -0
  225. package/dist/chunk-YTWNY3RF.js +97 -0
  226. package/dist/claim-JLVISHS4.js +197 -0
  227. package/dist/cli.js +41 -37
  228. package/dist/cli.js.map +1 -1
  229. package/dist/client-G6DGRGKT.js +19 -0
  230. package/dist/code-AYN42EK7.js +76 -0
  231. package/dist/companies-XDMOP2GL.js +195 -0
  232. package/dist/complete-XM7VLC4F.js +81 -0
  233. package/dist/config-UE7GCROG.js +88 -0
  234. package/dist/connect-VTDKGYP3.js +42 -0
  235. package/dist/content-5LHM4PBE.js +85 -0
  236. package/dist/content-5LHM4PBE.js.map +1 -0
  237. package/dist/conversation-F53OE25Y.js +93 -0
  238. package/dist/conversion-report-35MLL3FA.js +125 -0
  239. package/dist/conversion-upload-command-CV2TA7OV.js +438 -0
  240. package/dist/conversion-writes-NSZPNMPE.js +120 -0
  241. package/dist/conversions-7YO6DDL3.js +135 -0
  242. package/dist/conversions-XNISCCC2.js +76 -0
  243. package/dist/countries-NMWPKFFW.js +82 -0
  244. package/dist/create-ARERZYCL.js +59 -0
  245. package/dist/create-C6ZVYIF5.js +207 -0
  246. package/dist/create-FAPJFCZE.js +235 -0
  247. package/dist/create-M7TUO3XS.js +130 -0
  248. package/dist/creatives-3YIV6IOK.js +182 -0
  249. package/dist/creatives-QZCO6WGH.js +51 -0
  250. package/dist/creatives-WJLJ3NKP.js +87 -0
  251. package/dist/credentials-2DO23MYD.js +287 -0
  252. package/dist/credentials-2DO23MYD.js.map +1 -0
  253. package/dist/critique-56MNXW7R.js +1449 -0
  254. package/dist/critique-KRIKEHF6.js +213 -0
  255. package/dist/crm-OETFQNR3.js +224 -0
  256. package/dist/crm-WXCFB4TU.js +318 -0
  257. package/dist/crop-VCP2JLQL.js +113 -0
  258. package/dist/currency-MNNDKY4Z.js +88 -0
  259. package/dist/custom-conversions-CIU525HM.js +125 -0
  260. package/dist/customers-GTPEABJI.js +56 -0
  261. package/dist/decide-NFTEKQKC.js +199 -0
  262. package/dist/decide-NFTEKQKC.js.map +1 -0
  263. package/dist/delete-5CURRI25.js +71 -0
  264. package/dist/delete-CLC2Q2OE.js +63 -0
  265. package/dist/delete-CQ6Q3URI.js +54 -0
  266. package/dist/delete-JIRZBBDD.js +69 -0
  267. package/dist/delete-LD3F4UIW.js +66 -0
  268. package/dist/delete-LGZ5OI4C.js +71 -0
  269. package/dist/demographics-EK2ZPHWK.js +138 -0
  270. package/dist/describe-BNB6643C.js +97 -0
  271. package/dist/describe-ZXGFTCDR.js +97 -0
  272. package/dist/dimensions-IU4ETG4U.js +101 -0
  273. package/dist/discard-VWCXYJWU.js +66 -0
  274. package/dist/discover-4EQWGIAN.js +172 -0
  275. package/dist/discover-4N3V5K2R.js +93 -0
  276. package/dist/discover-4N3V5K2R.js.map +1 -0
  277. package/dist/domain-I2SAGVAB.js +98 -0
  278. package/dist/download-D7TB4744.js +299 -0
  279. package/dist/draft-4VOOSJQJ.js +233 -0
  280. package/dist/draft-6KG2YFOY.js +328 -0
  281. package/dist/draft-APDGACIC.js +306 -0
  282. package/dist/draft-D76C4JR3.js +103 -0
  283. package/dist/draft-HFH2Y6F5.js +281 -0
  284. package/dist/draft-NLUJX7TA.js +307 -0
  285. package/dist/draft-NLUJX7TA.js.map +1 -0
  286. package/dist/draft-NVVWWQVC.js +217 -0
  287. package/dist/draft-NWLPLTWM.js +100 -0
  288. package/dist/engine/index.d.ts +12 -0
  289. package/dist/engine/index.js +13 -14
  290. package/dist/env-LHLGM2YJ.js +43 -0
  291. package/dist/experiment-4SUIXVBP.js +1397 -0
  292. package/dist/experiment-4SUIXVBP.js.map +1 -0
  293. package/dist/export-VGCFD7GL.js +168 -0
  294. package/dist/extract-32J7V2RX.js +113 -0
  295. package/dist/facets-WVI6VBDC.js +114 -0
  296. package/dist/favorites-WKV5H5OF.js +178 -0
  297. package/dist/feed-2CRO4HA6.js +177 -0
  298. package/dist/feed-2CRO4HA6.js.map +1 -0
  299. package/dist/feedback-NMNKYEMU.js +66 -0
  300. package/dist/feedback-record-2VYBMWMO.js +175 -0
  301. package/dist/fetch-CENBDLT6.js +176 -0
  302. package/dist/fetch-XQFPE3MI.js +139 -0
  303. package/dist/find-PNDKEOXT.js +134 -0
  304. package/dist/fit-SEWGCEW5.js +45 -0
  305. package/dist/flows-3N4RPGSP.js +247 -0
  306. package/dist/flows-3N4RPGSP.js.map +1 -0
  307. package/dist/follow-BB5KUEXZ.js +94 -0
  308. package/dist/follow-BB5KUEXZ.js.map +1 -0
  309. package/dist/follow-competitors-EURYGGXE.js +112 -0
  310. package/dist/follow-competitors-EURYGGXE.js.map +1 -0
  311. package/dist/following-CA5BQXYB.js +113 -0
  312. package/dist/following-CA5BQXYB.js.map +1 -0
  313. package/dist/fonts-KUCQAR7N.js +34 -0
  314. package/dist/forecast-G5KRTVDM.js +168 -0
  315. package/dist/forecast-G5KRTVDM.js.map +1 -0
  316. package/dist/forecast-PI52G2GL.js +104 -0
  317. package/dist/funding-ZRC25X5I.js +85 -0
  318. package/dist/funnel-WGFMUWQP.js +394 -0
  319. package/dist/funnel-WGFMUWQP.js.map +1 -0
  320. package/dist/ga4-YDKXVJOC.js +55 -0
  321. package/dist/generate-BVMMX3SS.js +262 -0
  322. package/dist/get-7MSF4RVQ.js +59 -0
  323. package/dist/get-FILH7BDT.js +78 -0
  324. package/dist/get-FILH7BDT.js.map +1 -0
  325. package/dist/get-KFVPIDIA.js +61 -0
  326. package/dist/get-NHQ2XYKZ.js +63 -0
  327. package/dist/get-TCDAYTZA.js +56 -0
  328. package/dist/get-TCDAYTZA.js.map +1 -0
  329. package/dist/get-UMMTY74K.js +92 -0
  330. package/dist/get-YM77HCL5.js +63 -0
  331. package/dist/gif-X323HXS2.js +94 -0
  332. package/dist/google-76A4MHQH.js +136 -0
  333. package/dist/google-OZTCY7HD.js +3190 -0
  334. package/dist/google-OZTCY7HD.js.map +1 -0
  335. package/dist/google-ads-S6O4MLKA.js +195 -0
  336. package/dist/group-CTIZVYX2.js +43 -0
  337. package/dist/group-HKWQ75CJ.js +43 -0
  338. package/dist/gsc-CORRYJBJ.js +30 -0
  339. package/dist/history-4U7FJGEM.js +133 -0
  340. package/dist/history-BXOMJ5PL.js +67 -0
  341. package/dist/hubspot-I5MFAZ4G.js +779 -0
  342. package/dist/icon-6QW63AHG.js +137 -0
  343. package/dist/ideas-QDS5XA4S.js +32 -0
  344. package/dist/images-NVTA2OHD.js +90 -0
  345. package/dist/improve-WR23CHYH.js +86 -0
  346. package/dist/ingest-QAVJ2J7F.js +107 -0
  347. package/dist/ingest-XJHV3GG6.js +23 -0
  348. package/dist/insights-AW7SOGHI.js +122 -0
  349. package/dist/insights-IJEPLWQH.js +423 -0
  350. package/dist/inspect-7I53PWCF.js +189 -0
  351. package/dist/inspiration-TJJFUVY2.js +53 -0
  352. package/dist/intent-VEUQS34Z.js +95 -0
  353. package/dist/job-K7LAIBYN.js +202 -0
  354. package/dist/job-create-DFZL4CGA.js +109 -0
  355. package/dist/job-status-6Q2TVTEO.js +74 -0
  356. package/dist/keep-XJFCLVCP.js +78 -0
  357. package/dist/keyword-gap-CUOGKUMM.js +130 -0
  358. package/dist/keyword-metrics-LK7FME4N.js +197 -0
  359. package/dist/keywords-for-site-4E7UU44P.js +128 -0
  360. package/dist/landing-I65PFN7H.js +28 -0
  361. package/dist/landings-SQJWZOJR.js +151 -0
  362. package/dist/landings-SQJWZOJR.js.map +1 -0
  363. package/dist/languages-KPPKX3E2.js +40 -0
  364. package/dist/languages-MGEBLO64.js +55 -0
  365. package/dist/launches-E3Y6NCQE.js +19 -0
  366. package/dist/layerize-N4IQ2KE7.js +190 -0
  367. package/dist/leads-PPMOBH7U.js +293 -0
  368. package/dist/leads-TNEQUOUN.js +90 -0
  369. package/dist/learn-QQS323PS.js +203 -0
  370. package/dist/library-4QQAVB6X.js +109 -0
  371. package/dist/lighthouse-CD47CPJM.js +75 -0
  372. package/dist/line-item-writes-QJZQUQ4E.js +208 -0
  373. package/dist/line-items-ESEAXGBV.js +103 -0
  374. package/dist/link-DPJYS4WY.js +64 -0
  375. package/dist/linkedin-EJPNC4VY.js +1008 -0
  376. package/dist/list-A45NTPSJ.js +76 -0
  377. package/dist/list-GNP4GIV2.js +51 -0
  378. package/dist/list-KQFLOVC4.js +57 -0
  379. package/dist/list-MDHK3ENJ.js +50 -0
  380. package/dist/list-PRUFXMXW.js +65 -0
  381. package/dist/list-S3BAQCTL.js +303 -0
  382. package/dist/list-UU5NPLJ7.js +151 -0
  383. package/dist/list-V525A4Z4.js +63 -0
  384. package/dist/locations-J2PVPDZU.js +67 -0
  385. package/dist/locations-TFOYESTF.js +40 -0
  386. package/dist/log-XQBEJOOW.js +92 -0
  387. package/dist/logo-KQD5KUAH.js +18 -0
  388. package/dist/lookup-QCREWUV4.js +22 -0
  389. package/dist/make-NZHJ7ICV.js +633 -0
  390. package/dist/make-NZHJ7ICV.js.map +1 -0
  391. package/dist/map-7SHU5WCJ.js +433 -0
  392. package/dist/map-7SHU5WCJ.js.map +1 -0
  393. package/dist/mcp-GATPHY4D.js +463 -0
  394. package/dist/mcp-GATPHY4D.js.map +1 -0
  395. package/dist/media-2WENMOAA.js +15 -0
  396. package/dist/media-N4C6Q4IV.js +89 -0
  397. package/dist/media-sources-BPOTW6IB.js +32 -0
  398. package/dist/members-BOYZKLNK.js +44 -0
  399. package/dist/meta-PXYHWOOG.js +69 -0
  400. package/dist/metrics-FZANUN7E.js +152 -0
  401. package/dist/models-W6EN3WB7.js +155 -0
  402. package/dist/normalize-LOMDPNFJ.js +806 -0
  403. package/dist/normalize-RP3D7BUT.js +141 -0
  404. package/dist/normalize-RP3D7BUT.js.map +1 -0
  405. package/dist/options-FXND5P2W.js +122 -0
  406. package/dist/options-FXND5P2W.js.map +1 -0
  407. package/dist/output-SR4DN3A4.js +24 -0
  408. package/dist/page-FS76L5WU.js +105 -0
  409. package/dist/pages-INMNJSX2.js +66 -0
  410. package/dist/performance-53D43XVZ.js +24 -0
  411. package/dist/pinterest-JMHFPNVW.js +96 -0
  412. package/dist/pixels-K6ZD7SXV.js +60 -0
  413. package/dist/pixels-XPBBJYE3.js +108 -0
  414. package/dist/plan-45ESBYZA.js +207 -0
  415. package/dist/plan-45ESBYZA.js.map +1 -0
  416. package/dist/preview-KXSNG3BS.js +169 -0
  417. package/dist/profile-I4IXWBAQ.js +159 -0
  418. package/dist/profile-I4IXWBAQ.js.map +1 -0
  419. package/dist/promoted-tweet-writes-I6HVQRDB.js +180 -0
  420. package/dist/promoted-tweets-YAQ5ZUXI.js +119 -0
  421. package/dist/properties-NYNEONHI.js +101 -0
  422. package/dist/publish-Z5DVKZSG.js +322 -0
  423. package/dist/query-MSZPOHFL.js +61 -0
  424. package/dist/query-RK2TFMBI.js +236 -0
  425. package/dist/query-TWNH6GV7.js +247 -0
  426. package/dist/questionnaire-CNXN2TUZ.js +93 -0
  427. package/dist/questionnaire-CNXN2TUZ.js.map +1 -0
  428. package/dist/read-2AGRYWXU.js +141 -0
  429. package/dist/read-2AGRYWXU.js.map +1 -0
  430. package/dist/reddit-6DQTBTO6.js +26 -0
  431. package/dist/refresh-TP2TOGS6.js +94 -0
  432. package/dist/release-PHQEZ2ZX.js +60 -0
  433. package/dist/relevant-pages-ORVFFVAM.js +99 -0
  434. package/dist/remove-ETLMMDEA.js +48 -0
  435. package/dist/remove-KTBM5YSH.js +50 -0
  436. package/dist/reopen-OURQR6U7.js +63 -0
  437. package/dist/rerun-HGCVZ3D4.js +84 -0
  438. package/dist/rerun-HGCVZ3D4.js.map +1 -0
  439. package/dist/research-P23YBKS3.js +62 -0
  440. package/dist/research-WCNWT5Y5.js +262 -0
  441. package/dist/reset-2NCAWWN4.js +54 -0
  442. package/dist/reset-65R2CUB5.js +54 -0
  443. package/dist/resolve-65FKZ23N.js +121 -0
  444. package/dist/retry-P5K6LE6K.js +60 -0
  445. package/dist/retry-UIPDQJ5F.js +62 -0
  446. package/dist/retry-failed-QMWQ6TRL.js +45 -0
  447. package/dist/run-NDMEYUOI.js +59 -0
  448. package/dist/run-OP3T4TCF.js +65 -0
  449. package/dist/scaffold-ad-A5MWIOQJ.js +1548 -0
  450. package/dist/scaffold-ad-A5MWIOQJ.js.map +1 -0
  451. package/dist/scaffold-static-ad-MFPDXR6J.js +971 -0
  452. package/dist/scaffold-static-ad-MFPDXR6J.js.map +1 -0
  453. package/dist/scaffold-video-N6TY36I3.js +872 -0
  454. package/dist/scaffold-video-N6TY36I3.js.map +1 -0
  455. package/dist/schedule-6D667AXB.js +61 -0
  456. package/dist/schedule-KXLQVCZW.js +66 -0
  457. package/dist/scheduled-agents-LYWEX4PU.js +49 -0
  458. package/dist/schema-5HZIAHY3.js +132 -0
  459. package/dist/schema-5HZIAHY3.js.map +1 -0
  460. package/dist/schema-CCFLFAOY.js +63 -0
  461. package/dist/scrape-DBZQFIW7.js +2241 -0
  462. package/dist/screenshot-MPFANYIH.js +102 -0
  463. package/dist/search-4AANIUUL.js +91 -0
  464. package/dist/search-EMJABZYF.js +224 -0
  465. package/dist/search-HQDN7DOF.js +174 -0
  466. package/dist/search-OVHC4CRQ.js +26 -0
  467. package/dist/search-YSGZRANA.js +92 -0
  468. package/dist/search-copy-E3EVO7YT.js +168 -0
  469. package/dist/search-copy-E3EVO7YT.js.map +1 -0
  470. package/dist/seeds-XTBVEHSF.js +101 -0
  471. package/dist/seeds-XTBVEHSF.js.map +1 -0
  472. package/dist/select-C6BKHB4B.js +94 -0
  473. package/dist/sends-HXN5HSF6.js +309 -0
  474. package/dist/sequences-FRK76ZQV.js +146 -0
  475. package/dist/set-prompt-AOSHNBFC.js +185 -0
  476. package/dist/set-prompt-AOSHNBFC.js.map +1 -0
  477. package/dist/setup-links-BM2GLSSO.js +141 -0
  478. package/dist/shared-EH5ZTQXC.js +31 -0
  479. package/dist/site-3PEJYQJW.js +177 -0
  480. package/dist/sitemaps-7KHY2KXI.js +87 -0
  481. package/dist/sites-6B76JW6C.js +101 -0
  482. package/dist/skills-SCTT3LCM.js +47 -0
  483. package/dist/sources-ODJBHNGY.js +30 -0
  484. package/dist/sources-ZTLMXFHK.js +454 -0
  485. package/dist/sources-ZTLMXFHK.js.map +1 -0
  486. package/dist/stale-2O54QXY2.js +63 -0
  487. package/dist/stats-4NBOAOR2.js +34 -0
  488. package/dist/status-NE5OBM4B.js +62 -0
  489. package/dist/sticker-NLXBIOBO.js +94 -0
  490. package/dist/stock-F3SA4VHV.js +179 -0
  491. package/dist/studio-ZPDIOFKL.js +49 -0
  492. package/dist/sync-5GJNZDGZ.js +54 -0
  493. package/dist/sync-FCNFXTFD.js +265 -0
  494. package/dist/sync-YXCZ3DHY.js +54 -0
  495. package/dist/sync-definition-IL6Z4ZI7.js +52 -0
  496. package/dist/sync-definition-IL6Z4ZI7.js.map +1 -0
  497. package/dist/tag-manager-YM4Q3CZT.js +43 -0
  498. package/dist/tags-456UOYJU.js +26 -0
  499. package/dist/tags-5YPYHV5V.js +20 -0
  500. package/dist/tags-HXMHEHG2.js +224 -0
  501. package/dist/tags-K34666RY.js +20 -0
  502. package/dist/tags-NB35ISO3.js +20 -0
  503. package/dist/targeting-constants-3CMGPWRI.js +118 -0
  504. package/dist/targeting-criteria-UKQ4WF5C.js +113 -0
  505. package/dist/targets-VQ4BQ657.js +102 -0
  506. package/dist/templates-PMUIOVDX.js +178 -0
  507. package/dist/testimonials-XZCGVD6V.js +32 -0
  508. package/dist/themes-TVXLYJ7Y.js +94 -0
  509. package/dist/themes-TVXLYJ7Y.js.map +1 -0
  510. package/dist/top-companies-VMRIDOOH.js +108 -0
  511. package/dist/translate-F5KR62LF.js +598 -0
  512. package/dist/triggers-2MZX7W6Y.js +141 -0
  513. package/dist/tweets-XWE3VYQ4.js +123 -0
  514. package/dist/unfollow-7U4UBAJX.js +46 -0
  515. package/dist/unlink-AWSNY3QS.js +67 -0
  516. package/dist/unstage-OGB43ZXO.js +95 -0
  517. package/dist/unstage-RQBOQ4DY.js +84 -0
  518. package/dist/update-4KWYHMLS.js +63 -0
  519. package/dist/update-6DKEWM64.js +142 -0
  520. package/dist/update-G6EKHPIF.js +155 -0
  521. package/dist/update-OFV452AC.js +98 -0
  522. package/dist/upload-6CJWMQ24.js +126 -0
  523. package/dist/upload-GUKMQ5MT.js +150 -0
  524. package/dist/upscale-A456MESF.js +109 -0
  525. package/dist/url-options-FGDOVUSI.js +130 -0
  526. package/dist/url-options-FGDOVUSI.js.map +1 -0
  527. package/dist/url-params-OE3UMYMM.js +98 -0
  528. package/dist/use-HBVKVT5S.js +95 -0
  529. package/dist/validate-ZCUZV3L4.js +88 -0
  530. package/dist/validate-ZCUZV3L4.js.map +1 -0
  531. package/dist/variant-HULP57YI.js +338 -0
  532. package/dist/videos-ION7UT3M.js +39 -0
  533. package/dist/view-GCDEJZII.js +121 -0
  534. package/dist/viewer-check-UKYFBFMY.js +68 -0
  535. package/dist/viewer-check-UKYFBFMY.js.map +1 -0
  536. package/dist/web-CCVD6UZ4.js +140 -0
  537. package/dist/winners-WSMWC4M5.js +113 -0
  538. package/dist/winners-WSMWC4M5.js.map +1 -0
  539. package/dist/winning-ads-UCSSFEXD.js +84 -0
  540. package/dist/winning-ads-UCSSFEXD.js.map +1 -0
  541. package/dist/write-commands-47OP673X.js +713 -0
  542. package/dist/write-commands-IJ5IFHS6.js +737 -0
  543. package/dist/write-commands-NNVDWBLG.js +1015 -0
  544. package/dist/write-commands-OBMIVFZJ.js +206 -0
  545. package/dist/x-U32DT24S.js +47 -0
  546. package/package.json +2 -2
  547. package/dist/account-2ZMZFPIU.js +0 -79
  548. package/dist/account-F6MHQ64I.js +0 -80
  549. package/dist/account-IEVEOFIK.js +0 -49
  550. package/dist/account-writes-ISE4U2FQ.js +0 -66
  551. package/dist/accounts-4CDRK4S4.js +0 -75
  552. package/dist/accounts-5QDKBZMH.js +0 -115
  553. package/dist/accounts-KYJO3JC6.js +0 -114
  554. package/dist/accounts-RHGN5WMU.js +0 -611
  555. package/dist/accounts-VINHZRWA.js +0 -77
  556. package/dist/actions-5F4ZP6M4.js +0 -55
  557. package/dist/active-entities-YUSOUR5M.js +0 -103
  558. package/dist/activities-ZVQOBHZH.js +0 -74
  559. package/dist/ad-group-writes-UU5NNKSO.js +0 -170
  560. package/dist/ad-groups-CGFXZNIA.js +0 -68
  561. package/dist/ad-writes-NALDYWOR.js +0 -174
  562. package/dist/add-577QWMCF.js +0 -97
  563. package/dist/add-CUWAW7KG.js +0 -105
  564. package/dist/add-KBPMSK2P.js +0 -104
  565. package/dist/add-OGH4DZZ5.js +0 -280
  566. package/dist/add-OGH4DZZ5.js.map +0 -1
  567. package/dist/ads-56OWZBXZ.js +0 -40
  568. package/dist/ads-H7GH7A26.js +0 -113
  569. package/dist/ads-PV7GZXPR.js +0 -77
  570. package/dist/adsets-H7QT42U6.js +0 -176
  571. package/dist/advertisers-PM4WPG4N.js +0 -120
  572. package/dist/advertisers-YMHPZYNF.js +0 -111
  573. package/dist/advertisers-YMHPZYNF.js.map +0 -1
  574. package/dist/analytics-5FALU2GL.js +0 -433
  575. package/dist/analytics-JVZKN735.js +0 -1958
  576. package/dist/analytics-JVZKN735.js.map +0 -1
  577. package/dist/animate-FWWHSYPL.js +0 -480
  578. package/dist/assign-KLYZ6USE.js +0 -77
  579. package/dist/audience-size-JHB42DB4.js +0 -94
  580. package/dist/audiences-HFRVIE2X.js +0 -85
  581. package/dist/audiences-JACGRBNN.js +0 -78
  582. package/dist/audiences-VEKGLWBG.js +0 -268
  583. package/dist/audit-5XH7WZIM.js +0 -151
  584. package/dist/audit-AD4ZZNJN.js +0 -88
  585. package/dist/autocomplete-7F3PZLEY.js +0 -111
  586. package/dist/avatars-N4SRNQI7.js +0 -38
  587. package/dist/bid-pricing-VYLVGU26.js +0 -99
  588. package/dist/brand-ASBS2HZM.js +0 -22
  589. package/dist/brief-JSZKDPGU.js +0 -477
  590. package/dist/brief-JSZKDPGU.js.map +0 -1
  591. package/dist/businesses-JBDQZZIG.js +0 -53
  592. package/dist/campaign-groups-ATE2DE4V.js +0 -95
  593. package/dist/campaign-writes-ETT57KLQ.js +0 -165
  594. package/dist/campaign-writes-SX52CJYW.js +0 -170
  595. package/dist/campaigns-FGBAS6AZ.js +0 -107
  596. package/dist/campaigns-J6VZBIV6.js +0 -109
  597. package/dist/campaigns-WBEG5QA4.js +0 -110
  598. package/dist/campaigns-X3DPCCSN.js +0 -76
  599. package/dist/canvas-K7IN7HLO.js +0 -46
  600. package/dist/canvas-K7IN7HLO.js.map +0 -1
  601. package/dist/capabilities-RDAERPYY.js +0 -144
  602. package/dist/cards-4477BFEV.js +0 -85
  603. package/dist/catalog-MENVHL5U.js +0 -65
  604. package/dist/catalog-MENVHL5U.js.map +0 -1
  605. package/dist/catalogs-G3YEVG6S.js +0 -128
  606. package/dist/changes-TP7ZZHB3.js +0 -135
  607. package/dist/chatgpt-QNUN63YS.js +0 -47
  608. package/dist/chats-YIAQGQ3X.js +0 -262
  609. package/dist/chunk-2GK33EJV.js +0 -382
  610. package/dist/chunk-2TK4DEOE.js +0 -74
  611. package/dist/chunk-35XWJEWH.js +0 -274
  612. package/dist/chunk-3CWL2LY4.js +0 -206
  613. package/dist/chunk-4NBVGARW.js +0 -1079
  614. package/dist/chunk-4NBVGARW.js.map +0 -1
  615. package/dist/chunk-4NDCTLI5.js +0 -191
  616. package/dist/chunk-5ARG3CQG.js +0 -141
  617. package/dist/chunk-5ARG3CQG.js.map +0 -1
  618. package/dist/chunk-5R5ADJ47.js +0 -2880
  619. package/dist/chunk-5R5ADJ47.js.map +0 -1
  620. package/dist/chunk-5Z2KSVIV.js +0 -67
  621. package/dist/chunk-65RIB7A6.js +0 -592
  622. package/dist/chunk-6B7VKFS4.js +0 -172
  623. package/dist/chunk-6DB2B3GF.js +0 -175
  624. package/dist/chunk-6G5K6ZC6.js +0 -46
  625. package/dist/chunk-75FDTDLH.js +0 -96
  626. package/dist/chunk-7OFNN4CT.js +0 -58
  627. package/dist/chunk-7SDFKGQ4.js +0 -363
  628. package/dist/chunk-ACANMASG.js +0 -19
  629. package/dist/chunk-ALTBBAYU.js +0 -96
  630. package/dist/chunk-ANCSKUWI.js +0 -433
  631. package/dist/chunk-AWMFUGVX.js +0 -160
  632. package/dist/chunk-BA7FDXQC.js +0 -197
  633. package/dist/chunk-BNCW67EM.js +0 -534
  634. package/dist/chunk-BNCW67EM.js.map +0 -1
  635. package/dist/chunk-BSC33FLJ.js +0 -217
  636. package/dist/chunk-BSC33FLJ.js.map +0 -1
  637. package/dist/chunk-C6U6UDHJ.js +0 -106
  638. package/dist/chunk-CHSNHVYF.js +0 -3182
  639. package/dist/chunk-CHSNHVYF.js.map +0 -1
  640. package/dist/chunk-CYEO5ZIO.js +0 -133
  641. package/dist/chunk-CYEO5ZIO.js.map +0 -1
  642. package/dist/chunk-DKGTQSLR.js +0 -310
  643. package/dist/chunk-DKGTQSLR.js.map +0 -1
  644. package/dist/chunk-DR34ZTWD.js +0 -207
  645. package/dist/chunk-E4MDJBLO.js +0 -163
  646. package/dist/chunk-E4MDJBLO.js.map +0 -1
  647. package/dist/chunk-EFSYTROP.js +0 -94
  648. package/dist/chunk-EH4C4CZK.js +0 -455
  649. package/dist/chunk-F2S5BLPE.js +0 -97
  650. package/dist/chunk-FXED3VZK.js +0 -174
  651. package/dist/chunk-G7UTTEBS.js +0 -337
  652. package/dist/chunk-GATKK4RJ.js +0 -440
  653. package/dist/chunk-GATKK4RJ.js.map +0 -1
  654. package/dist/chunk-GIJT3A5U.js +0 -166
  655. package/dist/chunk-GIJT3A5U.js.map +0 -1
  656. package/dist/chunk-GX6VAHY7.js +0 -830
  657. package/dist/chunk-GX6VAHY7.js.map +0 -1
  658. package/dist/chunk-H26L3OQY.js +0 -42
  659. package/dist/chunk-HIPDMQZ6.js +0 -136
  660. package/dist/chunk-HQSCJYZO.js +0 -26
  661. package/dist/chunk-HZ5DR5MX.js +0 -51
  662. package/dist/chunk-I4NEHDSD.js +0 -813
  663. package/dist/chunk-I4NEHDSD.js.map +0 -1
  664. package/dist/chunk-IFWP3ZDO.js +0 -215
  665. package/dist/chunk-IFWP3ZDO.js.map +0 -1
  666. package/dist/chunk-IM52NHGL.js +0 -390
  667. package/dist/chunk-IM52NHGL.js.map +0 -1
  668. package/dist/chunk-JERXV5A3.js +0 -26
  669. package/dist/chunk-JF47LEPU.js +0 -5163
  670. package/dist/chunk-JF47LEPU.js.map +0 -1
  671. package/dist/chunk-K3PN7TN5.js +0 -84
  672. package/dist/chunk-KBP7WJQB.js +0 -446
  673. package/dist/chunk-KBP7WJQB.js.map +0 -1
  674. package/dist/chunk-KLBTXETO.js +0 -23992
  675. package/dist/chunk-KLBTXETO.js.map +0 -1
  676. package/dist/chunk-KLNKEVIY.js +0 -136
  677. package/dist/chunk-KNWHUMVZ.js +0 -4381
  678. package/dist/chunk-KNWHUMVZ.js.map +0 -1
  679. package/dist/chunk-KNY76UGC.js +0 -84
  680. package/dist/chunk-KQTYTCKQ.js +0 -98
  681. package/dist/chunk-LERTEZST.js +0 -28
  682. package/dist/chunk-LERTEZST.js.map +0 -1
  683. package/dist/chunk-LIQ4SQ2T.js +0 -150
  684. package/dist/chunk-LS5MTRFI.js +0 -106
  685. package/dist/chunk-LW4VSTL5.js +0 -304
  686. package/dist/chunk-LW4VSTL5.js.map +0 -1
  687. package/dist/chunk-LZ73CZGP.js +0 -188
  688. package/dist/chunk-MADAAZZV.js +0 -169
  689. package/dist/chunk-MELOSESI.js +0 -20
  690. package/dist/chunk-MELOSESI.js.map +0 -1
  691. package/dist/chunk-MLU6STIN.js +0 -66
  692. package/dist/chunk-MZL4H5PY.js +0 -225
  693. package/dist/chunk-NAWWC5I3.js +0 -454
  694. package/dist/chunk-NAWWC5I3.js.map +0 -1
  695. package/dist/chunk-NDXBU22S.js +0 -6145
  696. package/dist/chunk-NDXBU22S.js.map +0 -1
  697. package/dist/chunk-NE4F3FHN.js +0 -1854
  698. package/dist/chunk-NE4F3FHN.js.map +0 -1
  699. package/dist/chunk-NU7JSWVA.js +0 -946
  700. package/dist/chunk-NU7JSWVA.js.map +0 -1
  701. package/dist/chunk-OTFHEHIU.js +0 -1706
  702. package/dist/chunk-OTFHEHIU.js.map +0 -1
  703. package/dist/chunk-PBA3YCZA.js +0 -76
  704. package/dist/chunk-PDTB5EX6.js +0 -57
  705. package/dist/chunk-PWGWMIIJ.js +0 -25
  706. package/dist/chunk-QSN5MZGS.js +0 -74
  707. package/dist/chunk-RPUSTYHL.js +0 -170
  708. package/dist/chunk-RX6F3GEA.js +0 -610
  709. package/dist/chunk-SB3GZFCV.js +0 -622
  710. package/dist/chunk-SB3GZFCV.js.map +0 -1
  711. package/dist/chunk-SSJK7FEV.js +0 -2886
  712. package/dist/chunk-SSJK7FEV.js.map +0 -1
  713. package/dist/chunk-STIB5DR5.js +0 -56
  714. package/dist/chunk-T3BDNJIX.js +0 -494
  715. package/dist/chunk-TD2P4HBP.js +0 -55
  716. package/dist/chunk-TEINLN64.js +0 -649
  717. package/dist/chunk-TEINLN64.js.map +0 -1
  718. package/dist/chunk-TIOQ7ZFQ.js +0 -496
  719. package/dist/chunk-TIOQ7ZFQ.js.map +0 -1
  720. package/dist/chunk-U3HAMW5W.js +0 -133
  721. package/dist/chunk-U6SYRIOB.js +0 -486
  722. package/dist/chunk-UC6BWM5J.js +0 -159
  723. package/dist/chunk-ULJ5RFOV.js +0 -76
  724. package/dist/chunk-ULJ5RFOV.js.map +0 -1
  725. package/dist/chunk-VAISMQQB.js +0 -346
  726. package/dist/chunk-VAJBWA2U.js +0 -75
  727. package/dist/chunk-VB6WJJR3.js +0 -1830
  728. package/dist/chunk-VDHQJ6HD.js +0 -23
  729. package/dist/chunk-VFIOJD5M.js +0 -309
  730. package/dist/chunk-VMDAXFRI.js +0 -111
  731. package/dist/chunk-VVZBBKRC.js +0 -296
  732. package/dist/chunk-W3B4BHQU.js +0 -31
  733. package/dist/chunk-W3B4BHQU.js.map +0 -1
  734. package/dist/chunk-W3ZHJJVT.js +0 -139
  735. package/dist/chunk-WNFIJAUO.js +0 -98
  736. package/dist/chunk-WS2GMOSG.js +0 -74
  737. package/dist/chunk-X7ZODEXJ.js +0 -36
  738. package/dist/chunk-X7ZODEXJ.js.map +0 -1
  739. package/dist/chunk-XBOK23HI.js +0 -214
  740. package/dist/chunk-XBOK23HI.js.map +0 -1
  741. package/dist/chunk-XCM6XWOB.js +0 -417
  742. package/dist/chunk-XCM6XWOB.js.map +0 -1
  743. package/dist/chunk-XL3BMSYG.js +0 -125
  744. package/dist/chunk-XMD4SHFI.js +0 -60
  745. package/dist/chunk-Y6QAJNKP.js +0 -1411
  746. package/dist/chunk-Y6QAJNKP.js.map +0 -1
  747. package/dist/chunk-YBMVHGY3.js +0 -333
  748. package/dist/chunk-YBP7O5P4.js +0 -103
  749. package/dist/chunk-YC2TQ3VC.js +0 -297
  750. package/dist/chunk-YPZYOJP6.js +0 -6664
  751. package/dist/chunk-YPZYOJP6.js.map +0 -1
  752. package/dist/chunk-ZJWUBJYQ.js +0 -204
  753. package/dist/chunk-ZJWUBJYQ.js.map +0 -1
  754. package/dist/chunk-ZPU3WDVK.js +0 -92
  755. package/dist/claim-V4F5GZJK.js +0 -197
  756. package/dist/client-VHN32ZRE.js +0 -19
  757. package/dist/code-YS6ZMGX3.js +0 -76
  758. package/dist/companies-NJGJ7XNN.js +0 -195
  759. package/dist/complete-MGNF5OAK.js +0 -81
  760. package/dist/config-CQN5FHMZ.js +0 -88
  761. package/dist/connect-PJOTRTT4.js +0 -36
  762. package/dist/content-3ZPP4SW2.js +0 -81
  763. package/dist/content-3ZPP4SW2.js.map +0 -1
  764. package/dist/conversation-4DM26FRD.js +0 -93
  765. package/dist/conversion-report-N4HANYOB.js +0 -125
  766. package/dist/conversion-upload-command-TZTHU2CD.js +0 -438
  767. package/dist/conversion-writes-LW4HQKK5.js +0 -120
  768. package/dist/conversions-JGECVZSY.js +0 -135
  769. package/dist/conversions-TS723AZV.js +0 -76
  770. package/dist/countries-ESAKTQAE.js +0 -82
  771. package/dist/create-DSGQFBI7.js +0 -207
  772. package/dist/create-I2KVDTCQ.js +0 -59
  773. package/dist/create-SBQWVLXG.js +0 -130
  774. package/dist/create-WOHPIGBK.js +0 -235
  775. package/dist/creatives-4JGVZQGC.js +0 -182
  776. package/dist/creatives-DWO5KEQC.js +0 -51
  777. package/dist/creatives-PSWCNY7U.js +0 -87
  778. package/dist/credentials-UULYCN2L.js +0 -1055
  779. package/dist/credentials-UULYCN2L.js.map +0 -1
  780. package/dist/critique-NGMZK5LX.js +0 -213
  781. package/dist/critique-TIZJ5GFM.js +0 -1449
  782. package/dist/crm-2WAR565U.js +0 -224
  783. package/dist/crm-VDXUO2YU.js +0 -318
  784. package/dist/crop-2J4RKJ6B.js +0 -113
  785. package/dist/currency-XCGKQ7FE.js +0 -88
  786. package/dist/custom-conversions-6P555U2K.js +0 -125
  787. package/dist/customers-ATENMXDO.js +0 -56
  788. package/dist/delete-3AV3ARMX.js +0 -71
  789. package/dist/delete-A5XD52K4.js +0 -69
  790. package/dist/delete-AVMZYNVT.js +0 -54
  791. package/dist/delete-H744GNS4.js +0 -63
  792. package/dist/delete-MRM2S4Z5.js +0 -71
  793. package/dist/delete-OEYPFATY.js +0 -66
  794. package/dist/demographics-M5LJF3RZ.js +0 -138
  795. package/dist/describe-6NVOWIBE.js +0 -97
  796. package/dist/describe-P3PPIQME.js +0 -97
  797. package/dist/dimensions-EYAYO27I.js +0 -101
  798. package/dist/discard-72I6SM7G.js +0 -66
  799. package/dist/discover-BJPZNXUQ.js +0 -172
  800. package/dist/domain-R4EIZD2W.js +0 -98
  801. package/dist/download-7T6HIJKD.js +0 -299
  802. package/dist/draft-34C3F5U4.js +0 -217
  803. package/dist/draft-BBFJNZ5X.js +0 -328
  804. package/dist/draft-BGUJDHXR.js +0 -103
  805. package/dist/draft-BV2QRPZ4.js +0 -107
  806. package/dist/draft-BV2QRPZ4.js.map +0 -1
  807. package/dist/draft-KIBMVKSR.js +0 -100
  808. package/dist/draft-THPZFASM.js +0 -281
  809. package/dist/draft-YDY2Q2K6.js +0 -233
  810. package/dist/draft-YYYRWF7M.js +0 -306
  811. package/dist/env-KIP2J2UB.js +0 -43
  812. package/dist/experiment-LKK77YAN.js +0 -1377
  813. package/dist/experiment-LKK77YAN.js.map +0 -1
  814. package/dist/export-JQRMBJ7D.js +0 -168
  815. package/dist/extract-7QKLME7Z.js +0 -113
  816. package/dist/facets-F2H52MS4.js +0 -114
  817. package/dist/favorites-NSGF4OV5.js +0 -178
  818. package/dist/feed-RV4KPPXM.js +0 -157
  819. package/dist/feed-RV4KPPXM.js.map +0 -1
  820. package/dist/feedback-IQKKT4MC.js +0 -66
  821. package/dist/feedback-record-UZV4Y7UD.js +0 -175
  822. package/dist/fetch-XF76JABV.js +0 -139
  823. package/dist/fetch-ZUAZPLAE.js +0 -176
  824. package/dist/find-OTDIX6V4.js +0 -134
  825. package/dist/fit-2CA4JH7N.js +0 -45
  826. package/dist/flows-CWXCXEUD.js +0 -244
  827. package/dist/flows-CWXCXEUD.js.map +0 -1
  828. package/dist/follow-FN7LV3WV.js +0 -82
  829. package/dist/follow-FN7LV3WV.js.map +0 -1
  830. package/dist/follow-competitors-MKXFHLXB.js +0 -131
  831. package/dist/follow-competitors-MKXFHLXB.js.map +0 -1
  832. package/dist/following-RKC2FLHI.js +0 -109
  833. package/dist/following-RKC2FLHI.js.map +0 -1
  834. package/dist/fonts-F2XUCIIW.js +0 -34
  835. package/dist/forecast-IDKJYM2B.js +0 -104
  836. package/dist/funding-NYO65IMT.js +0 -85
  837. package/dist/funnel-RLGQGYKO.js +0 -837
  838. package/dist/funnel-RLGQGYKO.js.map +0 -1
  839. package/dist/ga4-UDQ2HA2J.js +0 -55
  840. package/dist/generate-MMBYB44G.js +0 -262
  841. package/dist/get-3L6W3E3T.js +0 -59
  842. package/dist/get-6WEYKOY6.js +0 -63
  843. package/dist/get-C6UQ22HH.js +0 -54
  844. package/dist/get-C6UQ22HH.js.map +0 -1
  845. package/dist/get-EEUR6SAW.js +0 -78
  846. package/dist/get-EEUR6SAW.js.map +0 -1
  847. package/dist/get-P743RPSI.js +0 -63
  848. package/dist/get-XN5ZGDIK.js +0 -61
  849. package/dist/get-YIHTAMRT.js +0 -92
  850. package/dist/gif-53ULFVLR.js +0 -94
  851. package/dist/google-35GDU3G3.js +0 -1872
  852. package/dist/google-35GDU3G3.js.map +0 -1
  853. package/dist/google-KTO3PLEU.js +0 -136
  854. package/dist/google-ads-Q37I2D5P.js +0 -195
  855. package/dist/group-EFZ3AJIE.js +0 -43
  856. package/dist/group-GKWCCX66.js +0 -43
  857. package/dist/gsc-P3QYGDV2.js +0 -30
  858. package/dist/history-4II5QA4B.js +0 -133
  859. package/dist/history-DBIEYQHY.js +0 -67
  860. package/dist/hubspot-TTITJFBO.js +0 -779
  861. package/dist/icon-I43F77FV.js +0 -137
  862. package/dist/ideas-V4Q6JDKV.js +0 -32
  863. package/dist/images-SP5REF6E.js +0 -90
  864. package/dist/improve-BCCU5AS6.js +0 -86
  865. package/dist/ingest-574GIFAR.js +0 -107
  866. package/dist/ingest-IC4T76W6.js +0 -23
  867. package/dist/insights-NZWSJKU4.js +0 -423
  868. package/dist/insights-ZIU6FJMS.js +0 -122
  869. package/dist/inspect-ATHYY6A2.js +0 -189
  870. package/dist/inspiration-P265QJ2H.js +0 -53
  871. package/dist/intent-E3UIVZBN.js +0 -95
  872. package/dist/job-L7RJZMSG.js +0 -202
  873. package/dist/job-create-JUDAN52O.js +0 -109
  874. package/dist/job-status-U43WE3RJ.js +0 -74
  875. package/dist/keep-55CPC7DG.js +0 -78
  876. package/dist/keyword-gap-BG6M665A.js +0 -130
  877. package/dist/keyword-metrics-J4UPUDN7.js +0 -197
  878. package/dist/keywords-for-site-MWADFEO2.js +0 -128
  879. package/dist/landing-R6DN7XLK.js +0 -28
  880. package/dist/languages-HORKPDNH.js +0 -40
  881. package/dist/languages-JSGWCC7Z.js +0 -55
  882. package/dist/layerize-RPD6SNP6.js +0 -190
  883. package/dist/leads-7EVHMNUF.js +0 -293
  884. package/dist/leads-JM6HUERX.js +0 -90
  885. package/dist/learn-LGS2F5TR.js +0 -203
  886. package/dist/library-ARKRLCNJ.js +0 -109
  887. package/dist/lighthouse-6ZC45E53.js +0 -75
  888. package/dist/line-item-writes-KUYEXSIH.js +0 -208
  889. package/dist/line-items-GIWLP3FL.js +0 -103
  890. package/dist/link-PVM7XJQI.js +0 -64
  891. package/dist/linkedin-WX54EAX6.js +0 -1008
  892. package/dist/list-4ZKQZBCL.js +0 -151
  893. package/dist/list-7MVBXOJT.js +0 -51
  894. package/dist/list-A5UCIR2J.js +0 -65
  895. package/dist/list-AL7N6X2P.js +0 -50
  896. package/dist/list-LI4OGQFW.js +0 -57
  897. package/dist/list-MCEFXC6L.js +0 -63
  898. package/dist/list-P7NAFN6J.js +0 -76
  899. package/dist/list-WR7QYTON.js +0 -303
  900. package/dist/locations-74TPQWAT.js +0 -67
  901. package/dist/locations-J4G5RNPH.js +0 -40
  902. package/dist/log-U6IWZGOF.js +0 -92
  903. package/dist/logo-2IP663QO.js +0 -18
  904. package/dist/lookup-XK45W2SH.js +0 -22
  905. package/dist/make-RXFHEGUI.js +0 -593
  906. package/dist/make-RXFHEGUI.js.map +0 -1
  907. package/dist/map-TWL7T4KP.js +0 -404
  908. package/dist/map-TWL7T4KP.js.map +0 -1
  909. package/dist/mcp-HVAVJGGS.js +0 -476
  910. package/dist/mcp-HVAVJGGS.js.map +0 -1
  911. package/dist/media-6CQYG4UY.js +0 -89
  912. package/dist/media-M7E6V2XU.js +0 -15
  913. package/dist/media-sources-JWGO23BZ.js +0 -32
  914. package/dist/members-5FAW4YE7.js +0 -44
  915. package/dist/meta-EZ4SY25M.js +0 -69
  916. package/dist/metrics-SQDJ5NQO.js +0 -152
  917. package/dist/models-7U3GRYHF.js +0 -155
  918. package/dist/normalize-GW4GZNVY.js +0 -138
  919. package/dist/normalize-GW4GZNVY.js.map +0 -1
  920. package/dist/normalize-ICQF2AST.js +0 -806
  921. package/dist/options-NSUCENLU.js +0 -121
  922. package/dist/options-NSUCENLU.js.map +0 -1
  923. package/dist/output-RAH3TSIL.js +0 -24
  924. package/dist/page-GS3WLT2C.js +0 -105
  925. package/dist/pages-FXYQLHSJ.js +0 -66
  926. package/dist/performance-FGCDWHMC.js +0 -24
  927. package/dist/pinterest-AUH7WBA7.js +0 -96
  928. package/dist/pixels-45A55MOP.js +0 -60
  929. package/dist/pixels-ZFF4BGUH.js +0 -108
  930. package/dist/preview-AD4GKYIA.js +0 -169
  931. package/dist/promoted-tweet-writes-BPWTDESL.js +0 -180
  932. package/dist/promoted-tweets-OS3NHYVE.js +0 -119
  933. package/dist/properties-L2XIYQDS.js +0 -101
  934. package/dist/publish-SXZEWBVJ.js +0 -322
  935. package/dist/query-IEZRY6HV.js +0 -1341
  936. package/dist/query-IEZRY6HV.js.map +0 -1
  937. package/dist/query-SGGBCHTF.js +0 -236
  938. package/dist/query-VTGVZQIO.js +0 -247
  939. package/dist/read-LSF7DYTG.js +0 -140
  940. package/dist/read-LSF7DYTG.js.map +0 -1
  941. package/dist/reddit-TF6K37SB.js +0 -26
  942. package/dist/refresh-APVDWXRZ.js +0 -94
  943. package/dist/release-32SEJU4L.js +0 -60
  944. package/dist/relevant-pages-OWMNUCP7.js +0 -99
  945. package/dist/remove-6LGGKMLJ.js +0 -48
  946. package/dist/remove-U64GTHLQ.js +0 -50
  947. package/dist/reopen-5VS233SF.js +0 -63
  948. package/dist/rerun-7Z45QOOO.js +0 -85
  949. package/dist/rerun-7Z45QOOO.js.map +0 -1
  950. package/dist/research-O7CJV5IS.js +0 -62
  951. package/dist/research-QYSQ6LW4.js +0 -262
  952. package/dist/reset-22FC7BXQ.js +0 -54
  953. package/dist/reset-47B5VPT4.js +0 -54
  954. package/dist/resolve-7KQGVTQT.js +0 -121
  955. package/dist/retry-J5UVLS72.js +0 -62
  956. package/dist/retry-UJ5UF4BM.js +0 -60
  957. package/dist/retry-failed-6HXPUVXJ.js +0 -45
  958. package/dist/run-SI4FA32F.js +0 -65
  959. package/dist/run-TFLFBQU2.js +0 -60
  960. package/dist/scaffold-ad-SEXNE2K6.js +0 -1549
  961. package/dist/scaffold-ad-SEXNE2K6.js.map +0 -1
  962. package/dist/scaffold-static-ad-VBOL6CLN.js +0 -966
  963. package/dist/scaffold-static-ad-VBOL6CLN.js.map +0 -1
  964. package/dist/scaffold-video-Z37MIBDI.js +0 -873
  965. package/dist/scaffold-video-Z37MIBDI.js.map +0 -1
  966. package/dist/schedule-52ZM4KRQ.js +0 -61
  967. package/dist/schedule-O2K6M43V.js +0 -66
  968. package/dist/scheduled-agents-PCWCQAKP.js +0 -49
  969. package/dist/schema-6GR77VJG.js +0 -63
  970. package/dist/schema-FY6ORDXZ.js +0 -129
  971. package/dist/schema-FY6ORDXZ.js.map +0 -1
  972. package/dist/scrape-ETAMW43A.js +0 -2241
  973. package/dist/screenshot-YCQF25ZB.js +0 -102
  974. package/dist/search-742XSULP.js +0 -224
  975. package/dist/search-MEEM4D3W.js +0 -92
  976. package/dist/search-NS7XNRZC.js +0 -174
  977. package/dist/search-OQNGSMUH.js +0 -91
  978. package/dist/search-UO5KJTYS.js +0 -26
  979. package/dist/seeds-N6FF5S4T.js +0 -101
  980. package/dist/seeds-N6FF5S4T.js.map +0 -1
  981. package/dist/select-4XCYVV2G.js +0 -94
  982. package/dist/sends-WGJVQUMF.js +0 -309
  983. package/dist/sequences-OIPVR7JL.js +0 -146
  984. package/dist/set-prompt-TRJBYA3D.js +0 -186
  985. package/dist/set-prompt-TRJBYA3D.js.map +0 -1
  986. package/dist/setup-links-V3URI7DL.js +0 -141
  987. package/dist/shared-HJDFNID4.js +0 -31
  988. package/dist/site-WIQ7SSU3.js +0 -177
  989. package/dist/sitemaps-POPZJTAX.js +0 -87
  990. package/dist/sites-262H6LM4.js +0 -101
  991. package/dist/skills-6TQZLIMP.js +0 -47
  992. package/dist/sources-DWJXOLEH.js +0 -421
  993. package/dist/sources-DWJXOLEH.js.map +0 -1
  994. package/dist/sources-L453U5MT.js +0 -30
  995. package/dist/stale-6OVG6VME.js +0 -63
  996. package/dist/stats-NNXZMPZR.js +0 -34
  997. package/dist/status-WXWU54WR.js +0 -62
  998. package/dist/sticker-4KMBSMP5.js +0 -94
  999. package/dist/stock-2YCDN3N6.js +0 -179
  1000. package/dist/studio-C5K3YX3P.js +0 -49
  1001. package/dist/sync-CDZUTGV3.js +0 -54
  1002. package/dist/sync-CF7FVUQJ.js +0 -54
  1003. package/dist/sync-ZSNUBYPM.js +0 -265
  1004. package/dist/sync-definition-BAJQUBE3.js +0 -53
  1005. package/dist/tag-manager-DYZUOIAS.js +0 -43
  1006. package/dist/tags-6RY23XOG.js +0 -20
  1007. package/dist/tags-BHFQWNPL.js +0 -224
  1008. package/dist/tags-SG3NVC3J.js +0 -26
  1009. package/dist/tags-VN5HTL35.js +0 -20
  1010. package/dist/tags-WR6PDIDR.js +0 -20
  1011. package/dist/targeting-constants-XJ2VOW7K.js +0 -118
  1012. package/dist/targeting-criteria-5EXP2NXF.js +0 -113
  1013. package/dist/targets-WUVEJPSD.js +0 -102
  1014. package/dist/templates-LOJQX2NG.js +0 -178
  1015. package/dist/testimonials-6M5DXORT.js +0 -32
  1016. package/dist/top-companies-E2OMMPSV.js +0 -108
  1017. package/dist/translate-AW4CUKDA.js +0 -598
  1018. package/dist/triggers-MRXIDCSN.js +0 -141
  1019. package/dist/tweets-ATP3FQAC.js +0 -123
  1020. package/dist/unfollow-CBVPGPF7.js +0 -46
  1021. package/dist/unlink-HNL747YM.js +0 -67
  1022. package/dist/unstage-4ZEULXEQ.js +0 -95
  1023. package/dist/unstage-OL2JDCLK.js +0 -84
  1024. package/dist/update-4KGIT4BF.js +0 -142
  1025. package/dist/update-JPBUF7M2.js +0 -98
  1026. package/dist/update-RTTC3SAK.js +0 -155
  1027. package/dist/update-YNNRX5B2.js +0 -63
  1028. package/dist/upload-L5SYZB3X.js +0 -150
  1029. package/dist/upload-UIXPCSXJ.js +0 -126
  1030. package/dist/upscale-YWRLFU22.js +0 -109
  1031. package/dist/url-options-GGXAL3J4.js +0 -127
  1032. package/dist/url-options-GGXAL3J4.js.map +0 -1
  1033. package/dist/url-params-K47CE7Y5.js +0 -98
  1034. package/dist/use-UT2DIZOG.js +0 -95
  1035. package/dist/validate-TD2BY4VE.js +0 -89
  1036. package/dist/validate-TD2BY4VE.js.map +0 -1
  1037. package/dist/variant-FLZJYGYL.js +0 -338
  1038. package/dist/videos-BP3BKNTY.js +0 -39
  1039. package/dist/view-NPAG66QK.js +0 -121
  1040. package/dist/viewer-check-HFRUJ4ZU.js +0 -69
  1041. package/dist/web-RPSGFN4U.js +0 -140
  1042. package/dist/winners-I5BMATJZ.js +0 -79
  1043. package/dist/winners-I5BMATJZ.js.map +0 -1
  1044. package/dist/winning-ads-WUENRDVJ.js +0 -62
  1045. package/dist/winning-ads-WUENRDVJ.js.map +0 -1
  1046. package/dist/write-commands-4WARNR2T.js +0 -1015
  1047. package/dist/write-commands-ERKVRHTC.js +0 -206
  1048. package/dist/write-commands-TAYGTJEZ.js +0 -737
  1049. package/dist/write-commands-WTRSOSO3.js +0 -713
  1050. package/dist/x-VZCELH3P.js +0 -47
  1051. /package/dist/{account-2ZMZFPIU.js.map → account-JG7QD522.js.map} +0 -0
  1052. /package/dist/{account-F6MHQ64I.js.map → account-V6PB6PA5.js.map} +0 -0
  1053. /package/dist/{account-IEVEOFIK.js.map → account-VLPX7EZT.js.map} +0 -0
  1054. /package/dist/{account-writes-ISE4U2FQ.js.map → account-writes-BGREY7ZL.js.map} +0 -0
  1055. /package/dist/{accounts-KYJO3JC6.js.map → accounts-2FINK5GZ.js.map} +0 -0
  1056. /package/dist/{accounts-4CDRK4S4.js.map → accounts-2UV5Z3Y6.js.map} +0 -0
  1057. /package/dist/{accounts-VINHZRWA.js.map → accounts-3EX2PFJB.js.map} +0 -0
  1058. /package/dist/{accounts-5QDKBZMH.js.map → accounts-G2QT3ZVP.js.map} +0 -0
  1059. /package/dist/{accounts-RHGN5WMU.js.map → accounts-N63J5YTK.js.map} +0 -0
  1060. /package/dist/{actions-5F4ZP6M4.js.map → actions-PA2BPIYO.js.map} +0 -0
  1061. /package/dist/{active-entities-YUSOUR5M.js.map → active-entities-RDXDSMA2.js.map} +0 -0
  1062. /package/dist/{activities-ZVQOBHZH.js.map → activities-RBTU2Q24.js.map} +0 -0
  1063. /package/dist/{ad-group-writes-UU5NNKSO.js.map → ad-group-writes-5NTRJTVE.js.map} +0 -0
  1064. /package/dist/{ad-groups-CGFXZNIA.js.map → ad-groups-4OTAKWUC.js.map} +0 -0
  1065. /package/dist/{ad-writes-NALDYWOR.js.map → ad-writes-T7W3DDKK.js.map} +0 -0
  1066. /package/dist/{add-CUWAW7KG.js.map → add-4VKA4NDH.js.map} +0 -0
  1067. /package/dist/{add-577QWMCF.js.map → add-MQO33HL3.js.map} +0 -0
  1068. /package/dist/{add-KBPMSK2P.js.map → add-QM7ANAVG.js.map} +0 -0
  1069. /package/dist/{ads-H7GH7A26.js.map → ads-IJCFN2N3.js.map} +0 -0
  1070. /package/dist/{ads-56OWZBXZ.js.map → ads-QKMLAPZC.js.map} +0 -0
  1071. /package/dist/{ads-PV7GZXPR.js.map → ads-XYAWONXR.js.map} +0 -0
  1072. /package/dist/{adsets-H7QT42U6.js.map → adsets-DPTIKGTG.js.map} +0 -0
  1073. /package/dist/{advertisers-PM4WPG4N.js.map → advertisers-SZFDOPBQ.js.map} +0 -0
  1074. /package/dist/{analytics-5FALU2GL.js.map → analytics-HFBYIPZ7.js.map} +0 -0
  1075. /package/dist/{animate-FWWHSYPL.js.map → animate-LUKNHCF4.js.map} +0 -0
  1076. /package/dist/{assign-KLYZ6USE.js.map → assign-QCICUD72.js.map} +0 -0
  1077. /package/dist/{audience-size-JHB42DB4.js.map → audience-size-HML4BLHJ.js.map} +0 -0
  1078. /package/dist/{audiences-VEKGLWBG.js.map → audiences-BSABKS5K.js.map} +0 -0
  1079. /package/dist/{audiences-JACGRBNN.js.map → audiences-FWOOSUSJ.js.map} +0 -0
  1080. /package/dist/{audiences-HFRVIE2X.js.map → audiences-VK4M7GLQ.js.map} +0 -0
  1081. /package/dist/{audit-5XH7WZIM.js.map → audit-DUM55J5U.js.map} +0 -0
  1082. /package/dist/{audit-AD4ZZNJN.js.map → audit-JR5R75XK.js.map} +0 -0
  1083. /package/dist/{autocomplete-7F3PZLEY.js.map → autocomplete-VX4PMMLR.js.map} +0 -0
  1084. /package/dist/{avatars-N4SRNQI7.js.map → avatars-5KCRSUJ3.js.map} +0 -0
  1085. /package/dist/{bid-pricing-VYLVGU26.js.map → bid-pricing-AIUACXUH.js.map} +0 -0
  1086. /package/dist/{brand-ASBS2HZM.js.map → brand-UBTC2WXR.js.map} +0 -0
  1087. /package/dist/{businesses-JBDQZZIG.js.map → businesses-P3RX4UXS.js.map} +0 -0
  1088. /package/dist/{campaign-groups-ATE2DE4V.js.map → campaign-groups-SJZEDIBL.js.map} +0 -0
  1089. /package/dist/{campaign-writes-SX52CJYW.js.map → campaign-writes-5BPVXG4C.js.map} +0 -0
  1090. /package/dist/{campaign-writes-ETT57KLQ.js.map → campaign-writes-VE6QLIDA.js.map} +0 -0
  1091. /package/dist/{campaigns-J6VZBIV6.js.map → campaigns-JEWEDCTC.js.map} +0 -0
  1092. /package/dist/{campaigns-WBEG5QA4.js.map → campaigns-MEIMSHJF.js.map} +0 -0
  1093. /package/dist/{campaigns-FGBAS6AZ.js.map → campaigns-NCGJNJKS.js.map} +0 -0
  1094. /package/dist/{campaigns-X3DPCCSN.js.map → campaigns-XY7QWHDN.js.map} +0 -0
  1095. /package/dist/{capabilities-RDAERPYY.js.map → capabilities-W6SPXOPF.js.map} +0 -0
  1096. /package/dist/{cards-4477BFEV.js.map → cards-CLD4WX6G.js.map} +0 -0
  1097. /package/dist/{catalogs-G3YEVG6S.js.map → catalogs-DINPKQXY.js.map} +0 -0
  1098. /package/dist/{changes-TP7ZZHB3.js.map → changes-N2YZXAPF.js.map} +0 -0
  1099. /package/dist/{chatgpt-QNUN63YS.js.map → chatgpt-TPAP6BVY.js.map} +0 -0
  1100. /package/dist/{chats-YIAQGQ3X.js.map → chats-FKVVBXVF.js.map} +0 -0
  1101. /package/dist/{chunk-YBP7O5P4.js.map → chunk-24IQ6K7K.js.map} +0 -0
  1102. /package/dist/{chunk-YC2TQ3VC.js.map → chunk-2FZG5DD2.js.map} +0 -0
  1103. /package/dist/{chunk-7SDFKGQ4.js.map → chunk-2T3EH2MU.js.map} +0 -0
  1104. /package/dist/{chunk-FXED3VZK.js.map → chunk-2Y5UE2CV.js.map} +0 -0
  1105. /package/dist/{chunk-VB6WJJR3.js.map → chunk-3KPQDXIU.js.map} +0 -0
  1106. /package/dist/{chunk-6G5K6ZC6.js.map → chunk-4AFGT3L3.js.map} +0 -0
  1107. /package/dist/{chunk-MZL4H5PY.js.map → chunk-4JKBMKFC.js.map} +0 -0
  1108. /package/dist/{chunk-RX6F3GEA.js.map → chunk-4KBWL7S4.js.map} +0 -0
  1109. /package/dist/{chunk-KLNKEVIY.js.map → chunk-4R3QKEDV.js.map} +0 -0
  1110. /package/dist/{chunk-VFIOJD5M.js.map → chunk-6SL6463H.js.map} +0 -0
  1111. /package/dist/{chunk-HZ5DR5MX.js.map → chunk-7TRSFEHZ.js.map} +0 -0
  1112. /package/dist/{chunk-4NDCTLI5.js.map → chunk-APNV7FMK.js.map} +0 -0
  1113. /package/dist/{chunk-PBA3YCZA.js.map → chunk-BCSOWRQL.js.map} +0 -0
  1114. /package/dist/{chunk-VVZBBKRC.js.map → chunk-BJEW3LST.js.map} +0 -0
  1115. /package/dist/{chunk-LS5MTRFI.js.map → chunk-BYKUAX26.js.map} +0 -0
  1116. /package/dist/{chunk-MADAAZZV.js.map → chunk-C7NPNSFO.js.map} +0 -0
  1117. /package/dist/{chunk-EFSYTROP.js.map → chunk-CVIMIOPO.js.map} +0 -0
  1118. /package/dist/{chunk-WS2GMOSG.js.map → chunk-DAKIMGUS.js.map} +0 -0
  1119. /package/dist/{chunk-PWGWMIIJ.js.map → chunk-DCRUGS3G.js.map} +0 -0
  1120. /package/dist/{chunk-C6U6UDHJ.js.map → chunk-DMA77LLI.js.map} +0 -0
  1121. /package/dist/{chunk-JERXV5A3.js.map → chunk-EESOZY5S.js.map} +0 -0
  1122. /package/dist/{chunk-6DB2B3GF.js.map → chunk-EIZMOICE.js.map} +0 -0
  1123. /package/dist/{chunk-HIPDMQZ6.js.map → chunk-F3IVR3V3.js.map} +0 -0
  1124. /package/dist/{chunk-LZ73CZGP.js.map → chunk-FSX6CQ2Z.js.map} +0 -0
  1125. /package/dist/{chunk-STIB5DR5.js.map → chunk-G7LAQE56.js.map} +0 -0
  1126. /package/dist/{chunk-MLU6STIN.js.map → chunk-G7QKXFQ2.js.map} +0 -0
  1127. /package/dist/{chunk-VDHQJ6HD.js.map → chunk-G7XY4T6K.js.map} +0 -0
  1128. /package/dist/{chunk-VAISMQQB.js.map → chunk-HCDCWXSU.js.map} +0 -0
  1129. /package/dist/{chunk-G7UTTEBS.js.map → chunk-I4IVUAQN.js.map} +0 -0
  1130. /package/dist/{chunk-2TK4DEOE.js.map → chunk-IWNZCYWI.js.map} +0 -0
  1131. /package/dist/{chunk-K3PN7TN5.js.map → chunk-JF5LNI6O.js.map} +0 -0
  1132. /package/dist/{chunk-ALTBBAYU.js.map → chunk-JJZBZYNK.js.map} +0 -0
  1133. /package/dist/{chunk-WNFIJAUO.js.map → chunk-JZP5IODJ.js.map} +0 -0
  1134. /package/dist/{chunk-EH4C4CZK.js.map → chunk-KWMYTVHI.js.map} +0 -0
  1135. /package/dist/{chunk-VAJBWA2U.js.map → chunk-LFGCOAB4.js.map} +0 -0
  1136. /package/dist/{chunk-6B7VKFS4.js.map → chunk-LPRUP3ZX.js.map} +0 -0
  1137. /package/dist/{chunk-KNY76UGC.js.map → chunk-MD3VH5UG.js.map} +0 -0
  1138. /package/dist/{chunk-ACANMASG.js.map → chunk-MFORE6F4.js.map} +0 -0
  1139. /package/dist/{chunk-AWMFUGVX.js.map → chunk-MMBHCAON.js.map} +0 -0
  1140. /package/dist/{chunk-XL3BMSYG.js.map → chunk-NIGGMK7L.js.map} +0 -0
  1141. /package/dist/{chunk-ANCSKUWI.js.map → chunk-NN7A2ILR.js.map} +0 -0
  1142. /package/dist/{chunk-UC6BWM5J.js.map → chunk-OUQMJRH6.js.map} +0 -0
  1143. /package/dist/{chunk-T3BDNJIX.js.map → chunk-OXKUWTFL.js.map} +0 -0
  1144. /package/dist/{chunk-HQSCJYZO.js.map → chunk-P5T7OZKV.js.map} +0 -0
  1145. /package/dist/{chunk-RPUSTYHL.js.map → chunk-PAJJXZ3Z.js.map} +0 -0
  1146. /package/dist/{chunk-QSN5MZGS.js.map → chunk-PC56KVAD.js.map} +0 -0
  1147. /package/dist/{chunk-3CWL2LY4.js.map → chunk-PEWNEPDR.js.map} +0 -0
  1148. /package/dist/{chunk-W3ZHJJVT.js.map → chunk-Q2T4XZG4.js.map} +0 -0
  1149. /package/dist/{chunk-35XWJEWH.js.map → chunk-RCR6RVYE.js.map} +0 -0
  1150. /package/dist/{chunk-VMDAXFRI.js.map → chunk-RH2H5PBV.js.map} +0 -0
  1151. /package/dist/{chunk-PDTB5EX6.js.map → chunk-S3XM4LD3.js.map} +0 -0
  1152. /package/dist/{chunk-75FDTDLH.js.map → chunk-SFHL3KWY.js.map} +0 -0
  1153. /package/dist/{chunk-LIQ4SQ2T.js.map → chunk-SQ7DRYCC.js.map} +0 -0
  1154. /package/dist/{chunk-YBMVHGY3.js.map → chunk-SSVZM3P6.js.map} +0 -0
  1155. /package/dist/{chunk-XMD4SHFI.js.map → chunk-TMNLIA7R.js.map} +0 -0
  1156. /package/dist/{chunk-ZPU3WDVK.js.map → chunk-UF55TADX.js.map} +0 -0
  1157. /package/dist/{chunk-TD2P4HBP.js.map → chunk-UGI33KTO.js.map} +0 -0
  1158. /package/dist/{chunk-BA7FDXQC.js.map → chunk-UK2OTLT3.js.map} +0 -0
  1159. /package/dist/{chunk-DR34ZTWD.js.map → chunk-UU3FGKUW.js.map} +0 -0
  1160. /package/dist/{chunk-5Z2KSVIV.js.map → chunk-UX7HIGS7.js.map} +0 -0
  1161. /package/dist/{chunk-KQTYTCKQ.js.map → chunk-VDZIGI2C.js.map} +0 -0
  1162. /package/dist/{chunk-U6SYRIOB.js.map → chunk-VKVIBQP3.js.map} +0 -0
  1163. /package/dist/{chunk-65RIB7A6.js.map → chunk-VLF2M4GZ.js.map} +0 -0
  1164. /package/dist/{chunk-7OFNN4CT.js.map → chunk-VTF7XNOP.js.map} +0 -0
  1165. /package/dist/{chunk-2GK33EJV.js.map → chunk-WDA3L4NF.js.map} +0 -0
  1166. /package/dist/{chunk-H26L3OQY.js.map → chunk-XDV6Q33B.js.map} +0 -0
  1167. /package/dist/{chunk-U3HAMW5W.js.map → chunk-XYC26BDM.js.map} +0 -0
  1168. /package/dist/{chunk-F2S5BLPE.js.map → chunk-YTWNY3RF.js.map} +0 -0
  1169. /package/dist/{claim-V4F5GZJK.js.map → claim-JLVISHS4.js.map} +0 -0
  1170. /package/dist/{client-VHN32ZRE.js.map → client-G6DGRGKT.js.map} +0 -0
  1171. /package/dist/{code-YS6ZMGX3.js.map → code-AYN42EK7.js.map} +0 -0
  1172. /package/dist/{companies-NJGJ7XNN.js.map → companies-XDMOP2GL.js.map} +0 -0
  1173. /package/dist/{complete-MGNF5OAK.js.map → complete-XM7VLC4F.js.map} +0 -0
  1174. /package/dist/{config-CQN5FHMZ.js.map → config-UE7GCROG.js.map} +0 -0
  1175. /package/dist/{connect-PJOTRTT4.js.map → connect-VTDKGYP3.js.map} +0 -0
  1176. /package/dist/{conversation-4DM26FRD.js.map → conversation-F53OE25Y.js.map} +0 -0
  1177. /package/dist/{conversion-report-N4HANYOB.js.map → conversion-report-35MLL3FA.js.map} +0 -0
  1178. /package/dist/{conversion-upload-command-TZTHU2CD.js.map → conversion-upload-command-CV2TA7OV.js.map} +0 -0
  1179. /package/dist/{conversion-writes-LW4HQKK5.js.map → conversion-writes-NSZPNMPE.js.map} +0 -0
  1180. /package/dist/{conversions-JGECVZSY.js.map → conversions-7YO6DDL3.js.map} +0 -0
  1181. /package/dist/{conversions-TS723AZV.js.map → conversions-XNISCCC2.js.map} +0 -0
  1182. /package/dist/{countries-ESAKTQAE.js.map → countries-NMWPKFFW.js.map} +0 -0
  1183. /package/dist/{create-I2KVDTCQ.js.map → create-ARERZYCL.js.map} +0 -0
  1184. /package/dist/{create-DSGQFBI7.js.map → create-C6ZVYIF5.js.map} +0 -0
  1185. /package/dist/{create-WOHPIGBK.js.map → create-FAPJFCZE.js.map} +0 -0
  1186. /package/dist/{create-SBQWVLXG.js.map → create-M7TUO3XS.js.map} +0 -0
  1187. /package/dist/{creatives-4JGVZQGC.js.map → creatives-3YIV6IOK.js.map} +0 -0
  1188. /package/dist/{creatives-DWO5KEQC.js.map → creatives-QZCO6WGH.js.map} +0 -0
  1189. /package/dist/{creatives-PSWCNY7U.js.map → creatives-WJLJ3NKP.js.map} +0 -0
  1190. /package/dist/{critique-TIZJ5GFM.js.map → critique-56MNXW7R.js.map} +0 -0
  1191. /package/dist/{critique-NGMZK5LX.js.map → critique-KRIKEHF6.js.map} +0 -0
  1192. /package/dist/{crm-2WAR565U.js.map → crm-OETFQNR3.js.map} +0 -0
  1193. /package/dist/{crm-VDXUO2YU.js.map → crm-WXCFB4TU.js.map} +0 -0
  1194. /package/dist/{crop-2J4RKJ6B.js.map → crop-VCP2JLQL.js.map} +0 -0
  1195. /package/dist/{currency-XCGKQ7FE.js.map → currency-MNNDKY4Z.js.map} +0 -0
  1196. /package/dist/{custom-conversions-6P555U2K.js.map → custom-conversions-CIU525HM.js.map} +0 -0
  1197. /package/dist/{customers-ATENMXDO.js.map → customers-GTPEABJI.js.map} +0 -0
  1198. /package/dist/{delete-3AV3ARMX.js.map → delete-5CURRI25.js.map} +0 -0
  1199. /package/dist/{delete-H744GNS4.js.map → delete-CLC2Q2OE.js.map} +0 -0
  1200. /package/dist/{delete-AVMZYNVT.js.map → delete-CQ6Q3URI.js.map} +0 -0
  1201. /package/dist/{delete-A5XD52K4.js.map → delete-JIRZBBDD.js.map} +0 -0
  1202. /package/dist/{delete-OEYPFATY.js.map → delete-LD3F4UIW.js.map} +0 -0
  1203. /package/dist/{delete-MRM2S4Z5.js.map → delete-LGZ5OI4C.js.map} +0 -0
  1204. /package/dist/{demographics-M5LJF3RZ.js.map → demographics-EK2ZPHWK.js.map} +0 -0
  1205. /package/dist/{describe-6NVOWIBE.js.map → describe-BNB6643C.js.map} +0 -0
  1206. /package/dist/{describe-P3PPIQME.js.map → describe-ZXGFTCDR.js.map} +0 -0
  1207. /package/dist/{dimensions-EYAYO27I.js.map → dimensions-IU4ETG4U.js.map} +0 -0
  1208. /package/dist/{discard-72I6SM7G.js.map → discard-VWCXYJWU.js.map} +0 -0
  1209. /package/dist/{discover-BJPZNXUQ.js.map → discover-4EQWGIAN.js.map} +0 -0
  1210. /package/dist/{domain-R4EIZD2W.js.map → domain-I2SAGVAB.js.map} +0 -0
  1211. /package/dist/{download-7T6HIJKD.js.map → download-D7TB4744.js.map} +0 -0
  1212. /package/dist/{draft-YDY2Q2K6.js.map → draft-4VOOSJQJ.js.map} +0 -0
  1213. /package/dist/{draft-BBFJNZ5X.js.map → draft-6KG2YFOY.js.map} +0 -0
  1214. /package/dist/{draft-YYYRWF7M.js.map → draft-APDGACIC.js.map} +0 -0
  1215. /package/dist/{draft-BGUJDHXR.js.map → draft-D76C4JR3.js.map} +0 -0
  1216. /package/dist/{draft-THPZFASM.js.map → draft-HFH2Y6F5.js.map} +0 -0
  1217. /package/dist/{draft-34C3F5U4.js.map → draft-NVVWWQVC.js.map} +0 -0
  1218. /package/dist/{draft-KIBMVKSR.js.map → draft-NWLPLTWM.js.map} +0 -0
  1219. /package/dist/{env-KIP2J2UB.js.map → env-LHLGM2YJ.js.map} +0 -0
  1220. /package/dist/{export-JQRMBJ7D.js.map → export-VGCFD7GL.js.map} +0 -0
  1221. /package/dist/{extract-7QKLME7Z.js.map → extract-32J7V2RX.js.map} +0 -0
  1222. /package/dist/{facets-F2H52MS4.js.map → facets-WVI6VBDC.js.map} +0 -0
  1223. /package/dist/{favorites-NSGF4OV5.js.map → favorites-WKV5H5OF.js.map} +0 -0
  1224. /package/dist/{feedback-IQKKT4MC.js.map → feedback-NMNKYEMU.js.map} +0 -0
  1225. /package/dist/{feedback-record-UZV4Y7UD.js.map → feedback-record-2VYBMWMO.js.map} +0 -0
  1226. /package/dist/{fetch-ZUAZPLAE.js.map → fetch-CENBDLT6.js.map} +0 -0
  1227. /package/dist/{fetch-XF76JABV.js.map → fetch-XQFPE3MI.js.map} +0 -0
  1228. /package/dist/{find-OTDIX6V4.js.map → find-PNDKEOXT.js.map} +0 -0
  1229. /package/dist/{fit-2CA4JH7N.js.map → fit-SEWGCEW5.js.map} +0 -0
  1230. /package/dist/{fonts-F2XUCIIW.js.map → fonts-KUCQAR7N.js.map} +0 -0
  1231. /package/dist/{forecast-IDKJYM2B.js.map → forecast-PI52G2GL.js.map} +0 -0
  1232. /package/dist/{funding-NYO65IMT.js.map → funding-ZRC25X5I.js.map} +0 -0
  1233. /package/dist/{ga4-UDQ2HA2J.js.map → ga4-YDKXVJOC.js.map} +0 -0
  1234. /package/dist/{generate-MMBYB44G.js.map → generate-BVMMX3SS.js.map} +0 -0
  1235. /package/dist/{get-3L6W3E3T.js.map → get-7MSF4RVQ.js.map} +0 -0
  1236. /package/dist/{get-XN5ZGDIK.js.map → get-KFVPIDIA.js.map} +0 -0
  1237. /package/dist/{get-6WEYKOY6.js.map → get-NHQ2XYKZ.js.map} +0 -0
  1238. /package/dist/{get-YIHTAMRT.js.map → get-UMMTY74K.js.map} +0 -0
  1239. /package/dist/{get-P743RPSI.js.map → get-YM77HCL5.js.map} +0 -0
  1240. /package/dist/{gif-53ULFVLR.js.map → gif-X323HXS2.js.map} +0 -0
  1241. /package/dist/{google-KTO3PLEU.js.map → google-76A4MHQH.js.map} +0 -0
  1242. /package/dist/{google-ads-Q37I2D5P.js.map → google-ads-S6O4MLKA.js.map} +0 -0
  1243. /package/dist/{group-GKWCCX66.js.map → group-CTIZVYX2.js.map} +0 -0
  1244. /package/dist/{group-EFZ3AJIE.js.map → group-HKWQ75CJ.js.map} +0 -0
  1245. /package/dist/{gsc-P3QYGDV2.js.map → gsc-CORRYJBJ.js.map} +0 -0
  1246. /package/dist/{history-4II5QA4B.js.map → history-4U7FJGEM.js.map} +0 -0
  1247. /package/dist/{history-DBIEYQHY.js.map → history-BXOMJ5PL.js.map} +0 -0
  1248. /package/dist/{hubspot-TTITJFBO.js.map → hubspot-I5MFAZ4G.js.map} +0 -0
  1249. /package/dist/{icon-I43F77FV.js.map → icon-6QW63AHG.js.map} +0 -0
  1250. /package/dist/{ideas-V4Q6JDKV.js.map → ideas-QDS5XA4S.js.map} +0 -0
  1251. /package/dist/{images-SP5REF6E.js.map → images-NVTA2OHD.js.map} +0 -0
  1252. /package/dist/{improve-BCCU5AS6.js.map → improve-WR23CHYH.js.map} +0 -0
  1253. /package/dist/{ingest-574GIFAR.js.map → ingest-QAVJ2J7F.js.map} +0 -0
  1254. /package/dist/{ingest-IC4T76W6.js.map → ingest-XJHV3GG6.js.map} +0 -0
  1255. /package/dist/{insights-ZIU6FJMS.js.map → insights-AW7SOGHI.js.map} +0 -0
  1256. /package/dist/{insights-NZWSJKU4.js.map → insights-IJEPLWQH.js.map} +0 -0
  1257. /package/dist/{inspect-ATHYY6A2.js.map → inspect-7I53PWCF.js.map} +0 -0
  1258. /package/dist/{inspiration-P265QJ2H.js.map → inspiration-TJJFUVY2.js.map} +0 -0
  1259. /package/dist/{intent-E3UIVZBN.js.map → intent-VEUQS34Z.js.map} +0 -0
  1260. /package/dist/{job-L7RJZMSG.js.map → job-K7LAIBYN.js.map} +0 -0
  1261. /package/dist/{job-create-JUDAN52O.js.map → job-create-DFZL4CGA.js.map} +0 -0
  1262. /package/dist/{job-status-U43WE3RJ.js.map → job-status-6Q2TVTEO.js.map} +0 -0
  1263. /package/dist/{keep-55CPC7DG.js.map → keep-XJFCLVCP.js.map} +0 -0
  1264. /package/dist/{keyword-gap-BG6M665A.js.map → keyword-gap-CUOGKUMM.js.map} +0 -0
  1265. /package/dist/{keyword-metrics-J4UPUDN7.js.map → keyword-metrics-LK7FME4N.js.map} +0 -0
  1266. /package/dist/{keywords-for-site-MWADFEO2.js.map → keywords-for-site-4E7UU44P.js.map} +0 -0
  1267. /package/dist/{landing-R6DN7XLK.js.map → landing-I65PFN7H.js.map} +0 -0
  1268. /package/dist/{languages-HORKPDNH.js.map → languages-KPPKX3E2.js.map} +0 -0
  1269. /package/dist/{languages-JSGWCC7Z.js.map → languages-MGEBLO64.js.map} +0 -0
  1270. /package/dist/{logo-2IP663QO.js.map → launches-E3Y6NCQE.js.map} +0 -0
  1271. /package/dist/{layerize-RPD6SNP6.js.map → layerize-N4IQ2KE7.js.map} +0 -0
  1272. /package/dist/{leads-7EVHMNUF.js.map → leads-PPMOBH7U.js.map} +0 -0
  1273. /package/dist/{leads-JM6HUERX.js.map → leads-TNEQUOUN.js.map} +0 -0
  1274. /package/dist/{learn-LGS2F5TR.js.map → learn-QQS323PS.js.map} +0 -0
  1275. /package/dist/{library-ARKRLCNJ.js.map → library-4QQAVB6X.js.map} +0 -0
  1276. /package/dist/{lighthouse-6ZC45E53.js.map → lighthouse-CD47CPJM.js.map} +0 -0
  1277. /package/dist/{line-item-writes-KUYEXSIH.js.map → line-item-writes-QJZQUQ4E.js.map} +0 -0
  1278. /package/dist/{line-items-GIWLP3FL.js.map → line-items-ESEAXGBV.js.map} +0 -0
  1279. /package/dist/{link-PVM7XJQI.js.map → link-DPJYS4WY.js.map} +0 -0
  1280. /package/dist/{linkedin-WX54EAX6.js.map → linkedin-EJPNC4VY.js.map} +0 -0
  1281. /package/dist/{list-P7NAFN6J.js.map → list-A45NTPSJ.js.map} +0 -0
  1282. /package/dist/{list-7MVBXOJT.js.map → list-GNP4GIV2.js.map} +0 -0
  1283. /package/dist/{list-LI4OGQFW.js.map → list-KQFLOVC4.js.map} +0 -0
  1284. /package/dist/{list-AL7N6X2P.js.map → list-MDHK3ENJ.js.map} +0 -0
  1285. /package/dist/{list-A5UCIR2J.js.map → list-PRUFXMXW.js.map} +0 -0
  1286. /package/dist/{list-WR7QYTON.js.map → list-S3BAQCTL.js.map} +0 -0
  1287. /package/dist/{list-4ZKQZBCL.js.map → list-UU5NPLJ7.js.map} +0 -0
  1288. /package/dist/{list-MCEFXC6L.js.map → list-V525A4Z4.js.map} +0 -0
  1289. /package/dist/{locations-74TPQWAT.js.map → locations-J2PVPDZU.js.map} +0 -0
  1290. /package/dist/{locations-J4G5RNPH.js.map → locations-TFOYESTF.js.map} +0 -0
  1291. /package/dist/{log-U6IWZGOF.js.map → log-XQBEJOOW.js.map} +0 -0
  1292. /package/dist/{lookup-XK45W2SH.js.map → logo-KQD5KUAH.js.map} +0 -0
  1293. /package/dist/{output-RAH3TSIL.js.map → lookup-QCREWUV4.js.map} +0 -0
  1294. /package/dist/{media-M7E6V2XU.js.map → media-2WENMOAA.js.map} +0 -0
  1295. /package/dist/{media-6CQYG4UY.js.map → media-N4C6Q4IV.js.map} +0 -0
  1296. /package/dist/{media-sources-JWGO23BZ.js.map → media-sources-BPOTW6IB.js.map} +0 -0
  1297. /package/dist/{members-5FAW4YE7.js.map → members-BOYZKLNK.js.map} +0 -0
  1298. /package/dist/{meta-EZ4SY25M.js.map → meta-PXYHWOOG.js.map} +0 -0
  1299. /package/dist/{metrics-SQDJ5NQO.js.map → metrics-FZANUN7E.js.map} +0 -0
  1300. /package/dist/{models-7U3GRYHF.js.map → models-W6EN3WB7.js.map} +0 -0
  1301. /package/dist/{normalize-ICQF2AST.js.map → normalize-LOMDPNFJ.js.map} +0 -0
  1302. /package/dist/{performance-FGCDWHMC.js.map → output-SR4DN3A4.js.map} +0 -0
  1303. /package/dist/{page-GS3WLT2C.js.map → page-FS76L5WU.js.map} +0 -0
  1304. /package/dist/{pages-FXYQLHSJ.js.map → pages-INMNJSX2.js.map} +0 -0
  1305. /package/dist/{reddit-TF6K37SB.js.map → performance-53D43XVZ.js.map} +0 -0
  1306. /package/dist/{pinterest-AUH7WBA7.js.map → pinterest-JMHFPNVW.js.map} +0 -0
  1307. /package/dist/{pixels-45A55MOP.js.map → pixels-K6ZD7SXV.js.map} +0 -0
  1308. /package/dist/{pixels-ZFF4BGUH.js.map → pixels-XPBBJYE3.js.map} +0 -0
  1309. /package/dist/{preview-AD4GKYIA.js.map → preview-KXSNG3BS.js.map} +0 -0
  1310. /package/dist/{promoted-tweet-writes-BPWTDESL.js.map → promoted-tweet-writes-I6HVQRDB.js.map} +0 -0
  1311. /package/dist/{promoted-tweets-OS3NHYVE.js.map → promoted-tweets-YAQ5ZUXI.js.map} +0 -0
  1312. /package/dist/{properties-L2XIYQDS.js.map → properties-NYNEONHI.js.map} +0 -0
  1313. /package/dist/{publish-SXZEWBVJ.js.map → publish-Z5DVKZSG.js.map} +0 -0
  1314. /package/dist/{run-TFLFBQU2.js.map → query-MSZPOHFL.js.map} +0 -0
  1315. /package/dist/{query-SGGBCHTF.js.map → query-RK2TFMBI.js.map} +0 -0
  1316. /package/dist/{query-VTGVZQIO.js.map → query-TWNH6GV7.js.map} +0 -0
  1317. /package/dist/{search-UO5KJTYS.js.map → reddit-6DQTBTO6.js.map} +0 -0
  1318. /package/dist/{refresh-APVDWXRZ.js.map → refresh-TP2TOGS6.js.map} +0 -0
  1319. /package/dist/{release-32SEJU4L.js.map → release-PHQEZ2ZX.js.map} +0 -0
  1320. /package/dist/{relevant-pages-OWMNUCP7.js.map → relevant-pages-ORVFFVAM.js.map} +0 -0
  1321. /package/dist/{remove-6LGGKMLJ.js.map → remove-ETLMMDEA.js.map} +0 -0
  1322. /package/dist/{remove-U64GTHLQ.js.map → remove-KTBM5YSH.js.map} +0 -0
  1323. /package/dist/{reopen-5VS233SF.js.map → reopen-OURQR6U7.js.map} +0 -0
  1324. /package/dist/{research-O7CJV5IS.js.map → research-P23YBKS3.js.map} +0 -0
  1325. /package/dist/{research-QYSQ6LW4.js.map → research-WCNWT5Y5.js.map} +0 -0
  1326. /package/dist/{reset-47B5VPT4.js.map → reset-2NCAWWN4.js.map} +0 -0
  1327. /package/dist/{reset-22FC7BXQ.js.map → reset-65R2CUB5.js.map} +0 -0
  1328. /package/dist/{resolve-7KQGVTQT.js.map → resolve-65FKZ23N.js.map} +0 -0
  1329. /package/dist/{retry-UJ5UF4BM.js.map → retry-P5K6LE6K.js.map} +0 -0
  1330. /package/dist/{retry-J5UVLS72.js.map → retry-UIPDQJ5F.js.map} +0 -0
  1331. /package/dist/{retry-failed-6HXPUVXJ.js.map → retry-failed-QMWQ6TRL.js.map} +0 -0
  1332. /package/dist/{shared-HJDFNID4.js.map → run-NDMEYUOI.js.map} +0 -0
  1333. /package/dist/{run-SI4FA32F.js.map → run-OP3T4TCF.js.map} +0 -0
  1334. /package/dist/{schedule-52ZM4KRQ.js.map → schedule-6D667AXB.js.map} +0 -0
  1335. /package/dist/{schedule-O2K6M43V.js.map → schedule-KXLQVCZW.js.map} +0 -0
  1336. /package/dist/{scheduled-agents-PCWCQAKP.js.map → scheduled-agents-LYWEX4PU.js.map} +0 -0
  1337. /package/dist/{schema-6GR77VJG.js.map → schema-CCFLFAOY.js.map} +0 -0
  1338. /package/dist/{scrape-ETAMW43A.js.map → scrape-DBZQFIW7.js.map} +0 -0
  1339. /package/dist/{screenshot-YCQF25ZB.js.map → screenshot-MPFANYIH.js.map} +0 -0
  1340. /package/dist/{search-OQNGSMUH.js.map → search-4AANIUUL.js.map} +0 -0
  1341. /package/dist/{search-742XSULP.js.map → search-EMJABZYF.js.map} +0 -0
  1342. /package/dist/{search-NS7XNRZC.js.map → search-HQDN7DOF.js.map} +0 -0
  1343. /package/dist/{sync-definition-BAJQUBE3.js.map → search-OVHC4CRQ.js.map} +0 -0
  1344. /package/dist/{search-MEEM4D3W.js.map → search-YSGZRANA.js.map} +0 -0
  1345. /package/dist/{select-4XCYVV2G.js.map → select-C6BKHB4B.js.map} +0 -0
  1346. /package/dist/{sends-WGJVQUMF.js.map → sends-HXN5HSF6.js.map} +0 -0
  1347. /package/dist/{sequences-OIPVR7JL.js.map → sequences-FRK76ZQV.js.map} +0 -0
  1348. /package/dist/{setup-links-V3URI7DL.js.map → setup-links-BM2GLSSO.js.map} +0 -0
  1349. /package/dist/{viewer-check-HFRUJ4ZU.js.map → shared-EH5ZTQXC.js.map} +0 -0
  1350. /package/dist/{site-WIQ7SSU3.js.map → site-3PEJYQJW.js.map} +0 -0
  1351. /package/dist/{sitemaps-POPZJTAX.js.map → sitemaps-7KHY2KXI.js.map} +0 -0
  1352. /package/dist/{sites-262H6LM4.js.map → sites-6B76JW6C.js.map} +0 -0
  1353. /package/dist/{skills-6TQZLIMP.js.map → skills-SCTT3LCM.js.map} +0 -0
  1354. /package/dist/{sources-L453U5MT.js.map → sources-ODJBHNGY.js.map} +0 -0
  1355. /package/dist/{stale-6OVG6VME.js.map → stale-2O54QXY2.js.map} +0 -0
  1356. /package/dist/{stats-NNXZMPZR.js.map → stats-4NBOAOR2.js.map} +0 -0
  1357. /package/dist/{status-WXWU54WR.js.map → status-NE5OBM4B.js.map} +0 -0
  1358. /package/dist/{sticker-4KMBSMP5.js.map → sticker-NLXBIOBO.js.map} +0 -0
  1359. /package/dist/{stock-2YCDN3N6.js.map → stock-F3SA4VHV.js.map} +0 -0
  1360. /package/dist/{studio-C5K3YX3P.js.map → studio-ZPDIOFKL.js.map} +0 -0
  1361. /package/dist/{sync-CDZUTGV3.js.map → sync-5GJNZDGZ.js.map} +0 -0
  1362. /package/dist/{sync-ZSNUBYPM.js.map → sync-FCNFXTFD.js.map} +0 -0
  1363. /package/dist/{sync-CF7FVUQJ.js.map → sync-YXCZ3DHY.js.map} +0 -0
  1364. /package/dist/{tag-manager-DYZUOIAS.js.map → tag-manager-YM4Q3CZT.js.map} +0 -0
  1365. /package/dist/{tags-SG3NVC3J.js.map → tags-456UOYJU.js.map} +0 -0
  1366. /package/dist/{tags-6RY23XOG.js.map → tags-5YPYHV5V.js.map} +0 -0
  1367. /package/dist/{tags-BHFQWNPL.js.map → tags-HXMHEHG2.js.map} +0 -0
  1368. /package/dist/{tags-WR6PDIDR.js.map → tags-K34666RY.js.map} +0 -0
  1369. /package/dist/{tags-VN5HTL35.js.map → tags-NB35ISO3.js.map} +0 -0
  1370. /package/dist/{targeting-constants-XJ2VOW7K.js.map → targeting-constants-3CMGPWRI.js.map} +0 -0
  1371. /package/dist/{targeting-criteria-5EXP2NXF.js.map → targeting-criteria-UKQ4WF5C.js.map} +0 -0
  1372. /package/dist/{targets-WUVEJPSD.js.map → targets-VQ4BQ657.js.map} +0 -0
  1373. /package/dist/{templates-LOJQX2NG.js.map → templates-PMUIOVDX.js.map} +0 -0
  1374. /package/dist/{testimonials-6M5DXORT.js.map → testimonials-XZCGVD6V.js.map} +0 -0
  1375. /package/dist/{top-companies-E2OMMPSV.js.map → top-companies-VMRIDOOH.js.map} +0 -0
  1376. /package/dist/{translate-AW4CUKDA.js.map → translate-F5KR62LF.js.map} +0 -0
  1377. /package/dist/{triggers-MRXIDCSN.js.map → triggers-2MZX7W6Y.js.map} +0 -0
  1378. /package/dist/{tweets-ATP3FQAC.js.map → tweets-XWE3VYQ4.js.map} +0 -0
  1379. /package/dist/{unfollow-CBVPGPF7.js.map → unfollow-7U4UBAJX.js.map} +0 -0
  1380. /package/dist/{unlink-HNL747YM.js.map → unlink-AWSNY3QS.js.map} +0 -0
  1381. /package/dist/{unstage-4ZEULXEQ.js.map → unstage-OGB43ZXO.js.map} +0 -0
  1382. /package/dist/{unstage-OL2JDCLK.js.map → unstage-RQBOQ4DY.js.map} +0 -0
  1383. /package/dist/{update-YNNRX5B2.js.map → update-4KWYHMLS.js.map} +0 -0
  1384. /package/dist/{update-4KGIT4BF.js.map → update-6DKEWM64.js.map} +0 -0
  1385. /package/dist/{update-RTTC3SAK.js.map → update-G6EKHPIF.js.map} +0 -0
  1386. /package/dist/{update-JPBUF7M2.js.map → update-OFV452AC.js.map} +0 -0
  1387. /package/dist/{upload-UIXPCSXJ.js.map → upload-6CJWMQ24.js.map} +0 -0
  1388. /package/dist/{upload-L5SYZB3X.js.map → upload-GUKMQ5MT.js.map} +0 -0
  1389. /package/dist/{upscale-YWRLFU22.js.map → upscale-A456MESF.js.map} +0 -0
  1390. /package/dist/{url-params-K47CE7Y5.js.map → url-params-OE3UMYMM.js.map} +0 -0
  1391. /package/dist/{use-UT2DIZOG.js.map → use-HBVKVT5S.js.map} +0 -0
  1392. /package/dist/{variant-FLZJYGYL.js.map → variant-HULP57YI.js.map} +0 -0
  1393. /package/dist/{videos-BP3BKNTY.js.map → videos-ION7UT3M.js.map} +0 -0
  1394. /package/dist/{view-NPAG66QK.js.map → view-GCDEJZII.js.map} +0 -0
  1395. /package/dist/{web-RPSGFN4U.js.map → web-CCVD6UZ4.js.map} +0 -0
  1396. /package/dist/{write-commands-WTRSOSO3.js.map → write-commands-47OP673X.js.map} +0 -0
  1397. /package/dist/{write-commands-TAYGTJEZ.js.map → write-commands-IJ5IFHS6.js.map} +0 -0
  1398. /package/dist/{write-commands-4WARNR2T.js.map → write-commands-NNVDWBLG.js.map} +0 -0
  1399. /package/dist/{write-commands-ERKVRHTC.js.map → write-commands-OBMIVFZJ.js.map} +0 -0
  1400. /package/dist/{x-VZCELH3P.js.map → x-U32DT24S.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../api/src/accounts/crm.ts","../../api/src/accounts/crm-columns.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/**\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<Field extends string = string> {\n /** The header Baker's templates and the sheets it creates use; a column headed exactly so is read without asking. */\n header: string;\n /** The record field it fills. */\n field: Field;\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: {\n readonly deals: readonly CrmSheetColumn<CrmColumnField>[];\n readonly companies: readonly CrmSheetColumn<CrmCompanyField>[];\n} = {\n deals: [\n {\n header: \"Deal ID\",\n field: \"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 field: \"createdAt\",\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 field: \"companyDomain\",\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 field: \"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 field: \"currency\",\n need: \"recommended\",\n takes: \"Three letters: EUR, USD, GBP…\",\n example: \"EUR\",\n example2: \"EUR\",\n },\n {\n header: \"Status\",\n field: \"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 field: \"closedAt\",\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 field: \"companyName\",\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 field: \"companyLinkedinPage\",\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 field: \"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 field: \"pipeline\",\n need: \"optional\",\n takes: \"Its pipeline, if you use several.\",\n example: \"Sales\",\n example2: \"Sales\",\n },\n {\n header: \"Stage\",\n field: \"stage\",\n need: \"optional\",\n takes: \"Its stage.\",\n example: \"Proposal\",\n example2: \"Closed Won\",\n },\n ],\n companies: [\n {\n header: \"Website\",\n field: \"domain\",\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 field: \"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 field: \"linkedinPage\",\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 field: \"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\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 columns: 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]) => columns[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 = columns[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/** Every header a sheet's rows carry, in order. */\nexport function sheetHeaders(rows: ReadonlyArray<Record<string, string>>): string[] {\n return [...new Set(rows.flatMap((row) => Object.keys(row)))];\n}\n\n/** Cells shown beside a header when what it holds is asked: the first few different ones, which stay put as rows are added. */\nconst SAMPLES_PER_COLUMN = 3;\n\n/** Each column with a few of its cells, so a header in any wording can be read by what it holds. */\nexport function sheetColumnSamples(\n rows: ReadonlyArray<Record<string, string>>,\n): Array<{ header: string; samples: string[] }> {\n return sheetHeaders(rows).map((header) => {\n const samples: string[] = [];\n for (const row of rows) {\n const cell = String(row[header] ?? \"\").trim();\n if (cell !== \"\" && !samples.includes(cell)) samples.push(cell);\n if (samples.length === SAMPLES_PER_COLUMN) break;\n }\n return { header, samples };\n });\n}\n\n/**\n * A column's meaning, in a deal's fields — the words any sheet's columns are\n * read in, a company list's included: a company list's columns are the deal's\n * company fields (`companyDomain` is its `domain`).\n */\nexport const CRM_COLUMN_FIELDS = [\n \"id\",\n \"name\",\n \"companyId\",\n \"companyName\",\n \"companyDomain\",\n \"companyLinkedinPage\",\n \"amount\",\n \"currency\",\n \"pipeline\",\n \"stage\",\n \"status\",\n \"createdAt\",\n \"closedAt\",\n] as const satisfies readonly (keyof z.infer<typeof dealFields>)[];\nexport type CrmColumnField = (typeof CRM_COLUMN_FIELDS)[number];\nexport type CrmCompanyField = Exclude<keyof z.infer<typeof companyFields>, \"deleted\">;\n\n/** What a sheet holds and the field each column fills; a column not in `columns` is left behind. */\nexport interface CrmColumnReading {\n kind: CrmSheetKind;\n /** Header → the field of `kind`'s record it fills. */\n columns: Readonly<Record<string, string>>;\n}\n\n/** A company's field as a deal names it. */\nconst COMPANY_AS_DEAL: Readonly<Record<CrmCompanyField, CrmColumnField>> = {\n id: \"companyId\",\n name: \"companyName\",\n domain: \"companyDomain\",\n linkedinPage: \"companyLinkedinPage\",\n};\nconst COMPANY_FIELD: Partial<Record<CrmColumnField, CrmCompanyField>> = {\n companyId: \"id\",\n companyName: \"name\",\n companyDomain: \"domain\",\n companyLinkedinPage: \"linkedinPage\",\n};\n\n/** Fields only a deal has: a sheet with any of them holds deals. A created date does not decide it — companies have one too. */\nconst DEAL_ONLY: ReadonlySet<CrmColumnField> = new Set([\n \"id\",\n \"name\",\n \"amount\",\n \"pipeline\",\n \"stage\",\n \"status\",\n \"closedAt\",\n]);\n\n/** Baker's own names for a column, compared without case, spaces or punctuation — but with every letter, in any script. */\nconst headerKey = (header: string) => header.toLowerCase().replace(/[^\\p{L}\\p{N}]/gu, \"\");\n\n/** `id` and `name` are both records' own fields, so a column called just that is the deal's or the company's by what the sheet holds. */\nconst SHARED_NAMES: ReadonlySet<string> = new Set([\"id\", \"name\"]);\nconst isSharedName = (header: string) => SHARED_NAMES.has(headerKey(header));\n\n/**\n * The headers that are Baker's own contract strings — a template's header\n * (\"Deal ID\", \"Created date\") or a field's name (\"createdAt\", \"domain\") — and\n * what they mean. Not a list of the names CRMs give columns: every other\n * header is read by what it says and holds (`mapCrmColumns` in the backend).\n */\nconst EXACT: ReadonlyMap<string, CrmColumnField> = new Map<string, CrmColumnField>([\n ...CRM_COLUMN_FIELDS.map((field): [string, CrmColumnField] => [headerKey(field), field]),\n [headerKey(\"domain\"), \"companyDomain\"],\n [headerKey(\"linkedinPage\"), \"companyLinkedinPage\"],\n ...CRM_SHEET_COLUMNS.deals.map((column): [string, CrmColumnField] => [headerKey(column.header), column.field]),\n ...CRM_SHEET_COLUMNS.companies.map((column): [string, CrmColumnField] => [\n headerKey(column.header),\n COMPANY_AS_DEAL[column.field],\n ]),\n]);\n\n/** The headers that are Baker's own names, and the field each means; every other header is absent. */\nexport function exactCrmColumns(headers: readonly string[]): Record<string, CrmColumnField> {\n const meanings: Record<string, CrmColumnField> = {};\n for (const header of headers) {\n const field = EXACT.get(headerKey(header));\n if (field !== undefined) meanings[header] = field;\n }\n return meanings;\n}\n\n/**\n * Deals or companies, and each column's field in that record, from what each\n * column means: deals when any column is a field only a deal has, or as\n * `kind` says. A meaning the record has no field for (a deal's amount in a\n * company list) leaves its column behind.\n */\nexport function crmColumnReading(\n meanings: Readonly<Record<string, CrmColumnField>>,\n kind?: CrmSheetKind,\n): CrmColumnReading {\n const entries = Object.entries(meanings);\n const read =\n kind ?? (entries.some(([header, field]) => DEAL_ONLY.has(field) && !isSharedName(header)) ? \"deals\" : \"companies\");\n const columns: Record<string, string> = {};\n for (const [header, field] of entries) {\n const target = read === \"deals\" ? field : isSharedName(header) ? field : COMPANY_FIELD[field];\n if (target !== undefined) columns[header] = target;\n }\n return { kind: read, columns };\n}\n\n/**\n * A spreadsheet from any CRM — a deals export or a company list — as a batch\n * the judge reads, each column filling the field `reading` gives it. Without\n * one, or with only a kind, only Baker's own headers are read. Every other\n * column is left behind, so a sheet with owners' emails in it sends no email.\n */\nexport function crmBatchFromSheet(\n rows: ReadonlyArray<Record<string, string>>,\n reading?: CrmColumnReading | CrmSheetKind,\n): CrmSheet {\n const headers = sheetHeaders(rows);\n const { kind, columns } = typeof reading === \"object\" ? reading : crmColumnReading(exactCrmColumns(headers), reading);\n const records = sheetRecords(rows, columns);\n return {\n kind,\n batch: kind === \"deals\" ? { deals: records } : { companies: records },\n ignoredColumns: headers.filter((header) => columns[header] === undefined),\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","import { CRM_COLUMN_FIELDS, CRM_DEAL_STATUSES, type CrmColumnField } from \"./crm\";\n\n/** A Jev Choice, as each caller's own Jev module sends it. */\nexport interface CrmColumnQuestion {\n type: \"choice\";\n instructions: Record<string, string>;\n criteria: Record<string, string>;\n}\n/** A Jev answer, as each caller's own Jev module reads it. */\nexport type CrmColumnAnswer = { noul: number } | { choice: string; probabilities: Record<string, number> };\n\n/**\n * What each column of a CRM spreadsheet holds, read by Jev from its header in\n * any language and a few of its cells — a Spanish \"Importe\", a Polish \"Kwota\",\n * a Pipedrive \"Deal - Value\" alike. Pure: the backend's action and `baker\n * accounts crm check` ask, these build the questions and read the answers,\n * so the upload and the check read a sheet alike. Baker's own headers never get here\n * (`exactCrmColumns`).\n */\n\n/**\n * A column is read only when Jev is this sure of its field; below it the\n * column is left behind and named as such, never filled with a guess. Set\n * from `scripts/crm-column-evals` against `JEV_MODEL`.\n */\nexport const COLUMN_HELD = 0.7;\n\nconst NONE = \"none\";\n\n/** Cells longer than this say nothing more about what the column is. */\nconst SAMPLE_CHARS = 60;\nconst EMAIL = /[^\\s@]+@[^\\s@]+\\.[^\\s@]+/g;\n\n/** Each field in plain words, with its boundary cases: Jev reads the criteria literally. */\nconst CRITERIA: Readonly<Record<CrmColumnField | typeof NONE, string>> = {\n id: \"The deal's own unique id or number in the CRM (a deal, opportunity or record id of the deal), not the company's id\",\n name: \"The deal's own title (a deal or opportunity name), not the name of the company or of a person\",\n companyId: \"The CRM's unique id (or record id) of the company or account the row is about or the deal is with\",\n companyName: \"The name of the company, account or organization the row is about or the deal is with\",\n companyDomain: \"The company's website or web domain, like acme.com\",\n companyLinkedinPage: \"The company's LinkedIn page address\",\n amount:\n \"The deal's own value in money (its amount, value or size), not a weighted or forecast amount, not a company's revenue or turnover, not a probability, a percentage or a count\",\n currency: \"The currency the amount is in, like EUR or USD\",\n pipeline: \"Which sales pipeline the deal belongs to, not its stage\",\n stage:\n \"The deal's stage or state in the sales pipeline, in any words (like Proposal, Negotiation, Closed Won, Ganado), not the status of a lead or a contact\",\n status: \"Whether the deal is open, won or lost, written as exactly the English word open, won or lost\",\n createdAt: \"The date the deal or the company was created, opened or added to the CRM\",\n closedAt: \"The date the deal was closed (won or lost) or is expected to close\",\n none: \"Anything else: a person (an owner, a contact, a person's name, email or phone), who created or last changed the record, a probability, a weighted amount, a company's revenue or size, a lead's or contact's status, a next step, a source, notes, an industry, a date of last activity, or any other field\",\n};\n\nconst QUESTION =\n \"`column` is the header of a column in a spreadsheet exported from a CRM, in any language or in the CRM's own wording, and `cells` are values from that column. `sheet` lists every header of the spreadsheet, for context. Which field does `column` hold?\";\n\n/** A cell as Jev sees it: an email address is shown as one, never sent. */\nfunction sampleCell(cell: string): string {\n return cell.replace(EMAIL, \"<email address>\").slice(0, SAMPLE_CHARS);\n}\n\nexport interface SampledColumn {\n header: string;\n samples: readonly string[];\n}\n\n/** One Choice per column, the column inside its own question, beside every header of the sheet (`headers`). */\nexport function crmColumnQuestions(\n columns: readonly SampledColumn[],\n headers: readonly string[] = columns.map((column) => column.header),\n): CrmColumnQuestion[] {\n const sheet = headers.join(\" | \");\n return columns.map(({ header, samples }) => ({\n type: \"choice\",\n instructions: {\n sheet,\n column: header,\n cells: samples.length > 0 ? samples.map(sampleCell).join(\" | \") : \"(empty)\",\n question: QUESTION,\n },\n criteria: CRITERIA,\n }));\n}\n\nexport const isCrmColumnField = (choice: string): choice is CrmColumnField =>\n (CRM_COLUMN_FIELDS as readonly string[]).includes(choice);\n\n/** Cells the contract takes as a status: anything else in a status column names the deal's state in its own words. */\nconst isStatusCell = (cell: string) => (CRM_DEAL_STATUSES as readonly string[]).includes(cell.trim().toLowerCase());\n\n/**\n * Each column Jev placed at `COLUMN_HELD` or above, and the field it holds;\n * `none` and unsure ones are absent. A status column whose cells are not\n * open, won and lost (\"Ganho\", \"Perdido\") is read as the deal's stage, so its\n * deals arrive with the stage a manager says won or lost, instead of every one\n * refused.\n */\nexport function crmColumnMeanings(\n columns: readonly SampledColumn[],\n answers: readonly CrmColumnAnswer[],\n held = COLUMN_HELD,\n): Record<string, CrmColumnField> {\n const meanings: Record<string, CrmColumnField> = {};\n columns.forEach(({ header, samples }, index) => {\n const answer = answers[index];\n if (answer === undefined || !(\"choice\" in answer)) return;\n const { choice, probabilities } = answer;\n if (!isCrmColumnField(choice) || (probabilities[choice] ?? 0) < held) return;\n meanings[header] = choice === \"status\" && !samples.every(isStatusCell) ? \"stage\" : choice;\n });\n return meanings;\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\";\nexport * from \"./crm-columns\";\n"],"mappings":"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","names":["text","z","z","z","z","z"]}
@@ -1,191 +0,0 @@
1
- import {
2
- hintLines,
3
- splitHints
4
- } from "./chunk-D5FY4FAK.js";
5
- import {
6
- isNotConnectedError,
7
- writeJsonEnvelope
8
- } from "./chunk-VFIOJD5M.js";
9
- import {
10
- ApiError,
11
- apiPost
12
- } from "./chunk-XBOK23HI.js";
13
- import {
14
- requireChatId,
15
- resolveChatId
16
- } from "./chunk-NAWWC5I3.js";
17
-
18
- // src/commands/ga4/shared.ts
19
- import { readFileSync } from "fs";
20
- function failValidation(message) {
21
- writeJsonEnvelope({ ok: false, error: { code: "VALIDATION_ERROR", message } });
22
- process.exit(1);
23
- }
24
- function requireTarget(args, entity) {
25
- const positional = Array.isArray(args._) ? args._[0] : void 0;
26
- const target = args.id ?? args.target ?? positional;
27
- if (typeof target !== "string" || target.length === 0) {
28
- failValidation(`pass the ${entity} id as the positional argument`);
29
- }
30
- return target;
31
- }
32
- function readJsonSource(args, flag) {
33
- const inline = args[flag];
34
- const file = args.file;
35
- const raw = typeof file === "string" && file.length > 0 ? readFileSync(file, "utf8") : typeof inline === "string" && inline.length > 0 ? inline : void 0;
36
- if (raw === void 0) {
37
- failValidation(`pass --${flag} with inline JSON or --file with a path to a JSON file`);
38
- }
39
- try {
40
- return JSON.parse(raw);
41
- } catch {
42
- return failValidation(`--${flag} is not valid JSON`);
43
- }
44
- }
45
- function asObject(value, flag, index) {
46
- if (!value || typeof value !== "object" || Array.isArray(value)) {
47
- failValidation(
48
- index === void 0 ? `--${flag} must be a JSON object` : `--${flag}[${index}] must be a JSON object`
49
- );
50
- }
51
- return value;
52
- }
53
- function loadJsonArg(args, flag = "json") {
54
- return asObject(readJsonSource(args, flag), flag);
55
- }
56
- function loadJsonPayloads(args) {
57
- const parsed = readJsonSource(args, "json");
58
- if (!Array.isArray(parsed)) {
59
- return [asObject(parsed, "json")];
60
- }
61
- if (parsed.length === 0) {
62
- failValidation("--json is an empty list \u2014 pass at least one definition");
63
- }
64
- return parsed.map((entry, index) => asObject(entry, "json", index));
65
- }
66
- var RETRYABLE_CODES = /* @__PURE__ */ new Set(["RATE_LIMITED", "UNAVAILABLE", "INTERNAL_ERROR", "NETWORK_ERROR", "TIMEOUT"]);
67
- function handleError(err) {
68
- if (err instanceof ApiError) {
69
- const readOnly = err.code === "FORBIDDEN" && /read the property but not change it/i.test(err.message);
70
- writeJsonEnvelope({
71
- ok: false,
72
- error: {
73
- code: err.code,
74
- message: err.message,
75
- ...readOnly ? {
76
- fix: {
77
- action: "reconnect",
78
- explanation: "The Google Analytics connection is read-only. Ask the user to reconnect Google Analytics \u2014 in the dashboard, Brain \u2192 Integrations \u2192 Platforms \u2192 Google Analytics \u2014 which grants the permission to change the property. Reporting (`baker ga4 query`, `baker ga4 audit`) keeps working meanwhile, so carry on with the rest of the job and tell them what you will set up once they have reconnected. Don't claim anything was configured."
79
- }
80
- } : err.code === "UNAUTHORIZED" || err.code === "FORBIDDEN" && isNotConnectedError(err.code, err.message) ? {
81
- fix: {
82
- action: "request_connection",
83
- explanation: 'Google Analytics is not connected for this company yet, or no property has been picked. Don\'t send the user to Settings \u2014 call the `request_connection` tool with { platform: "google-analytics", reason } and they connect and pick their property from inside the chat. If the `request_connection` call fails, say so plainly and give the exact route: dashboard \u2192 Brain \u2192 Integrations \u2192 Platforms \u2192 Google Analytics. Then carry on with the rest of the task.'
84
- }
85
- } : {},
86
- retryable: RETRYABLE_CODES.has(err.code)
87
- }
88
- });
89
- process.exit(1);
90
- }
91
- writeJsonEnvelope({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error", retryable: true } });
92
- process.exit(1);
93
- }
94
- var STAGE_HINTS = [
95
- "Staged only \u2014 nothing has changed in Google Analytics yet. These apply when the chat completes, and an applied change takes effect on the property immediately: there is no version to publish afterwards and no undo. Say the changes are ready and take effect when the user completes the chat \u2014 not that they are done already."
96
- ];
97
- var WARNING_HINT = "Read the warnings above before telling the user this is ready.";
98
- async function stageOp(op) {
99
- const chatId = requireChatId();
100
- try {
101
- const { data, hints } = splitHints(await apiPost("/api/ga4/draft/stage", { chatId, op }));
102
- writeJsonEnvelope({
103
- ok: true,
104
- data,
105
- hints: [...hints, ...STAGE_HINTS, ...data.warnings.length > 0 ? [WARNING_HINT] : []]
106
- });
107
- } catch (err) {
108
- handleError(err);
109
- }
110
- }
111
- async function stageOps(ops) {
112
- const [only] = ops;
113
- if (ops.length === 1 && only) {
114
- await stageOp(only);
115
- return;
116
- }
117
- const chatId = requireChatId();
118
- try {
119
- const { data, hints } = splitHints(
120
- await apiPost("/api/ga4/draft/stage-batch", { chatId, ops })
121
- );
122
- writeJsonEnvelope({
123
- ok: true,
124
- data,
125
- hints: [...hints, ...STAGE_HINTS, ...data.ops.some((op) => op.warnings.length > 0) ? [WARNING_HINT] : []]
126
- });
127
- } catch (err) {
128
- handleError(err);
129
- }
130
- }
131
- async function draftAction(path, body, chat) {
132
- const chatId = resolveChatId(chat);
133
- try {
134
- const { data, hints } = splitHints(await apiPost(path, { chatId, ...body }));
135
- writeJsonEnvelope({ ok: true, data, ...hints.length > 0 ? { hints } : {} });
136
- return data;
137
- } catch (err) {
138
- handleError(err);
139
- }
140
- }
141
- function renderDraft(response) {
142
- if (response.count === 0) {
143
- return "No Google Analytics changes staged on this chat.";
144
- }
145
- const lines = [
146
- `${response.count} staged Google Analytics change(s)`,
147
- ...response.ops.map((op) => {
148
- const status = op.result ? ` [${op.result.status}]` : "";
149
- return ` ${op.ref} ${op.summary}${status}`;
150
- })
151
- ];
152
- if (response.status === "applied") {
153
- const failed = response.ops.filter((op) => op.result?.status !== "applied");
154
- lines.push(
155
- "",
156
- failed.length === 0 ? "All applied \u2014 these are in effect on the property now." : `${failed.length} of ${response.count} did not apply. The rest are in effect on the property.`
157
- );
158
- }
159
- if (response.publishError) {
160
- lines.push("", response.publishError);
161
- }
162
- return lines.join("\n");
163
- }
164
- async function draftList(json, chat) {
165
- const chatId = resolveChatId(chat);
166
- try {
167
- const response = await apiPost("/api/ga4/draft", { chatId });
168
- const { data, hints } = splitHints(response);
169
- if (json) {
170
- writeJsonEnvelope({ ok: true, data, ...hints.length > 0 ? { hints } : {} });
171
- return;
172
- }
173
- process.stdout.write(`${renderDraft(data)}${hintLines(response)}
174
- `);
175
- } catch (err) {
176
- handleError(err);
177
- }
178
- }
179
-
180
- export {
181
- failValidation,
182
- requireTarget,
183
- loadJsonArg,
184
- loadJsonPayloads,
185
- handleError,
186
- stageOp,
187
- stageOps,
188
- draftAction,
189
- draftList
190
- };
191
- //# sourceMappingURL=chunk-4NDCTLI5.js.map
@@ -1,141 +0,0 @@
1
- import {
2
- hintLines,
3
- splitHints
4
- } from "./chunk-D5FY4FAK.js";
5
- import {
6
- isNotConnectedError,
7
- writeJsonEnvelope
8
- } from "./chunk-VFIOJD5M.js";
9
- import {
10
- ApiError,
11
- apiPost
12
- } from "./chunk-XBOK23HI.js";
13
- import {
14
- requireChatId,
15
- resolveChatId
16
- } from "./chunk-NAWWC5I3.js";
17
-
18
- // src/commands/tag-manager/shared.ts
19
- import { readFileSync } from "fs";
20
- function failValidation(message) {
21
- writeJsonEnvelope({ ok: false, error: { code: "VALIDATION_ERROR", message } });
22
- process.exit(1);
23
- }
24
- function requireTarget(args, entity) {
25
- const positional = Array.isArray(args._) ? args._[0] : void 0;
26
- const target = args.id ?? args.target ?? positional;
27
- if (typeof target !== "string" || target.length === 0) {
28
- failValidation(`pass the ${entity} id or path as the positional argument`);
29
- }
30
- return target;
31
- }
32
- function loadJsonArg(args, flag = "json") {
33
- const inline = args[flag];
34
- const file = args.file;
35
- const raw = typeof file === "string" && file.length > 0 ? readFileSync(file, "utf8") : typeof inline === "string" && inline.length > 0 ? inline : void 0;
36
- if (raw === void 0) {
37
- failValidation(`pass --${flag} with inline JSON or --file with a path to a JSON file`);
38
- }
39
- try {
40
- const parsed = JSON.parse(raw);
41
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
42
- failValidation(`--${flag} must be a JSON object`);
43
- }
44
- return parsed;
45
- } catch {
46
- return failValidation(`--${flag} is not valid JSON`);
47
- }
48
- }
49
- var RETRYABLE_CODES = /* @__PURE__ */ new Set(["RATE_LIMITED", "UNAVAILABLE", "INTERNAL_ERROR", "NETWORK_ERROR", "TIMEOUT"]);
50
- function handleError(err) {
51
- if (err instanceof ApiError) {
52
- writeJsonEnvelope({
53
- ok: false,
54
- error: {
55
- code: err.code,
56
- message: err.message,
57
- ...err.code === "UNAUTHORIZED" || err.code === "FORBIDDEN" && isNotConnectedError(err.code, err.message) ? {
58
- fix: {
59
- action: "request_connection",
60
- explanation: 'Tag Manager is not connected for this company yet, or no container has been picked. Don\'t send the user to Settings \u2014 call the `request_connection` tool with { platform: "google-tag-manager", reason } and they connect and pick their containers (they can pick more than one) from inside the chat. `request_tag_input` is not the route: that form manages the container snippet on the site, not what runs inside the container, and it cannot pick a container. If the `request_connection` call fails, say so plainly and give the exact route: dashboard \u2192 Brain \u2192 Integrations \u2192 Platforms \u2192 Google Tag Manager, where they also pick the container. Then carry on with the rest of the task.'
61
- }
62
- } : {},
63
- retryable: RETRYABLE_CODES.has(err.code)
64
- }
65
- });
66
- process.exit(1);
67
- }
68
- writeJsonEnvelope({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error", retryable: true } });
69
- process.exit(1);
70
- }
71
- var STAGE_HINTS = [
72
- "Staged only \u2014 nothing has changed in Tag Manager yet. These apply when the chat completes, in dependency order, and close as a Tag Manager version that is then published, so they do go live on the user's site. Say the changes are ready and go live when they publish \u2014 not that they are live already."
73
- ];
74
- async function stageOp(op) {
75
- const chatId = requireChatId();
76
- try {
77
- const { data, hints } = splitHints(
78
- await apiPost("/api/tag-manager/draft/stage", { chatId, op })
79
- );
80
- writeJsonEnvelope({ ok: true, data, hints: [...hints, ...STAGE_HINTS] });
81
- } catch (err) {
82
- handleError(err);
83
- }
84
- }
85
- async function draftAction(path, body, chat) {
86
- const chatId = resolveChatId(chat);
87
- try {
88
- const { data, hints } = splitHints(await apiPost(path, { chatId, ...body }));
89
- writeJsonEnvelope({ ok: true, data, ...hints.length > 0 ? { hints } : {} });
90
- return data;
91
- } catch (err) {
92
- handleError(err);
93
- }
94
- }
95
- function renderDraft(response) {
96
- if (response.count === 0) {
97
- return "No Tag Manager changes staged on this chat.";
98
- }
99
- const lines = [
100
- `${response.count} staged Tag Manager change(s)`,
101
- ...response.ops.map((op) => {
102
- const status = op.result ? ` [${op.result.status}]` : "";
103
- return ` ${op.ref} ${op.summary}${status}`;
104
- })
105
- ];
106
- if (response.versionId) {
107
- lines.push(
108
- "",
109
- response.published ? `Applied and published as Tag Manager version ${response.versionId}. These changes are live on the site.` : `Applied into Tag Manager version ${response.versionId}. It is NOT published \u2014 publish it in Tag Manager to go live.`
110
- );
111
- }
112
- if (response.compilerError) {
113
- lines.push("", `Tag Manager reported a problem building the version: ${response.compilerError}`);
114
- }
115
- return lines.join("\n");
116
- }
117
- async function draftList(json, chat) {
118
- const chatId = resolveChatId(chat);
119
- try {
120
- const response = await apiPost("/api/tag-manager/draft", { chatId });
121
- const { data, hints } = splitHints(response);
122
- if (json) {
123
- writeJsonEnvelope({ ok: true, data, ...hints.length > 0 ? { hints } : {} });
124
- return;
125
- }
126
- process.stdout.write(`${renderDraft(data)}${hintLines(response)}
127
- `);
128
- } catch (err) {
129
- handleError(err);
130
- }
131
- }
132
-
133
- export {
134
- requireTarget,
135
- loadJsonArg,
136
- handleError,
137
- stageOp,
138
- draftAction,
139
- draftList
140
- };
141
- //# sourceMappingURL=chunk-5ARG3CQG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/tag-manager/shared.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport type {\n TagManagerDraftListResponse,\n TagManagerDraftRemoveResponse,\n TagManagerDraftShowResponse,\n TagManagerDraftStageResponse,\n} from \"@baker/api/tag-manager\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { requireChatId, resolveChatId } from \"../../env.ts\";\nimport { isNotConnectedError } from \"../../error-handler.ts\";\nimport { hintLines, splitHints } from \"../ads/hints.ts\";\nimport { writeJsonEnvelope } from \"../ads/output.ts\";\n\n/**\n * Shared plumbing for the staged Tag Manager commands. Writes NEVER hit the\n * Tag Manager API directly: every command stages an op against this chat's\n * draft, and the whole draft applies when the chat is published — into the\n * container's working workspace, in dependency order, closing with a container\n * version. Publishing that version is gated per company; otherwise it waits for\n * a human in Tag Manager.\n */\n\nexport function failValidation(message: string): never {\n writeJsonEnvelope({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\nexport function requireTarget(args: Record<string, unknown>, entity: string): string {\n const positional = Array.isArray(args._) ? args._[0] : undefined;\n const target = args.id ?? args.target ?? positional;\n if (typeof target !== \"string\" || target.length === 0) {\n failValidation(`pass the ${entity} id or path as the positional argument`);\n }\n return target;\n}\n\n/** `--json '<inline>'` or `--file <path>` → a parsed object. */\nexport function loadJsonArg(args: Record<string, unknown>, flag: \"patch\" | \"json\" = \"json\"): Record<string, unknown> {\n const inline = args[flag];\n const file = args.file;\n const raw =\n typeof file === \"string\" && file.length > 0\n ? readFileSync(file, \"utf8\")\n : typeof inline === \"string\" && inline.length > 0\n ? inline\n : undefined;\n if (raw === undefined) {\n failValidation(`pass --${flag} with inline JSON or --file with a path to a JSON file`);\n }\n try {\n const parsed: unknown = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n failValidation(`--${flag} must be a JSON object`);\n }\n return parsed as Record<string, unknown>;\n } catch {\n return failValidation(`--${flag} is not valid JSON`);\n }\n}\n\n/**\n * Transient by nature — worth one more go. Saying so is the difference between\n * the agent retrying a blip and abandoning a multi-step job over one. Every\n * other code is a real answer that a second call returns again.\n */\nconst RETRYABLE_CODES = new Set([\"RATE_LIMITED\", \"UNAVAILABLE\", \"INTERNAL_ERROR\", \"NETWORK_ERROR\", \"TIMEOUT\"]);\n\n/**\n * The one error shape for the whole family.\n *\n * Only the 403s raised while resolving the company's container mean \"not\n * connected\", which is why the fix is keyed to the message and not just the\n * status: other 403s are real permission refusals a reconnect cannot fix.\n * `NOT_FOUND` deliberately does NOT trigger the connect form either — it is also\n * what a missing tag returns, and asking the user to reconnect a working\n * connection because a tag id was wrong wastes their time and fixes nothing.\n */\nexport function handleError(err: unknown): never {\n if (err instanceof ApiError) {\n writeJsonEnvelope({\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n ...(err.code === \"UNAUTHORIZED\" || (err.code === \"FORBIDDEN\" && isNotConnectedError(err.code, err.message))\n ? {\n fix: {\n action: \"request_connection\",\n explanation:\n \"Tag Manager is not connected for this company yet, or no container has been picked. Don't send \" +\n \"the user to Settings — call the `request_connection` tool with \" +\n '{ platform: \"google-tag-manager\", reason } and they connect and pick their containers (they can ' +\n \"pick more than one) from inside the chat. `request_tag_input` is not the route: that form \" +\n \"manages the container snippet on the \" +\n \"site, not what runs inside the container, and it cannot pick a container. If the \" +\n \"`request_connection` call fails, say so plainly and give the exact route: dashboard → Brain → \" +\n \"Integrations → Platforms → Google Tag Manager, where they also pick the container. Then carry on \" +\n \"with the rest of the task.\",\n },\n }\n : {}),\n retryable: RETRYABLE_CODES.has(err.code),\n },\n });\n process.exit(1);\n }\n writeJsonEnvelope({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\", retryable: true } });\n process.exit(1);\n}\n\n/** Nudges returned after a stage so the agent's next step is obvious. */\nconst STAGE_HINTS = [\n \"Staged only — nothing has changed in Tag Manager yet. These apply when the chat completes, in dependency \" +\n \"order, and close as a Tag Manager version that is then published, so they do go live on the user's site. \" +\n \"Say the changes are ready and go live when they publish — not that they are live already.\",\n];\n\nexport async function stageOp(op: Record<string, unknown>): Promise<void> {\n const chatId = requireChatId();\n try {\n const { data, hints } = splitHints(\n await apiPost<TagManagerDraftStageResponse>(\"/api/tag-manager/draft/stage\", { chatId, op }),\n );\n writeJsonEnvelope({ ok: true, data, hints: [...hints, ...STAGE_HINTS] });\n } catch (err) {\n handleError(err);\n }\n}\n\nexport async function draftAction(\n path: string,\n body: Record<string, unknown>,\n chat?: unknown,\n): Promise<TagManagerDraftRemoveResponse | TagManagerDraftShowResponse | Record<string, unknown>> {\n const chatId = resolveChatId(chat);\n try {\n const { data, hints } = splitHints(await apiPost<Record<string, unknown>>(path, { chatId, ...body }));\n writeJsonEnvelope({ ok: true, data, ...(hints.length > 0 ? { hints } : {}) });\n return data;\n } catch (err) {\n handleError(err);\n }\n}\n\n/** A compact, readable view of everything staged on this chat. */\nexport function renderDraft(response: TagManagerDraftListResponse): string {\n if (response.count === 0) {\n return \"No Tag Manager changes staged on this chat.\";\n }\n const lines = [\n `${response.count} staged Tag Manager change(s)`,\n ...response.ops.map((op) => {\n const status = op.result ? ` [${op.result.status}]` : \"\";\n return ` ${op.ref} ${op.summary}${status}`;\n }),\n ];\n if (response.versionId) {\n lines.push(\n \"\",\n response.published\n ? `Applied and published as Tag Manager version ${response.versionId}. These changes are live on the site.`\n : `Applied into Tag Manager version ${response.versionId}. It is NOT published — publish it in Tag Manager to go live.`,\n );\n }\n if (response.compilerError) {\n lines.push(\"\", `Tag Manager reported a problem building the version: ${response.compilerError}`);\n }\n return lines.join(\"\\n\");\n}\n\nexport async function draftList(json: boolean, chat?: unknown): Promise<void> {\n const chatId = resolveChatId(chat);\n try {\n const response = await apiPost<TagManagerDraftListResponse>(\"/api/tag-manager/draft\", { chatId });\n const { data, hints } = splitHints(response);\n if (json) {\n writeJsonEnvelope({ ok: true, data, ...(hints.length > 0 ? { hints } : {}) });\n return;\n }\n process.stdout.write(`${renderDraft(data)}${hintLines(response)}\\n`);\n } catch (err) {\n handleError(err);\n }\n}\n"],"mappings":"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","names":[]}