@koda-sl/baker-cli 0.494.0 → 0.495.0-dev.6b9c22aff

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 (861) hide show
  1. package/README.md +5 -1
  2. package/dist/account-CJGLH2OL.js +80 -0
  3. package/dist/account-UTFFCFNW.js +79 -0
  4. package/dist/account-reads-SOTNVUM6.js +218 -0
  5. package/dist/account-users-FUJVP4UG.js +61 -0
  6. package/dist/account-users-FUJVP4UG.js.map +1 -0
  7. package/dist/account-writes-OE5FKALN.js +66 -0
  8. package/dist/accounts-OY4DII7M.js +611 -0
  9. package/dist/accounts-XUMRFVLY.js +77 -0
  10. package/dist/actions-KYKLFVUI.js +55 -0
  11. package/dist/activecampaign-P6RO7B2Q.js +935 -0
  12. package/dist/ad-group-writes-343HA4ZG.js +170 -0
  13. package/dist/ad-groups-YMU6ATTW.js +68 -0
  14. package/dist/ad-writes-MINKG33L.js +174 -0
  15. package/dist/add-34QTAS7S.js +104 -0
  16. package/dist/add-3IZ3Z2PX.js +302 -0
  17. package/dist/ads-JRZVJFXS.js +40 -0
  18. package/dist/ads-QOXCMKZ2.js +77 -0
  19. package/dist/advertisers-G2UUCWA7.js +120 -0
  20. package/dist/analytics-CKF7HTWT.js +433 -0
  21. package/dist/analytics-FO4EDDQW.js +1976 -0
  22. package/dist/animate-K3MJ3GW4.js +480 -0
  23. package/dist/assign-76E76PJY.js +77 -0
  24. package/dist/audience-size-IGDEX4XR.js +73 -0
  25. package/dist/audiences-4GRCVFZN.js +268 -0
  26. package/dist/audit-LPSYEY4S.js +151 -0
  27. package/dist/autocomplete-G7MSIJQL.js +111 -0
  28. package/dist/avatars-BF7VWGPH.js +38 -0
  29. package/dist/bid-pricing-EAZHVAMJ.js +100 -0
  30. package/dist/brand-WQI4NV3H.js +22 -0
  31. package/dist/brief-DVFCPBR3.js +538 -0
  32. package/dist/campaign-groups-LCTAUXTU.js +96 -0
  33. package/dist/campaign-groups-LCTAUXTU.js.map +1 -0
  34. package/dist/campaign-writes-ECPSPFAB.js +165 -0
  35. package/dist/campaign-writes-EZEJNO3O.js +170 -0
  36. package/dist/campaigns-7S35PC44.js +76 -0
  37. package/dist/campaigns-MVLKQWX2.js +110 -0
  38. package/dist/campaigns-MVLKQWX2.js.map +1 -0
  39. package/dist/campaigns-R3EUC5Y2.js +107 -0
  40. package/dist/canvas-Y3DKVETP.js +46 -0
  41. package/dist/capabilities-OBP5PDRK.js +144 -0
  42. package/dist/catalog-SZS2JCLN.js +65 -0
  43. package/dist/catalogs-LEABW6AS.js +128 -0
  44. package/dist/changes-4EDY3RNX.js +135 -0
  45. package/dist/chatgpt-JOAEGWCB.js +47 -0
  46. package/dist/chats-KE7FNWKF.js +276 -0
  47. package/dist/check-XHK2HVD2.js +104 -0
  48. package/dist/chunk-22HH46DF.js +122 -0
  49. package/dist/chunk-2VWWLUDJ.js +23 -0
  50. package/dist/chunk-2WBRRYSS.js +197 -0
  51. package/dist/chunk-2XH7GKCO.js +156 -0
  52. package/dist/chunk-3LMAPV6P.js +942 -0
  53. package/dist/chunk-3LZM5MWM.js +57 -0
  54. package/dist/chunk-4ARHIC23.js +392 -0
  55. package/dist/chunk-5KEQXSCN.js +1919 -0
  56. package/dist/chunk-5PMEMWKS.js +665 -0
  57. package/dist/chunk-64BRPYJD.js +225 -0
  58. package/dist/chunk-6DQDZIBL.js +363 -0
  59. package/dist/chunk-6H64SENZ.js +285 -0
  60. package/dist/chunk-6KGLAMPV.js +167 -0
  61. package/dist/chunk-6OIKNJ7G.js +26 -0
  62. package/dist/chunk-6VIHWBOD.js +1606 -0
  63. package/dist/chunk-74BP3JIV.js +275 -0
  64. package/dist/chunk-7AWSJ6Z5.js +66 -0
  65. package/dist/chunk-7IVY55AU.js +903 -0
  66. package/dist/chunk-7POQSUPH.js +455 -0
  67. package/dist/chunk-7RCNWRKK.js +206 -0
  68. package/dist/chunk-ABEIEHOV.js +131 -0
  69. package/dist/chunk-AREUZGX7.js +344 -0
  70. package/dist/chunk-CNFFNE4L.js +274 -0
  71. package/dist/chunk-CORXHFKY.js +433 -0
  72. package/dist/chunk-D3SHD4KA.js +399 -0
  73. package/dist/chunk-DD3C6TSW.js +61 -0
  74. package/dist/chunk-DQU2GVU7.js +51 -0
  75. package/dist/chunk-ECHVJII5.js +97 -0
  76. package/dist/chunk-EFWXYUSK.js +139 -0
  77. package/dist/chunk-F3CZFUXZ.js +3187 -0
  78. package/dist/chunk-F3CZFUXZ.js.map +1 -0
  79. package/dist/chunk-F4KWLFCC.js +103 -0
  80. package/dist/chunk-FL2KIDPV.js +494 -0
  81. package/dist/chunk-FT7RYWOL.js +160 -0
  82. package/dist/chunk-HPIKZPTU.js +297 -0
  83. package/dist/chunk-HUPHZ35H.js +547 -0
  84. package/dist/chunk-JGM4WGC2.js +6704 -0
  85. package/dist/chunk-JGM4WGC2.js.map +1 -0
  86. package/dist/chunk-JMW3AVN7.js +346 -0
  87. package/dist/chunk-JMW3AVN7.js.map +1 -0
  88. package/dist/chunk-JQHLF74O.js +8939 -0
  89. package/dist/chunk-K2TOE6XL.js +142 -0
  90. package/dist/chunk-KI6TENTW.js +5368 -0
  91. package/dist/chunk-LMYCLUY2.js +8914 -0
  92. package/dist/chunk-LQR4CKYW.js +191 -0
  93. package/dist/chunk-LRFNUCHV.js +89 -0
  94. package/dist/chunk-M2D7ZWEU.js +150 -0
  95. package/dist/chunk-ML7GGHTU.js +592 -0
  96. package/dist/chunk-MMUGSEF4.js +23992 -0
  97. package/dist/chunk-MMUGSEF4.js.map +1 -0
  98. package/dist/chunk-MYSLMKTG.js +604 -0
  99. package/dist/chunk-NAA4CKZZ.js +4249 -0
  100. package/dist/chunk-NAA4CKZZ.js.map +1 -0
  101. package/dist/chunk-NDKLPDZ3.js +1079 -0
  102. package/dist/chunk-OUQSDUVI.js +831 -0
  103. package/dist/chunk-PFPUPR3H.js +91 -0
  104. package/dist/chunk-PGD7USOH.js +207 -0
  105. package/dist/chunk-QKT7W5JP.js +98 -0
  106. package/dist/chunk-QU4XX5Z7.js +169 -0
  107. package/dist/chunk-R3OXH3ML.js +148 -0
  108. package/dist/chunk-RNQMXS7G.js +172 -0
  109. package/dist/chunk-SEMNRIOR.js +19 -0
  110. package/dist/chunk-SHBFBQYT.js +846 -0
  111. package/dist/chunk-SIKCVWM3.js +76 -0
  112. package/dist/chunk-UJPURLUZ.js +3868 -0
  113. package/dist/chunk-UM7NJIOU.js +64 -0
  114. package/dist/chunk-V57TZQPI.js +228 -0
  115. package/dist/chunk-WXKSUL4U.js +224 -0
  116. package/dist/chunk-YJRZVGES.js +1518 -0
  117. package/dist/chunk-YQICNXIA.js +249 -0
  118. package/dist/chunk-YTF2MI3E.js +627 -0
  119. package/dist/chunk-YYPWVQZQ.js +843 -0
  120. package/dist/chunk-Z7BQGWKG.js +46 -0
  121. package/dist/chunk-ZXSXRSFX.js +159 -0
  122. package/dist/claim-W2ZV4SH3.js +197 -0
  123. package/dist/cli.js +34 -34
  124. package/dist/companies-ITK3W3H6.js +195 -0
  125. package/dist/complete-RYEVEF3S.js +81 -0
  126. package/dist/connect-FFFNSJ2O.js +42 -0
  127. package/dist/conversation-KKJNQRFB.js +93 -0
  128. package/dist/conversion-report-PLQ4MVJR.js +125 -0
  129. package/dist/conversion-upload-command-Z7F6NQH4.js +438 -0
  130. package/dist/conversion-writes-VNOXZ4NR.js +120 -0
  131. package/dist/conversions-KHAXFD3Z.js +137 -0
  132. package/dist/conversions-KHAXFD3Z.js.map +1 -0
  133. package/dist/conversions-KPIFDO2R.js +76 -0
  134. package/dist/create-3R6Q2E2M.js +59 -0
  135. package/dist/create-A3R7YRT3.js +235 -0
  136. package/dist/create-TYWQP57A.js +207 -0
  137. package/dist/create-UUEWQUPT.js +132 -0
  138. package/dist/creatives-EEDDL3VG.js +220 -0
  139. package/dist/creatives-EEDDL3VG.js.map +1 -0
  140. package/dist/creatives-UK4VITNW.js +58 -0
  141. package/dist/credentials-A65GYH4D.js +287 -0
  142. package/dist/critique-46O4VVPM.js +1458 -0
  143. package/dist/critique-RPRMG2ZC.js +227 -0
  144. package/dist/crm-2WYW3D22.js +224 -0
  145. package/dist/crm-PQ24MNIU.js +318 -0
  146. package/dist/currency-Q3HCK447.js +88 -0
  147. package/dist/customers-YTQ7IQ5C.js +56 -0
  148. package/dist/delete-BBISJTFG.js +54 -0
  149. package/dist/delete-PQ4NUNLX.js +66 -0
  150. package/dist/delete-TBW6TJ6A.js +64 -0
  151. package/dist/demographics-EVP55FT3.js +138 -0
  152. package/dist/discard-LPJA4DEY.js +66 -0
  153. package/dist/discover-3G6CE7X3.js +172 -0
  154. package/dist/domain-5MM7V7JD.js +98 -0
  155. package/dist/draft-34D5MOKA.js +217 -0
  156. package/dist/draft-A6M562M4.js +307 -0
  157. package/dist/draft-A6M562M4.js.map +1 -0
  158. package/dist/draft-EGS7UFF3.js +281 -0
  159. package/dist/draft-J6GJXZRX.js +307 -0
  160. package/dist/draft-K3O7Q3A5.js +332 -0
  161. package/dist/engine/index.js +7 -7
  162. package/dist/experiment-7RJ5X2LL.js +1397 -0
  163. package/dist/experiments-HERTVBYK.js +233 -0
  164. package/dist/experiments-HERTVBYK.js.map +1 -0
  165. package/dist/facets-RUZKALF3.js +114 -0
  166. package/dist/feedback-S5LHJYZD.js +106 -0
  167. package/dist/feedback-record-GAM2R5GG.js +260 -0
  168. package/dist/fetch-FA6TR66Y.js +176 -0
  169. package/dist/find-2EPXK5RF.js +134 -0
  170. package/dist/fit-MOMO4AXL.js +62 -0
  171. package/dist/flows-DMMCSBWY.js +247 -0
  172. package/dist/fonts-G4JLXWX2.js +36 -0
  173. package/dist/forecast-OOP4K5DE.js +118 -0
  174. package/dist/forecast-V65WS5QG.js +168 -0
  175. package/dist/funnel-SEQPUM3X.js +394 -0
  176. package/dist/ga4-6EIQC2TG.js +55 -0
  177. package/dist/generate-IDDQD5FU.js +263 -0
  178. package/dist/get-DEOZMGOQ.js +56 -0
  179. package/dist/get-SEJINVOS.js +79 -0
  180. package/dist/google-7L3FWKPJ.js +3265 -0
  181. package/dist/google-O5OI6QFU.js +136 -0
  182. package/dist/google-ads-MIGWMCWY.js +195 -0
  183. package/dist/gsc-BM3T2GDL.js +30 -0
  184. package/dist/history-IBWXCDCB.js +133 -0
  185. package/dist/history-Z5577FPQ.js +67 -0
  186. package/dist/hubspot-6AZKUX72.js +779 -0
  187. package/dist/icon-B7DG53S5.js +137 -0
  188. package/dist/ideas-AX7S3NCG.js +40 -0
  189. package/dist/images-632SXTB5.js +92 -0
  190. package/dist/ingest-HS55RVKH.js +23 -0
  191. package/dist/ingest-T3OK3DRG.js +107 -0
  192. package/dist/insights-UDX66IMV.js +122 -0
  193. package/dist/inspect-D6ZIUBH3.js +189 -0
  194. package/dist/inspiration-TCCKM4R7.js +53 -0
  195. package/dist/intent-3WTKKTUX.js +95 -0
  196. package/dist/keyword-gap-7GESZXY2.js +130 -0
  197. package/dist/keyword-metrics-J43MV3RQ.js +197 -0
  198. package/dist/keywords-for-site-6YKCTFJZ.js +128 -0
  199. package/dist/landing-Y7DI2FUT.js +28 -0
  200. package/dist/languages-LSKNZI2A.js +40 -0
  201. package/dist/leads-R3WBKADF.js +112 -0
  202. package/dist/leads-R3WBKADF.js.map +1 -0
  203. package/dist/learn-M4UHA476.js +204 -0
  204. package/dist/line-item-writes-F2OPBMIE.js +208 -0
  205. package/dist/line-items-YJ3DLV2U.js +103 -0
  206. package/dist/link-RZKYW22K.js +64 -0
  207. package/dist/linkedin-JYZOPU7A.js +1299 -0
  208. package/dist/linkedin-JYZOPU7A.js.map +1 -0
  209. package/dist/list-NPJ34244.js +151 -0
  210. package/dist/list-WTVBOTA4.js +64 -0
  211. package/dist/list-XK5CHKYJ.js +303 -0
  212. package/dist/locations-DSDCNP5Z.js +40 -0
  213. package/dist/locations-SFZN4MYW.js +67 -0
  214. package/dist/log-K4FWHXIM.js +92 -0
  215. package/dist/logo-QTSBKP2J.js +18 -0
  216. package/dist/make-VQDUKVPB.js +1353 -0
  217. package/dist/map-Z3MEM6QX.js +433 -0
  218. package/dist/mcp-KJOSR534.js +714 -0
  219. package/dist/media-sources-44HTWIY3.js +32 -0
  220. package/dist/members-HGU22NL3.js +44 -0
  221. package/dist/metrics-OV2EKPJ6.js +152 -0
  222. package/dist/models-NGAUD6QJ.js +155 -0
  223. package/dist/normalize-IUPOHEZJ.js +141 -0
  224. package/dist/options-TL5TPGHK.js +122 -0
  225. package/dist/organization-3ORT4474.js +946 -0
  226. package/dist/organization-3ORT4474.js.map +1 -0
  227. package/dist/performance-PCZHQCZ5.js +24 -0
  228. package/dist/pixels-GHEAK62X.js +60 -0
  229. package/dist/promoted-tweet-writes-O4RTZFSI.js +180 -0
  230. package/dist/promoted-tweets-AWP6MGJI.js +119 -0
  231. package/dist/publish-PODZKJHW.js +341 -0
  232. package/dist/query-FUSR27T4.js +61 -0
  233. package/dist/reddit-UNUNWSNR.js +26 -0
  234. package/dist/refresh-34UO2LXY.js +94 -0
  235. package/dist/release-BD3EAD75.js +60 -0
  236. package/dist/relevant-pages-FNKYR2OG.js +99 -0
  237. package/dist/remove-YQYSQCWI.js +50 -0
  238. package/dist/reopen-MULNJOR5.js +63 -0
  239. package/dist/rerun-6YGYJPM7.js +90 -0
  240. package/dist/research-6WEL3USW.js +62 -0
  241. package/dist/research-OBECRSPL.js +262 -0
  242. package/dist/reset-5TTLZ43U.js +54 -0
  243. package/dist/reset-PRTK6YUD.js +54 -0
  244. package/dist/resolve-6RM63T55.js +121 -0
  245. package/dist/retry-XYTVP7BV.js +60 -0
  246. package/dist/retry-Z3C624JW.js +62 -0
  247. package/dist/revenue-VSH6KXCV.js +88 -0
  248. package/dist/revenue-VSH6KXCV.js.map +1 -0
  249. package/dist/rules-AUAJUM2T.js +96 -0
  250. package/dist/rules-add-7VFGPGZ7.js +462 -0
  251. package/dist/run-S3SVCTIB.js +65 -0
  252. package/dist/run-YA5RCRIX.js +66 -0
  253. package/dist/scaffold-ad-2KQULVJU.js +1511 -0
  254. package/dist/scaffold-static-ad-S46QADGV.js +1005 -0
  255. package/dist/scaffold-video-ZMHI2JDU.js +883 -0
  256. package/dist/schedule-FT6P3EKG.js +61 -0
  257. package/dist/scheduled-agents-L7K4QWMD.js +50 -0
  258. package/dist/schema-CH654RZB.js +132 -0
  259. package/dist/search-YKYB2P2M.js +174 -0
  260. package/dist/select-PM7JUDQY.js +101 -0
  261. package/dist/set-prompt-VATAT7H6.js +193 -0
  262. package/dist/setup-links-TM3NCVU7.js +141 -0
  263. package/dist/site-ATAXCWXS.js +177 -0
  264. package/dist/sources-N5RKYKFS.js +30 -0
  265. package/dist/sources-V544MB26.js +454 -0
  266. package/dist/stale-RNEYXKFX.js +71 -0
  267. package/dist/stats-CVF6AC7R.js +34 -0
  268. package/dist/status-DPTFOJVV.js +62 -0
  269. package/dist/stock-4LPQ6SM7.js +179 -0
  270. package/dist/studio-NZ3NA4L4.js +49 -0
  271. package/dist/sync-UBLCCOQZ.js +54 -0
  272. package/dist/sync-definition-RXRSI2LT.js +64 -0
  273. package/dist/tag-manager-FLXXLNKP.js +43 -0
  274. package/dist/tags-2D4AN2QB.js +224 -0
  275. package/dist/tags-5OM2VN3Q.js +26 -0
  276. package/dist/tags-CJWSUBCD.js +20 -0
  277. package/dist/tags-MHKZW2JN.js +20 -0
  278. package/dist/tags-Z6AH7FDT.js +20 -0
  279. package/dist/targeting-criteria-RSAN4KW5.js +113 -0
  280. package/dist/targets-EER2G4WH.js +103 -0
  281. package/dist/testimonials-4WJKAZ5S.js +32 -0
  282. package/dist/themes-XUALHDHR.js +94 -0
  283. package/dist/top-companies-BSOYGMIB.js +108 -0
  284. package/dist/translate-2XRHDWSC.js +604 -0
  285. package/dist/triggers-NU6BQ5NJ.js +142 -0
  286. package/dist/unlink-LQGPZND2.js +67 -0
  287. package/dist/unstage-GDKW56MH.js +85 -0
  288. package/dist/update-43QN723C.js +63 -0
  289. package/dist/update-6CAZKFTC.js +188 -0
  290. package/dist/update-EGOWYBEH.js +152 -0
  291. package/dist/update-QRGEMNBY.js +98 -0
  292. package/dist/upload-LIHRXWUY.js +126 -0
  293. package/dist/url-options-JXL4W7TB.js +130 -0
  294. package/dist/url-params-YXRZ4TUD.js +98 -0
  295. package/dist/validate-KO3MEJUZ.js +117 -0
  296. package/dist/videos-BPJ34YZL.js +39 -0
  297. package/dist/viewer-check-SA5AUQ26.js +80 -0
  298. package/dist/web-KS47ZHXX.js +140 -0
  299. package/dist/winning-ads-LE2ALICG.js +86 -0
  300. package/dist/write-commands-PPR7G4UN.js +1453 -0
  301. package/dist/write-commands-PPR7G4UN.js.map +1 -0
  302. package/dist/x-DZGRJQ7Y.js +47 -0
  303. package/package.json +1 -1
  304. package/dist/account-EF6OPUJT.js +0 -80
  305. package/dist/account-UHNR5KTE.js +0 -79
  306. package/dist/account-reads-CDZ3EL5D.js +0 -218
  307. package/dist/account-writes-VWU4FRGQ.js +0 -66
  308. package/dist/accounts-KMLXHADA.js +0 -77
  309. package/dist/accounts-QDGNTSTV.js +0 -611
  310. package/dist/actions-QL5UD2W4.js +0 -55
  311. package/dist/activecampaign-5OD45ROS.js +0 -935
  312. package/dist/ad-group-writes-ID6I3QUZ.js +0 -170
  313. package/dist/ad-groups-M7CV6NTH.js +0 -68
  314. package/dist/ad-writes-TSOAZYRE.js +0 -174
  315. package/dist/add-6K6LO7CM.js +0 -104
  316. package/dist/add-LYDJZDGO.js +0 -302
  317. package/dist/ads-CGLO73MH.js +0 -77
  318. package/dist/ads-DHPJFU52.js +0 -40
  319. package/dist/advertisers-23LU7GTV.js +0 -120
  320. package/dist/analytics-DVD4OBBR.js +0 -1976
  321. package/dist/analytics-HO2SLL4W.js +0 -433
  322. package/dist/animate-RGZWDZG2.js +0 -480
  323. package/dist/assign-CLKJKH2B.js +0 -77
  324. package/dist/audience-size-NNYYXODL.js +0 -73
  325. package/dist/audiences-WXIP5PJH.js +0 -268
  326. package/dist/audit-KB4P2XGS.js +0 -151
  327. package/dist/autocomplete-VZD2SMTE.js +0 -111
  328. package/dist/avatars-FKOO6VZ2.js +0 -38
  329. package/dist/bid-pricing-6LLXOLLI.js +0 -100
  330. package/dist/brand-NNWHBIAX.js +0 -22
  331. package/dist/brief-CPJQWT6W.js +0 -538
  332. package/dist/campaign-groups-YPYNXOWU.js +0 -95
  333. package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
  334. package/dist/campaign-writes-UJ4L2O6G.js +0 -165
  335. package/dist/campaign-writes-W5IL6ZGB.js +0 -170
  336. package/dist/campaigns-FLTPD66X.js +0 -76
  337. package/dist/campaigns-HLBZRH5A.js +0 -107
  338. package/dist/campaigns-N44ZDGB5.js +0 -109
  339. package/dist/campaigns-N44ZDGB5.js.map +0 -1
  340. package/dist/canvas-D64GLWUO.js +0 -46
  341. package/dist/capabilities-LWXCWMIY.js +0 -144
  342. package/dist/catalog-ZDLQAODO.js +0 -65
  343. package/dist/catalogs-26VXVUST.js +0 -128
  344. package/dist/changes-SX2N5KIO.js +0 -135
  345. package/dist/chatgpt-YI6YNACI.js +0 -47
  346. package/dist/chats-7WGC2CVW.js +0 -276
  347. package/dist/check-EH6BXWWL.js +0 -104
  348. package/dist/chunk-2B772ZEA.js +0 -169
  349. package/dist/chunk-2KRK667G.js +0 -51
  350. package/dist/chunk-2TVXJPGR.js +0 -103
  351. package/dist/chunk-3AMLOCXY.js +0 -392
  352. package/dist/chunk-3N5A44NQ.js +0 -122
  353. package/dist/chunk-3S274625.js +0 -131
  354. package/dist/chunk-3WAYZQNV.js +0 -61
  355. package/dist/chunk-5A257KJA.js +0 -160
  356. package/dist/chunk-6QGS3RQP.js +0 -363
  357. package/dist/chunk-7KHTJQGV.js +0 -1518
  358. package/dist/chunk-A3DKSAEL.js +0 -1606
  359. package/dist/chunk-A4DZ5L3T.js +0 -665
  360. package/dist/chunk-ACDLKTUP.js +0 -23992
  361. package/dist/chunk-ACDLKTUP.js.map +0 -1
  362. package/dist/chunk-AFD32O4A.js +0 -494
  363. package/dist/chunk-AW2GKIGS.js +0 -433
  364. package/dist/chunk-B7GF34FU.js +0 -8914
  365. package/dist/chunk-BDYLILMW.js +0 -150
  366. package/dist/chunk-DAO63OOP.js +0 -6352
  367. package/dist/chunk-DAO63OOP.js.map +0 -1
  368. package/dist/chunk-EJ4QCMM6.js +0 -285
  369. package/dist/chunk-EMQUW6JB.js +0 -942
  370. package/dist/chunk-EW3JEKIV.js +0 -139
  371. package/dist/chunk-F377KYIM.js +0 -274
  372. package/dist/chunk-FBFWMTOP.js +0 -19
  373. package/dist/chunk-FCM6VPFP.js +0 -98
  374. package/dist/chunk-FKYPAGKK.js +0 -1919
  375. package/dist/chunk-GXGYTFZA.js +0 -8939
  376. package/dist/chunk-I7J7YQXZ.js +0 -142
  377. package/dist/chunk-IBY44U2M.js +0 -1079
  378. package/dist/chunk-IFXGCI33.js +0 -297
  379. package/dist/chunk-IKLHXGMF.js +0 -91
  380. package/dist/chunk-IYTPWAN3.js +0 -604
  381. package/dist/chunk-J3CWAERS.js +0 -3868
  382. package/dist/chunk-JAC6JVCI.js +0 -26
  383. package/dist/chunk-JH2L5CQD.js +0 -206
  384. package/dist/chunk-JUVVCA7B.js +0 -97
  385. package/dist/chunk-MCJ5I5LR.js +0 -3187
  386. package/dist/chunk-MCJ5I5LR.js.map +0 -1
  387. package/dist/chunk-MK6XJUCQ.js +0 -197
  388. package/dist/chunk-MOFMOYUA.js +0 -148
  389. package/dist/chunk-MZPS46OR.js +0 -76
  390. package/dist/chunk-N3I6ZXR7.js +0 -66
  391. package/dist/chunk-NBO2NSAW.js +0 -592
  392. package/dist/chunk-NEU5QD2C.js +0 -249
  393. package/dist/chunk-NKIBXOHT.js +0 -344
  394. package/dist/chunk-NZKBW4YB.js +0 -846
  395. package/dist/chunk-OE3MIV4F.js +0 -547
  396. package/dist/chunk-OL7JS4NG.js +0 -5368
  397. package/dist/chunk-P2MFWJR3.js +0 -903
  398. package/dist/chunk-PHCIFBP3.js +0 -89
  399. package/dist/chunk-PTUXBO5O.js +0 -224
  400. package/dist/chunk-Q3LXLWZY.js +0 -275
  401. package/dist/chunk-Q5WBTVA7.js +0 -455
  402. package/dist/chunk-QMOYQJIN.js +0 -46
  403. package/dist/chunk-QRLTVJ6F.js +0 -167
  404. package/dist/chunk-RDEAVCMF.js +0 -399
  405. package/dist/chunk-RGMKXNQP.js +0 -23
  406. package/dist/chunk-RJZS4XDJ.js +0 -64
  407. package/dist/chunk-RZTKCCUL.js +0 -831
  408. package/dist/chunk-S4VLLGTW.js +0 -843
  409. package/dist/chunk-SVM3DGAQ.js +0 -228
  410. package/dist/chunk-TTKBNBQF.js +0 -156
  411. package/dist/chunk-VB3XUR6A.js +0 -207
  412. package/dist/chunk-WTJSMYY2.js +0 -4249
  413. package/dist/chunk-WTJSMYY2.js.map +0 -1
  414. package/dist/chunk-XCKINS7K.js +0 -57
  415. package/dist/chunk-Y46FE75E.js +0 -627
  416. package/dist/chunk-Y6GKV7CU.js +0 -346
  417. package/dist/chunk-Y6GKV7CU.js.map +0 -1
  418. package/dist/chunk-Z2GQREJY.js +0 -159
  419. package/dist/chunk-ZA7OQLDJ.js +0 -225
  420. package/dist/chunk-ZDAVSTEE.js +0 -172
  421. package/dist/chunk-ZXCSOVS5.js +0 -191
  422. package/dist/claim-SVDCQ2AI.js +0 -197
  423. package/dist/companies-BYMYQK6A.js +0 -195
  424. package/dist/complete-NEH3MWRI.js +0 -81
  425. package/dist/connect-5PGL7ZOM.js +0 -42
  426. package/dist/conversation-CSOKJXDW.js +0 -93
  427. package/dist/conversion-report-7JJ5L6WH.js +0 -125
  428. package/dist/conversion-upload-command-UO2QWG3J.js +0 -438
  429. package/dist/conversion-writes-GIGAZT4T.js +0 -120
  430. package/dist/conversions-4JOTTFEH.js +0 -135
  431. package/dist/conversions-4JOTTFEH.js.map +0 -1
  432. package/dist/conversions-CIJZLGII.js +0 -76
  433. package/dist/create-2XYMBULY.js +0 -207
  434. package/dist/create-56PTZABQ.js +0 -235
  435. package/dist/create-D6S6TGWY.js +0 -59
  436. package/dist/create-SMW4O5PC.js +0 -132
  437. package/dist/creatives-OO76DAFS.js +0 -58
  438. package/dist/creatives-VJUYWJL6.js +0 -182
  439. package/dist/creatives-VJUYWJL6.js.map +0 -1
  440. package/dist/credentials-2ONYUJW6.js +0 -287
  441. package/dist/critique-NDDFSGPE.js +0 -1458
  442. package/dist/critique-YXZVMLZ4.js +0 -227
  443. package/dist/crm-Q6CEP5XV.js +0 -224
  444. package/dist/crm-WRONZYDH.js +0 -318
  445. package/dist/currency-TAEJVMVK.js +0 -88
  446. package/dist/customers-2EFYSCU2.js +0 -56
  447. package/dist/delete-7WEVC3FS.js +0 -66
  448. package/dist/delete-RBWK255M.js +0 -54
  449. package/dist/delete-VN4WWMQF.js +0 -64
  450. package/dist/demographics-I5XZ435C.js +0 -138
  451. package/dist/discard-XJLIXTNM.js +0 -66
  452. package/dist/discover-5Z253HXF.js +0 -172
  453. package/dist/domain-M7AEGAYI.js +0 -98
  454. package/dist/draft-5DQI4W5F.js +0 -306
  455. package/dist/draft-5DQI4W5F.js.map +0 -1
  456. package/dist/draft-7DWRFCXW.js +0 -281
  457. package/dist/draft-7IIYHSY2.js +0 -332
  458. package/dist/draft-CN6GKVBF.js +0 -217
  459. package/dist/draft-MNEM4N5W.js +0 -307
  460. package/dist/experiment-IDDWRCJ7.js +0 -1397
  461. package/dist/facets-ZLZ6LIHN.js +0 -114
  462. package/dist/feedback-7LEX2P5Q.js +0 -106
  463. package/dist/feedback-record-P4JJ63KA.js +0 -260
  464. package/dist/fetch-MIVCEHXZ.js +0 -176
  465. package/dist/find-VHN34MWL.js +0 -134
  466. package/dist/fit-SS6HSZPU.js +0 -62
  467. package/dist/flows-UTIIHDNE.js +0 -247
  468. package/dist/fonts-YPNN7ZJP.js +0 -36
  469. package/dist/forecast-OBSHG2GJ.js +0 -118
  470. package/dist/forecast-W7Z5TVQX.js +0 -168
  471. package/dist/funnel-Z2VLXUEQ.js +0 -394
  472. package/dist/ga4-ZPAEF2G2.js +0 -55
  473. package/dist/generate-Y76WU7M7.js +0 -263
  474. package/dist/get-MDAO6I7T.js +0 -56
  475. package/dist/get-ZB553BSH.js +0 -79
  476. package/dist/google-C3X7O2UO.js +0 -136
  477. package/dist/google-WYXDMH2N.js +0 -3265
  478. package/dist/google-ads-FTWL772L.js +0 -195
  479. package/dist/gsc-SDDHGTZK.js +0 -30
  480. package/dist/history-DGHMJ2XF.js +0 -67
  481. package/dist/history-WKJYKDMG.js +0 -133
  482. package/dist/hubspot-EPHVEPOO.js +0 -779
  483. package/dist/icon-MYPDC6FM.js +0 -137
  484. package/dist/ideas-3PBH7VEX.js +0 -40
  485. package/dist/images-J35C3WG4.js +0 -92
  486. package/dist/ingest-5QOPUKFE.js +0 -107
  487. package/dist/ingest-OKUYP632.js +0 -23
  488. package/dist/insights-EU45J56U.js +0 -122
  489. package/dist/inspect-PMNCP6MV.js +0 -189
  490. package/dist/inspiration-QAL7NS7G.js +0 -53
  491. package/dist/intent-FUGWRUSW.js +0 -95
  492. package/dist/keyword-gap-DXTKZLV2.js +0 -130
  493. package/dist/keyword-metrics-R752SJIT.js +0 -197
  494. package/dist/keywords-for-site-7UWPJYQF.js +0 -128
  495. package/dist/landing-CBVIOGJ5.js +0 -28
  496. package/dist/languages-XRTTEJ5P.js +0 -40
  497. package/dist/leads-LIJS6Y5W.js +0 -90
  498. package/dist/leads-LIJS6Y5W.js.map +0 -1
  499. package/dist/learn-N6QV7GXA.js +0 -204
  500. package/dist/line-item-writes-3WPJXKIL.js +0 -208
  501. package/dist/line-items-ZOFKOGAA.js +0 -103
  502. package/dist/link-DDRQKOUL.js +0 -64
  503. package/dist/linkedin-UWZCF66X.js +0 -1057
  504. package/dist/linkedin-UWZCF66X.js.map +0 -1
  505. package/dist/list-5PLXVPLB.js +0 -151
  506. package/dist/list-VSJISE7U.js +0 -303
  507. package/dist/list-WTVOBQYX.js +0 -64
  508. package/dist/locations-PCZPKH47.js +0 -40
  509. package/dist/locations-TGJH3URF.js +0 -67
  510. package/dist/log-YKKPROLZ.js +0 -92
  511. package/dist/logo-WE2UELX6.js +0 -18
  512. package/dist/make-RNOWBLZQ.js +0 -1353
  513. package/dist/map-WTDPQLVO.js +0 -433
  514. package/dist/mcp-XJNSCPP3.js +0 -714
  515. package/dist/media-sources-JGBDDXZ5.js +0 -32
  516. package/dist/members-O3BTMRXX.js +0 -44
  517. package/dist/metrics-PYPCW7FJ.js +0 -152
  518. package/dist/models-IAGO5GIH.js +0 -155
  519. package/dist/normalize-R5AYLA2J.js +0 -141
  520. package/dist/options-AILRY7JY.js +0 -122
  521. package/dist/organization-E6HVEKAR.js +0 -942
  522. package/dist/organization-E6HVEKAR.js.map +0 -1
  523. package/dist/performance-7YU4HOGH.js +0 -24
  524. package/dist/pixels-R4MOLWAR.js +0 -60
  525. package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
  526. package/dist/promoted-tweets-76WKUFJQ.js +0 -119
  527. package/dist/publish-BKLHCKHB.js +0 -341
  528. package/dist/query-XDHZMGLX.js +0 -61
  529. package/dist/reddit-YK3YUZEI.js +0 -26
  530. package/dist/refresh-WIII7KXB.js +0 -94
  531. package/dist/release-ZHXYQI7G.js +0 -60
  532. package/dist/relevant-pages-CTG72PBR.js +0 -99
  533. package/dist/remove-NOX4BXWK.js +0 -50
  534. package/dist/reopen-NLWKK5HB.js +0 -63
  535. package/dist/rerun-DZWQNMZQ.js +0 -90
  536. package/dist/research-Q3P76RHN.js +0 -62
  537. package/dist/research-UDZBCDNX.js +0 -262
  538. package/dist/reset-5UHFX7QY.js +0 -54
  539. package/dist/reset-MTRJQUP7.js +0 -54
  540. package/dist/resolve-DA72VT7Q.js +0 -121
  541. package/dist/retry-LQUBX5TK.js +0 -62
  542. package/dist/retry-U6F4CS6O.js +0 -60
  543. package/dist/rules-VS5PZ7VO.js +0 -96
  544. package/dist/rules-add-LMVZYDXE.js +0 -462
  545. package/dist/run-6PRA2YSD.js +0 -65
  546. package/dist/run-R6COFNOR.js +0 -66
  547. package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
  548. package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
  549. package/dist/scaffold-video-3JZYFYFU.js +0 -883
  550. package/dist/schedule-ED2YDUPY.js +0 -61
  551. package/dist/scheduled-agents-5P67MVGX.js +0 -50
  552. package/dist/schema-4XVKERSA.js +0 -132
  553. package/dist/search-Y2UMIQ57.js +0 -174
  554. package/dist/select-OZ4E6VLF.js +0 -101
  555. package/dist/set-prompt-O4YAE4CE.js +0 -193
  556. package/dist/setup-links-2GJYCV2A.js +0 -141
  557. package/dist/site-47B6V2UX.js +0 -177
  558. package/dist/sources-DXPZAPQ7.js +0 -454
  559. package/dist/sources-NDXYTASG.js +0 -30
  560. package/dist/stale-VLVBO2L6.js +0 -71
  561. package/dist/stats-37OFAMPW.js +0 -34
  562. package/dist/status-4ODD46XY.js +0 -62
  563. package/dist/stock-6R5E7MJX.js +0 -179
  564. package/dist/studio-LEIGL3Q7.js +0 -49
  565. package/dist/sync-TKNVBUDM.js +0 -54
  566. package/dist/sync-definition-M5R3H3TP.js +0 -64
  567. package/dist/tag-manager-3Q55PBEW.js +0 -43
  568. package/dist/tags-4N5UUUN6.js +0 -26
  569. package/dist/tags-5NHIAD5A.js +0 -20
  570. package/dist/tags-UUKWSWCN.js +0 -20
  571. package/dist/tags-VK7B5DJF.js +0 -20
  572. package/dist/tags-XAHIB3WA.js +0 -224
  573. package/dist/targeting-criteria-AVARWV2G.js +0 -113
  574. package/dist/targets-6RYLQRID.js +0 -103
  575. package/dist/testimonials-6TF6BOFN.js +0 -32
  576. package/dist/themes-JZ3DPE7L.js +0 -94
  577. package/dist/top-companies-45EHRCJD.js +0 -108
  578. package/dist/translate-VHLBACCE.js +0 -604
  579. package/dist/triggers-ERQONJNO.js +0 -142
  580. package/dist/unlink-TPDO6JNF.js +0 -67
  581. package/dist/unstage-YKKQQ7LW.js +0 -85
  582. package/dist/update-43WU6X7R.js +0 -63
  583. package/dist/update-CAHLAXWO.js +0 -98
  584. package/dist/update-NGH6YADN.js +0 -152
  585. package/dist/update-SPJIHHLE.js +0 -188
  586. package/dist/upload-ACESIZIZ.js +0 -126
  587. package/dist/url-options-VNX5KYUQ.js +0 -130
  588. package/dist/url-params-MIXEDBF7.js +0 -98
  589. package/dist/validate-XJJA7ULE.js +0 -117
  590. package/dist/videos-LBXPG7WC.js +0 -39
  591. package/dist/viewer-check-7VJ3GUZX.js +0 -80
  592. package/dist/web-EWQJC2SD.js +0 -140
  593. package/dist/winning-ads-SAOJAKEQ.js +0 -86
  594. package/dist/write-commands-QPDE4GWW.js +0 -1024
  595. package/dist/write-commands-QPDE4GWW.js.map +0 -1
  596. package/dist/x-LXOJPCRF.js +0 -47
  597. /package/dist/{account-EF6OPUJT.js.map → account-CJGLH2OL.js.map} +0 -0
  598. /package/dist/{account-UHNR5KTE.js.map → account-UTFFCFNW.js.map} +0 -0
  599. /package/dist/{account-reads-CDZ3EL5D.js.map → account-reads-SOTNVUM6.js.map} +0 -0
  600. /package/dist/{account-writes-VWU4FRGQ.js.map → account-writes-OE5FKALN.js.map} +0 -0
  601. /package/dist/{accounts-QDGNTSTV.js.map → accounts-OY4DII7M.js.map} +0 -0
  602. /package/dist/{accounts-KMLXHADA.js.map → accounts-XUMRFVLY.js.map} +0 -0
  603. /package/dist/{actions-QL5UD2W4.js.map → actions-KYKLFVUI.js.map} +0 -0
  604. /package/dist/{activecampaign-5OD45ROS.js.map → activecampaign-P6RO7B2Q.js.map} +0 -0
  605. /package/dist/{ad-group-writes-ID6I3QUZ.js.map → ad-group-writes-343HA4ZG.js.map} +0 -0
  606. /package/dist/{ad-groups-M7CV6NTH.js.map → ad-groups-YMU6ATTW.js.map} +0 -0
  607. /package/dist/{ad-writes-TSOAZYRE.js.map → ad-writes-MINKG33L.js.map} +0 -0
  608. /package/dist/{add-6K6LO7CM.js.map → add-34QTAS7S.js.map} +0 -0
  609. /package/dist/{add-LYDJZDGO.js.map → add-3IZ3Z2PX.js.map} +0 -0
  610. /package/dist/{ads-DHPJFU52.js.map → ads-JRZVJFXS.js.map} +0 -0
  611. /package/dist/{ads-CGLO73MH.js.map → ads-QOXCMKZ2.js.map} +0 -0
  612. /package/dist/{advertisers-23LU7GTV.js.map → advertisers-G2UUCWA7.js.map} +0 -0
  613. /package/dist/{analytics-HO2SLL4W.js.map → analytics-CKF7HTWT.js.map} +0 -0
  614. /package/dist/{analytics-DVD4OBBR.js.map → analytics-FO4EDDQW.js.map} +0 -0
  615. /package/dist/{animate-RGZWDZG2.js.map → animate-K3MJ3GW4.js.map} +0 -0
  616. /package/dist/{assign-CLKJKH2B.js.map → assign-76E76PJY.js.map} +0 -0
  617. /package/dist/{audience-size-NNYYXODL.js.map → audience-size-IGDEX4XR.js.map} +0 -0
  618. /package/dist/{audiences-WXIP5PJH.js.map → audiences-4GRCVFZN.js.map} +0 -0
  619. /package/dist/{audit-KB4P2XGS.js.map → audit-LPSYEY4S.js.map} +0 -0
  620. /package/dist/{autocomplete-VZD2SMTE.js.map → autocomplete-G7MSIJQL.js.map} +0 -0
  621. /package/dist/{avatars-FKOO6VZ2.js.map → avatars-BF7VWGPH.js.map} +0 -0
  622. /package/dist/{bid-pricing-6LLXOLLI.js.map → bid-pricing-EAZHVAMJ.js.map} +0 -0
  623. /package/dist/{brand-NNWHBIAX.js.map → brand-WQI4NV3H.js.map} +0 -0
  624. /package/dist/{brief-CPJQWT6W.js.map → brief-DVFCPBR3.js.map} +0 -0
  625. /package/dist/{campaign-writes-UJ4L2O6G.js.map → campaign-writes-ECPSPFAB.js.map} +0 -0
  626. /package/dist/{campaign-writes-W5IL6ZGB.js.map → campaign-writes-EZEJNO3O.js.map} +0 -0
  627. /package/dist/{campaigns-FLTPD66X.js.map → campaigns-7S35PC44.js.map} +0 -0
  628. /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-R3EUC5Y2.js.map} +0 -0
  629. /package/dist/{canvas-D64GLWUO.js.map → canvas-Y3DKVETP.js.map} +0 -0
  630. /package/dist/{capabilities-LWXCWMIY.js.map → capabilities-OBP5PDRK.js.map} +0 -0
  631. /package/dist/{catalog-ZDLQAODO.js.map → catalog-SZS2JCLN.js.map} +0 -0
  632. /package/dist/{catalogs-26VXVUST.js.map → catalogs-LEABW6AS.js.map} +0 -0
  633. /package/dist/{changes-SX2N5KIO.js.map → changes-4EDY3RNX.js.map} +0 -0
  634. /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-JOAEGWCB.js.map} +0 -0
  635. /package/dist/{chats-7WGC2CVW.js.map → chats-KE7FNWKF.js.map} +0 -0
  636. /package/dist/{check-EH6BXWWL.js.map → check-XHK2HVD2.js.map} +0 -0
  637. /package/dist/{chunk-3N5A44NQ.js.map → chunk-22HH46DF.js.map} +0 -0
  638. /package/dist/{chunk-RGMKXNQP.js.map → chunk-2VWWLUDJ.js.map} +0 -0
  639. /package/dist/{chunk-MK6XJUCQ.js.map → chunk-2WBRRYSS.js.map} +0 -0
  640. /package/dist/{chunk-TTKBNBQF.js.map → chunk-2XH7GKCO.js.map} +0 -0
  641. /package/dist/{chunk-EMQUW6JB.js.map → chunk-3LMAPV6P.js.map} +0 -0
  642. /package/dist/{chunk-XCKINS7K.js.map → chunk-3LZM5MWM.js.map} +0 -0
  643. /package/dist/{chunk-3AMLOCXY.js.map → chunk-4ARHIC23.js.map} +0 -0
  644. /package/dist/{chunk-FKYPAGKK.js.map → chunk-5KEQXSCN.js.map} +0 -0
  645. /package/dist/{chunk-A4DZ5L3T.js.map → chunk-5PMEMWKS.js.map} +0 -0
  646. /package/dist/{chunk-ZA7OQLDJ.js.map → chunk-64BRPYJD.js.map} +0 -0
  647. /package/dist/{chunk-6QGS3RQP.js.map → chunk-6DQDZIBL.js.map} +0 -0
  648. /package/dist/{chunk-EJ4QCMM6.js.map → chunk-6H64SENZ.js.map} +0 -0
  649. /package/dist/{chunk-QRLTVJ6F.js.map → chunk-6KGLAMPV.js.map} +0 -0
  650. /package/dist/{chunk-JAC6JVCI.js.map → chunk-6OIKNJ7G.js.map} +0 -0
  651. /package/dist/{chunk-A3DKSAEL.js.map → chunk-6VIHWBOD.js.map} +0 -0
  652. /package/dist/{chunk-Q3LXLWZY.js.map → chunk-74BP3JIV.js.map} +0 -0
  653. /package/dist/{chunk-N3I6ZXR7.js.map → chunk-7AWSJ6Z5.js.map} +0 -0
  654. /package/dist/{chunk-P2MFWJR3.js.map → chunk-7IVY55AU.js.map} +0 -0
  655. /package/dist/{chunk-Q5WBTVA7.js.map → chunk-7POQSUPH.js.map} +0 -0
  656. /package/dist/{chunk-JH2L5CQD.js.map → chunk-7RCNWRKK.js.map} +0 -0
  657. /package/dist/{chunk-3S274625.js.map → chunk-ABEIEHOV.js.map} +0 -0
  658. /package/dist/{chunk-NKIBXOHT.js.map → chunk-AREUZGX7.js.map} +0 -0
  659. /package/dist/{chunk-F377KYIM.js.map → chunk-CNFFNE4L.js.map} +0 -0
  660. /package/dist/{chunk-AW2GKIGS.js.map → chunk-CORXHFKY.js.map} +0 -0
  661. /package/dist/{chunk-RDEAVCMF.js.map → chunk-D3SHD4KA.js.map} +0 -0
  662. /package/dist/{chunk-3WAYZQNV.js.map → chunk-DD3C6TSW.js.map} +0 -0
  663. /package/dist/{chunk-2KRK667G.js.map → chunk-DQU2GVU7.js.map} +0 -0
  664. /package/dist/{chunk-JUVVCA7B.js.map → chunk-ECHVJII5.js.map} +0 -0
  665. /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
  666. /package/dist/{chunk-2TVXJPGR.js.map → chunk-F4KWLFCC.js.map} +0 -0
  667. /package/dist/{chunk-AFD32O4A.js.map → chunk-FL2KIDPV.js.map} +0 -0
  668. /package/dist/{chunk-5A257KJA.js.map → chunk-FT7RYWOL.js.map} +0 -0
  669. /package/dist/{chunk-IFXGCI33.js.map → chunk-HPIKZPTU.js.map} +0 -0
  670. /package/dist/{chunk-OE3MIV4F.js.map → chunk-HUPHZ35H.js.map} +0 -0
  671. /package/dist/{chunk-GXGYTFZA.js.map → chunk-JQHLF74O.js.map} +0 -0
  672. /package/dist/{chunk-I7J7YQXZ.js.map → chunk-K2TOE6XL.js.map} +0 -0
  673. /package/dist/{chunk-OL7JS4NG.js.map → chunk-KI6TENTW.js.map} +0 -0
  674. /package/dist/{chunk-B7GF34FU.js.map → chunk-LMYCLUY2.js.map} +0 -0
  675. /package/dist/{chunk-ZXCSOVS5.js.map → chunk-LQR4CKYW.js.map} +0 -0
  676. /package/dist/{chunk-PHCIFBP3.js.map → chunk-LRFNUCHV.js.map} +0 -0
  677. /package/dist/{chunk-BDYLILMW.js.map → chunk-M2D7ZWEU.js.map} +0 -0
  678. /package/dist/{chunk-NBO2NSAW.js.map → chunk-ML7GGHTU.js.map} +0 -0
  679. /package/dist/{chunk-IYTPWAN3.js.map → chunk-MYSLMKTG.js.map} +0 -0
  680. /package/dist/{chunk-IBY44U2M.js.map → chunk-NDKLPDZ3.js.map} +0 -0
  681. /package/dist/{chunk-RZTKCCUL.js.map → chunk-OUQSDUVI.js.map} +0 -0
  682. /package/dist/{chunk-IKLHXGMF.js.map → chunk-PFPUPR3H.js.map} +0 -0
  683. /package/dist/{chunk-VB3XUR6A.js.map → chunk-PGD7USOH.js.map} +0 -0
  684. /package/dist/{chunk-FCM6VPFP.js.map → chunk-QKT7W5JP.js.map} +0 -0
  685. /package/dist/{chunk-2B772ZEA.js.map → chunk-QU4XX5Z7.js.map} +0 -0
  686. /package/dist/{chunk-MOFMOYUA.js.map → chunk-R3OXH3ML.js.map} +0 -0
  687. /package/dist/{chunk-ZDAVSTEE.js.map → chunk-RNQMXS7G.js.map} +0 -0
  688. /package/dist/{chunk-FBFWMTOP.js.map → chunk-SEMNRIOR.js.map} +0 -0
  689. /package/dist/{chunk-NZKBW4YB.js.map → chunk-SHBFBQYT.js.map} +0 -0
  690. /package/dist/{chunk-MZPS46OR.js.map → chunk-SIKCVWM3.js.map} +0 -0
  691. /package/dist/{chunk-J3CWAERS.js.map → chunk-UJPURLUZ.js.map} +0 -0
  692. /package/dist/{chunk-RJZS4XDJ.js.map → chunk-UM7NJIOU.js.map} +0 -0
  693. /package/dist/{chunk-SVM3DGAQ.js.map → chunk-V57TZQPI.js.map} +0 -0
  694. /package/dist/{chunk-PTUXBO5O.js.map → chunk-WXKSUL4U.js.map} +0 -0
  695. /package/dist/{chunk-7KHTJQGV.js.map → chunk-YJRZVGES.js.map} +0 -0
  696. /package/dist/{chunk-NEU5QD2C.js.map → chunk-YQICNXIA.js.map} +0 -0
  697. /package/dist/{chunk-Y46FE75E.js.map → chunk-YTF2MI3E.js.map} +0 -0
  698. /package/dist/{chunk-S4VLLGTW.js.map → chunk-YYPWVQZQ.js.map} +0 -0
  699. /package/dist/{chunk-QMOYQJIN.js.map → chunk-Z7BQGWKG.js.map} +0 -0
  700. /package/dist/{chunk-Z2GQREJY.js.map → chunk-ZXSXRSFX.js.map} +0 -0
  701. /package/dist/{claim-SVDCQ2AI.js.map → claim-W2ZV4SH3.js.map} +0 -0
  702. /package/dist/{companies-BYMYQK6A.js.map → companies-ITK3W3H6.js.map} +0 -0
  703. /package/dist/{complete-NEH3MWRI.js.map → complete-RYEVEF3S.js.map} +0 -0
  704. /package/dist/{connect-5PGL7ZOM.js.map → connect-FFFNSJ2O.js.map} +0 -0
  705. /package/dist/{conversation-CSOKJXDW.js.map → conversation-KKJNQRFB.js.map} +0 -0
  706. /package/dist/{conversion-report-7JJ5L6WH.js.map → conversion-report-PLQ4MVJR.js.map} +0 -0
  707. /package/dist/{conversion-upload-command-UO2QWG3J.js.map → conversion-upload-command-Z7F6NQH4.js.map} +0 -0
  708. /package/dist/{conversion-writes-GIGAZT4T.js.map → conversion-writes-VNOXZ4NR.js.map} +0 -0
  709. /package/dist/{conversions-CIJZLGII.js.map → conversions-KPIFDO2R.js.map} +0 -0
  710. /package/dist/{create-D6S6TGWY.js.map → create-3R6Q2E2M.js.map} +0 -0
  711. /package/dist/{create-56PTZABQ.js.map → create-A3R7YRT3.js.map} +0 -0
  712. /package/dist/{create-2XYMBULY.js.map → create-TYWQP57A.js.map} +0 -0
  713. /package/dist/{create-SMW4O5PC.js.map → create-UUEWQUPT.js.map} +0 -0
  714. /package/dist/{creatives-OO76DAFS.js.map → creatives-UK4VITNW.js.map} +0 -0
  715. /package/dist/{credentials-2ONYUJW6.js.map → credentials-A65GYH4D.js.map} +0 -0
  716. /package/dist/{critique-NDDFSGPE.js.map → critique-46O4VVPM.js.map} +0 -0
  717. /package/dist/{critique-YXZVMLZ4.js.map → critique-RPRMG2ZC.js.map} +0 -0
  718. /package/dist/{crm-Q6CEP5XV.js.map → crm-2WYW3D22.js.map} +0 -0
  719. /package/dist/{crm-WRONZYDH.js.map → crm-PQ24MNIU.js.map} +0 -0
  720. /package/dist/{currency-TAEJVMVK.js.map → currency-Q3HCK447.js.map} +0 -0
  721. /package/dist/{customers-2EFYSCU2.js.map → customers-YTQ7IQ5C.js.map} +0 -0
  722. /package/dist/{delete-RBWK255M.js.map → delete-BBISJTFG.js.map} +0 -0
  723. /package/dist/{delete-7WEVC3FS.js.map → delete-PQ4NUNLX.js.map} +0 -0
  724. /package/dist/{delete-VN4WWMQF.js.map → delete-TBW6TJ6A.js.map} +0 -0
  725. /package/dist/{demographics-I5XZ435C.js.map → demographics-EVP55FT3.js.map} +0 -0
  726. /package/dist/{discard-XJLIXTNM.js.map → discard-LPJA4DEY.js.map} +0 -0
  727. /package/dist/{discover-5Z253HXF.js.map → discover-3G6CE7X3.js.map} +0 -0
  728. /package/dist/{domain-M7AEGAYI.js.map → domain-5MM7V7JD.js.map} +0 -0
  729. /package/dist/{draft-CN6GKVBF.js.map → draft-34D5MOKA.js.map} +0 -0
  730. /package/dist/{draft-7DWRFCXW.js.map → draft-EGS7UFF3.js.map} +0 -0
  731. /package/dist/{draft-MNEM4N5W.js.map → draft-J6GJXZRX.js.map} +0 -0
  732. /package/dist/{draft-7IIYHSY2.js.map → draft-K3O7Q3A5.js.map} +0 -0
  733. /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
  734. /package/dist/{facets-ZLZ6LIHN.js.map → facets-RUZKALF3.js.map} +0 -0
  735. /package/dist/{feedback-7LEX2P5Q.js.map → feedback-S5LHJYZD.js.map} +0 -0
  736. /package/dist/{feedback-record-P4JJ63KA.js.map → feedback-record-GAM2R5GG.js.map} +0 -0
  737. /package/dist/{fetch-MIVCEHXZ.js.map → fetch-FA6TR66Y.js.map} +0 -0
  738. /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
  739. /package/dist/{fit-SS6HSZPU.js.map → fit-MOMO4AXL.js.map} +0 -0
  740. /package/dist/{flows-UTIIHDNE.js.map → flows-DMMCSBWY.js.map} +0 -0
  741. /package/dist/{fonts-YPNN7ZJP.js.map → fonts-G4JLXWX2.js.map} +0 -0
  742. /package/dist/{forecast-OBSHG2GJ.js.map → forecast-OOP4K5DE.js.map} +0 -0
  743. /package/dist/{forecast-W7Z5TVQX.js.map → forecast-V65WS5QG.js.map} +0 -0
  744. /package/dist/{funnel-Z2VLXUEQ.js.map → funnel-SEQPUM3X.js.map} +0 -0
  745. /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
  746. /package/dist/{generate-Y76WU7M7.js.map → generate-IDDQD5FU.js.map} +0 -0
  747. /package/dist/{get-MDAO6I7T.js.map → get-DEOZMGOQ.js.map} +0 -0
  748. /package/dist/{get-ZB553BSH.js.map → get-SEJINVOS.js.map} +0 -0
  749. /package/dist/{google-WYXDMH2N.js.map → google-7L3FWKPJ.js.map} +0 -0
  750. /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
  751. /package/dist/{google-ads-FTWL772L.js.map → google-ads-MIGWMCWY.js.map} +0 -0
  752. /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
  753. /package/dist/{history-WKJYKDMG.js.map → history-IBWXCDCB.js.map} +0 -0
  754. /package/dist/{history-DGHMJ2XF.js.map → history-Z5577FPQ.js.map} +0 -0
  755. /package/dist/{hubspot-EPHVEPOO.js.map → hubspot-6AZKUX72.js.map} +0 -0
  756. /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
  757. /package/dist/{ideas-3PBH7VEX.js.map → ideas-AX7S3NCG.js.map} +0 -0
  758. /package/dist/{images-J35C3WG4.js.map → images-632SXTB5.js.map} +0 -0
  759. /package/dist/{ingest-OKUYP632.js.map → ingest-HS55RVKH.js.map} +0 -0
  760. /package/dist/{ingest-5QOPUKFE.js.map → ingest-T3OK3DRG.js.map} +0 -0
  761. /package/dist/{insights-EU45J56U.js.map → insights-UDX66IMV.js.map} +0 -0
  762. /package/dist/{inspect-PMNCP6MV.js.map → inspect-D6ZIUBH3.js.map} +0 -0
  763. /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
  764. /package/dist/{intent-FUGWRUSW.js.map → intent-3WTKKTUX.js.map} +0 -0
  765. /package/dist/{keyword-gap-DXTKZLV2.js.map → keyword-gap-7GESZXY2.js.map} +0 -0
  766. /package/dist/{keyword-metrics-R752SJIT.js.map → keyword-metrics-J43MV3RQ.js.map} +0 -0
  767. /package/dist/{keywords-for-site-7UWPJYQF.js.map → keywords-for-site-6YKCTFJZ.js.map} +0 -0
  768. /package/dist/{landing-CBVIOGJ5.js.map → landing-Y7DI2FUT.js.map} +0 -0
  769. /package/dist/{languages-XRTTEJ5P.js.map → languages-LSKNZI2A.js.map} +0 -0
  770. /package/dist/{learn-N6QV7GXA.js.map → learn-M4UHA476.js.map} +0 -0
  771. /package/dist/{line-item-writes-3WPJXKIL.js.map → line-item-writes-F2OPBMIE.js.map} +0 -0
  772. /package/dist/{line-items-ZOFKOGAA.js.map → line-items-YJ3DLV2U.js.map} +0 -0
  773. /package/dist/{link-DDRQKOUL.js.map → link-RZKYW22K.js.map} +0 -0
  774. /package/dist/{list-5PLXVPLB.js.map → list-NPJ34244.js.map} +0 -0
  775. /package/dist/{list-WTVOBQYX.js.map → list-WTVBOTA4.js.map} +0 -0
  776. /package/dist/{list-VSJISE7U.js.map → list-XK5CHKYJ.js.map} +0 -0
  777. /package/dist/{locations-PCZPKH47.js.map → locations-DSDCNP5Z.js.map} +0 -0
  778. /package/dist/{locations-TGJH3URF.js.map → locations-SFZN4MYW.js.map} +0 -0
  779. /package/dist/{log-YKKPROLZ.js.map → log-K4FWHXIM.js.map} +0 -0
  780. /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
  781. /package/dist/{make-RNOWBLZQ.js.map → make-VQDUKVPB.js.map} +0 -0
  782. /package/dist/{map-WTDPQLVO.js.map → map-Z3MEM6QX.js.map} +0 -0
  783. /package/dist/{mcp-XJNSCPP3.js.map → mcp-KJOSR534.js.map} +0 -0
  784. /package/dist/{media-sources-JGBDDXZ5.js.map → media-sources-44HTWIY3.js.map} +0 -0
  785. /package/dist/{members-O3BTMRXX.js.map → members-HGU22NL3.js.map} +0 -0
  786. /package/dist/{metrics-PYPCW7FJ.js.map → metrics-OV2EKPJ6.js.map} +0 -0
  787. /package/dist/{models-IAGO5GIH.js.map → models-NGAUD6QJ.js.map} +0 -0
  788. /package/dist/{normalize-R5AYLA2J.js.map → normalize-IUPOHEZJ.js.map} +0 -0
  789. /package/dist/{options-AILRY7JY.js.map → options-TL5TPGHK.js.map} +0 -0
  790. /package/dist/{performance-7YU4HOGH.js.map → performance-PCZHQCZ5.js.map} +0 -0
  791. /package/dist/{pixels-R4MOLWAR.js.map → pixels-GHEAK62X.js.map} +0 -0
  792. /package/dist/{promoted-tweet-writes-TNELWPVG.js.map → promoted-tweet-writes-O4RTZFSI.js.map} +0 -0
  793. /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-AWP6MGJI.js.map} +0 -0
  794. /package/dist/{publish-BKLHCKHB.js.map → publish-PODZKJHW.js.map} +0 -0
  795. /package/dist/{query-XDHZMGLX.js.map → query-FUSR27T4.js.map} +0 -0
  796. /package/dist/{reddit-YK3YUZEI.js.map → reddit-UNUNWSNR.js.map} +0 -0
  797. /package/dist/{refresh-WIII7KXB.js.map → refresh-34UO2LXY.js.map} +0 -0
  798. /package/dist/{release-ZHXYQI7G.js.map → release-BD3EAD75.js.map} +0 -0
  799. /package/dist/{relevant-pages-CTG72PBR.js.map → relevant-pages-FNKYR2OG.js.map} +0 -0
  800. /package/dist/{remove-NOX4BXWK.js.map → remove-YQYSQCWI.js.map} +0 -0
  801. /package/dist/{reopen-NLWKK5HB.js.map → reopen-MULNJOR5.js.map} +0 -0
  802. /package/dist/{rerun-DZWQNMZQ.js.map → rerun-6YGYJPM7.js.map} +0 -0
  803. /package/dist/{research-Q3P76RHN.js.map → research-6WEL3USW.js.map} +0 -0
  804. /package/dist/{research-UDZBCDNX.js.map → research-OBECRSPL.js.map} +0 -0
  805. /package/dist/{reset-5UHFX7QY.js.map → reset-5TTLZ43U.js.map} +0 -0
  806. /package/dist/{reset-MTRJQUP7.js.map → reset-PRTK6YUD.js.map} +0 -0
  807. /package/dist/{resolve-DA72VT7Q.js.map → resolve-6RM63T55.js.map} +0 -0
  808. /package/dist/{retry-U6F4CS6O.js.map → retry-XYTVP7BV.js.map} +0 -0
  809. /package/dist/{retry-LQUBX5TK.js.map → retry-Z3C624JW.js.map} +0 -0
  810. /package/dist/{rules-VS5PZ7VO.js.map → rules-AUAJUM2T.js.map} +0 -0
  811. /package/dist/{rules-add-LMVZYDXE.js.map → rules-add-7VFGPGZ7.js.map} +0 -0
  812. /package/dist/{run-6PRA2YSD.js.map → run-S3SVCTIB.js.map} +0 -0
  813. /package/dist/{run-R6COFNOR.js.map → run-YA5RCRIX.js.map} +0 -0
  814. /package/dist/{scaffold-ad-3OVJ7VZQ.js.map → scaffold-ad-2KQULVJU.js.map} +0 -0
  815. /package/dist/{scaffold-static-ad-DDRA3Q5I.js.map → scaffold-static-ad-S46QADGV.js.map} +0 -0
  816. /package/dist/{scaffold-video-3JZYFYFU.js.map → scaffold-video-ZMHI2JDU.js.map} +0 -0
  817. /package/dist/{schedule-ED2YDUPY.js.map → schedule-FT6P3EKG.js.map} +0 -0
  818. /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-L7K4QWMD.js.map} +0 -0
  819. /package/dist/{schema-4XVKERSA.js.map → schema-CH654RZB.js.map} +0 -0
  820. /package/dist/{search-Y2UMIQ57.js.map → search-YKYB2P2M.js.map} +0 -0
  821. /package/dist/{select-OZ4E6VLF.js.map → select-PM7JUDQY.js.map} +0 -0
  822. /package/dist/{set-prompt-O4YAE4CE.js.map → set-prompt-VATAT7H6.js.map} +0 -0
  823. /package/dist/{setup-links-2GJYCV2A.js.map → setup-links-TM3NCVU7.js.map} +0 -0
  824. /package/dist/{site-47B6V2UX.js.map → site-ATAXCWXS.js.map} +0 -0
  825. /package/dist/{sources-NDXYTASG.js.map → sources-N5RKYKFS.js.map} +0 -0
  826. /package/dist/{sources-DXPZAPQ7.js.map → sources-V544MB26.js.map} +0 -0
  827. /package/dist/{stale-VLVBO2L6.js.map → stale-RNEYXKFX.js.map} +0 -0
  828. /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
  829. /package/dist/{status-4ODD46XY.js.map → status-DPTFOJVV.js.map} +0 -0
  830. /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
  831. /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ3NA4L4.js.map} +0 -0
  832. /package/dist/{sync-TKNVBUDM.js.map → sync-UBLCCOQZ.js.map} +0 -0
  833. /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-RXRSI2LT.js.map} +0 -0
  834. /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
  835. /package/dist/{tags-XAHIB3WA.js.map → tags-2D4AN2QB.js.map} +0 -0
  836. /package/dist/{tags-4N5UUUN6.js.map → tags-5OM2VN3Q.js.map} +0 -0
  837. /package/dist/{tags-VK7B5DJF.js.map → tags-CJWSUBCD.js.map} +0 -0
  838. /package/dist/{tags-5NHIAD5A.js.map → tags-MHKZW2JN.js.map} +0 -0
  839. /package/dist/{tags-UUKWSWCN.js.map → tags-Z6AH7FDT.js.map} +0 -0
  840. /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-RSAN4KW5.js.map} +0 -0
  841. /package/dist/{targets-6RYLQRID.js.map → targets-EER2G4WH.js.map} +0 -0
  842. /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-4WJKAZ5S.js.map} +0 -0
  843. /package/dist/{themes-JZ3DPE7L.js.map → themes-XUALHDHR.js.map} +0 -0
  844. /package/dist/{top-companies-45EHRCJD.js.map → top-companies-BSOYGMIB.js.map} +0 -0
  845. /package/dist/{translate-VHLBACCE.js.map → translate-2XRHDWSC.js.map} +0 -0
  846. /package/dist/{triggers-ERQONJNO.js.map → triggers-NU6BQ5NJ.js.map} +0 -0
  847. /package/dist/{unlink-TPDO6JNF.js.map → unlink-LQGPZND2.js.map} +0 -0
  848. /package/dist/{unstage-YKKQQ7LW.js.map → unstage-GDKW56MH.js.map} +0 -0
  849. /package/dist/{update-43WU6X7R.js.map → update-43QN723C.js.map} +0 -0
  850. /package/dist/{update-SPJIHHLE.js.map → update-6CAZKFTC.js.map} +0 -0
  851. /package/dist/{update-NGH6YADN.js.map → update-EGOWYBEH.js.map} +0 -0
  852. /package/dist/{update-CAHLAXWO.js.map → update-QRGEMNBY.js.map} +0 -0
  853. /package/dist/{upload-ACESIZIZ.js.map → upload-LIHRXWUY.js.map} +0 -0
  854. /package/dist/{url-options-VNX5KYUQ.js.map → url-options-JXL4W7TB.js.map} +0 -0
  855. /package/dist/{url-params-MIXEDBF7.js.map → url-params-YXRZ4TUD.js.map} +0 -0
  856. /package/dist/{validate-XJJA7ULE.js.map → validate-KO3MEJUZ.js.map} +0 -0
  857. /package/dist/{videos-LBXPG7WC.js.map → videos-BPJ34YZL.js.map} +0 -0
  858. /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-SA5AUQ26.js.map} +0 -0
  859. /package/dist/{web-EWQJC2SD.js.map → web-KS47ZHXX.js.map} +0 -0
  860. /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-LE2ALICG.js.map} +0 -0
  861. /package/dist/{x-LXOJPCRF.js.map → x-DZGRJQ7Y.js.map} +0 -0
