@koda-sl/baker-cli 0.386.0-dev.4e118c09a → 0.386.0-dev.d6e55699d

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 (967) hide show
  1. package/README.md +1057 -215
  2. package/canvas/tiktok-captions-composition/index.html +5 -6
  3. package/canvas/tiktok-captions-composition/meta.json +5 -0
  4. package/dist/account-5TGX45FO.js +79 -0
  5. package/dist/account-5TGX45FO.js.map +1 -0
  6. package/dist/account-CLOKMTTC.js +49 -0
  7. package/dist/account-CLOKMTTC.js.map +1 -0
  8. package/dist/account-XFK6VX2R.js +80 -0
  9. package/dist/account-XFK6VX2R.js.map +1 -0
  10. package/dist/account-reads-ZK5RMLB2.js +218 -0
  11. package/dist/account-reads-ZK5RMLB2.js.map +1 -0
  12. package/dist/account-writes-Y7EQXDXF.js +66 -0
  13. package/dist/account-writes-Y7EQXDXF.js.map +1 -0
  14. package/dist/accounts-7YD457YN.js +114 -0
  15. package/dist/accounts-7YD457YN.js.map +1 -0
  16. package/dist/accounts-BJ3X5JQT.js +115 -0
  17. package/dist/accounts-BJ3X5JQT.js.map +1 -0
  18. package/dist/accounts-HGAFFOA7.js +77 -0
  19. package/dist/accounts-HGAFFOA7.js.map +1 -0
  20. package/dist/accounts-OWMXUT6D.js +611 -0
  21. package/dist/accounts-OWMXUT6D.js.map +1 -0
  22. package/dist/accounts-RYBDLQ6H.js +75 -0
  23. package/dist/accounts-RYBDLQ6H.js.map +1 -0
  24. package/dist/actions-NSQYW7YS.js +55 -0
  25. package/dist/actions-NSQYW7YS.js.map +1 -0
  26. package/dist/active-entities-R6GZIO6Z.js +103 -0
  27. package/dist/active-entities-R6GZIO6Z.js.map +1 -0
  28. package/dist/activities-ESBF3GFS.js +74 -0
  29. package/dist/activities-ESBF3GFS.js.map +1 -0
  30. package/dist/ad-group-writes-I225OYDZ.js +170 -0
  31. package/dist/ad-group-writes-I225OYDZ.js.map +1 -0
  32. package/dist/ad-groups-O35MWNF6.js +68 -0
  33. package/dist/ad-groups-O35MWNF6.js.map +1 -0
  34. package/dist/ad-writes-SS5YZO5W.js +174 -0
  35. package/dist/ad-writes-SS5YZO5W.js.map +1 -0
  36. package/dist/add-HWIE5PGR.js +302 -0
  37. package/dist/add-HWIE5PGR.js.map +1 -0
  38. package/dist/add-IIW3NHZH.js +104 -0
  39. package/dist/add-IIW3NHZH.js.map +1 -0
  40. package/dist/add-QZHAWUBA.js +97 -0
  41. package/dist/add-QZHAWUBA.js.map +1 -0
  42. package/dist/add-TGQIVVXH.js +105 -0
  43. package/dist/add-TGQIVVXH.js.map +1 -0
  44. package/dist/add-accounts-6QYPOPR2.js +91 -0
  45. package/dist/add-accounts-6QYPOPR2.js.map +1 -0
  46. package/dist/ads-AUSRB4GU.js +128 -0
  47. package/dist/ads-AUSRB4GU.js.map +1 -0
  48. package/dist/ads-COYOTEKE.js +77 -0
  49. package/dist/ads-COYOTEKE.js.map +1 -0
  50. package/dist/ads-D6KKCQ3Q.js +40 -0
  51. package/dist/ads-D6KKCQ3Q.js.map +1 -0
  52. package/dist/ads-QKIHHXP5.js +113 -0
  53. package/dist/ads-QKIHHXP5.js.map +1 -0
  54. package/dist/adsets-7WMWU45E.js +176 -0
  55. package/dist/adsets-7WMWU45E.js.map +1 -0
  56. package/dist/advertisers-6NZ2M57X.js +120 -0
  57. package/dist/advertisers-6NZ2M57X.js.map +1 -0
  58. package/dist/advertisers-BCGKUMEH.js +125 -0
  59. package/dist/advertisers-BCGKUMEH.js.map +1 -0
  60. package/dist/analytics-QJC2BTZY.js +433 -0
  61. package/dist/analytics-QJC2BTZY.js.map +1 -0
  62. package/dist/analytics-SN6K7J7M.js +1980 -0
  63. package/dist/analytics-SN6K7J7M.js.map +1 -0
  64. package/dist/animate-JXIT77Y5.js +480 -0
  65. package/dist/animate-JXIT77Y5.js.map +1 -0
  66. package/dist/assign-XFDA42KL.js +77 -0
  67. package/dist/assign-XFDA42KL.js.map +1 -0
  68. package/dist/audience-size-DJPFYHPJ.js +94 -0
  69. package/dist/audience-size-DJPFYHPJ.js.map +1 -0
  70. package/dist/audiences-DC3IOG34.js +85 -0
  71. package/dist/audiences-DC3IOG34.js.map +1 -0
  72. package/dist/audiences-NEW3LLQR.js +268 -0
  73. package/dist/audiences-NEW3LLQR.js.map +1 -0
  74. package/dist/audiences-VXTIBZP6.js +78 -0
  75. package/dist/audiences-VXTIBZP6.js.map +1 -0
  76. package/dist/audit-M5B7TZGT.js +151 -0
  77. package/dist/audit-M5B7TZGT.js.map +1 -0
  78. package/dist/audit-UIPMTI5C.js +88 -0
  79. package/dist/audit-UIPMTI5C.js.map +1 -0
  80. package/dist/autocomplete-NWHEASQY.js +111 -0
  81. package/dist/autocomplete-NWHEASQY.js.map +1 -0
  82. package/dist/avatars-RNMUVMFM.js +38 -0
  83. package/dist/avatars-RNMUVMFM.js.map +1 -0
  84. package/dist/bid-pricing-EAY3HAHY.js +99 -0
  85. package/dist/bid-pricing-EAY3HAHY.js.map +1 -0
  86. package/dist/brand-XBHWYPMT.js +22 -0
  87. package/dist/brand-XBHWYPMT.js.map +1 -0
  88. package/dist/brief-XBAAPKRR.js +492 -0
  89. package/dist/brief-XBAAPKRR.js.map +1 -0
  90. package/dist/businesses-J7OP7MSK.js +53 -0
  91. package/dist/businesses-J7OP7MSK.js.map +1 -0
  92. package/dist/campaign-groups-7KA2RA5V.js +95 -0
  93. package/dist/campaign-groups-7KA2RA5V.js.map +1 -0
  94. package/dist/campaign-writes-5XA727KI.js +170 -0
  95. package/dist/campaign-writes-5XA727KI.js.map +1 -0
  96. package/dist/campaign-writes-D2UID2I6.js +165 -0
  97. package/dist/campaign-writes-D2UID2I6.js.map +1 -0
  98. package/dist/campaigns-JPYNVFQI.js +76 -0
  99. package/dist/campaigns-JPYNVFQI.js.map +1 -0
  100. package/dist/campaigns-NJ3KOPJS.js +107 -0
  101. package/dist/campaigns-NJ3KOPJS.js.map +1 -0
  102. package/dist/campaigns-QUTTH2TB.js +110 -0
  103. package/dist/campaigns-QUTTH2TB.js.map +1 -0
  104. package/dist/campaigns-SOO5RHYG.js +109 -0
  105. package/dist/campaigns-SOO5RHYG.js.map +1 -0
  106. package/dist/canvas-3VZ46BCF.js +46 -0
  107. package/dist/canvas-3VZ46BCF.js.map +1 -0
  108. package/dist/capabilities-KAYDPH7E.js +144 -0
  109. package/dist/capabilities-KAYDPH7E.js.map +1 -0
  110. package/dist/cards-7H32TNMO.js +85 -0
  111. package/dist/cards-7H32TNMO.js.map +1 -0
  112. package/dist/catalog-OTICZPJA.js +64 -0
  113. package/dist/catalog-OTICZPJA.js.map +1 -0
  114. package/dist/catalogs-ABCQLCDU.js +128 -0
  115. package/dist/catalogs-ABCQLCDU.js.map +1 -0
  116. package/dist/changes-22EO52IY.js +135 -0
  117. package/dist/changes-22EO52IY.js.map +1 -0
  118. package/dist/chatgpt-B3NHRJUE.js +47 -0
  119. package/dist/chatgpt-B3NHRJUE.js.map +1 -0
  120. package/dist/chats-QG3IRHOD.js +262 -0
  121. package/dist/chats-QG3IRHOD.js.map +1 -0
  122. package/dist/chunk-2CV7LX23.js +474 -0
  123. package/dist/chunk-2CV7LX23.js.map +1 -0
  124. package/dist/chunk-2SQJL7ZN.js +56 -0
  125. package/dist/chunk-2SQJL7ZN.js.map +1 -0
  126. package/dist/chunk-2Y5V23PU.js +29 -0
  127. package/dist/chunk-2Y5V23PU.js.map +1 -0
  128. package/dist/chunk-32CPGJPL.js +149 -0
  129. package/dist/chunk-32CPGJPL.js.map +1 -0
  130. package/dist/chunk-32PSERWG.js +363 -0
  131. package/dist/chunk-32PSERWG.js.map +1 -0
  132. package/dist/chunk-3ACMDRSE.js +39 -0
  133. package/dist/chunk-3ACMDRSE.js.map +1 -0
  134. package/dist/chunk-3UDSYYND.js +42 -0
  135. package/dist/chunk-3UDSYYND.js.map +1 -0
  136. package/dist/chunk-3V5E5SVE.js +382 -0
  137. package/dist/chunk-3V5E5SVE.js.map +1 -0
  138. package/dist/chunk-455BTAHM.js +57 -0
  139. package/dist/chunk-455BTAHM.js.map +1 -0
  140. package/dist/chunk-4MH6LONO.js +274 -0
  141. package/dist/chunk-4MH6LONO.js.map +1 -0
  142. package/dist/chunk-4NZ47VXO.js +137 -0
  143. package/dist/chunk-4NZ47VXO.js.map +1 -0
  144. package/dist/chunk-4OBO75XU.js +275 -0
  145. package/dist/chunk-4OBO75XU.js.map +1 -0
  146. package/dist/chunk-5HYSKH77.js +315 -0
  147. package/dist/chunk-5HYSKH77.js.map +1 -0
  148. package/dist/chunk-5MBPIONY.js +29 -0
  149. package/dist/chunk-5MBPIONY.js.map +1 -0
  150. package/dist/chunk-5OVOLYY3.js +74 -0
  151. package/dist/chunk-5OVOLYY3.js.map +1 -0
  152. package/dist/chunk-66USKCVY.js +4410 -0
  153. package/dist/chunk-66USKCVY.js.map +1 -0
  154. package/dist/chunk-6I7SYEYN.js +166 -0
  155. package/dist/chunk-6I7SYEYN.js.map +1 -0
  156. package/dist/chunk-6O7ISBC7.js +65 -0
  157. package/dist/chunk-6O7ISBC7.js.map +1 -0
  158. package/dist/chunk-752S7JF6.js +35 -0
  159. package/dist/chunk-752S7JF6.js.map +1 -0
  160. package/dist/chunk-AFJGYJ7Z.js +45 -0
  161. package/dist/chunk-AFJGYJ7Z.js.map +1 -0
  162. package/dist/chunk-AR7PU7BB.js +76 -0
  163. package/dist/chunk-AR7PU7BB.js.map +1 -0
  164. package/dist/chunk-ASL7JFBD.js +96 -0
  165. package/dist/chunk-ASL7JFBD.js.map +1 -0
  166. package/dist/chunk-AUCITRRT.js +310 -0
  167. package/dist/chunk-AUCITRRT.js.map +1 -0
  168. package/dist/chunk-AUSKKFVH.js +84 -0
  169. package/dist/chunk-AUSKKFVH.js.map +1 -0
  170. package/dist/chunk-BEGARAVC.js +174 -0
  171. package/dist/chunk-BEGARAVC.js.map +1 -0
  172. package/dist/{chunk-WWCLT3RG.js → chunk-BVM5IRZW.js} +16 -8
  173. package/dist/chunk-BVM5IRZW.js.map +1 -0
  174. package/dist/chunk-CAMX6OHF.js +3182 -0
  175. package/dist/chunk-CAMX6OHF.js.map +1 -0
  176. package/dist/chunk-CKI3RLMU.js +159 -0
  177. package/dist/chunk-CKI3RLMU.js.map +1 -0
  178. package/dist/chunk-CZENWCBS.js +333 -0
  179. package/dist/chunk-CZENWCBS.js.map +1 -0
  180. package/dist/chunk-D5FY4FAK.js +24 -0
  181. package/dist/chunk-D5FY4FAK.js.map +1 -0
  182. package/dist/chunk-DGCUPJZD.js +39 -0
  183. package/dist/chunk-DGCUPJZD.js.map +1 -0
  184. package/dist/chunk-DIICZGIS.js +509 -0
  185. package/dist/chunk-DIICZGIS.js.map +1 -0
  186. package/dist/chunk-DNCLWSHO.js +41 -0
  187. package/dist/chunk-DNCLWSHO.js.map +1 -0
  188. package/dist/chunk-DX4GIDO7.js +296 -0
  189. package/dist/chunk-DX4GIDO7.js.map +1 -0
  190. package/dist/chunk-DYZJBWT2.js +1079 -0
  191. package/dist/chunk-DYZJBWT2.js.map +1 -0
  192. package/dist/chunk-EDLZGTGN.js +216 -0
  193. package/dist/chunk-EDLZGTGN.js.map +1 -0
  194. package/dist/chunk-EDNX3AOS.js +76 -0
  195. package/dist/chunk-EDNX3AOS.js.map +1 -0
  196. package/dist/chunk-EF5DP6EB.js +52 -0
  197. package/dist/chunk-EF5DP6EB.js.map +1 -0
  198. package/dist/chunk-EQEZAYPL.js +541 -0
  199. package/dist/chunk-EQEZAYPL.js.map +1 -0
  200. package/dist/chunk-ERSX3MKH.js +34 -0
  201. package/dist/chunk-ERSX3MKH.js.map +1 -0
  202. package/dist/chunk-FKOECEVC.js +126 -0
  203. package/dist/chunk-FKOECEVC.js.map +1 -0
  204. package/dist/chunk-FYWWTMXP.js +2902 -0
  205. package/dist/chunk-FYWWTMXP.js.map +1 -0
  206. package/dist/chunk-G7AFVTUS.js +106 -0
  207. package/dist/chunk-G7AFVTUS.js.map +1 -0
  208. package/dist/chunk-GIW7ABMM.js +74 -0
  209. package/dist/chunk-GIW7ABMM.js.map +1 -0
  210. package/dist/chunk-GIWHHCD6.js +145 -0
  211. package/dist/chunk-GIWHHCD6.js.map +1 -0
  212. package/dist/chunk-GOJXKIFQ.js +1605 -0
  213. package/dist/chunk-GOJXKIFQ.js.map +1 -0
  214. package/dist/chunk-GPXIUYIA.js +592 -0
  215. package/dist/chunk-GPXIUYIA.js.map +1 -0
  216. package/dist/chunk-GRQ2AXDX.js +9 -0
  217. package/dist/chunk-GRQ2AXDX.js.map +1 -0
  218. package/dist/chunk-GXDLWBOY.js +73 -0
  219. package/dist/chunk-GXDLWBOY.js.map +1 -0
  220. package/dist/chunk-H7MLHG2I.js +94 -0
  221. package/dist/chunk-H7MLHG2I.js.map +1 -0
  222. package/dist/chunk-HAE4WWFQ.js +455 -0
  223. package/dist/chunk-HAE4WWFQ.js.map +1 -0
  224. package/dist/chunk-HB3LNR4Y.js +197 -0
  225. package/dist/chunk-HB3LNR4Y.js.map +1 -0
  226. package/dist/chunk-HDHWIEJJ.js +136 -0
  227. package/dist/chunk-HDHWIEJJ.js.map +1 -0
  228. package/dist/chunk-HJTIBTF7.js +98 -0
  229. package/dist/chunk-HJTIBTF7.js.map +1 -0
  230. package/dist/{chunk-VZEDAFAR.js → chunk-HLXWKMTK.js} +47 -8
  231. package/dist/chunk-HLXWKMTK.js.map +1 -0
  232. package/dist/{chunk-MF7YA62W.js → chunk-HREWXNTO.js} +10 -5
  233. package/dist/chunk-HREWXNTO.js.map +1 -0
  234. package/dist/chunk-HVJUMQYY.js +494 -0
  235. package/dist/chunk-HVJUMQYY.js.map +1 -0
  236. package/dist/chunk-I3DIZWN5.js +97 -0
  237. package/dist/chunk-I3DIZWN5.js.map +1 -0
  238. package/dist/chunk-IJMWEO4P.js +57 -0
  239. package/dist/chunk-IJMWEO4P.js.map +1 -0
  240. package/dist/chunk-IMORFIUT.js +207 -0
  241. package/dist/chunk-IMORFIUT.js.map +1 -0
  242. package/dist/chunk-IOCSDFF2.js +23992 -0
  243. package/dist/chunk-IOCSDFF2.js.map +1 -0
  244. package/dist/chunk-IRTYTT5D.js +665 -0
  245. package/dist/chunk-IRTYTT5D.js.map +1 -0
  246. package/dist/chunk-IVIJJXXT.js +62 -0
  247. package/dist/chunk-IVIJJXXT.js.map +1 -0
  248. package/dist/chunk-J57GWTPK.js +106 -0
  249. package/dist/chunk-J57GWTPK.js.map +1 -0
  250. package/dist/chunk-JAYT43KX.js +4227 -0
  251. package/dist/chunk-JAYT43KX.js.map +1 -0
  252. package/dist/chunk-JPK34QPS.js +134 -0
  253. package/dist/chunk-JPK34QPS.js.map +1 -0
  254. package/dist/chunk-JRCFCIE3.js +188 -0
  255. package/dist/chunk-JRCFCIE3.js.map +1 -0
  256. package/dist/chunk-JRGPCPT2.js +479 -0
  257. package/dist/chunk-JRGPCPT2.js.map +1 -0
  258. package/dist/chunk-JUAIGJ2A.js +76 -0
  259. package/dist/chunk-JUAIGJ2A.js.map +1 -0
  260. package/dist/chunk-K2RYUZ5Y.js +51 -0
  261. package/dist/chunk-K2RYUZ5Y.js.map +1 -0
  262. package/dist/chunk-K5OQES4V.js +58 -0
  263. package/dist/chunk-K5OQES4V.js.map +1 -0
  264. package/dist/chunk-KAHMADFH.js +455 -0
  265. package/dist/chunk-KAHMADFH.js.map +1 -0
  266. package/dist/chunk-KIGGMKAE.js +66 -0
  267. package/dist/chunk-KIGGMKAE.js.map +1 -0
  268. package/dist/chunk-KKJ4KJCW.js +29 -0
  269. package/dist/chunk-KKJ4KJCW.js.map +1 -0
  270. package/dist/chunk-KLK6KQLQ.js +55 -0
  271. package/dist/chunk-KLK6KQLQ.js.map +1 -0
  272. package/dist/chunk-KRIK2JR4.js +6212 -0
  273. package/dist/chunk-KRIK2JR4.js.map +1 -0
  274. package/dist/chunk-KZUHRZ2C.js +5187 -0
  275. package/dist/chunk-KZUHRZ2C.js.map +1 -0
  276. package/dist/chunk-L5WIRYNB.js +19 -0
  277. package/dist/chunk-L5WIRYNB.js.map +1 -0
  278. package/dist/chunk-LA6PPSNA.js +65 -0
  279. package/dist/chunk-LA6PPSNA.js.map +1 -0
  280. package/dist/chunk-LEIQAHWF.js +25 -0
  281. package/dist/chunk-LEIQAHWF.js.map +1 -0
  282. package/dist/chunk-LWBWCIWL.js +297 -0
  283. package/dist/chunk-LWBWCIWL.js.map +1 -0
  284. package/dist/chunk-M4PPFVYL.js +346 -0
  285. package/dist/chunk-M4PPFVYL.js.map +1 -0
  286. package/dist/chunk-M6UNISGO.js +66 -0
  287. package/dist/chunk-M6UNISGO.js.map +1 -0
  288. package/dist/chunk-MGKHFGLV.js +75 -0
  289. package/dist/chunk-MGKHFGLV.js.map +1 -0
  290. package/dist/chunk-MUVSWFLL.js +111 -0
  291. package/dist/chunk-MUVSWFLL.js.map +1 -0
  292. package/dist/chunk-NFSLRRIE.js +77 -0
  293. package/dist/chunk-NFSLRRIE.js.map +1 -0
  294. package/dist/chunk-NHU33T2S.js +60 -0
  295. package/dist/chunk-NHU33T2S.js.map +1 -0
  296. package/dist/chunk-O6QKCJE4.js +455 -0
  297. package/dist/chunk-O6QKCJE4.js.map +1 -0
  298. package/dist/chunk-OBNWER4H.js +1599 -0
  299. package/dist/chunk-OBNWER4H.js.map +1 -0
  300. package/dist/chunk-OFFAMC5H.js +225 -0
  301. package/dist/chunk-OFFAMC5H.js.map +1 -0
  302. package/dist/chunk-P4NSJS54.js +20 -0
  303. package/dist/chunk-P4NSJS54.js.map +1 -0
  304. package/dist/chunk-P5T7OZKV.js +26 -0
  305. package/dist/chunk-P5T7OZKV.js.map +1 -0
  306. package/dist/chunk-PAHLJMC3.js +175 -0
  307. package/dist/chunk-PAHLJMC3.js.map +1 -0
  308. package/dist/chunk-PBVLPFJ6.js +169 -0
  309. package/dist/chunk-PBVLPFJ6.js.map +1 -0
  310. package/dist/chunk-PFBQERWX.js +10 -0
  311. package/dist/chunk-PFBQERWX.js.map +1 -0
  312. package/dist/chunk-Q6ULQMWG.js +41 -0
  313. package/dist/chunk-Q6ULQMWG.js.map +1 -0
  314. package/dist/chunk-QKE7GXZ7.js +6683 -0
  315. package/dist/chunk-QKE7GXZ7.js.map +1 -0
  316. package/dist/chunk-QL573PLH.js +150 -0
  317. package/dist/chunk-QL573PLH.js.map +1 -0
  318. package/dist/chunk-QO23YHLK.js +84 -0
  319. package/dist/chunk-QO23YHLK.js.map +1 -0
  320. package/dist/chunk-R5OQM7FF.js +179 -0
  321. package/dist/chunk-R5OQM7FF.js.map +1 -0
  322. package/dist/chunk-RDLB54KF.js +629 -0
  323. package/dist/chunk-RDLB54KF.js.map +1 -0
  324. package/dist/chunk-RGIXQEGJ.js +502 -0
  325. package/dist/chunk-RGIXQEGJ.js.map +1 -0
  326. package/dist/chunk-RRIAHUWP.js +304 -0
  327. package/dist/chunk-RRIAHUWP.js.map +1 -0
  328. package/dist/chunk-S4LZ7KTG.js +160 -0
  329. package/dist/chunk-S4LZ7KTG.js.map +1 -0
  330. package/dist/chunk-SHTESUB6.js +1442 -0
  331. package/dist/chunk-SHTESUB6.js.map +1 -0
  332. package/dist/chunk-SLB46MSS.js +64 -0
  333. package/dist/chunk-SLB46MSS.js.map +1 -0
  334. package/dist/chunk-T7M4WFNV.js +172 -0
  335. package/dist/chunk-T7M4WFNV.js.map +1 -0
  336. package/dist/{chunk-JTZXQRXI.js → chunk-TPXI2GCW.js} +4 -4
  337. package/dist/chunk-TWNFQUBS.js +23 -0
  338. package/dist/chunk-TWNFQUBS.js.map +1 -0
  339. package/dist/chunk-U6VRBDNQ.js +1830 -0
  340. package/dist/chunk-U6VRBDNQ.js.map +1 -0
  341. package/dist/chunk-U7BBXM67.js +1743 -0
  342. package/dist/chunk-U7BBXM67.js.map +1 -0
  343. package/dist/chunk-UI6BKYQD.js +225 -0
  344. package/dist/chunk-UI6BKYQD.js.map +1 -0
  345. package/dist/chunk-USL5ARRE.js +26 -0
  346. package/dist/chunk-USL5ARRE.js.map +1 -0
  347. package/dist/chunk-UYC45JNS.js +139 -0
  348. package/dist/chunk-UYC45JNS.js.map +1 -0
  349. package/dist/chunk-V5GSRREZ.js +846 -0
  350. package/dist/chunk-V5GSRREZ.js.map +1 -0
  351. package/dist/chunk-V5HDRJQW.js +337 -0
  352. package/dist/chunk-V5HDRJQW.js.map +1 -0
  353. package/dist/chunk-VS4C7VAR.js +533 -0
  354. package/dist/chunk-VS4C7VAR.js.map +1 -0
  355. package/dist/chunk-W4W4ZRBP.js +191 -0
  356. package/dist/chunk-W4W4ZRBP.js.map +1 -0
  357. package/dist/chunk-WIRBRCTJ.js +228 -0
  358. package/dist/chunk-WIRBRCTJ.js.map +1 -0
  359. package/dist/chunk-WN4KX7GE.js +25 -0
  360. package/dist/chunk-WN4KX7GE.js.map +1 -0
  361. package/dist/chunk-WNFTXSGR.js +111 -0
  362. package/dist/chunk-WNFTXSGR.js.map +1 -0
  363. package/dist/chunk-WOTDHRNF.js +2109 -0
  364. package/dist/chunk-WOTDHRNF.js.map +1 -0
  365. package/dist/chunk-WPKOEFOE.js +103 -0
  366. package/dist/chunk-WPKOEFOE.js.map +1 -0
  367. package/dist/chunk-XE3WS3QE.js +183 -0
  368. package/dist/chunk-XE3WS3QE.js.map +1 -0
  369. package/dist/chunk-XGWKTYXQ.js +67 -0
  370. package/dist/chunk-XGWKTYXQ.js.map +1 -0
  371. package/dist/chunk-XIGIJJSF.js +66 -0
  372. package/dist/chunk-XIGIJJSF.js.map +1 -0
  373. package/dist/chunk-XNUXB63I.js +817 -0
  374. package/dist/chunk-XNUXB63I.js.map +1 -0
  375. package/dist/chunk-XQ3CCNJD.js +610 -0
  376. package/dist/chunk-XQ3CCNJD.js.map +1 -0
  377. package/dist/chunk-Y362QH54.js +98 -0
  378. package/dist/chunk-Y362QH54.js.map +1 -0
  379. package/dist/chunk-Y4HZNSBN.js +3151 -0
  380. package/dist/chunk-Y4HZNSBN.js.map +1 -0
  381. package/dist/chunk-Y4T6ATDQ.js +74 -0
  382. package/dist/chunk-Y4T6ATDQ.js.map +1 -0
  383. package/dist/chunk-YIMGUMXX.js +206 -0
  384. package/dist/chunk-YIMGUMXX.js.map +1 -0
  385. package/dist/chunk-YQSBHWOI.js +41 -0
  386. package/dist/chunk-YU26SDNT.js +46 -0
  387. package/dist/chunk-YU26SDNT.js.map +1 -0
  388. package/dist/chunk-YULENNA7.js +501 -0
  389. package/dist/chunk-YULENNA7.js.map +1 -0
  390. package/dist/chunk-YYSZYSAG.js +150 -0
  391. package/dist/chunk-YYSZYSAG.js.map +1 -0
  392. package/dist/chunk-Z3ENMCFE.js +94 -0
  393. package/dist/chunk-Z3ENMCFE.js.map +1 -0
  394. package/dist/chunk-ZCFSHQBF.js +92 -0
  395. package/dist/chunk-ZCFSHQBF.js.map +1 -0
  396. package/dist/chunk-ZH7ZM3ZM.js +125 -0
  397. package/dist/chunk-ZH7ZM3ZM.js.map +1 -0
  398. package/dist/chunk-ZIXHS6AM.js +42 -0
  399. package/dist/chunk-ZIXHS6AM.js.map +1 -0
  400. package/dist/chunk-ZLLJKSNS.js +96 -0
  401. package/dist/chunk-ZLLJKSNS.js.map +1 -0
  402. package/dist/claim-4AFNDV3A.js +197 -0
  403. package/dist/claim-4AFNDV3A.js.map +1 -0
  404. package/dist/cli.js +104 -71708
  405. package/dist/cli.js.map +1 -1
  406. package/dist/client-26SAJ46D.js +19 -0
  407. package/dist/code-MOWYJMDH.js +76 -0
  408. package/dist/code-MOWYJMDH.js.map +1 -0
  409. package/dist/companies-PZRRZZNV.js +195 -0
  410. package/dist/companies-PZRRZZNV.js.map +1 -0
  411. package/dist/complete-IBW5DNVZ.js +81 -0
  412. package/dist/complete-IBW5DNVZ.js.map +1 -0
  413. package/dist/config-X6GKOVQ6.js +88 -0
  414. package/dist/config-X6GKOVQ6.js.map +1 -0
  415. package/dist/connect-WYUYS5V4.js +42 -0
  416. package/dist/content-UYZC4AKN.js +85 -0
  417. package/dist/content-UYZC4AKN.js.map +1 -0
  418. package/dist/conversation-6AG3UBYY.js +93 -0
  419. package/dist/conversation-6AG3UBYY.js.map +1 -0
  420. package/dist/conversion-report-R4GJWWTK.js +125 -0
  421. package/dist/conversion-report-R4GJWWTK.js.map +1 -0
  422. package/dist/conversion-upload-command-YML2UNJB.js +438 -0
  423. package/dist/conversion-upload-command-YML2UNJB.js.map +1 -0
  424. package/dist/conversion-writes-WHFFUWWL.js +120 -0
  425. package/dist/conversion-writes-WHFFUWWL.js.map +1 -0
  426. package/dist/conversions-NOBBFNIU.js +135 -0
  427. package/dist/conversions-NOBBFNIU.js.map +1 -0
  428. package/dist/conversions-OXJAX5GB.js +76 -0
  429. package/dist/conversions-OXJAX5GB.js.map +1 -0
  430. package/dist/countries-PBXNB3BR.js +82 -0
  431. package/dist/countries-PBXNB3BR.js.map +1 -0
  432. package/dist/create-JK42P564.js +59 -0
  433. package/dist/create-JK42P564.js.map +1 -0
  434. package/dist/create-LAWUVPCY.js +207 -0
  435. package/dist/create-LAWUVPCY.js.map +1 -0
  436. package/dist/create-MUPQ5CTH.js +138 -0
  437. package/dist/create-MUPQ5CTH.js.map +1 -0
  438. package/dist/create-NQJNCFRO.js +236 -0
  439. package/dist/create-NQJNCFRO.js.map +1 -0
  440. package/dist/creatives-KCWFZIM5.js +182 -0
  441. package/dist/creatives-KCWFZIM5.js.map +1 -0
  442. package/dist/creatives-NNDWCSKJ.js +51 -0
  443. package/dist/creatives-NNDWCSKJ.js.map +1 -0
  444. package/dist/creatives-RHNHTS2R.js +87 -0
  445. package/dist/creatives-RHNHTS2R.js.map +1 -0
  446. package/dist/credentials-CEKGXR2C.js +287 -0
  447. package/dist/credentials-CEKGXR2C.js.map +1 -0
  448. package/dist/critique-HDDYER52.js +1449 -0
  449. package/dist/critique-HDDYER52.js.map +1 -0
  450. package/dist/critique-QIN2FO4F.js +216 -0
  451. package/dist/critique-QIN2FO4F.js.map +1 -0
  452. package/dist/crm-KBPWZC6J.js +318 -0
  453. package/dist/crm-KBPWZC6J.js.map +1 -0
  454. package/dist/crm-QBWD7CWB.js +224 -0
  455. package/dist/crm-QBWD7CWB.js.map +1 -0
  456. package/dist/crop-U3AD4DDR.js +113 -0
  457. package/dist/crop-U3AD4DDR.js.map +1 -0
  458. package/dist/currency-XTFGZFGB.js +88 -0
  459. package/dist/currency-XTFGZFGB.js.map +1 -0
  460. package/dist/custom-conversions-W3K33V33.js +125 -0
  461. package/dist/custom-conversions-W3K33V33.js.map +1 -0
  462. package/dist/customers-HYE7N2H5.js +56 -0
  463. package/dist/decide-YTHCBKM6.js +199 -0
  464. package/dist/decide-YTHCBKM6.js.map +1 -0
  465. package/dist/delete-64REPCY2.js +54 -0
  466. package/dist/delete-64REPCY2.js.map +1 -0
  467. package/dist/delete-AY3KL3N3.js +63 -0
  468. package/dist/delete-AY3KL3N3.js.map +1 -0
  469. package/dist/delete-DZUDLYPC.js +69 -0
  470. package/dist/delete-DZUDLYPC.js.map +1 -0
  471. package/dist/delete-NZGZP4YP.js +71 -0
  472. package/dist/delete-NZGZP4YP.js.map +1 -0
  473. package/dist/delete-VO2LZXE4.js +66 -0
  474. package/dist/delete-VO2LZXE4.js.map +1 -0
  475. package/dist/delete-VQMU56OH.js +71 -0
  476. package/dist/delete-VQMU56OH.js.map +1 -0
  477. package/dist/demographics-KOFLMGVW.js +138 -0
  478. package/dist/demographics-KOFLMGVW.js.map +1 -0
  479. package/dist/describe-JNTCQZNL.js +97 -0
  480. package/dist/describe-JNTCQZNL.js.map +1 -0
  481. package/dist/describe-MT4334NG.js +97 -0
  482. package/dist/describe-MT4334NG.js.map +1 -0
  483. package/dist/dimensions-FEZUJRAG.js +101 -0
  484. package/dist/dimensions-FEZUJRAG.js.map +1 -0
  485. package/dist/discard-H4RPXZHX.js +66 -0
  486. package/dist/discard-H4RPXZHX.js.map +1 -0
  487. package/dist/discover-4GD7QSF5.js +93 -0
  488. package/dist/discover-4GD7QSF5.js.map +1 -0
  489. package/dist/discover-L7OVXW4V.js +172 -0
  490. package/dist/discover-L7OVXW4V.js.map +1 -0
  491. package/dist/domain-HURQ23KR.js +98 -0
  492. package/dist/domain-HURQ23KR.js.map +1 -0
  493. package/dist/download-L27HWEOE.js +299 -0
  494. package/dist/download-L27HWEOE.js.map +1 -0
  495. package/dist/draft-25G2P2TE.js +281 -0
  496. package/dist/draft-25G2P2TE.js.map +1 -0
  497. package/dist/draft-5VH2PW3R.js +307 -0
  498. package/dist/draft-5VH2PW3R.js.map +1 -0
  499. package/dist/draft-D6UTKSAA.js +217 -0
  500. package/dist/draft-D6UTKSAA.js.map +1 -0
  501. package/dist/draft-KLULNBWP.js +233 -0
  502. package/dist/draft-KLULNBWP.js.map +1 -0
  503. package/dist/draft-MI7RWY2K.js +100 -0
  504. package/dist/draft-MI7RWY2K.js.map +1 -0
  505. package/dist/draft-P4IVYTY3.js +103 -0
  506. package/dist/draft-P4IVYTY3.js.map +1 -0
  507. package/dist/draft-UQYWDZS7.js +306 -0
  508. package/dist/draft-UQYWDZS7.js.map +1 -0
  509. package/dist/draft-YFAJHCKM.js +328 -0
  510. package/dist/draft-YFAJHCKM.js.map +1 -0
  511. package/dist/engine/index.d.ts +213 -127
  512. package/dist/engine/index.js +18 -4
  513. package/dist/{env-4P5HOGNA.js → env-FBTHZKGN.js} +12 -2
  514. package/dist/env-FBTHZKGN.js.map +1 -0
  515. package/dist/experiment-HDYTJPUY.js +1397 -0
  516. package/dist/experiment-HDYTJPUY.js.map +1 -0
  517. package/dist/export-TS5GYEMA.js +168 -0
  518. package/dist/export-TS5GYEMA.js.map +1 -0
  519. package/dist/extract-QVQFUOIK.js +113 -0
  520. package/dist/extract-QVQFUOIK.js.map +1 -0
  521. package/dist/facets-WYQUZMFJ.js +114 -0
  522. package/dist/facets-WYQUZMFJ.js.map +1 -0
  523. package/dist/favorites-7QP7BY5K.js +178 -0
  524. package/dist/favorites-7QP7BY5K.js.map +1 -0
  525. package/dist/feed-EETRO2FG.js +177 -0
  526. package/dist/feed-EETRO2FG.js.map +1 -0
  527. package/dist/feedback-SIMPRE37.js +66 -0
  528. package/dist/feedback-SIMPRE37.js.map +1 -0
  529. package/dist/feedback-record-L4MPIVML.js +177 -0
  530. package/dist/feedback-record-L4MPIVML.js.map +1 -0
  531. package/dist/fetch-DTBM3DE2.js +176 -0
  532. package/dist/fetch-DTBM3DE2.js.map +1 -0
  533. package/dist/fetch-Z7O3ZL4D.js +139 -0
  534. package/dist/fetch-Z7O3ZL4D.js.map +1 -0
  535. package/dist/find-KAQ6JDMO.js +134 -0
  536. package/dist/find-KAQ6JDMO.js.map +1 -0
  537. package/dist/fit-MY5GVZZZ.js +45 -0
  538. package/dist/fit-MY5GVZZZ.js.map +1 -0
  539. package/dist/flows-IUDXVDOS.js +247 -0
  540. package/dist/flows-IUDXVDOS.js.map +1 -0
  541. package/dist/follow-IX4XVK5Y.js +94 -0
  542. package/dist/follow-IX4XVK5Y.js.map +1 -0
  543. package/dist/follow-competitors-UZBUOYTH.js +112 -0
  544. package/dist/follow-competitors-UZBUOYTH.js.map +1 -0
  545. package/dist/following-VGOIUCIZ.js +113 -0
  546. package/dist/following-VGOIUCIZ.js.map +1 -0
  547. package/dist/fonts-EUDHI6CA.js +34 -0
  548. package/dist/fonts-EUDHI6CA.js.map +1 -0
  549. package/dist/forecast-BRSEH2H3.js +104 -0
  550. package/dist/forecast-BRSEH2H3.js.map +1 -0
  551. package/dist/forecast-QV4U7TOY.js +168 -0
  552. package/dist/forecast-QV4U7TOY.js.map +1 -0
  553. package/dist/funding-H5YO37OW.js +85 -0
  554. package/dist/funding-H5YO37OW.js.map +1 -0
  555. package/dist/funnel-JLF77MLF.js +394 -0
  556. package/dist/funnel-JLF77MLF.js.map +1 -0
  557. package/dist/ga4-YHJ2XMLC.js +55 -0
  558. package/dist/ga4-YHJ2XMLC.js.map +1 -0
  559. package/dist/generate-M2ZX5DMI.js +262 -0
  560. package/dist/generate-M2ZX5DMI.js.map +1 -0
  561. package/dist/get-4EYKCZ6F.js +59 -0
  562. package/dist/get-4EYKCZ6F.js.map +1 -0
  563. package/dist/get-637GALM2.js +63 -0
  564. package/dist/get-637GALM2.js.map +1 -0
  565. package/dist/get-AYX5HS64.js +56 -0
  566. package/dist/get-AYX5HS64.js.map +1 -0
  567. package/dist/get-AZARFR6O.js +61 -0
  568. package/dist/get-AZARFR6O.js.map +1 -0
  569. package/dist/get-EG2U7MIL.js +78 -0
  570. package/dist/get-EG2U7MIL.js.map +1 -0
  571. package/dist/get-N4BPOQCB.js +63 -0
  572. package/dist/get-N4BPOQCB.js.map +1 -0
  573. package/dist/get-RPZHLQ56.js +92 -0
  574. package/dist/get-RPZHLQ56.js.map +1 -0
  575. package/dist/gif-6PRTB2VR.js +94 -0
  576. package/dist/gif-6PRTB2VR.js.map +1 -0
  577. package/dist/google-52JRH7X3.js +136 -0
  578. package/dist/google-52JRH7X3.js.map +1 -0
  579. package/dist/google-ITTPCJ7N.js +3190 -0
  580. package/dist/google-ITTPCJ7N.js.map +1 -0
  581. package/dist/google-ads-U3JFFQLU.js +195 -0
  582. package/dist/google-ads-U3JFFQLU.js.map +1 -0
  583. package/dist/group-AAZ5QKC3.js +43 -0
  584. package/dist/group-AAZ5QKC3.js.map +1 -0
  585. package/dist/group-GSYCZORC.js +43 -0
  586. package/dist/group-GSYCZORC.js.map +1 -0
  587. package/dist/gsc-TS5T7ML2.js +30 -0
  588. package/dist/gsc-TS5T7ML2.js.map +1 -0
  589. package/dist/history-EW6LFFCX.js +67 -0
  590. package/dist/history-EW6LFFCX.js.map +1 -0
  591. package/dist/history-YTNCWSV3.js +133 -0
  592. package/dist/history-YTNCWSV3.js.map +1 -0
  593. package/dist/hubspot-LXWQNKKB.js +779 -0
  594. package/dist/hubspot-LXWQNKKB.js.map +1 -0
  595. package/dist/icon-K75KI6BV.js +137 -0
  596. package/dist/icon-K75KI6BV.js.map +1 -0
  597. package/dist/ideas-JJIHQFV4.js +35 -0
  598. package/dist/ideas-JJIHQFV4.js.map +1 -0
  599. package/dist/images-MWETBYKB.js +90 -0
  600. package/dist/images-MWETBYKB.js.map +1 -0
  601. package/dist/improve-L3BW4EQG.js +86 -0
  602. package/dist/improve-L3BW4EQG.js.map +1 -0
  603. package/dist/ingest-THFAV4NO.js +107 -0
  604. package/dist/ingest-THFAV4NO.js.map +1 -0
  605. package/dist/ingest-U6B7GR4A.js +23 -0
  606. package/dist/ingest-U6B7GR4A.js.map +1 -0
  607. package/dist/insights-FA6T6PT6.js +423 -0
  608. package/dist/insights-FA6T6PT6.js.map +1 -0
  609. package/dist/insights-PELVD4RY.js +122 -0
  610. package/dist/insights-PELVD4RY.js.map +1 -0
  611. package/dist/inspect-N2WVVWGP.js +189 -0
  612. package/dist/inspect-N2WVVWGP.js.map +1 -0
  613. package/dist/inspiration-Y2J2PUPC.js +53 -0
  614. package/dist/inspiration-Y2J2PUPC.js.map +1 -0
  615. package/dist/intent-YNAAVNHK.js +95 -0
  616. package/dist/intent-YNAAVNHK.js.map +1 -0
  617. package/dist/job-E2U4FS5P.js +202 -0
  618. package/dist/job-E2U4FS5P.js.map +1 -0
  619. package/dist/job-create-DFYCHVQ7.js +109 -0
  620. package/dist/job-create-DFYCHVQ7.js.map +1 -0
  621. package/dist/job-status-FFPMTSHB.js +74 -0
  622. package/dist/job-status-FFPMTSHB.js.map +1 -0
  623. package/dist/keep-GYZS2UTL.js +78 -0
  624. package/dist/keep-GYZS2UTL.js.map +1 -0
  625. package/dist/keyword-gap-4JKLWIBJ.js +130 -0
  626. package/dist/keyword-gap-4JKLWIBJ.js.map +1 -0
  627. package/dist/keyword-metrics-KU3OHTQK.js +197 -0
  628. package/dist/keyword-metrics-KU3OHTQK.js.map +1 -0
  629. package/dist/keywords-for-site-M4MFWMVK.js +128 -0
  630. package/dist/keywords-for-site-M4MFWMVK.js.map +1 -0
  631. package/dist/landing-7UVZ7IPP.js +28 -0
  632. package/dist/landing-7UVZ7IPP.js.map +1 -0
  633. package/dist/landings-F7LOAEJE.js +151 -0
  634. package/dist/landings-F7LOAEJE.js.map +1 -0
  635. package/dist/languages-PKYCZNUB.js +40 -0
  636. package/dist/languages-PKYCZNUB.js.map +1 -0
  637. package/dist/languages-XEJKTIFP.js +55 -0
  638. package/dist/languages-XEJKTIFP.js.map +1 -0
  639. package/dist/launches-TCFAYUA5.js +19 -0
  640. package/dist/launches-TCFAYUA5.js.map +1 -0
  641. package/dist/layerize-ZSKFIPZA.js +190 -0
  642. package/dist/layerize-ZSKFIPZA.js.map +1 -0
  643. package/dist/leads-CSRESOB2.js +293 -0
  644. package/dist/leads-CSRESOB2.js.map +1 -0
  645. package/dist/leads-MQPEA7DG.js +90 -0
  646. package/dist/leads-MQPEA7DG.js.map +1 -0
  647. package/dist/learn-K5YBUMBT.js +203 -0
  648. package/dist/learn-K5YBUMBT.js.map +1 -0
  649. package/dist/library-IP2UKNRU.js +109 -0
  650. package/dist/library-IP2UKNRU.js.map +1 -0
  651. package/dist/lighthouse-57XBJRCO.js +75 -0
  652. package/dist/lighthouse-57XBJRCO.js.map +1 -0
  653. package/dist/line-item-writes-73NR2J5L.js +208 -0
  654. package/dist/line-item-writes-73NR2J5L.js.map +1 -0
  655. package/dist/line-items-2YBGXOAQ.js +103 -0
  656. package/dist/line-items-2YBGXOAQ.js.map +1 -0
  657. package/dist/link-GVAWECJO.js +64 -0
  658. package/dist/link-GVAWECJO.js.map +1 -0
  659. package/dist/linkedin-PZDT22AT.js +1008 -0
  660. package/dist/linkedin-PZDT22AT.js.map +1 -0
  661. package/dist/list-6IKPWQGG.js +57 -0
  662. package/dist/list-6IKPWQGG.js.map +1 -0
  663. package/dist/list-CAUH3BMG.js +65 -0
  664. package/dist/list-CAUH3BMG.js.map +1 -0
  665. package/dist/list-FNDRV25Y.js +151 -0
  666. package/dist/list-FNDRV25Y.js.map +1 -0
  667. package/dist/list-GTOSN7DP.js +50 -0
  668. package/dist/list-GTOSN7DP.js.map +1 -0
  669. package/dist/list-HLJP4NVE.js +51 -0
  670. package/dist/list-HLJP4NVE.js.map +1 -0
  671. package/dist/list-LCUPF7EF.js +76 -0
  672. package/dist/list-LCUPF7EF.js.map +1 -0
  673. package/dist/list-REZGFWC5.js +63 -0
  674. package/dist/list-REZGFWC5.js.map +1 -0
  675. package/dist/list-S6MNXDTV.js +303 -0
  676. package/dist/list-S6MNXDTV.js.map +1 -0
  677. package/dist/locations-2BYWKIYA.js +67 -0
  678. package/dist/locations-2BYWKIYA.js.map +1 -0
  679. package/dist/locations-GJHHMV6Z.js +40 -0
  680. package/dist/locations-GJHHMV6Z.js.map +1 -0
  681. package/dist/log-HGDNLDUX.js +92 -0
  682. package/dist/log-HGDNLDUX.js.map +1 -0
  683. package/dist/logo-AJK2TDQU.js +18 -0
  684. package/dist/logo-AJK2TDQU.js.map +1 -0
  685. package/dist/lookup-H5GEM77H.js +22 -0
  686. package/dist/lookup-H5GEM77H.js.map +1 -0
  687. package/dist/make-BT26YJXZ.js +640 -0
  688. package/dist/make-BT26YJXZ.js.map +1 -0
  689. package/dist/map-J5EX4HOX.js +404 -0
  690. package/dist/map-J5EX4HOX.js.map +1 -0
  691. package/dist/mcp-MHDW6AFL.js +463 -0
  692. package/dist/mcp-MHDW6AFL.js.map +1 -0
  693. package/dist/media-RAGEJTZX.js +89 -0
  694. package/dist/media-RAGEJTZX.js.map +1 -0
  695. package/dist/media-RNB7JFJP.js +15 -0
  696. package/dist/media-RNB7JFJP.js.map +1 -0
  697. package/dist/media-sources-4NN3DWSG.js +32 -0
  698. package/dist/media-sources-4NN3DWSG.js.map +1 -0
  699. package/dist/members-AIWMXAQD.js +44 -0
  700. package/dist/members-AIWMXAQD.js.map +1 -0
  701. package/dist/meta-WAPZMZI7.js +69 -0
  702. package/dist/meta-WAPZMZI7.js.map +1 -0
  703. package/dist/metrics-6EHC4ESN.js +152 -0
  704. package/dist/metrics-6EHC4ESN.js.map +1 -0
  705. package/dist/models-5J4WFUD3.js +155 -0
  706. package/dist/models-5J4WFUD3.js.map +1 -0
  707. package/dist/normalize-DSFVTRXN.js +806 -0
  708. package/dist/normalize-DSFVTRXN.js.map +1 -0
  709. package/dist/normalize-ZAWN4XCS.js +141 -0
  710. package/dist/normalize-ZAWN4XCS.js.map +1 -0
  711. package/dist/options-3CZNT5KP.js +121 -0
  712. package/dist/options-3CZNT5KP.js.map +1 -0
  713. package/dist/output-DTCLVPUF.js +24 -0
  714. package/dist/output-DTCLVPUF.js.map +1 -0
  715. package/dist/page-N2ZO3O7F.js +105 -0
  716. package/dist/page-N2ZO3O7F.js.map +1 -0
  717. package/dist/pages-FQ4CBAJ2.js +66 -0
  718. package/dist/pages-FQ4CBAJ2.js.map +1 -0
  719. package/dist/performance-GOMJMHPE.js +24 -0
  720. package/dist/performance-GOMJMHPE.js.map +1 -0
  721. package/dist/pinterest-NV5XTNJE.js +96 -0
  722. package/dist/pinterest-NV5XTNJE.js.map +1 -0
  723. package/dist/pixels-CTJ43FZ4.js +108 -0
  724. package/dist/pixels-CTJ43FZ4.js.map +1 -0
  725. package/dist/pixels-HKINGZCH.js +60 -0
  726. package/dist/pixels-HKINGZCH.js.map +1 -0
  727. package/dist/plan-ZYTWLGWK.js +207 -0
  728. package/dist/plan-ZYTWLGWK.js.map +1 -0
  729. package/dist/preview-UKYLPAW2.js +169 -0
  730. package/dist/preview-UKYLPAW2.js.map +1 -0
  731. package/dist/profile-Q3PHR6FU.js +159 -0
  732. package/dist/profile-Q3PHR6FU.js.map +1 -0
  733. package/dist/promoted-tweet-writes-IYOAZTA5.js +180 -0
  734. package/dist/promoted-tweet-writes-IYOAZTA5.js.map +1 -0
  735. package/dist/promoted-tweets-G3XFD5YM.js +119 -0
  736. package/dist/promoted-tweets-G3XFD5YM.js.map +1 -0
  737. package/dist/properties-WLL6M2P6.js +101 -0
  738. package/dist/properties-WLL6M2P6.js.map +1 -0
  739. package/dist/publish-ZG4J2GTH.js +322 -0
  740. package/dist/publish-ZG4J2GTH.js.map +1 -0
  741. package/dist/query-7AGG77WH.js +61 -0
  742. package/dist/query-7AGG77WH.js.map +1 -0
  743. package/dist/query-IYZN5KHO.js +236 -0
  744. package/dist/query-IYZN5KHO.js.map +1 -0
  745. package/dist/query-UN2P6DBA.js +247 -0
  746. package/dist/query-UN2P6DBA.js.map +1 -0
  747. package/dist/questionnaire-Z2ZIKNBV.js +93 -0
  748. package/dist/questionnaire-Z2ZIKNBV.js.map +1 -0
  749. package/dist/read-GM7PQYJA.js +141 -0
  750. package/dist/read-GM7PQYJA.js.map +1 -0
  751. package/dist/reddit-FTO4SFQE.js +26 -0
  752. package/dist/reddit-FTO4SFQE.js.map +1 -0
  753. package/dist/refresh-OUENQ2FS.js +94 -0
  754. package/dist/refresh-OUENQ2FS.js.map +1 -0
  755. package/dist/release-5OG7AAFY.js +60 -0
  756. package/dist/release-5OG7AAFY.js.map +1 -0
  757. package/dist/relevant-pages-KUVDZPRU.js +99 -0
  758. package/dist/relevant-pages-KUVDZPRU.js.map +1 -0
  759. package/dist/remove-33HI27KM.js +50 -0
  760. package/dist/remove-33HI27KM.js.map +1 -0
  761. package/dist/remove-GOYW2G4R.js +48 -0
  762. package/dist/remove-GOYW2G4R.js.map +1 -0
  763. package/dist/reopen-KFFYE53A.js +63 -0
  764. package/dist/reopen-KFFYE53A.js.map +1 -0
  765. package/dist/rerun-P6XACA5Z.js +86 -0
  766. package/dist/rerun-P6XACA5Z.js.map +1 -0
  767. package/dist/research-BEO3JMZI.js +262 -0
  768. package/dist/research-BEO3JMZI.js.map +1 -0
  769. package/dist/research-QOC53DLS.js +62 -0
  770. package/dist/research-QOC53DLS.js.map +1 -0
  771. package/dist/reset-E3OWE2WF.js +54 -0
  772. package/dist/reset-E3OWE2WF.js.map +1 -0
  773. package/dist/reset-I7M3HYMB.js +54 -0
  774. package/dist/reset-I7M3HYMB.js.map +1 -0
  775. package/dist/resolve-GP7BHM6L.js +121 -0
  776. package/dist/resolve-GP7BHM6L.js.map +1 -0
  777. package/dist/retry-33ZJCNQI.js +62 -0
  778. package/dist/retry-33ZJCNQI.js.map +1 -0
  779. package/dist/retry-X5PU7QO3.js +60 -0
  780. package/dist/retry-X5PU7QO3.js.map +1 -0
  781. package/dist/retry-failed-BEFWRV4Z.js +45 -0
  782. package/dist/retry-failed-BEFWRV4Z.js.map +1 -0
  783. package/dist/run-REK3TEGY.js +65 -0
  784. package/dist/run-REK3TEGY.js.map +1 -0
  785. package/dist/run-TH2662IC.js +61 -0
  786. package/dist/run-TH2662IC.js.map +1 -0
  787. package/dist/scaffold-ad-3WDRKUFT.js +1550 -0
  788. package/dist/scaffold-ad-3WDRKUFT.js.map +1 -0
  789. package/dist/scaffold-static-ad-X5NT52NF.js +973 -0
  790. package/dist/scaffold-static-ad-X5NT52NF.js.map +1 -0
  791. package/dist/scaffold-video-WZPVACLE.js +874 -0
  792. package/dist/scaffold-video-WZPVACLE.js.map +1 -0
  793. package/dist/schedule-KQ7UIR3N.js +66 -0
  794. package/dist/schedule-KQ7UIR3N.js.map +1 -0
  795. package/dist/schedule-V4UHGY3V.js +61 -0
  796. package/dist/schedule-V4UHGY3V.js.map +1 -0
  797. package/dist/scheduled-agents-KLQ5H2PA.js +49 -0
  798. package/dist/scheduled-agents-KLQ5H2PA.js.map +1 -0
  799. package/dist/schema-G3T4PZDI.js +132 -0
  800. package/dist/schema-G3T4PZDI.js.map +1 -0
  801. package/dist/schema-QXTDLZVC.js +63 -0
  802. package/dist/schema-QXTDLZVC.js.map +1 -0
  803. package/dist/scrape-7YKJWFZE.js +2241 -0
  804. package/dist/scrape-7YKJWFZE.js.map +1 -0
  805. package/dist/screenshot-ZHBSG3SI.js +102 -0
  806. package/dist/screenshot-ZHBSG3SI.js.map +1 -0
  807. package/dist/search-332KFYZ6.js +224 -0
  808. package/dist/search-332KFYZ6.js.map +1 -0
  809. package/dist/search-4PBMXXUY.js +91 -0
  810. package/dist/search-4PBMXXUY.js.map +1 -0
  811. package/dist/search-6XKEGABN.js +174 -0
  812. package/dist/search-6XKEGABN.js.map +1 -0
  813. package/dist/search-AVNUU6TJ.js +26 -0
  814. package/dist/search-AVNUU6TJ.js.map +1 -0
  815. package/dist/search-F5INRFFK.js +92 -0
  816. package/dist/search-F5INRFFK.js.map +1 -0
  817. package/dist/search-copy-DZVBYG2B.js +168 -0
  818. package/dist/search-copy-DZVBYG2B.js.map +1 -0
  819. package/dist/seeds-5JTQN5WI.js +101 -0
  820. package/dist/seeds-5JTQN5WI.js.map +1 -0
  821. package/dist/select-N2V55BEX.js +96 -0
  822. package/dist/select-N2V55BEX.js.map +1 -0
  823. package/dist/sends-3L6QBS46.js +309 -0
  824. package/dist/sends-3L6QBS46.js.map +1 -0
  825. package/dist/sequences-YKFV7BDH.js +146 -0
  826. package/dist/sequences-YKFV7BDH.js.map +1 -0
  827. package/dist/set-prompt-7HVHERRU.js +188 -0
  828. package/dist/set-prompt-7HVHERRU.js.map +1 -0
  829. package/dist/setup-links-4VVNQVPU.js +141 -0
  830. package/dist/setup-links-4VVNQVPU.js.map +1 -0
  831. package/dist/{shared-AVM74EX7.js → shared-QAMP7FZV.js} +8 -6
  832. package/dist/shared-QAMP7FZV.js.map +1 -0
  833. package/dist/shopify-FSHM5M4I.js +3346 -0
  834. package/dist/shopify-FSHM5M4I.js.map +1 -0
  835. package/dist/site-Q2HTRLIW.js +177 -0
  836. package/dist/site-Q2HTRLIW.js.map +1 -0
  837. package/dist/sitemaps-XPGLW24S.js +87 -0
  838. package/dist/sitemaps-XPGLW24S.js.map +1 -0
  839. package/dist/sites-WMBY2HJV.js +101 -0
  840. package/dist/sites-WMBY2HJV.js.map +1 -0
  841. package/dist/skills-3HEILQCU.js +47 -0
  842. package/dist/skills-3HEILQCU.js.map +1 -0
  843. package/dist/sources-2KN4RJNJ.js +30 -0
  844. package/dist/sources-2KN4RJNJ.js.map +1 -0
  845. package/dist/sources-4I2YMS2K.js +421 -0
  846. package/dist/sources-4I2YMS2K.js.map +1 -0
  847. package/dist/stale-IN7WSBLC.js +66 -0
  848. package/dist/stale-IN7WSBLC.js.map +1 -0
  849. package/dist/stats-GNILHSKK.js +34 -0
  850. package/dist/stats-GNILHSKK.js.map +1 -0
  851. package/dist/status-6SLKZWNR.js +62 -0
  852. package/dist/status-6SLKZWNR.js.map +1 -0
  853. package/dist/sticker-KCV3VZHY.js +94 -0
  854. package/dist/sticker-KCV3VZHY.js.map +1 -0
  855. package/dist/stock-VTORKR4C.js +179 -0
  856. package/dist/stock-VTORKR4C.js.map +1 -0
  857. package/dist/studio-QCRA6BY5.js +49 -0
  858. package/dist/studio-QCRA6BY5.js.map +1 -0
  859. package/dist/sync-455DB46Y.js +54 -0
  860. package/dist/sync-455DB46Y.js.map +1 -0
  861. package/dist/sync-A4KKQ3B6.js +265 -0
  862. package/dist/sync-A4KKQ3B6.js.map +1 -0
  863. package/dist/sync-LFZV5NBN.js +54 -0
  864. package/dist/sync-LFZV5NBN.js.map +1 -0
  865. package/dist/sync-definition-IJISZ5VQ.js +55 -0
  866. package/dist/sync-definition-IJISZ5VQ.js.map +1 -0
  867. package/dist/tag-manager-E7QTXBWQ.js +43 -0
  868. package/dist/tag-manager-E7QTXBWQ.js.map +1 -0
  869. package/dist/tags-6OAZOQYO.js +26 -0
  870. package/dist/tags-6OAZOQYO.js.map +1 -0
  871. package/dist/tags-6YRMDX3R.js +20 -0
  872. package/dist/tags-6YRMDX3R.js.map +1 -0
  873. package/dist/tags-EWXZSZYE.js +20 -0
  874. package/dist/tags-EWXZSZYE.js.map +1 -0
  875. package/dist/tags-SZCNPE2D.js +224 -0
  876. package/dist/tags-SZCNPE2D.js.map +1 -0
  877. package/dist/tags-TCFFP534.js +20 -0
  878. package/dist/tags-TCFFP534.js.map +1 -0
  879. package/dist/targeting-constants-D64YO3E7.js +118 -0
  880. package/dist/targeting-constants-D64YO3E7.js.map +1 -0
  881. package/dist/targeting-criteria-ESOC7KNX.js +113 -0
  882. package/dist/targeting-criteria-ESOC7KNX.js.map +1 -0
  883. package/dist/targets-IPBEB5KU.js +102 -0
  884. package/dist/targets-IPBEB5KU.js.map +1 -0
  885. package/dist/templates-IJ7FR3LA.js +178 -0
  886. package/dist/templates-IJ7FR3LA.js.map +1 -0
  887. package/dist/testimonials-IXS7CP6P.js +32 -0
  888. package/dist/testimonials-IXS7CP6P.js.map +1 -0
  889. package/dist/themes-MXNKJWMW.js +94 -0
  890. package/dist/themes-MXNKJWMW.js.map +1 -0
  891. package/dist/top-companies-NO6L2V6M.js +108 -0
  892. package/dist/top-companies-NO6L2V6M.js.map +1 -0
  893. package/dist/translate-QCE5ZB7M.js +600 -0
  894. package/dist/translate-QCE5ZB7M.js.map +1 -0
  895. package/dist/triggers-KXUDMDSA.js +141 -0
  896. package/dist/triggers-KXUDMDSA.js.map +1 -0
  897. package/dist/tweets-ZUKQAAUQ.js +123 -0
  898. package/dist/tweets-ZUKQAAUQ.js.map +1 -0
  899. package/dist/unfollow-A4JVCJBF.js +46 -0
  900. package/dist/unfollow-A4JVCJBF.js.map +1 -0
  901. package/dist/unlink-E3N36NYQ.js +67 -0
  902. package/dist/unlink-E3N36NYQ.js.map +1 -0
  903. package/dist/unstage-TRMHSHED.js +84 -0
  904. package/dist/unstage-TRMHSHED.js.map +1 -0
  905. package/dist/unstage-ZRLLCSQF.js +95 -0
  906. package/dist/unstage-ZRLLCSQF.js.map +1 -0
  907. package/dist/update-EWGWAXAQ.js +142 -0
  908. package/dist/update-EWGWAXAQ.js.map +1 -0
  909. package/dist/update-OKOQE7U2.js +155 -0
  910. package/dist/update-OKOQE7U2.js.map +1 -0
  911. package/dist/update-VSFHID2D.js +63 -0
  912. package/dist/update-VSFHID2D.js.map +1 -0
  913. package/dist/update-XGCGQDJ4.js +98 -0
  914. package/dist/update-XGCGQDJ4.js.map +1 -0
  915. package/dist/upload-BOYMDDEQ.js +126 -0
  916. package/dist/upload-BOYMDDEQ.js.map +1 -0
  917. package/dist/upload-XEHWYMJG.js +150 -0
  918. package/dist/upload-XEHWYMJG.js.map +1 -0
  919. package/dist/upscale-I5P2OHTN.js +109 -0
  920. package/dist/upscale-I5P2OHTN.js.map +1 -0
  921. package/dist/url-options-PCZEQE66.js +130 -0
  922. package/dist/url-options-PCZEQE66.js.map +1 -0
  923. package/dist/url-params-DV37GEQF.js +98 -0
  924. package/dist/url-params-DV37GEQF.js.map +1 -0
  925. package/dist/use-U4HG2NF3.js +95 -0
  926. package/dist/use-U4HG2NF3.js.map +1 -0
  927. package/dist/validate-5AV4FJZ5.js +91 -0
  928. package/dist/validate-5AV4FJZ5.js.map +1 -0
  929. package/dist/variant-FOVE6URJ.js +338 -0
  930. package/dist/variant-FOVE6URJ.js.map +1 -0
  931. package/dist/videos-IJ67PPJV.js +39 -0
  932. package/dist/videos-IJ67PPJV.js.map +1 -0
  933. package/dist/view-HRI3FHCH.js +121 -0
  934. package/dist/view-HRI3FHCH.js.map +1 -0
  935. package/dist/viewer-check-JYUE24M6.js +68 -0
  936. package/dist/viewer-check-JYUE24M6.js.map +1 -0
  937. package/dist/web-LJ36FRWD.js +140 -0
  938. package/dist/web-LJ36FRWD.js.map +1 -0
  939. package/dist/winners-SMMDN6LW.js +113 -0
  940. package/dist/winners-SMMDN6LW.js.map +1 -0
  941. package/dist/winning-ads-JIG2MQHJ.js +84 -0
  942. package/dist/winning-ads-JIG2MQHJ.js.map +1 -0
  943. package/dist/write-commands-7Z34WG2J.js +206 -0
  944. package/dist/write-commands-7Z34WG2J.js.map +1 -0
  945. package/dist/write-commands-BLT2SEC4.js +713 -0
  946. package/dist/write-commands-BLT2SEC4.js.map +1 -0
  947. package/dist/write-commands-GOZU6ENR.js +1015 -0
  948. package/dist/write-commands-GOZU6ENR.js.map +1 -0
  949. package/dist/write-commands-KA3QXVSF.js +737 -0
  950. package/dist/write-commands-KA3QXVSF.js.map +1 -0
  951. package/dist/x-6HBVXIKH.js +47 -0
  952. package/dist/x-6HBVXIKH.js.map +1 -0
  953. package/package.json +9 -2
  954. package/dist/chunk-HJEMOSPH.js +0 -1292
  955. package/dist/chunk-HJEMOSPH.js.map +0 -1
  956. package/dist/chunk-JHKW6IDX.js +0 -9989
  957. package/dist/chunk-JHKW6IDX.js.map +0 -1
  958. package/dist/chunk-MF7YA62W.js.map +0 -1
  959. package/dist/chunk-VZEDAFAR.js.map +0 -1
  960. package/dist/chunk-WWCLT3RG.js.map +0 -1
  961. package/dist/client-GR6YL3YX.js +0 -17
  962. package/dist/output-VQSTVRH7.js +0 -18
  963. /package/dist/{chunk-JTZXQRXI.js.map → chunk-TPXI2GCW.js.map} +0 -0
  964. /package/dist/{client-GR6YL3YX.js.map → chunk-YQSBHWOI.js.map} +0 -0
  965. /package/dist/{env-4P5HOGNA.js.map → client-26SAJ46D.js.map} +0 -0
  966. /package/dist/{output-VQSTVRH7.js.map → connect-WYUYS5V4.js.map} +0 -0
  967. /package/dist/{shared-AVM74EX7.js.map → customers-HYE7N2H5.js.map} +0 -0
