@koda-sl/baker-cli 0.513.0 → 0.515.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1231) hide show
  1. package/README.md +3 -3
  2. package/dist/account-BA3IO3AN.js +139 -0
  3. package/dist/account-LVJFHDA3.js +82 -0
  4. package/dist/account-LVJFHDA3.js.map +1 -0
  5. package/dist/account-PTJ6OK6Z.js +82 -0
  6. package/dist/account-PTJ6OK6Z.js.map +1 -0
  7. package/dist/account-assets-T3VVNBUG.js +290 -0
  8. package/dist/account-level-MPFWRPEK.js +611 -0
  9. package/dist/account-level-MPFWRPEK.js.map +1 -0
  10. package/dist/account-reads-5CXFLJ5Q.js +219 -0
  11. package/dist/account-users-B7DCJEFD.js +64 -0
  12. package/dist/account-users-B7DCJEFD.js.map +1 -0
  13. package/dist/account-writes-W5EOTS7P.js +68 -0
  14. package/dist/account-writes-W5EOTS7P.js.map +1 -0
  15. package/dist/accounts-4R3MBNJG.js +76 -0
  16. package/dist/accounts-5WF7VE7J.js +115 -0
  17. package/dist/accounts-IQTEH4BX.js +701 -0
  18. package/dist/accounts-IQTEH4BX.js.map +1 -0
  19. package/dist/accounts-SV7JZUCC.js +80 -0
  20. package/dist/accounts-SV7JZUCC.js.map +1 -0
  21. package/dist/accounts-VPWCLF6X.js +114 -0
  22. package/dist/actions-D7OWCP36.js +55 -0
  23. package/dist/active-entities-WDPW7652.js +103 -0
  24. package/dist/activecampaign-LBS4M4C4.js +938 -0
  25. package/dist/activecampaign-LBS4M4C4.js.map +1 -0
  26. package/dist/activities-WGPHYSFU.js +75 -0
  27. package/dist/ad-group-writes-JL56DPC4.js +172 -0
  28. package/dist/ad-group-writes-JL56DPC4.js.map +1 -0
  29. package/dist/ad-groups-62JPLIK3.js +70 -0
  30. package/dist/ad-groups-62JPLIK3.js.map +1 -0
  31. package/dist/ad-writes-WSKLRGB7.js +176 -0
  32. package/dist/ad-writes-WSKLRGB7.js.map +1 -0
  33. package/dist/add-HFQB2NTU.js +107 -0
  34. package/dist/add-HFQB2NTU.js.map +1 -0
  35. package/dist/add-IUYE5H6A.js +305 -0
  36. package/dist/add-IUYE5H6A.js.map +1 -0
  37. package/dist/ads-F7AUJWK7.js +115 -0
  38. package/dist/ads-JFI56MZL.js +79 -0
  39. package/dist/ads-JFI56MZL.js.map +1 -0
  40. package/dist/ads-OV3SMLKA.js +48 -0
  41. package/dist/adsets-XH2ULWPM.js +182 -0
  42. package/dist/advertisers-XXM6POO5.js +123 -0
  43. package/dist/advertisers-XXM6POO5.js.map +1 -0
  44. package/dist/analytics-MJT6DS3L.js +447 -0
  45. package/dist/analytics-MJT6DS3L.js.map +1 -0
  46. package/dist/analytics-W7EUOI2Q.js +2437 -0
  47. package/dist/analytics-W7EUOI2Q.js.map +1 -0
  48. package/dist/asset-writes-4X3AJQ4Q.js +50 -0
  49. package/dist/assign-2GQVQKKO.js +80 -0
  50. package/dist/assign-2GQVQKKO.js.map +1 -0
  51. package/dist/audience-size-VHXBNNIB.js +76 -0
  52. package/dist/audience-size-VHXBNNIB.js.map +1 -0
  53. package/dist/audience-writes-TXWPDJ2F.js +327 -0
  54. package/dist/audience-writes-TXWPDJ2F.js.map +1 -0
  55. package/dist/audiences-B2LFKWIS.js +280 -0
  56. package/dist/audiences-B2LFKWIS.js.map +1 -0
  57. package/dist/audiences-MBBXWEOI.js +86 -0
  58. package/dist/audiences-YUG5JLL4.js +85 -0
  59. package/dist/audit-VT2WSZWM.js +154 -0
  60. package/dist/audit-VT2WSZWM.js.map +1 -0
  61. package/dist/audit-WFXS5ELM.js +88 -0
  62. package/dist/autocomplete-ZYMHHV7E.js +114 -0
  63. package/dist/autocomplete-ZYMHHV7E.js.map +1 -0
  64. package/dist/avatars-WZ2JDMHH.js +38 -0
  65. package/dist/bid-pricing-5F3GBSAI.js +103 -0
  66. package/dist/bid-pricing-5F3GBSAI.js.map +1 -0
  67. package/dist/brand-IZTTBZII.js +22 -0
  68. package/dist/brief-OPQ7ICOY.js +543 -0
  69. package/dist/brief-OPQ7ICOY.js.map +1 -0
  70. package/dist/businesses-24JNY46Z.js +54 -0
  71. package/dist/campaign-groups-BDCDTMBF.js +99 -0
  72. package/dist/campaign-groups-BDCDTMBF.js.map +1 -0
  73. package/dist/campaign-writes-73H7G3JM.js +168 -0
  74. package/dist/campaign-writes-73H7G3JM.js.map +1 -0
  75. package/dist/campaign-writes-FNVOHONL.js +176 -0
  76. package/dist/campaign-writes-FNVOHONL.js.map +1 -0
  77. package/dist/campaigns-FUDZUVHN.js +78 -0
  78. package/dist/campaigns-FUDZUVHN.js.map +1 -0
  79. package/dist/campaigns-J65Q4WAZ.js +113 -0
  80. package/dist/campaigns-J65Q4WAZ.js.map +1 -0
  81. package/dist/campaigns-KXYGSH27.js +130 -0
  82. package/dist/campaigns-U5FQ2VWL.js +111 -0
  83. package/dist/canvas-IQ753Q2O.js +46 -0
  84. package/dist/capabilities-ZITW4RF7.js +147 -0
  85. package/dist/capabilities-ZITW4RF7.js.map +1 -0
  86. package/dist/cards-NSNAFTEB.js +85 -0
  87. package/dist/catalogs-OWQGGCIO.js +130 -0
  88. package/dist/catalogs-OWQGGCIO.js.map +1 -0
  89. package/dist/catalogs-VZYAATUR.js +781 -0
  90. package/dist/catalogs-VZYAATUR.js.map +1 -0
  91. package/dist/changes-RDWMNSTK.js +135 -0
  92. package/dist/chatgpt-27NEJVGF.js +47 -0
  93. package/dist/chats-AL2SYBJO.js +279 -0
  94. package/dist/chats-AL2SYBJO.js.map +1 -0
  95. package/dist/check-U2YLRD6H.js +107 -0
  96. package/dist/check-U2YLRD6H.js.map +1 -0
  97. package/dist/chunk-2F4DELSV.js +200 -0
  98. package/dist/chunk-2GYCWRF3.js +170 -0
  99. package/dist/chunk-2L7F7KR4.js +61 -0
  100. package/dist/chunk-44ZRCSR7.js +228 -0
  101. package/dist/chunk-46YLDIQG.js +4254 -0
  102. package/dist/chunk-4EDWXZ3I.js +363 -0
  103. package/dist/chunk-4FFBGR5L.js +66 -0
  104. package/dist/chunk-4UZUUSVL.js +592 -0
  105. package/dist/chunk-4XHCEYHI.js +831 -0
  106. package/dist/chunk-4Z6PVR3M.js +479 -0
  107. package/dist/chunk-5Y5FZV2W.js +122 -0
  108. package/dist/chunk-6DPSWLGY.js +324 -0
  109. package/dist/chunk-6DPSWLGY.js.map +1 -0
  110. package/dist/chunk-6HJXLGDV.js +392 -0
  111. package/dist/chunk-6S5CWGDA.js +429 -0
  112. package/dist/chunk-6VYROVWO.js +494 -0
  113. package/dist/chunk-AQRXXC6E.js +319 -0
  114. package/dist/chunk-ARBXT73X.js +387 -0
  115. package/dist/chunk-BEZHQIEI.js +97 -0
  116. package/dist/chunk-BFURWHVR.js +547 -0
  117. package/dist/chunk-EZSPVWLQ.js +169 -0
  118. package/dist/chunk-FCHZ5TNG.js +26 -0
  119. package/dist/chunk-FLWDFPXE.js +23 -0
  120. package/dist/chunk-FQMEX3GX.js +846 -0
  121. package/dist/chunk-G4FG5EQO.js +110 -0
  122. package/dist/chunk-G4FG5EQO.js.map +1 -0
  123. package/dist/chunk-GE3VT3CA.js +51 -0
  124. package/dist/chunk-GGK2CX6B.js +24026 -0
  125. package/dist/chunk-GGK2CX6B.js.map +1 -0
  126. package/dist/chunk-GHZ6HP2X.js +358 -0
  127. package/dist/chunk-GHZ6HP2X.js.map +1 -0
  128. package/dist/chunk-HCQJYI6X.js +74 -0
  129. package/dist/chunk-HGBJQGO5.js +142 -0
  130. package/dist/chunk-HHVWV5BJ.js +191 -0
  131. package/dist/chunk-I3WGTSDY.js +76 -0
  132. package/dist/chunk-I7AYMJZA.js +783 -0
  133. package/dist/chunk-IDSDJHRS.js +106 -0
  134. package/dist/chunk-ILPHIYAL.js +207 -0
  135. package/dist/chunk-IWKD56AY.js +156 -0
  136. package/dist/chunk-JLAQWMVF.js +3868 -0
  137. package/dist/chunk-JOE42ZW6.js +2984 -0
  138. package/dist/chunk-JOE42ZW6.js.map +1 -0
  139. package/dist/chunk-K6NULQN7.js +57 -0
  140. package/dist/chunk-L2BRAC2J.js +19 -0
  141. package/dist/chunk-LGMI4LSY.js +455 -0
  142. package/dist/chunk-LNODLR7W.js +149 -0
  143. package/dist/chunk-LQ2BRGMX.js +274 -0
  144. package/dist/chunk-M7QZSEHF.js +175 -0
  145. package/dist/chunk-NB2FU6EZ.js +179 -0
  146. package/dist/chunk-NFII3MTG.js +207 -0
  147. package/dist/chunk-NKQWDEB7.js +115 -0
  148. package/dist/chunk-NKQWDEB7.js.map +1 -0
  149. package/dist/chunk-OG47L5GG.js +275 -0
  150. package/dist/chunk-PC3FJEZH.js +7211 -0
  151. package/dist/chunk-PC3FJEZH.js.map +1 -0
  152. package/dist/chunk-Q3GSVLE5.js +4274 -0
  153. package/dist/chunk-Q3GSVLE5.js.map +1 -0
  154. package/dist/chunk-QIOFOD4K.js +344 -0
  155. package/dist/chunk-R2SYF5FC.js +249 -0
  156. package/dist/chunk-RTH2I55B.js +942 -0
  157. package/dist/chunk-S6VFDNSQ.js +63 -0
  158. package/dist/chunk-SG2TDQEE.js +150 -0
  159. package/dist/chunk-SOPVIIUW.js +68 -0
  160. package/dist/chunk-SOPVIIUW.js.map +1 -0
  161. package/dist/chunk-T3P6O2VU.js +89 -0
  162. package/dist/chunk-TU5LQUJM.js +74 -0
  163. package/dist/chunk-TU7DWSTW.js +69 -0
  164. package/dist/chunk-TXDE2QJ3.js +604 -0
  165. package/dist/chunk-TYXZ2SRW.js +287 -0
  166. package/dist/chunk-UDIEKCIR.js +203 -0
  167. package/dist/chunk-UQHHGT67.js +676 -0
  168. package/dist/chunk-USCADMM3.js +163 -0
  169. package/dist/chunk-UUGISMNE.js +910 -0
  170. package/dist/chunk-VDPOCAQ2.js +197 -0
  171. package/dist/chunk-VEJ3QX6M.js +103 -0
  172. package/dist/chunk-VFJB7OG6.js +91 -0
  173. package/dist/chunk-VPABGAN4.js +188 -0
  174. package/dist/chunk-VRIPVLE7.js +8954 -0
  175. package/dist/chunk-WLESMH4J.js +45 -0
  176. package/dist/chunk-XOQNM7I4.js +396 -0
  177. package/dist/chunk-XOQNM7I4.js.map +1 -0
  178. package/dist/chunk-YILZR3XI.js +224 -0
  179. package/dist/chunk-YJFLXOH4.js +191 -0
  180. package/dist/chunk-YWHZYR6S.js +297 -0
  181. package/dist/chunk-Z35KUMBW.js +219 -0
  182. package/dist/chunk-Z7I2ZFXS.js +1646 -0
  183. package/dist/claim-GOLUTAJ3.js +200 -0
  184. package/dist/claim-GOLUTAJ3.js.map +1 -0
  185. package/dist/cli.js +34 -34
  186. package/dist/companies-CSN7DPYW.js +198 -0
  187. package/dist/companies-CSN7DPYW.js.map +1 -0
  188. package/dist/company-MOSPLRZJ.js +308 -0
  189. package/dist/company-MOSPLRZJ.js.map +1 -0
  190. package/dist/complete-777BDV45.js +84 -0
  191. package/dist/complete-777BDV45.js.map +1 -0
  192. package/dist/config-55WGRLY3.js +88 -0
  193. package/dist/connect-3YY7MF3I.js +45 -0
  194. package/dist/conversation-6K2TNYBQ.js +96 -0
  195. package/dist/conversation-6K2TNYBQ.js.map +1 -0
  196. package/dist/conversion-report-WYYB3BK2.js +127 -0
  197. package/dist/conversion-report-WYYB3BK2.js.map +1 -0
  198. package/dist/conversion-upload-command-VM2P57K6.js +439 -0
  199. package/dist/conversion-writes-DHOPMA7X.js +122 -0
  200. package/dist/conversion-writes-DHOPMA7X.js.map +1 -0
  201. package/dist/conversions-KWY7BNDN.js +78 -0
  202. package/dist/conversions-KWY7BNDN.js.map +1 -0
  203. package/dist/conversions-MLRK35ZV.js +140 -0
  204. package/dist/conversions-MLRK35ZV.js.map +1 -0
  205. package/dist/copy-writes-E3V5TUVU.js +170 -0
  206. package/dist/copy-writes-E3V5TUVU.js.map +1 -0
  207. package/dist/create-3WOZO2XT.js +239 -0
  208. package/dist/create-3WOZO2XT.js.map +1 -0
  209. package/dist/create-7IFYLX7P.js +210 -0
  210. package/dist/create-7IFYLX7P.js.map +1 -0
  211. package/dist/create-FOHIQC3E.js +62 -0
  212. package/dist/create-FOHIQC3E.js.map +1 -0
  213. package/dist/create-UWQSQTK6.js +135 -0
  214. package/dist/create-UWQSQTK6.js.map +1 -0
  215. package/dist/creatives-2DR3QHJW.js +58 -0
  216. package/dist/creatives-DUR5Z5AN.js +89 -0
  217. package/dist/creatives-KN3MT533.js +223 -0
  218. package/dist/creatives-KN3MT533.js.map +1 -0
  219. package/dist/credentials-IP4L37XP.js +290 -0
  220. package/dist/credentials-IP4L37XP.js.map +1 -0
  221. package/dist/critique-LGDNMLBL.js +232 -0
  222. package/dist/critique-LGDNMLBL.js.map +1 -0
  223. package/dist/critique-LJMFAURK.js +1451 -0
  224. package/dist/critique-LJMFAURK.js.map +1 -0
  225. package/dist/crm-BNYW7PF7.js +323 -0
  226. package/dist/crm-BNYW7PF7.js.map +1 -0
  227. package/dist/crm-DMADHALO.js +227 -0
  228. package/dist/crm-DMADHALO.js.map +1 -0
  229. package/dist/currency-X4KEACEP.js +88 -0
  230. package/dist/custom-conversions-OIA5Y2GX.js +128 -0
  231. package/dist/customers-663K2OCP.js +59 -0
  232. package/dist/delete-5W3YVA4L.js +67 -0
  233. package/dist/delete-5W3YVA4L.js.map +1 -0
  234. package/dist/delete-6U7E6YUW.js +57 -0
  235. package/dist/delete-6U7E6YUW.js.map +1 -0
  236. package/dist/delete-G4NY6ZG6.js +69 -0
  237. package/dist/delete-G4NY6ZG6.js.map +1 -0
  238. package/dist/demographics-UZ7BCQ7K.js +141 -0
  239. package/dist/demographics-UZ7BCQ7K.js.map +1 -0
  240. package/dist/discard-RKCZNKMN.js +69 -0
  241. package/dist/discard-RKCZNKMN.js.map +1 -0
  242. package/dist/discover-2W42JB56.js +172 -0
  243. package/dist/domain-PLA2O4FW.js +101 -0
  244. package/dist/domain-PLA2O4FW.js.map +1 -0
  245. package/dist/download-4EFLVSA4.js +172 -0
  246. package/dist/download-4EFLVSA4.js.map +1 -0
  247. package/dist/draft-2ZX73IRO.js +238 -0
  248. package/dist/draft-6XMZYSMR.js +283 -0
  249. package/dist/draft-6XMZYSMR.js.map +1 -0
  250. package/dist/draft-CKLIIWXZ.js +308 -0
  251. package/dist/draft-IUEULQDT.js +310 -0
  252. package/dist/draft-IUEULQDT.js.map +1 -0
  253. package/dist/draft-JMNAGW7C.js +220 -0
  254. package/dist/draft-JMNAGW7C.js.map +1 -0
  255. package/dist/draft-L5Q6KEER.js +100 -0
  256. package/dist/draft-MJRMZGMP.js +103 -0
  257. package/dist/draft-WPMVLRME.js +335 -0
  258. package/dist/draft-WPMVLRME.js.map +1 -0
  259. package/dist/experiment-3VRHCQN5.js +1397 -0
  260. package/dist/experiments-S4TSXCK6.js +236 -0
  261. package/dist/experiments-S4TSXCK6.js.map +1 -0
  262. package/dist/facets-D3JG7OSO.js +117 -0
  263. package/dist/facets-D3JG7OSO.js.map +1 -0
  264. package/dist/feedback-IRSRPXV6.js +111 -0
  265. package/dist/feedback-IRSRPXV6.js.map +1 -0
  266. package/dist/feedback-record-DT3R4NA3.js +265 -0
  267. package/dist/feedback-record-DT3R4NA3.js.map +1 -0
  268. package/dist/fetch-YLQP5VQL.js +179 -0
  269. package/dist/fetch-YLQP5VQL.js.map +1 -0
  270. package/dist/fit-BEFCY2B4.js +65 -0
  271. package/dist/flows-FDMF3F3P.js +250 -0
  272. package/dist/flows-FDMF3F3P.js.map +1 -0
  273. package/dist/fonts-C6XN5667.js +39 -0
  274. package/dist/forecast-4YHMKO54.js +121 -0
  275. package/dist/forecast-4YHMKO54.js.map +1 -0
  276. package/dist/forecast-LYN6ZGQC.js +169 -0
  277. package/dist/funding-TCEPQXRQ.js +85 -0
  278. package/dist/funnel-CQIT3F23.js +397 -0
  279. package/dist/funnel-CQIT3F23.js.map +1 -0
  280. package/dist/ga4-JE3HS36B.js +55 -0
  281. package/dist/get-KBSKPTAV.js +59 -0
  282. package/dist/get-KBSKPTAV.js.map +1 -0
  283. package/dist/get-OSVQVMP6.js +82 -0
  284. package/dist/get-OSVQVMP6.js.map +1 -0
  285. package/dist/google-24FDG4C4.js +3267 -0
  286. package/dist/google-ads-XCJVAXWF.js +198 -0
  287. package/dist/google-ads-XCJVAXWF.js.map +1 -0
  288. package/dist/gsc-RMVOYIM3.js +30 -0
  289. package/dist/history-4TN2A6BL.js +136 -0
  290. package/dist/history-4TN2A6BL.js.map +1 -0
  291. package/dist/history-5IWW2X33.js +102 -0
  292. package/dist/history-5IWW2X33.js.map +1 -0
  293. package/dist/history-GIXIG276.js +69 -0
  294. package/dist/history-GIXIG276.js.map +1 -0
  295. package/dist/hubspot-5WB7TQBG.js +782 -0
  296. package/dist/hubspot-5WB7TQBG.js.map +1 -0
  297. package/dist/ideas-M66FU45H.js +45 -0
  298. package/dist/images-MM5OPUKV.js +92 -0
  299. package/dist/ingest-GU3WEBN3.js +110 -0
  300. package/dist/ingest-GU3WEBN3.js.map +1 -0
  301. package/dist/ingest-KMLYCFF4.js +26 -0
  302. package/dist/insights-HATH3IC6.js +439 -0
  303. package/dist/insights-HATH3IC6.js.map +1 -0
  304. package/dist/insights-VKPIVJMK.js +132 -0
  305. package/dist/insights-VKPIVJMK.js.map +1 -0
  306. package/dist/inspect-4JO2J3D6.js +192 -0
  307. package/dist/inspect-4JO2J3D6.js.map +1 -0
  308. package/dist/instant-experiences-A2SIQNB5.js +260 -0
  309. package/dist/instant-experiences-A2SIQNB5.js.map +1 -0
  310. package/dist/intent-YCQCUCV3.js +95 -0
  311. package/dist/job-SM2OQ2LO.js +202 -0
  312. package/dist/job-create-ECZHPVKH.js +109 -0
  313. package/dist/job-status-QSYDKIIV.js +74 -0
  314. package/dist/keyword-gap-PUSF7EKY.js +130 -0
  315. package/dist/keyword-metrics-JXBM22ZD.js +200 -0
  316. package/dist/keyword-metrics-JXBM22ZD.js.map +1 -0
  317. package/dist/keywords-for-site-OAYA7KP7.js +131 -0
  318. package/dist/keywords-for-site-OAYA7KP7.js.map +1 -0
  319. package/dist/landing-OZU5RRFV.js +28 -0
  320. package/dist/languages-Q5SKO4AM.js +40 -0
  321. package/dist/leads-QAYS7AJO.js +540 -0
  322. package/dist/leads-QAYS7AJO.js.map +1 -0
  323. package/dist/leads-VOSFVNUK.js +115 -0
  324. package/dist/leads-VOSFVNUK.js.map +1 -0
  325. package/dist/learn-NBBJRMVZ.js +207 -0
  326. package/dist/learn-NBBJRMVZ.js.map +1 -0
  327. package/dist/line-item-writes-VBBB3TRS.js +211 -0
  328. package/dist/line-item-writes-VBBB3TRS.js.map +1 -0
  329. package/dist/line-items-2V5FY33R.js +107 -0
  330. package/dist/link-WZSNUQQ2.js +67 -0
  331. package/dist/link-WZSNUQQ2.js.map +1 -0
  332. package/dist/linkedin-CDFCOHKI.js +1316 -0
  333. package/dist/linkedin-CDFCOHKI.js.map +1 -0
  334. package/dist/linkedin-person-MVRI7LLC.js +139 -0
  335. package/dist/linkedin-person-MVRI7LLC.js.map +1 -0
  336. package/dist/list-6S54IAUX.js +67 -0
  337. package/dist/list-6S54IAUX.js.map +1 -0
  338. package/dist/list-QRJ4E3SC.js +154 -0
  339. package/dist/list-QRJ4E3SC.js.map +1 -0
  340. package/dist/list-RZUDFLJN.js +306 -0
  341. package/dist/list-RZUDFLJN.js.map +1 -0
  342. package/dist/locations-RFTE42OS.js +69 -0
  343. package/dist/locations-RFTE42OS.js.map +1 -0
  344. package/dist/locations-VQYREHYI.js +40 -0
  345. package/dist/log-53SAPZZ3.js +95 -0
  346. package/dist/log-53SAPZZ3.js.map +1 -0
  347. package/dist/lookup-MELV3RUL.js +23 -0
  348. package/dist/make-ZF3YIMKW.js +1370 -0
  349. package/dist/make-ZF3YIMKW.js.map +1 -0
  350. package/dist/map-J37QFJSV.js +436 -0
  351. package/dist/map-J37QFJSV.js.map +1 -0
  352. package/dist/mcp-B7WSZQFD.js +729 -0
  353. package/dist/mcp-B7WSZQFD.js.map +1 -0
  354. package/dist/media-BPI2VE6A.js +89 -0
  355. package/dist/media-EEWZZU3P.js +18 -0
  356. package/dist/media-sources-EQI3U4TC.js +35 -0
  357. package/dist/members-GYVMSCKL.js +47 -0
  358. package/dist/members-GYVMSCKL.js.map +1 -0
  359. package/dist/meta-SMJUQP37.js +122 -0
  360. package/dist/metrics-EMAP7ESR.js +152 -0
  361. package/dist/normalize-MFN3WCH5.js +144 -0
  362. package/dist/normalize-MFN3WCH5.js.map +1 -0
  363. package/dist/options-DLHDHO7H.js +125 -0
  364. package/dist/options-DLHDHO7H.js.map +1 -0
  365. package/dist/organization-C2VOA2SD.js +949 -0
  366. package/dist/organization-C2VOA2SD.js.map +1 -0
  367. package/dist/output-4QBQEM4C.js +24 -0
  368. package/dist/page-photos-HRKPDQBM.js +118 -0
  369. package/dist/page-photos-HRKPDQBM.js.map +1 -0
  370. package/dist/pages-DTQWQUKP.js +67 -0
  371. package/dist/performance-NIF3CESZ.js +27 -0
  372. package/dist/performance-T6TBVHVU.js +5541 -0
  373. package/dist/performance-T6TBVHVU.js.map +1 -0
  374. package/dist/pixels-2BKADWE6.js +109 -0
  375. package/dist/pixels-F6BZNTDD.js +62 -0
  376. package/dist/pixels-F6BZNTDD.js.map +1 -0
  377. package/dist/plan-A6VC3ZO7.js +208 -0
  378. package/dist/plan-A6VC3ZO7.js.map +1 -0
  379. package/dist/preview-GGIGXPJW.js +218 -0
  380. package/dist/preview-GGIGXPJW.js.map +1 -0
  381. package/dist/promoted-tweet-writes-WU2SKKZF.js +183 -0
  382. package/dist/promoted-tweet-writes-WU2SKKZF.js.map +1 -0
  383. package/dist/promoted-tweets-653Q5AC6.js +119 -0
  384. package/dist/properties-VWKO3AAK.js +101 -0
  385. package/dist/publish-IOTMJCCY.js +344 -0
  386. package/dist/publish-IOTMJCCY.js.map +1 -0
  387. package/dist/query-CXIOL7WI.js +62 -0
  388. package/dist/query-OOP63DJF.js +236 -0
  389. package/dist/query-RBZFAIDK.js +247 -0
  390. package/dist/questionnaire-7SHYRTMJ.js +94 -0
  391. package/dist/questionnaire-7SHYRTMJ.js.map +1 -0
  392. package/dist/read-GOULD7YL.js +141 -0
  393. package/dist/reddit-JIHMAKAQ.js +29 -0
  394. package/dist/refresh-OQZ263CS.js +97 -0
  395. package/dist/refresh-OQZ263CS.js.map +1 -0
  396. package/dist/release-4CHFURO3.js +63 -0
  397. package/dist/release-4CHFURO3.js.map +1 -0
  398. package/dist/relevant-pages-FS7GBVXK.js +99 -0
  399. package/dist/remove-IJQPHPDI.js +53 -0
  400. package/dist/remove-IJQPHPDI.js.map +1 -0
  401. package/dist/reopen-YTLPVKUR.js +66 -0
  402. package/dist/reopen-YTLPVKUR.js.map +1 -0
  403. package/dist/rerun-C7NB7B35.js +95 -0
  404. package/dist/rerun-C7NB7B35.js.map +1 -0
  405. package/dist/research-PNBACCCP.js +72 -0
  406. package/dist/research-TLHNPK3O.js +265 -0
  407. package/dist/research-TLHNPK3O.js.map +1 -0
  408. package/dist/reset-JVLW7HA2.js +57 -0
  409. package/dist/reset-JVLW7HA2.js.map +1 -0
  410. package/dist/reset-Y6FXLAQE.js +57 -0
  411. package/dist/reset-Y6FXLAQE.js.map +1 -0
  412. package/dist/resolve-RCFAYPWR.js +124 -0
  413. package/dist/resolve-RCFAYPWR.js.map +1 -0
  414. package/dist/retry-3V3IGDRR.js +65 -0
  415. package/dist/retry-3V3IGDRR.js.map +1 -0
  416. package/dist/retry-AEKQLQMP.js +63 -0
  417. package/dist/retry-AEKQLQMP.js.map +1 -0
  418. package/dist/revenue-3R6JLYCQ.js +91 -0
  419. package/dist/revenue-3R6JLYCQ.js.map +1 -0
  420. package/dist/rule-writes-K4P3XBJW.js +525 -0
  421. package/dist/rule-writes-K4P3XBJW.js.map +1 -0
  422. package/dist/rules-34BQAWU3.js +99 -0
  423. package/dist/rules-34BQAWU3.js.map +1 -0
  424. package/dist/rules-HY7S2YTD.js +217 -0
  425. package/dist/rules-add-CM5XUYNS.js +465 -0
  426. package/dist/rules-add-CM5XUYNS.js.map +1 -0
  427. package/dist/run-MD64RDHZ.js +69 -0
  428. package/dist/run-MD64RDHZ.js.map +1 -0
  429. package/dist/run-QCNRR3CA.js +70 -0
  430. package/dist/scaffold-ad-NADPY3CB.js +1516 -0
  431. package/dist/scaffold-ad-NADPY3CB.js.map +1 -0
  432. package/dist/scaffold-static-ad-5YEYYVYH.js +1015 -0
  433. package/dist/scaffold-static-ad-5YEYYVYH.js.map +1 -0
  434. package/dist/scaffold-video-W7DF2CBJ.js +888 -0
  435. package/dist/scaffold-video-W7DF2CBJ.js.map +1 -0
  436. package/dist/schedule-CTRRF6TS.js +64 -0
  437. package/dist/schedule-CTRRF6TS.js.map +1 -0
  438. package/dist/scheduled-agents-OXYAVSIE.js +55 -0
  439. package/dist/schema-BEUYOGSW.js +135 -0
  440. package/dist/schema-BEUYOGSW.js.map +1 -0
  441. package/dist/search-GFJKWPKN.js +177 -0
  442. package/dist/search-GFJKWPKN.js.map +1 -0
  443. package/dist/select-S72CCL57.js +106 -0
  444. package/dist/select-S72CCL57.js.map +1 -0
  445. package/dist/sends-WBYTALR7.js +349 -0
  446. package/dist/sends-WBYTALR7.js.map +1 -0
  447. package/dist/set-prompt-YYFDRXRI.js +198 -0
  448. package/dist/set-prompt-YYFDRXRI.js.map +1 -0
  449. package/dist/setup-links-D4JJLESN.js +144 -0
  450. package/dist/setup-links-D4JJLESN.js.map +1 -0
  451. package/dist/shared-CGEJI2RB.js +32 -0
  452. package/dist/shopify-DQWEYPDX.js +3958 -0
  453. package/dist/shopify-DQWEYPDX.js.map +1 -0
  454. package/dist/site-BBZAUZA3.js +180 -0
  455. package/dist/site-BBZAUZA3.js.map +1 -0
  456. package/dist/sitemaps-5SP7PVQ6.js +87 -0
  457. package/dist/sites-YZDPHBST.js +101 -0
  458. package/dist/sources-7FIBHL6A.js +457 -0
  459. package/dist/sources-7FIBHL6A.js.map +1 -0
  460. package/dist/sources-FLUGHSVP.js +30 -0
  461. package/dist/stale-HP54JS5X.js +76 -0
  462. package/dist/stale-HP54JS5X.js.map +1 -0
  463. package/dist/stats-EGGNFTKI.js +34 -0
  464. package/dist/status-CLSWQFCQ.js +65 -0
  465. package/dist/status-CLSWQFCQ.js.map +1 -0
  466. package/dist/studies-6VUUOMZD.js +250 -0
  467. package/dist/study-writes-IR7RSSTK.js +470 -0
  468. package/dist/study-writes-IR7RSSTK.js.map +1 -0
  469. package/dist/sync-4YTVVEVC.js +57 -0
  470. package/dist/sync-4YTVVEVC.js.map +1 -0
  471. package/dist/sync-SCM6JGJP.js +279 -0
  472. package/dist/sync-definition-OGQ5XTQE.js +69 -0
  473. package/dist/tag-manager-REKD4WGU.js +43 -0
  474. package/dist/tags-CZTRQNXV.js +26 -0
  475. package/dist/tags-FDQXWTCQ.js +23 -0
  476. package/dist/tags-FDQXWTCQ.js.map +1 -0
  477. package/dist/tags-R67DKRZ6.js +23 -0
  478. package/dist/tags-R67DKRZ6.js.map +1 -0
  479. package/dist/tags-SA2LU6AW.js +227 -0
  480. package/dist/tags-SA2LU6AW.js.map +1 -0
  481. package/dist/tags-ZOXX6VRE.js +23 -0
  482. package/dist/tags-ZOXX6VRE.js.map +1 -0
  483. package/dist/targeting-BQUD54MF.js +762 -0
  484. package/dist/targeting-BQUD54MF.js.map +1 -0
  485. package/dist/targeting-constants-MRQB4N5I.js +118 -0
  486. package/dist/targeting-criteria-HSAESZIR.js +113 -0
  487. package/dist/targets-UUVCEG3F.js +106 -0
  488. package/dist/targets-UUVCEG3F.js.map +1 -0
  489. package/dist/terms-D2KAFHKJ.js +102 -0
  490. package/dist/testimonials-G3OCNPBY.js +32 -0
  491. package/dist/themes-X56KIX3Z.js +95 -0
  492. package/dist/top-companies-2RLNCSVS.js +111 -0
  493. package/dist/top-companies-2RLNCSVS.js.map +1 -0
  494. package/dist/transcript-U46AEOEI.js +165 -0
  495. package/dist/transcript-U46AEOEI.js.map +1 -0
  496. package/dist/translate-AS7JVKYM.js +609 -0
  497. package/dist/translate-AS7JVKYM.js.map +1 -0
  498. package/dist/triggers-ECRBPYYF.js +144 -0
  499. package/dist/triggers-ECRBPYYF.js.map +1 -0
  500. package/dist/tweets-JN6ARKF6.js +123 -0
  501. package/dist/unlink-VDNCSRJV.js +70 -0
  502. package/dist/unlink-VDNCSRJV.js.map +1 -0
  503. package/dist/unstage-5C27F2LZ.js +96 -0
  504. package/dist/unstage-5C27F2LZ.js.map +1 -0
  505. package/dist/unstage-ATDXUYP2.js +88 -0
  506. package/dist/unstage-ATDXUYP2.js.map +1 -0
  507. package/dist/update-FJ6TBV3E.js +101 -0
  508. package/dist/update-FJ6TBV3E.js.map +1 -0
  509. package/dist/update-HDBJCSTI.js +66 -0
  510. package/dist/update-HDBJCSTI.js.map +1 -0
  511. package/dist/update-U43DJRGV.js +155 -0
  512. package/dist/update-U43DJRGV.js.map +1 -0
  513. package/dist/update-Z7TIUBMJ.js +192 -0
  514. package/dist/update-Z7TIUBMJ.js.map +1 -0
  515. package/dist/upload-LXCFSRIU.js +129 -0
  516. package/dist/upload-LXCFSRIU.js.map +1 -0
  517. package/dist/url-options-C543MY7L.js +131 -0
  518. package/dist/url-options-C543MY7L.js.map +1 -0
  519. package/dist/url-params-TEFCXQ5N.js +101 -0
  520. package/dist/url-params-TEFCXQ5N.js.map +1 -0
  521. package/dist/validate-VR3HEOMJ.js +122 -0
  522. package/dist/validate-VR3HEOMJ.js.map +1 -0
  523. package/dist/videos-36AXDUGZ.js +41 -0
  524. package/dist/viewer-check-6HL4OUQY.js +83 -0
  525. package/dist/web-7BRJRQX7.js +143 -0
  526. package/dist/web-7BRJRQX7.js.map +1 -0
  527. package/dist/winning-ads-GMM5W2O4.js +86 -0
  528. package/dist/write-commands-B25W4FP5.js +713 -0
  529. package/dist/write-commands-DO2YUOMG.js +1502 -0
  530. package/dist/write-commands-DO2YUOMG.js.map +1 -0
  531. package/dist/write-commands-GNNEUVDW.js +206 -0
  532. package/dist/write-commands-NXJQQ62W.js +1172 -0
  533. package/dist/write-commands-NXJQQ62W.js.map +1 -0
  534. package/dist/x-JNR5SO6F.js +47 -0
  535. package/package.json +1 -1
  536. package/dist/account-UUAEQWO3.js +0 -80
  537. package/dist/account-UUAEQWO3.js.map +0 -1
  538. package/dist/account-WLQBAQMD.js +0 -80
  539. package/dist/account-WLQBAQMD.js.map +0 -1
  540. package/dist/account-ZY655BIU.js +0 -139
  541. package/dist/account-assets-O7IA37RE.js +0 -290
  542. package/dist/account-level-EU7BWCO7.js +0 -609
  543. package/dist/account-level-EU7BWCO7.js.map +0 -1
  544. package/dist/account-reads-SNOWDHHF.js +0 -219
  545. package/dist/account-users-NV37Z2XJ.js +0 -62
  546. package/dist/account-users-NV37Z2XJ.js.map +0 -1
  547. package/dist/account-writes-TU3WJRSI.js +0 -66
  548. package/dist/account-writes-TU3WJRSI.js.map +0 -1
  549. package/dist/accounts-FT2SRKMD.js +0 -76
  550. package/dist/accounts-K5XLEO6W.js +0 -114
  551. package/dist/accounts-MZ6SETJJ.js +0 -78
  552. package/dist/accounts-MZ6SETJJ.js.map +0 -1
  553. package/dist/accounts-SNB65ZEW.js +0 -115
  554. package/dist/accounts-U7ZBEAY6.js +0 -699
  555. package/dist/accounts-U7ZBEAY6.js.map +0 -1
  556. package/dist/actions-4JYHXRFH.js +0 -55
  557. package/dist/active-entities-3BAPHE4P.js +0 -103
  558. package/dist/activecampaign-IDBV26HH.js +0 -936
  559. package/dist/activecampaign-IDBV26HH.js.map +0 -1
  560. package/dist/activities-LKLPORDI.js +0 -75
  561. package/dist/ad-group-writes-HLBWN4E4.js +0 -170
  562. package/dist/ad-group-writes-HLBWN4E4.js.map +0 -1
  563. package/dist/ad-groups-33NZD6J3.js +0 -68
  564. package/dist/ad-groups-33NZD6J3.js.map +0 -1
  565. package/dist/ad-writes-7ZDNDZ2E.js +0 -174
  566. package/dist/ad-writes-7ZDNDZ2E.js.map +0 -1
  567. package/dist/add-AF42LQQQ.js +0 -105
  568. package/dist/add-AF42LQQQ.js.map +0 -1
  569. package/dist/add-LJRZYJ7I.js +0 -303
  570. package/dist/add-LJRZYJ7I.js.map +0 -1
  571. package/dist/ads-KBE5JXCH.js +0 -115
  572. package/dist/ads-LXWXOQHX.js +0 -48
  573. package/dist/ads-X3AM6M7L.js +0 -77
  574. package/dist/ads-X3AM6M7L.js.map +0 -1
  575. package/dist/adsets-YWBJFPAZ.js +0 -182
  576. package/dist/advertisers-6FOCN2W3.js +0 -121
  577. package/dist/advertisers-6FOCN2W3.js.map +0 -1
  578. package/dist/analytics-64HBRJJE.js +0 -2435
  579. package/dist/analytics-64HBRJJE.js.map +0 -1
  580. package/dist/analytics-VY5NL2GL.js +0 -445
  581. package/dist/analytics-VY5NL2GL.js.map +0 -1
  582. package/dist/asset-writes-72DEVXGO.js +0 -48
  583. package/dist/assign-N2I2BM67.js +0 -78
  584. package/dist/assign-N2I2BM67.js.map +0 -1
  585. package/dist/audience-size-H5DEZXJN.js +0 -74
  586. package/dist/audience-size-H5DEZXJN.js.map +0 -1
  587. package/dist/audience-writes-KCHLNFSI.js +0 -325
  588. package/dist/audience-writes-KCHLNFSI.js.map +0 -1
  589. package/dist/audiences-34IQKOGS.js +0 -85
  590. package/dist/audiences-QAH42HIM.js +0 -86
  591. package/dist/audiences-WCDWN64L.js +0 -268
  592. package/dist/audiences-WCDWN64L.js.map +0 -1
  593. package/dist/audit-2AAF6AOX.js +0 -152
  594. package/dist/audit-2AAF6AOX.js.map +0 -1
  595. package/dist/audit-7ED6CUTQ.js +0 -88
  596. package/dist/autocomplete-3GSKRNCZ.js +0 -112
  597. package/dist/autocomplete-3GSKRNCZ.js.map +0 -1
  598. package/dist/avatars-N6W6HUPP.js +0 -38
  599. package/dist/bid-pricing-IMITXHXN.js +0 -101
  600. package/dist/bid-pricing-IMITXHXN.js.map +0 -1
  601. package/dist/brand-ITWQVZD2.js +0 -22
  602. package/dist/brief-JJNEYPYB.js +0 -541
  603. package/dist/brief-JJNEYPYB.js.map +0 -1
  604. package/dist/businesses-MGP2YCEU.js +0 -54
  605. package/dist/campaign-groups-TTQLP32Q.js +0 -97
  606. package/dist/campaign-groups-TTQLP32Q.js.map +0 -1
  607. package/dist/campaign-writes-MAKPHQ3V.js +0 -166
  608. package/dist/campaign-writes-MAKPHQ3V.js.map +0 -1
  609. package/dist/campaign-writes-XO74BALZ.js +0 -174
  610. package/dist/campaign-writes-XO74BALZ.js.map +0 -1
  611. package/dist/campaigns-5BIDXYSR.js +0 -111
  612. package/dist/campaigns-LS65QM6W.js +0 -76
  613. package/dist/campaigns-LS65QM6W.js.map +0 -1
  614. package/dist/campaigns-XZOQ2VTK.js +0 -130
  615. package/dist/campaigns-XZPXCS7I.js +0 -111
  616. package/dist/campaigns-XZPXCS7I.js.map +0 -1
  617. package/dist/canvas-SL3RMOY5.js +0 -46
  618. package/dist/capabilities-LSR5GCE6.js +0 -145
  619. package/dist/capabilities-LSR5GCE6.js.map +0 -1
  620. package/dist/cards-A7GQVC7B.js +0 -85
  621. package/dist/catalogs-JLCSFZYC.js +0 -779
  622. package/dist/catalogs-JLCSFZYC.js.map +0 -1
  623. package/dist/catalogs-T23RKYFC.js +0 -128
  624. package/dist/catalogs-T23RKYFC.js.map +0 -1
  625. package/dist/changes-36C754R4.js +0 -135
  626. package/dist/chatgpt-3WFOPURY.js +0 -47
  627. package/dist/chats-GGYTXNJS.js +0 -277
  628. package/dist/chats-GGYTXNJS.js.map +0 -1
  629. package/dist/check-P7UPBBG7.js +0 -105
  630. package/dist/check-P7UPBBG7.js.map +0 -1
  631. package/dist/chunk-2TOIY2WN.js +0 -4254
  632. package/dist/chunk-3GAR4AZK.js +0 -149
  633. package/dist/chunk-4D46PS6J.js +0 -344
  634. package/dist/chunk-4GAEB6NK.js +0 -228
  635. package/dist/chunk-5XTGG4PV.js +0 -274
  636. package/dist/chunk-6JCX3YLM.js +0 -249
  637. package/dist/chunk-7J3NZBPV.js +0 -2982
  638. package/dist/chunk-7J3NZBPV.js.map +0 -1
  639. package/dist/chunk-7NF73SCB.js +0 -106
  640. package/dist/chunk-ALMYGH5U.js +0 -479
  641. package/dist/chunk-AQKRSEBQ.js +0 -103
  642. package/dist/chunk-B2POVFR2.js +0 -175
  643. package/dist/chunk-BL6RTOK3.js +0 -297
  644. package/dist/chunk-C6CBBZBO.js +0 -203
  645. package/dist/chunk-CCEDZTP7.js +0 -391
  646. package/dist/chunk-CCEDZTP7.js.map +0 -1
  647. package/dist/chunk-CKQTJ2LV.js +0 -89
  648. package/dist/chunk-D3KLDIPQ.js +0 -45
  649. package/dist/chunk-DL2UJNJ7.js +0 -8954
  650. package/dist/chunk-DM3Q6F5F.js +0 -26
  651. package/dist/chunk-DQ54POZN.js +0 -363
  652. package/dist/chunk-EDLZGTGN.js +0 -216
  653. package/dist/chunk-EDLZGTGN.js.map +0 -1
  654. package/dist/chunk-EXSHBYNQ.js +0 -349
  655. package/dist/chunk-EXSHBYNQ.js.map +0 -1
  656. package/dist/chunk-FFFJBNHA.js +0 -63
  657. package/dist/chunk-FKQK22IX.js +0 -51
  658. package/dist/chunk-FLK6QHOY.js +0 -142
  659. package/dist/chunk-GACSA5A6.js +0 -1646
  660. package/dist/chunk-GU5MXV2Y.js +0 -191
  661. package/dist/chunk-HGUYC5K6.js +0 -76
  662. package/dist/chunk-HJKYTNAZ.js +0 -61
  663. package/dist/chunk-HMIROUFV.js +0 -74
  664. package/dist/chunk-INUU3752.js +0 -392
  665. package/dist/chunk-IQHO2ABF.js +0 -197
  666. package/dist/chunk-J3UWMBOP.js +0 -547
  667. package/dist/chunk-JDR3HUEL.js +0 -191
  668. package/dist/chunk-JI77AKT6.js +0 -19
  669. package/dist/chunk-JNURZHZJ.js +0 -942
  670. package/dist/chunk-JSNMKTFM.js +0 -592
  671. package/dist/chunk-K4FLWDEX.js +0 -122
  672. package/dist/chunk-KBRJSPIM.js +0 -676
  673. package/dist/chunk-KUY26RCF.js +0 -200
  674. package/dist/chunk-LAC6YHHX.js +0 -97
  675. package/dist/chunk-M7HD42M6.js +0 -24017
  676. package/dist/chunk-M7HD42M6.js.map +0 -1
  677. package/dist/chunk-MGYC2IRC.js +0 -783
  678. package/dist/chunk-MI4HXE7M.js +0 -23
  679. package/dist/chunk-MJ7RNDD4.js +0 -910
  680. package/dist/chunk-OBJCNGZL.js +0 -207
  681. package/dist/chunk-OJGYYH6K.js +0 -179
  682. package/dist/chunk-OLBLXJNI.js +0 -224
  683. package/dist/chunk-PFTYKINE.js +0 -207
  684. package/dist/chunk-PLBITHV6.js +0 -846
  685. package/dist/chunk-Q6JMMBSQ.js +0 -831
  686. package/dist/chunk-RAQHUMKS.js +0 -169
  687. package/dist/chunk-RCJKABOS.js +0 -74
  688. package/dist/chunk-SA22KXWT.js +0 -163
  689. package/dist/chunk-SIXU5PDF.js +0 -66
  690. package/dist/chunk-SXMK5AEJ.js +0 -494
  691. package/dist/chunk-TLQOMWLQ.js +0 -69
  692. package/dist/chunk-TTLD66NI.js +0 -319
  693. package/dist/chunk-TVAIOC77.js +0 -287
  694. package/dist/chunk-TVTSA4EN.js +0 -188
  695. package/dist/chunk-V5NHJU3M.js +0 -604
  696. package/dist/chunk-VIPKDXGU.js +0 -4229
  697. package/dist/chunk-VIPKDXGU.js.map +0 -1
  698. package/dist/chunk-W4D7C74B.js +0 -387
  699. package/dist/chunk-WF25CCLD.js +0 -170
  700. package/dist/chunk-WQPUX3BA.js +0 -275
  701. package/dist/chunk-WR3FR3K3.js +0 -156
  702. package/dist/chunk-XDNJC62G.js +0 -91
  703. package/dist/chunk-XE6N4SZI.js +0 -429
  704. package/dist/chunk-XGPU2VDU.js +0 -219
  705. package/dist/chunk-XUJZO7MZ.js +0 -57
  706. package/dist/chunk-Y67LUJBE.js +0 -455
  707. package/dist/chunk-Y7XSDJEA.js +0 -3868
  708. package/dist/chunk-ZNNQK366.js +0 -7198
  709. package/dist/chunk-ZNNQK366.js.map +0 -1
  710. package/dist/chunk-ZNRGH4NS.js +0 -150
  711. package/dist/chunk-ZRP7Y2DM.js +0 -320
  712. package/dist/chunk-ZRP7Y2DM.js.map +0 -1
  713. package/dist/claim-4KUETSW3.js +0 -198
  714. package/dist/claim-4KUETSW3.js.map +0 -1
  715. package/dist/companies-XFO6WPVT.js +0 -196
  716. package/dist/companies-XFO6WPVT.js.map +0 -1
  717. package/dist/company-OJGISG7K.js +0 -306
  718. package/dist/company-OJGISG7K.js.map +0 -1
  719. package/dist/complete-CXOST5J3.js +0 -82
  720. package/dist/complete-CXOST5J3.js.map +0 -1
  721. package/dist/config-SMVIY6RW.js +0 -88
  722. package/dist/connect-HPQ32KGV.js +0 -43
  723. package/dist/conversation-D5HKCTDA.js +0 -94
  724. package/dist/conversation-D5HKCTDA.js.map +0 -1
  725. package/dist/conversion-report-DKXFHLLX.js +0 -125
  726. package/dist/conversion-report-DKXFHLLX.js.map +0 -1
  727. package/dist/conversion-upload-command-KTYAY7IG.js +0 -439
  728. package/dist/conversion-writes-7ODJDAUP.js +0 -120
  729. package/dist/conversion-writes-7ODJDAUP.js.map +0 -1
  730. package/dist/conversions-BKVGNNC6.js +0 -76
  731. package/dist/conversions-BKVGNNC6.js.map +0 -1
  732. package/dist/conversions-SYNDEB6D.js +0 -138
  733. package/dist/conversions-SYNDEB6D.js.map +0 -1
  734. package/dist/copy-writes-P4WK6OPM.js +0 -168
  735. package/dist/copy-writes-P4WK6OPM.js.map +0 -1
  736. package/dist/create-7D4VD4TC.js +0 -208
  737. package/dist/create-7D4VD4TC.js.map +0 -1
  738. package/dist/create-7QDEAWZS.js +0 -133
  739. package/dist/create-7QDEAWZS.js.map +0 -1
  740. package/dist/create-IQSYEC4M.js +0 -60
  741. package/dist/create-IQSYEC4M.js.map +0 -1
  742. package/dist/create-TQSCM7MG.js +0 -237
  743. package/dist/create-TQSCM7MG.js.map +0 -1
  744. package/dist/creatives-JPKA2RHU.js +0 -89
  745. package/dist/creatives-RNOL4F4E.js +0 -58
  746. package/dist/creatives-RXI27T2D.js +0 -221
  747. package/dist/creatives-RXI27T2D.js.map +0 -1
  748. package/dist/credentials-PYW55B52.js +0 -288
  749. package/dist/credentials-PYW55B52.js.map +0 -1
  750. package/dist/critique-2SYHNAW5.js +0 -1449
  751. package/dist/critique-2SYHNAW5.js.map +0 -1
  752. package/dist/critique-72GFZSHA.js +0 -230
  753. package/dist/critique-72GFZSHA.js.map +0 -1
  754. package/dist/crm-EATDSXXB.js +0 -225
  755. package/dist/crm-EATDSXXB.js.map +0 -1
  756. package/dist/crm-XXP3VBYD.js +0 -321
  757. package/dist/crm-XXP3VBYD.js.map +0 -1
  758. package/dist/currency-R4ORE2U3.js +0 -88
  759. package/dist/custom-conversions-5HJBB5XL.js +0 -128
  760. package/dist/customers-OFZTEXST.js +0 -57
  761. package/dist/delete-FGVZIK4R.js +0 -55
  762. package/dist/delete-FGVZIK4R.js.map +0 -1
  763. package/dist/delete-HBZZL4UA.js +0 -67
  764. package/dist/delete-HBZZL4UA.js.map +0 -1
  765. package/dist/delete-JOUXMRIX.js +0 -65
  766. package/dist/delete-JOUXMRIX.js.map +0 -1
  767. package/dist/demographics-SB7NBYOI.js +0 -139
  768. package/dist/demographics-SB7NBYOI.js.map +0 -1
  769. package/dist/discard-YYGIRDII.js +0 -67
  770. package/dist/discard-YYGIRDII.js.map +0 -1
  771. package/dist/discover-GSJRZUOC.js +0 -172
  772. package/dist/domain-3KRAJAUH.js +0 -99
  773. package/dist/domain-3KRAJAUH.js.map +0 -1
  774. package/dist/download-QCBKJ6OR.js +0 -170
  775. package/dist/download-QCBKJ6OR.js.map +0 -1
  776. package/dist/draft-7CGFFZTH.js +0 -333
  777. package/dist/draft-7CGFFZTH.js.map +0 -1
  778. package/dist/draft-BI4NW6AU.js +0 -308
  779. package/dist/draft-BI4NW6AU.js.map +0 -1
  780. package/dist/draft-DJIYEMZU.js +0 -103
  781. package/dist/draft-LPVK6YHI.js +0 -281
  782. package/dist/draft-LPVK6YHI.js.map +0 -1
  783. package/dist/draft-QF5JEUTH.js +0 -218
  784. package/dist/draft-QF5JEUTH.js.map +0 -1
  785. package/dist/draft-RIR2V6A2.js +0 -238
  786. package/dist/draft-WYDMLNYA.js +0 -308
  787. package/dist/draft-ZCL7FVBH.js +0 -100
  788. package/dist/experiment-I5CRLOVN.js +0 -1397
  789. package/dist/experiments-ZCEYRP3H.js +0 -234
  790. package/dist/experiments-ZCEYRP3H.js.map +0 -1
  791. package/dist/facets-G7ZDPI5Q.js +0 -115
  792. package/dist/facets-G7ZDPI5Q.js.map +0 -1
  793. package/dist/feedback-3U3CL2VB.js +0 -109
  794. package/dist/feedback-3U3CL2VB.js.map +0 -1
  795. package/dist/feedback-record-4ZHPENIP.js +0 -263
  796. package/dist/feedback-record-4ZHPENIP.js.map +0 -1
  797. package/dist/fetch-PNVNNWTP.js +0 -177
  798. package/dist/fetch-PNVNNWTP.js.map +0 -1
  799. package/dist/fit-53DGYRFD.js +0 -63
  800. package/dist/flows-JXLQBP5Q.js +0 -248
  801. package/dist/flows-JXLQBP5Q.js.map +0 -1
  802. package/dist/fonts-LFMBUT4R.js +0 -37
  803. package/dist/forecast-4AG5F7YC.js +0 -169
  804. package/dist/forecast-VZAXI74O.js +0 -119
  805. package/dist/forecast-VZAXI74O.js.map +0 -1
  806. package/dist/funding-5W4LX6DU.js +0 -85
  807. package/dist/funnel-EACC35UD.js +0 -395
  808. package/dist/funnel-EACC35UD.js.map +0 -1
  809. package/dist/ga4-BWVCDVIR.js +0 -55
  810. package/dist/get-AXBVYGAC.js +0 -57
  811. package/dist/get-AXBVYGAC.js.map +0 -1
  812. package/dist/get-D6A27Q4E.js +0 -80
  813. package/dist/get-D6A27Q4E.js.map +0 -1
  814. package/dist/google-NAA4BASO.js +0 -3267
  815. package/dist/google-ads-OIYUNDXQ.js +0 -196
  816. package/dist/google-ads-OIYUNDXQ.js.map +0 -1
  817. package/dist/gsc-2MPE4N32.js +0 -30
  818. package/dist/history-5MRLNTCI.js +0 -67
  819. package/dist/history-5MRLNTCI.js.map +0 -1
  820. package/dist/history-IDYNIB6R.js +0 -134
  821. package/dist/history-IDYNIB6R.js.map +0 -1
  822. package/dist/history-IOUKN3WD.js +0 -100
  823. package/dist/history-IOUKN3WD.js.map +0 -1
  824. package/dist/hubspot-HL6WGC4G.js +0 -780
  825. package/dist/hubspot-HL6WGC4G.js.map +0 -1
  826. package/dist/ideas-NK3KQHAK.js +0 -43
  827. package/dist/images-2XS3JT7E.js +0 -92
  828. package/dist/ingest-DHXWZZX4.js +0 -24
  829. package/dist/ingest-FGTJRCWK.js +0 -108
  830. package/dist/ingest-FGTJRCWK.js.map +0 -1
  831. package/dist/insights-M3CYB22P.js +0 -437
  832. package/dist/insights-M3CYB22P.js.map +0 -1
  833. package/dist/insights-XCT3ONC7.js +0 -130
  834. package/dist/insights-XCT3ONC7.js.map +0 -1
  835. package/dist/inspect-53GGYRC4.js +0 -190
  836. package/dist/inspect-53GGYRC4.js.map +0 -1
  837. package/dist/instant-experiences-HT3HB4QZ.js +0 -258
  838. package/dist/instant-experiences-HT3HB4QZ.js.map +0 -1
  839. package/dist/intent-NSHW7EJT.js +0 -95
  840. package/dist/job-DRFCQ27M.js +0 -202
  841. package/dist/job-create-2EC25Y3J.js +0 -109
  842. package/dist/job-status-UNVZRPIA.js +0 -74
  843. package/dist/keyword-gap-ITTWKBWZ.js +0 -130
  844. package/dist/keyword-metrics-LWPE3HHW.js +0 -198
  845. package/dist/keyword-metrics-LWPE3HHW.js.map +0 -1
  846. package/dist/keywords-for-site-5K25VJ35.js +0 -129
  847. package/dist/keywords-for-site-5K25VJ35.js.map +0 -1
  848. package/dist/landing-QONUUP3C.js +0 -28
  849. package/dist/languages-MEFQQBJ2.js +0 -40
  850. package/dist/leads-FSSISJGL.js +0 -113
  851. package/dist/leads-FSSISJGL.js.map +0 -1
  852. package/dist/leads-SZOGCQFK.js +0 -538
  853. package/dist/leads-SZOGCQFK.js.map +0 -1
  854. package/dist/learn-FWWJWBDN.js +0 -205
  855. package/dist/learn-FWWJWBDN.js.map +0 -1
  856. package/dist/line-item-writes-A3UQ44NG.js +0 -209
  857. package/dist/line-item-writes-A3UQ44NG.js.map +0 -1
  858. package/dist/line-items-OH426JGT.js +0 -107
  859. package/dist/link-67E4NVEX.js +0 -65
  860. package/dist/link-67E4NVEX.js.map +0 -1
  861. package/dist/linkedin-CT2OSQ2I.js +0 -1314
  862. package/dist/linkedin-CT2OSQ2I.js.map +0 -1
  863. package/dist/linkedin-person-OSNLPLJJ.js +0 -137
  864. package/dist/linkedin-person-OSNLPLJJ.js.map +0 -1
  865. package/dist/list-J4OUXAKN.js +0 -65
  866. package/dist/list-J4OUXAKN.js.map +0 -1
  867. package/dist/list-L2OQK4W3.js +0 -304
  868. package/dist/list-L2OQK4W3.js.map +0 -1
  869. package/dist/list-LHMDAA2D.js +0 -152
  870. package/dist/list-LHMDAA2D.js.map +0 -1
  871. package/dist/locations-RLWAS6AC.js +0 -40
  872. package/dist/locations-UKBOT6SB.js +0 -67
  873. package/dist/locations-UKBOT6SB.js.map +0 -1
  874. package/dist/log-4EIV54V4.js +0 -93
  875. package/dist/log-4EIV54V4.js.map +0 -1
  876. package/dist/lookup-ZJIP2M4X.js +0 -22
  877. package/dist/make-MFU3CSN7.js +0 -1368
  878. package/dist/make-MFU3CSN7.js.map +0 -1
  879. package/dist/map-VWWWMQLK.js +0 -434
  880. package/dist/map-VWWWMQLK.js.map +0 -1
  881. package/dist/mcp-EKLO2VD7.js +0 -715
  882. package/dist/mcp-EKLO2VD7.js.map +0 -1
  883. package/dist/media-XCTZJIW4.js +0 -89
  884. package/dist/media-ZWN7E777.js +0 -18
  885. package/dist/media-sources-7L622UTF.js +0 -35
  886. package/dist/members-QK5M5NCJ.js +0 -45
  887. package/dist/members-QK5M5NCJ.js.map +0 -1
  888. package/dist/meta-EHKXH257.js +0 -122
  889. package/dist/metrics-K6FDCMK7.js +0 -152
  890. package/dist/normalize-WI4OGKH5.js +0 -142
  891. package/dist/normalize-WI4OGKH5.js.map +0 -1
  892. package/dist/options-FKJ2QXI6.js +0 -123
  893. package/dist/options-FKJ2QXI6.js.map +0 -1
  894. package/dist/organization-7A7MPUDG.js +0 -947
  895. package/dist/organization-7A7MPUDG.js.map +0 -1
  896. package/dist/output-WTEPRUPE.js +0 -24
  897. package/dist/page-photos-HWKQOSCU.js +0 -116
  898. package/dist/page-photos-HWKQOSCU.js.map +0 -1
  899. package/dist/pages-J6AF5NDU.js +0 -67
  900. package/dist/performance-K4VB6L6Z.js +0 -25
  901. package/dist/performance-LHAL53YO.js +0 -5539
  902. package/dist/performance-LHAL53YO.js.map +0 -1
  903. package/dist/pixels-Z7ZGXAGB.js +0 -60
  904. package/dist/pixels-Z7ZGXAGB.js.map +0 -1
  905. package/dist/pixels-ZZTB6NWF.js +0 -109
  906. package/dist/plan-TVQSEKYL.js +0 -207
  907. package/dist/plan-TVQSEKYL.js.map +0 -1
  908. package/dist/preview-CWRGDFCP.js +0 -216
  909. package/dist/preview-CWRGDFCP.js.map +0 -1
  910. package/dist/promoted-tweet-writes-V4ZVJOJU.js +0 -181
  911. package/dist/promoted-tweet-writes-V4ZVJOJU.js.map +0 -1
  912. package/dist/promoted-tweets-KPG4IUVD.js +0 -119
  913. package/dist/properties-RBLJCVSG.js +0 -101
  914. package/dist/publish-Y465CVUD.js +0 -342
  915. package/dist/publish-Y465CVUD.js.map +0 -1
  916. package/dist/query-BJJYUGQZ.js +0 -247
  917. package/dist/query-KQ675KJZ.js +0 -236
  918. package/dist/query-QM7MBQD7.js +0 -62
  919. package/dist/questionnaire-LEZJLMAV.js +0 -93
  920. package/dist/questionnaire-LEZJLMAV.js.map +0 -1
  921. package/dist/read-QME7JYVF.js +0 -141
  922. package/dist/reddit-Z7DOVIGR.js +0 -27
  923. package/dist/refresh-A6TW2Z2F.js +0 -95
  924. package/dist/refresh-A6TW2Z2F.js.map +0 -1
  925. package/dist/release-UFESJ4TM.js +0 -61
  926. package/dist/release-UFESJ4TM.js.map +0 -1
  927. package/dist/relevant-pages-VOICMQ7U.js +0 -99
  928. package/dist/remove-YONNYA4G.js +0 -51
  929. package/dist/remove-YONNYA4G.js.map +0 -1
  930. package/dist/reopen-FYJU2IPO.js +0 -64
  931. package/dist/reopen-FYJU2IPO.js.map +0 -1
  932. package/dist/rerun-B5SBG6ZE.js +0 -93
  933. package/dist/rerun-B5SBG6ZE.js.map +0 -1
  934. package/dist/research-HW4EVOZU.js +0 -72
  935. package/dist/research-OV53DIBX.js +0 -263
  936. package/dist/research-OV53DIBX.js.map +0 -1
  937. package/dist/reset-R4SIQXFH.js +0 -55
  938. package/dist/reset-R4SIQXFH.js.map +0 -1
  939. package/dist/reset-X6ODAKYH.js +0 -55
  940. package/dist/reset-X6ODAKYH.js.map +0 -1
  941. package/dist/resolve-DNRJCLCR.js +0 -122
  942. package/dist/resolve-DNRJCLCR.js.map +0 -1
  943. package/dist/retry-D5MKBHUB.js +0 -63
  944. package/dist/retry-D5MKBHUB.js.map +0 -1
  945. package/dist/retry-DVFLE7JY.js +0 -61
  946. package/dist/retry-DVFLE7JY.js.map +0 -1
  947. package/dist/revenue-QGI6XWSK.js +0 -89
  948. package/dist/revenue-QGI6XWSK.js.map +0 -1
  949. package/dist/rule-writes-S3RN47OG.js +0 -523
  950. package/dist/rule-writes-S3RN47OG.js.map +0 -1
  951. package/dist/rules-KTJ2ZZ62.js +0 -217
  952. package/dist/rules-TR6BAC23.js +0 -97
  953. package/dist/rules-TR6BAC23.js.map +0 -1
  954. package/dist/rules-add-T5ZO5RLR.js +0 -463
  955. package/dist/rules-add-T5ZO5RLR.js.map +0 -1
  956. package/dist/run-WZ5IXWA4.js +0 -67
  957. package/dist/run-WZ5IXWA4.js.map +0 -1
  958. package/dist/run-YRR3KOUU.js +0 -68
  959. package/dist/scaffold-ad-DNUCGCIH.js +0 -1514
  960. package/dist/scaffold-ad-DNUCGCIH.js.map +0 -1
  961. package/dist/scaffold-static-ad-VR65EZAG.js +0 -1013
  962. package/dist/scaffold-static-ad-VR65EZAG.js.map +0 -1
  963. package/dist/scaffold-video-JLMKCCWE.js +0 -886
  964. package/dist/scaffold-video-JLMKCCWE.js.map +0 -1
  965. package/dist/schedule-VRHCVBZA.js +0 -62
  966. package/dist/schedule-VRHCVBZA.js.map +0 -1
  967. package/dist/scheduled-agents-DG7FTCUZ.js +0 -55
  968. package/dist/schema-WZKDWF5N.js +0 -133
  969. package/dist/schema-WZKDWF5N.js.map +0 -1
  970. package/dist/search-MN66QIKJ.js +0 -175
  971. package/dist/search-MN66QIKJ.js.map +0 -1
  972. package/dist/select-IPSM2BF2.js +0 -104
  973. package/dist/select-IPSM2BF2.js.map +0 -1
  974. package/dist/sends-6FI7WELX.js +0 -348
  975. package/dist/sends-6FI7WELX.js.map +0 -1
  976. package/dist/set-prompt-N6BD3DME.js +0 -196
  977. package/dist/set-prompt-N6BD3DME.js.map +0 -1
  978. package/dist/setup-links-GTA2AROS.js +0 -142
  979. package/dist/setup-links-GTA2AROS.js.map +0 -1
  980. package/dist/shared-ZFULUOPQ.js +0 -32
  981. package/dist/shopify-S4TG6WJH.js +0 -3956
  982. package/dist/shopify-S4TG6WJH.js.map +0 -1
  983. package/dist/site-NY622E3H.js +0 -178
  984. package/dist/site-NY622E3H.js.map +0 -1
  985. package/dist/sitemaps-F3HYH5ZP.js +0 -87
  986. package/dist/sites-JSMF72BY.js +0 -101
  987. package/dist/sources-4F2XO7Z6.js +0 -455
  988. package/dist/sources-4F2XO7Z6.js.map +0 -1
  989. package/dist/sources-562ITR77.js +0 -30
  990. package/dist/stale-JKM6MXJF.js +0 -74
  991. package/dist/stale-JKM6MXJF.js.map +0 -1
  992. package/dist/stats-QP4LFQZJ.js +0 -34
  993. package/dist/status-AUWMUDA4.js +0 -63
  994. package/dist/status-AUWMUDA4.js.map +0 -1
  995. package/dist/studies-ZOEUY6YP.js +0 -250
  996. package/dist/study-writes-DTGMCNFP.js +0 -468
  997. package/dist/study-writes-DTGMCNFP.js.map +0 -1
  998. package/dist/sync-76MCGHX4.js +0 -55
  999. package/dist/sync-76MCGHX4.js.map +0 -1
  1000. package/dist/sync-PHH65JFS.js +0 -279
  1001. package/dist/sync-definition-NJPT6ABG.js +0 -67
  1002. package/dist/tag-manager-F7PVTDBB.js +0 -43
  1003. package/dist/tags-5KBOJJ5R.js +0 -26
  1004. package/dist/tags-CSMLTHTU.js +0 -21
  1005. package/dist/tags-CSMLTHTU.js.map +0 -1
  1006. package/dist/tags-IFRZYM3G.js +0 -21
  1007. package/dist/tags-IFRZYM3G.js.map +0 -1
  1008. package/dist/tags-S44ADJ75.js +0 -21
  1009. package/dist/tags-S44ADJ75.js.map +0 -1
  1010. package/dist/tags-WR7IY3OT.js +0 -225
  1011. package/dist/tags-WR7IY3OT.js.map +0 -1
  1012. package/dist/targeting-VBQY3HUN.js +0 -760
  1013. package/dist/targeting-VBQY3HUN.js.map +0 -1
  1014. package/dist/targeting-constants-236ES5HE.js +0 -118
  1015. package/dist/targeting-criteria-FJWNK53T.js +0 -113
  1016. package/dist/targets-2EHMMXD4.js +0 -104
  1017. package/dist/targets-2EHMMXD4.js.map +0 -1
  1018. package/dist/terms-O6ODXEOK.js +0 -102
  1019. package/dist/testimonials-WAPFIGFJ.js +0 -32
  1020. package/dist/themes-B4LCQUXB.js +0 -95
  1021. package/dist/top-companies-DJ2XQKMW.js +0 -109
  1022. package/dist/top-companies-DJ2XQKMW.js.map +0 -1
  1023. package/dist/transcript-J3LGOHCM.js +0 -163
  1024. package/dist/transcript-J3LGOHCM.js.map +0 -1
  1025. package/dist/translate-6RXO4C6Z.js +0 -607
  1026. package/dist/translate-6RXO4C6Z.js.map +0 -1
  1027. package/dist/triggers-CYXPNHQB.js +0 -142
  1028. package/dist/triggers-CYXPNHQB.js.map +0 -1
  1029. package/dist/tweets-IUINLOXF.js +0 -123
  1030. package/dist/unlink-5FJI7XZB.js +0 -68
  1031. package/dist/unlink-5FJI7XZB.js.map +0 -1
  1032. package/dist/unstage-54ZE2SZK.js +0 -86
  1033. package/dist/unstage-54ZE2SZK.js.map +0 -1
  1034. package/dist/unstage-MDSSPUKV.js +0 -95
  1035. package/dist/unstage-MDSSPUKV.js.map +0 -1
  1036. package/dist/update-BVBFNFMO.js +0 -99
  1037. package/dist/update-BVBFNFMO.js.map +0 -1
  1038. package/dist/update-GV3T7ZRC.js +0 -190
  1039. package/dist/update-GV3T7ZRC.js.map +0 -1
  1040. package/dist/update-PUQWUGPJ.js +0 -64
  1041. package/dist/update-PUQWUGPJ.js.map +0 -1
  1042. package/dist/update-YQBK6C3L.js +0 -153
  1043. package/dist/update-YQBK6C3L.js.map +0 -1
  1044. package/dist/upload-PXT5JAEV.js +0 -127
  1045. package/dist/upload-PXT5JAEV.js.map +0 -1
  1046. package/dist/url-options-IHL4OU4C.js +0 -130
  1047. package/dist/url-options-IHL4OU4C.js.map +0 -1
  1048. package/dist/url-params-IYUI6SFJ.js +0 -99
  1049. package/dist/url-params-IYUI6SFJ.js.map +0 -1
  1050. package/dist/validate-AD7F7LQ5.js +0 -120
  1051. package/dist/validate-AD7F7LQ5.js.map +0 -1
  1052. package/dist/videos-ZJCTODEB.js +0 -41
  1053. package/dist/viewer-check-GWZNGWCO.js +0 -81
  1054. package/dist/web-76CWAZNW.js +0 -141
  1055. package/dist/web-76CWAZNW.js.map +0 -1
  1056. package/dist/winning-ads-W7GTXTX7.js +0 -86
  1057. package/dist/write-commands-5J47ZNO4.js +0 -206
  1058. package/dist/write-commands-K6M3RTVK.js +0 -1170
  1059. package/dist/write-commands-K6M3RTVK.js.map +0 -1
  1060. package/dist/write-commands-OTWH6BKZ.js +0 -713
  1061. package/dist/write-commands-VPU53DLB.js +0 -1498
  1062. package/dist/write-commands-VPU53DLB.js.map +0 -1
  1063. package/dist/x-V4NNNWRU.js +0 -47
  1064. /package/dist/{account-ZY655BIU.js.map → account-BA3IO3AN.js.map} +0 -0
  1065. /package/dist/{account-assets-O7IA37RE.js.map → account-assets-T3VVNBUG.js.map} +0 -0
  1066. /package/dist/{account-reads-SNOWDHHF.js.map → account-reads-5CXFLJ5Q.js.map} +0 -0
  1067. /package/dist/{accounts-FT2SRKMD.js.map → accounts-4R3MBNJG.js.map} +0 -0
  1068. /package/dist/{accounts-SNB65ZEW.js.map → accounts-5WF7VE7J.js.map} +0 -0
  1069. /package/dist/{accounts-K5XLEO6W.js.map → accounts-VPWCLF6X.js.map} +0 -0
  1070. /package/dist/{actions-4JYHXRFH.js.map → actions-D7OWCP36.js.map} +0 -0
  1071. /package/dist/{active-entities-3BAPHE4P.js.map → active-entities-WDPW7652.js.map} +0 -0
  1072. /package/dist/{activities-LKLPORDI.js.map → activities-WGPHYSFU.js.map} +0 -0
  1073. /package/dist/{ads-KBE5JXCH.js.map → ads-F7AUJWK7.js.map} +0 -0
  1074. /package/dist/{ads-LXWXOQHX.js.map → ads-OV3SMLKA.js.map} +0 -0
  1075. /package/dist/{adsets-YWBJFPAZ.js.map → adsets-XH2ULWPM.js.map} +0 -0
  1076. /package/dist/{asset-writes-72DEVXGO.js.map → asset-writes-4X3AJQ4Q.js.map} +0 -0
  1077. /package/dist/{audiences-QAH42HIM.js.map → audiences-MBBXWEOI.js.map} +0 -0
  1078. /package/dist/{audiences-34IQKOGS.js.map → audiences-YUG5JLL4.js.map} +0 -0
  1079. /package/dist/{audit-7ED6CUTQ.js.map → audit-WFXS5ELM.js.map} +0 -0
  1080. /package/dist/{avatars-N6W6HUPP.js.map → avatars-WZ2JDMHH.js.map} +0 -0
  1081. /package/dist/{brand-ITWQVZD2.js.map → brand-IZTTBZII.js.map} +0 -0
  1082. /package/dist/{businesses-MGP2YCEU.js.map → businesses-24JNY46Z.js.map} +0 -0
  1083. /package/dist/{campaigns-XZOQ2VTK.js.map → campaigns-KXYGSH27.js.map} +0 -0
  1084. /package/dist/{campaigns-5BIDXYSR.js.map → campaigns-U5FQ2VWL.js.map} +0 -0
  1085. /package/dist/{canvas-SL3RMOY5.js.map → canvas-IQ753Q2O.js.map} +0 -0
  1086. /package/dist/{cards-A7GQVC7B.js.map → cards-NSNAFTEB.js.map} +0 -0
  1087. /package/dist/{changes-36C754R4.js.map → changes-RDWMNSTK.js.map} +0 -0
  1088. /package/dist/{chatgpt-3WFOPURY.js.map → chatgpt-27NEJVGF.js.map} +0 -0
  1089. /package/dist/{chunk-KUY26RCF.js.map → chunk-2F4DELSV.js.map} +0 -0
  1090. /package/dist/{chunk-WF25CCLD.js.map → chunk-2GYCWRF3.js.map} +0 -0
  1091. /package/dist/{chunk-HJKYTNAZ.js.map → chunk-2L7F7KR4.js.map} +0 -0
  1092. /package/dist/{chunk-4GAEB6NK.js.map → chunk-44ZRCSR7.js.map} +0 -0
  1093. /package/dist/{chunk-2TOIY2WN.js.map → chunk-46YLDIQG.js.map} +0 -0
  1094. /package/dist/{chunk-DQ54POZN.js.map → chunk-4EDWXZ3I.js.map} +0 -0
  1095. /package/dist/{chunk-SIXU5PDF.js.map → chunk-4FFBGR5L.js.map} +0 -0
  1096. /package/dist/{chunk-JSNMKTFM.js.map → chunk-4UZUUSVL.js.map} +0 -0
  1097. /package/dist/{chunk-Q6JMMBSQ.js.map → chunk-4XHCEYHI.js.map} +0 -0
  1098. /package/dist/{chunk-ALMYGH5U.js.map → chunk-4Z6PVR3M.js.map} +0 -0
  1099. /package/dist/{chunk-K4FLWDEX.js.map → chunk-5Y5FZV2W.js.map} +0 -0
  1100. /package/dist/{chunk-INUU3752.js.map → chunk-6HJXLGDV.js.map} +0 -0
  1101. /package/dist/{chunk-XE6N4SZI.js.map → chunk-6S5CWGDA.js.map} +0 -0
  1102. /package/dist/{chunk-SXMK5AEJ.js.map → chunk-6VYROVWO.js.map} +0 -0
  1103. /package/dist/{chunk-TTLD66NI.js.map → chunk-AQRXXC6E.js.map} +0 -0
  1104. /package/dist/{chunk-W4D7C74B.js.map → chunk-ARBXT73X.js.map} +0 -0
  1105. /package/dist/{chunk-LAC6YHHX.js.map → chunk-BEZHQIEI.js.map} +0 -0
  1106. /package/dist/{chunk-J3UWMBOP.js.map → chunk-BFURWHVR.js.map} +0 -0
  1107. /package/dist/{chunk-RAQHUMKS.js.map → chunk-EZSPVWLQ.js.map} +0 -0
  1108. /package/dist/{chunk-DM3Q6F5F.js.map → chunk-FCHZ5TNG.js.map} +0 -0
  1109. /package/dist/{chunk-MI4HXE7M.js.map → chunk-FLWDFPXE.js.map} +0 -0
  1110. /package/dist/{chunk-PLBITHV6.js.map → chunk-FQMEX3GX.js.map} +0 -0
  1111. /package/dist/{chunk-FKQK22IX.js.map → chunk-GE3VT3CA.js.map} +0 -0
  1112. /package/dist/{chunk-HMIROUFV.js.map → chunk-HCQJYI6X.js.map} +0 -0
  1113. /package/dist/{chunk-FLK6QHOY.js.map → chunk-HGBJQGO5.js.map} +0 -0
  1114. /package/dist/{chunk-GU5MXV2Y.js.map → chunk-HHVWV5BJ.js.map} +0 -0
  1115. /package/dist/{chunk-HGUYC5K6.js.map → chunk-I3WGTSDY.js.map} +0 -0
  1116. /package/dist/{chunk-MGYC2IRC.js.map → chunk-I7AYMJZA.js.map} +0 -0
  1117. /package/dist/{chunk-7NF73SCB.js.map → chunk-IDSDJHRS.js.map} +0 -0
  1118. /package/dist/{chunk-OBJCNGZL.js.map → chunk-ILPHIYAL.js.map} +0 -0
  1119. /package/dist/{chunk-WR3FR3K3.js.map → chunk-IWKD56AY.js.map} +0 -0
  1120. /package/dist/{chunk-Y7XSDJEA.js.map → chunk-JLAQWMVF.js.map} +0 -0
  1121. /package/dist/{chunk-XUJZO7MZ.js.map → chunk-K6NULQN7.js.map} +0 -0
  1122. /package/dist/{chunk-JI77AKT6.js.map → chunk-L2BRAC2J.js.map} +0 -0
  1123. /package/dist/{chunk-Y67LUJBE.js.map → chunk-LGMI4LSY.js.map} +0 -0
  1124. /package/dist/{chunk-3GAR4AZK.js.map → chunk-LNODLR7W.js.map} +0 -0
  1125. /package/dist/{chunk-5XTGG4PV.js.map → chunk-LQ2BRGMX.js.map} +0 -0
  1126. /package/dist/{chunk-B2POVFR2.js.map → chunk-M7QZSEHF.js.map} +0 -0
  1127. /package/dist/{chunk-OJGYYH6K.js.map → chunk-NB2FU6EZ.js.map} +0 -0
  1128. /package/dist/{chunk-PFTYKINE.js.map → chunk-NFII3MTG.js.map} +0 -0
  1129. /package/dist/{chunk-WQPUX3BA.js.map → chunk-OG47L5GG.js.map} +0 -0
  1130. /package/dist/{chunk-4D46PS6J.js.map → chunk-QIOFOD4K.js.map} +0 -0
  1131. /package/dist/{chunk-6JCX3YLM.js.map → chunk-R2SYF5FC.js.map} +0 -0
  1132. /package/dist/{chunk-JNURZHZJ.js.map → chunk-RTH2I55B.js.map} +0 -0
  1133. /package/dist/{chunk-FFFJBNHA.js.map → chunk-S6VFDNSQ.js.map} +0 -0
  1134. /package/dist/{chunk-ZNRGH4NS.js.map → chunk-SG2TDQEE.js.map} +0 -0
  1135. /package/dist/{chunk-CKQTJ2LV.js.map → chunk-T3P6O2VU.js.map} +0 -0
  1136. /package/dist/{chunk-RCJKABOS.js.map → chunk-TU5LQUJM.js.map} +0 -0
  1137. /package/dist/{chunk-TLQOMWLQ.js.map → chunk-TU7DWSTW.js.map} +0 -0
  1138. /package/dist/{chunk-V5NHJU3M.js.map → chunk-TXDE2QJ3.js.map} +0 -0
  1139. /package/dist/{chunk-TVAIOC77.js.map → chunk-TYXZ2SRW.js.map} +0 -0
  1140. /package/dist/{chunk-C6CBBZBO.js.map → chunk-UDIEKCIR.js.map} +0 -0
  1141. /package/dist/{chunk-KBRJSPIM.js.map → chunk-UQHHGT67.js.map} +0 -0
  1142. /package/dist/{chunk-SA22KXWT.js.map → chunk-USCADMM3.js.map} +0 -0
  1143. /package/dist/{chunk-MJ7RNDD4.js.map → chunk-UUGISMNE.js.map} +0 -0
  1144. /package/dist/{chunk-IQHO2ABF.js.map → chunk-VDPOCAQ2.js.map} +0 -0
  1145. /package/dist/{chunk-AQKRSEBQ.js.map → chunk-VEJ3QX6M.js.map} +0 -0
  1146. /package/dist/{chunk-XDNJC62G.js.map → chunk-VFJB7OG6.js.map} +0 -0
  1147. /package/dist/{chunk-TVTSA4EN.js.map → chunk-VPABGAN4.js.map} +0 -0
  1148. /package/dist/{chunk-DL2UJNJ7.js.map → chunk-VRIPVLE7.js.map} +0 -0
  1149. /package/dist/{chunk-D3KLDIPQ.js.map → chunk-WLESMH4J.js.map} +0 -0
  1150. /package/dist/{chunk-OLBLXJNI.js.map → chunk-YILZR3XI.js.map} +0 -0
  1151. /package/dist/{chunk-JDR3HUEL.js.map → chunk-YJFLXOH4.js.map} +0 -0
  1152. /package/dist/{chunk-BL6RTOK3.js.map → chunk-YWHZYR6S.js.map} +0 -0
  1153. /package/dist/{chunk-XGPU2VDU.js.map → chunk-Z35KUMBW.js.map} +0 -0
  1154. /package/dist/{chunk-GACSA5A6.js.map → chunk-Z7I2ZFXS.js.map} +0 -0
  1155. /package/dist/{config-SMVIY6RW.js.map → config-55WGRLY3.js.map} +0 -0
  1156. /package/dist/{connect-HPQ32KGV.js.map → connect-3YY7MF3I.js.map} +0 -0
  1157. /package/dist/{conversion-upload-command-KTYAY7IG.js.map → conversion-upload-command-VM2P57K6.js.map} +0 -0
  1158. /package/dist/{creatives-RNOL4F4E.js.map → creatives-2DR3QHJW.js.map} +0 -0
  1159. /package/dist/{creatives-JPKA2RHU.js.map → creatives-DUR5Z5AN.js.map} +0 -0
  1160. /package/dist/{currency-R4ORE2U3.js.map → currency-X4KEACEP.js.map} +0 -0
  1161. /package/dist/{custom-conversions-5HJBB5XL.js.map → custom-conversions-OIA5Y2GX.js.map} +0 -0
  1162. /package/dist/{customers-OFZTEXST.js.map → customers-663K2OCP.js.map} +0 -0
  1163. /package/dist/{discover-GSJRZUOC.js.map → discover-2W42JB56.js.map} +0 -0
  1164. /package/dist/{draft-RIR2V6A2.js.map → draft-2ZX73IRO.js.map} +0 -0
  1165. /package/dist/{draft-WYDMLNYA.js.map → draft-CKLIIWXZ.js.map} +0 -0
  1166. /package/dist/{draft-ZCL7FVBH.js.map → draft-L5Q6KEER.js.map} +0 -0
  1167. /package/dist/{draft-DJIYEMZU.js.map → draft-MJRMZGMP.js.map} +0 -0
  1168. /package/dist/{experiment-I5CRLOVN.js.map → experiment-3VRHCQN5.js.map} +0 -0
  1169. /package/dist/{fit-53DGYRFD.js.map → fit-BEFCY2B4.js.map} +0 -0
  1170. /package/dist/{fonts-LFMBUT4R.js.map → fonts-C6XN5667.js.map} +0 -0
  1171. /package/dist/{forecast-4AG5F7YC.js.map → forecast-LYN6ZGQC.js.map} +0 -0
  1172. /package/dist/{funding-5W4LX6DU.js.map → funding-TCEPQXRQ.js.map} +0 -0
  1173. /package/dist/{ga4-BWVCDVIR.js.map → ga4-JE3HS36B.js.map} +0 -0
  1174. /package/dist/{google-NAA4BASO.js.map → google-24FDG4C4.js.map} +0 -0
  1175. /package/dist/{gsc-2MPE4N32.js.map → gsc-RMVOYIM3.js.map} +0 -0
  1176. /package/dist/{ideas-NK3KQHAK.js.map → ideas-M66FU45H.js.map} +0 -0
  1177. /package/dist/{images-2XS3JT7E.js.map → images-MM5OPUKV.js.map} +0 -0
  1178. /package/dist/{ingest-DHXWZZX4.js.map → ingest-KMLYCFF4.js.map} +0 -0
  1179. /package/dist/{intent-NSHW7EJT.js.map → intent-YCQCUCV3.js.map} +0 -0
  1180. /package/dist/{job-DRFCQ27M.js.map → job-SM2OQ2LO.js.map} +0 -0
  1181. /package/dist/{job-create-2EC25Y3J.js.map → job-create-ECZHPVKH.js.map} +0 -0
  1182. /package/dist/{job-status-UNVZRPIA.js.map → job-status-QSYDKIIV.js.map} +0 -0
  1183. /package/dist/{keyword-gap-ITTWKBWZ.js.map → keyword-gap-PUSF7EKY.js.map} +0 -0
  1184. /package/dist/{landing-QONUUP3C.js.map → landing-OZU5RRFV.js.map} +0 -0
  1185. /package/dist/{languages-MEFQQBJ2.js.map → languages-Q5SKO4AM.js.map} +0 -0
  1186. /package/dist/{line-items-OH426JGT.js.map → line-items-2V5FY33R.js.map} +0 -0
  1187. /package/dist/{locations-RLWAS6AC.js.map → locations-VQYREHYI.js.map} +0 -0
  1188. /package/dist/{lookup-ZJIP2M4X.js.map → lookup-MELV3RUL.js.map} +0 -0
  1189. /package/dist/{media-XCTZJIW4.js.map → media-BPI2VE6A.js.map} +0 -0
  1190. /package/dist/{media-ZWN7E777.js.map → media-EEWZZU3P.js.map} +0 -0
  1191. /package/dist/{media-sources-7L622UTF.js.map → media-sources-EQI3U4TC.js.map} +0 -0
  1192. /package/dist/{meta-EHKXH257.js.map → meta-SMJUQP37.js.map} +0 -0
  1193. /package/dist/{metrics-K6FDCMK7.js.map → metrics-EMAP7ESR.js.map} +0 -0
  1194. /package/dist/{output-WTEPRUPE.js.map → output-4QBQEM4C.js.map} +0 -0
  1195. /package/dist/{pages-J6AF5NDU.js.map → pages-DTQWQUKP.js.map} +0 -0
  1196. /package/dist/{performance-K4VB6L6Z.js.map → performance-NIF3CESZ.js.map} +0 -0
  1197. /package/dist/{pixels-ZZTB6NWF.js.map → pixels-2BKADWE6.js.map} +0 -0
  1198. /package/dist/{promoted-tweets-KPG4IUVD.js.map → promoted-tweets-653Q5AC6.js.map} +0 -0
  1199. /package/dist/{properties-RBLJCVSG.js.map → properties-VWKO3AAK.js.map} +0 -0
  1200. /package/dist/{query-QM7MBQD7.js.map → query-CXIOL7WI.js.map} +0 -0
  1201. /package/dist/{query-KQ675KJZ.js.map → query-OOP63DJF.js.map} +0 -0
  1202. /package/dist/{query-BJJYUGQZ.js.map → query-RBZFAIDK.js.map} +0 -0
  1203. /package/dist/{read-QME7JYVF.js.map → read-GOULD7YL.js.map} +0 -0
  1204. /package/dist/{reddit-Z7DOVIGR.js.map → reddit-JIHMAKAQ.js.map} +0 -0
  1205. /package/dist/{relevant-pages-VOICMQ7U.js.map → relevant-pages-FS7GBVXK.js.map} +0 -0
  1206. /package/dist/{research-HW4EVOZU.js.map → research-PNBACCCP.js.map} +0 -0
  1207. /package/dist/{rules-KTJ2ZZ62.js.map → rules-HY7S2YTD.js.map} +0 -0
  1208. /package/dist/{run-YRR3KOUU.js.map → run-QCNRR3CA.js.map} +0 -0
  1209. /package/dist/{scheduled-agents-DG7FTCUZ.js.map → scheduled-agents-OXYAVSIE.js.map} +0 -0
  1210. /package/dist/{shared-ZFULUOPQ.js.map → shared-CGEJI2RB.js.map} +0 -0
  1211. /package/dist/{sitemaps-F3HYH5ZP.js.map → sitemaps-5SP7PVQ6.js.map} +0 -0
  1212. /package/dist/{sites-JSMF72BY.js.map → sites-YZDPHBST.js.map} +0 -0
  1213. /package/dist/{sources-562ITR77.js.map → sources-FLUGHSVP.js.map} +0 -0
  1214. /package/dist/{stats-QP4LFQZJ.js.map → stats-EGGNFTKI.js.map} +0 -0
  1215. /package/dist/{studies-ZOEUY6YP.js.map → studies-6VUUOMZD.js.map} +0 -0
  1216. /package/dist/{sync-PHH65JFS.js.map → sync-SCM6JGJP.js.map} +0 -0
  1217. /package/dist/{sync-definition-NJPT6ABG.js.map → sync-definition-OGQ5XTQE.js.map} +0 -0
  1218. /package/dist/{tag-manager-F7PVTDBB.js.map → tag-manager-REKD4WGU.js.map} +0 -0
  1219. /package/dist/{tags-5KBOJJ5R.js.map → tags-CZTRQNXV.js.map} +0 -0
  1220. /package/dist/{targeting-constants-236ES5HE.js.map → targeting-constants-MRQB4N5I.js.map} +0 -0
  1221. /package/dist/{targeting-criteria-FJWNK53T.js.map → targeting-criteria-HSAESZIR.js.map} +0 -0
  1222. /package/dist/{terms-O6ODXEOK.js.map → terms-D2KAFHKJ.js.map} +0 -0
  1223. /package/dist/{testimonials-WAPFIGFJ.js.map → testimonials-G3OCNPBY.js.map} +0 -0
  1224. /package/dist/{themes-B4LCQUXB.js.map → themes-X56KIX3Z.js.map} +0 -0
  1225. /package/dist/{tweets-IUINLOXF.js.map → tweets-JN6ARKF6.js.map} +0 -0
  1226. /package/dist/{videos-ZJCTODEB.js.map → videos-36AXDUGZ.js.map} +0 -0
  1227. /package/dist/{viewer-check-GWZNGWCO.js.map → viewer-check-6HL4OUQY.js.map} +0 -0
  1228. /package/dist/{winning-ads-W7GTXTX7.js.map → winning-ads-GMM5W2O4.js.map} +0 -0
  1229. /package/dist/{write-commands-OTWH6BKZ.js.map → write-commands-B25W4FP5.js.map} +0 -0
  1230. /package/dist/{write-commands-5J47ZNO4.js.map → write-commands-GNNEUVDW.js.map} +0 -0
  1231. /package/dist/{x-V4NNNWRU.js.map → x-JNR5SO6F.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/creatives/translate.ts","../src/commands/creatives/translate-ad.ts","../src/commands/creatives/translate-model.ts"],"sourcesContent":["/**\n * `baker creatives translate --slug <ad> --to es-MX,es-CO`: the command around `translateAd`. Local\n * file work and one text call, so no backend route: the new ads reach the dashboard through\n * `canvas sync-definition`, as `creatives make --series` does, and the call's spend waits in the\n * canvas cache for the next run record to bill (`holdUnbilledSpend`).\n */\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { askJev } from \"../../engine/nodes/local/lib/jev.ts\";\nimport { askAboutImages, RENDER_REVIEW_MODEL, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { optionalChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { runBaker as baker } from \"../baker-child.ts\";\nimport { findWorkspaceRoot } from \"../canvas/normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"../canvas/unbilled-spend.ts\";\nimport { translateAd, translateEnvelope } from \"./translate-ad.ts\";\nimport { type Failure, quoteLineQuestion } from \"./translate-model.ts\";\n\n/** How long the one call for every language may take. */\nconst TRANSLATE_TIMEOUT_MS = 120_000;\n\nconst DESCRIPTION = `The same static ad in other languages. Each language becomes its own creative, <ad>-<lang>, made as an ad of the series <ad> leads: its ready picture with only the words changed, so the design is never made again per language. Every language is translated in one call (transcreated for the market, same role and length per line, brand names, prices and numbers kept); seconds, nothing rendered. The ad must have a ready version.\n\nStart here:\n baker creatives translate --slug spring-offer --to es-MX,es-CO,pt-BR # one ad per country: Mexico and Colombia are two ads\n baker creatives translate --slug spring-offer --to de,fr # a language with no country: its neutral variety\n baker creatives translate --slug spring-offer --to de --copy-file de.json # your own lines: {\"de\": [\"line 1\", \"line 2\"]}\n baker creatives translate --slug spring-offer --to de --copy-file de.json # only some lines yours, the model writes the rest: {\"de\": {\"headline\": \"…\", \"3\": \"…\"}}\n baker creatives translate --slug spring-offer --to es-MX --note \"Informal tú. Keep 'Pro' in English.\" # brief the translator\nTo change one line of one language after: edit src/creatives/<ad>-<lang>/prompt.json copy, then baker canvas run --series <ad>.\nTen angle ads in three languages: one design (the lead), the angle ads (creatives make <idea> --series <lead>), then translate each angle ad. Never a new canvas or a new design per language.\nThen: baker canvas run --series spring-offer (renders every language at once). Adding a language later leaves the ones made as they are.`;\n\nconst ARGS = {\n slug: {\n type: \"string\",\n required: true,\n description: \"The ad to translate (its creative slug); it must have a ready version\",\n },\n to: {\n type: \"string\",\n required: true,\n description:\n \"The languages, comma-separated BCP-47 codes: es-MX,es-CO,pt-BR (a country's own variety) or de,fr. One new creative each: <slug>-<tag in lowercase>\",\n },\n \"copy-file\": {\n type: \"string\",\n required: false,\n description:\n 'A JSON file with your own lines. A language as an array is every line, in the ad\\'s order, no model asked: {\"es\": [\"line 1\", \"line 2\"]}. A language as an object is only the lines you write, by number (from 1) or role, and the model writes the rest: {\"de\": {\"headline\": \"…\", \"3\": \"…\"}}. Your words for a line also win over the reading that it is a customer\\'s, unless it is signed as theirs',\n },\n note: {\n type: \"string\",\n required: false,\n description:\n \"Your instructions for the translator, as you would brief a copywriter: the tone, tú or usted, a term to keep in English, what the market calls the product. A customer's words stay as they said them whatever it says\",\n },\n again: {\n type: \"boolean\",\n required: false,\n default: false,\n description:\n \"Translate a language already made again (after the ad's words changed); without it, a made language is left as it is\",\n },\n} as const;\n\nregisterSchema({ command: \"creatives.translate\", description: DESCRIPTION, args: ARGS });\n\nfunction fail(error: Failure): never {\n writeJson({ ok: false, error });\n process.exit(1);\n}\n\nasync function readCopyFile(file: string): Promise<unknown> {\n try {\n return JSON.parse(await readFile(path.resolve(file), \"utf8\"));\n } catch (e) {\n fail({\n code: \"translate_copy_file_unreadable\",\n message: `The copy file ${file} could not be read as JSON (${e instanceof Error ? e.message : String(e)}).`,\n fix: 'Write it as {\"<lang>\": [\"line 1\", \"line 2\"]}, one array per language.',\n });\n }\n}\n\nexport const translateCommand = defineCommand({\n meta: { name: \"translate\", description: DESCRIPTION },\n args: ARGS,\n async run({ args }) {\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const copyFile = typeof args[\"copy-file\"] === \"string\" && args[\"copy-file\"] ? args[\"copy-file\"] : undefined;\n const copy = copyFile ? await readCopyFile(copyFile) : undefined;\n const spent: ReviewUsage[] = [];\n const result = await translateAd(root, String(args.slug), String(args.to), {\n ask: (prompt) =>\n askAboutImages(RENDER_REVIEW_MODEL, [], prompt, (usage) => spent.push(usage), TRANSLATE_TIMEOUT_MS).catch(\n () => null,\n ),\n ...(copy !== undefined ? { copy } : {}),\n again: args.again === true,\n ...(typeof args.note === \"string\" && args.note.trim() ? { note: args.note.trim() } : {}),\n sync: (dir) => baker([\"canvas\", \"sync-definition\", dir, \"--title\"]),\n chatId: optionalChatId() ?? null,\n judgeQuotes: (texts) => askJev(texts.map(quoteLineQuestion), (usage) => spent.push(usage)),\n });\n // No run record carries this call: the next render of this workspace bills it. The ads are made\n // by now, so a cache that cannot be written never costs the command its answer.\n await holdUnbilledSpend(path.join(root, \"canvas\", \".cache\"), spent).catch(() => undefined);\n if (\"code\" in result) fail(result);\n writeJson(translateEnvelope(result));\n },\n});\n","/**\n * `baker creatives translate --slug <ad> --to es,de`: the same ad in other languages. Each\n * language is a new creative, `<ad>-<lang>`, made as an ad of the series `<ad>` leads: the ad's\n * ready picture with only its words changed to theirs, so the design is never made again per\n * language. Every language is translated in one text call (or read from the agent's own file);\n * nothing is rendered here: `baker canvas run --series <ad>` renders them all at once.\n */\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { CreativesRunData } from \"@baker/api\";\nimport { readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { languageName, languageTag, sameTag, tagSlug } from \"../../language.ts\";\nimport { parseDefinitionStrategyFields } from \"../canvas/creative-definition.ts\";\nimport { claimNewCreativeInWorkspace, creativeLimitRefusal } from \"../canvas/creative-limit.ts\";\nimport { leadVersion, seriesLeadsAbove, writeSeriesMemberCanvas } from \"../canvas/series-member.ts\";\nimport {\n acceptTranslations,\n buildTranslatePrompt,\n customersWordsAmong,\n type Failure,\n type LineOverrides,\n lineOverrides,\n MESSAGE_ROLE,\n numberedLines,\n parseLanguages,\n signedLines,\n translatedDefinition,\n translatedSpec,\n unknownLineKeys,\n} from \"./translate-model.ts\";\n\n/** What became of one language. */\nexport type Translation = {\n language: string;\n creative: string;\n status: \"made\" | \"exists\" | \"refused\";\n error?: Failure;\n /** `made`: the lines kept as a customer said them, untranslated. */\n kept?: string[];\n /** Of those, the numbers (from 1) of the lines only judged a customer's, which the agent may give its own words for. */\n judged?: number[];\n};\n\nexport type Translated = {\n source: string;\n sourceLanguage?: string;\n leadsAbove: string[];\n translations: Translation[];\n /** The ad's prompt.json was changed after its last render: the translations are of the version rendered. */\n changedSinceRender?: true;\n};\n\n/** The spec as an ad spec, comparable; null when it does not read as one. Pure. */\nfunction comparable(spec: unknown): string | null {\n try {\n return JSON.stringify(readAdSpec(spec));\n } catch {\n return null;\n }\n}\n\n/** Whether the source's prompt.json now says something else than the version rendered. */\nasync function changedSinceRender(root: string, source: string, rendered: unknown): Promise<boolean> {\n const raw = await readFile(path.join(creativeDir(root, source), \"prompt.json\"), \"utf8\").catch(() => null);\n if (raw === null) return false;\n let now: unknown;\n try {\n now = JSON.parse(raw);\n } catch {\n return false;\n }\n const [a, b] = [comparable(now), comparable(rendered)];\n return a !== null && b !== null && a !== b;\n}\n\ntype Deps = {\n /** The text model, asked once for every language; its parsed JSON answer, or null. */\n ask: (prompt: string) => Promise<unknown>;\n /** The lines the agent wrote itself (`--copy-file`): no model is asked. */\n copy?: unknown;\n /** The agent's instructions for the translator: the tone, the form of address, terms to keep. */\n note?: string;\n /** Translate a language already made again (its words), instead of leaving it as it is. */\n again?: boolean;\n sync: (dir: string) => Promise<unknown>;\n chatId: string | null;\n fetchRecord?: (runId: string) => Promise<CreativesRunData | null>;\n /** Jev: how likely each line is a customer's own words; null when it could not answer. */\n judgeQuotes?: (texts: string[]) => Promise<number[] | null>;\n};\n\n/** The creative a language of `source` is: `<source>-<tag>`, the tag lowercase (`spring-offer-es-mx`). */\nexport const translationSlug = (source: string, language: string) => `${source}-${tagSlug(language)}`;\n\nconst creativeDir = (root: string, slug: string) => path.join(root, \"src\", \"creatives\", slug);\n\nfunction definitionOf(root: string, slug: string): Promise<string | null> {\n return readFile(path.join(creativeDir(root, slug), \"_definition.md\"), \"utf8\").catch(() => null);\n}\n\n/** The language the source is in: its `_definition.md`'s, else its market's. */\nfunction sourceLanguageOf(definition: string, spec: Record<string, unknown>): string | undefined {\n const market = (spec.viewer as { market?: { language?: unknown } } | undefined)?.market?.language;\n return (\n parseDefinitionStrategyFields(definition).language ??\n (typeof market === \"string\" ? (languageTag(market) ?? undefined) : undefined)\n );\n}\n\n/**\n * What each language asked comes to before any words are written: already made (left as it is\n * unless `again`), its slug taken by another creative, or to translate.\n */\nasync function planLanguages(\n root: string,\n source: string,\n languages: readonly string[],\n again: boolean,\n): Promise<{ settled: Translation[]; pending: string[] }> {\n const settled: Translation[] = [];\n const pending: string[] = [];\n for (const language of languages) {\n const creative = translationSlug(source, language);\n const existing = await definitionOf(root, creative);\n const fields = existing === null ? null : parseDefinitionStrategyFields(existing);\n const ours = fields?.seriesLead === source && sameTag(fields.language ?? \"\", language);\n if (!fields || (again && ours)) {\n pending.push(language);\n } else if (ours) {\n settled.push({ language, creative, status: \"exists\" });\n } else {\n settled.push({\n language,\n creative,\n status: \"refused\",\n error: {\n code: \"translate_slug_taken\",\n message: `\"${creative}\" is already another creative, not the ${languageName(language) ?? language} version of \"${source}\".`,\n fix: `Rename or remove src/creatives/${creative}/ if it is a leftover, then translate again.`,\n },\n });\n }\n }\n return { settled, pending };\n}\n\n/**\n * The languages a copy file gives in full: every line in order, the printed lines alone (the message\n * then stays the source's), or every printed line by number or role. Pure.\n */\nfunction wordsInFile(\n copy: unknown,\n pending: readonly string[],\n overrides: LineOverrides,\n lines: ReadonlyArray<{ text: string; role?: string }>,\n): Record<string, string[]> {\n const printed = lines.flatMap((l, i) => (l.role === MESSAGE_ROLE ? [] : [i]));\n const full = acceptTranslations(copy, pending, lines.length);\n const printedOnly = printed.length < lines.length ? acceptTranslations(copy, pending, printed.length) : {};\n const byLine = Object.entries(overrides).flatMap(([language, given]) =>\n printed.every((i) => given[i] !== undefined) ? [[language, printed.map((i) => given[i] ?? \"\")] as const] : [],\n );\n return { ...Object.fromEntries(byLine), ...printedOnly, ...full };\n}\n\n/**\n * Each pending language's lines: the agent's own (`copy`) where its file gives them all, else one\n * model call for every other language, with any line the file gives for it (`lineOverrides`) kept\n * as the agent wrote it.\n */\nasync function wordsFor(\n pending: readonly string[],\n overrides: LineOverrides,\n lines: ReadonlyArray<{ text: string; role?: string }>,\n context: { from?: string; brand?: string },\n deps: Pick<Deps, \"ask\" | \"copy\" | \"note\">,\n): Promise<{ words: Record<string, string[]>; asked: string[] }> {\n if (pending.length === 0) return { words: {}, asked: [] };\n const fromFile = deps.copy === undefined ? {} : wordsInFile(deps.copy, pending, overrides, lines);\n const asked = deps.copy === undefined ? [...pending] : pending.filter((l) => overrides[l] && !fromFile[l]);\n const note = deps.note ? { note: deps.note } : {};\n const answer = asked.length > 0 ? await deps.ask(buildTranslatePrompt(lines, asked, { ...context, ...note })) : null;\n const answered = asked.length > 0 ? acceptTranslations(answer, asked, lines.length) : {};\n const words = { ...fromFile };\n for (const language of asked) {\n const written = answered[language];\n if (written) words[language] = written.map((text, i) => overrides[language]?.[i] ?? text);\n }\n return { words, asked };\n}\n\n/** The ad `source` in each language `to` names, or why none could be made. */\nexport async function translateAd(root: string, source: string, to: string, deps: Deps): Promise<Translated | Failure> {\n const version = await leadVersion(root, source, deps.fetchRecord);\n if (\"refused\" in version) return version.refused;\n const spec = version.spec as Record<string, unknown>;\n if (spec.native) {\n return {\n code: \"translate_native_unsupported\",\n message: `\"${source}\" is a copy of a screen people know (a post, a chat, a review wall): its words are not lines of copy to translate.`,\n fix: \"Make it in the other language as its own ad: baker creatives make <idea> with the words written in that language.\",\n };\n }\n const sourceDefinition = (await definitionOf(root, source)) ?? \"---\\nkind: static\\n---\\n\";\n const sourceLanguage = sourceLanguageOf(sourceDefinition, spec);\n const asked = parseLanguages(to, sourceLanguage);\n if (\"code\" in asked) return asked;\n\n const { settled, pending } = await planLanguages(root, source, asked.languages, deps.again === true);\n const lines = version.lead.copy;\n // A customer's words stay theirs: translated, they would be words nobody said under their name.\n const quoted = pending.length > 0 ? await customersWordsAmong(lines, deps.judgeQuotes) : new Set<number>();\n const signed = signedLines(lines);\n const overrides = deps.copy !== undefined ? lineOverrides(deps.copy, pending, lines) : {};\n // The agent's own words for a line win over the judge's reading of it, never over a signature.\n const quotedIn = (language: string) =>\n new Set([...quoted].filter((i) => overrides[language]?.[i] === undefined || signed.has(i)));\n const unchanged = pending.filter((language) => lines.every((_, i) => quotedIn(language).has(i)));\n const open = pending.filter((language) => !unchanged.includes(language));\n const brand = readAdSpec(spec).brand?.name;\n // What the ad says is asked in the same call, so the team reads it in the ad's own language.\n const message = parseDefinitionStrategyFields(sourceDefinition).message;\n const marked = lines.map((line, i) => (quoted.has(i) ? { ...line, customersWords: true } : line));\n const asks = message ? [...marked, { text: message, role: MESSAGE_ROLE }] : marked;\n const { words, asked: modelAsked } = await wordsFor(\n open,\n overrides,\n asks,\n { ...(sourceLanguage ? { from: sourceLanguage } : {}), ...(brand ? { brand } : {}) },\n deps,\n );\n const translations = [...settled, ...unchanged.map((language) => nothingToTranslate(source, language))];\n for (const language of open) {\n translations.push(\n await makeTranslation(\n root,\n {\n source,\n language,\n sourceDefinition,\n spec,\n lines,\n quoted: quotedIn(language),\n signed,\n words: words[language],\n fromModel: modelAsked.includes(language),\n },\n deps,\n ),\n );\n }\n const order = new Map(asked.languages.map((l, i) => [l, i]));\n translations.sort((a, b) => (order.get(a.language) ?? 0) - (order.get(b.language) ?? 0));\n return {\n source,\n ...(sourceLanguage ? { sourceLanguage } : {}),\n leadsAbove: await seriesLeadsAbove(root, source),\n translations,\n ...((await changedSinceRender(root, source, version.spec)) ? { changedSinceRender: true as const } : {}),\n };\n}\n\n/**\n * A language for an ad whose every line is a customer's words, kept as they said them: it would be\n * the same ad, which the series run refuses, and the words left to change are the customer's. Pure.\n */\nfunction nothingToTranslate(source: string, language: string): Translation {\n const name = languageName(language) ?? language;\n return {\n language,\n creative: translationSlug(source, language),\n status: \"refused\",\n error: {\n code: \"translate_nothing_to_translate\",\n message: `Every line of \"${source}\" is a customer's own words, kept as they said them, so in ${name} it would be the same ad.`,\n fix: `Never translate a customer's words yourself: that puts words they never said under their name. To reach ${name} speakers, run \"${source}\" as it is, or give it a line of your own (a headline or a call to action), render it, then translate again.`,\n },\n };\n}\n\n/** A language the copy file does not give in full, nor any line of it the ad has. Pure. */\nfunction copyMissing(\n language: string,\n name: string,\n lines: ReadonlyArray<{ text: string; role?: string }>,\n unknown: readonly string[],\n): Failure {\n const named = unknown.map((key) => JSON.stringify(key)).join(\", \");\n return {\n code: \"translate_copy_missing\",\n message: unknown.length\n ? `The copy file's ${name} lines ${named} name no line of the ad.`\n : `The copy file has no ${name} lines, or not one for each of the ad's ${lines.length} lines.`,\n fix: `Give \"${language}\" an array of ${lines.length} lines in the ad's order, or only the lines to change, by number or role ({\"${language}\": {\"headline\": \"…\"}}): the model writes the rest. The ad's lines: ${numberedLines(lines)}.`,\n };\n}\n\n/** One language written as an ad of the source's series: its words, its definition and its canvas. */\nasync function makeTranslation(\n root: string,\n t: {\n source: string;\n language: string;\n sourceDefinition: string;\n spec: Record<string, unknown>;\n lines: ReadonlyArray<{ text: string; role?: string }>;\n quoted: ReadonlySet<number>;\n signed: ReadonlySet<number>;\n words: string[] | undefined;\n /** The model was asked for this language's words (none were in the copy file, or only some). */\n fromModel: boolean;\n },\n deps: Deps,\n): Promise<Translation> {\n const creative = translationSlug(t.source, t.language);\n const refused = (error: Failure): Translation => ({ language: t.language, creative, status: \"refused\", error });\n const name = languageName(t.language) ?? t.language;\n if (!t.words) {\n return refused(\n !t.fromModel\n ? copyMissing(t.language, name, t.lines, unknownLineKeys(deps.copy, t.language, t.lines))\n : {\n code: \"translate_failed\",\n message: `The ${name} words could not be written.`,\n fix: `Write them yourself: --copy-file <json> with {\"${t.language}\": [${t.lines.length} lines in the ad's order]}.`,\n },\n );\n }\n const dir = creativeDir(root, creative);\n const definitionPath = path.join(dir, \"_definition.md\");\n const claim = await claimNewCreativeInWorkspace(path.join(root, \"canvas\"), creative, deps.chatId, definitionPath);\n if (!claim.allowed) return refused(creativeLimitRefusal(creative).error);\n await mkdir(dir, { recursive: true });\n await writeFile(\n path.join(dir, \"prompt.json\"),\n `${JSON.stringify(translatedSpec(t.spec, t.words, t.language, t.quoted), null, 2)}\\n`,\n \"utf8\",\n );\n const headline = Math.max(\n 0,\n t.lines.findIndex((l) => l.role === \"headline\"),\n );\n await writeFile(\n definitionPath,\n translatedDefinition(t.sourceDefinition, {\n source: t.source,\n language: t.language,\n title: t.words[headline] ?? creative,\n ...(t.words.length > t.lines.length ? { message: t.words[t.lines.length] } : {}),\n }),\n \"utf8\",\n );\n const made = await writeSeriesMemberCanvas(root, creative, {\n leadWords: true,\n ...(deps.fetchRecord ? { fetchRecord: deps.fetchRecord } : {}),\n });\n if (made === null || \"refused\" in made) {\n return refused(made?.refused ?? { code: \"translate_not_made\", message: `\"${creative}\" could not be made.` });\n }\n // The dashboard learns the translation and its series now, not at Publish.\n await deps.sync(dir);\n const kept = [...t.quoted].sort((a, b) => a - b);\n const judged = kept.filter((i) => !t.signed.has(i)).map((i) => i + 1);\n return {\n language: t.language,\n creative,\n status: \"made\",\n ...(kept.length ? { kept: kept.map((i) => t.lines[i]?.text ?? \"\") } : {}),\n ...(judged.length ? { judged } : {}),\n };\n}\n\n/** The lines a translation kept as a customer said them, and how to translate one that is the advertiser's own. Pure. */\nfunction keptHint(source: string, t: Translation): string {\n const kept = (t.kept ?? []).map((text) => JSON.stringify(text)).join(\", \");\n const [line] = t.judged ?? [];\n const change = line\n ? ` If line ${line} is the ad's own words, not a customer's, write it yourself: baker creatives translate --slug ${source} --to ${t.language} --again --copy-file with {\"${t.language}\": {\"${line}\": \"<its words in ${t.language}>\"}}; the model writes the other lines again.`\n : \"\";\n return `${t.creative}: kept as the customer said them, untranslated: ${kept}.${change}`;\n}\n\n/** What `translate` prints: each language's ad, then the one series run that renders them all. Pure. */\nexport function translateEnvelope(result: Translated) {\n const made = result.translations.filter((t) => t.status !== \"refused\").map((t) => t.creative);\n const refused = result.translations.filter((t) => t.status === \"refused\");\n const order = [...result.leadsAbove].reverse().concat(result.source);\n return {\n ok: true as const,\n data: {\n source: result.source,\n made,\n translations: result.translations.map((t) => ({ ...t, name: languageName(t.language) ?? t.language })),\n },\n hints: [\n ...(result.changedSinceRender\n ? [\n `src/creatives/${result.source}/prompt.json was changed since its last render, and every language is made from the version rendered: none of them has that change. Never say they do. To carry it: baker canvas run --slug ${result.source}, then translate again with --again.`,\n ]\n : []),\n ...(made.length > 0\n ? [\n `Next: baker canvas run --series ${result.source} renders every language at once, each the ${result.source} picture with its own words, reviewed and corrected on its own. A language already rendered from the current version of ${result.source} is not rendered again.`,\n ]\n : []),\n ...(made.length > 0\n ? [\n `To change a line of one language (a word the person wants otherwise, a line too long), edit its words in that ad's own copy, src/creatives/${made[0]}/prompt.json \\`copy\\` (never its design), then baker canvas run --series ${result.source}: only that ad is made again. To change how every line reads (tone, tú or usted, a term to keep), translate again with --again --note \"<what to change>\"; --again writes every line of that language again.`,\n ]\n : []),\n `A later change to ${result.source} (its picture or design) reaches every language on the next ${order.map((slug) => `baker canvas run --series ${slug}`).join(\", then \")}. A change to its words does not: translate again with --again for the languages to update.`,\n ...refused.map((t) => `${t.creative}: ${t.error?.message ?? \"not made\"}${t.error?.fix ? ` ${t.error.fix}` : \"\"}`),\n ...result.translations.flatMap((t) => (t.kept?.length ? [keptHint(result.source, t)] : [])),\n ],\n };\n}\n","/**\n * `baker creatives translate`, its decisions: which languages, what the model is asked, which\n * answer is kept, and what each translation is on disk (its words in the source's spec, its\n * `_definition.md`). A translation is an ad of the series the source leads: the source's picture\n * with only its words changed, so ten ads in three languages stay one design. Pure.\n */\nimport { z } from \"zod\";\nimport { isAdSpec, readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { isCustomersWords, isSignatureLine, maybeSigned } from \"../../engine/scaffold/static-proof.ts\";\nimport { languageName, languageRegion, languageTag, sameTag } from \"../../language.ts\";\nimport { setDefinitionFields } from \"./make-model.ts\";\nimport { withoutFields } from \"./make-series.ts\";\n\nexport type Failure = { code: string; message: string; fix?: string };\n\n/** The languages `--to` names, as lowercase tags, once each; refused when one names none or is the ad's own. */\nexport function parseLanguages(raw: string, sourceLanguage: string | undefined): { languages: string[] } | Failure {\n const asked = raw\n .split(\",\")\n .map((code) => code.trim())\n .filter(Boolean);\n if (asked.length === 0) {\n return {\n code: \"translate_language_invalid\",\n message: \"No language was named.\",\n fix: \"Name each language as a code, comma-separated: --to es,de,fr (pt-BR, es-MX for a regional variant).\",\n };\n }\n const languages: string[] = [];\n for (const code of asked) {\n const tag = languageTag(code);\n if (!tag) {\n return {\n code: \"translate_language_invalid\",\n message: `\"${code}\" is not a language code.`,\n fix: \"Name each language as a BCP-47 code: es, de, fr, pt-BR, es-MX.\",\n };\n }\n if (sourceLanguage && sameTag(tag, sourceLanguage)) {\n return {\n code: \"translate_same_language\",\n message: `The ad is already in ${languageName(tag) ?? tag}.`,\n fix: `Leave ${code} out of --to.`,\n };\n }\n if (!languages.some((l) => sameTag(l, tag))) languages.push(tag);\n }\n return { languages };\n}\n\ntype Line = { text: string; role?: string; customersWords?: boolean };\n\n/** Jev's question for one copy line: whether it is a customer's own words, the advertiser's copy aside. */\nexport const quoteLineQuestion = (text: string) => ({\n instructions: {\n question:\n \"Is `line` a customer's or reviewer's own words (a testimonial, or a quote signed with the name of the person who said it), rather than the advertiser's own copy, in whatever language it is written?\",\n line: text,\n },\n});\n\n/** At or above, Jev holds a line to be a customer's own words (scripts/quote-line-evals). */\nexport const CUSTOMERS_WORDS = 0.5;\n\n/**\n * The lines signed as a customer's by their shape: a dash and a name, a quote or signature role, or\n * the line a signature right below signs. Nobody's say-so makes them the advertiser's. Pure.\n */\nexport function signedLines(lines: readonly Line[]): Set<number> {\n const signed = new Set<number>();\n lines.forEach((line, i) => {\n if (line.role === MESSAGE_ROLE) return;\n const below = lines[i + 1];\n if (isCustomersWords(line) || (below !== undefined && isSignatureLine(below))) signed.add(i);\n });\n return signed;\n}\n\n/**\n * The indexes of `lines` that are a customer's own words: set as a quote, signed by its shape\n * alone or by a signature on the line below it, else held so by `judge` (Jev, one probability per\n * text), a line below that may sign it asked with it. Without a judge only the shape and the role\n * decide: a line nobody can tell is translated, as the advertiser's copy is.\n */\nexport async function customersWordsAmong(\n lines: readonly Line[],\n judge?: (texts: string[]) => Promise<number[] | null>,\n): Promise<Set<number>> {\n const kept = signedLines(lines);\n const open = lines.flatMap((line, i) => (line.role === MESSAGE_ROLE || kept.has(i) ? [] : [i]));\n if (!judge || open.length === 0) return kept;\n // A hyphen opening the line below may sign this one or be the advertiser's own: asked together.\n const asked = (i: number) => {\n const text = lines[i]?.text ?? \"\";\n const below = lines[i + 1]?.text;\n return below !== undefined && maybeSigned(below) && !maybeSigned(text) ? `${text}\\n${below}` : text;\n };\n const answers = await judge(open.map(asked));\n if (answers?.length !== open.length) return kept;\n for (const [k, i] of open.entries()) if ((answers[k] ?? 0) >= CUSTOMERS_WORDS) kept.add(i);\n return kept;\n}\n\n/** The role of the extra line a translation asks for: the ad's message, said in the language for the team. */\nexport const MESSAGE_ROLE = \"message\";\n\nconst Answer = z.object({ translations: z.record(z.string(), z.array(z.string()).catch([])) });\n\n/**\n * The languages the model translated fully: each line of the source answered by one non-empty\n * line, in order. A language answered short or blank is left out (refused, never half an ad). Pure.\n */\nexport function acceptTranslations(\n answer: unknown,\n languages: readonly string[],\n lineCount: number,\n): Record<string, string[]> {\n // `--copy-file` may hold the languages bare; a model may answer \"pt-BR\" for \"pt-br\".\n const wrapped =\n answer && typeof answer === \"object\" && !(\"translations\" in answer) ? { translations: answer } : answer;\n const parsed = Answer.safeParse(wrapped);\n if (!parsed.success) return {};\n const byTag = new Map(Object.entries(parsed.data.translations).map(([key, lines]) => [key.toLowerCase(), lines]));\n const kept: Record<string, string[]> = {};\n for (const language of languages) {\n const lines = byTag.get(language.toLowerCase())?.map((line) => line.trim());\n if (lines && lines.length === lineCount && lines.every(Boolean)) kept[language] = lines;\n }\n return kept;\n}\n\n/** A copy file's language given as some of its lines: each line's words, by its position in the ad. */\nexport type LineOverrides = Record<string, Record<number, string>>;\n\n/** The ad's line a copy file's key names: its number from 1, else the first line with that role. */\nexport function lineByKey(key: string, lines: readonly Line[]): number | undefined {\n if (/^\\d+$/.test(key)) {\n const n = Number(key) - 1;\n return n >= 0 && n < lines.length ? n : undefined;\n }\n const i = lines.findIndex((l) => l.role !== MESSAGE_ROLE && l.role?.toLowerCase() === key.trim().toLowerCase());\n return i === -1 ? undefined : i;\n}\n\n/**\n * The languages a copy file gives as some of their lines (`{\"de\": {\"headline\": \"…\", \"2\": \"…\"}}`):\n * those lines are the agent's words, the rest are translated. A language given as a full array is\n * `acceptTranslations`' to read; a key naming no line of the ad is left out (`unknownLineKeys`). Pure.\n */\nexport function lineOverrides(file: unknown, languages: readonly string[], lines: readonly Line[]): LineOverrides {\n const byTag = languageEntries(file);\n const out: LineOverrides = {};\n for (const language of languages) {\n const given = byTag.get(language.toLowerCase());\n if (!given || Array.isArray(given) || typeof given !== \"object\") continue;\n const words: Record<number, string> = {};\n for (const [key, text] of Object.entries(given)) {\n const i = lineByKey(key, lines);\n if (i !== undefined && typeof text === \"string\" && text.trim()) words[i] = text.trim();\n }\n if (Object.keys(words).length > 0) out[language] = words;\n }\n return out;\n}\n\n/** The keys a copy file gives `language` that name no line of the ad. Pure. */\nexport function unknownLineKeys(file: unknown, language: string, lines: readonly Line[]): string[] {\n const given = languageEntries(file).get(language.toLowerCase());\n if (!given || Array.isArray(given) || typeof given !== \"object\") return [];\n return Object.keys(given).filter((key) => lineByKey(key, lines) === undefined);\n}\n\n/** The ad's lines as a copy file names them: `1 headline: \"…\"`, one per line. Pure. */\nexport function numberedLines(lines: readonly Line[]): string {\n return lines\n .filter((l) => l.role !== MESSAGE_ROLE)\n .map((l, i) => `${i + 1}${l.role ? ` ${l.role}` : \"\"}: ${JSON.stringify(l.text)}`)\n .join(\"; \");\n}\n\n/** The file's languages by lowercase tag, whether it wraps them in `translations` or not. */\nfunction languageEntries(file: unknown): Map<string, unknown> {\n const record = file && typeof file === \"object\" && !Array.isArray(file) ? (file as Record<string, unknown>) : {};\n const languages = record.translations && typeof record.translations === \"object\" ? record.translations : record;\n return new Map(Object.entries(languages as Record<string, unknown>).map(([k, v]) => [k.toLowerCase(), v]));\n}\n\n/** What the model is asked: every language at once, line by line, for the same picture. Pure. */\nexport function buildTranslatePrompt(\n lines: readonly Line[],\n languages: readonly string[],\n context: { from?: string; brand?: string; note?: string },\n): string {\n const from = context.from ? languageName(context.from) : null;\n return [\n `These are the lines of copy printed on a finished static ad${from ? `, written in ${from}` : \"\"}. Translate them${from ? ` from ${from}` : \"\"} into each of these languages: ${languages.map((l) => `${l} (${languageName(l) ?? l})`).join(\", \")}.`,\n \"\",\n ...lines.map(\n (line, i) =>\n `${i + 1}. ${line.role === MESSAGE_ROLE ? \"[not printed: what the ad says, in one sentence, for the team that runs it] \" : line.role ? `[${line.role}] ` : \"\"}${line.customersWords ? \"[a customer's own words: copy it exactly as written, untranslated] \" : \"\"}${JSON.stringify(line.text)}`,\n ),\n \"\",\n \"Rules:\",\n \"- Transcreate as a native copywriter of that market would write the ad, not word for word: the same promise and tone, natural for the people who will see it.\",\n \"- Each line keeps its role: a headline stays a headline, a button stays a short button.\",\n \"- Keep each line about as long as the original: it is set in the same layout, in the same space, so a much longer line will not fit.\",\n `- Keep brand names${context.brand ? ` (${JSON.stringify(context.brand)})` : \"\"}, product names, numbers, prices, currencies, percentages and URLs exactly as they are.`,\n \"- Use the language's own accents and punctuation (¿ ¡ « » ß ç ã).\",\n ...varieties(languages),\n ...(context.note\n ? [\n \"\",\n `The team's own instructions for this translation. Follow them over the rules above, except that a customer's own words stay exactly as written.\\n${context.note}`,\n ]\n : []),\n \"\",\n `Reply with only this JSON, one array per language with exactly ${lines.length} lines in the order above: {\"translations\": {${languages.map((l) => `\"${l}\": [\"...\"]`).join(\", \")}}}`,\n ].join(\"\\n\");\n}\n\n/**\n * The translation's spec: the source's as it was drawn, each line's words replaced in place (its\n * role, lettering and placement kept) and, when the source names its market, that market's\n * language set, and its country when the tag names one (es-MX: Mexico). The currency stays the\n * source's: its prices are kept as they are. Everything else is the source's: the design is never the translation's own. Pure.\n */\nexport function translatedSpec(\n source: Record<string, unknown>,\n lines: readonly string[],\n language: string,\n customersWords: ReadonlySet<number> = new Set(),\n): Record<string, unknown> {\n // An older blueprint carries its words in its own shape: it is written as the ad spec it reads as.\n const spec: Record<string, unknown> = isAdSpec(source) ? source : readAdSpec(source);\n const copy = Array.isArray(spec.copy) ? (spec.copy as Array<Record<string, unknown>>) : [];\n const viewer = spec.viewer as { market?: Record<string, unknown> } | undefined;\n return {\n ...spec,\n // A customer's words stay theirs: translated, they would be words nobody said under their name.\n copy: copy.map((line, i) => (customersWords.has(i) ? line : { ...line, text: lines[i] ?? line.text })),\n ...(viewer?.market ? { viewer: { ...viewer, market: { ...viewer.market, ...marketOf(language) } } } : {}),\n };\n}\n\n/** What a translation's `_definition.md` keeps of its source's: everything but these, which are its own. */\nconst OWN_FIELDS = [\"series\", \"language\", \"title\", \"status\"];\n\n/** The translation's `_definition.md`: the source's reasons, as an ad of the source's series in `language`. Pure. */\nexport function translatedDefinition(\n source: string,\n translation: { source: string; language: string; title: string; message?: string },\n): string {\n return setDefinitionFields(withoutFields(source, OWN_FIELDS), {\n title: translation.title.slice(0, 120),\n series: translation.source,\n language: translation.language,\n status: \"draft\",\n ...(translation.message ? { message: translation.message } : {}),\n });\n}\n\n/** For each tag naming a country, the instruction to write as people there write ads. */\nfunction varieties(languages: readonly string[]): string[] {\n const regional = languages.flatMap((tag) => {\n const region = languageRegion(tag);\n return region\n ? [\n `- ${tag}: write it as people in ${region.name} write ads: its own vocabulary, spelling, idioms and form of address (tú, usted or vos as ads there use it), not a neutral one and not a neighbouring country's variety of the same language.`,\n ]\n : [];\n });\n return regional.length > 0 ? [\"\", \"Each regional variant is its own ad:\", ...regional] : [];\n}\n\n/** The market fields a tag decides: its language, and its country when it names one. */\nfunction marketOf(language: string): { language: string; country?: string } {\n const region = languageRegion(language);\n return region ? { language, country: region.code } : { language };\n}\n"],"mappings":"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","names":["readFile","path","readFile","path"]}