@@ -1,346 +0,0 @@
1
- import {
2
- handleLinkedinError,
3
- resolveAccountIdArg
4
- } from "./chunk-VB3XUR6A.js";
5
- import {
6
- adCopyHints,
7
- booleanWordPositionalError,
8
- capabilityFix
9
- } from "./chunk-WHWSLDNR.js";
10
- import {
11
- withHints
12
- } from "./chunk-D5FY4FAK.js";
13
- import {
14
- writeJsonEnvelope
15
- } from "./chunk-2VIZ4UUZ.js";
16
- import {
17
- LINKEDIN_DRAFT_BATCH_MAX,
18
- linkedinDraftOpInputSchema
19
- } from "./chunk-DAO63OOP.js";
20
- import {
21
- apiPost
22
- } from "./chunk-6YLNY6CK.js";
23
- import {
24
- requireChatId
25
- } from "./chunk-57KKVDDR.js";
26
-
27
- // src/commands/ads/linkedin/write-shared.ts
28
- import { createHash } from "crypto";
29
- import { readFileSync } from "fs";
30
- var TOTAL_BUDGET_HELP = "Lifetime budget \u2014 on something already running it must exceed spend to date, or LinkedIn rejects it";
31
- function bareAccountId(args) {
32
- const raw = resolveAccountIdArg(args);
33
- return raw.replace(/^urn:li:sponsoredAccount:/, "").replace(/^sponsoredAccount:/, "");
34
- }
35
- function failWriteValidation(message) {
36
- writeJsonEnvelope({ ok: false, error: { code: "VALIDATION_ERROR", message } });
37
- process.exit(1);
38
- }
39
- function loadJsonFileArg(path) {
40
- if (typeof path !== "string" || path.length === 0) {
41
- return {};
42
- }
43
- try {
44
- const parsed = JSON.parse(readFileSync(path, "utf8"));
45
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
46
- failWriteValidation(`${path} must contain a JSON object`);
47
- }
48
- return parsed;
49
- } catch (err) {
50
- if (err instanceof SyntaxError) {
51
- failWriteValidation(`${path} is not valid JSON: ${err.message}`);
52
- }
53
- throw err;
54
- }
55
- }
56
- function mergePayload(file, flags) {
57
- const merged = { ...file };
58
- for (const [key, value] of Object.entries(flags)) {
59
- if (value !== void 0) {
60
- merged[key] = value;
61
- }
62
- }
63
- return merged;
64
- }
65
- function loadPatchArg(args) {
66
- const file = typeof args.file === "string" && args.file.length > 0 ? args.file : void 0;
67
- const inline = typeof args.patch === "string" && args.patch.length > 0 ? args.patch : void 0;
68
- if (Boolean(file) === Boolean(inline)) {
69
- failWriteValidation("pass exactly one of --file <patch.json> or --patch '<json>'");
70
- }
71
- if (file) {
72
- return loadJsonFileArg(file);
73
- }
74
- try {
75
- const parsed = JSON.parse(inline);
76
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
77
- failWriteValidation("--patch must be a JSON object");
78
- }
79
- return parsed;
80
- } catch (err) {
81
- if (err instanceof SyntaxError) {
82
- failWriteValidation(`--patch is not valid JSON: ${err.message}`);
83
- }
84
- throw err;
85
- }
86
- }
87
- function parseMoneyFlag(amount, currency, flag) {
88
- if (amount === void 0 || amount === null || amount === "") {
89
- return void 0;
90
- }
91
- if (currency === void 0 || currency === null || currency === "") {
92
- return { amount: String(amount) };
93
- }
94
- if (typeof currency !== "string" || currency.length !== 3) {
95
- failWriteValidation(`${flag} got an invalid --currency (expected a 3-letter code like EUR)`);
96
- }
97
- return { amount: String(amount), currencyCode: currency.toUpperCase() };
98
- }
99
- function parseDateFlag(value, flag) {
100
- if (value === void 0 || value === null || value === "") {
101
- return void 0;
102
- }
103
- const raw = String(value);
104
- if (/^\d{10,}$/.test(raw)) {
105
- return Number(raw);
106
- }
107
- const parsed = Date.parse(raw);
108
- if (Number.isNaN(parsed)) {
109
- failWriteValidation(`${flag} must be an ISO date (2026-07-10) or epoch milliseconds`);
110
- }
111
- return parsed;
112
- }
113
- function parseOnOffFlag(value, flag) {
114
- if (value === void 0 || value === null || value === "") {
115
- return void 0;
116
- }
117
- const raw = String(value).toLowerCase();
118
- if (raw === "on" || raw === "true") {
119
- return true;
120
- }
121
- if (raw === "off" || raw === "false") {
122
- return false;
123
- }
124
- failWriteValidation(`${flag} must be on|off`);
125
- }
126
- function parseLocaleFlag(value) {
127
- if (value === void 0 || value === null || value === "") {
128
- return void 0;
129
- }
130
- const match = /^([a-z]{2})[_-]([A-Za-z]{2})$/.exec(String(value));
131
- if (!match) {
132
- failWriteValidation("--locale must look like en_US (language_COUNTRY)");
133
- }
134
- return { language: match[1], country: match[2].toUpperCase() };
135
- }
136
- function loadTargetingFileArg(path) {
137
- if (typeof path !== "string" || path.length === 0) {
138
- return void 0;
139
- }
140
- const parsed = loadJsonFileArg(path);
141
- const criteria = parsed.targetingCriteria ?? parsed;
142
- if (!criteria.include) {
143
- failWriteValidation(
144
- `${path} must contain targeting criteria with an "include" block (see baker schema ads.linkedin.campaigns.create)`
145
- );
146
- }
147
- return criteria;
148
- }
149
- function sha256Lower(value) {
150
- return createHash("sha256").update(value.trim().toLowerCase()).digest("hex");
151
- }
152
- function parseCsvLine(line) {
153
- const cells = [];
154
- let current = "";
155
- let inQuotes = false;
156
- for (let i = 0; i < line.length; i++) {
157
- const char = line[i];
158
- if (inQuotes) {
159
- if (char === '"' && line[i + 1] === '"') {
160
- current += '"';
161
- i++;
162
- } else if (char === '"') {
163
- inQuotes = false;
164
- } else {
165
- current += char;
166
- }
167
- } else if (char === '"') {
168
- inQuotes = true;
169
- } else if (char === ",") {
170
- cells.push(current);
171
- current = "";
172
- } else {
173
- current += char;
174
- }
175
- }
176
- cells.push(current);
177
- return cells.map((cell) => cell.trim());
178
- }
179
- function parseListFileArg(path, maxRows) {
180
- if (typeof path !== "string" || path.length === 0) {
181
- return void 0;
182
- }
183
- const raw = readFileSync(path, "utf8");
184
- const lines = raw.split(/\r?\n/).filter((line) => line.trim().length > 0);
185
- if (lines.length < 2) {
186
- failWriteValidation(`${path} needs a header row and at least one data row`);
187
- }
188
- const columns = parseCsvLine(lines[0]).map((column) => column.trim());
189
- const rows = [];
190
- for (const line of lines.slice(1)) {
191
- const cells = parseCsvLine(line);
192
- const row = {};
193
- columns.forEach((column, index) => {
194
- const value = cells[index] ?? "";
195
- if (!value) {
196
- return;
197
- }
198
- row[column] = column.toLowerCase() === "email" ? sha256Lower(value) : value;
199
- });
200
- if (Object.keys(row).length > 0) {
201
- rows.push(row);
202
- }
203
- }
204
- if (rows.length > maxRows) {
205
- failWriteValidation(`${path} has ${rows.length} rows \u2014 the inline limit is ${maxRows}. Split the list.`);
206
- }
207
- return { columns, rows };
208
- }
209
- function failPreflight(fields) {
210
- writeJsonEnvelope({
211
- ok: false,
212
- error: {
213
- code: "VALIDATION_ERROR",
214
- message: fields.map((field) => field.path ? `${field.path}: ${field.message}` : field.message).join("; "),
215
- fields,
216
- fix: capabilityFix("linkedin-ads")
217
- }
218
- });
219
- process.exit(1);
220
- }
221
- var BATCH_NUDGE = "This command takes several ids at once \u2014 pass them comma-separated or with --ids-file instead of one call per id.";
222
- function batchNudge(data) {
223
- return data.sameKindStaged === void 0 ? [] : [BATCH_NUDGE];
224
- }
225
- async function stageOp(raw, hints) {
226
- const preflight = linkedinDraftOpInputSchema.safeParse(raw);
227
- if (!preflight.success) {
228
- failPreflight(preflight.error.issues.map((issue) => ({ path: issue.path.join("."), message: issue.message })));
229
- }
230
- try {
231
- const chatId = requireChatId();
232
- const response = await apiPost("/api/ads/linkedin/draft/stage", {
233
- chatId,
234
- op: preflight.data
235
- });
236
- const allHints = [...batchNudge(response.data), ...hints ?? [], ...await adCopyHints(preflight.data)];
237
- writeJsonEnvelope(withHints(response, allHints));
238
- } catch (err) {
239
- handleLinkedinError(err);
240
- }
241
- }
242
- async function stageLinkedinOps(rawOps, hints) {
243
- if (rawOps.length === 1 && rawOps[0]) {
244
- await stageOp(rawOps[0], hints);
245
- return;
246
- }
247
- const ops = [];
248
- for (const [index, raw] of rawOps.entries()) {
249
- const preflight = linkedinDraftOpInputSchema.safeParse(raw);
250
- if (!preflight.success) {
251
- failPreflight(
252
- preflight.error.issues.map((issue) => ({
253
- path: `ops[${index}]${issue.path.length > 0 ? `.${issue.path.join(".")}` : ""}`,
254
- message: issue.message
255
- }))
256
- );
257
- }
258
- ops.push(preflight.data);
259
- }
260
- try {
261
- const chatId = requireChatId();
262
- const response = await apiPost("/api/ads/linkedin/draft/stage-batch", { chatId, ops });
263
- const allHints = [...hints ?? [], ...await adCopyHints(ops)];
264
- writeJsonEnvelope(withHints(response, allHints));
265
- } catch (err) {
266
- handleLinkedinError(err);
267
- }
268
- }
269
- async function stageStatusChange(input) {
270
- const payload = input.kind === "creative.update" ? { intendedStatus: input.status } : { status: input.status };
271
- await stageLinkedinOps(
272
- input.targets.map((target) => ({ kind: input.kind, accountId: input.accountId, target, payload }))
273
- );
274
- }
275
- function requireTarget(args, entity) {
276
- const inverted = booleanWordPositionalError(args, entity);
277
- if (inverted !== void 0) {
278
- failWriteValidation(inverted);
279
- }
280
- const positionals = readPositionals(args);
281
- const target = args.id ?? args.target ?? args.ref ?? positionals[0];
282
- if (typeof target !== "string" || target.length === 0) {
283
- failWriteValidation(`pass the ${entity} id or URN as the positional argument`);
284
- }
285
- if (positionals.length > 1 || splitIdList(target).length > 1) {
286
- failWriteValidation(
287
- `this command takes one ${entity} id \u2014 run it once per id. Only pause/resume/archive and 'creatives update' accept several ids in one call.`
288
- );
289
- }
290
- return target;
291
- }
292
- function readPositionals(args) {
293
- if (!Array.isArray(args._)) {
294
- return [];
295
- }
296
- return args._.filter((value) => typeof value === "string" && value.length > 0);
297
- }
298
- function splitIdList(raw) {
299
- return raw.split(",").map((id) => id.trim()).filter(Boolean);
300
- }
301
- function idsFileEntries(path) {
302
- if (typeof path !== "string" || path.length === 0) {
303
- return [];
304
- }
305
- return readFileSync(path, "utf8").split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0 && !line.startsWith("#")).flatMap(splitIdList);
306
- }
307
- function requireTargets(args, entity) {
308
- const positionals = readPositionals(args);
309
- const named = [args.id, args.target, args.ref].filter(
310
- (value) => typeof value === "string" && value.length > 0
311
- );
312
- const fromArgs = positionals.length > 0 ? positionals : named;
313
- const targets = [.../* @__PURE__ */ new Set([...fromArgs.flatMap(splitIdList), ...idsFileEntries(args["ids-file"])])];
314
- if (targets.length === 0) {
315
- failWriteValidation(
316
- `pass the ${entity} id or URN as the positional argument (comma-separated for several), or --ids-file <path>`
317
- );
318
- }
319
- if (targets.length > LINKEDIN_DRAFT_BATCH_MAX) {
320
- failWriteValidation(
321
- `${targets.length} ids exceeds the batch limit of ${LINKEDIN_DRAFT_BATCH_MAX} \u2014 split the list`
322
- );
323
- }
324
- return targets;
325
- }
326
-
327
- export {
328
- TOTAL_BUDGET_HELP,
329
- bareAccountId,
330
- failWriteValidation,
331
- loadJsonFileArg,
332
- mergePayload,
333
- loadPatchArg,
334
- parseMoneyFlag,
335
- parseDateFlag,
336
- parseOnOffFlag,
337
- parseLocaleFlag,
338
- loadTargetingFileArg,
339
- parseListFileArg,
340
- stageOp,
341
- stageLinkedinOps,
342
- stageStatusChange,
343
- requireTarget,
344
- requireTargets
345
- };
346
- //# sourceMappingURL=chunk-Y6GKV7CU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/ads/linkedin/write-shared.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { readFileSync } from \"node:fs\";\nimport {\n LINKEDIN_DRAFT_BATCH_MAX,\n type LinkedinDraftStageBatchResponse,\n type LinkedinDraftStageResponse,\n linkedinDraftOpInputSchema,\n} from \"@baker/api\";\nimport { apiPost } from \"../../../client.ts\";\nimport { requireChatId } from \"../../../env.ts\";\nimport { capabilityFix } from \"../../capabilities/fix.ts\";\nimport { booleanWordPositionalError } from \"../boolean-word-positional.ts\";\nimport { adCopyHints } from \"../copy-hints.ts\";\nimport { withHints } from \"../hints.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { handleLinkedinError, resolveAccountIdArg } from \"./shared.ts\";\n\n/**\n * Shared plumbing for the staged write commands. Writes NEVER hit LinkedIn\n * directly: every command stages an op against this chat's draft\n * (`/api/ads/linkedin/draft/stage`), the dashboard shows it as a pending\n * LinkedIn change, and it applies when the chat is published.\n */\n\n/**\n * LinkedIn rejects a lifetime budget at or below what the entity has already\n * spent, so the flag needs the constraint wherever it is offered — the same\n * text on every surface (`--help` and `baker schema`) so the two can't drift.\n */\nexport const TOTAL_BUDGET_HELP =\n \"Lifetime budget — on something already running it must exceed spend to date, or LinkedIn rejects it\";\n\nexport function bareAccountId(args: Record<string, unknown>): string {\n const raw = resolveAccountIdArg(args);\n return raw.replace(/^urn:li:sponsoredAccount:/, \"\").replace(/^sponsoredAccount:/, \"\");\n}\n\nexport function failWriteValidation(message: string): never {\n writeJsonEnvelope({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\nexport function loadJsonFileArg(path: unknown): Record<string, unknown> {\n if (typeof path !== \"string\" || path.length === 0) {\n return {};\n }\n try {\n const parsed = JSON.parse(readFileSync(path, \"utf8\")) as unknown;\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n failWriteValidation(`${path} must contain a JSON object`);\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n if (err instanceof SyntaxError) {\n failWriteValidation(`${path} is not valid JSON: ${err.message}`);\n }\n throw err;\n }\n}\n\n/** Flags override file keys — the file is the base, flags are the overrides. */\nexport function mergePayload(file: Record<string, unknown>, flags: Record<string, unknown>): Record<string, unknown> {\n const merged: Record<string, unknown> = { ...file };\n for (const [key, value] of Object.entries(flags)) {\n if (value !== undefined) {\n merged[key] = value;\n }\n }\n return merged;\n}\n\n/**\n * The `draft amend` patch: exactly one of `--file <path>` (JSON file) or `--patch '<json>'`\n * (inline string), and it must parse to a JSON object — RFC-7386 merge-patch needs an object to\n * merge, and a stray array/scalar would silently no-op or replace the whole payload.\n */\nexport function loadPatchArg(args: Record<string, unknown>): Record<string, unknown> {\n const file = typeof args.file === \"string\" && args.file.length > 0 ? args.file : undefined;\n const inline = typeof args.patch === \"string\" && args.patch.length > 0 ? args.patch : undefined;\n if (Boolean(file) === Boolean(inline)) {\n failWriteValidation(\"pass exactly one of --file <patch.json> or --patch '<json>'\");\n }\n if (file) {\n return loadJsonFileArg(file);\n }\n try {\n const parsed = JSON.parse(inline as string) as unknown;\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n failWriteValidation(\"--patch must be a JSON object\");\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n if (err instanceof SyntaxError) {\n failWriteValidation(`--patch is not valid JSON: ${err.message}`);\n }\n throw err;\n }\n}\n\nexport function parseMoneyFlag(\n amount: unknown,\n currency: unknown,\n flag: string,\n): { amount: string; currencyCode?: string } | undefined {\n if (amount === undefined || amount === null || amount === \"\") {\n return undefined;\n }\n if (currency === undefined || currency === null || currency === \"\") {\n // LinkedIn ad accounts are single-currency — the backend fills it in.\n return { amount: String(amount) };\n }\n if (typeof currency !== \"string\" || currency.length !== 3) {\n failWriteValidation(`${flag} got an invalid --currency (expected a 3-letter code like EUR)`);\n }\n return { amount: String(amount), currencyCode: currency.toUpperCase() };\n}\n\n/** Accepts ISO dates (2026-07-10), ISO datetimes, or epoch millis. */\nexport function parseDateFlag(value: unknown, flag: string): number | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const raw = String(value);\n if (/^\\d{10,}$/.test(raw)) {\n return Number(raw);\n }\n const parsed = Date.parse(raw);\n if (Number.isNaN(parsed)) {\n failWriteValidation(`${flag} must be an ISO date (2026-07-10) or epoch milliseconds`);\n }\n return parsed;\n}\n\nexport function parseOnOffFlag(value: unknown, flag: string): boolean | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const raw = String(value).toLowerCase();\n if (raw === \"on\" || raw === \"true\") {\n return true;\n }\n if (raw === \"off\" || raw === \"false\") {\n return false;\n }\n failWriteValidation(`${flag} must be on|off`);\n}\n\nexport function parseLocaleFlag(value: unknown): { country: string; language: string } | undefined {\n if (value === undefined || value === null || value === \"\") {\n return undefined;\n }\n const match = /^([a-z]{2})[_-]([A-Za-z]{2})$/.exec(String(value));\n if (!match) {\n failWriteValidation(\"--locale must look like en_US (language_COUNTRY)\");\n }\n return { language: match[1] as string, country: (match[2] as string).toUpperCase() };\n}\n\nexport function loadTargetingFileArg(path: unknown): Record<string, unknown> | undefined {\n if (typeof path !== \"string\" || path.length === 0) {\n return undefined;\n }\n const parsed = loadJsonFileArg(path);\n // Accept either the bare criteria object or a { targetingCriteria } wrapper.\n const criteria = (parsed.targetingCriteria as Record<string, unknown> | undefined) ?? parsed;\n if (!criteria.include) {\n failWriteValidation(\n `${path} must contain targeting criteria with an \"include\" block (see baker schema ads.linkedin.campaigns.create)`,\n );\n }\n return criteria;\n}\n\nfunction sha256Lower(value: string): string {\n return createHash(\"sha256\").update(value.trim().toLowerCase()).digest(\"hex\");\n}\n\nfunction parseCsvLine(line: string): string[] {\n const cells: string[] = [];\n let current = \"\";\n let inQuotes = false;\n for (let i = 0; i < line.length; i++) {\n const char = line[i];\n if (inQuotes) {\n if (char === '\"' && line[i + 1] === '\"') {\n current += '\"';\n i++;\n } else if (char === '\"') {\n inQuotes = false;\n } else {\n current += char;\n }\n } else if (char === '\"') {\n inQuotes = true;\n } else if (char === \",\") {\n cells.push(current);\n current = \"\";\n } else {\n current += char;\n }\n }\n cells.push(current);\n return cells.map((cell) => cell.trim());\n}\n\nexport interface ParsedList {\n columns: string[];\n rows: Array<Record<string, string>>;\n}\n\n/**\n * Parses a header-first CSV into row objects. Email columns are SHA-256\n * hashed here so raw addresses never leave the machine or sit in the draft.\n */\nexport function parseListFileArg(path: unknown, maxRows: number): ParsedList | undefined {\n if (typeof path !== \"string\" || path.length === 0) {\n return undefined;\n }\n const raw = readFileSync(path, \"utf8\");\n const lines = raw.split(/\\r?\\n/).filter((line) => line.trim().length > 0);\n if (lines.length < 2) {\n failWriteValidation(`${path} needs a header row and at least one data row`);\n }\n const columns = parseCsvLine(lines[0] as string).map((column) => column.trim());\n const rows: Array<Record<string, string>> = [];\n for (const line of lines.slice(1)) {\n const cells = parseCsvLine(line);\n const row: Record<string, string> = {};\n columns.forEach((column, index) => {\n const value = cells[index] ?? \"\";\n if (!value) {\n return;\n }\n row[column] = column.toLowerCase() === \"email\" ? sha256Lower(value) : value;\n });\n if (Object.keys(row).length > 0) {\n rows.push(row);\n }\n }\n if (rows.length > maxRows) {\n failWriteValidation(`${path} has ${rows.length} rows — the inline limit is ${maxRows}. Split the list.`);\n }\n return { columns, rows };\n}\n\ninterface StageEnvelope extends Record<string, unknown> {\n ok: true;\n data: LinkedinDraftStageResponse;\n}\n\n/** Structured preflight failure — the agent learns WHICH field (and, in a batch, which op) is wrong. */\nfunction failPreflight(fields: Array<{ path: string; message: string }>): never {\n writeJsonEnvelope({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: fields.map((field) => (field.path ? `${field.path}: ${field.message}` : field.message)).join(\"; \"),\n fields,\n fix: capabilityFix(\"linkedin-ads\"),\n },\n });\n process.exit(1);\n}\n\n/**\n * The agent is staging one id per call for a kind it has already staged in this\n * draft — the exact loop these commands' id lists exist to replace.\n */\nconst BATCH_NUDGE =\n \"This command takes several ids at once — pass them comma-separated or with --ids-file instead of one call per id.\";\n\nfunction batchNudge(data: LinkedinDraftStageResponse): string[] {\n return data.sameKindStaged === undefined ? [] : [BATCH_NUDGE];\n}\n\n/**\n * Preflight-validates the op against the shared `@baker/api` contract (same\n * schema the backend enforces), then stages it. Prints the staged envelope —\n * ref, mode (always `live`: publishing reaches the real ad account), summary,\n * warnings.\n */\nexport async function stageOp(raw: Record<string, unknown>, hints?: string[]): Promise<void> {\n const preflight = linkedinDraftOpInputSchema.safeParse(raw);\n if (!preflight.success) {\n failPreflight(preflight.error.issues.map((issue) => ({ path: issue.path.join(\".\"), message: issue.message })));\n }\n try {\n const chatId = requireChatId();\n const response = await apiPost<StageEnvelope>(\"/api/ads/linkedin/draft/stage\", {\n chatId,\n op: preflight.data,\n });\n const allHints = [...batchNudge(response.data), ...(hints ?? []), ...(await adCopyHints(preflight.data))];\n writeJsonEnvelope(withHints(response, allHints));\n } catch (err) {\n handleLinkedinError(err);\n }\n}\n\ninterface StageBatchEnvelope extends Record<string, unknown> {\n ok: true;\n data: LinkedinDraftStageBatchResponse;\n}\n\n/**\n * Stage several ops as ONE request (`/stage-batch`) — all-or-nothing on the\n * backend, one rate-limit hit instead of one per id. A single op falls through to\n * the plain stage path so its envelope, its amend behaviour and its hints stay\n * exactly as before.\n */\nexport async function stageLinkedinOps(rawOps: Array<Record<string, unknown>>, hints?: string[]): Promise<void> {\n if (rawOps.length === 1 && rawOps[0]) {\n await stageOp(rawOps[0], hints);\n return;\n }\n const ops: unknown[] = [];\n for (const [index, raw] of rawOps.entries()) {\n const preflight = linkedinDraftOpInputSchema.safeParse(raw);\n if (!preflight.success) {\n failPreflight(\n preflight.error.issues.map((issue) => ({\n path: `ops[${index}]${issue.path.length > 0 ? `.${issue.path.join(\".\")}` : \"\"}`,\n message: issue.message,\n })),\n );\n }\n ops.push(preflight.data);\n }\n try {\n const chatId = requireChatId();\n const response = await apiPost<StageBatchEnvelope>(\"/api/ads/linkedin/draft/stage-batch\", { chatId, ops });\n const allHints = [...(hints ?? []), ...(await adCopyHints(ops))];\n writeJsonEnvelope(withHints(response, allHints));\n } catch (err) {\n handleLinkedinError(err);\n }\n}\n\nexport async function stageStatusChange(input: {\n kind: \"campaignGroup.update\" | \"campaign.update\" | \"creative.update\";\n accountId: string;\n targets: string[];\n status: \"ACTIVE\" | \"PAUSED\" | \"ARCHIVED\";\n}): Promise<void> {\n const payload = input.kind === \"creative.update\" ? { intendedStatus: input.status } : { status: input.status };\n await stageLinkedinOps(\n input.targets.map((target) => ({ kind: input.kind, accountId: input.accountId, target, payload })),\n );\n}\n\n/**\n * Reads the target from whichever positional the command declared. Commands\n * name it `id` (entity writes) or `ref` (draft show/amend), and citty also\n * leaves every positional in `args._` — so we accept all three rather than\n * making the receipt depend on one command's arg name.\n *\n * `--flag false` is refused BEFORE the one-id check below, which would otherwise\n * blame the stray word on a second id: on `campaigns url-params 123456 --clear\n * false` that sends the agent back with `--clear` alone, which is TRUE again and\n * wipes every tracking parameter on a live ad set.\n */\nexport function requireTarget(args: Record<string, unknown>, entity: string): string {\n const inverted = booleanWordPositionalError(args, entity);\n if (inverted !== undefined) {\n failWriteValidation(inverted);\n }\n const positionals = readPositionals(args);\n const target = args.id ?? args.target ?? args.ref ?? positionals[0];\n if (typeof target !== \"string\" || target.length === 0) {\n failWriteValidation(`pass the ${entity} id or URN as the positional argument`);\n }\n // This command applies one payload to one id. Accepting the first of several and\n // dropping the rest would report success for work it never staged, so say so.\n if (positionals.length > 1 || splitIdList(target).length > 1) {\n failWriteValidation(\n `this command takes one ${entity} id — run it once per id. Only pause/resume/archive and 'creatives update' accept several ids in one call.`,\n );\n }\n return target;\n}\n\n/** Every positional citty left in `_`, as strings. Numeric ids arrive as strings via `node:util parseArgs`. */\nfunction readPositionals(args: Record<string, unknown>): string[] {\n if (!Array.isArray(args._)) {\n return [];\n }\n return args._.filter((value): value is string => typeof value === \"string\" && value.length > 0);\n}\n\n/** Ids in the positional: `123,456` or `urn:li:sponsoredCreative:1, urn:…:2` (URNs never contain commas). */\nfunction splitIdList(raw: string): string[] {\n return raw\n .split(\",\")\n .map((id) => id.trim())\n .filter(Boolean);\n}\n\n/**\n * `--ids-file` lines: one id per line, or comma-separated on a line — the agent\n * writes whichever is convenient. Blank lines and `#` comments are skipped.\n */\nfunction idsFileEntries(path: unknown): string[] {\n if (typeof path !== \"string\" || path.length === 0) {\n return [];\n }\n return readFileSync(path, \"utf8\")\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0 && !line.startsWith(\"#\"))\n .flatMap(splitIdList);\n}\n\n/**\n * Every id a write command was invoked with: **all** positionals (each of which may\n * itself be comma-separated) plus `--ids-file` lines, deduped in first-seen order.\n * One id stages exactly as before; several stage as one batch.\n *\n * All positionals, not just the first: an agent writing `creatives pause 111 222 333`\n * — space-separated, as most CLIs accept — used to stage one op and be told `ok: true`,\n * so it believed three ads were paused.\n */\nexport function requireTargets(args: Record<string, unknown>, entity: string): string[] {\n // `args._` is the superset: citty copies the FIRST positional into the declared\n // arg (`id`/`ref`) but leaves every positional in `_`. Reading the named arg alone\n // is what dropped ids 2..n. The named arg is the fallback for a command that ever\n // declares its id as a flag instead, where `_` would be empty.\n const positionals = readPositionals(args);\n const named = [args.id, args.target, args.ref].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0,\n );\n const fromArgs = positionals.length > 0 ? positionals : named;\n const targets = [...new Set([...fromArgs.flatMap(splitIdList), ...idsFileEntries(args[\"ids-file\"])])];\n if (targets.length === 0) {\n failWriteValidation(\n `pass the ${entity} id or URN as the positional argument (comma-separated for several), or --ids-file <path>`,\n );\n }\n if (targets.length > LINKEDIN_DRAFT_BATCH_MAX) {\n failWriteValidation(\n `${targets.length} ids exceeds the batch limit of ${LINKEDIN_DRAFT_BATCH_MAX} — split the list`,\n );\n }\n return targets;\n}\n"],"mappings":"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","names":[]}
@@ -1,159 +0,0 @@
1
- import {
2
- failApi
3
- } from "./chunk-ZDAVSTEE.js";
4
- import {
5
- CREATIVE_PERFORMANCE_DEFAULT_DAYS,
6
- CREATIVE_PERFORMANCE_MAX_DAYS
7
- } from "./chunk-DAO63OOP.js";
8
- import {
9
- apiPost
10
- } from "./chunk-6YLNY6CK.js";
11
- import {
12
- registerSchema,
13
- writeJson
14
- } from "./chunk-QANGHND7.js";
15
-
16
- // src/commands/creatives/performance.ts
17
- import { readFileSync } from "fs";
18
- import path from "path";
19
- import { defineCommand } from "citty";
20
- import { parse as parseYaml } from "yaml";
21
- var DESCRIPTION = `How each Baker creative is doing in the live Meta ads that show it: spend, impressions, CTR, CPC, results, cost per result, frequency and a fatigue verdict, next to the angle, hook, mechanism and dominant slot its definition set out to test. Video creatives add hookRate (percent of impressions that watched 3 seconds) and holdRate (percent of those that reached a ThruPlay). Use it before briefing new creatives, to learn which angle and mechanism to make next and which creatives to replace.
22
-
23
- Start here:
24
- baker creatives performance # every creative in an ad, last 30 days
25
- baker creatives performance --slug spring-offer # one creative
26
- baker creatives performance --days 14 --full # ids, last-7-day figures, a video's watch funnel, one row per ad
27
-
28
- Fatigue follows the Meta playbook (07-creative-audit.md): fresh, fading, fatigued, dead, or too_early (under 14 days or 1,000 impressions) and no_delivery. A low hook rate means the first 3 seconds need new hooks; a working hook with a low hold rate means the body loses people. A creative counts once a Session's publish created an ad with it.`;
29
- var ARGS = {
30
- slug: { type: "string", description: "Only this creative (src/creatives/<slug>/)", required: false },
31
- days: {
32
- type: "string",
33
- description: `Reporting window in days, ending today (1-${CREATIVE_PERFORMANCE_MAX_DAYS}, default ${CREATIVE_PERFORMANCE_DEFAULT_DAYS})`,
34
- required: false
35
- },
36
- full: {
37
- type: "boolean",
38
- description: "Add ids, last-7-day CTR and cost per result, and one row per ad",
39
- required: false,
40
- default: false
41
- }
42
- };
43
- registerSchema({ command: "creatives.performance", description: DESCRIPTION, args: ARGS });
44
- var INSIGHT_KEYS = [
45
- "idea",
46
- "message",
47
- "evidence",
48
- "angle",
49
- "hook",
50
- "mechanism",
51
- "dominantSlot",
52
- "persona",
53
- "awareness",
54
- "hypothesis"
55
- ];
56
- var FRONTMATTER = /^---\r?\n([\s\S]*?)\r?\n---/;
57
- function insightValue(value) {
58
- if (typeof value === "string") return value.trim() || null;
59
- if (typeof value === "number" || typeof value === "boolean") return String(value);
60
- return null;
61
- }
62
- function definitionInsights(markdown) {
63
- const block = FRONTMATTER.exec(markdown)?.[1];
64
- if (!block) return null;
65
- let parsed;
66
- try {
67
- parsed = parseYaml(block);
68
- } catch {
69
- return null;
70
- }
71
- if (parsed === null || typeof parsed !== "object") return null;
72
- const insights = {};
73
- for (const [key, raw] of Object.entries(parsed)) {
74
- if (!(INSIGHT_KEYS.includes(key) || key.startsWith("source") || key.startsWith("reference"))) continue;
75
- const value = insightValue(raw);
76
- if (value !== null) insights[key] = value;
77
- }
78
- return Object.keys(insights).length > 0 ? insights : null;
79
- }
80
- function readLocalDefinition(slug) {
81
- try {
82
- return readFileSync(path.join(process.cwd(), "src", "creatives", slug, "_definition.md"), "utf8");
83
- } catch {
84
- return null;
85
- }
86
- }
87
- var COMPARED_FIELDS = [
88
- { key: "angle", label: "angle", advice: "Brief the next creative on the cheapest angle with a new hook." },
89
- { key: "mechanism", label: "mechanism", advice: "Brief the next creative on the cheapest mechanism." },
90
- { key: "dominantSlot", label: "dominant slot", advice: "Lead the next creative with the cheapest dominant slot." }
91
- ];
92
- function cheapestHint(creatives, { key, label, advice }) {
93
- const byValue = /* @__PURE__ */ new Map();
94
- for (const creative of creatives) {
95
- const value = creative.definition?.[key];
96
- if (!value || creative.costPerResult === null) continue;
97
- const best = byValue.get(value);
98
- if (!best || (best.costPerResult ?? Number.POSITIVE_INFINITY) > creative.costPerResult)
99
- byValue.set(value, creative);
100
- }
101
- if (byValue.size < 2) return null;
102
- const ranked = [...byValue.entries()].sort(([, a], [, b]) => (a.costPerResult ?? 0) - (b.costPerResult ?? 0)).map(
103
- ([value, creative]) => `"${value}" ${creative.costPerResult}${creative.currency ? ` ${creative.currency}` : ""} (${creative.slug ?? creative.title})`
104
- );
105
- return `Cost per result by ${label}: ${ranked.join(", ")}. ${advice}`;
106
- }
107
- function withDefinitions(response, readDefinition) {
108
- const creatives = response.data.creatives.map((creative) => {
109
- const markdown = creative.slug ? readDefinition(creative.slug) : null;
110
- const definition = markdown ? definitionInsights(markdown) : null;
111
- return definition ? { ...creative, definition } : creative;
112
- });
113
- const hints = [...response.hints ?? []];
114
- for (const field of COMPARED_FIELDS) {
115
- const hint = cheapestHint(creatives, field);
116
- if (hint) hints.push(hint);
117
- }
118
- const unnamed = creatives.filter((creative) => !creative.definition?.angle).map((c) => c.slug ?? c.title);
119
- if (unnamed.length > 0) {
120
- hints.push(
121
- `No angle recorded for: ${unnamed.join(", ")}. Add angle and hook to src/creatives/<slug>/_definition.md so results show which angle works.`
122
- );
123
- }
124
- return { ...response, data: { ...response.data, creatives }, ...hints.length > 0 ? { hints } : {} };
125
- }
126
- function parseDays(raw) {
127
- if (raw === void 0) return void 0;
128
- const days = Number(raw);
129
- if (!Number.isInteger(days) || days < 1 || days > CREATIVE_PERFORMANCE_MAX_DAYS) {
130
- throw new Error(`--days must be a whole number from 1 to ${CREATIVE_PERFORMANCE_MAX_DAYS}`);
131
- }
132
- return days;
133
- }
134
- var performanceCommand = defineCommand({
135
- meta: { name: "performance", description: DESCRIPTION },
136
- args: ARGS,
137
- run: async ({ args }) => {
138
- try {
139
- const body = {};
140
- const slug = args.slug;
141
- if (slug) body.slug = slug;
142
- const days = parseDays(args.days);
143
- if (days !== void 0) body.days = days;
144
- if (args.full) body.full = true;
145
- const response = await apiPost("/api/creatives/performance", body);
146
- writeJson(withDefinitions(response, readLocalDefinition));
147
- } catch (err) {
148
- failApi(err);
149
- }
150
- }
151
- });
152
-
153
- export {
154
- definitionInsights,
155
- withDefinitions,
156
- parseDays,
157
- performanceCommand
158
- };
159
- //# sourceMappingURL=chunk-Z2GQREJY.js.map