@koda-sl/baker-cli 0.489.0 → 0.491.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 (859) hide show
  1. package/README.md +169 -7
  2. package/dist/account-3H6BZO5H.js +80 -0
  3. package/dist/account-IKFDY52P.js +138 -0
  4. package/dist/account-IKFDY52P.js.map +1 -0
  5. package/dist/account-VGSYM7LY.js +79 -0
  6. package/dist/account-assets-LKZVWZAR.js +289 -0
  7. package/dist/account-assets-LKZVWZAR.js.map +1 -0
  8. package/dist/account-level-UJOZDVXY.js +608 -0
  9. package/dist/account-level-UJOZDVXY.js.map +1 -0
  10. package/dist/account-writes-AE5IJGGW.js +66 -0
  11. package/dist/accounts-2ARS6XP2.js +77 -0
  12. package/dist/accounts-AQFW4ZUM.js +611 -0
  13. package/dist/accounts-K4INATCW.js +75 -0
  14. package/dist/actions-QMUHOAXG.js +55 -0
  15. package/dist/activecampaign-J3QN5FMG.js +935 -0
  16. package/dist/activities-T253KK4Q.js +74 -0
  17. package/dist/ad-group-writes-VRSBI2Z2.js +170 -0
  18. package/dist/ad-groups-IEBVEAMS.js +68 -0
  19. package/dist/ad-writes-ALV4KFPZ.js +174 -0
  20. package/dist/add-VDUA6OWM.js +104 -0
  21. package/dist/add-XHOKCSW5.js +302 -0
  22. package/dist/ads-CQZHD7FC.js +77 -0
  23. package/dist/ads-HGDPNIT6.js +40 -0
  24. package/dist/ads-ZEY72UBN.js +114 -0
  25. package/dist/ads-ZEY72UBN.js.map +1 -0
  26. package/dist/adsets-5H3MOT3D.js +177 -0
  27. package/dist/adsets-5H3MOT3D.js.map +1 -0
  28. package/dist/advertisers-UDSEFMP7.js +120 -0
  29. package/dist/analytics-TBETZOPJ.js +433 -0
  30. package/dist/analytics-VH74LMMC.js +1976 -0
  31. package/dist/asset-writes-L5TMKIZC.js +47 -0
  32. package/dist/assign-6IE2ASFC.js +77 -0
  33. package/dist/audience-size-CSBWDFEP.js +73 -0
  34. package/dist/audience-writes-X52VG35Y.js +324 -0
  35. package/dist/audience-writes-X52VG35Y.js.map +1 -0
  36. package/dist/audiences-AAZH56WD.js +268 -0
  37. package/dist/audiences-X3RLGOVM.js +84 -0
  38. package/dist/audiences-X3RLGOVM.js.map +1 -0
  39. package/dist/audit-AEENRVGD.js +151 -0
  40. package/dist/autocomplete-AAGTJHVL.js +111 -0
  41. package/dist/avatars-VEATUUKU.js +38 -0
  42. package/dist/bid-pricing-SZTGCZTV.js +100 -0
  43. package/dist/brand-MXGETE4R.js +22 -0
  44. package/dist/brief-3GHSHOGM.js +538 -0
  45. package/dist/businesses-H3HIDQX6.js +53 -0
  46. package/dist/campaign-groups-WRI56M5X.js +95 -0
  47. package/dist/campaign-writes-PYGKSCPS.js +165 -0
  48. package/dist/campaign-writes-PYGKSCPS.js.map +1 -0
  49. package/dist/campaign-writes-U5PUVSMT.js +170 -0
  50. package/dist/campaigns-4QWC2JE7.js +109 -0
  51. package/dist/campaigns-AV6G3AUU.js +127 -0
  52. package/dist/campaigns-AV6G3AUU.js.map +1 -0
  53. package/dist/campaigns-JEIKY2M4.js +76 -0
  54. package/dist/campaigns-Q4HN7HBY.js +107 -0
  55. package/dist/canvas-VJ3XKCAC.js +46 -0
  56. package/dist/capabilities-SNGGAOV3.js +144 -0
  57. package/dist/catalog-S32MX453.js +65 -0
  58. package/dist/catalogs-OCVXZLIF.js +128 -0
  59. package/dist/catalogs-RXJTZTVX.js +778 -0
  60. package/dist/catalogs-RXJTZTVX.js.map +1 -0
  61. package/dist/chatgpt-QVF2FD3E.js +47 -0
  62. package/dist/chats-2DRTB7GK.js +276 -0
  63. package/dist/chats-2DRTB7GK.js.map +1 -0
  64. package/dist/check-Z6UMIQKD.js +104 -0
  65. package/dist/chunk-2C7AHPM4.js +191 -0
  66. package/dist/chunk-2C7AHPM4.js.map +1 -0
  67. package/dist/chunk-2WZI36D3.js +317 -0
  68. package/dist/chunk-3AMLOCXY.js +392 -0
  69. package/dist/chunk-3CVAEQMZ.js +156 -0
  70. package/dist/chunk-3WAYZQNV.js +61 -0
  71. package/dist/chunk-46GWHUKN.js +225 -0
  72. package/dist/chunk-4O6T76A3.js +191 -0
  73. package/dist/chunk-5C35OW7L.js +205 -0
  74. package/dist/chunk-5C35OW7L.js.map +1 -0
  75. package/dist/chunk-5GQCN2QZ.js +391 -0
  76. package/dist/chunk-5GQCN2QZ.js.map +1 -0
  77. package/dist/chunk-5MCVK4A3.js +903 -0
  78. package/dist/chunk-5ZLN23V5.js +97 -0
  79. package/dist/chunk-65Y3RCWP.js +68 -0
  80. package/dist/chunk-65Y3RCWP.js.map +1 -0
  81. package/dist/chunk-77ULVP62.js +547 -0
  82. package/dist/chunk-A4MVVPJ2.js +4204 -0
  83. package/dist/chunk-A4MVVPJ2.js.map +1 -0
  84. package/dist/chunk-AQM4JH62.js +274 -0
  85. package/dist/chunk-AQM4JH62.js.map +1 -0
  86. package/dist/chunk-AW2GKIGS.js +433 -0
  87. package/dist/chunk-BRLY6XD6.js +249 -0
  88. package/dist/chunk-C7NWUCLQ.js +64 -0
  89. package/dist/chunk-CP4P6YKM.js +287 -0
  90. package/dist/chunk-CP4P6YKM.js.map +1 -0
  91. package/dist/chunk-D4HKJBEW.js +23 -0
  92. package/dist/chunk-DAO63OOP.js +6352 -0
  93. package/dist/chunk-DAO63OOP.js.map +1 -0
  94. package/dist/chunk-DCBZ5CHZ.js +139 -0
  95. package/dist/chunk-G6XKD7QE.js +77 -0
  96. package/dist/chunk-GBFL4TD2.js +172 -0
  97. package/dist/chunk-H5SCKWFT.js +224 -0
  98. package/dist/chunk-HLVRHBKL.js +1078 -0
  99. package/dist/chunk-HLVRHBKL.js.map +1 -0
  100. package/dist/chunk-HXPK6KAL.js +363 -0
  101. package/dist/chunk-I7GOSMWT.js +197 -0
  102. package/dist/chunk-IBY44U2M.js +1079 -0
  103. package/dist/chunk-ITNHIZKK.js +275 -0
  104. package/dist/chunk-J33P2JNS.js +455 -0
  105. package/dist/chunk-JH2L5CQD.js +206 -0
  106. package/dist/chunk-JQH5VG6F.js +5368 -0
  107. package/dist/chunk-JVH5A3XC.js +8914 -0
  108. package/dist/chunk-KTOYQP6D.js +169 -0
  109. package/dist/chunk-LO3IF5PS.js +399 -0
  110. package/dist/chunk-LRRFGOW3.js +604 -0
  111. package/dist/chunk-LTPTJWZC.js +942 -0
  112. package/dist/chunk-MRQHJW5U.js +159 -0
  113. package/dist/chunk-NHYI7ORL.js +346 -0
  114. package/dist/chunk-NLI7C3K2.js +51 -0
  115. package/dist/chunk-NSEMXBUB.js +91 -0
  116. package/dist/chunk-OM2BRYXJ.js +3868 -0
  117. package/dist/chunk-OY4SKCIU.js +103 -0
  118. package/dist/chunk-OYAJNTRO.js +494 -0
  119. package/dist/chunk-PL7J3DPQ.js +831 -0
  120. package/dist/chunk-PUSBUMYM.js +89 -0
  121. package/dist/chunk-QTOZ32SU.js +163 -0
  122. package/dist/chunk-QTOZ32SU.js.map +1 -0
  123. package/dist/chunk-RRADFRPI.js +297 -0
  124. package/dist/chunk-SGEPZB3D.js +344 -0
  125. package/dist/chunk-SVAB6KV5.js +219 -0
  126. package/dist/chunk-SVAB6KV5.js.map +1 -0
  127. package/dist/chunk-TFTZDWCX.js +66 -0
  128. package/dist/chunk-TG4NCHFS.js +142 -0
  129. package/dist/chunk-TTHM66TA.js +207 -0
  130. package/dist/chunk-VL2GNXZY.js +19 -0
  131. package/dist/chunk-VQPZDM6N.js +160 -0
  132. package/dist/chunk-XCKINS7K.js +57 -0
  133. package/dist/chunk-YLYXSJ6O.js +8939 -0
  134. package/dist/chunk-ZAPO6UWS.js +592 -0
  135. package/dist/chunk-ZEPUDYPL.js +122 -0
  136. package/dist/chunk-ZJSGGJ5R.js +167 -0
  137. package/dist/claim-J2LYNHZK.js +197 -0
  138. package/dist/cli.js +34 -34
  139. package/dist/companies-VYY22B6T.js +195 -0
  140. package/dist/complete-5I32XM7P.js +81 -0
  141. package/dist/connect-EUFFQQ7O.js +42 -0
  142. package/dist/conversation-D6KZHGPP.js +93 -0
  143. package/dist/conversion-writes-ECZBVY7D.js +120 -0
  144. package/dist/conversions-5QCSCRLI.js +76 -0
  145. package/dist/conversions-Y3X6ZTTF.js +135 -0
  146. package/dist/copy-writes-D2RTHAL6.js +167 -0
  147. package/dist/copy-writes-D2RTHAL6.js.map +1 -0
  148. package/dist/create-2JCRTQJL.js +59 -0
  149. package/dist/create-LMSQPHPB.js +235 -0
  150. package/dist/create-MBLNB5RY.js +132 -0
  151. package/dist/create-VR7RXKL7.js +207 -0
  152. package/dist/creatives-5C42BDMW.js +182 -0
  153. package/dist/creatives-HYPSTANO.js +58 -0
  154. package/dist/creatives-MZ6ICNSY.js +88 -0
  155. package/dist/creatives-MZ6ICNSY.js.map +1 -0
  156. package/dist/credentials-4H4AUYJN.js +287 -0
  157. package/dist/critique-UOJZWDG2.js +1458 -0
  158. package/dist/critique-WCWMQQVV.js +227 -0
  159. package/dist/crm-B7OTHMBP.js +318 -0
  160. package/dist/crm-DZRWKJ6V.js +224 -0
  161. package/dist/custom-conversions-FIP6ZS34.js +127 -0
  162. package/dist/custom-conversions-FIP6ZS34.js.map +1 -0
  163. package/dist/customers-AOFJJCGD.js +56 -0
  164. package/dist/delete-DEG5KOBY.js +64 -0
  165. package/dist/delete-EFIODCXG.js +54 -0
  166. package/dist/delete-PQIMW2LK.js +66 -0
  167. package/dist/demographics-F26DIOCM.js +138 -0
  168. package/dist/discard-2EJY6UGP.js +66 -0
  169. package/dist/domain-XLJABLWB.js +98 -0
  170. package/dist/draft-2YND6T4U.js +217 -0
  171. package/dist/draft-34CGWUVA.js +281 -0
  172. package/dist/draft-L45PGCYZ.js +237 -0
  173. package/dist/draft-L45PGCYZ.js.map +1 -0
  174. package/dist/draft-TCPK6XYW.js +332 -0
  175. package/dist/draft-TCPK6XYW.js.map +1 -0
  176. package/dist/draft-WRVEANL5.js +306 -0
  177. package/dist/engine/index.js +4 -4
  178. package/dist/experiment-7N4QFRWV.js +1397 -0
  179. package/dist/facets-OPTNDPW2.js +114 -0
  180. package/dist/feedback-43BPXNBI.js +106 -0
  181. package/dist/feedback-record-35ZSDL6Z.js +260 -0
  182. package/dist/fetch-O46XBA7S.js +176 -0
  183. package/dist/find-FSQAEGGF.js +134 -0
  184. package/dist/fit-CWJ5QQ4R.js +62 -0
  185. package/dist/flows-CVORIQ4B.js +247 -0
  186. package/dist/fonts-6TPYR6IW.js +36 -0
  187. package/dist/forecast-2VLA6NJA.js +118 -0
  188. package/dist/funnel-XLKDLXMG.js +394 -0
  189. package/dist/ga4-LPDIBNYP.js +55 -0
  190. package/dist/get-O56GGN3V.js +56 -0
  191. package/dist/get-WFQ4XEAW.js +79 -0
  192. package/dist/google-5ESVO76E.js +136 -0
  193. package/dist/google-ads-DZMOTUY5.js +195 -0
  194. package/dist/gsc-FIZTQX3N.js +30 -0
  195. package/dist/history-43BBQZOB.js +133 -0
  196. package/dist/history-QKDYBSYM.js +67 -0
  197. package/dist/hubspot-S44MPK3G.js +779 -0
  198. package/dist/icon-CSVAZ7NE.js +137 -0
  199. package/dist/ideas-SLP5WXFF.js +40 -0
  200. package/dist/images-TWZOROCT.js +92 -0
  201. package/dist/ingest-5GCZ5ZBV.js +23 -0
  202. package/dist/ingest-P54J4W3V.js +107 -0
  203. package/dist/insights-YWVJMATY.js +424 -0
  204. package/dist/insights-YWVJMATY.js.map +1 -0
  205. package/dist/inspect-S4COGUBC.js +189 -0
  206. package/dist/inspiration-IX5N724J.js +53 -0
  207. package/dist/instant-experiences-NQ2GWIWL.js +257 -0
  208. package/dist/instant-experiences-NQ2GWIWL.js.map +1 -0
  209. package/dist/keyword-metrics-26CCKFZK.js +197 -0
  210. package/dist/keywords-for-site-JWWECF63.js +128 -0
  211. package/dist/landing-VFDRADZY.js +28 -0
  212. package/dist/leads-DTKKYSKH.js +90 -0
  213. package/dist/leads-THI37ZMD.js +537 -0
  214. package/dist/leads-THI37ZMD.js.map +1 -0
  215. package/dist/learn-GQ75IPRK.js +204 -0
  216. package/dist/line-item-writes-DVVHVR3Y.js +208 -0
  217. package/dist/line-items-EOZMK7A5.js +103 -0
  218. package/dist/link-R5NGCQ5H.js +64 -0
  219. package/dist/linkedin-DHZO3IJX.js +1057 -0
  220. package/dist/list-57QBEGLM.js +303 -0
  221. package/dist/list-Q44BBHDI.js +64 -0
  222. package/dist/list-W6G2NTG5.js +151 -0
  223. package/dist/locations-HM56X2MK.js +67 -0
  224. package/dist/locations-HM56X2MK.js.map +1 -0
  225. package/dist/log-B6X5EPKA.js +92 -0
  226. package/dist/logo-VHXH4J6A.js +18 -0
  227. package/dist/make-OIFLF3QS.js +1353 -0
  228. package/dist/map-PIOZT2MQ.js +433 -0
  229. package/dist/mcp-GFKHLWDB.js +714 -0
  230. package/dist/media-H6B7VDON.js +18 -0
  231. package/dist/media-H6B7VDON.js.map +1 -0
  232. package/dist/media-sources-VMMMW5UM.js +32 -0
  233. package/dist/members-W2QBMNIW.js +44 -0
  234. package/dist/meta-YHDTGJQ6.js +122 -0
  235. package/dist/meta-YHDTGJQ6.js.map +1 -0
  236. package/dist/normalize-N6XC3SLC.js +141 -0
  237. package/dist/options-XYJY2OEQ.js +122 -0
  238. package/dist/organization-BVTXCZIV.js +942 -0
  239. package/dist/organization-BVTXCZIV.js.map +1 -0
  240. package/dist/page-photos-CXRG4AXV.js +115 -0
  241. package/dist/page-photos-CXRG4AXV.js.map +1 -0
  242. package/dist/pages-PTWRXAZT.js +66 -0
  243. package/dist/performance-7NEZTOJ5.js +24 -0
  244. package/dist/pixels-MYT3TCHZ.js +60 -0
  245. package/dist/pixels-ZZCQUS3J.js +108 -0
  246. package/dist/preview-XOXAAPMQ.js +215 -0
  247. package/dist/preview-XOXAAPMQ.js.map +1 -0
  248. package/dist/promoted-tweet-writes-X2F7R2AE.js +180 -0
  249. package/dist/promoted-tweets-XCSD6VKP.js +119 -0
  250. package/dist/publish-OBY6E43R.js +341 -0
  251. package/dist/reddit-WJ6KHYBC.js +26 -0
  252. package/dist/refresh-G5BQ2LWU.js +94 -0
  253. package/dist/release-PBZO35KY.js +60 -0
  254. package/dist/remove-VJ2MEUPM.js +50 -0
  255. package/dist/reopen-W3LYOHSR.js +63 -0
  256. package/dist/rerun-4GDNBFNM.js +90 -0
  257. package/dist/research-4YTFPGH7.js +262 -0
  258. package/dist/research-LOQRIBO6.js +62 -0
  259. package/dist/reset-55CCQGXB.js +54 -0
  260. package/dist/reset-AVTQEJPZ.js +54 -0
  261. package/dist/resolve-E6FNMFE3.js +121 -0
  262. package/dist/retry-HBJ7MKVI.js +60 -0
  263. package/dist/retry-QBRYM6MG.js +62 -0
  264. package/dist/rule-writes-6ZCAJDYZ.js +522 -0
  265. package/dist/rule-writes-6ZCAJDYZ.js.map +1 -0
  266. package/dist/rules-BMYOY2BM.js +216 -0
  267. package/dist/rules-BMYOY2BM.js.map +1 -0
  268. package/dist/rules-XNDBGOIS.js +96 -0
  269. package/dist/rules-add-UM3ZKSVD.js +462 -0
  270. package/dist/run-D4YHZ4Z4.js +66 -0
  271. package/dist/run-ZCJ7NP63.js +65 -0
  272. package/dist/scaffold-ad-VQZAP32M.js +1511 -0
  273. package/dist/scaffold-static-ad-LEU4M44N.js +1005 -0
  274. package/dist/scaffold-video-PSWSYRSC.js +883 -0
  275. package/dist/schedule-AAH7HYFK.js +61 -0
  276. package/dist/scheduled-agents-HDABMHZI.js +50 -0
  277. package/dist/schema-OH5OWMVQ.js +132 -0
  278. package/dist/search-BSDPVSGA.js +174 -0
  279. package/dist/select-EI4QF4YZ.js +101 -0
  280. package/dist/set-prompt-RKDAGUWG.js +193 -0
  281. package/dist/setup-links-CNNJA7AB.js +141 -0
  282. package/dist/shared-3IBNDEFL.js +31 -0
  283. package/dist/site-NV4U7PIF.js +177 -0
  284. package/dist/sources-ATONL7W5.js +454 -0
  285. package/dist/sources-C3TGHKLQ.js +30 -0
  286. package/dist/stale-6QPXL6BZ.js +71 -0
  287. package/dist/stats-ZAGJH4AD.js +34 -0
  288. package/dist/status-BML3F4MZ.js +62 -0
  289. package/dist/stock-6SHHLSKG.js +179 -0
  290. package/dist/studies-4NIV4D5Y.js +249 -0
  291. package/dist/studies-4NIV4D5Y.js.map +1 -0
  292. package/dist/studio-ZLCGXFAN.js +49 -0
  293. package/dist/study-writes-L2AA2PGL.js +467 -0
  294. package/dist/study-writes-L2AA2PGL.js.map +1 -0
  295. package/dist/sync-DZAOUQPE.js +54 -0
  296. package/dist/sync-definition-RFEL65JE.js +64 -0
  297. package/dist/tag-manager-3CJ66GKJ.js +43 -0
  298. package/dist/tags-2KSXCJRZ.js +20 -0
  299. package/dist/tags-662KZJLV.js +26 -0
  300. package/dist/tags-6QBVW25V.js +20 -0
  301. package/dist/tags-LQCEJGIL.js +20 -0
  302. package/dist/tags-RIVD54ZG.js +224 -0
  303. package/dist/targeting-LNDQV4EK.js +759 -0
  304. package/dist/targeting-LNDQV4EK.js.map +1 -0
  305. package/dist/targeting-criteria-XNLYPIL2.js +113 -0
  306. package/dist/targets-OYIVS5KJ.js +103 -0
  307. package/dist/testimonials-WT43CF7V.js +32 -0
  308. package/dist/top-companies-6QQMOS2Y.js +108 -0
  309. package/dist/translate-7QN7JFGU.js +604 -0
  310. package/dist/triggers-LVQY3QJ2.js +142 -0
  311. package/dist/unlink-5ASZTCS2.js +67 -0
  312. package/dist/unstage-LNZTEATR.js +85 -0
  313. package/dist/update-7BIR4GYO.js +152 -0
  314. package/dist/update-BRLM5DB3.js +98 -0
  315. package/dist/update-DRZAAJQ2.js +63 -0
  316. package/dist/update-NOWC3ICD.js +188 -0
  317. package/dist/upload-457Q4ANZ.js +126 -0
  318. package/dist/url-params-KM4NJGYC.js +98 -0
  319. package/dist/validate-COLEPJBA.js +117 -0
  320. package/dist/videos-5IDZTEWC.js +39 -0
  321. package/dist/viewer-check-433AZPBC.js +80 -0
  322. package/dist/viewer-check-433AZPBC.js.map +1 -0
  323. package/dist/web-FZYOCCYN.js +140 -0
  324. package/dist/winning-ads-I4DMP7RU.js +84 -0
  325. package/dist/write-commands-FYB6QG7K.js +1024 -0
  326. package/dist/write-commands-PEJBTME6.js +1165 -0
  327. package/dist/write-commands-PEJBTME6.js.map +1 -0
  328. package/dist/x-OMN5DDLM.js +47 -0
  329. package/package.json +1 -1
  330. package/dist/account-7LUQWY6Q.js +0 -49
  331. package/dist/account-7LUQWY6Q.js.map +0 -1
  332. package/dist/account-KNRDOUJP.js +0 -79
  333. package/dist/account-Z65CPOWE.js +0 -80
  334. package/dist/account-writes-4N2MA2ZR.js +0 -66
  335. package/dist/accounts-RTN5ZGTU.js +0 -611
  336. package/dist/accounts-RW6KXBOQ.js +0 -77
  337. package/dist/accounts-UA2ZWRN4.js +0 -75
  338. package/dist/actions-HNLISA7T.js +0 -55
  339. package/dist/activecampaign-I5CILZPU.js +0 -935
  340. package/dist/activities-IQPJPP4B.js +0 -74
  341. package/dist/ad-group-writes-EUTMPBMK.js +0 -170
  342. package/dist/ad-groups-OVPAI5RM.js +0 -68
  343. package/dist/ad-writes-DACTYFEO.js +0 -174
  344. package/dist/add-6WKPFMLG.js +0 -302
  345. package/dist/add-XF5COUAS.js +0 -104
  346. package/dist/ads-G6AS5L7G.js +0 -40
  347. package/dist/ads-HXX2IAFF.js +0 -113
  348. package/dist/ads-HXX2IAFF.js.map +0 -1
  349. package/dist/ads-L65JIKCD.js +0 -77
  350. package/dist/adsets-LPN6WFGF.js +0 -176
  351. package/dist/adsets-LPN6WFGF.js.map +0 -1
  352. package/dist/advertisers-6NUM2Q3A.js +0 -120
  353. package/dist/analytics-QKP3A5F3.js +0 -1976
  354. package/dist/analytics-VLHE5A2M.js +0 -433
  355. package/dist/assign-6HI6TNLP.js +0 -77
  356. package/dist/audience-size-25LP2OBF.js +0 -73
  357. package/dist/audiences-RPLVMO4H.js +0 -268
  358. package/dist/audiences-XEZHACKH.js +0 -78
  359. package/dist/audiences-XEZHACKH.js.map +0 -1
  360. package/dist/audit-YY6X2MPA.js +0 -151
  361. package/dist/autocomplete-SAWJK4NF.js +0 -111
  362. package/dist/avatars-MXTI74VC.js +0 -38
  363. package/dist/bid-pricing-HZ74SLEB.js +0 -100
  364. package/dist/brand-T3OACVQX.js +0 -22
  365. package/dist/brief-BN4UGUXF.js +0 -538
  366. package/dist/businesses-PRRYPR7H.js +0 -53
  367. package/dist/campaign-groups-YJK767AP.js +0 -95
  368. package/dist/campaign-writes-BAFB5E7A.js +0 -165
  369. package/dist/campaign-writes-BAFB5E7A.js.map +0 -1
  370. package/dist/campaign-writes-U5LTDTYK.js +0 -170
  371. package/dist/campaigns-4SOLY7OR.js +0 -110
  372. package/dist/campaigns-4SOLY7OR.js.map +0 -1
  373. package/dist/campaigns-GALDR5KK.js +0 -109
  374. package/dist/campaigns-NR6TNQFN.js +0 -107
  375. package/dist/campaigns-TFEQTSO3.js +0 -76
  376. package/dist/canvas-GJAQAVS6.js +0 -46
  377. package/dist/capabilities-2KT6TCGZ.js +0 -144
  378. package/dist/catalog-USZL4SGX.js +0 -65
  379. package/dist/catalogs-A7XMEEEP.js +0 -128
  380. package/dist/chatgpt-4PEWDJKP.js +0 -47
  381. package/dist/chats-INN2OHSH.js +0 -262
  382. package/dist/chats-INN2OHSH.js.map +0 -1
  383. package/dist/check-MMJGFFZS.js +0 -104
  384. package/dist/chunk-2LI6746F.js +0 -103
  385. package/dist/chunk-2PWNIEW4.js +0 -197
  386. package/dist/chunk-2XRMPSEV.js +0 -142
  387. package/dist/chunk-3TZVZXM6.js +0 -224
  388. package/dist/chunk-3UXMQ3K2.js +0 -274
  389. package/dist/chunk-3UXMQ3K2.js.map +0 -1
  390. package/dist/chunk-5HJRZFMW.js +0 -207
  391. package/dist/chunk-62JQQUAU.js +0 -5368
  392. package/dist/chunk-66QHX566.js +0 -6306
  393. package/dist/chunk-66QHX566.js.map +0 -1
  394. package/dist/chunk-6JWEGFM5.js +0 -174
  395. package/dist/chunk-6JWEGFM5.js.map +0 -1
  396. package/dist/chunk-6WCAV27H.js +0 -494
  397. package/dist/chunk-6WXV5GTA.js +0 -8914
  398. package/dist/chunk-7RBJ2Z7Z.js +0 -172
  399. package/dist/chunk-7RBJ2Z7Z.js.map +0 -1
  400. package/dist/chunk-AVNSH2JE.js +0 -8939
  401. package/dist/chunk-BITS62MF.js +0 -77
  402. package/dist/chunk-BL2MX6CR.js +0 -249
  403. package/dist/chunk-BOPC3D6I.js +0 -604
  404. package/dist/chunk-C6EYCD5J.js +0 -942
  405. package/dist/chunk-CSZFZKVX.js +0 -97
  406. package/dist/chunk-D5CUAOQX.js +0 -297
  407. package/dist/chunk-D5UXWKLQ.js +0 -903
  408. package/dist/chunk-FA4YZFRV.js +0 -392
  409. package/dist/chunk-FUKDI2UK.js +0 -122
  410. package/dist/chunk-G4STCTY3.js +0 -399
  411. package/dist/chunk-GOJXKIFQ.js +0 -1605
  412. package/dist/chunk-GOJXKIFQ.js.map +0 -1
  413. package/dist/chunk-H5HDZ7IC.js +0 -139
  414. package/dist/chunk-HSPMBLKE.js +0 -363
  415. package/dist/chunk-IJ22WP3G.js +0 -275
  416. package/dist/chunk-ILSKYRDR.js +0 -169
  417. package/dist/chunk-JQU2LUZG.js +0 -57
  418. package/dist/chunk-JWSEPW7F.js +0 -225
  419. package/dist/chunk-KIGGMKAE.js +0 -66
  420. package/dist/chunk-KIGGMKAE.js.map +0 -1
  421. package/dist/chunk-KPYDTIAI.js +0 -317
  422. package/dist/chunk-LBO2YAZY.js +0 -3868
  423. package/dist/chunk-LOMH4TTC.js +0 -1079
  424. package/dist/chunk-LPXSM2DI.js +0 -66
  425. package/dist/chunk-MVB32GPI.js +0 -592
  426. package/dist/chunk-MXH35PJ5.js +0 -51
  427. package/dist/chunk-NEIUVSDK.js +0 -206
  428. package/dist/chunk-NPMAATZG.js +0 -64
  429. package/dist/chunk-NXZCCGES.js +0 -159
  430. package/dist/chunk-OP7DNHD2.js +0 -137
  431. package/dist/chunk-OP7DNHD2.js.map +0 -1
  432. package/dist/chunk-OWA7ZLC4.js +0 -547
  433. package/dist/chunk-P3W6SRSQ.js +0 -455
  434. package/dist/chunk-PA4W7BCQ.js +0 -23
  435. package/dist/chunk-PTGYM4J6.js +0 -89
  436. package/dist/chunk-QE3JEJXF.js +0 -831
  437. package/dist/chunk-QNLJ3GNZ.js +0 -433
  438. package/dist/chunk-R3EKM2P2.js +0 -191
  439. package/dist/chunk-SISA4HQR.js +0 -61
  440. package/dist/chunk-TP7HKSBX.js +0 -172
  441. package/dist/chunk-TPANP5A2.js +0 -91
  442. package/dist/chunk-TRPJJMCS.js +0 -346
  443. package/dist/chunk-TZEVD4Q6.js +0 -160
  444. package/dist/chunk-UWXDNVS5.js +0 -167
  445. package/dist/chunk-VD73V44J.js +0 -344
  446. package/dist/chunk-X7F4Z6UM.js +0 -156
  447. package/dist/chunk-ZL23HA4N.js +0 -19
  448. package/dist/claim-SLGYOOWD.js +0 -197
  449. package/dist/companies-IVMH6YII.js +0 -195
  450. package/dist/complete-45L2FI2X.js +0 -81
  451. package/dist/connect-WBGCBBFJ.js +0 -42
  452. package/dist/conversation-RIOL3OJ7.js +0 -93
  453. package/dist/conversion-writes-JU7Q2MUO.js +0 -120
  454. package/dist/conversions-3ISBR3TS.js +0 -76
  455. package/dist/conversions-TKIXNSYR.js +0 -135
  456. package/dist/create-7JY2PTIZ.js +0 -132
  457. package/dist/create-ACLCRXQP.js +0 -59
  458. package/dist/create-KYBMFD32.js +0 -207
  459. package/dist/create-VAPJ52GJ.js +0 -235
  460. package/dist/creatives-S5QUWUL6.js +0 -58
  461. package/dist/creatives-VQO2TKE3.js +0 -182
  462. package/dist/creatives-YJ3CXZQC.js +0 -87
  463. package/dist/creatives-YJ3CXZQC.js.map +0 -1
  464. package/dist/credentials-YTQ6BHWV.js +0 -287
  465. package/dist/critique-5LCG5TYF.js +0 -227
  466. package/dist/critique-BHYJYZDV.js +0 -1458
  467. package/dist/crm-IKTWHWEB.js +0 -318
  468. package/dist/crm-N7K57LZJ.js +0 -224
  469. package/dist/custom-conversions-YRYE65PU.js +0 -125
  470. package/dist/custom-conversions-YRYE65PU.js.map +0 -1
  471. package/dist/customers-NLU7NYDC.js +0 -56
  472. package/dist/delete-26J3X3ZH.js +0 -64
  473. package/dist/delete-A4F5Z54J.js +0 -66
  474. package/dist/delete-EVXOFT2H.js +0 -54
  475. package/dist/demographics-VZKFMM4X.js +0 -138
  476. package/dist/discard-ULRVUJDV.js +0 -66
  477. package/dist/domain-L4WCCX7R.js +0 -98
  478. package/dist/draft-57OQKHZI.js +0 -306
  479. package/dist/draft-EWDOIXSH.js +0 -233
  480. package/dist/draft-EWDOIXSH.js.map +0 -1
  481. package/dist/draft-GPN3HOAG.js +0 -328
  482. package/dist/draft-GPN3HOAG.js.map +0 -1
  483. package/dist/draft-O4S5RKWK.js +0 -217
  484. package/dist/draft-Y2QJE2NM.js +0 -281
  485. package/dist/experiment-G3FQVAJU.js +0 -1397
  486. package/dist/facets-EHQKGGJ2.js +0 -114
  487. package/dist/feedback-CAOZPGTT.js +0 -106
  488. package/dist/feedback-record-EXV5H6OS.js +0 -260
  489. package/dist/fetch-ETKT2RBC.js +0 -176
  490. package/dist/find-EVY4XEIQ.js +0 -134
  491. package/dist/fit-UJQ47C4A.js +0 -62
  492. package/dist/flows-Z7355RMD.js +0 -247
  493. package/dist/fonts-7VWBQPJF.js +0 -36
  494. package/dist/forecast-OI7YWZ6F.js +0 -118
  495. package/dist/funnel-2B3JXJPX.js +0 -394
  496. package/dist/ga4-2BL5YAYN.js +0 -55
  497. package/dist/get-2RSN4N3J.js +0 -56
  498. package/dist/get-6N7QJMIP.js +0 -79
  499. package/dist/google-7STODZQR.js +0 -136
  500. package/dist/google-ads-G7REKD4A.js +0 -195
  501. package/dist/gsc-UU3T2C6B.js +0 -30
  502. package/dist/history-IQ33J5PB.js +0 -67
  503. package/dist/history-YMK2JNZU.js +0 -133
  504. package/dist/hubspot-BUFS7S33.js +0 -779
  505. package/dist/icon-GB7UH5RF.js +0 -137
  506. package/dist/ideas-F6CIGTVU.js +0 -40
  507. package/dist/images-WCKTD6Z2.js +0 -92
  508. package/dist/ingest-RQUJGS7K.js +0 -107
  509. package/dist/ingest-XLTRLCDV.js +0 -23
  510. package/dist/insights-4HT2NAYP.js +0 -423
  511. package/dist/insights-4HT2NAYP.js.map +0 -1
  512. package/dist/inspect-KFVAMD4N.js +0 -189
  513. package/dist/inspiration-XQYHBJY2.js +0 -53
  514. package/dist/keyword-metrics-WYF3QMCW.js +0 -197
  515. package/dist/keywords-for-site-G5L5EP3T.js +0 -128
  516. package/dist/landing-WUILAWDS.js +0 -28
  517. package/dist/leads-2XOSAYP4.js +0 -293
  518. package/dist/leads-2XOSAYP4.js.map +0 -1
  519. package/dist/leads-4SJ4NJOI.js +0 -90
  520. package/dist/learn-CC6Q5IK2.js +0 -204
  521. package/dist/line-item-writes-YXKYR25W.js +0 -208
  522. package/dist/line-items-CKUD2UU4.js +0 -103
  523. package/dist/link-VBYFI7AM.js +0 -64
  524. package/dist/linkedin-XKVPSCLV.js +0 -1057
  525. package/dist/list-6ZNZGRRK.js +0 -151
  526. package/dist/list-ENYDGT3F.js +0 -64
  527. package/dist/list-VSUF2IWT.js +0 -303
  528. package/dist/locations-YA7NZY44.js +0 -67
  529. package/dist/locations-YA7NZY44.js.map +0 -1
  530. package/dist/log-AACKGBDW.js +0 -92
  531. package/dist/logo-YSNUUT33.js +0 -18
  532. package/dist/make-ED7HBLH3.js +0 -1353
  533. package/dist/map-63CQHWPI.js +0 -433
  534. package/dist/mcp-RKAXC6IP.js +0 -714
  535. package/dist/media-ES2UBGYW.js +0 -15
  536. package/dist/media-ES2UBGYW.js.map +0 -1
  537. package/dist/media-sources-PEHUMH7C.js +0 -32
  538. package/dist/members-SELIA674.js +0 -44
  539. package/dist/meta-AOIPEDV5.js +0 -69
  540. package/dist/meta-AOIPEDV5.js.map +0 -1
  541. package/dist/normalize-VAZPTBDX.js +0 -141
  542. package/dist/options-6FCNFWUF.js +0 -122
  543. package/dist/organization-SHREKDST.js +0 -881
  544. package/dist/organization-SHREKDST.js.map +0 -1
  545. package/dist/pages-FTI44OSH.js +0 -66
  546. package/dist/performance-K7E5KAZW.js +0 -24
  547. package/dist/pixels-6IUB3Y3H.js +0 -60
  548. package/dist/pixels-MBKR4XPX.js +0 -108
  549. package/dist/preview-V4YBD45S.js +0 -169
  550. package/dist/preview-V4YBD45S.js.map +0 -1
  551. package/dist/promoted-tweet-writes-PKEO6WUK.js +0 -180
  552. package/dist/promoted-tweets-7MXVZRBI.js +0 -119
  553. package/dist/publish-MPMGRV72.js +0 -341
  554. package/dist/reddit-XIHRI3CN.js +0 -26
  555. package/dist/refresh-A27N75NH.js +0 -94
  556. package/dist/release-UKRB5IUN.js +0 -60
  557. package/dist/remove-AFNFVPZY.js +0 -50
  558. package/dist/reopen-M5HE6J3G.js +0 -63
  559. package/dist/rerun-A2XHGFZS.js +0 -90
  560. package/dist/research-BLDY5UWH.js +0 -62
  561. package/dist/research-U7RQXMYH.js +0 -262
  562. package/dist/reset-4CCWB2RT.js +0 -54
  563. package/dist/reset-J3KCWFMZ.js +0 -54
  564. package/dist/resolve-HEK27ANI.js +0 -121
  565. package/dist/retry-HPZIUG2S.js +0 -62
  566. package/dist/retry-VVI6N6UR.js +0 -60
  567. package/dist/rules-SK5DFFPY.js +0 -96
  568. package/dist/rules-add-YQNYSME7.js +0 -462
  569. package/dist/run-KBN5K7LE.js +0 -65
  570. package/dist/run-M7ZDE6IA.js +0 -66
  571. package/dist/scaffold-ad-6BN5LWQH.js +0 -1511
  572. package/dist/scaffold-static-ad-VVZRAWBR.js +0 -1005
  573. package/dist/scaffold-video-LFIYI4GP.js +0 -883
  574. package/dist/schedule-QMOKWTJ3.js +0 -61
  575. package/dist/scheduled-agents-FCQHQ6KR.js +0 -50
  576. package/dist/schema-THFLCMBN.js +0 -132
  577. package/dist/search-XIUYSWO6.js +0 -174
  578. package/dist/select-QBU6ED4K.js +0 -101
  579. package/dist/set-prompt-TL64CRBQ.js +0 -193
  580. package/dist/setup-links-QVI6NAOK.js +0 -141
  581. package/dist/shared-NDRFKAH7.js +0 -31
  582. package/dist/site-PZPJY33N.js +0 -177
  583. package/dist/sources-ER7ANNG3.js +0 -454
  584. package/dist/sources-RMNFV4CA.js +0 -30
  585. package/dist/stale-ITFCPOER.js +0 -71
  586. package/dist/stats-RCLQE4HJ.js +0 -34
  587. package/dist/status-ABMJBCPJ.js +0 -62
  588. package/dist/stock-ECRBD7RP.js +0 -179
  589. package/dist/studio-MARZ22J2.js +0 -49
  590. package/dist/sync-QDD3MRJ6.js +0 -54
  591. package/dist/sync-definition-C6ROLKJ4.js +0 -64
  592. package/dist/tag-manager-G3LBQZUL.js +0 -43
  593. package/dist/tags-5JYOEYIT.js +0 -20
  594. package/dist/tags-B473RWAA.js +0 -224
  595. package/dist/tags-EWHPUM2V.js +0 -20
  596. package/dist/tags-KBCX6BDU.js +0 -26
  597. package/dist/tags-PEWN6GNZ.js +0 -20
  598. package/dist/targeting-criteria-EU65WUUF.js +0 -113
  599. package/dist/targets-KVXS5QKM.js +0 -103
  600. package/dist/testimonials-YMMA5YWL.js +0 -32
  601. package/dist/top-companies-OOX3DITI.js +0 -108
  602. package/dist/translate-OXVIMYHE.js +0 -604
  603. package/dist/triggers-OX2GKG4Y.js +0 -142
  604. package/dist/unlink-3USEPJSA.js +0 -67
  605. package/dist/unstage-VSCNPTAC.js +0 -85
  606. package/dist/update-6JKTH65B.js +0 -152
  607. package/dist/update-FG4ELXYJ.js +0 -98
  608. package/dist/update-GZFKHA3A.js +0 -188
  609. package/dist/update-HZHG67N6.js +0 -63
  610. package/dist/upload-BKCQ6FRW.js +0 -126
  611. package/dist/url-params-UN4DRN2H.js +0 -98
  612. package/dist/validate-ZS2M5Q3V.js +0 -117
  613. package/dist/videos-I6YXFBFT.js +0 -39
  614. package/dist/viewer-check-7ZG7KHEN.js +0 -80
  615. package/dist/web-UGU7YMII.js +0 -140
  616. package/dist/winning-ads-ABN5OULS.js +0 -84
  617. package/dist/write-commands-6VR2UD3T.js +0 -1024
  618. package/dist/write-commands-HCQI4Y27.js +0 -737
  619. package/dist/write-commands-HCQI4Y27.js.map +0 -1
  620. package/dist/x-WK2VQDPF.js +0 -47
  621. /package/dist/{account-Z65CPOWE.js.map → account-3H6BZO5H.js.map} +0 -0
  622. /package/dist/{account-KNRDOUJP.js.map → account-VGSYM7LY.js.map} +0 -0
  623. /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-AE5IJGGW.js.map} +0 -0
  624. /package/dist/{accounts-RW6KXBOQ.js.map → accounts-2ARS6XP2.js.map} +0 -0
  625. /package/dist/{accounts-RTN5ZGTU.js.map → accounts-AQFW4ZUM.js.map} +0 -0
  626. /package/dist/{accounts-UA2ZWRN4.js.map → accounts-K4INATCW.js.map} +0 -0
  627. /package/dist/{actions-HNLISA7T.js.map → actions-QMUHOAXG.js.map} +0 -0
  628. /package/dist/{activecampaign-I5CILZPU.js.map → activecampaign-J3QN5FMG.js.map} +0 -0
  629. /package/dist/{activities-IQPJPP4B.js.map → activities-T253KK4Q.js.map} +0 -0
  630. /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-VRSBI2Z2.js.map} +0 -0
  631. /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-IEBVEAMS.js.map} +0 -0
  632. /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-ALV4KFPZ.js.map} +0 -0
  633. /package/dist/{add-XF5COUAS.js.map → add-VDUA6OWM.js.map} +0 -0
  634. /package/dist/{add-6WKPFMLG.js.map → add-XHOKCSW5.js.map} +0 -0
  635. /package/dist/{ads-L65JIKCD.js.map → ads-CQZHD7FC.js.map} +0 -0
  636. /package/dist/{ads-G6AS5L7G.js.map → ads-HGDPNIT6.js.map} +0 -0
  637. /package/dist/{advertisers-6NUM2Q3A.js.map → advertisers-UDSEFMP7.js.map} +0 -0
  638. /package/dist/{analytics-VLHE5A2M.js.map → analytics-TBETZOPJ.js.map} +0 -0
  639. /package/dist/{analytics-QKP3A5F3.js.map → analytics-VH74LMMC.js.map} +0 -0
  640. /package/dist/{connect-WBGCBBFJ.js.map → asset-writes-L5TMKIZC.js.map} +0 -0
  641. /package/dist/{assign-6HI6TNLP.js.map → assign-6IE2ASFC.js.map} +0 -0
  642. /package/dist/{audience-size-25LP2OBF.js.map → audience-size-CSBWDFEP.js.map} +0 -0
  643. /package/dist/{audiences-RPLVMO4H.js.map → audiences-AAZH56WD.js.map} +0 -0
  644. /package/dist/{audit-YY6X2MPA.js.map → audit-AEENRVGD.js.map} +0 -0
  645. /package/dist/{autocomplete-SAWJK4NF.js.map → autocomplete-AAGTJHVL.js.map} +0 -0
  646. /package/dist/{avatars-MXTI74VC.js.map → avatars-VEATUUKU.js.map} +0 -0
  647. /package/dist/{bid-pricing-HZ74SLEB.js.map → bid-pricing-SZTGCZTV.js.map} +0 -0
  648. /package/dist/{brand-T3OACVQX.js.map → brand-MXGETE4R.js.map} +0 -0
  649. /package/dist/{brief-BN4UGUXF.js.map → brief-3GHSHOGM.js.map} +0 -0
  650. /package/dist/{businesses-PRRYPR7H.js.map → businesses-H3HIDQX6.js.map} +0 -0
  651. /package/dist/{campaign-groups-YJK767AP.js.map → campaign-groups-WRI56M5X.js.map} +0 -0
  652. /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-U5PUVSMT.js.map} +0 -0
  653. /package/dist/{campaigns-GALDR5KK.js.map → campaigns-4QWC2JE7.js.map} +0 -0
  654. /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-JEIKY2M4.js.map} +0 -0
  655. /package/dist/{campaigns-NR6TNQFN.js.map → campaigns-Q4HN7HBY.js.map} +0 -0
  656. /package/dist/{canvas-GJAQAVS6.js.map → canvas-VJ3XKCAC.js.map} +0 -0
  657. /package/dist/{capabilities-2KT6TCGZ.js.map → capabilities-SNGGAOV3.js.map} +0 -0
  658. /package/dist/{catalog-USZL4SGX.js.map → catalog-S32MX453.js.map} +0 -0
  659. /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-OCVXZLIF.js.map} +0 -0
  660. /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-QVF2FD3E.js.map} +0 -0
  661. /package/dist/{check-MMJGFFZS.js.map → check-Z6UMIQKD.js.map} +0 -0
  662. /package/dist/{chunk-KPYDTIAI.js.map → chunk-2WZI36D3.js.map} +0 -0
  663. /package/dist/{chunk-FA4YZFRV.js.map → chunk-3AMLOCXY.js.map} +0 -0
  664. /package/dist/{chunk-X7F4Z6UM.js.map → chunk-3CVAEQMZ.js.map} +0 -0
  665. /package/dist/{chunk-SISA4HQR.js.map → chunk-3WAYZQNV.js.map} +0 -0
  666. /package/dist/{chunk-JWSEPW7F.js.map → chunk-46GWHUKN.js.map} +0 -0
  667. /package/dist/{chunk-R3EKM2P2.js.map → chunk-4O6T76A3.js.map} +0 -0
  668. /package/dist/{chunk-D5UXWKLQ.js.map → chunk-5MCVK4A3.js.map} +0 -0
  669. /package/dist/{chunk-CSZFZKVX.js.map → chunk-5ZLN23V5.js.map} +0 -0
  670. /package/dist/{chunk-OWA7ZLC4.js.map → chunk-77ULVP62.js.map} +0 -0
  671. /package/dist/{chunk-QNLJ3GNZ.js.map → chunk-AW2GKIGS.js.map} +0 -0
  672. /package/dist/{chunk-BL2MX6CR.js.map → chunk-BRLY6XD6.js.map} +0 -0
  673. /package/dist/{chunk-NPMAATZG.js.map → chunk-C7NWUCLQ.js.map} +0 -0
  674. /package/dist/{chunk-PA4W7BCQ.js.map → chunk-D4HKJBEW.js.map} +0 -0
  675. /package/dist/{chunk-H5HDZ7IC.js.map → chunk-DCBZ5CHZ.js.map} +0 -0
  676. /package/dist/{chunk-BITS62MF.js.map → chunk-G6XKD7QE.js.map} +0 -0
  677. /package/dist/{chunk-TP7HKSBX.js.map → chunk-GBFL4TD2.js.map} +0 -0
  678. /package/dist/{chunk-3TZVZXM6.js.map → chunk-H5SCKWFT.js.map} +0 -0
  679. /package/dist/{chunk-HSPMBLKE.js.map → chunk-HXPK6KAL.js.map} +0 -0
  680. /package/dist/{chunk-2PWNIEW4.js.map → chunk-I7GOSMWT.js.map} +0 -0
  681. /package/dist/{chunk-LOMH4TTC.js.map → chunk-IBY44U2M.js.map} +0 -0
  682. /package/dist/{chunk-IJ22WP3G.js.map → chunk-ITNHIZKK.js.map} +0 -0
  683. /package/dist/{chunk-P3W6SRSQ.js.map → chunk-J33P2JNS.js.map} +0 -0
  684. /package/dist/{chunk-NEIUVSDK.js.map → chunk-JH2L5CQD.js.map} +0 -0
  685. /package/dist/{chunk-62JQQUAU.js.map → chunk-JQH5VG6F.js.map} +0 -0
  686. /package/dist/{chunk-6WXV5GTA.js.map → chunk-JVH5A3XC.js.map} +0 -0
  687. /package/dist/{chunk-ILSKYRDR.js.map → chunk-KTOYQP6D.js.map} +0 -0
  688. /package/dist/{chunk-G4STCTY3.js.map → chunk-LO3IF5PS.js.map} +0 -0
  689. /package/dist/{chunk-BOPC3D6I.js.map → chunk-LRRFGOW3.js.map} +0 -0
  690. /package/dist/{chunk-C6EYCD5J.js.map → chunk-LTPTJWZC.js.map} +0 -0
  691. /package/dist/{chunk-NXZCCGES.js.map → chunk-MRQHJW5U.js.map} +0 -0
  692. /package/dist/{chunk-TRPJJMCS.js.map → chunk-NHYI7ORL.js.map} +0 -0
  693. /package/dist/{chunk-MXH35PJ5.js.map → chunk-NLI7C3K2.js.map} +0 -0
  694. /package/dist/{chunk-TPANP5A2.js.map → chunk-NSEMXBUB.js.map} +0 -0
  695. /package/dist/{chunk-LBO2YAZY.js.map → chunk-OM2BRYXJ.js.map} +0 -0
  696. /package/dist/{chunk-2LI6746F.js.map → chunk-OY4SKCIU.js.map} +0 -0
  697. /package/dist/{chunk-6WCAV27H.js.map → chunk-OYAJNTRO.js.map} +0 -0
  698. /package/dist/{chunk-QE3JEJXF.js.map → chunk-PL7J3DPQ.js.map} +0 -0
  699. /package/dist/{chunk-PTGYM4J6.js.map → chunk-PUSBUMYM.js.map} +0 -0
  700. /package/dist/{chunk-D5CUAOQX.js.map → chunk-RRADFRPI.js.map} +0 -0
  701. /package/dist/{chunk-VD73V44J.js.map → chunk-SGEPZB3D.js.map} +0 -0
  702. /package/dist/{chunk-LPXSM2DI.js.map → chunk-TFTZDWCX.js.map} +0 -0
  703. /package/dist/{chunk-2XRMPSEV.js.map → chunk-TG4NCHFS.js.map} +0 -0
  704. /package/dist/{chunk-5HJRZFMW.js.map → chunk-TTHM66TA.js.map} +0 -0
  705. /package/dist/{chunk-ZL23HA4N.js.map → chunk-VL2GNXZY.js.map} +0 -0
  706. /package/dist/{chunk-TZEVD4Q6.js.map → chunk-VQPZDM6N.js.map} +0 -0
  707. /package/dist/{chunk-JQU2LUZG.js.map → chunk-XCKINS7K.js.map} +0 -0
  708. /package/dist/{chunk-AVNSH2JE.js.map → chunk-YLYXSJ6O.js.map} +0 -0
  709. /package/dist/{chunk-MVB32GPI.js.map → chunk-ZAPO6UWS.js.map} +0 -0
  710. /package/dist/{chunk-FUKDI2UK.js.map → chunk-ZEPUDYPL.js.map} +0 -0
  711. /package/dist/{chunk-UWXDNVS5.js.map → chunk-ZJSGGJ5R.js.map} +0 -0
  712. /package/dist/{claim-SLGYOOWD.js.map → claim-J2LYNHZK.js.map} +0 -0
  713. /package/dist/{companies-IVMH6YII.js.map → companies-VYY22B6T.js.map} +0 -0
  714. /package/dist/{complete-45L2FI2X.js.map → complete-5I32XM7P.js.map} +0 -0
  715. /package/dist/{customers-NLU7NYDC.js.map → connect-EUFFQQ7O.js.map} +0 -0
  716. /package/dist/{conversation-RIOL3OJ7.js.map → conversation-D6KZHGPP.js.map} +0 -0
  717. /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-ECZBVY7D.js.map} +0 -0
  718. /package/dist/{conversions-3ISBR3TS.js.map → conversions-5QCSCRLI.js.map} +0 -0
  719. /package/dist/{conversions-TKIXNSYR.js.map → conversions-Y3X6ZTTF.js.map} +0 -0
  720. /package/dist/{create-ACLCRXQP.js.map → create-2JCRTQJL.js.map} +0 -0
  721. /package/dist/{create-VAPJ52GJ.js.map → create-LMSQPHPB.js.map} +0 -0
  722. /package/dist/{create-7JY2PTIZ.js.map → create-MBLNB5RY.js.map} +0 -0
  723. /package/dist/{create-KYBMFD32.js.map → create-VR7RXKL7.js.map} +0 -0
  724. /package/dist/{creatives-VQO2TKE3.js.map → creatives-5C42BDMW.js.map} +0 -0
  725. /package/dist/{creatives-S5QUWUL6.js.map → creatives-HYPSTANO.js.map} +0 -0
  726. /package/dist/{credentials-YTQ6BHWV.js.map → credentials-4H4AUYJN.js.map} +0 -0
  727. /package/dist/{critique-BHYJYZDV.js.map → critique-UOJZWDG2.js.map} +0 -0
  728. /package/dist/{critique-5LCG5TYF.js.map → critique-WCWMQQVV.js.map} +0 -0
  729. /package/dist/{crm-IKTWHWEB.js.map → crm-B7OTHMBP.js.map} +0 -0
  730. /package/dist/{crm-N7K57LZJ.js.map → crm-DZRWKJ6V.js.map} +0 -0
  731. /package/dist/{fit-UJQ47C4A.js.map → customers-AOFJJCGD.js.map} +0 -0
  732. /package/dist/{delete-26J3X3ZH.js.map → delete-DEG5KOBY.js.map} +0 -0
  733. /package/dist/{delete-EVXOFT2H.js.map → delete-EFIODCXG.js.map} +0 -0
  734. /package/dist/{delete-A4F5Z54J.js.map → delete-PQIMW2LK.js.map} +0 -0
  735. /package/dist/{demographics-VZKFMM4X.js.map → demographics-F26DIOCM.js.map} +0 -0
  736. /package/dist/{discard-ULRVUJDV.js.map → discard-2EJY6UGP.js.map} +0 -0
  737. /package/dist/{domain-L4WCCX7R.js.map → domain-XLJABLWB.js.map} +0 -0
  738. /package/dist/{draft-O4S5RKWK.js.map → draft-2YND6T4U.js.map} +0 -0
  739. /package/dist/{draft-Y2QJE2NM.js.map → draft-34CGWUVA.js.map} +0 -0
  740. /package/dist/{draft-57OQKHZI.js.map → draft-WRVEANL5.js.map} +0 -0
  741. /package/dist/{experiment-G3FQVAJU.js.map → experiment-7N4QFRWV.js.map} +0 -0
  742. /package/dist/{facets-EHQKGGJ2.js.map → facets-OPTNDPW2.js.map} +0 -0
  743. /package/dist/{feedback-CAOZPGTT.js.map → feedback-43BPXNBI.js.map} +0 -0
  744. /package/dist/{feedback-record-EXV5H6OS.js.map → feedback-record-35ZSDL6Z.js.map} +0 -0
  745. /package/dist/{fetch-ETKT2RBC.js.map → fetch-O46XBA7S.js.map} +0 -0
  746. /package/dist/{find-EVY4XEIQ.js.map → find-FSQAEGGF.js.map} +0 -0
  747. /package/dist/{fonts-7VWBQPJF.js.map → fit-CWJ5QQ4R.js.map} +0 -0
  748. /package/dist/{flows-Z7355RMD.js.map → flows-CVORIQ4B.js.map} +0 -0
  749. /package/dist/{ideas-F6CIGTVU.js.map → fonts-6TPYR6IW.js.map} +0 -0
  750. /package/dist/{forecast-OI7YWZ6F.js.map → forecast-2VLA6NJA.js.map} +0 -0
  751. /package/dist/{funnel-2B3JXJPX.js.map → funnel-XLKDLXMG.js.map} +0 -0
  752. /package/dist/{ga4-2BL5YAYN.js.map → ga4-LPDIBNYP.js.map} +0 -0
  753. /package/dist/{get-2RSN4N3J.js.map → get-O56GGN3V.js.map} +0 -0
  754. /package/dist/{get-6N7QJMIP.js.map → get-WFQ4XEAW.js.map} +0 -0
  755. /package/dist/{google-7STODZQR.js.map → google-5ESVO76E.js.map} +0 -0
  756. /package/dist/{google-ads-G7REKD4A.js.map → google-ads-DZMOTUY5.js.map} +0 -0
  757. /package/dist/{gsc-UU3T2C6B.js.map → gsc-FIZTQX3N.js.map} +0 -0
  758. /package/dist/{history-YMK2JNZU.js.map → history-43BBQZOB.js.map} +0 -0
  759. /package/dist/{history-IQ33J5PB.js.map → history-QKDYBSYM.js.map} +0 -0
  760. /package/dist/{hubspot-BUFS7S33.js.map → hubspot-S44MPK3G.js.map} +0 -0
  761. /package/dist/{icon-GB7UH5RF.js.map → icon-CSVAZ7NE.js.map} +0 -0
  762. /package/dist/{ingest-XLTRLCDV.js.map → ideas-SLP5WXFF.js.map} +0 -0
  763. /package/dist/{images-WCKTD6Z2.js.map → images-TWZOROCT.js.map} +0 -0
  764. /package/dist/{logo-YSNUUT33.js.map → ingest-5GCZ5ZBV.js.map} +0 -0
  765. /package/dist/{ingest-RQUJGS7K.js.map → ingest-P54J4W3V.js.map} +0 -0
  766. /package/dist/{inspect-KFVAMD4N.js.map → inspect-S4COGUBC.js.map} +0 -0
  767. /package/dist/{inspiration-XQYHBJY2.js.map → inspiration-IX5N724J.js.map} +0 -0
  768. /package/dist/{keyword-metrics-WYF3QMCW.js.map → keyword-metrics-26CCKFZK.js.map} +0 -0
  769. /package/dist/{keywords-for-site-G5L5EP3T.js.map → keywords-for-site-JWWECF63.js.map} +0 -0
  770. /package/dist/{landing-WUILAWDS.js.map → landing-VFDRADZY.js.map} +0 -0
  771. /package/dist/{leads-4SJ4NJOI.js.map → leads-DTKKYSKH.js.map} +0 -0
  772. /package/dist/{learn-CC6Q5IK2.js.map → learn-GQ75IPRK.js.map} +0 -0
  773. /package/dist/{line-item-writes-YXKYR25W.js.map → line-item-writes-DVVHVR3Y.js.map} +0 -0
  774. /package/dist/{line-items-CKUD2UU4.js.map → line-items-EOZMK7A5.js.map} +0 -0
  775. /package/dist/{link-VBYFI7AM.js.map → link-R5NGCQ5H.js.map} +0 -0
  776. /package/dist/{linkedin-XKVPSCLV.js.map → linkedin-DHZO3IJX.js.map} +0 -0
  777. /package/dist/{list-VSUF2IWT.js.map → list-57QBEGLM.js.map} +0 -0
  778. /package/dist/{list-ENYDGT3F.js.map → list-Q44BBHDI.js.map} +0 -0
  779. /package/dist/{list-6ZNZGRRK.js.map → list-W6G2NTG5.js.map} +0 -0
  780. /package/dist/{log-AACKGBDW.js.map → log-B6X5EPKA.js.map} +0 -0
  781. /package/dist/{performance-K7E5KAZW.js.map → logo-VHXH4J6A.js.map} +0 -0
  782. /package/dist/{make-ED7HBLH3.js.map → make-OIFLF3QS.js.map} +0 -0
  783. /package/dist/{map-63CQHWPI.js.map → map-PIOZT2MQ.js.map} +0 -0
  784. /package/dist/{mcp-RKAXC6IP.js.map → mcp-GFKHLWDB.js.map} +0 -0
  785. /package/dist/{media-sources-PEHUMH7C.js.map → media-sources-VMMMW5UM.js.map} +0 -0
  786. /package/dist/{members-SELIA674.js.map → members-W2QBMNIW.js.map} +0 -0
  787. /package/dist/{normalize-VAZPTBDX.js.map → normalize-N6XC3SLC.js.map} +0 -0
  788. /package/dist/{options-6FCNFWUF.js.map → options-XYJY2OEQ.js.map} +0 -0
  789. /package/dist/{pages-FTI44OSH.js.map → pages-PTWRXAZT.js.map} +0 -0
  790. /package/dist/{reddit-XIHRI3CN.js.map → performance-7NEZTOJ5.js.map} +0 -0
  791. /package/dist/{pixels-6IUB3Y3H.js.map → pixels-MYT3TCHZ.js.map} +0 -0
  792. /package/dist/{pixels-MBKR4XPX.js.map → pixels-ZZCQUS3J.js.map} +0 -0
  793. /package/dist/{promoted-tweet-writes-PKEO6WUK.js.map → promoted-tweet-writes-X2F7R2AE.js.map} +0 -0
  794. /package/dist/{promoted-tweets-7MXVZRBI.js.map → promoted-tweets-XCSD6VKP.js.map} +0 -0
  795. /package/dist/{publish-MPMGRV72.js.map → publish-OBY6E43R.js.map} +0 -0
  796. /package/dist/{run-KBN5K7LE.js.map → reddit-WJ6KHYBC.js.map} +0 -0
  797. /package/dist/{refresh-A27N75NH.js.map → refresh-G5BQ2LWU.js.map} +0 -0
  798. /package/dist/{release-UKRB5IUN.js.map → release-PBZO35KY.js.map} +0 -0
  799. /package/dist/{remove-AFNFVPZY.js.map → remove-VJ2MEUPM.js.map} +0 -0
  800. /package/dist/{reopen-M5HE6J3G.js.map → reopen-W3LYOHSR.js.map} +0 -0
  801. /package/dist/{rerun-A2XHGFZS.js.map → rerun-4GDNBFNM.js.map} +0 -0
  802. /package/dist/{research-U7RQXMYH.js.map → research-4YTFPGH7.js.map} +0 -0
  803. /package/dist/{research-BLDY5UWH.js.map → research-LOQRIBO6.js.map} +0 -0
  804. /package/dist/{reset-4CCWB2RT.js.map → reset-55CCQGXB.js.map} +0 -0
  805. /package/dist/{reset-J3KCWFMZ.js.map → reset-AVTQEJPZ.js.map} +0 -0
  806. /package/dist/{resolve-HEK27ANI.js.map → resolve-E6FNMFE3.js.map} +0 -0
  807. /package/dist/{retry-VVI6N6UR.js.map → retry-HBJ7MKVI.js.map} +0 -0
  808. /package/dist/{retry-HPZIUG2S.js.map → retry-QBRYM6MG.js.map} +0 -0
  809. /package/dist/{rules-SK5DFFPY.js.map → rules-XNDBGOIS.js.map} +0 -0
  810. /package/dist/{rules-add-YQNYSME7.js.map → rules-add-UM3ZKSVD.js.map} +0 -0
  811. /package/dist/{run-M7ZDE6IA.js.map → run-D4YHZ4Z4.js.map} +0 -0
  812. /package/dist/{shared-NDRFKAH7.js.map → run-ZCJ7NP63.js.map} +0 -0
  813. /package/dist/{scaffold-ad-6BN5LWQH.js.map → scaffold-ad-VQZAP32M.js.map} +0 -0
  814. /package/dist/{scaffold-static-ad-VVZRAWBR.js.map → scaffold-static-ad-LEU4M44N.js.map} +0 -0
  815. /package/dist/{scaffold-video-LFIYI4GP.js.map → scaffold-video-PSWSYRSC.js.map} +0 -0
  816. /package/dist/{schedule-QMOKWTJ3.js.map → schedule-AAH7HYFK.js.map} +0 -0
  817. /package/dist/{scheduled-agents-FCQHQ6KR.js.map → scheduled-agents-HDABMHZI.js.map} +0 -0
  818. /package/dist/{schema-THFLCMBN.js.map → schema-OH5OWMVQ.js.map} +0 -0
  819. /package/dist/{search-XIUYSWO6.js.map → search-BSDPVSGA.js.map} +0 -0
  820. /package/dist/{select-QBU6ED4K.js.map → select-EI4QF4YZ.js.map} +0 -0
  821. /package/dist/{set-prompt-TL64CRBQ.js.map → set-prompt-RKDAGUWG.js.map} +0 -0
  822. /package/dist/{setup-links-QVI6NAOK.js.map → setup-links-CNNJA7AB.js.map} +0 -0
  823. /package/dist/{sync-definition-C6ROLKJ4.js.map → shared-3IBNDEFL.js.map} +0 -0
  824. /package/dist/{site-PZPJY33N.js.map → site-NV4U7PIF.js.map} +0 -0
  825. /package/dist/{sources-ER7ANNG3.js.map → sources-ATONL7W5.js.map} +0 -0
  826. /package/dist/{sources-RMNFV4CA.js.map → sources-C3TGHKLQ.js.map} +0 -0
  827. /package/dist/{stale-ITFCPOER.js.map → stale-6QPXL6BZ.js.map} +0 -0
  828. /package/dist/{stats-RCLQE4HJ.js.map → stats-ZAGJH4AD.js.map} +0 -0
  829. /package/dist/{status-ABMJBCPJ.js.map → status-BML3F4MZ.js.map} +0 -0
  830. /package/dist/{stock-ECRBD7RP.js.map → stock-6SHHLSKG.js.map} +0 -0
  831. /package/dist/{studio-MARZ22J2.js.map → studio-ZLCGXFAN.js.map} +0 -0
  832. /package/dist/{sync-QDD3MRJ6.js.map → sync-DZAOUQPE.js.map} +0 -0
  833. /package/dist/{viewer-check-7ZG7KHEN.js.map → sync-definition-RFEL65JE.js.map} +0 -0
  834. /package/dist/{tag-manager-G3LBQZUL.js.map → tag-manager-3CJ66GKJ.js.map} +0 -0
  835. /package/dist/{tags-EWHPUM2V.js.map → tags-2KSXCJRZ.js.map} +0 -0
  836. /package/dist/{tags-KBCX6BDU.js.map → tags-662KZJLV.js.map} +0 -0
  837. /package/dist/{tags-5JYOEYIT.js.map → tags-6QBVW25V.js.map} +0 -0
  838. /package/dist/{tags-PEWN6GNZ.js.map → tags-LQCEJGIL.js.map} +0 -0
  839. /package/dist/{tags-B473RWAA.js.map → tags-RIVD54ZG.js.map} +0 -0
  840. /package/dist/{targeting-criteria-EU65WUUF.js.map → targeting-criteria-XNLYPIL2.js.map} +0 -0
  841. /package/dist/{targets-KVXS5QKM.js.map → targets-OYIVS5KJ.js.map} +0 -0
  842. /package/dist/{testimonials-YMMA5YWL.js.map → testimonials-WT43CF7V.js.map} +0 -0
  843. /package/dist/{top-companies-OOX3DITI.js.map → top-companies-6QQMOS2Y.js.map} +0 -0
  844. /package/dist/{translate-OXVIMYHE.js.map → translate-7QN7JFGU.js.map} +0 -0
  845. /package/dist/{triggers-OX2GKG4Y.js.map → triggers-LVQY3QJ2.js.map} +0 -0
  846. /package/dist/{unlink-3USEPJSA.js.map → unlink-5ASZTCS2.js.map} +0 -0
  847. /package/dist/{unstage-VSCNPTAC.js.map → unstage-LNZTEATR.js.map} +0 -0
  848. /package/dist/{update-6JKTH65B.js.map → update-7BIR4GYO.js.map} +0 -0
  849. /package/dist/{update-FG4ELXYJ.js.map → update-BRLM5DB3.js.map} +0 -0
  850. /package/dist/{update-HZHG67N6.js.map → update-DRZAAJQ2.js.map} +0 -0
  851. /package/dist/{update-GZFKHA3A.js.map → update-NOWC3ICD.js.map} +0 -0
  852. /package/dist/{upload-BKCQ6FRW.js.map → upload-457Q4ANZ.js.map} +0 -0
  853. /package/dist/{url-params-UN4DRN2H.js.map → url-params-KM4NJGYC.js.map} +0 -0
  854. /package/dist/{validate-ZS2M5Q3V.js.map → validate-COLEPJBA.js.map} +0 -0
  855. /package/dist/{videos-I6YXFBFT.js.map → videos-5IDZTEWC.js.map} +0 -0
  856. /package/dist/{web-UGU7YMII.js.map → web-FZYOCCYN.js.map} +0 -0
  857. /package/dist/{winning-ads-ABN5OULS.js.map → winning-ads-I4DMP7RU.js.map} +0 -0
  858. /package/dist/{write-commands-6VR2UD3T.js.map → write-commands-FYB6QG7K.js.map} +0 -0
  859. /package/dist/{x-WK2VQDPF.js.map → x-OMN5DDLM.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/ads/meta/catalogs.ts"],"sourcesContent":["import { retailerIdFilter } from \"@baker/api/ads-meta/catalogs\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { repeatedValues } from \"../../../lib/repeatedFlags.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { writeAdsJson, writeAdsOutput, writeJsonEnvelope } from \"../output.ts\";\nimport { csvOrJson, handleMetaError } from \"./shared.ts\";\nimport {\n bareAccountId,\n failWriteValidation,\n loadJsonFileArg,\n mergePayload,\n numberFlag,\n requireTarget,\n stageOp,\n upper,\n} from \"./write-shared.ts\";\n\n/**\n * Product catalogs and what is in them — products, product sets, feeds — read\n * live and changed through this chat's draft (applied at publish). Changing a\n * catalog needs the Catalog permission for Meta (a per-company switch); Baker\n * changes only catalogs the ad account's own Business owns.\n */\n\ntype Row = Record<string, unknown>;\ntype Args = Record<string, unknown>;\n\nconst STAGED_NOTE = \"Staged until publish — review with `baker ads meta draft`.\";\nconst outputArg = { type: \"string\", description: \"json|csv|jsonl|md\", default: \"json\" } as const;\nconst accountArg = {\n type: \"string\",\n description: \"Numeric account ID or act_N (whose Business owns the catalog)\",\n} as const;\nconst schemaAccount = { type: \"string\", description: \"Ad account the change is staged under\", required: false };\nconst schemaOutput = { type: \"string\", description: \"json|csv|jsonl|md\", required: false, default: \"json\" };\n\nfunction emit(rows: Row[], args: Args, hints: string[]): void {\n const fmt = csvOrJson(args);\n if (fmt !== \"json\") {\n writeAdsOutput(rows, fmt, undefined, hints);\n return;\n }\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data: rows, hints } : { ok: true, data: rows });\n}\n\nfunction requireCatalogId(args: Args): string {\n const id = args[\"catalog-id\"];\n if (typeof id !== \"string\" || id.length === 0) {\n failWriteValidation(\"pass --catalog-id (from `baker ads meta catalogs --business-id <id>`, or a meta_temp_* ref)\");\n }\n return id;\n}\n\nfunction stringArg(value: unknown): string | undefined {\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction jsonArg(value: unknown, flag: string): Record<string, unknown> | undefined {\n if (typeof value !== \"string\" || value.length === 0) return undefined;\n try {\n return JSON.parse(value) as Record<string, unknown>;\n } catch {\n failWriteValidation(`--${flag} takes JSON, e.g. '{\"brand\":{\"eq\":\"Acme\"}}'`);\n }\n}\n\nasync function contents(edge: \"products\" | \"feeds\" | \"diagnostics\", args: Args): Promise<Row[]> {\n const params: Record<string, string> = { \"catalog-id\": requireCatalogId(args), edge };\n if (args.full) params.full = \"true\";\n if (stringArg(args[\"retailer-id\"])) params[\"retailer-id\"] = String(args[\"retailer-id\"]);\n return await apiGet<Row[]>(\"/api/ads/meta/catalog-contents\", params);\n}\n\n// --- Catalogs (list, create, rename, delete) ---\n\nregisterSchema({\n command: \"ads.meta.catalogs\",\n description:\n \"Product catalogs a Business owns (for catalog / Advantage+ catalog ads), or one catalog's product sets with --catalog-id.\",\n args: {\n \"business-id\": { type: \"string\", description: \"Business ID (baker ads meta businesses)\", required: false },\n \"catalog-id\": { type: \"string\", description: \"List this catalog's product sets\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Bypass the cache\", required: false },\n output: schemaOutput,\n },\n});\n\nconst catalogsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"Product catalogs on a Business, or a catalog's product sets. Runs by default. Example: baker ads meta catalogs --business-id 601050769212882; --catalog-id <id> for its sets\",\n },\n args: {\n \"business-id\": { type: \"string\", description: \"Business ID — from `baker ads meta businesses`\" },\n \"catalog-id\": { type: \"string\", description: \"List the product sets of this catalog\" },\n \"no-cache\": NO_CACHE_ARG,\n output: outputArg,\n },\n run: async ({ args }) => {\n try {\n const cache: Record<string, string> = args[\"no-cache\"] ? { \"skip-cache\": \"true\" } : {};\n if (args[\"catalog-id\"]) {\n const rows = await apiGet<Row[]>(\"/api/ads/meta/product-sets\", {\n \"catalog-id\": args[\"catalog-id\"] as string,\n ...cache,\n });\n emit(rows, args, [\n 'A catalog ad set promotes one product set: promoted_object {\"product_set_id\":\"<id>\"}; product_count 0 means the set\\'s filter matches nothing yet. Read just after a publish with --no-cache.',\n ]);\n return;\n }\n if (!args[\"business-id\"]) {\n writeAdsJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: \"pass --business-id (from `baker ads meta businesses`) or --catalog-id\",\n },\n });\n process.exit(1);\n }\n const rows = await apiGet<Row[]>(\"/api/ads/meta/catalogs\", {\n \"business-id\": args[\"business-id\"] as string,\n ...cache,\n });\n emit(\n rows,\n args,\n rows.length === 0\n ? [\n \"This Business owns no product catalogs. Stage one with `baker ads meta catalogs create --name …`, or — for a catalog another Business shares with it — ask for its id and read it with `catalogs --catalog-id <id>` (shared catalogs are read, never changed).\",\n ]\n : [\n \"`catalogs --catalog-id <id>` lists a catalog's product sets; `catalogs products --catalog-id <id>` its products.\",\n ],\n );\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.create\",\n description:\n \"Stage a new product catalog on the ad account's own Business, made at publish. Needs the Catalog permission for Meta.\",\n args: {\n \"account-id\": schemaAccount,\n name: { type: \"string\", description: \"Catalog name\", required: true },\n pixel: { type: \"string\", description: \"Pixel to connect (repeatable) — catalog ads need one\", required: false },\n },\n});\n\nconst catalogCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a new product catalog on the ad account's own Business. ${STAGED_NOTE}\nConnect the account's pixel with --pixel (\\`baker ads meta pixels\\`): Meta runs catalog ads only on a catalog with one.\nThen add products (\\`catalogs products create --catalog-id meta_temp_…\\`) and a product set to advertise.\nExample: baker ads meta catalogs create --account-id act_123 --name \"Spring shop\" --pixel 1275507706837548`,\n },\n args: {\n \"account-id\": accountArg,\n name: { type: \"string\", description: \"Catalog name\" },\n pixel: { type: \"string\", description: \"Pixel to connect once it exists (repeatable) — catalog ads need one\" },\n },\n run: async ({ args, rawArgs }) => {\n const pixels = repeatedValues(rawArgs, \"pixel\", args.pixel);\n await stageOp(\n {\n kind: \"productCatalog.create\",\n accountId: bareAccountId(args as Args),\n payload: { name: args.name, event_sources: pixels.length > 0 ? pixels : undefined },\n },\n [\n \"Add products with `catalogs products create --catalog-id <ref>` and a set with `catalogs sets create --catalog-id <ref>`.\",\n ],\n );\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.update\",\n description:\n \"Stage a change to a product catalog the ad account's Business owns: a new name, pixels to connect (catalog ads need one) or disconnect.\",\n args: {\n id: { type: \"positional\", description: \"Catalog id\", required: true },\n \"account-id\": schemaAccount,\n name: { type: \"string\", description: \"New name\", required: false },\n pixel: { type: \"string\", description: \"Pixel to connect (repeatable)\", required: false },\n \"unlink-pixel\": { type: \"string\", description: \"Pixel to disconnect (repeatable)\", required: false },\n },\n});\n\nconst catalogUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Rename a product catalog, or connect / disconnect pixels. ${STAGED_NOTE}\nExample: baker ads meta catalogs update 1798573158016525 --account-id act_123 --pixel 1275507706837548`,\n },\n args: {\n id: { type: \"positional\", description: \"Catalog id\", required: true },\n \"account-id\": accountArg,\n name: { type: \"string\", description: \"New name\" },\n pixel: { type: \"string\", description: \"Pixel to connect (repeatable) — from `baker ads meta pixels`\" },\n \"unlink-pixel\": { type: \"string\", description: \"Pixel to disconnect (repeatable)\" },\n },\n run: async ({ args, rawArgs }) => {\n const pixels = repeatedValues(rawArgs, \"pixel\", args.pixel);\n const unlink = repeatedValues(rawArgs, \"unlink-pixel\", args[\"unlink-pixel\"]);\n await stageOp({\n kind: \"productCatalog.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"catalog\"),\n payload: {\n name: args.name,\n event_sources: pixels.length > 0 ? pixels : undefined,\n unlink_event_sources: unlink.length > 0 ? unlink : undefined,\n },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.delete\",\n description:\n \"Stage deleting a product catalog with every product, product set and feed in it. Delete the ads, ad sets and campaigns that use it in the same chat.\",\n args: { id: { type: \"positional\", description: \"Catalog id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst catalogDeleteCommand = defineCommand({\n meta: {\n name: \"delete\",\n description: `Delete a product catalog and everything in it — runs after every other change in the publish. ${STAGED_NOTE}\nExample: baker ads meta catalogs delete 1798573158016525 --account-id act_123`,\n },\n args: { id: { type: \"positional\", description: \"Catalog id\", required: true }, \"account-id\": accountArg },\n run: async ({ args }) => {\n await stageOp({\n kind: \"productCatalog.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"catalog\"),\n payload: { status: \"DELETED\" },\n });\n },\n});\n\n// --- Products ---\n\nconst productFieldArgs = {\n name: { type: \"string\", description: \"Title shoppers see\" },\n description: { type: \"string\", description: \"Description\" },\n price: { type: \"string\", description: 'Price in major units, e.g. \"19.99\"' },\n \"sale-price\": { type: \"string\", description: \"Sale price in major units\" },\n currency: { type: \"string\", description: \"Three-letter currency code, e.g. EUR (needed with a price)\" },\n availability: {\n type: \"string\",\n description: '\"in stock\" (default), \"out of stock\", \"preorder\", \"available for order\", \"discontinued\"',\n },\n condition: { type: \"string\", description: \"new (default), refurbished, used\" },\n url: { type: \"string\", description: \"The product's own page (https) — where its ad sends people\" },\n \"image-url\": {\n type: \"string\",\n description: \"Public https picture Meta fetches (a library image's address works)\",\n },\n \"additional-image-url\": { type: \"string\", description: \"More pictures (repeatable)\" },\n brand: { type: \"string\", description: \"Brand\" },\n} as const;\n\nconst productFieldSchema = Object.fromEntries(\n Object.entries(productFieldArgs).map(([key, arg]) => [key, { ...arg, required: false }]),\n);\n\n/** The product fields given on the command line, in Meta's vocabulary. */\nexport function productFieldsFromArgs(args: Args, rawArgs: readonly string[] | undefined): Record<string, unknown> {\n const extra = repeatedValues(rawArgs, \"additional-image-url\", args[\"additional-image-url\"]);\n return {\n name: args.name,\n description: args.description,\n price: stringArg(args.price),\n sale_price: stringArg(args[\"sale-price\"]),\n currency: upper(args.currency),\n availability: stringArg(args.availability)?.toLowerCase(),\n condition: stringArg(args.condition)?.toLowerCase(),\n url: args.url,\n image_url: args[\"image-url\"],\n additional_image_urls: extra.length > 0 ? extra : undefined,\n brand: args.brand,\n };\n}\n\nregisterSchema({\n command: \"ads.meta.catalogs.products\",\n description:\n \"A catalog's products, compact (id, retailer id, name, price, availability, review status); --full for every field and Meta's errors on each.\",\n args: {\n \"catalog-id\": { type: \"string\", description: \"Catalog id\", required: true },\n \"retailer-id\": { type: \"string\", description: \"Only the product with this retailer id\", required: false },\n full: { type: \"boolean\", description: \"Every field, and Meta's errors on each product\", required: false },\n output: schemaOutput,\n },\n});\n\nconst productsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"A catalog's products (up to 500). Runs by default. Example: baker ads meta catalogs products --catalog-id 1798573158016525\",\n },\n args: {\n \"catalog-id\": { type: \"string\", description: \"Catalog id\" },\n \"retailer-id\": { type: \"string\", description: \"Only the product with this retailer id\" },\n full: { type: \"boolean\", description: \"Every field, and Meta's errors on each product\" },\n output: outputArg,\n },\n run: async ({ args }) => {\n try {\n const rows = await contents(\"products\", args as Args);\n const rejected = rows.filter((row) => row.review_status === \"rejected\").length;\n emit(rows, args as Args, [\n ...(rows.length === 0 ? [\"No products yet — stage some with `catalogs products create`.\"] : []),\n ...(rejected > 0\n ? [\n `${rejected} product(s) were rejected by Meta's review — \\`--full\\` shows why; a rejected product is never shown in an ad.`,\n ]\n : []),\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.products.create\",\n description:\n \"Stage a product in a catalog (or one this chat creates), added at publish. Fake or real, every product needs a retailer id, name, description, price + currency, page URL and picture URL.\",\n args: {\n \"account-id\": schemaAccount,\n \"catalog-id\": { type: \"string\", description: \"Catalog id or meta_temp_* ref\", required: true },\n \"retailer-id\": { type: \"string\", description: \"Your own id for the product (SKU)\", required: true },\n ...productFieldSchema,\n file: { type: \"string\", description: \"JSON file with the whole payload\", required: false },\n },\n});\n\nconst productCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a product in a catalog. ${STAGED_NOTE}\nExample: baker ads meta catalogs products create --account-id act_123 --catalog-id meta_temp_… --retailer-id SKU-1 --name \"Solar panel\" --description \"400 W panel\" --price 199.00 --currency EUR --url https://shop.example/panel --image-url https://shop.example/panel.jpg`,\n },\n args: {\n \"account-id\": accountArg,\n \"catalog-id\": { type: \"string\", description: \"Catalog id, or meta_temp_* of a catalog this chat creates\" },\n \"retailer-id\": { type: \"string\", description: \"Your own id for the product (SKU) — what product sets filter on\" },\n ...productFieldArgs,\n file: { type: \"string\", description: \"JSON file with the whole payload\" },\n },\n run: async ({ args, rawArgs }) => {\n const payload = mergePayload(loadJsonFileArg(args.file), {\n catalog_id: args[\"catalog-id\"],\n retailer_id: args[\"retailer-id\"],\n ...productFieldsFromArgs(args as Args, rawArgs),\n });\n await stageOp({ kind: \"product.create\", accountId: bareAccountId(args as Args), payload }, [\n \"Group products for an ad with `catalogs sets create --catalog-id <id> --retailer-id <sku> …`.\",\n ]);\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.products.update\",\n description: \"Stage changes to a product's fields (a price names its currency).\",\n args: {\n id: { type: \"positional\", description: \"Product id\", required: true },\n \"account-id\": schemaAccount,\n ...productFieldSchema,\n },\n});\n\nconst productUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Change a product's fields. ${STAGED_NOTE}\nExample: baker ads meta catalogs products update 39108967418750368 --account-id act_123 --price 179.00 --currency EUR --availability \"out of stock\"`,\n },\n args: {\n id: { type: \"positional\", description: \"Product id\", required: true },\n \"account-id\": accountArg,\n ...productFieldArgs,\n },\n run: async ({ args, rawArgs }) => {\n await stageOp({\n kind: \"product.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"product\"),\n payload: productFieldsFromArgs(args as Args, rawArgs),\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.products.delete\",\n description: \"Stage deleting a product from its catalog.\",\n args: { id: { type: \"positional\", description: \"Product id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst productDeleteCommand = defineCommand({\n meta: {\n name: \"delete\",\n description: `Delete a product from its catalog. ${STAGED_NOTE}\nExample: baker ads meta catalogs products delete 39108967418750368 --account-id act_123`,\n },\n args: { id: { type: \"positional\", description: \"Product id\", required: true }, \"account-id\": accountArg },\n run: async ({ args }) => {\n await stageOp({\n kind: \"product.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"product\"),\n payload: { status: \"DELETED\" },\n });\n },\n});\n\nconst productsCommand = defineCommand({\n meta: {\n name: \"products\",\n description: `A catalog's products.\n baker ads meta catalogs products --catalog-id <id> [--full] — list\n baker ads meta catalogs products create --catalog-id <id> --retailer-id SKU-1 --name … --price 19.99 --currency EUR …\n baker ads meta catalogs products update <id> --price 17.99 --currency EUR\n baker ads meta catalogs products delete <id>`,\n },\n subCommands: {\n list: productsListCommand,\n create: productCreateCommand,\n update: productUpdateCommand,\n delete: productDeleteCommand,\n },\n args: {\n \"catalog-id\": { type: \"string\", description: \"Catalog id\" },\n \"retailer-id\": { type: \"string\", description: \"Only the product with this retailer id\" },\n full: { type: \"boolean\", description: \"Every field, and Meta's errors on each product\" },\n output: outputArg,\n },\n default: \"list\",\n});\n\n// --- Product sets ---\n\n/** A set's rule: --filter JSON, or the products by retailer id. */\nexport function productSetFilterFromArgs(args: Args, rawArgs: readonly string[] | undefined): unknown {\n const retailerIds = repeatedValues(rawArgs, \"retailer-id\", args[\"retailer-id\"])\n .flatMap((value) => value.split(\",\"))\n .map((value) => value.trim())\n .filter(Boolean);\n const filter = jsonArg(args.filter, \"filter\");\n if (filter && retailerIds.length > 0) failWriteValidation(\"pass --filter or --retailer-id, not both\");\n return filter ?? (retailerIds.length > 0 ? retailerIdFilter(retailerIds) : undefined);\n}\n\nconst setRuleArgs = {\n \"retailer-id\": {\n type: \"string\",\n description: \"A product in the set, by retailer id (repeatable, or comma-separated)\",\n },\n filter: {\n type: \"string\",\n description:\n 'Meta\\'s rule as JSON, e.g. \\'{\"and\":[{\"brand\":{\"eq\":\"Acme\"}},{\"price\":{\"lt\":5000}}]}\\' — operators: is_any, is_not_any, eq, neq, contains, not_contains, i_contains, i_not_contains, starts_with, lt, lte, gt, gte (a price in minor units)',\n },\n} as const;\n\nregisterSchema({\n command: \"ads.meta.catalogs.sets\",\n description: \"A catalog's product sets, with how many products each matches.\",\n args: {\n \"catalog-id\": { type: \"string\", description: \"Catalog id\", required: true },\n \"no-cache\": { type: \"boolean\", description: \"Bypass the cache\", required: false },\n output: schemaOutput,\n },\n});\n\nconst setsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"A catalog's product sets. Runs by default. Example: baker ads meta catalogs sets --catalog-id 1798573158016525\",\n },\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\" }, \"no-cache\": NO_CACHE_ARG, output: outputArg },\n run: async ({ args }) => {\n try {\n const params: Record<string, string> = { \"catalog-id\": requireCatalogId(args as Args) };\n if (args[\"no-cache\"]) params[\"skip-cache\"] = \"true\";\n const rows = await apiGet<Row[]>(\"/api/ads/meta/product-sets\", params);\n emit(rows, args as Args, [\n \"An ad set shows one set (`adsets create --product-set-id <id>`); a catalog creative names it too (`creatives create --type catalog --product-set-id <id>`).\",\n ]);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.sets.create\",\n description:\n \"Stage a product set — the products an Advantage+ catalog ad or a collection shows — by retailer id or Meta's filter rule. Without either it holds the whole catalog.\",\n args: {\n \"account-id\": schemaAccount,\n \"catalog-id\": { type: \"string\", description: \"Catalog id or meta_temp_* ref\", required: true },\n name: { type: \"string\", description: \"Set name\", required: true },\n \"retailer-id\": { type: \"string\", description: \"Retailer id of a product (repeatable)\", required: false },\n filter: { type: \"string\", description: \"Meta's filter rule as JSON\", required: false },\n },\n});\n\nconst setCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a product set. ${STAGED_NOTE}\nExample: baker ads meta catalogs sets create --account-id act_123 --catalog-id meta_temp_… --name \"Panels\" --retailer-id SKU-1 --retailer-id SKU-2\nRule: --filter '{\"brand\":{\"eq\":\"Acme\"}}'. Without --retailer-id or --filter the set holds the whole catalog.`,\n },\n args: {\n \"account-id\": accountArg,\n \"catalog-id\": { type: \"string\", description: \"Catalog id, or meta_temp_* of a catalog this chat creates\" },\n name: { type: \"string\", description: \"Set name\" },\n ...setRuleArgs,\n },\n run: async ({ args, rawArgs }) => {\n await stageOp(\n {\n kind: \"productSet.create\",\n accountId: bareAccountId(args as Args),\n payload: {\n catalog_id: args[\"catalog-id\"],\n name: args.name,\n filter: productSetFilterFromArgs(args as Args, rawArgs),\n },\n },\n [\n \"Advertise it: `adsets create --product-set-id <ref>` under a campaign with `--catalog-id`, then `creatives create --type catalog --product-set-id <ref>`.\",\n ],\n );\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.sets.update\",\n description: \"Stage a new name or a new rule for a product set (the whole rule is replaced).\",\n args: {\n id: { type: \"positional\", description: \"Product set id\", required: true },\n \"account-id\": schemaAccount,\n name: { type: \"string\", description: \"New name\", required: false },\n \"retailer-id\": { type: \"string\", description: \"Retailer id of a product (repeatable)\", required: false },\n filter: { type: \"string\", description: \"Meta's filter rule as JSON\", required: false },\n },\n});\n\nconst setUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Rename a product set or replace its rule. ${STAGED_NOTE}\nExample: baker ads meta catalogs sets update 1748674113031942 --account-id act_123 --retailer-id SKU-1 --retailer-id SKU-3`,\n },\n args: {\n id: { type: \"positional\", description: \"Product set id\", required: true },\n \"account-id\": accountArg,\n name: { type: \"string\", description: \"New name\" },\n ...setRuleArgs,\n },\n run: async ({ args, rawArgs }) => {\n await stageOp({\n kind: \"productSet.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"product set\"),\n payload: { name: args.name, filter: productSetFilterFromArgs(args as Args, rawArgs) },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.sets.delete\",\n description:\n \"Stage deleting a product set. Delete or repoint the ad sets and creatives that show it in the same chat.\",\n args: { id: { type: \"positional\", description: \"Product set id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst setDeleteCommand = defineCommand({\n meta: {\n name: \"delete\",\n description: `Delete a product set — after the ads, ad sets and creatives this chat deletes. ${STAGED_NOTE}\nExample: baker ads meta catalogs sets delete 1748674113031942 --account-id act_123`,\n },\n args: { id: { type: \"positional\", description: \"Product set id\", required: true }, \"account-id\": accountArg },\n run: async ({ args }) => {\n await stageOp({\n kind: \"productSet.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"product set\"),\n payload: { status: \"DELETED\" },\n });\n },\n});\n\nconst setsCommand = defineCommand({\n meta: {\n name: \"sets\",\n description: `A catalog's product sets.\n baker ads meta catalogs sets --catalog-id <id> — list\n baker ads meta catalogs sets create --catalog-id <id> --name … --retailer-id SKU-1 [--filter '<json>']\n baker ads meta catalogs sets update <id> --name …\n baker ads meta catalogs sets delete <id>`,\n },\n subCommands: { list: setsListCommand, create: setCreateCommand, update: setUpdateCommand, delete: setDeleteCommand },\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\" }, \"no-cache\": NO_CACHE_ARG, output: outputArg },\n default: \"list\",\n});\n\n// --- Feeds ---\n\nconst scheduleArgs = {\n url: { type: \"string\", description: \"https address of the feed file (CSV, TSV, XML) Meta fetches\" },\n interval: { type: \"string\", description: \"HOURLY, DAILY or WEEKLY\" },\n hour: { type: \"string\", description: \"Hour of day 0–23\" },\n day: { type: \"string\", description: \"Day for a WEEKLY schedule, e.g. MONDAY\" },\n} as const;\n\n/** A feed schedule from the flags, or nothing when no flag names one. */\nexport function feedScheduleFromArgs(args: Args): Record<string, unknown> | undefined {\n if (args.url === undefined && args.interval === undefined && args.hour === undefined && args.day === undefined) {\n return undefined;\n }\n return {\n url: args.url,\n interval: upper(args.interval) ?? \"DAILY\",\n hour: numberFlag(args.hour, \"--hour\"),\n day_of_week: upper(args.day),\n };\n}\n\nregisterSchema({\n command: \"ads.meta.catalogs.feeds\",\n description: \"A catalog's data feeds: each one's schedule and its last upload's errors and warnings.\",\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\", required: true }, output: schemaOutput },\n});\n\nconst feedsListCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"A catalog's feeds. Runs by default. Example: baker ads meta catalogs feeds --catalog-id 1798573158016525\",\n },\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\" }, output: outputArg },\n run: async ({ args }) => {\n try {\n emit(await contents(\"feeds\", args as Args), args as Args, []);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.feeds.create\",\n description:\n \"Stage a data feed in a catalog: a file Meta fetches on a schedule and replaces the catalog's products from. Without --url it waits for uploads.\",\n args: {\n \"account-id\": schemaAccount,\n \"catalog-id\": { type: \"string\", description: \"Catalog id or meta_temp_* ref\", required: true },\n name: { type: \"string\", description: \"Feed name\", required: true },\n url: { type: \"string\", description: \"Feed file address (https)\", required: false },\n interval: { type: \"string\", description: \"HOURLY, DAILY (default) or WEEKLY\", required: false },\n hour: { type: \"string\", description: \"Hour 0–23\", required: false },\n day: { type: \"string\", description: \"Day for WEEKLY\", required: false },\n },\n});\n\nconst feedCreateCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Stage a scheduled data feed in a catalog. ${STAGED_NOTE}\nExample: baker ads meta catalogs feeds create --account-id act_123 --catalog-id 1798573158016525 --name \"Daily feed\" --url https://shop.example/feed.csv --interval DAILY --hour 3`,\n },\n args: {\n \"account-id\": accountArg,\n \"catalog-id\": { type: \"string\", description: \"Catalog id, or meta_temp_* of a catalog this chat creates\" },\n name: { type: \"string\", description: \"Feed name\" },\n ...scheduleArgs,\n },\n run: async ({ args }) => {\n await stageOp({\n kind: \"productFeed.create\",\n accountId: bareAccountId(args as Args),\n payload: { catalog_id: args[\"catalog-id\"], name: args.name, schedule: feedScheduleFromArgs(args as Args) },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.feeds.update\",\n description: \"Stage a new name or schedule for a feed (the whole schedule is replaced).\",\n args: {\n id: { type: \"positional\", description: \"Feed id\", required: true },\n \"account-id\": schemaAccount,\n name: { type: \"string\", description: \"New name\", required: false },\n url: { type: \"string\", description: \"Feed file address (https)\", required: false },\n interval: { type: \"string\", description: \"HOURLY, DAILY or WEEKLY\", required: false },\n hour: { type: \"string\", description: \"Hour 0–23\", required: false },\n day: { type: \"string\", description: \"Day for WEEKLY\", required: false },\n },\n});\n\nconst feedUpdateCommand = defineCommand({\n meta: {\n name: \"update\",\n description: `Rename a feed or replace its schedule. ${STAGED_NOTE}\nExample: baker ads meta catalogs feeds update 1157910959893469 --account-id act_123 --url https://shop.example/feed.csv --interval WEEKLY --day MONDAY --hour 4`,\n },\n args: {\n id: { type: \"positional\", description: \"Feed id\", required: true },\n \"account-id\": accountArg,\n name: { type: \"string\", description: \"New name\" },\n ...scheduleArgs,\n },\n run: async ({ args }) => {\n await stageOp({\n kind: \"productFeed.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"feed\"),\n payload: { name: args.name, schedule: feedScheduleFromArgs(args as Args) },\n });\n },\n});\n\nregisterSchema({\n command: \"ads.meta.catalogs.feeds.delete\",\n description: \"Stage deleting a feed. Its products stay in the catalog.\",\n args: { id: { type: \"positional\", description: \"Feed id\", required: true }, \"account-id\": schemaAccount },\n});\n\nconst feedDeleteCommand = defineCommand({\n meta: {\n name: \"delete\",\n description: `Delete a data feed; its products stay in the catalog. ${STAGED_NOTE}\nExample: baker ads meta catalogs feeds delete 1157910959893469 --account-id act_123`,\n },\n args: { id: { type: \"positional\", description: \"Feed id\", required: true }, \"account-id\": accountArg },\n run: async ({ args }) => {\n await stageOp({\n kind: \"productFeed.update\",\n accountId: bareAccountId(args as Args),\n target: requireTarget(args as Args, \"feed\"),\n payload: { status: \"DELETED\" },\n });\n },\n});\n\nconst feedsCommand = defineCommand({\n meta: {\n name: \"feeds\",\n description: `A catalog's data feeds.\n baker ads meta catalogs feeds --catalog-id <id> — list, with the last upload's errors\n baker ads meta catalogs feeds create --catalog-id <id> --name … --url https://… --interval DAILY\n baker ads meta catalogs feeds update <id> --interval WEEKLY --day MONDAY --url https://…\n baker ads meta catalogs feeds delete <id>`,\n },\n subCommands: {\n list: feedsListCommand,\n create: feedCreateCommand,\n update: feedUpdateCommand,\n delete: feedDeleteCommand,\n },\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\" }, output: outputArg },\n default: \"list\",\n});\n\n// --- Diagnostics ---\n\nregisterSchema({\n command: \"ads.meta.catalogs.diagnostics\",\n description:\n \"Meta's diagnostics for a catalog — product problems (missing fields, rejected pictures) and event-matching issues, grouped by type.\",\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\", required: true }, output: schemaOutput },\n});\n\nconst diagnosticsCommand = defineCommand({\n meta: {\n name: \"diagnostics\",\n description:\n \"What Meta says is wrong with a catalog. Example: baker ads meta catalogs diagnostics --catalog-id 1798573158016525\",\n },\n args: { \"catalog-id\": { type: \"string\", description: \"Catalog id\" }, output: outputArg },\n run: async ({ args }) => {\n try {\n const rows = await contents(\"diagnostics\", args as Args);\n emit(rows, args as Args, rows.length === 0 ? [\"Meta reports no problems with this catalog.\"] : []);\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const catalogsCommand = defineCommand({\n meta: {\n name: \"catalogs\",\n description: `Product catalogs — what Advantage+ catalog and collection ads show. Reading is open; changing needs the Catalog permission for Meta, and Baker changes only catalogs the ad account's own Business owns.\n baker ads meta catalogs --business-id <id> — catalogs; --catalog-id <id> for its product sets\n baker ads meta catalogs create --name … --pixel <id> | update <id> --name … --pixel <id> | delete <id>\n baker ads meta catalogs products … | sets … | feeds … | diagnostics --catalog-id <id>`,\n },\n subCommands: {\n list: catalogsListCommand,\n create: catalogCreateCommand,\n update: catalogUpdateCommand,\n delete: catalogDeleteCommand,\n products: productsCommand,\n sets: setsCommand,\n feeds: feedsCommand,\n diagnostics: diagnosticsCommand,\n },\n args: {\n \"business-id\": { type: \"string\", description: \"Business ID\" },\n \"catalog-id\": { type: \"string\", description: \"Catalog id\" },\n \"no-cache\": NO_CACHE_ARG,\n output: outputArg,\n },\n default: \"list\",\n});\n"],"mappings":"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","names":["rows"]}
