@koda-sl/baker-cli 0.384.0-dev.4699b7308 → 0.384.0-dev.557795bef

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 (964) hide show
  1. package/README.md +1098 -217
  2. package/canvas/tiktok-captions-composition/index.html +5 -6
  3. package/canvas/tiktok-captions-composition/meta.json +5 -0
  4. package/dist/account-4UEZAY5T.js +49 -0
  5. package/dist/account-4UEZAY5T.js.map +1 -0
  6. package/dist/account-OINZG6UP.js +80 -0
  7. package/dist/account-OINZG6UP.js.map +1 -0
  8. package/dist/account-QMDCUUSG.js +79 -0
  9. package/dist/account-QMDCUUSG.js.map +1 -0
  10. package/dist/account-reads-ZKKDYHK5.js +218 -0
  11. package/dist/account-reads-ZKKDYHK5.js.map +1 -0
  12. package/dist/account-writes-N4JDIDRB.js +66 -0
  13. package/dist/account-writes-N4JDIDRB.js.map +1 -0
  14. package/dist/accounts-AEBQFCNH.js +114 -0
  15. package/dist/accounts-AEBQFCNH.js.map +1 -0
  16. package/dist/accounts-EBGJ2YO7.js +611 -0
  17. package/dist/accounts-EBGJ2YO7.js.map +1 -0
  18. package/dist/accounts-HP4BLKK5.js +75 -0
  19. package/dist/accounts-HP4BLKK5.js.map +1 -0
  20. package/dist/accounts-YE2SQ3UQ.js +77 -0
  21. package/dist/accounts-YE2SQ3UQ.js.map +1 -0
  22. package/dist/accounts-Z4CLGQXJ.js +115 -0
  23. package/dist/accounts-Z4CLGQXJ.js.map +1 -0
  24. package/dist/actions-ADRIEQZX.js +55 -0
  25. package/dist/actions-ADRIEQZX.js.map +1 -0
  26. package/dist/active-entities-YB46ADQN.js +103 -0
  27. package/dist/active-entities-YB46ADQN.js.map +1 -0
  28. package/dist/activities-DUAIQJLN.js +74 -0
  29. package/dist/activities-DUAIQJLN.js.map +1 -0
  30. package/dist/ad-group-writes-HL3EZ3BT.js +170 -0
  31. package/dist/ad-group-writes-HL3EZ3BT.js.map +1 -0
  32. package/dist/ad-groups-FGS5JJGN.js +68 -0
  33. package/dist/ad-groups-FGS5JJGN.js.map +1 -0
  34. package/dist/ad-writes-LX4ACUHB.js +174 -0
  35. package/dist/ad-writes-LX4ACUHB.js.map +1 -0
  36. package/dist/add-5CUXNOUM.js +97 -0
  37. package/dist/add-5CUXNOUM.js.map +1 -0
  38. package/dist/add-6OXOQNET.js +302 -0
  39. package/dist/add-6OXOQNET.js.map +1 -0
  40. package/dist/add-E66HBIZV.js +105 -0
  41. package/dist/add-E66HBIZV.js.map +1 -0
  42. package/dist/add-ROK3ETQC.js +104 -0
  43. package/dist/add-ROK3ETQC.js.map +1 -0
  44. package/dist/add-accounts-YME5SCXD.js +91 -0
  45. package/dist/add-accounts-YME5SCXD.js.map +1 -0
  46. package/dist/ads-65R3WMDU.js +128 -0
  47. package/dist/ads-65R3WMDU.js.map +1 -0
  48. package/dist/ads-O63J7BDF.js +113 -0
  49. package/dist/ads-O63J7BDF.js.map +1 -0
  50. package/dist/ads-TFZ5PXKS.js +77 -0
  51. package/dist/ads-TFZ5PXKS.js.map +1 -0
  52. package/dist/ads-XSVRH45E.js +40 -0
  53. package/dist/ads-XSVRH45E.js.map +1 -0
  54. package/dist/adsets-Y62JOOTV.js +176 -0
  55. package/dist/adsets-Y62JOOTV.js.map +1 -0
  56. package/dist/advertisers-AIC4QPEK.js +120 -0
  57. package/dist/advertisers-AIC4QPEK.js.map +1 -0
  58. package/dist/advertisers-LJ2HKJ4W.js +125 -0
  59. package/dist/advertisers-LJ2HKJ4W.js.map +1 -0
  60. package/dist/analytics-N4PGXXEQ.js +1976 -0
  61. package/dist/analytics-N4PGXXEQ.js.map +1 -0
  62. package/dist/analytics-X3DR3UVG.js +433 -0
  63. package/dist/analytics-X3DR3UVG.js.map +1 -0
  64. package/dist/animate-E3SKQ6SI.js +480 -0
  65. package/dist/animate-E3SKQ6SI.js.map +1 -0
  66. package/dist/assign-Y7HGSQVJ.js +77 -0
  67. package/dist/assign-Y7HGSQVJ.js.map +1 -0
  68. package/dist/audience-size-SWX5YJQF.js +94 -0
  69. package/dist/audience-size-SWX5YJQF.js.map +1 -0
  70. package/dist/audiences-5A6BCWSA.js +268 -0
  71. package/dist/audiences-5A6BCWSA.js.map +1 -0
  72. package/dist/audiences-6QOCASVV.js +78 -0
  73. package/dist/audiences-6QOCASVV.js.map +1 -0
  74. package/dist/audiences-O67NGIP5.js +85 -0
  75. package/dist/audiences-O67NGIP5.js.map +1 -0
  76. package/dist/audit-2KVLWSAI.js +151 -0
  77. package/dist/audit-2KVLWSAI.js.map +1 -0
  78. package/dist/audit-HWK24VXI.js +88 -0
  79. package/dist/audit-HWK24VXI.js.map +1 -0
  80. package/dist/autocomplete-JJSGC5WU.js +111 -0
  81. package/dist/autocomplete-JJSGC5WU.js.map +1 -0
  82. package/dist/avatars-XIEKQ77J.js +38 -0
  83. package/dist/avatars-XIEKQ77J.js.map +1 -0
  84. package/dist/bid-pricing-D2HGRWZL.js +99 -0
  85. package/dist/bid-pricing-D2HGRWZL.js.map +1 -0
  86. package/dist/brand-AYYWRGIE.js +22 -0
  87. package/dist/brand-AYYWRGIE.js.map +1 -0
  88. package/dist/brief-3HUIDK5F.js +490 -0
  89. package/dist/brief-3HUIDK5F.js.map +1 -0
  90. package/dist/businesses-65EWTK5E.js +53 -0
  91. package/dist/businesses-65EWTK5E.js.map +1 -0
  92. package/dist/campaign-groups-6HCYR2JX.js +95 -0
  93. package/dist/campaign-groups-6HCYR2JX.js.map +1 -0
  94. package/dist/campaign-writes-M6JLF5AC.js +170 -0
  95. package/dist/campaign-writes-M6JLF5AC.js.map +1 -0
  96. package/dist/campaign-writes-Y6QPRQ4E.js +165 -0
  97. package/dist/campaign-writes-Y6QPRQ4E.js.map +1 -0
  98. package/dist/campaigns-6SM2ZSIH.js +76 -0
  99. package/dist/campaigns-6SM2ZSIH.js.map +1 -0
  100. package/dist/campaigns-7RKJZRY2.js +107 -0
  101. package/dist/campaigns-7RKJZRY2.js.map +1 -0
  102. package/dist/campaigns-KRI25JDZ.js +109 -0
  103. package/dist/campaigns-KRI25JDZ.js.map +1 -0
  104. package/dist/campaigns-TD7ZB5DG.js +110 -0
  105. package/dist/campaigns-TD7ZB5DG.js.map +1 -0
  106. package/dist/canvas-DMYY2DWI.js +46 -0
  107. package/dist/canvas-DMYY2DWI.js.map +1 -0
  108. package/dist/capabilities-3WJTXS2O.js +144 -0
  109. package/dist/capabilities-3WJTXS2O.js.map +1 -0
  110. package/dist/cards-7HRC4UQQ.js +85 -0
  111. package/dist/cards-7HRC4UQQ.js.map +1 -0
  112. package/dist/catalog-N6MDMIVL.js +64 -0
  113. package/dist/catalog-N6MDMIVL.js.map +1 -0
  114. package/dist/catalogs-PB46L7FH.js +128 -0
  115. package/dist/catalogs-PB46L7FH.js.map +1 -0
  116. package/dist/changes-SASUQK62.js +135 -0
  117. package/dist/changes-SASUQK62.js.map +1 -0
  118. package/dist/chatgpt-JKBSAG25.js +47 -0
  119. package/dist/chatgpt-JKBSAG25.js.map +1 -0
  120. package/dist/chats-WRVSQQB2.js +262 -0
  121. package/dist/chats-WRVSQQB2.js.map +1 -0
  122. package/dist/chunk-2FGKJY63.js +455 -0
  123. package/dist/chunk-2FGKJY63.js.map +1 -0
  124. package/dist/chunk-2GVXNKAE.js +42 -0
  125. package/dist/chunk-2GVXNKAE.js.map +1 -0
  126. package/dist/chunk-2J3PTIQB.js +479 -0
  127. package/dist/chunk-2J3PTIQB.js.map +1 -0
  128. package/dist/chunk-2J7XC2NO.js +346 -0
  129. package/dist/chunk-2J7XC2NO.js.map +1 -0
  130. package/dist/{chunk-VLUGGVJL.js → chunk-2UFRHW3T.js} +12 -4
  131. package/dist/chunk-2UFRHW3T.js.map +1 -0
  132. package/dist/chunk-2Y5V23PU.js +29 -0
  133. package/dist/chunk-2Y5V23PU.js.map +1 -0
  134. package/dist/chunk-3ACMDRSE.js +39 -0
  135. package/dist/chunk-3ACMDRSE.js.map +1 -0
  136. package/dist/chunk-3EWF7VII.js +1079 -0
  137. package/dist/chunk-3EWF7VII.js.map +1 -0
  138. package/dist/chunk-3LYMIKKN.js +625 -0
  139. package/dist/chunk-3LYMIKKN.js.map +1 -0
  140. package/dist/chunk-3M6RNCDD.js +26 -0
  141. package/dist/chunk-3M6RNCDD.js.map +1 -0
  142. package/dist/chunk-3MDO4RR2.js +310 -0
  143. package/dist/chunk-3MDO4RR2.js.map +1 -0
  144. package/dist/chunk-3NPOIHSX.js +6667 -0
  145. package/dist/chunk-3NPOIHSX.js.map +1 -0
  146. package/dist/chunk-3SK7TWGP.js +103 -0
  147. package/dist/chunk-3SK7TWGP.js.map +1 -0
  148. package/dist/chunk-3VXQYDJN.js +1743 -0
  149. package/dist/chunk-3VXQYDJN.js.map +1 -0
  150. package/dist/chunk-44VXKO65.js +106 -0
  151. package/dist/chunk-44VXKO65.js.map +1 -0
  152. package/dist/chunk-4NZ47VXO.js +137 -0
  153. package/dist/chunk-4NZ47VXO.js.map +1 -0
  154. package/dist/chunk-4X3UR372.js +225 -0
  155. package/dist/chunk-4X3UR372.js.map +1 -0
  156. package/dist/chunk-553XSIFW.js +304 -0
  157. package/dist/chunk-553XSIFW.js.map +1 -0
  158. package/dist/chunk-5FEBUCJU.js +25 -0
  159. package/dist/chunk-5FEBUCJU.js.map +1 -0
  160. package/dist/chunk-5HYSKH77.js +315 -0
  161. package/dist/chunk-5HYSKH77.js.map +1 -0
  162. package/dist/chunk-5MBPIONY.js +29 -0
  163. package/dist/chunk-5MBPIONY.js.map +1 -0
  164. package/dist/chunk-5UCP4EEQ.js +111 -0
  165. package/dist/chunk-5UCP4EEQ.js.map +1 -0
  166. package/dist/chunk-5VPJNNJL.js +494 -0
  167. package/dist/chunk-5VPJNNJL.js.map +1 -0
  168. package/dist/{chunk-VZEDAFAR.js → chunk-6YYSUISH.js} +47 -8
  169. package/dist/chunk-6YYSUISH.js.map +1 -0
  170. package/dist/chunk-7OHWEF3I.js +98 -0
  171. package/dist/chunk-7OHWEF3I.js.map +1 -0
  172. package/dist/chunk-A636XRD7.js +159 -0
  173. package/dist/chunk-A636XRD7.js.map +1 -0
  174. package/dist/chunk-A76FRBSF.js +297 -0
  175. package/dist/chunk-A76FRBSF.js.map +1 -0
  176. package/dist/chunk-AADVCEL4.js +817 -0
  177. package/dist/chunk-AADVCEL4.js.map +1 -0
  178. package/dist/chunk-AG62YO7C.js +96 -0
  179. package/dist/chunk-AG62YO7C.js.map +1 -0
  180. package/dist/chunk-AIRIT4GF.js +75 -0
  181. package/dist/chunk-AIRIT4GF.js.map +1 -0
  182. package/dist/chunk-AMCY5YCB.js +206 -0
  183. package/dist/chunk-AMCY5YCB.js.map +1 -0
  184. package/dist/chunk-AP3TP6VG.js +139 -0
  185. package/dist/chunk-AP3TP6VG.js.map +1 -0
  186. package/dist/chunk-APP475IQ.js +474 -0
  187. package/dist/chunk-APP475IQ.js.map +1 -0
  188. package/dist/chunk-AR7PU7BB.js +76 -0
  189. package/dist/chunk-AR7PU7BB.js.map +1 -0
  190. package/dist/chunk-B4S72KSS.js +172 -0
  191. package/dist/chunk-B4S72KSS.js.map +1 -0
  192. package/dist/chunk-BIPIL4QA.js +486 -0
  193. package/dist/chunk-BIPIL4QA.js.map +1 -0
  194. package/dist/chunk-BPUSL5Y2.js +58 -0
  195. package/dist/chunk-BPUSL5Y2.js.map +1 -0
  196. package/dist/chunk-BR32GHYD.js +65 -0
  197. package/dist/chunk-BR32GHYD.js.map +1 -0
  198. package/dist/chunk-CAMX6OHF.js +3182 -0
  199. package/dist/chunk-CAMX6OHF.js.map +1 -0
  200. package/dist/{chunk-MF7YA62W.js → chunk-CUL3VB4L.js} +10 -5
  201. package/dist/chunk-CUL3VB4L.js.map +1 -0
  202. package/dist/chunk-CVEY353K.js +66 -0
  203. package/dist/chunk-CVEY353K.js.map +1 -0
  204. package/dist/chunk-CWXADUKL.js +1599 -0
  205. package/dist/chunk-CWXADUKL.js.map +1 -0
  206. package/dist/chunk-D5FY4FAK.js +24 -0
  207. package/dist/chunk-D5FY4FAK.js.map +1 -0
  208. package/dist/chunk-DGCUPJZD.js +39 -0
  209. package/dist/chunk-DGCUPJZD.js.map +1 -0
  210. package/dist/chunk-DNCLWSHO.js +41 -0
  211. package/dist/chunk-DNCLWSHO.js.map +1 -0
  212. package/dist/chunk-DUPURL26.js +97 -0
  213. package/dist/chunk-DUPURL26.js.map +1 -0
  214. package/dist/chunk-E2ZOSNF5.js +96 -0
  215. package/dist/chunk-E2ZOSNF5.js.map +1 -0
  216. package/dist/chunk-E3HYHT7C.js +274 -0
  217. package/dist/chunk-E3HYHT7C.js.map +1 -0
  218. package/dist/chunk-EDLZGTGN.js +216 -0
  219. package/dist/chunk-EDLZGTGN.js.map +1 -0
  220. package/dist/chunk-EI5QN4UO.js +363 -0
  221. package/dist/chunk-EI5QN4UO.js.map +1 -0
  222. package/dist/{chunk-XHC4LMK4.js → chunk-EIGXX6KI.js} +16 -8
  223. package/dist/chunk-EIGXX6KI.js.map +1 -0
  224. package/dist/chunk-EPDE7ZRU.js +174 -0
  225. package/dist/chunk-EPDE7ZRU.js.map +1 -0
  226. package/dist/chunk-ERSX3MKH.js +34 -0
  227. package/dist/chunk-ERSX3MKH.js.map +1 -0
  228. package/dist/chunk-EVDRF4CI.js +509 -0
  229. package/dist/chunk-EVDRF4CI.js.map +1 -0
  230. package/dist/chunk-F4IEILTR.js +382 -0
  231. package/dist/chunk-F4IEILTR.js.map +1 -0
  232. package/dist/chunk-F7HRLPR5.js +67 -0
  233. package/dist/chunk-F7HRLPR5.js.map +1 -0
  234. package/dist/chunk-FEG6MN4H.js +84 -0
  235. package/dist/chunk-FEG6MN4H.js.map +1 -0
  236. package/dist/chunk-FKOECEVC.js +126 -0
  237. package/dist/chunk-FKOECEVC.js.map +1 -0
  238. package/dist/chunk-FMGW2NZI.js +106 -0
  239. package/dist/chunk-FMGW2NZI.js.map +1 -0
  240. package/dist/chunk-FPZKKNDK.js +98 -0
  241. package/dist/chunk-FPZKKNDK.js.map +1 -0
  242. package/dist/chunk-FUVCY63N.js +169 -0
  243. package/dist/chunk-FUVCY63N.js.map +1 -0
  244. package/dist/chunk-GBNJQNDS.js +19 -0
  245. package/dist/chunk-GBNJQNDS.js.map +1 -0
  246. package/dist/chunk-GIWHHCD6.js +145 -0
  247. package/dist/chunk-GIWHHCD6.js.map +1 -0
  248. package/dist/chunk-GOJXKIFQ.js +1605 -0
  249. package/dist/chunk-GOJXKIFQ.js.map +1 -0
  250. package/dist/chunk-GRQ2AXDX.js +9 -0
  251. package/dist/chunk-GRQ2AXDX.js.map +1 -0
  252. package/dist/chunk-GXDLWBOY.js +73 -0
  253. package/dist/chunk-GXDLWBOY.js.map +1 -0
  254. package/dist/chunk-HAE4WWFQ.js +455 -0
  255. package/dist/chunk-HAE4WWFQ.js.map +1 -0
  256. package/dist/chunk-I2DNBEV6.js +4227 -0
  257. package/dist/chunk-I2DNBEV6.js.map +1 -0
  258. package/dist/chunk-I4FTS5EE.js +455 -0
  259. package/dist/chunk-I4FTS5EE.js.map +1 -0
  260. package/dist/chunk-IELPT4K2.js +74 -0
  261. package/dist/chunk-IELPT4K2.js.map +1 -0
  262. package/dist/chunk-IJMWEO4P.js +57 -0
  263. package/dist/chunk-IJMWEO4P.js.map +1 -0
  264. package/dist/chunk-IREMSVKW.js +175 -0
  265. package/dist/chunk-IREMSVKW.js.map +1 -0
  266. package/dist/chunk-IVIJJXXT.js +62 -0
  267. package/dist/chunk-IVIJJXXT.js.map +1 -0
  268. package/dist/chunk-JD3W3ON7.js +188 -0
  269. package/dist/chunk-JD3W3ON7.js.map +1 -0
  270. package/dist/chunk-JLWBK3VC.js +5187 -0
  271. package/dist/chunk-JLWBK3VC.js.map +1 -0
  272. package/dist/chunk-JPK34QPS.js +134 -0
  273. package/dist/chunk-JPK34QPS.js.map +1 -0
  274. package/dist/chunk-JUY47NZ2.js +183 -0
  275. package/dist/chunk-JUY47NZ2.js.map +1 -0
  276. package/dist/chunk-JXMZEOHV.js +333 -0
  277. package/dist/chunk-JXMZEOHV.js.map +1 -0
  278. package/dist/chunk-K37K447U.js +51 -0
  279. package/dist/chunk-K37K447U.js.map +1 -0
  280. package/dist/chunk-K6TDB2KV.js +1442 -0
  281. package/dist/chunk-K6TDB2KV.js.map +1 -0
  282. package/dist/chunk-KIGGMKAE.js +66 -0
  283. package/dist/chunk-KIGGMKAE.js.map +1 -0
  284. package/dist/chunk-KKJ4KJCW.js +29 -0
  285. package/dist/chunk-KKJ4KJCW.js.map +1 -0
  286. package/dist/chunk-KONA5PSR.js +55 -0
  287. package/dist/chunk-KONA5PSR.js.map +1 -0
  288. package/dist/chunk-KVHRW7KO.js +60 -0
  289. package/dist/chunk-KVHRW7KO.js.map +1 -0
  290. package/dist/chunk-LA6PPSNA.js +65 -0
  291. package/dist/chunk-LA6PPSNA.js.map +1 -0
  292. package/dist/chunk-LKPJADL2.js +74 -0
  293. package/dist/chunk-LKPJADL2.js.map +1 -0
  294. package/dist/chunk-LWAEHLKV.js +74 -0
  295. package/dist/chunk-LWAEHLKV.js.map +1 -0
  296. package/dist/chunk-M6UNISGO.js +66 -0
  297. package/dist/chunk-M6UNISGO.js.map +1 -0
  298. package/dist/chunk-MIJAGBEP.js +23992 -0
  299. package/dist/chunk-MIJAGBEP.js.map +1 -0
  300. package/dist/chunk-MP4EXZ45.js +3151 -0
  301. package/dist/chunk-MP4EXZ45.js.map +1 -0
  302. package/dist/chunk-MYTDK3AL.js +2102 -0
  303. package/dist/chunk-MYTDK3AL.js.map +1 -0
  304. package/dist/chunk-MZQ5DX6S.js +125 -0
  305. package/dist/chunk-MZQ5DX6S.js.map +1 -0
  306. package/dist/chunk-NFSLRRIE.js +77 -0
  307. package/dist/chunk-NFSLRRIE.js.map +1 -0
  308. package/dist/chunk-NOK7MSVJ.js +533 -0
  309. package/dist/chunk-NOK7MSVJ.js.map +1 -0
  310. package/dist/chunk-NR5RZDAW.js +592 -0
  311. package/dist/chunk-NR5RZDAW.js.map +1 -0
  312. package/dist/chunk-O2EVJALZ.js +133 -0
  313. package/dist/chunk-O2EVJALZ.js.map +1 -0
  314. package/dist/chunk-O6UM5WWH.js +275 -0
  315. package/dist/chunk-O6UM5WWH.js.map +1 -0
  316. package/dist/chunk-O6XZIQXZ.js +6212 -0
  317. package/dist/chunk-O6XZIQXZ.js.map +1 -0
  318. package/dist/chunk-OIL6PU5W.js +35 -0
  319. package/dist/chunk-OIL6PU5W.js.map +1 -0
  320. package/dist/chunk-P4NSJS54.js +20 -0
  321. package/dist/chunk-P4NSJS54.js.map +1 -0
  322. package/dist/chunk-P5T7OZKV.js +26 -0
  323. package/dist/chunk-P5T7OZKV.js.map +1 -0
  324. package/dist/chunk-PFBQERWX.js +10 -0
  325. package/dist/chunk-PFBQERWX.js.map +1 -0
  326. package/dist/chunk-PSWVSLJU.js +56 -0
  327. package/dist/chunk-PSWVSLJU.js.map +1 -0
  328. package/dist/chunk-PY2NJ6XZ.js +191 -0
  329. package/dist/chunk-PY2NJ6XZ.js.map +1 -0
  330. package/dist/chunk-PZ4OM2LK.js +45 -0
  331. package/dist/chunk-PZ4OM2LK.js.map +1 -0
  332. package/dist/chunk-PZNOJ76W.js +541 -0
  333. package/dist/chunk-PZNOJ76W.js.map +1 -0
  334. package/dist/chunk-Q6ULQMWG.js +41 -0
  335. package/dist/chunk-Q6ULQMWG.js.map +1 -0
  336. package/dist/chunk-QKFD6PPX.js +57 -0
  337. package/dist/chunk-QKFD6PPX.js.map +1 -0
  338. package/dist/chunk-QMLGJ5OW.js +2891 -0
  339. package/dist/chunk-QMLGJ5OW.js.map +1 -0
  340. package/dist/chunk-R4TPDVBD.js +207 -0
  341. package/dist/chunk-R4TPDVBD.js.map +1 -0
  342. package/dist/chunk-R7QV5N2S.js +846 -0
  343. package/dist/chunk-R7QV5N2S.js.map +1 -0
  344. package/dist/chunk-RR3KT2E7.js +665 -0
  345. package/dist/chunk-RR3KT2E7.js.map +1 -0
  346. package/dist/chunk-SEPPFM5S.js +228 -0
  347. package/dist/chunk-SEPPFM5S.js.map +1 -0
  348. package/dist/chunk-SQ7DRYCC.js +150 -0
  349. package/dist/chunk-SQ7DRYCC.js.map +1 -0
  350. package/dist/chunk-SYULM665.js +610 -0
  351. package/dist/chunk-SYULM665.js.map +1 -0
  352. package/dist/chunk-TKT3OHZ6.js +170 -0
  353. package/dist/chunk-TKT3OHZ6.js.map +1 -0
  354. package/dist/chunk-TNOSX3PJ.js +136 -0
  355. package/dist/chunk-TNOSX3PJ.js.map +1 -0
  356. package/dist/chunk-TTVKI54A.js +160 -0
  357. package/dist/chunk-TTVKI54A.js.map +1 -0
  358. package/dist/chunk-U7ZVXFS3.js +23 -0
  359. package/dist/chunk-U7ZVXFS3.js.map +1 -0
  360. package/dist/chunk-UI6BKYQD.js +225 -0
  361. package/dist/chunk-UI6BKYQD.js.map +1 -0
  362. package/dist/chunk-UKLDW4UW.js +46 -0
  363. package/dist/chunk-UKLDW4UW.js.map +1 -0
  364. package/dist/chunk-V6XXXEXZ.js +76 -0
  365. package/dist/chunk-V6XXXEXZ.js.map +1 -0
  366. package/dist/chunk-V7BW2CIQ.js +92 -0
  367. package/dist/chunk-V7BW2CIQ.js.map +1 -0
  368. package/dist/chunk-VSU5R34H.js +76 -0
  369. package/dist/chunk-VSU5R34H.js.map +1 -0
  370. package/dist/chunk-W4SA4CMR.js +296 -0
  371. package/dist/chunk-W4SA4CMR.js.map +1 -0
  372. package/dist/chunk-WFUMNDCE.js +111 -0
  373. package/dist/chunk-WFUMNDCE.js.map +1 -0
  374. package/dist/chunk-WHWNXLTD.js +166 -0
  375. package/dist/chunk-WHWNXLTD.js.map +1 -0
  376. package/dist/chunk-WN4KX7GE.js +25 -0
  377. package/dist/chunk-WN4KX7GE.js.map +1 -0
  378. package/dist/chunk-XIY7P54H.js +84 -0
  379. package/dist/chunk-XIY7P54H.js.map +1 -0
  380. package/dist/chunk-YFPLNMPZ.js +337 -0
  381. package/dist/chunk-YFPLNMPZ.js.map +1 -0
  382. package/dist/chunk-YMBB4JBD.js +1830 -0
  383. package/dist/chunk-YMBB4JBD.js.map +1 -0
  384. package/dist/chunk-YQFM2P5W.js +197 -0
  385. package/dist/chunk-YQFM2P5W.js.map +1 -0
  386. package/dist/chunk-YQSBHWOI.js +41 -0
  387. package/dist/chunk-YTF3IVMF.js +149 -0
  388. package/dist/chunk-YTF3IVMF.js.map +1 -0
  389. package/dist/chunk-Z3ENMCFE.js +94 -0
  390. package/dist/chunk-Z3ENMCFE.js.map +1 -0
  391. package/dist/chunk-Z7MWSXLG.js +94 -0
  392. package/dist/chunk-Z7MWSXLG.js.map +1 -0
  393. package/dist/chunk-ZIXHS6AM.js +42 -0
  394. package/dist/chunk-ZIXHS6AM.js.map +1 -0
  395. package/dist/chunk-ZJ7TQUCU.js +4410 -0
  396. package/dist/chunk-ZJ7TQUCU.js.map +1 -0
  397. package/dist/chunk-ZNQRDLSS.js +52 -0
  398. package/dist/chunk-ZNQRDLSS.js.map +1 -0
  399. package/dist/claim-ROWH6JVB.js +197 -0
  400. package/dist/claim-ROWH6JVB.js.map +1 -0
  401. package/dist/cli.js +104 -69986
  402. package/dist/cli.js.map +1 -1
  403. package/dist/client-EURRWXPW.js +19 -0
  404. package/dist/code-FKQW7V7N.js +76 -0
  405. package/dist/code-FKQW7V7N.js.map +1 -0
  406. package/dist/companies-MD2MZKU6.js +195 -0
  407. package/dist/companies-MD2MZKU6.js.map +1 -0
  408. package/dist/complete-FCAJM6Z4.js +81 -0
  409. package/dist/complete-FCAJM6Z4.js.map +1 -0
  410. package/dist/config-OZOHIAOJ.js +88 -0
  411. package/dist/config-OZOHIAOJ.js.map +1 -0
  412. package/dist/connect-4YXFMXYX.js +42 -0
  413. package/dist/content-PCGSX2QU.js +85 -0
  414. package/dist/content-PCGSX2QU.js.map +1 -0
  415. package/dist/conversation-UX5NZ3IO.js +93 -0
  416. package/dist/conversation-UX5NZ3IO.js.map +1 -0
  417. package/dist/conversion-report-7QSWB2FY.js +125 -0
  418. package/dist/conversion-report-7QSWB2FY.js.map +1 -0
  419. package/dist/conversion-upload-command-XESIAQPU.js +438 -0
  420. package/dist/conversion-upload-command-XESIAQPU.js.map +1 -0
  421. package/dist/conversion-writes-BGOVLBS5.js +120 -0
  422. package/dist/conversion-writes-BGOVLBS5.js.map +1 -0
  423. package/dist/conversions-IYIWW4O7.js +76 -0
  424. package/dist/conversions-IYIWW4O7.js.map +1 -0
  425. package/dist/conversions-RLIJAE7E.js +135 -0
  426. package/dist/conversions-RLIJAE7E.js.map +1 -0
  427. package/dist/countries-5OBUVLLD.js +82 -0
  428. package/dist/countries-5OBUVLLD.js.map +1 -0
  429. package/dist/create-CUJLJUAQ.js +138 -0
  430. package/dist/create-CUJLJUAQ.js.map +1 -0
  431. package/dist/create-FENOT6DX.js +236 -0
  432. package/dist/create-FENOT6DX.js.map +1 -0
  433. package/dist/create-OFZQMOWO.js +59 -0
  434. package/dist/create-OFZQMOWO.js.map +1 -0
  435. package/dist/create-Z5SS2AWB.js +207 -0
  436. package/dist/create-Z5SS2AWB.js.map +1 -0
  437. package/dist/creatives-UJW2QBLH.js +182 -0
  438. package/dist/creatives-UJW2QBLH.js.map +1 -0
  439. package/dist/creatives-XI2DGQUZ.js +87 -0
  440. package/dist/creatives-XI2DGQUZ.js.map +1 -0
  441. package/dist/creatives-YLXQSROD.js +51 -0
  442. package/dist/creatives-YLXQSROD.js.map +1 -0
  443. package/dist/credentials-CH73QMD2.js +287 -0
  444. package/dist/credentials-CH73QMD2.js.map +1 -0
  445. package/dist/critique-C4WRQ4AJ.js +1449 -0
  446. package/dist/critique-C4WRQ4AJ.js.map +1 -0
  447. package/dist/critique-ZBNJ6MQ3.js +213 -0
  448. package/dist/critique-ZBNJ6MQ3.js.map +1 -0
  449. package/dist/crm-MJTT6GOJ.js +224 -0
  450. package/dist/crm-MJTT6GOJ.js.map +1 -0
  451. package/dist/crm-ZXHSEFYI.js +318 -0
  452. package/dist/crm-ZXHSEFYI.js.map +1 -0
  453. package/dist/crop-B52KIQ4O.js +113 -0
  454. package/dist/crop-B52KIQ4O.js.map +1 -0
  455. package/dist/currency-GGWF5DMU.js +88 -0
  456. package/dist/currency-GGWF5DMU.js.map +1 -0
  457. package/dist/custom-conversions-7WDBTC4X.js +125 -0
  458. package/dist/custom-conversions-7WDBTC4X.js.map +1 -0
  459. package/dist/customers-7E4HBSEY.js +56 -0
  460. package/dist/decide-PK7WNSQ2.js +199 -0
  461. package/dist/decide-PK7WNSQ2.js.map +1 -0
  462. package/dist/delete-56LKNEGA.js +71 -0
  463. package/dist/delete-56LKNEGA.js.map +1 -0
  464. package/dist/delete-DQY4ZSFN.js +54 -0
  465. package/dist/delete-DQY4ZSFN.js.map +1 -0
  466. package/dist/delete-EZ7HHOOD.js +69 -0
  467. package/dist/delete-EZ7HHOOD.js.map +1 -0
  468. package/dist/delete-JV4KAA6Y.js +66 -0
  469. package/dist/delete-JV4KAA6Y.js.map +1 -0
  470. package/dist/delete-YONJW4UZ.js +63 -0
  471. package/dist/delete-YONJW4UZ.js.map +1 -0
  472. package/dist/delete-YSYVFL6W.js +71 -0
  473. package/dist/delete-YSYVFL6W.js.map +1 -0
  474. package/dist/demographics-6N3TTYWC.js +138 -0
  475. package/dist/demographics-6N3TTYWC.js.map +1 -0
  476. package/dist/describe-AAVYIFE3.js +97 -0
  477. package/dist/describe-AAVYIFE3.js.map +1 -0
  478. package/dist/describe-UQFLWVFR.js +97 -0
  479. package/dist/describe-UQFLWVFR.js.map +1 -0
  480. package/dist/dimensions-QDXBG2XC.js +101 -0
  481. package/dist/dimensions-QDXBG2XC.js.map +1 -0
  482. package/dist/discard-S3NGGUSK.js +66 -0
  483. package/dist/discard-S3NGGUSK.js.map +1 -0
  484. package/dist/discover-6TEBPVNC.js +93 -0
  485. package/dist/discover-6TEBPVNC.js.map +1 -0
  486. package/dist/discover-SBZPB7T2.js +172 -0
  487. package/dist/discover-SBZPB7T2.js.map +1 -0
  488. package/dist/domain-AMAR76PB.js +98 -0
  489. package/dist/domain-AMAR76PB.js.map +1 -0
  490. package/dist/download-LV3GPOWV.js +299 -0
  491. package/dist/download-LV3GPOWV.js.map +1 -0
  492. package/dist/draft-6QZ7WMWM.js +217 -0
  493. package/dist/draft-6QZ7WMWM.js.map +1 -0
  494. package/dist/draft-DDFFTZ43.js +233 -0
  495. package/dist/draft-DDFFTZ43.js.map +1 -0
  496. package/dist/draft-FIKJXNIQ.js +281 -0
  497. package/dist/draft-FIKJXNIQ.js.map +1 -0
  498. package/dist/draft-GYGWTMBU.js +307 -0
  499. package/dist/draft-GYGWTMBU.js.map +1 -0
  500. package/dist/draft-KXL62WFS.js +328 -0
  501. package/dist/draft-KXL62WFS.js.map +1 -0
  502. package/dist/draft-N4LFPKTA.js +100 -0
  503. package/dist/draft-N4LFPKTA.js.map +1 -0
  504. package/dist/draft-POSLJCWG.js +306 -0
  505. package/dist/draft-POSLJCWG.js.map +1 -0
  506. package/dist/draft-XPO5RWST.js +103 -0
  507. package/dist/draft-XPO5RWST.js.map +1 -0
  508. package/dist/engine/index.d.ts +213 -127
  509. package/dist/engine/index.js +18 -4
  510. package/dist/{env-4P5HOGNA.js → env-TQ2XS2KY.js} +12 -2
  511. package/dist/env-TQ2XS2KY.js.map +1 -0
  512. package/dist/experiment-FQNKMORZ.js +1397 -0
  513. package/dist/experiment-FQNKMORZ.js.map +1 -0
  514. package/dist/export-4IZQZAPF.js +168 -0
  515. package/dist/export-4IZQZAPF.js.map +1 -0
  516. package/dist/extract-DZMGVQ7D.js +113 -0
  517. package/dist/extract-DZMGVQ7D.js.map +1 -0
  518. package/dist/facets-223V5P47.js +114 -0
  519. package/dist/facets-223V5P47.js.map +1 -0
  520. package/dist/favorites-DD2LNSTG.js +178 -0
  521. package/dist/favorites-DD2LNSTG.js.map +1 -0
  522. package/dist/feed-TUVFNX2U.js +177 -0
  523. package/dist/feed-TUVFNX2U.js.map +1 -0
  524. package/dist/feedback-MIW23MI2.js +66 -0
  525. package/dist/feedback-MIW23MI2.js.map +1 -0
  526. package/dist/feedback-record-RGKRKPGZ.js +175 -0
  527. package/dist/feedback-record-RGKRKPGZ.js.map +1 -0
  528. package/dist/fetch-O6UHNXWB.js +139 -0
  529. package/dist/fetch-O6UHNXWB.js.map +1 -0
  530. package/dist/fetch-TZ4UCMJK.js +176 -0
  531. package/dist/fetch-TZ4UCMJK.js.map +1 -0
  532. package/dist/find-4XKIBF4D.js +134 -0
  533. package/dist/find-4XKIBF4D.js.map +1 -0
  534. package/dist/fit-ODVVXV2Q.js +45 -0
  535. package/dist/fit-ODVVXV2Q.js.map +1 -0
  536. package/dist/flows-HVWBFZ7T.js +247 -0
  537. package/dist/flows-HVWBFZ7T.js.map +1 -0
  538. package/dist/follow-RCOXTZGY.js +94 -0
  539. package/dist/follow-RCOXTZGY.js.map +1 -0
  540. package/dist/follow-competitors-SQ5XBFTK.js +112 -0
  541. package/dist/follow-competitors-SQ5XBFTK.js.map +1 -0
  542. package/dist/following-VDU3BHC4.js +113 -0
  543. package/dist/following-VDU3BHC4.js.map +1 -0
  544. package/dist/fonts-NBIQAVQN.js +34 -0
  545. package/dist/fonts-NBIQAVQN.js.map +1 -0
  546. package/dist/forecast-2GJKBNBM.js +168 -0
  547. package/dist/forecast-2GJKBNBM.js.map +1 -0
  548. package/dist/forecast-76MUJBPO.js +104 -0
  549. package/dist/forecast-76MUJBPO.js.map +1 -0
  550. package/dist/funding-HTFVZLLG.js +85 -0
  551. package/dist/funding-HTFVZLLG.js.map +1 -0
  552. package/dist/funnel-FE2HIRVQ.js +394 -0
  553. package/dist/funnel-FE2HIRVQ.js.map +1 -0
  554. package/dist/ga4-2RC4EH7V.js +55 -0
  555. package/dist/ga4-2RC4EH7V.js.map +1 -0
  556. package/dist/generate-TPDOBCKQ.js +262 -0
  557. package/dist/generate-TPDOBCKQ.js.map +1 -0
  558. package/dist/get-6JNOVI27.js +56 -0
  559. package/dist/get-6JNOVI27.js.map +1 -0
  560. package/dist/get-FH2LIEYL.js +63 -0
  561. package/dist/get-FH2LIEYL.js.map +1 -0
  562. package/dist/get-GZLCDXXW.js +61 -0
  563. package/dist/get-GZLCDXXW.js.map +1 -0
  564. package/dist/get-KVAOPAQW.js +78 -0
  565. package/dist/get-KVAOPAQW.js.map +1 -0
  566. package/dist/get-TSPQYEKC.js +59 -0
  567. package/dist/get-TSPQYEKC.js.map +1 -0
  568. package/dist/get-TY3RXYNZ.js +63 -0
  569. package/dist/get-TY3RXYNZ.js.map +1 -0
  570. package/dist/get-VPW33XTN.js +92 -0
  571. package/dist/get-VPW33XTN.js.map +1 -0
  572. package/dist/gif-JFEYPFFI.js +94 -0
  573. package/dist/gif-JFEYPFFI.js.map +1 -0
  574. package/dist/google-R6RD4L6Z.js +136 -0
  575. package/dist/google-R6RD4L6Z.js.map +1 -0
  576. package/dist/google-VPQNRVIB.js +3190 -0
  577. package/dist/google-VPQNRVIB.js.map +1 -0
  578. package/dist/google-ads-JEQMNNMN.js +195 -0
  579. package/dist/google-ads-JEQMNNMN.js.map +1 -0
  580. package/dist/group-7AV6UL26.js +43 -0
  581. package/dist/group-7AV6UL26.js.map +1 -0
  582. package/dist/group-BVQZEZIC.js +43 -0
  583. package/dist/group-BVQZEZIC.js.map +1 -0
  584. package/dist/gsc-SQ42WAQE.js +30 -0
  585. package/dist/gsc-SQ42WAQE.js.map +1 -0
  586. package/dist/history-BNNHFURR.js +67 -0
  587. package/dist/history-BNNHFURR.js.map +1 -0
  588. package/dist/history-EHUQG4CE.js +133 -0
  589. package/dist/history-EHUQG4CE.js.map +1 -0
  590. package/dist/hubspot-JABE4USC.js +779 -0
  591. package/dist/hubspot-JABE4USC.js.map +1 -0
  592. package/dist/icon-OYTTSNSL.js +137 -0
  593. package/dist/icon-OYTTSNSL.js.map +1 -0
  594. package/dist/ideas-OD76WOQ3.js +32 -0
  595. package/dist/ideas-OD76WOQ3.js.map +1 -0
  596. package/dist/images-LY7AWWBK.js +90 -0
  597. package/dist/images-LY7AWWBK.js.map +1 -0
  598. package/dist/improve-W6GZNT2A.js +86 -0
  599. package/dist/improve-W6GZNT2A.js.map +1 -0
  600. package/dist/ingest-47WON6HT.js +23 -0
  601. package/dist/ingest-47WON6HT.js.map +1 -0
  602. package/dist/ingest-HDGGHBSJ.js +107 -0
  603. package/dist/ingest-HDGGHBSJ.js.map +1 -0
  604. package/dist/insights-IW7LGAWU.js +423 -0
  605. package/dist/insights-IW7LGAWU.js.map +1 -0
  606. package/dist/insights-QH54F56A.js +122 -0
  607. package/dist/insights-QH54F56A.js.map +1 -0
  608. package/dist/inspect-AJLG2HGL.js +189 -0
  609. package/dist/inspect-AJLG2HGL.js.map +1 -0
  610. package/dist/inspiration-RDQ3Y3N3.js +53 -0
  611. package/dist/inspiration-RDQ3Y3N3.js.map +1 -0
  612. package/dist/intent-5GSSCFZ2.js +95 -0
  613. package/dist/intent-5GSSCFZ2.js.map +1 -0
  614. package/dist/job-URVXJP75.js +202 -0
  615. package/dist/job-URVXJP75.js.map +1 -0
  616. package/dist/job-create-S4SECUVF.js +109 -0
  617. package/dist/job-create-S4SECUVF.js.map +1 -0
  618. package/dist/job-status-253SUCTJ.js +74 -0
  619. package/dist/job-status-253SUCTJ.js.map +1 -0
  620. package/dist/keep-GPSYDIGJ.js +78 -0
  621. package/dist/keep-GPSYDIGJ.js.map +1 -0
  622. package/dist/keyword-gap-NTFDX43B.js +130 -0
  623. package/dist/keyword-gap-NTFDX43B.js.map +1 -0
  624. package/dist/keyword-metrics-XSFLMBZX.js +197 -0
  625. package/dist/keyword-metrics-XSFLMBZX.js.map +1 -0
  626. package/dist/keywords-for-site-U4JLYXVE.js +128 -0
  627. package/dist/keywords-for-site-U4JLYXVE.js.map +1 -0
  628. package/dist/landing-AO72EGJ6.js +28 -0
  629. package/dist/landing-AO72EGJ6.js.map +1 -0
  630. package/dist/landings-NEF4PQL2.js +151 -0
  631. package/dist/landings-NEF4PQL2.js.map +1 -0
  632. package/dist/languages-3RDPPPTE.js +55 -0
  633. package/dist/languages-3RDPPPTE.js.map +1 -0
  634. package/dist/languages-CQX3YOIT.js +40 -0
  635. package/dist/languages-CQX3YOIT.js.map +1 -0
  636. package/dist/launches-GBHLJH5S.js +19 -0
  637. package/dist/launches-GBHLJH5S.js.map +1 -0
  638. package/dist/layerize-Q56C6LFG.js +190 -0
  639. package/dist/layerize-Q56C6LFG.js.map +1 -0
  640. package/dist/leads-JHUM6FYR.js +293 -0
  641. package/dist/leads-JHUM6FYR.js.map +1 -0
  642. package/dist/leads-UYZM2XQX.js +90 -0
  643. package/dist/leads-UYZM2XQX.js.map +1 -0
  644. package/dist/learn-D2KBGJHZ.js +203 -0
  645. package/dist/learn-D2KBGJHZ.js.map +1 -0
  646. package/dist/library-6VUFHTEK.js +109 -0
  647. package/dist/library-6VUFHTEK.js.map +1 -0
  648. package/dist/lighthouse-57U2GMPV.js +75 -0
  649. package/dist/lighthouse-57U2GMPV.js.map +1 -0
  650. package/dist/line-item-writes-R5GO6GTL.js +208 -0
  651. package/dist/line-item-writes-R5GO6GTL.js.map +1 -0
  652. package/dist/line-items-RBMH6YBZ.js +103 -0
  653. package/dist/line-items-RBMH6YBZ.js.map +1 -0
  654. package/dist/link-WS2RMCOP.js +64 -0
  655. package/dist/link-WS2RMCOP.js.map +1 -0
  656. package/dist/linkedin-FSIALZTS.js +1008 -0
  657. package/dist/linkedin-FSIALZTS.js.map +1 -0
  658. package/dist/list-2AE2Q4ZD.js +151 -0
  659. package/dist/list-2AE2Q4ZD.js.map +1 -0
  660. package/dist/list-E635Y6M4.js +303 -0
  661. package/dist/list-E635Y6M4.js.map +1 -0
  662. package/dist/list-G57ZO4PG.js +50 -0
  663. package/dist/list-G57ZO4PG.js.map +1 -0
  664. package/dist/list-JCSWZWDI.js +57 -0
  665. package/dist/list-JCSWZWDI.js.map +1 -0
  666. package/dist/list-KT6NXVLV.js +63 -0
  667. package/dist/list-KT6NXVLV.js.map +1 -0
  668. package/dist/list-RINCJOAC.js +76 -0
  669. package/dist/list-RINCJOAC.js.map +1 -0
  670. package/dist/list-SRNXHS6L.js +51 -0
  671. package/dist/list-SRNXHS6L.js.map +1 -0
  672. package/dist/list-YJSO4M5Q.js +65 -0
  673. package/dist/list-YJSO4M5Q.js.map +1 -0
  674. package/dist/locations-HW2Y5OJO.js +67 -0
  675. package/dist/locations-HW2Y5OJO.js.map +1 -0
  676. package/dist/locations-XOHI3VWI.js +40 -0
  677. package/dist/locations-XOHI3VWI.js.map +1 -0
  678. package/dist/log-3HX5BIO6.js +92 -0
  679. package/dist/log-3HX5BIO6.js.map +1 -0
  680. package/dist/logo-KXTGIYBI.js +18 -0
  681. package/dist/logo-KXTGIYBI.js.map +1 -0
  682. package/dist/lookup-X6O5UNJH.js +22 -0
  683. package/dist/lookup-X6O5UNJH.js.map +1 -0
  684. package/dist/make-QH77XOWM.js +633 -0
  685. package/dist/make-QH77XOWM.js.map +1 -0
  686. package/dist/map-QABBPYZM.js +404 -0
  687. package/dist/map-QABBPYZM.js.map +1 -0
  688. package/dist/mcp-HSD3W3OB.js +463 -0
  689. package/dist/mcp-HSD3W3OB.js.map +1 -0
  690. package/dist/media-MI4EE7L4.js +89 -0
  691. package/dist/media-MI4EE7L4.js.map +1 -0
  692. package/dist/media-QUTQOBA7.js +15 -0
  693. package/dist/media-QUTQOBA7.js.map +1 -0
  694. package/dist/media-sources-HO4DXRX5.js +32 -0
  695. package/dist/media-sources-HO4DXRX5.js.map +1 -0
  696. package/dist/members-YEYYJGY6.js +44 -0
  697. package/dist/members-YEYYJGY6.js.map +1 -0
  698. package/dist/meta-E3JOUOSS.js +69 -0
  699. package/dist/meta-E3JOUOSS.js.map +1 -0
  700. package/dist/metrics-HQ7XJAYQ.js +152 -0
  701. package/dist/metrics-HQ7XJAYQ.js.map +1 -0
  702. package/dist/models-PGX3FBHU.js +155 -0
  703. package/dist/models-PGX3FBHU.js.map +1 -0
  704. package/dist/normalize-FPJ6GSOY.js +806 -0
  705. package/dist/normalize-FPJ6GSOY.js.map +1 -0
  706. package/dist/normalize-GSQWN77S.js +141 -0
  707. package/dist/normalize-GSQWN77S.js.map +1 -0
  708. package/dist/options-F5XZMQLK.js +121 -0
  709. package/dist/options-F5XZMQLK.js.map +1 -0
  710. package/dist/output-GQFJ2T5B.js +24 -0
  711. package/dist/output-GQFJ2T5B.js.map +1 -0
  712. package/dist/page-VTTSBC6Y.js +105 -0
  713. package/dist/page-VTTSBC6Y.js.map +1 -0
  714. package/dist/pages-PMZVNVQM.js +66 -0
  715. package/dist/pages-PMZVNVQM.js.map +1 -0
  716. package/dist/performance-G67JQE5J.js +24 -0
  717. package/dist/performance-G67JQE5J.js.map +1 -0
  718. package/dist/pinterest-UDNGOWDM.js +96 -0
  719. package/dist/pinterest-UDNGOWDM.js.map +1 -0
  720. package/dist/pixels-OYZDGCH3.js +108 -0
  721. package/dist/pixels-OYZDGCH3.js.map +1 -0
  722. package/dist/pixels-XKGNTCFX.js +60 -0
  723. package/dist/pixels-XKGNTCFX.js.map +1 -0
  724. package/dist/plan-DZS3TVIJ.js +207 -0
  725. package/dist/plan-DZS3TVIJ.js.map +1 -0
  726. package/dist/preview-DR6MXOGI.js +169 -0
  727. package/dist/preview-DR6MXOGI.js.map +1 -0
  728. package/dist/profile-VOVZG44G.js +159 -0
  729. package/dist/profile-VOVZG44G.js.map +1 -0
  730. package/dist/promoted-tweet-writes-VCK2ADVJ.js +180 -0
  731. package/dist/promoted-tweet-writes-VCK2ADVJ.js.map +1 -0
  732. package/dist/promoted-tweets-4ACBP2RV.js +119 -0
  733. package/dist/promoted-tweets-4ACBP2RV.js.map +1 -0
  734. package/dist/properties-MKVF7MUK.js +101 -0
  735. package/dist/properties-MKVF7MUK.js.map +1 -0
  736. package/dist/publish-6XVA35T6.js +322 -0
  737. package/dist/publish-6XVA35T6.js.map +1 -0
  738. package/dist/query-CNWQ6STR.js +61 -0
  739. package/dist/query-CNWQ6STR.js.map +1 -0
  740. package/dist/query-DBSBZ73C.js +247 -0
  741. package/dist/query-DBSBZ73C.js.map +1 -0
  742. package/dist/query-QK4U4TEL.js +236 -0
  743. package/dist/query-QK4U4TEL.js.map +1 -0
  744. package/dist/questionnaire-OVJWNUVV.js +93 -0
  745. package/dist/questionnaire-OVJWNUVV.js.map +1 -0
  746. package/dist/read-L2QIVJTL.js +141 -0
  747. package/dist/read-L2QIVJTL.js.map +1 -0
  748. package/dist/reddit-SCEB2JQL.js +26 -0
  749. package/dist/reddit-SCEB2JQL.js.map +1 -0
  750. package/dist/refresh-TIH5Y3NP.js +94 -0
  751. package/dist/refresh-TIH5Y3NP.js.map +1 -0
  752. package/dist/release-LKMUKVXM.js +60 -0
  753. package/dist/release-LKMUKVXM.js.map +1 -0
  754. package/dist/relevant-pages-CRI2NLWG.js +99 -0
  755. package/dist/relevant-pages-CRI2NLWG.js.map +1 -0
  756. package/dist/remove-6ABOB7TZ.js +50 -0
  757. package/dist/remove-6ABOB7TZ.js.map +1 -0
  758. package/dist/remove-JKSCGKQG.js +48 -0
  759. package/dist/remove-JKSCGKQG.js.map +1 -0
  760. package/dist/reopen-27TDNXFP.js +63 -0
  761. package/dist/reopen-27TDNXFP.js.map +1 -0
  762. package/dist/rerun-XHECBJD5.js +84 -0
  763. package/dist/rerun-XHECBJD5.js.map +1 -0
  764. package/dist/research-4MOXIMDX.js +62 -0
  765. package/dist/research-4MOXIMDX.js.map +1 -0
  766. package/dist/research-XYXP7D4R.js +262 -0
  767. package/dist/research-XYXP7D4R.js.map +1 -0
  768. package/dist/reset-NLYEBPLX.js +54 -0
  769. package/dist/reset-NLYEBPLX.js.map +1 -0
  770. package/dist/reset-RDQOYBXX.js +54 -0
  771. package/dist/reset-RDQOYBXX.js.map +1 -0
  772. package/dist/resolve-VHKWC5KW.js +121 -0
  773. package/dist/resolve-VHKWC5KW.js.map +1 -0
  774. package/dist/retry-MTQSHXKH.js +60 -0
  775. package/dist/retry-MTQSHXKH.js.map +1 -0
  776. package/dist/retry-ZI5ECSFD.js +62 -0
  777. package/dist/retry-ZI5ECSFD.js.map +1 -0
  778. package/dist/retry-failed-2OYMCB55.js +45 -0
  779. package/dist/retry-failed-2OYMCB55.js.map +1 -0
  780. package/dist/run-BMJJRJL2.js +65 -0
  781. package/dist/run-BMJJRJL2.js.map +1 -0
  782. package/dist/run-IHXS6F5V.js +59 -0
  783. package/dist/run-IHXS6F5V.js.map +1 -0
  784. package/dist/scaffold-ad-QEADKYPL.js +1548 -0
  785. package/dist/scaffold-ad-QEADKYPL.js.map +1 -0
  786. package/dist/scaffold-static-ad-PTJ73ZNF.js +971 -0
  787. package/dist/scaffold-static-ad-PTJ73ZNF.js.map +1 -0
  788. package/dist/scaffold-video-ZQEZRVD6.js +872 -0
  789. package/dist/scaffold-video-ZQEZRVD6.js.map +1 -0
  790. package/dist/schedule-JD2EQJCT.js +61 -0
  791. package/dist/schedule-JD2EQJCT.js.map +1 -0
  792. package/dist/schedule-TLYT5UXM.js +66 -0
  793. package/dist/schedule-TLYT5UXM.js.map +1 -0
  794. package/dist/scheduled-agents-GIVKWTXX.js +49 -0
  795. package/dist/scheduled-agents-GIVKWTXX.js.map +1 -0
  796. package/dist/schema-MZTVCNP4.js +63 -0
  797. package/dist/schema-MZTVCNP4.js.map +1 -0
  798. package/dist/schema-RYTVKPLZ.js +132 -0
  799. package/dist/schema-RYTVKPLZ.js.map +1 -0
  800. package/dist/scrape-T3DA7ER7.js +2241 -0
  801. package/dist/scrape-T3DA7ER7.js.map +1 -0
  802. package/dist/screenshot-EIGC6SZB.js +102 -0
  803. package/dist/screenshot-EIGC6SZB.js.map +1 -0
  804. package/dist/search-2SVUDZIX.js +224 -0
  805. package/dist/search-2SVUDZIX.js.map +1 -0
  806. package/dist/search-34NFJ5F6.js +26 -0
  807. package/dist/search-34NFJ5F6.js.map +1 -0
  808. package/dist/search-AOFAN5NB.js +174 -0
  809. package/dist/search-AOFAN5NB.js.map +1 -0
  810. package/dist/search-BWE3OPOY.js +91 -0
  811. package/dist/search-BWE3OPOY.js.map +1 -0
  812. package/dist/search-EYYAOZND.js +92 -0
  813. package/dist/search-EYYAOZND.js.map +1 -0
  814. package/dist/search-copy-VKQ2OOBM.js +168 -0
  815. package/dist/search-copy-VKQ2OOBM.js.map +1 -0
  816. package/dist/seeds-HQYSVFIX.js +101 -0
  817. package/dist/seeds-HQYSVFIX.js.map +1 -0
  818. package/dist/select-HJMOAWAU.js +94 -0
  819. package/dist/select-HJMOAWAU.js.map +1 -0
  820. package/dist/sends-I7VQFE4S.js +309 -0
  821. package/dist/sends-I7VQFE4S.js.map +1 -0
  822. package/dist/sequences-JHSEJJGN.js +146 -0
  823. package/dist/sequences-JHSEJJGN.js.map +1 -0
  824. package/dist/set-prompt-TSS33JQZ.js +185 -0
  825. package/dist/set-prompt-TSS33JQZ.js.map +1 -0
  826. package/dist/setup-links-IW4BUANK.js +141 -0
  827. package/dist/setup-links-IW4BUANK.js.map +1 -0
  828. package/dist/{shared-J7DQZ2ED.js → shared-AT3FXPAG.js} +8 -6
  829. package/dist/shared-AT3FXPAG.js.map +1 -0
  830. package/dist/shopify-RQKO5TMR.js +3819 -0
  831. package/dist/shopify-RQKO5TMR.js.map +1 -0
  832. package/dist/site-3NU2BDAR.js +177 -0
  833. package/dist/site-3NU2BDAR.js.map +1 -0
  834. package/dist/sitemaps-FG37N5EB.js +87 -0
  835. package/dist/sitemaps-FG37N5EB.js.map +1 -0
  836. package/dist/sites-FIXK4Y3O.js +101 -0
  837. package/dist/sites-FIXK4Y3O.js.map +1 -0
  838. package/dist/skills-OKVCVQVD.js +47 -0
  839. package/dist/skills-OKVCVQVD.js.map +1 -0
  840. package/dist/sources-SEODRUIC.js +30 -0
  841. package/dist/sources-SEODRUIC.js.map +1 -0
  842. package/dist/sources-Z6BGTBGO.js +421 -0
  843. package/dist/sources-Z6BGTBGO.js.map +1 -0
  844. package/dist/stale-SWPDWXG7.js +63 -0
  845. package/dist/stale-SWPDWXG7.js.map +1 -0
  846. package/dist/stats-ZWZ7BAHV.js +34 -0
  847. package/dist/stats-ZWZ7BAHV.js.map +1 -0
  848. package/dist/status-7Y7UNSO6.js +62 -0
  849. package/dist/status-7Y7UNSO6.js.map +1 -0
  850. package/dist/sticker-FLRZM3BI.js +94 -0
  851. package/dist/sticker-FLRZM3BI.js.map +1 -0
  852. package/dist/stock-2CSMWRWV.js +179 -0
  853. package/dist/stock-2CSMWRWV.js.map +1 -0
  854. package/dist/studio-TTTR6N7D.js +49 -0
  855. package/dist/studio-TTTR6N7D.js.map +1 -0
  856. package/dist/sync-FH773IFH.js +54 -0
  857. package/dist/sync-FH773IFH.js.map +1 -0
  858. package/dist/sync-G5CS2RYV.js +54 -0
  859. package/dist/sync-G5CS2RYV.js.map +1 -0
  860. package/dist/sync-UADA6M33.js +265 -0
  861. package/dist/sync-UADA6M33.js.map +1 -0
  862. package/dist/sync-definition-77KLGPMA.js +52 -0
  863. package/dist/sync-definition-77KLGPMA.js.map +1 -0
  864. package/dist/tag-manager-NK3ZHSJB.js +43 -0
  865. package/dist/tag-manager-NK3ZHSJB.js.map +1 -0
  866. package/dist/tags-ANGHHLAC.js +20 -0
  867. package/dist/tags-ANGHHLAC.js.map +1 -0
  868. package/dist/tags-DKPUSQTJ.js +20 -0
  869. package/dist/tags-DKPUSQTJ.js.map +1 -0
  870. package/dist/tags-HSCV4ZAQ.js +20 -0
  871. package/dist/tags-HSCV4ZAQ.js.map +1 -0
  872. package/dist/tags-J3RMQEQM.js +26 -0
  873. package/dist/tags-J3RMQEQM.js.map +1 -0
  874. package/dist/tags-VZGTR3VJ.js +224 -0
  875. package/dist/tags-VZGTR3VJ.js.map +1 -0
  876. package/dist/targeting-constants-ZGBX3VWU.js +118 -0
  877. package/dist/targeting-constants-ZGBX3VWU.js.map +1 -0
  878. package/dist/targeting-criteria-BSG3CLHU.js +113 -0
  879. package/dist/targeting-criteria-BSG3CLHU.js.map +1 -0
  880. package/dist/targets-DVOAFYZQ.js +102 -0
  881. package/dist/targets-DVOAFYZQ.js.map +1 -0
  882. package/dist/templates-KJ5O44FF.js +178 -0
  883. package/dist/templates-KJ5O44FF.js.map +1 -0
  884. package/dist/testimonials-NB7V3DUO.js +32 -0
  885. package/dist/testimonials-NB7V3DUO.js.map +1 -0
  886. package/dist/themes-3RV3HNNE.js +94 -0
  887. package/dist/themes-3RV3HNNE.js.map +1 -0
  888. package/dist/top-companies-KRB3OZOT.js +108 -0
  889. package/dist/top-companies-KRB3OZOT.js.map +1 -0
  890. package/dist/translate-5FP32BIA.js +598 -0
  891. package/dist/translate-5FP32BIA.js.map +1 -0
  892. package/dist/triggers-EURHTCYC.js +141 -0
  893. package/dist/triggers-EURHTCYC.js.map +1 -0
  894. package/dist/tweets-X64YDEAA.js +123 -0
  895. package/dist/tweets-X64YDEAA.js.map +1 -0
  896. package/dist/unfollow-PIONCSBL.js +46 -0
  897. package/dist/unfollow-PIONCSBL.js.map +1 -0
  898. package/dist/unlink-HVVTZ3MB.js +67 -0
  899. package/dist/unlink-HVVTZ3MB.js.map +1 -0
  900. package/dist/unstage-BJJ5M7MK.js +95 -0
  901. package/dist/unstage-BJJ5M7MK.js.map +1 -0
  902. package/dist/unstage-Y7ZE3NUJ.js +84 -0
  903. package/dist/unstage-Y7ZE3NUJ.js.map +1 -0
  904. package/dist/update-3IP7FB6Y.js +98 -0
  905. package/dist/update-3IP7FB6Y.js.map +1 -0
  906. package/dist/update-CSDSK5NO.js +63 -0
  907. package/dist/update-CSDSK5NO.js.map +1 -0
  908. package/dist/update-FGJXVDB7.js +142 -0
  909. package/dist/update-FGJXVDB7.js.map +1 -0
  910. package/dist/update-MF7LY2OT.js +155 -0
  911. package/dist/update-MF7LY2OT.js.map +1 -0
  912. package/dist/upload-DDPI7KJV.js +126 -0
  913. package/dist/upload-DDPI7KJV.js.map +1 -0
  914. package/dist/upload-IWFYKD7A.js +150 -0
  915. package/dist/upload-IWFYKD7A.js.map +1 -0
  916. package/dist/upscale-EYCEYRWE.js +109 -0
  917. package/dist/upscale-EYCEYRWE.js.map +1 -0
  918. package/dist/url-options-RA3XISLN.js +130 -0
  919. package/dist/url-options-RA3XISLN.js.map +1 -0
  920. package/dist/url-params-SN4APXCK.js +98 -0
  921. package/dist/url-params-SN4APXCK.js.map +1 -0
  922. package/dist/use-E2TA2K6J.js +95 -0
  923. package/dist/use-E2TA2K6J.js.map +1 -0
  924. package/dist/validate-W52JOEXI.js +88 -0
  925. package/dist/validate-W52JOEXI.js.map +1 -0
  926. package/dist/variant-ETHB6XUM.js +338 -0
  927. package/dist/variant-ETHB6XUM.js.map +1 -0
  928. package/dist/videos-653WAFPG.js +39 -0
  929. package/dist/videos-653WAFPG.js.map +1 -0
  930. package/dist/view-BVEZRRV2.js +121 -0
  931. package/dist/view-BVEZRRV2.js.map +1 -0
  932. package/dist/viewer-check-W4ICSBHO.js +68 -0
  933. package/dist/viewer-check-W4ICSBHO.js.map +1 -0
  934. package/dist/web-JWIGFGIU.js +140 -0
  935. package/dist/web-JWIGFGIU.js.map +1 -0
  936. package/dist/winners-MJDKCGEZ.js +113 -0
  937. package/dist/winners-MJDKCGEZ.js.map +1 -0
  938. package/dist/winning-ads-O3IMUGGO.js +84 -0
  939. package/dist/winning-ads-O3IMUGGO.js.map +1 -0
  940. package/dist/write-commands-DA6FIFAO.js +737 -0
  941. package/dist/write-commands-DA6FIFAO.js.map +1 -0
  942. package/dist/write-commands-EMN2WENA.js +1015 -0
  943. package/dist/write-commands-EMN2WENA.js.map +1 -0
  944. package/dist/write-commands-KTPISQRE.js +206 -0
  945. package/dist/write-commands-KTPISQRE.js.map +1 -0
  946. package/dist/write-commands-QBGIWU27.js +713 -0
  947. package/dist/write-commands-QBGIWU27.js.map +1 -0
  948. package/dist/x-BT3SNCTU.js +47 -0
  949. package/dist/x-BT3SNCTU.js.map +1 -0
  950. package/package.json +9 -2
  951. package/dist/chunk-CHJOTJTZ.js +0 -9989
  952. package/dist/chunk-CHJOTJTZ.js.map +0 -1
  953. package/dist/chunk-HJEMOSPH.js +0 -1292
  954. package/dist/chunk-HJEMOSPH.js.map +0 -1
  955. package/dist/chunk-MF7YA62W.js.map +0 -1
  956. package/dist/chunk-VLUGGVJL.js.map +0 -1
  957. package/dist/chunk-VZEDAFAR.js.map +0 -1
  958. package/dist/chunk-XHC4LMK4.js.map +0 -1
  959. package/dist/client-GR6YL3YX.js +0 -17
  960. package/dist/output-NMQXZF3Z.js +0 -18
  961. /package/dist/{client-GR6YL3YX.js.map → chunk-YQSBHWOI.js.map} +0 -0
  962. /package/dist/{env-4P5HOGNA.js.map → client-EURRWXPW.js.map} +0 -0
  963. /package/dist/{output-NMQXZF3Z.js.map → connect-4YXFMXYX.js.map} +0 -0
  964. /package/dist/{shared-J7DQZ2ED.js.map → customers-7E4HBSEY.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/actions/assign.ts"],"sourcesContent":["import type { ActionsAssignRequest, ActionsAssignResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost, validateConvexId } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation, isTempId } from \"./shared.ts\";\n\nregisterSchema({\n command: \"actions.assign\",\n description:\n \"Stage who a Task is assigned to — applies when the chat is published, like every other Task change. --to takes a userId or email from `baker actions members` (only those teammates can be named), or `none` to unassign. Works on a published Task by id or on one this chat is creating by its tempId. Restaging replaces the earlier assignment; drop it with `baker actions draft remove <id> --op assign`. No claim needed; blocked only while another chat has the Task claimed.\",\n args: {\n id: { type: \"string\", description: \"Action ID, or tempId (temp_*) of a Task staged in this chat\", required: true },\n to: {\n type: \"string\",\n description: \"userId or email from `baker actions members`, or `none` to unassign\",\n required: true,\n },\n },\n});\n\n/** The request for one assignment, checked before the round trip. */\nexport function assignBody(args: { ref: string; to?: string }, chatId: string): ActionsAssignRequest {\n const to = args.to?.trim();\n if (!to) {\n failValidation(\"--to is required: a userId or email from `baker actions members`, or `none` to unassign the Task.\");\n }\n if (!isTempId(args.ref)) {\n validateConvexId(args.ref);\n }\n return { chatId, actionRef: args.ref, to };\n}\n\nexport const assignCommand = defineCommand({\n meta: {\n name: \"assign\",\n description:\n \"Stage who a Task is assigned to (applies on publish). Examples: baker actions assign <id> --to maria@empresa.com | baker actions assign temp_brief --to <userId> | baker actions assign <id> --to none\",\n },\n args: {\n id: { type: \"positional\", description: \"Action ID or tempId (temp_*)\", required: false },\n \"action-id\": { type: \"string\", description: \"Action ID or tempId (temp_*)\", required: false },\n to: { type: \"string\", description: \"userId or email from `baker actions members`, or none\", required: false },\n },\n run: async ({ args }) => {\n try {\n const ref = (args.id as string | undefined) || (args[\"action-id\"] as string | undefined);\n if (!ref) {\n failValidation(\"Action ID is required.\");\n }\n const body = assignBody({ ref, ...(typeof args.to === \"string\" ? { to: args.to } : {}) }, requireChatId());\n const response = await apiPost<ActionsAssignResponse>(\"/api/actions/assign\", body);\n writeJson({ ...response, hints: [\"Staged: the Task changes hands when the chat is published.\"] });\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAO9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,UAAU,aAAa,+DAA+D,UAAU,KAAK;AAAA,IACjH,IAAI;AAAA,MACF,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAGM,SAAS,WAAW,MAAoC,QAAsC;AACnG,QAAM,KAAK,KAAK,IAAI,KAAK;AACzB,MAAI,CAAC,IAAI;AACP,mBAAe,mGAAmG;AAAA,EACpH;AACA,MAAI,CAAC,SAAS,KAAK,GAAG,GAAG;AACvB,qBAAiB,KAAK,GAAG;AAAA,EAC3B;AACA,SAAO,EAAE,QAAQ,WAAW,KAAK,KAAK,GAAG;AAC3C;AAEO,IAAM,gBAAgB,cAAc;AAAA,EACzC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,cAAc,aAAa,gCAAgC,UAAU,MAAM;AAAA,IACvF,aAAa,EAAE,MAAM,UAAU,aAAa,gCAAgC,UAAU,MAAM;AAAA,IAC5F,IAAI,EAAE,MAAM,UAAU,aAAa,yDAAyD,UAAU,MAAM;AAAA,EAC9G;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,MAAO,KAAK,MAA8B,KAAK,WAAW;AAChE,UAAI,CAAC,KAAK;AACR,uBAAe,wBAAwB;AAAA,MACzC;AACA,YAAM,OAAO,WAAW,EAAE,KAAK,GAAI,OAAO,KAAK,OAAO,WAAW,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,EAAG,GAAG,cAAc,CAAC;AACzG,YAAM,WAAW,MAAM,QAA+B,uBAAuB,IAAI;AACjF,gBAAU,EAAE,GAAG,UAAU,OAAO,CAAC,4DAA4D,EAAE,CAAC;AAAA,IAClG,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,94 @@
