@koda-sl/baker-cli 0.496.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 (841) 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-GZ4A2VYW.js +39 -0
  73. package/dist/chunk-GZ4A2VYW.js.map +1 -0
  74. package/dist/chunk-HPLHAHG5.js +275 -0
  75. package/dist/chunk-I24YT2KG.js +122 -0
  76. package/dist/chunk-IFDZZOUC.js +903 -0
  77. package/dist/chunk-JVVUI55M.js +455 -0
  78. package/dist/chunk-KKSHEPBY.js +363 -0
  79. package/dist/chunk-KQ7RCLGC.js +547 -0
  80. package/dist/chunk-L7WMS5PW.js +172 -0
  81. package/dist/chunk-LBRO4MTL.js +19 -0
  82. package/dist/chunk-LNRPOULW.js +224 -0
  83. package/dist/chunk-LX6WC2XZ.js +942 -0
  84. package/dist/chunk-MMGTJBM6.js +142 -0
  85. package/dist/chunk-NZS3KEQ2.js +97 -0
  86. package/dist/chunk-NZS3KEQ2.js.map +1 -0
  87. package/dist/chunk-O37VU7FG.js +6799 -0
  88. package/dist/chunk-O37VU7FG.js.map +1 -0
  89. package/dist/chunk-OEZYSL3U.js +51 -0
  90. package/dist/chunk-OOVHBMQB.js +103 -0
  91. package/dist/chunk-PTH7VWKK.js +159 -0
  92. package/dist/chunk-PYD6IGW6.js +401 -0
  93. package/dist/chunk-PYD6IGW6.js.map +1 -0
  94. package/dist/chunk-QE2E4EYJ.js +349 -0
  95. package/dist/chunk-QE2E4EYJ.js.map +1 -0
  96. package/dist/chunk-QZF4BVKL.js +66 -0
  97. package/dist/chunk-RITUSBYO.js +61 -0
  98. package/dist/chunk-SSTL3A7Z.js +206 -0
  99. package/dist/chunk-SZNGQ2GF.js +64 -0
  100. package/dist/chunk-SZNGQ2GF.js.map +1 -0
  101. package/dist/chunk-TD4SO6TR.js +169 -0
  102. package/dist/chunk-UZ4RTOFG.js +91 -0
  103. package/dist/chunk-VAX7PFQV.js +592 -0
  104. package/dist/chunk-VDRSZK4P.js +494 -0
  105. package/dist/chunk-VNU2EYD4.js +344 -0
  106. package/dist/chunk-WT4WDIXA.js +156 -0
  107. package/dist/chunk-XEX23CIB.js +160 -0
  108. package/dist/chunk-XXDF25BW.js +8939 -0
  109. package/dist/chunk-YJ3LSFMX.js +249 -0
  110. package/dist/chunk-YVK5RT3B.js +197 -0
  111. package/dist/chunk-YWWRLZUR.js +433 -0
  112. package/dist/chunk-Z4S5BCVZ.js +57 -0
  113. package/dist/chunk-ZYGK7GAK.js +1079 -0
  114. package/dist/claim-TSFPWTQY.js +198 -0
  115. package/dist/claim-TSFPWTQY.js.map +1 -0
  116. package/dist/cli.js +38 -37
  117. package/dist/cli.js.map +1 -1
  118. package/dist/companies-P7FZNJQV.js +196 -0
  119. package/dist/companies-P7FZNJQV.js.map +1 -0
  120. package/dist/complete-SYDIHMD5.js +82 -0
  121. package/dist/complete-SYDIHMD5.js.map +1 -0
  122. package/dist/connect-COS6G45S.js +43 -0
  123. package/dist/conversation-UJOWMJRH.js +94 -0
  124. package/dist/conversation-UJOWMJRH.js.map +1 -0
  125. package/dist/conversions-ONOIEILU.js +138 -0
  126. package/dist/conversions-ONOIEILU.js.map +1 -0
  127. package/dist/create-DPQRYQXK.js +208 -0
  128. package/dist/create-DPQRYQXK.js.map +1 -0
  129. package/dist/create-JD76Z4A4.js +60 -0
  130. package/dist/create-JD76Z4A4.js.map +1 -0
  131. package/dist/create-NOT3HGP2.js +133 -0
  132. package/dist/create-NOT3HGP2.js.map +1 -0
  133. package/dist/create-ZYEB7SHF.js +236 -0
  134. package/dist/create-ZYEB7SHF.js.map +1 -0
  135. package/dist/creatives-LRSELC7Y.js +221 -0
  136. package/dist/creatives-LRSELC7Y.js.map +1 -0
  137. package/dist/creatives-SEQHJD2M.js +58 -0
  138. package/dist/credentials-LHPTUVVA.js +288 -0
  139. package/dist/credentials-LHPTUVVA.js.map +1 -0
  140. package/dist/critique-Q7GSZ5RP.js +1459 -0
  141. package/dist/critique-Q7GSZ5RP.js.map +1 -0
  142. package/dist/critique-RR2XOQCE.js +228 -0
  143. package/dist/critique-RR2XOQCE.js.map +1 -0
  144. package/dist/crm-J7EU32PL.js +319 -0
  145. package/dist/crm-J7EU32PL.js.map +1 -0
  146. package/dist/crm-MC444ZVU.js +225 -0
  147. package/dist/crm-MC444ZVU.js.map +1 -0
  148. package/dist/customers-LMSX33FO.js +57 -0
  149. package/dist/delete-BQBVATMF.js +55 -0
  150. package/dist/delete-BQBVATMF.js.map +1 -0
  151. package/dist/delete-K7A3AUPH.js +65 -0
  152. package/dist/delete-K7A3AUPH.js.map +1 -0
  153. package/dist/delete-VV2ICIHF.js +67 -0
  154. package/dist/delete-VV2ICIHF.js.map +1 -0
  155. package/dist/demographics-7GWUXXS6.js +139 -0
  156. package/dist/demographics-7GWUXXS6.js.map +1 -0
  157. package/dist/discard-3CLZ4DPD.js +67 -0
  158. package/dist/discard-3CLZ4DPD.js.map +1 -0
  159. package/dist/domain-ZS74BSE6.js +99 -0
  160. package/dist/domain-ZS74BSE6.js.map +1 -0
  161. package/dist/draft-J3B33RAZ.js +308 -0
  162. package/dist/draft-J3B33RAZ.js.map +1 -0
  163. package/dist/draft-MZLWVX3D.js +218 -0
  164. package/dist/draft-MZLWVX3D.js.map +1 -0
  165. package/dist/draft-R56PIXCV.js +333 -0
  166. package/dist/draft-R56PIXCV.js.map +1 -0
  167. package/dist/experiment-7RJ5X2LL.js +1397 -0
  168. package/dist/experiments-NOSJJMYI.js +234 -0
  169. package/dist/experiments-NOSJJMYI.js.map +1 -0
  170. package/dist/facets-E6SHYUAI.js +115 -0
  171. package/dist/facets-E6SHYUAI.js.map +1 -0
  172. package/dist/feedback-HXCQBV7S.js +107 -0
  173. package/dist/feedback-HXCQBV7S.js.map +1 -0
  174. package/dist/feedback-record-GXPYXNT6.js +261 -0
  175. package/dist/feedback-record-GXPYXNT6.js.map +1 -0
  176. package/dist/fetch-HMUGSRE4.js +177 -0
  177. package/dist/fetch-HMUGSRE4.js.map +1 -0
  178. package/dist/find-2EPXK5RF.js +134 -0
  179. package/dist/fit-W7UNFZT5.js +63 -0
  180. package/dist/flows-SO5J3M3X.js +248 -0
  181. package/dist/flows-SO5J3M3X.js.map +1 -0
  182. package/dist/fonts-N42UYWTX.js +37 -0
  183. package/dist/forecast-24LGJVLC.js +119 -0
  184. package/dist/forecast-24LGJVLC.js.map +1 -0
  185. package/dist/funnel-NYT36B3C.js +395 -0
  186. package/dist/funnel-NYT36B3C.js.map +1 -0
  187. package/dist/ga4-6EIQC2TG.js +55 -0
  188. package/dist/get-KAGO4EC5.js +80 -0
  189. package/dist/get-KAGO4EC5.js.map +1 -0
  190. package/dist/get-PZX27LQY.js +38 -0
  191. package/dist/get-PZX27LQY.js.map +1 -0
  192. package/dist/get-R5JAFHTH.js +57 -0
  193. package/dist/get-R5JAFHTH.js.map +1 -0
  194. package/dist/google-O5OI6QFU.js +136 -0
  195. package/dist/google-ads-6X4BHGUR.js +196 -0
  196. package/dist/google-ads-6X4BHGUR.js.map +1 -0
  197. package/dist/gsc-BM3T2GDL.js +30 -0
  198. package/dist/history-LGOWYLBE.js +134 -0
  199. package/dist/history-LGOWYLBE.js.map +1 -0
  200. package/dist/hubspot-LJB3ETUT.js +780 -0
  201. package/dist/hubspot-LJB3ETUT.js.map +1 -0
  202. package/dist/icon-B7DG53S5.js +137 -0
  203. package/dist/ideas-DYN2DMFN.js +41 -0
  204. package/dist/images-EQCUXEHF.js +92 -0
  205. package/dist/ingest-B46AY3QU.js +24 -0
  206. package/dist/ingest-T7ZS2R4U.js +108 -0
  207. package/dist/ingest-T7ZS2R4U.js.map +1 -0
  208. package/dist/inspect-BSNGAT2S.js +190 -0
  209. package/dist/inspect-BSNGAT2S.js.map +1 -0
  210. package/dist/inspiration-TCCKM4R7.js +53 -0
  211. package/dist/keyword-metrics-KNTIN4ZK.js +198 -0
  212. package/dist/keyword-metrics-KNTIN4ZK.js.map +1 -0
  213. package/dist/keywords-for-site-S4MXGXWR.js +129 -0
  214. package/dist/keywords-for-site-S4MXGXWR.js.map +1 -0
  215. package/dist/landing-WVPA7NBR.js +28 -0
  216. package/dist/leads-EINV5FK3.js +113 -0
  217. package/dist/leads-EINV5FK3.js.map +1 -0
  218. package/dist/learn-7Z2VR6MS.js +205 -0
  219. package/dist/learn-7Z2VR6MS.js.map +1 -0
  220. package/dist/line-item-writes-Z3TIB5KZ.js +209 -0
  221. package/dist/line-item-writes-Z3TIB5KZ.js.map +1 -0
  222. package/dist/line-items-OEWYOPFP.js +103 -0
  223. package/dist/link-KYHUIPJE.js +65 -0
  224. package/dist/link-KYHUIPJE.js.map +1 -0
  225. package/dist/linkedin-JVB4HXJC.js +1314 -0
  226. package/dist/linkedin-JVB4HXJC.js.map +1 -0
  227. package/dist/list-EORTO73V.js +93 -0
  228. package/dist/list-EORTO73V.js.map +1 -0
  229. package/dist/list-QQVLURKH.js +152 -0
  230. package/dist/list-QQVLURKH.js.map +1 -0
  231. package/dist/list-QWGKRUSM.js +65 -0
  232. package/dist/list-QWGKRUSM.js.map +1 -0
  233. package/dist/list-WRBWQASJ.js +50 -0
  234. package/dist/list-Z6NMNK3T.js +304 -0
  235. package/dist/list-Z6NMNK3T.js.map +1 -0
  236. package/dist/log-RUMKYPYK.js +93 -0
  237. package/dist/log-RUMKYPYK.js.map +1 -0
  238. package/dist/logo-QTSBKP2J.js +18 -0
  239. package/dist/make-IJGCQA7C.js +1354 -0
  240. package/dist/make-IJGCQA7C.js.map +1 -0
  241. package/dist/map-QZHIJFQT.js +434 -0
  242. package/dist/map-QZHIJFQT.js.map +1 -0
  243. package/dist/mcp-ZH2XDV5P.js +715 -0
  244. package/dist/mcp-ZH2XDV5P.js.map +1 -0
  245. package/dist/media-sources-SQ2RPDBO.js +35 -0
  246. package/dist/media-sources-SQ2RPDBO.js.map +1 -0
  247. package/dist/members-4YX7JEZM.js +45 -0
  248. package/dist/members-4YX7JEZM.js.map +1 -0
  249. package/dist/normalize-ABIWLRIT.js +142 -0
  250. package/dist/normalize-ABIWLRIT.js.map +1 -0
  251. package/dist/options-SVCQVTNE.js +123 -0
  252. package/dist/options-SVCQVTNE.js.map +1 -0
  253. package/dist/organization-FNKDC742.js +947 -0
  254. package/dist/organization-FNKDC742.js.map +1 -0
  255. package/dist/performance-HTU5FR2K.js +25 -0
  256. package/dist/posts-3DAPTBH2.js +34 -0
  257. package/dist/posts-3DAPTBH2.js.map +1 -0
  258. package/dist/promoted-tweet-writes-DD3CJNWW.js +181 -0
  259. package/dist/promoted-tweet-writes-DD3CJNWW.js.map +1 -0
  260. package/dist/promoted-tweets-TTWN5OMW.js +119 -0
  261. package/dist/publish-Z62KGDJ2.js +342 -0
  262. package/dist/publish-Z62KGDJ2.js.map +1 -0
  263. package/dist/reddit-6C3PT5CT.js +27 -0
  264. package/dist/refresh-HCQXVFVR.js +95 -0
  265. package/dist/refresh-HCQXVFVR.js.map +1 -0
  266. package/dist/refresh-ZCGH64OZ.js +42 -0
  267. package/dist/refresh-ZCGH64OZ.js.map +1 -0
  268. package/dist/release-FIHW2HCH.js +61 -0
  269. package/dist/release-FIHW2HCH.js.map +1 -0
  270. package/dist/remove-CBR7NVMI.js +51 -0
  271. package/dist/remove-CBR7NVMI.js.map +1 -0
  272. package/dist/remove-PUZP5GWN.js +49 -0
  273. package/dist/remove-PUZP5GWN.js.map +1 -0
  274. package/dist/reopen-EJGLRQWR.js +64 -0
  275. package/dist/reopen-EJGLRQWR.js.map +1 -0
  276. package/dist/rerun-TVBZXASH.js +91 -0
  277. package/dist/rerun-TVBZXASH.js.map +1 -0
  278. package/dist/research-L25D4WHQ.js +263 -0
  279. package/dist/research-L25D4WHQ.js.map +1 -0
  280. package/dist/research-YCMMQVK6.js +62 -0
  281. package/dist/reset-HKKCWKZ7.js +55 -0
  282. package/dist/reset-HKKCWKZ7.js.map +1 -0
  283. package/dist/reset-SRL6I6GP.js +55 -0
  284. package/dist/reset-SRL6I6GP.js.map +1 -0
  285. package/dist/resolve-POMTTAFR.js +122 -0
  286. package/dist/resolve-POMTTAFR.js.map +1 -0
  287. package/dist/retry-MEPTOAV2.js +61 -0
  288. package/dist/retry-MEPTOAV2.js.map +1 -0
  289. package/dist/retry-RNGM3KKA.js +63 -0
  290. package/dist/retry-RNGM3KKA.js.map +1 -0
  291. package/dist/revenue-X4KPTSAM.js +89 -0
  292. package/dist/revenue-X4KPTSAM.js.map +1 -0
  293. package/dist/rules-VK7YA23Q.js +97 -0
  294. package/dist/rules-VK7YA23Q.js.map +1 -0
  295. package/dist/rules-add-VG7AT6EG.js +463 -0
  296. package/dist/rules-add-VG7AT6EG.js.map +1 -0
  297. package/dist/run-DIDQSZU7.js +67 -0
  298. package/dist/run-DIDQSZU7.js.map +1 -0
  299. package/dist/run-SR7DJ7M5.js +66 -0
  300. package/dist/scaffold-ad-46GTFUMP.js +1512 -0
  301. package/dist/scaffold-ad-46GTFUMP.js.map +1 -0
  302. package/dist/scaffold-static-ad-U63V4UHR.js +1006 -0
  303. package/dist/scaffold-static-ad-U63V4UHR.js.map +1 -0
  304. package/dist/scaffold-video-4DNTURH6.js +884 -0
  305. package/dist/scaffold-video-4DNTURH6.js.map +1 -0
  306. package/dist/schedule-JO66N7XO.js +62 -0
  307. package/dist/schedule-JO66N7XO.js.map +1 -0
  308. package/dist/schedule-JZBIX6LH.js +67 -0
  309. package/dist/schedule-JZBIX6LH.js.map +1 -0
  310. package/dist/scheduled-agents-N63EZNY6.js +50 -0
  311. package/dist/schema-B2XANMEY.js +133 -0
  312. package/dist/schema-B2XANMEY.js.map +1 -0
  313. package/dist/schema-C6SGBNA6.js +69 -0
  314. package/dist/search-7GHS3OUZ.js +51 -0
  315. package/dist/search-7GHS3OUZ.js.map +1 -0
  316. package/dist/search-W5HZUJA2.js +175 -0
  317. package/dist/search-W5HZUJA2.js.map +1 -0
  318. package/dist/select-LMGLNFWB.js +102 -0
  319. package/dist/select-LMGLNFWB.js.map +1 -0
  320. package/dist/set-prompt-M5E3UZDM.js +194 -0
  321. package/dist/set-prompt-M5E3UZDM.js.map +1 -0
  322. package/dist/setup-links-ERBQSKAB.js +142 -0
  323. package/dist/setup-links-ERBQSKAB.js.map +1 -0
  324. package/dist/site-PNVFJRYK.js +178 -0
  325. package/dist/site-PNVFJRYK.js.map +1 -0
  326. package/dist/sources-DMZJPLKC.js +455 -0
  327. package/dist/sources-DMZJPLKC.js.map +1 -0
  328. package/dist/sources-HN3GCEDX.js +30 -0
  329. package/dist/stale-VWN25WTL.js +72 -0
  330. package/dist/stale-VWN25WTL.js.map +1 -0
  331. package/dist/stats-CVF6AC7R.js +34 -0
  332. package/dist/status-SF7DTPCJ.js +63 -0
  333. package/dist/status-SF7DTPCJ.js.map +1 -0
  334. package/dist/stock-4LPQ6SM7.js +179 -0
  335. package/dist/studio-NZ6WQ7OE.js +49 -0
  336. package/dist/suggest-WMMEQCUH.js +66 -0
  337. package/dist/suggest-WMMEQCUH.js.map +1 -0
  338. package/dist/sync-F7VNZLWY.js +55 -0
  339. package/dist/sync-F7VNZLWY.js.map +1 -0
  340. package/dist/sync-HVNDPBOD.js +55 -0
  341. package/dist/sync-HVNDPBOD.js.map +1 -0
  342. package/dist/sync-definition-CKEUYKWN.js +65 -0
  343. package/dist/tag-KTQ2FV5C.js +57 -0
  344. package/dist/tag-KTQ2FV5C.js.map +1 -0
  345. package/dist/tag-manager-FLXXLNKP.js +43 -0
  346. package/dist/tags-EUOOSAKN.js +26 -0
  347. package/dist/tags-KOMAP2G5.js +21 -0
  348. package/dist/tags-KOMAP2G5.js.map +1 -0
  349. package/dist/tags-TKXJGTR3.js +21 -0
  350. package/dist/tags-TKXJGTR3.js.map +1 -0
  351. package/dist/tags-VWIPDCUA.js +225 -0
  352. package/dist/tags-VWIPDCUA.js.map +1 -0
  353. package/dist/tags-XAB4HWGW.js +21 -0
  354. package/dist/tags-XAB4HWGW.js.map +1 -0
  355. package/dist/targeting-criteria-HE7K52WN.js +113 -0
  356. package/dist/targets-NA4XPDBF.js +104 -0
  357. package/dist/targets-NA4XPDBF.js.map +1 -0
  358. package/dist/testimonials-3Q5XM7JD.js +32 -0
  359. package/dist/top-companies-TKO4QGPJ.js +109 -0
  360. package/dist/top-companies-TKO4QGPJ.js.map +1 -0
  361. package/dist/translate-YVIZ5T44.js +605 -0
  362. package/dist/translate-YVIZ5T44.js.map +1 -0
  363. package/dist/triggers-QX7VW7UO.js +143 -0
  364. package/dist/triggers-QX7VW7UO.js.map +1 -0
  365. package/dist/unlink-64SRPUNG.js +68 -0
  366. package/dist/unlink-64SRPUNG.js.map +1 -0
  367. package/dist/unstage-5X2MOUMF.js +86 -0
  368. package/dist/unstage-5X2MOUMF.js.map +1 -0
  369. package/dist/update-22ZBHURE.js +81 -0
  370. package/dist/update-22ZBHURE.js.map +1 -0
  371. package/dist/update-2LTPSGWT.js +99 -0
  372. package/dist/update-2LTPSGWT.js.map +1 -0
  373. package/dist/update-DOKS7ATM.js +189 -0
  374. package/dist/update-DOKS7ATM.js.map +1 -0
  375. package/dist/update-FB6X463M.js +64 -0
  376. package/dist/update-FB6X463M.js.map +1 -0
  377. package/dist/update-QIZ7XFAM.js +153 -0
  378. package/dist/update-QIZ7XFAM.js.map +1 -0
  379. package/dist/upload-XJ7TUVIK.js +127 -0
  380. package/dist/upload-XJ7TUVIK.js.map +1 -0
  381. package/dist/url-params-KLQOLNPS.js +99 -0
  382. package/dist/url-params-KLQOLNPS.js.map +1 -0
  383. package/dist/validate-YTBJBG44.js +118 -0
  384. package/dist/validate-YTBJBG44.js.map +1 -0
  385. package/dist/videos-WAPUPJVT.js +39 -0
  386. package/dist/viewer-check-GHQA3UY2.js +81 -0
  387. package/dist/web-6JMWERTT.js +141 -0
  388. package/dist/web-6JMWERTT.js.map +1 -0
  389. package/dist/winning-ads-XCVUAIOU.js +86 -0
  390. package/dist/write-commands-N74CDMQM.js +1493 -0
  391. package/dist/write-commands-N74CDMQM.js.map +1 -0
  392. package/dist/x-SI4KYDEY.js +47 -0
  393. package/package.json +1 -1
  394. package/dist/account-UHNR5KTE.js +0 -79
  395. package/dist/account-UHNR5KTE.js.map +0 -1
  396. package/dist/accounts-KMLXHADA.js +0 -77
  397. package/dist/accounts-KMLXHADA.js.map +0 -1
  398. package/dist/accounts-QDGNTSTV.js +0 -611
  399. package/dist/accounts-QDGNTSTV.js.map +0 -1
  400. package/dist/actions-QL5UD2W4.js +0 -55
  401. package/dist/activecampaign-5OD45ROS.js +0 -935
  402. package/dist/activecampaign-5OD45ROS.js.map +0 -1
  403. package/dist/add-2F7BEVYD.js +0 -105
  404. package/dist/add-2F7BEVYD.js.map +0 -1
  405. package/dist/add-6K6LO7CM.js +0 -104
  406. package/dist/add-6K6LO7CM.js.map +0 -1
  407. package/dist/add-LYDJZDGO.js +0 -302
  408. package/dist/add-LYDJZDGO.js.map +0 -1
  409. package/dist/ads-DHPJFU52.js +0 -40
  410. package/dist/advertisers-23LU7GTV.js +0 -120
  411. package/dist/advertisers-23LU7GTV.js.map +0 -1
  412. package/dist/analytics-HO2SLL4W.js +0 -433
  413. package/dist/analytics-HO2SLL4W.js.map +0 -1
  414. package/dist/analytics-LD3D7ISK.js +0 -1976
  415. package/dist/analytics-LD3D7ISK.js.map +0 -1
  416. package/dist/assign-CLKJKH2B.js +0 -77
  417. package/dist/assign-CLKJKH2B.js.map +0 -1
  418. package/dist/audience-size-NNYYXODL.js +0 -73
  419. package/dist/audience-size-NNYYXODL.js.map +0 -1
  420. package/dist/audit-KB4P2XGS.js +0 -151
  421. package/dist/audit-KB4P2XGS.js.map +0 -1
  422. package/dist/autocomplete-VZD2SMTE.js +0 -111
  423. package/dist/autocomplete-VZD2SMTE.js.map +0 -1
  424. package/dist/avatars-FKOO6VZ2.js +0 -38
  425. package/dist/bid-pricing-6LLXOLLI.js +0 -100
  426. package/dist/bid-pricing-6LLXOLLI.js.map +0 -1
  427. package/dist/brand-NNWHBIAX.js +0 -22
  428. package/dist/brief-CPJQWT6W.js +0 -538
  429. package/dist/brief-CPJQWT6W.js.map +0 -1
  430. package/dist/campaign-groups-YPYNXOWU.js +0 -95
  431. package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
  432. package/dist/campaign-writes-UJ4L2O6G.js +0 -165
  433. package/dist/campaign-writes-UJ4L2O6G.js.map +0 -1
  434. package/dist/campaigns-HLBZRH5A.js +0 -107
  435. package/dist/campaigns-N44ZDGB5.js +0 -109
  436. package/dist/campaigns-N44ZDGB5.js.map +0 -1
  437. package/dist/canvas-D64GLWUO.js +0 -46
  438. package/dist/capabilities-LWXCWMIY.js +0 -144
  439. package/dist/capabilities-LWXCWMIY.js.map +0 -1
  440. package/dist/chatgpt-YI6YNACI.js +0 -47
  441. package/dist/chats-7WGC2CVW.js +0 -276
  442. package/dist/chats-7WGC2CVW.js.map +0 -1
  443. package/dist/check-EH6BXWWL.js +0 -104
  444. package/dist/check-EH6BXWWL.js.map +0 -1
  445. package/dist/chunk-2B772ZEA.js +0 -169
  446. package/dist/chunk-2KRK667G.js +0 -51
  447. package/dist/chunk-2TVXJPGR.js +0 -103
  448. package/dist/chunk-3AMLOCXY.js +0 -392
  449. package/dist/chunk-3B5LPK6D.js +0 -658
  450. package/dist/chunk-3B5LPK6D.js.map +0 -1
  451. package/dist/chunk-3N5A44NQ.js +0 -122
  452. package/dist/chunk-3WAYZQNV.js +0 -61
  453. package/dist/chunk-5A257KJA.js +0 -160
  454. package/dist/chunk-6QGS3RQP.js +0 -363
  455. package/dist/chunk-AFD32O4A.js +0 -494
  456. package/dist/chunk-AW2GKIGS.js +0 -433
  457. package/dist/chunk-CYSBNCPX.js +0 -55
  458. package/dist/chunk-CYSBNCPX.js.map +0 -1
  459. package/dist/chunk-DAO63OOP.js +0 -6352
  460. package/dist/chunk-DAO63OOP.js.map +0 -1
  461. package/dist/chunk-EMQUW6JB.js +0 -942
  462. package/dist/chunk-EW3JEKIV.js +0 -139
  463. package/dist/chunk-FBFWMTOP.js +0 -19
  464. package/dist/chunk-GXDLWBOY.js +0 -73
  465. package/dist/chunk-GXDLWBOY.js.map +0 -1
  466. package/dist/chunk-GXGYTFZA.js +0 -8939
  467. package/dist/chunk-I7J7YQXZ.js +0 -142
  468. package/dist/chunk-IBY44U2M.js +0 -1079
  469. package/dist/chunk-IFXGCI33.js +0 -297
  470. package/dist/chunk-IKLHXGMF.js +0 -91
  471. package/dist/chunk-IYTPWAN3.js +0 -604
  472. package/dist/chunk-J3CWAERS.js +0 -3868
  473. package/dist/chunk-JH2L5CQD.js +0 -206
  474. package/dist/chunk-JUVVCA7B.js +0 -97
  475. package/dist/chunk-MK6XJUCQ.js +0 -197
  476. package/dist/chunk-N3I6ZXR7.js +0 -66
  477. package/dist/chunk-NBO2NSAW.js +0 -592
  478. package/dist/chunk-NEU5QD2C.js +0 -249
  479. package/dist/chunk-NKIBXOHT.js +0 -344
  480. package/dist/chunk-OE3MIV4F.js +0 -547
  481. package/dist/chunk-P2MFWJR3.js +0 -903
  482. package/dist/chunk-PHCIFBP3.js +0 -89
  483. package/dist/chunk-PTUXBO5O.js +0 -224
  484. package/dist/chunk-Q3LXLWZY.js +0 -275
  485. package/dist/chunk-Q5WBTVA7.js +0 -455
  486. package/dist/chunk-RDEAVCMF.js +0 -399
  487. package/dist/chunk-RDEAVCMF.js.map +0 -1
  488. package/dist/chunk-RGMKXNQP.js +0 -23
  489. package/dist/chunk-RZTKCCUL.js +0 -831
  490. package/dist/chunk-TTKBNBQF.js +0 -156
  491. package/dist/chunk-VB3XUR6A.js +0 -207
  492. package/dist/chunk-XCKINS7K.js +0 -57
  493. package/dist/chunk-Y6GKV7CU.js +0 -346
  494. package/dist/chunk-Y6GKV7CU.js.map +0 -1
  495. package/dist/chunk-Z2GQREJY.js +0 -159
  496. package/dist/chunk-ZDAVSTEE.js +0 -172
  497. package/dist/chunk-ZXCSOVS5.js +0 -191
  498. package/dist/claim-SVDCQ2AI.js +0 -197
  499. package/dist/claim-SVDCQ2AI.js.map +0 -1
  500. package/dist/companies-BYMYQK6A.js +0 -195
  501. package/dist/companies-BYMYQK6A.js.map +0 -1
  502. package/dist/complete-NEH3MWRI.js +0 -81
  503. package/dist/complete-NEH3MWRI.js.map +0 -1
  504. package/dist/connect-5PGL7ZOM.js +0 -42
  505. package/dist/conversation-CSOKJXDW.js +0 -93
  506. package/dist/conversation-CSOKJXDW.js.map +0 -1
  507. package/dist/conversions-4JOTTFEH.js +0 -135
  508. package/dist/conversions-4JOTTFEH.js.map +0 -1
  509. package/dist/create-2XYMBULY.js +0 -207
  510. package/dist/create-2XYMBULY.js.map +0 -1
  511. package/dist/create-56PTZABQ.js +0 -235
  512. package/dist/create-56PTZABQ.js.map +0 -1
  513. package/dist/create-D6S6TGWY.js +0 -59
  514. package/dist/create-D6S6TGWY.js.map +0 -1
  515. package/dist/create-SMW4O5PC.js +0 -132
  516. package/dist/create-SMW4O5PC.js.map +0 -1
  517. package/dist/creatives-OO76DAFS.js +0 -58
  518. package/dist/creatives-VJUYWJL6.js +0 -182
  519. package/dist/creatives-VJUYWJL6.js.map +0 -1
  520. package/dist/credentials-2ONYUJW6.js +0 -287
  521. package/dist/credentials-2ONYUJW6.js.map +0 -1
  522. package/dist/critique-NDDFSGPE.js +0 -1458
  523. package/dist/critique-NDDFSGPE.js.map +0 -1
  524. package/dist/critique-YXZVMLZ4.js +0 -227
  525. package/dist/critique-YXZVMLZ4.js.map +0 -1
  526. package/dist/crm-Q6CEP5XV.js +0 -224
  527. package/dist/crm-Q6CEP5XV.js.map +0 -1
  528. package/dist/crm-WRONZYDH.js +0 -318
  529. package/dist/crm-WRONZYDH.js.map +0 -1
  530. package/dist/customers-2EFYSCU2.js +0 -56
  531. package/dist/delete-7WEVC3FS.js +0 -66
  532. package/dist/delete-7WEVC3FS.js.map +0 -1
  533. package/dist/delete-RBWK255M.js +0 -54
  534. package/dist/delete-RBWK255M.js.map +0 -1
  535. package/dist/delete-VN4WWMQF.js +0 -64
  536. package/dist/delete-VN4WWMQF.js.map +0 -1
  537. package/dist/demographics-I5XZ435C.js +0 -138
  538. package/dist/demographics-I5XZ435C.js.map +0 -1
  539. package/dist/discard-XJLIXTNM.js +0 -66
  540. package/dist/discard-XJLIXTNM.js.map +0 -1
  541. package/dist/domain-M7AEGAYI.js +0 -98
  542. package/dist/domain-M7AEGAYI.js.map +0 -1
  543. package/dist/draft-5DQI4W5F.js +0 -306
  544. package/dist/draft-5DQI4W5F.js.map +0 -1
  545. package/dist/draft-7IIYHSY2.js +0 -332
  546. package/dist/draft-7IIYHSY2.js.map +0 -1
  547. package/dist/draft-CN6GKVBF.js +0 -217
  548. package/dist/draft-CN6GKVBF.js.map +0 -1
  549. package/dist/experiment-IDDWRCJ7.js +0 -1397
  550. package/dist/facets-ZLZ6LIHN.js +0 -114
  551. package/dist/facets-ZLZ6LIHN.js.map +0 -1
  552. package/dist/feedback-7LEX2P5Q.js +0 -106
  553. package/dist/feedback-7LEX2P5Q.js.map +0 -1
  554. package/dist/feedback-record-P4JJ63KA.js +0 -260
  555. package/dist/feedback-record-P4JJ63KA.js.map +0 -1
  556. package/dist/fetch-MIVCEHXZ.js +0 -176
  557. package/dist/fetch-MIVCEHXZ.js.map +0 -1
  558. package/dist/find-VHN34MWL.js +0 -134
  559. package/dist/fit-SS6HSZPU.js +0 -62
  560. package/dist/flows-UTIIHDNE.js +0 -247
  561. package/dist/flows-UTIIHDNE.js.map +0 -1
  562. package/dist/fonts-YPNN7ZJP.js +0 -36
  563. package/dist/forecast-OBSHG2GJ.js +0 -118
  564. package/dist/forecast-OBSHG2GJ.js.map +0 -1
  565. package/dist/funnel-A4MXQYBA.js +0 -394
  566. package/dist/funnel-A4MXQYBA.js.map +0 -1
  567. package/dist/ga4-ZPAEF2G2.js +0 -55
  568. package/dist/get-MDAO6I7T.js +0 -56
  569. package/dist/get-MDAO6I7T.js.map +0 -1
  570. package/dist/get-ZB553BSH.js +0 -79
  571. package/dist/get-ZB553BSH.js.map +0 -1
  572. package/dist/google-C3X7O2UO.js +0 -136
  573. package/dist/google-ads-FTWL772L.js +0 -195
  574. package/dist/google-ads-FTWL772L.js.map +0 -1
  575. package/dist/gsc-SDDHGTZK.js +0 -30
  576. package/dist/history-WKJYKDMG.js +0 -133
  577. package/dist/history-WKJYKDMG.js.map +0 -1
  578. package/dist/hubspot-EPHVEPOO.js +0 -779
  579. package/dist/hubspot-EPHVEPOO.js.map +0 -1
  580. package/dist/icon-MYPDC6FM.js +0 -137
  581. package/dist/ideas-3PBH7VEX.js +0 -40
  582. package/dist/images-J35C3WG4.js +0 -92
  583. package/dist/ingest-5QOPUKFE.js +0 -107
  584. package/dist/ingest-5QOPUKFE.js.map +0 -1
  585. package/dist/ingest-OKUYP632.js +0 -23
  586. package/dist/inspect-PMNCP6MV.js +0 -189
  587. package/dist/inspect-PMNCP6MV.js.map +0 -1
  588. package/dist/inspiration-QAL7NS7G.js +0 -53
  589. package/dist/keyword-metrics-R752SJIT.js +0 -197
  590. package/dist/keyword-metrics-R752SJIT.js.map +0 -1
  591. package/dist/keywords-for-site-7UWPJYQF.js +0 -128
  592. package/dist/keywords-for-site-7UWPJYQF.js.map +0 -1
  593. package/dist/landing-CBVIOGJ5.js +0 -28
  594. package/dist/leads-LIJS6Y5W.js +0 -90
  595. package/dist/leads-LIJS6Y5W.js.map +0 -1
  596. package/dist/learn-N6QV7GXA.js +0 -204
  597. package/dist/learn-N6QV7GXA.js.map +0 -1
  598. package/dist/line-item-writes-3WPJXKIL.js +0 -208
  599. package/dist/line-item-writes-3WPJXKIL.js.map +0 -1
  600. package/dist/line-items-ZOFKOGAA.js +0 -103
  601. package/dist/link-DDRQKOUL.js +0 -64
  602. package/dist/link-DDRQKOUL.js.map +0 -1
  603. package/dist/linkedin-UWZCF66X.js +0 -1057
  604. package/dist/linkedin-UWZCF66X.js.map +0 -1
  605. package/dist/list-5PLXVPLB.js +0 -151
  606. package/dist/list-5PLXVPLB.js.map +0 -1
  607. package/dist/list-RC2NX6AX.js +0 -50
  608. package/dist/list-VSJISE7U.js +0 -303
  609. package/dist/list-VSJISE7U.js.map +0 -1
  610. package/dist/list-WTVOBQYX.js +0 -64
  611. package/dist/list-WTVOBQYX.js.map +0 -1
  612. package/dist/log-YKKPROLZ.js +0 -92
  613. package/dist/log-YKKPROLZ.js.map +0 -1
  614. package/dist/logo-WE2UELX6.js +0 -18
  615. package/dist/make-RNOWBLZQ.js +0 -1353
  616. package/dist/make-RNOWBLZQ.js.map +0 -1
  617. package/dist/map-WTDPQLVO.js +0 -433
  618. package/dist/map-WTDPQLVO.js.map +0 -1
  619. package/dist/mcp-XJNSCPP3.js +0 -714
  620. package/dist/mcp-XJNSCPP3.js.map +0 -1
  621. package/dist/media-sources-JGBDDXZ5.js +0 -32
  622. package/dist/media-sources-JGBDDXZ5.js.map +0 -1
  623. package/dist/members-O3BTMRXX.js +0 -44
  624. package/dist/members-O3BTMRXX.js.map +0 -1
  625. package/dist/normalize-R5AYLA2J.js +0 -141
  626. package/dist/normalize-R5AYLA2J.js.map +0 -1
  627. package/dist/options-AILRY7JY.js +0 -122
  628. package/dist/options-AILRY7JY.js.map +0 -1
  629. package/dist/organization-KJJXZLVK.js +0 -946
  630. package/dist/organization-KJJXZLVK.js.map +0 -1
  631. package/dist/performance-7YU4HOGH.js +0 -24
  632. package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
  633. package/dist/promoted-tweet-writes-TNELWPVG.js.map +0 -1
  634. package/dist/promoted-tweets-76WKUFJQ.js +0 -119
  635. package/dist/publish-BKLHCKHB.js +0 -341
  636. package/dist/publish-BKLHCKHB.js.map +0 -1
  637. package/dist/reddit-YK3YUZEI.js +0 -26
  638. package/dist/refresh-WIII7KXB.js +0 -94
  639. package/dist/refresh-WIII7KXB.js.map +0 -1
  640. package/dist/release-ZHXYQI7G.js +0 -60
  641. package/dist/release-ZHXYQI7G.js.map +0 -1
  642. package/dist/remove-NOX4BXWK.js +0 -50
  643. package/dist/remove-NOX4BXWK.js.map +0 -1
  644. package/dist/remove-VLWRCOEZ.js +0 -48
  645. package/dist/remove-VLWRCOEZ.js.map +0 -1
  646. package/dist/reopen-NLWKK5HB.js +0 -63
  647. package/dist/reopen-NLWKK5HB.js.map +0 -1
  648. package/dist/rerun-DZWQNMZQ.js +0 -90
  649. package/dist/rerun-DZWQNMZQ.js.map +0 -1
  650. package/dist/research-Q3P76RHN.js +0 -62
  651. package/dist/research-UDZBCDNX.js +0 -262
  652. package/dist/research-UDZBCDNX.js.map +0 -1
  653. package/dist/reset-5UHFX7QY.js +0 -54
  654. package/dist/reset-5UHFX7QY.js.map +0 -1
  655. package/dist/reset-MTRJQUP7.js +0 -54
  656. package/dist/reset-MTRJQUP7.js.map +0 -1
  657. package/dist/resolve-DA72VT7Q.js +0 -121
  658. package/dist/resolve-DA72VT7Q.js.map +0 -1
  659. package/dist/retry-LQUBX5TK.js +0 -62
  660. package/dist/retry-LQUBX5TK.js.map +0 -1
  661. package/dist/retry-U6F4CS6O.js +0 -60
  662. package/dist/retry-U6F4CS6O.js.map +0 -1
  663. package/dist/rules-VS5PZ7VO.js +0 -96
  664. package/dist/rules-VS5PZ7VO.js.map +0 -1
  665. package/dist/rules-add-LMVZYDXE.js +0 -462
  666. package/dist/rules-add-LMVZYDXE.js.map +0 -1
  667. package/dist/run-6PRA2YSD.js +0 -65
  668. package/dist/run-R6COFNOR.js +0 -66
  669. package/dist/run-R6COFNOR.js.map +0 -1
  670. package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
  671. package/dist/scaffold-ad-3OVJ7VZQ.js.map +0 -1
  672. package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
  673. package/dist/scaffold-static-ad-DDRA3Q5I.js.map +0 -1
  674. package/dist/scaffold-video-3JZYFYFU.js +0 -883
  675. package/dist/scaffold-video-3JZYFYFU.js.map +0 -1
  676. package/dist/schedule-BRSYHMKR.js +0 -66
  677. package/dist/schedule-BRSYHMKR.js.map +0 -1
  678. package/dist/schedule-ED2YDUPY.js +0 -61
  679. package/dist/schedule-ED2YDUPY.js.map +0 -1
  680. package/dist/scheduled-agents-5P67MVGX.js +0 -50
  681. package/dist/schema-4XVKERSA.js +0 -132
  682. package/dist/schema-4XVKERSA.js.map +0 -1
  683. package/dist/schema-RRAQW3OS.js +0 -69
  684. package/dist/search-Y2UMIQ57.js +0 -174
  685. package/dist/search-Y2UMIQ57.js.map +0 -1
  686. package/dist/select-OZ4E6VLF.js +0 -101
  687. package/dist/select-OZ4E6VLF.js.map +0 -1
  688. package/dist/set-prompt-O4YAE4CE.js +0 -193
  689. package/dist/set-prompt-O4YAE4CE.js.map +0 -1
  690. package/dist/setup-links-2GJYCV2A.js +0 -141
  691. package/dist/setup-links-2GJYCV2A.js.map +0 -1
  692. package/dist/site-47B6V2UX.js +0 -177
  693. package/dist/site-47B6V2UX.js.map +0 -1
  694. package/dist/sources-DXPZAPQ7.js +0 -454
  695. package/dist/sources-DXPZAPQ7.js.map +0 -1
  696. package/dist/sources-NDXYTASG.js +0 -30
  697. package/dist/stale-VLVBO2L6.js +0 -71
  698. package/dist/stale-VLVBO2L6.js.map +0 -1
  699. package/dist/stats-37OFAMPW.js +0 -34
  700. package/dist/status-4ODD46XY.js +0 -62
  701. package/dist/status-4ODD46XY.js.map +0 -1
  702. package/dist/stock-6R5E7MJX.js +0 -179
  703. package/dist/studio-LEIGL3Q7.js +0 -49
  704. package/dist/sync-EKGEWE53.js +0 -54
  705. package/dist/sync-EKGEWE53.js.map +0 -1
  706. package/dist/sync-TKNVBUDM.js +0 -54
  707. package/dist/sync-TKNVBUDM.js.map +0 -1
  708. package/dist/sync-definition-M5R3H3TP.js +0 -64
  709. package/dist/tag-manager-3Q55PBEW.js +0 -43
  710. package/dist/tags-4N5UUUN6.js +0 -26
  711. package/dist/tags-5NHIAD5A.js +0 -20
  712. package/dist/tags-5NHIAD5A.js.map +0 -1
  713. package/dist/tags-UUKWSWCN.js +0 -20
  714. package/dist/tags-UUKWSWCN.js.map +0 -1
  715. package/dist/tags-VK7B5DJF.js +0 -20
  716. package/dist/tags-VK7B5DJF.js.map +0 -1
  717. package/dist/tags-XAHIB3WA.js +0 -224
  718. package/dist/tags-XAHIB3WA.js.map +0 -1
  719. package/dist/targeting-criteria-AVARWV2G.js +0 -113
  720. package/dist/targets-6RYLQRID.js +0 -103
  721. package/dist/targets-6RYLQRID.js.map +0 -1
  722. package/dist/testimonials-6TF6BOFN.js +0 -32
  723. package/dist/top-companies-45EHRCJD.js +0 -108
  724. package/dist/top-companies-45EHRCJD.js.map +0 -1
  725. package/dist/translate-VHLBACCE.js +0 -604
  726. package/dist/translate-VHLBACCE.js.map +0 -1
  727. package/dist/triggers-ERQONJNO.js +0 -142
  728. package/dist/triggers-ERQONJNO.js.map +0 -1
  729. package/dist/unlink-TPDO6JNF.js +0 -67
  730. package/dist/unlink-TPDO6JNF.js.map +0 -1
  731. package/dist/unstage-YKKQQ7LW.js +0 -85
  732. package/dist/unstage-YKKQQ7LW.js.map +0 -1
  733. package/dist/update-43WU6X7R.js +0 -63
  734. package/dist/update-43WU6X7R.js.map +0 -1
  735. package/dist/update-CAHLAXWO.js +0 -98
  736. package/dist/update-CAHLAXWO.js.map +0 -1
  737. package/dist/update-NGH6YADN.js +0 -152
  738. package/dist/update-NGH6YADN.js.map +0 -1
  739. package/dist/update-SPJIHHLE.js +0 -188
  740. package/dist/update-SPJIHHLE.js.map +0 -1
  741. package/dist/upload-ACESIZIZ.js +0 -126
  742. package/dist/upload-ACESIZIZ.js.map +0 -1
  743. package/dist/url-params-MIXEDBF7.js +0 -98
  744. package/dist/url-params-MIXEDBF7.js.map +0 -1
  745. package/dist/validate-XJJA7ULE.js +0 -117
  746. package/dist/validate-XJJA7ULE.js.map +0 -1
  747. package/dist/videos-LBXPG7WC.js +0 -39
  748. package/dist/viewer-check-7VJ3GUZX.js +0 -80
  749. package/dist/web-EWQJC2SD.js +0 -140
  750. package/dist/web-EWQJC2SD.js.map +0 -1
  751. package/dist/winning-ads-SAOJAKEQ.js +0 -86
  752. package/dist/write-commands-QPDE4GWW.js +0 -1024
  753. package/dist/write-commands-QPDE4GWW.js.map +0 -1
  754. package/dist/x-LXOJPCRF.js +0 -47
  755. /package/dist/{actions-QL5UD2W4.js.map → actions-FMNJSOBA.js.map} +0 -0
  756. /package/dist/{ads-DHPJFU52.js.map → ads-OLXSDPD6.js.map} +0 -0
  757. /package/dist/{avatars-FKOO6VZ2.js.map → avatars-I4H3NMEJ.js.map} +0 -0
  758. /package/dist/{brand-NNWHBIAX.js.map → brand-3V7ECY7D.js.map} +0 -0
  759. /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-MCB76NPQ.js.map} +0 -0
  760. /package/dist/{canvas-D64GLWUO.js.map → canvas-JCNKMGCG.js.map} +0 -0
  761. /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-XFZ42NXC.js.map} +0 -0
  762. /package/dist/{chunk-VB3XUR6A.js.map → chunk-2YTBPRRG.js.map} +0 -0
  763. /package/dist/{chunk-JUVVCA7B.js.map → chunk-3SNCMEJB.js.map} +0 -0
  764. /package/dist/{chunk-RGMKXNQP.js.map → chunk-7QGFO35A.js.map} +0 -0
  765. /package/dist/{chunk-ZXCSOVS5.js.map → chunk-AV7ALENU.js.map} +0 -0
  766. /package/dist/{chunk-IYTPWAN3.js.map → chunk-BRLFQ4VX.js.map} +0 -0
  767. /package/dist/{chunk-RZTKCCUL.js.map → chunk-DJE7UXYT.js.map} +0 -0
  768. /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
  769. /package/dist/{chunk-J3CWAERS.js.map → chunk-EONSZAZB.js.map} +0 -0
  770. /package/dist/{chunk-PHCIFBP3.js.map → chunk-FG3MV2XM.js.map} +0 -0
  771. /package/dist/{chunk-3AMLOCXY.js.map → chunk-FKG476GH.js.map} +0 -0
  772. /package/dist/{chunk-IFXGCI33.js.map → chunk-FUGQSIYG.js.map} +0 -0
  773. /package/dist/{chunk-Q3LXLWZY.js.map → chunk-HPLHAHG5.js.map} +0 -0
  774. /package/dist/{chunk-3N5A44NQ.js.map → chunk-I24YT2KG.js.map} +0 -0
  775. /package/dist/{chunk-P2MFWJR3.js.map → chunk-IFDZZOUC.js.map} +0 -0
  776. /package/dist/{chunk-Q5WBTVA7.js.map → chunk-JVVUI55M.js.map} +0 -0
  777. /package/dist/{chunk-6QGS3RQP.js.map → chunk-KKSHEPBY.js.map} +0 -0
  778. /package/dist/{chunk-OE3MIV4F.js.map → chunk-KQ7RCLGC.js.map} +0 -0
  779. /package/dist/{chunk-ZDAVSTEE.js.map → chunk-L7WMS5PW.js.map} +0 -0
  780. /package/dist/{chunk-FBFWMTOP.js.map → chunk-LBRO4MTL.js.map} +0 -0
  781. /package/dist/{chunk-PTUXBO5O.js.map → chunk-LNRPOULW.js.map} +0 -0
  782. /package/dist/{chunk-EMQUW6JB.js.map → chunk-LX6WC2XZ.js.map} +0 -0
  783. /package/dist/{chunk-I7J7YQXZ.js.map → chunk-MMGTJBM6.js.map} +0 -0
  784. /package/dist/{chunk-2KRK667G.js.map → chunk-OEZYSL3U.js.map} +0 -0
  785. /package/dist/{chunk-2TVXJPGR.js.map → chunk-OOVHBMQB.js.map} +0 -0
  786. /package/dist/{chunk-Z2GQREJY.js.map → chunk-PTH7VWKK.js.map} +0 -0
  787. /package/dist/{chunk-N3I6ZXR7.js.map → chunk-QZF4BVKL.js.map} +0 -0
  788. /package/dist/{chunk-3WAYZQNV.js.map → chunk-RITUSBYO.js.map} +0 -0
  789. /package/dist/{chunk-JH2L5CQD.js.map → chunk-SSTL3A7Z.js.map} +0 -0
  790. /package/dist/{chunk-2B772ZEA.js.map → chunk-TD4SO6TR.js.map} +0 -0
  791. /package/dist/{chunk-IKLHXGMF.js.map → chunk-UZ4RTOFG.js.map} +0 -0
  792. /package/dist/{chunk-NBO2NSAW.js.map → chunk-VAX7PFQV.js.map} +0 -0
  793. /package/dist/{chunk-AFD32O4A.js.map → chunk-VDRSZK4P.js.map} +0 -0
  794. /package/dist/{chunk-NKIBXOHT.js.map → chunk-VNU2EYD4.js.map} +0 -0
  795. /package/dist/{chunk-TTKBNBQF.js.map → chunk-WT4WDIXA.js.map} +0 -0
  796. /package/dist/{chunk-5A257KJA.js.map → chunk-XEX23CIB.js.map} +0 -0
  797. /package/dist/{chunk-GXGYTFZA.js.map → chunk-XXDF25BW.js.map} +0 -0
  798. /package/dist/{chunk-NEU5QD2C.js.map → chunk-YJ3LSFMX.js.map} +0 -0
  799. /package/dist/{chunk-MK6XJUCQ.js.map → chunk-YVK5RT3B.js.map} +0 -0
  800. /package/dist/{chunk-AW2GKIGS.js.map → chunk-YWWRLZUR.js.map} +0 -0
  801. /package/dist/{chunk-XCKINS7K.js.map → chunk-Z4S5BCVZ.js.map} +0 -0
  802. /package/dist/{chunk-IBY44U2M.js.map → chunk-ZYGK7GAK.js.map} +0 -0
  803. /package/dist/{connect-5PGL7ZOM.js.map → connect-COS6G45S.js.map} +0 -0
  804. /package/dist/{creatives-OO76DAFS.js.map → creatives-SEQHJD2M.js.map} +0 -0
  805. /package/dist/{customers-2EFYSCU2.js.map → customers-LMSX33FO.js.map} +0 -0
  806. /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
  807. /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
  808. /package/dist/{fit-SS6HSZPU.js.map → fit-W7UNFZT5.js.map} +0 -0
  809. /package/dist/{fonts-YPNN7ZJP.js.map → fonts-N42UYWTX.js.map} +0 -0
  810. /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
  811. /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
  812. /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
  813. /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
  814. /package/dist/{ideas-3PBH7VEX.js.map → ideas-DYN2DMFN.js.map} +0 -0
  815. /package/dist/{images-J35C3WG4.js.map → images-EQCUXEHF.js.map} +0 -0
  816. /package/dist/{ingest-OKUYP632.js.map → ingest-B46AY3QU.js.map} +0 -0
  817. /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
  818. /package/dist/{landing-CBVIOGJ5.js.map → landing-WVPA7NBR.js.map} +0 -0
  819. /package/dist/{line-items-ZOFKOGAA.js.map → line-items-OEWYOPFP.js.map} +0 -0
  820. /package/dist/{list-RC2NX6AX.js.map → list-WRBWQASJ.js.map} +0 -0
  821. /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
  822. /package/dist/{performance-7YU4HOGH.js.map → performance-HTU5FR2K.js.map} +0 -0
  823. /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-TTWN5OMW.js.map} +0 -0
  824. /package/dist/{reddit-YK3YUZEI.js.map → reddit-6C3PT5CT.js.map} +0 -0
  825. /package/dist/{research-Q3P76RHN.js.map → research-YCMMQVK6.js.map} +0 -0
  826. /package/dist/{run-6PRA2YSD.js.map → run-SR7DJ7M5.js.map} +0 -0
  827. /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-N63EZNY6.js.map} +0 -0
  828. /package/dist/{schema-RRAQW3OS.js.map → schema-C6SGBNA6.js.map} +0 -0
  829. /package/dist/{sources-NDXYTASG.js.map → sources-HN3GCEDX.js.map} +0 -0
  830. /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
  831. /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
  832. /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ6WQ7OE.js.map} +0 -0
  833. /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-CKEUYKWN.js.map} +0 -0
  834. /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
  835. /package/dist/{tags-4N5UUUN6.js.map → tags-EUOOSAKN.js.map} +0 -0
  836. /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-HE7K52WN.js.map} +0 -0
  837. /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-3Q5XM7JD.js.map} +0 -0
  838. /package/dist/{videos-LBXPG7WC.js.map → videos-WAPUPJVT.js.map} +0 -0
  839. /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-GHQA3UY2.js.map} +0 -0
  840. /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-XCVUAIOU.js.map} +0 -0
  841. /package/dist/{x-LXOJPCRF.js.map → x-SI4KYDEY.js.map} +0 -0
