@koda-sl/baker-cli 0.495.0 → 0.497.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 (848) hide show
  1. package/README.md +25 -4
  2. package/dist/account-ZKJFX2GK.js +80 -0
  3. package/dist/account-ZKJFX2GK.js.map +1 -0
  4. package/dist/account-users-SZCYHVBM.js +62 -0
  5. package/dist/account-users-SZCYHVBM.js.map +1 -0
  6. package/dist/accounts-5DFYKYSM.js +78 -0
  7. package/dist/accounts-5DFYKYSM.js.map +1 -0
  8. package/dist/accounts-OGAIQNE6.js +612 -0
  9. package/dist/accounts-OGAIQNE6.js.map +1 -0
  10. package/dist/actions-FMNJSOBA.js +55 -0
  11. package/dist/activecampaign-LYYYH6XD.js +936 -0
  12. package/dist/activecampaign-LYYYH6XD.js.map +1 -0
  13. package/dist/add-AOQLZRPC.js +80 -0
  14. package/dist/add-AOQLZRPC.js.map +1 -0
  15. package/dist/add-HWXEPSZF.js +105 -0
  16. package/dist/add-HWXEPSZF.js.map +1 -0
  17. package/dist/add-VDZPGZF5.js +148 -0
  18. package/dist/add-VDZPGZF5.js.map +1 -0
  19. package/dist/add-YYP3O536.js +303 -0
  20. package/dist/add-YYP3O536.js.map +1 -0
  21. package/dist/ads-OLXSDPD6.js +40 -0
  22. package/dist/advertisers-STYAIX72.js +121 -0
  23. package/dist/advertisers-STYAIX72.js.map +1 -0
  24. package/dist/analytics-6WBK4VFO.js +1977 -0
  25. package/dist/analytics-6WBK4VFO.js.map +1 -0
  26. package/dist/analytics-DHB325DM.js +434 -0
  27. package/dist/analytics-DHB325DM.js.map +1 -0
  28. package/dist/assign-BFXHYTMF.js +78 -0
  29. package/dist/assign-BFXHYTMF.js.map +1 -0
  30. package/dist/audience-size-XWHZV2GH.js +74 -0
  31. package/dist/audience-size-XWHZV2GH.js.map +1 -0
  32. package/dist/audit-IYGRU7LD.js +152 -0
  33. package/dist/audit-IYGRU7LD.js.map +1 -0
  34. package/dist/autocomplete-SDDSJTAF.js +112 -0
  35. package/dist/autocomplete-SDDSJTAF.js.map +1 -0
  36. package/dist/avatars-I4H3NMEJ.js +38 -0
  37. package/dist/bid-pricing-OVYBDRMV.js +101 -0
  38. package/dist/bid-pricing-OVYBDRMV.js.map +1 -0
  39. package/dist/brand-3V7ECY7D.js +22 -0
  40. package/dist/brief-U2W7KMFC.js +539 -0
  41. package/dist/brief-U2W7KMFC.js.map +1 -0
  42. package/dist/campaign-groups-FJHBVUA3.js +97 -0
  43. package/dist/campaign-groups-FJHBVUA3.js.map +1 -0
  44. package/dist/campaign-writes-XKYYMZML.js +166 -0
  45. package/dist/campaign-writes-XKYYMZML.js.map +1 -0
  46. package/dist/campaigns-E5UW4I3X.js +111 -0
  47. package/dist/campaigns-E5UW4I3X.js.map +1 -0
  48. package/dist/campaigns-MCB76NPQ.js +107 -0
  49. package/dist/canvas-JCNKMGCG.js +46 -0
  50. package/dist/capabilities-CLTZCXCZ.js +145 -0
  51. package/dist/capabilities-CLTZCXCZ.js.map +1 -0
  52. package/dist/chatgpt-XFZ42NXC.js +47 -0
  53. package/dist/chats-DTJSBDWO.js +277 -0
  54. package/dist/chats-DTJSBDWO.js.map +1 -0
  55. package/dist/check-CZTS64AW.js +105 -0
  56. package/dist/check-CZTS64AW.js.map +1 -0
  57. package/dist/chunk-2YTBPRRG.js +207 -0
  58. package/dist/chunk-3SNCMEJB.js +97 -0
  59. package/dist/chunk-7QGFO35A.js +23 -0
  60. package/dist/chunk-AV7ALENU.js +191 -0
  61. package/dist/chunk-BRLFQ4VX.js +604 -0
  62. package/dist/chunk-CAZGM2NX.js +92 -0
  63. package/dist/chunk-CAZGM2NX.js.map +1 -0
  64. package/dist/chunk-DJE7UXYT.js +831 -0
  65. package/dist/chunk-EFWXYUSK.js +139 -0
  66. package/dist/chunk-EONSZAZB.js +3868 -0
  67. package/dist/chunk-FALJQCWL.js +661 -0
  68. package/dist/chunk-FALJQCWL.js.map +1 -0
  69. package/dist/chunk-FG3MV2XM.js +89 -0
  70. package/dist/chunk-FKG476GH.js +392 -0
  71. package/dist/chunk-FUGQSIYG.js +297 -0
  72. package/dist/chunk-G4OFH3MX.js +455 -0
  73. package/dist/chunk-G4OFH3MX.js.map +1 -0
  74. package/dist/chunk-GZ4A2VYW.js +39 -0
  75. package/dist/chunk-GZ4A2VYW.js.map +1 -0
  76. package/dist/chunk-HPLHAHG5.js +275 -0
  77. package/dist/chunk-I24YT2KG.js +122 -0
  78. package/dist/chunk-IFDZZOUC.js +903 -0
  79. package/dist/chunk-JVVUI55M.js +455 -0
  80. package/dist/chunk-KKSHEPBY.js +363 -0
  81. package/dist/chunk-KQ7RCLGC.js +547 -0
  82. package/dist/chunk-L7WMS5PW.js +172 -0
  83. package/dist/chunk-LBRO4MTL.js +19 -0
  84. package/dist/chunk-LNRPOULW.js +224 -0
  85. package/dist/chunk-LX6WC2XZ.js +942 -0
  86. package/dist/chunk-MMGTJBM6.js +142 -0
  87. package/dist/chunk-NZS3KEQ2.js +97 -0
  88. package/dist/chunk-NZS3KEQ2.js.map +1 -0
  89. package/dist/chunk-O37VU7FG.js +6799 -0
  90. package/dist/chunk-O37VU7FG.js.map +1 -0
  91. package/dist/chunk-OEZYSL3U.js +51 -0
  92. package/dist/chunk-OOVHBMQB.js +103 -0
  93. package/dist/chunk-PTH7VWKK.js +159 -0
  94. package/dist/chunk-PYD6IGW6.js +401 -0
  95. package/dist/chunk-PYD6IGW6.js.map +1 -0
  96. package/dist/chunk-QE2E4EYJ.js +349 -0
  97. package/dist/chunk-QE2E4EYJ.js.map +1 -0
  98. package/dist/chunk-QZF4BVKL.js +66 -0
  99. package/dist/chunk-RITUSBYO.js +61 -0
  100. package/dist/chunk-SSTL3A7Z.js +206 -0
  101. package/dist/chunk-SZNGQ2GF.js +64 -0
  102. package/dist/chunk-SZNGQ2GF.js.map +1 -0
  103. package/dist/chunk-TD4SO6TR.js +169 -0
  104. package/dist/chunk-UZ4RTOFG.js +91 -0
  105. package/dist/chunk-VAX7PFQV.js +592 -0
  106. package/dist/chunk-VDRSZK4P.js +494 -0
  107. package/dist/chunk-VNU2EYD4.js +344 -0
  108. package/dist/chunk-WT4WDIXA.js +156 -0
  109. package/dist/chunk-XEX23CIB.js +160 -0
  110. package/dist/chunk-XXDF25BW.js +8939 -0
  111. package/dist/chunk-YJ3LSFMX.js +249 -0
  112. package/dist/chunk-YVK5RT3B.js +197 -0
  113. package/dist/chunk-YWWRLZUR.js +433 -0
  114. package/dist/chunk-Z4S5BCVZ.js +57 -0
  115. package/dist/chunk-ZYGK7GAK.js +1079 -0
  116. package/dist/claim-TSFPWTQY.js +198 -0
  117. package/dist/claim-TSFPWTQY.js.map +1 -0
  118. package/dist/cli.js +38 -37
  119. package/dist/cli.js.map +1 -1
  120. package/dist/companies-P7FZNJQV.js +196 -0
  121. package/dist/companies-P7FZNJQV.js.map +1 -0
  122. package/dist/complete-SYDIHMD5.js +82 -0
  123. package/dist/complete-SYDIHMD5.js.map +1 -0
  124. package/dist/connect-COS6G45S.js +43 -0
  125. package/dist/conversation-UJOWMJRH.js +94 -0
  126. package/dist/conversation-UJOWMJRH.js.map +1 -0
  127. package/dist/conversions-ONOIEILU.js +138 -0
  128. package/dist/conversions-ONOIEILU.js.map +1 -0
  129. package/dist/create-DPQRYQXK.js +208 -0
  130. package/dist/create-DPQRYQXK.js.map +1 -0
  131. package/dist/create-JD76Z4A4.js +60 -0
  132. package/dist/create-JD76Z4A4.js.map +1 -0
  133. package/dist/create-NOT3HGP2.js +133 -0
  134. package/dist/create-NOT3HGP2.js.map +1 -0
  135. package/dist/create-ZYEB7SHF.js +236 -0
  136. package/dist/create-ZYEB7SHF.js.map +1 -0
  137. package/dist/creatives-LRSELC7Y.js +221 -0
  138. package/dist/creatives-LRSELC7Y.js.map +1 -0
  139. package/dist/creatives-SEQHJD2M.js +58 -0
  140. package/dist/credentials-LHPTUVVA.js +288 -0
  141. package/dist/credentials-LHPTUVVA.js.map +1 -0
  142. package/dist/critique-Q7GSZ5RP.js +1459 -0
  143. package/dist/critique-Q7GSZ5RP.js.map +1 -0
  144. package/dist/critique-RR2XOQCE.js +228 -0
  145. package/dist/critique-RR2XOQCE.js.map +1 -0
  146. package/dist/crm-J7EU32PL.js +319 -0
  147. package/dist/crm-J7EU32PL.js.map +1 -0
  148. package/dist/crm-MC444ZVU.js +225 -0
  149. package/dist/crm-MC444ZVU.js.map +1 -0
  150. package/dist/customers-LMSX33FO.js +57 -0
  151. package/dist/delete-BQBVATMF.js +55 -0
  152. package/dist/delete-BQBVATMF.js.map +1 -0
  153. package/dist/delete-K7A3AUPH.js +65 -0
  154. package/dist/delete-K7A3AUPH.js.map +1 -0
  155. package/dist/delete-VV2ICIHF.js +67 -0
  156. package/dist/delete-VV2ICIHF.js.map +1 -0
  157. package/dist/demographics-7GWUXXS6.js +139 -0
  158. package/dist/demographics-7GWUXXS6.js.map +1 -0
  159. package/dist/discard-3CLZ4DPD.js +67 -0
  160. package/dist/discard-3CLZ4DPD.js.map +1 -0
  161. package/dist/domain-ZS74BSE6.js +99 -0
  162. package/dist/domain-ZS74BSE6.js.map +1 -0
  163. package/dist/draft-J3B33RAZ.js +308 -0
  164. package/dist/draft-J3B33RAZ.js.map +1 -0
  165. package/dist/draft-MZLWVX3D.js +218 -0
  166. package/dist/draft-MZLWVX3D.js.map +1 -0
  167. package/dist/draft-R56PIXCV.js +333 -0
  168. package/dist/draft-R56PIXCV.js.map +1 -0
  169. package/dist/experiment-7RJ5X2LL.js +1397 -0
  170. package/dist/experiments-NOSJJMYI.js +234 -0
  171. package/dist/experiments-NOSJJMYI.js.map +1 -0
  172. package/dist/facets-E6SHYUAI.js +115 -0
  173. package/dist/facets-E6SHYUAI.js.map +1 -0
  174. package/dist/feedback-HXCQBV7S.js +107 -0
  175. package/dist/feedback-HXCQBV7S.js.map +1 -0
  176. package/dist/feedback-record-GXPYXNT6.js +261 -0
  177. package/dist/feedback-record-GXPYXNT6.js.map +1 -0
  178. package/dist/fetch-HMUGSRE4.js +177 -0
  179. package/dist/fetch-HMUGSRE4.js.map +1 -0
  180. package/dist/find-2EPXK5RF.js +134 -0
  181. package/dist/fit-W7UNFZT5.js +63 -0
  182. package/dist/flows-SO5J3M3X.js +248 -0
  183. package/dist/flows-SO5J3M3X.js.map +1 -0
  184. package/dist/fonts-N42UYWTX.js +37 -0
  185. package/dist/forecast-24LGJVLC.js +119 -0
  186. package/dist/forecast-24LGJVLC.js.map +1 -0
  187. package/dist/funnel-NYT36B3C.js +395 -0
  188. package/dist/funnel-NYT36B3C.js.map +1 -0
  189. package/dist/ga4-6EIQC2TG.js +55 -0
  190. package/dist/get-KAGO4EC5.js +80 -0
  191. package/dist/get-KAGO4EC5.js.map +1 -0
  192. package/dist/get-PZX27LQY.js +38 -0
  193. package/dist/get-PZX27LQY.js.map +1 -0
  194. package/dist/get-R5JAFHTH.js +57 -0
  195. package/dist/get-R5JAFHTH.js.map +1 -0
  196. package/dist/google-O5OI6QFU.js +136 -0
  197. package/dist/google-ads-6X4BHGUR.js +196 -0
  198. package/dist/google-ads-6X4BHGUR.js.map +1 -0
  199. package/dist/gsc-BM3T2GDL.js +30 -0
  200. package/dist/history-LGOWYLBE.js +134 -0
  201. package/dist/history-LGOWYLBE.js.map +1 -0
  202. package/dist/hubspot-LJB3ETUT.js +780 -0
  203. package/dist/hubspot-LJB3ETUT.js.map +1 -0
  204. package/dist/icon-B7DG53S5.js +137 -0
  205. package/dist/ideas-DYN2DMFN.js +41 -0
  206. package/dist/images-EQCUXEHF.js +92 -0
  207. package/dist/ingest-B46AY3QU.js +24 -0
  208. package/dist/ingest-T7ZS2R4U.js +108 -0
  209. package/dist/ingest-T7ZS2R4U.js.map +1 -0
  210. package/dist/inspect-BSNGAT2S.js +190 -0
  211. package/dist/inspect-BSNGAT2S.js.map +1 -0
  212. package/dist/inspiration-TCCKM4R7.js +53 -0
  213. package/dist/keyword-metrics-KNTIN4ZK.js +198 -0
  214. package/dist/keyword-metrics-KNTIN4ZK.js.map +1 -0
  215. package/dist/keywords-for-site-S4MXGXWR.js +129 -0
  216. package/dist/keywords-for-site-S4MXGXWR.js.map +1 -0
  217. package/dist/landing-WVPA7NBR.js +28 -0
  218. package/dist/leads-EINV5FK3.js +113 -0
  219. package/dist/leads-EINV5FK3.js.map +1 -0
  220. package/dist/learn-7Z2VR6MS.js +205 -0
  221. package/dist/learn-7Z2VR6MS.js.map +1 -0
  222. package/dist/line-item-writes-Z3TIB5KZ.js +209 -0
  223. package/dist/line-item-writes-Z3TIB5KZ.js.map +1 -0
  224. package/dist/line-items-OEWYOPFP.js +103 -0
  225. package/dist/link-KYHUIPJE.js +65 -0
  226. package/dist/link-KYHUIPJE.js.map +1 -0
  227. package/dist/linkedin-JVB4HXJC.js +1314 -0
  228. package/dist/linkedin-JVB4HXJC.js.map +1 -0
  229. package/dist/list-EORTO73V.js +93 -0
  230. package/dist/list-EORTO73V.js.map +1 -0
  231. package/dist/list-QQVLURKH.js +152 -0
  232. package/dist/list-QQVLURKH.js.map +1 -0
  233. package/dist/list-QWGKRUSM.js +65 -0
  234. package/dist/list-QWGKRUSM.js.map +1 -0
  235. package/dist/list-WRBWQASJ.js +50 -0
  236. package/dist/list-Z6NMNK3T.js +304 -0
  237. package/dist/list-Z6NMNK3T.js.map +1 -0
  238. package/dist/log-RUMKYPYK.js +93 -0
  239. package/dist/log-RUMKYPYK.js.map +1 -0
  240. package/dist/logo-QTSBKP2J.js +18 -0
  241. package/dist/make-IJGCQA7C.js +1354 -0
  242. package/dist/make-IJGCQA7C.js.map +1 -0
  243. package/dist/map-QZHIJFQT.js +434 -0
  244. package/dist/map-QZHIJFQT.js.map +1 -0
  245. package/dist/mcp-ZH2XDV5P.js +715 -0
  246. package/dist/mcp-ZH2XDV5P.js.map +1 -0
  247. package/dist/media-sources-SQ2RPDBO.js +35 -0
  248. package/dist/media-sources-SQ2RPDBO.js.map +1 -0
  249. package/dist/members-4YX7JEZM.js +45 -0
  250. package/dist/members-4YX7JEZM.js.map +1 -0
  251. package/dist/normalize-ABIWLRIT.js +142 -0
  252. package/dist/normalize-ABIWLRIT.js.map +1 -0
  253. package/dist/options-SVCQVTNE.js +123 -0
  254. package/dist/options-SVCQVTNE.js.map +1 -0
  255. package/dist/organization-FNKDC742.js +947 -0
  256. package/dist/organization-FNKDC742.js.map +1 -0
  257. package/dist/performance-HTU5FR2K.js +25 -0
  258. package/dist/plan-W2K45F7K.js +207 -0
  259. package/dist/posts-3DAPTBH2.js +34 -0
  260. package/dist/posts-3DAPTBH2.js.map +1 -0
  261. package/dist/promoted-tweet-writes-DD3CJNWW.js +181 -0
  262. package/dist/promoted-tweet-writes-DD3CJNWW.js.map +1 -0
  263. package/dist/promoted-tweets-TTWN5OMW.js +119 -0
  264. package/dist/publish-Z62KGDJ2.js +342 -0
  265. package/dist/publish-Z62KGDJ2.js.map +1 -0
  266. package/dist/reddit-6C3PT5CT.js +27 -0
  267. package/dist/refresh-HCQXVFVR.js +95 -0
  268. package/dist/refresh-HCQXVFVR.js.map +1 -0
  269. package/dist/refresh-ZCGH64OZ.js +42 -0
  270. package/dist/refresh-ZCGH64OZ.js.map +1 -0
  271. package/dist/release-FIHW2HCH.js +61 -0
  272. package/dist/release-FIHW2HCH.js.map +1 -0
  273. package/dist/remove-CBR7NVMI.js +51 -0
  274. package/dist/remove-CBR7NVMI.js.map +1 -0
  275. package/dist/remove-PUZP5GWN.js +49 -0
  276. package/dist/remove-PUZP5GWN.js.map +1 -0
  277. package/dist/reopen-EJGLRQWR.js +64 -0
  278. package/dist/reopen-EJGLRQWR.js.map +1 -0
  279. package/dist/rerun-TVBZXASH.js +91 -0
  280. package/dist/rerun-TVBZXASH.js.map +1 -0
  281. package/dist/research-L25D4WHQ.js +263 -0
  282. package/dist/research-L25D4WHQ.js.map +1 -0
  283. package/dist/research-YCMMQVK6.js +62 -0
  284. package/dist/reset-HKKCWKZ7.js +55 -0
  285. package/dist/reset-HKKCWKZ7.js.map +1 -0
  286. package/dist/reset-SRL6I6GP.js +55 -0
  287. package/dist/reset-SRL6I6GP.js.map +1 -0
  288. package/dist/resolve-POMTTAFR.js +122 -0
  289. package/dist/resolve-POMTTAFR.js.map +1 -0
  290. package/dist/retry-MEPTOAV2.js +61 -0
  291. package/dist/retry-MEPTOAV2.js.map +1 -0
  292. package/dist/retry-RNGM3KKA.js +63 -0
  293. package/dist/retry-RNGM3KKA.js.map +1 -0
  294. package/dist/revenue-X4KPTSAM.js +89 -0
  295. package/dist/revenue-X4KPTSAM.js.map +1 -0
  296. package/dist/rules-VK7YA23Q.js +97 -0
  297. package/dist/rules-VK7YA23Q.js.map +1 -0
  298. package/dist/rules-add-VG7AT6EG.js +463 -0
  299. package/dist/rules-add-VG7AT6EG.js.map +1 -0
  300. package/dist/run-DIDQSZU7.js +67 -0
  301. package/dist/run-DIDQSZU7.js.map +1 -0
  302. package/dist/run-SR7DJ7M5.js +66 -0
  303. package/dist/scaffold-ad-46GTFUMP.js +1512 -0
  304. package/dist/scaffold-ad-46GTFUMP.js.map +1 -0
  305. package/dist/scaffold-static-ad-U63V4UHR.js +1006 -0
  306. package/dist/scaffold-static-ad-U63V4UHR.js.map +1 -0
  307. package/dist/scaffold-video-4DNTURH6.js +884 -0
  308. package/dist/scaffold-video-4DNTURH6.js.map +1 -0
  309. package/dist/schedule-JO66N7XO.js +62 -0
  310. package/dist/schedule-JO66N7XO.js.map +1 -0
  311. package/dist/schedule-JZBIX6LH.js +67 -0
  312. package/dist/schedule-JZBIX6LH.js.map +1 -0
  313. package/dist/scheduled-agents-N63EZNY6.js +50 -0
  314. package/dist/schema-B2XANMEY.js +133 -0
  315. package/dist/schema-B2XANMEY.js.map +1 -0
  316. package/dist/schema-C6SGBNA6.js +69 -0
  317. package/dist/search-7GHS3OUZ.js +51 -0
  318. package/dist/search-7GHS3OUZ.js.map +1 -0
  319. package/dist/search-W5HZUJA2.js +175 -0
  320. package/dist/search-W5HZUJA2.js.map +1 -0
  321. package/dist/select-LMGLNFWB.js +102 -0
  322. package/dist/select-LMGLNFWB.js.map +1 -0
  323. package/dist/set-prompt-M5E3UZDM.js +194 -0
  324. package/dist/set-prompt-M5E3UZDM.js.map +1 -0
  325. package/dist/setup-links-ERBQSKAB.js +142 -0
  326. package/dist/setup-links-ERBQSKAB.js.map +1 -0
  327. package/dist/site-PNVFJRYK.js +178 -0
  328. package/dist/site-PNVFJRYK.js.map +1 -0
  329. package/dist/sources-DMZJPLKC.js +455 -0
  330. package/dist/sources-DMZJPLKC.js.map +1 -0
  331. package/dist/sources-HN3GCEDX.js +30 -0
  332. package/dist/stale-VWN25WTL.js +72 -0
  333. package/dist/stale-VWN25WTL.js.map +1 -0
  334. package/dist/stats-CVF6AC7R.js +34 -0
  335. package/dist/status-SF7DTPCJ.js +63 -0
  336. package/dist/status-SF7DTPCJ.js.map +1 -0
  337. package/dist/stock-4LPQ6SM7.js +179 -0
  338. package/dist/studio-NZ6WQ7OE.js +49 -0
  339. package/dist/suggest-WMMEQCUH.js +66 -0
  340. package/dist/suggest-WMMEQCUH.js.map +1 -0
  341. package/dist/sync-F7VNZLWY.js +55 -0
  342. package/dist/sync-F7VNZLWY.js.map +1 -0
  343. package/dist/sync-HVNDPBOD.js +55 -0
  344. package/dist/sync-HVNDPBOD.js.map +1 -0
  345. package/dist/sync-definition-CKEUYKWN.js +65 -0
  346. package/dist/tag-KTQ2FV5C.js +57 -0
  347. package/dist/tag-KTQ2FV5C.js.map +1 -0
  348. package/dist/tag-manager-FLXXLNKP.js +43 -0
  349. package/dist/tags-EUOOSAKN.js +26 -0
  350. package/dist/tags-KOMAP2G5.js +21 -0
  351. package/dist/tags-KOMAP2G5.js.map +1 -0
  352. package/dist/tags-TKXJGTR3.js +21 -0
  353. package/dist/tags-TKXJGTR3.js.map +1 -0
  354. package/dist/tags-VWIPDCUA.js +225 -0
  355. package/dist/tags-VWIPDCUA.js.map +1 -0
  356. package/dist/tags-XAB4HWGW.js +21 -0
  357. package/dist/tags-XAB4HWGW.js.map +1 -0
  358. package/dist/targeting-criteria-HE7K52WN.js +113 -0
  359. package/dist/targets-NA4XPDBF.js +104 -0
  360. package/dist/targets-NA4XPDBF.js.map +1 -0
  361. package/dist/testimonials-3Q5XM7JD.js +32 -0
  362. package/dist/top-companies-TKO4QGPJ.js +109 -0
  363. package/dist/top-companies-TKO4QGPJ.js.map +1 -0
  364. package/dist/translate-YVIZ5T44.js +605 -0
  365. package/dist/translate-YVIZ5T44.js.map +1 -0
  366. package/dist/triggers-QX7VW7UO.js +143 -0
  367. package/dist/triggers-QX7VW7UO.js.map +1 -0
  368. package/dist/unlink-64SRPUNG.js +68 -0
  369. package/dist/unlink-64SRPUNG.js.map +1 -0
  370. package/dist/unstage-5X2MOUMF.js +86 -0
  371. package/dist/unstage-5X2MOUMF.js.map +1 -0
  372. package/dist/update-22ZBHURE.js +81 -0
  373. package/dist/update-22ZBHURE.js.map +1 -0
  374. package/dist/update-2LTPSGWT.js +99 -0
  375. package/dist/update-2LTPSGWT.js.map +1 -0
  376. package/dist/update-DOKS7ATM.js +189 -0
  377. package/dist/update-DOKS7ATM.js.map +1 -0
  378. package/dist/update-FB6X463M.js +64 -0
  379. package/dist/update-FB6X463M.js.map +1 -0
  380. package/dist/update-QIZ7XFAM.js +153 -0
  381. package/dist/update-QIZ7XFAM.js.map +1 -0
  382. package/dist/upload-XJ7TUVIK.js +127 -0
  383. package/dist/upload-XJ7TUVIK.js.map +1 -0
  384. package/dist/url-params-KLQOLNPS.js +99 -0
  385. package/dist/url-params-KLQOLNPS.js.map +1 -0
  386. package/dist/validate-YTBJBG44.js +118 -0
  387. package/dist/validate-YTBJBG44.js.map +1 -0
  388. package/dist/videos-WAPUPJVT.js +39 -0
  389. package/dist/viewer-check-GHQA3UY2.js +81 -0
  390. package/dist/web-6JMWERTT.js +141 -0
  391. package/dist/web-6JMWERTT.js.map +1 -0
  392. package/dist/winning-ads-XCVUAIOU.js +86 -0
  393. package/dist/write-commands-N74CDMQM.js +1493 -0
  394. package/dist/write-commands-N74CDMQM.js.map +1 -0
  395. package/dist/x-SI4KYDEY.js +47 -0
  396. package/package.json +1 -1
  397. package/dist/account-UHNR5KTE.js +0 -79
  398. package/dist/account-UHNR5KTE.js.map +0 -1
  399. package/dist/accounts-KMLXHADA.js +0 -77
  400. package/dist/accounts-KMLXHADA.js.map +0 -1
  401. package/dist/accounts-QDGNTSTV.js +0 -611
  402. package/dist/accounts-QDGNTSTV.js.map +0 -1
  403. package/dist/actions-QL5UD2W4.js +0 -55
  404. package/dist/activecampaign-5OD45ROS.js +0 -935
  405. package/dist/activecampaign-5OD45ROS.js.map +0 -1
  406. package/dist/add-2F7BEVYD.js +0 -105
  407. package/dist/add-2F7BEVYD.js.map +0 -1
  408. package/dist/add-6K6LO7CM.js +0 -104
  409. package/dist/add-6K6LO7CM.js.map +0 -1
  410. package/dist/add-LYDJZDGO.js +0 -302
  411. package/dist/add-LYDJZDGO.js.map +0 -1
  412. package/dist/ads-DHPJFU52.js +0 -40
  413. package/dist/advertisers-23LU7GTV.js +0 -120
  414. package/dist/advertisers-23LU7GTV.js.map +0 -1
  415. package/dist/analytics-DVD4OBBR.js +0 -1976
  416. package/dist/analytics-DVD4OBBR.js.map +0 -1
  417. package/dist/analytics-HO2SLL4W.js +0 -433
  418. package/dist/analytics-HO2SLL4W.js.map +0 -1
  419. package/dist/assign-CLKJKH2B.js +0 -77
  420. package/dist/assign-CLKJKH2B.js.map +0 -1
  421. package/dist/audience-size-NNYYXODL.js +0 -73
  422. package/dist/audience-size-NNYYXODL.js.map +0 -1
  423. package/dist/audit-KB4P2XGS.js +0 -151
  424. package/dist/audit-KB4P2XGS.js.map +0 -1
  425. package/dist/autocomplete-VZD2SMTE.js +0 -111
  426. package/dist/autocomplete-VZD2SMTE.js.map +0 -1
  427. package/dist/avatars-FKOO6VZ2.js +0 -38
  428. package/dist/bid-pricing-6LLXOLLI.js +0 -100
  429. package/dist/bid-pricing-6LLXOLLI.js.map +0 -1
  430. package/dist/brand-NNWHBIAX.js +0 -22
  431. package/dist/brief-CPJQWT6W.js +0 -538
  432. package/dist/brief-CPJQWT6W.js.map +0 -1
  433. package/dist/campaign-groups-YPYNXOWU.js +0 -95
  434. package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
  435. package/dist/campaign-writes-UJ4L2O6G.js +0 -165
  436. package/dist/campaign-writes-UJ4L2O6G.js.map +0 -1
  437. package/dist/campaigns-HLBZRH5A.js +0 -107
  438. package/dist/campaigns-N44ZDGB5.js +0 -109
  439. package/dist/campaigns-N44ZDGB5.js.map +0 -1
  440. package/dist/canvas-D64GLWUO.js +0 -46
  441. package/dist/capabilities-LWXCWMIY.js +0 -144
  442. package/dist/capabilities-LWXCWMIY.js.map +0 -1
  443. package/dist/chatgpt-YI6YNACI.js +0 -47
  444. package/dist/chats-7WGC2CVW.js +0 -276
  445. package/dist/chats-7WGC2CVW.js.map +0 -1
  446. package/dist/check-EH6BXWWL.js +0 -104
  447. package/dist/check-EH6BXWWL.js.map +0 -1
  448. package/dist/chunk-237WE5LX.js +0 -455
  449. package/dist/chunk-237WE5LX.js.map +0 -1
  450. package/dist/chunk-2B772ZEA.js +0 -169
  451. package/dist/chunk-2KRK667G.js +0 -51
  452. package/dist/chunk-2TVXJPGR.js +0 -103
  453. package/dist/chunk-3AMLOCXY.js +0 -392
  454. package/dist/chunk-3B5LPK6D.js +0 -658
  455. package/dist/chunk-3B5LPK6D.js.map +0 -1
  456. package/dist/chunk-3N5A44NQ.js +0 -122
  457. package/dist/chunk-3WAYZQNV.js +0 -61
  458. package/dist/chunk-5A257KJA.js +0 -160
  459. package/dist/chunk-6QGS3RQP.js +0 -363
  460. package/dist/chunk-AFD32O4A.js +0 -494
  461. package/dist/chunk-AW2GKIGS.js +0 -433
  462. package/dist/chunk-CYSBNCPX.js +0 -55
  463. package/dist/chunk-CYSBNCPX.js.map +0 -1
  464. package/dist/chunk-DAO63OOP.js +0 -6352
  465. package/dist/chunk-DAO63OOP.js.map +0 -1
  466. package/dist/chunk-EMQUW6JB.js +0 -942
  467. package/dist/chunk-EW3JEKIV.js +0 -139
  468. package/dist/chunk-FBFWMTOP.js +0 -19
  469. package/dist/chunk-GXDLWBOY.js +0 -73
  470. package/dist/chunk-GXDLWBOY.js.map +0 -1
  471. package/dist/chunk-GXGYTFZA.js +0 -8939
  472. package/dist/chunk-I7J7YQXZ.js +0 -142
  473. package/dist/chunk-IBY44U2M.js +0 -1079
  474. package/dist/chunk-IFXGCI33.js +0 -297
  475. package/dist/chunk-IKLHXGMF.js +0 -91
  476. package/dist/chunk-IYTPWAN3.js +0 -604
  477. package/dist/chunk-J3CWAERS.js +0 -3868
  478. package/dist/chunk-JH2L5CQD.js +0 -206
  479. package/dist/chunk-JUVVCA7B.js +0 -97
  480. package/dist/chunk-MK6XJUCQ.js +0 -197
  481. package/dist/chunk-N3I6ZXR7.js +0 -66
  482. package/dist/chunk-NBO2NSAW.js +0 -592
  483. package/dist/chunk-NEU5QD2C.js +0 -249
  484. package/dist/chunk-NKIBXOHT.js +0 -344
  485. package/dist/chunk-OE3MIV4F.js +0 -547
  486. package/dist/chunk-P2MFWJR3.js +0 -903
  487. package/dist/chunk-PHCIFBP3.js +0 -89
  488. package/dist/chunk-PTUXBO5O.js +0 -224
  489. package/dist/chunk-Q3LXLWZY.js +0 -275
  490. package/dist/chunk-Q5WBTVA7.js +0 -455
  491. package/dist/chunk-RDEAVCMF.js +0 -399
  492. package/dist/chunk-RDEAVCMF.js.map +0 -1
  493. package/dist/chunk-RGMKXNQP.js +0 -23
  494. package/dist/chunk-RZTKCCUL.js +0 -831
  495. package/dist/chunk-TTKBNBQF.js +0 -156
  496. package/dist/chunk-VB3XUR6A.js +0 -207
  497. package/dist/chunk-XCKINS7K.js +0 -57
  498. package/dist/chunk-Y6GKV7CU.js +0 -346
  499. package/dist/chunk-Y6GKV7CU.js.map +0 -1
  500. package/dist/chunk-Z2GQREJY.js +0 -159
  501. package/dist/chunk-ZDAVSTEE.js +0 -172
  502. package/dist/chunk-ZXCSOVS5.js +0 -191
  503. package/dist/claim-SVDCQ2AI.js +0 -197
  504. package/dist/claim-SVDCQ2AI.js.map +0 -1
  505. package/dist/companies-BYMYQK6A.js +0 -195
  506. package/dist/companies-BYMYQK6A.js.map +0 -1
  507. package/dist/complete-NEH3MWRI.js +0 -81
  508. package/dist/complete-NEH3MWRI.js.map +0 -1
  509. package/dist/connect-5PGL7ZOM.js +0 -42
  510. package/dist/conversation-CSOKJXDW.js +0 -93
  511. package/dist/conversation-CSOKJXDW.js.map +0 -1
  512. package/dist/conversions-4JOTTFEH.js +0 -135
  513. package/dist/conversions-4JOTTFEH.js.map +0 -1
  514. package/dist/create-2XYMBULY.js +0 -207
  515. package/dist/create-2XYMBULY.js.map +0 -1
  516. package/dist/create-56PTZABQ.js +0 -235
  517. package/dist/create-56PTZABQ.js.map +0 -1
  518. package/dist/create-D6S6TGWY.js +0 -59
  519. package/dist/create-D6S6TGWY.js.map +0 -1
  520. package/dist/create-SMW4O5PC.js +0 -132
  521. package/dist/create-SMW4O5PC.js.map +0 -1
  522. package/dist/creatives-OO76DAFS.js +0 -58
  523. package/dist/creatives-VJUYWJL6.js +0 -182
  524. package/dist/creatives-VJUYWJL6.js.map +0 -1
  525. package/dist/credentials-2ONYUJW6.js +0 -287
  526. package/dist/credentials-2ONYUJW6.js.map +0 -1
  527. package/dist/critique-NDDFSGPE.js +0 -1458
  528. package/dist/critique-NDDFSGPE.js.map +0 -1
  529. package/dist/critique-YXZVMLZ4.js +0 -227
  530. package/dist/critique-YXZVMLZ4.js.map +0 -1
  531. package/dist/crm-Q6CEP5XV.js +0 -224
  532. package/dist/crm-Q6CEP5XV.js.map +0 -1
  533. package/dist/crm-WRONZYDH.js +0 -318
  534. package/dist/crm-WRONZYDH.js.map +0 -1
  535. package/dist/customers-2EFYSCU2.js +0 -56
  536. package/dist/delete-7WEVC3FS.js +0 -66
  537. package/dist/delete-7WEVC3FS.js.map +0 -1
  538. package/dist/delete-RBWK255M.js +0 -54
  539. package/dist/delete-RBWK255M.js.map +0 -1
  540. package/dist/delete-VN4WWMQF.js +0 -64
  541. package/dist/delete-VN4WWMQF.js.map +0 -1
  542. package/dist/demographics-I5XZ435C.js +0 -138
  543. package/dist/demographics-I5XZ435C.js.map +0 -1
  544. package/dist/discard-XJLIXTNM.js +0 -66
  545. package/dist/discard-XJLIXTNM.js.map +0 -1
  546. package/dist/domain-M7AEGAYI.js +0 -98
  547. package/dist/domain-M7AEGAYI.js.map +0 -1
  548. package/dist/draft-5DQI4W5F.js +0 -306
  549. package/dist/draft-5DQI4W5F.js.map +0 -1
  550. package/dist/draft-7IIYHSY2.js +0 -332
  551. package/dist/draft-7IIYHSY2.js.map +0 -1
  552. package/dist/draft-CN6GKVBF.js +0 -217
  553. package/dist/draft-CN6GKVBF.js.map +0 -1
  554. package/dist/experiment-IDDWRCJ7.js +0 -1397
  555. package/dist/facets-ZLZ6LIHN.js +0 -114
  556. package/dist/facets-ZLZ6LIHN.js.map +0 -1
  557. package/dist/feedback-7LEX2P5Q.js +0 -106
  558. package/dist/feedback-7LEX2P5Q.js.map +0 -1
  559. package/dist/feedback-record-P4JJ63KA.js +0 -260
  560. package/dist/feedback-record-P4JJ63KA.js.map +0 -1
  561. package/dist/fetch-MIVCEHXZ.js +0 -176
  562. package/dist/fetch-MIVCEHXZ.js.map +0 -1
  563. package/dist/find-VHN34MWL.js +0 -134
  564. package/dist/fit-SS6HSZPU.js +0 -62
  565. package/dist/flows-UTIIHDNE.js +0 -247
  566. package/dist/flows-UTIIHDNE.js.map +0 -1
  567. package/dist/fonts-YPNN7ZJP.js +0 -36
  568. package/dist/forecast-OBSHG2GJ.js +0 -118
  569. package/dist/forecast-OBSHG2GJ.js.map +0 -1
  570. package/dist/funnel-Z2VLXUEQ.js +0 -394
  571. package/dist/funnel-Z2VLXUEQ.js.map +0 -1
  572. package/dist/ga4-ZPAEF2G2.js +0 -55
  573. package/dist/get-MDAO6I7T.js +0 -56
  574. package/dist/get-MDAO6I7T.js.map +0 -1
  575. package/dist/get-ZB553BSH.js +0 -79
  576. package/dist/get-ZB553BSH.js.map +0 -1
  577. package/dist/google-C3X7O2UO.js +0 -136
  578. package/dist/google-ads-FTWL772L.js +0 -195
  579. package/dist/google-ads-FTWL772L.js.map +0 -1
  580. package/dist/gsc-SDDHGTZK.js +0 -30
  581. package/dist/history-WKJYKDMG.js +0 -133
  582. package/dist/history-WKJYKDMG.js.map +0 -1
  583. package/dist/hubspot-EPHVEPOO.js +0 -779
  584. package/dist/hubspot-EPHVEPOO.js.map +0 -1
  585. package/dist/icon-MYPDC6FM.js +0 -137
  586. package/dist/ideas-3PBH7VEX.js +0 -40
  587. package/dist/images-J35C3WG4.js +0 -92
  588. package/dist/ingest-5QOPUKFE.js +0 -107
  589. package/dist/ingest-5QOPUKFE.js.map +0 -1
  590. package/dist/ingest-OKUYP632.js +0 -23
  591. package/dist/inspect-PMNCP6MV.js +0 -189
  592. package/dist/inspect-PMNCP6MV.js.map +0 -1
  593. package/dist/inspiration-QAL7NS7G.js +0 -53
  594. package/dist/keyword-metrics-R752SJIT.js +0 -197
  595. package/dist/keyword-metrics-R752SJIT.js.map +0 -1
  596. package/dist/keywords-for-site-7UWPJYQF.js +0 -128
  597. package/dist/keywords-for-site-7UWPJYQF.js.map +0 -1
  598. package/dist/landing-CBVIOGJ5.js +0 -28
  599. package/dist/leads-LIJS6Y5W.js +0 -90
  600. package/dist/leads-LIJS6Y5W.js.map +0 -1
  601. package/dist/learn-N6QV7GXA.js +0 -204
  602. package/dist/learn-N6QV7GXA.js.map +0 -1
  603. package/dist/line-item-writes-3WPJXKIL.js +0 -208
  604. package/dist/line-item-writes-3WPJXKIL.js.map +0 -1
  605. package/dist/line-items-ZOFKOGAA.js +0 -103
  606. package/dist/link-DDRQKOUL.js +0 -64
  607. package/dist/link-DDRQKOUL.js.map +0 -1
  608. package/dist/linkedin-UWZCF66X.js +0 -1057
  609. package/dist/linkedin-UWZCF66X.js.map +0 -1
  610. package/dist/list-5PLXVPLB.js +0 -151
  611. package/dist/list-5PLXVPLB.js.map +0 -1
  612. package/dist/list-RC2NX6AX.js +0 -50
  613. package/dist/list-VSJISE7U.js +0 -303
  614. package/dist/list-VSJISE7U.js.map +0 -1
  615. package/dist/list-WTVOBQYX.js +0 -64
  616. package/dist/list-WTVOBQYX.js.map +0 -1
  617. package/dist/log-YKKPROLZ.js +0 -92
  618. package/dist/log-YKKPROLZ.js.map +0 -1
  619. package/dist/logo-WE2UELX6.js +0 -18
  620. package/dist/make-RNOWBLZQ.js +0 -1353
  621. package/dist/make-RNOWBLZQ.js.map +0 -1
  622. package/dist/map-WTDPQLVO.js +0 -433
  623. package/dist/map-WTDPQLVO.js.map +0 -1
  624. package/dist/mcp-XJNSCPP3.js +0 -714
  625. package/dist/mcp-XJNSCPP3.js.map +0 -1
  626. package/dist/media-sources-JGBDDXZ5.js +0 -32
  627. package/dist/media-sources-JGBDDXZ5.js.map +0 -1
  628. package/dist/members-O3BTMRXX.js +0 -44
  629. package/dist/members-O3BTMRXX.js.map +0 -1
  630. package/dist/normalize-R5AYLA2J.js +0 -141
  631. package/dist/normalize-R5AYLA2J.js.map +0 -1
  632. package/dist/options-AILRY7JY.js +0 -122
  633. package/dist/options-AILRY7JY.js.map +0 -1
  634. package/dist/organization-KJJXZLVK.js +0 -946
  635. package/dist/organization-KJJXZLVK.js.map +0 -1
  636. package/dist/performance-7YU4HOGH.js +0 -24
  637. package/dist/plan-ZC4JY4IG.js +0 -207
  638. package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
  639. package/dist/promoted-tweet-writes-TNELWPVG.js.map +0 -1
  640. package/dist/promoted-tweets-76WKUFJQ.js +0 -119
  641. package/dist/publish-BKLHCKHB.js +0 -341
  642. package/dist/publish-BKLHCKHB.js.map +0 -1
  643. package/dist/reddit-YK3YUZEI.js +0 -26
  644. package/dist/refresh-WIII7KXB.js +0 -94
  645. package/dist/refresh-WIII7KXB.js.map +0 -1
  646. package/dist/release-ZHXYQI7G.js +0 -60
  647. package/dist/release-ZHXYQI7G.js.map +0 -1
  648. package/dist/remove-NOX4BXWK.js +0 -50
  649. package/dist/remove-NOX4BXWK.js.map +0 -1
  650. package/dist/remove-VLWRCOEZ.js +0 -48
  651. package/dist/remove-VLWRCOEZ.js.map +0 -1
  652. package/dist/reopen-NLWKK5HB.js +0 -63
  653. package/dist/reopen-NLWKK5HB.js.map +0 -1
  654. package/dist/rerun-DZWQNMZQ.js +0 -90
  655. package/dist/rerun-DZWQNMZQ.js.map +0 -1
  656. package/dist/research-Q3P76RHN.js +0 -62
  657. package/dist/research-UDZBCDNX.js +0 -262
  658. package/dist/research-UDZBCDNX.js.map +0 -1
  659. package/dist/reset-5UHFX7QY.js +0 -54
  660. package/dist/reset-5UHFX7QY.js.map +0 -1
  661. package/dist/reset-MTRJQUP7.js +0 -54
  662. package/dist/reset-MTRJQUP7.js.map +0 -1
  663. package/dist/resolve-DA72VT7Q.js +0 -121
  664. package/dist/resolve-DA72VT7Q.js.map +0 -1
  665. package/dist/retry-LQUBX5TK.js +0 -62
  666. package/dist/retry-LQUBX5TK.js.map +0 -1
  667. package/dist/retry-U6F4CS6O.js +0 -60
  668. package/dist/retry-U6F4CS6O.js.map +0 -1
  669. package/dist/rules-VS5PZ7VO.js +0 -96
  670. package/dist/rules-VS5PZ7VO.js.map +0 -1
  671. package/dist/rules-add-LMVZYDXE.js +0 -462
  672. package/dist/rules-add-LMVZYDXE.js.map +0 -1
  673. package/dist/run-6PRA2YSD.js +0 -65
  674. package/dist/run-R6COFNOR.js +0 -66
  675. package/dist/run-R6COFNOR.js.map +0 -1
  676. package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
  677. package/dist/scaffold-ad-3OVJ7VZQ.js.map +0 -1
  678. package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
  679. package/dist/scaffold-static-ad-DDRA3Q5I.js.map +0 -1
  680. package/dist/scaffold-video-3JZYFYFU.js +0 -883
  681. package/dist/scaffold-video-3JZYFYFU.js.map +0 -1
  682. package/dist/schedule-BRSYHMKR.js +0 -66
  683. package/dist/schedule-BRSYHMKR.js.map +0 -1
  684. package/dist/schedule-ED2YDUPY.js +0 -61
  685. package/dist/schedule-ED2YDUPY.js.map +0 -1
  686. package/dist/scheduled-agents-5P67MVGX.js +0 -50
  687. package/dist/schema-4XVKERSA.js +0 -132
  688. package/dist/schema-4XVKERSA.js.map +0 -1
  689. package/dist/schema-RRAQW3OS.js +0 -69
  690. package/dist/search-Y2UMIQ57.js +0 -174
  691. package/dist/search-Y2UMIQ57.js.map +0 -1
  692. package/dist/select-OZ4E6VLF.js +0 -101
  693. package/dist/select-OZ4E6VLF.js.map +0 -1
  694. package/dist/set-prompt-O4YAE4CE.js +0 -193
  695. package/dist/set-prompt-O4YAE4CE.js.map +0 -1
  696. package/dist/setup-links-2GJYCV2A.js +0 -141
  697. package/dist/setup-links-2GJYCV2A.js.map +0 -1
  698. package/dist/site-47B6V2UX.js +0 -177
  699. package/dist/site-47B6V2UX.js.map +0 -1
  700. package/dist/sources-DXPZAPQ7.js +0 -454
  701. package/dist/sources-DXPZAPQ7.js.map +0 -1
  702. package/dist/sources-NDXYTASG.js +0 -30
  703. package/dist/stale-VLVBO2L6.js +0 -71
  704. package/dist/stale-VLVBO2L6.js.map +0 -1
  705. package/dist/stats-37OFAMPW.js +0 -34
  706. package/dist/status-4ODD46XY.js +0 -62
  707. package/dist/status-4ODD46XY.js.map +0 -1
  708. package/dist/stock-6R5E7MJX.js +0 -179
  709. package/dist/studio-LEIGL3Q7.js +0 -49
  710. package/dist/sync-EKGEWE53.js +0 -54
  711. package/dist/sync-EKGEWE53.js.map +0 -1
  712. package/dist/sync-TKNVBUDM.js +0 -54
  713. package/dist/sync-TKNVBUDM.js.map +0 -1
  714. package/dist/sync-definition-M5R3H3TP.js +0 -64
  715. package/dist/tag-manager-3Q55PBEW.js +0 -43
  716. package/dist/tags-4N5UUUN6.js +0 -26
  717. package/dist/tags-5NHIAD5A.js +0 -20
  718. package/dist/tags-5NHIAD5A.js.map +0 -1
  719. package/dist/tags-UUKWSWCN.js +0 -20
  720. package/dist/tags-UUKWSWCN.js.map +0 -1
  721. package/dist/tags-VK7B5DJF.js +0 -20
  722. package/dist/tags-VK7B5DJF.js.map +0 -1
  723. package/dist/tags-XAHIB3WA.js +0 -224
  724. package/dist/tags-XAHIB3WA.js.map +0 -1
  725. package/dist/targeting-criteria-AVARWV2G.js +0 -113
  726. package/dist/targets-6RYLQRID.js +0 -103
  727. package/dist/targets-6RYLQRID.js.map +0 -1
  728. package/dist/testimonials-6TF6BOFN.js +0 -32
  729. package/dist/top-companies-45EHRCJD.js +0 -108
  730. package/dist/top-companies-45EHRCJD.js.map +0 -1
  731. package/dist/translate-VHLBACCE.js +0 -604
  732. package/dist/translate-VHLBACCE.js.map +0 -1
  733. package/dist/triggers-ERQONJNO.js +0 -142
  734. package/dist/triggers-ERQONJNO.js.map +0 -1
  735. package/dist/unlink-TPDO6JNF.js +0 -67
  736. package/dist/unlink-TPDO6JNF.js.map +0 -1
  737. package/dist/unstage-YKKQQ7LW.js +0 -85
  738. package/dist/unstage-YKKQQ7LW.js.map +0 -1
  739. package/dist/update-43WU6X7R.js +0 -63
  740. package/dist/update-43WU6X7R.js.map +0 -1
  741. package/dist/update-CAHLAXWO.js +0 -98
  742. package/dist/update-CAHLAXWO.js.map +0 -1
  743. package/dist/update-NGH6YADN.js +0 -152
  744. package/dist/update-NGH6YADN.js.map +0 -1
  745. package/dist/update-SPJIHHLE.js +0 -188
  746. package/dist/update-SPJIHHLE.js.map +0 -1
  747. package/dist/upload-ACESIZIZ.js +0 -126
  748. package/dist/upload-ACESIZIZ.js.map +0 -1
  749. package/dist/url-params-MIXEDBF7.js +0 -98
  750. package/dist/url-params-MIXEDBF7.js.map +0 -1
  751. package/dist/validate-XJJA7ULE.js +0 -117
  752. package/dist/validate-XJJA7ULE.js.map +0 -1
  753. package/dist/videos-LBXPG7WC.js +0 -39
  754. package/dist/viewer-check-7VJ3GUZX.js +0 -80
  755. package/dist/web-EWQJC2SD.js +0 -140
  756. package/dist/web-EWQJC2SD.js.map +0 -1
  757. package/dist/winning-ads-SAOJAKEQ.js +0 -86
  758. package/dist/write-commands-QPDE4GWW.js +0 -1024
  759. package/dist/write-commands-QPDE4GWW.js.map +0 -1
  760. package/dist/x-LXOJPCRF.js +0 -47
  761. /package/dist/{actions-QL5UD2W4.js.map → actions-FMNJSOBA.js.map} +0 -0
  762. /package/dist/{ads-DHPJFU52.js.map → ads-OLXSDPD6.js.map} +0 -0
  763. /package/dist/{avatars-FKOO6VZ2.js.map → avatars-I4H3NMEJ.js.map} +0 -0
  764. /package/dist/{brand-NNWHBIAX.js.map → brand-3V7ECY7D.js.map} +0 -0
  765. /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-MCB76NPQ.js.map} +0 -0
  766. /package/dist/{canvas-D64GLWUO.js.map → canvas-JCNKMGCG.js.map} +0 -0
  767. /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-XFZ42NXC.js.map} +0 -0
  768. /package/dist/{chunk-VB3XUR6A.js.map → chunk-2YTBPRRG.js.map} +0 -0
  769. /package/dist/{chunk-JUVVCA7B.js.map → chunk-3SNCMEJB.js.map} +0 -0
  770. /package/dist/{chunk-RGMKXNQP.js.map → chunk-7QGFO35A.js.map} +0 -0
  771. /package/dist/{chunk-ZXCSOVS5.js.map → chunk-AV7ALENU.js.map} +0 -0
  772. /package/dist/{chunk-IYTPWAN3.js.map → chunk-BRLFQ4VX.js.map} +0 -0
  773. /package/dist/{chunk-RZTKCCUL.js.map → chunk-DJE7UXYT.js.map} +0 -0
  774. /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
  775. /package/dist/{chunk-J3CWAERS.js.map → chunk-EONSZAZB.js.map} +0 -0
  776. /package/dist/{chunk-PHCIFBP3.js.map → chunk-FG3MV2XM.js.map} +0 -0
  777. /package/dist/{chunk-3AMLOCXY.js.map → chunk-FKG476GH.js.map} +0 -0
  778. /package/dist/{chunk-IFXGCI33.js.map → chunk-FUGQSIYG.js.map} +0 -0
  779. /package/dist/{chunk-Q3LXLWZY.js.map → chunk-HPLHAHG5.js.map} +0 -0
  780. /package/dist/{chunk-3N5A44NQ.js.map → chunk-I24YT2KG.js.map} +0 -0
  781. /package/dist/{chunk-P2MFWJR3.js.map → chunk-IFDZZOUC.js.map} +0 -0
  782. /package/dist/{chunk-Q5WBTVA7.js.map → chunk-JVVUI55M.js.map} +0 -0
  783. /package/dist/{chunk-6QGS3RQP.js.map → chunk-KKSHEPBY.js.map} +0 -0
  784. /package/dist/{chunk-OE3MIV4F.js.map → chunk-KQ7RCLGC.js.map} +0 -0
  785. /package/dist/{chunk-ZDAVSTEE.js.map → chunk-L7WMS5PW.js.map} +0 -0
  786. /package/dist/{chunk-FBFWMTOP.js.map → chunk-LBRO4MTL.js.map} +0 -0
  787. /package/dist/{chunk-PTUXBO5O.js.map → chunk-LNRPOULW.js.map} +0 -0
  788. /package/dist/{chunk-EMQUW6JB.js.map → chunk-LX6WC2XZ.js.map} +0 -0
  789. /package/dist/{chunk-I7J7YQXZ.js.map → chunk-MMGTJBM6.js.map} +0 -0
  790. /package/dist/{chunk-2KRK667G.js.map → chunk-OEZYSL3U.js.map} +0 -0
  791. /package/dist/{chunk-2TVXJPGR.js.map → chunk-OOVHBMQB.js.map} +0 -0
  792. /package/dist/{chunk-Z2GQREJY.js.map → chunk-PTH7VWKK.js.map} +0 -0
  793. /package/dist/{chunk-N3I6ZXR7.js.map → chunk-QZF4BVKL.js.map} +0 -0
  794. /package/dist/{chunk-3WAYZQNV.js.map → chunk-RITUSBYO.js.map} +0 -0
  795. /package/dist/{chunk-JH2L5CQD.js.map → chunk-SSTL3A7Z.js.map} +0 -0
  796. /package/dist/{chunk-2B772ZEA.js.map → chunk-TD4SO6TR.js.map} +0 -0
  797. /package/dist/{chunk-IKLHXGMF.js.map → chunk-UZ4RTOFG.js.map} +0 -0
  798. /package/dist/{chunk-NBO2NSAW.js.map → chunk-VAX7PFQV.js.map} +0 -0
  799. /package/dist/{chunk-AFD32O4A.js.map → chunk-VDRSZK4P.js.map} +0 -0
  800. /package/dist/{chunk-NKIBXOHT.js.map → chunk-VNU2EYD4.js.map} +0 -0
  801. /package/dist/{chunk-TTKBNBQF.js.map → chunk-WT4WDIXA.js.map} +0 -0
  802. /package/dist/{chunk-5A257KJA.js.map → chunk-XEX23CIB.js.map} +0 -0
  803. /package/dist/{chunk-GXGYTFZA.js.map → chunk-XXDF25BW.js.map} +0 -0
  804. /package/dist/{chunk-NEU5QD2C.js.map → chunk-YJ3LSFMX.js.map} +0 -0
  805. /package/dist/{chunk-MK6XJUCQ.js.map → chunk-YVK5RT3B.js.map} +0 -0
  806. /package/dist/{chunk-AW2GKIGS.js.map → chunk-YWWRLZUR.js.map} +0 -0
  807. /package/dist/{chunk-XCKINS7K.js.map → chunk-Z4S5BCVZ.js.map} +0 -0
  808. /package/dist/{chunk-IBY44U2M.js.map → chunk-ZYGK7GAK.js.map} +0 -0
  809. /package/dist/{connect-5PGL7ZOM.js.map → connect-COS6G45S.js.map} +0 -0
  810. /package/dist/{creatives-OO76DAFS.js.map → creatives-SEQHJD2M.js.map} +0 -0
  811. /package/dist/{customers-2EFYSCU2.js.map → customers-LMSX33FO.js.map} +0 -0
  812. /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
  813. /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
  814. /package/dist/{fit-SS6HSZPU.js.map → fit-W7UNFZT5.js.map} +0 -0
  815. /package/dist/{fonts-YPNN7ZJP.js.map → fonts-N42UYWTX.js.map} +0 -0
  816. /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
  817. /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
  818. /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
  819. /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
  820. /package/dist/{ideas-3PBH7VEX.js.map → ideas-DYN2DMFN.js.map} +0 -0
  821. /package/dist/{images-J35C3WG4.js.map → images-EQCUXEHF.js.map} +0 -0
  822. /package/dist/{ingest-OKUYP632.js.map → ingest-B46AY3QU.js.map} +0 -0
  823. /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
  824. /package/dist/{landing-CBVIOGJ5.js.map → landing-WVPA7NBR.js.map} +0 -0
  825. /package/dist/{line-items-ZOFKOGAA.js.map → line-items-OEWYOPFP.js.map} +0 -0
  826. /package/dist/{list-RC2NX6AX.js.map → list-WRBWQASJ.js.map} +0 -0
  827. /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
  828. /package/dist/{performance-7YU4HOGH.js.map → performance-HTU5FR2K.js.map} +0 -0
  829. /package/dist/{plan-ZC4JY4IG.js.map → plan-W2K45F7K.js.map} +0 -0
  830. /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-TTWN5OMW.js.map} +0 -0
  831. /package/dist/{reddit-YK3YUZEI.js.map → reddit-6C3PT5CT.js.map} +0 -0
  832. /package/dist/{research-Q3P76RHN.js.map → research-YCMMQVK6.js.map} +0 -0
  833. /package/dist/{run-6PRA2YSD.js.map → run-SR7DJ7M5.js.map} +0 -0
  834. /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-N63EZNY6.js.map} +0 -0
  835. /package/dist/{schema-RRAQW3OS.js.map → schema-C6SGBNA6.js.map} +0 -0
  836. /package/dist/{sources-NDXYTASG.js.map → sources-HN3GCEDX.js.map} +0 -0
  837. /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
  838. /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
  839. /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ6WQ7OE.js.map} +0 -0
  840. /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-CKEUYKWN.js.map} +0 -0
  841. /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
  842. /package/dist/{tags-4N5UUUN6.js.map → tags-EUOOSAKN.js.map} +0 -0
  843. /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-HE7K52WN.js.map} +0 -0
  844. /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-3Q5XM7JD.js.map} +0 -0
  845. /package/dist/{videos-LBXPG7WC.js.map → videos-WAPUPJVT.js.map} +0 -0
  846. /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-GHQA3UY2.js.map} +0 -0
  847. /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-XCVUAIOU.js.map} +0 -0
  848. /package/dist/{x-LXOJPCRF.js.map → x-SI4KYDEY.js.map} +0 -0