@@ -0,0 +1,144 @@
1
+ import {
2
+ failApi
3
+ } from "./chunk-6S5CWGDA.js";
4
+ import "./chunk-ASRS37QE.js";
5
+ import {
6
+ triggerCatalogSchema
7
+ } from "./chunk-PC3FJEZH.js";
8
+ import "./chunk-CAZGM2NX.js";
9
+ import "./chunk-NZS3KEQ2.js";
10
+ import "./chunk-GIWHHCD6.js";
11
+ import "./chunk-SOPVIIUW.js";
12
+ import "./chunk-G4FG5EQO.js";
13
+ import "./chunk-NSBNIPIW.js";
14
+ import "./chunk-46YLDIQG.js";
15
+ import {
16
+ apiPost
17
+ } from "./chunk-X7VQFLHI.js";
18
+ import "./chunk-LU4HI4KI.js";
19
+ import "./chunk-LGK7UWBN.js";
20
+ import {
21
+ registerSchema,
22
+ writeJson
23
+ } from "./chunk-Q7US4OOA.js";
24
+ import "./chunk-YQSBHWOI.js";
25
+
26
+ // src/commands/scheduled-agents/triggers.ts
27
+ import { defineCommand } from "citty";
28
+ var ARGS = {
29
+ trigger: {
30
+ type: "string",
31
+ description: "One trigger in full \u2014 what makes it run, what it narrows by, its payload fields. A kind (experiment.decided) or a family prefix (experiment).",
32
+ required: false
33
+ },
34
+ group: {
35
+ type: "string",
36
+ description: "Every trigger in one group, in full, e.g. experiments, tasks, forms. The listing names each group.",
37
+ required: false
38
+ },
39
+ full: {
40
+ type: "boolean",
41
+ description: "Every trigger in full (about 25 KB). Prefer --trigger or --group.",
42
+ required: false
43
+ }
44
+ };
45
+ registerSchema({
46
+ command: "scheduled-agents.triggers",
47
+ description: "Everything that can start a scheduled agent. Bare, a compact listing of every trigger kind by group; --trigger <kind|family> or --group <id> for what each narrows by and the payload fields it hands over. Read this before proposing automation, so the trigger you name is one that exists \u2014 a time of day is only the most obvious of them, and most of what a marketer actually wants is a reaction to something.",
48
+ args: ARGS
49
+ });
50
+ function matchesTrigger(kind, query) {
51
+ const family = query.replace(/\.?\*?$/, "");
52
+ return kind === query || kind.startsWith(`${family}.`);
53
+ }
54
+ function shapeTriggerCatalog(response, filter) {
55
+ const { trigger, group } = filter;
56
+ const unfiltered = trigger === void 0 && group === void 0;
57
+ if (unfiltered && filter.full) return { ok: true, data: response };
58
+ const parsed = triggerCatalogSchema.safeParse(response);
59
+ if (!parsed.success) {
60
+ return {
61
+ ok: false,
62
+ error: {
63
+ code: "INTERNAL_ERROR",
64
+ message: "The trigger list came back in a shape this version of the CLI cannot read.",
65
+ fix: {
66
+ action: "run `baker scheduled-agents triggers --full`",
67
+ explanation: "--full prints the whole list as the server sent it, without reading it."
68
+ }
69
+ }
70
+ };
71
+ }
72
+ const catalog = parsed.data;
73
+ if (unfiltered) {
74
+ return {
75
+ ok: true,
76
+ data: {
77
+ groups: catalog.groups.map((entry) => ({
78
+ group: entry.group,
79
+ triggers: Object.fromEntries(entry.triggers.map((t) => [t.kind, t.label]))
80
+ }))
81
+ },
82
+ hints: [
83
+ "Next: `baker scheduled-agents triggers --trigger <kind>` (or a family, e.g. --trigger experiment) for what it narrows by and the payload fields to use in --when and {{payload.<field>}}."
84
+ ]
85
+ };
86
+ }
87
+ const groups = catalog.groups.filter((entry) => group === void 0 || entry.group === group).map((entry) => ({
88
+ ...entry,
89
+ triggers: entry.triggers.filter(
90
+ (t) => trigger === void 0 || matchesTrigger(t.kind, trigger)
91
+ )
92
+ })).filter((entry) => entry.triggers.length > 0);
93
+ if (groups.length === 0) {
94
+ const asked = [
95
+ trigger === void 0 ? null : `--trigger "${trigger}"`,
96
+ group === void 0 ? null : `--group "${group}"`
97
+ ].filter(Boolean);
98
+ return {
99
+ ok: false,
100
+ error: {
101
+ code: "NOT_FOUND",
102
+ message: `No trigger matches ${asked.join(" ")}.`,
103
+ fix: {
104
+ action: "run `baker scheduled-agents triggers`",
105
+ explanation: `Groups: ${catalog.groups.map((entry) => entry.group).join(", ")}. The bare command lists every trigger kind.`
106
+ }
107
+ }
108
+ };
109
+ }
110
+ return { ok: true, data: { groups, reacting: catalog.reacting } };
111
+ }
112
+ var triggersCommand = defineCommand({
113
+ meta: {
114
+ name: "triggers",
115
+ description: `Everything that can start a scheduled agent.
116
+
117
+ A scheduled agent is a trigger and a prompt. The trigger is the whole of the "when": a time, a cadence, a call-in from another tool, an event arriving (a HubSpot deal reaching a stage is one), a Form being submitted, an A/B test reaching an answer, a Task closing, a tool needing reconnecting, a publish leaving changes behind, a new review, a competitor launching ads.
118
+
119
+ Start here: the bare command lists every trigger kind by group, compactly. Then ask for the one you picked: it says what narrows it (\`pointAt\`) and the payload fields it hands over, for --when rules ("amount > 10000") and the prompt ({{payload.amount}}).
120
+
121
+ Examples:
122
+ baker scheduled-agents triggers
123
+ baker scheduled-agents triggers --trigger experiment.decided
124
+ baker scheduled-agents triggers --trigger experiment
125
+ baker scheduled-agents triggers --group tasks
126
+ Full guide: __tooling__/docs/tools/baker/scheduled-agents.md`
127
+ },
128
+ args: ARGS,
129
+ run: async ({ args }) => {
130
+ try {
131
+ const response = await apiPost("/api/scheduled-agents/triggers", {});
132
+ const shaped = shapeTriggerCatalog(response.data, { trigger: args.trigger, group: args.group, full: args.full });
133
+ writeJson(shaped);
134
+ if (!shaped.ok) process.exit(1);
135
+ } catch (err) {
136
+ failApi(err);
137
+ }
138
+ }
139
+ });
140
+ export {
141
+ shapeTriggerCatalog,
142
+ triggersCommand
143
+ };
144
+ //# sourceMappingURL=triggers-ECRBPYYF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/scheduled-agents/triggers.ts"],"sourcesContent":["import { type TriggerCatalogEntry, triggerCatalogSchema } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"./shared.ts\";\n\nconst ARGS = {\n trigger: {\n type: \"string\" as const,\n description:\n \"One trigger in full — what makes it run, what it narrows by, its payload fields. A kind (experiment.decided) or a family prefix (experiment).\",\n required: false,\n },\n group: {\n type: \"string\" as const,\n description: \"Every trigger in one group, in full, e.g. experiments, tasks, forms. The listing names each group.\",\n required: false,\n },\n full: {\n type: \"boolean\" as const,\n description: \"Every trigger in full (about 25 KB). Prefer --trigger or --group.\",\n required: false,\n },\n};\n\nregisterSchema({\n command: \"scheduled-agents.triggers\",\n description:\n \"Everything that can start a scheduled agent. Bare, a compact listing of every trigger kind by group; --trigger <kind|family> or --group <id> for what each narrows by and the payload fields it hands over. Read this before proposing automation, so the trigger you name is one that exists — a time of day is only the most obvious of them, and most of what a marketer actually wants is a reaction to something.\",\n args: ARGS,\n});\n\ninterface TriggerFilter {\n trigger?: string;\n group?: string;\n full?: boolean;\n}\n\ntype Shaped =\n | { ok: true; data: unknown; hints?: string[] }\n | { ok: false; error: { code: string; message: string; fix: { action: string; explanation: string } } };\n\n/** `experiment`, `experiment.` and `experiment.*` all name the family. */\nfunction matchesTrigger(kind: string, query: string): boolean {\n const family = query.replace(/\\.?\\*?$/, \"\");\n return kind === query || kind.startsWith(`${family}.`);\n}\n\n/**\n * One catalog, shaped for what the agent asked. The bare listing is a kind and\n * a label per trigger, because that is enough to pick one; the detail — what\n * it narrows by, its payload fields, how to write rules over them — is for the\n * one or few the agent picked. --full passes the response through unread, so\n * it still works when a newer server sends a catalog this CLI cannot parse.\n */\nexport function shapeTriggerCatalog(response: unknown, filter: TriggerFilter): Shaped {\n const { trigger, group } = filter;\n const unfiltered = trigger === undefined && group === undefined;\n if (unfiltered && filter.full) return { ok: true, data: response };\n const parsed = triggerCatalogSchema.safeParse(response);\n if (!parsed.success) {\n return {\n ok: false,\n error: {\n code: \"INTERNAL_ERROR\",\n message: \"The trigger list came back in a shape this version of the CLI cannot read.\",\n fix: {\n action: \"run `baker scheduled-agents triggers --full`\",\n explanation: \"--full prints the whole list as the server sent it, without reading it.\",\n },\n },\n };\n }\n const catalog = parsed.data;\n if (unfiltered) {\n return {\n ok: true,\n data: {\n groups: catalog.groups.map((entry) => ({\n group: entry.group,\n triggers: Object.fromEntries(entry.triggers.map((t) => [t.kind, t.label])),\n })),\n },\n hints: [\n \"Next: `baker scheduled-agents triggers --trigger <kind>` (or a family, e.g. --trigger experiment) for what it narrows by and the payload fields to use in --when and {{payload.<field>}}.\",\n ],\n };\n }\n\n const groups = catalog.groups\n .filter((entry) => group === undefined || entry.group === group)\n .map((entry) => ({\n ...entry,\n triggers: entry.triggers.filter(\n (t: TriggerCatalogEntry) => trigger === undefined || matchesTrigger(t.kind, trigger),\n ),\n }))\n .filter((entry) => entry.triggers.length > 0);\n\n if (groups.length === 0) {\n const asked = [\n trigger === undefined ? null : `--trigger \"${trigger}\"`,\n group === undefined ? null : `--group \"${group}\"`,\n ].filter(Boolean);\n return {\n ok: false,\n error: {\n code: \"NOT_FOUND\",\n message: `No trigger matches ${asked.join(\" \")}.`,\n fix: {\n action: \"run `baker scheduled-agents triggers`\",\n explanation: `Groups: ${catalog.groups.map((entry) => entry.group).join(\", \")}. The bare command lists every trigger kind.`,\n },\n },\n };\n }\n return { ok: true, data: { groups, reacting: catalog.reacting } };\n}\n\nexport const triggersCommand = defineCommand({\n meta: {\n name: \"triggers\",\n description: `Everything that can start a scheduled agent.\n\nA scheduled agent is a trigger and a prompt. The trigger is the whole of the \"when\": a time, a cadence, a call-in from another tool, an event arriving (a HubSpot deal reaching a stage is one), a Form being submitted, an A/B test reaching an answer, a Task closing, a tool needing reconnecting, a publish leaving changes behind, a new review, a competitor launching ads.\n\nStart here: the bare command lists every trigger kind by group, compactly. Then ask for the one you picked: it says what narrows it (\\`pointAt\\`) and the payload fields it hands over, for --when rules (\"amount > 10000\") and the prompt ({{payload.amount}}).\n\nExamples:\n baker scheduled-agents triggers\n baker scheduled-agents triggers --trigger experiment.decided\n baker scheduled-agents triggers --trigger experiment\n baker scheduled-agents triggers --group tasks\nFull guide: __tooling__/docs/tools/baker/scheduled-agents.md`,\n },\n args: ARGS,\n run: async ({ args }) => {\n try {\n const response = await apiPost<{ ok: true; data: unknown }>(\"/api/scheduled-agents/triggers\", {});\n const shaped = shapeTriggerCatalog(response.data, { trigger: args.trigger, group: args.group, full: args.full });\n writeJson(shaped);\n if (!shaped.ok) process.exit(1);\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,123 @@
1
+ import {
2
+ parseXApiError
3
+ } from "./chunk-FIN4ZXGJ.js";
4
+ import {
5
+ resolveXAccountId
6
+ } from "./chunk-IDSDJHRS.js";
7
+ import {
8
+ cacheGet,
9
+ cacheSet,
10
+ writeAdsJson,
11
+ writeAdsOutput,
12
+ writeJsonEnvelope
13
+ } from "./chunk-6DPSWLGY.js";
14
+ import {
15
+ ApiError,
16
+ apiGet
17
+ } from "./chunk-X7VQFLHI.js";
18
+ import "./chunk-LU4HI4KI.js";
19
+ import "./chunk-LGK7UWBN.js";
20
+ import {
21
+ registerSchema
22
+ } from "./chunk-Q7US4OOA.js";
23
+ import "./chunk-YQSBHWOI.js";
24
+
25
+ // src/commands/ads/x/tweets.ts
26
+ import { defineCommand } from "citty";
27
+ function cacheKeyFor(accountId, args) {
28
+ const today = (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
29
+ return `tweets:${accountId}:${today}:${args["tweet-type"] ?? ""}:${args["timeline-type"] ?? ""}:${args["user-id"] ?? ""}`;
30
+ }
31
+ function requestParams(accountId, args) {
32
+ const params = { "account-id": accountId };
33
+ for (const key of ["tweet-type", "timeline-type", "user-id"]) {
34
+ if (args[key]) {
35
+ params[key] = String(args[key]);
36
+ }
37
+ }
38
+ if (args["no-cache"]) {
39
+ params["skip-cache"] = "true";
40
+ }
41
+ return params;
42
+ }
43
+ function toPost(tweet) {
44
+ return {
45
+ id: tweet.id_str,
46
+ text: typeof tweet.full_text === "string" ? tweet.full_text : tweet.text,
47
+ created_at: tweet.created_at,
48
+ promoted_only: tweet.nullcast === true,
49
+ handle: tweet.user?.screen_name
50
+ };
51
+ }
52
+ function hintsFor(posts) {
53
+ return posts.length === 0 ? ["This account has published no posts, so there is nothing to promote yet."] : ["Promote one with: baker ads x promoted-tweets create --line-item-id <id> --tweet-ids <id>"];
54
+ }
55
+ var TWEET_TYPES = "PUBLISHED | DRAFT";
56
+ var TIMELINE_TYPES = "ALL | ORGANIC | NULLCAST";
57
+ registerSchema({
58
+ command: "ads.x.tweets",
59
+ description: `The account's own posts, so one can be promoted by id. Start here before \`baker ads x promoted-tweets create\` \u2014 that command takes a post id, and this is the only place to get one.
60
+ A NULLCAST post ("promoted-only") never appears on the profile timeline and exists to be advertised; an ORGANIC one is a normal post that can also be promoted.`,
61
+ args: {
62
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
63
+ "tweet-type": { type: "string", description: `${TWEET_TYPES} (default PUBLISHED)`, required: false },
64
+ "timeline-type": { type: "string", description: `${TIMELINE_TYPES}`, required: false },
65
+ "user-id": { type: "string", description: "Numeric id of the posting handle", required: false },
66
+ "no-cache": { type: "boolean", description: "Skip cache", required: false },
67
+ output: { type: "string", description: "Format: json|csv|md", required: false }
68
+ }
69
+ });
70
+ var tweetsCommand = defineCommand({
71
+ meta: {
72
+ name: "tweets",
73
+ description: `The account's own posts, with the id needed to promote one.
74
+
75
+ Examples:
76
+ baker ads x tweets
77
+ baker ads x tweets --timeline-type NULLCAST --output md`
78
+ },
79
+ args: {
80
+ "account-id": { type: "string", description: "X Ads account ID" },
81
+ "tweet-type": { type: "string", description: `${TWEET_TYPES} (default PUBLISHED)` },
82
+ "timeline-type": { type: "string", description: TIMELINE_TYPES },
83
+ "user-id": { type: "string", description: "Numeric id of the posting handle" },
84
+ "no-cache": { type: "boolean", description: "Skip cache" },
85
+ output: { type: "string", description: "Format: json|csv|md", default: "json" }
86
+ },
87
+ run: async ({ args }) => {
88
+ const accountId = await resolveXAccountId(args);
89
+ const useCache = !args["no-cache"];
90
+ const cacheKey = cacheKeyFor(accountId, args);
91
+ if (useCache) {
92
+ const cached = cacheGet("x-account-data", cacheKey);
93
+ if (cached) {
94
+ writeJsonEnvelope({ ok: true, data: cached.data, cached: true, hints: hintsFor(cached.data) });
95
+ return;
96
+ }
97
+ }
98
+ try {
99
+ const data = await apiGet("/api/ads/x/tweets", requestParams(accountId, args));
100
+ const posts = data.map(toPost);
101
+ if (useCache) {
102
+ cacheSet("x-account-data", cacheKey, posts, 60 * 60 * 1e3);
103
+ }
104
+ const format = args.output || "json";
105
+ if (format !== "json") {
106
+ writeAdsOutput(posts, format);
107
+ return;
108
+ }
109
+ writeJsonEnvelope({ ok: true, data: posts, hints: hintsFor(posts) });
110
+ } catch (err) {
111
+ if (err instanceof ApiError) {
112
+ writeAdsJson(parseXApiError(err.message, accountId));
113
+ process.exit(1);
114
+ }
115
+ writeAdsJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
116
+ process.exit(1);
117
+ }
118
+ }
119
+ });
120
+ export {
121
+ tweetsCommand
122
+ };
123
+ //# sourceMappingURL=tweets-JN6ARKF6.js.map
@@ -0,0 +1,70 @@
1
+ import {
2
+ failApi,
3
+ failValidation,
4
+ writeOk
5
+ } from "./chunk-UDIEKCIR.js";
6
+ import "./chunk-PC3FJEZH.js";
7
+ import "./chunk-CAZGM2NX.js";
8
+ import "./chunk-NZS3KEQ2.js";
9
+ import "./chunk-GIWHHCD6.js";
10
+ import "./chunk-SOPVIIUW.js";
11
+ import "./chunk-G4FG5EQO.js";
12
+ import "./chunk-NSBNIPIW.js";
13
+ import "./chunk-46YLDIQG.js";
14
+ import {
15
+ apiPost,
16
+ validateConvexId
17
+ } from "./chunk-X7VQFLHI.js";
18
+ import "./chunk-LU4HI4KI.js";
19
+ import {
20
+ requireChatId
21
+ } from "./chunk-LGK7UWBN.js";
22
+ import {
23
+ registerSchema
24
+ } from "./chunk-Q7US4OOA.js";
25
+ import "./chunk-YQSBHWOI.js";
26
+
27
+ // src/commands/actions/unlink.ts
28
+ import { defineCommand } from "citty";
29
+ registerSchema({
30
+ command: "actions.unlink",
31
+ description: "Stage removal of a 'blocker -> blocked' dependency. The blocked action must be claimed by current chat.",
32
+ args: {
33
+ blocker: { type: "string", description: "Blocker action ID", required: true },
34
+ blocked: { type: "string", description: "Blocked action ID (must be claimed by current chat)", required: true }
35
+ }
36
+ });
37
+ var unlinkCommand = defineCommand({
38
+ meta: {
39
+ name: "unlink",
40
+ description: "Stage removal of a dependency. Example: baker actions unlink --blocker <id> --blocked <id>"
41
+ },
42
+ args: {
43
+ blocker: { type: "string", description: "Blocker action ID", required: false },
44
+ blocked: { type: "string", description: "Blocked action ID", required: false }
45
+ },
46
+ run: async ({ args }) => {
47
+ try {
48
+ const blocker = args.blocker;
49
+ const blocked = args.blocked;
50
+ if (!blocker || !blocked) {
51
+ failValidation("--blocker and --blocked are required.");
52
+ }
53
+ validateConvexId(blocker);
54
+ validateConvexId(blocked);
55
+ const chatId = requireChatId();
56
+ await apiPost("/api/actions/unlink", {
57
+ chatId,
58
+ blockerId: blocker,
59
+ blockedId: blocked
60
+ });
61
+ writeOk();
62
+ } catch (err) {
63
+ failApi(err);
64
+ }
65
+ }
66
+ });
67
+ export {
68
+ unlinkCommand
69
+ };
70
+ //# sourceMappingURL=unlink-VDNCSRJV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/actions/unlink.ts"],"sourcesContent":["import type { ActionsUnlinkResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost, validateConvexId } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation, writeOk } from \"./shared.ts\";\n\nregisterSchema({\n command: \"actions.unlink\",\n description:\n \"Stage removal of a 'blocker -> blocked' dependency. The blocked action must be claimed by current chat.\",\n args: {\n blocker: { type: \"string\", description: \"Blocker action ID\", required: true },\n blocked: { type: \"string\", description: \"Blocked action ID (must be claimed by current chat)\", required: true },\n },\n});\n\nexport const unlinkCommand = defineCommand({\n meta: {\n name: \"unlink\",\n description: \"Stage removal of a dependency. Example: baker actions unlink --blocker <id> --blocked <id>\",\n },\n args: {\n blocker: { type: \"string\", description: \"Blocker action ID\", required: false },\n blocked: { type: \"string\", description: \"Blocked action ID\", required: false },\n },\n run: async ({ args }) => {\n try {\n const blocker = args.blocker as string | undefined;\n const blocked = args.blocked as string | undefined;\n if (!blocker || !blocked) {\n failValidation(\"--blocker and --blocked are required.\");\n }\n validateConvexId(blocker);\n validateConvexId(blocked);\n const chatId = requireChatId();\n await apiPost<ActionsUnlinkResponse>(\"/api/actions/unlink\", {\n chatId,\n blockerId: blocker,\n blockedId: blocked,\n });\n writeOk();\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,KAAK;AAAA,IAC5E,SAAS,EAAE,MAAM,UAAU,aAAa,uDAAuD,UAAU,KAAK;AAAA,EAChH;AACF,CAAC;AAEM,IAAM,gBAAgB,cAAc;AAAA,EACzC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,SAAS,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,MAAM;AAAA,IAC7E,SAAS,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,MAAM;AAAA,EAC/E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,UAAU,KAAK;AACrB,YAAM,UAAU,KAAK;AACrB,UAAI,CAAC,WAAW,CAAC,SAAS;AACxB,uBAAe,uCAAuC;AAAA,MACxD;AACA,uBAAiB,OAAO;AACxB,uBAAiB,OAAO;AACxB,YAAM,SAAS,cAAc;AAC7B,YAAM,QAA+B,uBAAuB;AAAA,QAC1D;AAAA,QACA,WAAW;AAAA,QACX,WAAW;AAAA,MACb,CAAC;AACD,cAAQ;AAAA,IACV,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,96 @@
1
+ import {
2
+ analyticsErrorEnvelope
3
+ } from "./chunk-WLESMH4J.js";
4
+ import {
5
+ ANALYTICS_UNSTAGE_KINDS
6
+ } from "./chunk-JOE42ZW6.js";
7
+ import "./chunk-NKQWDEB7.js";
8
+ import {
9
+ writeJsonEnvelope
10
+ } from "./chunk-6DPSWLGY.js";
11
+ import "./chunk-G4FG5EQO.js";
12
+ import {
13
+ apiPost
14
+ } from "./chunk-X7VQFLHI.js";
15
+ import "./chunk-LU4HI4KI.js";
16
+ import {
17
+ requireChatId
18
+ } from "./chunk-LGK7UWBN.js";
19
+ import {
20
+ registerSchema
21
+ } from "./chunk-Q7US4OOA.js";
22
+ import "./chunk-YQSBHWOI.js";
23
+
24
+ // src/commands/analytics/unstage.ts
25
+ import { defineCommand } from "citty";
26
+ var KIND_LIST = ANALYTICS_UNSTAGE_KINDS.join("|");
27
+ registerSchema({
28
+ command: "analytics.unstage",
29
+ description: `Take back a Measure change this chat staged, before Publish \u2014 the same as discarding its row in the change review. Name one with --kind and --ref (mapping: <platform>/<name> as \`analytics map\` prints it; conversion: the event key; send: the send id; source: the source id or src_temp_*), or pass --all to take back everything staged (all kinds, or one with --kind). Never touches anything already live.`,
30
+ args: {
31
+ kind: {
32
+ type: "string",
33
+ description: `What was staged: ${KIND_LIST}`,
34
+ required: false,
35
+ enum: [...ANALYTICS_UNSTAGE_KINDS]
36
+ },
37
+ ref: { type: "string", description: "Which staged change of that kind (see the description)", required: false },
38
+ all: { type: "boolean", description: "Take back everything staged (of --kind, or of every kind)", required: false }
39
+ }
40
+ });
41
+ function refuse(message) {
42
+ writeJsonEnvelope({ ok: false, error: { code: "VALIDATION_ERROR", message } });
43
+ process.exit(1);
44
+ }
45
+ function isUnstageKind(value) {
46
+ return ANALYTICS_UNSTAGE_KINDS.includes(value);
47
+ }
48
+ function unstageBody(args, chatId) {
49
+ if (args.kind !== void 0 && !isUnstageKind(args.kind)) {
50
+ refuse(`--kind must be one of ${KIND_LIST}.`);
51
+ }
52
+ const kind = args.kind;
53
+ if (args.all === true) {
54
+ if (args.ref !== void 0) {
55
+ refuse("Pass --ref to take back one staged change, or --all for everything \u2014 not both.");
56
+ }
57
+ return { chatId, all: true, ...kind !== void 0 ? { kind } : {} };
58
+ }
59
+ if (kind === void 0 || args.ref === void 0 || args.ref.trim() === "") {
60
+ refuse(`Pass --kind (${KIND_LIST}) with --ref to take back one staged change, or --all for everything staged.`);
61
+ }
62
+ return { chatId, kind, ref: args.ref };
63
+ }
64
+ var unstageCommand = defineCommand({
65
+ meta: {
66
+ name: "unstage",
67
+ description: "Take back a Measure change this chat staged, before Publish. Examples: baker analytics unstage --kind conversion --ref 'page:Deal won' | baker analytics unstage --kind mapping --ref google/kw | baker analytics unstage --all"
68
+ },
69
+ args: {
70
+ kind: { type: "string", description: `What was staged: ${KIND_LIST}`, required: false },
71
+ ref: { type: "string", description: "Which staged change of that kind", required: false },
72
+ all: { type: "boolean", description: "Take back everything staged", required: false }
73
+ },
74
+ run: async ({ args }) => {
75
+ try {
76
+ const body = unstageBody(
77
+ {
78
+ ...typeof args.kind === "string" ? { kind: args.kind } : {},
79
+ ...typeof args.ref === "string" ? { ref: args.ref } : {},
80
+ ...args.all === true ? { all: true } : {}
81
+ },
82
+ requireChatId()
83
+ );
84
+ const response = await apiPost("/api/analytics/draft-op/remove", body);
85
+ writeJsonEnvelope(response);
86
+ } catch (err) {
87
+ writeJsonEnvelope({ ok: false, error: analyticsErrorEnvelope(err) });
88
+ process.exit(1);
89
+ }
90
+ }
91
+ });
92
+ export {
93
+ unstageBody,
94
+ unstageCommand
95
+ };
96
+ //# sourceMappingURL=unstage-5C27F2LZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/analytics/unstage.ts"],"sourcesContent":["import {\n ANALYTICS_UNSTAGE_KINDS,\n type AnalyticsUnstageKind,\n type AnalyticsUnstageRequest,\n type AnalyticsUnstageResponse,\n} from \"@baker/api/analytics\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { requireChatId } from \"../../env.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { writeJsonEnvelope } from \"../ads/output.ts\";\nimport { analyticsErrorEnvelope } from \"./errorEnvelope.ts\";\n\n/**\n * `baker analytics unstage` — take back a Measure change this chat staged.\n *\n * The same as discarding the row in the chat's change review: what is taken\n * back does not apply at Publish. Nothing live is touched — a change already\n * published is changed by staging another one.\n */\n\nconst KIND_LIST = ANALYTICS_UNSTAGE_KINDS.join(\"|\");\n\nregisterSchema({\n command: \"analytics.unstage\",\n description: `Take back a Measure change this chat staged, before Publish — the same as discarding its row in the change review. Name one with --kind and --ref (mapping: <platform>/<name> as \\`analytics map\\` prints it; conversion: the event key; send: the send id; source: the source id or src_temp_*), or pass --all to take back everything staged (all kinds, or one with --kind). Never touches anything already live.`,\n args: {\n kind: {\n type: \"string\",\n description: `What was staged: ${KIND_LIST}`,\n required: false,\n enum: [...ANALYTICS_UNSTAGE_KINDS],\n },\n ref: { type: \"string\", description: \"Which staged change of that kind (see the description)\", required: false },\n all: { type: \"boolean\", description: \"Take back everything staged (of --kind, or of every kind)\", required: false },\n },\n});\n\nfunction refuse(message: string): never {\n writeJsonEnvelope({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\nfunction isUnstageKind(value: string): value is AnalyticsUnstageKind {\n return (ANALYTICS_UNSTAGE_KINDS as readonly string[]).includes(value);\n}\n\n/** The request for one unstage, checked before the round trip. */\nexport function unstageBody(\n args: { kind?: string; ref?: string; all?: boolean },\n chatId: string,\n): AnalyticsUnstageRequest {\n if (args.kind !== undefined && !isUnstageKind(args.kind)) {\n refuse(`--kind must be one of ${KIND_LIST}.`);\n }\n const kind = args.kind;\n if (args.all === true) {\n if (args.ref !== undefined) {\n refuse(\"Pass --ref to take back one staged change, or --all for everything — not both.\");\n }\n return { chatId, all: true, ...(kind !== undefined ? { kind } : {}) };\n }\n if (kind === undefined || args.ref === undefined || args.ref.trim() === \"\") {\n refuse(`Pass --kind (${KIND_LIST}) with --ref to take back one staged change, or --all for everything staged.`);\n }\n return { chatId, kind, ref: args.ref };\n}\n\nexport const unstageCommand = defineCommand({\n meta: {\n name: \"unstage\",\n description:\n \"Take back a Measure change this chat staged, before Publish. Examples: baker analytics unstage --kind conversion --ref 'page:Deal won' | baker analytics unstage --kind mapping --ref google/kw | baker analytics unstage --all\",\n },\n args: {\n kind: { type: \"string\", description: `What was staged: ${KIND_LIST}`, required: false },\n ref: { type: \"string\", description: \"Which staged change of that kind\", required: false },\n all: { type: \"boolean\", description: \"Take back everything staged\", required: false },\n },\n run: async ({ args }) => {\n try {\n const body = unstageBody(\n {\n ...(typeof args.kind === \"string\" ? { kind: args.kind } : {}),\n ...(typeof args.ref === \"string\" ? { ref: args.ref } : {}),\n ...(args.all === true ? { all: true } : {}),\n },\n requireChatId(),\n );\n const response = await apiPost<AnalyticsUnstageResponse>(\"/api/analytics/draft-op/remove\", body);\n writeJsonEnvelope(response);\n } catch (err) {\n writeJsonEnvelope({ ok: false, error: analyticsErrorEnvelope(err) });\n process.exit(1);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,qBAAqB;AAe9B,IAAM,YAAY,wBAAwB,KAAK,GAAG;AAElD,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa,oBAAoB,SAAS;AAAA,MAC1C,UAAU;AAAA,MACV,MAAM,CAAC,GAAG,uBAAuB;AAAA,IACnC;AAAA,IACA,KAAK,EAAE,MAAM,UAAU,aAAa,0DAA0D,UAAU,MAAM;AAAA,IAC9G,KAAK,EAAE,MAAM,WAAW,aAAa,6DAA6D,UAAU,MAAM;AAAA,EACpH;AACF,CAAC;AAED,SAAS,OAAO,SAAwB;AACtC,oBAAkB,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,QAAQ,EAAE,CAAC;AAC7E,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,cAAc,OAA8C;AACnE,SAAQ,wBAA8C,SAAS,KAAK;AACtE;AAGO,SAAS,YACd,MACA,QACyB;AACzB,MAAI,KAAK,SAAS,UAAa,CAAC,cAAc,KAAK,IAAI,GAAG;AACxD,WAAO,yBAAyB,SAAS,GAAG;AAAA,EAC9C;AACA,QAAM,OAAO,KAAK;AAClB,MAAI,KAAK,QAAQ,MAAM;AACrB,QAAI,KAAK,QAAQ,QAAW;AAC1B,aAAO,qFAAgF;AAAA,IACzF;AACA,WAAO,EAAE,QAAQ,KAAK,MAAM,GAAI,SAAS,SAAY,EAAE,KAAK,IAAI,CAAC,EAAG;AAAA,EACtE;AACA,MAAI,SAAS,UAAa,KAAK,QAAQ,UAAa,KAAK,IAAI,KAAK,MAAM,IAAI;AAC1E,WAAO,gBAAgB,SAAS,8EAA8E;AAAA,EAChH;AACA,SAAO,EAAE,QAAQ,MAAM,KAAK,KAAK,IAAI;AACvC;AAEO,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM,EAAE,MAAM,UAAU,aAAa,oBAAoB,SAAS,IAAI,UAAU,MAAM;AAAA,IACtF,KAAK,EAAE,MAAM,UAAU,aAAa,oCAAoC,UAAU,MAAM;AAAA,IACxF,KAAK,EAAE,MAAM,WAAW,aAAa,+BAA+B,UAAU,MAAM;AAAA,EACtF;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,OAAO;AAAA,QACX;AAAA,UACE,GAAI,OAAO,KAAK,SAAS,WAAW,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,UAC3D,GAAI,OAAO,KAAK,QAAQ,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,UACxD,GAAI,KAAK,QAAQ,OAAO,EAAE,KAAK,KAAK,IAAI,CAAC;AAAA,QAC3C;AAAA,QACA,cAAc;AAAA,MAChB;AACA,YAAM,WAAW,MAAM,QAAkC,kCAAkC,IAAI;AAC/F,wBAAkB,QAAQ;AAAA,IAC5B,SAAS,KAAK;AACZ,wBAAkB,EAAE,IAAI,OAAO,OAAO,uBAAuB,GAAG,EAAE,CAAC;AACnE,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":[]}