@koda-sl/baker-cli 0.496.0 → 0.497.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/README.md +25 -4
  2. package/dist/account-ZKJFX2GK.js +80 -0
  3. package/dist/account-ZKJFX2GK.js.map +1 -0
  4. package/dist/account-users-SZCYHVBM.js +62 -0
  5. package/dist/account-users-SZCYHVBM.js.map +1 -0
  6. package/dist/accounts-5DFYKYSM.js +78 -0
  7. package/dist/accounts-5DFYKYSM.js.map +1 -0
  8. package/dist/accounts-OGAIQNE6.js +612 -0
  9. package/dist/accounts-OGAIQNE6.js.map +1 -0
  10. package/dist/actions-FMNJSOBA.js +55 -0
  11. package/dist/activecampaign-LYYYH6XD.js +936 -0
  12. package/dist/activecampaign-LYYYH6XD.js.map +1 -0
  13. package/dist/add-AOQLZRPC.js +80 -0
  14. package/dist/add-AOQLZRPC.js.map +1 -0
  15. package/dist/add-HWXEPSZF.js +105 -0
  16. package/dist/add-HWXEPSZF.js.map +1 -0
  17. package/dist/add-VDZPGZF5.js +148 -0
  18. package/dist/add-VDZPGZF5.js.map +1 -0
  19. package/dist/add-YYP3O536.js +303 -0
  20. package/dist/add-YYP3O536.js.map +1 -0
  21. package/dist/ads-OLXSDPD6.js +40 -0
  22. package/dist/advertisers-STYAIX72.js +121 -0
  23. package/dist/advertisers-STYAIX72.js.map +1 -0
  24. package/dist/analytics-6WBK4VFO.js +1977 -0
  25. package/dist/analytics-6WBK4VFO.js.map +1 -0
  26. package/dist/analytics-DHB325DM.js +434 -0
  27. package/dist/analytics-DHB325DM.js.map +1 -0
  28. package/dist/assign-BFXHYTMF.js +78 -0
  29. package/dist/assign-BFXHYTMF.js.map +1 -0
  30. package/dist/audience-size-XWHZV2GH.js +74 -0
  31. package/dist/audience-size-XWHZV2GH.js.map +1 -0
  32. package/dist/audit-IYGRU7LD.js +152 -0
  33. package/dist/audit-IYGRU7LD.js.map +1 -0
  34. package/dist/autocomplete-SDDSJTAF.js +112 -0
  35. package/dist/autocomplete-SDDSJTAF.js.map +1 -0
  36. package/dist/avatars-I4H3NMEJ.js +38 -0
  37. package/dist/bid-pricing-OVYBDRMV.js +101 -0
  38. package/dist/bid-pricing-OVYBDRMV.js.map +1 -0
  39. package/dist/brand-3V7ECY7D.js +22 -0
  40. package/dist/brief-U2W7KMFC.js +539 -0
  41. package/dist/brief-U2W7KMFC.js.map +1 -0
  42. package/dist/campaign-groups-FJHBVUA3.js +97 -0
  43. package/dist/campaign-groups-FJHBVUA3.js.map +1 -0
  44. package/dist/campaign-writes-XKYYMZML.js +166 -0
  45. package/dist/campaign-writes-XKYYMZML.js.map +1 -0
  46. package/dist/campaigns-E5UW4I3X.js +111 -0
  47. package/dist/campaigns-E5UW4I3X.js.map +1 -0
  48. package/dist/campaigns-MCB76NPQ.js +107 -0
  49. package/dist/canvas-JCNKMGCG.js +46 -0
  50. package/dist/capabilities-CLTZCXCZ.js +145 -0
  51. package/dist/capabilities-CLTZCXCZ.js.map +1 -0
  52. package/dist/chatgpt-XFZ42NXC.js +47 -0
  53. package/dist/chats-DTJSBDWO.js +277 -0
  54. package/dist/chats-DTJSBDWO.js.map +1 -0
  55. package/dist/check-CZTS64AW.js +105 -0
  56. package/dist/check-CZTS64AW.js.map +1 -0
  57. package/dist/chunk-2YTBPRRG.js +207 -0
  58. package/dist/chunk-3SNCMEJB.js +97 -0
  59. package/dist/chunk-7QGFO35A.js +23 -0
  60. package/dist/chunk-AV7ALENU.js +191 -0
  61. package/dist/chunk-BRLFQ4VX.js +604 -0
  62. package/dist/chunk-CAZGM2NX.js +92 -0
  63. package/dist/chunk-CAZGM2NX.js.map +1 -0
  64. package/dist/chunk-DJE7UXYT.js +831 -0
  65. package/dist/chunk-EFWXYUSK.js +139 -0
  66. package/dist/chunk-EONSZAZB.js +3868 -0
  67. package/dist/chunk-FALJQCWL.js +661 -0
  68. package/dist/chunk-FALJQCWL.js.map +1 -0
  69. package/dist/chunk-FG3MV2XM.js +89 -0
  70. package/dist/chunk-FKG476GH.js +392 -0
  71. package/dist/chunk-FUGQSIYG.js +297 -0
  72. package/dist/chunk-GZ4A2VYW.js +39 -0
  73. package/dist/chunk-GZ4A2VYW.js.map +1 -0
  74. package/dist/chunk-HPLHAHG5.js +275 -0
  75. package/dist/chunk-I24YT2KG.js +122 -0
  76. package/dist/chunk-IFDZZOUC.js +903 -0
  77. package/dist/chunk-JVVUI55M.js +455 -0
  78. package/dist/chunk-KKSHEPBY.js +363 -0
  79. package/dist/chunk-KQ7RCLGC.js +547 -0
  80. package/dist/chunk-L7WMS5PW.js +172 -0
  81. package/dist/chunk-LBRO4MTL.js +19 -0
  82. package/dist/chunk-LNRPOULW.js +224 -0
  83. package/dist/chunk-LX6WC2XZ.js +942 -0
  84. package/dist/chunk-MMGTJBM6.js +142 -0
  85. package/dist/chunk-NZS3KEQ2.js +97 -0
  86. package/dist/chunk-NZS3KEQ2.js.map +1 -0
  87. package/dist/chunk-O37VU7FG.js +6799 -0
  88. package/dist/chunk-O37VU7FG.js.map +1 -0
  89. package/dist/chunk-OEZYSL3U.js +51 -0
  90. package/dist/chunk-OOVHBMQB.js +103 -0
  91. package/dist/chunk-PTH7VWKK.js +159 -0
  92. package/dist/chunk-PYD6IGW6.js +401 -0
  93. package/dist/chunk-PYD6IGW6.js.map +1 -0
  94. package/dist/chunk-QE2E4EYJ.js +349 -0
  95. package/dist/chunk-QE2E4EYJ.js.map +1 -0
  96. package/dist/chunk-QZF4BVKL.js +66 -0
  97. package/dist/chunk-RITUSBYO.js +61 -0
  98. package/dist/chunk-SSTL3A7Z.js +206 -0
  99. package/dist/chunk-SZNGQ2GF.js +64 -0
  100. package/dist/chunk-SZNGQ2GF.js.map +1 -0
  101. package/dist/chunk-TD4SO6TR.js +169 -0
  102. package/dist/chunk-UZ4RTOFG.js +91 -0
  103. package/dist/chunk-VAX7PFQV.js +592 -0
  104. package/dist/chunk-VDRSZK4P.js +494 -0
  105. package/dist/chunk-VNU2EYD4.js +344 -0
  106. package/dist/chunk-WT4WDIXA.js +156 -0
  107. package/dist/chunk-XEX23CIB.js +160 -0
  108. package/dist/chunk-XXDF25BW.js +8939 -0
  109. package/dist/chunk-YJ3LSFMX.js +249 -0
  110. package/dist/chunk-YVK5RT3B.js +197 -0
  111. package/dist/chunk-YWWRLZUR.js +433 -0
  112. package/dist/chunk-Z4S5BCVZ.js +57 -0
  113. package/dist/chunk-ZYGK7GAK.js +1079 -0
  114. package/dist/claim-TSFPWTQY.js +198 -0
  115. package/dist/claim-TSFPWTQY.js.map +1 -0
  116. package/dist/cli.js +38 -37
  117. package/dist/cli.js.map +1 -1
  118. package/dist/companies-P7FZNJQV.js +196 -0
  119. package/dist/companies-P7FZNJQV.js.map +1 -0
  120. package/dist/complete-SYDIHMD5.js +82 -0
  121. package/dist/complete-SYDIHMD5.js.map +1 -0
  122. package/dist/connect-COS6G45S.js +43 -0
  123. package/dist/conversation-UJOWMJRH.js +94 -0
  124. package/dist/conversation-UJOWMJRH.js.map +1 -0
  125. package/dist/conversions-ONOIEILU.js +138 -0
  126. package/dist/conversions-ONOIEILU.js.map +1 -0
  127. package/dist/create-DPQRYQXK.js +208 -0
  128. package/dist/create-DPQRYQXK.js.map +1 -0
  129. package/dist/create-JD76Z4A4.js +60 -0
  130. package/dist/create-JD76Z4A4.js.map +1 -0
  131. package/dist/create-NOT3HGP2.js +133 -0
  132. package/dist/create-NOT3HGP2.js.map +1 -0
  133. package/dist/create-ZYEB7SHF.js +236 -0
  134. package/dist/create-ZYEB7SHF.js.map +1 -0
  135. package/dist/creatives-LRSELC7Y.js +221 -0
  136. package/dist/creatives-LRSELC7Y.js.map +1 -0
  137. package/dist/creatives-SEQHJD2M.js +58 -0
  138. package/dist/credentials-LHPTUVVA.js +288 -0
  139. package/dist/credentials-LHPTUVVA.js.map +1 -0
  140. package/dist/critique-Q7GSZ5RP.js +1459 -0
  141. package/dist/critique-Q7GSZ5RP.js.map +1 -0
  142. package/dist/critique-RR2XOQCE.js +228 -0
  143. package/dist/critique-RR2XOQCE.js.map +1 -0
  144. package/dist/crm-J7EU32PL.js +319 -0
  145. package/dist/crm-J7EU32PL.js.map +1 -0
  146. package/dist/crm-MC444ZVU.js +225 -0
  147. package/dist/crm-MC444ZVU.js.map +1 -0
  148. package/dist/customers-LMSX33FO.js +57 -0
  149. package/dist/delete-BQBVATMF.js +55 -0
  150. package/dist/delete-BQBVATMF.js.map +1 -0
  151. package/dist/delete-K7A3AUPH.js +65 -0
  152. package/dist/delete-K7A3AUPH.js.map +1 -0
  153. package/dist/delete-VV2ICIHF.js +67 -0
  154. package/dist/delete-VV2ICIHF.js.map +1 -0
  155. package/dist/demographics-7GWUXXS6.js +139 -0
  156. package/dist/demographics-7GWUXXS6.js.map +1 -0
  157. package/dist/discard-3CLZ4DPD.js +67 -0
  158. package/dist/discard-3CLZ4DPD.js.map +1 -0
  159. package/dist/domain-ZS74BSE6.js +99 -0
  160. package/dist/domain-ZS74BSE6.js.map +1 -0
  161. package/dist/draft-J3B33RAZ.js +308 -0
  162. package/dist/draft-J3B33RAZ.js.map +1 -0
  163. package/dist/draft-MZLWVX3D.js +218 -0
  164. package/dist/draft-MZLWVX3D.js.map +1 -0
  165. package/dist/draft-R56PIXCV.js +333 -0
  166. package/dist/draft-R56PIXCV.js.map +1 -0
  167. package/dist/experiment-7RJ5X2LL.js +1397 -0
  168. package/dist/experiments-NOSJJMYI.js +234 -0
  169. package/dist/experiments-NOSJJMYI.js.map +1 -0
  170. package/dist/facets-E6SHYUAI.js +115 -0
  171. package/dist/facets-E6SHYUAI.js.map +1 -0
  172. package/dist/feedback-HXCQBV7S.js +107 -0
  173. package/dist/feedback-HXCQBV7S.js.map +1 -0
  174. package/dist/feedback-record-GXPYXNT6.js +261 -0
  175. package/dist/feedback-record-GXPYXNT6.js.map +1 -0
  176. package/dist/fetch-HMUGSRE4.js +177 -0
  177. package/dist/fetch-HMUGSRE4.js.map +1 -0
  178. package/dist/find-2EPXK5RF.js +134 -0
  179. package/dist/fit-W7UNFZT5.js +63 -0
  180. package/dist/flows-SO5J3M3X.js +248 -0
  181. package/dist/flows-SO5J3M3X.js.map +1 -0
  182. package/dist/fonts-N42UYWTX.js +37 -0
  183. package/dist/forecast-24LGJVLC.js +119 -0
  184. package/dist/forecast-24LGJVLC.js.map +1 -0
  185. package/dist/funnel-NYT36B3C.js +395 -0
  186. package/dist/funnel-NYT36B3C.js.map +1 -0
  187. package/dist/ga4-6EIQC2TG.js +55 -0
  188. package/dist/get-KAGO4EC5.js +80 -0
  189. package/dist/get-KAGO4EC5.js.map +1 -0
  190. package/dist/get-PZX27LQY.js +38 -0
  191. package/dist/get-PZX27LQY.js.map +1 -0
  192. package/dist/get-R5JAFHTH.js +57 -0
  193. package/dist/get-R5JAFHTH.js.map +1 -0
  194. package/dist/google-O5OI6QFU.js +136 -0
  195. package/dist/google-ads-6X4BHGUR.js +196 -0
  196. package/dist/google-ads-6X4BHGUR.js.map +1 -0
  197. package/dist/gsc-BM3T2GDL.js +30 -0
  198. package/dist/history-LGOWYLBE.js +134 -0
  199. package/dist/history-LGOWYLBE.js.map +1 -0
  200. package/dist/hubspot-LJB3ETUT.js +780 -0
  201. package/dist/hubspot-LJB3ETUT.js.map +1 -0
  202. package/dist/icon-B7DG53S5.js +137 -0
  203. package/dist/ideas-DYN2DMFN.js +41 -0
  204. package/dist/images-EQCUXEHF.js +92 -0
  205. package/dist/ingest-B46AY3QU.js +24 -0
  206. package/dist/ingest-T7ZS2R4U.js +108 -0
  207. package/dist/ingest-T7ZS2R4U.js.map +1 -0
  208. package/dist/inspect-BSNGAT2S.js +190 -0
  209. package/dist/inspect-BSNGAT2S.js.map +1 -0
  210. package/dist/inspiration-TCCKM4R7.js +53 -0
  211. package/dist/keyword-metrics-KNTIN4ZK.js +198 -0
  212. package/dist/keyword-metrics-KNTIN4ZK.js.map +1 -0
  213. package/dist/keywords-for-site-S4MXGXWR.js +129 -0
  214. package/dist/keywords-for-site-S4MXGXWR.js.map +1 -0
  215. package/dist/landing-WVPA7NBR.js +28 -0
  216. package/dist/leads-EINV5FK3.js +113 -0
  217. package/dist/leads-EINV5FK3.js.map +1 -0
  218. package/dist/learn-7Z2VR6MS.js +205 -0
  219. package/dist/learn-7Z2VR6MS.js.map +1 -0
  220. package/dist/line-item-writes-Z3TIB5KZ.js +209 -0
  221. package/dist/line-item-writes-Z3TIB5KZ.js.map +1 -0
  222. package/dist/line-items-OEWYOPFP.js +103 -0
  223. package/dist/link-KYHUIPJE.js +65 -0
  224. package/dist/link-KYHUIPJE.js.map +1 -0
  225. package/dist/linkedin-JVB4HXJC.js +1314 -0
  226. package/dist/linkedin-JVB4HXJC.js.map +1 -0
  227. package/dist/list-EORTO73V.js +93 -0
  228. package/dist/list-EORTO73V.js.map +1 -0
  229. package/dist/list-QQVLURKH.js +152 -0
  230. package/dist/list-QQVLURKH.js.map +1 -0
  231. package/dist/list-QWGKRUSM.js +65 -0
  232. package/dist/list-QWGKRUSM.js.map +1 -0
  233. package/dist/list-WRBWQASJ.js +50 -0
  234. package/dist/list-Z6NMNK3T.js +304 -0
  235. package/dist/list-Z6NMNK3T.js.map +1 -0
  236. package/dist/log-RUMKYPYK.js +93 -0
  237. package/dist/log-RUMKYPYK.js.map +1 -0
  238. package/dist/logo-QTSBKP2J.js +18 -0
  239. package/dist/make-IJGCQA7C.js +1354 -0
  240. package/dist/make-IJGCQA7C.js.map +1 -0
  241. package/dist/map-QZHIJFQT.js +434 -0
  242. package/dist/map-QZHIJFQT.js.map +1 -0
  243. package/dist/mcp-ZH2XDV5P.js +715 -0
  244. package/dist/mcp-ZH2XDV5P.js.map +1 -0
  245. package/dist/media-sources-SQ2RPDBO.js +35 -0
  246. package/dist/media-sources-SQ2RPDBO.js.map +1 -0
  247. package/dist/members-4YX7JEZM.js +45 -0
  248. package/dist/members-4YX7JEZM.js.map +1 -0
  249. package/dist/normalize-ABIWLRIT.js +142 -0
  250. package/dist/normalize-ABIWLRIT.js.map +1 -0
  251. package/dist/options-SVCQVTNE.js +123 -0
  252. package/dist/options-SVCQVTNE.js.map +1 -0
  253. package/dist/organization-FNKDC742.js +947 -0
  254. package/dist/organization-FNKDC742.js.map +1 -0
  255. package/dist/performance-HTU5FR2K.js +25 -0
  256. package/dist/posts-3DAPTBH2.js +34 -0
  257. package/dist/posts-3DAPTBH2.js.map +1 -0
  258. package/dist/promoted-tweet-writes-DD3CJNWW.js +181 -0
  259. package/dist/promoted-tweet-writes-DD3CJNWW.js.map +1 -0
  260. package/dist/promoted-tweets-TTWN5OMW.js +119 -0
  261. package/dist/publish-Z62KGDJ2.js +342 -0
  262. package/dist/publish-Z62KGDJ2.js.map +1 -0
  263. package/dist/reddit-6C3PT5CT.js +27 -0
  264. package/dist/refresh-HCQXVFVR.js +95 -0
  265. package/dist/refresh-HCQXVFVR.js.map +1 -0
  266. package/dist/refresh-ZCGH64OZ.js +42 -0
  267. package/dist/refresh-ZCGH64OZ.js.map +1 -0
  268. package/dist/release-FIHW2HCH.js +61 -0
  269. package/dist/release-FIHW2HCH.js.map +1 -0
  270. package/dist/remove-CBR7NVMI.js +51 -0
  271. package/dist/remove-CBR7NVMI.js.map +1 -0
  272. package/dist/remove-PUZP5GWN.js +49 -0
  273. package/dist/remove-PUZP5GWN.js.map +1 -0
  274. package/dist/reopen-EJGLRQWR.js +64 -0
  275. package/dist/reopen-EJGLRQWR.js.map +1 -0
  276. package/dist/rerun-TVBZXASH.js +91 -0
  277. package/dist/rerun-TVBZXASH.js.map +1 -0
  278. package/dist/research-L25D4WHQ.js +263 -0
  279. package/dist/research-L25D4WHQ.js.map +1 -0
  280. package/dist/research-YCMMQVK6.js +62 -0
  281. package/dist/reset-HKKCWKZ7.js +55 -0
  282. package/dist/reset-HKKCWKZ7.js.map +1 -0
  283. package/dist/reset-SRL6I6GP.js +55 -0
  284. package/dist/reset-SRL6I6GP.js.map +1 -0
  285. package/dist/resolve-POMTTAFR.js +122 -0
  286. package/dist/resolve-POMTTAFR.js.map +1 -0
  287. package/dist/retry-MEPTOAV2.js +61 -0
  288. package/dist/retry-MEPTOAV2.js.map +1 -0
  289. package/dist/retry-RNGM3KKA.js +63 -0
  290. package/dist/retry-RNGM3KKA.js.map +1 -0
  291. package/dist/revenue-X4KPTSAM.js +89 -0
  292. package/dist/revenue-X4KPTSAM.js.map +1 -0
  293. package/dist/rules-VK7YA23Q.js +97 -0
  294. package/dist/rules-VK7YA23Q.js.map +1 -0
  295. package/dist/rules-add-VG7AT6EG.js +463 -0
  296. package/dist/rules-add-VG7AT6EG.js.map +1 -0
  297. package/dist/run-DIDQSZU7.js +67 -0
  298. package/dist/run-DIDQSZU7.js.map +1 -0
  299. package/dist/run-SR7DJ7M5.js +66 -0
  300. package/dist/scaffold-ad-46GTFUMP.js +1512 -0
  301. package/dist/scaffold-ad-46GTFUMP.js.map +1 -0
  302. package/dist/scaffold-static-ad-U63V4UHR.js +1006 -0
  303. package/dist/scaffold-static-ad-U63V4UHR.js.map +1 -0
  304. package/dist/scaffold-video-4DNTURH6.js +884 -0
  305. package/dist/scaffold-video-4DNTURH6.js.map +1 -0
  306. package/dist/schedule-JO66N7XO.js +62 -0
  307. package/dist/schedule-JO66N7XO.js.map +1 -0
  308. package/dist/schedule-JZBIX6LH.js +67 -0
  309. package/dist/schedule-JZBIX6LH.js.map +1 -0
  310. package/dist/scheduled-agents-N63EZNY6.js +50 -0
  311. package/dist/schema-B2XANMEY.js +133 -0
  312. package/dist/schema-B2XANMEY.js.map +1 -0
  313. package/dist/schema-C6SGBNA6.js +69 -0
  314. package/dist/search-7GHS3OUZ.js +51 -0
  315. package/dist/search-7GHS3OUZ.js.map +1 -0
  316. package/dist/search-W5HZUJA2.js +175 -0
  317. package/dist/search-W5HZUJA2.js.map +1 -0
  318. package/dist/select-LMGLNFWB.js +102 -0
  319. package/dist/select-LMGLNFWB.js.map +1 -0
  320. package/dist/set-prompt-M5E3UZDM.js +194 -0
  321. package/dist/set-prompt-M5E3UZDM.js.map +1 -0
  322. package/dist/setup-links-ERBQSKAB.js +142 -0
  323. package/dist/setup-links-ERBQSKAB.js.map +1 -0
  324. package/dist/site-PNVFJRYK.js +178 -0
  325. package/dist/site-PNVFJRYK.js.map +1 -0
  326. package/dist/sources-DMZJPLKC.js +455 -0
  327. package/dist/sources-DMZJPLKC.js.map +1 -0
  328. package/dist/sources-HN3GCEDX.js +30 -0
  329. package/dist/stale-VWN25WTL.js +72 -0
  330. package/dist/stale-VWN25WTL.js.map +1 -0
  331. package/dist/stats-CVF6AC7R.js +34 -0
  332. package/dist/status-SF7DTPCJ.js +63 -0
  333. package/dist/status-SF7DTPCJ.js.map +1 -0
  334. package/dist/stock-4LPQ6SM7.js +179 -0
  335. package/dist/studio-NZ6WQ7OE.js +49 -0
  336. package/dist/suggest-WMMEQCUH.js +66 -0
  337. package/dist/suggest-WMMEQCUH.js.map +1 -0
  338. package/dist/sync-F7VNZLWY.js +55 -0
  339. package/dist/sync-F7VNZLWY.js.map +1 -0
  340. package/dist/sync-HVNDPBOD.js +55 -0
  341. package/dist/sync-HVNDPBOD.js.map +1 -0
  342. package/dist/sync-definition-CKEUYKWN.js +65 -0
  343. package/dist/tag-KTQ2FV5C.js +57 -0
  344. package/dist/tag-KTQ2FV5C.js.map +1 -0
  345. package/dist/tag-manager-FLXXLNKP.js +43 -0
  346. package/dist/tags-EUOOSAKN.js +26 -0
  347. package/dist/tags-KOMAP2G5.js +21 -0
  348. package/dist/tags-KOMAP2G5.js.map +1 -0
  349. package/dist/tags-TKXJGTR3.js +21 -0
  350. package/dist/tags-TKXJGTR3.js.map +1 -0
  351. package/dist/tags-VWIPDCUA.js +225 -0
  352. package/dist/tags-VWIPDCUA.js.map +1 -0
  353. package/dist/tags-XAB4HWGW.js +21 -0
  354. package/dist/tags-XAB4HWGW.js.map +1 -0
  355. package/dist/targeting-criteria-HE7K52WN.js +113 -0
  356. package/dist/targets-NA4XPDBF.js +104 -0
  357. package/dist/targets-NA4XPDBF.js.map +1 -0
  358. package/dist/testimonials-3Q5XM7JD.js +32 -0
  359. package/dist/top-companies-TKO4QGPJ.js +109 -0
  360. package/dist/top-companies-TKO4QGPJ.js.map +1 -0
  361. package/dist/translate-YVIZ5T44.js +605 -0
  362. package/dist/translate-YVIZ5T44.js.map +1 -0
  363. package/dist/triggers-QX7VW7UO.js +143 -0
  364. package/dist/triggers-QX7VW7UO.js.map +1 -0
  365. package/dist/unlink-64SRPUNG.js +68 -0
  366. package/dist/unlink-64SRPUNG.js.map +1 -0
  367. package/dist/unstage-5X2MOUMF.js +86 -0
  368. package/dist/unstage-5X2MOUMF.js.map +1 -0
  369. package/dist/update-22ZBHURE.js +81 -0
  370. package/dist/update-22ZBHURE.js.map +1 -0
  371. package/dist/update-2LTPSGWT.js +99 -0
  372. package/dist/update-2LTPSGWT.js.map +1 -0
  373. package/dist/update-DOKS7ATM.js +189 -0
  374. package/dist/update-DOKS7ATM.js.map +1 -0
  375. package/dist/update-FB6X463M.js +64 -0
  376. package/dist/update-FB6X463M.js.map +1 -0
  377. package/dist/update-QIZ7XFAM.js +153 -0
  378. package/dist/update-QIZ7XFAM.js.map +1 -0
  379. package/dist/upload-XJ7TUVIK.js +127 -0
  380. package/dist/upload-XJ7TUVIK.js.map +1 -0
  381. package/dist/url-params-KLQOLNPS.js +99 -0
  382. package/dist/url-params-KLQOLNPS.js.map +1 -0
  383. package/dist/validate-YTBJBG44.js +118 -0
  384. package/dist/validate-YTBJBG44.js.map +1 -0
  385. package/dist/videos-WAPUPJVT.js +39 -0
  386. package/dist/viewer-check-GHQA3UY2.js +81 -0
  387. package/dist/web-6JMWERTT.js +141 -0
  388. package/dist/web-6JMWERTT.js.map +1 -0
  389. package/dist/winning-ads-XCVUAIOU.js +86 -0
  390. package/dist/write-commands-N74CDMQM.js +1493 -0
  391. package/dist/write-commands-N74CDMQM.js.map +1 -0
  392. package/dist/x-SI4KYDEY.js +47 -0
  393. package/package.json +1 -1
  394. package/dist/account-UHNR5KTE.js +0 -79
  395. package/dist/account-UHNR5KTE.js.map +0 -1
  396. package/dist/accounts-KMLXHADA.js +0 -77
  397. package/dist/accounts-KMLXHADA.js.map +0 -1
  398. package/dist/accounts-QDGNTSTV.js +0 -611
  399. package/dist/accounts-QDGNTSTV.js.map +0 -1
  400. package/dist/actions-QL5UD2W4.js +0 -55
  401. package/dist/activecampaign-5OD45ROS.js +0 -935
  402. package/dist/activecampaign-5OD45ROS.js.map +0 -1
  403. package/dist/add-2F7BEVYD.js +0 -105
  404. package/dist/add-2F7BEVYD.js.map +0 -1
  405. package/dist/add-6K6LO7CM.js +0 -104
  406. package/dist/add-6K6LO7CM.js.map +0 -1
  407. package/dist/add-LYDJZDGO.js +0 -302
  408. package/dist/add-LYDJZDGO.js.map +0 -1
  409. package/dist/ads-DHPJFU52.js +0 -40
  410. package/dist/advertisers-23LU7GTV.js +0 -120
  411. package/dist/advertisers-23LU7GTV.js.map +0 -1
  412. package/dist/analytics-HO2SLL4W.js +0 -433
  413. package/dist/analytics-HO2SLL4W.js.map +0 -1
  414. package/dist/analytics-LD3D7ISK.js +0 -1976
  415. package/dist/analytics-LD3D7ISK.js.map +0 -1
  416. package/dist/assign-CLKJKH2B.js +0 -77
  417. package/dist/assign-CLKJKH2B.js.map +0 -1
  418. package/dist/audience-size-NNYYXODL.js +0 -73
  419. package/dist/audience-size-NNYYXODL.js.map +0 -1
  420. package/dist/audit-KB4P2XGS.js +0 -151
  421. package/dist/audit-KB4P2XGS.js.map +0 -1
  422. package/dist/autocomplete-VZD2SMTE.js +0 -111
  423. package/dist/autocomplete-VZD2SMTE.js.map +0 -1
  424. package/dist/avatars-FKOO6VZ2.js +0 -38
  425. package/dist/bid-pricing-6LLXOLLI.js +0 -100
  426. package/dist/bid-pricing-6LLXOLLI.js.map +0 -1
  427. package/dist/brand-NNWHBIAX.js +0 -22
  428. package/dist/brief-CPJQWT6W.js +0 -538
  429. package/dist/brief-CPJQWT6W.js.map +0 -1
  430. package/dist/campaign-groups-YPYNXOWU.js +0 -95
  431. package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
  432. package/dist/campaign-writes-UJ4L2O6G.js +0 -165
  433. package/dist/campaign-writes-UJ4L2O6G.js.map +0 -1
  434. package/dist/campaigns-HLBZRH5A.js +0 -107
  435. package/dist/campaigns-N44ZDGB5.js +0 -109
  436. package/dist/campaigns-N44ZDGB5.js.map +0 -1
  437. package/dist/canvas-D64GLWUO.js +0 -46
  438. package/dist/capabilities-LWXCWMIY.js +0 -144
  439. package/dist/capabilities-LWXCWMIY.js.map +0 -1
  440. package/dist/chatgpt-YI6YNACI.js +0 -47
  441. package/dist/chats-7WGC2CVW.js +0 -276
  442. package/dist/chats-7WGC2CVW.js.map +0 -1
  443. package/dist/check-EH6BXWWL.js +0 -104
  444. package/dist/check-EH6BXWWL.js.map +0 -1
  445. package/dist/chunk-2B772ZEA.js +0 -169
  446. package/dist/chunk-2KRK667G.js +0 -51
  447. package/dist/chunk-2TVXJPGR.js +0 -103
  448. package/dist/chunk-3AMLOCXY.js +0 -392
  449. package/dist/chunk-3B5LPK6D.js +0 -658
  450. package/dist/chunk-3B5LPK6D.js.map +0 -1
  451. package/dist/chunk-3N5A44NQ.js +0 -122
  452. package/dist/chunk-3WAYZQNV.js +0 -61
  453. package/dist/chunk-5A257KJA.js +0 -160
  454. package/dist/chunk-6QGS3RQP.js +0 -363
  455. package/dist/chunk-AFD32O4A.js +0 -494
  456. package/dist/chunk-AW2GKIGS.js +0 -433
  457. package/dist/chunk-CYSBNCPX.js +0 -55
  458. package/dist/chunk-CYSBNCPX.js.map +0 -1
  459. package/dist/chunk-DAO63OOP.js +0 -6352
  460. package/dist/chunk-DAO63OOP.js.map +0 -1
  461. package/dist/chunk-EMQUW6JB.js +0 -942
  462. package/dist/chunk-EW3JEKIV.js +0 -139
  463. package/dist/chunk-FBFWMTOP.js +0 -19
  464. package/dist/chunk-GXDLWBOY.js +0 -73
  465. package/dist/chunk-GXDLWBOY.js.map +0 -1
  466. package/dist/chunk-GXGYTFZA.js +0 -8939
  467. package/dist/chunk-I7J7YQXZ.js +0 -142
  468. package/dist/chunk-IBY44U2M.js +0 -1079
  469. package/dist/chunk-IFXGCI33.js +0 -297
  470. package/dist/chunk-IKLHXGMF.js +0 -91
  471. package/dist/chunk-IYTPWAN3.js +0 -604
  472. package/dist/chunk-J3CWAERS.js +0 -3868
  473. package/dist/chunk-JH2L5CQD.js +0 -206
  474. package/dist/chunk-JUVVCA7B.js +0 -97
  475. package/dist/chunk-MK6XJUCQ.js +0 -197
  476. package/dist/chunk-N3I6ZXR7.js +0 -66
  477. package/dist/chunk-NBO2NSAW.js +0 -592
  478. package/dist/chunk-NEU5QD2C.js +0 -249
  479. package/dist/chunk-NKIBXOHT.js +0 -344
  480. package/dist/chunk-OE3MIV4F.js +0 -547
  481. package/dist/chunk-P2MFWJR3.js +0 -903
  482. package/dist/chunk-PHCIFBP3.js +0 -89
  483. package/dist/chunk-PTUXBO5O.js +0 -224
  484. package/dist/chunk-Q3LXLWZY.js +0 -275
  485. package/dist/chunk-Q5WBTVA7.js +0 -455
  486. package/dist/chunk-RDEAVCMF.js +0 -399
  487. package/dist/chunk-RDEAVCMF.js.map +0 -1
  488. package/dist/chunk-RGMKXNQP.js +0 -23
  489. package/dist/chunk-RZTKCCUL.js +0 -831
  490. package/dist/chunk-TTKBNBQF.js +0 -156
  491. package/dist/chunk-VB3XUR6A.js +0 -207
  492. package/dist/chunk-XCKINS7K.js +0 -57
  493. package/dist/chunk-Y6GKV7CU.js +0 -346
  494. package/dist/chunk-Y6GKV7CU.js.map +0 -1
  495. package/dist/chunk-Z2GQREJY.js +0 -159
  496. package/dist/chunk-ZDAVSTEE.js +0 -172
  497. package/dist/chunk-ZXCSOVS5.js +0 -191
  498. package/dist/claim-SVDCQ2AI.js +0 -197
  499. package/dist/claim-SVDCQ2AI.js.map +0 -1
  500. package/dist/companies-BYMYQK6A.js +0 -195
  501. package/dist/companies-BYMYQK6A.js.map +0 -1
  502. package/dist/complete-NEH3MWRI.js +0 -81
  503. package/dist/complete-NEH3MWRI.js.map +0 -1
  504. package/dist/connect-5PGL7ZOM.js +0 -42
  505. package/dist/conversation-CSOKJXDW.js +0 -93
  506. package/dist/conversation-CSOKJXDW.js.map +0 -1
  507. package/dist/conversions-4JOTTFEH.js +0 -135
  508. package/dist/conversions-4JOTTFEH.js.map +0 -1
  509. package/dist/create-2XYMBULY.js +0 -207
  510. package/dist/create-2XYMBULY.js.map +0 -1
  511. package/dist/create-56PTZABQ.js +0 -235
  512. package/dist/create-56PTZABQ.js.map +0 -1
  513. package/dist/create-D6S6TGWY.js +0 -59
  514. package/dist/create-D6S6TGWY.js.map +0 -1
  515. package/dist/create-SMW4O5PC.js +0 -132
  516. package/dist/create-SMW4O5PC.js.map +0 -1
  517. package/dist/creatives-OO76DAFS.js +0 -58
  518. package/dist/creatives-VJUYWJL6.js +0 -182
  519. package/dist/creatives-VJUYWJL6.js.map +0 -1
  520. package/dist/credentials-2ONYUJW6.js +0 -287
  521. package/dist/credentials-2ONYUJW6.js.map +0 -1
  522. package/dist/critique-NDDFSGPE.js +0 -1458
  523. package/dist/critique-NDDFSGPE.js.map +0 -1
  524. package/dist/critique-YXZVMLZ4.js +0 -227
  525. package/dist/critique-YXZVMLZ4.js.map +0 -1
  526. package/dist/crm-Q6CEP5XV.js +0 -224
  527. package/dist/crm-Q6CEP5XV.js.map +0 -1
  528. package/dist/crm-WRONZYDH.js +0 -318
  529. package/dist/crm-WRONZYDH.js.map +0 -1
  530. package/dist/customers-2EFYSCU2.js +0 -56
  531. package/dist/delete-7WEVC3FS.js +0 -66
  532. package/dist/delete-7WEVC3FS.js.map +0 -1
  533. package/dist/delete-RBWK255M.js +0 -54
  534. package/dist/delete-RBWK255M.js.map +0 -1
  535. package/dist/delete-VN4WWMQF.js +0 -64
  536. package/dist/delete-VN4WWMQF.js.map +0 -1
  537. package/dist/demographics-I5XZ435C.js +0 -138
  538. package/dist/demographics-I5XZ435C.js.map +0 -1
  539. package/dist/discard-XJLIXTNM.js +0 -66
  540. package/dist/discard-XJLIXTNM.js.map +0 -1
  541. package/dist/domain-M7AEGAYI.js +0 -98
  542. package/dist/domain-M7AEGAYI.js.map +0 -1
  543. package/dist/draft-5DQI4W5F.js +0 -306
  544. package/dist/draft-5DQI4W5F.js.map +0 -1
  545. package/dist/draft-7IIYHSY2.js +0 -332
  546. package/dist/draft-7IIYHSY2.js.map +0 -1
  547. package/dist/draft-CN6GKVBF.js +0 -217
  548. package/dist/draft-CN6GKVBF.js.map +0 -1
  549. package/dist/experiment-IDDWRCJ7.js +0 -1397
  550. package/dist/facets-ZLZ6LIHN.js +0 -114
  551. package/dist/facets-ZLZ6LIHN.js.map +0 -1
  552. package/dist/feedback-7LEX2P5Q.js +0 -106
  553. package/dist/feedback-7LEX2P5Q.js.map +0 -1
  554. package/dist/feedback-record-P4JJ63KA.js +0 -260
  555. package/dist/feedback-record-P4JJ63KA.js.map +0 -1
  556. package/dist/fetch-MIVCEHXZ.js +0 -176
  557. package/dist/fetch-MIVCEHXZ.js.map +0 -1
  558. package/dist/find-VHN34MWL.js +0 -134
  559. package/dist/fit-SS6HSZPU.js +0 -62
  560. package/dist/flows-UTIIHDNE.js +0 -247
  561. package/dist/flows-UTIIHDNE.js.map +0 -1
  562. package/dist/fonts-YPNN7ZJP.js +0 -36
  563. package/dist/forecast-OBSHG2GJ.js +0 -118
  564. package/dist/forecast-OBSHG2GJ.js.map +0 -1
  565. package/dist/funnel-A4MXQYBA.js +0 -394
  566. package/dist/funnel-A4MXQYBA.js.map +0 -1
  567. package/dist/ga4-ZPAEF2G2.js +0 -55
  568. package/dist/get-MDAO6I7T.js +0 -56
  569. package/dist/get-MDAO6I7T.js.map +0 -1
  570. package/dist/get-ZB553BSH.js +0 -79
  571. package/dist/get-ZB553BSH.js.map +0 -1
  572. package/dist/google-C3X7O2UO.js +0 -136
  573. package/dist/google-ads-FTWL772L.js +0 -195
  574. package/dist/google-ads-FTWL772L.js.map +0 -1
  575. package/dist/gsc-SDDHGTZK.js +0 -30
  576. package/dist/history-WKJYKDMG.js +0 -133
  577. package/dist/history-WKJYKDMG.js.map +0 -1
  578. package/dist/hubspot-EPHVEPOO.js +0 -779
  579. package/dist/hubspot-EPHVEPOO.js.map +0 -1
  580. package/dist/icon-MYPDC6FM.js +0 -137
  581. package/dist/ideas-3PBH7VEX.js +0 -40
  582. package/dist/images-J35C3WG4.js +0 -92
  583. package/dist/ingest-5QOPUKFE.js +0 -107
  584. package/dist/ingest-5QOPUKFE.js.map +0 -1
  585. package/dist/ingest-OKUYP632.js +0 -23
  586. package/dist/inspect-PMNCP6MV.js +0 -189
  587. package/dist/inspect-PMNCP6MV.js.map +0 -1
  588. package/dist/inspiration-QAL7NS7G.js +0 -53
  589. package/dist/keyword-metrics-R752SJIT.js +0 -197
  590. package/dist/keyword-metrics-R752SJIT.js.map +0 -1
  591. package/dist/keywords-for-site-7UWPJYQF.js +0 -128
  592. package/dist/keywords-for-site-7UWPJYQF.js.map +0 -1
  593. package/dist/landing-CBVIOGJ5.js +0 -28
  594. package/dist/leads-LIJS6Y5W.js +0 -90
  595. package/dist/leads-LIJS6Y5W.js.map +0 -1
  596. package/dist/learn-N6QV7GXA.js +0 -204
  597. package/dist/learn-N6QV7GXA.js.map +0 -1
  598. package/dist/line-item-writes-3WPJXKIL.js +0 -208
  599. package/dist/line-item-writes-3WPJXKIL.js.map +0 -1
  600. package/dist/line-items-ZOFKOGAA.js +0 -103
  601. package/dist/link-DDRQKOUL.js +0 -64
  602. package/dist/link-DDRQKOUL.js.map +0 -1
  603. package/dist/linkedin-UWZCF66X.js +0 -1057
  604. package/dist/linkedin-UWZCF66X.js.map +0 -1
  605. package/dist/list-5PLXVPLB.js +0 -151
  606. package/dist/list-5PLXVPLB.js.map +0 -1
  607. package/dist/list-RC2NX6AX.js +0 -50
  608. package/dist/list-VSJISE7U.js +0 -303
  609. package/dist/list-VSJISE7U.js.map +0 -1
  610. package/dist/list-WTVOBQYX.js +0 -64
  611. package/dist/list-WTVOBQYX.js.map +0 -1
  612. package/dist/log-YKKPROLZ.js +0 -92
  613. package/dist/log-YKKPROLZ.js.map +0 -1
  614. package/dist/logo-WE2UELX6.js +0 -18
  615. package/dist/make-RNOWBLZQ.js +0 -1353
  616. package/dist/make-RNOWBLZQ.js.map +0 -1
  617. package/dist/map-WTDPQLVO.js +0 -433
  618. package/dist/map-WTDPQLVO.js.map +0 -1
  619. package/dist/mcp-XJNSCPP3.js +0 -714
  620. package/dist/mcp-XJNSCPP3.js.map +0 -1
  621. package/dist/media-sources-JGBDDXZ5.js +0 -32
  622. package/dist/media-sources-JGBDDXZ5.js.map +0 -1
  623. package/dist/members-O3BTMRXX.js +0 -44
  624. package/dist/members-O3BTMRXX.js.map +0 -1
  625. package/dist/normalize-R5AYLA2J.js +0 -141
  626. package/dist/normalize-R5AYLA2J.js.map +0 -1
  627. package/dist/options-AILRY7JY.js +0 -122
  628. package/dist/options-AILRY7JY.js.map +0 -1
  629. package/dist/organization-KJJXZLVK.js +0 -946
  630. package/dist/organization-KJJXZLVK.js.map +0 -1
  631. package/dist/performance-7YU4HOGH.js +0 -24
  632. package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
  633. package/dist/promoted-tweet-writes-TNELWPVG.js.map +0 -1
  634. package/dist/promoted-tweets-76WKUFJQ.js +0 -119
  635. package/dist/publish-BKLHCKHB.js +0 -341
  636. package/dist/publish-BKLHCKHB.js.map +0 -1
  637. package/dist/reddit-YK3YUZEI.js +0 -26
  638. package/dist/refresh-WIII7KXB.js +0 -94
  639. package/dist/refresh-WIII7KXB.js.map +0 -1
  640. package/dist/release-ZHXYQI7G.js +0 -60
  641. package/dist/release-ZHXYQI7G.js.map +0 -1
  642. package/dist/remove-NOX4BXWK.js +0 -50
  643. package/dist/remove-NOX4BXWK.js.map +0 -1
  644. package/dist/remove-VLWRCOEZ.js +0 -48
  645. package/dist/remove-VLWRCOEZ.js.map +0 -1
  646. package/dist/reopen-NLWKK5HB.js +0 -63
  647. package/dist/reopen-NLWKK5HB.js.map +0 -1
  648. package/dist/rerun-DZWQNMZQ.js +0 -90
  649. package/dist/rerun-DZWQNMZQ.js.map +0 -1
  650. package/dist/research-Q3P76RHN.js +0 -62
  651. package/dist/research-UDZBCDNX.js +0 -262
  652. package/dist/research-UDZBCDNX.js.map +0 -1
  653. package/dist/reset-5UHFX7QY.js +0 -54
  654. package/dist/reset-5UHFX7QY.js.map +0 -1
  655. package/dist/reset-MTRJQUP7.js +0 -54
  656. package/dist/reset-MTRJQUP7.js.map +0 -1
  657. package/dist/resolve-DA72VT7Q.js +0 -121
  658. package/dist/resolve-DA72VT7Q.js.map +0 -1
  659. package/dist/retry-LQUBX5TK.js +0 -62
  660. package/dist/retry-LQUBX5TK.js.map +0 -1
  661. package/dist/retry-U6F4CS6O.js +0 -60
  662. package/dist/retry-U6F4CS6O.js.map +0 -1
  663. package/dist/rules-VS5PZ7VO.js +0 -96
  664. package/dist/rules-VS5PZ7VO.js.map +0 -1
  665. package/dist/rules-add-LMVZYDXE.js +0 -462
  666. package/dist/rules-add-LMVZYDXE.js.map +0 -1
  667. package/dist/run-6PRA2YSD.js +0 -65
  668. package/dist/run-R6COFNOR.js +0 -66
  669. package/dist/run-R6COFNOR.js.map +0 -1
  670. package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
  671. package/dist/scaffold-ad-3OVJ7VZQ.js.map +0 -1
  672. package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
  673. package/dist/scaffold-static-ad-DDRA3Q5I.js.map +0 -1
  674. package/dist/scaffold-video-3JZYFYFU.js +0 -883
  675. package/dist/scaffold-video-3JZYFYFU.js.map +0 -1
  676. package/dist/schedule-BRSYHMKR.js +0 -66
  677. package/dist/schedule-BRSYHMKR.js.map +0 -1
  678. package/dist/schedule-ED2YDUPY.js +0 -61
  679. package/dist/schedule-ED2YDUPY.js.map +0 -1
  680. package/dist/scheduled-agents-5P67MVGX.js +0 -50
  681. package/dist/schema-4XVKERSA.js +0 -132
  682. package/dist/schema-4XVKERSA.js.map +0 -1
  683. package/dist/schema-RRAQW3OS.js +0 -69
  684. package/dist/search-Y2UMIQ57.js +0 -174
  685. package/dist/search-Y2UMIQ57.js.map +0 -1
  686. package/dist/select-OZ4E6VLF.js +0 -101
  687. package/dist/select-OZ4E6VLF.js.map +0 -1
  688. package/dist/set-prompt-O4YAE4CE.js +0 -193
  689. package/dist/set-prompt-O4YAE4CE.js.map +0 -1
  690. package/dist/setup-links-2GJYCV2A.js +0 -141
  691. package/dist/setup-links-2GJYCV2A.js.map +0 -1
  692. package/dist/site-47B6V2UX.js +0 -177
  693. package/dist/site-47B6V2UX.js.map +0 -1
  694. package/dist/sources-DXPZAPQ7.js +0 -454
  695. package/dist/sources-DXPZAPQ7.js.map +0 -1
  696. package/dist/sources-NDXYTASG.js +0 -30
  697. package/dist/stale-VLVBO2L6.js +0 -71
  698. package/dist/stale-VLVBO2L6.js.map +0 -1
  699. package/dist/stats-37OFAMPW.js +0 -34
  700. package/dist/status-4ODD46XY.js +0 -62
  701. package/dist/status-4ODD46XY.js.map +0 -1
  702. package/dist/stock-6R5E7MJX.js +0 -179
  703. package/dist/studio-LEIGL3Q7.js +0 -49
  704. package/dist/sync-EKGEWE53.js +0 -54
  705. package/dist/sync-EKGEWE53.js.map +0 -1
  706. package/dist/sync-TKNVBUDM.js +0 -54
  707. package/dist/sync-TKNVBUDM.js.map +0 -1
  708. package/dist/sync-definition-M5R3H3TP.js +0 -64
  709. package/dist/tag-manager-3Q55PBEW.js +0 -43
  710. package/dist/tags-4N5UUUN6.js +0 -26
  711. package/dist/tags-5NHIAD5A.js +0 -20
  712. package/dist/tags-5NHIAD5A.js.map +0 -1
  713. package/dist/tags-UUKWSWCN.js +0 -20
  714. package/dist/tags-UUKWSWCN.js.map +0 -1
  715. package/dist/tags-VK7B5DJF.js +0 -20
  716. package/dist/tags-VK7B5DJF.js.map +0 -1
  717. package/dist/tags-XAHIB3WA.js +0 -224
  718. package/dist/tags-XAHIB3WA.js.map +0 -1
  719. package/dist/targeting-criteria-AVARWV2G.js +0 -113
  720. package/dist/targets-6RYLQRID.js +0 -103
  721. package/dist/targets-6RYLQRID.js.map +0 -1
  722. package/dist/testimonials-6TF6BOFN.js +0 -32
  723. package/dist/top-companies-45EHRCJD.js +0 -108
  724. package/dist/top-companies-45EHRCJD.js.map +0 -1
  725. package/dist/translate-VHLBACCE.js +0 -604
  726. package/dist/translate-VHLBACCE.js.map +0 -1
  727. package/dist/triggers-ERQONJNO.js +0 -142
  728. package/dist/triggers-ERQONJNO.js.map +0 -1
  729. package/dist/unlink-TPDO6JNF.js +0 -67
  730. package/dist/unlink-TPDO6JNF.js.map +0 -1
  731. package/dist/unstage-YKKQQ7LW.js +0 -85
  732. package/dist/unstage-YKKQQ7LW.js.map +0 -1
  733. package/dist/update-43WU6X7R.js +0 -63
  734. package/dist/update-43WU6X7R.js.map +0 -1
  735. package/dist/update-CAHLAXWO.js +0 -98
  736. package/dist/update-CAHLAXWO.js.map +0 -1
  737. package/dist/update-NGH6YADN.js +0 -152
  738. package/dist/update-NGH6YADN.js.map +0 -1
  739. package/dist/update-SPJIHHLE.js +0 -188
  740. package/dist/update-SPJIHHLE.js.map +0 -1
  741. package/dist/upload-ACESIZIZ.js +0 -126
  742. package/dist/upload-ACESIZIZ.js.map +0 -1
  743. package/dist/url-params-MIXEDBF7.js +0 -98
  744. package/dist/url-params-MIXEDBF7.js.map +0 -1
  745. package/dist/validate-XJJA7ULE.js +0 -117
  746. package/dist/validate-XJJA7ULE.js.map +0 -1
  747. package/dist/videos-LBXPG7WC.js +0 -39
  748. package/dist/viewer-check-7VJ3GUZX.js +0 -80
  749. package/dist/web-EWQJC2SD.js +0 -140
  750. package/dist/web-EWQJC2SD.js.map +0 -1
  751. package/dist/winning-ads-SAOJAKEQ.js +0 -86
  752. package/dist/write-commands-QPDE4GWW.js +0 -1024
  753. package/dist/write-commands-QPDE4GWW.js.map +0 -1
  754. package/dist/x-LXOJPCRF.js +0 -47
  755. /package/dist/{actions-QL5UD2W4.js.map → actions-FMNJSOBA.js.map} +0 -0
  756. /package/dist/{ads-DHPJFU52.js.map → ads-OLXSDPD6.js.map} +0 -0
  757. /package/dist/{avatars-FKOO6VZ2.js.map → avatars-I4H3NMEJ.js.map} +0 -0
  758. /package/dist/{brand-NNWHBIAX.js.map → brand-3V7ECY7D.js.map} +0 -0
  759. /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-MCB76NPQ.js.map} +0 -0
  760. /package/dist/{canvas-D64GLWUO.js.map → canvas-JCNKMGCG.js.map} +0 -0
  761. /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-XFZ42NXC.js.map} +0 -0
  762. /package/dist/{chunk-VB3XUR6A.js.map → chunk-2YTBPRRG.js.map} +0 -0
  763. /package/dist/{chunk-JUVVCA7B.js.map → chunk-3SNCMEJB.js.map} +0 -0
  764. /package/dist/{chunk-RGMKXNQP.js.map → chunk-7QGFO35A.js.map} +0 -0
  765. /package/dist/{chunk-ZXCSOVS5.js.map → chunk-AV7ALENU.js.map} +0 -0
  766. /package/dist/{chunk-IYTPWAN3.js.map → chunk-BRLFQ4VX.js.map} +0 -0
  767. /package/dist/{chunk-RZTKCCUL.js.map → chunk-DJE7UXYT.js.map} +0 -0
  768. /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
  769. /package/dist/{chunk-J3CWAERS.js.map → chunk-EONSZAZB.js.map} +0 -0
  770. /package/dist/{chunk-PHCIFBP3.js.map → chunk-FG3MV2XM.js.map} +0 -0
  771. /package/dist/{chunk-3AMLOCXY.js.map → chunk-FKG476GH.js.map} +0 -0
  772. /package/dist/{chunk-IFXGCI33.js.map → chunk-FUGQSIYG.js.map} +0 -0
  773. /package/dist/{chunk-Q3LXLWZY.js.map → chunk-HPLHAHG5.js.map} +0 -0
  774. /package/dist/{chunk-3N5A44NQ.js.map → chunk-I24YT2KG.js.map} +0 -0
  775. /package/dist/{chunk-P2MFWJR3.js.map → chunk-IFDZZOUC.js.map} +0 -0
  776. /package/dist/{chunk-Q5WBTVA7.js.map → chunk-JVVUI55M.js.map} +0 -0
  777. /package/dist/{chunk-6QGS3RQP.js.map → chunk-KKSHEPBY.js.map} +0 -0
  778. /package/dist/{chunk-OE3MIV4F.js.map → chunk-KQ7RCLGC.js.map} +0 -0
  779. /package/dist/{chunk-ZDAVSTEE.js.map → chunk-L7WMS5PW.js.map} +0 -0
  780. /package/dist/{chunk-FBFWMTOP.js.map → chunk-LBRO4MTL.js.map} +0 -0
  781. /package/dist/{chunk-PTUXBO5O.js.map → chunk-LNRPOULW.js.map} +0 -0
  782. /package/dist/{chunk-EMQUW6JB.js.map → chunk-LX6WC2XZ.js.map} +0 -0
  783. /package/dist/{chunk-I7J7YQXZ.js.map → chunk-MMGTJBM6.js.map} +0 -0
  784. /package/dist/{chunk-2KRK667G.js.map → chunk-OEZYSL3U.js.map} +0 -0
  785. /package/dist/{chunk-2TVXJPGR.js.map → chunk-OOVHBMQB.js.map} +0 -0
  786. /package/dist/{chunk-Z2GQREJY.js.map → chunk-PTH7VWKK.js.map} +0 -0
  787. /package/dist/{chunk-N3I6ZXR7.js.map → chunk-QZF4BVKL.js.map} +0 -0
  788. /package/dist/{chunk-3WAYZQNV.js.map → chunk-RITUSBYO.js.map} +0 -0
  789. /package/dist/{chunk-JH2L5CQD.js.map → chunk-SSTL3A7Z.js.map} +0 -0
  790. /package/dist/{chunk-2B772ZEA.js.map → chunk-TD4SO6TR.js.map} +0 -0
  791. /package/dist/{chunk-IKLHXGMF.js.map → chunk-UZ4RTOFG.js.map} +0 -0
  792. /package/dist/{chunk-NBO2NSAW.js.map → chunk-VAX7PFQV.js.map} +0 -0
  793. /package/dist/{chunk-AFD32O4A.js.map → chunk-VDRSZK4P.js.map} +0 -0
  794. /package/dist/{chunk-NKIBXOHT.js.map → chunk-VNU2EYD4.js.map} +0 -0
  795. /package/dist/{chunk-TTKBNBQF.js.map → chunk-WT4WDIXA.js.map} +0 -0
  796. /package/dist/{chunk-5A257KJA.js.map → chunk-XEX23CIB.js.map} +0 -0
  797. /package/dist/{chunk-GXGYTFZA.js.map → chunk-XXDF25BW.js.map} +0 -0
  798. /package/dist/{chunk-NEU5QD2C.js.map → chunk-YJ3LSFMX.js.map} +0 -0
  799. /package/dist/{chunk-MK6XJUCQ.js.map → chunk-YVK5RT3B.js.map} +0 -0
  800. /package/dist/{chunk-AW2GKIGS.js.map → chunk-YWWRLZUR.js.map} +0 -0
  801. /package/dist/{chunk-XCKINS7K.js.map → chunk-Z4S5BCVZ.js.map} +0 -0
  802. /package/dist/{chunk-IBY44U2M.js.map → chunk-ZYGK7GAK.js.map} +0 -0
  803. /package/dist/{connect-5PGL7ZOM.js.map → connect-COS6G45S.js.map} +0 -0
  804. /package/dist/{creatives-OO76DAFS.js.map → creatives-SEQHJD2M.js.map} +0 -0
  805. /package/dist/{customers-2EFYSCU2.js.map → customers-LMSX33FO.js.map} +0 -0
  806. /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
  807. /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
  808. /package/dist/{fit-SS6HSZPU.js.map → fit-W7UNFZT5.js.map} +0 -0
  809. /package/dist/{fonts-YPNN7ZJP.js.map → fonts-N42UYWTX.js.map} +0 -0
  810. /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
  811. /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
  812. /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
  813. /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
  814. /package/dist/{ideas-3PBH7VEX.js.map → ideas-DYN2DMFN.js.map} +0 -0
  815. /package/dist/{images-J35C3WG4.js.map → images-EQCUXEHF.js.map} +0 -0
  816. /package/dist/{ingest-OKUYP632.js.map → ingest-B46AY3QU.js.map} +0 -0
  817. /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
  818. /package/dist/{landing-CBVIOGJ5.js.map → landing-WVPA7NBR.js.map} +0 -0
  819. /package/dist/{line-items-ZOFKOGAA.js.map → line-items-OEWYOPFP.js.map} +0 -0
  820. /package/dist/{list-RC2NX6AX.js.map → list-WRBWQASJ.js.map} +0 -0
  821. /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
  822. /package/dist/{performance-7YU4HOGH.js.map → performance-HTU5FR2K.js.map} +0 -0
  823. /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-TTWN5OMW.js.map} +0 -0
  824. /package/dist/{reddit-YK3YUZEI.js.map → reddit-6C3PT5CT.js.map} +0 -0
  825. /package/dist/{research-Q3P76RHN.js.map → research-YCMMQVK6.js.map} +0 -0
  826. /package/dist/{run-6PRA2YSD.js.map → run-SR7DJ7M5.js.map} +0 -0
  827. /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-N63EZNY6.js.map} +0 -0
  828. /package/dist/{schema-RRAQW3OS.js.map → schema-C6SGBNA6.js.map} +0 -0
  829. /package/dist/{sources-NDXYTASG.js.map → sources-HN3GCEDX.js.map} +0 -0
  830. /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
  831. /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
  832. /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ6WQ7OE.js.map} +0 -0
  833. /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-CKEUYKWN.js.map} +0 -0
  834. /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
  835. /package/dist/{tags-4N5UUUN6.js.map → tags-EUOOSAKN.js.map} +0 -0
  836. /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-HE7K52WN.js.map} +0 -0
  837. /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-3Q5XM7JD.js.map} +0 -0
  838. /package/dist/{videos-LBXPG7WC.js.map → videos-WAPUPJVT.js.map} +0 -0
  839. /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-GHQA3UY2.js.map} +0 -0
  840. /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-XCVUAIOU.js.map} +0 -0
  841. /package/dist/{x-LXOJPCRF.js.map → x-SI4KYDEY.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/activecampaign/index.ts","../src/commands/activecampaign/drafts.ts","../src/commands/activecampaign/refusal.ts","../../api/src/activecampaign-reads.ts","../src/commands/activecampaign/reads.ts","../../api/src/activecampaign-writes.ts","../src/commands/activecampaign/stage.ts","../src/commands/activecampaign/unstage.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { draftsCommand } from \"./drafts.ts\";\nimport { READ_COMMANDS } from \"./reads.ts\";\nimport { stageCommandGroup } from \"./stage.ts\";\nimport { unstageCommand } from \"./unstage.ts\";\n\nexport const activecampaignCommand = defineCommand({\n meta: {\n name: \"activecampaign\",\n description: `Read the connected ActiveCampaign account — its tracking set-up, lists, automations, pipelines,\ntags, custom fields, users, email campaign reports, contacts and deals. These reads are live and change nothing.\n\nExamples:\n baker activecampaign account # contacts, site tracking + tracking account id, domains\n baker activecampaign campaigns --since 2026-09-01 # email reports: sends, opens, clicks, unsubscribes, bounces, rates\n baker activecampaign automations --active-only # what runs after a lead arrives, and how many went through\n baker activecampaign contacts --email a@b.com # did this lead arrive?\n baker activecampaign contacts --tag webinar --limit 1 # how many carry a tag (total)\n baker activecampaign deals --status won # won deals and their value per currency\n baker activecampaign pipelines | lists | tags | fields | users\n\nChanges are staged on this chat and made in ActiveCampaign only when the user publishes it:\n baker activecampaign stage field --utm # UTM_SOURCE … UTM_TERM, for Forms to map onto\n baker activecampaign stage field --title \"Plan\" --type dropdown --options \"Basic,Pro\"\n baker activecampaign stage list --name \"Webinar sign-ups\"\n baker activecampaign stage tag --name \"hot-lead\"\n baker activecampaign stage pipeline --title \"Inbound\" --stages \"New lead,Qualified,Won\"\n baker activecampaign drafts # what is staged, and after Publish what happened\n baker activecampaign unstage <ref|name|perstag> # drop one; unstage --all drops every staged change\n\nEvery command takes --account <id> when the company has more than one ActiveCampaign connection, and --full\nfor the untouched ActiveCampaign payload. NO_ACTIVECAMPAIGN_CONNECTION / ACTIVECAMPAIGN_RECONNECT_REQUIRED\ncarry a request_connection fix — only the user can clear them.\nFull guide: __tooling__/docs/tools/baker/activecampaign.md`,\n },\n subCommands: {\n ...READ_COMMANDS,\n stage: stageCommandGroup,\n unstage: unstageCommand,\n drafts: draftsCommand,\n },\n});\n","import type { ActiveCampaignDraftListResponse } from \"@baker/api/activecampaign-writes\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { resolveChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { CHAT_READ_ARG } from \"../chat-arg.ts\";\nimport { failActiveCampaign } from \"./refusal.ts\";\n\nconst DESCRIPTION =\n \"The ActiveCampaign changes staged on this chat — fields, lists, tags, pipelines — and, once published, what happened to each (created, reused because it already existed, or failed and why). Take --chat <id> to read an earlier chat's.\";\n\nregisterSchema({\n command: \"activecampaign.drafts\",\n description: DESCRIPTION,\n args: { chat: { type: \"string\", description: CHAT_READ_ARG.description, required: false } },\n});\n\n/** What the publish did with one op, in a word or two. */\nfunction outcomeOf(op: ActiveCampaignDraftListResponse[\"ops\"][number]): string | undefined {\n if (!op.result) return undefined;\n if (op.result.status === \"applied\") return op.result.reused ? \"already there, reused\" : \"created\";\n return op.result.status === \"failed\" ? `failed: ${op.result.error ?? \"no reason given\"}` : \"not sent\";\n}\n\nexport const draftsCommand = defineCommand({\n meta: { name: \"drafts\", description: DESCRIPTION },\n args: { chat: CHAT_READ_ARG },\n run: async ({ args }) => {\n const chatId = resolveChatId(args.chat);\n try {\n const data = await apiPost<ActiveCampaignDraftListResponse>(\"/api/activecampaign/draft\", { chatId });\n const ops = data.ops.map((op) => {\n const outcome = outcomeOf(op);\n return { ref: op.ref, kind: op.kind, summary: op.summary, ...(outcome ? { outcome } : {}) };\n });\n const hints =\n data.status === \"active\" && data.count > 0\n ? [\"Staged only — these are created in ActiveCampaign when the user publishes this chat.\"]\n : [];\n writeJson({\n ok: true,\n data: {\n status: data.status,\n count: data.count,\n ops,\n ...(data.publishError ? { publishError: data.publishError } : {}),\n },\n ...(hints.length > 0 ? { hints } : {}),\n });\n } catch (err) {\n failActiveCampaign(err);\n }\n },\n});\n","import { ApiError } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { failApi } from \"../actions/shared.ts\";\n\nexport interface ActiveCampaignRefusal {\n code: \"NO_ACTIVECAMPAIGN_CONNECTION\" | \"ACTIVECAMPAIGN_RECONNECT_REQUIRED\";\n fix: { action: \"request_connection\"; explanation: string };\n}\n\nconst CONTINUE =\n \"Keep going with the wider task: say which part you could not read, skip it, and finish everything else.\";\n\n/**\n * The two refusals only the user can clear — nothing connected, or a saved key\n * ActiveCampaign no longer accepts — as the in-chat connect card, where they\n * paste the API URL and key; a connection removed since counts as none.\n * Matched on the backend's own sentences\n * (`flows/destinations/utils.ts` `chooseAccount`, `oauth/activecampaign/*`).\n */\nexport function activeCampaignRefusal(code: string, message: string): ActiveCampaignRefusal | null {\n if (\n code === \"NOT_FOUND\" &&\n (message.includes(\"No ActiveCampaign account is connected\") ||\n message.includes(\"ActiveCampaign connection no longer exists\"))\n ) {\n return {\n code: \"NO_ACTIVECAMPAIGN_CONNECTION\",\n fix: {\n action: \"request_connection\",\n explanation:\n 'AGENT INSTRUCTION: ActiveCampaign is not connected, and only the user can connect it. Call the `request_connection` tool with { platform: \"activecampaign\", reason } — reason in their words — and they paste the API URL and key inside the chat; then run this command again. ' +\n CONTINUE,\n },\n };\n }\n if (code === \"CONFLICT\" && message.includes(\"connect ActiveCampaign again\")) {\n return {\n code: \"ACTIVECAMPAIGN_RECONNECT_REQUIRED\",\n fix: {\n action: \"request_connection\",\n explanation:\n 'AGENT INSTRUCTION: ActiveCampaign is connected, but its saved key no longer works — do not retry. Call the `request_connection` tool with { platform: \"activecampaign\", reason } so the user pastes a current key, then run this command again. ' +\n CONTINUE,\n },\n };\n }\n return null;\n}\n\nexport function failActiveCampaign(err: unknown): never {\n const refusal = err instanceof ApiError ? activeCampaignRefusal(err.code, err.message) : null;\n if (err instanceof ApiError && refusal !== null) {\n writeJson({ ok: false, error: { code: refusal.code, message: err.message, fix: refusal.fix } });\n process.exit(1);\n }\n failApi(err);\n}\n","/**\n * `baker activecampaign` reads: the contract the CLI and the backend share.\n *\n * Every read is `POST /api/activecampaign/reads/<read>` with a body naming the\n * connection (`account`, optional when the company has one) and the read's own\n * filters, answered `{ ok: true, data }`. Rows are compact; `full: true` adds\n * each row's untouched ActiveCampaign payload as `raw`.\n */\nimport { z } from \"zod\";\n\nconst raw = z.record(z.string(), z.unknown()).optional();\nconst limit = z.number().int().min(1).max(100).optional();\n\nconst baseRequest = z.object({\n /** Connection id; optional when the company has exactly one ActiveCampaign account. */\n account: z.string().optional(),\n full: z.boolean().optional(),\n});\n\nfunction envelope<T extends z.ZodRawShape>(shape: T) {\n return z.object({ ok: z.literal(true), data: z.object({ account: z.string(), ...shape }) });\n}\n\n// ── account ─────────────────────────────────────────────────────────────────\n\nexport const activeCampaignAccountRequestSchema = baseRequest;\nexport type ActiveCampaignAccountRequest = z.infer<typeof activeCampaignAccountRequestSchema>;\n\nexport const activeCampaignAccountSummarySchema = z.object({\n label: z.string(),\n apiUrl: z.string(),\n contactCount: z.number().nullable(),\n siteTracking: z.object({\n enabled: z.boolean().nullable(),\n /** The id `vgo('setAccount', …)` takes — what the ActiveCampaign tag on a landing needs. */\n trackingAccountId: z.string().nullable(),\n /** Domains ActiveCampaign accepts visits from; empty means it records visits from none. */\n domains: z.array(z.string()),\n }),\n eventTracking: z.object({ enabled: z.boolean().nullable() }),\n});\nexport type ActiveCampaignAccountSummary = z.infer<typeof activeCampaignAccountSummarySchema>;\n\nexport const activeCampaignAccountResponseSchema = envelope({ summary: activeCampaignAccountSummarySchema });\nexport type ActiveCampaignAccountResponse = z.infer<typeof activeCampaignAccountResponseSchema>;\n\n// ── lists ───────────────────────────────────────────────────────────────────\n\nexport const activeCampaignListsRequestSchema = baseRequest;\nexport type ActiveCampaignListsRequest = z.infer<typeof activeCampaignListsRequestSchema>;\n\nexport const activeCampaignListRowSchema = z.object({\n id: z.string(),\n name: z.string(),\n activeContacts: z.number().nullable(),\n createdAt: z.string().nullable(),\n raw,\n});\nexport type ActiveCampaignListRow = z.infer<typeof activeCampaignListRowSchema>;\n\nexport const activeCampaignListsResponseSchema = envelope({ lists: z.array(activeCampaignListRowSchema) });\nexport type ActiveCampaignListsResponse = z.infer<typeof activeCampaignListsResponseSchema>;\n\n// ── automations ─────────────────────────────────────────────────────────────\n\nexport const activeCampaignAutomationsRequestSchema = baseRequest.extend({ activeOnly: z.boolean().optional() });\nexport type ActiveCampaignAutomationsRequest = z.infer<typeof activeCampaignAutomationsRequestSchema>;\n\nexport const ACTIVECAMPAIGN_AUTOMATION_STATUSES = [\"active\", \"inactive\", \"unknown\"] as const;\n\nexport const activeCampaignAutomationRowSchema = z.object({\n id: z.string(),\n name: z.string(),\n status: z.enum(ACTIVECAMPAIGN_AUTOMATION_STATUSES),\n /** Contacts that have ever entered / finished it. */\n entered: z.number().nullable(),\n exited: z.number().nullable(),\n /** What starts it (`subscribe`, `tagadd`, …), as ActiveCampaign names its triggers. */\n triggers: z.array(z.string()),\n createdAt: z.string().nullable(),\n modifiedAt: z.string().nullable(),\n raw,\n});\nexport type ActiveCampaignAutomationRow = z.infer<typeof activeCampaignAutomationRowSchema>;\n\nexport const activeCampaignAutomationsResponseSchema = envelope({\n automations: z.array(activeCampaignAutomationRowSchema),\n});\nexport type ActiveCampaignAutomationsResponse = z.infer<typeof activeCampaignAutomationsResponseSchema>;\n\n// ── pipelines ───────────────────────────────────────────────────────────────\n\nexport const activeCampaignPipelinesRequestSchema = baseRequest;\nexport type ActiveCampaignPipelinesRequest = z.infer<typeof activeCampaignPipelinesRequestSchema>;\n\nexport const activeCampaignStageSchema = z.object({ id: z.string(), title: z.string(), order: z.number().nullable() });\nexport type ActiveCampaignStage = z.infer<typeof activeCampaignStageSchema>;\n\nexport const activeCampaignPipelineRowSchema = z.object({\n id: z.string(),\n title: z.string(),\n currency: z.string().nullable(),\n /** In board order: the first is where a new deal lands. */\n stages: z.array(activeCampaignStageSchema),\n raw,\n});\nexport type ActiveCampaignPipelineRow = z.infer<typeof activeCampaignPipelineRowSchema>;\n\nexport const activeCampaignPipelinesResponseSchema = envelope({\n pipelines: z.array(activeCampaignPipelineRowSchema),\n});\nexport type ActiveCampaignPipelinesResponse = z.infer<typeof activeCampaignPipelinesResponseSchema>;\n\n// ── tags ────────────────────────────────────────────────────────────────────\n\nexport const activeCampaignTagsRequestSchema = baseRequest.extend({ search: z.string().optional() });\nexport type ActiveCampaignTagsRequest = z.infer<typeof activeCampaignTagsRequestSchema>;\n\nexport const activeCampaignTagRowSchema = z.object({\n id: z.string(),\n name: z.string(),\n /** `contact` or `template`; only contact tags can be put on a lead. */\n type: z.string().nullable(),\n contactCount: z.number().nullable(),\n raw,\n});\nexport type ActiveCampaignTagRow = z.infer<typeof activeCampaignTagRowSchema>;\n\nexport const activeCampaignTagsResponseSchema = envelope({ tags: z.array(activeCampaignTagRowSchema) });\nexport type ActiveCampaignTagsResponse = z.infer<typeof activeCampaignTagsResponseSchema>;\n\n// ── fields ──────────────────────────────────────────────────────────────────\n\nexport const activeCampaignCustomFieldsRequestSchema = baseRequest;\nexport type ActiveCampaignCustomFieldsRequest = z.infer<typeof activeCampaignCustomFieldsRequestSchema>;\n\nexport const activeCampaignCustomFieldRowSchema = z.object({\n id: z.string(),\n title: z.string(),\n /** ActiveCampaign's type: `text`, `textarea`, `date`, `dropdown`, `multiselect`, `radio`, `checkbox`, … */\n type: z.string().nullable(),\n perstag: z.string().nullable(),\n required: z.boolean(),\n /** For a choice field, what may be stored (`value`) and what people see (`label`). */\n options: z.array(z.object({ value: z.string(), label: z.string() })),\n /** True when the field shows on every list (ActiveCampaign's relid 0). */\n allLists: z.boolean(),\n listIds: z.array(z.string()),\n raw,\n});\nexport type ActiveCampaignCustomFieldRow = z.infer<typeof activeCampaignCustomFieldRowSchema>;\n\nexport const activeCampaignCustomFieldsResponseSchema = envelope({\n fields: z.array(activeCampaignCustomFieldRowSchema),\n});\nexport type ActiveCampaignCustomFieldsResponse = z.infer<typeof activeCampaignCustomFieldsResponseSchema>;\n\n// ── users ───────────────────────────────────────────────────────────────────\n\nexport const activeCampaignUsersRequestSchema = baseRequest;\nexport type ActiveCampaignUsersRequest = z.infer<typeof activeCampaignUsersRequestSchema>;\n\nexport const activeCampaignUserRowSchema = z.object({\n id: z.string(),\n username: z.string().nullable(),\n name: z.string().nullable(),\n email: z.string().nullable(),\n raw,\n});\nexport type ActiveCampaignUserRow = z.infer<typeof activeCampaignUserRowSchema>;\n\nexport const activeCampaignUsersResponseSchema = envelope({ users: z.array(activeCampaignUserRowSchema) });\nexport type ActiveCampaignUsersResponse = z.infer<typeof activeCampaignUsersResponseSchema>;\n\n// ── campaigns ───────────────────────────────────────────────────────────────\n\n/** ActiveCampaign's campaign `status` codes 0–5, in its own order. */\nexport const ACTIVECAMPAIGN_CAMPAIGN_STATUSES = [\n \"draft\",\n \"scheduled\",\n \"sending\",\n \"paused\",\n \"stopped\",\n \"completed\",\n] as const;\nexport type ActiveCampaignCampaignStatus = (typeof ACTIVECAMPAIGN_CAMPAIGN_STATUSES)[number];\n\nconst isoDay = z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Use a date like 2026-01-31\");\n\nexport const activeCampaignCampaignsRequestSchema = baseRequest.extend({\n status: z.enum(ACTIVECAMPAIGN_CAMPAIGN_STATUSES).optional(),\n /** Only campaigns first sent on or after this day. */\n since: isoDay.optional(),\n limit,\n});\nexport type ActiveCampaignCampaignsRequest = z.infer<typeof activeCampaignCampaignsRequestSchema>;\n\n/** Shares of `sends` (and click-to-open of unique opens), 0–1; null when nothing was sent. */\nexport const activeCampaignCampaignRatesSchema = z.object({\n open: z.number().nullable(),\n click: z.number().nullable(),\n clickToOpen: z.number().nullable(),\n unsubscribe: z.number().nullable(),\n bounce: z.number().nullable(),\n});\n\nexport const activeCampaignCampaignRowSchema = z.object({\n id: z.string(),\n name: z.string(),\n /** `single`, `recurring`, `split`, `responder`, `reminder`, `special`, `activerss`, `text`, … */\n type: z.string().nullable(),\n status: z.enum([...ACTIVECAMPAIGN_CAMPAIGN_STATUSES, \"unknown\"]),\n /** When it (first) went out, and when its last send ran — ActiveCampaign's `sdate` / `ldate`. */\n sentAt: z.string().nullable(),\n lastSentAt: z.string().nullable(),\n /** Set when an automation sends it. */\n automationId: z.string().nullable(),\n sends: z.number(),\n opens: z.number(),\n uniqueOpens: z.number(),\n clicks: z.number(),\n uniqueClicks: z.number(),\n unsubscribes: z.number(),\n hardBounces: z.number(),\n softBounces: z.number(),\n rates: activeCampaignCampaignRatesSchema,\n raw,\n});\nexport type ActiveCampaignCampaignRow = z.infer<typeof activeCampaignCampaignRowSchema>;\n\nexport const activeCampaignCampaignsResponseSchema = envelope({\n campaigns: z.array(activeCampaignCampaignRowSchema),\n /** True when more campaigns matched than `limit` returned. */\n truncated: z.boolean(),\n});\nexport type ActiveCampaignCampaignsResponse = z.infer<typeof activeCampaignCampaignsResponseSchema>;\n\n// ── contacts ────────────────────────────────────────────────────────────────\n\nexport const activeCampaignContactsRequestSchema = baseRequest.extend({\n /** The contact's ActiveCampaign id — what an ActiveCampaign event's `contact.id` carries. */\n id: z.string().optional(),\n email: z.string().optional(),\n /** A tag's id or exact name. */\n tag: z.string().optional(),\n /** A list's id or exact name. */\n list: z.string().optional(),\n /** ActiveCampaign's own search over name, email, phone and organisation. */\n search: z.string().optional(),\n limit,\n});\nexport type ActiveCampaignContactsRequest = z.infer<typeof activeCampaignContactsRequestSchema>;\n\nexport const activeCampaignContactRowSchema = z.object({\n id: z.string(),\n email: z.string().nullable(),\n firstName: z.string().nullable(),\n lastName: z.string().nullable(),\n createdAt: z.string().nullable(),\n updatedAt: z.string().nullable(),\n /** The contact's tags by name; only on a lookup by `id` or `email`. */\n tags: z.array(z.string()).optional(),\n /** What the contact did and what ActiveCampaign did with them; only on a lookup by `id` or `email`. */\n activity: z\n .object({\n /** Custom events (`event.name` on a Form, or any event tracking), newest first. */\n events: z.array(z.object({ name: z.string(), data: z.string().nullable(), at: z.string().nullable() })),\n /** Site-tracking page visits, newest first. */\n pageVisits: z.array(z.object({ url: z.string(), at: z.string().nullable() })),\n /** Campaign emails: each one sent, opened, and each tracked link clicked (with its address), newest first. */\n emails: z.array(\n z.object({\n campaignId: z.string(),\n event: z.enum([\"sent\", \"opened\", \"clicked\"]),\n url: z.string().nullable(),\n at: z.string().nullable(),\n }),\n ),\n automations: z.array(\n z.object({\n id: z.string(),\n name: z.string().nullable(),\n status: z.enum([\"running\", \"completed\", \"unknown\"]),\n startedAt: z.string().nullable(),\n endedAt: z.string().nullable(),\n }),\n ),\n lists: z.array(\n z.object({\n id: z.string(),\n name: z.string().nullable(),\n status: z.enum([\"subscribed\", \"unsubscribed\", \"unconfirmed\", \"bounced\", \"unknown\"]),\n since: z.string().nullable(),\n }),\n ),\n })\n .optional(),\n raw,\n});\nexport type ActiveCampaignContactActivity = NonNullable<z.infer<typeof activeCampaignContactRowSchema>[\"activity\"]>;\nexport type ActiveCampaignContactRow = z.infer<typeof activeCampaignContactRowSchema>;\n\nexport const activeCampaignContactsResponseSchema = envelope({\n /** Every contact the filters match, of which `contacts` is the newest `limit`. */\n total: z.number().nullable(),\n contacts: z.array(activeCampaignContactRowSchema),\n});\nexport type ActiveCampaignContactsResponse = z.infer<typeof activeCampaignContactsResponseSchema>;\n\n// ── deals ───────────────────────────────────────────────────────────────────\n\n/** ActiveCampaign's deal `status` codes 0–2. */\nexport const ACTIVECAMPAIGN_DEAL_STATUSES = [\"open\", \"won\", \"lost\"] as const;\nexport type ActiveCampaignDealStatus = (typeof ACTIVECAMPAIGN_DEAL_STATUSES)[number];\n\nexport const activeCampaignDealsRequestSchema = baseRequest.extend({\n /** A pipeline's id or exact title. */\n pipeline: z.string().optional(),\n /** A stage's id or exact title (within `pipeline` when both are given). */\n stage: z.string().optional(),\n status: z.enum(ACTIVECAMPAIGN_DEAL_STATUSES).optional(),\n /** A user's id, username or email. */\n owner: z.string().optional(),\n limit,\n});\nexport type ActiveCampaignDealsRequest = z.infer<typeof activeCampaignDealsRequestSchema>;\n\nconst named = z.object({ id: z.string(), title: z.string() }).nullable();\n\nexport const activeCampaignDealRowSchema = z.object({\n id: z.string(),\n title: z.string(),\n /** In the currency's major units (ActiveCampaign stores cents). */\n value: z.number().nullable(),\n currency: z.string().nullable(),\n status: z.enum([...ACTIVECAMPAIGN_DEAL_STATUSES, \"unknown\"]),\n pipeline: named,\n stage: named,\n ownerId: z.string().nullable(),\n contactId: z.string().nullable(),\n createdAt: z.string().nullable(),\n modifiedAt: z.string().nullable(),\n raw,\n});\nexport type ActiveCampaignDealRow = z.infer<typeof activeCampaignDealRowSchema>;\n\nexport const activeCampaignDealTotalSchema = z.object({\n currency: z.string(),\n count: z.number(),\n /** Major units, every matching deal — not only the rows returned. */\n value: z.number(),\n});\n\nexport const activeCampaignDealsResponseSchema = envelope({\n total: z.number().nullable(),\n totals: z.array(activeCampaignDealTotalSchema),\n deals: z.array(activeCampaignDealRowSchema),\n});\nexport type ActiveCampaignDealsResponse = z.infer<typeof activeCampaignDealsResponseSchema>;\n\n/** Every read, by the last segment of its route. */\nexport const ACTIVECAMPAIGN_READS = [\n \"account\",\n \"lists\",\n \"automations\",\n \"pipelines\",\n \"tags\",\n \"fields\",\n \"users\",\n \"campaigns\",\n \"contacts\",\n \"deals\",\n] as const;\nexport type ActiveCampaignRead = (typeof ACTIVECAMPAIGN_READS)[number];\n\nexport function activeCampaignReadPath(read: ActiveCampaignRead): string {\n return `/api/activecampaign/reads/${read}`;\n}\n","import {\n ACTIVECAMPAIGN_CAMPAIGN_STATUSES,\n ACTIVECAMPAIGN_DEAL_STATUSES,\n type ActiveCampaignAccountResponse,\n type ActiveCampaignAutomationsResponse,\n type ActiveCampaignCampaignsResponse,\n type ActiveCampaignContactsResponse,\n type ActiveCampaignCustomFieldsResponse,\n type ActiveCampaignDealsResponse,\n type ActiveCampaignListsResponse,\n type ActiveCampaignPipelinesResponse,\n type ActiveCampaignRead,\n type ActiveCampaignTagsResponse,\n type ActiveCampaignUsersResponse,\n activeCampaignReadPath,\n} from \"@baker/api/activecampaign-reads\";\nimport { type ArgsDef, defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failActiveCampaign } from \"./refusal.ts\";\n\ntype ArgValues = Record<string, unknown>;\n\ninterface SchemaArg {\n type: \"string\" | \"boolean\";\n description: string;\n required: false;\n default?: unknown;\n enum?: string[];\n}\n\nconst COMMON_ARGS: Record<string, SchemaArg> = {\n account: {\n type: \"string\",\n description: \"Which connection to read when the company has more than one (the id the error lists)\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Add each row's untouched ActiveCampaign payload as `raw`\",\n required: false,\n default: false,\n },\n};\n\nconst LIMIT_ARG: SchemaArg = { type: \"string\", description: \"How many rows, 1-100 (default 20)\", required: false };\n\n/** `--limit` as the number the route takes; anything else is refused before a request is made. */\nexport function parseLimit(value: unknown): number | undefined {\n if (value === undefined || value === \"\") return undefined;\n const limit = Number(value);\n if (!Number.isInteger(limit) || limit < 1 || limit > 100) {\n throw new ApiError(\"VALIDATION_ERROR\", \"--limit must be a whole number from 1 to 100\");\n }\n return limit;\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() !== \"\" ? value.trim() : undefined;\n}\n\ninterface ReadSpec<Res extends { ok: true; data: object }> {\n read: ActiveCampaignRead;\n description: string;\n args?: Record<string, SchemaArg>;\n body?: (args: ArgValues) => Record<string, unknown>;\n rows: (data: Res[\"data\"]) => readonly unknown[];\n hints?: (data: Res[\"data\"], args: ArgValues) => string[];\n}\n\nfunction readCommand<Res extends { ok: true; data: object }>(spec: ReadSpec<Res>) {\n const args = { ...(spec.args ?? {}), ...COMMON_ARGS };\n registerSchema({ command: `activecampaign.${spec.read}`, description: spec.description, args });\n return defineCommand({\n meta: { name: spec.read, description: spec.description },\n args: args as ArgsDef,\n run: async ({ args: values }) => {\n try {\n const body = {\n ...(spec.body ? spec.body(values) : {}),\n ...(optionalString(values.account) ? { account: optionalString(values.account) } : {}),\n ...(values.full === true ? { full: true } : {}),\n };\n const response = await apiPost<Res>(activeCampaignReadPath(spec.read), body);\n const hints = spec.hints ? spec.hints(response.data, values) : [];\n writeJson({\n ok: true,\n data: response.data,\n meta: { count: spec.rows(response.data).length },\n ...(hints.length > 0 ? { hints } : {}),\n });\n } catch (err) {\n failActiveCampaign(err);\n }\n },\n });\n}\n\nexport const accountCommand = readCommand<ActiveCampaignAccountResponse>({\n read: \"account\",\n description:\n \"Start here for ActiveCampaign: the connected account at a glance — its label, how many contacts it holds, whether site tracking is on (and its tracking account id, the one id the ActiveCampaign tag on a landing needs), which domains it accepts visits from, and whether event tracking is on. Example: baker activecampaign account\",\n rows: (data) => [data.summary],\n hints: ({ summary }) => {\n const hints: string[] = [];\n if (summary.siteTracking.enabled === false) {\n hints.push(\n \"Site tracking is off in ActiveCampaign, so it records no page visits for these contacts even with the tag on a page.\",\n );\n }\n if (summary.siteTracking.enabled && summary.siteTracking.domains.length === 0) {\n hints.push(\"Site tracking is on but no domain is allowed, so ActiveCampaign ignores visits from every site.\");\n }\n return hints;\n },\n});\n\nexport const listsCommand = readCommand<ActiveCampaignListsResponse>({\n read: \"lists\",\n description:\n \"Every list on the connected ActiveCampaign account with its id and how many active contacts it holds. Use the id or the name with `baker activecampaign contacts --list`. Example: baker activecampaign lists\",\n rows: (data) => data.lists,\n});\n\nexport const automationsCommand = readCommand<ActiveCampaignAutomationsResponse>({\n read: \"automations\",\n description:\n \"Every automation on the connected ActiveCampaign account: on or off, how many contacts entered and finished it, and what starts it (subscribe, tag added, …). Read it when auditing what happens to a lead after it arrives — an automation that is off looks connected and does nothing. Example: baker activecampaign automations --active-only\",\n args: {\n \"active-only\": { type: \"boolean\", description: \"Only automations that are on\", required: false, default: false },\n },\n body: (args) => (args[\"active-only\"] === true ? { activeOnly: true } : {}),\n rows: (data) => data.automations,\n hints: (data) =>\n data.automations.length === 0\n ? [\"This account has no automations, so nothing runs after a lead arrives unless someone acts on it by hand.\"]\n : [],\n});\n\nexport const pipelinesCommand = readCommand<ActiveCampaignPipelinesResponse>({\n read: \"pipelines\",\n description:\n \"Deal pipelines on the connected ActiveCampaign account with their stages in board order — the first stage is where a new deal lands. Ids and titles feed `baker activecampaign deals --pipeline/--stage`. Example: baker activecampaign pipelines\",\n rows: (data) => data.pipelines,\n hints: (data) =>\n data.pipelines.length === 0 ? [\"This account has no deal pipelines, so there are no deals to read.\"] : [],\n});\n\nexport const tagsCommand = readCommand<ActiveCampaignTagsResponse>({\n read: \"tags\",\n description:\n \"Tags on the connected ActiveCampaign account with how many contacts carry each. Use a name with `baker activecampaign contacts --tag`. Example: baker activecampaign tags --search withbaker-\",\n args: { search: { type: \"string\", description: \"Only tags whose name contains this text\", required: false } },\n body: (args) => (optionalString(args.search) ? { search: optionalString(args.search) } : {}),\n rows: (data) => data.tags,\n});\n\nexport const fieldsCommand = readCommand<ActiveCampaignCustomFieldsResponse>({\n read: \"fields\",\n description:\n \"The account's own custom contact fields: id, title, type, personalization tag, whether it is required, the choices a dropdown/radio/checkbox accepts (store the `value`), and which lists it shows on. Map a Form answer onto one with `baker flows map` (`custom.<id>` or the tag). Example: baker activecampaign fields\",\n rows: (data) => data.fields,\n});\n\nexport const usersCommand = readCommand<ActiveCampaignUsersResponse>({\n read: \"users\",\n description:\n \"The people with a login on the connected ActiveCampaign account — who can own a deal. Example: baker activecampaign users\",\n rows: (data) => data.users,\n});\n\nexport const campaignsCommand = readCommand<ActiveCampaignCampaignsResponse>({\n read: \"campaigns\",\n description:\n \"Email campaign reports from the connected ActiveCampaign account, most recently sent first: status, send date, sends, opens and unique opens, clicks and unique clicks, unsubscribes, hard and soft bounces, and the rates (open, click and unsubscribe rates are shares of sends; click-to-open is unique clicks over unique opens; 0-1, null before anything is sent). Start here for 'how are my emails doing'. Example: baker activecampaign campaigns --since 2026-09-01 --status completed\",\n args: {\n status: {\n type: \"string\",\n description: `Only campaigns in this state: ${ACTIVECAMPAIGN_CAMPAIGN_STATUSES.join(\"|\")}`,\n required: false,\n enum: [...ACTIVECAMPAIGN_CAMPAIGN_STATUSES],\n },\n since: { type: \"string\", description: \"Only campaigns sent on or after this day (YYYY-MM-DD)\", required: false },\n limit: LIMIT_ARG,\n },\n body: (args) => ({\n ...(optionalString(args.status) ? { status: optionalString(args.status) } : {}),\n ...(optionalString(args.since) ? { since: optionalString(args.since) } : {}),\n ...(parseLimit(args.limit) ? { limit: parseLimit(args.limit) } : {}),\n }),\n rows: (data) => data.campaigns,\n hints: (data) => {\n const hints: string[] = [];\n if (data.truncated) hints.push(\"More campaigns matched than were returned; raise --limit or narrow with --since.\");\n if (data.campaigns.length === 0) hints.push(\"No campaign matched — this account may not have sent any yet.\");\n if (data.campaigns.some((campaign) => campaign.automationId !== null)) {\n hints.push(\"Rows with an automationId are emails an automation sends; their counts grow as contacts enter it.\");\n }\n return hints;\n },\n});\n\nexport const contactsCommand = readCommand<ActiveCampaignContactsResponse>({\n read: \"contacts\",\n description:\n \"Contacts on the connected ActiveCampaign account, newest first: one by --email (was this lead received?) or by --id (the `contact.id` an ActiveCampaign event carries — a scheduled agent's payload never holds the email), each with its `tags` by name and its `activity` (events, page visits, campaign emails sent/opened/clicked, automation runs, list subscriptions — did the Form's event land? did it enter the automation?); everyone with a --tag or on a --list (id or exact name), or a --search; with no filter, the most recent. `total` counts every match, so `--limit 1` answers 'how many'. Rows are personal data: quote counts in a report, never names or emails. Example: baker activecampaign contacts --tag withbaker-/pricing --limit 5\",\n args: {\n id: { type: \"string\", description: \"The contact's ActiveCampaign id, e.g. an event's contact.id\", required: false },\n email: { type: \"string\", description: \"The contact's exact email\", required: false },\n tag: { type: \"string\", description: \"A tag id or exact name\", required: false },\n list: { type: \"string\", description: \"A list id or exact name\", required: false },\n search: { type: \"string\", description: \"Free text over name, email, phone and organisation\", required: false },\n limit: LIMIT_ARG,\n },\n body: (args) => ({\n ...Object.fromEntries(\n ([\"id\", \"email\", \"tag\", \"list\", \"search\"] as const).flatMap((key) =>\n optionalString(args[key]) ? [[key, optionalString(args[key])]] : [],\n ),\n ),\n ...(parseLimit(args.limit) ? { limit: parseLimit(args.limit) } : {}),\n }),\n rows: (data) => data.contacts,\n hints: (data, args) =>\n optionalString(args.email) && data.contacts.length === 0\n ? [\"No contact has that email: the lead never reached ActiveCampaign. That is a finding, not an error.\"]\n : optionalString(args.id) && data.contacts.length === 0\n ? [\"No contact has that id: it was deleted or merged in ActiveCampaign since the event.\"]\n : [],\n});\n\nexport const dealsCommand = readCommand<ActiveCampaignDealsResponse>({\n read: \"deals\",\n description:\n \"Deals on the connected ActiveCampaign account, newest first, narrowed by --pipeline / --stage (id or exact title, from `baker activecampaign pipelines`), --status open|won|lost and --owner (user id, username or email). Values are in the currency's major units; `totals` sums every matching deal per currency, not only the rows returned. Example: baker activecampaign deals --status won\",\n args: {\n pipeline: { type: \"string\", description: \"A pipeline id or exact title\", required: false },\n stage: { type: \"string\", description: \"A stage id or exact title\", required: false },\n status: {\n type: \"string\",\n description: `Only deals that are ${ACTIVECAMPAIGN_DEAL_STATUSES.join(\"|\")}`,\n required: false,\n enum: [...ACTIVECAMPAIGN_DEAL_STATUSES],\n },\n owner: { type: \"string\", description: \"A user id, username or email\", required: false },\n limit: LIMIT_ARG,\n },\n body: (args) => ({\n ...Object.fromEntries(\n ([\"pipeline\", \"stage\", \"status\", \"owner\"] as const).flatMap((key) =>\n optionalString(args[key]) ? [[key, optionalString(args[key])]] : [],\n ),\n ),\n ...(parseLimit(args.limit) ? { limit: parseLimit(args.limit) } : {}),\n }),\n rows: (data) => data.deals,\n});\n\n/** Every read, by its subcommand name. */\nexport const READ_COMMANDS = {\n account: accountCommand,\n lists: listsCommand,\n automations: automationsCommand,\n pipelines: pipelinesCommand,\n tags: tagsCommand,\n fields: fieldsCommand,\n users: usersCommand,\n campaigns: campaignsCommand,\n contacts: contactsCommand,\n deals: dealsCommand,\n};\n","/**\n * Agent-made ActiveCampaign changes: the contract the CLI and the backend share.\n *\n * `baker activecampaign stage <field|list|tag|pipeline>` never changes the\n * account. It stages one of these ops onto the Session's draft, and the draft\n * applies when the Session completes at Publish. Every op is a create that\n * finds first — a field by its personalization tag, a list, tag or pipeline by\n * its name — so applying it twice, or on an account that already has it, makes\n * nothing twice.\n */\nimport { z } from \"zod\";\n\nexport const ACTIVECAMPAIGN_WRITE_KINDS = [\"field\", \"list\", \"tag\", \"pipeline\"] as const;\nexport type ActiveCampaignWriteKind = (typeof ACTIVECAMPAIGN_WRITE_KINDS)[number];\n\n/** The custom-field types ActiveCampaign's API creates (`POST /fields`). */\nexport const ACTIVECAMPAIGN_STAGEABLE_FIELD_TYPES = [\n \"text\",\n \"textarea\",\n \"date\",\n \"datetime\",\n \"dropdown\",\n \"listbox\",\n \"radio\",\n \"checkbox\",\n \"hidden\",\n] as const;\nexport type ActiveCampaignStageableFieldType = (typeof ACTIVECAMPAIGN_STAGEABLE_FIELD_TYPES)[number];\n\n/** Types whose values are picked from options, which then have to be given. */\nconst OPTION_FIELD_TYPES: ReadonlySet<ActiveCampaignStageableFieldType> = new Set([\n \"dropdown\",\n \"listbox\",\n \"radio\",\n \"checkbox\",\n]);\n\nexport function activeCampaignFieldTakesOptions(type: ActiveCampaignStageableFieldType): boolean {\n return OPTION_FIELD_TYPES.has(type);\n}\n\n/**\n * The personalization tag ActiveCampaign gives a field created without one:\n * upper-cased, whitespace to `_`, anything else that is not a letter, digit or\n * `_` dropped (\"baker-e2e-D no perstag\" → `BAKERE2ED_NO_PERSTAG`, observed on a\n * real account). Deriving it the same way is what lets a re-run find the field.\n */\nexport function activeCampaignPerstag(title: string): string {\n return title\n .trim()\n .toUpperCase()\n .replace(/\\s+/g, \"_\")\n .replace(/[^A-Z0-9_]/g, \"\");\n}\n\nconst name = z.string().trim().min(1).max(255);\nconst description = z.string().trim().max(1000).optional();\n\nconst PERSTAG = /^[A-Z0-9_]+$/;\n\nexport const activeCampaignFieldOpSchema = z\n .object({\n kind: z.literal(\"field\"),\n title: name,\n type: z.enum(ACTIVECAMPAIGN_STAGEABLE_FIELD_TYPES).default(\"text\"),\n /** `UTM_SOURCE` — what Forms map onto (`custom.UTM_SOURCE`). Derived from the title when absent. */\n perstag: z\n .string()\n .trim()\n .transform((value) => value.replace(/^%|%$/g, \"\").toUpperCase())\n .pipe(z.string().min(1).max(100).regex(PERSTAG, \"perstag may only use letters, digits and _ (like UTM_SOURCE)\"))\n .optional(),\n options: z.array(name).max(200).optional(),\n description,\n })\n .superRefine((op, ctx) => {\n const takesOptions = activeCampaignFieldTakesOptions(op.type);\n if (takesOptions && (op.options ?? []).length === 0) {\n ctx.addIssue({ code: \"custom\", path: [\"options\"], message: `a ${op.type} field needs at least one option` });\n }\n if (!takesOptions && op.options !== undefined) {\n ctx.addIssue({ code: \"custom\", path: [\"options\"], message: `a ${op.type} field takes no options` });\n }\n if (op.perstag === undefined && activeCampaignPerstag(op.title) === \"\") {\n ctx.addIssue({\n code: \"custom\",\n path: [\"perstag\"],\n message: \"pass --perstag: the title has no letters or digits\",\n });\n }\n const values = (op.options ?? []).map((option) => option.toLowerCase());\n if (new Set(values).size !== values.length) {\n ctx.addIssue({ code: \"custom\", path: [\"options\"], message: \"options must not repeat\" });\n }\n });\n\nexport const activeCampaignListOpSchema = z.object({ kind: z.literal(\"list\"), name, description });\n\nexport const activeCampaignTagOpSchema = z.object({ kind: z.literal(\"tag\"), name, description });\n\nexport const activeCampaignPipelineOpSchema = z\n .object({\n kind: z.literal(\"pipeline\"),\n title: name,\n currency: z\n .string()\n .trim()\n .toLowerCase()\n .regex(/^[a-z]{3}$/, \"currency is a three-letter code like usd\")\n .default(\"usd\"),\n /** In order. A new pipeline gets exactly these; an existing one gains the ones it lacks. */\n stages: z.array(name).max(30).optional(),\n })\n .superRefine((op, ctx) => {\n const titles = (op.stages ?? []).map((stage) => stage.toLowerCase());\n if (new Set(titles).size !== titles.length) {\n ctx.addIssue({ code: \"custom\", path: [\"stages\"], message: \"stages must not repeat\" });\n }\n });\n\nexport const activeCampaignWriteOpSchema = z.discriminatedUnion(\"kind\", [\n activeCampaignFieldOpSchema,\n activeCampaignListOpSchema,\n activeCampaignTagOpSchema,\n activeCampaignPipelineOpSchema,\n]);\nexport type ActiveCampaignWriteOp = z.infer<typeof activeCampaignWriteOpSchema>;\nexport type ActiveCampaignFieldOp = Extract<ActiveCampaignWriteOp, { kind: \"field\" }>;\nexport type ActiveCampaignPipelineOp = Extract<ActiveCampaignWriteOp, { kind: \"pipeline\" }>;\n\n/** The name an op's thing is known by in ActiveCampaign. */\nexport function activeCampaignWriteName(op: ActiveCampaignWriteOp): string {\n return op.kind === \"field\" || op.kind === \"pipeline\" ? op.title : op.name;\n}\n\n/** A field's personalization tag: the given one, or the one its title derives. */\nexport function activeCampaignFieldPerstag(op: ActiveCampaignFieldOp): string {\n return op.perstag ?? activeCampaignPerstag(op.title);\n}\n\n/**\n * What makes two ops the same thing: a field is its personalization tag, the\n * rest their name (ActiveCampaign compares names without case). Staging the\n * same thing twice replaces the earlier op rather than creating it twice.\n */\nexport function activeCampaignWriteIdentity(op: ActiveCampaignWriteOp): string {\n if (op.kind === \"field\") {\n return `field:${activeCampaignFieldPerstag(op)}`;\n }\n return `${op.kind}:${activeCampaignWriteName(op).toLowerCase()}`;\n}\n\n/** One line a person reads in the review and the agent reads back. */\nexport function summarizeActiveCampaignWrite(op: ActiveCampaignWriteOp): string {\n switch (op.kind) {\n case \"field\": {\n const options = op.options && op.options.length > 0 ? `: ${op.options.join(\", \")}` : \"\";\n return `Add the contact field \"${op.title}\" (%${activeCampaignFieldPerstag(op)}%, ${op.type}${options})`;\n }\n case \"list\":\n return `Add the list \"${op.name}\"`;\n case \"tag\":\n return `Add the tag \"${op.name}\"`;\n default: {\n const stages = op.stages && op.stages.length > 0 ? ` with stages ${op.stages.join(\" → \")}` : \"\";\n return `Add the deal pipeline \"${op.title}\"${stages}`;\n }\n }\n}\n\n// --- Wire ------------------------------------------------------------------\n\nexport const activeCampaignDraftOpResultSchema = z.object({\n status: z.enum([\"applied\", \"failed\", \"skipped\"]),\n /** The id ActiveCampaign gave, or the one it already had. */\n id: z.string().optional(),\n /** True when the account already had it and nothing new was made. */\n reused: z.boolean().optional(),\n note: z.string().optional(),\n error: z.string().optional(),\n executedAt: z.number().optional(),\n});\nexport type ActiveCampaignDraftOpResult = z.infer<typeof activeCampaignDraftOpResultSchema>;\n\nexport const activeCampaignDraftStageRequestSchema = z.object({\n chatId: z.string().min(1),\n /** Connection id; optional when the company has exactly one ActiveCampaign account. */\n account: z.string().optional(),\n op: activeCampaignWriteOpSchema,\n});\nexport type ActiveCampaignDraftStageRequest = z.infer<typeof activeCampaignDraftStageRequestSchema>;\n\nexport const activeCampaignDraftStageResponseSchema = z.object({\n ref: z.string(),\n kind: z.enum(ACTIVECAMPAIGN_WRITE_KINDS),\n summary: z.string(),\n account: z.string(),\n /** True when this replaced an earlier staged op for the same thing. */\n replaced: z.boolean(),\n /** The account already has it: publishing reuses it (a field gains missing options). */\n alreadyInAccount: z.boolean(),\n /** A Form maps a staged field as `custom.<perstag>`. */\n mapAs: z.string().optional(),\n hints: z.array(z.string()).optional(),\n});\nexport type ActiveCampaignDraftStageResponse = z.infer<typeof activeCampaignDraftStageResponseSchema>;\n\nexport const activeCampaignDraftListRequestSchema = z.object({ chatId: z.string().min(1) });\nexport type ActiveCampaignDraftListRequest = z.infer<typeof activeCampaignDraftListRequestSchema>;\n\nexport const activeCampaignDraftOpViewSchema = z.object({\n ref: z.string(),\n kind: z.enum(ACTIVECAMPAIGN_WRITE_KINDS),\n name: z.string(),\n summary: z.string(),\n account: z.string(),\n stagedAt: z.number(),\n result: activeCampaignDraftOpResultSchema.optional(),\n});\n\nexport const activeCampaignDraftListResponseSchema = z.object({\n status: z.enum([\"none\", \"active\", \"publishing\", \"applied\", \"discarded\"]),\n count: z.number(),\n ops: z.array(activeCampaignDraftOpViewSchema),\n publishError: z.string().optional(),\n});\nexport type ActiveCampaignDraftListResponse = z.infer<typeof activeCampaignDraftListResponseSchema>;\n\nexport const activeCampaignDraftRemoveRequestSchema = z.object({\n chatId: z.string().min(1),\n /** A staged ref (`ac_field_1`) or the thing's name / perstag. */\n ref: z.string().min(1),\n});\nexport type ActiveCampaignDraftRemoveRequest = z.infer<typeof activeCampaignDraftRemoveRequestSchema>;\n\nexport const activeCampaignDraftRemoveResponseSchema = z.object({ removed: z.array(z.string()) });\nexport type ActiveCampaignDraftRemoveResponse = z.infer<typeof activeCampaignDraftRemoveResponseSchema>;\n\nexport const activeCampaignDraftClearRequestSchema = z.object({ chatId: z.string().min(1) });\nexport type ActiveCampaignDraftClearRequest = z.infer<typeof activeCampaignDraftClearRequestSchema>;\n\nexport const activeCampaignDraftClearResponseSchema = z.object({ cleared: z.number() });\nexport type ActiveCampaignDraftClearResponse = z.infer<typeof activeCampaignDraftClearResponseSchema>;\n","import {\n ACTIVECAMPAIGN_STAGEABLE_FIELD_TYPES,\n type ActiveCampaignDraftStageResponse,\n type ActiveCampaignWriteKind,\n} from \"@baker/api/activecampaign-writes\";\nimport { type ArgsDef, defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failActiveCampaign } from \"./refusal.ts\";\n\n/**\n * `baker activecampaign stage <field|list|tag|pipeline>`: stage a change to the\n * connected ActiveCampaign account onto this chat. Nothing changes in\n * ActiveCampaign until the chat is published.\n */\n\ntype ArgValues = Record<string, unknown>;\ntype StagedOpInput = Record<string, unknown> & { kind: ActiveCampaignWriteKind };\n\n/** The five campaign parameters a Form usually carries into a lead (`--utm`). */\nconst UTM_FIELDS = [\n [\"UTM_SOURCE\", \"UTM source\"],\n [\"UTM_MEDIUM\", \"UTM medium\"],\n [\"UTM_CAMPAIGN\", \"UTM campaign\"],\n [\"UTM_CONTENT\", \"UTM content\"],\n [\"UTM_TERM\", \"UTM term\"],\n] as const;\n\nfunction text(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() !== \"\" ? value.trim() : undefined;\n}\n\n/** `\"a, b ,c\"` → `[\"a\", \"b\", \"c\"]`. A comma list, because citty keeps only a repeated flag's last value. */\nfunction commaList(value: unknown): string[] | undefined {\n const raw = text(value);\n return raw === undefined\n ? undefined\n : raw\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part !== \"\");\n}\n\nfunction defined(entries: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(Object.entries(entries).filter(([, value]) => value !== undefined));\n}\n\n/** The op(s) one `stage` call sends — several only for `field --utm`. The backend validates them. */\nexport function stageOpsFromArgs(kind: ActiveCampaignWriteKind, args: ArgValues): StagedOpInput[] {\n switch (kind) {\n case \"field\":\n if (args.utm === true) {\n return UTM_FIELDS.map(([perstag, title]) => ({ kind, title, type: \"text\", perstag }));\n }\n return [\n {\n kind,\n ...defined({\n title: text(args.title),\n type: text(args.type),\n perstag: text(args.perstag),\n options: commaList(args.options),\n description: text(args.description),\n }),\n },\n ];\n case \"list\":\n case \"tag\":\n return [{ kind, ...defined({ name: text(args.name), description: text(args.description) }) }];\n default:\n return [\n {\n kind,\n ...defined({ title: text(args.title), currency: text(args.currency), stages: commaList(args.stages) }),\n },\n ];\n }\n}\n\nconst STAGED_HINT =\n \"Staged only — nothing has changed in ActiveCampaign yet. It is created when the user publishes this chat (an existing one with the same name is reused, never duplicated). Say it is ready and gets created on Publish — not that it exists already.\";\n\nasync function stage(kind: ActiveCampaignWriteKind, args: ArgValues): Promise<void> {\n const chatId = requireChatId();\n const account = text(args.account);\n try {\n const staged: ActiveCampaignDraftStageResponse[] = [];\n for (const op of stageOpsFromArgs(kind, args)) {\n staged.push(\n await apiPost<ActiveCampaignDraftStageResponse>(\"/api/activecampaign/draft/stage\", {\n chatId,\n ...(account ? { account } : {}),\n op,\n }),\n );\n }\n const hints = [...new Set(staged.flatMap((entry) => entry.hints ?? []))];\n const mapAs = staged.flatMap((entry) => (entry.mapAs ? [entry.mapAs] : []));\n if (mapAs.length > 0) {\n hints.push(\n `Map a Form answer onto it with \\`baker flows map\\` as ${mapAs.map((key) => `\\`${key}\\``).join(\", \")} — the field is found by its perstag when a lead arrives, so the mapping works before and after Publish creates it.`,\n );\n }\n if (staged.some((entry) => entry.alreadyInAccount)) {\n hints.push(\"The account already has at least one of these: Publish reuses it rather than creating a copy.\");\n }\n const data = staged.map(({ hints: _hints, ...entry }) => entry);\n writeJson({ ok: true, data: data.length === 1 ? data[0] : data, hints: [STAGED_HINT, ...hints] });\n } catch (err) {\n failActiveCampaign(err);\n }\n}\n\nconst ACCOUNT_ARG = {\n type: \"string\",\n description: \"Which ActiveCampaign connection, when the company has more than one (the id the error lists)\",\n required: false,\n} as const;\n\nconst FIELD_ARGS = {\n title: { type: \"string\", description: 'Field name as people see it, e.g. \"UTM source\"', required: false },\n type: {\n type: \"string\",\n description: `${ACTIVECAMPAIGN_STAGEABLE_FIELD_TYPES.join(\"|\")} (default text)`,\n required: false,\n },\n perstag: {\n type: \"string\",\n description:\n \"Personalization tag, e.g. UTM_SOURCE — what Forms map onto (custom.UTM_SOURCE). Default: from the title\",\n required: false,\n },\n options: {\n type: \"string\",\n description: 'Comma-separated choices for dropdown|listbox|radio|checkbox, e.g. \"Basic,Pro\"',\n required: false,\n },\n description: { type: \"string\", description: \"Help text shown with the field\", required: false },\n utm: {\n type: \"boolean\",\n description: \"Stage the five UTM text fields at once: UTM_SOURCE, UTM_MEDIUM, UTM_CAMPAIGN, UTM_CONTENT, UTM_TERM\",\n required: false,\n },\n account: ACCOUNT_ARG,\n} as const satisfies ArgsDef;\n\nconst NAMED_ARGS = {\n name: { type: \"string\", description: \"Its name in ActiveCampaign\", required: false },\n description: { type: \"string\", description: \"Optional description\", required: false },\n account: ACCOUNT_ARG,\n} as const satisfies ArgsDef;\n\nconst PIPELINE_ARGS = {\n title: { type: \"string\", description: 'Pipeline name, e.g. \"Inbound leads\"', required: false },\n stages: {\n type: \"string\",\n description:\n 'Comma-separated stages in order, e.g. \"New lead,Qualified,Proposal,Won\". A new pipeline gets exactly these; an existing one only gains the missing ones',\n required: false,\n },\n currency: { type: \"string\", description: \"Deal currency, three letters (default usd)\", required: false },\n account: ACCOUNT_ARG,\n} as const satisfies ArgsDef;\n\nconst DESCRIPTIONS: Record<ActiveCampaignWriteKind, string> = {\n field:\n 'Stage a custom contact field (applied at Publish, on every list). Start here for UTMs: `stage field --utm`, then map `custom.UTM_SOURCE=tracking:utm_source` etc. with `baker flows map`. One field: `stage field --title \"Plan\" --type dropdown --options \"Basic,Pro\"`.',\n list: 'Stage a contact list, e.g. `stage list --name \"Webinar sign-ups\"` (applied at Publish; an existing list of that name is reused).',\n tag: 'Stage a contact tag, e.g. `stage tag --name \"hot-lead\"` (applied at Publish; reused when it exists). A Form can also create tags on its own when it tags a lead.',\n pipeline:\n 'Stage a deal pipeline with its stages, e.g. `stage pipeline --title \"Inbound\" --stages \"New lead,Qualified,Won\"` (applied at Publish; an existing pipeline only gains missing stages).',\n};\n\nfunction schemaArgs(args: ArgsDef): Record<string, { type: string; description: string; required: boolean }> {\n return Object.fromEntries(\n Object.entries(args).map(([name, arg]) => [\n name,\n { type: arg.type ?? \"string\", description: arg.description ?? \"\", required: arg.required === true },\n ]),\n );\n}\n\nfunction stageCommand(kind: ActiveCampaignWriteKind, args: ArgsDef) {\n registerSchema({ command: `activecampaign.stage.${kind}`, description: DESCRIPTIONS[kind], args: schemaArgs(args) });\n return defineCommand({\n meta: { name: kind, description: DESCRIPTIONS[kind] },\n args,\n run: async ({ args: values }) => {\n await stage(kind, values as ArgValues);\n },\n });\n}\n\nexport const stageCommandGroup = defineCommand({\n meta: {\n name: \"stage\",\n description:\n \"Stage an ActiveCampaign change on this chat — a custom field, list, tag or deal pipeline. Nothing changes in ActiveCampaign until the chat is published; restaging the same name replaces the staged one. Review with `baker activecampaign drafts`, drop with `baker activecampaign unstage`.\",\n },\n subCommands: {\n field: stageCommand(\"field\", FIELD_ARGS),\n list: stageCommand(\"list\", NAMED_ARGS),\n tag: stageCommand(\"tag\", NAMED_ARGS),\n pipeline: stageCommand(\"pipeline\", PIPELINE_ARGS),\n },\n});\n","import type {\n ActiveCampaignDraftClearResponse,\n ActiveCampaignDraftRemoveResponse,\n} from \"@baker/api/activecampaign-writes\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failActiveCampaign } from \"./refusal.ts\";\n\nconst DESCRIPTION =\n 'Drop a staged ActiveCampaign change from this chat before it is published: `unstage ac_field_1`, `unstage UTM_SOURCE` (a field\\'s perstag) or `unstage \"Webinar sign-ups\"` (a name). `--all` drops every staged ActiveCampaign change. Nothing in ActiveCampaign is touched.';\n\nregisterSchema({\n command: \"activecampaign.unstage\",\n description: DESCRIPTION,\n args: {\n ref: { type: \"positional\", description: \"Staged ref, name, or a field's perstag\", required: false },\n all: { type: \"boolean\", description: \"Drop every staged ActiveCampaign change on this chat\", required: false },\n },\n});\n\nexport const unstageCommand = defineCommand({\n meta: { name: \"unstage\", description: DESCRIPTION },\n args: {\n ref: { type: \"positional\", description: \"Staged ref, name, or a field's perstag\", required: false },\n all: { type: \"boolean\", description: \"Drop every staged ActiveCampaign change on this chat\", required: false },\n },\n run: async ({ args }) => {\n const chatId = requireChatId();\n try {\n if (args.all === true) {\n const data = await apiPost<ActiveCampaignDraftClearResponse>(\"/api/activecampaign/draft/clear\", { chatId });\n writeJson({ ok: true, data });\n return;\n }\n const ref = typeof args.ref === \"string\" ? args.ref.trim() : \"\";\n if (!ref) {\n writeJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: \"pass the staged ref, name or perstag to drop, or --all\" },\n });\n process.exit(1);\n }\n const data = await apiPost<ActiveCampaignDraftRemoveResponse>(\"/api/activecampaign/draft/remove\", {\n chatId,\n ref,\n });\n writeJson({\n ok: true,\n data,\n ...(data.removed.length === 0\n ? { hints: [`Nothing staged matches \"${ref}\". Run \\`baker activecampaign drafts\\` to see the refs.`] }\n : {}),\n });\n } catch (err) {\n failActiveCampaign(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iBAAAA,sBAAqB;;;ACC9B,SAAS,qBAAqB;;;ACQ9B,IAAM,WACJ;AASK,SAAS,sBAAsB,MAAc,SAA+C;AACjG,MACE,SAAS,gBACR,QAAQ,SAAS,wCAAwC,KACxD,QAAQ,SAAS,4CAA4C,IAC/D;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,QACH,QAAQ;AAAA,QACR,aACE,+RACA;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACA,MAAI,SAAS,cAAc,QAAQ,SAAS,8BAA8B,GAAG;AAC3E,WAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,QACH,QAAQ;AAAA,QACR,aACE,0PACA;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEO,SAAS,mBAAmB,KAAqB;AACtD,QAAM,UAAU,eAAe,WAAW,sBAAsB,IAAI,MAAM,IAAI,OAAO,IAAI;AACzF,MAAI,eAAe,YAAY,YAAY,MAAM;AAC/C,cAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,QAAQ,MAAM,SAAS,IAAI,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC;AAC9F,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,UAAQ,GAAG;AACb;;;AD/CA,IAAM,cACJ;AAEF,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,aAAa,cAAc,aAAa,UAAU,MAAM,EAAE;AAC5F,CAAC;AAGD,SAAS,UAAU,IAAwE;AACzF,MAAI,CAAC,GAAG,OAAQ,QAAO;AACvB,MAAI,GAAG,OAAO,WAAW,UAAW,QAAO,GAAG,OAAO,SAAS,0BAA0B;AACxF,SAAO,GAAG,OAAO,WAAW,WAAW,WAAW,GAAG,OAAO,SAAS,iBAAiB,KAAK;AAC7F;AAEO,IAAM,gBAAgB,cAAc;AAAA,EACzC,MAAM,EAAE,MAAM,UAAU,aAAa,YAAY;AAAA,EACjD,MAAM,EAAE,MAAM,cAAc;AAAA,EAC5B,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,cAAc,KAAK,IAAI;AACtC,QAAI;AACF,YAAM,OAAO,MAAM,QAAyC,6BAA6B,EAAE,OAAO,CAAC;AACnG,YAAM,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO;AAC/B,cAAM,UAAU,UAAU,EAAE;AAC5B,eAAO,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,MAAM,SAAS,GAAG,SAAS,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC,EAAG;AAAA,MAC5F,CAAC;AACD,YAAM,QACJ,KAAK,WAAW,YAAY,KAAK,QAAQ,IACrC,CAAC,2FAAsF,IACvF,CAAC;AACP,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ,MAAM;AAAA,UACJ,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ;AAAA,UACA,GAAI,KAAK,eAAe,EAAE,cAAc,KAAK,aAAa,IAAI,CAAC;AAAA,QACjE;AAAA,QACA,GAAI,MAAM,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,MACtC,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,yBAAmB,GAAG;AAAA,IACxB;AAAA,EACF;AACF,CAAC;;;AE9CD,SAAS,SAAS;AAElB,IAAM,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AACvD,IAAM,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAExD,IAAM,cAAc,EAAE,OAAO;AAAA;AAAA,EAE3B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,MAAM,EAAE,QAAQ,EAAE,SAAS;AAC7B,CAAC;AAED,SAAS,SAAkC,OAAU;AACnD,SAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;AAC5F;AAOO,IAAM,qCAAqC,EAAE,OAAO;AAAA,EACzD,OAAO,EAAE,OAAO;AAAA,EAChB,QAAQ,EAAE,OAAO;AAAA,EACjB,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,cAAc,EAAE,OAAO;AAAA,IACrB,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,IAE9B,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,IAEvC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EAC7B,CAAC;AAAA,EACD,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC7D,CAAC;AAGM,IAAM,sCAAsC,SAAS,EAAE,SAAS,mCAAmC,CAAC;AAQpG,IAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA,EACf,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B;AACF,CAAC;AAGM,IAAM,oCAAoC,SAAS,EAAE,OAAO,EAAE,MAAM,2BAA2B,EAAE,CAAC;AAKlG,IAAM,yCAAyC,YAAY,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAGxG,IAAM,qCAAqC,CAAC,UAAU,YAAY,SAAS;AAE3E,IAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA,EACf,QAAQ,EAAE,KAAK,kCAAkC;AAAA;AAAA,EAEjD,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE5B,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EAC5B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC;AACF,CAAC;AAGM,IAAM,0CAA0C,SAAS;AAAA,EAC9D,aAAa,EAAE,MAAM,iCAAiC;AACxD,CAAC;AAQM,IAAM,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAG9G,IAAM,kCAAkC,EAAE,OAAO;AAAA,EACtD,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAAA,EAChB,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE9B,QAAQ,EAAE,MAAM,yBAAyB;AAAA,EACzC;AACF,CAAC;AAGM,IAAM,wCAAwC,SAAS;AAAA,EAC5D,WAAW,EAAE,MAAM,+BAA+B;AACpD,CAAC;AAKM,IAAM,kCAAkC,YAAY,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAG5F,IAAM,6BAA6B,EAAE,OAAO;AAAA,EACjD,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA;AAAA,EAEf,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC;AACF,CAAC;AAGM,IAAM,mCAAmC,SAAS,EAAE,MAAM,EAAE,MAAM,0BAA0B,EAAE,CAAC;AAQ/F,IAAM,qCAAqC,EAAE,OAAO;AAAA,EACzD,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAAA;AAAA,EAEhB,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,UAAU,EAAE,QAAQ;AAAA;AAAA,EAEpB,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAAA;AAAA,EAEnE,UAAU,EAAE,QAAQ;AAAA,EACpB,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,EAC3B;AACF,CAAC;AAGM,IAAM,2CAA2C,SAAS;AAAA,EAC/D,QAAQ,EAAE,MAAM,kCAAkC;AACpD,CAAC;AAQM,IAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,IAAI,EAAE,OAAO;AAAA,EACb,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B;AACF,CAAC;AAGM,IAAM,oCAAoC,SAAS,EAAE,OAAO,EAAE,MAAM,2BAA2B,EAAE,CAAC;AAMlG,IAAM,mCAAmC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,SAAS,EAAE,OAAO,EAAE,MAAM,uBAAuB,4BAA4B;AAE5E,IAAM,uCAAuC,YAAY,OAAO;AAAA,EACrE,QAAQ,EAAE,KAAK,gCAAgC,EAAE,SAAS;AAAA;AAAA,EAE1D,OAAO,OAAO,SAAS;AAAA,EACvB;AACF,CAAC;AAIM,IAAM,oCAAoC,EAAE,OAAO;AAAA,EACxD,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,kCAAkC,EAAE,OAAO;AAAA,EACtD,IAAI,EAAE,OAAO;AAAA,EACb,MAAM,EAAE,OAAO;AAAA;AAAA,EAEf,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQ,EAAE,KAAK,CAAC,GAAG,kCAAkC,SAAS,CAAC;AAAA;AAAA,EAE/D,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEhC,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,OAAO,EAAE,OAAO;AAAA,EAChB,OAAO,EAAE,OAAO;AAAA,EAChB,aAAa,EAAE,OAAO;AAAA,EACtB,QAAQ,EAAE,OAAO;AAAA,EACjB,cAAc,EAAE,OAAO;AAAA,EACvB,cAAc,EAAE,OAAO;AAAA,EACvB,aAAa,EAAE,OAAO;AAAA,EACtB,aAAa,EAAE,OAAO;AAAA,EACtB,OAAO;AAAA,EACP;AACF,CAAC;AAGM,IAAM,wCAAwC,SAAS;AAAA,EAC5D,WAAW,EAAE,MAAM,+BAA+B;AAAA;AAAA,EAElD,WAAW,EAAE,QAAQ;AACvB,CAAC;AAKM,IAAM,sCAAsC,YAAY,OAAO;AAAA;AAAA,EAEpE,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,EACxB,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE3B,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAEzB,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE1B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B;AACF,CAAC;AAGM,IAAM,iCAAiC,EAAE,OAAO;AAAA,EACrD,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE/B,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS;AAAA;AAAA,EAEnC,UAAU,EACP,OAAO;AAAA;AAAA,IAEN,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAAA;AAAA,IAEtG,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAAA;AAAA,IAE5E,QAAQ,EAAE;AAAA,MACR,EAAE,OAAO;AAAA,QACP,YAAY,EAAE,OAAO;AAAA,QACrB,OAAO,EAAE,KAAK,CAAC,QAAQ,UAAU,SAAS,CAAC;AAAA,QAC3C,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,QACzB,IAAI,EAAE,OAAO,EAAE,SAAS;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IACA,aAAa,EAAE;AAAA,MACb,EAAE,OAAO;AAAA,QACP,IAAI,EAAE,OAAO;AAAA,QACb,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,QAC1B,QAAQ,EAAE,KAAK,CAAC,WAAW,aAAa,SAAS,CAAC;AAAA,QAClD,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,QAC/B,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,MAC/B,CAAC;AAAA,IACH;AAAA,IACA,OAAO,EAAE;AAAA,MACP,EAAE,OAAO;AAAA,QACP,IAAI,EAAE,OAAO;AAAA,QACb,MAAM,EAAE,OAAO,EAAE,SAAS;AAAA,QAC1B,QAAQ,EAAE,KAAK,CAAC,cAAc,gBAAgB,eAAe,WAAW,SAAS,CAAC;AAAA,QAClF,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,MAC7B,CAAC;AAAA,IACH;AAAA,EACF,CAAC,EACA,SAAS;AAAA,EACZ;AACF,CAAC;AAIM,IAAM,uCAAuC,SAAS;AAAA;AAAA,EAE3D,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAU,EAAE,MAAM,8BAA8B;AAClD,CAAC;AAMM,IAAM,+BAA+B,CAAC,QAAQ,OAAO,MAAM;AAG3D,IAAM,mCAAmC,YAAY,OAAO;AAAA;AAAA,EAEjE,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAE9B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ,EAAE,KAAK,4BAA4B,EAAE,SAAS;AAAA;AAAA,EAEtD,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B;AACF,CAAC;AAGD,IAAM,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS;AAEhE,IAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,IAAI,EAAE,OAAO;AAAA,EACb,OAAO,EAAE,OAAO;AAAA;AAAA,EAEhB,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQ,EAAE,KAAK,CAAC,GAAG,8BAA8B,SAAS,CAAC;AAAA,EAC3D,UAAU;AAAA,EACV,OAAO;AAAA,EACP,SAAS,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC;AACF,CAAC;AAGM,IAAM,gCAAgC,EAAE,OAAO;AAAA,EACpD,UAAU,EAAE,OAAO;AAAA,EACnB,OAAO,EAAE,OAAO;AAAA;AAAA,EAEhB,OAAO,EAAE,OAAO;AAClB,CAAC;AAEM,IAAM,oCAAoC,SAAS;AAAA,EACxD,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ,EAAE,MAAM,6BAA6B;AAAA,EAC7C,OAAO,EAAE,MAAM,2BAA2B;AAC5C,CAAC;AAkBM,SAAS,uBAAuB,MAAkC;AACvE,SAAO,6BAA6B,IAAI;AAC1C;;;ACzWA,SAAuB,iBAAAC,sBAAqB;AAgB5C,IAAM,cAAyC;AAAA,EAC7C,SAAS;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AACF;AAEA,IAAM,YAAuB,EAAE,MAAM,UAAU,aAAa,qCAAqC,UAAU,MAAM;AAG1G,SAAS,WAAW,OAAoC;AAC7D,MAAI,UAAU,UAAa,UAAU,GAAI,QAAO;AAChD,QAAMC,SAAQ,OAAO,KAAK;AAC1B,MAAI,CAAC,OAAO,UAAUA,MAAK,KAAKA,SAAQ,KAAKA,SAAQ,KAAK;AACxD,UAAM,IAAI,SAAS,oBAAoB,8CAA8C;AAAA,EACvF;AACA,SAAOA;AACT;AAEA,SAAS,eAAe,OAAoC;AAC1D,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC3E;AAWA,SAAS,YAAoD,MAAqB;AAChF,QAAM,OAAO,EAAE,GAAI,KAAK,QAAQ,CAAC,GAAI,GAAG,YAAY;AACpD,iBAAe,EAAE,SAAS,kBAAkB,KAAK,IAAI,IAAI,aAAa,KAAK,aAAa,KAAK,CAAC;AAC9F,SAAOC,eAAc;AAAA,IACnB,MAAM,EAAE,MAAM,KAAK,MAAM,aAAa,KAAK,YAAY;AAAA,IACvD;AAAA,IACA,KAAK,OAAO,EAAE,MAAM,OAAO,MAAM;AAC/B,UAAI;AACF,cAAM,OAAO;AAAA,UACX,GAAI,KAAK,OAAO,KAAK,KAAK,MAAM,IAAI,CAAC;AAAA,UACrC,GAAI,eAAe,OAAO,OAAO,IAAI,EAAE,SAAS,eAAe,OAAO,OAAO,EAAE,IAAI,CAAC;AAAA,UACpF,GAAI,OAAO,SAAS,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAAA,QAC/C;AACA,cAAM,WAAW,MAAM,QAAa,uBAAuB,KAAK,IAAI,GAAG,IAAI;AAC3E,cAAM,QAAQ,KAAK,QAAQ,KAAK,MAAM,SAAS,MAAM,MAAM,IAAI,CAAC;AAChE,kBAAU;AAAA,UACR,IAAI;AAAA,UACJ,MAAM,SAAS;AAAA,UACf,MAAM,EAAE,OAAO,KAAK,KAAK,SAAS,IAAI,EAAE,OAAO;AAAA,UAC/C,GAAI,MAAM,SAAS,IAAI,EAAE,MAAM,IAAI,CAAC;AAAA,QACtC,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,2BAAmB,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEO,IAAM,iBAAiB,YAA2C;AAAA,EACvE,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM,CAAC,SAAS,CAAC,KAAK,OAAO;AAAA,EAC7B,OAAO,CAAC,EAAE,QAAQ,MAAM;AACtB,UAAM,QAAkB,CAAC;AACzB,QAAI,QAAQ,aAAa,YAAY,OAAO;AAC1C,YAAM;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AACA,QAAI,QAAQ,aAAa,WAAW,QAAQ,aAAa,QAAQ,WAAW,GAAG;AAC7E,YAAM,KAAK,iGAAiG;AAAA,IAC9G;AACA,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,eAAe,YAAyC;AAAA,EACnE,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM,CAAC,SAAS,KAAK;AACvB,CAAC;AAEM,IAAM,qBAAqB,YAA+C;AAAA,EAC/E,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM;AAAA,IACJ,eAAe,EAAE,MAAM,WAAW,aAAa,gCAAgC,UAAU,OAAO,SAAS,MAAM;AAAA,EACjH;AAAA,EACA,MAAM,CAAC,SAAU,KAAK,aAAa,MAAM,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAAA,EACxE,MAAM,CAAC,SAAS,KAAK;AAAA,EACrB,OAAO,CAAC,SACN,KAAK,YAAY,WAAW,IACxB,CAAC,0GAA0G,IAC3G,CAAC;AACT,CAAC;AAEM,IAAM,mBAAmB,YAA6C;AAAA,EAC3E,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM,CAAC,SAAS,KAAK;AAAA,EACrB,OAAO,CAAC,SACN,KAAK,UAAU,WAAW,IAAI,CAAC,oEAAoE,IAAI,CAAC;AAC5G,CAAC;AAEM,IAAM,cAAc,YAAwC;AAAA,EACjE,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,aAAa,2CAA2C,UAAU,MAAM,EAAE;AAAA,EAC5G,MAAM,CAAC,SAAU,eAAe,KAAK,MAAM,IAAI,EAAE,QAAQ,eAAe,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,EAC1F,MAAM,CAAC,SAAS,KAAK;AACvB,CAAC;AAEM,IAAM,gBAAgB,YAAgD;AAAA,EAC3E,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM,CAAC,SAAS,KAAK;AACvB,CAAC;AAEM,IAAM,eAAe,YAAyC;AAAA,EACnE,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM,CAAC,SAAS,KAAK;AACvB,CAAC;AAEM,IAAM,mBAAmB,YAA6C;AAAA,EAC3E,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM;AAAA,IACJ,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa,iCAAiC,iCAAiC,KAAK,GAAG,CAAC;AAAA,MACxF,UAAU;AAAA,MACV,MAAM,CAAC,GAAG,gCAAgC;AAAA,IAC5C;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,yDAAyD,UAAU,MAAM;AAAA,IAC/G,OAAO;AAAA,EACT;AAAA,EACA,MAAM,CAAC,UAAU;AAAA,IACf,GAAI,eAAe,KAAK,MAAM,IAAI,EAAE,QAAQ,eAAe,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,IAC7E,GAAI,eAAe,KAAK,KAAK,IAAI,EAAE,OAAO,eAAe,KAAK,KAAK,EAAE,IAAI,CAAC;AAAA,IAC1E,GAAI,WAAW,KAAK,KAAK,IAAI,EAAE,OAAO,WAAW,KAAK,KAAK,EAAE,IAAI,CAAC;AAAA,EACpE;AAAA,EACA,MAAM,CAAC,SAAS,KAAK;AAAA,EACrB,OAAO,CAAC,SAAS;AACf,UAAM,QAAkB,CAAC;AACzB,QAAI,KAAK,UAAW,OAAM,KAAK,kFAAkF;AACjH,QAAI,KAAK,UAAU,WAAW,EAAG,OAAM,KAAK,oEAA+D;AAC3G,QAAI,KAAK,UAAU,KAAK,CAAC,aAAa,SAAS,iBAAiB,IAAI,GAAG;AACrE,YAAM,KAAK,mGAAmG;AAAA,IAChH;AACA,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAM,kBAAkB,YAA4C;AAAA,EACzE,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,UAAU,aAAa,+DAA+D,UAAU,MAAM;AAAA,IAClH,OAAO,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,MAAM;AAAA,IACnF,KAAK,EAAE,MAAM,UAAU,aAAa,0BAA0B,UAAU,MAAM;AAAA,IAC9E,MAAM,EAAE,MAAM,UAAU,aAAa,2BAA2B,UAAU,MAAM;AAAA,IAChF,QAAQ,EAAE,MAAM,UAAU,aAAa,sDAAsD,UAAU,MAAM;AAAA,IAC7G,OAAO;AAAA,EACT;AAAA,EACA,MAAM,CAAC,UAAU;AAAA,IACf,GAAG,OAAO;AAAA,MACP,CAAC,MAAM,SAAS,OAAO,QAAQ,QAAQ,EAAY;AAAA,QAAQ,CAAC,QAC3D,eAAe,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,eAAe,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,IACA,GAAI,WAAW,KAAK,KAAK,IAAI,EAAE,OAAO,WAAW,KAAK,KAAK,EAAE,IAAI,CAAC;AAAA,EACpE;AAAA,EACA,MAAM,CAAC,SAAS,KAAK;AAAA,EACrB,OAAO,CAAC,MAAM,SACZ,eAAe,KAAK,KAAK,KAAK,KAAK,SAAS,WAAW,IACnD,CAAC,oGAAoG,IACrG,eAAe,KAAK,EAAE,KAAK,KAAK,SAAS,WAAW,IAClD,CAAC,qFAAqF,IACtF,CAAC;AACX,CAAC;AAEM,IAAM,eAAe,YAAyC;AAAA,EACnE,MAAM;AAAA,EACN,aACE;AAAA,EACF,MAAM;AAAA,IACJ,UAAU,EAAE,MAAM,UAAU,aAAa,gCAAgC,UAAU,MAAM;AAAA,IACzF,OAAO,EAAE,MAAM,UAAU,aAAa,6BAA6B,UAAU,MAAM;AAAA,IACnF,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa,uBAAuB,6BAA6B,KAAK,GAAG,CAAC;AAAA,MAC1E,UAAU;AAAA,MACV,MAAM,CAAC,GAAG,4BAA4B;AAAA,IACxC;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,gCAAgC,UAAU,MAAM;AAAA,IACtF,OAAO;AAAA,EACT;AAAA,EACA,MAAM,CAAC,UAAU;AAAA,IACf,GAAG,OAAO;AAAA,MACP,CAAC,YAAY,SAAS,UAAU,OAAO,EAAY;AAAA,QAAQ,CAAC,QAC3D,eAAe,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,eAAe,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,IACA,GAAI,WAAW,KAAK,KAAK,IAAI,EAAE,OAAO,WAAW,KAAK,KAAK,EAAE,IAAI,CAAC;AAAA,EACpE;AAAA,EACA,MAAM,CAAC,SAAS,KAAK;AACvB,CAAC;AAGM,IAAM,gBAAgB;AAAA,EAC3B,SAAS;AAAA,EACT,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,OAAO;AACT;;;ACrQA,SAAS,KAAAC,UAAS;AAEX,IAAM,6BAA6B,CAAC,SAAS,QAAQ,OAAO,UAAU;AAItE,IAAM,uCAAuC;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIA,IAAM,qBAAoE,oBAAI,IAAI;AAAA,EAChF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,SAAS,gCAAgC,MAAiD;AAC/F,SAAO,mBAAmB,IAAI,IAAI;AACpC;AAQO,SAAS,sBAAsB,OAAuB;AAC3D,SAAO,MACJ,KAAK,EACL,YAAY,EACZ,QAAQ,QAAQ,GAAG,EACnB,QAAQ,eAAe,EAAE;AAC9B;AAEA,IAAM,OAAOA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC7C,IAAM,cAAcA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAI,EAAE,SAAS;AAEzD,IAAM,UAAU;AAET,IAAM,8BAA8BA,GACxC,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,OAAO;AAAA,EACvB,OAAO;AAAA,EACP,MAAMA,GAAE,KAAK,oCAAoC,EAAE,QAAQ,MAAM;AAAA;AAAA,EAEjE,SAASA,GACN,OAAO,EACP,KAAK,EACL,UAAU,CAAC,UAAU,MAAM,QAAQ,UAAU,EAAE,EAAE,YAAY,CAAC,EAC9D,KAAKA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,MAAM,SAAS,8DAA8D,CAAC,EAC9G,SAAS;AAAA,EACZ,SAASA,GAAE,MAAM,IAAI,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACzC;AACF,CAAC,EACA,YAAY,CAAC,IAAI,QAAQ;AACxB,QAAM,eAAe,gCAAgC,GAAG,IAAI;AAC5D,MAAI,iBAAiB,GAAG,WAAW,CAAC,GAAG,WAAW,GAAG;AACnD,QAAI,SAAS,EAAE,MAAM,UAAU,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,GAAG,IAAI,mCAAmC,CAAC;AAAA,EAC7G;AACA,MAAI,CAAC,gBAAgB,GAAG,YAAY,QAAW;AAC7C,QAAI,SAAS,EAAE,MAAM,UAAU,MAAM,CAAC,SAAS,GAAG,SAAS,KAAK,GAAG,IAAI,0BAA0B,CAAC;AAAA,EACpG;AACA,MAAI,GAAG,YAAY,UAAa,sBAAsB,GAAG,KAAK,MAAM,IAAI;AACtE,QAAI,SAAS;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,SAAS;AAAA,MAChB,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACA,QAAM,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,OAAO,YAAY,CAAC;AACtE,MAAI,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,QAAQ;AAC1C,QAAI,SAAS,EAAE,MAAM,UAAU,MAAM,CAAC,SAAS,GAAG,SAAS,0BAA0B,CAAC;AAAA,EACxF;AACF,CAAC;AAEI,IAAM,6BAA6BA,GAAE,OAAO,EAAE,MAAMA,GAAE,QAAQ,MAAM,GAAG,MAAM,YAAY,CAAC;AAE1F,IAAM,4BAA4BA,GAAE,OAAO,EAAE,MAAMA,GAAE,QAAQ,KAAK,GAAG,MAAM,YAAY,CAAC;AAExF,IAAM,iCAAiCA,GAC3C,OAAO;AAAA,EACN,MAAMA,GAAE,QAAQ,UAAU;AAAA,EAC1B,OAAO;AAAA,EACP,UAAUA,GACP,OAAO,EACP,KAAK,EACL,YAAY,EACZ,MAAM,cAAc,0CAA0C,EAC9D,QAAQ,KAAK;AAAA;AAAA,EAEhB,QAAQA,GAAE,MAAM,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS;AACzC,CAAC,EACA,YAAY,CAAC,IAAI,QAAQ;AACxB,QAAM,UAAU,GAAG,UAAU,CAAC,GAAG,IAAI,CAACC,WAAUA,OAAM,YAAY,CAAC;AACnE,MAAI,IAAI,IAAI,MAAM,EAAE,SAAS,OAAO,QAAQ;AAC1C,QAAI,SAAS,EAAE,MAAM,UAAU,MAAM,CAAC,QAAQ,GAAG,SAAS,yBAAyB,CAAC;AAAA,EACtF;AACF,CAAC;AAEI,IAAM,8BAA8BD,GAAE,mBAAmB,QAAQ;AAAA,EACtE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AA+CM,IAAM,oCAAoCE,GAAE,OAAO;AAAA,EACxD,QAAQA,GAAE,KAAK,CAAC,WAAW,UAAU,SAAS,CAAC;AAAA;AAAA,EAE/C,IAAIA,GAAE,OAAO,EAAE,SAAS;AAAA;AAAA,EAExB,QAAQA,GAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,MAAMA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,YAAYA,GAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAGM,IAAM,wCAAwCA,GAAE,OAAO;AAAA,EAC5D,QAAQA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAExB,SAASA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,IAAI;AACN,CAAC;AAGM,IAAM,yCAAyCA,GAAE,OAAO;AAAA,EAC7D,KAAKA,GAAE,OAAO;AAAA,EACd,MAAMA,GAAE,KAAK,0BAA0B;AAAA,EACvC,SAASA,GAAE,OAAO;AAAA,EAClB,SAASA,GAAE,OAAO;AAAA;AAAA,EAElB,UAAUA,GAAE,QAAQ;AAAA;AAAA,EAEpB,kBAAkBA,GAAE,QAAQ;AAAA;AAAA,EAE5B,OAAOA,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,OAAOA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,SAAS;AACtC,CAAC;AAGM,IAAM,uCAAuCA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AAGnF,IAAM,kCAAkCA,GAAE,OAAO;AAAA,EACtD,KAAKA,GAAE,OAAO;AAAA,EACd,MAAMA,GAAE,KAAK,0BAA0B;AAAA,EACvC,MAAMA,GAAE,OAAO;AAAA,EACf,SAASA,GAAE,OAAO;AAAA,EAClB,SAASA,GAAE,OAAO;AAAA,EAClB,UAAUA,GAAE,OAAO;AAAA,EACnB,QAAQ,kCAAkC,SAAS;AACrD,CAAC;AAEM,IAAM,wCAAwCA,GAAE,OAAO;AAAA,EAC5D,QAAQA,GAAE,KAAK,CAAC,QAAQ,UAAU,cAAc,WAAW,WAAW,CAAC;AAAA,EACvE,OAAOA,GAAE,OAAO;AAAA,EAChB,KAAKA,GAAE,MAAM,+BAA+B;AAAA,EAC5C,cAAcA,GAAE,OAAO,EAAE,SAAS;AACpC,CAAC;AAGM,IAAM,yCAAyCA,GAAE,OAAO;AAAA,EAC7D,QAAQA,GAAE,OAAO,EAAE,IAAI,CAAC;AAAA;AAAA,EAExB,KAAKA,GAAE,OAAO,EAAE,IAAI,CAAC;AACvB,CAAC;AAGM,IAAM,0CAA0CA,GAAE,OAAO,EAAE,SAASA,GAAE,MAAMA,GAAE,OAAO,CAAC,EAAE,CAAC;AAGzF,IAAM,wCAAwCA,GAAE,OAAO,EAAE,QAAQA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AAGpF,IAAM,yCAAyCA,GAAE,OAAO,EAAE,SAASA,GAAE,OAAO,EAAE,CAAC;;;AC5OtF,SAAuB,iBAAAC,sBAAqB;AAiB5C,IAAM,aAAa;AAAA,EACjB,CAAC,cAAc,YAAY;AAAA,EAC3B,CAAC,cAAc,YAAY;AAAA,EAC3B,CAAC,gBAAgB,cAAc;AAAA,EAC/B,CAAC,eAAe,aAAa;AAAA,EAC7B,CAAC,YAAY,UAAU;AACzB;AAEA,SAAS,KAAK,OAAoC;AAChD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,IAAI;AAC3E;AAGA,SAAS,UAAU,OAAsC;AACvD,QAAMC,OAAM,KAAK,KAAK;AACtB,SAAOA,SAAQ,SACX,SACAA,KACG,MAAM,GAAG,EACT,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,CAAC,SAAS,SAAS,EAAE;AACrC;AAEA,SAAS,QAAQ,SAA2D;AAC1E,SAAO,OAAO,YAAY,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS,CAAC;AAC9F;AAGO,SAAS,iBAAiB,MAA+B,MAAkC;AAChG,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,UAAI,KAAK,QAAQ,MAAM;AACrB,eAAO,WAAW,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,MAAM,OAAO,MAAM,QAAQ,QAAQ,EAAE;AAAA,MACtF;AACA,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,GAAG,QAAQ;AAAA,YACT,OAAO,KAAK,KAAK,KAAK;AAAA,YACtB,MAAM,KAAK,KAAK,IAAI;AAAA,YACpB,SAAS,KAAK,KAAK,OAAO;AAAA,YAC1B,SAAS,UAAU,KAAK,OAAO;AAAA,YAC/B,aAAa,KAAK,KAAK,WAAW;AAAA,UACpC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,KAAK;AAAA,IACL,KAAK;AACH,aAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,MAAM,KAAK,KAAK,IAAI,GAAG,aAAa,KAAK,KAAK,WAAW,EAAE,CAAC,EAAE,CAAC;AAAA,IAC9F;AACE,aAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA,GAAG,QAAQ,EAAE,OAAO,KAAK,KAAK,KAAK,GAAG,UAAU,KAAK,KAAK,QAAQ,GAAG,QAAQ,UAAU,KAAK,MAAM,EAAE,CAAC;AAAA,QACvG;AAAA,MACF;AAAA,EACJ;AACF;AAEA,IAAM,cACJ;AAEF,eAAe,MAAM,MAA+B,MAAgC;AAClF,QAAM,SAAS,cAAc;AAC7B,QAAM,UAAU,KAAK,KAAK,OAAO;AACjC,MAAI;AACF,UAAM,SAA6C,CAAC;AACpD,eAAW,MAAM,iBAAiB,MAAM,IAAI,GAAG;AAC7C,aAAO;AAAA,QACL,MAAM,QAA0C,mCAAmC;AAAA,UACjF;AAAA,UACA,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,UAC7B;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AACA,UAAM,QAAQ,CAAC,GAAG,IAAI,IAAI,OAAO,QAAQ,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC;AACvE,UAAM,QAAQ,OAAO,QAAQ,CAAC,UAAW,MAAM,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAE;AAC1E,QAAI,MAAM,SAAS,GAAG;AACpB,YAAM;AAAA,QACJ,yDAAyD,MAAM,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,MACtG;AAAA,IACF;AACA,QAAI,OAAO,KAAK,CAAC,UAAU,MAAM,gBAAgB,GAAG;AAClD,YAAM,KAAK,+FAA+F;AAAA,IAC5G;AACA,UAAM,OAAO,OAAO,IAAI,CAAC,EAAE,OAAO,QAAQ,GAAG,MAAM,MAAM,KAAK;AAC9D,cAAU,EAAE,IAAI,MAAM,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,MAAM,OAAO,CAAC,aAAa,GAAG,KAAK,EAAE,CAAC;AAAA,EAClG,SAAS,KAAK;AACZ,uBAAmB,GAAG;AAAA,EACxB;AACF;AAEA,IAAM,cAAc;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ;AAEA,IAAM,aAAa;AAAA,EACjB,OAAO,EAAE,MAAM,UAAU,aAAa,kDAAkD,UAAU,MAAM;AAAA,EACxG,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa,GAAG,qCAAqC,KAAK,GAAG,CAAC;AAAA,IAC9D,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EACA,aAAa,EAAE,MAAM,UAAU,aAAa,kCAAkC,UAAU,MAAM;AAAA,EAC9F,KAAK;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EACA,SAAS;AACX;AAEA,IAAM,aAAa;AAAA,EACjB,MAAM,EAAE,MAAM,UAAU,aAAa,8BAA8B,UAAU,MAAM;AAAA,EACnF,aAAa,EAAE,MAAM,UAAU,aAAa,wBAAwB,UAAU,MAAM;AAAA,EACpF,SAAS;AACX;AAEA,IAAM,gBAAgB;AAAA,EACpB,OAAO,EAAE,MAAM,UAAU,aAAa,uCAAuC,UAAU,MAAM;AAAA,EAC7F,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,aACE;AAAA,IACF,UAAU;AAAA,EACZ;AAAA,EACA,UAAU,EAAE,MAAM,UAAU,aAAa,8CAA8C,UAAU,MAAM;AAAA,EACvG,SAAS;AACX;AAEA,IAAM,eAAwD;AAAA,EAC5D,OACE;AAAA,EACF,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UACE;AACJ;AAEA,SAAS,WAAW,MAAyF;AAC3G,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,IAAI,EAAE,IAAI,CAAC,CAACC,OAAM,GAAG,MAAM;AAAA,MACxCA;AAAA,MACA,EAAE,MAAM,IAAI,QAAQ,UAAU,aAAa,IAAI,eAAe,IAAI,UAAU,IAAI,aAAa,KAAK;AAAA,IACpG,CAAC;AAAA,EACH;AACF;AAEA,SAAS,aAAa,MAA+B,MAAe;AAClE,iBAAe,EAAE,SAAS,wBAAwB,IAAI,IAAI,aAAa,aAAa,IAAI,GAAG,MAAM,WAAW,IAAI,EAAE,CAAC;AACnH,SAAOC,eAAc;AAAA,IACnB,MAAM,EAAE,MAAM,MAAM,aAAa,aAAa,IAAI,EAAE;AAAA,IACpD;AAAA,IACA,KAAK,OAAO,EAAE,MAAM,OAAO,MAAM;AAC/B,YAAM,MAAM,MAAM,MAAmB;AAAA,IACvC;AAAA,EACF,CAAC;AACH;AAEO,IAAM,oBAAoBA,eAAc;AAAA,EAC7C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,aAAa;AAAA,IACX,OAAO,aAAa,SAAS,UAAU;AAAA,IACvC,MAAM,aAAa,QAAQ,UAAU;AAAA,IACrC,KAAK,aAAa,OAAO,UAAU;AAAA,IACnC,UAAU,aAAa,YAAY,aAAa;AAAA,EAClD;AACF,CAAC;;;AC3MD,SAAS,iBAAAC,sBAAqB;AAO9B,IAAMC,eACJ;AAEF,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAaA;AAAA,EACb,MAAM;AAAA,IACJ,KAAK,EAAE,MAAM,cAAc,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAClG,KAAK,EAAE,MAAM,WAAW,aAAa,wDAAwD,UAAU,MAAM;AAAA,EAC/G;AACF,CAAC;AAEM,IAAM,iBAAiBC,eAAc;AAAA,EAC1C,MAAM,EAAE,MAAM,WAAW,aAAaD,aAAY;AAAA,EAClD,MAAM;AAAA,IACJ,KAAK,EAAE,MAAM,cAAc,aAAa,0CAA0C,UAAU,MAAM;AAAA,IAClG,KAAK,EAAE,MAAM,WAAW,aAAa,wDAAwD,UAAU,MAAM;AAAA,EAC/G;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,cAAc;AAC7B,QAAI;AACF,UAAI,KAAK,QAAQ,MAAM;AACrB,cAAME,QAAO,MAAM,QAA0C,mCAAmC,EAAE,OAAO,CAAC;AAC1G,kBAAU,EAAE,IAAI,MAAM,MAAAA,MAAK,CAAC;AAC5B;AAAA,MACF;AACA,YAAM,MAAM,OAAO,KAAK,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI;AAC7D,UAAI,CAAC,KAAK;AACR,kBAAU;AAAA,UACR,IAAI;AAAA,UACJ,OAAO,EAAE,MAAM,oBAAoB,SAAS,yDAAyD;AAAA,QACvG,CAAC;AACD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,YAAM,OAAO,MAAM,QAA2C,oCAAoC;AAAA,QAChG;AAAA,QACA;AAAA,MACF,CAAC;AACD,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,QACA,GAAI,KAAK,QAAQ,WAAW,IACxB,EAAE,OAAO,CAAC,2BAA2B,GAAG,yDAAyD,EAAE,IACnG,CAAC;AAAA,MACP,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,yBAAmB,GAAG;AAAA,IACxB;AAAA,EACF;AACF,CAAC;;;APtDM,IAAM,wBAAwBC,eAAc;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBf;AAAA,EACA,aAAa;AAAA,IACX,GAAG;AAAA,IACH,OAAO;AAAA,IACP,SAAS;AAAA,IACT,QAAQ;AAAA,EACV;AACF,CAAC;","names":["defineCommand","defineCommand","limit","defineCommand","z","stage","z","defineCommand","raw","name","defineCommand","defineCommand","DESCRIPTION","defineCommand","data","defineCommand"]}