@@ -0,0 +1,202 @@
1
+ import {
2
+ parseXApiError
3
+ } from "./chunk-M6UNISGO.js";
4
+ import {
5
+ resolveXAccountId
6
+ } from "./chunk-G7AFVTUS.js";
7
+ import {
8
+ cacheGet,
9
+ cacheSet,
10
+ writeAdsJson
11
+ } from "./chunk-BVM5IRZW.js";
12
+ import {
13
+ ApiError,
14
+ apiGet,
15
+ apiPost
16
+ } from "./chunk-HREWXNTO.js";
17
+ import "./chunk-HLXWKMTK.js";
18
+ import "./chunk-O6QKCJE4.js";
19
+ import {
20
+ registerSchema
21
+ } from "./chunk-WOTDHRNF.js";
22
+ import "./chunk-YQSBHWOI.js";
23
+
24
+ // src/commands/ads/x/stats/job.ts
25
+ import { gunzipSync } from "zlib";
26
+ import { defineCommand } from "citty";
27
+ var POLL_INTERVAL_MS = 1e4;
28
+ var DEADLINE_MS = 12 * 60 * 1e3;
29
+ var RESULT_CACHE_TTL_MS = 6 * 60 * 60 * 1e3;
30
+ registerSchema({
31
+ command: "ads.x.statsJob",
32
+ description: "Asynchronous X Ads stats job, fully synchronous from the CLI's perspective. Creates the job, polls every 10s, downloads + decompresses the gzip result, returns inline JSON. Hard deadline 12 min \u2014 must run in the background. Use this for ranges >7 days, segmented stats, or any query that hits sync limits. For fine-grained control, use `stats job-create` + `stats job-status` separately.",
33
+ args: {
34
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
35
+ entity: { type: "string", description: "CAMPAIGN | LINE_ITEM | PROMOTED_TWEET | ...", required: true },
36
+ "entity-ids": { type: "string", description: "CSV of entity IDs (max 20)", required: true },
37
+ "start-time": { type: "string", description: "ISO 8601 hour-aligned start", required: true },
38
+ "end-time": { type: "string", description: "ISO 8601 hour-aligned end", required: true },
39
+ granularity: { type: "string", description: "TOTAL | DAY | HOUR", required: false },
40
+ "metric-groups": { type: "string", description: "CSV of metric groups", required: true },
41
+ placement: { type: "string", description: "ALL_ON_TWITTER | PUBLISHER_NETWORK", required: false },
42
+ "segmentation-type": { type: "string", description: "Segmentation (e.g. AGE, GENDER, LOCATIONS)", required: false },
43
+ country: { type: "string", description: "Country filter", required: false },
44
+ platform: { type: "string", description: "Platform filter", required: false },
45
+ "no-cache": { type: "boolean", description: "Skip result cache (still does the live job)", required: false }
46
+ }
47
+ });
48
+ function parseCsv(v) {
49
+ if (typeof v !== "string" || v.length === 0) return void 0;
50
+ const parts = v.split(",").map((s) => s.trim()).filter(Boolean);
51
+ return parts.length > 0 ? parts : void 0;
52
+ }
53
+ function sleep(ms) {
54
+ return new Promise((resolve) => setTimeout(resolve, ms));
55
+ }
56
+ async function downloadAndDecompress(url) {
57
+ const res = await fetch(url, { signal: AbortSignal.timeout(6e4) });
58
+ if (!res.ok) {
59
+ throw new ApiError("INTERNAL_ERROR", `Stats job download failed (${res.status})`);
60
+ }
61
+ const buf = Buffer.from(await res.arrayBuffer());
62
+ const decompressed = gunzipSync(buf);
63
+ return JSON.parse(decompressed.toString("utf-8"));
64
+ }
65
+ async function pollUntilDone(accountId, jobId) {
66
+ const deadline = Date.now() + DEADLINE_MS;
67
+ let lastLog = 0;
68
+ while (Date.now() < deadline) {
69
+ await sleep(POLL_INTERVAL_MS);
70
+ const jobs = await apiGet("/api/ads/x/stats/jobs", {
71
+ "account-id": accountId,
72
+ "job-id": jobId
73
+ });
74
+ const job = jobs[0];
75
+ if (!job) {
76
+ throw new ApiError("NOT_FOUND", `Stats job ${jobId} not found`);
77
+ }
78
+ if (job.status === "SUCCESS") {
79
+ return job;
80
+ }
81
+ if (job.status === "FAILED" || job.status === "CANCELLED") {
82
+ throw new ApiError("INTERNAL_ERROR", `Stats job ${jobId} ended in status ${job.status}`);
83
+ }
84
+ const elapsed = DEADLINE_MS - (deadline - Date.now());
85
+ if (elapsed - lastLog > 3e4) {
86
+ process.stderr.write(` polling... (${job.status}, ${Math.round(elapsed / 1e3)}s elapsed)
87
+ `);
88
+ lastLog = elapsed;
89
+ }
90
+ }
91
+ throw new ApiError("TIMEOUT", `Stats job ${jobId} did not complete within ${DEADLINE_MS / 6e4} minutes`);
92
+ }
93
+ function buildCacheKey(body) {
94
+ return `stats-job:${JSON.stringify(body)}`;
95
+ }
96
+ var statsJobCommand = defineCommand({
97
+ meta: {
98
+ name: "job",
99
+ description: `Async X Ads stats job, sync from the CLI's perspective. Creates \u2192 polls \u2192 downloads \u2192 returns.
100
+
101
+ Must run in the background (the harness enforces this).
102
+
103
+ Use this when:
104
+ \u2022 Date range > 7 days
105
+ \u2022 Need segmentation (AGE, GENDER, LOCATIONS, ...)
106
+ \u2022 Sync stats hit a limit
107
+
108
+ Examples:
109
+ baker ads x stats job --account-id 18ce53xyz --entity CAMPAIGN \\
110
+ --entity-ids abc,def --start-time 2026-04-01T00:00:00Z \\
111
+ --end-time 2026-05-01T00:00:00Z --metric-groups ENGAGEMENT,BILLING
112
+
113
+ baker ads x stats job --account-id 18ce53xyz --entity LINE_ITEM \\
114
+ --entity-ids abc --start-time 2026-04-01T00:00:00Z \\
115
+ --end-time 2026-05-01T00:00:00Z --metric-groups ENGAGEMENT \\
116
+ --segmentation-type LOCATIONS
117
+
118
+ For fine-grained control (don't wait, poll yourself), use:
119
+ baker ads x stats job-create \u2014 create + return job ID immediately
120
+ baker ads x stats job-status \u2014 poll job status / get download URL`
121
+ },
122
+ args: {
123
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
124
+ entity: { type: "string", description: "Entity type", required: true },
125
+ "entity-ids": { type: "string", description: "CSV of entity IDs", required: true },
126
+ "start-time": { type: "string", description: "ISO start", required: true },
127
+ "end-time": { type: "string", description: "ISO end", required: true },
128
+ granularity: { type: "string", description: "Granularity", required: false },
129
+ "metric-groups": { type: "string", description: "Metric groups CSV", required: true },
130
+ placement: { type: "string", description: "Placement", required: false },
131
+ "segmentation-type": { type: "string", description: "Segmentation type", required: false },
132
+ country: { type: "string", description: "Country filter", required: false },
133
+ platform: { type: "string", description: "Platform filter", required: false },
134
+ "no-cache": { type: "boolean", description: "Skip result cache", required: false }
135
+ },
136
+ run: async ({ args }) => {
137
+ const accountId = await resolveXAccountId(args);
138
+ const entityIds = parseCsv(args["entity-ids"]);
139
+ const metricGroups = parseCsv(args["metric-groups"]);
140
+ if (!entityIds || !metricGroups) {
141
+ writeAdsJson({
142
+ ok: false,
143
+ error: { code: "MISSING_PARAMETER", message: "entity-ids and metric-groups are required" }
144
+ });
145
+ process.exit(1);
146
+ }
147
+ const body = {
148
+ accountId,
149
+ entity: args.entity,
150
+ entityIds,
151
+ startTime: args["start-time"],
152
+ endTime: args["end-time"],
153
+ granularity: args.granularity ?? "DAY",
154
+ metricGroups,
155
+ placement: args.placement ?? "ALL_ON_TWITTER",
156
+ segmentationType: args["segmentation-type"],
157
+ country: args.country,
158
+ platform: args.platform
159
+ };
160
+ const useCache = !args["no-cache"];
161
+ const cacheKey = buildCacheKey(body);
162
+ if (useCache) {
163
+ const cached = cacheGet("x-stats", cacheKey);
164
+ if (cached) {
165
+ process.stderr.write("Result served from cache.\n");
166
+ writeAdsJson({ ok: true, data: cached.data, cached: true });
167
+ return;
168
+ }
169
+ }
170
+ try {
171
+ process.stderr.write(`Creating X Ads stats job for entity=${body.entity}, ${entityIds.length} IDs...
172
+ `);
173
+ const job = await apiPost("/api/ads/x/stats/jobs", body);
174
+ process.stderr.write(`Job ${job.id} queued. Polling every ${POLL_INTERVAL_MS / 1e3}s...
175
+ `);
176
+ const finished = await pollUntilDone(accountId, job.id);
177
+ if (!finished.url) {
178
+ throw new ApiError("INTERNAL_ERROR", `Stats job ${job.id} succeeded but returned no download URL`);
179
+ }
180
+ process.stderr.write("Job complete. Downloading + decompressing results...\n");
181
+ const data = await downloadAndDecompress(finished.url);
182
+ if (useCache) {
183
+ cacheSet("x-stats", cacheKey, data, RESULT_CACHE_TTL_MS);
184
+ }
185
+ writeAdsJson({ ok: true, data });
186
+ } catch (err) {
187
+ if (err instanceof ApiError) {
188
+ writeAdsJson(parseXApiError(err.message, accountId));
189
+ process.exit(1);
190
+ }
191
+ writeAdsJson({
192
+ ok: false,
193
+ error: { code: "NETWORK_ERROR", message: err instanceof Error ? err.message : "Unexpected error" }
194
+ });
195
+ process.exit(1);
196
+ }
197
+ }
198
+ });
199
+ export {
200
+ statsJobCommand
201
+ };
202
+ //# sourceMappingURL=job-E2U4FS5P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/x/stats/job.ts"],"sourcesContent":["import { gunzipSync } from \"node:zlib\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../../../client.ts\";\nimport { registerSchema } from \"../../../../schemas.ts\";\nimport { cacheGet, cacheSet } from \"../../cache.ts\";\nimport { writeAdsJson } from \"../../output.ts\";\nimport { parseXApiError } from \"../error-parser.ts\";\nimport { resolveXAccountId } from \"../output.ts\";\n\nconst POLL_INTERVAL_MS = 10_000;\nconst DEADLINE_MS = 12 * 60 * 1000;\nconst RESULT_CACHE_TTL_MS = 6 * 60 * 60 * 1000;\n\nregisterSchema({\n command: \"ads.x.statsJob\",\n description:\n \"Asynchronous X Ads stats job, fully synchronous from the CLI's perspective. Creates the job, polls every 10s, downloads + decompresses the gzip result, returns inline JSON. Hard deadline 12 min — must run in the background. Use this for ranges >7 days, segmented stats, or any query that hits sync limits. For fine-grained control, use `stats job-create` + `stats job-status` separately.\",\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n entity: { type: \"string\", description: \"CAMPAIGN | LINE_ITEM | PROMOTED_TWEET | ...\", required: true },\n \"entity-ids\": { type: \"string\", description: \"CSV of entity IDs (max 20)\", required: true },\n \"start-time\": { type: \"string\", description: \"ISO 8601 hour-aligned start\", required: true },\n \"end-time\": { type: \"string\", description: \"ISO 8601 hour-aligned end\", required: true },\n granularity: { type: \"string\", description: \"TOTAL | DAY | HOUR\", required: false },\n \"metric-groups\": { type: \"string\", description: \"CSV of metric groups\", required: true },\n placement: { type: \"string\", description: \"ALL_ON_TWITTER | PUBLISHER_NETWORK\", required: false },\n \"segmentation-type\": { type: \"string\", description: \"Segmentation (e.g. AGE, GENDER, LOCATIONS)\", required: false },\n country: { type: \"string\", description: \"Country filter\", required: false },\n platform: { type: \"string\", description: \"Platform filter\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip result cache (still does the live job)\", required: false },\n },\n});\n\ninterface XStatsJobShape {\n id: string;\n status: string;\n url?: string;\n expires_at?: string;\n}\n\nfunction parseCsv(v: unknown): string[] | undefined {\n if (typeof v !== \"string\" || v.length === 0) return undefined;\n const parts = v\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n return parts.length > 0 ? parts : undefined;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nasync function downloadAndDecompress(url: string): Promise<unknown> {\n const res = await fetch(url, { signal: AbortSignal.timeout(60_000) });\n if (!res.ok) {\n throw new ApiError(\"INTERNAL_ERROR\", `Stats job download failed (${res.status})`);\n }\n const buf = Buffer.from(await res.arrayBuffer());\n const decompressed = gunzipSync(buf);\n return JSON.parse(decompressed.toString(\"utf-8\"));\n}\n\nasync function pollUntilDone(accountId: string, jobId: string): Promise<XStatsJobShape> {\n const deadline = Date.now() + DEADLINE_MS;\n let lastLog = 0;\n while (Date.now() < deadline) {\n await sleep(POLL_INTERVAL_MS);\n const jobs = await apiGet<XStatsJobShape[]>(\"/api/ads/x/stats/jobs\", {\n \"account-id\": accountId,\n \"job-id\": jobId,\n });\n const job = jobs[0];\n if (!job) {\n throw new ApiError(\"NOT_FOUND\", `Stats job ${jobId} not found`);\n }\n if (job.status === \"SUCCESS\") {\n return job;\n }\n if (job.status === \"FAILED\" || job.status === \"CANCELLED\") {\n throw new ApiError(\"INTERNAL_ERROR\", `Stats job ${jobId} ended in status ${job.status}`);\n }\n const elapsed = DEADLINE_MS - (deadline - Date.now());\n if (elapsed - lastLog > 30_000) {\n process.stderr.write(` polling... (${job.status}, ${Math.round(elapsed / 1000)}s elapsed)\\n`);\n lastLog = elapsed;\n }\n }\n throw new ApiError(\"TIMEOUT\", `Stats job ${jobId} did not complete within ${DEADLINE_MS / 60_000} minutes`);\n}\n\nfunction buildCacheKey(body: Record<string, unknown>): string {\n return `stats-job:${JSON.stringify(body)}`;\n}\n\nexport const statsJobCommand = defineCommand({\n meta: {\n name: \"job\",\n description: `Async X Ads stats job, sync from the CLI's perspective. Creates → polls → downloads → returns.\n\nMust run in the background (the harness enforces this).\n\nUse this when:\n • Date range > 7 days\n • Need segmentation (AGE, GENDER, LOCATIONS, ...)\n • Sync stats hit a limit\n\nExamples:\n baker ads x stats job --account-id 18ce53xyz --entity CAMPAIGN \\\\\n --entity-ids abc,def --start-time 2026-04-01T00:00:00Z \\\\\n --end-time 2026-05-01T00:00:00Z --metric-groups ENGAGEMENT,BILLING\n\n baker ads x stats job --account-id 18ce53xyz --entity LINE_ITEM \\\\\n --entity-ids abc --start-time 2026-04-01T00:00:00Z \\\\\n --end-time 2026-05-01T00:00:00Z --metric-groups ENGAGEMENT \\\\\n --segmentation-type LOCATIONS\n\nFor fine-grained control (don't wait, poll yourself), use:\n baker ads x stats job-create — create + return job ID immediately\n baker ads x stats job-status — poll job status / get download URL`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n entity: { type: \"string\", description: \"Entity type\", required: true },\n \"entity-ids\": { type: \"string\", description: \"CSV of entity IDs\", required: true },\n \"start-time\": { type: \"string\", description: \"ISO start\", required: true },\n \"end-time\": { type: \"string\", description: \"ISO end\", required: true },\n granularity: { type: \"string\", description: \"Granularity\", required: false },\n \"metric-groups\": { type: \"string\", description: \"Metric groups CSV\", required: true },\n placement: { type: \"string\", description: \"Placement\", required: false },\n \"segmentation-type\": { type: \"string\", description: \"Segmentation type\", required: false },\n country: { type: \"string\", description: \"Country filter\", required: false },\n platform: { type: \"string\", description: \"Platform filter\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip result cache\", required: false },\n },\n run: async ({ args }) => {\n const accountId = await resolveXAccountId(args);\n const entityIds = parseCsv(args[\"entity-ids\"]);\n const metricGroups = parseCsv(args[\"metric-groups\"]);\n if (!entityIds || !metricGroups) {\n writeAdsJson({\n ok: false,\n error: { code: \"MISSING_PARAMETER\", message: \"entity-ids and metric-groups are required\" },\n });\n process.exit(1);\n }\n\n const body = {\n accountId,\n entity: args.entity as string,\n entityIds,\n startTime: args[\"start-time\"] as string,\n endTime: args[\"end-time\"] as string,\n granularity: (args.granularity as string | undefined) ?? \"DAY\",\n metricGroups,\n placement: (args.placement as string | undefined) ?? \"ALL_ON_TWITTER\",\n segmentationType: args[\"segmentation-type\"] as string | undefined,\n country: args.country as string | undefined,\n platform: args.platform as string | undefined,\n };\n\n const useCache = !args[\"no-cache\"];\n const cacheKey = buildCacheKey(body);\n if (useCache) {\n const cached = cacheGet<unknown>(\"x-stats\", cacheKey);\n if (cached) {\n process.stderr.write(\"Result served from cache.\\n\");\n writeAdsJson({ ok: true, data: cached.data, cached: true });\n return;\n }\n }\n\n try {\n process.stderr.write(`Creating X Ads stats job for entity=${body.entity}, ${entityIds.length} IDs...\\n`);\n const job = await apiPost<XStatsJobShape>(\"/api/ads/x/stats/jobs\", body);\n process.stderr.write(`Job ${job.id} queued. Polling every ${POLL_INTERVAL_MS / 1000}s...\\n`);\n\n const finished = await pollUntilDone(accountId, job.id);\n if (!finished.url) {\n throw new ApiError(\"INTERNAL_ERROR\", `Stats job ${job.id} succeeded but returned no download URL`);\n }\n\n process.stderr.write(\"Job complete. Downloading + decompressing results...\\n\");\n const data = await downloadAndDecompress(finished.url);\n\n if (useCache) {\n cacheSet(\"x-stats\", cacheKey, data, RESULT_CACHE_TTL_MS);\n }\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({\n ok: false,\n error: { code: \"NETWORK_ERROR\", message: err instanceof Error ? err.message : \"Unexpected error\" },\n });\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,109 @@
1
+ import {
2
+ parseXApiError
3
+ } from "./chunk-M6UNISGO.js";
4
+ import {
5
+ resolveXAccountId
6
+ } from "./chunk-G7AFVTUS.js";
7
+ import {
8
+ writeAdsJson
9
+ } from "./chunk-BVM5IRZW.js";
10
+ import {
11
+ ApiError,
12
+ apiPost
13
+ } from "./chunk-HREWXNTO.js";
14
+ import "./chunk-HLXWKMTK.js";
15
+ import "./chunk-O6QKCJE4.js";
16
+ import {
17
+ registerSchema
18
+ } from "./chunk-WOTDHRNF.js";
19
+ import "./chunk-YQSBHWOI.js";
20
+
21
+ // src/commands/ads/x/stats/job-create.ts
22
+ import { defineCommand } from "citty";
23
+ registerSchema({
24
+ command: "ads.x.statsJobCreate",
25
+ description: "Create an asynchronous X Ads stats job (range up to 90 days non-segmented, 45 days segmented). Returns a job id; poll with `stats job-status`. Times must be ISO 8601 hour-aligned.",
26
+ args: {
27
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
28
+ entity: { type: "string", description: "CAMPAIGN | LINE_ITEM | PROMOTED_TWEET | ...", required: true },
29
+ "entity-ids": { type: "string", description: "CSV of entity IDs (max 20)", required: true },
30
+ "start-time": { type: "string", description: "ISO 8601 hour-aligned start", required: true },
31
+ "end-time": { type: "string", description: "ISO 8601 hour-aligned end", required: true },
32
+ granularity: { type: "string", description: "TOTAL | DAY | HOUR", required: false },
33
+ "metric-groups": { type: "string", description: "CSV of metric groups", required: true },
34
+ placement: { type: "string", description: "ALL_ON_TWITTER | PUBLISHER_NETWORK", required: false },
35
+ "segmentation-type": { type: "string", description: "Segmentation (e.g. AGE, GENDER, LOCATIONS)", required: false },
36
+ country: { type: "string", description: "Country filter", required: false },
37
+ platform: { type: "string", description: "Platform filter", required: false }
38
+ }
39
+ });
40
+ function parseCsv(v) {
41
+ if (typeof v !== "string" || v.length === 0) return void 0;
42
+ const parts = v.split(",").map((s) => s.trim()).filter(Boolean);
43
+ return parts.length > 0 ? parts : void 0;
44
+ }
45
+ var statsJobCreateCommand = defineCommand({
46
+ meta: {
47
+ name: "job-create",
48
+ description: `Create an async X Ads stats job (up to 90 days, supports segmentation).
49
+
50
+ Examples:
51
+ baker ads x stats job-create --account-id 18ce53xyz --entity CAMPAIGN \\
52
+ --entity-ids abc,def --start-time 2026-04-01T00:00:00Z \\
53
+ --end-time 2026-05-01T00:00:00Z --metric-groups ENGAGEMENT,BILLING \\
54
+ --segmentation-type LOCATIONS`
55
+ },
56
+ args: {
57
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
58
+ entity: { type: "string", description: "Entity type", required: true },
59
+ "entity-ids": { type: "string", description: "CSV of entity IDs", required: true },
60
+ "start-time": { type: "string", description: "ISO start", required: true },
61
+ "end-time": { type: "string", description: "ISO end", required: true },
62
+ granularity: { type: "string", description: "Granularity", required: false },
63
+ "metric-groups": { type: "string", description: "Metric groups CSV", required: true },
64
+ placement: { type: "string", description: "Placement", required: false },
65
+ "segmentation-type": { type: "string", description: "Segmentation type", required: false },
66
+ country: { type: "string", description: "Country filter", required: false },
67
+ platform: { type: "string", description: "Platform filter", required: false }
68
+ },
69
+ run: async ({ args }) => {
70
+ const accountId = await resolveXAccountId(args);
71
+ const entityIds = parseCsv(args["entity-ids"]);
72
+ const metricGroups = parseCsv(args["metric-groups"]);
73
+ if (!entityIds || !metricGroups) {
74
+ writeAdsJson({
75
+ ok: false,
76
+ error: { code: "MISSING_PARAMETER", message: "entity-ids and metric-groups are required" }
77
+ });
78
+ process.exit(1);
79
+ }
80
+ const body = {
81
+ accountId,
82
+ entity: args.entity,
83
+ entityIds,
84
+ startTime: args["start-time"],
85
+ endTime: args["end-time"],
86
+ granularity: args.granularity ?? "DAY",
87
+ metricGroups,
88
+ placement: args.placement ?? "ALL_ON_TWITTER",
89
+ segmentationType: args["segmentation-type"],
90
+ country: args.country,
91
+ platform: args.platform
92
+ };
93
+ try {
94
+ const data = await apiPost("/api/ads/x/stats/jobs", body);
95
+ writeAdsJson({ ok: true, data });
96
+ } catch (err) {
97
+ if (err instanceof ApiError) {
98
+ writeAdsJson(parseXApiError(err.message, accountId));
99
+ process.exit(1);
100
+ }
101
+ writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
102
+ process.exit(1);
103
+ }
104
+ }
105
+ });
106
+ export {
107
+ statsJobCreateCommand
108
+ };
109
+ //# sourceMappingURL=job-create-DFYCHVQ7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/x/stats/job-create.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../../../client.ts\";\nimport { registerSchema } from \"../../../../schemas.ts\";\nimport { writeAdsJson } from \"../../output.ts\";\nimport { parseXApiError } from \"../error-parser.ts\";\nimport { resolveXAccountId } from \"../output.ts\";\n\nregisterSchema({\n command: \"ads.x.statsJobCreate\",\n description:\n \"Create an asynchronous X Ads stats job (range up to 90 days non-segmented, 45 days segmented). Returns a job id; poll with `stats job-status`. Times must be ISO 8601 hour-aligned.\",\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n entity: { type: \"string\", description: \"CAMPAIGN | LINE_ITEM | PROMOTED_TWEET | ...\", required: true },\n \"entity-ids\": { type: \"string\", description: \"CSV of entity IDs (max 20)\", required: true },\n \"start-time\": { type: \"string\", description: \"ISO 8601 hour-aligned start\", required: true },\n \"end-time\": { type: \"string\", description: \"ISO 8601 hour-aligned end\", required: true },\n granularity: { type: \"string\", description: \"TOTAL | DAY | HOUR\", required: false },\n \"metric-groups\": { type: \"string\", description: \"CSV of metric groups\", required: true },\n placement: { type: \"string\", description: \"ALL_ON_TWITTER | PUBLISHER_NETWORK\", required: false },\n \"segmentation-type\": { type: \"string\", description: \"Segmentation (e.g. AGE, GENDER, LOCATIONS)\", required: false },\n country: { type: \"string\", description: \"Country filter\", required: false },\n platform: { type: \"string\", description: \"Platform filter\", required: false },\n },\n});\n\nfunction parseCsv(v: unknown): string[] | undefined {\n if (typeof v !== \"string\" || v.length === 0) return undefined;\n const parts = v\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n return parts.length > 0 ? parts : undefined;\n}\n\nexport const statsJobCreateCommand = defineCommand({\n meta: {\n name: \"job-create\",\n description: `Create an async X Ads stats job (up to 90 days, supports segmentation).\n\nExamples:\n baker ads x stats job-create --account-id 18ce53xyz --entity CAMPAIGN \\\\\n --entity-ids abc,def --start-time 2026-04-01T00:00:00Z \\\\\n --end-time 2026-05-01T00:00:00Z --metric-groups ENGAGEMENT,BILLING \\\\\n --segmentation-type LOCATIONS`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n entity: { type: \"string\", description: \"Entity type\", required: true },\n \"entity-ids\": { type: \"string\", description: \"CSV of entity IDs\", required: true },\n \"start-time\": { type: \"string\", description: \"ISO start\", required: true },\n \"end-time\": { type: \"string\", description: \"ISO end\", required: true },\n granularity: { type: \"string\", description: \"Granularity\", required: false },\n \"metric-groups\": { type: \"string\", description: \"Metric groups CSV\", required: true },\n placement: { type: \"string\", description: \"Placement\", required: false },\n \"segmentation-type\": { type: \"string\", description: \"Segmentation type\", required: false },\n country: { type: \"string\", description: \"Country filter\", required: false },\n platform: { type: \"string\", description: \"Platform filter\", required: false },\n },\n run: async ({ args }) => {\n const accountId = await resolveXAccountId(args);\n const entityIds = parseCsv(args[\"entity-ids\"]);\n const metricGroups = parseCsv(args[\"metric-groups\"]);\n if (!entityIds || !metricGroups) {\n writeAdsJson({\n ok: false,\n error: { code: \"MISSING_PARAMETER\", message: \"entity-ids and metric-groups are required\" },\n });\n process.exit(1);\n }\n const body = {\n accountId,\n entity: args.entity as string,\n entityIds,\n startTime: args[\"start-time\"] as string,\n endTime: args[\"end-time\"] as string,\n granularity: (args.granularity as string | undefined) ?? \"DAY\",\n metricGroups,\n placement: (args.placement as string | undefined) ?? \"ALL_ON_TWITTER\",\n segmentationType: args[\"segmentation-type\"] as string | undefined,\n country: args.country as string | undefined,\n platform: args.platform as string | undefined,\n };\n try {\n const data = await apiPost<unknown>(\"/api/ads/x/stats/jobs\", body);\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":"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","names":[]}
@@ -0,0 +1,74 @@
1
+ import {
2
+ parseXApiError
3
+ } from "./chunk-M6UNISGO.js";
4
+ import {
5
+ resolveXAccountId
6
+ } from "./chunk-G7AFVTUS.js";
7
+ import {
8
+ writeAdsJson
9
+ } from "./chunk-BVM5IRZW.js";
10
+ import {
11
+ ApiError,
12
+ apiGet
13
+ } from "./chunk-HREWXNTO.js";
14
+ import "./chunk-HLXWKMTK.js";
15
+ import "./chunk-O6QKCJE4.js";
16
+ import {
17
+ registerSchema
18
+ } from "./chunk-WOTDHRNF.js";
19
+ import "./chunk-YQSBHWOI.js";
20
+
21
+ // src/commands/ads/x/stats/job-status.ts
22
+ import { defineCommand } from "citty";
23
+ registerSchema({
24
+ command: "ads.x.statsJobStatus",
25
+ description: "Check the status of one or more X Ads stats jobs. Returns status (PROCESSING|SUCCESS|FAILED) and a downloadable url when SUCCESS. Pass --job-id or --job-ids (CSV).",
26
+ args: {
27
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
28
+ "job-id": { type: "string", description: "Single job ID", required: false },
29
+ "job-ids": { type: "string", description: "CSV of job IDs", required: false }
30
+ }
31
+ });
32
+ var statsJobStatusCommand = defineCommand({
33
+ meta: {
34
+ name: "job-status",
35
+ description: `Poll the status of an async X Ads stats job.
36
+
37
+ Examples:
38
+ baker ads x stats job-status --account-id 18ce53xyz --job-id abc
39
+ baker ads x stats job-status --account-id 18ce53xyz --job-ids abc,def`
40
+ },
41
+ args: {
42
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
43
+ "job-id": { type: "string", description: "Job ID", required: false },
44
+ "job-ids": { type: "string", description: "CSV of job IDs", required: false }
45
+ },
46
+ run: async ({ args }) => {
47
+ const accountId = await resolveXAccountId(args);
48
+ if (!args["job-id"] && !args["job-ids"]) {
49
+ writeAdsJson({
50
+ ok: false,
51
+ error: { code: "MISSING_PARAMETER", message: "Pass --job-id or --job-ids" }
52
+ });
53
+ process.exit(1);
54
+ }
55
+ try {
56
+ const params = { "account-id": accountId };
57
+ if (args["job-id"]) params["job-id"] = args["job-id"];
58
+ if (args["job-ids"]) params["job-ids"] = args["job-ids"];
59
+ const data = await apiGet("/api/ads/x/stats/jobs", params);
60
+ writeAdsJson({ ok: true, data });
61
+ } catch (err) {
62
+ if (err instanceof ApiError) {
63
+ writeAdsJson(parseXApiError(err.message, accountId));
64
+ process.exit(1);
65
+ }
66
+ writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
67
+ process.exit(1);
68
+ }
69
+ }
70
+ });
71
+ export {
72
+ statsJobStatusCommand
73
+ };
74
+ //# sourceMappingURL=job-status-FFPMTSHB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/x/stats/job-status.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { ApiError, apiGet } from \"../../../../client.ts\";\nimport { registerSchema } from \"../../../../schemas.ts\";\nimport { writeAdsJson } from \"../../output.ts\";\nimport { parseXApiError } from \"../error-parser.ts\";\nimport { resolveXAccountId } from \"../output.ts\";\n\nregisterSchema({\n command: \"ads.x.statsJobStatus\",\n description:\n \"Check the status of one or more X Ads stats jobs. Returns status (PROCESSING|SUCCESS|FAILED) and a downloadable url when SUCCESS. Pass --job-id or --job-ids (CSV).\",\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n \"job-id\": { type: \"string\", description: \"Single job ID\", required: false },\n \"job-ids\": { type: \"string\", description: \"CSV of job IDs\", required: false },\n },\n});\n\nexport const statsJobStatusCommand = defineCommand({\n meta: {\n name: \"job-status\",\n description: `Poll the status of an async X Ads stats job.\n\nExamples:\n baker ads x stats job-status --account-id 18ce53xyz --job-id abc\n baker ads x stats job-status --account-id 18ce53xyz --job-ids abc,def`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n \"job-id\": { type: \"string\", description: \"Job ID\", required: false },\n \"job-ids\": { type: \"string\", description: \"CSV of job IDs\", required: false },\n },\n run: async ({ args }) => {\n const accountId = await resolveXAccountId(args);\n if (!args[\"job-id\"] && !args[\"job-ids\"]) {\n writeAdsJson({\n ok: false,\n error: { code: \"MISSING_PARAMETER\", message: \"Pass --job-id or --job-ids\" },\n });\n process.exit(1);\n }\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"job-id\"]) params[\"job-id\"] = args[\"job-id\"] as string;\n if (args[\"job-ids\"]) params[\"job-ids\"] = args[\"job-ids\"] as string;\n const data = await apiGet<unknown[]>(\"/api/ads/x/stats/jobs\", params);\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;AAO9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,oBAAoB,UAAU,MAAM;AAAA,IACjF,UAAU,EAAE,MAAM,UAAU,aAAa,iBAAiB,UAAU,MAAM;AAAA,IAC1E,WAAW,EAAE,MAAM,UAAU,aAAa,kBAAkB,UAAU,MAAM;AAAA,EAC9E;AACF,CAAC;AAEM,IAAM,wBAAwB,cAAc;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,oBAAoB,UAAU,MAAM;AAAA,IACjF,UAAU,EAAE,MAAM,UAAU,aAAa,UAAU,UAAU,MAAM;AAAA,IACnE,WAAW,EAAE,MAAM,UAAU,aAAa,kBAAkB,UAAU,MAAM;AAAA,EAC9E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,MAAM,kBAAkB,IAAI;AAC9C,QAAI,CAAC,KAAK,QAAQ,KAAK,CAAC,KAAK,SAAS,GAAG;AACvC,mBAAa;AAAA,QACX,IAAI;AAAA,QACJ,OAAO,EAAE,MAAM,qBAAqB,SAAS,6BAA6B;AAAA,MAC5E,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,UAAI,KAAK,QAAQ,EAAG,QAAO,QAAQ,IAAI,KAAK,QAAQ;AACpD,UAAI,KAAK,SAAS,EAAG,QAAO,SAAS,IAAI,KAAK,SAAS;AACvD,YAAM,OAAO,MAAM,OAAkB,yBAAyB,MAAM;AACpE,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":[]}
@@ -0,0 +1,78 @@
1
+ import {
2
+ failStudioCommand
3
+ } from "./chunk-3UDSYYND.js";
4
+ import {
5
+ apiPost
6
+ } from "./chunk-HREWXNTO.js";
7
+ import "./chunk-HLXWKMTK.js";
8
+ import "./chunk-O6QKCJE4.js";
9
+ import {
10
+ registerSchema,
11
+ writeJson
12
+ } from "./chunk-WOTDHRNF.js";
13
+ import "./chunk-YQSBHWOI.js";
14
+
15
+ // src/commands/studio/keep.ts
16
+ import { defineCommand } from "citty";
17
+ registerSchema({
18
+ command: "studio.keep",
19
+ description: "Mark one take as the keeper. For an image this stars it, so the client reviewing the batch sees which one you used. For a CLIP it is the step that puts it in the video library \u2014 until then the clip cannot be used in a canvas, a landing, or an ad.",
20
+ args: {
21
+ "generation-id": { type: "string", description: "Batch id from `generate` / `animate`", required: true },
22
+ slot: { type: "number", description: "Which take, as shown in the batch (0-based)", required: true },
23
+ undo: { type: "boolean", description: "Un-star an image, or take a kept clip back out", required: false }
24
+ }
25
+ });
26
+ var keepCommand = defineCommand({
27
+ meta: {
28
+ name: "keep",
29
+ description: "Mark one take as the keeper. An image gets starred (it was already in the library); a clip gets INGESTED into the video library, which is what makes it usable anywhere else.\n\nExample: baker studio keep j57abc123def456ghi789 --slot 2\nExample: baker studio keep j57abc123def456ghi789 --slot 2 --undo"
30
+ },
31
+ args: {
32
+ "generation-id": { type: "positional", description: "Batch id", required: false },
33
+ slot: { type: "string", description: "Which take (0-based)", required: false },
34
+ undo: { type: "boolean", description: "Reverse the keep", required: false }
35
+ },
36
+ run: async ({ args }) => {
37
+ try {
38
+ const generationId = args["generation-id"];
39
+ if (!generationId) {
40
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "A batch id is required" } });
41
+ process.exit(1);
42
+ }
43
+ if (args.slot === void 0 || args.slot === "") {
44
+ writeJson({
45
+ ok: false,
46
+ error: { code: "VALIDATION_ERROR", message: "--slot is required: say which take you are keeping" }
47
+ });
48
+ process.exit(1);
49
+ }
50
+ const data = await apiPost("/api/studio/keep", {
51
+ generationId,
52
+ slot: Number(args.slot),
53
+ ...args.undo ? { keep: false } : {}
54
+ });
55
+ const hints = [];
56
+ if (data.kind === "video" && data.kept) {
57
+ hints.push(
58
+ `The clip is in the video library now as ${data.videoId ?? "a new video"} \u2014 use that id from a canvas, a landing, or an ad.`
59
+ );
60
+ }
61
+ if (data.kind === "video" && !data.kept) {
62
+ hints.push("The clip is out of the video library again, so nothing else can use it.");
63
+ }
64
+ if (data.kind === "image" && data.kept) {
65
+ hints.push(
66
+ "Starred. The image was already in the media library \u2014 this is what tells the client it is the pick."
67
+ );
68
+ }
69
+ writeJson({ ok: true, data, hints });
70
+ } catch (error) {
71
+ failStudioCommand(error);
72
+ }
73
+ }
74
+ });
75
+ export {
76
+ keepCommand
77
+ };
78
+ //# sourceMappingURL=keep-GYZS2UTL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/studio/keep.ts"],"sourcesContent":["import type { StudioKeepResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failStudioCommand } from \"./errors.ts\";\n\nregisterSchema({\n command: \"studio.keep\",\n description:\n \"Mark one take as the keeper. For an image this stars it, so the client reviewing the batch sees which one you used. For a CLIP it is the step that puts it in the video library — until then the clip cannot be used in a canvas, a landing, or an ad.\",\n args: {\n \"generation-id\": { type: \"string\", description: \"Batch id from `generate` / `animate`\", required: true },\n slot: { type: \"number\", description: \"Which take, as shown in the batch (0-based)\", required: true },\n undo: { type: \"boolean\", description: \"Un-star an image, or take a kept clip back out\", required: false },\n },\n});\n\nexport const keepCommand = defineCommand({\n meta: {\n name: \"keep\",\n description:\n \"Mark one take as the keeper. An image gets starred (it was already in the library); a clip gets INGESTED into the video library, which is what makes it usable anywhere else.\\n\\nExample: baker studio keep j57abc123def456ghi789 --slot 2\\nExample: baker studio keep j57abc123def456ghi789 --slot 2 --undo\",\n },\n args: {\n \"generation-id\": { type: \"positional\", description: \"Batch id\", required: false },\n slot: { type: \"string\", description: \"Which take (0-based)\", required: false },\n undo: { type: \"boolean\", description: \"Reverse the keep\", required: false },\n },\n run: async ({ args }) => {\n try {\n const generationId = args[\"generation-id\"] as string | undefined;\n if (!generationId) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"A batch id is required\" } });\n process.exit(1);\n }\n if (args.slot === undefined || args.slot === \"\") {\n writeJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: \"--slot is required: say which take you are keeping\" },\n });\n process.exit(1);\n }\n\n const data = await apiPost<StudioKeepResponse>(\"/api/studio/keep\", {\n generationId,\n slot: Number(args.slot),\n ...(args.undo ? { keep: false } : {}),\n });\n\n const hints: string[] = [];\n if (data.kind === \"video\" && data.kept) {\n hints.push(\n `The clip is in the video library now as ${data.videoId ?? \"a new video\"} — use that id from a canvas, a landing, or an ad.`,\n );\n }\n if (data.kind === \"video\" && !data.kept) {\n hints.push(\"The clip is out of the video library again, so nothing else can use it.\");\n }\n if (data.kind === \"image\" && data.kept) {\n hints.push(\n \"Starred. The image was already in the media library — this is what tells the client it is the pick.\",\n );\n }\n writeJson({ ok: true, data, hints });\n } catch (error) {\n failStudioCommand(error);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,iBAAiB,EAAE,MAAM,UAAU,aAAa,wCAAwC,UAAU,KAAK;AAAA,IACvG,MAAM,EAAE,MAAM,UAAU,aAAa,+CAA+C,UAAU,KAAK;AAAA,IACnG,MAAM,EAAE,MAAM,WAAW,aAAa,kDAAkD,UAAU,MAAM;AAAA,EAC1G;AACF,CAAC;AAEM,IAAM,cAAc,cAAc;AAAA,EACvC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,iBAAiB,EAAE,MAAM,cAAc,aAAa,YAAY,UAAU,MAAM;AAAA,IAChF,MAAM,EAAE,MAAM,UAAU,aAAa,wBAAwB,UAAU,MAAM;AAAA,IAC7E,MAAM,EAAE,MAAM,WAAW,aAAa,oBAAoB,UAAU,MAAM;AAAA,EAC5E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,eAAe,KAAK,eAAe;AACzC,UAAI,CAAC,cAAc;AACjB,kBAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,SAAS,yBAAyB,EAAE,CAAC;AAC/F,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,UAAI,KAAK,SAAS,UAAa,KAAK,SAAS,IAAI;AAC/C,kBAAU;AAAA,UACR,IAAI;AAAA,UACJ,OAAO,EAAE,MAAM,oBAAoB,SAAS,qDAAqD;AAAA,QACnG,CAAC;AACD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAEA,YAAM,OAAO,MAAM,QAA4B,oBAAoB;AAAA,QACjE;AAAA,QACA,MAAM,OAAO,KAAK,IAAI;AAAA,QACtB,GAAI,KAAK,OAAO,EAAE,MAAM,MAAM,IAAI,CAAC;AAAA,MACrC,CAAC;AAED,YAAM,QAAkB,CAAC;AACzB,UAAI,KAAK,SAAS,WAAW,KAAK,MAAM;AACtC,cAAM;AAAA,UACJ,2CAA2C,KAAK,WAAW,aAAa;AAAA,QAC1E;AAAA,MACF;AACA,UAAI,KAAK,SAAS,WAAW,CAAC,KAAK,MAAM;AACvC,cAAM,KAAK,yEAAyE;AAAA,MACtF;AACA,UAAI,KAAK,SAAS,WAAW,KAAK,MAAM;AACtC,cAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA,gBAAU,EAAE,IAAI,MAAM,MAAM,MAAM,CAAC;AAAA,IACrC,SAAS,OAAO;AACd,wBAAkB,KAAK;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":[]}