@@ -0,0 +1,47 @@
1
+ import "./chunk-YQSBHWOI.js";
2
+
3
+ // src/commands/ads/chatgpt/index.ts
4
+ import { defineCommand } from "citty";
5
+ var chatgptCommand = defineCommand({
6
+ meta: {
7
+ name: "chatgpt",
8
+ description: `ChatGPT Ads (OpenAI's ads inside ChatGPT) \u2014 read the connected account, its campaigns, ad groups and ads, and how they perform; stage changes that apply when the chat is published.
9
+
10
+ Start here:
11
+ baker ads chatgpt account \u2014 currency, timezone, and whether reviews let anything serve
12
+ baker ads chatgpt insights \u2014 last 7 days, one row per campaign
13
+
14
+ Examples:
15
+ baker ads chatgpt campaigns
16
+ baker ads chatgpt ad-groups --campaign-id cmpn_123
17
+ baker ads chatgpt ads --ad-group-id adgrp_123
18
+ baker ads chatgpt conversions \u2014 pixels and conversion events
19
+ baker ads chatgpt insights --days 30 --granularity daily --segment country
20
+ baker ads chatgpt campaigns create --name "Spring push" --objective clicks --daily-budget 20
21
+ baker ads chatgpt draft \u2014 what this chat has staged
22
+
23
+ Writes never reach ChatGPT Ads mid-chat: create, update, pause, resume and archive stage
24
+ changes on this chat, and they apply when the chat is published.
25
+
26
+ One company connects one ChatGPT Ads account, so there is no account id to pass.
27
+ Full guide: __tooling__/docs/tools/baker/ads-chatgpt.md`
28
+ },
29
+ subCommands: {
30
+ account: () => import("./account-3H6BZO5H.js").then((m) => m.accountCommand),
31
+ campaigns: () => import("./campaigns-JEIKY2M4.js").then((m) => m.campaignsCommand),
32
+ "ad-groups": () => import("./ad-groups-IEBVEAMS.js").then((m) => m.adGroupsCommand),
33
+ ads: () => import("./ads-CQZHD7FC.js").then((m) => m.adsCommand),
34
+ conversions: () => import("./conversions-5QCSCRLI.js").then((m) => m.conversionsCommand),
35
+ pixels: () => import("./pixels-MYT3TCHZ.js").then((m) => m.pixelsCommand),
36
+ audiences: () => import("./audiences-AAZH56WD.js").then((m) => m.audiencesCommand),
37
+ catalogs: () => import("./catalogs-OCVXZLIF.js").then((m) => m.catalogsCommand),
38
+ history: () => import("./history-QKDYBSYM.js").then((m) => m.historyCommand),
39
+ insights: () => import("./insights-SQLE5NOJ.js").then((m) => m.insightsCommand),
40
+ locations: () => import("./locations-HM56X2MK.js").then((m) => m.locationsCommand),
41
+ draft: () => import("./draft-34CGWUVA.js").then((m) => m.draftCommand)
42
+ }
43
+ });
44
+ export {
45
+ chatgptCommand
46
+ };
47
+ //# sourceMappingURL=chatgpt-QVF2FD3E.js.map
@@ -0,0 +1,276 @@
1
+ import {
2
+ failApi
3
+ } from "./chunk-GBFL4TD2.js";
4
+ import "./chunk-DAO63OOP.js";
5
+ import "./chunk-GXDLWBOY.js";
6
+ import "./chunk-GIWHHCD6.js";
7
+ import "./chunk-XQIOCIDO.js";
8
+ import "./chunk-WTJSMYY2.js";
9
+ import {
10
+ apiPost
11
+ } from "./chunk-XDZVBX6L.js";
12
+ import "./chunk-N5O67GK5.js";
13
+ import {
14
+ getEnv
15
+ } from "./chunk-EE72SSB2.js";
16
+ import {
17
+ registerSchema,
18
+ writeJson
19
+ } from "./chunk-WNSE7N75.js";
20
+ import "./chunk-YQSBHWOI.js";
21
+
22
+ // src/commands/chats/index.ts
23
+ import { defineCommand } from "citty";
24
+
25
+ // src/commands/chats/publish-hints.ts
26
+ function publishHints(publish) {
27
+ const hints = [];
28
+ if (!publish.complete) {
29
+ const failed = publish.failedTotal;
30
+ hints.push(
31
+ `This Session's publish left ${failed} change${failed === 1 ? "" : "s"} behind \u2014 see \`publish.surfaces\` for the platform's own words. Do not report those changes as live.`
32
+ );
33
+ }
34
+ const unconfirmed = publish.unconfirmedTotal ?? 0;
35
+ if (unconfirmed > 0) {
36
+ hints.push(
37
+ `${unconfirmed} change${unconfirmed === 1 ? "" : "s"} went through but could not be confirmed when read back from the platform \u2014 \`publish.surfaces[].unconfirmedChanges\` says what it shows instead. Check before reporting them as done.`
38
+ );
39
+ }
40
+ return hints;
41
+ }
42
+
43
+ // src/commands/chats/index.ts
44
+ var STATUS_GROUPS = ["active", "archived", "all"];
45
+ var REPO_SURFACES = ["knowledge", "company", "brand", "landings", "flows", "creatives"];
46
+ function parseBoundedInt(raw, name, min, max) {
47
+ if (raw === void 0) {
48
+ return void 0;
49
+ }
50
+ const value = Number.parseInt(raw, 10);
51
+ if (Number.isNaN(value) || value < min || value > max) {
52
+ throw new Error(`--${name} must be an integer between ${min} and ${max}`);
53
+ }
54
+ return value;
55
+ }
56
+ registerSchema({
57
+ command: "chats.list",
58
+ description: "Start here: list other Sessions on this account (newest first) so you can reuse what was done before. Each row shows the Session id, title, status, and a count of what it produced (creatives, landings, actions, flows, reports\u2026). Then drill in with `baker chats view <id>`, `baker chats transcript <id>`, or `baker chats diff <id>`. Read-only.",
59
+ args: {
60
+ status: { type: "string", description: "Filter: active|archived|all (default: all)", required: false },
61
+ limit: { type: "string", description: "Max Sessions to return, 1-100 (default: 20)", required: false },
62
+ full: { type: "boolean", description: "Include each Session's full change list", required: false, default: false }
63
+ }
64
+ });
65
+ var listCommand = defineCommand({
66
+ meta: { name: "list", description: "List other Sessions on this account, newest first." },
67
+ args: {
68
+ status: { type: "string", description: "Filter: active|archived|all (default: all)", required: false },
69
+ limit: { type: "string", description: "Max Sessions (1-100, default 20)", required: false },
70
+ full: { type: "boolean", description: "Include each Session's full change list", required: false, default: false }
71
+ },
72
+ run: async ({ args }) => {
73
+ try {
74
+ const body = {};
75
+ if (args.status) {
76
+ if (!STATUS_GROUPS.includes(args.status)) {
77
+ throw new Error(`--status must be one of: ${STATUS_GROUPS.join("|")}`);
78
+ }
79
+ body.status = args.status;
80
+ }
81
+ const limit = parseBoundedInt(args.limit, "limit", 1, 100);
82
+ if (limit !== void 0) {
83
+ body.limit = limit;
84
+ }
85
+ if (args.full) {
86
+ body.full = true;
87
+ }
88
+ const selfChatId = getEnv().BAKER_CHAT_ID;
89
+ if (selfChatId) {
90
+ body.excludeChatId = selfChatId;
91
+ }
92
+ const response = await apiPost("/api/chats/list", body);
93
+ writeJson({
94
+ ...response,
95
+ meta: { count: response.data.chats.length },
96
+ ...response.data.chats.length === 0 ? { hints: ["No Sessions matched. Widen with --status all or a larger --limit."] } : {
97
+ hints: [
98
+ "Drill in: `baker chats view <id>` for outputs, `chats transcript <id>` for the conversation, `chats diff <id>` for the real file changes."
99
+ ]
100
+ }
101
+ });
102
+ } catch (err) {
103
+ failApi(err);
104
+ }
105
+ }
106
+ });
107
+ registerSchema({
108
+ command: "chats.view",
109
+ description: "Inspect one Session's FULL picture of what it changed \u2014 the unified `effects`: git content (landings, creatives, flows, knowledge, brand), plus DB-only effects that never touch the repo \u2014 Actions, Scheduled agents, Tags, Tag Manager, Google Analytics, ad-platform writes, the funnel (`funnel`: which steps it added, changed or removed, and which ways in it added or removed in `triggersAdded`/`triggersRemoved`), what counts as a conversion (`conversions`), conversion sends, event sources, and every other staged or already-applied change (`otherChanges`: A/B tests, recipes, library images) \u2014 each resolved to real detail (names, descriptions, priorities, tag types, ad operations) and, once published, its `outcome`. Also `publish` (what each external surface actually did, with the provider's own error), `activity` (the chat's own timeline: status changes, publish start/fail, workspace recoveries, timeouts), `usage` (per-thread cost and the Session's token totals), the kickoff (how it was asked), threads, and commits. Effects are `staged` (in-progress draft) or applied. A completed Session is NOT proof its external changes landed \u2014 read `publish`. Use after `baker chats list` to decide whether to reuse it. Read-only.",
110
+ args: {
111
+ id: { type: "positional", description: "The Session id (from `baker chats list`)", required: true },
112
+ full: {
113
+ type: "boolean",
114
+ description: "Untruncated effect lists and full activity metadata (compact caps each list at 25)",
115
+ required: false,
116
+ default: false
117
+ }
118
+ }
119
+ });
120
+ var viewCommand = defineCommand({
121
+ meta: {
122
+ name: "view",
123
+ description: "Inspect one Session's full effects \u2014 git content + actions/tags/ads, kickoff, commits."
124
+ },
125
+ args: {
126
+ id: { type: "positional", description: "The Session id", required: true },
127
+ full: { type: "boolean", description: "Include full detail", required: false, default: false }
128
+ },
129
+ run: async ({ args }) => {
130
+ try {
131
+ const response = await apiPost("/api/chats/view", {
132
+ chatId: args.id,
133
+ ...args.full ? { full: true } : {}
134
+ });
135
+ const hints = response.data.publish ? publishHints(response.data.publish) : [];
136
+ if (response.data.diffAvailable) {
137
+ hints.push("See the real file-level diff of the git content with `baker chats diff <id> --full`.");
138
+ } else if (response.data.status === "in_progress" || response.data.status === "publishing") {
139
+ hints.push(
140
+ "This Session is still in progress \u2014 read its current file changes with `baker chats diff <id> --live`."
141
+ );
142
+ }
143
+ hints.push("Read the conversation with `baker chats transcript <id>`.");
144
+ writeJson({ ...response, hints });
145
+ } catch (err) {
146
+ failApi(err);
147
+ }
148
+ }
149
+ });
150
+ registerSchema({
151
+ command: "chats.transcript",
152
+ description: "Read another Session's conversation (user + agent turns), most-recent first-capped. Use to see exactly how a past request was phrased and iterated before replaying it for a new goal. Compact truncates long messages; add --full for verbatim text. Read-only.",
153
+ args: {
154
+ id: { type: "positional", description: "The Session id", required: true },
155
+ limit: { type: "string", description: "Max messages to return, 1-1000 (default: 100)", required: false },
156
+ full: {
157
+ type: "boolean",
158
+ description: "Return verbatim (untruncated) message text",
159
+ required: false,
160
+ default: false
161
+ }
162
+ }
163
+ });
164
+ var transcriptCommand = defineCommand({
165
+ meta: { name: "transcript", description: "Read another Session's conversation." },
166
+ args: {
167
+ id: { type: "positional", description: "The Session id", required: true },
168
+ limit: { type: "string", description: "Max messages (1-1000, default 100)", required: false },
169
+ full: { type: "boolean", description: "Verbatim message text", required: false, default: false }
170
+ },
171
+ run: async ({ args }) => {
172
+ try {
173
+ const body = { chatId: args.id };
174
+ const limit = parseBoundedInt(args.limit, "limit", 1, 1e3);
175
+ if (limit !== void 0) {
176
+ body.limit = limit;
177
+ }
178
+ if (args.full) {
179
+ body.full = true;
180
+ }
181
+ const response = await apiPost("/api/chats/transcript", body);
182
+ writeJson({
183
+ ...response,
184
+ meta: { count: response.data.entries.length },
185
+ ...response.data.truncated ? { hints: ["Older messages were dropped to fit --limit. Raise --limit to see more."] } : {}
186
+ });
187
+ } catch (err) {
188
+ failApi(err);
189
+ }
190
+ }
191
+ });
192
+ registerSchema({
193
+ command: "chats.diff",
194
+ description: "See the real file-level changes a Session made (landings, creatives, brand, flows, knowledge). Published Sessions read from git; for an in-progress (unpublished) Session pass --live to read its changes straight from its running workspace. Without --live, an unpublished Session returns available:false \u2014 use `baker chats view` for the staged summary. Compact lists changed files with +/- counts; add --full for the actual diff text. Read-only.",
195
+ args: {
196
+ id: { type: "positional", description: "The Session id", required: true },
197
+ surface: {
198
+ type: "string",
199
+ description: "Filter to one surface: knowledge|company|brand|landings|flows|creatives",
200
+ required: false
201
+ },
202
+ full: {
203
+ type: "boolean",
204
+ description: "Include the unified-diff patch text per file",
205
+ required: false,
206
+ default: false
207
+ },
208
+ live: {
209
+ type: "boolean",
210
+ description: "For an in-progress Session, read its changes from the live workspace (slower; resumes the paused Runtime). Ignored for published Sessions.",
211
+ required: false,
212
+ default: false
213
+ }
214
+ }
215
+ });
216
+ var diffCommand = defineCommand({
217
+ meta: { name: "diff", description: "See a published Session's real file-level changes." },
218
+ args: {
219
+ id: { type: "positional", description: "The Session id", required: true },
220
+ surface: {
221
+ type: "string",
222
+ description: "Filter: knowledge|company|brand|landings|flows|creatives",
223
+ required: false
224
+ },
225
+ full: { type: "boolean", description: "Include the diff patch text per file", required: false, default: false },
226
+ live: {
227
+ type: "boolean",
228
+ description: "Read an in-progress Session's changes from its live workspace (slower)",
229
+ required: false,
230
+ default: false
231
+ }
232
+ },
233
+ run: async ({ args }) => {
234
+ try {
235
+ const body = { chatId: args.id };
236
+ if (args.surface) {
237
+ if (!REPO_SURFACES.includes(args.surface)) {
238
+ throw new Error(`--surface must be one of: ${REPO_SURFACES.join("|")}`);
239
+ }
240
+ body.surface = args.surface;
241
+ }
242
+ if (args.full) {
243
+ body.full = true;
244
+ }
245
+ if (args.live) {
246
+ body.live = true;
247
+ }
248
+ const response = await apiPost("/api/chats/diff", body);
249
+ writeJson({
250
+ ...response,
251
+ meta: { count: response.data.files.length },
252
+ ...!response.data.available && response.data.reason ? { hints: [response.data.reason] } : {},
253
+ ...response.data.available && !args.full && response.data.files.length > 0 ? { hints: ["Add --full to read the actual diff text for each file."] } : {}
254
+ });
255
+ } catch (err) {
256
+ failApi(err);
257
+ }
258
+ }
259
+ });
260
+ var chatsCommand = defineCommand({
261
+ meta: {
262
+ name: "chats",
263
+ description: `Inspect other Sessions on this account (read-only): list them, view what they produced, read their conversation, and see their real file changes \u2014 so you can reuse past work for a new goal.
264
+ Full guide: __tooling__/docs/tools/baker/chats.md`
265
+ },
266
+ subCommands: {
267
+ list: listCommand,
268
+ view: viewCommand,
269
+ transcript: transcriptCommand,
270
+ diff: diffCommand
271
+ }
272
+ });
273
+ export {
274
+ chatsCommand
275
+ };
276
+ //# sourceMappingURL=chats-2DRTB7GK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/chats/index.ts","../src/commands/chats/publish-hints.ts"],"sourcesContent":["import type { ChatsDiffResponse, ChatsListResponse, ChatsTranscriptResponse, ChatsViewResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"../actions/shared.ts\";\nimport { publishHints } from \"./publish-hints.ts\";\n\nconst STATUS_GROUPS = [\"active\", \"archived\", \"all\"] as const;\nconst REPO_SURFACES = [\"knowledge\", \"company\", \"brand\", \"landings\", \"flows\", \"creatives\"] as const;\n\nfunction parseBoundedInt(raw: string | undefined, name: string, min: number, max: number): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const value = Number.parseInt(raw, 10);\n if (Number.isNaN(value) || value < min || value > max) {\n throw new Error(`--${name} must be an integer between ${min} and ${max}`);\n }\n return value;\n}\n\nregisterSchema({\n command: \"chats.list\",\n description:\n \"Start here: list other Sessions on this account (newest first) so you can reuse what was done before. Each row shows the Session id, title, status, and a count of what it produced (creatives, landings, actions, flows, reports…). Then drill in with `baker chats view <id>`, `baker chats transcript <id>`, or `baker chats diff <id>`. Read-only.\",\n args: {\n status: { type: \"string\", description: \"Filter: active|archived|all (default: all)\", required: false },\n limit: { type: \"string\", description: \"Max Sessions to return, 1-100 (default: 20)\", required: false },\n full: { type: \"boolean\", description: \"Include each Session's full change list\", required: false, default: false },\n },\n});\n\nconst listCommand = defineCommand({\n meta: { name: \"list\", description: \"List other Sessions on this account, newest first.\" },\n args: {\n status: { type: \"string\", description: \"Filter: active|archived|all (default: all)\", required: false },\n limit: { type: \"string\", description: \"Max Sessions (1-100, default 20)\", required: false },\n full: { type: \"boolean\", description: \"Include each Session's full change list\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = {};\n if (args.status) {\n if (!(STATUS_GROUPS as readonly string[]).includes(args.status)) {\n throw new Error(`--status must be one of: ${STATUS_GROUPS.join(\"|\")}`);\n }\n body.status = args.status;\n }\n const limit = parseBoundedInt(args.limit, \"limit\", 1, 100);\n if (limit !== undefined) {\n body.limit = limit;\n }\n if (args.full) {\n body.full = true;\n }\n // Exclude our own Session so we never list ourselves as a reusable \"other\".\n const selfChatId = getEnv().BAKER_CHAT_ID;\n if (selfChatId) {\n body.excludeChatId = selfChatId;\n }\n const response = await apiPost<ChatsListResponse>(\"/api/chats/list\", body);\n writeJson({\n ...response,\n meta: { count: response.data.chats.length },\n ...(response.data.chats.length === 0\n ? { hints: [\"No Sessions matched. Widen with --status all or a larger --limit.\"] }\n : {\n hints: [\n \"Drill in: `baker chats view <id>` for outputs, `chats transcript <id>` for the conversation, `chats diff <id>` for the real file changes.\",\n ],\n }),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.view\",\n description:\n \"Inspect one Session's FULL picture of what it changed — the unified `effects`: git content (landings, creatives, flows, knowledge, brand), plus DB-only effects that never touch the repo — Actions, Scheduled agents, Tags, Tag Manager, Google Analytics, ad-platform writes, the funnel (`funnel`: which steps it added, changed or removed, and which ways in it added or removed in `triggersAdded`/`triggersRemoved`), what counts as a conversion (`conversions`), conversion sends, event sources, and every other staged or already-applied change (`otherChanges`: A/B tests, recipes, library images) — each resolved to real detail (names, descriptions, priorities, tag types, ad operations) and, once published, its `outcome`. Also `publish` (what each external surface actually did, with the provider's own error), `activity` (the chat's own timeline: status changes, publish start/fail, workspace recoveries, timeouts), `usage` (per-thread cost and the Session's token totals), the kickoff (how it was asked), threads, and commits. Effects are `staged` (in-progress draft) or applied. A completed Session is NOT proof its external changes landed — read `publish`. Use after `baker chats list` to decide whether to reuse it. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id (from `baker chats list`)\", required: true },\n full: {\n type: \"boolean\",\n description: \"Untruncated effect lists and full activity metadata (compact caps each list at 25)\",\n required: false,\n default: false,\n },\n },\n});\n\nconst viewCommand = defineCommand({\n meta: {\n name: \"view\",\n description: \"Inspect one Session's full effects — git content + actions/tags/ads, kickoff, commits.\",\n },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n full: { type: \"boolean\", description: \"Include full detail\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const response = await apiPost<ChatsViewResponse>(\"/api/chats/view\", {\n chatId: args.id,\n ...(args.full ? { full: true } : {}),\n });\n const hints: string[] = response.data.publish ? publishHints(response.data.publish) : [];\n if (response.data.diffAvailable) {\n hints.push(\"See the real file-level diff of the git content with `baker chats diff <id> --full`.\");\n } else if (response.data.status === \"in_progress\" || response.data.status === \"publishing\") {\n hints.push(\n \"This Session is still in progress — read its current file changes with `baker chats diff <id> --live`.\",\n );\n }\n hints.push(\"Read the conversation with `baker chats transcript <id>`.\");\n writeJson({ ...response, hints });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.transcript\",\n description:\n \"Read another Session's conversation (user + agent turns), most-recent first-capped. Use to see exactly how a past request was phrased and iterated before replaying it for a new goal. Compact truncates long messages; add --full for verbatim text. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n limit: { type: \"string\", description: \"Max messages to return, 1-1000 (default: 100)\", required: false },\n full: {\n type: \"boolean\",\n description: \"Return verbatim (untruncated) message text\",\n required: false,\n default: false,\n },\n },\n});\n\nconst transcriptCommand = defineCommand({\n meta: { name: \"transcript\", description: \"Read another Session's conversation.\" },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n limit: { type: \"string\", description: \"Max messages (1-1000, default 100)\", required: false },\n full: { type: \"boolean\", description: \"Verbatim message text\", required: false, default: false },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = { chatId: args.id };\n const limit = parseBoundedInt(args.limit, \"limit\", 1, 1000);\n if (limit !== undefined) {\n body.limit = limit;\n }\n if (args.full) {\n body.full = true;\n }\n const response = await apiPost<ChatsTranscriptResponse>(\"/api/chats/transcript\", body);\n writeJson({\n ...response,\n meta: { count: response.data.entries.length },\n ...(response.data.truncated\n ? { hints: [\"Older messages were dropped to fit --limit. Raise --limit to see more.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nregisterSchema({\n command: \"chats.diff\",\n description:\n \"See the real file-level changes a Session made (landings, creatives, brand, flows, knowledge). Published Sessions read from git; for an in-progress (unpublished) Session pass --live to read its changes straight from its running workspace. Without --live, an unpublished Session returns available:false — use `baker chats view` for the staged summary. Compact lists changed files with +/- counts; add --full for the actual diff text. Read-only.\",\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n surface: {\n type: \"string\",\n description: \"Filter to one surface: knowledge|company|brand|landings|flows|creatives\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Include the unified-diff patch text per file\",\n required: false,\n default: false,\n },\n live: {\n type: \"boolean\",\n description:\n \"For an in-progress Session, read its changes from the live workspace (slower; resumes the paused Runtime). Ignored for published Sessions.\",\n required: false,\n default: false,\n },\n },\n});\n\nconst diffCommand = defineCommand({\n meta: { name: \"diff\", description: \"See a published Session's real file-level changes.\" },\n args: {\n id: { type: \"positional\", description: \"The Session id\", required: true },\n surface: {\n type: \"string\",\n description: \"Filter: knowledge|company|brand|landings|flows|creatives\",\n required: false,\n },\n full: { type: \"boolean\", description: \"Include the diff patch text per file\", required: false, default: false },\n live: {\n type: \"boolean\",\n description: \"Read an in-progress Session's changes from its live workspace (slower)\",\n required: false,\n default: false,\n },\n },\n run: async ({ args }) => {\n try {\n const body: Record<string, unknown> = { chatId: args.id };\n if (args.surface) {\n if (!(REPO_SURFACES as readonly string[]).includes(args.surface)) {\n throw new Error(`--surface must be one of: ${REPO_SURFACES.join(\"|\")}`);\n }\n body.surface = args.surface;\n }\n if (args.full) {\n body.full = true;\n }\n if (args.live) {\n body.live = true;\n }\n const response = await apiPost<ChatsDiffResponse>(\"/api/chats/diff\", body);\n writeJson({\n ...response,\n meta: { count: response.data.files.length },\n ...(!response.data.available && response.data.reason ? { hints: [response.data.reason] } : {}),\n ...(response.data.available && !args.full && response.data.files.length > 0\n ? { hints: [\"Add --full to read the actual diff text for each file.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const chatsCommand = defineCommand({\n meta: {\n name: \"chats\",\n description: `Inspect other Sessions on this account (read-only): list them, view what they produced, read their conversation, and see their real file changes — so you can reuse past work for a new goal.\nFull guide: __tooling__/docs/tools/baker/chats.md`,\n },\n subCommands: {\n list: listCommand,\n view: viewCommand,\n transcript: transcriptCommand,\n diff: diffCommand,\n },\n});\n","import type { ChatPublishSummary } from \"@baker/api/chats\";\n\n/**\n * What a reader must not conclude from a completed Session: that it published\n * everything it staged (better than one published draft in three did not), or\n * that every change it sent is now what the platform holds.\n */\nexport function publishHints(publish: ChatPublishSummary): string[] {\n const hints: string[] = [];\n if (!publish.complete) {\n const failed = publish.failedTotal;\n hints.push(\n `This Session's publish left ${failed} change${failed === 1 ? \"\" : \"s\"} behind — see \\`publish.surfaces\\` for the platform's own words. Do not report those changes as live.`,\n );\n }\n const unconfirmed = publish.unconfirmedTotal ?? 0;\n if (unconfirmed > 0) {\n hints.push(\n `${unconfirmed} change${unconfirmed === 1 ? \"\" : \"s\"} went through but could not be confirmed when read back from the platform — \\`publish.surfaces[].unconfirmedChanges\\` says what it shows instead. Check before reporting them as done.`,\n );\n }\n return hints;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,104 @@
1
+ import {
2
+ readAdWords,
3
+ ruleRefusal
4
+ } from "./chunk-TG4NCHFS.js";
5
+ import "./chunk-PUSBUMYM.js";
6
+ import "./chunk-LCW3U4EA.js";
7
+ import {
8
+ readAllRules
9
+ } from "./chunk-SGEPZB3D.js";
10
+ import {
11
+ ruleTells
12
+ } from "./chunk-G2LGMWNG.js";
13
+ import "./chunk-JYALBYN7.js";
14
+ import "./chunk-5WMTPYKT.js";
15
+ import {
16
+ findWorkspaceRoot
17
+ } from "./chunk-23H4ZJRP.js";
18
+ import "./chunk-4AMIHNNP.js";
19
+ import {
20
+ selectRules
21
+ } from "./chunk-IKCP5NCE.js";
22
+ import "./chunk-MCJ5I5LR.js";
23
+ import {
24
+ marketFromCompanyDoc
25
+ } from "./chunk-2WZI36D3.js";
26
+ import "./chunk-65Y3RCWP.js";
27
+ import "./chunk-DWX44QL6.js";
28
+ import "./chunk-2FSEESJU.js";
29
+ import "./chunk-CVBKW75S.js";
30
+ import "./chunk-BLAHHMPF.js";
31
+ import "./chunk-DAO63OOP.js";
32
+ import "./chunk-GXDLWBOY.js";
33
+ import "./chunk-GIWHHCD6.js";
34
+ import "./chunk-XQIOCIDO.js";
35
+ import "./chunk-WTJSMYY2.js";
36
+ import "./chunk-XDZVBX6L.js";
37
+ import "./chunk-N5O67GK5.js";
38
+ import "./chunk-EE72SSB2.js";
39
+ import {
40
+ registerSchema,
41
+ writeJson
42
+ } from "./chunk-WNSE7N75.js";
43
+ import "./chunk-YQSBHWOI.js";
44
+
45
+ // src/commands/creatives/check.ts
46
+ import { readdir, readFile } from "fs/promises";
47
+ import path from "path";
48
+ import { defineCommand } from "citty";
49
+ var DESCRIPTION = `Read every creative already made against the company's rules as they stand now: which ads say words a rule bans, or leave out words a rule requires. Run it after adding a rule (\`baker creatives rules add\`); nothing is re-rendered or marked stale, so ask the person which ads to correct.
50
+ Start here: baker creatives check
51
+ baker creatives check --slug mba-ia-online # one creative`;
52
+ var ARGS = {
53
+ slug: { type: "string", description: "One creative (src/creatives/<slug>/); left out, every one", required: false }
54
+ };
55
+ registerSchema({ command: "creatives.check", description: DESCRIPTION, args: ARGS });
56
+ function checkCreatives(ads, rules, companyLanguage) {
57
+ const breaking = ads.flatMap(({ slug, ad }) => {
58
+ const held = selectRules(
59
+ rules,
60
+ {
61
+ kind: ad.kind,
62
+ ...ad.product ? { product: ad.product } : {},
63
+ ...ad.platform ? { platform: ad.platform } : {},
64
+ ...ad.platforms ? { platforms: ad.platforms } : {}
65
+ },
66
+ ad.waived
67
+ );
68
+ const refusal = ruleRefusal(ruleTells(ad.lines, held, ad.language ?? companyLanguage));
69
+ return refusal ? [{ creative: slug, broken: refusal.problems }] : [];
70
+ });
71
+ return { checked: ads.length, breaking };
72
+ }
73
+ async function readAds(root, slug) {
74
+ const dir = path.join(root, "src", "creatives");
75
+ const slugs = slug ? [slug] : (await readdir(dir, { withFileTypes: true }).catch(() => [])).filter((e) => e.isDirectory() && !e.name.startsWith("_")).map((e) => e.name).sort();
76
+ const ads = await Promise.all(slugs.map(async (s) => ({ slug: s, ad: await readAdWords(path.join(dir, s)) })));
77
+ return ads.flatMap(({ slug: s, ad }) => ad ? [{ slug: s, ad }] : []);
78
+ }
79
+ var checkCommand = defineCommand({
80
+ meta: { name: "check", description: DESCRIPTION },
81
+ args: ARGS,
82
+ async run({ args }) {
83
+ const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
84
+ const slug = typeof args.slug === "string" && args.slug ? args.slug : void 0;
85
+ const [ads, rules, companyDoc] = await Promise.all([
86
+ readAds(root, slug),
87
+ readAllRules(root),
88
+ readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => null)
89
+ ]);
90
+ const report = checkCreatives(ads, rules, marketFromCompanyDoc(companyDoc)?.language);
91
+ writeJson({
92
+ ok: true,
93
+ data: report,
94
+ hints: report.breaking.length > 0 ? [
95
+ `${report.breaking.length} of ${report.checked} ads break a rule now in force. Tell the person which, and correct only the ones they want: edit the words in that ad's prompt.json and run it again, or waive the rule there if the person asked for those words.`
96
+ ] : [`None of the ${report.checked} ads breaks a wording rule now in force.`]
97
+ });
98
+ }
99
+ });
100
+ export {
101
+ checkCommand,
102
+ checkCreatives
103
+ };
104
+ //# sourceMappingURL=check-Z6UMIQKD.js.map