@@ -1,346 +0,0 @@
1
- import {
2
- handleLinkedinError,
3
- resolveAccountIdArg
4
- } from "./chunk-VB3XUR6A.js";
5
- import {
6
- adCopyHints,
7
- booleanWordPositionalError,
8
- capabilityFix
9
- } from "./chunk-WHWSLDNR.js";
10
- import {
11
- withHints
12
- } from "./chunk-D5FY4FAK.js";
13
- import {
14
- writeJsonEnvelope
15
- } from "./chunk-2VIZ4UUZ.js";
16
- import {
17
- LINKEDIN_DRAFT_BATCH_MAX,
18
- linkedinDraftOpInputSchema
19
- } from "./chunk-DAO63OOP.js";
20
- import {
21
- apiPost
22
- } from "./chunk-6YLNY6CK.js";
23
- import {
24
- requireChatId
25
- } from "./chunk-57KKVDDR.js";
26
-
27
- // src/commands/ads/linkedin/write-shared.ts
28
- import { createHash } from "crypto";
29
- import { readFileSync } from "fs";
30
- var TOTAL_BUDGET_HELP = "Lifetime budget \u2014 on something already running it must exceed spend to date, or LinkedIn rejects it";
31
- function bareAccountId(args) {
32
- const raw = resolveAccountIdArg(args);
33
- return raw.replace(/^urn:li:sponsoredAccount:/, "").replace(/^sponsoredAccount:/, "");
34
- }
35
- function failWriteValidation(message) {
36
- writeJsonEnvelope({ ok: false, error: { code: "VALIDATION_ERROR", message } });
37
- process.exit(1);
38
- }
39
- function loadJsonFileArg(path) {
40
- if (typeof path !== "string" || path.length === 0) {
41
- return {};
42
- }
43
- try {
44
- const parsed = JSON.parse(readFileSync(path, "utf8"));
45
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
46
- failWriteValidation(`${path} must contain a JSON object`);
47
- }
48
- return parsed;
49
- } catch (err) {
50
- if (err instanceof SyntaxError) {
51
- failWriteValidation(`${path} is not valid JSON: ${err.message}`);
52
- }
53
- throw err;
54
- }
55
- }
56
- function mergePayload(file, flags) {
57
- const merged = { ...file };
58
- for (const [key, value] of Object.entries(flags)) {
59
- if (value !== void 0) {
60
- merged[key] = value;
61
- }
62
- }
63
- return merged;
64
- }
65
- function loadPatchArg(args) {
66
- const file = typeof args.file === "string" && args.file.length > 0 ? args.file : void 0;
67
- const inline = typeof args.patch === "string" && args.patch.length > 0 ? args.patch : void 0;
68
- if (Boolean(file) === Boolean(inline)) {
69
- failWriteValidation("pass exactly one of --file <patch.json> or --patch '<json>'");
70
- }
71
- if (file) {
72
- return loadJsonFileArg(file);
73
- }
74
- try {
75
- const parsed = JSON.parse(inline);
76
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
77
- failWriteValidation("--patch must be a JSON object");
78
- }
79
- return parsed;
80
- } catch (err) {
81
- if (err instanceof SyntaxError) {
82
- failWriteValidation(`--patch is not valid JSON: ${err.message}`);
83
- }
84
- throw err;
85
- }
86
- }
87
- function parseMoneyFlag(amount, currency, flag) {
88
- if (amount === void 0 || amount === null || amount === "") {
89
- return void 0;
90
- }
91
- if (currency === void 0 || currency === null || currency === "") {
92
- return { amount: String(amount) };
93
- }
94
- if (typeof currency !== "string" || currency.length !== 3) {
95
- failWriteValidation(`${flag} got an invalid --currency (expected a 3-letter code like EUR)`);
96
- }
97
- return { amount: String(amount), currencyCode: currency.toUpperCase() };
98
- }
99
- function parseDateFlag(value, flag) {
100
- if (value === void 0 || value === null || value === "") {
101
- return void 0;
102
- }
103
- const raw = String(value);
104
- if (/^\d{10,}$/.test(raw)) {
105
- return Number(raw);
106
- }
107
- const parsed = Date.parse(raw);
108
- if (Number.isNaN(parsed)) {
109
- failWriteValidation(`${flag} must be an ISO date (2026-07-10) or epoch milliseconds`);
110
- }
111
- return parsed;
112
- }
113
- function parseOnOffFlag(value, flag) {
114
- if (value === void 0 || value === null || value === "") {
115
- return void 0;
116
- }
117
- const raw = String(value).toLowerCase();
118
- if (raw === "on" || raw === "true") {
119
- return true;
120
- }
121
- if (raw === "off" || raw === "false") {
122
- return false;
123
- }
124
- failWriteValidation(`${flag} must be on|off`);
125
- }
126
- function parseLocaleFlag(value) {
127
- if (value === void 0 || value === null || value === "") {
128
- return void 0;
129
- }
130
- const match = /^([a-z]{2})[_-]([A-Za-z]{2})$/.exec(String(value));
131
- if (!match) {
132
- failWriteValidation("--locale must look like en_US (language_COUNTRY)");
133
- }
134
- return { language: match[1], country: match[2].toUpperCase() };
135
- }
136
- function loadTargetingFileArg(path) {
137
- if (typeof path !== "string" || path.length === 0) {
138
- return void 0;
139
- }
140
- const parsed = loadJsonFileArg(path);
141
- const criteria = parsed.targetingCriteria ?? parsed;
142
- if (!criteria.include) {
143
- failWriteValidation(
144
- `${path} must contain targeting criteria with an "include" block (see baker schema ads.linkedin.campaigns.create)`
145
- );
146
- }
147
- return criteria;
148
- }
149
- function sha256Lower(value) {
150
- return createHash("sha256").update(value.trim().toLowerCase()).digest("hex");
151
- }
152
- function parseCsvLine(line) {
153
- const cells = [];
154
- let current = "";
155
- let inQuotes = false;
156
- for (let i = 0; i < line.length; i++) {
157
- const char = line[i];
158
- if (inQuotes) {
159
- if (char === '"' && line[i + 1] === '"') {
160
- current += '"';
161
- i++;
162
- } else if (char === '"') {
163
- inQuotes = false;
164
- } else {
165
- current += char;
166
- }
167
- } else if (char === '"') {
168
- inQuotes = true;
169
- } else if (char === ",") {
170
- cells.push(current);
171
- current = "";
172
- } else {
173
- current += char;
174
- }
175
- }
176
- cells.push(current);
177
- return cells.map((cell) => cell.trim());
178
- }
179
- function parseListFileArg(path, maxRows) {
180
- if (typeof path !== "string" || path.length === 0) {
181
- return void 0;
182
- }
183
- const raw = readFileSync(path, "utf8");
184
- const lines = raw.split(/\r?\n/).filter((line) => line.trim().length > 0);
185
- if (lines.length < 2) {
186
- failWriteValidation(`${path} needs a header row and at least one data row`);
187
- }
188
- const columns = parseCsvLine(lines[0]).map((column) => column.trim());
189
- const rows = [];
190
- for (const line of lines.slice(1)) {
191
- const cells = parseCsvLine(line);
192
- const row = {};
193
- columns.forEach((column, index) => {
194
- const value = cells[index] ?? "";
195
- if (!value) {
196
- return;
197
- }
198
- row[column] = column.toLowerCase() === "email" ? sha256Lower(value) : value;
199
- });
200
- if (Object.keys(row).length > 0) {
201
- rows.push(row);
202
- }
203
- }
204
- if (rows.length > maxRows) {
205
- failWriteValidation(`${path} has ${rows.length} rows \u2014 the inline limit is ${maxRows}. Split the list.`);
206
- }
207
- return { columns, rows };
208
- }
209
- function failPreflight(fields) {
210
- writeJsonEnvelope({
211
- ok: false,
212
- error: {
213
- code: "VALIDATION_ERROR",
214
- message: fields.map((field) => field.path ? `${field.path}: ${field.message}` : field.message).join("; "),
215
- fields,
216
- fix: capabilityFix("linkedin-ads")
217
- }
218
- });
219
- process.exit(1);
220
- }
221
- var BATCH_NUDGE = "This command takes several ids at once \u2014 pass them comma-separated or with --ids-file instead of one call per id.";
222
- function batchNudge(data) {
223
- return data.sameKindStaged === void 0 ? [] : [BATCH_NUDGE];
224
- }
225
- async function stageOp(raw, hints) {
226
- const preflight = linkedinDraftOpInputSchema.safeParse(raw);
227
- if (!preflight.success) {
228
- failPreflight(preflight.error.issues.map((issue) => ({ path: issue.path.join("."), message: issue.message })));
229
- }
230
- try {
231
- const chatId = requireChatId();
232
- const response = await apiPost("/api/ads/linkedin/draft/stage", {
233
- chatId,
234
- op: preflight.data
235
- });
236
- const allHints = [...batchNudge(response.data), ...hints ?? [], ...await adCopyHints(preflight.data)];
237
- writeJsonEnvelope(withHints(response, allHints));
238
- } catch (err) {
239
- handleLinkedinError(err);
240
- }
241
- }
242
- async function stageLinkedinOps(rawOps, hints) {
243
- if (rawOps.length === 1 && rawOps[0]) {
244
- await stageOp(rawOps[0], hints);
245
- return;
246
- }
247
- const ops = [];
248
- for (const [index, raw] of rawOps.entries()) {
249
- const preflight = linkedinDraftOpInputSchema.safeParse(raw);
250
- if (!preflight.success) {
251
- failPreflight(
252
- preflight.error.issues.map((issue) => ({
253
- path: `ops[${index}]${issue.path.length > 0 ? `.${issue.path.join(".")}` : ""}`,
254
- message: issue.message
255
- }))
256
- );
257
- }
258
- ops.push(preflight.data);
259
- }
260
- try {
261
- const chatId = requireChatId();
262
- const response = await apiPost("/api/ads/linkedin/draft/stage-batch", { chatId, ops });
263
- const allHints = [...hints ?? [], ...await adCopyHints(ops)];
264
- writeJsonEnvelope(withHints(response, allHints));
265
- } catch (err) {
266
- handleLinkedinError(err);
267
- }
268
- }
269
- async function stageStatusChange(input) {
270
- const payload = input.kind === "creative.update" ? { intendedStatus: input.status } : { status: input.status };
271
- await stageLinkedinOps(
272
- input.targets.map((target) => ({ kind: input.kind, accountId: input.accountId, target, payload }))
273
- );
274
- }
275
- function requireTarget(args, entity) {
276
- const inverted = booleanWordPositionalError(args, entity);
277
- if (inverted !== void 0) {
278
- failWriteValidation(inverted);
279
- }
280
- const positionals = readPositionals(args);
281
- const target = args.id ?? args.target ?? args.ref ?? positionals[0];
282
- if (typeof target !== "string" || target.length === 0) {
283
- failWriteValidation(`pass the ${entity} id or URN as the positional argument`);
284
- }
285
- if (positionals.length > 1 || splitIdList(target).length > 1) {
286
- failWriteValidation(
287
- `this command takes one ${entity} id \u2014 run it once per id. Only pause/resume/archive and 'creatives update' accept several ids in one call.`
288
- );
289
- }
290
- return target;
291
- }
292
- function readPositionals(args) {
293
- if (!Array.isArray(args._)) {
294
- return [];
295
- }
296
- return args._.filter((value) => typeof value === "string" && value.length > 0);
297
- }
298
- function splitIdList(raw) {
299
- return raw.split(",").map((id) => id.trim()).filter(Boolean);
300
- }
301
- function idsFileEntries(path) {
302
- if (typeof path !== "string" || path.length === 0) {
303
- return [];
304
- }
305
- return readFileSync(path, "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#")).flatMap(splitIdList);
306
- }
307
- function requireTargets(args, entity) {
308
- const positionals = readPositionals(args);
309
- const named = [args.id, args.target, args.ref].filter(
310
- (value) => typeof value === "string" && value.length > 0
311
- );
312
- const fromArgs = positionals.length > 0 ? positionals : named;
313
- const targets = [.../* @__PURE__ */ new Set([...fromArgs.flatMap(splitIdList), ...idsFileEntries(args["ids-file"])])];
314
- if (targets.length === 0) {
315
- failWriteValidation(
316
- `pass the ${entity} id or URN as the positional argument (comma-separated for several), or --ids-file <path>`
317
- );
318
- }
319
- if (targets.length > LINKEDIN_DRAFT_BATCH_MAX) {
320
- failWriteValidation(
321
- `${targets.length} ids exceeds the batch limit of ${LINKEDIN_DRAFT_BATCH_MAX} \u2014 split the list`
322
- );
323
- }
324
- return targets;
325
- }
326
-
327
- export {
328
- TOTAL_BUDGET_HELP,
329
- bareAccountId,
330
- failWriteValidation,
331
- loadJsonFileArg,
332
- mergePayload,
333
- loadPatchArg,
334
- parseMoneyFlag,
335
- parseDateFlag,
336
- parseOnOffFlag,
337
- parseLocaleFlag,
338
- loadTargetingFileArg,
339
- parseListFileArg,
340
- stageOp,
341
- stageLinkedinOps,
342
- stageStatusChange,
343
- requireTarget,
344
- requireTargets
345
- };
346
- //# sourceMappingURL=chunk-Y6GKV7CU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/ads/linkedin/write-shared.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport {\n LINKEDIN_DRAFT_BATCH_MAX,\n type LinkedinDraftStageBatchResponse,\n type LinkedinDraftStageResponse,\n linkedinDraftOpInputSchema,\n} from \"@baker/api\";\nimport { apiPost } from \"../../../client.ts\";\nimport { requireChatId } from \"../../../env.ts\";\nimport { capabilityFix } from \"../../capabilities/fix.ts\";\nimport { booleanWordPositionalError } from \"../boolean-word-positional.ts\";\nimport { adCopyHints } from \"../copy-hints.ts\";\nimport { withHints } from \"../hints.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\n/**\n * Shared plumbing for the staged write commands. Writes NEVER hit LinkedIn\n * directly: every command stages an op against this chat's draft\n * (`/api/ads/linkedin/draft/stage`), the dashboard shows it as a pending\n * LinkedIn change, and it applies when the chat is published.\n */\n\n/**\n * LinkedIn rejects a lifetime budget at or below what the entity has already\n * spent, so the flag needs the constraint wherever it is offered — the same\n * text on every surface (`--help` and `baker schema`) so the two can't drift.\n */\nexport const TOTAL_BUDGET_HELP =\n \"Lifetime budget — on something already running it must exceed spend to date, or LinkedIn rejects it\";\n\nexport function bareAccountId(args: Record<string, unknown>): string {\n const raw = resolveAccountIdArg(args);\n return raw.replace(/^urn:li:sponsoredAccount:/, \"\").replace(/^sponsoredAccount:/, \"\");\n}\n\nexport function failWriteValidation(message: string): never {\n writeJsonEnvelope({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\nexport function loadJsonFileArg(path: unknown): Record<string, unknown> {\n if (typeof path !== \"string\" || path.length === 0) {\n return {};\n }\n try {\n const parsed = JSON.parse(readFileSync(path, \"utf8\")) as unknown;\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n failWriteValidation(`${path} must contain a JSON object`);\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n if (err instanceof SyntaxError) {\n failWriteValidation(`${path} is not valid JSON: ${err.message}`);\n }\n throw err;\n }\n}\n\n/** Flags override file keys — the file is the base, flags are the overrides. */\nexport function mergePayload(file: Record<string, unknown>, flags: Record<string, unknown>): Record<string, unknown> {\n const merged: Record<string, unknown> = { ...file };\n for (const [key, value] of Object.entries(flags)) {\n if (value !== undefined) {\n merged[key] = value;\n }\n }\n return merged;\n}\n\n/**\n * The `draft amend` patch: exactly one of `--file <path>` (JSON file) or `--patch '<json>'`\n * (inline string), and it must parse to a JSON object — RFC-7386 merge-patch needs an object to\n * merge, and a stray array/scalar would silently no-op or replace the whole payload.\n */\nexport function loadPatchArg(args: Record<string, unknown>): Record<string, unknown> {\n const file = typeof args.file === \"string\" && args.file.length > 0 ? args.file : undefined;\n const inline = typeof args.patch === \"string\" && args.patch.length > 0 ? args.patch : undefined;\n if (Boolean(file) === Boolean(inline)) {\n failWriteValidation(\"pass exactly one of --file <patch.json> or --patch '<json>'\");\n }\n if (file) {\n return loadJsonFileArg(file);\n }\n try {\n const parsed = JSON.parse(inline as string) as unknown;\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n failWriteValidation(\"--patch must be a JSON object\");\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n if (err instanceof SyntaxError) {\n failWriteValidation(`--patch is not valid JSON: ${err.message}`);\n }\n throw err;\n }\n}\n\nexport function parseMoneyFlag(\n amount: unknown,\n currency: unknown,\n flag: string,\n): { amount: string; currencyCode?: string } | undefined {\n if (amount === undefined || amount === null || amount === \"\") {\n return undefined;\n }\n if (currency === undefined || currency === null || currency === \"\") {\n // LinkedIn ad accounts are single-currency — the backend fills it in.\n return { amount: String(amount) };\n }\n if (typeof currency !== \"string\" || currency.length !== 3) {\n failWriteValidation(`${flag} got an invalid --currency (expected a 3-letter code like EUR)`);\n }\n return { amount: String(amount), currencyCode: currency.toUpperCase() };\n}\n\n/** Accepts ISO dates (2026-07-10), ISO datetimes, or epoch millis. */\nexport function parseDateFlag(value: unknown, flag: string): number | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const raw = String(value);\n if (/^\\d{10,}$/.test(raw)) {\n return Number(raw);\n }\n const parsed = Date.parse(raw);\n if (Number.isNaN(parsed)) {\n failWriteValidation(`${flag} must be an ISO date (2026-07-10) or epoch milliseconds`);\n }\n return parsed;\n}\n\nexport function parseOnOffFlag(value: unknown, flag: string): boolean | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const raw = String(value).toLowerCase();\n if (raw === \"on\" || raw === \"true\") {\n return true;\n }\n if (raw === \"off\" || raw === \"false\") {\n return false;\n }\n failWriteValidation(`${flag} must be on|off`);\n}\n\nexport function parseLocaleFlag(value: unknown): { country: string; language: string } | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const match = /^([a-z]{2})[_-]([A-Za-z]{2})$/.exec(String(value));\n if (!match) {\n failWriteValidation(\"--locale must look like en_US (language_COUNTRY)\");\n }\n return { language: match[1] as string, country: (match[2] as string).toUpperCase() };\n}\n\nexport function loadTargetingFileArg(path: unknown): Record<string, unknown> | undefined {\n if (typeof path !== \"string\" || path.length === 0) {\n return undefined;\n }\n const parsed = loadJsonFileArg(path);\n // Accept either the bare criteria object or a { targetingCriteria } wrapper.\n const criteria = (parsed.targetingCriteria as Record<string, unknown> | undefined) ?? parsed;\n if (!criteria.include) {\n failWriteValidation(\n `${path} must contain targeting criteria with an \"include\" block (see baker schema ads.linkedin.campaigns.create)`,\n );\n }\n return criteria;\n}\n\nfunction sha256Lower(value: string): string {\n return createHash(\"sha256\").update(value.trim().toLowerCase()).digest(\"hex\");\n}\n\nfunction parseCsvLine(line: string): string[] {\n const cells: string[] = [];\n let current = \"\";\n let inQuotes = false;\n for (let i = 0; i < line.length; i++) {\n const char = line[i];\n if (inQuotes) {\n if (char === '\"' && line[i + 1] === '\"') {\n current += '\"';\n i++;\n } else if (char === '\"') {\n inQuotes = false;\n } else {\n current += char;\n }\n } else if (char === '\"') {\n inQuotes = true;\n } else if (char === \",\") {\n cells.push(current);\n current = \"\";\n } else {\n current += char;\n }\n }\n cells.push(current);\n return cells.map((cell) => cell.trim());\n}\n\nexport interface ParsedList {\n columns: string[];\n rows: Array<Record<string, string>>;\n}\n\n/**\n * Parses a header-first CSV into row objects. Email columns are SHA-256\n * hashed here so raw addresses never leave the machine or sit in the draft.\n */\nexport function parseListFileArg(path: unknown, maxRows: number): ParsedList | undefined {\n if (typeof path !== \"string\" || path.length === 0) {\n return undefined;\n }\n const raw = readFileSync(path, \"utf8\");\n const lines = raw.split(/\\r?\\n/).filter((line) => line.trim().length > 0);\n if (lines.length < 2) {\n failWriteValidation(`${path} needs a header row and at least one data row`);\n }\n const columns = parseCsvLine(lines[0] as string).map((column) => column.trim());\n const rows: Array<Record<string, string>> = [];\n for (const line of lines.slice(1)) {\n const cells = parseCsvLine(line);\n const row: Record<string, string> = {};\n columns.forEach((column, index) => {\n const value = cells[index] ?? \"\";\n if (!value) {\n return;\n }\n row[column] = column.toLowerCase() === \"email\" ? sha256Lower(value) : value;\n });\n if (Object.keys(row).length > 0) {\n rows.push(row);\n }\n }\n if (rows.length > maxRows) {\n failWriteValidation(`${path} has ${rows.length} rows — the inline limit is ${maxRows}. Split the list.`);\n }\n return { columns, rows };\n}\n\ninterface StageEnvelope extends Record<string, unknown> {\n ok: true;\n data: LinkedinDraftStageResponse;\n}\n\n/** Structured preflight failure — the agent learns WHICH field (and, in a batch, which op) is wrong. */\nfunction failPreflight(fields: Array<{ path: string; message: string }>): never {\n writeJsonEnvelope({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: fields.map((field) => (field.path ? `${field.path}: ${field.message}` : field.message)).join(\"; \"),\n fields,\n fix: capabilityFix(\"linkedin-ads\"),\n },\n });\n process.exit(1);\n}\n\n/**\n * The agent is staging one id per call for a kind it has already staged in this\n * draft — the exact loop these commands' id lists exist to replace.\n */\nconst BATCH_NUDGE =\n \"This command takes several ids at once — pass them comma-separated or with --ids-file instead of one call per id.\";\n\nfunction batchNudge(data: LinkedinDraftStageResponse): string[] {\n return data.sameKindStaged === undefined ? [] : [BATCH_NUDGE];\n}\n\n/**\n * Preflight-validates the op against the shared `@baker/api` contract (same\n * schema the backend enforces), then stages it. Prints the staged envelope —\n * ref, mode (always `live`: publishing reaches the real ad account), summary,\n * warnings.\n */\nexport async function stageOp(raw: Record<string, unknown>, hints?: string[]): Promise<void> {\n const preflight = linkedinDraftOpInputSchema.safeParse(raw);\n if (!preflight.success) {\n failPreflight(preflight.error.issues.map((issue) => ({ path: issue.path.join(\".\"), message: issue.message })));\n }\n try {\n const chatId = requireChatId();\n const response = await apiPost<StageEnvelope>(\"/api/ads/linkedin/draft/stage\", {\n chatId,\n op: preflight.data,\n });\n const allHints = [...batchNudge(response.data), ...(hints ?? []), ...(await adCopyHints(preflight.data))];\n writeJsonEnvelope(withHints(response, allHints));\n } catch (err) {\n handleLinkedinError(err);\n }\n}\n\ninterface StageBatchEnvelope extends Record<string, unknown> {\n ok: true;\n data: LinkedinDraftStageBatchResponse;\n}\n\n/**\n * Stage several ops as ONE request (`/stage-batch`) — all-or-nothing on the\n * backend, one rate-limit hit instead of one per id. A single op falls through to\n * the plain stage path so its envelope, its amend behaviour and its hints stay\n * exactly as before.\n */\nexport async function stageLinkedinOps(rawOps: Array<Record<string, unknown>>, hints?: string[]): Promise<void> {\n if (rawOps.length === 1 && rawOps[0]) {\n await stageOp(rawOps[0], hints);\n return;\n }\n const ops: unknown[] = [];\n for (const [index, raw] of rawOps.entries()) {\n const preflight = linkedinDraftOpInputSchema.safeParse(raw);\n if (!preflight.success) {\n failPreflight(\n preflight.error.issues.map((issue) => ({\n path: `ops[${index}]${issue.path.length > 0 ? `.${issue.path.join(\".\")}` : \"\"}`,\n message: issue.message,\n })),\n );\n }\n ops.push(preflight.data);\n }\n try {\n const chatId = requireChatId();\n const response = await apiPost<StageBatchEnvelope>(\"/api/ads/linkedin/draft/stage-batch\", { chatId, ops });\n const allHints = [...(hints ?? []), ...(await adCopyHints(ops))];\n writeJsonEnvelope(withHints(response, allHints));\n } catch (err) {\n handleLinkedinError(err);\n }\n}\n\nexport async function stageStatusChange(input: {\n kind: \"campaignGroup.update\" | \"campaign.update\" | \"creative.update\";\n accountId: string;\n targets: string[];\n status: \"ACTIVE\" | \"PAUSED\" | \"ARCHIVED\";\n}): Promise<void> {\n const payload = input.kind === \"creative.update\" ? { intendedStatus: input.status } : { status: input.status };\n await stageLinkedinOps(\n input.targets.map((target) => ({ kind: input.kind, accountId: input.accountId, target, payload })),\n );\n}\n\n/**\n * Reads the target from whichever positional the command declared. Commands\n * name it `id` (entity writes) or `ref` (draft show/amend), and citty also\n * leaves every positional in `args._` — so we accept all three rather than\n * making the receipt depend on one command's arg name.\n *\n * `--flag false` is refused BEFORE the one-id check below, which would otherwise\n * blame the stray word on a second id: on `campaigns url-params 123456 --clear\n * false` that sends the agent back with `--clear` alone, which is TRUE again and\n * wipes every tracking parameter on a live ad set.\n */\nexport function requireTarget(args: Record<string, unknown>, entity: string): string {\n const inverted = booleanWordPositionalError(args, entity);\n if (inverted !== undefined) {\n failWriteValidation(inverted);\n }\n const positionals = readPositionals(args);\n const target = args.id ?? args.target ?? args.ref ?? positionals[0];\n if (typeof target !== \"string\" || target.length === 0) {\n failWriteValidation(`pass the ${entity} id or URN as the positional argument`);\n }\n // This command applies one payload to one id. Accepting the first of several and\n // dropping the rest would report success for work it never staged, so say so.\n if (positionals.length > 1 || splitIdList(target).length > 1) {\n failWriteValidation(\n `this command takes one ${entity} id — run it once per id. Only pause/resume/archive and 'creatives update' accept several ids in one call.`,\n );\n }\n return target;\n}\n\n/** Every positional citty left in `_`, as strings. Numeric ids arrive as strings via `node:util parseArgs`. */\nfunction readPositionals(args: Record<string, unknown>): string[] {\n if (!Array.isArray(args._)) {\n return [];\n }\n return args._.filter((value): value is string => typeof value === \"string\" && value.length > 0);\n}\n\n/** Ids in the positional: `123,456` or `urn:li:sponsoredCreative:1, urn:…:2` (URNs never contain commas). */\nfunction splitIdList(raw: string): string[] {\n return raw\n .split(\",\")\n .map((id) => id.trim())\n .filter(Boolean);\n}\n\n/**\n * `--ids-file` lines: one id per line, or comma-separated on a line — the agent\n * writes whichever is convenient. Blank lines and `#` comments are skipped.\n */\nfunction idsFileEntries(path: unknown): string[] {\n if (typeof path !== \"string\" || path.length === 0) {\n return [];\n }\n return readFileSync(path, \"utf8\")\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0 && !line.startsWith(\"#\"))\n .flatMap(splitIdList);\n}\n\n/**\n * Every id a write command was invoked with: **all** positionals (each of which may\n * itself be comma-separated) plus `--ids-file` lines, deduped in first-seen order.\n * One id stages exactly as before; several stage as one batch.\n *\n * All positionals, not just the first: an agent writing `creatives pause 111 222 333`\n * — space-separated, as most CLIs accept — used to stage one op and be told `ok: true`,\n * so it believed three ads were paused.\n */\nexport function requireTargets(args: Record<string, unknown>, entity: string): string[] {\n // `args._` is the superset: citty copies the FIRST positional into the declared\n // arg (`id`/`ref`) but leaves every positional in `_`. Reading the named arg alone\n // is what dropped ids 2..n. The named arg is the fallback for a command that ever\n // declares its id as a flag instead, where `_` would be empty.\n const positionals = readPositionals(args);\n const named = [args.id, args.target, args.ref].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0,\n );\n const fromArgs = positionals.length > 0 ? positionals : named;\n const targets = [...new Set([...fromArgs.flatMap(splitIdList), ...idsFileEntries(args[\"ids-file\"])])];\n if (targets.length === 0) {\n failWriteValidation(\n `pass the ${entity} id or URN as the positional argument (comma-separated for several), or --ids-file <path>`,\n );\n }\n if (targets.length > LINKEDIN_DRAFT_BATCH_MAX) {\n failWriteValidation(\n `${targets.length} ids exceeds the batch limit of ${LINKEDIN_DRAFT_BATCH_MAX} — split the list`,\n );\n }\n return targets;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AA4BtB,IAAM,oBACX;AAEK,SAAS,cAAc,MAAuC;AACnE,QAAM,MAAM,oBAAoB,IAAI;AACpC,SAAO,IAAI,QAAQ,6BAA6B,EAAE,EAAE,QAAQ,sBAAsB,EAAE;AACtF;AAEO,SAAS,oBAAoB,SAAwB;AAC1D,oBAAkB,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,QAAQ,EAAE,CAAC;AAC7E,UAAQ,KAAK,CAAC;AAChB;AAEO,SAAS,gBAAgB,MAAwC;AACtE,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AACjD,WAAO,CAAC;AAAA,EACV;AACA,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,aAAa,MAAM,MAAM,CAAC;AACpD,QAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAC1E,0BAAoB,GAAG,IAAI,6BAA6B;AAAA,IAC1D;AACA,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,QAAI,eAAe,aAAa;AAC9B,0BAAoB,GAAG,IAAI,uBAAuB,IAAI,OAAO,EAAE;AAAA,IACjE;AACA,UAAM;AAAA,EACR;AACF;AAGO,SAAS,aAAa,MAA+B,OAAyD;AACnH,QAAM,SAAkC,EAAE,GAAG,KAAK;AAClD,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,UAAU,QAAW;AACvB,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AACA,SAAO;AACT;AAOO,SAAS,aAAa,MAAwD;AACnF,QAAM,OAAO,OAAO,KAAK,SAAS,YAAY,KAAK,KAAK,SAAS,IAAI,KAAK,OAAO;AACjF,QAAM,SAAS,OAAO,KAAK,UAAU,YAAY,KAAK,MAAM,SAAS,IAAI,KAAK,QAAQ;AACtF,MAAI,QAAQ,IAAI,MAAM,QAAQ,MAAM,GAAG;AACrC,wBAAoB,6DAA6D;AAAA,EACnF;AACA,MAAI,MAAM;AACR,WAAO,gBAAgB,IAAI;AAAA,EAC7B;AACA,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,MAAgB;AAC1C,QAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAC1E,0BAAoB,+BAA+B;AAAA,IACrD;AACA,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,QAAI,eAAe,aAAa;AAC9B,0BAAoB,8BAA8B,IAAI,OAAO,EAAE;AAAA,IACjE;AACA,UAAM;AAAA,EACR;AACF;AAEO,SAAS,eACd,QACA,UACA,MACuD;AACvD,MAAI,WAAW,UAAa,WAAW,QAAQ,WAAW,IAAI;AAC5D,WAAO;AAAA,EACT;AACA,MAAI,aAAa,UAAa,aAAa,QAAQ,aAAa,IAAI;AAElE,WAAO,EAAE,QAAQ,OAAO,MAAM,EAAE;AAAA,EAClC;AACA,MAAI,OAAO,aAAa,YAAY,SAAS,WAAW,GAAG;AACzD,wBAAoB,GAAG,IAAI,gEAAgE;AAAA,EAC7F;AACA,SAAO,EAAE,QAAQ,OAAO,MAAM,GAAG,cAAc,SAAS,YAAY,EAAE;AACxE;AAGO,SAAS,cAAc,OAAgB,MAAkC;AAC9E,MAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD,WAAO;AAAA,EACT;AACA,QAAM,MAAM,OAAO,KAAK;AACxB,MAAI,YAAY,KAAK,GAAG,GAAG;AACzB,WAAO,OAAO,GAAG;AAAA,EACnB;AACA,QAAM,SAAS,KAAK,MAAM,GAAG;AAC7B,MAAI,OAAO,MAAM,MAAM,GAAG;AACxB,wBAAoB,GAAG,IAAI,yDAAyD;AAAA,EACtF;AACA,SAAO;AACT;AAEO,SAAS,eAAe,OAAgB,MAAmC;AAChF,MAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD,WAAO;AAAA,EACT;AACA,QAAM,MAAM,OAAO,KAAK,EAAE,YAAY;AACtC,MAAI,QAAQ,QAAQ,QAAQ,QAAQ;AAClC,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,SAAS,QAAQ,SAAS;AACpC,WAAO;AAAA,EACT;AACA,sBAAoB,GAAG,IAAI,iBAAiB;AAC9C;AAEO,SAAS,gBAAgB,OAAmE;AACjG,MAAI,UAAU,UAAa,UAAU,QAAQ,UAAU,IAAI;AACzD,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,gCAAgC,KAAK,OAAO,KAAK,CAAC;AAChE,MAAI,CAAC,OAAO;AACV,wBAAoB,kDAAkD;AAAA,EACxE;AACA,SAAO,EAAE,UAAU,MAAM,CAAC,GAAa,SAAU,MAAM,CAAC,EAAa,YAAY,EAAE;AACrF;AAEO,SAAS,qBAAqB,MAAoD;AACvF,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AACjD,WAAO;AAAA,EACT;AACA,QAAM,SAAS,gBAAgB,IAAI;AAEnC,QAAM,WAAY,OAAO,qBAA6D;AACtF,MAAI,CAAC,SAAS,SAAS;AACrB;AAAA,MACE,GAAG,IAAI;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAuB;AAC1C,SAAO,WAAW,QAAQ,EAAE,OAAO,MAAM,KAAK,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK;AAC7E;AAEA,SAAS,aAAa,MAAwB;AAC5C,QAAM,QAAkB,CAAC;AACzB,MAAI,UAAU;AACd,MAAI,WAAW;AACf,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,OAAO,KAAK,CAAC;AACnB,QAAI,UAAU;AACZ,UAAI,SAAS,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK;AACvC,mBAAW;AACX;AAAA,MACF,WAAW,SAAS,KAAK;AACvB,mBAAW;AAAA,MACb,OAAO;AACL,mBAAW;AAAA,MACb;AAAA,IACF,WAAW,SAAS,KAAK;AACvB,iBAAW;AAAA,IACb,WAAW,SAAS,KAAK;AACvB,YAAM,KAAK,OAAO;AAClB,gBAAU;AAAA,IACZ,OAAO;AACL,iBAAW;AAAA,IACb;AAAA,EACF;AACA,QAAM,KAAK,OAAO;AAClB,SAAO,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AACxC;AAWO,SAAS,iBAAiB,MAAe,SAAyC;AACvF,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AACjD,WAAO;AAAA,EACT;AACA,QAAM,MAAM,aAAa,MAAM,MAAM;AACrC,QAAM,QAAQ,IAAI,MAAM,OAAO,EAAE,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,SAAS,CAAC;AACxE,MAAI,MAAM,SAAS,GAAG;AACpB,wBAAoB,GAAG,IAAI,+CAA+C;AAAA,EAC5E;AACA,QAAM,UAAU,aAAa,MAAM,CAAC,CAAW,EAAE,IAAI,CAAC,WAAW,OAAO,KAAK,CAAC;AAC9E,QAAM,OAAsC,CAAC;AAC7C,aAAW,QAAQ,MAAM,MAAM,CAAC,GAAG;AACjC,UAAM,QAAQ,aAAa,IAAI;AAC/B,UAAM,MAA8B,CAAC;AACrC,YAAQ,QAAQ,CAAC,QAAQ,UAAU;AACjC,YAAM,QAAQ,MAAM,KAAK,KAAK;AAC9B,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AACA,UAAI,MAAM,IAAI,OAAO,YAAY,MAAM,UAAU,YAAY,KAAK,IAAI;AAAA,IACxE,CAAC;AACD,QAAI,OAAO,KAAK,GAAG,EAAE,SAAS,GAAG;AAC/B,WAAK,KAAK,GAAG;AAAA,IACf;AAAA,EACF;AACA,MAAI,KAAK,SAAS,SAAS;AACzB,wBAAoB,GAAG,IAAI,QAAQ,KAAK,MAAM,oCAA+B,OAAO,mBAAmB;AAAA,EACzG;AACA,SAAO,EAAE,SAAS,KAAK;AACzB;AAQA,SAAS,cAAc,QAAyD;AAC9E,oBAAkB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,CAAC,UAAW,MAAM,OAAO,GAAG,MAAM,IAAI,KAAK,MAAM,OAAO,KAAK,MAAM,OAAQ,EAAE,KAAK,IAAI;AAAA,MAC1G;AAAA,MACA,KAAK,cAAc,cAAc;AAAA,IACnC;AAAA,EACF,CAAC;AACD,UAAQ,KAAK,CAAC;AAChB;AAMA,IAAM,cACJ;AAEF,SAAS,WAAW,MAA4C;AAC9D,SAAO,KAAK,mBAAmB,SAAY,CAAC,IAAI,CAAC,WAAW;AAC9D;AAQA,eAAsB,QAAQ,KAA8B,OAAiC;AAC3F,QAAM,YAAY,2BAA2B,UAAU,GAAG;AAC1D,MAAI,CAAC,UAAU,SAAS;AACtB,kBAAc,UAAU,MAAM,OAAO,IAAI,CAAC,WAAW,EAAE,MAAM,MAAM,KAAK,KAAK,GAAG,GAAG,SAAS,MAAM,QAAQ,EAAE,CAAC;AAAA,EAC/G;AACA,MAAI;AACF,UAAM,SAAS,cAAc;AAC7B,UAAM,WAAW,MAAM,QAAuB,iCAAiC;AAAA,MAC7E;AAAA,MACA,IAAI,UAAU;AAAA,IAChB,CAAC;AACD,UAAM,WAAW,CAAC,GAAG,WAAW,SAAS,IAAI,GAAG,GAAI,SAAS,CAAC,GAAI,GAAI,MAAM,YAAY,UAAU,IAAI,CAAE;AACxG,sBAAkB,UAAU,UAAU,QAAQ,CAAC;AAAA,EACjD,SAAS,KAAK;AACZ,wBAAoB,GAAG;AAAA,EACzB;AACF;AAaA,eAAsB,iBAAiB,QAAwC,OAAiC;AAC9G,MAAI,OAAO,WAAW,KAAK,OAAO,CAAC,GAAG;AACpC,UAAM,QAAQ,OAAO,CAAC,GAAG,KAAK;AAC9B;AAAA,EACF;AACA,QAAM,MAAiB,CAAC;AACxB,aAAW,CAAC,OAAO,GAAG,KAAK,OAAO,QAAQ,GAAG;AAC3C,UAAM,YAAY,2BAA2B,UAAU,GAAG;AAC1D,QAAI,CAAC,UAAU,SAAS;AACtB;AAAA,QACE,UAAU,MAAM,OAAO,IAAI,CAAC,WAAW;AAAA,UACrC,MAAM,OAAO,KAAK,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,MAAM,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE;AAAA,UAC7E,SAAS,MAAM;AAAA,QACjB,EAAE;AAAA,MACJ;AAAA,IACF;AACA,QAAI,KAAK,UAAU,IAAI;AAAA,EACzB;AACA,MAAI;AACF,UAAM,SAAS,cAAc;AAC7B,UAAM,WAAW,MAAM,QAA4B,uCAAuC,EAAE,QAAQ,IAAI,CAAC;AACzG,UAAM,WAAW,CAAC,GAAI,SAAS,CAAC,GAAI,GAAI,MAAM,YAAY,GAAG,CAAE;AAC/D,sBAAkB,UAAU,UAAU,QAAQ,CAAC;AAAA,EACjD,SAAS,KAAK;AACZ,wBAAoB,GAAG;AAAA,EACzB;AACF;AAEA,eAAsB,kBAAkB,OAKtB;AAChB,QAAM,UAAU,MAAM,SAAS,oBAAoB,EAAE,gBAAgB,MAAM,OAAO,IAAI,EAAE,QAAQ,MAAM,OAAO;AAC7G,QAAM;AAAA,IACJ,MAAM,QAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,MAAM,MAAM,WAAW,MAAM,WAAW,QAAQ,QAAQ,EAAE;AAAA,EACnG;AACF;AAaO,SAAS,cAAc,MAA+B,QAAwB;AACnF,QAAM,WAAW,2BAA2B,MAAM,MAAM;AACxD,MAAI,aAAa,QAAW;AAC1B,wBAAoB,QAAQ;AAAA,EAC9B;AACA,QAAM,cAAc,gBAAgB,IAAI;AACxC,QAAM,SAAS,KAAK,MAAM,KAAK,UAAU,KAAK,OAAO,YAAY,CAAC;AAClE,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AACrD,wBAAoB,YAAY,MAAM,uCAAuC;AAAA,EAC/E;AAGA,MAAI,YAAY,SAAS,KAAK,YAAY,MAAM,EAAE,SAAS,GAAG;AAC5D;AAAA,MACE,0BAA0B,MAAM;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,gBAAgB,MAAyC;AAChE,MAAI,CAAC,MAAM,QAAQ,KAAK,CAAC,GAAG;AAC1B,WAAO,CAAC;AAAA,EACV;AACA,SAAO,KAAK,EAAE,OAAO,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS,CAAC;AAChG;AAGA,SAAS,YAAY,KAAuB;AAC1C,SAAO,IACJ,MAAM,GAAG,EACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,EACrB,OAAO,OAAO;AACnB;AAMA,SAAS,eAAe,MAAyB;AAC/C,MAAI,OAAO,SAAS,YAAY,KAAK,WAAW,GAAG;AACjD,WAAO,CAAC;AAAA,EACV;AACA,SAAO,aAAa,MAAM,MAAM,EAC7B,MAAM,OAAO,EACb,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,CAAC,SAAS,KAAK,SAAS,KAAK,CAAC,KAAK,WAAW,GAAG,CAAC,EACzD,QAAQ,WAAW;AACxB;AAWO,SAAS,eAAe,MAA+B,QAA0B;AAKtF,QAAM,cAAc,gBAAgB,IAAI;AACxC,QAAM,QAAQ,CAAC,KAAK,IAAI,KAAK,QAAQ,KAAK,GAAG,EAAE;AAAA,IAC7C,CAAC,UAA2B,OAAO,UAAU,YAAY,MAAM,SAAS;AAAA,EAC1E;AACA,QAAM,WAAW,YAAY,SAAS,IAAI,cAAc;AACxD,QAAM,UAAU,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,SAAS,QAAQ,WAAW,GAAG,GAAG,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;AACpG,MAAI,QAAQ,WAAW,GAAG;AACxB;AAAA,MACE,YAAY,MAAM;AAAA,IACpB;AAAA,EACF;AACA,MAAI,QAAQ,SAAS,0BAA0B;AAC7C;AAAA,MACE,GAAG,QAAQ,MAAM,mCAAmC,wBAAwB;AAAA,IAC9E;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -1,159 +0,0 @@
1
- import {
2
- failApi
3
- } from "./chunk-ZDAVSTEE.js";
4
- import {
5
- CREATIVE_PERFORMANCE_DEFAULT_DAYS,
6
- CREATIVE_PERFORMANCE_MAX_DAYS
7
- } from "./chunk-DAO63OOP.js";
8
- import {
9
- apiPost
10
- } from "./chunk-6YLNY6CK.js";
11
- import {
12
- registerSchema,
13
- writeJson
14
- } from "./chunk-QANGHND7.js";
15
-
16
- // src/commands/creatives/performance.ts
17
- import { readFileSync } from "fs";
18
- import path from "path";
19
- import { defineCommand } from "citty";
20
- import { parse as parseYaml } from "yaml";
21
- var DESCRIPTION = `How each Baker creative is doing in the live Meta ads that show it: spend, impressions, CTR, CPC, results, cost per result, frequency and a fatigue verdict, next to the angle, hook, mechanism and dominant slot its definition set out to test. Video creatives add hookRate (percent of impressions that watched 3 seconds) and holdRate (percent of those that reached a ThruPlay). Use it before briefing new creatives, to learn which angle and mechanism to make next and which creatives to replace.
22
-
23
- Start here:
24
- baker creatives performance # every creative in an ad, last 30 days
25
- baker creatives performance --slug spring-offer # one creative
26
- baker creatives performance --days 14 --full # ids, last-7-day figures, a video's watch funnel, one row per ad
27
-
28
- Fatigue follows the Meta playbook (07-creative-audit.md): fresh, fading, fatigued, dead, or too_early (under 14 days or 1,000 impressions) and no_delivery. A low hook rate means the first 3 seconds need new hooks; a working hook with a low hold rate means the body loses people. A creative counts once a Session's publish created an ad with it.`;
29
- var ARGS = {
30
- slug: { type: "string", description: "Only this creative (src/creatives/<slug>/)", required: false },
31
- days: {
32
- type: "string",
33
- description: `Reporting window in days, ending today (1-${CREATIVE_PERFORMANCE_MAX_DAYS}, default ${CREATIVE_PERFORMANCE_DEFAULT_DAYS})`,
34
- required: false
35
- },
36
- full: {
37
- type: "boolean",
38
- description: "Add ids, last-7-day CTR and cost per result, and one row per ad",
39
- required: false,
40
- default: false
41
- }
42
- };
43
- registerSchema({ command: "creatives.performance", description: DESCRIPTION, args: ARGS });
44
- var INSIGHT_KEYS = [
45
- "idea",
46
- "message",
47
- "evidence",
48
- "angle",
49
- "hook",
50
- "mechanism",
51
- "dominantSlot",
52
- "persona",
53
- "awareness",
54
- "hypothesis"
55
- ];
56
- var FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---/;
57
- function insightValue(value) {
58
- if (typeof value === "string") return value.trim() || null;
59
- if (typeof value === "number" || typeof value === "boolean") return String(value);
60
- return null;
61
- }
62
- function definitionInsights(markdown) {
63
- const block = FRONTMATTER.exec(markdown)?.[1];
64
- if (!block) return null;
65
- let parsed;
66
- try {
67
- parsed = parseYaml(block);
68
- } catch {
69
- return null;
70
- }
71
- if (parsed === null || typeof parsed !== "object") return null;
72
- const insights = {};
73
- for (const [key, raw] of Object.entries(parsed)) {
74
- if (!(INSIGHT_KEYS.includes(key) || key.startsWith("source") || key.startsWith("reference"))) continue;
75
- const value = insightValue(raw);
76
- if (value !== null) insights[key] = value;
77
- }
78
- return Object.keys(insights).length > 0 ? insights : null;
79
- }
80
- function readLocalDefinition(slug) {
81
- try {
82
- return readFileSync(path.join(process.cwd(), "src", "creatives", slug, "_definition.md"), "utf8");
83
- } catch {
84
- return null;
85
- }
86
- }
87
- var COMPARED_FIELDS = [
88
- { key: "angle", label: "angle", advice: "Brief the next creative on the cheapest angle with a new hook." },
89
- { key: "mechanism", label: "mechanism", advice: "Brief the next creative on the cheapest mechanism." },
90
- { key: "dominantSlot", label: "dominant slot", advice: "Lead the next creative with the cheapest dominant slot." }
91
- ];
92
- function cheapestHint(creatives, { key, label, advice }) {
93
- const byValue = /* @__PURE__ */ new Map();
94
- for (const creative of creatives) {
95
- const value = creative.definition?.[key];
96
- if (!value || creative.costPerResult === null) continue;
97
- const best = byValue.get(value);
98
- if (!best || (best.costPerResult ?? Number.POSITIVE_INFINITY) > creative.costPerResult)
99
- byValue.set(value, creative);
100
- }
101
- if (byValue.size < 2) return null;
102
- const ranked = [...byValue.entries()].sort(([, a], [, b]) => (a.costPerResult ?? 0) - (b.costPerResult ?? 0)).map(
103
- ([value, creative]) => `"${value}" ${creative.costPerResult}${creative.currency ? ` ${creative.currency}` : ""} (${creative.slug ?? creative.title})`
104
- );
105
- return `Cost per result by ${label}: ${ranked.join(", ")}. ${advice}`;
106
- }
107
- function withDefinitions(response, readDefinition) {
108
- const creatives = response.data.creatives.map((creative) => {
109
- const markdown = creative.slug ? readDefinition(creative.slug) : null;
110
- const definition = markdown ? definitionInsights(markdown) : null;
111
- return definition ? { ...creative, definition } : creative;
112
- });
113
- const hints = [...response.hints ?? []];
114
- for (const field of COMPARED_FIELDS) {
115
- const hint = cheapestHint(creatives, field);
116
- if (hint) hints.push(hint);
117
- }
118
- const unnamed = creatives.filter((creative) => !creative.definition?.angle).map((c) => c.slug ?? c.title);
119
- if (unnamed.length > 0) {
120
- hints.push(
121
- `No angle recorded for: ${unnamed.join(", ")}. Add angle and hook to src/creatives/<slug>/_definition.md so results show which angle works.`
122
- );
123
- }
124
- return { ...response, data: { ...response.data, creatives }, ...hints.length > 0 ? { hints } : {} };
125
- }
126
- function parseDays(raw) {
127
- if (raw === void 0) return void 0;
128
- const days = Number(raw);
129
- if (!Number.isInteger(days) || days < 1 || days > CREATIVE_PERFORMANCE_MAX_DAYS) {
130
- throw new Error(`--days must be a whole number from 1 to ${CREATIVE_PERFORMANCE_MAX_DAYS}`);
131
- }
132
- return days;
133
- }
134
- var performanceCommand = defineCommand({
135
- meta: { name: "performance", description: DESCRIPTION },
136
- args: ARGS,
137
- run: async ({ args }) => {
138
- try {
139
- const body = {};
140
- const slug = args.slug;
141
- if (slug) body.slug = slug;
142
- const days = parseDays(args.days);
143
- if (days !== void 0) body.days = days;
144
- if (args.full) body.full = true;
145
- const response = await apiPost("/api/creatives/performance", body);
146
- writeJson(withDefinitions(response, readLocalDefinition));
147
- } catch (err) {
148
- failApi(err);
149
- }
150
- }
151
- });
152
-
153
- export {
154
- definitionInsights,
155
- withDefinitions,
156
- parseDays,
157
- performanceCommand
158
- };
159
- //# sourceMappingURL=chunk-Z2GQREJY.js.map