@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,76 @@
1
+ import {
2
+ handleConnectionError,
3
+ isNotConnectedError,
4
+ writeAdsJson
5
+ } from "./chunk-EIGXX6KI.js";
6
+ import {
7
+ ApiError
8
+ } from "./chunk-CUL3VB4L.js";
9
+
10
+ // src/commands/ads/google/service-read-errors.ts
11
+ var KNOWN_REFUSALS = [
12
+ {
13
+ match: /BILLING_SETUP_NOT_ON_MONTHLY_INVOICING/,
14
+ code: "NOT_INVOICED",
15
+ message: "This account is not billed by monthly invoicing, so Google issues no invoices through the API.",
16
+ explanation: "Degrade, don't abort: the account pays automatically (card or bank), and its receipts are in Google Ads \u2192 Billing \u2192 Documents for the user to download. Spend itself is readable with `query --preset account-summary`. Carry on with the rest of the job."
17
+ },
18
+ {
19
+ match: /no approved billing setup/i,
20
+ code: "NO_BILLING_SETUP",
21
+ message: "This account has no approved billing setup, so it has no invoices.",
22
+ explanation: "Degrade, don't abort: nothing is billed to this account yet (or a manager account pays). Carry on with the rest of the job."
23
+ },
24
+ {
25
+ match: /BILLING_NOT_ON_MONTHLY_INVOICING|verification is only open to customers with billing setup for monthly invoicing/,
26
+ code: "VERIFICATION_NOT_READABLE",
27
+ message: "Google only reports advertiser verification through the API for accounts on monthly invoicing.",
28
+ explanation: "Degrade, don't abort: the status is in Google Ads \u2192 Billing \u2192 Advertiser verification, where the user can read it. Say that, and carry on with the rest of the job."
29
+ },
30
+ {
31
+ match: /UNSUPPORTED_AD_TYPE/,
32
+ code: "NO_PREVIEW_FOR_AD_TYPE",
33
+ message: "Google has no shareable preview for this ad type: --ads previews only video ads of Video campaigns, live on YouTube (search, display and Demand Gen ads answer unsupported).",
34
+ explanation: "Degrade, don't abort: preview a Performance Max campaign with --asset-groups, and describe any other ad from its copy (`ads list`, `query --preset ad-copy-performance`). Carry on with the rest of the job."
35
+ }
36
+ ];
37
+ function serviceReadRefusal(message) {
38
+ const known = KNOWN_REFUSALS.find((refusal) => refusal.match.test(message));
39
+ if (!known) return null;
40
+ return {
41
+ ok: false,
42
+ error: {
43
+ code: known.code,
44
+ message: known.message,
45
+ fix: { action: "reject", explanation: known.explanation },
46
+ retryable: false
47
+ }
48
+ };
49
+ }
50
+ function exitWithServiceReadError(err) {
51
+ if (err instanceof ApiError) {
52
+ if (isNotConnectedError(err.code, err.message)) handleConnectionError("google_ads", err.message);
53
+ writeAdsJson(
54
+ serviceReadRefusal(err.message) ?? {
55
+ ok: false,
56
+ error: {
57
+ code: err.code,
58
+ message: err.message,
59
+ fix: { action: "reject", explanation: err.message },
60
+ retryable: err.code === "RATE_LIMITED" || err.code === "UNAVAILABLE"
61
+ }
62
+ }
63
+ );
64
+ process.exit(1);
65
+ }
66
+ writeAdsJson({
67
+ ok: false,
68
+ error: { code: "NETWORK_ERROR", message: err instanceof Error ? err.message : "Unexpected error" }
69
+ });
70
+ process.exit(1);
71
+ }
72
+
73
+ export {
74
+ exitWithServiceReadError
75
+ };
76
+ //# sourceMappingURL=chunk-V6XXXEXZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/google/service-read-errors.ts"],"sourcesContent":["/**\n * What a refused non-GAQL read (invoices, identity verification, previews, forecast, themes) tells\n * the agent. A refusal that is the account's situation — not on monthly invoicing, no billing\n * setup — is not a failure of the job: the fix says where the answer lives instead and to carry on.\n */\nimport { ApiError } from \"../../../client.ts\";\nimport { handleConnectionError, isNotConnectedError } from \"../../../error-handler.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport type { AdsErrorEnvelope } from \"../types.ts\";\n\ninterface KnownRefusal {\n match: RegExp;\n code: string;\n message: string;\n explanation: string;\n}\n\nconst KNOWN_REFUSALS: KnownRefusal[] = [\n {\n match: /BILLING_SETUP_NOT_ON_MONTHLY_INVOICING/,\n code: \"NOT_INVOICED\",\n message: \"This account is not billed by monthly invoicing, so Google issues no invoices through the API.\",\n explanation:\n \"Degrade, don't abort: the account pays automatically (card or bank), and its receipts are in Google Ads → Billing → Documents for the user to download. Spend itself is readable with `query --preset account-summary`. Carry on with the rest of the job.\",\n },\n {\n match: /no approved billing setup/i,\n code: \"NO_BILLING_SETUP\",\n message: \"This account has no approved billing setup, so it has no invoices.\",\n explanation:\n \"Degrade, don't abort: nothing is billed to this account yet (or a manager account pays). Carry on with the rest of the job.\",\n },\n {\n match:\n /BILLING_NOT_ON_MONTHLY_INVOICING|verification is only open to customers with billing setup for monthly invoicing/,\n code: \"VERIFICATION_NOT_READABLE\",\n message: \"Google only reports advertiser verification through the API for accounts on monthly invoicing.\",\n explanation:\n \"Degrade, don't abort: the status is in Google Ads → Billing → Advertiser verification, where the user can read it. Say that, and carry on with the rest of the job.\",\n },\n {\n match: /UNSUPPORTED_AD_TYPE/,\n code: \"NO_PREVIEW_FOR_AD_TYPE\",\n message:\n \"Google has no shareable preview for this ad type: --ads previews only video ads of Video campaigns, live on YouTube (search, display and Demand Gen ads answer unsupported).\",\n explanation:\n \"Degrade, don't abort: preview a Performance Max campaign with --asset-groups, and describe any other ad from its copy (`ads list`, `query --preset ad-copy-performance`). Carry on with the rest of the job.\",\n },\n];\n\nexport function serviceReadRefusal(message: string): AdsErrorEnvelope | null {\n const known = KNOWN_REFUSALS.find((refusal) => refusal.match.test(message));\n if (!known) return null;\n return {\n ok: false,\n error: {\n code: known.code,\n message: known.message,\n fix: { action: \"reject\", explanation: known.explanation },\n retryable: false,\n },\n };\n}\n\n/** Write the error envelope for a failed service read and exit. */\nexport function exitWithServiceReadError(err: unknown): never {\n if (err instanceof ApiError) {\n if (isNotConnectedError(err.code, err.message)) handleConnectionError(\"google_ads\", err.message);\n writeAdsJson(\n serviceReadRefusal(err.message) ?? {\n ok: false,\n error: {\n code: err.code,\n message: err.message,\n fix: { action: \"reject\", explanation: err.message },\n retryable: err.code === \"RATE_LIMITED\" || err.code === \"UNAVAILABLE\",\n },\n },\n );\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"],"mappings":";;;;;;;;;;AAiBA,IAAM,iBAAiC;AAAA,EACrC;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,OACE;AAAA,IACF,MAAM;AAAA,IACN,SAAS;AAAA,IACT,aACE;AAAA,EACJ;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SACE;AAAA,IACF,aACE;AAAA,EACJ;AACF;AAEO,SAAS,mBAAmB,SAA0C;AAC3E,QAAM,QAAQ,eAAe,KAAK,CAAC,YAAY,QAAQ,MAAM,KAAK,OAAO,CAAC;AAC1E,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO;AAAA,MACL,MAAM,MAAM;AAAA,MACZ,SAAS,MAAM;AAAA,MACf,KAAK,EAAE,QAAQ,UAAU,aAAa,MAAM,YAAY;AAAA,MACxD,WAAW;AAAA,IACb;AAAA,EACF;AACF;AAGO,SAAS,yBAAyB,KAAqB;AAC5D,MAAI,eAAe,UAAU;AAC3B,QAAI,oBAAoB,IAAI,MAAM,IAAI,OAAO,EAAG,uBAAsB,cAAc,IAAI,OAAO;AAC/F;AAAA,MACE,mBAAmB,IAAI,OAAO,KAAK;AAAA,QACjC,IAAI;AAAA,QACJ,OAAO;AAAA,UACL,MAAM,IAAI;AAAA,UACV,SAAS,IAAI;AAAA,UACb,KAAK,EAAE,QAAQ,UAAU,aAAa,IAAI,QAAQ;AAAA,UAClD,WAAW,IAAI,SAAS,kBAAkB,IAAI,SAAS;AAAA,QACzD;AAAA,MACF;AAAA,IACF;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,eAAa;AAAA,IACX,IAAI;AAAA,IACJ,OAAO,EAAE,MAAM,iBAAiB,SAAS,eAAe,QAAQ,IAAI,UAAU,mBAAmB;AAAA,EACnG,CAAC;AACD,UAAQ,KAAK,CAAC;AAChB;","names":[]}
@@ -0,0 +1,92 @@
1
+ import {
2
+ leadVersion,
3
+ writeSeriesMemberCanvas
4
+ } from "./chunk-EVDRF4CI.js";
5
+ import {
6
+ claimNewCreativeInWorkspace,
7
+ creativeLimitRefusal
8
+ } from "./chunk-CVEY353K.js";
9
+ import {
10
+ definitionFieldsOf,
11
+ setDefinitionFields,
12
+ setSpecMessage
13
+ } from "./chunk-TTVKI54A.js";
14
+ import {
15
+ IDEAS_DIR
16
+ } from "./chunk-BIPIL4QA.js";
17
+
18
+ // src/commands/creatives/make-series.ts
19
+ import { mkdir, readFile, writeFile } from "fs/promises";
20
+ import path from "path";
21
+ import { parseDocument } from "yaml";
22
+ var LEAD_ONLY = ["idea", "message", "evidence", "angle", "persona", "awareness", "hypothesis", "series", "title"];
23
+ function withoutFields(raw, keys) {
24
+ const match = raw.match(/^---\r?\n([\s\S]*?\r?\n)?---/);
25
+ if (!match) return raw;
26
+ const doc = parseDocument(match[1] ?? "");
27
+ if (doc.errors.length > 0) return raw;
28
+ for (const key of keys) doc.delete(key);
29
+ return `---
30
+ ${doc.toString()}---${raw.slice(match[0].length)}`;
31
+ }
32
+ async function makeSeriesAd(root, idea, slug, lead, evidence, deps) {
33
+ if (slug === lead) {
34
+ return {
35
+ code: "series_of_itself",
36
+ message: `"${slug}" is the lead itself.`,
37
+ fix: "Give the new ad its own --slug."
38
+ };
39
+ }
40
+ const version = await leadVersion(root, lead);
41
+ if ("refused" in version) return version.refused;
42
+ const dir = path.join(root, "src", "creatives", slug);
43
+ const definitionPath = path.join(dir, "_definition.md");
44
+ const claim = await claimNewCreativeInWorkspace(path.join(root, "canvas"), slug, deps.chatId, definitionPath);
45
+ if (!claim.allowed) return creativeLimitRefusal(slug).error;
46
+ await mkdir(dir, { recursive: true });
47
+ await writeFile(path.join(dir, "prompt.json"), setSpecMessage(JSON.stringify(version.spec), idea.message), "utf8");
48
+ const leadDefinition = await readFile(path.join(root, "src", "creatives", lead, "_definition.md"), "utf8").catch(
49
+ () => "---\nkind: static\n---\n"
50
+ );
51
+ const definition = setDefinitionFields(withoutFields(leadDefinition, LEAD_ONLY), {
52
+ title: idea.message.slice(0, 120),
53
+ series: lead,
54
+ status: "draft",
55
+ ...definitionFieldsOf(idea, evidence)
56
+ });
57
+ await writeFile(definitionPath, definition, "utf8");
58
+ const made = await writeSeriesMemberCanvas(root, slug, { leadWords: true });
59
+ if (made === null || "refused" in made) {
60
+ return made?.refused ?? { code: "series_not_made", message: `"${slug}" could not be made in the series of "${lead}".` };
61
+ }
62
+ if (idea.status === "idea") {
63
+ const ideaPath = path.join(root, IDEAS_DIR, `${idea.id}.md`);
64
+ const raw = await readFile(ideaPath, "utf8").catch(() => null);
65
+ if (raw !== null) await writeFile(ideaPath, setDefinitionFields(raw, { status: "built" }), "utf8");
66
+ }
67
+ await deps.sync(dir);
68
+ return { slug, lead, leadRunId: version.lead.runId, canvasPath: made.canvasPath };
69
+ }
70
+ function seriesMadeEnvelope(made, idea) {
71
+ return {
72
+ ok: true,
73
+ data: {
74
+ creative: made.slug,
75
+ idea: idea.id,
76
+ message: idea.message,
77
+ series: made.lead,
78
+ canvas_path: made.canvasPath
79
+ },
80
+ hints: [
81
+ `Write this ad's words in src/creatives/${made.slug}/prompt.json \`copy\`: one line for each of the lead's, in the same roles and about as long, saying this idea's message. Change nothing else: the picture, layout and colours are the lead's (${made.lead}), and every word you write replaces the lead's line in its place.`,
82
+ `When every ad of the series has its words: baker canvas run --series ${made.lead} (renders them all at once, each reviewed and corrected on its own).`
83
+ ]
84
+ };
85
+ }
86
+
87
+ export {
88
+ withoutFields,
89
+ makeSeriesAd,
90
+ seriesMadeEnvelope
91
+ };
92
+ //# sourceMappingURL=chunk-V7BW2CIQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/creatives/make-series.ts"],"sourcesContent":["/**\n * `baker creatives make <idea> --series <lead>`: another message in the lead ad's style. Nothing is\n * searched, described or rendered: the ad starts as the lead's ready version with the idea's\n * message, and its words are the agent's to write. Its picture is the lead's with those words\n * (`series-member.ts`), so a series of ten messages is one design ten times.\n */\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { parseDocument } from \"yaml\";\nimport { claimNewCreativeInWorkspace, creativeLimitRefusal } from \"../canvas/creative-limit.ts\";\nimport { leadVersion, writeSeriesMemberCanvas } from \"../canvas/series-member.ts\";\nimport type { EvidenceLevel, Idea } from \"./ideas-model.ts\";\nimport { IDEAS_DIR } from \"./ideas-workspace.ts\";\nimport { definitionFieldsOf, setDefinitionFields, setSpecMessage } from \"./make-model.ts\";\n\ntype Failure = { code: string; message: string; fix?: string };\n\n/** The lead's own reasons, which are not this ad's: its idea, evidence and the like are replaced or dropped. */\nconst LEAD_ONLY = [\"idea\", \"message\", \"evidence\", \"angle\", \"persona\", \"awareness\", \"hypothesis\", \"series\", \"title\"];\n\n/** `raw` with `keys` dropped from its frontmatter, every other field and the body kept. */\nexport function withoutFields(raw: string, keys: readonly string[]): string {\n const match = raw.match(/^---\\r?\\n([\\s\\S]*?\\r?\\n)?---/);\n if (!match) return raw;\n const doc = parseDocument(match[1] ?? \"\");\n if (doc.errors.length > 0) return raw;\n for (const key of keys) doc.delete(key);\n return `---\\n${doc.toString()}---${raw.slice(match[0].length)}`;\n}\n\n/** Make `slug`, an ad of the series led by `lead`, from `idea`. The made ad, or why not. */\nexport async function makeSeriesAd(\n root: string,\n idea: Idea,\n slug: string,\n lead: string,\n evidence: EvidenceLevel | \"explore\",\n deps: { sync: (dir: string) => Promise<unknown>; chatId: string | null },\n): Promise<{ slug: string; lead: string; leadRunId: string; canvasPath: string } | Failure> {\n if (slug === lead) {\n return {\n code: \"series_of_itself\",\n message: `\"${slug}\" is the lead itself.`,\n fix: \"Give the new ad its own --slug.\",\n };\n }\n const version = await leadVersion(root, lead);\n if (\"refused\" in version) return version.refused;\n const dir = path.join(root, \"src\", \"creatives\", slug);\n const definitionPath = path.join(dir, \"_definition.md\");\n const claim = await claimNewCreativeInWorkspace(path.join(root, \"canvas\"), slug, deps.chatId, definitionPath);\n if (!claim.allowed) return creativeLimitRefusal(slug).error;\n await mkdir(dir, { recursive: true });\n await writeFile(path.join(dir, \"prompt.json\"), setSpecMessage(JSON.stringify(version.spec), idea.message), \"utf8\");\n const leadDefinition = await readFile(path.join(root, \"src\", \"creatives\", lead, \"_definition.md\"), \"utf8\").catch(\n () => \"---\\nkind: static\\n---\\n\",\n );\n const definition = setDefinitionFields(withoutFields(leadDefinition, LEAD_ONLY), {\n title: idea.message.slice(0, 120),\n series: lead,\n status: \"draft\",\n ...definitionFieldsOf(idea, evidence),\n });\n await writeFile(definitionPath, definition, \"utf8\");\n const made = await writeSeriesMemberCanvas(root, slug, { leadWords: true });\n if (made === null || \"refused\" in made) {\n return (\n made?.refused ?? { code: \"series_not_made\", message: `\"${slug}\" could not be made in the series of \"${lead}\".` }\n );\n }\n if (idea.status === \"idea\") {\n const ideaPath = path.join(root, IDEAS_DIR, `${idea.id}.md`);\n const raw = await readFile(ideaPath, \"utf8\").catch(() => null);\n if (raw !== null) await writeFile(ideaPath, setDefinitionFields(raw, { status: \"built\" }), \"utf8\");\n }\n // The dashboard learns the ad and its series now, not at Publish.\n await deps.sync(dir);\n return { slug, lead, leadRunId: version.lead.runId, canvasPath: made.canvasPath };\n}\n\n/** What `make --series` prints: the ad, its lead, and the one step left (its words), then the series run. Pure. */\nexport function seriesMadeEnvelope(\n made: { slug: string; lead: string; leadRunId: string; canvasPath: string },\n idea: Pick<Idea, \"id\" | \"message\">,\n) {\n return {\n ok: true as const,\n data: {\n creative: made.slug,\n idea: idea.id,\n message: idea.message,\n series: made.lead,\n canvas_path: made.canvasPath,\n },\n hints: [\n `Write this ad's words in src/creatives/${made.slug}/prompt.json \\`copy\\`: one line for each of the lead's, in the same roles and about as long, saying this idea's message. Change nothing else: the picture, layout and colours are the lead's (${made.lead}), and every word you write replaces the lead's line in its place.`,\n `When every ad of the series has its words: baker canvas run --series ${made.lead} (renders them all at once, each reviewed and corrected on its own).`,\n ],\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAMA,SAAS,OAAO,UAAU,iBAAiB;AAC3C,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAU9B,IAAM,YAAY,CAAC,QAAQ,WAAW,YAAY,SAAS,WAAW,aAAa,cAAc,UAAU,OAAO;AAG3G,SAAS,cAAc,KAAa,MAAiC;AAC1E,QAAM,QAAQ,IAAI,MAAM,8BAA8B;AACtD,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,MAAM,cAAc,MAAM,CAAC,KAAK,EAAE;AACxC,MAAI,IAAI,OAAO,SAAS,EAAG,QAAO;AAClC,aAAW,OAAO,KAAM,KAAI,OAAO,GAAG;AACtC,SAAO;AAAA,EAAQ,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM,MAAM,CAAC,EAAE,MAAM,CAAC;AAC/D;AAGA,eAAsB,aACpB,MACA,MACA,MACA,MACA,UACA,MAC0F;AAC1F,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,IAAI,IAAI;AAAA,MACjB,KAAK;AAAA,IACP;AAAA,EACF;AACA,QAAM,UAAU,MAAM,YAAY,MAAM,IAAI;AAC5C,MAAI,aAAa,QAAS,QAAO,QAAQ;AACzC,QAAM,MAAM,KAAK,KAAK,MAAM,OAAO,aAAa,IAAI;AACpD,QAAM,iBAAiB,KAAK,KAAK,KAAK,gBAAgB;AACtD,QAAM,QAAQ,MAAM,4BAA4B,KAAK,KAAK,MAAM,QAAQ,GAAG,MAAM,KAAK,QAAQ,cAAc;AAC5G,MAAI,CAAC,MAAM,QAAS,QAAO,qBAAqB,IAAI,EAAE;AACtD,QAAM,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,QAAM,UAAU,KAAK,KAAK,KAAK,aAAa,GAAG,eAAe,KAAK,UAAU,QAAQ,IAAI,GAAG,KAAK,OAAO,GAAG,MAAM;AACjH,QAAM,iBAAiB,MAAM,SAAS,KAAK,KAAK,MAAM,OAAO,aAAa,MAAM,gBAAgB,GAAG,MAAM,EAAE;AAAA,IACzG,MAAM;AAAA,EACR;AACA,QAAM,aAAa,oBAAoB,cAAc,gBAAgB,SAAS,GAAG;AAAA,IAC/E,OAAO,KAAK,QAAQ,MAAM,GAAG,GAAG;AAAA,IAChC,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,GAAG,mBAAmB,MAAM,QAAQ;AAAA,EACtC,CAAC;AACD,QAAM,UAAU,gBAAgB,YAAY,MAAM;AAClD,QAAM,OAAO,MAAM,wBAAwB,MAAM,MAAM,EAAE,WAAW,KAAK,CAAC;AAC1E,MAAI,SAAS,QAAQ,aAAa,MAAM;AACtC,WACE,MAAM,WAAW,EAAE,MAAM,mBAAmB,SAAS,IAAI,IAAI,yCAAyC,IAAI,KAAK;AAAA,EAEnH;AACA,MAAI,KAAK,WAAW,QAAQ;AAC1B,UAAM,WAAW,KAAK,KAAK,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK;AAC3D,UAAM,MAAM,MAAM,SAAS,UAAU,MAAM,EAAE,MAAM,MAAM,IAAI;AAC7D,QAAI,QAAQ,KAAM,OAAM,UAAU,UAAU,oBAAoB,KAAK,EAAE,QAAQ,QAAQ,CAAC,GAAG,MAAM;AAAA,EACnG;AAEA,QAAM,KAAK,KAAK,GAAG;AACnB,SAAO,EAAE,MAAM,MAAM,WAAW,QAAQ,KAAK,OAAO,YAAY,KAAK,WAAW;AAClF;AAGO,SAAS,mBACd,MACA,MACA;AACA,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,MACJ,UAAU,KAAK;AAAA,MACf,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,aAAa,KAAK;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,MACL,0CAA0C,KAAK,IAAI,iMAAiM,KAAK,IAAI;AAAA,MAC7P,wEAAwE,KAAK,IAAI;AAAA,IACnF;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,76 @@
1
+ import {
2
+ MAX_REMOTE_IMAGE_BYTES,
3
+ fetchExternalBytes
4
+ } from "./chunk-JXMZEOHV.js";
5
+
6
+ // src/lib/image/io.ts
7
+ import { randomBytes } from "crypto";
8
+ import { glob as fsGlob, readFile, rename, stat, writeFile } from "fs/promises";
9
+ import { dirname, extname, join, resolve } from "path";
10
+ var REMOTE_RE = /^https?:\/\//i;
11
+ var GLOB_RE = /[*?[\]{}]/;
12
+ function isRemoteUrl(value) {
13
+ return REMOTE_RE.test(value);
14
+ }
15
+ function looksLikeGlob(value) {
16
+ return GLOB_RE.test(value);
17
+ }
18
+ async function expandInputs(spec) {
19
+ const parts = spec.split(",").map((p) => p.trim()).filter(Boolean);
20
+ const out = [];
21
+ for (const part of parts) {
22
+ if (isRemoteUrl(part)) {
23
+ out.push(part);
24
+ continue;
25
+ }
26
+ if (looksLikeGlob(part)) {
27
+ for await (const match of fsGlob(part)) {
28
+ if (typeof match === "string") out.push(match);
29
+ }
30
+ } else {
31
+ out.push(part);
32
+ }
33
+ }
34
+ return out;
35
+ }
36
+ async function readImageBuffer(pathOrUrl) {
37
+ if (isRemoteUrl(pathOrUrl)) {
38
+ const { buffer } = await fetchExternalBytes(pathOrUrl, { maxBytes: MAX_REMOTE_IMAGE_BYTES });
39
+ return buffer;
40
+ }
41
+ return readFile(pathOrUrl);
42
+ }
43
+ async function isDirectory(path) {
44
+ try {
45
+ const s = await stat(path);
46
+ return s.isDirectory();
47
+ } catch {
48
+ return false;
49
+ }
50
+ }
51
+ async function resolveOutputPath(inputPath, outputArg, options) {
52
+ const base = options.newExtension ? inputPath.slice(0, -extname(inputPath).length) + options.newExtension : inputPath;
53
+ if (!outputArg) return base;
54
+ if (options.multipleInputs || await isDirectory(outputArg)) {
55
+ const filename = base.split("/").pop() ?? "out.png";
56
+ return join(outputArg, filename);
57
+ }
58
+ return outputArg;
59
+ }
60
+ async function atomicWrite(targetPath, data) {
61
+ const absolute = resolve(targetPath);
62
+ const dir = dirname(absolute);
63
+ const tmp = join(dir, `.baker-image-${randomBytes(8).toString("hex")}.tmp`);
64
+ await writeFile(tmp, data);
65
+ await rename(tmp, absolute);
66
+ }
67
+
68
+ export {
69
+ isRemoteUrl,
70
+ expandInputs,
71
+ readImageBuffer,
72
+ isDirectory,
73
+ resolveOutputPath,
74
+ atomicWrite
75
+ };
76
+ //# sourceMappingURL=chunk-VSU5R34H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/image/io.ts"],"sourcesContent":["import { randomBytes } from \"node:crypto\";\nimport { glob as fsGlob, readFile, rename, stat, writeFile } from \"node:fs/promises\";\nimport { dirname, extname, join, resolve } from \"node:path\";\nimport { fetchExternalBytes, MAX_REMOTE_IMAGE_BYTES } from \"../externalFetch.ts\";\n\nconst REMOTE_RE = /^https?:\\/\\//i;\nconst GLOB_RE = /[*?[\\]{}]/;\n\nexport function isRemoteUrl(value: string): boolean {\n return REMOTE_RE.test(value);\n}\n\nfunction looksLikeGlob(value: string): boolean {\n return GLOB_RE.test(value);\n}\n\n/**\n * Expand a user-supplied input spec into a list of local file paths.\n * Accepts: single path, glob pattern, or comma-separated list. Inputs that look\n * like remote URLs are returned unchanged so callers can decide whether to\n * fetch them.\n */\nexport async function expandInputs(spec: string): Promise<string[]> {\n const parts = spec\n .split(\",\")\n .map((p) => p.trim())\n .filter(Boolean);\n const out: string[] = [];\n for (const part of parts) {\n if (isRemoteUrl(part)) {\n out.push(part);\n continue;\n }\n if (looksLikeGlob(part)) {\n for await (const match of fsGlob(part)) {\n if (typeof match === \"string\") out.push(match);\n }\n } else {\n out.push(part);\n }\n }\n return out;\n}\n\nexport async function readImageBuffer(pathOrUrl: string): Promise<Buffer> {\n if (isRemoteUrl(pathOrUrl)) {\n // Everything reaching here is decoded by sharp — `crop`, `normalize`,\n // `dimensions`. An image ceiling, not the canvas asset one.\n const { buffer } = await fetchExternalBytes(pathOrUrl, { maxBytes: MAX_REMOTE_IMAGE_BYTES });\n return buffer;\n }\n return readFile(pathOrUrl);\n}\n\nexport async function isDirectory(path: string): Promise<boolean> {\n try {\n const s = await stat(path);\n return s.isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Resolve the output path for a processed file.\n * - One input + --output=<file> → that file path\n * - One input + --output=<dir> → dir/basename\n * - One input, no --output → input path (in-place)\n * - N inputs + --output=<dir> → dir/basename\n * - N inputs, no --output → each input path (in-place)\n * - N inputs + --output=<file> → validation error before reaching here\n */\nexport async function resolveOutputPath(\n inputPath: string,\n outputArg: string | undefined,\n options: { multipleInputs: boolean; newExtension?: string },\n): Promise<string> {\n const base = options.newExtension ? inputPath.slice(0, -extname(inputPath).length) + options.newExtension : inputPath;\n\n if (!outputArg) return base;\n\n if (options.multipleInputs || (await isDirectory(outputArg))) {\n const filename = base.split(\"/\").pop() ?? \"out.png\";\n return join(outputArg, filename);\n }\n return outputArg;\n}\n\n/**\n * Write a file atomically: write to a tempfile in the same directory, then\n * rename. Prevents partial writes if the process is killed mid-write.\n */\nexport async function atomicWrite(targetPath: string, data: Buffer): Promise<void> {\n const absolute = resolve(targetPath);\n const dir = dirname(absolute);\n const tmp = join(dir, `.baker-image-${randomBytes(8).toString(\"hex\")}.tmp`);\n await writeFile(tmp, data);\n await rename(tmp, absolute);\n}\n"],"mappings":";;;;;;AAAA,SAAS,mBAAmB;AAC5B,SAAS,QAAQ,QAAQ,UAAU,QAAQ,MAAM,iBAAiB;AAClE,SAAS,SAAS,SAAS,MAAM,eAAe;AAGhD,IAAM,YAAY;AAClB,IAAM,UAAU;AAET,SAAS,YAAY,OAAwB;AAClD,SAAO,UAAU,KAAK,KAAK;AAC7B;AAEA,SAAS,cAAc,OAAwB;AAC7C,SAAO,QAAQ,KAAK,KAAK;AAC3B;AAQA,eAAsB,aAAa,MAAiC;AAClE,QAAM,QAAQ,KACX,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AACjB,QAAM,MAAgB,CAAC;AACvB,aAAW,QAAQ,OAAO;AACxB,QAAI,YAAY,IAAI,GAAG;AACrB,UAAI,KAAK,IAAI;AACb;AAAA,IACF;AACA,QAAI,cAAc,IAAI,GAAG;AACvB,uBAAiB,SAAS,OAAO,IAAI,GAAG;AACtC,YAAI,OAAO,UAAU,SAAU,KAAI,KAAK,KAAK;AAAA,MAC/C;AAAA,IACF,OAAO;AACL,UAAI,KAAK,IAAI;AAAA,IACf;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAsB,gBAAgB,WAAoC;AACxE,MAAI,YAAY,SAAS,GAAG;AAG1B,UAAM,EAAE,OAAO,IAAI,MAAM,mBAAmB,WAAW,EAAE,UAAU,uBAAuB,CAAC;AAC3F,WAAO;AAAA,EACT;AACA,SAAO,SAAS,SAAS;AAC3B;AAEA,eAAsB,YAAY,MAAgC;AAChE,MAAI;AACF,UAAM,IAAI,MAAM,KAAK,IAAI;AACzB,WAAO,EAAE,YAAY;AAAA,EACvB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAWA,eAAsB,kBACpB,WACA,WACA,SACiB;AACjB,QAAM,OAAO,QAAQ,eAAe,UAAU,MAAM,GAAG,CAAC,QAAQ,SAAS,EAAE,MAAM,IAAI,QAAQ,eAAe;AAE5G,MAAI,CAAC,UAAW,QAAO;AAEvB,MAAI,QAAQ,kBAAmB,MAAM,YAAY,SAAS,GAAI;AAC5D,UAAM,WAAW,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK;AAC1C,WAAO,KAAK,WAAW,QAAQ;AAAA,EACjC;AACA,SAAO;AACT;AAMA,eAAsB,YAAY,YAAoB,MAA6B;AACjF,QAAM,WAAW,QAAQ,UAAU;AACnC,QAAM,MAAM,QAAQ,QAAQ;AAC5B,QAAM,MAAM,KAAK,KAAK,gBAAgB,YAAY,CAAC,EAAE,SAAS,KAAK,CAAC,MAAM;AAC1E,QAAM,UAAU,KAAK,IAAI;AACzB,QAAM,OAAO,KAAK,QAAQ;AAC5B;","names":[]}
@@ -0,0 +1,296 @@
1
+ import {
2
+ DIRECT_ROUTE,
3
+ captureProxyCredentials,
4
+ childEnvWith,
5
+ plannedRoutes,
6
+ shouldEscalate
7
+ } from "./chunk-I4FTS5EE.js";
8
+
9
+ // src/lib/vimeoCookie.ts
10
+ import { writeFile } from "fs/promises";
11
+ import path from "path";
12
+ var COOKIE_NAME = "vimeo";
13
+ async function writeVimeoCookieFile(cookie, workDir) {
14
+ const value = cookie?.trim();
15
+ if (!value) return void 0;
16
+ const expires = Math.floor(Date.now() / 1e3) + 365 * 24 * 60 * 60;
17
+ const jar = [
18
+ "# Netscape HTTP Cookie File",
19
+ [".vimeo.com", "TRUE", "/", "TRUE", String(expires), COOKIE_NAME, value].join(" "),
20
+ ""
21
+ ].join("\n");
22
+ const filePath = path.join(workDir, "vimeo-cookies.txt");
23
+ await writeFile(filePath, jar, { mode: 384 });
24
+ return filePath;
25
+ }
26
+ var VIMEO_AUTH_SIGNATURES = ["oauth token", "only works when logged-in", "unable to fetch new oauth tokens"];
27
+ function isVimeoAuthFailure(detail) {
28
+ const haystack = detail.toLowerCase();
29
+ if (!haystack.includes("[vimeo]")) return false;
30
+ return VIMEO_AUTH_SIGNATURES.some((signature) => haystack.includes(signature));
31
+ }
32
+
33
+ // src/lib/ytDlpSignal.ts
34
+ var HTTP_ERROR = /HTTP Error (\d{3})/i;
35
+ var CHALLENGE_PHRASES = [
36
+ "sign in to confirm you're not a bot",
37
+ "sign in to confirm you\u2019re not a bot",
38
+ "confirm you are not a bot",
39
+ "unusual traffic",
40
+ "captcha"
41
+ ];
42
+ var NOT_A_BLOCK_PHRASES = ["private video", "video unavailable", "members-only", "this video is available to"];
43
+ var PROXY_TUNNEL_FAILURE = /tunnel connection failed: 407|proxy authentication required|http error 407/i;
44
+ function ytDlpBlockSignal(stderr) {
45
+ const text = stderr.toLowerCase();
46
+ if (PROXY_TUNNEL_FAILURE.test(stderr)) return { status: 407 };
47
+ if (NOT_A_BLOCK_PHRASES.some((phrase) => text.includes(phrase))) return {};
48
+ const status = HTTP_ERROR.exec(stderr);
49
+ if (status) return { status: Number(status[1]) };
50
+ if (CHALLENGE_PHRASES.some((phrase) => text.includes(phrase))) return { challenge: true };
51
+ return {};
52
+ }
53
+
54
+ // src/lib/ytDlp.ts
55
+ import { spawn } from "child_process";
56
+ import { readdir, readFile } from "fs/promises";
57
+ import path2 from "path";
58
+
59
+ // src/lib/ytDlpFormat.ts
60
+ function videoFormatArgs(maxResolution) {
61
+ const sort = maxResolution ? ["-S", `res:${maxResolution}`] : [];
62
+ return ["--format", "bv*+ba/b", ...sort, "--merge-output-format", "mp4"];
63
+ }
64
+
65
+ // src/lib/ytDlpPlayerClient.ts
66
+ var YOUTUBE_FALLBACK_CLIENT_ARGS = ["--extractor-args", "youtube:player_client=android"];
67
+ var MEDIA_FETCH_REFUSED = "unable to download video data";
68
+ var YOUTUBE_HOSTS = ["youtube.com", "youtu.be"];
69
+ function isYouTube(url) {
70
+ let host;
71
+ try {
72
+ host = new URL(url).hostname.toLowerCase();
73
+ } catch {
74
+ return false;
75
+ }
76
+ return YOUTUBE_HOSTS.some((known) => host === known || host.endsWith(`.${known}`));
77
+ }
78
+ function needsPlayerClientRetry(url, stderr) {
79
+ return isYouTube(url) && stderr.toLowerCase().includes(MEDIA_FETCH_REFUSED);
80
+ }
81
+
82
+ // src/lib/ytDlp.ts
83
+ var YT_DLP_BIN = "yt-dlp";
84
+ var YT_DLP_TIMEOUT_MS = 10 * 60 * 1e3;
85
+ var YT_DLP_PROBE_TIMEOUT_MS = 60 * 1e3;
86
+ var TRUST_SYSTEM_CERTS = ["--compat-options", "no-certifi"];
87
+ var YtDlpError = class extends Error {
88
+ constructor(message, stderrTail) {
89
+ super(message);
90
+ this.stderrTail = stderrTail;
91
+ this.name = "YtDlpError";
92
+ }
93
+ };
94
+ function tail(text, maxLines) {
95
+ return text.split("\n").slice(-maxLines).join("\n");
96
+ }
97
+ async function runYtDlp(args) {
98
+ const outTemplate = path2.join(args.workDir, "out.%(ext)s");
99
+ const infoPath = path2.join(args.workDir, "out.info.json");
100
+ const argv = [
101
+ args.url,
102
+ "--no-playlist",
103
+ "--no-progress",
104
+ "--no-warnings",
105
+ "--quiet",
106
+ "--write-info-json",
107
+ ...TRUST_SYSTEM_CERTS,
108
+ "-o",
109
+ outTemplate
110
+ ];
111
+ if (args.audioOnly) {
112
+ argv.push("-x", "--audio-format", "m4a");
113
+ } else {
114
+ argv.push(...videoFormatArgs(args.maxHeight));
115
+ }
116
+ const cookieFile = await writeVimeoCookieFile(args.vimeoCookie, args.workDir);
117
+ if (cookieFile) argv.push("--cookies", cookieFile);
118
+ args.onLog?.(`yt-dlp: downloading ${args.audioOnly ? "audio" : "video"}`);
119
+ const timeoutMs = args.timeoutMs ?? YT_DLP_TIMEOUT_MS;
120
+ const { code, stderr, tier, reducedQuality } = await downloadWithClientFallback({
121
+ url: args.url,
122
+ argv,
123
+ onLog: args.onLog,
124
+ ladder: (attemptArgv) => runViaLadder({ url: args.url, argv: attemptArgv, timeoutMs, onLog: args.onLog, country: args.country }),
125
+ repeat: (attemptArgv, route) => spawnAndWait(YT_DLP_BIN, attemptArgv, timeoutMs, { extraEnv: proxyEnvFor(route) })
126
+ });
127
+ if (code !== 0) {
128
+ throw new YtDlpError(`yt-dlp exited ${code}`, tail(stderr, 40));
129
+ }
130
+ const files = await readdir(args.workDir);
131
+ const wanted = args.audioOnly ? ".m4a" : ".mp4";
132
+ const downloaded = files.find((f) => f.startsWith("out.") && f.endsWith(wanted));
133
+ if (!downloaded) {
134
+ throw new YtDlpError(`yt-dlp finished but produced no ${wanted} file (saw: ${files.join(", ")})`, "");
135
+ }
136
+ let info = {};
137
+ try {
138
+ info = JSON.parse(await readFile(infoPath, "utf-8"));
139
+ } catch {
140
+ }
141
+ return { filePath: path2.join(args.workDir, downloaded), info, tier, reducedQuality };
142
+ }
143
+ async function probeYtDlp(args) {
144
+ const argv = [
145
+ args.url,
146
+ "--no-playlist",
147
+ "--no-warnings",
148
+ "--dump-single-json",
149
+ "--skip-download",
150
+ // Without this the probe fails wherever the *download* would fail, which
151
+ // defeats the point of probing: yt-dlp still runs format selection for
152
+ // `--dump-single-json`, so a binary too old to read a site's format list
153
+ // exits "Requested format is not available" and we learn nothing — measured
154
+ // against a stale build, which returned full metadata the moment this flag
155
+ // was added. Duration and id come from the page, not from a format.
156
+ "--ignore-no-formats-error",
157
+ ...TRUST_SYSTEM_CERTS
158
+ ];
159
+ if (args.cookieDir) {
160
+ const cookieFile = await writeVimeoCookieFile(args.vimeoCookie, args.cookieDir);
161
+ if (cookieFile) argv.push("--cookies", cookieFile);
162
+ }
163
+ let stdout = "";
164
+ const { code, stderr, tier } = await walkYtDlpLadder({
165
+ url: args.url,
166
+ credentials: captureProxyCredentials(),
167
+ attempt: async (route) => {
168
+ const result = await spawnAndWait(YT_DLP_BIN, argv, args.timeoutMs ?? YT_DLP_PROBE_TIMEOUT_MS, {
169
+ extraEnv: proxyEnvFor(route),
170
+ captureStdout: true
171
+ });
172
+ stdout = result.stdout ?? "";
173
+ return result;
174
+ },
175
+ onLog: args.onLog,
176
+ country: args.country
177
+ });
178
+ if (code !== 0) {
179
+ throw new YtDlpError(`yt-dlp exited ${code}`, tail(stderr, 40));
180
+ }
181
+ let parsed;
182
+ try {
183
+ parsed = JSON.parse(stdout);
184
+ } catch {
185
+ throw new YtDlpError("yt-dlp returned metadata that could not be read", tail(stdout, 5));
186
+ }
187
+ if (parsed === null || typeof parsed !== "object") {
188
+ throw new YtDlpError("yt-dlp returned no metadata for that link", tail(stderr, 40));
189
+ }
190
+ return { info: parsed, tier };
191
+ }
192
+ function isAudioOnly(info) {
193
+ return info.vcodec === "none";
194
+ }
195
+ function durationSeconds(info) {
196
+ const raw = info.duration;
197
+ return typeof raw === "number" && Number.isFinite(raw) && raw > 0 ? raw : void 0;
198
+ }
199
+ function canonicalUrl(info) {
200
+ const raw = info.webpage_url;
201
+ return typeof raw === "string" && raw.length > 0 ? raw : void 0;
202
+ }
203
+ async function walkYtDlpLadder(args) {
204
+ const routes = plannedRoutes(args.url, args.credentials, args.country ? { country: args.country } : void 0);
205
+ let last = { code: -1, stderr: "", tier: "direct", route: DIRECT_ROUTE };
206
+ for (const route of routes) {
207
+ const tier = route.kind === "proxy" ? route.tier : "direct";
208
+ if (route.kind === "proxy") args.onLog?.(`yt-dlp: retrying via ${tier}`);
209
+ last = { ...await args.attempt(route), tier, route };
210
+ if (last.code === 0) return last;
211
+ if (!shouldEscalate(ytDlpBlockSignal(last.stderr))) return last;
212
+ }
213
+ return last;
214
+ }
215
+ async function downloadWithClientFallback(args) {
216
+ const first = await args.ladder(args.argv);
217
+ if (first.code === 0 || !needsPlayerClientRetry(args.url, first.stderr)) {
218
+ return { ...first, reducedQuality: false };
219
+ }
220
+ args.onLog?.("yt-dlp: retrying with the fallback player client");
221
+ const again = await args.repeat([...args.argv, ...YOUTUBE_FALLBACK_CLIENT_ARGS], first.route);
222
+ return { ...again, tier: first.tier, route: first.route, reducedQuality: again.code === 0 };
223
+ }
224
+ function runViaLadder(args) {
225
+ return walkYtDlpLadder({
226
+ url: args.url,
227
+ credentials: captureProxyCredentials(),
228
+ attempt: (route) => spawnAndWait(YT_DLP_BIN, args.argv, args.timeoutMs, { extraEnv: proxyEnvFor(route) }),
229
+ onLog: args.onLog,
230
+ country: args.country
231
+ });
232
+ }
233
+ function proxyEnvFor(route) {
234
+ if (route.kind !== "proxy") return void 0;
235
+ const uri = new URL(route.server);
236
+ uri.username = encodeURIComponent(route.username);
237
+ uri.password = encodeURIComponent(route.password);
238
+ return {
239
+ HTTP_PROXY: uri.toString(),
240
+ HTTPS_PROXY: uri.toString(),
241
+ http_proxy: uri.toString(),
242
+ https_proxy: uri.toString()
243
+ };
244
+ }
245
+ function spawnAndWait(bin, argv, timeoutMs, options = {}) {
246
+ return new Promise((resolve, reject) => {
247
+ const child = spawn(bin, argv, {
248
+ stdio: ["ignore", "pipe", "pipe"],
249
+ // `childEnvWith` because `spawn`'s `env` REPLACES the environment rather
250
+ // than extending it — passing only the additions would strip PATH.
251
+ ...options.extraEnv ? { env: childEnvWith(options.extraEnv) } : {}
252
+ });
253
+ const stderrChunks = [];
254
+ const stdoutChunks = [];
255
+ let stderrLen = 0;
256
+ const MAX_STDERR = 256 * 1024;
257
+ child.stdout.on("data", (chunk) => {
258
+ if (options.captureStdout) stdoutChunks.push(chunk);
259
+ });
260
+ child.stderr.on("data", (chunk) => {
261
+ if (stderrLen < MAX_STDERR) {
262
+ stderrChunks.push(chunk);
263
+ stderrLen += chunk.length;
264
+ }
265
+ });
266
+ const timer = setTimeout(() => {
267
+ child.kill("SIGKILL");
268
+ reject(new Error(`${bin} timed out after ${timeoutMs}ms`));
269
+ }, timeoutMs);
270
+ child.on("error", (err) => {
271
+ clearTimeout(timer);
272
+ reject(new Error(`failed to spawn "${bin}" \u2014 ${err.message}`));
273
+ });
274
+ child.on("close", (code) => {
275
+ clearTimeout(timer);
276
+ resolve({
277
+ code: code ?? -1,
278
+ stderr: Buffer.concat(stderrChunks).toString("utf-8"),
279
+ ...options.captureStdout ? { stdout: Buffer.concat(stdoutChunks).toString("utf-8") } : {}
280
+ });
281
+ });
282
+ });
283
+ }
284
+
285
+ export {
286
+ isVimeoAuthFailure,
287
+ ytDlpBlockSignal,
288
+ YT_DLP_BIN,
289
+ YtDlpError,
290
+ runYtDlp,
291
+ probeYtDlp,
292
+ isAudioOnly,
293
+ durationSeconds,
294
+ canonicalUrl
295
+ };
296
+ //# sourceMappingURL=chunk-W4SA4CMR.js.map