@koda-sl/baker-cli 0.386.0-dev.8b1f99042 → 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 (968) hide show
  1. package/README.md +1091 -211
  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-XHC4LMK4.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-VLUGGVJL.js → chunk-TPXI2GCW.js} +12 -4
  337. package/dist/chunk-TPXI2GCW.js.map +1 -0
  338. package/dist/chunk-TWNFQUBS.js +23 -0
  339. package/dist/chunk-TWNFQUBS.js.map +1 -0
  340. package/dist/chunk-U6VRBDNQ.js +1830 -0
  341. package/dist/chunk-U6VRBDNQ.js.map +1 -0
  342. package/dist/chunk-U7BBXM67.js +1743 -0
  343. package/dist/chunk-U7BBXM67.js.map +1 -0
  344. package/dist/chunk-UI6BKYQD.js +225 -0
  345. package/dist/chunk-UI6BKYQD.js.map +1 -0
  346. package/dist/chunk-USL5ARRE.js +26 -0
  347. package/dist/chunk-USL5ARRE.js.map +1 -0
  348. package/dist/chunk-UYC45JNS.js +139 -0
  349. package/dist/chunk-UYC45JNS.js.map +1 -0
  350. package/dist/chunk-V5GSRREZ.js +846 -0
  351. package/dist/chunk-V5GSRREZ.js.map +1 -0
  352. package/dist/chunk-V5HDRJQW.js +337 -0
  353. package/dist/chunk-V5HDRJQW.js.map +1 -0
  354. package/dist/chunk-VS4C7VAR.js +533 -0
  355. package/dist/chunk-VS4C7VAR.js.map +1 -0
  356. package/dist/chunk-W4W4ZRBP.js +191 -0
  357. package/dist/chunk-W4W4ZRBP.js.map +1 -0
  358. package/dist/chunk-WIRBRCTJ.js +228 -0
  359. package/dist/chunk-WIRBRCTJ.js.map +1 -0
  360. package/dist/chunk-WN4KX7GE.js +25 -0
  361. package/dist/chunk-WN4KX7GE.js.map +1 -0
  362. package/dist/chunk-WNFTXSGR.js +111 -0
  363. package/dist/chunk-WNFTXSGR.js.map +1 -0
  364. package/dist/chunk-WOTDHRNF.js +2109 -0
  365. package/dist/chunk-WOTDHRNF.js.map +1 -0
  366. package/dist/chunk-WPKOEFOE.js +103 -0
  367. package/dist/chunk-WPKOEFOE.js.map +1 -0
  368. package/dist/chunk-XE3WS3QE.js +183 -0
  369. package/dist/chunk-XE3WS3QE.js.map +1 -0
  370. package/dist/chunk-XGWKTYXQ.js +67 -0
  371. package/dist/chunk-XGWKTYXQ.js.map +1 -0
  372. package/dist/chunk-XIGIJJSF.js +66 -0
  373. package/dist/chunk-XIGIJJSF.js.map +1 -0
  374. package/dist/chunk-XNUXB63I.js +817 -0
  375. package/dist/chunk-XNUXB63I.js.map +1 -0
  376. package/dist/chunk-XQ3CCNJD.js +610 -0
  377. package/dist/chunk-XQ3CCNJD.js.map +1 -0
  378. package/dist/chunk-Y362QH54.js +98 -0
  379. package/dist/chunk-Y362QH54.js.map +1 -0
  380. package/dist/chunk-Y4HZNSBN.js +3151 -0
  381. package/dist/chunk-Y4HZNSBN.js.map +1 -0
  382. package/dist/chunk-Y4T6ATDQ.js +74 -0
  383. package/dist/chunk-Y4T6ATDQ.js.map +1 -0
  384. package/dist/chunk-YIMGUMXX.js +206 -0
  385. package/dist/chunk-YIMGUMXX.js.map +1 -0
  386. package/dist/chunk-YQSBHWOI.js +41 -0
  387. package/dist/chunk-YU26SDNT.js +46 -0
  388. package/dist/chunk-YU26SDNT.js.map +1 -0
  389. package/dist/chunk-YULENNA7.js +501 -0
  390. package/dist/chunk-YULENNA7.js.map +1 -0
  391. package/dist/chunk-YYSZYSAG.js +150 -0
  392. package/dist/chunk-YYSZYSAG.js.map +1 -0
  393. package/dist/chunk-Z3ENMCFE.js +94 -0
  394. package/dist/chunk-Z3ENMCFE.js.map +1 -0
  395. package/dist/chunk-ZCFSHQBF.js +92 -0
  396. package/dist/chunk-ZCFSHQBF.js.map +1 -0
  397. package/dist/chunk-ZH7ZM3ZM.js +125 -0
  398. package/dist/chunk-ZH7ZM3ZM.js.map +1 -0
  399. package/dist/chunk-ZIXHS6AM.js +42 -0
  400. package/dist/chunk-ZIXHS6AM.js.map +1 -0
  401. package/dist/chunk-ZLLJKSNS.js +96 -0
  402. package/dist/chunk-ZLLJKSNS.js.map +1 -0
  403. package/dist/claim-4AFNDV3A.js +197 -0
  404. package/dist/claim-4AFNDV3A.js.map +1 -0
  405. package/dist/cli.js +104 -69909
  406. package/dist/cli.js.map +1 -1
  407. package/dist/client-26SAJ46D.js +19 -0
  408. package/dist/code-MOWYJMDH.js +76 -0
  409. package/dist/code-MOWYJMDH.js.map +1 -0
  410. package/dist/companies-PZRRZZNV.js +195 -0
  411. package/dist/companies-PZRRZZNV.js.map +1 -0
  412. package/dist/complete-IBW5DNVZ.js +81 -0
  413. package/dist/complete-IBW5DNVZ.js.map +1 -0
  414. package/dist/config-X6GKOVQ6.js +88 -0
  415. package/dist/config-X6GKOVQ6.js.map +1 -0
  416. package/dist/connect-WYUYS5V4.js +42 -0
  417. package/dist/content-UYZC4AKN.js +85 -0
  418. package/dist/content-UYZC4AKN.js.map +1 -0
  419. package/dist/conversation-6AG3UBYY.js +93 -0
  420. package/dist/conversation-6AG3UBYY.js.map +1 -0
  421. package/dist/conversion-report-R4GJWWTK.js +125 -0
  422. package/dist/conversion-report-R4GJWWTK.js.map +1 -0
  423. package/dist/conversion-upload-command-YML2UNJB.js +438 -0
  424. package/dist/conversion-upload-command-YML2UNJB.js.map +1 -0
  425. package/dist/conversion-writes-WHFFUWWL.js +120 -0
  426. package/dist/conversion-writes-WHFFUWWL.js.map +1 -0
  427. package/dist/conversions-NOBBFNIU.js +135 -0
  428. package/dist/conversions-NOBBFNIU.js.map +1 -0
  429. package/dist/conversions-OXJAX5GB.js +76 -0
  430. package/dist/conversions-OXJAX5GB.js.map +1 -0
  431. package/dist/countries-PBXNB3BR.js +82 -0
  432. package/dist/countries-PBXNB3BR.js.map +1 -0
  433. package/dist/create-JK42P564.js +59 -0
  434. package/dist/create-JK42P564.js.map +1 -0
  435. package/dist/create-LAWUVPCY.js +207 -0
  436. package/dist/create-LAWUVPCY.js.map +1 -0
  437. package/dist/create-MUPQ5CTH.js +138 -0
  438. package/dist/create-MUPQ5CTH.js.map +1 -0
  439. package/dist/create-NQJNCFRO.js +236 -0
  440. package/dist/create-NQJNCFRO.js.map +1 -0
  441. package/dist/creatives-KCWFZIM5.js +182 -0
  442. package/dist/creatives-KCWFZIM5.js.map +1 -0
  443. package/dist/creatives-NNDWCSKJ.js +51 -0
  444. package/dist/creatives-NNDWCSKJ.js.map +1 -0
  445. package/dist/creatives-RHNHTS2R.js +87 -0
  446. package/dist/creatives-RHNHTS2R.js.map +1 -0
  447. package/dist/credentials-CEKGXR2C.js +287 -0
  448. package/dist/credentials-CEKGXR2C.js.map +1 -0
  449. package/dist/critique-HDDYER52.js +1449 -0
  450. package/dist/critique-HDDYER52.js.map +1 -0
  451. package/dist/critique-QIN2FO4F.js +216 -0
  452. package/dist/critique-QIN2FO4F.js.map +1 -0
  453. package/dist/crm-KBPWZC6J.js +318 -0
  454. package/dist/crm-KBPWZC6J.js.map +1 -0
  455. package/dist/crm-QBWD7CWB.js +224 -0
  456. package/dist/crm-QBWD7CWB.js.map +1 -0
  457. package/dist/crop-U3AD4DDR.js +113 -0
  458. package/dist/crop-U3AD4DDR.js.map +1 -0
  459. package/dist/currency-XTFGZFGB.js +88 -0
  460. package/dist/currency-XTFGZFGB.js.map +1 -0
  461. package/dist/custom-conversions-W3K33V33.js +125 -0
  462. package/dist/custom-conversions-W3K33V33.js.map +1 -0
  463. package/dist/customers-HYE7N2H5.js +56 -0
  464. package/dist/decide-YTHCBKM6.js +199 -0
  465. package/dist/decide-YTHCBKM6.js.map +1 -0
  466. package/dist/delete-64REPCY2.js +54 -0
  467. package/dist/delete-64REPCY2.js.map +1 -0
  468. package/dist/delete-AY3KL3N3.js +63 -0
  469. package/dist/delete-AY3KL3N3.js.map +1 -0
  470. package/dist/delete-DZUDLYPC.js +69 -0
  471. package/dist/delete-DZUDLYPC.js.map +1 -0
  472. package/dist/delete-NZGZP4YP.js +71 -0
  473. package/dist/delete-NZGZP4YP.js.map +1 -0
  474. package/dist/delete-VO2LZXE4.js +66 -0
  475. package/dist/delete-VO2LZXE4.js.map +1 -0
  476. package/dist/delete-VQMU56OH.js +71 -0
  477. package/dist/delete-VQMU56OH.js.map +1 -0
  478. package/dist/demographics-KOFLMGVW.js +138 -0
  479. package/dist/demographics-KOFLMGVW.js.map +1 -0
  480. package/dist/describe-JNTCQZNL.js +97 -0
  481. package/dist/describe-JNTCQZNL.js.map +1 -0
  482. package/dist/describe-MT4334NG.js +97 -0
  483. package/dist/describe-MT4334NG.js.map +1 -0
  484. package/dist/dimensions-FEZUJRAG.js +101 -0
  485. package/dist/dimensions-FEZUJRAG.js.map +1 -0
  486. package/dist/discard-H4RPXZHX.js +66 -0
  487. package/dist/discard-H4RPXZHX.js.map +1 -0
  488. package/dist/discover-4GD7QSF5.js +93 -0
  489. package/dist/discover-4GD7QSF5.js.map +1 -0
  490. package/dist/discover-L7OVXW4V.js +172 -0
  491. package/dist/discover-L7OVXW4V.js.map +1 -0
  492. package/dist/domain-HURQ23KR.js +98 -0
  493. package/dist/domain-HURQ23KR.js.map +1 -0
  494. package/dist/download-L27HWEOE.js +299 -0
  495. package/dist/download-L27HWEOE.js.map +1 -0
  496. package/dist/draft-25G2P2TE.js +281 -0
  497. package/dist/draft-25G2P2TE.js.map +1 -0
  498. package/dist/draft-5VH2PW3R.js +307 -0
  499. package/dist/draft-5VH2PW3R.js.map +1 -0
  500. package/dist/draft-D6UTKSAA.js +217 -0
  501. package/dist/draft-D6UTKSAA.js.map +1 -0
  502. package/dist/draft-KLULNBWP.js +233 -0
  503. package/dist/draft-KLULNBWP.js.map +1 -0
  504. package/dist/draft-MI7RWY2K.js +100 -0
  505. package/dist/draft-MI7RWY2K.js.map +1 -0
  506. package/dist/draft-P4IVYTY3.js +103 -0
  507. package/dist/draft-P4IVYTY3.js.map +1 -0
  508. package/dist/draft-UQYWDZS7.js +306 -0
  509. package/dist/draft-UQYWDZS7.js.map +1 -0
  510. package/dist/draft-YFAJHCKM.js +328 -0
  511. package/dist/draft-YFAJHCKM.js.map +1 -0
  512. package/dist/engine/index.d.ts +213 -127
  513. package/dist/engine/index.js +18 -4
  514. package/dist/{env-4P5HOGNA.js → env-FBTHZKGN.js} +12 -2
  515. package/dist/env-FBTHZKGN.js.map +1 -0
  516. package/dist/experiment-HDYTJPUY.js +1397 -0
  517. package/dist/experiment-HDYTJPUY.js.map +1 -0
  518. package/dist/export-TS5GYEMA.js +168 -0
  519. package/dist/export-TS5GYEMA.js.map +1 -0
  520. package/dist/extract-QVQFUOIK.js +113 -0
  521. package/dist/extract-QVQFUOIK.js.map +1 -0
  522. package/dist/facets-WYQUZMFJ.js +114 -0
  523. package/dist/facets-WYQUZMFJ.js.map +1 -0
  524. package/dist/favorites-7QP7BY5K.js +178 -0
  525. package/dist/favorites-7QP7BY5K.js.map +1 -0
  526. package/dist/feed-EETRO2FG.js +177 -0
  527. package/dist/feed-EETRO2FG.js.map +1 -0
  528. package/dist/feedback-SIMPRE37.js +66 -0
  529. package/dist/feedback-SIMPRE37.js.map +1 -0
  530. package/dist/feedback-record-L4MPIVML.js +177 -0
  531. package/dist/feedback-record-L4MPIVML.js.map +1 -0
  532. package/dist/fetch-DTBM3DE2.js +176 -0
  533. package/dist/fetch-DTBM3DE2.js.map +1 -0
  534. package/dist/fetch-Z7O3ZL4D.js +139 -0
  535. package/dist/fetch-Z7O3ZL4D.js.map +1 -0
  536. package/dist/find-KAQ6JDMO.js +134 -0
  537. package/dist/find-KAQ6JDMO.js.map +1 -0
  538. package/dist/fit-MY5GVZZZ.js +45 -0
  539. package/dist/fit-MY5GVZZZ.js.map +1 -0
  540. package/dist/flows-IUDXVDOS.js +247 -0
  541. package/dist/flows-IUDXVDOS.js.map +1 -0
  542. package/dist/follow-IX4XVK5Y.js +94 -0
  543. package/dist/follow-IX4XVK5Y.js.map +1 -0
  544. package/dist/follow-competitors-UZBUOYTH.js +112 -0
  545. package/dist/follow-competitors-UZBUOYTH.js.map +1 -0
  546. package/dist/following-VGOIUCIZ.js +113 -0
  547. package/dist/following-VGOIUCIZ.js.map +1 -0
  548. package/dist/fonts-EUDHI6CA.js +34 -0
  549. package/dist/fonts-EUDHI6CA.js.map +1 -0
  550. package/dist/forecast-BRSEH2H3.js +104 -0
  551. package/dist/forecast-BRSEH2H3.js.map +1 -0
  552. package/dist/forecast-QV4U7TOY.js +168 -0
  553. package/dist/forecast-QV4U7TOY.js.map +1 -0
  554. package/dist/funding-H5YO37OW.js +85 -0
  555. package/dist/funding-H5YO37OW.js.map +1 -0
  556. package/dist/funnel-JLF77MLF.js +394 -0
  557. package/dist/funnel-JLF77MLF.js.map +1 -0
  558. package/dist/ga4-YHJ2XMLC.js +55 -0
  559. package/dist/ga4-YHJ2XMLC.js.map +1 -0
  560. package/dist/generate-M2ZX5DMI.js +262 -0
  561. package/dist/generate-M2ZX5DMI.js.map +1 -0
  562. package/dist/get-4EYKCZ6F.js +59 -0
  563. package/dist/get-4EYKCZ6F.js.map +1 -0
  564. package/dist/get-637GALM2.js +63 -0
  565. package/dist/get-637GALM2.js.map +1 -0
  566. package/dist/get-AYX5HS64.js +56 -0
  567. package/dist/get-AYX5HS64.js.map +1 -0
  568. package/dist/get-AZARFR6O.js +61 -0
  569. package/dist/get-AZARFR6O.js.map +1 -0
  570. package/dist/get-EG2U7MIL.js +78 -0
  571. package/dist/get-EG2U7MIL.js.map +1 -0
  572. package/dist/get-N4BPOQCB.js +63 -0
  573. package/dist/get-N4BPOQCB.js.map +1 -0
  574. package/dist/get-RPZHLQ56.js +92 -0
  575. package/dist/get-RPZHLQ56.js.map +1 -0
  576. package/dist/gif-6PRTB2VR.js +94 -0
  577. package/dist/gif-6PRTB2VR.js.map +1 -0
  578. package/dist/google-52JRH7X3.js +136 -0
  579. package/dist/google-52JRH7X3.js.map +1 -0
  580. package/dist/google-ITTPCJ7N.js +3190 -0
  581. package/dist/google-ITTPCJ7N.js.map +1 -0
  582. package/dist/google-ads-U3JFFQLU.js +195 -0
  583. package/dist/google-ads-U3JFFQLU.js.map +1 -0
  584. package/dist/group-AAZ5QKC3.js +43 -0
  585. package/dist/group-AAZ5QKC3.js.map +1 -0
  586. package/dist/group-GSYCZORC.js +43 -0
  587. package/dist/group-GSYCZORC.js.map +1 -0
  588. package/dist/gsc-TS5T7ML2.js +30 -0
  589. package/dist/gsc-TS5T7ML2.js.map +1 -0
  590. package/dist/history-EW6LFFCX.js +67 -0
  591. package/dist/history-EW6LFFCX.js.map +1 -0
  592. package/dist/history-YTNCWSV3.js +133 -0
  593. package/dist/history-YTNCWSV3.js.map +1 -0
  594. package/dist/hubspot-LXWQNKKB.js +779 -0
  595. package/dist/hubspot-LXWQNKKB.js.map +1 -0
  596. package/dist/icon-K75KI6BV.js +137 -0
  597. package/dist/icon-K75KI6BV.js.map +1 -0
  598. package/dist/ideas-JJIHQFV4.js +35 -0
  599. package/dist/ideas-JJIHQFV4.js.map +1 -0
  600. package/dist/images-MWETBYKB.js +90 -0
  601. package/dist/images-MWETBYKB.js.map +1 -0
  602. package/dist/improve-L3BW4EQG.js +86 -0
  603. package/dist/improve-L3BW4EQG.js.map +1 -0
  604. package/dist/ingest-THFAV4NO.js +107 -0
  605. package/dist/ingest-THFAV4NO.js.map +1 -0
  606. package/dist/ingest-U6B7GR4A.js +23 -0
  607. package/dist/ingest-U6B7GR4A.js.map +1 -0
  608. package/dist/insights-FA6T6PT6.js +423 -0
  609. package/dist/insights-FA6T6PT6.js.map +1 -0
  610. package/dist/insights-PELVD4RY.js +122 -0
  611. package/dist/insights-PELVD4RY.js.map +1 -0
  612. package/dist/inspect-N2WVVWGP.js +189 -0
  613. package/dist/inspect-N2WVVWGP.js.map +1 -0
  614. package/dist/inspiration-Y2J2PUPC.js +53 -0
  615. package/dist/inspiration-Y2J2PUPC.js.map +1 -0
  616. package/dist/intent-YNAAVNHK.js +95 -0
  617. package/dist/intent-YNAAVNHK.js.map +1 -0
  618. package/dist/job-E2U4FS5P.js +202 -0
  619. package/dist/job-E2U4FS5P.js.map +1 -0
  620. package/dist/job-create-DFYCHVQ7.js +109 -0
  621. package/dist/job-create-DFYCHVQ7.js.map +1 -0
  622. package/dist/job-status-FFPMTSHB.js +74 -0
  623. package/dist/job-status-FFPMTSHB.js.map +1 -0
  624. package/dist/keep-GYZS2UTL.js +78 -0
  625. package/dist/keep-GYZS2UTL.js.map +1 -0
  626. package/dist/keyword-gap-4JKLWIBJ.js +130 -0
  627. package/dist/keyword-gap-4JKLWIBJ.js.map +1 -0
  628. package/dist/keyword-metrics-KU3OHTQK.js +197 -0
  629. package/dist/keyword-metrics-KU3OHTQK.js.map +1 -0
  630. package/dist/keywords-for-site-M4MFWMVK.js +128 -0
  631. package/dist/keywords-for-site-M4MFWMVK.js.map +1 -0
  632. package/dist/landing-7UVZ7IPP.js +28 -0
  633. package/dist/landing-7UVZ7IPP.js.map +1 -0
  634. package/dist/landings-F7LOAEJE.js +151 -0
  635. package/dist/landings-F7LOAEJE.js.map +1 -0
  636. package/dist/languages-PKYCZNUB.js +40 -0
  637. package/dist/languages-PKYCZNUB.js.map +1 -0
  638. package/dist/languages-XEJKTIFP.js +55 -0
  639. package/dist/languages-XEJKTIFP.js.map +1 -0
  640. package/dist/launches-TCFAYUA5.js +19 -0
  641. package/dist/launches-TCFAYUA5.js.map +1 -0
  642. package/dist/layerize-ZSKFIPZA.js +190 -0
  643. package/dist/layerize-ZSKFIPZA.js.map +1 -0
  644. package/dist/leads-CSRESOB2.js +293 -0
  645. package/dist/leads-CSRESOB2.js.map +1 -0
  646. package/dist/leads-MQPEA7DG.js +90 -0
  647. package/dist/leads-MQPEA7DG.js.map +1 -0
  648. package/dist/learn-K5YBUMBT.js +203 -0
  649. package/dist/learn-K5YBUMBT.js.map +1 -0
  650. package/dist/library-IP2UKNRU.js +109 -0
  651. package/dist/library-IP2UKNRU.js.map +1 -0
  652. package/dist/lighthouse-57XBJRCO.js +75 -0
  653. package/dist/lighthouse-57XBJRCO.js.map +1 -0
  654. package/dist/line-item-writes-73NR2J5L.js +208 -0
  655. package/dist/line-item-writes-73NR2J5L.js.map +1 -0
  656. package/dist/line-items-2YBGXOAQ.js +103 -0
  657. package/dist/line-items-2YBGXOAQ.js.map +1 -0
  658. package/dist/link-GVAWECJO.js +64 -0
  659. package/dist/link-GVAWECJO.js.map +1 -0
  660. package/dist/linkedin-PZDT22AT.js +1008 -0
  661. package/dist/linkedin-PZDT22AT.js.map +1 -0
  662. package/dist/list-6IKPWQGG.js +57 -0
  663. package/dist/list-6IKPWQGG.js.map +1 -0
  664. package/dist/list-CAUH3BMG.js +65 -0
  665. package/dist/list-CAUH3BMG.js.map +1 -0
  666. package/dist/list-FNDRV25Y.js +151 -0
  667. package/dist/list-FNDRV25Y.js.map +1 -0
  668. package/dist/list-GTOSN7DP.js +50 -0
  669. package/dist/list-GTOSN7DP.js.map +1 -0
  670. package/dist/list-HLJP4NVE.js +51 -0
  671. package/dist/list-HLJP4NVE.js.map +1 -0
  672. package/dist/list-LCUPF7EF.js +76 -0
  673. package/dist/list-LCUPF7EF.js.map +1 -0
  674. package/dist/list-REZGFWC5.js +63 -0
  675. package/dist/list-REZGFWC5.js.map +1 -0
  676. package/dist/list-S6MNXDTV.js +303 -0
  677. package/dist/list-S6MNXDTV.js.map +1 -0
  678. package/dist/locations-2BYWKIYA.js +67 -0
  679. package/dist/locations-2BYWKIYA.js.map +1 -0
  680. package/dist/locations-GJHHMV6Z.js +40 -0
  681. package/dist/locations-GJHHMV6Z.js.map +1 -0
  682. package/dist/log-HGDNLDUX.js +92 -0
  683. package/dist/log-HGDNLDUX.js.map +1 -0
  684. package/dist/logo-AJK2TDQU.js +18 -0
  685. package/dist/logo-AJK2TDQU.js.map +1 -0
  686. package/dist/lookup-H5GEM77H.js +22 -0
  687. package/dist/lookup-H5GEM77H.js.map +1 -0
  688. package/dist/make-BT26YJXZ.js +640 -0
  689. package/dist/make-BT26YJXZ.js.map +1 -0
  690. package/dist/map-J5EX4HOX.js +404 -0
  691. package/dist/map-J5EX4HOX.js.map +1 -0
  692. package/dist/mcp-MHDW6AFL.js +463 -0
  693. package/dist/mcp-MHDW6AFL.js.map +1 -0
  694. package/dist/media-RAGEJTZX.js +89 -0
  695. package/dist/media-RAGEJTZX.js.map +1 -0
  696. package/dist/media-RNB7JFJP.js +15 -0
  697. package/dist/media-RNB7JFJP.js.map +1 -0
  698. package/dist/media-sources-4NN3DWSG.js +32 -0
  699. package/dist/media-sources-4NN3DWSG.js.map +1 -0
  700. package/dist/members-AIWMXAQD.js +44 -0
  701. package/dist/members-AIWMXAQD.js.map +1 -0
  702. package/dist/meta-WAPZMZI7.js +69 -0
  703. package/dist/meta-WAPZMZI7.js.map +1 -0
  704. package/dist/metrics-6EHC4ESN.js +152 -0
  705. package/dist/metrics-6EHC4ESN.js.map +1 -0
  706. package/dist/models-5J4WFUD3.js +155 -0
  707. package/dist/models-5J4WFUD3.js.map +1 -0
  708. package/dist/normalize-DSFVTRXN.js +806 -0
  709. package/dist/normalize-DSFVTRXN.js.map +1 -0
  710. package/dist/normalize-ZAWN4XCS.js +141 -0
  711. package/dist/normalize-ZAWN4XCS.js.map +1 -0
  712. package/dist/options-3CZNT5KP.js +121 -0
  713. package/dist/options-3CZNT5KP.js.map +1 -0
  714. package/dist/output-DTCLVPUF.js +24 -0
  715. package/dist/output-DTCLVPUF.js.map +1 -0
  716. package/dist/page-N2ZO3O7F.js +105 -0
  717. package/dist/page-N2ZO3O7F.js.map +1 -0
  718. package/dist/pages-FQ4CBAJ2.js +66 -0
  719. package/dist/pages-FQ4CBAJ2.js.map +1 -0
  720. package/dist/performance-GOMJMHPE.js +24 -0
  721. package/dist/performance-GOMJMHPE.js.map +1 -0
  722. package/dist/pinterest-NV5XTNJE.js +96 -0
  723. package/dist/pinterest-NV5XTNJE.js.map +1 -0
  724. package/dist/pixels-CTJ43FZ4.js +108 -0
  725. package/dist/pixels-CTJ43FZ4.js.map +1 -0
  726. package/dist/pixels-HKINGZCH.js +60 -0
  727. package/dist/pixels-HKINGZCH.js.map +1 -0
  728. package/dist/plan-ZYTWLGWK.js +207 -0
  729. package/dist/plan-ZYTWLGWK.js.map +1 -0
  730. package/dist/preview-UKYLPAW2.js +169 -0
  731. package/dist/preview-UKYLPAW2.js.map +1 -0
  732. package/dist/profile-Q3PHR6FU.js +159 -0
  733. package/dist/profile-Q3PHR6FU.js.map +1 -0
  734. package/dist/promoted-tweet-writes-IYOAZTA5.js +180 -0
  735. package/dist/promoted-tweet-writes-IYOAZTA5.js.map +1 -0
  736. package/dist/promoted-tweets-G3XFD5YM.js +119 -0
  737. package/dist/promoted-tweets-G3XFD5YM.js.map +1 -0
  738. package/dist/properties-WLL6M2P6.js +101 -0
  739. package/dist/properties-WLL6M2P6.js.map +1 -0
  740. package/dist/publish-ZG4J2GTH.js +322 -0
  741. package/dist/publish-ZG4J2GTH.js.map +1 -0
  742. package/dist/query-7AGG77WH.js +61 -0
  743. package/dist/query-7AGG77WH.js.map +1 -0
  744. package/dist/query-IYZN5KHO.js +236 -0
  745. package/dist/query-IYZN5KHO.js.map +1 -0
  746. package/dist/query-UN2P6DBA.js +247 -0
  747. package/dist/query-UN2P6DBA.js.map +1 -0
  748. package/dist/questionnaire-Z2ZIKNBV.js +93 -0
  749. package/dist/questionnaire-Z2ZIKNBV.js.map +1 -0
  750. package/dist/read-GM7PQYJA.js +141 -0
  751. package/dist/read-GM7PQYJA.js.map +1 -0
  752. package/dist/reddit-FTO4SFQE.js +26 -0
  753. package/dist/reddit-FTO4SFQE.js.map +1 -0
  754. package/dist/refresh-OUENQ2FS.js +94 -0
  755. package/dist/refresh-OUENQ2FS.js.map +1 -0
  756. package/dist/release-5OG7AAFY.js +60 -0
  757. package/dist/release-5OG7AAFY.js.map +1 -0
  758. package/dist/relevant-pages-KUVDZPRU.js +99 -0
  759. package/dist/relevant-pages-KUVDZPRU.js.map +1 -0
  760. package/dist/remove-33HI27KM.js +50 -0
  761. package/dist/remove-33HI27KM.js.map +1 -0
  762. package/dist/remove-GOYW2G4R.js +48 -0
  763. package/dist/remove-GOYW2G4R.js.map +1 -0
  764. package/dist/reopen-KFFYE53A.js +63 -0
  765. package/dist/reopen-KFFYE53A.js.map +1 -0
  766. package/dist/rerun-P6XACA5Z.js +86 -0
  767. package/dist/rerun-P6XACA5Z.js.map +1 -0
  768. package/dist/research-BEO3JMZI.js +262 -0
  769. package/dist/research-BEO3JMZI.js.map +1 -0
  770. package/dist/research-QOC53DLS.js +62 -0
  771. package/dist/research-QOC53DLS.js.map +1 -0
  772. package/dist/reset-E3OWE2WF.js +54 -0
  773. package/dist/reset-E3OWE2WF.js.map +1 -0
  774. package/dist/reset-I7M3HYMB.js +54 -0
  775. package/dist/reset-I7M3HYMB.js.map +1 -0
  776. package/dist/resolve-GP7BHM6L.js +121 -0
  777. package/dist/resolve-GP7BHM6L.js.map +1 -0
  778. package/dist/retry-33ZJCNQI.js +62 -0
  779. package/dist/retry-33ZJCNQI.js.map +1 -0
  780. package/dist/retry-X5PU7QO3.js +60 -0
  781. package/dist/retry-X5PU7QO3.js.map +1 -0
  782. package/dist/retry-failed-BEFWRV4Z.js +45 -0
  783. package/dist/retry-failed-BEFWRV4Z.js.map +1 -0
  784. package/dist/run-REK3TEGY.js +65 -0
  785. package/dist/run-REK3TEGY.js.map +1 -0
  786. package/dist/run-TH2662IC.js +61 -0
  787. package/dist/run-TH2662IC.js.map +1 -0
  788. package/dist/scaffold-ad-3WDRKUFT.js +1550 -0
  789. package/dist/scaffold-ad-3WDRKUFT.js.map +1 -0
  790. package/dist/scaffold-static-ad-X5NT52NF.js +973 -0
  791. package/dist/scaffold-static-ad-X5NT52NF.js.map +1 -0
  792. package/dist/scaffold-video-WZPVACLE.js +874 -0
  793. package/dist/scaffold-video-WZPVACLE.js.map +1 -0
  794. package/dist/schedule-KQ7UIR3N.js +66 -0
  795. package/dist/schedule-KQ7UIR3N.js.map +1 -0
  796. package/dist/schedule-V4UHGY3V.js +61 -0
  797. package/dist/schedule-V4UHGY3V.js.map +1 -0
  798. package/dist/scheduled-agents-KLQ5H2PA.js +49 -0
  799. package/dist/scheduled-agents-KLQ5H2PA.js.map +1 -0
  800. package/dist/schema-G3T4PZDI.js +132 -0
  801. package/dist/schema-G3T4PZDI.js.map +1 -0
  802. package/dist/schema-QXTDLZVC.js +63 -0
  803. package/dist/schema-QXTDLZVC.js.map +1 -0
  804. package/dist/scrape-7YKJWFZE.js +2241 -0
  805. package/dist/scrape-7YKJWFZE.js.map +1 -0
  806. package/dist/screenshot-ZHBSG3SI.js +102 -0
  807. package/dist/screenshot-ZHBSG3SI.js.map +1 -0
  808. package/dist/search-332KFYZ6.js +224 -0
  809. package/dist/search-332KFYZ6.js.map +1 -0
  810. package/dist/search-4PBMXXUY.js +91 -0
  811. package/dist/search-4PBMXXUY.js.map +1 -0
  812. package/dist/search-6XKEGABN.js +174 -0
  813. package/dist/search-6XKEGABN.js.map +1 -0
  814. package/dist/search-AVNUU6TJ.js +26 -0
  815. package/dist/search-AVNUU6TJ.js.map +1 -0
  816. package/dist/search-F5INRFFK.js +92 -0
  817. package/dist/search-F5INRFFK.js.map +1 -0
  818. package/dist/search-copy-DZVBYG2B.js +168 -0
  819. package/dist/search-copy-DZVBYG2B.js.map +1 -0
  820. package/dist/seeds-5JTQN5WI.js +101 -0
  821. package/dist/seeds-5JTQN5WI.js.map +1 -0
  822. package/dist/select-N2V55BEX.js +96 -0
  823. package/dist/select-N2V55BEX.js.map +1 -0
  824. package/dist/sends-3L6QBS46.js +309 -0
  825. package/dist/sends-3L6QBS46.js.map +1 -0
  826. package/dist/sequences-YKFV7BDH.js +146 -0
  827. package/dist/sequences-YKFV7BDH.js.map +1 -0
  828. package/dist/set-prompt-7HVHERRU.js +188 -0
  829. package/dist/set-prompt-7HVHERRU.js.map +1 -0
  830. package/dist/setup-links-4VVNQVPU.js +141 -0
  831. package/dist/setup-links-4VVNQVPU.js.map +1 -0
  832. package/dist/{shared-J7DQZ2ED.js → shared-QAMP7FZV.js} +8 -6
  833. package/dist/shared-QAMP7FZV.js.map +1 -0
  834. package/dist/shopify-FSHM5M4I.js +3346 -0
  835. package/dist/shopify-FSHM5M4I.js.map +1 -0
  836. package/dist/site-Q2HTRLIW.js +177 -0
  837. package/dist/site-Q2HTRLIW.js.map +1 -0
  838. package/dist/sitemaps-XPGLW24S.js +87 -0
  839. package/dist/sitemaps-XPGLW24S.js.map +1 -0
  840. package/dist/sites-WMBY2HJV.js +101 -0
  841. package/dist/sites-WMBY2HJV.js.map +1 -0
  842. package/dist/skills-3HEILQCU.js +47 -0
  843. package/dist/skills-3HEILQCU.js.map +1 -0
  844. package/dist/sources-2KN4RJNJ.js +30 -0
  845. package/dist/sources-2KN4RJNJ.js.map +1 -0
  846. package/dist/sources-4I2YMS2K.js +421 -0
  847. package/dist/sources-4I2YMS2K.js.map +1 -0
  848. package/dist/stale-IN7WSBLC.js +66 -0
  849. package/dist/stale-IN7WSBLC.js.map +1 -0
  850. package/dist/stats-GNILHSKK.js +34 -0
  851. package/dist/stats-GNILHSKK.js.map +1 -0
  852. package/dist/status-6SLKZWNR.js +62 -0
  853. package/dist/status-6SLKZWNR.js.map +1 -0
  854. package/dist/sticker-KCV3VZHY.js +94 -0
  855. package/dist/sticker-KCV3VZHY.js.map +1 -0
  856. package/dist/stock-VTORKR4C.js +179 -0
  857. package/dist/stock-VTORKR4C.js.map +1 -0
  858. package/dist/studio-QCRA6BY5.js +49 -0
  859. package/dist/studio-QCRA6BY5.js.map +1 -0
  860. package/dist/sync-455DB46Y.js +54 -0
  861. package/dist/sync-455DB46Y.js.map +1 -0
  862. package/dist/sync-A4KKQ3B6.js +265 -0
  863. package/dist/sync-A4KKQ3B6.js.map +1 -0
  864. package/dist/sync-LFZV5NBN.js +54 -0
  865. package/dist/sync-LFZV5NBN.js.map +1 -0
  866. package/dist/sync-definition-IJISZ5VQ.js +55 -0
  867. package/dist/sync-definition-IJISZ5VQ.js.map +1 -0
  868. package/dist/tag-manager-E7QTXBWQ.js +43 -0
  869. package/dist/tag-manager-E7QTXBWQ.js.map +1 -0
  870. package/dist/tags-6OAZOQYO.js +26 -0
  871. package/dist/tags-6OAZOQYO.js.map +1 -0
  872. package/dist/tags-6YRMDX3R.js +20 -0
  873. package/dist/tags-6YRMDX3R.js.map +1 -0
  874. package/dist/tags-EWXZSZYE.js +20 -0
  875. package/dist/tags-EWXZSZYE.js.map +1 -0
  876. package/dist/tags-SZCNPE2D.js +224 -0
  877. package/dist/tags-SZCNPE2D.js.map +1 -0
  878. package/dist/tags-TCFFP534.js +20 -0
  879. package/dist/tags-TCFFP534.js.map +1 -0
  880. package/dist/targeting-constants-D64YO3E7.js +118 -0
  881. package/dist/targeting-constants-D64YO3E7.js.map +1 -0
  882. package/dist/targeting-criteria-ESOC7KNX.js +113 -0
  883. package/dist/targeting-criteria-ESOC7KNX.js.map +1 -0
  884. package/dist/targets-IPBEB5KU.js +102 -0
  885. package/dist/targets-IPBEB5KU.js.map +1 -0
  886. package/dist/templates-IJ7FR3LA.js +178 -0
  887. package/dist/templates-IJ7FR3LA.js.map +1 -0
  888. package/dist/testimonials-IXS7CP6P.js +32 -0
  889. package/dist/testimonials-IXS7CP6P.js.map +1 -0
  890. package/dist/themes-MXNKJWMW.js +94 -0
  891. package/dist/themes-MXNKJWMW.js.map +1 -0
  892. package/dist/top-companies-NO6L2V6M.js +108 -0
  893. package/dist/top-companies-NO6L2V6M.js.map +1 -0
  894. package/dist/translate-QCE5ZB7M.js +600 -0
  895. package/dist/translate-QCE5ZB7M.js.map +1 -0
  896. package/dist/triggers-KXUDMDSA.js +141 -0
  897. package/dist/triggers-KXUDMDSA.js.map +1 -0
  898. package/dist/tweets-ZUKQAAUQ.js +123 -0
  899. package/dist/tweets-ZUKQAAUQ.js.map +1 -0
  900. package/dist/unfollow-A4JVCJBF.js +46 -0
  901. package/dist/unfollow-A4JVCJBF.js.map +1 -0
  902. package/dist/unlink-E3N36NYQ.js +67 -0
  903. package/dist/unlink-E3N36NYQ.js.map +1 -0
  904. package/dist/unstage-TRMHSHED.js +84 -0
  905. package/dist/unstage-TRMHSHED.js.map +1 -0
  906. package/dist/unstage-ZRLLCSQF.js +95 -0
  907. package/dist/unstage-ZRLLCSQF.js.map +1 -0
  908. package/dist/update-EWGWAXAQ.js +142 -0
  909. package/dist/update-EWGWAXAQ.js.map +1 -0
  910. package/dist/update-OKOQE7U2.js +155 -0
  911. package/dist/update-OKOQE7U2.js.map +1 -0
  912. package/dist/update-VSFHID2D.js +63 -0
  913. package/dist/update-VSFHID2D.js.map +1 -0
  914. package/dist/update-XGCGQDJ4.js +98 -0
  915. package/dist/update-XGCGQDJ4.js.map +1 -0
  916. package/dist/upload-BOYMDDEQ.js +126 -0
  917. package/dist/upload-BOYMDDEQ.js.map +1 -0
  918. package/dist/upload-XEHWYMJG.js +150 -0
  919. package/dist/upload-XEHWYMJG.js.map +1 -0
  920. package/dist/upscale-I5P2OHTN.js +109 -0
  921. package/dist/upscale-I5P2OHTN.js.map +1 -0
  922. package/dist/url-options-PCZEQE66.js +130 -0
  923. package/dist/url-options-PCZEQE66.js.map +1 -0
  924. package/dist/url-params-DV37GEQF.js +98 -0
  925. package/dist/url-params-DV37GEQF.js.map +1 -0
  926. package/dist/use-U4HG2NF3.js +95 -0
  927. package/dist/use-U4HG2NF3.js.map +1 -0
  928. package/dist/validate-5AV4FJZ5.js +91 -0
  929. package/dist/validate-5AV4FJZ5.js.map +1 -0
  930. package/dist/variant-FOVE6URJ.js +338 -0
  931. package/dist/variant-FOVE6URJ.js.map +1 -0
  932. package/dist/videos-IJ67PPJV.js +39 -0
  933. package/dist/videos-IJ67PPJV.js.map +1 -0
  934. package/dist/view-HRI3FHCH.js +121 -0
  935. package/dist/view-HRI3FHCH.js.map +1 -0
  936. package/dist/viewer-check-JYUE24M6.js +68 -0
  937. package/dist/viewer-check-JYUE24M6.js.map +1 -0
  938. package/dist/web-LJ36FRWD.js +140 -0
  939. package/dist/web-LJ36FRWD.js.map +1 -0
  940. package/dist/winners-SMMDN6LW.js +113 -0
  941. package/dist/winners-SMMDN6LW.js.map +1 -0
  942. package/dist/winning-ads-JIG2MQHJ.js +84 -0
  943. package/dist/winning-ads-JIG2MQHJ.js.map +1 -0
  944. package/dist/write-commands-7Z34WG2J.js +206 -0
  945. package/dist/write-commands-7Z34WG2J.js.map +1 -0
  946. package/dist/write-commands-BLT2SEC4.js +713 -0
  947. package/dist/write-commands-BLT2SEC4.js.map +1 -0
  948. package/dist/write-commands-GOZU6ENR.js +1015 -0
  949. package/dist/write-commands-GOZU6ENR.js.map +1 -0
  950. package/dist/write-commands-KA3QXVSF.js +737 -0
  951. package/dist/write-commands-KA3QXVSF.js.map +1 -0
  952. package/dist/x-6HBVXIKH.js +47 -0
  953. package/dist/x-6HBVXIKH.js.map +1 -0
  954. package/package.json +9 -2
  955. package/dist/chunk-CHJOTJTZ.js +0 -9989
  956. package/dist/chunk-CHJOTJTZ.js.map +0 -1
  957. package/dist/chunk-HJEMOSPH.js +0 -1292
  958. package/dist/chunk-HJEMOSPH.js.map +0 -1
  959. package/dist/chunk-MF7YA62W.js.map +0 -1
  960. package/dist/chunk-VLUGGVJL.js.map +0 -1
  961. package/dist/chunk-VZEDAFAR.js.map +0 -1
  962. package/dist/chunk-XHC4LMK4.js.map +0 -1
  963. package/dist/client-GR6YL3YX.js +0 -17
  964. package/dist/output-NMQXZF3Z.js +0 -18
  965. /package/dist/{client-GR6YL3YX.js.map → chunk-YQSBHWOI.js.map} +0 -0
  966. /package/dist/{env-4P5HOGNA.js.map → client-26SAJ46D.js.map} +0 -0
  967. /package/dist/{output-NMQXZF3Z.js.map → connect-WYUYS5V4.js.map} +0 -0
  968. /package/dist/{shared-J7DQZ2ED.js.map → customers-HYE7N2H5.js.map} +0 -0
