@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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/organization/index.ts","../src/commands/organization/pull.ts","../src/commands/organization/workspaces.ts","../src/commands/organization/setup.ts","../../api/src/organizationSetup.ts"],"sourcesContent":["import type { OrganizationCompaniesResponse, OrganizationCompany } from \"@baker/api/organization\";\nimport { defineCommand } from \"citty\";\nimport { apiGet } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"../actions/shared.ts\";\nimport { pullCommand } from \"./pull.ts\";\nimport { setupCommand } from \"./setup.ts\";\n\nregisterSchema({\n command: \"organization.companies\",\n description:\n \"Start here in the organization workspace: every company of the organization, with its id and the platforms it has connected. Pass an id to any read with --company <id> (e.g. baker ads meta campaigns --company <id>) to read that company; a platform it has not connected answers 'not connected'. Only the organization workspace can run it, and it can only read.\",\n args: {},\n});\n\n/** What the agent must not miss even if it skims the list. */\nexport function companiesHints(companies: OrganizationCompany[]): string[] {\n const hints: string[] = [];\n const first = companies[0];\n if (first) {\n hints.push(\n `Read one company by adding --company <id> to any read, e.g. \\`baker ads meta campaigns --company ${first.id}\\`. Writes are refused: a company changes in its own chats.`,\n );\n }\n const unconnected = companies.filter((company) => company.platforms.length === 0);\n if (unconnected.length > 0) {\n hints.push(\n `Not connected to any platform, so every platform read refuses them: ${unconnected.map((c) => c.name).join(\", \")}.`,\n );\n }\n return hints;\n}\n\nconst companies = defineCommand({\n meta: {\n name: \"companies\",\n description: `Every company of the organization, with the platforms each has connected.\n\nOnly in the organization workspace, whose Reports read across companies. Every other read is the ordinary command plus --company <id>.\n\nExamples:\n baker organization companies\n baker ads meta campaigns --company <id>\n baker ads google campaigns list --company <id>\n\nFull guide: __tooling__/docs/tools/baker/organization.md`,\n },\n args: {},\n run: async () => {\n try {\n const response = await apiGet<OrganizationCompaniesResponse>(\"/api/organization/companies\");\n const hints = companiesHints(response.data);\n writeJson({ ...response, meta: { count: response.data.length }, ...(hints.length > 0 ? { hints } : {}) });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const organizationCommand = defineCommand({\n meta: {\n name: \"organization\",\n description:\n \"The organization workspace: the companies its Reports read. Start with `baker organization companies`; read any of them with --company <id>; download what each made with `baker organization pull`; prepare a company's setup with `baker organization setup`.\",\n },\n subCommands: { companies, pull: pullCommand, setup: setupCommand },\n});\n","import { execFile } from \"node:child_process\";\nimport {\n chmodSync,\n existsSync,\n mkdirSync,\n mkdtempSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir, tmpdir } from \"node:os\";\nimport { basename, join, resolve } from \"node:path\";\nimport { promisify } from \"node:util\";\nimport type {\n OrganizationCompaniesResponse,\n OrganizationCompany,\n OrganizationWorkspaceResponse,\n} from \"@baker/api/organization\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../client.ts\";\nimport { clearTargetCompany, optionalTargetCompany, setTargetCompany } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"../actions/shared.ts\";\nimport {\n copyCompanySurfaces,\n folderNames,\n listFiles,\n SURFACE_GUIDE,\n staleFolders,\n VERSION_FILE,\n} from \"./workspaces.ts\";\n\nconst run = promisify(execFile);\n\ntype Pulled = {\n id: string;\n name: string;\n folder: string;\n status: \"updated\" | \"unchanged\" | \"no_workspace\" | \"failed\";\n publishedAt?: string | null;\n files?: number;\n error?: string;\n};\n\nregisterSchema({\n command: \"organization.pull\",\n description:\n \"Download what each company made — knowledge, landing pages, Forms, brand, documents, custom agents and checks, Reports — as published, into one read-only folder per company (default ~/companies), with an INDEX.md to start from. Then read and search them like any files. Add --company <id> for one company. Only what is published: a Session's unpublished work is `baker chats diff <id> --company <id>`.\",\n args: {\n dir: { type: \"string\", description: \"Where to put the companies' folders (default: ~/companies)\", required: false },\n force: { type: \"boolean\", description: \"Download again even when nothing was published since\", required: false },\n },\n});\n\nfunction readVersion(folder: string): string | null {\n try {\n return (JSON.parse(readFileSync(join(folder, VERSION_FILE), \"utf8\")) as { version?: string }).version ?? null;\n } catch {\n return null;\n }\n}\n\n/** Unpacks one archive into a fresh folder of the company's own surfaces, swapped in whole. */\nasync function unpack(url: string, target: string): Promise<number> {\n const scratch = mkdtempSync(join(tmpdir(), \"baker-workspace-\"));\n try {\n const response = await fetch(url, { signal: AbortSignal.timeout(120_000) });\n if (!response.ok) throw new Error(`download failed (${response.status})`);\n const archive = join(scratch, \"workspace.tar.gz\");\n writeFileSync(archive, Buffer.from(await response.arrayBuffer()));\n const unpacked = join(scratch, \"unpacked\");\n mkdirSync(unpacked);\n await run(\"tar\", [\"-xzf\", archive, \"-C\", unpacked, \"--strip-components=1\"]);\n const staged = `${target}.partial`;\n rmSync(staged, { recursive: true, force: true });\n copyCompanySurfaces(unpacked, staged);\n const files = listFiles(staged);\n // Read-only, so nothing here is mistaken for a change to the company.\n for (const file of files) chmodSync(join(staged, file), 0o444);\n rmSync(target, { recursive: true, force: true });\n renameSync(staged, target);\n return files.length;\n } finally {\n rmSync(scratch, { recursive: true, force: true });\n }\n}\n\n/** Downloads one company's published workspace into `target`, unless it is already there. */\nasync function pullOne(company: OrganizationCompany, target: string, force: boolean): Promise<Pulled> {\n const entry: Pulled = { id: company.id, name: company.name, folder: basename(target), status: \"failed\" };\n try {\n setTargetCompany(company.id);\n const workspace = (await apiPost<OrganizationWorkspaceResponse>(\"/api/organization/workspace\", {})).data;\n if (!workspace) return { ...entry, status: \"no_workspace\" };\n entry.publishedAt = workspace.publishedAt;\n if (!force && existsSync(target) && readVersion(target) === workspace.version) {\n return { ...entry, status: \"unchanged\", files: listFiles(target).length - 1 };\n }\n const files = await unpack(workspace.url, target);\n writeFileSync(\n join(target, VERSION_FILE),\n `${JSON.stringify({ companyId: company.id, name: company.name, version: workspace.version, publishedAt: workspace.publishedAt }, null, 2)}\\n`,\n );\n return { ...entry, status: \"updated\", files };\n } catch (err) {\n return { ...entry, error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nfunction indexMarkdown(dir: string, companies: OrganizationCompany[], pulled: Pulled[]): string {\n const byId = new Map(companies.map((company) => [company.id, company]));\n const rows = pulled.map((entry) => {\n const platforms =\n byId\n .get(entry.id)\n ?.platforms.map((platform) => platform.label)\n .join(\", \") || \"none\";\n const where = entry.status === \"no_workspace\" ? \"no workspace yet\" : `${entry.folder}/`;\n return `| ${entry.name} | \\`${entry.id}\\` | ${where} | ${entry.publishedAt ?? \"—\"} | ${platforms} |`;\n });\n return [\n \"# Companies of this organization\",\n \"\",\n `Each folder holds what one company made, as published. Read-only: a change to a company is made in that company's own chat. Refresh with \\`baker organization pull\\`.`,\n \"\",\n \"| Company | Id (for --company) | Folder | Published | Connected |\",\n \"|---|---|---|---|---|\",\n ...rows,\n \"\",\n \"## Where things are, in every company's folder\",\n \"\",\n ...SURFACE_GUIDE.map(([path, what]) => `- \\`${path}\\` — ${what}`),\n \"\",\n `Search every company at once: \\`grep -rn \"<term>\" ${dir}/*/src/content\\`.`,\n \"\",\n ].join(\"\\n\");\n}\n\nexport const pullCommand = defineCommand({\n meta: {\n name: \"pull\",\n description: `Download what each company made, as published, into one read-only folder per company.\n\nKnowledge, landing pages, Forms, brand, documents, custom agents and checks, Reports. Then read and search them like any files; start with INDEX.md.\n\nExamples:\n baker organization pull\n baker organization pull --company <id>\n grep -rn \"price\" ~/companies/*/src/content`,\n },\n args: {\n dir: { type: \"string\", description: \"Where to put the companies' folders (default: ~/companies)\", required: false },\n force: { type: \"boolean\", description: \"Download again even when nothing was published since\", required: false },\n },\n run: async ({ args }) => {\n try {\n const dir = resolve(args.dir ?? join(homedir(), \"companies\"));\n const only = optionalTargetCompany();\n // The list is the workspace's own read; each company is then named in turn.\n clearTargetCompany();\n const listed = (await apiGet<OrganizationCompaniesResponse>(\"/api/organization/companies\")).data;\n const companies = only ? listed.filter((company) => company.id === only) : listed;\n if (only && companies.length === 0) {\n throw new ApiError(\n \"NOT_FOUND\",\n \"No company of this organization has that id. Run `baker organization companies` for the ones you can read.\",\n );\n }\n const folders = folderNames(listed);\n mkdirSync(dir, { recursive: true });\n // A renamed company's old folder would still answer a search across them all.\n for (const stale of staleFolders(dir, folders)) rmSync(join(dir, stale), { recursive: true, force: true });\n const pulled: Pulled[] = [];\n for (const company of companies) {\n pulled.push(await pullOne(company, join(dir, folders[company.id] ?? company.id), args.force === true));\n }\n clearTargetCompany();\n if (!only) writeFileSync(join(dir, \"INDEX.md\"), indexMarkdown(dir, listed, pulled));\n const failed = pulled.filter((entry) => entry.status === \"failed\");\n writeJson({\n ok: true,\n data: { dir, companies: pulled },\n meta: { count: pulled.length },\n hints: [\n `Start with ${join(dir, \"INDEX.md\")}; each company's folder has the same layout.`,\n ...(failed.length > 0\n ? [\n `Not downloaded: ${failed.map((entry) => entry.name).join(\", \")}. Say so in the Report; run this again to retry.`,\n ]\n : []),\n ],\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n","import { cpSync, existsSync, lstatSync, readdirSync, readFileSync } from \"node:fs\";\nimport { join, relative } from \"node:path\";\n\n/**\n * What of a company's workspace the organization's agent reads: what the\n * company made — its knowledge, landing pages, Forms, brand, documents, custom\n * agents and checks, Reports — and none of the platform's own files, which are\n * the same in every company and would only bury the answer under copies of\n * themselves.\n */\nexport const COMPANY_SURFACES: readonly string[] = [\n \"COMPANY.md\",\n \"src/content\",\n \"src/collections\",\n \"src/pages\",\n \"src/components\",\n \"src/brand\",\n \"src/documents\",\n \"src/creatives\",\n \"src/lib/flow-engine/flows\",\n \".claude/agents\",\n \"__tooling__/checks/extensions\",\n \"reports/server\",\n \"reports/public\",\n];\n\n/** Where each surface is, for the index the agent reads first. */\nexport const SURFACE_GUIDE: ReadonlyArray<readonly [string, string]> = [\n [\"COMPANY.md\", \"who the company is: offer, audience, positioning\"],\n [\"src/content/<collection>/\", \"Knowledge — one folder per collection, one file per entry\"],\n [\n \"src/pages/<landing>/\",\n \"landing pages — `_definition.md` says what each is for; `index.astro` and `_components/` are the page\",\n ],\n [\"src/lib/flow-engine/flows/<form>/_data.json\", \"Forms — steps, questions, where each submission goes\"],\n [\"src/brand/\", \"brand — `BRAND.md` guidelines, `tokens.json` colours and fonts, logos\"],\n [\"src/documents/, src/creatives/\", \"documents and creatives — `_definition.md` each\"],\n [\".claude/agents/\", \"the company's own custom agents\"],\n [\"__tooling__/checks/extensions/\", \"the company's own rules: checks its work must pass\"],\n [\"reports/\", \"the company's own Reports\"],\n];\n\n/** What a pulled company folder says about itself: which company, at which published version. */\nexport const VERSION_FILE = \".baker-workspace.json\";\n\n/** Every file under `root`, relative and sorted. */\nexport function listFiles(root: string): string[] {\n if (!existsSync(root)) return [];\n const files: string[] = [];\n const walk = (dir: string) => {\n for (const entry of readdirSync(dir)) {\n const path = join(dir, entry);\n const entryStat = lstatSync(path);\n if (entryStat.isDirectory()) walk(path);\n else if (!entryStat.isSymbolicLink()) files.push(relative(root, path).split(\"\\\\\").join(\"/\"));\n }\n };\n walk(root);\n return files.sort();\n}\n\n/**\n * Copies the company's own surfaces of an unpacked workspace `from` into `to`,\n * links left out: one would point into the unpacked copy, gone once the pull\n * ends, or outside the pull folder.\n */\nexport function copyCompanySurfaces(from: string, to: string): void {\n const notALink = (source: string) => !lstatSync(source).isSymbolicLink();\n for (const surface of COMPANY_SURFACES) {\n const source = join(from, surface);\n if (existsSync(source)) cpSync(source, join(to, surface), { recursive: true, filter: notALink });\n }\n}\n\nfunction slug(name: string): string {\n const base = name\n .normalize(\"NFKD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return base || \"company\";\n}\n\n/**\n * Each company's folder: its name, so the agent finds a client by what the user\n * calls it — and its id's tail beside it when two names read alike.\n */\nexport function folderNames(companies: ReadonlyArray<{ id: string; name: string }>): Record<string, string> {\n const counts = new Map<string, number>();\n for (const company of companies) counts.set(slug(company.name), (counts.get(slug(company.name)) ?? 0) + 1);\n return Object.fromEntries(\n companies.map((company) => {\n const base = slug(company.name);\n return [company.id, (counts.get(base) ?? 0) > 1 ? `${base}-${company.id.slice(-6)}` : base];\n }),\n );\n}\n\nfunction pulledCompanyId(folder: string): string | null {\n try {\n const recorded = JSON.parse(readFileSync(join(folder, VERSION_FILE), \"utf8\")) as { companyId?: unknown };\n return typeof recorded.companyId === \"string\" ? recorded.companyId : null;\n } catch {\n return null;\n }\n}\n\n/**\n * The folders under `dir` a pull made that no longer are a company's folder:\n * the company left the organization, or its folder is now named otherwise\n * (`folders`, by company id). A folder no pull made is never one of them.\n */\nexport function staleFolders(dir: string, folders: Readonly<Record<string, string>>): string[] {\n if (!existsSync(dir)) return [];\n return readdirSync(dir)\n .filter((name) => lstatSync(join(dir, name)).isDirectory())\n .filter((name) => {\n const companyId = pulledCompanyId(join(dir, name));\n return companyId !== null && folders[companyId] !== name;\n })\n .sort();\n}\n","import { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport {\n type ClientSetupAttioResponse,\n type ClientSetupClientsResponse,\n type ClientSetupShowResponse,\n type ClientSetupSiteRequest,\n type ClientSetupSiteResponse,\n type ClientSetupStageRequest,\n type ClientSetupStageResponse,\n type ClientSetupTeamResponse,\n type ClientSetupUnstageResponse,\n clientSetupSchema,\n} from \"@baker/api/organizationSetup\";\nimport { defineCommand } from \"citty\";\nimport { apiGet, apiPost } from \"../../client.ts\";\nimport { clearTargetCompany, optionalChatId, optionalTargetCompany, requireChatId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation } from \"../actions/shared.ts\";\n\nconst DOC = \"__tooling__/docs/tools/baker/organization.md\";\n\n/** An agency to onboard, instead of a company: Baker's own team, for a superadmin. */\nconst AGENCY_ARG = {\n type: \"string\",\n description: \"An agency to onboard instead of a company (`baker organization setup clients` lists them)\",\n required: false,\n} as const;\n\nregisterSchema({\n command: \"organization.setup.show\",\n description:\n \"Start here before preparing a setup: what kind it is (`kind`: agencyClient, direct or agency) and what it holds (`parts`: the company's plan, our team's part), the company's setup as it stands (plan steps, platforms to connect, tags, questions with their ids and answers, step briefs), every step a plan can name, the platforms it already connected, its setup link's progress, whether the person in this chat may stage a setup (only an organization admin), and what this chat already staged. Example: baker organization setup show --company <id>; an agency to onboard: baker organization setup show --agency <id>.\",\n args: { agency: AGENCY_ARG },\n});\n\nregisterSchema({\n command: \"organization.setup.stage\",\n description:\n \"Stage a whole setup on this chat — plan steps, platforms to connect, tags, questions (with the answers the conversations already give) and a brief per step — from a JSON file. Replaces what this chat staged for it; applied only when the person publishes, which also gives them the setup link. Only an admin of the organization. Example: baker organization setup stage --company <id> --file setup.json. File shape: { summary, sources[], steps[], connect[], tags[], keys[], apps[], questions[{id?, question, why, step?, answer?}], removeQuestions[], briefs[{step, note}], team? }. `team` is Baker's own team's part — { timeline, timelineShown, contract, companyDetails, welcomeEmail }, shapes in `baker organization setup team`. An agency's onboarding (--agency <id>) is { summary, sources[], team } and nothing else.\",\n args: {\n file: { type: \"string\", description: \"The setup as JSON (shape in the description)\", required: true },\n agency: AGENCY_ARG,\n },\n});\n\nregisterSchema({\n command: \"organization.setup.clients\",\n description:\n \"The companies this chat may prepare a setup for, when `baker organization companies` does not list the one asked for: in Baker's own team, for a superadmin, every client that signs with Baker, whatever its organization, and every agency to onboard (`agencies`, named with --agency). Example: baker organization setup clients --search acme.\",\n args: {\n search: { type: \"string\", description: \"Keep companies whose name or website has these words\", required: false },\n },\n});\n\nregisterSchema({\n command: \"organization.setup.team\",\n description:\n \"Baker's own team only, when `show` answers parts.team: true — our team's part of a setup as it stands (timeline to the kickoff, contract with Stripe's plans and coupons, company details, welcome email), the shapes to stage it under `team`, and the setup planner's rules for each (an agency's own, with --agency). Example: baker organization setup team --company <id>; baker organization setup team --agency <id>.\",\n args: { agency: AGENCY_ARG },\n});\n\nregisterSchema({\n command: \"organization.setup.attio\",\n description:\n \"Baker's own team only: what Baker's CRM (Attio) holds on a client that signs with Baker, or an agency to onboard — every call with its transcript, notes, logged emails — saved to a file whose path it prints, with the record's files; `--file-id` reads one file (a proposal, a deck) as text. Read it first: it is where our team's deal, offer and kickoff come from. Example: baker organization setup attio --company <id>; baker organization setup attio --agency <id>.\",\n args: {\n \"file-id\": { type: \"string\", description: \"One of the record's files, to read as text\", required: false },\n agency: AGENCY_ARG,\n },\n});\n\nregisterSchema({\n command: \"organization.setup.pages\",\n description:\n \"A client's website pages, from its sitemap (or what search engines know), to pick the few worth reading for its setup: each offer, pricing, contact, quote and demo page. Example: baker organization setup pages --url https://acme.com --search pricing. Read a page with `baker research fetch <url>`.\",\n args: {\n url: { type: \"string\", description: \"The client's website\", required: true },\n search: { type: \"string\", description: \"Keep pages whose address has these words\", required: false },\n },\n});\n\nregisterSchema({\n command: \"organization.setup.inspect\",\n description:\n \"Visit a client's page as a visitor would, in a real browser that accepts its cookie banner: which tags fire and whether the page or a Tag Manager container loads each, the containers' tags, how it asks for consent (the tool, who loads it, Google Consent Mode), every form with its fields, the chat, booking and call-tracking tools, and the company's other addresses (where its landings already live). Slow and paid: the home page, each page with a form, and any landing they run — three visits at most. Example: baker organization setup inspect --url https://acme.com.\",\n args: { url: { type: \"string\", description: \"The page to visit\", required: true } },\n});\n\nregisterSchema({\n command: \"organization.setup.unstage\",\n description:\n \"Take back the setup this chat staged for a company, or an agency's onboarding. Example: baker organization setup unstage --company <id>.\",\n args: { agency: AGENCY_ARG },\n});\n\ntype SetupTarget = { companyId: string } | { agencyId: string };\n\n/** What a setup command is about: a company (`--company`) or an agency to onboard (`--agency`), never both. */\nexport function setupTarget(named: {\n company?: string;\n agency?: string;\n}): { ok: true; target: SetupTarget } | { ok: false; error: string } {\n if (named.company && named.agency) {\n return { ok: false, error: \"Name the company with --company or the agency with --agency, not both.\" };\n }\n if (named.agency) {\n return { ok: true, target: { agencyId: named.agency } };\n }\n if (named.company) {\n return { ok: true, target: { companyId: named.company } };\n }\n return {\n ok: false,\n error:\n \"Name the company with --company <id>, or the agency to onboard with --agency <id>. `baker organization companies` and `baker organization setup clients` list them.\",\n };\n}\n\n/**\n * The company or agency these commands are about. `--company` is taken like\n * every read's, but it travels in the request rather than as the header: the\n * header makes a call a read of that company, and staging is this workspace's\n * own change.\n */\nfunction namedTarget(agency: string | undefined): SetupTarget {\n const company = optionalTargetCompany();\n clearTargetCompany();\n const named = setupTarget({ ...(company ? { company } : {}), ...(agency ? { agency } : {}) });\n if (!named.ok) {\n failValidation(named.error);\n }\n return named.target;\n}\n\n/** The stage request for a setup file's text, or why it cannot be sent. */\nexport function stageBody(\n text: string,\n target: SetupTarget,\n chatId: string,\n): { ok: true; body: ClientSetupStageRequest } | { ok: false; error: string } {\n let raw: unknown;\n try {\n raw = JSON.parse(text);\n } catch {\n return { ok: false, error: \"The setup file is not valid JSON.\" };\n }\n const parsed = clientSetupSchema.safeParse(raw);\n if (!parsed.success) {\n const issue = parsed.error.issues[0];\n const where = issue?.path.join(\".\") || \"the setup\";\n return {\n ok: false,\n error: `${where}: ${issue?.message ?? \"invalid\"}. See \\`baker schema organization.setup.stage\\`.`,\n };\n }\n return { ok: true, body: { chatId, ...target, setup: parsed.data } };\n}\n\nconst show = defineCommand({\n meta: {\n name: \"show\",\n description: `What kind of setup it is and what it holds, the company's setup as it stands, and what this chat staged for it.\n\nRead it before staging: the question ids it lists are how you reword, answer or remove one.\n\nExamples:\n baker organization setup show --company <id>\n baker organization setup show --agency <id> # an agency to onboard\n\nFull guide: ${DOC}`,\n },\n args: { agency: AGENCY_ARG },\n run: async ({ args }) => {\n const target = namedTarget(args.agency);\n try {\n const chatId = optionalChatId();\n writeJson(\n await apiGet<ClientSetupShowResponse>(\"/api/organization/setup\", {\n ...target,\n ...(chatId ? { chatId } : {}),\n }),\n );\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst stage = defineCommand({\n meta: {\n name: \"stage\",\n description: `Stage a whole setup on this chat, applied when the person publishes.\n\nOnly an admin of the organization. Each call replaces what this chat staged for that company or agency.\n\nExamples:\n baker organization setup stage --company <id> --file setup.json\n baker organization setup stage --agency <id> --file onboarding.json\n\nFull guide: ${DOC}`,\n },\n args: {\n file: { type: \"string\", description: \"The setup as JSON\", required: true },\n agency: AGENCY_ARG,\n },\n run: async ({ args }) => {\n const target = namedTarget(args.agency);\n let text: string;\n try {\n text = readFileSync(args.file, \"utf8\");\n } catch {\n failValidation(`Cannot read ${args.file}.`);\n }\n const built = stageBody(text, target, requireChatId());\n if (!built.ok) {\n failValidation(built.error);\n }\n try {\n writeJson(await apiPost<ClientSetupStageResponse>(\"/api/organization/setup/stage\", built.body));\n } catch (err) {\n failApi(err);\n }\n },\n});\n\n/** Where a client's Attio history is saved: outside the workspace, so nothing of it is ever published. */\nexport const ATTIO_DIR = \"/tmp/baker-attio\";\n\n/**\n * What `attio` answers, and the history it saves instead of printing: a\n * client's calls with their transcripts run to hundreds of pages, read and\n * searched from a file.\n */\nexport function attioReport(\n data: ClientSetupAttioResponse[\"data\"],\n dir: string,\n): { answer: Record<string, unknown>; write: { path: string; text: string } | null } {\n const { history, ...rest } = data;\n if (history === undefined) {\n return { answer: rest, write: null };\n }\n const path = join(dir, `${data.company.id}.md`);\n return { answer: { ...rest, history: path }, write: { path, text: history } };\n}\n\nconst clients = defineCommand({\n meta: {\n name: \"clients\",\n description: `The companies this chat may prepare a setup for. In Baker's own team, for a superadmin, every client that signs with Baker, and the agencies to onboard.\n\nExamples:\n baker organization setup clients --search acme\n\nFull guide: ${DOC}`,\n },\n args: {\n search: { type: \"string\", description: \"Keep companies whose name or website has these words\", required: false },\n },\n run: async ({ args }) => {\n try {\n writeJson(\n await apiGet<ClientSetupClientsResponse>(\"/api/organization/setup/clients\", {\n chatId: requireChatId(),\n ...(args.search ? { search: args.search } : {}),\n }),\n );\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst team = defineCommand({\n meta: {\n name: \"team\",\n description: `Baker's own team: our part of a setup — timeline, contract, company details, welcome email — as it stands, how to stage it, and the rules for each.\n\nExamples:\n baker organization setup team --company <id>\n baker organization setup team --agency <id>\n\nFull guide: ${DOC}`,\n },\n args: { agency: AGENCY_ARG },\n run: async ({ args }) => {\n const target = namedTarget(args.agency);\n try {\n const response = await apiGet<ClientSetupTeamResponse>(\"/api/organization/setup/team\", {\n ...target,\n chatId: requireChatId(),\n });\n process.stdout.write(`${response.data.guide}\\n`);\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst attio = defineCommand({\n meta: {\n name: \"attio\",\n description: `Baker's own team: what Baker's CRM holds on a client or an agency — calls with transcripts, notes, logged emails — saved to a file, with its files.\n\nExamples:\n baker organization setup attio --company <id>\n baker organization setup attio --agency <id>\n baker organization setup attio --company <id> --file-id <id>\n\nFull guide: ${DOC}`,\n },\n args: {\n \"file-id\": { type: \"string\", description: \"One of the record's files, to read as text\", required: false },\n agency: AGENCY_ARG,\n },\n run: async ({ args }) => {\n const target = namedTarget(args.agency);\n const fileId = args[\"file-id\"];\n try {\n const response = await apiGet<ClientSetupAttioResponse>(\"/api/organization/setup/attio\", {\n ...target,\n chatId: requireChatId(),\n ...(fileId ? { fileId } : {}),\n });\n const report = attioReport(response.data, ATTIO_DIR);\n if (report.write) {\n mkdirSync(dirname(report.write.path), { recursive: true });\n writeFileSync(report.write.path, report.write.text);\n }\n writeJson({ ok: true, data: report.answer });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\n/** A site read for a setup, as the backend hands it over. */\nasync function readSite(body: ClientSetupSiteRequest): Promise<void> {\n try {\n writeJson(await apiPost<ClientSetupSiteResponse>(\"/api/organization/setup/site\", body));\n } catch (err) {\n failApi(err);\n }\n}\n\nconst pages = defineCommand({\n meta: {\n name: \"pages\",\n description: `A client's website pages, to choose the few that decide its setup.\n\nExamples:\n baker organization setup pages --url https://acme.com\n baker organization setup pages --url https://acme.com --search pricing\n\nFull guide: ${DOC}`,\n },\n args: {\n url: { type: \"string\", description: \"The client's website\", required: true },\n search: { type: \"string\", description: \"Keep pages whose address has these words\", required: false },\n },\n run: async ({ args }) => {\n await readSite({ kind: \"pages\", url: args.url, ...(args.search ? { search: args.search } : {}) });\n },\n});\n\nconst inspect = defineCommand({\n meta: {\n name: \"inspect\",\n description: `Visit a client's page as a visitor would: tags that fire, Tag Manager, cookie consent, forms and their fields.\n\nSlow and paid: the home page, each page with a form, any landing they run. Three visits at most.\n\nExamples:\n baker organization setup inspect --url https://acme.com\n baker organization setup inspect --url https://acme.com/quote\n\nFull guide: ${DOC}`,\n },\n args: { url: { type: \"string\", description: \"The page to visit\", required: true } },\n run: async ({ args }) => {\n await readSite({ kind: \"inspect\", url: args.url });\n },\n});\n\nconst unstage = defineCommand({\n meta: {\n name: \"unstage\",\n description: `Take back the setup this chat staged for a company, or an agency's onboarding.\n\nExamples:\n baker organization setup unstage --company <id>\n baker organization setup unstage --agency <id>\n\nFull guide: ${DOC}`,\n },\n args: { agency: AGENCY_ARG },\n run: async ({ args }) => {\n const target = namedTarget(args.agency);\n try {\n writeJson(\n await apiPost<ClientSetupUnstageResponse>(\"/api/organization/setup/unstage\", {\n chatId: requireChatId(),\n ...target,\n }),\n );\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const setupCommand = defineCommand({\n meta: {\n name: \"setup\",\n description:\n \"A setup, prepared here by an admin of the organization — a company's, or in Baker's own team an agency's onboarding: `show` it, `stage` the whole of it on this chat, applied at Publish.\",\n },\n subCommands: { show, clients, team, attio, pages, inspect, stage, unstage },\n});\n","import { z } from \"zod\";\n\n/**\n * `/api/organization/setup/*` (`baker organization setup`) — a setup prepared\n * in the organization workspace, of one of three kinds (`setupKindSchema`): a\n * company's plan — what it needs set up, the questions its people are asked on\n * its setup link (with any answer already found), and the brief each step's\n * chat starts from — and, from Baker's own team, our team's part: the timeline,\n * contract, company details and welcome email of a client that signs with\n * Baker, or of an agency's onboarding.\n *\n * Staged on the workspace's chat and applied to the company at Publish. Only an\n * admin of the organization may stage one; anyone who works across it may read.\n * The valid step, connection, tag and key names are decided by the backend\n * (`convex/clientSetup/stage.ts`), which names them when it refuses one.\n */\n\nconst nameListSchema = z.array(z.string().trim().min(1)).max(50);\n\n/**\n * What a setup is, decided by the backend from who signs with Baker:\n * `agencyClient` (a company its agency pays for: its plan alone), `direct` (a\n * company that signs with Baker: its plan and our team's part), `agency` (an\n * agency's onboarding: our team's part alone).\n */\nexport const setupKindSchema = z.enum([\"agencyClient\", \"direct\", \"agency\"]);\nexport type SetupKind = z.infer<typeof setupKindSchema>;\n\n/** What a setup is for: a company (`--company <id>`) or an agency to onboard (`--agency <id>`), never both. */\nconst setupTargetFields = {\n companyId: z.string().min(1).optional(),\n agencyId: z.string().min(1).optional(),\n};\n\nfunction namesOneTarget(target: { companyId?: string; agencyId?: string }): boolean {\n return (target.companyId === undefined) !== (target.agencyId === undefined);\n}\n\nconst ONE_TARGET = { message: \"Name the company with --company <id> or the agency with --agency <id>, not both.\" };\n\nexport const clientSetupQuestionSchema = z.object({\n /** An existing question's id (from `show`), to reword or answer it; absent for a new one. */\n id: z.string().min(1).optional(),\n question: z.string().trim().min(1).max(500),\n /** Why it matters to the setup, in a sentence. */\n why: z.string().trim().min(1).max(500),\n /** The step whose chat the answer is for; absent when it is about the company as a whole. */\n step: z.string().trim().min(1).optional(),\n /** The answer, when the conversations already give it. The company's people can still change it. */\n answer: z.string().trim().min(1).max(5_000).optional(),\n});\nexport type ClientSetupQuestion = z.infer<typeof clientSetupQuestionSchema>;\n\nexport const clientSetupBriefSchema = z.object({\n step: z.string().trim().min(1),\n note: z.string().trim().min(1).max(20_000),\n});\nexport type ClientSetupBrief = z.infer<typeof clientSetupBriefSchema>;\n\n/**\n * Our team's part of a setup, staged in Baker's own workspace alone, for a\n * client that signs with Baker: each part whole as it should be after\n * Publish, or null to leave it. Its shapes are the setup planner's\n * (`baker organization setup team` prints them, with its rules), checked by the\n * backend, which names the field it refuses.\n */\nexport const clientSetupTeamSchema = z.object({\n /** Every step to the kickoff, in date order. */\n timeline: z.array(z.record(z.string(), z.unknown())).max(30).nullable().default(null),\n /** Show or hide the timeline on the client's setup link. */\n timelineShown: z.boolean().nullable().default(null),\n /** The whole contract: plan, setup fee, agreement and its clauses, whether the client sees them. */\n contract: z.record(z.string(), z.unknown()).nullable().default(null),\n /** The client's legal and billing identity, each field a string or null to leave it. */\n companyDetails: z.record(z.string(), z.string().nullable()).nullable().default(null),\n welcomeEmail: z\n .object({ subject: z.string().trim().min(1).max(1_000), body: z.string().trim().min(1).max(20_000) })\n .nullable()\n .default(null),\n});\nexport type ClientSetupTeam = z.infer<typeof clientSetupTeamSchema>;\n\n/** The whole setup, as it should be once published: every call replaces what this chat staged before. */\nexport const clientSetupSchema = z.object({\n /** What was understood about the company and why this setup, in a few lines for the reviewer. */\n summary: z.string().trim().min(1).max(4_000),\n /** Where it was learned: \"Gmail: 14 emails with acme.com\", \"Kickoff call, 3 March (Fireflies)\". */\n sources: z.array(z.string().trim().min(1).max(300)).max(30).default([]),\n /** Steps done in Baker: `competitors`, `images`, `form`, `tracking`, `landing`, `domain`, … */\n steps: nameListSchema.default([]),\n /** Accounts to connect by signing in: `google-ads`, `meta`, `google-analytics`, `hubspot`, … */\n connect: nameListSchema.default([]),\n /** Tracking tags to add: `meta`, `googleAds`, `linkedinInsightTag`, `hotjar`, … */\n tags: nameListSchema.default([]),\n /** Accounts connected by pasting a key: `chatgpt-ads`. */\n keys: nameListSchema.default([]),\n /** Apps from the app catalog, by slug (`baker mcp catalog <search>`). */\n apps: nameListSchema.default([]),\n questions: z.array(clientSetupQuestionSchema).max(20).default([]),\n /** Existing questions (by id) to take off the setup. */\n removeQuestions: z.array(z.string().min(1)).max(20).default([]),\n briefs: z.array(clientSetupBriefSchema).max(20).default([]),\n /** Baker's own team only: the timeline, contract, company details and welcome email. */\n team: clientSetupTeamSchema.optional(),\n});\nexport type ClientSetup = z.infer<typeof clientSetupSchema>;\nexport type ClientSetupInput = z.input<typeof clientSetupSchema>;\n\n// --- show (`baker organization setup show --company <id>`) ---\n\nexport const clientSetupStepSchema = z.object({\n id: z.string(),\n title: z.string(),\n /** On the company's plan right now. */\n planned: z.boolean(),\n /** Done in a chat with a brief, rather than a sign-in or a setting. */\n briefed: z.boolean(),\n});\n\nexport const clientSetupShowResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /** The company, or the agency being onboarded. */\n company: z.object({ id: z.string(), name: z.string(), website: z.string().nullable() }),\n kind: setupKindSchema,\n /**\n * What this chat stages for it: the company's plan (with its questions and\n * briefs), and our team's part — timeline, contract, company details,\n * welcome email — under `team` (`baker organization setup team` first),\n * in Baker's own team for a superadmin alone.\n */\n parts: z.object({ plan: z.boolean(), team: z.boolean() }),\n /** Whether the person in this chat may stage a setup: an admin of the organization. */\n canStage: z.boolean(),\n plan: z.object({\n steps: z.array(z.string()),\n connect: z.array(z.string()),\n tags: z.array(z.string()),\n keys: z.array(z.string()),\n apps: z.array(z.string()),\n }),\n /** Every step a plan can name, and whether this company's plan has it. */\n catalog: z.array(clientSetupStepSchema),\n /** Platforms the company already connected: never ask for them again. */\n connected: z.array(z.string()),\n /** Everything else it already has — tags with their ids, apps, Forms, landings, competitors followed, steps under way. */\n alreadyHas: z.array(z.string()),\n /** How to find this client in the team's tools: its email domains, the names it goes by, and notes the admins saved. */\n recognisedBy: z.object({\n saved: z.boolean(),\n emailDomains: z.array(z.string()),\n names: z.array(z.string()),\n notes: z.string(),\n }),\n questions: z.array(\n z.object({\n id: z.string(),\n question: z.string(),\n why: z.string(),\n step: z.string().nullable(),\n answer: z.string().nullable(),\n answeredBy: z.string().nullable(),\n }),\n ),\n briefs: z.array(z.object({ step: z.string(), note: z.string() })),\n /** Its setup link's progress, when it has one. */\n link: z.object({ completed: z.number(), total: z.number() }).nullable(),\n /** What this chat staged for the company, if anything. */\n staged: clientSetupSchema.nullable(),\n }),\n hints: z.array(z.string()).optional(),\n});\nexport type ClientSetupShowResponse = z.infer<typeof clientSetupShowResponseSchema>;\n\n// --- pages / inspect (`baker organization setup pages|inspect --url <url>`) ---\n\nexport const clientSetupSiteRequestSchema = z.object({\n kind: z.enum([\"pages\", \"inspect\"]),\n url: z.string().trim().min(1),\n /** `pages` only: keep pages whose address has these words, e.g. \"pricing\". */\n search: z.string().trim().min(1).optional(),\n});\nexport type ClientSetupSiteRequest = z.infer<typeof clientSetupSiteRequestSchema>;\n\n/** The planner's own reading of a site, as it hands it to the agent: pages, or a visit's tracking, consent and forms. */\nexport const clientSetupSiteResponseSchema = z.object({\n ok: z.literal(true),\n data: z.record(z.string(), z.unknown()),\n});\nexport type ClientSetupSiteResponse = z.infer<typeof clientSetupSiteResponseSchema>;\n\n// --- stage (`baker organization setup stage --company <id> --file setup.json`) ---\n\nexport const clientSetupStageRequestSchema = z\n .object({ chatId: z.string().min(1), ...setupTargetFields, setup: clientSetupSchema })\n .refine(namesOneTarget, ONE_TARGET);\nexport type ClientSetupStageRequest = z.input<typeof clientSetupStageRequestSchema>;\n\nexport const clientSetupStageResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n company: z.object({ id: z.string(), name: z.string() }),\n kind: setupKindSchema,\n /** What publishing would change, in the dashboard's words. */\n adds: z.array(z.string()),\n removes: z.array(z.string()),\n questions: z.object({ asked: z.number(), answered: z.number(), removed: z.number() }),\n briefs: z.number(),\n /** Our team's parts staged too, in Baker's own workspace: \"timeline\", \"contract\", \"company details\", \"welcome email\". */\n team: z.array(z.string()).optional(),\n }),\n hints: z.array(z.string()).optional(),\n});\nexport type ClientSetupStageResponse = z.infer<typeof clientSetupStageResponseSchema>;\n\n// --- unstage (`baker organization setup unstage --company <id>`) ---\n\nexport const clientSetupUnstageRequestSchema = z\n .object({ chatId: z.string().min(1), ...setupTargetFields })\n .refine(namesOneTarget, ONE_TARGET);\nexport type ClientSetupUnstageRequest = z.infer<typeof clientSetupUnstageRequestSchema>;\n\nexport const clientSetupUnstageResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({ removed: z.boolean() }),\n});\nexport type ClientSetupUnstageResponse = z.infer<typeof clientSetupUnstageResponseSchema>;\n\n// --- clients (`baker organization setup clients [--search <words>]`) ---\n\nexport const clientSetupClientsResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n /** Baker's own team, for a superadmin: every client that signs with Baker is listed, whatever its organization. */\n everyClient: z.boolean(),\n companies: z.array(\n z.object({\n id: z.string(),\n name: z.string(),\n website: z.string().nullable(),\n organization: z.string(),\n kind: setupKindSchema,\n /** It signs with Baker: our team's part of its setup (`team`) may be staged. */\n signsWithBaker: z.boolean(),\n }),\n ),\n /** Baker's own team, for a superadmin: the agencies to onboard (`--agency <id>`), our team's part alone. */\n agencies: z.array(z.object({ id: z.string(), name: z.string() })).default([]),\n /** How many more match, at least: narrow the search. */\n more: z.number(),\n }),\n});\nexport type ClientSetupClientsResponse = z.infer<typeof clientSetupClientsResponseSchema>;\n\n// --- team (`baker organization setup team --company <id>`) ---\n\nexport const clientSetupTeamResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n company: z.object({ id: z.string(), name: z.string() }),\n kind: setupKindSchema,\n /** How to stage our team's part, the planner's rules for it, and each part as it stands, as Markdown. */\n guide: z.string(),\n }),\n});\nexport type ClientSetupTeamResponse = z.infer<typeof clientSetupTeamResponseSchema>;\n\n// --- attio (`baker organization setup attio --company <id> [--file-id <id>]`) ---\n\nexport const clientSetupAttioFileSchema = z.object({\n id: z.string(),\n name: z.string(),\n contentType: z.string().nullable(),\n size: z.number().nullable(),\n date: z.string(),\n});\n\n/** What Attio holds on a client that signs with Baker, or one of its files as text. */\nexport const clientSetupAttioResponseSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n company: z.object({ id: z.string(), name: z.string() }),\n /** Whether the company is linked to its Attio record; nothing else is read when it is not. */\n linked: z.boolean(),\n read: z.object({ calls: z.number(), notes: z.number(), emails: z.number(), files: z.number() }).optional(),\n unreadable: z.array(z.string()).optional(),\n /** Every call with its transcript, note and logged email, newest first, as Markdown. */\n history: z.string().optional(),\n files: z.array(clientSetupAttioFileSchema).optional(),\n file: z.object({ id: z.string(), text: z.string().optional(), error: z.string().optional() }).optional(),\n }),\n});\nexport type ClientSetupAttioResponse = z.infer<typeof clientSetupAttioResponseSchema>;\n"],"mappings":"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","names":["defineCommand","existsSync","readFileSync","join","companies","readFileSync","join","existsSync","companies","mkdirSync","readFileSync","writeFileSync","join","defineCommand","defineCommand","readFileSync","join","mkdirSync","writeFileSync","companies","defineCommand"]}
@@ -1,66 +0,0 @@
1
- import {
2
- csvOrJson,
3
- handleMetaError
4
- } from "./chunk-OP7DNHD2.js";
5
- import {
6
- writeAdsOutput,
7
- writeJsonEnvelope
8
- } from "./chunk-SWL4AAPP.js";
9
- import {
10
- NO_CACHE_ARG
11
- } from "./chunk-K3TNTBZJ.js";
12
- import {
13
- apiGet
14
- } from "./chunk-XDZVBX6L.js";
15
- import "./chunk-N5O67GK5.js";
16
- import "./chunk-EE72SSB2.js";
17
- import "./chunk-WNSE7N75.js";
18
- import "./chunk-YQSBHWOI.js";
19
-
20
- // src/commands/ads/meta/pages.ts
21
- import { defineCommand } from "citty";
22
- function pageSelectionHints(data) {
23
- if (data.length === 0) return [];
24
- const accountHint = "Use a Page only with an ad account listed in its promotingAccountIds. hasPageAccessToken must be true to read instant forms; null means Meta could not check it. Form reads also require the company's lead-ads permissions.";
25
- if (data.length > 1) {
26
- return [
27
- accountHint,
28
- "MULTIPLE Pages can run ads from the selected Meta ad accounts \u2014 do NOT guess. Confirm with the user which Page an ad should run from before passing --page to `creatives create`; a wrong Page publishes the ad under the wrong brand identity and staging will not catch it."
29
- ];
30
- }
31
- return [accountHint];
32
- }
33
- var pagesCommand = defineCommand({
34
- meta: {
35
- name: "pages",
36
- description: `List the Facebook Pages that the selected Meta ad accounts can promote, showing which accounts can promote each Page. Every Meta ad publishes from a Page, so match its promotingAccountIds to the target account. hasPageAccessToken shows whether the connected person can also read that Page's instant forms. If more than one Page is listed, confirm the brand with the user.
37
-
38
- Examples:
39
- baker ads meta pages`
40
- },
41
- args: {
42
- "no-cache": NO_CACHE_ARG,
43
- output: { type: "string", description: "Output format", default: "json" }
44
- },
45
- run: async ({ args }) => {
46
- try {
47
- const params = {};
48
- if (args["no-cache"]) params["skip-cache"] = "true";
49
- const data = await apiGet("/api/ads/meta/pages", params);
50
- const fmt = csvOrJson(args);
51
- if (fmt !== "json") {
52
- writeAdsOutput(data, fmt);
53
- return;
54
- }
55
- const hints = pageSelectionHints(data);
56
- writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });
57
- } catch (err) {
58
- handleMetaError(err);
59
- }
60
- }
61
- });
62
- export {
63
- pageSelectionHints,
64
- pagesCommand
65
- };
66
- //# sourceMappingURL=pages-FTI44OSH.js.map
@@ -1,24 +0,0 @@
1
- import {
2
- definitionInsights,
3
- parseDays,
4
- performanceCommand,
5
- withDefinitions
6
- } from "./chunk-NXZCCGES.js";
7
- import "./chunk-TP7HKSBX.js";
8
- import "./chunk-66QHX566.js";
9
- import "./chunk-GXDLWBOY.js";
10
- import "./chunk-GIWHHCD6.js";
11
- import "./chunk-XQIOCIDO.js";
12
- import "./chunk-WTJSMYY2.js";
13
- import "./chunk-XDZVBX6L.js";
14
- import "./chunk-N5O67GK5.js";
15
- import "./chunk-EE72SSB2.js";
16
- import "./chunk-WNSE7N75.js";
17
- import "./chunk-YQSBHWOI.js";
18
- export {
19
- definitionInsights,
20
- parseDays,
21
- performanceCommand,
22
- withDefinitions
23
- };
24
- //# sourceMappingURL=performance-K7E5KAZW.js.map
@@ -1,60 +0,0 @@
1
- import {
2
- schemaArgs,
3
- stageChatgptOp
4
- } from "./chunk-3UXMQ3K2.js";
5
- import {
6
- CHATGPT_ADS_REFERENCE
7
- } from "./chunk-IG627WWY.js";
8
- import "./chunk-SWL4AAPP.js";
9
- import "./chunk-XDZVBX6L.js";
10
- import "./chunk-N5O67GK5.js";
11
- import "./chunk-EE72SSB2.js";
12
- import {
13
- registerSchema
14
- } from "./chunk-WNSE7N75.js";
15
- import "./chunk-YQSBHWOI.js";
16
-
17
- // src/commands/ads/chatgpt/pixels.ts
18
- import { defineCommand } from "citty";
19
- var CREATE_ARGS = {
20
- name: { type: "string", description: "What the pixel is called in Ads Manager, e.g. withbaker.com", required: true }
21
- };
22
- function pixelCreateOp(args) {
23
- return { kind: "pixel.create", payload: { name: typeof args.name === "string" ? args.name.trim() : args.name } };
24
- }
25
- registerSchema({
26
- command: "ads.chatgpt.pixels.create",
27
- description: "Stage a new website pixel for the account, applied when the chat is published. Read `conversions` first: an account usually needs one pixel, installed on every page, and a second splits the site's events.",
28
- args: schemaArgs(CREATE_ARGS)
29
- });
30
- var pixelsCreateCommand = defineCommand({
31
- meta: {
32
- name: "create",
33
- description: `Stage a new website pixel (applies when the chat is published).
34
-
35
- Example:
36
- baker ads chatgpt pixels create --name "withbaker.com"`
37
- },
38
- args: CREATE_ARGS,
39
- run: async ({ args }) => {
40
- await stageChatgptOp(pixelCreateOp(args), CHATGPT_ADS_REFERENCE.conversions, (staged) => [
41
- `Define what it counts with \`baker ads chatgpt conversions create --pixel ${staged.ref} --name \u2026 --event \u2026\`.`,
42
- "After the publish, read its Pixel ID with `baker ads chatgpt conversions` and install it on the site's pages as a tracking tag."
43
- ]);
44
- }
45
- });
46
- var pixelsCommand = defineCommand({
47
- meta: {
48
- name: "pixels",
49
- description: `Website pixels \u2014 what a site installs so ChatGPT Ads can count its conversions. Read them with \`baker ads chatgpt conversions\`.
50
-
51
- Example:
52
- baker ads chatgpt pixels create --name "withbaker.com"`
53
- },
54
- subCommands: { create: pixelsCreateCommand }
55
- });
56
- export {
57
- pixelCreateOp,
58
- pixelsCommand
59
- };
60
- //# sourceMappingURL=pixels-6IUB3Y3H.js.map
@@ -1,108 +0,0 @@
1
- import {
2
- csvOrJson,
3
- daysAgoIso,
4
- handleMetaError,
5
- resolveAccountIdArg,
6
- todayIso
7
- } from "./chunk-OP7DNHD2.js";
8
- import {
9
- writeAdsJson,
10
- writeAdsOutput
11
- } from "./chunk-SWL4AAPP.js";
12
- import {
13
- NO_CACHE_ARG
14
- } from "./chunk-K3TNTBZJ.js";
15
- import {
16
- apiGet
17
- } from "./chunk-XDZVBX6L.js";
18
- import "./chunk-N5O67GK5.js";
19
- import "./chunk-EE72SSB2.js";
20
- import "./chunk-WNSE7N75.js";
21
- import "./chunk-YQSBHWOI.js";
22
-
23
- // src/commands/ads/meta/pixels.ts
24
- import { defineCommand } from "citty";
25
- var pixelsCommand = defineCommand({
26
- meta: {
27
- name: "pixels",
28
- description: `List Meta Pixels for an ad account, or fetch firing stats for one pixel.
29
-
30
- Examples:
31
- baker ads meta pixels --account-id act_123
32
- baker ads meta pixels --account-id act_123 --pixel-id 9876 --stats --days 7`
33
- },
34
- args: {
35
- "account-id": { type: "string", description: "Meta ad account ID" },
36
- "pixel-id": { type: "string", description: "Pixel ID for --stats" },
37
- stats: { type: "boolean", description: "Fetch firing stats for the pixel" },
38
- aggregation: {
39
- type: "string",
40
- description: "stats aggregation: event|browser_type|host|pixel_fire",
41
- default: "event"
42
- },
43
- days: { type: "string", description: "Lookback days for --stats (default 7)" },
44
- "no-cache": NO_CACHE_ARG,
45
- output: { type: "string", description: "Output format", default: "json" }
46
- },
47
- run: async ({ args }) => {
48
- try {
49
- if (args.stats) {
50
- await runStats(args);
51
- return;
52
- }
53
- await runList(args);
54
- } catch (err) {
55
- handleMetaError(err);
56
- }
57
- }
58
- });
59
- async function runStats(args) {
60
- const pixelId = args["pixel-id"];
61
- if (!pixelId) {
62
- handleMetaError(new Error("--pixel-id is required when --stats is set"));
63
- }
64
- const days = args.days ? Number(args.days) : 7;
65
- if (!Number.isInteger(days) || days <= 0 || days > 90) {
66
- handleMetaError(new Error("--days must be a positive integer \u2264 90"));
67
- }
68
- const params = {
69
- "pixel-id": pixelId,
70
- aggregation: args.aggregation ?? "event",
71
- "start-time": daysAgoIso(days),
72
- "end-time": todayIso()
73
- };
74
- if (args["no-cache"]) params["skip-cache"] = "true";
75
- const data = await apiGet("/api/ads/meta/pixel-stats", params);
76
- emit(data, args);
77
- }
78
- async function runList(args) {
79
- const accountId = resolveAccountIdArg(args);
80
- const params = { "account-id": accountId };
81
- if (args["no-cache"]) params["skip-cache"] = "true";
82
- const { pixels, restrictedFields } = await apiGet("/api/ads/meta/pixels", params);
83
- emit(pixels, args, pixelWarnings(restrictedFields));
84
- }
85
- function pixelWarnings(restrictedFields) {
86
- if (restrictedFields.length === 0) {
87
- return [];
88
- }
89
- return [
90
- {
91
- code: "PIXEL_FIELDS_RESTRICTED",
92
- message: `Meta withheld ${restrictedFields.join(", ")} for these pixels \u2014 the connected user holds no role in the Business that owns them. IDs, names, creation and last-fired times are complete; install code and setup details are not. To get them, the client assigns the pixel to the connected user in Meta Business settings \u2192 Data sources \u2192 Datasets.`
93
- }
94
- ];
95
- }
96
- function emit(data, args, warnings = []) {
97
- const fmt = csvOrJson(args);
98
- if (fmt !== "json") {
99
- writeAdsOutput(data, fmt);
100
- return;
101
- }
102
- writeAdsJson({ ok: true, data, ...warnings.length > 0 ? { warnings } : {} });
103
- }
104
- export {
105
- pixelWarnings,
106
- pixelsCommand
107
- };
108
- //# sourceMappingURL=pixels-MBKR4XPX.js.map
@@ -1,169 +0,0 @@
1
- import {
2
- FACEBOOK_PREVIEW_FORMATS,
3
- INSTAGRAM_PREVIEW_FORMATS,
4
- PLATFORM_SCOPED_POSITIONS,
5
- previewFormatForPosition
6
- } from "./chunk-GOJXKIFQ.js";
7
- import {
8
- handleMetaError
9
- } from "./chunk-OP7DNHD2.js";
10
- import {
11
- writeAdsJson,
12
- writeJsonEnvelope
13
- } from "./chunk-SWL4AAPP.js";
14
- import {
15
- NO_CACHE_ARG
16
- } from "./chunk-K3TNTBZJ.js";
17
- import {
18
- apiPost
19
- } from "./chunk-XDZVBX6L.js";
20
- import "./chunk-N5O67GK5.js";
21
- import "./chunk-EE72SSB2.js";
22
- import "./chunk-WNSE7N75.js";
23
- import "./chunk-YQSBHWOI.js";
24
-
25
- // src/commands/ads/meta/preview.ts
26
- import { writeFileSync } from "fs";
27
- import { defineCommand } from "citty";
28
- var VALID_AD_FORMATS = [
29
- "DESKTOP_FEED_STANDARD",
30
- "MOBILE_FEED_STANDARD",
31
- "MOBILE_FEED_BASIC",
32
- "RIGHT_COLUMN_STANDARD",
33
- "MOBILE_FULLWIDTH",
34
- "MOBILE_INTERSTITIAL",
35
- "MOBILE_BANNER",
36
- "MOBILE_MEDIUM_RECTANGLE",
37
- "MOBILE_NATIVE",
38
- "FACEBOOK_STORY_MOBILE",
39
- "FACEBOOK_REELS_MOBILE",
40
- "INSTAGRAM_STORY",
41
- "INSTAGRAM_REELS",
42
- "INSTAGRAM_REELS_OVERLAY",
43
- "INSTAGRAM_STANDARD",
44
- "INSTAGRAM_EXPLORE_CONTEXTUAL",
45
- "INSTAGRAM_EXPLORE_GRID_HOME",
46
- "INSTAGRAM_SEARCH_CHAIN",
47
- "INSTAGRAM_SHOP",
48
- "INSTAGRAM_PROFILE_FEED",
49
- "INSTREAM_VIDEO_DESKTOP",
50
- "INSTREAM_VIDEO_MOBILE",
51
- "FACEBOOK_REELS_BANNER",
52
- "FACEBOOK_REELS_STICKER",
53
- "MESSENGER_MOBILE_INBOX_MEDIA",
54
- "MESSENGER_MOBILE_STORY_MEDIA",
55
- "AUDIENCE_NETWORK_OUTSTREAM_VIDEO",
56
- "AUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILE",
57
- "AUDIENCE_NETWORK_REWARDED_VIDEO",
58
- "INSTANT_ARTICLE_STANDARD",
59
- "MARKETPLACE_MOBILE",
60
- "BIZ_DISCO_FEED_MOBILE"
61
- ];
62
- function failPreviewValidation(message) {
63
- writeAdsJson({ ok: false, error: { code: "VALIDATION_ERROR", message } });
64
- process.exit(1);
65
- }
66
- function resolvePlacement(position, platform) {
67
- const platformArg = typeof platform === "string" ? platform.toLowerCase() : void 0;
68
- if (platformArg && platformArg !== "facebook" && platformArg !== "instagram") {
69
- failPreviewValidation("--platform must be facebook or instagram");
70
- }
71
- const format = previewFormatForPosition(position, platformArg);
72
- if (format) {
73
- return format;
74
- }
75
- if (PLATFORM_SCOPED_POSITIONS.has(position) && !platformArg) {
76
- failPreviewValidation(
77
- `--placement ${position} names a different surface on Facebook and on Instagram \u2014 add --platform facebook or --platform instagram (the breakdown row's publisher_platform)`
78
- );
79
- }
80
- failPreviewValidation(
81
- `No Meta preview format is published for placement "${position}". Meta does not document one for every placement (facebook_notification and facebook_profile_feed among them), so this placement cannot be previewed \u2014 report it as unverified rather than inferring what it renders. Pass the platform_position exactly as the insights breakdown spelled it: targeting names a few surfaces differently (story, reels, explore_home) and those names never appear in a breakdown. Previewable placements: ${listPlacements()}`
82
- );
83
- }
84
- function listPlacements() {
85
- const facebook = Object.keys(FACEBOOK_PREVIEW_FORMATS).join(", ");
86
- const instagram = Object.keys(INSTAGRAM_PREVIEW_FORMATS).join(", ");
87
- return `facebook \u2014 ${facebook}; instagram \u2014 ${instagram}`;
88
- }
89
- var previewCommand = defineCommand({
90
- meta: {
91
- name: "preview",
92
- description: `Generate a Meta-hosted preview iframe for a creative or ad. Returns iframe HTML which you
93
- can embed or save to a file. The iframe URL contains a short-lived access token \u2014 treat as secret.
94
-
95
- Start here when you need to know what a creative looks like in one specific placement \u2014 this is
96
- Meta's own renderer, so it settles "does my video show as a still image there?" without guessing.
97
- Pass the placement straight from an insights breakdown with --placement (a platform_position value),
98
- or a Meta ad_format with --ad-format. Run --list-formats to see both sets.
99
-
100
- Examples:
101
- baker ads meta preview --creative-id 6123 --ad-format MOBILE_FEED_STANDARD
102
- baker ads meta preview --creative-id 6123 --placement facebook_reels_overlay --platform facebook
103
- baker ads meta preview --ad-id 9988 --ad-format INSTAGRAM_REELS --out-file /tmp/preview.html
104
- baker ads meta preview --account-id act_123 --creative '{"object_story_spec":{...}}' --ad-format MOBILE_FEED_STANDARD`
105
- },
106
- args: {
107
- "creative-id": { type: "string", description: "Existing creative ID" },
108
- "ad-id": { type: "string", description: "Existing ad ID" },
109
- "account-id": { type: "string", description: "Required when previewing an unpublished --creative spec" },
110
- creative: { type: "string", description: "JSON spec of an unpublished creative (e.g. object_story_spec)" },
111
- "ad-format": { type: "string", description: "Meta ad_format enum value (--list-formats to see them)" },
112
- placement: {
113
- type: "string",
114
- description: "platform_position from an insights breakdown (e.g. facebook_reels_overlay) \u2014 resolved to an ad_format"
115
- },
116
- platform: { type: "string", description: "facebook|instagram \u2014 required for --placement feed, which both report" },
117
- "list-formats": { type: "boolean", description: "Print the ad_format values and placement mappings, then exit" },
118
- "out-file": { type: "string", description: "Save iframe HTML to this path" },
119
- "no-cache": NO_CACHE_ARG
120
- },
121
- run: async ({ args }) => {
122
- if (args["list-formats"]) {
123
- writeAdsJson({
124
- ok: true,
125
- data: {
126
- adFormats: VALID_AD_FORMATS,
127
- placements: { facebook: FACEBOOK_PREVIEW_FORMATS, instagram: INSTAGRAM_PREVIEW_FORMATS }
128
- }
129
- });
130
- return;
131
- }
132
- const placement = args.placement;
133
- const adFormat = placement ? resolvePlacement(placement, args.platform) : args["ad-format"];
134
- if (!adFormat) {
135
- failPreviewValidation("pass --ad-format or --placement (see --list-formats)");
136
- }
137
- if (!VALID_AD_FORMATS.includes(adFormat)) {
138
- failPreviewValidation(
139
- `Invalid --ad-format "${adFormat}". Meta publishes no complete ad_format enum, so this is the set we know: ${VALID_AD_FORMATS.join(", ")}. To preview a placement you saw in an insights breakdown, pass --placement <platform_position> instead of guessing a format name.`
140
- );
141
- }
142
- const body = { adFormat };
143
- if (args["creative-id"]) body.creativeId = args["creative-id"];
144
- if (args["ad-id"]) body.adId = args["ad-id"];
145
- if (args["account-id"]) body.accountId = args["account-id"];
146
- if (args.creative) body.creative = args.creative;
147
- if (args["no-cache"]) body.skipCache = true;
148
- try {
149
- const data = await apiPost("/api/ads/meta/preview", body);
150
- const html = data.map((d) => d.body).join("\n");
151
- const hints = placement ? [
152
- `Rendered ${placement} as ad_format ${adFormat}. Open the iframe to SEE it \u2014 Meta does not document what it renders for a creative a placement cannot take, so a preview you looked at is the evidence, and anything you did not look at stays unverified.`
153
- ] : [];
154
- if (args["out-file"]) {
155
- const summary = { ok: true, data: { file: args["out-file"], rows: data.length, adFormat } };
156
- writeFileSync(args["out-file"], html, "utf-8");
157
- writeJsonEnvelope(hints.length > 0 ? { ...summary, hints } : summary);
158
- return;
159
- }
160
- writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });
161
- } catch (err) {
162
- handleMetaError(err);
163
- }
164
- }
165
- });
166
- export {
167
- previewCommand
168
- };
169
- //# sourceMappingURL=preview-V4YBD45S.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/ads/meta/preview.ts"],"sourcesContent":["import { writeFileSync } from \"node:fs\";\nimport {\n FACEBOOK_PREVIEW_FORMATS,\n INSTAGRAM_PREVIEW_FORMATS,\n PLATFORM_SCOPED_POSITIONS,\n previewFormatForPosition,\n} from \"@baker/api/ads-meta\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeAdsJson, writeJsonEnvelope } from \"../output.ts\";\nimport { handleMetaError } from \"./shared.ts\";\n\nconst VALID_AD_FORMATS = [\n \"DESKTOP_FEED_STANDARD\",\n \"MOBILE_FEED_STANDARD\",\n \"MOBILE_FEED_BASIC\",\n \"RIGHT_COLUMN_STANDARD\",\n \"MOBILE_FULLWIDTH\",\n \"MOBILE_INTERSTITIAL\",\n \"MOBILE_BANNER\",\n \"MOBILE_MEDIUM_RECTANGLE\",\n \"MOBILE_NATIVE\",\n \"FACEBOOK_STORY_MOBILE\",\n \"FACEBOOK_REELS_MOBILE\",\n \"INSTAGRAM_STORY\",\n \"INSTAGRAM_REELS\",\n \"INSTAGRAM_REELS_OVERLAY\",\n \"INSTAGRAM_STANDARD\",\n \"INSTAGRAM_EXPLORE_CONTEXTUAL\",\n \"INSTAGRAM_EXPLORE_GRID_HOME\",\n \"INSTAGRAM_SEARCH_CHAIN\",\n \"INSTAGRAM_SHOP\",\n \"INSTAGRAM_PROFILE_FEED\",\n \"INSTREAM_VIDEO_DESKTOP\",\n \"INSTREAM_VIDEO_MOBILE\",\n \"FACEBOOK_REELS_BANNER\",\n \"FACEBOOK_REELS_STICKER\",\n \"MESSENGER_MOBILE_INBOX_MEDIA\",\n \"MESSENGER_MOBILE_STORY_MEDIA\",\n \"AUDIENCE_NETWORK_OUTSTREAM_VIDEO\",\n \"AUDIENCE_NETWORK_INSTREAM_VIDEO_MOBILE\",\n \"AUDIENCE_NETWORK_REWARDED_VIDEO\",\n \"INSTANT_ARTICLE_STANDARD\",\n \"MARKETPLACE_MOBILE\",\n \"BIZ_DISCO_FEED_MOBILE\",\n];\n\n/** A bad flag is not a network failure — mislabelling it invites a retry of the same doomed call. */\nfunction failPreviewValidation(message: string): never {\n writeAdsJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message } });\n process.exit(1);\n}\n\n/**\n * Preview is the free way to see what Meta actually renders for a creative in a\n * given surface — the check that turns \"this placement must be showing a still\"\n * from a claim into an observation. It was being used by guessing format names,\n * so both doors are open now: the Meta `ad_format` enum via `--ad-format`, and\n * the `platform_position` an insights breakdown reports via `--placement`.\n */\nfunction resolvePlacement(position: string, platform: unknown): string {\n const platformArg = typeof platform === \"string\" ? platform.toLowerCase() : undefined;\n if (platformArg && platformArg !== \"facebook\" && platformArg !== \"instagram\") {\n failPreviewValidation(\"--platform must be facebook or instagram\");\n }\n const format = previewFormatForPosition(position, platformArg);\n if (format) {\n return format;\n }\n if (PLATFORM_SCOPED_POSITIONS.has(position) && !platformArg) {\n failPreviewValidation(\n `--placement ${position} names a different surface on Facebook and on Instagram — add --platform facebook or --platform instagram (the breakdown row's publisher_platform)`,\n );\n }\n failPreviewValidation(\n `No Meta preview format is published for placement \"${position}\". Meta does not document one for every placement (facebook_notification and facebook_profile_feed among them), so this placement cannot be previewed — report it as unverified rather than inferring what it renders. Pass the platform_position exactly as the insights breakdown spelled it: targeting names a few surfaces differently (story, reels, explore_home) and those names never appear in a breakdown. Previewable placements: ${listPlacements()}`,\n );\n}\n\nfunction listPlacements(): string {\n const facebook = Object.keys(FACEBOOK_PREVIEW_FORMATS).join(\", \");\n const instagram = Object.keys(INSTAGRAM_PREVIEW_FORMATS).join(\", \");\n return `facebook — ${facebook}; instagram — ${instagram}`;\n}\n\nexport const previewCommand = defineCommand({\n meta: {\n name: \"preview\",\n description: `Generate a Meta-hosted preview iframe for a creative or ad. Returns iframe HTML which you\ncan embed or save to a file. The iframe URL contains a short-lived access token — treat as secret.\n\nStart here when you need to know what a creative looks like in one specific placement — this is\nMeta's own renderer, so it settles \"does my video show as a still image there?\" without guessing.\nPass the placement straight from an insights breakdown with --placement (a platform_position value),\nor a Meta ad_format with --ad-format. Run --list-formats to see both sets.\n\nExamples:\n baker ads meta preview --creative-id 6123 --ad-format MOBILE_FEED_STANDARD\n baker ads meta preview --creative-id 6123 --placement facebook_reels_overlay --platform facebook\n baker ads meta preview --ad-id 9988 --ad-format INSTAGRAM_REELS --out-file /tmp/preview.html\n baker ads meta preview --account-id act_123 --creative '{\"object_story_spec\":{...}}' --ad-format MOBILE_FEED_STANDARD`,\n },\n args: {\n \"creative-id\": { type: \"string\", description: \"Existing creative ID\" },\n \"ad-id\": { type: \"string\", description: \"Existing ad ID\" },\n \"account-id\": { type: \"string\", description: \"Required when previewing an unpublished --creative spec\" },\n creative: { type: \"string\", description: \"JSON spec of an unpublished creative (e.g. object_story_spec)\" },\n \"ad-format\": { type: \"string\", description: \"Meta ad_format enum value (--list-formats to see them)\" },\n placement: {\n type: \"string\",\n description:\n \"platform_position from an insights breakdown (e.g. facebook_reels_overlay) — resolved to an ad_format\",\n },\n platform: { type: \"string\", description: \"facebook|instagram — required for --placement feed, which both report\" },\n \"list-formats\": { type: \"boolean\", description: \"Print the ad_format values and placement mappings, then exit\" },\n \"out-file\": { type: \"string\", description: \"Save iframe HTML to this path\" },\n \"no-cache\": NO_CACHE_ARG,\n },\n run: async ({ args }) => {\n if (args[\"list-formats\"]) {\n writeAdsJson({\n ok: true,\n data: {\n adFormats: VALID_AD_FORMATS,\n placements: { facebook: FACEBOOK_PREVIEW_FORMATS, instagram: INSTAGRAM_PREVIEW_FORMATS },\n },\n });\n return;\n }\n\n const placement = args.placement as string | undefined;\n const adFormat = placement ? resolvePlacement(placement, args.platform) : (args[\"ad-format\"] as string);\n if (!adFormat) {\n failPreviewValidation(\"pass --ad-format or --placement (see --list-formats)\");\n }\n if (!VALID_AD_FORMATS.includes(adFormat)) {\n failPreviewValidation(\n `Invalid --ad-format \"${adFormat}\". Meta publishes no complete ad_format enum, so this is the set we know: ${VALID_AD_FORMATS.join(\", \")}. To preview a placement you saw in an insights breakdown, pass --placement <platform_position> instead of guessing a format name.`,\n );\n }\n const body: Record<string, unknown> = { adFormat };\n if (args[\"creative-id\"]) body.creativeId = args[\"creative-id\"];\n if (args[\"ad-id\"]) body.adId = args[\"ad-id\"];\n if (args[\"account-id\"]) body.accountId = args[\"account-id\"];\n if (args.creative) body.creative = args.creative;\n if (args[\"no-cache\"]) body.skipCache = true;\n\n try {\n const data = await apiPost<Array<{ body: string }>>(\"/api/ads/meta/preview\", body);\n const html = data.map((d) => d.body).join(\"\\n\");\n const hints = placement\n ? [\n `Rendered ${placement} as ad_format ${adFormat}. Open the iframe to SEE it — Meta does not document what it renders for a creative a placement cannot take, so a preview you looked at is the evidence, and anything you did not look at stays unverified.`,\n ]\n : [];\n if (args[\"out-file\"]) {\n const summary = { ok: true as const, data: { file: args[\"out-file\"], rows: data.length, adFormat } };\n writeFileSync(args[\"out-file\"] as string, html, \"utf-8\");\n writeJsonEnvelope(hints.length > 0 ? { ...summary, hints } : summary);\n return;\n }\n writeJsonEnvelope(hints.length > 0 ? { ok: true, data, hints } : { ok: true, data });\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n"],"mappings":"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","names":[]}