@@ -0,0 +1,28 @@
1
+ import "./chunk-YQSBHWOI.js";
2
+
3
+ // src/commands/landing/index.ts
4
+ import { defineCommand } from "citty";
5
+ var landingCommand = defineCommand({
6
+ meta: {
7
+ name: "landing",
8
+ description: `Design-quality tools for landing pages (src/pages/<slug>/), and downloading the published ones.
9
+
10
+ Start here: \`baker landing critique <slug>\` after building or editing a landing.
11
+
12
+ Subcommands:
13
+ baker landing inspiration \u2014 reference library of real landing-page sections; search it during research, BEFORE writing the Direction Contract. Inspiration only: take the mechanism, never the words.
14
+ baker landing variant <control> <slug> \u2014 the alternative version of a page for an A/B test: shares the control's sections, forks only the component you name, so the two arms differ by exactly your hypothesis. Run \`baker experiment plan\` first.
15
+ baker landing critique <slug> \u2014 design-quality critic (advisory): flags the known AI 'slop' tells (gradient text, overused fonts, side-tab borders, cream palettes, broken images) and reads the copy in any language for buzzwords, AI copy tells and positioning integrity (copy ranking a competitor above the client), tiered block/warn/advisory, respecting the client's brand. Records the critique the publish quality gate requires \u2014 run it before finishing a landing.
16
+ baker landing export start \u2014 download the PUBLISHED landings as a ZIP of plain HTML ("download my landings", "send me the HTML"); \`baker landing export status <id>\` gives the link.`
17
+ },
18
+ subCommands: {
19
+ inspiration: () => import("./inspiration-TCCKM4R7.js").then((m) => m.inspirationCommand),
20
+ critique: () => import("./critique-Q7GSZ5RP.js").then((m) => m.critiqueCommand),
21
+ variant: () => import("./variant-BN72AP34.js").then((m) => m.variantCommand),
22
+ export: () => import("./export-AGDNQZKC.js").then((m) => m.exportCommand)
23
+ }
24
+ });
25
+ export {
26
+ landingCommand
27
+ };
28
+ //# sourceMappingURL=landing-WVPA7NBR.js.map
@@ -0,0 +1,113 @@
1
+ import {
2
+ csvOrJson,
3
+ handleLinkedinError,
4
+ resolveAccountIdArg
5
+ } from "./chunk-2YTBPRRG.js";
6
+ import {
7
+ writeAdsJson,
8
+ writeAdsOutput
9
+ } from "./chunk-2VIZ4UUZ.js";
10
+ import {
11
+ NO_CACHE_ARG
12
+ } from "./chunk-U6RONIJC.js";
13
+ import "./chunk-O37VU7FG.js";
14
+ import "./chunk-CAZGM2NX.js";
15
+ import "./chunk-NZS3KEQ2.js";
16
+ import "./chunk-GIWHHCD6.js";
17
+ import "./chunk-XQIOCIDO.js";
18
+ import "./chunk-WTJSMYY2.js";
19
+ import {
20
+ apiGet
21
+ } from "./chunk-6YLNY6CK.js";
22
+ import "./chunk-D5NEIESR.js";
23
+ import "./chunk-57KKVDDR.js";
24
+ import "./chunk-QANGHND7.js";
25
+ import "./chunk-YQSBHWOI.js";
26
+
27
+ // src/commands/ads/linkedin/leads.ts
28
+ import { defineCommand } from "citty";
29
+ var DAY_MS = 864e5;
30
+ function epochMs(value, flag) {
31
+ const text = String(value);
32
+ const ms = /^\d+$/.test(text) ? Number(text) : Date.parse(text);
33
+ if (Number.isNaN(ms)) {
34
+ throw new Error(`${flag} must be YYYY-MM-DD or epoch ms, got ${text}`);
35
+ }
36
+ return ms;
37
+ }
38
+ function leadsParams(args, accountId) {
39
+ const params = { "account-id": accountId };
40
+ if (args["form-id"]) params["form-id"] = String(args["form-id"]);
41
+ if (args["campaign-id"]) params["campaign-id"] = String(args["campaign-id"]);
42
+ const sinceMs = args["since-ms"] ? epochMs(args["since-ms"], "--since-ms") : args["since-days"] ? Date.now() - Number(args["since-days"]) * DAY_MS : void 0;
43
+ if (sinceMs) params["since-ms"] = String(sinceMs);
44
+ if (args.until) params["until-ms"] = String(epochMs(args.until, "--until"));
45
+ if (args["test-leads"]) params["test-leads"] = "true";
46
+ if (args.limit) params.limit = String(args.limit);
47
+ if (args["no-cache"]) params["skip-cache"] = "true";
48
+ return params;
49
+ }
50
+ var leadsCommand = defineCommand({
51
+ meta: {
52
+ name: "leads",
53
+ description: `List Lead Gen Form responses (playbook \xA707).
54
+
55
+ LinkedIn retains LGF responses for 90 days only \u2014 sync to your CRM via this
56
+ endpoint or you'll lose them.
57
+
58
+ Examples:
59
+ baker ads linkedin leads --account-id 503001492
60
+ baker ads linkedin leads --account-id 503001492 --campaign-id 1234
61
+ baker ads linkedin leads --account-id 503001492 --form-id 5678 --since-days 7
62
+ baker ads linkedin leads --account-id 503001492 --output csv
63
+ baker ads linkedin leads --test-leads # only the test leads Campaign Manager's preview submitted
64
+
65
+ Answers come back with their question's label, and a multiple-choice answer as
66
+ the option chosen. Form ids are the ones \`baker ads linkedin lead-forms\` lists.`
67
+ },
68
+ args: {
69
+ "account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
70
+ "account-urn": { type: "string", description: "Alias for --account-id" },
71
+ "form-id": { type: "string", description: "Filter by Lead Gen Form ID" },
72
+ "campaign-id": { type: "string", description: "Filter by campaign ID" },
73
+ "since-days": { type: "string", description: "Only responses submitted in the last N days" },
74
+ "since-ms": {
75
+ type: "string",
76
+ description: "Only responses submitted at or after this epoch ms (alternative to --since-days)"
77
+ },
78
+ until: { type: "string", description: "Only responses submitted before this date (YYYY-MM-DD or epoch ms)" },
79
+ "test-leads": { type: "boolean", description: "Only test leads (submitted from a form preview)" },
80
+ limit: { type: "string", description: "Max rows (default: 500)" },
81
+ "no-cache": NO_CACHE_ARG,
82
+ output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
83
+ },
84
+ run: async ({ args }) => {
85
+ const accountId = resolveAccountIdArg(args);
86
+ try {
87
+ const params = leadsParams(args, accountId);
88
+ const data = await apiGet("/api/ads/linkedin/leads", params);
89
+ const fmt = csvOrJson(args);
90
+ if (fmt !== "json") {
91
+ const flat = data.map((r) => ({
92
+ id: r.id,
93
+ formId: r.formId,
94
+ formName: r.formName ?? "",
95
+ campaignUrn: r.campaignUrn,
96
+ campaignName: r.campaignName ?? "",
97
+ testLead: r.testLead ?? false,
98
+ submittedAt: r.submittedAt ? new Date(r.submittedAt).toISOString() : "",
99
+ answers: (r.answers ?? []).map((a) => `${a.question}: ${a.answer}`).join(" | ")
100
+ }));
101
+ writeAdsOutput(flat, fmt);
102
+ return;
103
+ }
104
+ writeAdsJson({ ok: true, data });
105
+ } catch (err) {
106
+ handleLinkedinError(err);
107
+ }
108
+ }
109
+ });
110
+ export {
111
+ leadsCommand
112
+ };
113
+ //# sourceMappingURL=leads-EINV5FK3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/linkedin/leads.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput } from \"../output.ts\";\nimport { csvOrJson, handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\ninterface LeadResponseRow {\n id: string;\n formId: string;\n formUrn: string;\n formName?: string;\n campaignUrn?: string;\n campaignName?: string;\n creativeUrn?: string;\n testLead?: boolean;\n submittedAt?: number;\n answers?: Array<{ questionId: string; question: string; answer: string }>;\n consentResponses?: Array<{ consentId: string; consentText?: string; agreed?: boolean }>;\n}\n\nconst DAY_MS = 86_400_000;\n\nfunction epochMs(value: unknown, flag: string): number {\n const text = String(value);\n const ms = /^\\d+$/.test(text) ? Number(text) : Date.parse(text);\n if (Number.isNaN(ms)) {\n throw new Error(`${flag} must be YYYY-MM-DD or epoch ms, got ${text}`);\n }\n return ms;\n}\n\n/** The leads route's query: filters, the submitted-time window, and the test-lead switch. */\nfunction leadsParams(args: Record<string, unknown>, accountId: string): Record<string, string> {\n const params: Record<string, string> = { \"account-id\": accountId };\n if (args[\"form-id\"]) params[\"form-id\"] = String(args[\"form-id\"]);\n if (args[\"campaign-id\"]) params[\"campaign-id\"] = String(args[\"campaign-id\"]);\n const sinceMs = args[\"since-ms\"]\n ? epochMs(args[\"since-ms\"], \"--since-ms\")\n : args[\"since-days\"]\n ? Date.now() - Number(args[\"since-days\"]) * DAY_MS\n : undefined;\n if (sinceMs) params[\"since-ms\"] = String(sinceMs);\n if (args.until) params[\"until-ms\"] = String(epochMs(args.until, \"--until\"));\n if (args[\"test-leads\"]) params[\"test-leads\"] = \"true\";\n if (args.limit) params.limit = String(args.limit);\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n return params;\n}\n\nexport const leadsCommand = defineCommand({\n meta: {\n name: \"leads\",\n description: `List Lead Gen Form responses (playbook §07).\n\nLinkedIn retains LGF responses for 90 days only — sync to your CRM via this\nendpoint or you'll lose them.\n\nExamples:\n baker ads linkedin leads --account-id 503001492\n baker ads linkedin leads --account-id 503001492 --campaign-id 1234\n baker ads linkedin leads --account-id 503001492 --form-id 5678 --since-days 7\n baker ads linkedin leads --account-id 503001492 --output csv\n baker ads linkedin leads --test-leads # only the test leads Campaign Manager's preview submitted\n\nAnswers come back with their question's label, and a multiple-choice answer as\nthe option chosen. Form ids are the ones \\`baker ads linkedin lead-forms\\` lists.`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"Numeric account ID or urn:li:sponsoredAccount:N\" },\n \"account-urn\": { type: \"string\", description: \"Alias for --account-id\" },\n \"form-id\": { type: \"string\", description: \"Filter by Lead Gen Form ID\" },\n \"campaign-id\": { type: \"string\", description: \"Filter by campaign ID\" },\n \"since-days\": { type: \"string\", description: \"Only responses submitted in the last N days\" },\n \"since-ms\": {\n type: \"string\",\n description: \"Only responses submitted at or after this epoch ms (alternative to --since-days)\",\n },\n until: { type: \"string\", description: \"Only responses submitted before this date (YYYY-MM-DD or epoch ms)\" },\n \"test-leads\": { type: \"boolean\", description: \"Only test leads (submitted from a form preview)\" },\n limit: { type: \"string\", description: \"Max rows (default: 500)\" },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n const accountId = resolveAccountIdArg(args);\n try {\n const params = leadsParams(args as Record<string, unknown>, accountId);\n const data = await apiGet<LeadResponseRow[]>(\"/api/ads/linkedin/leads\", params);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n // Flatten the answers array for CSV/MD output.\n const flat = data.map((r) => ({\n id: r.id,\n formId: r.formId,\n formName: r.formName ?? \"\",\n campaignUrn: r.campaignUrn,\n campaignName: r.campaignName ?? \"\",\n testLead: r.testLead ?? false,\n submittedAt: r.submittedAt ? new Date(r.submittedAt).toISOString() : \"\",\n answers: (r.answers ?? []).map((a) => `${a.question}: ${a.answer}`).join(\" | \"),\n }));\n writeAdsOutput(flat as unknown as Array<Record<string, unknown>>, fmt);\n return;\n }\n writeAdsJson({ ok: true, data });\n } catch (err) {\n handleLinkedinError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,205 @@
1
+ import {
2
+ parseDays,
3
+ withDefinitions
4
+ } from "./chunk-PTH7VWKK.js";
5
+ import {
6
+ setDefinitionFields
7
+ } from "./chunk-EJ4QCMM6.js";
8
+ import {
9
+ IDEAS_DIR,
10
+ readIdeas
11
+ } from "./chunk-MOFMOYUA.js";
12
+ import "./chunk-Y46FE75E.js";
13
+ import "./chunk-6UNOK7WV.js";
14
+ import "./chunk-UFKO626N.js";
15
+ import {
16
+ findWorkspaceRoot
17
+ } from "./chunk-XRIM7NYV.js";
18
+ import "./chunk-FKYPAGKK.js";
19
+ import "./chunk-MCJ5I5LR.js";
20
+ import "./chunk-A6WKCV3V.js";
21
+ import "./chunk-U7YR5CZL.js";
22
+ import "./chunk-VI5YQQ63.js";
23
+ import "./chunk-JX7BX2NB.js";
24
+ import {
25
+ failApi
26
+ } from "./chunk-L7WMS5PW.js";
27
+ import "./chunk-O37VU7FG.js";
28
+ import "./chunk-CAZGM2NX.js";
29
+ import "./chunk-NZS3KEQ2.js";
30
+ import "./chunk-GIWHHCD6.js";
31
+ import "./chunk-XQIOCIDO.js";
32
+ import "./chunk-WTJSMYY2.js";
33
+ import {
34
+ apiPost
35
+ } from "./chunk-6YLNY6CK.js";
36
+ import "./chunk-D5NEIESR.js";
37
+ import "./chunk-57KKVDDR.js";
38
+ import {
39
+ registerSchema,
40
+ writeJson
41
+ } from "./chunk-QANGHND7.js";
42
+ import "./chunk-YQSBHWOI.js";
43
+
44
+ // src/commands/creatives/learn.ts
45
+ import { readFileSync } from "fs";
46
+ import { readFile, writeFile } from "fs/promises";
47
+ import path from "path";
48
+ import { defineCommand } from "citty";
49
+
50
+ // src/commands/creatives/learn-model.ts
51
+ var MIN_IMPRESSIONS = 1e3;
52
+ var SEEN_ENOUGH = 5e3;
53
+ var WINNER_RATIO = 0.8;
54
+ var WINNER_MIN_RESULTS = 3;
55
+ var FAILED_RATIO = 1.5;
56
+ var SILENT_SPEND = 2;
57
+ var SETTLED = /* @__PURE__ */ new Set(["winner", "failed", "inconclusive"]);
58
+ var round = (n) => Math.round(n * 100) / 100;
59
+ function totals(creatives) {
60
+ const spend = creatives.reduce((sum, c) => sum + c.spend, 0);
61
+ const impressions = creatives.reduce((sum, c) => sum + c.impressions, 0);
62
+ const results = creatives.reduce((sum, c) => sum + (c.results ?? 0), 0);
63
+ const clicks = creatives.reduce((sum, c) => sum + (c.ctr ?? 0) * c.impressions, 0);
64
+ return { spend, impressions, results, ctr: impressions > 0 ? round(clicks / impressions) : null };
65
+ }
66
+ function verdict(result, usual) {
67
+ if (result.impressions < MIN_IMPRESSIONS) return "testing";
68
+ if (usual !== null) {
69
+ if (result.results === 0 && result.spend >= SILENT_SPEND * usual) return "failed";
70
+ const ratio = result.vsAccount;
71
+ if (ratio !== null && result.results >= WINNER_MIN_RESULTS && ratio <= WINNER_RATIO) return "winner";
72
+ if (ratio !== null && ratio >= FAILED_RATIO) return "failed";
73
+ }
74
+ return result.impressions >= SEEN_ENOUGH ? "inconclusive" : "testing";
75
+ }
76
+ function ideaResult(own, usual, asOf) {
77
+ const mine = totals(own);
78
+ const costPerResult = mine.results > 0 ? round(mine.spend / mine.results) : null;
79
+ return {
80
+ asOf,
81
+ creatives: own.length,
82
+ ...own[0]?.currency ? { currency: own[0].currency } : {},
83
+ spend: round(mine.spend),
84
+ impressions: mine.impressions,
85
+ results: mine.results,
86
+ costPerResult,
87
+ ctr: mine.ctr,
88
+ vsAccount: usual !== null && costPerResult !== null ? round(costPerResult / usual) : null
89
+ };
90
+ }
91
+ function learnFromResults(ideas, creatives, asOf) {
92
+ const ideaOf = (c) => c.definition?.idea ?? null;
93
+ return ideas.flatMap((idea) => {
94
+ if (idea.status === "idea" || idea.status === "retired") return [];
95
+ const own = creatives.filter((c) => ideaOf(c) === idea.id);
96
+ if (own.length === 0) return [];
97
+ const rest = totals(creatives.filter((c) => ideaOf(c) !== idea.id));
98
+ const usual = rest.results > 0 ? rest.spend / rest.results : null;
99
+ const result = ideaResult(own, usual, asOf);
100
+ const to = verdict(result, usual);
101
+ if (to === "testing" && SETTLED.has(idea.status)) return [];
102
+ return [{ idea: idea.id, from: idea.status, to, result }];
103
+ });
104
+ }
105
+
106
+ // src/commands/creatives/learn.ts
107
+ var DESCRIPTION = `Write back what each built idea's ads did in the live Meta account: every creative of the idea pooled, judged against the rest of the account's cost per result, and the verdict (winner, failed, inconclusive, testing) and frozen numbers written onto src/creatives/_ideas/<idea>.md. Run it before writing new ideas, and weekly.
108
+
109
+ Start here:
110
+ baker creatives learn # last 30 days, written onto the ideas
111
+ baker creatives learn --days 60
112
+ baker creatives learn --dry-run # show the verdicts, write nothing
113
+
114
+ A winner gets results at 0.8x the usual cost or less (3+ results); failed is 1.5x or more, or spend worth two usual results with none; under 1,000 impressions it is still testing.`;
115
+ var ARGS = {
116
+ days: { type: "string", required: false, description: "Reporting window in days (default 30)" },
117
+ "dry-run": { type: "boolean", required: false, default: false, description: "Show the verdicts; write nothing" }
118
+ };
119
+ registerSchema({ command: "creatives.learn", description: DESCRIPTION, args: ARGS });
120
+ function learnEnvelope(learnings, written, unreadable = []) {
121
+ const winners = learnings.filter((l) => l.to === "winner").map((l) => l.idea);
122
+ const failed = learnings.filter((l) => l.to === "failed").map((l) => l.idea);
123
+ const hints = [];
124
+ if (unreadable.length > 0) {
125
+ hints.push(
126
+ `Could not read ${unreadable.join(", ")}, so their results were not written: fix what \`baker creatives ideas\` names, then run this again.`
127
+ );
128
+ }
129
+ if (learnings.length === 0) {
130
+ hints.push(
131
+ "No built idea has ads delivering yet: nothing to learn. Ideas count once a published ad shows their creative."
132
+ );
133
+ }
134
+ if (winners.length > 0) {
135
+ hints.push(
136
+ `Build on ${winners.join(", ")}: keep the message and make it in a new format or for a new persona before any new idea.`
137
+ );
138
+ }
139
+ if (failed.length > 0) {
140
+ hints.push(
141
+ `${failed.join(", ")} lost: never repeat their message; \`baker creatives ideas\` flags an idea that does.`
142
+ );
143
+ }
144
+ return {
145
+ ok: true,
146
+ data: {
147
+ written,
148
+ ideas: learnings.map((l) => ({
149
+ idea: l.idea,
150
+ status: l.from === l.to ? l.to : `${l.from} \u2192 ${l.to}`,
151
+ ...l.result
152
+ }))
153
+ },
154
+ hints
155
+ };
156
+ }
157
+ async function writeBack(root, learnings) {
158
+ for (const learning of learnings) {
159
+ const file = path.join(root, IDEAS_DIR, `${learning.idea}.md`);
160
+ const raw = await readFile(file, "utf8");
161
+ await writeFile(file, setDefinitionFields(raw, { status: learning.to, result: learning.result }), "utf8");
162
+ }
163
+ }
164
+ function readDefinition(root, slug) {
165
+ try {
166
+ return readFileSync(path.join(root, "src", "creatives", slug, "_definition.md"), "utf8");
167
+ } catch {
168
+ return null;
169
+ }
170
+ }
171
+ function today() {
172
+ return (/* @__PURE__ */ new Date()).toISOString().slice(0, 10);
173
+ }
174
+ var learnCommand = defineCommand({
175
+ meta: { name: "learn", description: DESCRIPTION },
176
+ args: ARGS,
177
+ async run({ args }) {
178
+ try {
179
+ const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
180
+ const days = parseDays(args.days);
181
+ const performance = withDefinitions(
182
+ await apiPost("/api/creatives/performance", days ? { days } : {}),
183
+ (slug) => readDefinition(root, slug)
184
+ );
185
+ const { ideas, unreadable } = await readIdeas(root);
186
+ const learnings = learnFromResults(ideas, performance.data.creatives, today());
187
+ const dryRun = args["dry-run"] === true;
188
+ if (!dryRun) await writeBack(root, learnings);
189
+ writeJson(
190
+ learnEnvelope(
191
+ learnings,
192
+ !dryRun && learnings.length > 0,
193
+ unreadable.map((u) => u.id)
194
+ )
195
+ );
196
+ } catch (err) {
197
+ failApi(err);
198
+ }
199
+ }
200
+ });
201
+ export {
202
+ learnCommand,
203
+ learnEnvelope
204
+ };
205
+ //# sourceMappingURL=learn-7Z2VR6MS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/creatives/learn.ts","../src/commands/creatives/learn-model.ts"],"sourcesContent":["/**\n * `baker creatives learn`: what the ads each idea became did in the live account, written back\n * onto the idea (its `status` and a frozen `result`), so the next chat builds on winners and\n * never repeats a message that lost.\n */\nimport { readFileSync } from \"node:fs\";\nimport { readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { CreativesPerformanceResponse } 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 \"../actions/shared.ts\";\nimport { findWorkspaceRoot } from \"../canvas/normalize-paths.ts\";\nimport { IDEAS_DIR, readIdeas } from \"./ideas-workspace.ts\";\nimport { type IdeaLearning, learnFromResults } from \"./learn-model.ts\";\nimport { setDefinitionFields } from \"./make-model.ts\";\nimport { parseDays, withDefinitions } from \"./performance.ts\";\n\nconst DESCRIPTION = `Write back what each built idea's ads did in the live Meta account: every creative of the idea pooled, judged against the rest of the account's cost per result, and the verdict (winner, failed, inconclusive, testing) and frozen numbers written onto src/creatives/_ideas/<idea>.md. Run it before writing new ideas, and weekly.\n\nStart here:\n baker creatives learn # last 30 days, written onto the ideas\n baker creatives learn --days 60\n baker creatives learn --dry-run # show the verdicts, write nothing\n\nA winner gets results at 0.8x the usual cost or less (3+ results); failed is 1.5x or more, or spend worth two usual results with none; under 1,000 impressions it is still testing.`;\n\nconst ARGS = {\n days: { type: \"string\", required: false, description: \"Reporting window in days (default 30)\" },\n \"dry-run\": { type: \"boolean\", required: false, default: false, description: \"Show the verdicts; write nothing\" },\n} as const;\n\nregisterSchema({ command: \"creatives.learn\", description: DESCRIPTION, args: ARGS });\n\n/** What the agent reads, and what to do with winners and losers. Pure. */\nexport function learnEnvelope(\n learnings: readonly IdeaLearning[],\n written: boolean,\n unreadable: readonly string[] = [],\n) {\n const winners = learnings.filter((l) => l.to === \"winner\").map((l) => l.idea);\n const failed = learnings.filter((l) => l.to === \"failed\").map((l) => l.idea);\n const hints: string[] = [];\n if (unreadable.length > 0) {\n hints.push(\n `Could not read ${unreadable.join(\", \")}, so their results were not written: fix what \\`baker creatives ideas\\` names, then run this again.`,\n );\n }\n if (learnings.length === 0) {\n hints.push(\n \"No built idea has ads delivering yet: nothing to learn. Ideas count once a published ad shows their creative.\",\n );\n }\n if (winners.length > 0) {\n hints.push(\n `Build on ${winners.join(\", \")}: keep the message and make it in a new format or for a new persona before any new idea.`,\n );\n }\n if (failed.length > 0) {\n hints.push(\n `${failed.join(\", \")} lost: never repeat their message; \\`baker creatives ideas\\` flags an idea that does.`,\n );\n }\n return {\n ok: true as const,\n data: {\n written,\n ideas: learnings.map((l) => ({\n idea: l.idea,\n status: l.from === l.to ? l.to : `${l.from} → ${l.to}`,\n ...l.result,\n })),\n },\n hints,\n };\n}\n\nasync function writeBack(root: string, learnings: readonly IdeaLearning[]): Promise<void> {\n for (const learning of learnings) {\n const file = path.join(root, IDEAS_DIR, `${learning.idea}.md`);\n const raw = await readFile(file, \"utf8\");\n await writeFile(file, setDefinitionFields(raw, { status: learning.to, result: learning.result }), \"utf8\");\n }\n}\n\nfunction readDefinition(root: string, slug: string): string | null {\n try {\n return readFileSync(path.join(root, \"src\", \"creatives\", slug, \"_definition.md\"), \"utf8\");\n } catch {\n return null;\n }\n}\n\nfunction today(): string {\n return new Date().toISOString().slice(0, 10);\n}\n\nexport const learnCommand = defineCommand({\n meta: { name: \"learn\", description: DESCRIPTION },\n args: ARGS,\n async run({ args }) {\n try {\n const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();\n const days = parseDays(args.days as string | undefined);\n const performance = withDefinitions(\n await apiPost<CreativesPerformanceResponse>(\"/api/creatives/performance\", days ? { days } : {}),\n (slug) => readDefinition(root, slug),\n );\n const { ideas, unreadable } = await readIdeas(root);\n const learnings = learnFromResults(ideas, performance.data.creatives, today());\n const dryRun = args[\"dry-run\"] === true;\n if (!dryRun) await writeBack(root, learnings);\n writeJson(\n learnEnvelope(\n learnings,\n !dryRun && learnings.length > 0,\n unreadable.map((u) => u.id),\n ),\n );\n } catch (err) {\n failApi(err);\n }\n },\n});\n","/**\n * What the ads an idea became did, written back onto the idea: `baker creatives learn` turns\n * performance into a verdict per idea, so the next chat starts from what won and what lost\n * instead of from zero. Pure.\n */\nimport type { CreativePerformance } from \"@baker/api\";\nimport type { Idea, IdeaStatus } from \"./ideas-model.ts\";\n\n/** Below this many impressions an idea has not been seen enough to call. */\nconst MIN_IMPRESSIONS = 1000;\n/** Seen this much with no clear verdict, an idea is inconclusive rather than still testing. */\nconst SEEN_ENOUGH = 5000;\n/** At or under this share of the account's usual cost per result, with enough results: a winner. */\nconst WINNER_RATIO = 0.8;\nconst WINNER_MIN_RESULTS = 3;\n/** At or over this share of the usual cost per result: failed. */\nconst FAILED_RATIO = 1.5;\n/** Spending this many usual results' worth with none: failed. */\nconst SILENT_SPEND = 2;\n/** Verdicts a thin window never takes back: too little delivery says nothing new about them. */\nconst SETTLED: ReadonlySet<IdeaStatus> = new Set([\"winner\", \"failed\", \"inconclusive\"]);\n\nexport type IdeaResult = {\n asOf: string;\n creatives: number;\n currency?: string;\n spend: number;\n impressions: number;\n results: number;\n costPerResult: number | null;\n ctr: number | null;\n /** Cost per result over the rest of the account's: 0.5 is half the usual cost. */\n vsAccount: number | null;\n};\n\nexport type IdeaLearning = { idea: string; from: IdeaStatus; to: IdeaStatus; result: IdeaResult };\n\nconst round = (n: number) => Math.round(n * 100) / 100;\n\nfunction totals(creatives: readonly CreativePerformance[]) {\n const spend = creatives.reduce((sum, c) => sum + c.spend, 0);\n const impressions = creatives.reduce((sum, c) => sum + c.impressions, 0);\n const results = creatives.reduce((sum, c) => sum + (c.results ?? 0), 0);\n const clicks = creatives.reduce((sum, c) => sum + (c.ctr ?? 0) * c.impressions, 0);\n return { spend, impressions, results, ctr: impressions > 0 ? round(clicks / impressions) : null };\n}\n\nfunction verdict(result: IdeaResult, usual: number | null): IdeaStatus {\n if (result.impressions < MIN_IMPRESSIONS) return \"testing\";\n if (usual !== null) {\n if (result.results === 0 && result.spend >= SILENT_SPEND * usual) return \"failed\";\n const ratio = result.vsAccount;\n if (ratio !== null && result.results >= WINNER_MIN_RESULTS && ratio <= WINNER_RATIO) return \"winner\";\n if (ratio !== null && ratio >= FAILED_RATIO) return \"failed\";\n }\n return result.impressions >= SEEN_ENOUGH ? \"inconclusive\" : \"testing\";\n}\n\n/** One idea's ads pooled into the numbers frozen on it, against the account's usual cost per result. */\nfunction ideaResult(own: readonly CreativePerformance[], usual: number | null, asOf: string): IdeaResult {\n const mine = totals(own);\n const costPerResult = mine.results > 0 ? round(mine.spend / mine.results) : null;\n return {\n asOf,\n creatives: own.length,\n ...(own[0]?.currency ? { currency: own[0].currency } : {}),\n spend: round(mine.spend),\n impressions: mine.impressions,\n results: mine.results,\n costPerResult,\n ctr: mine.ctr,\n vsAccount: usual !== null && costPerResult !== null ? round(costPerResult / usual) : null,\n };\n}\n\n/**\n * Each built idea's ads, pooled and judged against the rest of the account: cheaper results than\n * usual win, far dearer ones (or spend with none) fail. Ideas still to build, retired, with no\n * ad delivering, or already judged and seen too little since, are left alone.\n */\nexport function learnFromResults(\n ideas: readonly Idea[],\n creatives: readonly CreativePerformance[],\n asOf: string,\n): IdeaLearning[] {\n const ideaOf = (c: CreativePerformance) => c.definition?.idea ?? null;\n return ideas.flatMap((idea): IdeaLearning[] => {\n if (idea.status === \"idea\" || idea.status === \"retired\") return [];\n const own = creatives.filter((c) => ideaOf(c) === idea.id);\n if (own.length === 0) return [];\n const rest = totals(creatives.filter((c) => ideaOf(c) !== idea.id));\n const usual = rest.results > 0 ? rest.spend / rest.results : null;\n const result = ideaResult(own, usual, asOf);\n const to = verdict(result, usual);\n if (to === \"testing\" && SETTLED.has(idea.status)) return [];\n return [{ idea: idea.id, from: idea.status, to, result }];\n });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,209 @@
1
+ import {
2
+ compact,
3
+ csvArg,
4
+ microsFromArg,
5
+ requireTarget,
6
+ requireTargets,
7
+ stageAccountId,
8
+ stageXOp,
9
+ stageXOps
10
+ } from "./chunk-TD4SO6TR.js";
11
+ import "./chunk-M6UNISGO.js";
12
+ import "./chunk-CZYLHFSD.js";
13
+ import "./chunk-2VIZ4UUZ.js";
14
+ import {
15
+ OBJECTIVES,
16
+ PLACEMENTS,
17
+ PRODUCT_TYPES
18
+ } from "./chunk-O37VU7FG.js";
19
+ import "./chunk-CAZGM2NX.js";
20
+ import "./chunk-NZS3KEQ2.js";
21
+ import "./chunk-GIWHHCD6.js";
22
+ import "./chunk-XQIOCIDO.js";
23
+ import "./chunk-WTJSMYY2.js";
24
+ import "./chunk-6YLNY6CK.js";
25
+ import "./chunk-D5NEIESR.js";
26
+ import "./chunk-57KKVDDR.js";
27
+ import {
28
+ registerSchema
29
+ } from "./chunk-QANGHND7.js";
30
+ import "./chunk-YQSBHWOI.js";
31
+
32
+ // src/commands/ads/x/line-item-writes.ts
33
+ import { defineCommand } from "citty";
34
+ registerSchema({
35
+ command: "ads.x.lineItems.create",
36
+ description: `Stage a new X ad group under a campaign. Objective, product type and campaign are fixed at create \u2014 X refuses to change any of them afterwards, so get them right here.
37
+ Objectives: ${OBJECTIVES.join(", ")}.`,
38
+ args: {
39
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
40
+ "campaign-id": {
41
+ type: "string",
42
+ description: "Parent campaign id, or an x_temp_* ref staged in this draft",
43
+ required: true
44
+ },
45
+ name: { type: "string", description: "Ad group name", required: true },
46
+ objective: { type: "string", description: OBJECTIVES.join(" | "), required: true },
47
+ "product-type": { type: "string", description: PRODUCT_TYPES.join(" | "), required: false },
48
+ placements: { type: "string", description: `CSV of ${PLACEMENTS.join(", ")}`, required: false },
49
+ status: { type: "string", description: "ACTIVE | PAUSED | DRAFT (default PAUSED)", required: false },
50
+ "bid-strategy": { type: "string", description: "AUTO | MAX | TARGET", required: false },
51
+ bid: {
52
+ type: "string",
53
+ description: "Bid in account currency \u2014 required for MAX/TARGET, refused for AUTO",
54
+ required: false
55
+ },
56
+ "daily-budget": { type: "string", description: "Daily budget in account currency", required: false },
57
+ "total-budget": { type: "string", description: "Lifetime budget in account currency", required: false },
58
+ "start-time": { type: "string", description: "ISO 8601 start", required: false },
59
+ "end-time": { type: "string", description: "ISO 8601 end", required: false }
60
+ }
61
+ });
62
+ var lineItemsCreateCommand = defineCommand({
63
+ meta: {
64
+ name: "create",
65
+ description: `Stage a new ad group (applies when the chat is published).
66
+
67
+ Examples:
68
+ baker ads x line-items create --campaign-id oilf0 --name "Spain" --objective WEBSITE_CLICKS
69
+ baker ads x line-items create --campaign-id x_temp_abc --name "Spain" --objective REACH --bid-strategy MAX --bid 1.20`
70
+ },
71
+ args: {
72
+ "account-id": { type: "string", description: "X Ads account ID" },
73
+ "campaign-id": { type: "string", description: "Parent campaign id or x_temp_* ref", required: true },
74
+ name: { type: "string", description: "Ad group name", required: true },
75
+ objective: { type: "string", description: OBJECTIVES.join(" | "), required: true },
76
+ "product-type": { type: "string", description: PRODUCT_TYPES.join(" | ") },
77
+ placements: { type: "string", description: `CSV of ${PLACEMENTS.join(", ")}` },
78
+ status: { type: "string", description: "ACTIVE | PAUSED | DRAFT (default PAUSED)" },
79
+ "bid-strategy": { type: "string", description: "AUTO | MAX | TARGET" },
80
+ bid: { type: "string", description: "Bid in account currency" },
81
+ "daily-budget": { type: "string", description: "Daily budget in account currency" },
82
+ "total-budget": { type: "string", description: "Lifetime budget in account currency" },
83
+ "start-time": { type: "string", description: "ISO 8601 start" },
84
+ "end-time": { type: "string", description: "ISO 8601 end" }
85
+ },
86
+ run: async ({ args }) => {
87
+ const accountId = await stageAccountId(args);
88
+ await stageXOp({
89
+ kind: "lineItem.create",
90
+ accountId,
91
+ payload: compact({
92
+ campaignId: args["campaign-id"],
93
+ name: args.name,
94
+ objective: args.objective,
95
+ productType: args["product-type"],
96
+ placements: csvArg(args.placements),
97
+ entityStatus: args.status,
98
+ bidStrategy: args["bid-strategy"],
99
+ bidAmountLocalMicro: microsFromArg(args.bid, "--bid"),
100
+ dailyBudgetAmountLocalMicro: microsFromArg(args["daily-budget"], "--daily-budget"),
101
+ totalBudgetAmountLocalMicro: microsFromArg(args["total-budget"], "--total-budget"),
102
+ startTime: args["start-time"],
103
+ endTime: args["end-time"]
104
+ })
105
+ });
106
+ }
107
+ });
108
+ registerSchema({
109
+ command: "ads.x.lineItems.update",
110
+ description: "Stage a change to an existing X ad group. Objective, product type and campaign are absent on purpose \u2014 X treats all three as immutable after create.",
111
+ args: {
112
+ id: { type: "string", description: "Ad group id", required: true },
113
+ "account-id": { type: "string", description: "X Ads account ID", required: false },
114
+ name: { type: "string", description: "New name", required: false },
115
+ status: { type: "string", description: "ACTIVE | PAUSED", required: false },
116
+ placements: { type: "string", description: "CSV of placements", required: false },
117
+ "bid-strategy": { type: "string", description: "AUTO | MAX | TARGET", required: false },
118
+ bid: { type: "string", description: "Bid in account currency", required: false },
119
+ "daily-budget": { type: "string", description: "Daily budget in account currency", required: false },
120
+ "total-budget": { type: "string", description: "Lifetime budget in account currency", required: false },
121
+ "start-time": { type: "string", description: "ISO 8601 start", required: false },
122
+ "end-time": { type: "string", description: "ISO 8601 end", required: false }
123
+ }
124
+ });
125
+ var lineItemsUpdateCommand = defineCommand({
126
+ meta: {
127
+ name: "update",
128
+ description: `Stage a change to an ad group.
129
+
130
+ Examples:
131
+ baker ads x line-items update wiee9 --bid 1.50
132
+ baker ads x line-items update wiee9 --end-time 2026-12-31T00:00:00Z`
133
+ },
134
+ args: {
135
+ id: { type: "positional", description: "Ad group id", required: true },
136
+ "account-id": { type: "string", description: "X Ads account ID" },
137
+ name: { type: "string", description: "New name" },
138
+ status: { type: "string", description: "ACTIVE | PAUSED" },
139
+ placements: { type: "string", description: "CSV of placements" },
140
+ "bid-strategy": { type: "string", description: "AUTO | MAX | TARGET" },
141
+ bid: { type: "string", description: "Bid in account currency" },
142
+ "daily-budget": { type: "string", description: "Daily budget in account currency" },
143
+ "total-budget": { type: "string", description: "Lifetime budget in account currency" },
144
+ "start-time": { type: "string", description: "ISO 8601 start" },
145
+ "end-time": { type: "string", description: "ISO 8601 end" }
146
+ },
147
+ run: async ({ args }) => {
148
+ const accountId = await stageAccountId(args);
149
+ await stageXOp({
150
+ kind: "lineItem.update",
151
+ accountId,
152
+ target: requireTarget(args, "id"),
153
+ payload: compact({
154
+ name: args.name,
155
+ entityStatus: args.status,
156
+ placements: csvArg(args.placements),
157
+ bidStrategy: args["bid-strategy"],
158
+ bidAmountLocalMicro: microsFromArg(args.bid, "--bid"),
159
+ dailyBudgetAmountLocalMicro: microsFromArg(args["daily-budget"], "--daily-budget"),
160
+ totalBudgetAmountLocalMicro: microsFromArg(args["total-budget"], "--total-budget"),
161
+ startTime: args["start-time"],
162
+ endTime: args["end-time"]
163
+ })
164
+ });
165
+ }
166
+ });
167
+ function statusCommand(name, status) {
168
+ registerSchema({
169
+ command: `ads.x.lineItems.${name}`,
170
+ description: `Stage ${name === "pause" ? "a pause" : "a resume"} for one or more X ad groups. Pass every id in one call.`,
171
+ args: {
172
+ ids: { type: "string", description: "Ad group ids, comma-separated", required: true },
173
+ "account-id": { type: "string", description: "X Ads account ID", required: false }
174
+ }
175
+ });
176
+ return defineCommand({
177
+ meta: {
178
+ name,
179
+ description: `Stage ${name === "pause" ? "pausing" : "resuming"} ad groups.
180
+
181
+ Example:
182
+ baker ads x line-items ${name} wiee9,wo2sr`
183
+ },
184
+ args: {
185
+ ids: { type: "positional", description: "Ad group ids, comma-separated", required: true },
186
+ "account-id": { type: "string", description: "X Ads account ID" }
187
+ },
188
+ run: async ({ args }) => {
189
+ const accountId = await stageAccountId(args);
190
+ await stageXOps(
191
+ requireTargets(args, "ids").map((id) => ({
192
+ kind: "lineItem.update",
193
+ accountId,
194
+ target: id,
195
+ payload: { entityStatus: status }
196
+ }))
197
+ );
198
+ }
199
+ });
200
+ }
201
+ var lineItemsPauseCommand = statusCommand("pause", "PAUSED");
202
+ var lineItemsResumeCommand = statusCommand("resume", "ACTIVE");
203
+ export {
204
+ lineItemsCreateCommand,
205
+ lineItemsPauseCommand,
206
+ lineItemsResumeCommand,
207
+ lineItemsUpdateCommand
208
+ };
209
+ //# sourceMappingURL=line-item-writes-Z3TIB5KZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/x/line-item-writes.ts"],"sourcesContent":["import { OBJECTIVES, PLACEMENTS, PRODUCT_TYPES } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport {\n compact,\n csvArg,\n microsFromArg,\n requireTarget,\n requireTargets,\n stageAccountId,\n stageXOp,\n stageXOps,\n} from \"./write-shared.ts\";\n\n/**\n * Staged ad-group (line item) writes. X calls them line items; X Ads Manager\n * and every marketer call them ad groups, so the help does too.\n */\n\nregisterSchema({\n command: \"ads.x.lineItems.create\",\n description: `Stage a new X ad group under a campaign. Objective, product type and campaign are fixed at create — X refuses to change any of them afterwards, so get them right here.\nObjectives: ${OBJECTIVES.join(\", \")}.`,\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n \"campaign-id\": {\n type: \"string\",\n description: \"Parent campaign id, or an x_temp_* ref staged in this draft\",\n required: true,\n },\n name: { type: \"string\", description: \"Ad group name\", required: true },\n objective: { type: \"string\", description: OBJECTIVES.join(\" | \"), required: true },\n \"product-type\": { type: \"string\", description: PRODUCT_TYPES.join(\" | \"), required: false },\n placements: { type: \"string\", description: `CSV of ${PLACEMENTS.join(\", \")}`, required: false },\n status: { type: \"string\", description: \"ACTIVE | PAUSED | DRAFT (default PAUSED)\", required: false },\n \"bid-strategy\": { type: \"string\", description: \"AUTO | MAX | TARGET\", required: false },\n bid: {\n type: \"string\",\n description: \"Bid in account currency — required for MAX/TARGET, refused for AUTO\",\n required: false,\n },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency\", required: false },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency\", required: false },\n \"start-time\": { type: \"string\", description: \"ISO 8601 start\", required: false },\n \"end-time\": { type: \"string\", description: \"ISO 8601 end\", required: false },\n },\n});\n\nexport const lineItemsCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a new ad group (applies when the chat is published).\n\nExamples:\n baker ads x line-items create --campaign-id oilf0 --name \"Spain\" --objective WEBSITE_CLICKS\n baker ads x line-items create --campaign-id x_temp_abc --name \"Spain\" --objective REACH --bid-strategy MAX --bid 1.20`,\n },\n args: {\n \"account-id\": { type: \"string\", description: \"X Ads account ID\" },\n \"campaign-id\": { type: \"string\", description: \"Parent campaign id or x_temp_* ref\", required: true },\n name: { type: \"string\", description: \"Ad group name\", required: true },\n objective: { type: \"string\", description: OBJECTIVES.join(\" | \"), required: true },\n \"product-type\": { type: \"string\", description: PRODUCT_TYPES.join(\" | \") },\n placements: { type: \"string\", description: `CSV of ${PLACEMENTS.join(\", \")}` },\n status: { type: \"string\", description: \"ACTIVE | PAUSED | DRAFT (default PAUSED)\" },\n \"bid-strategy\": { type: \"string\", description: \"AUTO | MAX | TARGET\" },\n bid: { type: \"string\", description: \"Bid in account currency\" },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency\" },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency\" },\n \"start-time\": { type: \"string\", description: \"ISO 8601 start\" },\n \"end-time\": { type: \"string\", description: \"ISO 8601 end\" },\n },\n run: async ({ args }) => {\n const accountId = await stageAccountId(args);\n await stageXOp({\n kind: \"lineItem.create\",\n accountId,\n payload: compact({\n campaignId: args[\"campaign-id\"],\n name: args.name,\n objective: args.objective,\n productType: args[\"product-type\"],\n placements: csvArg(args.placements),\n entityStatus: args.status,\n bidStrategy: args[\"bid-strategy\"],\n bidAmountLocalMicro: microsFromArg(args.bid, \"--bid\"),\n dailyBudgetAmountLocalMicro: microsFromArg(args[\"daily-budget\"], \"--daily-budget\"),\n totalBudgetAmountLocalMicro: microsFromArg(args[\"total-budget\"], \"--total-budget\"),\n startTime: args[\"start-time\"],\n endTime: args[\"end-time\"],\n }),\n });\n },\n});\n\nregisterSchema({\n command: \"ads.x.lineItems.update\",\n description:\n \"Stage a change to an existing X ad group. Objective, product type and campaign are absent on purpose — X treats all three as immutable after create.\",\n args: {\n id: { type: \"string\", description: \"Ad group id\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n name: { type: \"string\", description: \"New name\", required: false },\n status: { type: \"string\", description: \"ACTIVE | PAUSED\", required: false },\n placements: { type: \"string\", description: \"CSV of placements\", required: false },\n \"bid-strategy\": { type: \"string\", description: \"AUTO | MAX | TARGET\", required: false },\n bid: { type: \"string\", description: \"Bid in account currency\", required: false },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency\", required: false },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency\", required: false },\n \"start-time\": { type: \"string\", description: \"ISO 8601 start\", required: false },\n \"end-time\": { type: \"string\", description: \"ISO 8601 end\", required: false },\n },\n});\n\nexport const lineItemsUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Stage a change to an ad group.\n\nExamples:\n baker ads x line-items update wiee9 --bid 1.50\n baker ads x line-items update wiee9 --end-time 2026-12-31T00:00:00Z`,\n },\n args: {\n id: { type: \"positional\", description: \"Ad group id\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\" },\n name: { type: \"string\", description: \"New name\" },\n status: { type: \"string\", description: \"ACTIVE | PAUSED\" },\n placements: { type: \"string\", description: \"CSV of placements\" },\n \"bid-strategy\": { type: \"string\", description: \"AUTO | MAX | TARGET\" },\n bid: { type: \"string\", description: \"Bid in account currency\" },\n \"daily-budget\": { type: \"string\", description: \"Daily budget in account currency\" },\n \"total-budget\": { type: \"string\", description: \"Lifetime budget in account currency\" },\n \"start-time\": { type: \"string\", description: \"ISO 8601 start\" },\n \"end-time\": { type: \"string\", description: \"ISO 8601 end\" },\n },\n run: async ({ args }) => {\n const accountId = await stageAccountId(args);\n await stageXOp({\n kind: \"lineItem.update\",\n accountId,\n target: requireTarget(args, \"id\"),\n payload: compact({\n name: args.name,\n entityStatus: args.status,\n placements: csvArg(args.placements),\n bidStrategy: args[\"bid-strategy\"],\n bidAmountLocalMicro: microsFromArg(args.bid, \"--bid\"),\n dailyBudgetAmountLocalMicro: microsFromArg(args[\"daily-budget\"], \"--daily-budget\"),\n totalBudgetAmountLocalMicro: microsFromArg(args[\"total-budget\"], \"--total-budget\"),\n startTime: args[\"start-time\"],\n endTime: args[\"end-time\"],\n }),\n });\n },\n});\n\nfunction statusCommand(name: \"pause\" | \"resume\", status: \"PAUSED\" | \"ACTIVE\") {\n registerSchema({\n command: `ads.x.lineItems.${name}`,\n description: `Stage ${name === \"pause\" ? \"a pause\" : \"a resume\"} for one or more X ad groups. Pass every id in one call.`,\n args: {\n ids: { type: \"string\", description: \"Ad group ids, comma-separated\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\", required: false },\n },\n });\n return defineCommand({\n meta: {\n name,\n description: `Stage ${name === \"pause\" ? \"pausing\" : \"resuming\"} ad groups.\n\nExample:\n baker ads x line-items ${name} wiee9,wo2sr`,\n },\n args: {\n ids: { type: \"positional\", description: \"Ad group ids, comma-separated\", required: true },\n \"account-id\": { type: \"string\", description: \"X Ads account ID\" },\n },\n run: async ({ args }) => {\n const accountId = await stageAccountId(args);\n await stageXOps(\n requireTargets(args, \"ids\").map((id) => ({\n kind: \"lineItem.update\",\n accountId,\n target: id,\n payload: { entityStatus: status },\n })),\n );\n },\n });\n}\n\nexport const lineItemsPauseCommand = statusCommand(\"pause\", \"PAUSED\");\nexport const lineItemsResumeCommand = statusCommand(\"resume\", \"ACTIVE\");\n"],"mappings":"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","names":[]}