@@ -0,0 +1,130 @@
1
+ import {
2
+ mappingCommandFor,
3
+ proposeMappingFromTemplate
4
+ } from "./chunk-FYWWTMXP.js";
5
+ import "./chunk-EDLZGTGN.js";
6
+ import {
7
+ parseApiError
8
+ } from "./chunk-V5GSRREZ.js";
9
+ import {
10
+ urlOptionsHints
11
+ } from "./chunk-WIRBRCTJ.js";
12
+ import {
13
+ getManagerIdForCustomer,
14
+ resolveCustomerId,
15
+ writeAdsJson,
16
+ writeJsonEnvelope
17
+ } from "./chunk-BVM5IRZW.js";
18
+ import "./chunk-JAYT43KX.js";
19
+ import {
20
+ ApiError,
21
+ apiPost
22
+ } from "./chunk-HREWXNTO.js";
23
+ import "./chunk-HLXWKMTK.js";
24
+ import "./chunk-O6QKCJE4.js";
25
+ import {
26
+ registerSchema
27
+ } from "./chunk-WOTDHRNF.js";
28
+ import "./chunk-YQSBHWOI.js";
29
+
30
+ // src/commands/ads/google/url-options.ts
31
+ import { defineCommand } from "citty";
32
+
33
+ // src/commands/ads/google/mapping-hints.ts
34
+ function observedTemplates(report) {
35
+ const values = [
36
+ report.account.final_url_suffix,
37
+ report.account.tracking_url_template,
38
+ ...[...report.campaigns.overrides, ...report.ad_groups.overrides, ...report.ads.overrides].flatMap((entity) => [
39
+ entity.final_url_suffix,
40
+ entity.tracking_url_template
41
+ ])
42
+ ];
43
+ return values.flatMap((value) => value.state === "set" ? [value.value] : []);
44
+ }
45
+ function mappingHints(report) {
46
+ const proposed = {};
47
+ const unexplained = /* @__PURE__ */ new Map();
48
+ for (const template of observedTemplates(report)) {
49
+ const proposal = proposeMappingFromTemplate(template, "google");
50
+ Object.assign(proposed, proposal.proposed);
51
+ for (const param of proposal.unexplained) unexplained.set(param.name, param.value);
52
+ }
53
+ const hints = [];
54
+ const command = mappingCommandFor("google", proposed);
55
+ if (command !== "") {
56
+ hints.push(
57
+ `These URLs carry campaign parameters Baker does not read yet: ${Object.keys(proposed).join(", ")}. Until it is told, their values are not stored at all \u2014 only that the name appeared \u2014 so every keyword and campaign breakdown for this account will come back empty rather than wrong. The placeholders say what each one is, so run: ${command}`
58
+ );
59
+ }
60
+ if (unexplained.size > 0) {
61
+ const named = [...unexplained].map(([name, value]) => `${name}=${value}`).join(", ");
62
+ hints.push(
63
+ `These carry something no placeholder explains: ${named}. Do not guess \u2014 if it is a dimension, map it by name with \`baker analytics map --platform google --set <name>=<role>\`; if it is a session token or a cache buster, \`=ignore\` stops it being listed as something to deal with.`
64
+ );
65
+ }
66
+ return hints;
67
+ }
68
+
69
+ // src/commands/ads/google/url-options.ts
70
+ registerSchema({
71
+ command: "ads.google.url-options",
72
+ description: "Report the Google Ads URL/tracking options in force at every level: the account-level final URL suffix and tracking template, plus every campaign, ad group and ad that overrides them. Every value is tagged set | not_set | not_read, so an unread level is never mistaken for an unset one. Read this before answering any UTM / tracking-parameter question. Compact by default: only overriding campaigns are listed; --full lists every campaign read.",
73
+ args: {
74
+ "customer-id": {
75
+ type: "string",
76
+ description: "Google Ads customer ID (10 digits, no dashes). Falls back to BAKER_GOOGLE_ADS_CUSTOMER_ID env var.",
77
+ required: false
78
+ },
79
+ full: {
80
+ type: "boolean",
81
+ description: "List every campaign read, including those with no override of their own.",
82
+ required: false
83
+ },
84
+ "no-cache": { type: "boolean", description: "Skip the read cache", required: false }
85
+ }
86
+ });
87
+ var urlOptionsCommand = defineCommand({
88
+ meta: {
89
+ name: "url-options",
90
+ description: `Show the URL/tracking options in force \u2014 account-level final URL suffix and tracking template, plus the campaigns, ad groups and ads that override them (the most specific level wins).
91
+
92
+ Start here for any "add utm_\u2026 / tracking parameter / agency tag" question: it tells you which level already carries one.
93
+ Each value is tagged: set | not_set (Google carries no value there) | not_read (never observed \u2014 NOT a finding).
94
+ Judgment on which level to use and what to put in it: /google-ads-playbook \u2192 18-naming-utm.md.
95
+
96
+ Examples:
97
+ baker ads google url-options --customer-id 1234567890
98
+ baker ads google url-options --customer-id 1234567890 --full`
99
+ },
100
+ args: {
101
+ "customer-id": { type: "string", description: "Google Ads customer ID (10 digits)", required: false },
102
+ full: { type: "boolean", description: "List every campaign read, not only the overriding ones", required: false },
103
+ "no-cache": { type: "boolean", description: "Skip the read cache", required: false }
104
+ },
105
+ run: async ({ args }) => {
106
+ const customerId = await resolveCustomerId(args);
107
+ try {
108
+ const managerId = getManagerIdForCustomer(customerId);
109
+ const data = await apiPost("/api/ads/google/url-options", {
110
+ customerId,
111
+ ...managerId ? { managerId } : {},
112
+ ...args.full ? { full: true } : {},
113
+ ...args["no-cache"] ? { skipCache: true } : {}
114
+ });
115
+ const hints = [...urlOptionsHints(data), ...mappingHints(data)];
116
+ writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });
117
+ } catch (err) {
118
+ if (err instanceof ApiError) {
119
+ writeAdsJson(parseApiError(err.message, "", customerId, err.code));
120
+ process.exit(1);
121
+ }
122
+ writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
123
+ process.exit(1);
124
+ }
125
+ }
126
+ });
127
+ export {
128
+ urlOptionsCommand
129
+ };
130
+ //# sourceMappingURL=url-options-PCZEQE66.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/google/url-options.ts","../src/commands/ads/google/mapping-hints.ts"],"sourcesContent":["import { type GoogleUrlOptionsResponse, urlOptionsHints } from \"@baker/api/ads-google\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../../client.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { getManagerIdForCustomer } from \"../cache.ts\";\nimport { resolveCustomerId, writeAdsJson, writeJsonEnvelope } from \"../output.ts\";\nimport { parseApiError } from \"./error-parser.ts\";\nimport { mappingHints } from \"./mapping-hints.ts\";\n\nregisterSchema({\n command: \"ads.google.url-options\",\n description:\n \"Report the Google Ads URL/tracking options in force at every level: the account-level final URL suffix and tracking template, plus every campaign, ad group and ad that overrides them. Every value is tagged set | not_set | not_read, so an unread level is never mistaken for an unset one. Read this before answering any UTM / tracking-parameter question. Compact by default: only overriding campaigns are listed; --full lists every campaign read.\",\n args: {\n \"customer-id\": {\n type: \"string\",\n description: \"Google Ads customer ID (10 digits, no dashes). Falls back to BAKER_GOOGLE_ADS_CUSTOMER_ID env var.\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"List every campaign read, including those with no override of their own.\",\n required: false,\n },\n \"no-cache\": { type: \"boolean\", description: \"Skip the read cache\", required: false },\n },\n});\n\nexport const urlOptionsCommand = defineCommand({\n meta: {\n name: \"url-options\",\n description: `Show the URL/tracking options in force — account-level final URL suffix and tracking template, plus the campaigns, ad groups and ads that override them (the most specific level wins).\n\nStart here for any \"add utm_… / tracking parameter / agency tag\" question: it tells you which level already carries one.\nEach value is tagged: set | not_set (Google carries no value there) | not_read (never observed — NOT a finding).\nJudgment on which level to use and what to put in it: /google-ads-playbook → 18-naming-utm.md.\n\nExamples:\n baker ads google url-options --customer-id 1234567890\n baker ads google url-options --customer-id 1234567890 --full`,\n },\n args: {\n \"customer-id\": { type: \"string\", description: \"Google Ads customer ID (10 digits)\", required: false },\n full: { type: \"boolean\", description: \"List every campaign read, not only the overriding ones\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Skip the read cache\", required: false },\n },\n run: async ({ args }) => {\n const customerId = await resolveCustomerId(args);\n try {\n const managerId = getManagerIdForCustomer(customerId);\n const data = await apiPost<GoogleUrlOptionsResponse>(\"/api/ads/google/url-options\", {\n customerId,\n ...(managerId ? { managerId } : {}),\n ...(args.full ? { full: true } : {}),\n ...(args[\"no-cache\"] ? { skipCache: true } : {}),\n });\n const hints = [...urlOptionsHints(data), ...mappingHints(data)];\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });\n } catch (err) {\n if (err instanceof ApiError) {\n // `err.code` is what tells `parseApiError` a missing Google Ads connection\n // apart from a fixable query error. Dropped, a never-connected account gets\n // the query-correction path instead — and since the query here is empty, the\n // \"add a LIMIT\" rule matches and hands the agent a `correctedCommand` it is\n // told to run, sending it off to execute an empty GAQL query instead of\n // asking the user to connect.\n writeAdsJson(parseApiError(err.message, \"\", customerId, err.code));\n process.exit(1);\n }\n writeAdsJson({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n","/**\n * The bridge between a Google tracking template and Baker's reading of it.\n *\n * These two facts sat one command apart and nothing joined them: `url-options`\n * reports that the account's URLs carry `searchword={keyword}`, and\n * `baker analytics map` is what makes Baker read `searchword` as a keyword.\n * Until it is told, the values are not stored at all — only the fact that the\n * name appeared — so every keyword report for that account is empty and reads\n * as \"this campaign brought no keywords\" rather than \"nobody has said what\n * `searchword` is\".\n *\n * The template is the client's own answer, already written down, so this is\n * naming what arrives rather than proposing a change to their account — which\n * `baker analytics` refuses to do and this does not do either.\n */\nimport type { GoogleUrlOptionsResponse } from \"@baker/api/ads-google\";\nimport type { AdParamRole } from \"@baker/api/analytics\";\nimport { mappingCommandFor, proposeMappingFromTemplate } from \"@baker/api/analytics\";\n\n/** Every template and suffix this report actually observed, at any level. */\nfunction observedTemplates(report: GoogleUrlOptionsResponse): string[] {\n const values = [\n report.account.final_url_suffix,\n report.account.tracking_url_template,\n ...[...report.campaigns.overrides, ...report.ad_groups.overrides, ...report.ads.overrides].flatMap((entity) => [\n entity.final_url_suffix,\n entity.tracking_url_template,\n ]),\n ];\n return values.flatMap((value) => (value.state === \"set\" ? [value.value] : []));\n}\n\nexport function mappingHints(report: GoogleUrlOptionsResponse): string[] {\n const proposed: Record<string, AdParamRole> = {};\n const unexplained = new Map<string, string>();\n\n for (const template of observedTemplates(report)) {\n const proposal = proposeMappingFromTemplate(template, \"google\");\n Object.assign(proposed, proposal.proposed);\n for (const param of proposal.unexplained) unexplained.set(param.name, param.value);\n }\n\n const hints: string[] = [];\n const command = mappingCommandFor(\"google\", proposed);\n if (command !== \"\") {\n hints.push(\n `These URLs carry campaign parameters Baker does not read yet: ${Object.keys(proposed).join(\", \")}. Until it is told, their values are not stored at all — only that the name appeared — so every keyword and campaign breakdown for this account will come back empty rather than wrong. The placeholders say what each one is, so run: ${command}`,\n );\n }\n if (unexplained.size > 0) {\n const named = [...unexplained].map(([name, value]) => `${name}=${value}`).join(\", \");\n hints.push(\n `These carry something no placeholder explains: ${named}. Do not guess — if it is a dimension, map it by name with \\`baker analytics map --platform google --set <name>=<role>\\`; if it is a session token or a cache buster, \\`=ignore\\` stops it being listed as something to deal with.`,\n );\n }\n return hints;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,98 @@
1
+ import {
2
+ handleLinkedinError,
3
+ resolveAccountIdArg
4
+ } from "./chunk-PAHLJMC3.js";
5
+ import {
6
+ writeAdsJson
7
+ } from "./chunk-BVM5IRZW.js";
8
+ import {
9
+ LINKEDIN_TRACKING_PARAMS_AD_SET_MAX
10
+ } from "./chunk-KRIK2JR4.js";
11
+ import "./chunk-GXDLWBOY.js";
12
+ import "./chunk-GIWHHCD6.js";
13
+ import "./chunk-UI6BKYQD.js";
14
+ import "./chunk-JAYT43KX.js";
15
+ import {
16
+ apiGet
17
+ } from "./chunk-HREWXNTO.js";
18
+ import "./chunk-HLXWKMTK.js";
19
+ import "./chunk-O6QKCJE4.js";
20
+ import "./chunk-WOTDHRNF.js";
21
+ import "./chunk-YQSBHWOI.js";
22
+
23
+ // src/commands/ads/linkedin/url-params.ts
24
+ import { defineCommand } from "citty";
25
+ var urlParamsCommand = defineCommand({
26
+ meta: {
27
+ name: "url-params",
28
+ description: `Read the URL tracking parameters in effect \u2014 the ad account's, optionally every ad set's, and the keys set at BOTH (which LinkedIn appends twice).
29
+
30
+ Start here before setting UTMs on an ad set: whatever the account already carries is appended on top of it.
31
+
32
+ Examples:
33
+ baker ads linkedin url-params \u2014 the ad account's parameters
34
+ baker ads linkedin url-params --ad-sets \u2014 plus every ad set's, and the collisions
35
+ baker ads linkedin url-params --campaign-ids 123456,789012 \u2014 plus just those ad sets'
36
+ baker ads linkedin url-params --ad-sets --collisions-only \u2014 just what would land twice`
37
+ },
38
+ args: {
39
+ "account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
40
+ "account-urn": { type: "string", description: "Alias for --account-id" },
41
+ "ad-sets": {
42
+ type: "boolean",
43
+ description: `Also read every ad set's parameters (one call each, first ${LINKEDIN_TRACKING_PARAMS_AD_SET_MAX})`
44
+ },
45
+ "campaign-ids": { type: "string", description: "Comma-separated ad set ids to read instead of all of them" },
46
+ "collisions-only": { type: "boolean", description: "Report only the keys set at more than one level" }
47
+ },
48
+ run: async ({ args }) => {
49
+ const accountId = resolveAccountIdArg(args);
50
+ try {
51
+ const params = { "account-id": accountId };
52
+ if (args["campaign-ids"]) params["campaign-ids"] = String(args["campaign-ids"]);
53
+ if (args["ad-sets"]) params["all-ad-sets"] = "true";
54
+ const data = await apiGet("/api/ads/linkedin/url-params", params);
55
+ const examinedAdSets = Boolean(args["ad-sets"] || args["campaign-ids"]);
56
+ const notes = hints(data, examinedAdSets);
57
+ writeAdsJson({
58
+ ok: true,
59
+ data: args["collisions-only"] ? { collisions: data.collisions, adSetCoverage: data.adSetCoverage } : data,
60
+ ...notes.length > 0 ? { hints: notes } : {}
61
+ });
62
+ } catch (err) {
63
+ handleLinkedinError(err);
64
+ }
65
+ }
66
+ });
67
+ function hints(data, examinedAdSets) {
68
+ const out = [];
69
+ if (data.unreadable.length > 0) {
70
+ out.push(
71
+ `could NOT read ${data.unreadable.map((entry) => entry.level === "account" ? "the ad account" : `ad set ${entry.id}`).join(", ")} \u2014 treat that as unknown, not as empty. Do not stage url-params against it: either it does not exist, or it holds parameters this write would replace unseen. First reason: ${data.unreadable[0]?.reason ?? "unknown"}`
72
+ );
73
+ }
74
+ if (data.collisions.length > 0) {
75
+ out.push(
76
+ `${data.collisions.map((c) => c.key).join(", ")} set at BOTH the account and an ad set \u2014 LinkedIn appends both, so each lands twice in the served URL. Clear it at one level with \`account url-params\` or \`campaigns url-params --clear\`.`
77
+ );
78
+ }
79
+ if (data.adSetCoverage?.capped) {
80
+ out.push(
81
+ `only ${data.adSetCoverage.examined} of ${data.adSetCoverage.total} ad sets were read \u2014 the collisions above cover those, not the rest. Narrow with --campaign-ids to check the others.`
82
+ );
83
+ }
84
+ if (!examinedAdSets) {
85
+ out.push("only the ad account was read \u2014 pass --ad-sets to find keys an ad set sets on top of these");
86
+ }
87
+ const allAnswered = data.unreadable.length === 0;
88
+ const nothingSet = data.account.state === "not_set" && data.adSets.every((adSet) => adSet.state === "not_set");
89
+ if (allAnswered && nothingSet) {
90
+ out.push("nothing is tagged \u2014 set the constants once with `baker ads linkedin account url-params`");
91
+ }
92
+ return out;
93
+ }
94
+ export {
95
+ hints,
96
+ urlParamsCommand
97
+ };
98
+ //# sourceMappingURL=url-params-DV37GEQF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/linkedin/url-params.ts"],"sourcesContent":["import { LINKEDIN_TRACKING_PARAMS_AD_SET_MAX, type LinkedinTrackingParametersResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\n/**\n * Reads what is set today, at both levels. Its reason to exist is the one thing\n * the write commands cannot tell you: LinkedIn CONCATENATES the ad account's\n * tracking parameters with each ad set's, so a key set at both lands in the\n * served URL twice — and nothing surfaces that until a report comes back split\n * across two values of the same parameter.\n *\n * Account-only by default: there is no batch read for `adTrackingParameters`,\n * so every ad set costs its own call against the same rate limit the staged\n * writes use. `--ad-sets` opts into the sweep.\n */\nexport const urlParamsCommand = defineCommand({\n meta: {\n name: \"url-params\",\n description: `Read the URL tracking parameters in effect — the ad account's, optionally every ad set's, and the keys set at BOTH (which LinkedIn appends twice).\n\nStart here before setting UTMs on an ad set: whatever the account already carries is appended on top of it.\n\nExamples:\n baker ads linkedin url-params — the ad account's parameters\n baker ads linkedin url-params --ad-sets — plus every ad set's, and the collisions\n baker ads linkedin url-params --campaign-ids 123456,789012 — plus just those ad sets'\n baker ads linkedin url-params --ad-sets --collisions-only — just what would land twice`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n \"ad-sets\": {\n type: \"boolean\",\n description: `Also read every ad set's parameters (one call each, first ${LINKEDIN_TRACKING_PARAMS_AD_SET_MAX})`,\n },\n \"campaign-ids\": { type: \"string\", description: \"Comma-separated ad set ids to read instead of all of them\" },\n \"collisions-only\": { type: \"boolean\", description: \"Report only the keys set at more than one level\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"campaign-ids\"]) params[\"campaign-ids\"] = String(args[\"campaign-ids\"]);\n if (args[\"ad-sets\"]) params[\"all-ad-sets\"] = \"true\";\n const data = await apiGet<LinkedinTrackingParametersResponse>(\"/api/ads/linkedin/url-params\", params);\n const examinedAdSets = Boolean(args[\"ad-sets\"] || args[\"campaign-ids\"]);\n const notes = hints(data, examinedAdSets);\n writeAdsJson({\n ok: true,\n data: args[\"collisions-only\"] ? { collisions: data.collisions, adSetCoverage: data.adSetCoverage } : data,\n ...(notes.length > 0 ? { hints: notes } : {}),\n });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n\n/**\n * A partial sweep reporting no collisions is the failure this guards: it reads\n * identically to a clean account, so say which of the two it is.\n */\nexport function hints(data: LinkedinTrackingParametersResponse, examinedAdSets: boolean): string[] {\n const out: string[] = [];\n // First, and before anything that could be read as a fact about the account:\n // a level that could not be read carries no information, and every other\n // line below would otherwise describe it as empty. The wording covers both\n // reasons a level lands here — the read failed, or the id names nothing —\n // because the conclusion is the same and only one of them is knowable here.\n if (data.unreadable.length > 0) {\n out.push(\n `could NOT read ${data.unreadable.map((entry) => (entry.level === \"account\" ? \"the ad account\" : `ad set ${entry.id}`)).join(\", \")} — treat that as unknown, not as empty. Do not stage url-params against it: either it does not exist, or it holds parameters this write would replace unseen. First reason: ${data.unreadable[0]?.reason ?? \"unknown\"}`,\n );\n }\n if (data.collisions.length > 0) {\n out.push(\n `${data.collisions.map((c) => c.key).join(\", \")} set at BOTH the account and an ad set — LinkedIn appends both, so each lands twice in the served URL. Clear it at one level with \\`account url-params\\` or \\`campaigns url-params --clear\\`.`,\n );\n }\n if (data.adSetCoverage?.capped) {\n out.push(\n `only ${data.adSetCoverage.examined} of ${data.adSetCoverage.total} ad sets were read — the collisions above cover those, not the rest. Narrow with --campaign-ids to check the others.`,\n );\n }\n if (!examinedAdSets) {\n out.push(\"only the ad account was read — pass --ad-sets to find keys an ad set sets on top of these\");\n }\n // \"Nothing is tagged\" is a claim about the account, so it may only be made\n // when every level examined actually answered.\n const allAnswered = data.unreadable.length === 0;\n const nothingSet = data.account.state === \"not_set\" && data.adSets.every((adSet) => adSet.state === \"not_set\");\n if (allAnswered && nothingSet) {\n out.push(\"nothing is tagged — set the constants once with `baker ads linkedin account url-params`\");\n }\n return out;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAgBvB,IAAM,mBAAmB,cAAc;AAAA,EAC5C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASf;AAAA,EACA,MAAM;AAAA,IACJ,cAAc,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC/F,eAAe,EAAE,MAAM,UAAU,aAAa,yBAAyB;AAAA,IACvE,WAAW;AAAA,MACT,MAAM;AAAA,MACN,aAAa,6DAA6D,mCAAmC;AAAA,IAC/G;AAAA,IACA,gBAAgB,EAAE,MAAM,UAAU,aAAa,4DAA4D;AAAA,IAC3G,mBAAmB,EAAE,MAAM,WAAW,aAAa,kDAAkD;AAAA,EACvG;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,YAAY,oBAAoB,IAAI;AAC1C,QAAI;AACF,YAAM,SAAiC,EAAE,cAAc,UAAU;AACjE,UAAI,KAAK,cAAc,EAAG,QAAO,cAAc,IAAI,OAAO,KAAK,cAAc,CAAC;AAC9E,UAAI,KAAK,SAAS,EAAG,QAAO,aAAa,IAAI;AAC7C,YAAM,OAAO,MAAM,OAA2C,gCAAgC,MAAM;AACpG,YAAM,iBAAiB,QAAQ,KAAK,SAAS,KAAK,KAAK,cAAc,CAAC;AACtE,YAAM,QAAQ,MAAM,MAAM,cAAc;AACxC,mBAAa;AAAA,QACX,IAAI;AAAA,QACJ,MAAM,KAAK,iBAAiB,IAAI,EAAE,YAAY,KAAK,YAAY,eAAe,KAAK,cAAc,IAAI;AAAA,QACrG,GAAI,MAAM,SAAS,IAAI,EAAE,OAAO,MAAM,IAAI,CAAC;AAAA,MAC7C,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;AAMM,SAAS,MAAM,MAA0C,gBAAmC;AACjG,QAAM,MAAgB,CAAC;AAMvB,MAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,QAAI;AAAA,MACF,kBAAkB,KAAK,WAAW,IAAI,CAAC,UAAW,MAAM,UAAU,YAAY,mBAAmB,UAAU,MAAM,EAAE,EAAG,EAAE,KAAK,IAAI,CAAC,oLAA+K,KAAK,WAAW,CAAC,GAAG,UAAU,SAAS;AAAA,IAC1V;AAAA,EACF;AACA,MAAI,KAAK,WAAW,SAAS,GAAG;AAC9B,QAAI;AAAA,MACF,GAAG,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAAA,IACjD;AAAA,EACF;AACA,MAAI,KAAK,eAAe,QAAQ;AAC9B,QAAI;AAAA,MACF,QAAQ,KAAK,cAAc,QAAQ,OAAO,KAAK,cAAc,KAAK;AAAA,IACpE;AAAA,EACF;AACA,MAAI,CAAC,gBAAgB;AACnB,QAAI,KAAK,gGAA2F;AAAA,EACtG;AAGA,QAAM,cAAc,KAAK,WAAW,WAAW;AAC/C,QAAM,aAAa,KAAK,QAAQ,UAAU,aAAa,KAAK,OAAO,MAAM,CAAC,UAAU,MAAM,UAAU,SAAS;AAC7G,MAAI,eAAe,YAAY;AAC7B,QAAI,KAAK,8FAAyF;AAAA,EACpG;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,95 @@
1
+ import {
2
+ ApiError,
3
+ apiGet,
4
+ apiPost
5
+ } from "./chunk-HREWXNTO.js";
6
+ import "./chunk-HLXWKMTK.js";
7
+ import "./chunk-O6QKCJE4.js";
8
+ import {
9
+ registerSchema,
10
+ writeJson,
11
+ writeOutput
12
+ } from "./chunk-WOTDHRNF.js";
13
+ import "./chunk-YQSBHWOI.js";
14
+
15
+ // src/commands/images/use.ts
16
+ import { defineCommand } from "citty";
17
+ registerSchema({
18
+ command: "images.use",
19
+ description: "Ingest a URL and wait for the library record to be ready.",
20
+ args: {
21
+ url: { type: "string", description: "Image URL", required: true },
22
+ source: { type: "string", description: "Image source enum", required: false, default: "uploaded" },
23
+ "max-wait": { type: "number", description: "Max wait ms", required: false, default: 3e4 },
24
+ context: {
25
+ type: "string",
26
+ description: "Free-text hint passed to Gemini describe to bias the generated description and tags",
27
+ required: false
28
+ },
29
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
30
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
31
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false }
32
+ }
33
+ });
34
+ var POLL_INTERVAL_MS = 1500;
35
+ function emitReady(ingestResult, doc, args) {
36
+ const format = typeof args.output === "string" && args.output.length > 0 ? args.output : "json";
37
+ const fields = typeof args.fields === "string" && args.fields.length > 0 ? args.fields.split(",") : void 0;
38
+ writeOutput(
39
+ { ok: true, data: format === "json" ? { ...ingestResult, image: doc } : doc },
40
+ format,
41
+ fields,
42
+ args.full === true
43
+ );
44
+ }
45
+ var useCommand = defineCommand({
46
+ meta: {
47
+ name: "use",
48
+ description: "Sugar over `ingest`: download \u2192 store \u2192 wait until describe + embed complete \u2192 return ready library record.\n\nExample: baker images use https://cdn.example.com/hero.png --source uploaded"
49
+ },
50
+ args: {
51
+ url: { type: "positional", description: "Image URL", required: false },
52
+ source: { type: "string", description: "Source enum", required: false },
53
+ "max-wait": { type: "string", description: "Max wait ms (default 30000)", required: false },
54
+ context: { type: "string", description: "Description context hint", required: false },
55
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
56
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
57
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false }
58
+ },
59
+ run: async ({ args }) => {
60
+ try {
61
+ const url = args.url;
62
+ if (!url) {
63
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "URL is required" } });
64
+ process.exit(1);
65
+ }
66
+ const source = args.source ?? "uploaded";
67
+ const maxWait = args["max-wait"] ? Number(args["max-wait"]) : 3e4;
68
+ const ingestBody = { url, source };
69
+ if (args.context) ingestBody.descriptionContext = args.context;
70
+ const ingestResult = await apiPost("/api/images/ingest", ingestBody);
71
+ const start = Date.now();
72
+ while (Date.now() - start < maxWait) {
73
+ const doc = await apiGet("/api/images/get", { id: ingestResult.imageId });
74
+ if (doc.status === "ready" || doc.status === "error") {
75
+ emitReady(ingestResult, doc, args);
76
+ return;
77
+ }
78
+ await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));
79
+ }
80
+ writeJson({ ok: false, error: { code: "TIMEOUT", message: `Image not ready within ${maxWait}ms` } });
81
+ process.exit(1);
82
+ } catch (err) {
83
+ if (err instanceof ApiError) {
84
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
85
+ process.exit(1);
86
+ }
87
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
88
+ process.exit(1);
89
+ }
90
+ }
91
+ });
92
+ export {
93
+ useCommand
94
+ };
95
+ //# sourceMappingURL=use-U4HG2NF3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/images/use.ts"],"sourcesContent":["import type { ImageDoc, ImagesIngestRequest, ImagesIngestResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../client.ts\";\nimport { type OutputFormat, writeJson, writeOutput } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\n\nregisterSchema({\n command: \"images.use\",\n description: \"Ingest a URL and wait for the library record to be ready.\",\n args: {\n url: { type: \"string\", description: \"Image URL\", required: true },\n source: { type: \"string\", description: \"Image source enum\", required: false, default: \"uploaded\" },\n \"max-wait\": { type: \"number\", description: \"Max wait ms\", required: false, default: 30000 },\n context: {\n type: \"string\",\n description: \"Free-text hint passed to Gemini describe to bias the generated description and tags\",\n required: false,\n },\n output: { type: \"string\", description: \"Output format: json|files|md\", required: false, default: \"json\" },\n fields: { type: \"string\", description: \"Comma-separated field names to include\", required: false },\n full: { type: \"boolean\", description: \"Include full metadata\", required: false, default: false },\n },\n});\n\nconst POLL_INTERVAL_MS = 1500;\n\n/**\n * `json` keeps the ingest result alongside the finished row, which is the shape\n * callers already parse. The table formats tabulate the row itself — the ingest\n * result is three scalars with no columns worth printing.\n */\nfunction emitReady(ingestResult: ImagesIngestResponse, doc: ImageDoc, args: Record<string, unknown>): void {\n const format = typeof args.output === \"string\" && args.output.length > 0 ? (args.output as OutputFormat) : \"json\";\n const fields = typeof args.fields === \"string\" && args.fields.length > 0 ? args.fields.split(\",\") : undefined;\n writeOutput(\n { ok: true, data: format === \"json\" ? { ...ingestResult, image: doc } : doc },\n format,\n fields,\n args.full === true,\n );\n}\n\nexport const useCommand = defineCommand({\n meta: {\n name: \"use\",\n description:\n \"Sugar over `ingest`: download → store → wait until describe + embed complete → return ready library record.\\n\\nExample: baker images use https://cdn.example.com/hero.png --source uploaded\",\n },\n args: {\n url: { type: \"positional\", description: \"Image URL\", required: false },\n source: { type: \"string\", description: \"Source enum\", required: false },\n \"max-wait\": { type: \"string\", description: \"Max wait ms (default 30000)\", required: false },\n context: { type: \"string\", description: \"Description context hint\", required: false },\n output: { type: \"string\", description: \"Output format: json|files|md\", required: false, default: \"json\" },\n fields: { type: \"string\", description: \"Comma-separated field names to include\", required: false },\n full: { type: \"boolean\", description: \"Include full metadata\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const url = args.url as string | undefined;\n if (!url) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"URL is required\" } });\n process.exit(1);\n }\n const source = (args.source as string | undefined) ?? \"uploaded\";\n const maxWait = args[\"max-wait\"] ? Number(args[\"max-wait\"]) : 30000;\n\n const ingestBody: ImagesIngestRequest = { url, source: source as ImagesIngestRequest[\"source\"] };\n if (args.context) ingestBody.descriptionContext = args.context as string;\n const ingestResult = await apiPost<ImagesIngestResponse>(\"/api/images/ingest\", ingestBody);\n\n const start = Date.now();\n while (Date.now() - start < maxWait) {\n const doc = await apiGet<ImageDoc>(\"/api/images/get\", { id: ingestResult.imageId });\n if (doc.status === \"ready\" || doc.status === \"error\") {\n emitReady(ingestResult, doc, args as Record<string, unknown>);\n return;\n }\n await new Promise((resolve) => setTimeout(resolve, POLL_INTERVAL_MS));\n }\n writeJson({ ok: false, error: { code: \"TIMEOUT\", message: `Image not ready within ${maxWait}ms` } });\n process.exit(1);\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,91 @@
1
+ import {
2
+ outputRatioWarningsFor
3
+ } from "./chunk-ASL7JFBD.js";
4
+ import {
5
+ exitOnPrepareError,
6
+ prepareCanvas
7
+ } from "./chunk-QKE7GXZ7.js";
8
+ import "./chunk-SLB46MSS.js";
9
+ import "./chunk-RGIXQEGJ.js";
10
+ import "./chunk-YULENNA7.js";
11
+ import "./chunk-KAHMADFH.js";
12
+ import "./chunk-V5HDRJQW.js";
13
+ import "./chunk-I3DIZWN5.js";
14
+ import "./chunk-AUSKKFVH.js";
15
+ import "./chunk-HDHWIEJJ.js";
16
+ import {
17
+ defaultRegistry,
18
+ validateCanvasDeep
19
+ } from "./chunk-KZUHRZ2C.js";
20
+ import "./chunk-66USKCVY.js";
21
+ import "./chunk-SHTESUB6.js";
22
+ import "./chunk-DGCUPJZD.js";
23
+ import "./chunk-U6VRBDNQ.js";
24
+ import "./chunk-CAMX6OHF.js";
25
+ import "./chunk-XQ3CCNJD.js";
26
+ import "./chunk-5HYSKH77.js";
27
+ import "./chunk-KIGGMKAE.js";
28
+ import "./chunk-MGKHFGLV.js";
29
+ import "./chunk-U7BBXM67.js";
30
+ import "./chunk-DX4GIDO7.js";
31
+ import "./chunk-CZENWCBS.js";
32
+ import "./chunk-KRIK2JR4.js";
33
+ import "./chunk-GXDLWBOY.js";
34
+ import "./chunk-GIWHHCD6.js";
35
+ import "./chunk-UI6BKYQD.js";
36
+ import "./chunk-JAYT43KX.js";
37
+ import "./chunk-HREWXNTO.js";
38
+ import "./chunk-HLXWKMTK.js";
39
+ import "./chunk-O6QKCJE4.js";
40
+ import "./chunk-WOTDHRNF.js";
41
+ import "./chunk-YQSBHWOI.js";
42
+
43
+ // src/commands/canvas/validate.ts
44
+ import path from "path";
45
+ import { defineCommand } from "citty";
46
+ var validateCommand = defineCommand({
47
+ meta: {
48
+ name: "validate",
49
+ description: "Validate a canvas JSON file (no execution). Brings the canvas up to date with its prompt.json first (prompt.json and, for a video, scenes/*.json edits are written into the canvas, exactly as `run` does), then checks it: a per-node cost preview, each node's deep validators (composition meta checks for hyperframe_render/_snapshot), and each generator prompt measured with its {{slots}} filled against the model's character cap (PROMPT_OVER_MODEL_LIMIT)."
50
+ },
51
+ args: { file: { type: "positional", required: true, description: "Path to canvas JSON" } },
52
+ async run({ args }) {
53
+ const filePath = path.resolve(String(args.file));
54
+ let prepared;
55
+ try {
56
+ prepared = await prepareCanvas(filePath, { gate: true, log: (line) => process.stderr.write(`${line}
57
+ `) });
58
+ } catch (e) {
59
+ exitOnPrepareError(e);
60
+ }
61
+ const result = await validateCanvasDeep(prepared.canvas, defaultRegistry());
62
+ if (!result.ok) {
63
+ process.stderr.write(`${JSON.stringify({ ok: false, error: { code: "validation", issues: result.issues } }, null, 2)}
64
+ `);
65
+ process.exit(2);
66
+ return;
67
+ }
68
+ process.stdout.write(
69
+ `${JSON.stringify(
70
+ {
71
+ ok: true,
72
+ total_nodes: result.canvas.nodes.length,
73
+ estimated_credits: result.estimatedCredits,
74
+ cost_preview: result.perNodeCredits ?? [],
75
+ style_projection: prepared.projections.style,
76
+ scene_projection: prepared.projections.scenes,
77
+ canvas_updated: prepared.written,
78
+ normalized_paths: prepared.rewrites,
79
+ warnings: [...result.warnings ?? [], ...await outputRatioWarningsFor(prepared.canvas, filePath)]
80
+ },
81
+ null,
82
+ 2
83
+ )}
84
+ `
85
+ );
86
+ }
87
+ });
88
+ export {
89
+ validateCommand
90
+ };
91
+ //# sourceMappingURL=validate-5AV4FJZ5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/canvas/validate.ts"],"sourcesContent":["import path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { defaultRegistry, validateCanvasDeep } from \"../../engine/index.ts\";\nimport { outputRatioWarningsFor } from \"./output-ratio.ts\";\nimport { exitOnPrepareError, type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\n\nexport const validateCommand = defineCommand({\n meta: {\n name: \"validate\",\n description:\n \"Validate a canvas JSON file (no execution). Brings the canvas up to date with its prompt.json first (prompt.json and, for a video, scenes/*.json edits are written into the canvas, exactly as `run` does), then checks it: a per-node cost preview, each node's deep validators (composition meta checks for hyperframe_render/_snapshot), and each generator prompt measured with its {{slots}} filled against the model's character cap (PROMPT_OVER_MODEL_LIMIT).\",\n },\n args: { file: { type: \"positional\", required: true, description: \"Path to canvas JSON\" } },\n async run({ args }) {\n const filePath = path.resolve(String(args.file));\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(filePath, { gate: true, log: (line) => process.stderr.write(`${line}\\n`) });\n } catch (e) {\n exitOnPrepareError(e);\n }\n\n const result = await validateCanvasDeep(prepared.canvas, defaultRegistry());\n if (!result.ok) {\n process.stderr.write(`${JSON.stringify({ ok: false, error: { code: \"validation\", issues: result.issues } }, null, 2)}\\n`);\n process.exit(2);\n return;\n }\n\n // Warnings are advisory: the canvas is valid and runnable, so exit 0. They flag\n // likely-wrong-but-legal config (a missing element reference, a scene span past the\n // assigned model's cap) the operator should review before billing.\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n total_nodes: result.canvas.nodes.length,\n estimated_credits: result.estimatedCredits,\n cost_preview: result.perNodeCredits ?? [],\n style_projection: prepared.projections.style,\n scene_projection: prepared.projections.scenes,\n canvas_updated: prepared.written,\n normalized_paths: prepared.rewrites,\n warnings: [...(result.warnings ?? []), ...(await outputRatioWarningsFor(prepared.canvas, filePath))],\n },\n null,\n 2,\n )}\\n`,\n );\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAKvB,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,UAAU,MAAM,aAAa,sBAAsB,EAAE;AAAA,EACzF,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,WAAW,KAAK,QAAQ,OAAO,KAAK,IAAI,CAAC;AAC/C,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,cAAc,UAAU,EAAE,MAAM,MAAM,KAAK,CAAC,SAAS,QAAQ,OAAO,MAAM,GAAG,IAAI;AAAA,CAAI,EAAE,CAAC;AAAA,IAC3G,SAAS,GAAG;AACV,yBAAmB,CAAC;AAAA,IACtB;AAEA,UAAM,SAAS,MAAM,mBAAmB,SAAS,QAAQ,gBAAgB,CAAC;AAC1E,QAAI,CAAC,OAAO,IAAI;AACd,cAAQ,OAAO,MAAM,GAAG,KAAK,UAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,cAAc,QAAQ,OAAO,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;AAAA,CAAI;AACxH,cAAQ,KAAK,CAAC;AACd;AAAA,IACF;AAKA,YAAQ,OAAO;AAAA,MACb,GAAG,KAAK;AAAA,QACN;AAAA,UACE,IAAI;AAAA,UACJ,aAAa,OAAO,OAAO,MAAM;AAAA,UACjC,mBAAmB,OAAO;AAAA,UAC1B,cAAc,OAAO,kBAAkB,CAAC;AAAA,UACxC,kBAAkB,SAAS,YAAY;AAAA,UACvC,kBAAkB,SAAS,YAAY;AAAA,UACvC,gBAAgB,SAAS;AAAA,UACzB,kBAAkB,SAAS;AAAA,UAC3B,UAAU,CAAC,GAAI,OAAO,YAAY,CAAC,GAAI,GAAI,MAAM,uBAAuB,SAAS,QAAQ,QAAQ,CAAE;AAAA,QACrG;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA;AAAA,IACH;AAAA,EACF;AACF,CAAC;","names":[]}