1
+ import {
2
+ handleLinkedinError,
3
+ resolveAccountIdArg
4
+ } from "./chunk-IREMSVKW.js";
5
+ import {
6
+ writeAdsJson
7
+ } from "./chunk-EIGXX6KI.js";
8
+ import {
9
+ NO_CACHE_ARG
10
+ } from "./chunk-ZNQRDLSS.js";
11
+ import "./chunk-O6XZIQXZ.js";
12
+ import "./chunk-GXDLWBOY.js";
13
+ import "./chunk-GIWHHCD6.js";
14
+ import "./chunk-UI6BKYQD.js";
15
+ import "./chunk-I2DNBEV6.js";
16
+ import {
17
+ apiPost
18
+ } from "./chunk-CUL3VB4L.js";
19
+ import "./chunk-6YYSUISH.js";
20
+ import "./chunk-I4FTS5EE.js";
21
+ import "./chunk-MYTDK3AL.js";
22
+ import "./chunk-YQSBHWOI.js";
23
+
24
+ // src/commands/ads/linkedin/audience-size.ts
25
+ import { readFileSync } from "fs";
26
+ import { defineCommand } from "citty";
27
+ function loadTargeting(args) {
28
+ const inline = args.targeting;
29
+ if (inline) {
30
+ try {
31
+ return JSON.parse(inline);
32
+ } catch {
33
+ handleLinkedinError(new Error("--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape."));
34
+ }
35
+ }
36
+ const file = args["targeting-file"];
37
+ if (file) {
38
+ try {
39
+ return JSON.parse(readFileSync(file, "utf-8"));
40
+ } catch (e) {
41
+ handleLinkedinError(
42
+ new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : "I/O error"}`)
43
+ );
44
+ }
45
+ }
46
+ handleLinkedinError(new Error("Pass --targeting-file <path> or --targeting '{...JSON...}'"));
47
+ }
48
+ var audienceSizeCommand = defineCommand({
49
+ meta: {
50
+ name: "audience-size",
51
+ description: `Estimate audience size for a targeting payload \u2014 pre-launch sanity check.
52
+
53
+ Returns total + active counts plus playbook \xA704 warnings:
54
+ size <20K \u2192 too narrow (will not deliver)
55
+ size <50K \u2192 outside the 50K\u2013500K sweet spot
56
+ size >500K \u2192 outside the sweet spot
57
+ size >1M \u2192 too broad, refine ICP
58
+
59
+ The targeting payload must follow LinkedIn's 'targetingCriteria' shape \u2014 an
60
+ include/exclude tree of and/or boolean operators with adTargetingFacet keys.
61
+ The simplest form:
62
+ { "include": { "and": [{ "or": { "urn:li:adTargetingFacet:locations": ["urn:li:geo:103644278"] }}]}}
63
+
64
+ Examples:
65
+ baker ads linkedin audience-size --account-id 503001492 --targeting-file targeting.json
66
+ baker ads linkedin audience-size --account-id 503001492 --targeting '{"include":{"and":[]}}'`
67
+ },
68
+ args: {
69
+ "account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
70
+ "account-urn": { type: "string", description: "Alias for --account-id" },
71
+ targeting: { type: "string", description: "Inline JSON targetingCriteria payload" },
72
+ "targeting-file": { type: "string", description: "Path to JSON file with targetingCriteria" },
73
+ "no-cache": NO_CACHE_ARG,
74
+ output: { type: "string", description: "json", default: "json" }
75
+ },
76
+ run: async ({ args }) => {
77
+ const accountId = resolveAccountIdArg(args);
78
+ const targetingCriteria = loadTargeting(args);
79
+ try {
80
+ const data = await apiPost("/api/ads/linkedin/audience-size", {
81
+ accountId,
82
+ targetingCriteria,
83
+ skipCache: Boolean(args["no-cache"])
84
+ });
85
+ writeAdsJson({ ok: true, data });
86
+ } catch (err) {
87
+ handleLinkedinError(err);
88
+ }
89
+ }
90
+ });
91
+ export {
92
+ audienceSizeCommand
93
+ };
94
+ //# sourceMappingURL=audience-size-SWX5YJQF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/linkedin/audience-size.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface AudienceSizeResult {\n total: number;\n active: number;\n warnings: string[];\n}\n\n/**\n * Read targeting JSON from --targeting-file, --targeting (inline JSON), or\n * stdin. Returns the parsed object — failure exits via handleLinkedinError.\n */\nfunction loadTargeting(args: Record<string, unknown>): unknown {\n const inline = args.targeting as string | undefined;\n if (inline) {\n try {\n return JSON.parse(inline);\n } catch {\n handleLinkedinError(new Error(\"--targeting must be valid JSON. See LinkedIn 'targetingCriteria' shape.\"));\n }\n }\n const file = args[\"targeting-file\"] as string | undefined;\n if (file) {\n try {\n return JSON.parse(readFileSync(file, \"utf-8\"));\n } catch (e) {\n handleLinkedinError(\n new Error(`Failed to read --targeting-file: ${e instanceof Error ? e.message : \"I/O error\"}`),\n );\n }\n }\n handleLinkedinError(new Error(\"Pass --targeting-file <path> or --targeting '{...JSON...}'\"));\n}\n\nexport const audienceSizeCommand = defineCommand({\n meta: {\n name: \"audience-size\",\n description: `Estimate audience size for a targeting payload — pre-launch sanity check.\n\nReturns total + active counts plus playbook §04 warnings:\n size <20K → too narrow (will not deliver)\n size <50K → outside the 50K–500K sweet spot\n size >500K → outside the sweet spot\n size >1M → too broad, refine ICP\n\nThe targeting payload must follow LinkedIn's 'targetingCriteria' shape — an\ninclude/exclude tree of and/or boolean operators with adTargetingFacet keys.\nThe simplest form:\n { \"include\": { \"and\": [{ \"or\": { \"urn:li:adTargetingFacet:locations\": [\"urn:li:geo:103644278\"] }}]}}\n\nExamples:\n baker ads linkedin audience-size --account-id 503001492 --targeting-file targeting.json\n baker ads linkedin audience-size --account-id 503001492 --targeting '{\"include\":{\"and\":[]}}'`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n targeting: { type: \"string\", description: \"Inline JSON targetingCriteria payload\" },\n \"targeting-file\": { type: \"string\", description: \"Path to JSON file with targetingCriteria\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json\", default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n const targetingCriteria = loadTargeting(args);\n try {\n const data = await apiPost<AudienceSizeResult>(\"/api/ads/linkedin/audience-size\", {\n accountId,\n targetingCriteria,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAgB9B,SAAS,cAAc,MAAwC;AAC7D,QAAM,SAAS,KAAK;AACpB,MAAI,QAAQ;AACV,QAAI;AACF,aAAO,KAAK,MAAM,MAAM;AAAA,IAC1B,QAAQ;AACN,0BAAoB,IAAI,MAAM,yEAAyE,CAAC;AAAA,IAC1G;AAAA,EACF;AACA,QAAM,OAAO,KAAK,gBAAgB;AAClC,MAAI,MAAM;AACR,QAAI;AACF,aAAO,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AAAA,IAC/C,SAAS,GAAG;AACV;AAAA,QACE,IAAI,MAAM,oCAAoC,aAAa,QAAQ,EAAE,UAAU,WAAW,EAAE;AAAA,MAC9F;AAAA,IACF;AAAA,EACF;AACA,sBAAoB,IAAI,MAAM,4DAA4D,CAAC;AAC7F;AAEO,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW,EAAE,MAAM,UAAU,aAAa,wCAAwC;AAAA,IAClF,kBAAkB,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,IAC5F,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,QAAQ,SAAS,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,UAAM,oBAAoB,cAAc,IAAI;AAC5C,QAAI;AACF,YAAM,OAAO,MAAM,QAA4B,mCAAmC;AAAA,QAChF;AAAA,QACA;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AACD,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,268 @@
1
+ import {
2
+ csvArg,
3
+ failWriteValidation,
4
+ requireTarget,
5
+ requireTargets,
6
+ schemaArgs,
7
+ stageChatgptOp,
8
+ stageChatgptOps
9
+ } from "./chunk-E3HYHT7C.js";
10
+ import {
11
+ CHATGPT_ADS_REFERENCE,
12
+ CHATGPT_AUDIENCE_USES,
13
+ CHATGPT_MAX_STAGED_MEMBERS,
14
+ runChatgptListRead
15
+ } from "./chunk-MIJAGBEP.js";
16
+ import "./chunk-EIGXX6KI.js";
17
+ import "./chunk-CUL3VB4L.js";
18
+ import "./chunk-6YYSUISH.js";
19
+ import "./chunk-I4FTS5EE.js";
20
+ import {
21
+ registerSchema
22
+ } from "./chunk-MYTDK3AL.js";
23
+ import "./chunk-YQSBHWOI.js";
24
+
25
+ // src/commands/ads/chatgpt/audiences.ts
26
+ import { readFileSync } from "fs";
27
+ import { defineCommand } from "citty";
28
+
29
+ // src/commands/ads/chatgpt/audience-members.ts
30
+ import { createHash } from "crypto";
31
+ import { parse } from "csv-parse/sync";
32
+ import { isSupportedCountry, parsePhoneNumberFromString } from "libphonenumber-js";
33
+ function sha256(value) {
34
+ return createHash("sha256").update(value, "utf8").digest("hex");
35
+ }
36
+ function normalizedEmail(value) {
37
+ const email = value.trim().toLowerCase();
38
+ return /^[^@\s;,|]+@[^@\s;,|]+\.[^@\s;,|]+$/.test(email) ? email : void 0;
39
+ }
40
+ function normalizedPhone(value, defaultCountry) {
41
+ const country = defaultCountry && isSupportedCountry(defaultCountry) ? defaultCountry : void 0;
42
+ const phone = parsePhoneNumberFromString(value.trim(), country);
43
+ return phone?.isValid() ? phone.number : void 0;
44
+ }
45
+ function hashedMembers(input) {
46
+ const rejected = [];
47
+ const emailHashes = /* @__PURE__ */ new Set();
48
+ const phoneHashes = /* @__PURE__ */ new Set();
49
+ for (const value of input.emails) {
50
+ const email = normalizedEmail(value);
51
+ email ? emailHashes.add(sha256(email)) : rejected.push(value.trim());
52
+ }
53
+ for (const value of input.phones) {
54
+ const phone = normalizedPhone(value, input.defaultCountry);
55
+ phone ? phoneHashes.add(sha256(phone)) : rejected.push(value.trim());
56
+ }
57
+ return { emailHashes: [...emailHashes], phoneHashes: [...phoneHashes], rejected };
58
+ }
59
+ function headerWords(cell) {
60
+ return cell.normalize("NFD").replace(new RegExp("\\p{Diacritic}", "gu"), "").toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
61
+ }
62
+ var EMAIL_HEADER = /\b(e ?mail|correo|mail)\b/;
63
+ var PHONE_HEADER = /\b(phone|telefono|movil|mobile|tel|celular)\b/;
64
+ function membersFromFile(content) {
65
+ const rows = parse(content, {
66
+ bom: true,
67
+ skip_empty_lines: true,
68
+ relax_column_count: true,
69
+ trim: true,
70
+ delimiter: [",", ";", " "]
71
+ });
72
+ const header = (rows[0] ?? []).map(headerWords);
73
+ const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));
74
+ const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));
75
+ if (emailColumn >= 0 || phoneColumn >= 0) {
76
+ const cells = (column) => column < 0 ? [] : rows.slice(1).flatMap((row) => row[column] ? [row[column]] : []);
77
+ return { emails: cells(emailColumn), phones: cells(phoneColumn) };
78
+ }
79
+ const values = rows.flatMap((row) => row[0] ? [row[0]] : []);
80
+ return values.some((value) => value.includes("@")) ? { emails: values, phones: [] } : { emails: [], phones: values };
81
+ }
82
+
83
+ // src/commands/ads/chatgpt/audiences.ts
84
+ var REFERENCE = CHATGPT_ADS_REFERENCE.audiences;
85
+ var MEMBER_ARGS = {
86
+ emails: { type: "string", description: "Emails, comma-separated" },
87
+ phones: { type: "string", description: "Phones, comma-separated \u2014 E.164 (+34\u2026), or local with --country" },
88
+ file: {
89
+ type: "string",
90
+ description: "A CSV with an email and/or phone column, or one email or phone per line \u2014 the company's own customers"
91
+ },
92
+ country: { type: "string", description: "Country of phones written without a +code, e.g. ES" }
93
+ };
94
+ function membersFromArgs(args, readFile = (path) => readFileSync(path, "utf8")) {
95
+ const fromFile = typeof args.file === "string" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };
96
+ const given = [...csvArg(args.emails) ?? [], ...fromFile.emails];
97
+ const givenPhones = [...csvArg(args.phones) ?? [], ...fromFile.phones];
98
+ const members = hashedMembers({
99
+ emails: given,
100
+ phones: givenPhones,
101
+ defaultCountry: typeof args.country === "string" ? args.country.toUpperCase() : void 0
102
+ });
103
+ const count = members.emailHashes.length + members.phoneHashes.length;
104
+ const offered = given.length + givenPhones.length + (typeof args.file === "string" && args.file ? 1 : 0);
105
+ const refusal = count > CHATGPT_MAX_STAGED_MEMBERS ? `${count} members \u2014 at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file` : count === 0 && offered > 0 ? "none of the values was an email or a valid phone \u2014 name the columns email and phone, and give phones a +country code or --country" : void 0;
106
+ return {
107
+ payload: {
108
+ ...members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {},
109
+ ...members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}
110
+ },
111
+ rejected: members.rejected.length,
112
+ ...refusal ? { refusal } : {}
113
+ };
114
+ }
115
+ function rejectedHint(rejected) {
116
+ return rejected > 0 ? [
117
+ `${rejected} value(s) were neither an email nor a valid phone and were left out \u2014 phones need a +country code, or --country.`
118
+ ] : [];
119
+ }
120
+ var LIST_ARGS = {
121
+ "eligible-for": {
122
+ type: "string",
123
+ description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join("|")}`
124
+ }
125
+ };
126
+ registerSchema({
127
+ command: "ads.chatgpt.audiences.list",
128
+ description: "The account's custom audiences: status, and matched people as a privacy range (under_25k\u2026). `ready` is not eligibility \u2014 pass --eligible-for to list only those a use accepts.",
129
+ args: schemaArgs(LIST_ARGS)
130
+ });
131
+ var audiencesListCommand = defineCommand({
132
+ meta: { name: "list", description: "List the account's custom audiences." },
133
+ args: LIST_ARGS,
134
+ run: async ({ args }) => {
135
+ const use = typeof args["eligible-for"] === "string" ? args["eligible-for"] : void 0;
136
+ await runChatgptListRead(
137
+ REFERENCE,
138
+ "/api/ads/chatgpt/audiences",
139
+ use ? { eligible_for: use } : void 0,
140
+ (rows) => rows.length === 0 ? ["No audience. Stage one with `baker ads chatgpt audiences create --name \u2026 --file customers.csv`."] : [
141
+ "Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland."
142
+ ]
143
+ );
144
+ }
145
+ });
146
+ var CREATE_ARGS = {
147
+ name: { type: "string", description: "Audience name (3+ characters)", required: true },
148
+ description: { type: "string", description: "What the list is" },
149
+ ...MEMBER_ARGS
150
+ };
151
+ registerSchema({
152
+ command: "ads.chatgpt.audiences.create",
153
+ description: "Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.",
154
+ args: schemaArgs(CREATE_ARGS)
155
+ });
156
+ var audiencesCreateCommand = defineCommand({
157
+ meta: {
158
+ name: "create",
159
+ description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.
160
+
161
+ Examples:
162
+ baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
163
+ baker ads chatgpt audiences create --name "Recent buyers" # empty, fill it later with add`
164
+ },
165
+ args: CREATE_ARGS,
166
+ run: async ({ args }) => {
167
+ const { payload, rejected, refusal } = membersFromArgs(args);
168
+ if (refusal) {
169
+ failWriteValidation(refusal);
170
+ }
171
+ await stageChatgptOp(
172
+ {
173
+ kind: "audience.create",
174
+ payload: { name: args.name, ...args.description ? { description: args.description } : {}, ...payload }
175
+ },
176
+ REFERENCE,
177
+ (staged) => [
178
+ ...rejectedHint(rejected),
179
+ `Use it on a campaign after the publish, once \`audiences\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`
180
+ ]
181
+ );
182
+ }
183
+ });
184
+ function membersCommand(verb) {
185
+ const args = {
186
+ id: { type: "positional", description: "Audience id (caud_\u2026)", required: true },
187
+ ...MEMBER_ARGS
188
+ };
189
+ registerSchema({
190
+ command: `ads.chatgpt.audiences.${verb}`,
191
+ description: `Stage ${verb === "add" ? "adding" : "removing"} members ${verb === "add" ? "to" : "from"} a live custom audience, hashed on this machine. Applies when the chat is published.`,
192
+ args: schemaArgs(args)
193
+ });
194
+ return defineCommand({
195
+ meta: {
196
+ name: verb,
197
+ description: `Stage ${verb === "add" ? "adding" : "removing"} members.
198
+
199
+ Example:
200
+ baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`
201
+ },
202
+ args,
203
+ run: async ({ args: parsed }) => {
204
+ const { payload, rejected, refusal } = membersFromArgs(parsed);
205
+ if (refusal) {
206
+ failWriteValidation(refusal);
207
+ }
208
+ if (!payload.emailHashes && !payload.phoneHashes) {
209
+ failWriteValidation("name at least one email or phone with --emails, --phones or --file");
210
+ }
211
+ await stageChatgptOp(
212
+ { kind: `audience.${verb}`, target: requireTarget(parsed, "id"), payload },
213
+ REFERENCE,
214
+ () => rejectedHint(rejected)
215
+ );
216
+ }
217
+ });
218
+ }
219
+ var ARCHIVE_ARGS = {
220
+ ids: { type: "positional", description: "Audience ids, comma-separated", required: true }
221
+ };
222
+ registerSchema({
223
+ command: "ads.chatgpt.audiences.archive",
224
+ description: "Stage archiving custom audiences \u2014 for good: ChatGPT Ads cannot bring one back. Pass every id in one call.",
225
+ args: schemaArgs(ARCHIVE_ARGS)
226
+ });
227
+ var audiencesArchiveCommand = defineCommand({
228
+ meta: {
229
+ name: "archive",
230
+ description: `Stage archiving audiences, for good.
231
+
232
+ Example:
233
+ baker ads chatgpt audiences archive caud_123`
234
+ },
235
+ args: ARCHIVE_ARGS,
236
+ run: async ({ args }) => {
237
+ await stageChatgptOps(
238
+ requireTargets(args, "ids").map((id) => ({ kind: "audience.archive", target: id, payload: {} })),
239
+ REFERENCE
240
+ );
241
+ }
242
+ });
243
+ var audiencesCommand = defineCommand({
244
+ meta: {
245
+ name: "audiences",
246
+ description: `Custom audiences \u2014 the company's own customer lists a campaign serves to or leaves out.
247
+
248
+ Examples:
249
+ baker ads chatgpt audiences
250
+ baker ads chatgpt audiences create --name "Customers 2026" --file customers.csv --country ES
251
+ baker ads chatgpt audiences add caud_123 --emails ana@example.com`
252
+ },
253
+ subCommands: {
254
+ list: audiencesListCommand,
255
+ create: audiencesCreateCommand,
256
+ add: membersCommand("add"),
257
+ remove: membersCommand("remove"),
258
+ archive: audiencesArchiveCommand
259
+ },
260
+ // A parent must never declare `run`: citty falls through to it after the matched subcommand.
261
+ args: {},
262
+ default: "list"
263
+ });
264
+ export {
265
+ audiencesCommand,
266
+ membersFromArgs
267
+ };
268
+ //# sourceMappingURL=audiences-5A6BCWSA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/chatgpt/audiences.ts","../src/commands/ads/chatgpt/audience-members.ts"],"sourcesContent":["import { readFileSync } from \"node:fs\";\nimport { CHATGPT_AUDIENCE_USES, CHATGPT_MAX_STAGED_MEMBERS, type ChatgptAdsAudience } from \"@baker/api/ads-chatgpt\";\nimport { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { hashedMembers, membersFromFile } from \"./audience-members.ts\";\nimport { CHATGPT_ADS_REFERENCE, runChatgptListRead } from \"./shared.ts\";\nimport {\n csvArg,\n failWriteValidation,\n requireTarget,\n requireTargets,\n schemaArgs,\n stageChatgptOp,\n stageChatgptOps,\n} from \"./write-shared.ts\";\n\n/**\n * Custom audiences: lists of the company's own customers a campaign serves to\n * or leaves out. Members are hashed on this machine before anything is sent —\n * Baker and ChatGPT Ads only ever see SHA-256 digests.\n */\n\nconst REFERENCE = CHATGPT_ADS_REFERENCE.audiences;\n\nconst MEMBER_ARGS = {\n emails: { type: \"string\", description: \"Emails, comma-separated\" },\n phones: { type: \"string\", description: \"Phones, comma-separated — E.164 (+34…), or local with --country\" },\n file: {\n type: \"string\",\n description:\n \"A CSV with an email and/or phone column, or one email or phone per line — the company's own customers\",\n },\n country: { type: \"string\", description: \"Country of phones written without a +code, e.g. ES\" },\n} as const;\n\ntype Args = Record<string, unknown>;\n\n/** The members the flags name, hashed — with the reason to refuse them when none is usable or there are too many. */\nexport function membersFromArgs(args: Args, readFile: (path: string) => string = (path) => readFileSync(path, \"utf8\")) {\n const fromFile =\n typeof args.file === \"string\" && args.file ? membersFromFile(readFile(args.file)) : { emails: [], phones: [] };\n const given = [...(csvArg(args.emails) ?? []), ...fromFile.emails];\n const givenPhones = [...(csvArg(args.phones) ?? []), ...fromFile.phones];\n const members = hashedMembers({\n emails: given,\n phones: givenPhones,\n defaultCountry: typeof args.country === \"string\" ? args.country.toUpperCase() : undefined,\n });\n const count = members.emailHashes.length + members.phoneHashes.length;\n const offered = given.length + givenPhones.length + (typeof args.file === \"string\" && args.file ? 1 : 0);\n const refusal =\n count > CHATGPT_MAX_STAGED_MEMBERS\n ? `${count} members — at most ${CHATGPT_MAX_STAGED_MEMBERS} per change; split the file`\n : count === 0 && offered > 0\n ? \"none of the values was an email or a valid phone — name the columns email and phone, and give phones a +country code or --country\"\n : undefined;\n return {\n payload: {\n ...(members.emailHashes.length > 0 ? { emailHashes: members.emailHashes } : {}),\n ...(members.phoneHashes.length > 0 ? { phoneHashes: members.phoneHashes } : {}),\n },\n rejected: members.rejected.length,\n ...(refusal ? { refusal } : {}),\n };\n}\n\nfunction rejectedHint(rejected: number): string[] {\n return rejected > 0\n ? [\n `${rejected} value(s) were neither an email nor a valid phone and were left out — phones need a +country code, or --country.`,\n ]\n : [];\n}\n\nconst LIST_ARGS = {\n \"eligible-for\": {\n type: \"string\",\n description: `Only audiences ChatGPT Ads lets serve this use: ${CHATGPT_AUDIENCE_USES.join(\"|\")}`,\n },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.list\",\n description:\n \"The account's custom audiences: status, and matched people as a privacy range (under_25k…). `ready` is not eligibility — pass --eligible-for to list only those a use accepts.\",\n args: schemaArgs(LIST_ARGS),\n});\n\nconst audiencesListCommand = defineCommand({\n meta: { name: \"list\", description: \"List the account's custom audiences.\" },\n args: LIST_ARGS,\n run: async ({ args }) => {\n const use = typeof args[\"eligible-for\"] === \"string\" ? args[\"eligible-for\"] : undefined;\n await runChatgptListRead<ChatgptAdsAudience[]>(\n REFERENCE,\n \"/api/ads/chatgpt/audiences\",\n use ? { eligible_for: use } : undefined,\n (rows) =>\n rows.length === 0\n ? [\"No audience. Stage one with `baker ads chatgpt audiences create --name … --file customers.csv`.\"]\n : [\n \"Including an audience needs about 25,000 matched people; excluding works at any size. Custom audiences do not work in campaigns serving the EEA or Switzerland.\",\n ],\n );\n },\n});\n\nconst CREATE_ARGS = {\n name: { type: \"string\", description: \"Audience name (3+ characters)\", required: true },\n description: { type: \"string\", description: \"What the list is\" },\n ...MEMBER_ARGS,\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.create\",\n description:\n \"Stage a custom audience from the company's own customers (emails and/or phones, hashed on this machine), or an empty one. Created when the chat is published; only first-party data the company may use for ads.\",\n args: schemaArgs(CREATE_ARGS),\n});\n\nconst audiencesCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a custom audience (applies when the chat is published). Members are hashed here; nothing raw is sent.\n\nExamples:\n baker ads chatgpt audiences create --name \"Customers 2026\" --file customers.csv --country ES\n baker ads chatgpt audiences create --name \"Recent buyers\" # empty, fill it later with add`,\n },\n args: CREATE_ARGS,\n run: async ({ args }) => {\n const { payload, rejected, refusal } = membersFromArgs(args);\n if (refusal) {\n failWriteValidation(refusal);\n }\n await stageChatgptOp(\n {\n kind: \"audience.create\",\n payload: { name: args.name, ...(args.description ? { description: args.description } : {}), ...payload },\n },\n REFERENCE,\n (staged) => [\n ...rejectedHint(rejected),\n `Use it on a campaign after the publish, once \\`audiences\\` shows it ready: campaigns update <cmpn_id> --excluded-audience-ids <caud_id>. (${staged.ref} is its ref in this chat.)`,\n ],\n );\n },\n});\n\nfunction membersCommand(verb: \"add\" | \"remove\") {\n const args = {\n id: { type: \"positional\", description: \"Audience id (caud_…)\", required: true },\n ...MEMBER_ARGS,\n } as const;\n registerSchema({\n command: `ads.chatgpt.audiences.${verb}`,\n description: `Stage ${verb === \"add\" ? \"adding\" : \"removing\"} members ${verb === \"add\" ? \"to\" : \"from\"} a live custom audience, hashed on this machine. Applies when the chat is published.`,\n args: schemaArgs(args),\n });\n return defineCommand({\n meta: {\n name: verb,\n description: `Stage ${verb === \"add\" ? \"adding\" : \"removing\"} members.\n\nExample:\n baker ads chatgpt audiences ${verb} caud_123 --emails ana@example.com,luis@example.com`,\n },\n args,\n run: async ({ args: parsed }) => {\n const { payload, rejected, refusal } = membersFromArgs(parsed);\n if (refusal) {\n failWriteValidation(refusal);\n }\n if (!payload.emailHashes && !payload.phoneHashes) {\n failWriteValidation(\"name at least one email or phone with --emails, --phones or --file\");\n }\n await stageChatgptOp({ kind: `audience.${verb}`, target: requireTarget(parsed, \"id\"), payload }, REFERENCE, () =>\n rejectedHint(rejected),\n );\n },\n });\n}\n\nconst ARCHIVE_ARGS = {\n ids: { type: \"positional\", description: \"Audience ids, comma-separated\", required: true },\n} as const;\n\nregisterSchema({\n command: \"ads.chatgpt.audiences.archive\",\n description:\n \"Stage archiving custom audiences — for good: ChatGPT Ads cannot bring one back. Pass every id in one call.\",\n args: schemaArgs(ARCHIVE_ARGS),\n});\n\nconst audiencesArchiveCommand = defineCommand({\n meta: {\n name: \"archive\",\n description: `Stage archiving audiences, for good.\n\nExample:\n baker ads chatgpt audiences archive caud_123`,\n },\n args: ARCHIVE_ARGS,\n run: async ({ args }) => {\n await stageChatgptOps(\n requireTargets(args, \"ids\").map((id) => ({ kind: \"audience.archive\", target: id, payload: {} })),\n REFERENCE,\n );\n },\n});\n\nexport const audiencesCommand = defineCommand({\n meta: {\n name: \"audiences\",\n description: `Custom audiences — the company's own customer lists a campaign serves to or leaves out.\n\nExamples:\n baker ads chatgpt audiences\n baker ads chatgpt audiences create --name \"Customers 2026\" --file customers.csv --country ES\n baker ads chatgpt audiences add caud_123 --emails ana@example.com`,\n },\n subCommands: {\n list: audiencesListCommand,\n create: audiencesCreateCommand,\n add: membersCommand(\"add\"),\n remove: membersCommand(\"remove\"),\n archive: audiencesArchiveCommand,\n },\n // A parent must never declare `run`: citty falls through to it after the matched subcommand.\n args: {},\n default: \"list\",\n});\n","import { createHash } from \"node:crypto\";\nimport { parse } from \"csv-parse/sync\";\nimport { type CountryCode, isSupportedCountry, parsePhoneNumberFromString } from \"libphonenumber-js\";\n\n/**\n * An audience's members, hashed here — on the agent's machine — so no raw\n * email or phone ever reaches Baker or ChatGPT Ads. The normalization is\n * ChatGPT Ads' own: an email trimmed and lowercased (dots and plus tags kept),\n * a phone in E.164; each is SHA-256 hex.\n */\n\nfunction sha256(value: string): string {\n return createHash(\"sha256\").update(value, \"utf8\").digest(\"hex\");\n}\n\n/**\n * One `@`, a dotted domain, and nothing that separates values — a cell holding\n * `ana@x.com;+34…` is two values run together, never an email to hash.\n */\nfunction normalizedEmail(value: string): string | undefined {\n const email = value.trim().toLowerCase();\n return /^[^@\\s;,|]+@[^@\\s;,|]+\\.[^@\\s;,|]+$/.test(email) ? email : undefined;\n}\n\nfunction normalizedPhone(value: string, defaultCountry: string | undefined): string | undefined {\n const country = defaultCountry && isSupportedCountry(defaultCountry) ? (defaultCountry as CountryCode) : undefined;\n const phone = parsePhoneNumberFromString(value.trim(), country);\n return phone?.isValid() ? phone.number : undefined;\n}\n\nexport function hashedMembers(input: {\n emails: readonly string[];\n phones: readonly string[];\n defaultCountry: string | undefined;\n}): { emailHashes: string[]; phoneHashes: string[]; rejected: string[] } {\n const rejected: string[] = [];\n const emailHashes = new Set<string>();\n const phoneHashes = new Set<string>();\n for (const value of input.emails) {\n const email = normalizedEmail(value);\n email ? emailHashes.add(sha256(email)) : rejected.push(value.trim());\n }\n for (const value of input.phones) {\n const phone = normalizedPhone(value, input.defaultCountry);\n phone ? phoneHashes.add(sha256(phone)) : rejected.push(value.trim());\n }\n return { emailHashes: [...emailHashes], phoneHashes: [...phoneHashes], rejected };\n}\n\n/** A header as its words: lowercased, accents and separators gone — \"Teléfono móvil\" is \"telefono movil\". */\nfunction headerWords(cell: string): string {\n return cell\n .normalize(\"NFD\")\n .replace(/\\p{Diacritic}/gu, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .trim();\n}\n\nconst EMAIL_HEADER = /\\b(e ?mail|correo|mail)\\b/;\nconst PHONE_HEADER = /\\b(phone|telefono|movil|mobile|tel|celular)\\b/;\n\n/**\n * A CSV with an email and/or phone column, or a plain list, one value per\n * line — whatever a marketer exported. A plain list is emails, or phones when\n * no line has an `@`.\n */\nexport function membersFromFile(content: string): { emails: string[]; phones: string[] } {\n // Excel writes `;` where the decimal comma is taken, tabs come from a copied sheet.\n const rows: string[][] = parse(content, {\n bom: true,\n skip_empty_lines: true,\n relax_column_count: true,\n trim: true,\n delimiter: [\",\", \";\", \"\\t\"],\n });\n const header = (rows[0] ?? []).map(headerWords);\n const emailColumn = header.findIndex((cell) => EMAIL_HEADER.test(cell));\n const phoneColumn = header.findIndex((cell) => !EMAIL_HEADER.test(cell) && PHONE_HEADER.test(cell));\n if (emailColumn >= 0 || phoneColumn >= 0) {\n const cells = (column: number) =>\n column < 0 ? [] : rows.slice(1).flatMap((row) => (row[column] ? [row[column]] : []));\n return { emails: cells(emailColumn), phones: cells(phoneColumn) };\n }\n const values = rows.flatMap((row) => (row[0] ? [row[0]] : []));\n return values.some((value) => value.includes(\"@\")) ? { emails: values, phones: [] } : { emails: [], phones: values };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,78 @@
1
+ import {
2
+ csvOrJson,
3
+ handleMetaError,
4
+ resolveAccountIdArg
5
+ } from "./chunk-2UFRHW3T.js";
6
+ import {
7
+ writeAdsJson,
8
+ writeAdsOutput
9
+ } from "./chunk-EIGXX6KI.js";
10
+ import {
11
+ NO_CACHE_ARG
12
+ } from "./chunk-ZNQRDLSS.js";
13
+ import {
14
+ apiGet
15
+ } from "./chunk-CUL3VB4L.js";
16
+ import "./chunk-6YYSUISH.js";
17
+ import "./chunk-I4FTS5EE.js";
18
+ import "./chunk-MYTDK3AL.js";
19
+ import "./chunk-YQSBHWOI.js";
20
+
21
+ // src/commands/ads/meta/audiences.ts
22
+ import { defineCommand } from "citty";
23
+ var listArgs = {
24
+ "account-id": { type: "string", description: "Meta ad account ID" },
25
+ limit: { type: "string", description: "Max rows" },
26
+ "no-cache": NO_CACHE_ARG,
27
+ output: { type: "string", description: "Output format", default: "json" }
28
+ };
29
+ var listCommand = defineCommand({
30
+ meta: {
31
+ name: "list",
32
+ description: "List custom audiences. Runs by default when no subcommand is given. Example: baker ads meta audiences --account-id act_123"
33
+ },
34
+ args: listArgs,
35
+ run: async ({ args }) => {
36
+ const accountId = resolveAccountIdArg(args);
37
+ try {
38
+ const params = { "account-id": accountId };
39
+ if (args.limit) params.limit = args.limit;
40
+ if (args["no-cache"]) params["skip-cache"] = "true";
41
+ const data = await apiGet("/api/ads/meta/audiences", params);
42
+ const fmt = csvOrJson(args);
43
+ if (fmt !== "json") {
44
+ writeAdsOutput(data, fmt);
45
+ return;
46
+ }
47
+ writeAdsJson({ ok: true, data });
48
+ } catch (err) {
49
+ handleMetaError(err);
50
+ }
51
+ }
52
+ });
53
+ var audiencesCommand = defineCommand({
54
+ meta: {
55
+ name: "audiences",
56
+ description: `List custom audiences, or stage writes (create/update). Write subcommands stage ops on this chat's draft.
57
+ Includes lookalikes, website-pixel audiences, customer-file audiences. Meta hides exact size when count < 1000.
58
+
59
+ Examples:
60
+ baker ads meta audiences --account-id act_123
61
+ baker ads meta audiences create --name "Site 30d" --subtype WEBSITE --file rule.json`
62
+ },
63
+ subCommands: {
64
+ list: listCommand,
65
+ create: () => import("./write-commands-DA6FIFAO.js").then((m) => m.audiencesCreateCommand),
66
+ update: () => import("./write-commands-DA6FIFAO.js").then((m) => m.audiencesUpdateCommand)
67
+ },
68
+ // `args` stays even though the parent has no `run`: citty scans rawArgs for the
69
+ // subcommand name using THIS command's arg defs, so without them `--account-id act_1`
70
+ // would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare
71
+ // invocation — citty falls through to `run` after a subcommand, double-executing it.
72
+ args: listArgs,
73
+ default: "list"
74
+ });
75
+ export {
76
+ audiencesCommand
77
+ };
78
+ //# sourceMappingURL=audiences-6QOCASVV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/meta/audiences.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { csvOrJson, handleMetaError, resolveAccountIdArg } from \"./shared.ts\";\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID\" },\n limit: { type: \"string\", description: \"Max rows\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"Output format\", default: \"json\" },\n} as const;\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List custom audiences. Runs by default when no subcommand is given. Example: baker ads meta audiences --account-id act_123\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args.limit) params.limit = args.limit as string;\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<Array<Record<string, unknown>>>(\"/api/ads/meta/audiences\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const audiencesCommand = defineCommand({\n meta: {\n name: \"audiences\",\n description: `List custom audiences, or stage writes (create/update). Write subcommands stage ops on this chat's draft.\nIncludes lookalikes, website-pixel audiences, customer-file audiences. Meta hides exact size when count < 1000.\n\nExamples:\n baker ads meta audiences --account-id act_123\n baker ads meta audiences create --name \"Site 30d\" --subtype WEBSITE --file rule.json`,\n },\n subCommands: {\n list: listCommand,\n create: () => import(\"./write-commands.ts\").then((m) => m.audiencesCreateCommand),\n update: () => import(\"./write-commands.ts\").then((m) => m.audiencesUpdateCommand),\n },\n // `args` stays even though the parent has no `run`: citty scans rawArgs for the\n // subcommand name using THIS command's arg defs, so without them `--account-id act_1`\n // would read `act_1` as a subcommand. `default` (not `run`) dispatches the bare\n // invocation — citty falls through to `run` after a subcommand, double-executing it.\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAM9B,IAAM,WAAW;AAAA,EACf,cAAc,EAAE,MAAM,UAAU,aAAa,qBAAqB;AAAA,EAClE,OAAO,EAAE,MAAM,UAAU,aAAa,WAAW;AAAA,EACjD,YAAY;AAAA,EACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,iBAAiB,SAAS,OAAO;AAC1E;AAEA,IAAM,cAAc,cAAc;AAAA,EAChC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,EACN,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,UAAI,KAAK,MAAO,QAAO,QAAQ,KAAK;AACpC,UAAI,KAAK,UAAU,EAAG,QAAO,YAAY,IAAI;AAC7C,YAAM,OAAO,MAAM,OAAuC,2BAA2B,MAAM;AAC3F,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,MAAM,GAAG;AACxB;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,sBAAgB,GAAG;AAAA,IACrB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,mBAAmB,cAAc;AAAA,EAC5C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMf;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB;AAAA,IAChF,QAAQ,MAAM,OAAO,8BAAqB,EAAE,KAAK,CAAC,MAAM,EAAE,sBAAsB;AAAA,EAClF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AAAA,EACN,SAAS;AACX,CAAC;","names":[]}
@@ -0,0 +1,85 @@
1
+ import {
2
+ parseXApiError
3
+ } from "./chunk-M6UNISGO.js";
4
+ import {
5
+ resolveXAccountId
6
+ } from "./chunk-FMGW2NZI.js";
7
+ import {
8
+ cacheGet,
9
+ cacheSet,
10
+ writeAdsJson,
11
+ writeAdsOutput
12
+ } from "./chunk-EIGXX6KI.js";
13
+ import {
14
+ ApiError,
15
+ apiGet
16
+ } from "./chunk-CUL3VB4L.js";
17
+ import "./chunk-6YYSUISH.js";
18
+ import "./chunk-I4FTS5EE.js";
19
+ import {
20
+ registerSchema
21
+ } from "./chunk-MYTDK3AL.js";
22
+ import "./chunk-YQSBHWOI.js";
23
+
24
+ // src/commands/ads/x/audiences.ts
25
+ import { defineCommand } from "citty";
26
+ registerSchema({
27
+ command: "ads.x.audiences",
28
+ description: "List custom audiences for an X Ads account. Returns id, name, audience_size, audience_type, targetable status. Audiences need 100+ active users in the past 90 days to be targetable.",
29
+ args: {
30
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
31
+ "no-cache": { type: "boolean", description: "Skip cache", required: false },
32
+ output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
33
+ }
34
+ });
35
+ var audiencesCommand = defineCommand({
36
+ meta: {
37
+ name: "audiences",
38
+ description: `List X Ads custom audiences.
39
+
40
+ Examples:
41
+ baker ads x audiences --account-id 18ce53xyz`
42
+ },
43
+ args: {
44
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
45
+ "no-cache": { type: "boolean", description: "Skip cache", required: false },
46
+ output: { type: "string", description: "Format: json|csv|md", required: false, default: "json" }
47
+ },
48
+ run: async ({ args }) => {
49
+ const accountId = await resolveXAccountId(args);
50
+ const useCache = !args["no-cache"];
51
+ const cacheKey = `audiences:${accountId}`;
52
+ if (useCache) {
53
+ const cached = cacheGet("x-account-data", cacheKey);
54
+ if (cached) {
55
+ writeAdsJson({ ok: true, data: cached.data, cached: true });
56
+ return;
57
+ }
58
+ }
59
+ try {
60
+ const params = { "account-id": accountId };
61
+ if (!useCache) params["skip-cache"] = "true";
62
+ const data = await apiGet("/api/ads/x/custom-audiences", params);
63
+ if (useCache) {
64
+ cacheSet("x-account-data", cacheKey, data, 6 * 60 * 60 * 1e3);
65
+ }
66
+ const format = args.output || "json";
67
+ if (format !== "json") {
68
+ writeAdsOutput(data, format);
69
+ return;
70
+ }
71
+ writeAdsJson({ ok: true, data });
72
+ } catch (err) {
73
+ if (err instanceof ApiError) {
74
+ writeAdsJson(parseXApiError(err.message, accountId));
75
+ process.exit(1);
76
+ }
77
+ writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
78
+ process.exit(1);
79
+ }
80
+ }
81
+ });
82
+ export {
83
+ audiencesCommand
84
+ };
85
+ //# sourceMappingURL=audiences-O67NGIP5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/x/audiences.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { ApiError, apiGet } from \"../../../client.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { cacheGet, cacheSet } from \"../cache.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { parseXApiError } from \"./error-parser.ts\";\nimport { resolveXAccountId } from \"./output.ts\";\n\nregisterSchema({\n command: \"ads.x.audiences\",\n description:\n \"List custom audiences for an X Ads account. Returns id, name, audience_size, audience_type, targetable status. Audiences need 100+ active users in the past 90 days to be targetable.\",\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|md\", required: false, default: \"json\" },\n },\n});\n\nexport const audiencesCommand = defineCommand({\n meta: {\n name: \"audiences\",\n description: `List X Ads custom audiences.\n\nExamples:\n baker ads x audiences --account-id 18ce53xyz`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip cache\", required: false },\n output: { type: \"string\", description: \"Format: json|csv|md\", required: false, default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = await resolveXAccountId(args);\n const useCache = !args[\"no-cache\"];\n const cacheKey = `audiences:${accountId}`;\n\n if (useCache) {\n const cached = cacheGet<unknown[]>(\"x-account-data\", cacheKey);\n if (cached) {\n writeAdsJson({ ok: true, data: cached.data, cached: true });\n return;\n }\n }\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (!useCache) params[\"skip-cache\"] = \"true\";\n const data = await apiGet<unknown[]>(\"/api/ads/x/custom-audiences\", params);\n if (useCache) {\n cacheSet(\"x-account-data\", cacheKey, data, 6 * 60 * 60 * 1000);\n }\n const format = (args.output as string) || \"json\";\n if (format !== \"json\") {\n writeAdsOutput(data as Array<Record<string, unknown>>, format);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n if (err instanceof ApiError) {\n writeAdsJson(parseXApiError(err.message, accountId));\n process.exit(1);\n }\n writeAdsJson({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AAQ9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,oBAAoB,UAAU,MAAM;AAAA,IACjF,YAAY,EAAE,MAAM,WAAW,aAAa,cAAc,UAAU,MAAM;AAAA,IAC1E,QAAQ,EAAE,MAAM,UAAU,aAAa,uBAAuB,UAAU,OAAO,SAAS,OAAO;AAAA,EACjG;AACF,CAAC;AAEM,IAAM,mBAAmB,cAAc;AAAA,EAC5C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA,EAIf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,oBAAoB,UAAU,MAAM;AAAA,IACjF,YAAY,EAAE,MAAM,WAAW,aAAa,cAAc,UAAU,MAAM;AAAA,IAC1E,QAAQ,EAAE,MAAM,UAAU,aAAa,uBAAuB,UAAU,OAAO,SAAS,OAAO;AAAA,EACjG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,MAAM,kBAAkB,IAAI;AAC9C,UAAM,WAAW,CAAC,KAAK,UAAU;AACjC,UAAM,WAAW,aAAa,SAAS;AAEvC,QAAI,UAAU;AACZ,YAAM,SAAS,SAAoB,kBAAkB,QAAQ;AAC7D,UAAI,QAAQ;AACV,qBAAa,EAAE,IAAI,MAAM,MAAM,OAAO,MAAM,QAAQ,KAAK,CAAC;AAC1D;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,UAAI,CAAC,SAAU,QAAO,YAAY,IAAI;AACtC,YAAM,OAAO,MAAM,OAAkB,+BAA+B,MAAM;AAC1E,UAAI,UAAU;AACZ,iBAAS,kBAAkB,UAAU,MAAM,IAAI,KAAK,KAAK,GAAI;AAAA,MAC/D;AACA,YAAM,SAAU,KAAK,UAAqB;AAC1C,UAAI,WAAW,QAAQ;AACrB,uBAAe,MAAwC,MAAM;AAC7D;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,UAAI,eAAe,UAAU;AAC3B,qBAAa,eAAe,IAAI,SAAS,SAAS,CAAC;AACnD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,mBAAa,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,iBAAiB,SAAS,mBAAmB,EAAE,CAAC;AACzF,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":[]}