@@ -1,105 +0,0 @@
1
- import {
2
- compactSource,
3
- reportError
4
- } from "./chunk-CYSBNCPX.js";
5
- import {
6
- mediaSourcePlatformSchema,
7
- mediaSourceRefreshIntervalSchema,
8
- mediaSourcesAddRequestSchema
9
- } from "./chunk-GXDLWBOY.js";
10
- import {
11
- apiPost
12
- } from "./chunk-6YLNY6CK.js";
13
- import "./chunk-D5NEIESR.js";
14
- import "./chunk-57KKVDDR.js";
15
- import {
16
- registerSchema,
17
- writeJson
18
- } from "./chunk-QANGHND7.js";
19
- import "./chunk-YQSBHWOI.js";
20
-
21
- // src/commands/media-sources/add.ts
22
- import { defineCommand } from "citty";
23
- registerSchema({
24
- command: "media-sources.add",
25
- description: "Connect a public social account as a source for the image and video libraries \u2014 Instagram, TikTok, YouTube (videos only), LinkedIn company pages, Facebook pages. Its recent posts (up to a year back) are imported. A Google Drive folder is not added here: ask for it with request_connection (platform google-drive, choose media-folder) and the user picks it in the chat. Everything is described and made searchable in the background. Applies immediately and shows on the chat as an already-applied change. Adding a source that is already connected is a no-op.",
26
- args: {
27
- input: {
28
- type: "string",
29
- description: "Profile URL (names its own platform), or @handle together with --platform",
30
- required: true
31
- },
32
- platform: {
33
- type: "string",
34
- description: `Needed only for a bare handle: ${mediaSourcePlatformSchema.options.join("|")}`,
35
- required: false
36
- },
37
- every: {
38
- type: "string",
39
- description: `Auto-sync cadence: ${mediaSourceRefreshIntervalSchema.options.join("|")} (default weekly for every source)`,
40
- required: false
41
- }
42
- }
43
- });
44
- var addCommand = defineCommand({
45
- meta: {
46
- name: "add",
47
- description: "Connect a social account (Instagram, TikTok, YouTube, LinkedIn page, Facebook page) as a media source. Start here with the profile URL. A Google Drive folder is never added by link: call request_connection with platform google-drive and choose media-folder, and the user picks the folder in the chat.\n\nExamples:\n baker media-sources add https://www.tiktok.com/@acme\n baker media-sources add @acme --platform instagram --every daily"
48
- },
49
- args: {
50
- input: { type: "positional", description: "Profile URL or @handle", required: true },
51
- platform: {
52
- type: "string",
53
- description: "instagram|tiktok|youtube|linkedin|facebook \u2014 only for a bare handle",
54
- required: false
55
- },
56
- every: { type: "string", description: "Auto-sync: never|daily|weekly|monthly", required: false }
57
- },
58
- run: async ({ args }) => {
59
- const parsed = mediaSourcesAddRequestSchema.safeParse({
60
- input: String(args.input ?? ""),
61
- platform: args.platform ? String(args.platform).toLowerCase() : void 0,
62
- every: args.every ? String(args.every).toLowerCase() : void 0
63
- });
64
- if (!parsed.success) {
65
- const issue = parsed.error.issues[0];
66
- writeJson({
67
- ok: false,
68
- error: {
69
- code: "VALIDATION_ERROR",
70
- message: issue ? `${issue.path.join(".") || "input"}: ${issue.message}` : "Invalid request"
71
- }
72
- });
73
- process.exit(1);
74
- }
75
- try {
76
- const data = await apiPost("/api/media-sources/add", parsed.data, {
77
- timeoutMs: 12e4
78
- });
79
- const hints = [
80
- data.created ? `Connected ${data.source.label} on ${data.source.platformLabel}. Its posts are importing in the background \u2014 they become searchable with \`baker images search\` / \`baker videos search\` as each one is analysed. Check progress with \`baker media-sources list\`.` : `${data.source.label} on ${data.source.platformLabel} was already connected; a fresh import was started if one wasn't running.`
81
- ];
82
- if (data.source.platform === "youtube") {
83
- hints.push(
84
- "YouTube feeds the video library only, newest first, a batch per sync; videos over 20 minutes are skipped."
85
- );
86
- }
87
- if (data.source.refreshInterval === "never") {
88
- hints.push(
89
- `Auto-sync is off. If the user wants new posts to keep arriving: \`baker media-sources schedule ${data.source.key} --every weekly\`.`
90
- );
91
- }
92
- writeJson({
93
- ok: true,
94
- data: { created: data.created, source: compactSource(data.source), name: data.profile.displayName },
95
- hints
96
- });
97
- } catch (err) {
98
- reportError(err, parsed.data.input);
99
- }
100
- }
101
- });
102
- export {
103
- addCommand
104
- };
105
- //# sourceMappingURL=add-2F7BEVYD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/media-sources/add.ts"],"sourcesContent":["import {\n type MediaSourcesAddResponse,\n mediaSourcePlatformSchema,\n mediaSourceRefreshIntervalSchema,\n mediaSourcesAddRequestSchema,\n} from \"@baker/api/media-sources\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { compactSource, reportError } from \"./shared.ts\";\n\nregisterSchema({\n command: \"media-sources.add\",\n description:\n \"Connect a public social account as a source for the image and video libraries — Instagram, TikTok, YouTube (videos only), LinkedIn company pages, Facebook pages. Its recent posts (up to a year back) are imported. A Google Drive folder is not added here: ask for it with request_connection (platform google-drive, choose media-folder) and the user picks it in the chat. Everything is described and made searchable in the background. Applies immediately and shows on the chat as an already-applied change. Adding a source that is already connected is a no-op.\",\n args: {\n input: {\n type: \"string\",\n description: \"Profile URL (names its own platform), or @handle together with --platform\",\n required: true,\n },\n platform: {\n type: \"string\",\n description: `Needed only for a bare handle: ${mediaSourcePlatformSchema.options.join(\"|\")}`,\n required: false,\n },\n every: {\n type: \"string\",\n description: `Auto-sync cadence: ${mediaSourceRefreshIntervalSchema.options.join(\"|\")} (default weekly for every source)`,\n required: false,\n },\n },\n});\n\nexport const addCommand = defineCommand({\n meta: {\n name: \"add\",\n description:\n \"Connect a social account (Instagram, TikTok, YouTube, LinkedIn page, Facebook page) as a media source. Start here with the profile URL. A Google Drive folder is never added by link: call request_connection with platform google-drive and choose media-folder, and the user picks the folder in the chat.\\n\\nExamples:\\n baker media-sources add https://www.tiktok.com/@acme\\n baker media-sources add @acme --platform instagram --every daily\",\n },\n args: {\n input: { type: \"positional\", description: \"Profile URL or @handle\", required: true },\n platform: {\n type: \"string\",\n description: \"instagram|tiktok|youtube|linkedin|facebook — only for a bare handle\",\n required: false,\n },\n every: { type: \"string\", description: \"Auto-sync: never|daily|weekly|monthly\", required: false },\n },\n run: async ({ args }) => {\n const parsed = mediaSourcesAddRequestSchema.safeParse({\n input: String(args.input ?? \"\"),\n platform: args.platform ? String(args.platform).toLowerCase() : undefined,\n every: args.every ? String(args.every).toLowerCase() : undefined,\n });\n if (!parsed.success) {\n const issue = parsed.error.issues[0];\n writeJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: issue ? `${issue.path.join(\".\") || \"input\"}: ${issue.message}` : \"Invalid request\",\n },\n });\n process.exit(1);\n }\n\n try {\n const data = await apiPost<MediaSourcesAddResponse>(\"/api/media-sources/add\", parsed.data, {\n timeoutMs: 120_000,\n });\n const hints = [\n data.created\n ? `Connected ${data.source.label} on ${data.source.platformLabel}. Its posts are importing in the background — they become searchable with \\`baker images search\\` / \\`baker videos search\\` as each one is analysed. Check progress with \\`baker media-sources list\\`.`\n : `${data.source.label} on ${data.source.platformLabel} was already connected; a fresh import was started if one wasn't running.`,\n ];\n if (data.source.platform === \"youtube\") {\n hints.push(\n \"YouTube feeds the video library only, newest first, a batch per sync; videos over 20 minutes are skipped.\",\n );\n }\n if (data.source.refreshInterval === \"never\") {\n hints.push(\n `Auto-sync is off. If the user wants new posts to keep arriving: \\`baker media-sources schedule ${data.source.key} --every weekly\\`.`,\n );\n }\n writeJson({\n ok: true,\n data: { created: data.created, source: compactSource(data.source), name: data.profile.displayName },\n hints,\n });\n } catch (err) {\n reportError(err, parsed.data.input);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa,kCAAkC,0BAA0B,QAAQ,KAAK,GAAG,CAAC;AAAA,MAC1F,UAAU;AAAA,IACZ;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa,sBAAsB,iCAAiC,QAAQ,KAAK,GAAG,CAAC;AAAA,MACrF,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,aAAa,cAAc;AAAA,EACtC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,OAAO,EAAE,MAAM,cAAc,aAAa,0BAA0B,UAAU,KAAK;AAAA,IACnF,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,OAAO,EAAE,MAAM,UAAU,aAAa,yCAAyC,UAAU,MAAM;AAAA,EACjG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,6BAA6B,UAAU;AAAA,MACpD,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,MAC9B,UAAU,KAAK,WAAW,OAAO,KAAK,QAAQ,EAAE,YAAY,IAAI;AAAA,MAChE,OAAO,KAAK,QAAQ,OAAO,KAAK,KAAK,EAAE,YAAY,IAAI;AAAA,IACzD,CAAC;AACD,QAAI,CAAC,OAAO,SAAS;AACnB,YAAM,QAAQ,OAAO,MAAM,OAAO,CAAC;AACnC,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,QAAQ,GAAG,MAAM,KAAK,KAAK,GAAG,KAAK,OAAO,KAAK,MAAM,OAAO,KAAK;AAAA,QAC5E;AAAA,MACF,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,QAAI;AACF,YAAM,OAAO,MAAM,QAAiC,0BAA0B,OAAO,MAAM;AAAA,QACzF,WAAW;AAAA,MACb,CAAC;AACD,YAAM,QAAQ;AAAA,QACZ,KAAK,UACD,aAAa,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,aAAa,gNAC9D,GAAG,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,aAAa;AAAA,MAC1D;AACA,UAAI,KAAK,OAAO,aAAa,WAAW;AACtC,cAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA,UAAI,KAAK,OAAO,oBAAoB,SAAS;AAC3C,cAAM;AAAA,UACJ,kGAAkG,KAAK,OAAO,GAAG;AAAA,QACnH;AAAA,MACF;AACA,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ,MAAM,EAAE,SAAS,KAAK,SAAS,QAAQ,cAAc,KAAK,MAAM,GAAG,MAAM,KAAK,QAAQ,YAAY;AAAA,QAClG;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,kBAAY,KAAK,OAAO,KAAK,KAAK;AAAA,IACpC;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -1,104 +0,0 @@
1
- import {
2
- compactSource,
3
- reportError,
4
- reportInvalid
5
- } from "./chunk-RVTXDQYC.js";
6
- import {
7
- testimonialSourceRefreshIntervalSchema,
8
- testimonialSourceTypeSchema,
9
- testimonialSourcesAddRequestSchema
10
- } from "./chunk-DAO63OOP.js";
11
- import "./chunk-GXDLWBOY.js";
12
- import "./chunk-GIWHHCD6.js";
13
- import "./chunk-XQIOCIDO.js";
14
- import "./chunk-WTJSMYY2.js";
15
- import {
16
- apiPost
17
- } from "./chunk-6YLNY6CK.js";
18
- import "./chunk-D5NEIESR.js";
19
- import "./chunk-57KKVDDR.js";
20
- import {
21
- registerSchema,
22
- writeJson
23
- } from "./chunk-QANGHND7.js";
24
- import "./chunk-YQSBHWOI.js";
25
-
26
- // src/commands/testimonials/sources/add.ts
27
- import { defineCommand } from "citty";
28
- var SITES = testimonialSourceTypeSchema.options.join("|");
29
- registerSchema({
30
- command: "testimonials.sources.add",
31
- description: "Add a review page as a testimonial source \u2014 Google Maps, Trustpilot, Yelp, Tripadvisor, G2, Capterra, Amazon, App Store or Google Play. Pass the page's link (it names its own site), or a business name for Google Maps. Its reviews (up to 700) are imported, tagged and made searchable in the background over the next minutes. Each imported review costs a little, so add only the client's own listings the user asked for. Applies immediately and shows on the chat as an already-applied change. Adding a listing that is already a source is a no-op that starts a fresh import.",
32
- args: {
33
- input: {
34
- type: "string",
35
- description: "The review page's link, or a business name (Google Maps only)",
36
- required: true
37
- },
38
- platform: {
39
- type: "string",
40
- description: `Only to force a site: ${SITES}. A bare domain with trustpilot is that company's Trustpilot page.`,
41
- required: false
42
- },
43
- every: {
44
- type: "string",
45
- description: `Auto-sync cadence: ${testimonialSourceRefreshIntervalSchema.options.join("|")} (default never)`,
46
- required: false
47
- }
48
- }
49
- });
50
- function addSourceHints(input, { created, source }) {
51
- const hints = [
52
- created ? `Added ${source.label} on ${source.platformLabel}. Its reviews are importing in the background \u2014 they become searchable with \`baker testimonials search\` as each one is analysed, usually within a few minutes. Don't wait on them in this turn; check with \`baker testimonials sources list\`.` : `${source.label} on ${source.platformLabel} was already a source; a fresh import was started if one wasn't running.`
53
- ];
54
- if (created && source.platform === "google" && !/^https?:\/\/|\.[a-z]{2,}\//i.test(input.trim())) {
55
- hints.push(
56
- `Matched the name to ${source.label} on Google Maps (${source.pageUrl ?? "no link"}). If that is not the client's business, run \`baker testimonials sources remove ${source.id}\` at once and add the listing's Google Maps link instead.`
57
- );
58
- }
59
- if (source.refreshInterval === "never") {
60
- hints.push(
61
- `Auto-sync is off. If the user wants new reviews to keep arriving: \`baker testimonials sources schedule ${source.id} --every monthly\`.`
62
- );
63
- }
64
- return hints;
65
- }
66
- var addCommand = defineCommand({
67
- meta: {
68
- name: "add",
69
- description: `Add a review page as a testimonial source. Start here with the page's link; for Google Maps a business name also works.
70
-
71
- Examples:
72
- baker testimonials sources add https://www.yelp.com/biz/acme-bakery-madrid
73
- baker testimonials sources add https://www.g2.com/products/acme --every monthly
74
- baker testimonials sources add "Acme Bakery Madrid" # Google Maps, found by name
75
- baker testimonials sources add acme.com --platform trustpilot`
76
- },
77
- args: {
78
- input: { type: "positional", description: "Review page link, or a business name for Google Maps", required: true },
79
- platform: { type: "string", description: `Force a site: ${SITES}`, required: false },
80
- every: { type: "string", description: "Auto-sync: never|daily|weekly|monthly", required: false }
81
- },
82
- run: async ({ args }) => {
83
- const parsed = testimonialSourcesAddRequestSchema.safeParse({
84
- input: String(args.input ?? ""),
85
- platform: args.platform ? String(args.platform).toLowerCase().replace(/[\s-]/g, "_") : void 0,
86
- every: args.every ? String(args.every).toLowerCase() : void 0
87
- });
88
- if (!parsed.success) reportInvalid(parsed.error.issues[0]);
89
- try {
90
- const data = await apiPost("/api/testimonials/sources/add", parsed.data, {
91
- timeoutMs: 12e4
92
- });
93
- const hints = addSourceHints(parsed.data.input, data);
94
- writeJson({ ok: true, data: { created: data.created, source: compactSource(data.source) }, hints });
95
- } catch (err) {
96
- reportError(err);
97
- }
98
- }
99
- });
100
- export {
101
- addCommand,
102
- addSourceHints
103
- };
104
- //# sourceMappingURL=add-6K6LO7CM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/testimonials/sources/add.ts"],"sourcesContent":["import {\n type TestimonialSourcesAddResponse,\n testimonialSourceRefreshIntervalSchema,\n testimonialSourcesAddRequestSchema,\n testimonialSourceTypeSchema,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeJson } from \"../../../output.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { compactSource, reportError, reportInvalid } from \"./shared.ts\";\n\nconst SITES = testimonialSourceTypeSchema.options.join(\"|\");\n\nregisterSchema({\n command: \"testimonials.sources.add\",\n description:\n \"Add a review page as a testimonial source — Google Maps, Trustpilot, Yelp, Tripadvisor, G2, Capterra, Amazon, App Store or Google Play. Pass the page's link (it names its own site), or a business name for Google Maps. Its reviews (up to 700) are imported, tagged and made searchable in the background over the next minutes. Each imported review costs a little, so add only the client's own listings the user asked for. Applies immediately and shows on the chat as an already-applied change. Adding a listing that is already a source is a no-op that starts a fresh import.\",\n args: {\n input: {\n type: \"string\",\n description: \"The review page's link, or a business name (Google Maps only)\",\n required: true,\n },\n platform: {\n type: \"string\",\n description: `Only to force a site: ${SITES}. A bare domain with trustpilot is that company's Trustpilot page.`,\n required: false,\n },\n every: {\n type: \"string\",\n description: `Auto-sync cadence: ${testimonialSourceRefreshIntervalSchema.options.join(\"|\")} (default never)`,\n required: false,\n },\n },\n});\n\n/** What the agent should know after an add: that it runs on without it, and what to check. */\nexport function addSourceHints(input: string, { created, source }: TestimonialSourcesAddResponse): string[] {\n const hints = [\n created\n ? `Added ${source.label} on ${source.platformLabel}. Its reviews are importing in the background — they become searchable with \\`baker testimonials search\\` as each one is analysed, usually within a few minutes. Don't wait on them in this turn; check with \\`baker testimonials sources list\\`.`\n : `${source.label} on ${source.platformLabel} was already a source; a fresh import was started if one wasn't running.`,\n ];\n if (created && source.platform === \"google\" && !/^https?:\\/\\/|\\.[a-z]{2,}\\//i.test(input.trim())) {\n hints.push(\n `Matched the name to ${source.label} on Google Maps (${source.pageUrl ?? \"no link\"}). If that is not the client's business, run \\`baker testimonials sources remove ${source.id}\\` at once and add the listing's Google Maps link instead.`,\n );\n }\n if (source.refreshInterval === \"never\") {\n hints.push(\n `Auto-sync is off. If the user wants new reviews to keep arriving: \\`baker testimonials sources schedule ${source.id} --every monthly\\`.`,\n );\n }\n return hints;\n}\n\nexport const addCommand = defineCommand({\n meta: {\n name: \"add\",\n description: `Add a review page as a testimonial source. Start here with the page's link; for Google Maps a business name also works.\n\nExamples:\n baker testimonials sources add https://www.yelp.com/biz/acme-bakery-madrid\n baker testimonials sources add https://www.g2.com/products/acme --every monthly\n baker testimonials sources add \"Acme Bakery Madrid\" # Google Maps, found by name\n baker testimonials sources add acme.com --platform trustpilot`,\n },\n args: {\n input: { type: \"positional\", description: \"Review page link, or a business name for Google Maps\", required: true },\n platform: { type: \"string\", description: `Force a site: ${SITES}`, required: false },\n every: { type: \"string\", description: \"Auto-sync: never|daily|weekly|monthly\", required: false },\n },\n run: async ({ args }) => {\n const parsed = testimonialSourcesAddRequestSchema.safeParse({\n input: String(args.input ?? \"\"),\n platform: args.platform ? String(args.platform).toLowerCase().replace(/[\\s-]/g, \"_\") : undefined,\n every: args.every ? String(args.every).toLowerCase() : undefined,\n });\n if (!parsed.success) reportInvalid(parsed.error.issues[0]);\n\n try {\n const data = await apiPost<TestimonialSourcesAddResponse>(\"/api/testimonials/sources/add\", parsed.data, {\n timeoutMs: 120_000,\n });\n const hints = addSourceHints(parsed.data.input, data);\n writeJson({ ok: true, data: { created: data.created, source: compactSource(data.source) }, hints });\n } catch (err) {\n reportError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,qBAAqB;AAM9B,IAAM,QAAQ,4BAA4B,QAAQ,KAAK,GAAG;AAE1D,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa,yBAAyB,KAAK;AAAA,MAC3C,UAAU;AAAA,IACZ;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa,sBAAsB,uCAAuC,QAAQ,KAAK,GAAG,CAAC;AAAA,MAC3F,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAGM,SAAS,eAAe,OAAe,EAAE,SAAS,OAAO,GAA4C;AAC1G,QAAM,QAAQ;AAAA,IACZ,UACI,SAAS,OAAO,KAAK,OAAO,OAAO,aAAa,2PAChD,GAAG,OAAO,KAAK,OAAO,OAAO,aAAa;AAAA,EAChD;AACA,MAAI,WAAW,OAAO,aAAa,YAAY,CAAC,8BAA8B,KAAK,MAAM,KAAK,CAAC,GAAG;AAChG,UAAM;AAAA,MACJ,uBAAuB,OAAO,KAAK,oBAAoB,OAAO,WAAW,SAAS,oFAAoF,OAAO,EAAE;AAAA,IACjL;AAAA,EACF;AACA,MAAI,OAAO,oBAAoB,SAAS;AACtC,UAAM;AAAA,MACJ,2GAA2G,OAAO,EAAE;AAAA,IACtH;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAa,cAAc;AAAA,EACtC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOf;AAAA,EACA,MAAM;AAAA,IACJ,OAAO,EAAE,MAAM,cAAc,aAAa,wDAAwD,UAAU,KAAK;AAAA,IACjH,UAAU,EAAE,MAAM,UAAU,aAAa,iBAAiB,KAAK,IAAI,UAAU,MAAM;AAAA,IACnF,OAAO,EAAE,MAAM,UAAU,aAAa,yCAAyC,UAAU,MAAM;AAAA,EACjG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,mCAAmC,UAAU;AAAA,MAC1D,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,MAC9B,UAAU,KAAK,WAAW,OAAO,KAAK,QAAQ,EAAE,YAAY,EAAE,QAAQ,UAAU,GAAG,IAAI;AAAA,MACvF,OAAO,KAAK,QAAQ,OAAO,KAAK,KAAK,EAAE,YAAY,IAAI;AAAA,IACzD,CAAC;AACD,QAAI,CAAC,OAAO,QAAS,eAAc,OAAO,MAAM,OAAO,CAAC,CAAC;AAEzD,QAAI;AACF,YAAM,OAAO,MAAM,QAAuC,iCAAiC,OAAO,MAAM;AAAA,QACtG,WAAW;AAAA,MACb,CAAC;AACD,YAAM,QAAQ,eAAe,OAAO,KAAK,OAAO,IAAI;AACpD,gBAAU,EAAE,IAAI,MAAM,MAAM,EAAE,SAAS,KAAK,SAAS,QAAQ,cAAc,KAAK,MAAM,EAAE,GAAG,MAAM,CAAC;AAAA,IACpG,SAAS,KAAK;AACZ,kBAAY,GAAG;AAAA,IACjB;AAAA,EACF;AACF,CAAC;","names":[]}