@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,263 @@
1
+ import {
2
+ chatIdFromEnv,
3
+ failAvatarApi,
4
+ failValidation
5
+ } from "./chunk-BAXDNVT2.js";
6
+ import {
7
+ writeAvatars
8
+ } from "./chunk-QG4MW2V4.js";
9
+ import {
10
+ AVATAR_HANDLE_PATTERN
11
+ } from "./chunk-O37VU7FG.js";
12
+ import "./chunk-CAZGM2NX.js";
13
+ import "./chunk-NZS3KEQ2.js";
14
+ import "./chunk-GIWHHCD6.js";
15
+ import "./chunk-XQIOCIDO.js";
16
+ import "./chunk-WTJSMYY2.js";
17
+ import "./chunk-6YLNY6CK.js";
18
+ import "./chunk-D5NEIESR.js";
19
+ import "./chunk-57KKVDDR.js";
20
+ import {
21
+ registerSchema,
22
+ writeJson
23
+ } from "./chunk-QANGHND7.js";
24
+ import "./chunk-YQSBHWOI.js";
25
+
26
+ // src/commands/avatars/research.ts
27
+ import { defineCommand } from "citty";
28
+
29
+ // src/commands/avatars/researchHints.ts
30
+ function described(call) {
31
+ return call.who ?? [call.name, call.role, call.company].filter(Boolean).join(", ");
32
+ }
33
+ function rerunOf(call) {
34
+ return [
35
+ "baker avatars research",
36
+ call.who ? quoted(call.who) : void 0,
37
+ call.name ? `--name ${quoted(call.name)}` : void 0,
38
+ call.role ? `--role ${quoted(call.role)}` : void 0,
39
+ call.company ? `--company ${quoted(call.company)}` : void 0,
40
+ call.context ? `--context ${quoted(call.context)}` : void 0,
41
+ call.site ? `--site ${call.site}` : void 0,
42
+ call.handle ? `--handle ${call.handle}` : void 0,
43
+ call.profile ? `--profile ${call.profile}` : void 0
44
+ ].filter(Boolean).join(" ");
45
+ }
46
+ function quoted(text) {
47
+ return `"${text.replaceAll('"', '\\"')}"`;
48
+ }
49
+ function possibleHints(data, rerun, create) {
50
+ const lines = (data.candidates ?? []).map(
51
+ (candidate) => [candidate.name, candidate.headline, candidate.profile].filter(Boolean).join(" \u2014 ")
52
+ );
53
+ const example = data.candidates?.[0]?.profile ?? "<profile url>";
54
+ return [
55
+ `Not sure it is them: these profiles matched only in part, so no photo was taken.
56
+ ${lines.map((line) => ` - ${line}`).join("\n")}`,
57
+ `If the copy makes clear which one is the person (same company, same role, what else you know of them), take it: \`${rerun} --profile ${example}${create}\`. If none of them clearly is, treat this as not found \u2014 never put a face in an ad on a guess.`
58
+ ];
59
+ }
60
+ function notFoundHints(data, rerun, create) {
61
+ const searched = data.searched.map((query) => `"${query}"`).join(", ");
62
+ const company = data.query.company;
63
+ const sites = (data.possibleSites ?? []).map(
64
+ (site) => `${site} may be ${company ?? "the company"}'s own website (its domain spells part of the name). If it is \u2014 you know it, or a quick look confirms it \u2014 run again on it: \`${rerun} --site ${site}${create}\`. Never name a site that is not theirs.`
65
+ );
66
+ return [
67
+ `No public profile could be tied to this person${searched ? ` (searched ${searched})` : ""}, so no photo was taken. Carry on with an invented one-off person drawn from the description, exactly as for anyone unnamed \u2014 never a photo of somebody else, and never stall the job over it.`,
68
+ ...sites,
69
+ 'If you know more than was searched, run it again with it: their exact name or company (`--name`, `--company`), the company\'s own website (`--site <domain>`), what else is known of them (`--context "Spanish, banking"`: where they are from or based, their field), or their LinkedIn profile once you have checked it is them (`--profile <url>`).'
70
+ ];
71
+ }
72
+ function avatarHints(avatar, name) {
73
+ const where = avatar.reused ? `@${avatar.handle} is already ${name}'s avatar \u2014 reused, not built again.` : `@${avatar.handle} is ${name}'s avatar, built from their real photos. Its sheet settles in about 30s: if the next thing you do needs it, \`baker avatars get ${avatar.handle} --wait\`.`;
74
+ return [
75
+ where,
76
+ `Use it everywhere ${name} appears: \`--avatar ${avatar.handle}\` on static ads, video and Studio renders; on a landing, their photo is the avatar's \`coverUrl\` from \`baker avatars get ${avatar.handle}\` (upscale it when it is shown large). Never invent another face for them.`
77
+ ];
78
+ }
79
+ function foundHints(data, call, rerun) {
80
+ const name = data.person?.name ?? described(call);
81
+ if (data.avatar) return avatarHints(data.avatar, name);
82
+ const photoIds = (data.photos ?? []).map((photo) => photo.imageId).join(",");
83
+ if (!photoIds) {
84
+ return [
85
+ `Found ${name}, but no usable photo of them was public${call.create ? ", so no avatar was built" : ""}. Carry on with an invented one-off person drawn from the description.`
86
+ ];
87
+ }
88
+ if (call.create) {
89
+ return [
90
+ `Found ${name}, but their avatar could not be built automatically. Build it from the photos yourself: \`baker avatars create --name ${quoted(name)} --subject "<one person, plainly: age, build, hair, skin, face>" --source-image ${photoIds} --likeness-confirmed\`.`
91
+ ];
92
+ }
93
+ return [
94
+ `Found ${name}; their photos are in the image library (${photoIds}). Build their avatar from them: \`${rerun} --create\`.`
95
+ ];
96
+ }
97
+ function researchHints(data, call) {
98
+ const rerun = rerunOf(call);
99
+ if (data.status === "possible") {
100
+ return possibleHints(data, rerunOf({ ...call, profile: void 0 }), call.create ? " --create" : "");
101
+ }
102
+ if (data.status === "not_found") return notFoundHints(data, rerun, call.create ? " --create" : "");
103
+ return foundHints(data, call, rerun);
104
+ }
105
+
106
+ // src/commands/avatars/research.ts
107
+ var RESEARCH_TIMEOUT_MS = 18e4;
108
+ registerSchema({
109
+ command: "avatars.research",
110
+ description: 'Find a REAL, named person from a description and gather their public photos \u2014 and, with --create, build their avatar from them. Start here: `baker avatars research "Lautaro Suarez, CTO at Vibiz" --create`. Use it whenever copy shows a real person by name: a testimonial author with their role and company, the company\'s founder or CEO, a named team member. Describe them: "<name>, <role> at <company>", or "the CEO of <company>" when the copy names a role, and add what else you know: --site <the company\'s own website> when its domain is not its name spelled out (santander.com for Banco Santander), --context "<where they are from or based, their field>" for someone with no company. Identity is checked in code (the name AND the company \u2014 or, with no company, the role and the context \u2014 must match a public profile): `found` returns their photos (now in the image library) and a subject description; `possible` returns the half-matches to pick from with --profile <their link> (or a LinkedIn you found and checked yourself); `not_found` lists any site that may be the company\'s (possibleSites) and means fall back to an invented one-off person. The company naming them in its copy is the go-ahead to use their likeness \u2014 no confirmation question. A person who already has an avatar comes back with it (`reused: true`) \u2014 nothing searched, nothing billed \u2014 so run it every time copy names someone.',
111
+ args: {
112
+ who: {
113
+ type: "string",
114
+ description: 'How the copy names them, e.g. "Lautaro Suarez, CTO at Vibiz" or "the CEO of Vibiz"',
115
+ required: true
116
+ },
117
+ name: {
118
+ type: "string",
119
+ description: "Their full name, when the description leaves it out or reads it wrong",
120
+ required: false
121
+ },
122
+ role: { type: "string", description: 'Their role, e.g. "CTO", "Founder"', required: false },
123
+ company: { type: "string", description: "The company they are at", required: false },
124
+ context: {
125
+ type: "string",
126
+ description: 'What else you know of them, in a few words: where they are from or based, their field, e.g. "Spanish, banking". Narrows the search; with no company, name + role + context on one profile is enough to find them',
127
+ required: false
128
+ },
129
+ site: {
130
+ type: "string",
131
+ description: "The company's own website, e.g. \"santander.com\" for Banco Santander: its pages are searched for them however the domain spells the name. Use it when the domain is not the company's name spelled out, or when a `not_found` lists it in possibleSites and it is theirs",
132
+ required: false
133
+ },
134
+ profile: {
135
+ type: "string",
136
+ description: "The profile to take, by its link: one of the candidates a `possible` answer listed (a LinkedIn, or a public record), or a LinkedIn you found and checked is them (same person, role and company). The name on it must match",
137
+ required: false
138
+ },
139
+ linkedin: { type: "string", description: "Same as --profile", required: false },
140
+ create: {
141
+ type: "boolean",
142
+ description: "Build their avatar from the photos right away (likeness `licensed`, no face picker)",
143
+ required: false
144
+ },
145
+ handle: {
146
+ type: "string",
147
+ description: "Mention handle for the avatar --create builds (derived from the name when omitted)",
148
+ required: false
149
+ },
150
+ full: {
151
+ type: "boolean",
152
+ description: "Include their about text, location and every search that was run",
153
+ required: false
154
+ }
155
+ }
156
+ });
157
+ function compact(data, full) {
158
+ if (full) return data;
159
+ const { searched, person, ...rest } = data;
160
+ const { about: _about, location: _location, ...who } = person ?? { socials: {} };
161
+ return {
162
+ ...rest,
163
+ ...person ? { person: who } : {},
164
+ // A `not_found` is only useful with what was tried.
165
+ ...data.status === "not_found" ? { searched } : {}
166
+ };
167
+ }
168
+ var researchCommand = defineCommand({
169
+ meta: {
170
+ name: "research",
171
+ description: 'Find a real, named person from a description and build their avatar from their public photos. Example: baker avatars research "Lautaro Suarez, CTO at Vibiz" --create'
172
+ },
173
+ args: {
174
+ who: {
175
+ type: "positional",
176
+ description: 'Who: "<name>, <role> at <company>" or "the CEO of <company>"',
177
+ required: false
178
+ },
179
+ name: { type: "string", description: "Their full name (overrides the description)", required: false },
180
+ role: { type: "string", description: "Their role (overrides the description)", required: false },
181
+ company: { type: "string", description: "Their company (overrides the description)", required: false },
182
+ context: {
183
+ type: "string",
184
+ description: 'What else you know of them: "Spanish, banking" (where they are from or based, their field)',
185
+ required: false
186
+ },
187
+ site: { type: "string", description: `The company's own website, e.g. "santander.com"`, required: false },
188
+ profile: {
189
+ type: "string",
190
+ description: "The profile to take: a candidate's link from a `possible` answer, or a LinkedIn you checked is them",
191
+ required: false
192
+ },
193
+ linkedin: { type: "string", description: "Same as --profile", required: false },
194
+ create: { type: "boolean", description: "Build their avatar from the photos", required: false, default: false },
195
+ handle: { type: "string", description: "Mention handle for the new avatar", required: false },
196
+ full: {
197
+ type: "boolean",
198
+ description: "Include about, location and the searches run",
199
+ required: false,
200
+ default: false
201
+ }
202
+ },
203
+ run: async ({ args }) => {
204
+ const text = (key) => {
205
+ const value = args[key];
206
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
207
+ };
208
+ const call = callOf(text, Boolean(args.create));
209
+ const { who, name, company, handle } = call;
210
+ if (!who && !name && !company) {
211
+ failValidation(
212
+ 'Say who to research, e.g. `baker avatars research "Lautaro Suarez, CTO at Vibiz"` or `baker avatars research "the CEO of Vibiz"`.'
213
+ );
214
+ }
215
+ if (handle && !AVATAR_HANDLE_PATTERN.test(handle)) {
216
+ failValidation(
217
+ `--handle "${handle}" is not usable. Use lowercase letters, numbers and dashes, starting with a letter \u2014 "lautaro-suarez". Leave it off to have one derived from the name.`
218
+ );
219
+ }
220
+ const chatId = chatIdFromEnv();
221
+ const { profile: profileUrl, ...asked } = call;
222
+ const body = {
223
+ ...asked,
224
+ ...profileUrl ? { profileUrl } : {},
225
+ // A backend from before --profile reads a picked LinkedIn only here.
226
+ ...profileUrl && /linkedin\.com\//i.test(profileUrl) ? { linkedinUrl: profileUrl } : {},
227
+ ...chatId ? { chatId } : {}
228
+ };
229
+ try {
230
+ const data = await writeAvatars("/api/avatars/research", body, {
231
+ timeoutMs: RESEARCH_TIMEOUT_MS
232
+ });
233
+ writeJson({ ok: true, data: compact(data, Boolean(args.full)), hints: researchHints(data, call) });
234
+ } catch (err) {
235
+ failAvatarApi(err, handle);
236
+ }
237
+ }
238
+ });
239
+ function callOf(text, create) {
240
+ const who = text("who");
241
+ const name = text("name");
242
+ const role = text("role");
243
+ const company = text("company");
244
+ const context = text("context");
245
+ const site = text("site");
246
+ const handle = text("handle")?.toLowerCase();
247
+ const profile = text("profile") ?? text("linkedin");
248
+ return {
249
+ ...who ? { who } : {},
250
+ ...name ? { name } : {},
251
+ ...role ? { role } : {},
252
+ ...company ? { company } : {},
253
+ ...context ? { context } : {},
254
+ ...site ? { site } : {},
255
+ ...handle ? { handle } : {},
256
+ ...profile ? { profile } : {},
257
+ create
258
+ };
259
+ }
260
+ export {
261
+ researchCommand
262
+ };
263
+ //# sourceMappingURL=research-L25D4WHQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/avatars/research.ts","../src/commands/avatars/researchHints.ts"],"sourcesContent":["import { AVATAR_HANDLE_PATTERN, type AvatarsResearchRequest, type AvatarsResearchResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { chatIdFromEnv } from \"./casting.ts\";\nimport { failAvatarApi, failValidation } from \"./failures.ts\";\nimport { type ResearchCall, researchHints } from \"./researchHints.ts\";\nimport { writeAvatars } from \"./transport.ts\";\n\n/** Searches, profile reads, a vision check and the photo ingests — well past the default minute on a slow day. */\nconst RESEARCH_TIMEOUT_MS = 180_000;\n\nregisterSchema({\n command: \"avatars.research\",\n description:\n 'Find a REAL, named person from a description and gather their public photos — and, with --create, build their avatar from them. Start here: `baker avatars research \"Lautaro Suarez, CTO at Vibiz\" --create`. Use it whenever copy shows a real person by name: a testimonial author with their role and company, the company\\'s founder or CEO, a named team member. Describe them: \"<name>, <role> at <company>\", or \"the CEO of <company>\" when the copy names a role, and add what else you know: --site <the company\\'s own website> when its domain is not its name spelled out (santander.com for Banco Santander), --context \"<where they are from or based, their field>\" for someone with no company. Identity is checked in code (the name AND the company — or, with no company, the role and the context — must match a public profile): `found` returns their photos (now in the image library) and a subject description; `possible` returns the half-matches to pick from with --profile <their link> (or a LinkedIn you found and checked yourself); `not_found` lists any site that may be the company\\'s (possibleSites) and means fall back to an invented one-off person. The company naming them in its copy is the go-ahead to use their likeness — no confirmation question. A person who already has an avatar comes back with it (`reused: true`) — nothing searched, nothing billed — so run it every time copy names someone.',\n args: {\n who: {\n type: \"string\",\n description: 'How the copy names them, e.g. \"Lautaro Suarez, CTO at Vibiz\" or \"the CEO of Vibiz\"',\n required: true,\n },\n name: {\n type: \"string\",\n description: \"Their full name, when the description leaves it out or reads it wrong\",\n required: false,\n },\n role: { type: \"string\", description: 'Their role, e.g. \"CTO\", \"Founder\"', required: false },\n company: { type: \"string\", description: \"The company they are at\", required: false },\n context: {\n type: \"string\",\n description:\n 'What else you know of them, in a few words: where they are from or based, their field, e.g. \"Spanish, banking\". Narrows the search; with no company, name + role + context on one profile is enough to find them',\n required: false,\n },\n site: {\n type: \"string\",\n description:\n \"The company's own website, e.g. \\\"santander.com\\\" for Banco Santander: its pages are searched for them however the domain spells the name. Use it when the domain is not the company's name spelled out, or when a `not_found` lists it in possibleSites and it is theirs\",\n required: false,\n },\n profile: {\n type: \"string\",\n description:\n \"The profile to take, by its link: one of the candidates a `possible` answer listed (a LinkedIn, or a public record), or a LinkedIn you found and checked is them (same person, role and company). The name on it must match\",\n required: false,\n },\n linkedin: { type: \"string\", description: \"Same as --profile\", required: false },\n create: {\n type: \"boolean\",\n description: \"Build their avatar from the photos right away (likeness `licensed`, no face picker)\",\n required: false,\n },\n handle: {\n type: \"string\",\n description: \"Mention handle for the avatar --create builds (derived from the name when omitted)\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Include their about text, location and every search that was run\",\n required: false,\n },\n },\n});\n\n/**\n * Compact by default: what an agent needs to decide — who, how sure, which photos,\n * which avatar. The about text is paragraphs long and only matters to a reader.\n */\nfunction compact(data: AvatarsResearchResponse, full: boolean): Record<string, unknown> {\n if (full) return data;\n const { searched, person, ...rest } = data;\n const { about: _about, location: _location, ...who } = person ?? { socials: {} };\n return {\n ...rest,\n ...(person ? { person: who } : {}),\n // A `not_found` is only useful with what was tried.\n ...(data.status === \"not_found\" ? { searched } : {}),\n };\n}\n\nexport const researchCommand = defineCommand({\n meta: {\n name: \"research\",\n description:\n 'Find a real, named person from a description and build their avatar from their public photos. Example: baker avatars research \"Lautaro Suarez, CTO at Vibiz\" --create',\n },\n args: {\n who: {\n type: \"positional\",\n description: 'Who: \"<name>, <role> at <company>\" or \"the CEO of <company>\"',\n required: false,\n },\n name: { type: \"string\", description: \"Their full name (overrides the description)\", required: false },\n role: { type: \"string\", description: \"Their role (overrides the description)\", required: false },\n company: { type: \"string\", description: \"Their company (overrides the description)\", required: false },\n context: {\n type: \"string\",\n description: 'What else you know of them: \"Spanish, banking\" (where they are from or based, their field)',\n required: false,\n },\n site: { type: \"string\", description: 'The company\\'s own website, e.g. \"santander.com\"', required: false },\n profile: {\n type: \"string\",\n description:\n \"The profile to take: a candidate's link from a `possible` answer, or a LinkedIn you checked is them\",\n required: false,\n },\n linkedin: { type: \"string\", description: \"Same as --profile\", required: false },\n create: { type: \"boolean\", description: \"Build their avatar from the photos\", required: false, default: false },\n handle: { type: \"string\", description: \"Mention handle for the new avatar\", required: false },\n full: {\n type: \"boolean\",\n description: \"Include about, location and the searches run\",\n required: false,\n default: false,\n },\n },\n run: async ({ args }) => {\n const text = (key: string) => {\n const value = (args as Record<string, unknown>)[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n };\n const call = callOf(text, Boolean(args.create));\n const { who, name, company, handle } = call;\n if (!who && !name && !company) {\n failValidation(\n 'Say who to research, e.g. `baker avatars research \"Lautaro Suarez, CTO at Vibiz\"` or `baker avatars research \"the CEO of Vibiz\"`.',\n );\n }\n if (handle && !AVATAR_HANDLE_PATTERN.test(handle)) {\n failValidation(\n `--handle \"${handle}\" is not usable. Use lowercase letters, numbers and dashes, starting with a letter — \"lautaro-suarez\". Leave it off to have one derived from the name.`,\n );\n }\n\n const chatId = chatIdFromEnv();\n const { profile: profileUrl, ...asked } = call;\n const body: AvatarsResearchRequest = {\n ...asked,\n ...(profileUrl ? { profileUrl } : {}),\n // A backend from before --profile reads a picked LinkedIn only here.\n ...(profileUrl && /linkedin\\.com\\//i.test(profileUrl) ? { linkedinUrl: profileUrl } : {}),\n ...(chatId ? { chatId } : {}),\n };\n\n try {\n const data = await writeAvatars<AvatarsResearchResponse>(\"/api/avatars/research\", body, {\n timeoutMs: RESEARCH_TIMEOUT_MS,\n });\n writeJson({ ok: true, data: compact(data, Boolean(args.full)), hints: researchHints(data, call) });\n } catch (err) {\n failAvatarApi(err, handle);\n }\n },\n});\n\n/** The call as it was made: the description and the flags given, each only when set. */\nfunction callOf(text: (key: string) => string | undefined, create: boolean): ResearchCall {\n const who = text(\"who\");\n const name = text(\"name\");\n const role = text(\"role\");\n const company = text(\"company\");\n const context = text(\"context\");\n const site = text(\"site\");\n const handle = text(\"handle\")?.toLowerCase();\n const profile = text(\"profile\") ?? text(\"linkedin\");\n return {\n ...(who ? { who } : {}),\n ...(name ? { name } : {}),\n ...(role ? { role } : {}),\n ...(company ? { company } : {}),\n ...(context ? { context } : {}),\n ...(site ? { site } : {}),\n ...(handle ? { handle } : {}),\n ...(profile ? { profile } : {}),\n create,\n };\n}\n","import type { AvatarsResearchResponse } from \"@baker/api\";\n\n/** How the command was called, so a hint can hand back the exact next command. */\nexport interface ResearchCall {\n who?: string;\n name?: string;\n role?: string;\n company?: string;\n context?: string;\n site?: string;\n handle?: string;\n /** The profile picked by its link (`--profile`, or `--linkedin` as it was called before). */\n profile?: string;\n create: boolean;\n}\n\n/** The person as the call described them. */\nfunction described(call: ResearchCall): string {\n return call.who ?? [call.name, call.role, call.company].filter(Boolean).join(\", \");\n}\n\n/** The call again, exactly as it was made (without `--create`, which each hint adds when it applies). */\nfunction rerunOf(call: ResearchCall): string {\n return [\n \"baker avatars research\",\n call.who ? quoted(call.who) : undefined,\n call.name ? `--name ${quoted(call.name)}` : undefined,\n call.role ? `--role ${quoted(call.role)}` : undefined,\n call.company ? `--company ${quoted(call.company)}` : undefined,\n call.context ? `--context ${quoted(call.context)}` : undefined,\n call.site ? `--site ${call.site}` : undefined,\n call.handle ? `--handle ${call.handle}` : undefined,\n call.profile ? `--profile ${call.profile}` : undefined,\n ]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction quoted(text: string): string {\n return `\"${text.replaceAll('\"', '\\\\\"')}\"`;\n}\n\nfunction possibleHints(data: AvatarsResearchResponse, rerun: string, create: string): string[] {\n const lines = (data.candidates ?? []).map((candidate) =>\n [candidate.name, candidate.headline, candidate.profile].filter(Boolean).join(\" — \"),\n );\n const example = data.candidates?.[0]?.profile ?? \"<profile url>\";\n return [\n `Not sure it is them: these profiles matched only in part, so no photo was taken.\\n${lines.map((line) => ` - ${line}`).join(\"\\n\")}`,\n `If the copy makes clear which one is the person (same company, same role, what else you know of them), take it: \\`${rerun} --profile ${example}${create}\\`. If none of them clearly is, treat this as not found — never put a face in an ad on a guess.`,\n ];\n}\n\nfunction notFoundHints(data: AvatarsResearchResponse, rerun: string, create: string): string[] {\n const searched = data.searched.map((query) => `\"${query}\"`).join(\", \");\n const company = data.query.company;\n const sites = (data.possibleSites ?? []).map(\n (site) =>\n `${site} may be ${company ?? \"the company\"}'s own website (its domain spells part of the name). If it is — you know it, or a quick look confirms it — run again on it: \\`${rerun} --site ${site}${create}\\`. Never name a site that is not theirs.`,\n );\n return [\n `No public profile could be tied to this person${searched ? ` (searched ${searched})` : \"\"}, so no photo was taken. Carry on with an invented one-off person drawn from the description, exactly as for anyone unnamed — never a photo of somebody else, and never stall the job over it.`,\n ...sites,\n 'If you know more than was searched, run it again with it: their exact name or company (`--name`, `--company`), the company\\'s own website (`--site <domain>`), what else is known of them (`--context \"Spanish, banking\"`: where they are from or based, their field), or their LinkedIn profile once you have checked it is them (`--profile <url>`).',\n ];\n}\n\nfunction avatarHints(avatar: NonNullable<AvatarsResearchResponse[\"avatar\"]>, name: string): string[] {\n const where = avatar.reused\n ? `@${avatar.handle} is already ${name}'s avatar — reused, not built again.`\n : `@${avatar.handle} is ${name}'s avatar, built from their real photos. Its sheet settles in about 30s: if the next thing you do needs it, \\`baker avatars get ${avatar.handle} --wait\\`.`;\n return [\n where,\n `Use it everywhere ${name} appears: \\`--avatar ${avatar.handle}\\` on static ads, video and Studio renders; on a landing, their photo is the avatar's \\`coverUrl\\` from \\`baker avatars get ${avatar.handle}\\` (upscale it when it is shown large). Never invent another face for them.`,\n ];\n}\n\nfunction foundHints(data: AvatarsResearchResponse, call: ResearchCall, rerun: string): string[] {\n const name = data.person?.name ?? described(call);\n if (data.avatar) return avatarHints(data.avatar, name);\n\n const photoIds = (data.photos ?? []).map((photo) => photo.imageId).join(\",\");\n if (!photoIds) {\n return [\n `Found ${name}, but no usable photo of them was public${call.create ? \", so no avatar was built\" : \"\"}. Carry on with an invented one-off person drawn from the description.`,\n ];\n }\n if (call.create) {\n return [\n `Found ${name}, but their avatar could not be built automatically. Build it from the photos yourself: \\`baker avatars create --name ${quoted(name)} --subject \"<one person, plainly: age, build, hair, skin, face>\" --source-image ${photoIds} --likeness-confirmed\\`.`,\n ];\n }\n return [\n `Found ${name}; their photos are in the image library (${photoIds}). Build their avatar from them: \\`${rerun} --create\\`.`,\n ];\n}\n\n/** What the agent should do next with a research answer, keyed off its status. */\nexport function researchHints(data: AvatarsResearchResponse, call: ResearchCall): string[] {\n const rerun = rerunOf(call);\n if (data.status === \"possible\") {\n return possibleHints(data, rerunOf({ ...call, profile: undefined }), call.create ? \" --create\" : \"\");\n }\n if (data.status === \"not_found\") return notFoundHints(data, rerun, call.create ? \" --create\" : \"\");\n return foundHints(data, call, rerun);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,62 @@
1
+ import "./chunk-YQSBHWOI.js";
2
+
3
+ // src/commands/research/index.ts
4
+ import { defineCommand } from "citty";
5
+ var researchCommand = defineCommand({
6
+ meta: {
7
+ name: "research",
8
+ description: `Competitive intelligence and AI-powered research commands.
9
+
10
+ Commands:
11
+ web \u2014 Search the web with AI (ask any question)
12
+ fetch \u2014 Read a page an ordinary web fetch could not
13
+ reddit \u2014 Read Reddit verbatim: search posts/comments, read a thread
14
+ customers \u2014 Gather real customer words into Knowledge (src/content/insights), verbatim only
15
+ google-ads \u2014 A competitor's Google ads and their copy (Ads Transparency Center)
16
+ advertisers \u2014 Who's bidding on a keyword?
17
+ autocomplete \u2014 Google Autocomplete suggestions
18
+ intent \u2014 Google Search intent classification
19
+ keyword-metrics \u2014 Volume/CPC/competition for keywords you name (no domain)
20
+ keywords-for-site \u2014 Keywords a domain bids on
21
+ keyword-gap \u2014 Keywords they have that we don't
22
+ relevant-pages \u2014 Top pages of a competitor domain
23
+ lighthouse \u2014 Landing page performance audit
24
+ countries \u2014 List supported country codes
25
+ languages \u2014 List supported language codes
26
+
27
+ Examples:
28
+ baker research web "Who are the main competitors of HubSpot?"
29
+ baker research web "What is the ICP for CRM buyers?" --depth high
30
+ baker research fetch "https://competitor.com/pricing"
31
+ baker research reddit search "agency never paid" --subreddit AmazonFlexUK --kind comments
32
+ baker research customers --focus "payroll app for restaurants"
33
+ baker research google-ads competitor.com --location es --copy
34
+ baker research advertisers "running shoes"
35
+ baker research intent "buy running shoes,best running shoes 2026"
36
+ baker research keyword-metrics "chatbot whatsapp,crm whatsapp" --location mx --language es
37
+ baker research keywords-for-site "competitor.com"
38
+ baker research keyword-gap "them.com" "us.com"
39
+ Full guide: __tooling__/docs/tools/baker/research.md`
40
+ },
41
+ subCommands: {
42
+ web: () => import("./web-6JMWERTT.js").then((m) => m.webCommand),
43
+ fetch: () => import("./fetch-HMUGSRE4.js").then((m) => m.fetchCommand),
44
+ "google-ads": () => import("./google-ads-6X4BHGUR.js").then((m) => m.googleAdsCommand),
45
+ reddit: () => import("./reddit-6C3PT5CT.js").then((m) => m.redditCommand),
46
+ customers: () => import("./customers-LMSX33FO.js").then((m) => m.customersCommand),
47
+ advertisers: () => import("./advertisers-STYAIX72.js").then((m) => m.advertisersCommand),
48
+ autocomplete: () => import("./autocomplete-SDDSJTAF.js").then((m) => m.autocompleteCommand),
49
+ countries: () => import("./countries-F5ISQB3M.js").then((m) => m.countriesCommand),
50
+ intent: () => import("./intent-FUGWRUSW.js").then((m) => m.intentCommand),
51
+ "keyword-metrics": () => import("./keyword-metrics-KNTIN4ZK.js").then((m) => m.keywordMetricsCommand),
52
+ "keywords-for-site": () => import("./keywords-for-site-S4MXGXWR.js").then((m) => m.keywordsForSiteCommand),
53
+ "keyword-gap": () => import("./keyword-gap-DXTKZLV2.js").then((m) => m.keywordGapCommand),
54
+ languages: () => import("./languages-73GOUAHX.js").then((m) => m.languagesCommand),
55
+ lighthouse: () => import("./lighthouse-ZZUYZALE.js").then((m) => m.lighthouseCommand),
56
+ "relevant-pages": () => import("./relevant-pages-CTG72PBR.js").then((m) => m.relevantPagesCommand)
57
+ }
58
+ });
59
+ export {
60
+ researchCommand
61
+ };
62
+ //# sourceMappingURL=research-YCMMQVK6.js.map
@@ -0,0 +1,55 @@
1
+ import {
2
+ reportError
3
+ } from "./chunk-SZNGQ2GF.js";
4
+ import {
5
+ mediaSourcesResetRequestSchema
6
+ } from "./chunk-O37VU7FG.js";
7
+ import "./chunk-CAZGM2NX.js";
8
+ import "./chunk-NZS3KEQ2.js";
9
+ import "./chunk-GIWHHCD6.js";
10
+ import "./chunk-XQIOCIDO.js";
11
+ import "./chunk-WTJSMYY2.js";
12
+ import {
13
+ apiPost
14
+ } from "./chunk-6YLNY6CK.js";
15
+ import "./chunk-D5NEIESR.js";
16
+ import "./chunk-57KKVDDR.js";
17
+ import {
18
+ registerSchema,
19
+ writeJson
20
+ } from "./chunk-QANGHND7.js";
21
+ import "./chunk-YQSBHWOI.js";
22
+
23
+ // src/commands/media-sources/reset.ts
24
+ import { defineCommand } from "citty";
25
+ registerSchema({
26
+ command: "media-sources.reset",
27
+ description: "Unstick a connected source whose import failed, or has not moved for an hour, so it can import again. Keeps what it already imported. Refused while an import is still moving.",
28
+ args: {
29
+ key: { type: "string", description: "Source key from `media-sources list`, e.g. tiktok:acme", required: true }
30
+ }
31
+ });
32
+ var resetCommand = defineCommand({
33
+ meta: {
34
+ name: "reset",
35
+ description: "Unstick a source whose import failed or has not moved for an hour, so it can import again. Keeps what it already imported; refused while an import is still moving.\n\nExample: baker media-sources reset tiktok:acme"
36
+ },
37
+ args: { key: { type: "positional", description: "Source key, e.g. tiktok:acme", required: true } },
38
+ run: async ({ args }) => {
39
+ const parsed = mediaSourcesResetRequestSchema.safeParse({ key: String(args.key ?? "") });
40
+ if (!parsed.success) {
41
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: parsed.error.issues[0]?.message ?? "" } });
42
+ process.exit(1);
43
+ }
44
+ try {
45
+ const data = await apiPost("/api/media-sources/reset", parsed.data);
46
+ writeJson({ ok: true, data, hints: [`Run \`baker media-sources sync ${data.key}\` to import its new posts.`] });
47
+ } catch (err) {
48
+ reportError(err);
49
+ }
50
+ }
51
+ });
52
+ export {
53
+ resetCommand
54
+ };
55
+ //# sourceMappingURL=reset-HKKCWKZ7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/media-sources/reset.ts"],"sourcesContent":["import { type MediaSourcesResetResponse, mediaSourcesResetRequestSchema } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { reportError } from \"./shared.ts\";\n\nregisterSchema({\n command: \"media-sources.reset\",\n description:\n \"Unstick a connected source whose import failed, or has not moved for an hour, so it can import again. Keeps what it already imported. Refused while an import is still moving.\",\n args: {\n key: { type: \"string\", description: \"Source key from `media-sources list`, e.g. tiktok:acme\", required: true },\n },\n});\n\nexport const resetCommand = defineCommand({\n meta: {\n name: \"reset\",\n description:\n \"Unstick a source whose import failed or has not moved for an hour, so it can import again. Keeps what it already imported; refused while an import is still moving.\\n\\nExample: baker media-sources reset tiktok:acme\",\n },\n args: { key: { type: \"positional\", description: \"Source key, e.g. tiktok:acme\", required: true } },\n run: async ({ args }) => {\n const parsed = mediaSourcesResetRequestSchema.safeParse({ key: String(args.key ?? \"\") });\n if (!parsed.success) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: parsed.error.issues[0]?.message ?? \"\" } });\n process.exit(1);\n }\n try {\n const data = await apiPost<MediaSourcesResetResponse>(\"/api/media-sources/reset\", parsed.data);\n writeJson({ ok: true, data, hints: [`Run \\`baker media-sources sync ${data.key}\\` to import its new posts.`] });\n } catch (err) {\n reportError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,KAAK,EAAE,MAAM,UAAU,aAAa,0DAA0D,UAAU,KAAK;AAAA,EAC/G;AACF,CAAC;AAEM,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,aAAa,gCAAgC,UAAU,KAAK,EAAE;AAAA,EACjG,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,+BAA+B,UAAU,EAAE,KAAK,OAAO,KAAK,OAAO,EAAE,EAAE,CAAC;AACvF,QAAI,CAAC,OAAO,SAAS;AACnB,gBAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,SAAS,OAAO,MAAM,OAAO,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC;AAC5G,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI;AACF,YAAM,OAAO,MAAM,QAAmC,4BAA4B,OAAO,IAAI;AAC7F,gBAAU,EAAE,IAAI,MAAM,MAAM,OAAO,CAAC,kCAAkC,KAAK,GAAG,6BAA6B,EAAE,CAAC;AAAA,IAChH,SAAS,KAAK;AACZ,kBAAY,GAAG;AAAA,IACjB;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,55 @@
1
+ import {
2
+ reportError,
3
+ reportInvalid
4
+ } from "./chunk-RVTXDQYC.js";
5
+ import {
6
+ testimonialSourcesResetRequestSchema
7
+ } from "./chunk-O37VU7FG.js";
8
+ import "./chunk-CAZGM2NX.js";
9
+ import "./chunk-NZS3KEQ2.js";
10
+ import "./chunk-GIWHHCD6.js";
11
+ import "./chunk-XQIOCIDO.js";
12
+ import "./chunk-WTJSMYY2.js";
13
+ import {
14
+ apiPost
15
+ } from "./chunk-6YLNY6CK.js";
16
+ import "./chunk-D5NEIESR.js";
17
+ import "./chunk-57KKVDDR.js";
18
+ import {
19
+ registerSchema,
20
+ writeJson
21
+ } from "./chunk-QANGHND7.js";
22
+ import "./chunk-YQSBHWOI.js";
23
+
24
+ // src/commands/testimonials/sources/reset.ts
25
+ import { defineCommand } from "citty";
26
+ registerSchema({
27
+ command: "testimonials.sources.reset",
28
+ description: "Unstick a review source whose import failed or has not moved for an hour, so it can be imported again. Refused while an import is still running. Keeps its reviews.",
29
+ args: { id: { type: "string", description: "Source id from `testimonials sources list`", required: true } }
30
+ });
31
+ var resetCommand = defineCommand({
32
+ meta: {
33
+ name: "reset",
34
+ description: "Unstick a review source whose import failed or has not moved for an hour, so it can be imported again. Refused while an import is still running. Keeps its reviews.\n\nExample: baker testimonials sources reset <source-id>"
35
+ },
36
+ args: { id: { type: "positional", description: "Source id from `testimonials sources list`", required: true } },
37
+ run: async ({ args }) => {
38
+ const parsed = testimonialSourcesResetRequestSchema.safeParse({ id: String(args.id ?? "") });
39
+ if (!parsed.success) reportInvalid(parsed.error.issues[0]);
40
+ try {
41
+ const data = await apiPost("/api/testimonials/sources/reset", parsed.data);
42
+ writeJson({
43
+ ok: true,
44
+ data,
45
+ hints: [`Run \`baker testimonials sources sync ${data.id}\` to import its reviews again.`]
46
+ });
47
+ } catch (err) {
48
+ reportError(err);
49
+ }
50
+ }
51
+ });
52
+ export {
53
+ resetCommand
54
+ };
55
+ //# sourceMappingURL=reset-SRL6I6GP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/testimonials/sources/reset.ts"],"sourcesContent":["import { type TestimonialSourcesResetResponse, testimonialSourcesResetRequestSchema } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeJson } from \"../../../output.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { reportError, reportInvalid } from \"./shared.ts\";\n\nregisterSchema({\n command: \"testimonials.sources.reset\",\n description:\n \"Unstick a review source whose import failed or has not moved for an hour, so it can be imported again. Refused while an import is still running. Keeps its reviews.\",\n args: { id: { type: \"string\", description: \"Source id from `testimonials sources list`\", required: true } },\n});\n\nexport const resetCommand = defineCommand({\n meta: {\n name: \"reset\",\n description:\n \"Unstick a review source whose import failed or has not moved for an hour, so it can be imported again. Refused while an import is still running. Keeps its reviews.\\n\\nExample: baker testimonials sources reset <source-id>\",\n },\n args: { id: { type: \"positional\", description: \"Source id from `testimonials sources list`\", required: true } },\n run: async ({ args }) => {\n const parsed = testimonialSourcesResetRequestSchema.safeParse({ id: String(args.id ?? \"\") });\n if (!parsed.success) reportInvalid(parsed.error.issues[0]);\n try {\n const data = await apiPost<TestimonialSourcesResetResponse>(\"/api/testimonials/sources/reset\", parsed.data);\n writeJson({\n ok: true,\n data,\n hints: [`Run \\`baker testimonials sources sync ${data.id}\\` to import its reviews again.`],\n });\n } catch (err) {\n reportError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,aAAa,8CAA8C,UAAU,KAAK,EAAE;AAC5G,CAAC;AAEM,IAAM,eAAe,cAAc;AAAA,EACxC,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,aAAa,8CAA8C,UAAU,KAAK,EAAE;AAAA,EAC9G,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,qCAAqC,UAAU,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE,EAAE,CAAC;AAC3F,QAAI,CAAC,OAAO,QAAS,eAAc,OAAO,MAAM,OAAO,CAAC,CAAC;AACzD,QAAI;AACF,YAAM,OAAO,MAAM,QAAyC,mCAAmC,OAAO,IAAI;AAC1G,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ;AAAA,QACA,OAAO,CAAC,yCAAyC,KAAK,EAAE,iCAAiC;AAAA,MAC3F,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,kBAAY,GAAG;AAAA,IACjB;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,122 @@
1
+ import {
2
+ csvOrJson,
3
+ handleLinkedinError
4
+ } from "./chunk-2YTBPRRG.js";
5
+ import {
6
+ writeAdsJson,
7
+ writeAdsOutput,
8
+ writeJsonEnvelope
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
+ apiPost
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/resolve.ts
28
+ import { defineCommand } from "citty";
29
+ function domainHints(resolution) {
30
+ const hints = [];
31
+ if (resolution.errors.length > 0) {
32
+ hints.push(
33
+ `LinkedIn has no organization for ${resolution.errors.map((e) => e.id).join(", ")} \u2014 skip them or check the ids.`
34
+ );
35
+ }
36
+ if (resolution.orgs.some((o) => o.domainSource === "subdomain")) {
37
+ hints.push("domainSource=subdomain (e.g. news.microsoft.com \u2192 microsoft.com) is a weaker match \u2014 confirm it.");
38
+ }
39
+ if (resolution.orgs.some((o) => o.domainSource === "none")) {
40
+ hints.push("domainSource=none: no usable website (shortlink or missing) \u2014 match those by vanityName or name.");
41
+ }
42
+ return hints;
43
+ }
44
+ function toOrgUrn(raw) {
45
+ const trimmed = raw.trim();
46
+ if (trimmed.length === 0) {
47
+ return null;
48
+ }
49
+ if (trimmed.startsWith("urn:li:")) {
50
+ return trimmed;
51
+ }
52
+ return /^\d+$/.test(trimmed) ? `urn:li:organization:${trimmed}` : null;
53
+ }
54
+ var resolveCommand = defineCommand({
55
+ meta: {
56
+ name: "resolve",
57
+ description: `Resolve organization URNs to company names.
58
+
59
+ Examples:
60
+ baker ads linkedin resolve --urns urn:li:organization:17719,urn:li:organization:19022
61
+ baker ads linkedin resolve --ids 17719,19022 --output csv
62
+ baker ads linkedin resolve --ids 1035,1337 --with-domains # + website domain per org, for CRM matching
63
+
64
+ Accepts --urns (full URNs) and/or --ids (bare numeric ids). Rows with no name
65
+ couldn't be resolved \u2014 typically an org outside LinkedIn's targetable set.
66
+
67
+ --with-domains returns {orgs, errors}: per org name, vanityName (LinkedIn page),
68
+ website and domain (registrable, e.g. microsoft.com) with domainSource
69
+ website | subdomain (weaker) | none (shortlink / no website). Ids LinkedIn
70
+ doesn't know land in errors; the rest still resolve. Cached 7 days.`
71
+ },
72
+ args: {
73
+ urns: { type: "string", description: "Comma-separated org URNs (urn:li:organization:NNN)" },
74
+ ids: { type: "string", description: "Comma-separated bare org ids (17719,19022)" },
75
+ "with-domains": {
76
+ type: "boolean",
77
+ description: "Return vanityName, website, domain and domainSource per org (+ errors for unknown ids)"
78
+ },
79
+ "no-cache": NO_CACHE_ARG,
80
+ output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
81
+ },
82
+ run: async ({ args }) => {
83
+ const raw = [args.urns, args.ids].filter(Boolean).join(",").split(",");
84
+ const urns = [...new Set(raw.map(toOrgUrn).filter((u) => u !== null))];
85
+ if (urns.length === 0) {
86
+ handleLinkedinError(new Error("Provide --urns or --ids (org URNs or bare numeric ids)."));
87
+ }
88
+ try {
89
+ if (args["with-domains"]) {
90
+ const resolution = await apiPost("/api/ads/linkedin/resolve-orgs", {
91
+ urns,
92
+ withDomains: true,
93
+ skipCache: Boolean(args["no-cache"])
94
+ });
95
+ const hints = domainHints(resolution);
96
+ const fmt2 = csvOrJson(args);
97
+ if (fmt2 !== "json") {
98
+ writeAdsOutput(resolution.orgs, fmt2, void 0, hints);
99
+ return;
100
+ }
101
+ writeJsonEnvelope(hints.length > 0 ? { ok: true, data: resolution, hints } : { ok: true, data: resolution });
102
+ return;
103
+ }
104
+ const data = await apiPost("/api/ads/linkedin/resolve-orgs", {
105
+ urns,
106
+ skipCache: Boolean(args["no-cache"])
107
+ });
108
+ const fmt = csvOrJson(args);
109
+ if (fmt !== "json") {
110
+ writeAdsOutput(data, fmt);
111
+ return;
112
+ }
113
+ writeAdsJson({ ok: true, data });
114
+ } catch (err) {
115
+ handleLinkedinError(err);
116
+ }
117
+ }
118
+ });
119
+ export {
120
+ resolveCommand
121
+ };
122
+ //# sourceMappingURL=resolve-POMTTAFR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/linkedin/resolve.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson, writeAdsOutput, writeJsonEnvelope } from \"../output.ts\";\nimport { csvOrJson, handleLinkedinError } from \"./shared.ts\";\n\ninterface ResolvedOrg {\n urn: string;\n id: string;\n name?: string;\n}\n\ninterface ResolvedOrgDomain {\n urn: string;\n id: string;\n name: string | null;\n vanityName: string | null;\n website: string | null;\n domain: string | null;\n domainSource: \"website\" | \"subdomain\" | \"none\";\n}\n\ninterface OrgDomainResolution {\n orgs: ResolvedOrgDomain[];\n errors: Array<{ urn: string; id: string; status: number | null }>;\n}\n\nfunction domainHints(resolution: OrgDomainResolution): string[] {\n const hints: string[] = [];\n if (resolution.errors.length > 0) {\n hints.push(\n `LinkedIn has no organization for ${resolution.errors.map((e) => e.id).join(\", \")} — skip them or check the ids.`,\n );\n }\n if (resolution.orgs.some((o) => o.domainSource === \"subdomain\")) {\n hints.push(\"domainSource=subdomain (e.g. news.microsoft.com → microsoft.com) is a weaker match — confirm it.\");\n }\n if (resolution.orgs.some((o) => o.domainSource === \"none\")) {\n hints.push(\"domainSource=none: no usable website (shortlink or missing) — match those by vanityName or name.\");\n }\n return hints;\n}\n\n/** Accept bare ids (`17719`) or full URNs; emit canonical `urn:li:organization:NNN`. */\nfunction toOrgUrn(raw: string): string | null {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n return null;\n }\n if (trimmed.startsWith(\"urn:li:\")) {\n return trimmed;\n }\n return /^\\d+$/.test(trimmed) ? `urn:li:organization:${trimmed}` : null;\n}\n\n/**\n * Resolve LinkedIn organization URNs to company names. The companion to\n * `top-companies` / `analytics --pivot company`, which surface bare org URNs:\n * paste the unresolved URNs here to confirm whether they're target accounts.\n *\n * Backed by the ads-scoped adTargetingEntities `urns` finder (1h-cached). Orgs\n * outside LinkedIn's targetable employer set come back with no name.\n */\nexport const resolveCommand = defineCommand({\n meta: {\n name: \"resolve\",\n description: `Resolve organization URNs to company names.\n\nExamples:\n baker ads linkedin resolve --urns urn:li:organization:17719,urn:li:organization:19022\n baker ads linkedin resolve --ids 17719,19022 --output csv\n baker ads linkedin resolve --ids 1035,1337 --with-domains # + website domain per org, for CRM matching\n\nAccepts --urns (full URNs) and/or --ids (bare numeric ids). Rows with no name\ncouldn't be resolved — typically an org outside LinkedIn's targetable set.\n\n--with-domains returns {orgs, errors}: per org name, vanityName (LinkedIn page),\nwebsite and domain (registrable, e.g. microsoft.com) with domainSource\nwebsite | subdomain (weaker) | none (shortlink / no website). Ids LinkedIn\ndoesn't know land in errors; the rest still resolve. Cached 7 days.`,\n },\n args: {\n urns: { type: \"string\", description: \"Comma-separated org URNs (urn:li:organization:NNN)\" },\n ids: { type: \"string\", description: \"Comma-separated bare org ids (17719,19022)\" },\n \"with-domains\": {\n type: \"boolean\",\n description: \"Return vanityName, website, domain and domainSource per org (+ errors for unknown ids)\",\n },\n \"no-cache\": NO_CACHE_ARG,\n output: { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" },\n },\n run: async ({ args }) => {\n const raw = [args.urns as string | undefined, args.ids as string | undefined].filter(Boolean).join(\",\").split(\",\");\n const urns = [...new Set(raw.map(toOrgUrn).filter((u): u is string => u !== null))];\n if (urns.length === 0) {\n handleLinkedinError(new Error(\"Provide --urns or --ids (org URNs or bare numeric ids).\"));\n }\n\n try {\n if (args[\"with-domains\"]) {\n const resolution = await apiPost<OrgDomainResolution>(\"/api/ads/linkedin/resolve-orgs\", {\n urns,\n withDomains: true,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n const hints = domainHints(resolution);\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(resolution.orgs as unknown as Array<Record<string, unknown>>, fmt, undefined, hints);\n return;\n }\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data: resolution, hints } : { ok: true, data: resolution });\n return;\n }\n const data = await apiPost<ResolvedOrg[]>(\"/api/ads/linkedin/resolve-orgs\", {\n urns,\n skipCache: Boolean(args[\"no-cache\"]),\n });\n\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(data 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AA2B9B,SAAS,YAAY,YAA2C;AAC9D,QAAM,QAAkB,CAAC;AACzB,MAAI,WAAW,OAAO,SAAS,GAAG;AAChC,UAAM;AAAA,MACJ,oCAAoC,WAAW,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,IACnF;AAAA,EACF;AACA,MAAI,WAAW,KAAK,KAAK,CAAC,MAAM,EAAE,iBAAiB,WAAW,GAAG;AAC/D,UAAM,KAAK,4GAAkG;AAAA,EAC/G;AACA,MAAI,WAAW,KAAK,KAAK,CAAC,MAAM,EAAE,iBAAiB,MAAM,GAAG;AAC1D,UAAM,KAAK,uGAAkG;AAAA,EAC/G;AACA,SAAO;AACT;AAGA,SAAS,SAAS,KAA4B;AAC5C,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AACA,MAAI,QAAQ,WAAW,SAAS,GAAG;AACjC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,KAAK,OAAO,IAAI,uBAAuB,OAAO,KAAK;AACpE;AAUO,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcf;AAAA,EACA,MAAM;AAAA,IACJ,MAAM,EAAE,MAAM,UAAU,aAAa,qDAAqD;AAAA,IAC1F,KAAK,EAAE,MAAM,UAAU,aAAa,6CAA6C;AAAA,IACjF,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,YAAY;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,aAAa,qBAAqB,SAAS,OAAO;AAAA,EAC9E;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,MAAM,CAAC,KAAK,MAA4B,KAAK,GAAyB,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG;AACjH,UAAM,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE,OAAO,CAAC,MAAmB,MAAM,IAAI,CAAC,CAAC;AAClF,QAAI,KAAK,WAAW,GAAG;AACrB,0BAAoB,IAAI,MAAM,yDAAyD,CAAC;AAAA,IAC1F;AAEA,QAAI;AACF,UAAI,KAAK,cAAc,GAAG;AACxB,cAAM,aAAa,MAAM,QAA6B,kCAAkC;AAAA,UACtF;AAAA,UACA,aAAa;AAAA,UACb,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,QACrC,CAAC;AACD,cAAM,QAAQ,YAAY,UAAU;AACpC,cAAMA,OAAM,UAAU,IAAI;AAC1B,YAAIA,SAAQ,QAAQ;AAClB,yBAAe,WAAW,MAAmDA,MAAK,QAAW,KAAK;AAClG;AAAA,QACF;AACA,0BAAkB,MAAM,SAAS,IAAI,EAAE,IAAI,MAAM,MAAM,YAAY,MAAM,IAAI,EAAE,IAAI,MAAM,MAAM,WAAW,CAAC;AAC3G;AAAA,MACF;AACA,YAAM,OAAO,MAAM,QAAuB,kCAAkC;AAAA,QAC1E;AAAA,QACA,WAAW,QAAQ,KAAK,UAAU,CAAC;AAAA,MACrC,CAAC;AAED,YAAM,MAAM,UAAU,IAAI;AAC1B,UAAI,QAAQ,QAAQ;AAClB,uBAAe,MAAmD,GAAG;AACrE;AAAA,MACF;AACA,mBAAa,EAAE,IAAI,MAAM,KAAK,CAAC;AAAA,IACjC,SAAS,KAAK;AACZ,0BAAoB,GAAG;AAAA,IACzB;AAAA,EACF;AACF,CAAC;","names":["fmt"]}