@koda-sl/baker-cli 0.495.0 → 0.497.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (848) hide show
  1. package/README.md +25 -4
  2. package/dist/account-ZKJFX2GK.js +80 -0
  3. package/dist/account-ZKJFX2GK.js.map +1 -0
  4. package/dist/account-users-SZCYHVBM.js +62 -0
  5. package/dist/account-users-SZCYHVBM.js.map +1 -0
  6. package/dist/accounts-5DFYKYSM.js +78 -0
  7. package/dist/accounts-5DFYKYSM.js.map +1 -0
  8. package/dist/accounts-OGAIQNE6.js +612 -0
  9. package/dist/accounts-OGAIQNE6.js.map +1 -0
  10. package/dist/actions-FMNJSOBA.js +55 -0
  11. package/dist/activecampaign-LYYYH6XD.js +936 -0
  12. package/dist/activecampaign-LYYYH6XD.js.map +1 -0
  13. package/dist/add-AOQLZRPC.js +80 -0
  14. package/dist/add-AOQLZRPC.js.map +1 -0
  15. package/dist/add-HWXEPSZF.js +105 -0
  16. package/dist/add-HWXEPSZF.js.map +1 -0
  17. package/dist/add-VDZPGZF5.js +148 -0
  18. package/dist/add-VDZPGZF5.js.map +1 -0
  19. package/dist/add-YYP3O536.js +303 -0
  20. package/dist/add-YYP3O536.js.map +1 -0
  21. package/dist/ads-OLXSDPD6.js +40 -0
  22. package/dist/advertisers-STYAIX72.js +121 -0
  23. package/dist/advertisers-STYAIX72.js.map +1 -0
  24. package/dist/analytics-6WBK4VFO.js +1977 -0
  25. package/dist/analytics-6WBK4VFO.js.map +1 -0
  26. package/dist/analytics-DHB325DM.js +434 -0
  27. package/dist/analytics-DHB325DM.js.map +1 -0
  28. package/dist/assign-BFXHYTMF.js +78 -0
  29. package/dist/assign-BFXHYTMF.js.map +1 -0
  30. package/dist/audience-size-XWHZV2GH.js +74 -0
  31. package/dist/audience-size-XWHZV2GH.js.map +1 -0
  32. package/dist/audit-IYGRU7LD.js +152 -0
  33. package/dist/audit-IYGRU7LD.js.map +1 -0
  34. package/dist/autocomplete-SDDSJTAF.js +112 -0
  35. package/dist/autocomplete-SDDSJTAF.js.map +1 -0
  36. package/dist/avatars-I4H3NMEJ.js +38 -0
  37. package/dist/bid-pricing-OVYBDRMV.js +101 -0
  38. package/dist/bid-pricing-OVYBDRMV.js.map +1 -0
  39. package/dist/brand-3V7ECY7D.js +22 -0
  40. package/dist/brief-U2W7KMFC.js +539 -0
  41. package/dist/brief-U2W7KMFC.js.map +1 -0
  42. package/dist/campaign-groups-FJHBVUA3.js +97 -0
  43. package/dist/campaign-groups-FJHBVUA3.js.map +1 -0
  44. package/dist/campaign-writes-XKYYMZML.js +166 -0
  45. package/dist/campaign-writes-XKYYMZML.js.map +1 -0
  46. package/dist/campaigns-E5UW4I3X.js +111 -0
  47. package/dist/campaigns-E5UW4I3X.js.map +1 -0
  48. package/dist/campaigns-MCB76NPQ.js +107 -0
  49. package/dist/canvas-JCNKMGCG.js +46 -0
  50. package/dist/capabilities-CLTZCXCZ.js +145 -0
  51. package/dist/capabilities-CLTZCXCZ.js.map +1 -0
  52. package/dist/chatgpt-XFZ42NXC.js +47 -0
  53. package/dist/chats-DTJSBDWO.js +277 -0
  54. package/dist/chats-DTJSBDWO.js.map +1 -0
  55. package/dist/check-CZTS64AW.js +105 -0
  56. package/dist/check-CZTS64AW.js.map +1 -0
  57. package/dist/chunk-2YTBPRRG.js +207 -0
  58. package/dist/chunk-3SNCMEJB.js +97 -0
  59. package/dist/chunk-7QGFO35A.js +23 -0
  60. package/dist/chunk-AV7ALENU.js +191 -0
  61. package/dist/chunk-BRLFQ4VX.js +604 -0
  62. package/dist/chunk-CAZGM2NX.js +92 -0
  63. package/dist/chunk-CAZGM2NX.js.map +1 -0
  64. package/dist/chunk-DJE7UXYT.js +831 -0
  65. package/dist/chunk-EFWXYUSK.js +139 -0
  66. package/dist/chunk-EONSZAZB.js +3868 -0
  67. package/dist/chunk-FALJQCWL.js +661 -0
  68. package/dist/chunk-FALJQCWL.js.map +1 -0
  69. package/dist/chunk-FG3MV2XM.js +89 -0
  70. package/dist/chunk-FKG476GH.js +392 -0
  71. package/dist/chunk-FUGQSIYG.js +297 -0
  72. package/dist/chunk-G4OFH3MX.js +455 -0
  73. package/dist/chunk-G4OFH3MX.js.map +1 -0
  74. package/dist/chunk-GZ4A2VYW.js +39 -0
  75. package/dist/chunk-GZ4A2VYW.js.map +1 -0
  76. package/dist/chunk-HPLHAHG5.js +275 -0
  77. package/dist/chunk-I24YT2KG.js +122 -0
  78. package/dist/chunk-IFDZZOUC.js +903 -0
  79. package/dist/chunk-JVVUI55M.js +455 -0
  80. package/dist/chunk-KKSHEPBY.js +363 -0
  81. package/dist/chunk-KQ7RCLGC.js +547 -0
  82. package/dist/chunk-L7WMS5PW.js +172 -0
  83. package/dist/chunk-LBRO4MTL.js +19 -0
  84. package/dist/chunk-LNRPOULW.js +224 -0
  85. package/dist/chunk-LX6WC2XZ.js +942 -0
  86. package/dist/chunk-MMGTJBM6.js +142 -0
  87. package/dist/chunk-NZS3KEQ2.js +97 -0
  88. package/dist/chunk-NZS3KEQ2.js.map +1 -0
  89. package/dist/chunk-O37VU7FG.js +6799 -0
  90. package/dist/chunk-O37VU7FG.js.map +1 -0
  91. package/dist/chunk-OEZYSL3U.js +51 -0
  92. package/dist/chunk-OOVHBMQB.js +103 -0
  93. package/dist/chunk-PTH7VWKK.js +159 -0
  94. package/dist/chunk-PYD6IGW6.js +401 -0
  95. package/dist/chunk-PYD6IGW6.js.map +1 -0
  96. package/dist/chunk-QE2E4EYJ.js +349 -0
  97. package/dist/chunk-QE2E4EYJ.js.map +1 -0
  98. package/dist/chunk-QZF4BVKL.js +66 -0
  99. package/dist/chunk-RITUSBYO.js +61 -0
  100. package/dist/chunk-SSTL3A7Z.js +206 -0
  101. package/dist/chunk-SZNGQ2GF.js +64 -0
  102. package/dist/chunk-SZNGQ2GF.js.map +1 -0
  103. package/dist/chunk-TD4SO6TR.js +169 -0
  104. package/dist/chunk-UZ4RTOFG.js +91 -0
  105. package/dist/chunk-VAX7PFQV.js +592 -0
  106. package/dist/chunk-VDRSZK4P.js +494 -0
  107. package/dist/chunk-VNU2EYD4.js +344 -0
  108. package/dist/chunk-WT4WDIXA.js +156 -0
  109. package/dist/chunk-XEX23CIB.js +160 -0
  110. package/dist/chunk-XXDF25BW.js +8939 -0
  111. package/dist/chunk-YJ3LSFMX.js +249 -0
  112. package/dist/chunk-YVK5RT3B.js +197 -0
  113. package/dist/chunk-YWWRLZUR.js +433 -0
  114. package/dist/chunk-Z4S5BCVZ.js +57 -0
  115. package/dist/chunk-ZYGK7GAK.js +1079 -0
  116. package/dist/claim-TSFPWTQY.js +198 -0
  117. package/dist/claim-TSFPWTQY.js.map +1 -0
  118. package/dist/cli.js +38 -37
  119. package/dist/cli.js.map +1 -1
  120. package/dist/companies-P7FZNJQV.js +196 -0
  121. package/dist/companies-P7FZNJQV.js.map +1 -0
  122. package/dist/complete-SYDIHMD5.js +82 -0
  123. package/dist/complete-SYDIHMD5.js.map +1 -0
  124. package/dist/connect-COS6G45S.js +43 -0
  125. package/dist/conversation-UJOWMJRH.js +94 -0
  126. package/dist/conversation-UJOWMJRH.js.map +1 -0
  127. package/dist/conversions-ONOIEILU.js +138 -0
  128. package/dist/conversions-ONOIEILU.js.map +1 -0
  129. package/dist/create-DPQRYQXK.js +208 -0
  130. package/dist/create-DPQRYQXK.js.map +1 -0
  131. package/dist/create-JD76Z4A4.js +60 -0
  132. package/dist/create-JD76Z4A4.js.map +1 -0
  133. package/dist/create-NOT3HGP2.js +133 -0
  134. package/dist/create-NOT3HGP2.js.map +1 -0
  135. package/dist/create-ZYEB7SHF.js +236 -0
  136. package/dist/create-ZYEB7SHF.js.map +1 -0
  137. package/dist/creatives-LRSELC7Y.js +221 -0
  138. package/dist/creatives-LRSELC7Y.js.map +1 -0
  139. package/dist/creatives-SEQHJD2M.js +58 -0
  140. package/dist/credentials-LHPTUVVA.js +288 -0
  141. package/dist/credentials-LHPTUVVA.js.map +1 -0
  142. package/dist/critique-Q7GSZ5RP.js +1459 -0
  143. package/dist/critique-Q7GSZ5RP.js.map +1 -0
  144. package/dist/critique-RR2XOQCE.js +228 -0
  145. package/dist/critique-RR2XOQCE.js.map +1 -0
  146. package/dist/crm-J7EU32PL.js +319 -0
  147. package/dist/crm-J7EU32PL.js.map +1 -0
  148. package/dist/crm-MC444ZVU.js +225 -0
  149. package/dist/crm-MC444ZVU.js.map +1 -0
  150. package/dist/customers-LMSX33FO.js +57 -0
  151. package/dist/delete-BQBVATMF.js +55 -0
  152. package/dist/delete-BQBVATMF.js.map +1 -0
  153. package/dist/delete-K7A3AUPH.js +65 -0
  154. package/dist/delete-K7A3AUPH.js.map +1 -0
  155. package/dist/delete-VV2ICIHF.js +67 -0
  156. package/dist/delete-VV2ICIHF.js.map +1 -0
  157. package/dist/demographics-7GWUXXS6.js +139 -0
  158. package/dist/demographics-7GWUXXS6.js.map +1 -0
  159. package/dist/discard-3CLZ4DPD.js +67 -0
  160. package/dist/discard-3CLZ4DPD.js.map +1 -0
  161. package/dist/domain-ZS74BSE6.js +99 -0
  162. package/dist/domain-ZS74BSE6.js.map +1 -0
  163. package/dist/draft-J3B33RAZ.js +308 -0
  164. package/dist/draft-J3B33RAZ.js.map +1 -0
  165. package/dist/draft-MZLWVX3D.js +218 -0
  166. package/dist/draft-MZLWVX3D.js.map +1 -0
  167. package/dist/draft-R56PIXCV.js +333 -0
  168. package/dist/draft-R56PIXCV.js.map +1 -0
  169. package/dist/experiment-7RJ5X2LL.js +1397 -0
  170. package/dist/experiments-NOSJJMYI.js +234 -0
  171. package/dist/experiments-NOSJJMYI.js.map +1 -0
  172. package/dist/facets-E6SHYUAI.js +115 -0
  173. package/dist/facets-E6SHYUAI.js.map +1 -0
  174. package/dist/feedback-HXCQBV7S.js +107 -0
  175. package/dist/feedback-HXCQBV7S.js.map +1 -0
  176. package/dist/feedback-record-GXPYXNT6.js +261 -0
  177. package/dist/feedback-record-GXPYXNT6.js.map +1 -0
  178. package/dist/fetch-HMUGSRE4.js +177 -0
  179. package/dist/fetch-HMUGSRE4.js.map +1 -0
  180. package/dist/find-2EPXK5RF.js +134 -0
  181. package/dist/fit-W7UNFZT5.js +63 -0
  182. package/dist/flows-SO5J3M3X.js +248 -0
  183. package/dist/flows-SO5J3M3X.js.map +1 -0
  184. package/dist/fonts-N42UYWTX.js +37 -0
  185. package/dist/forecast-24LGJVLC.js +119 -0
  186. package/dist/forecast-24LGJVLC.js.map +1 -0
  187. package/dist/funnel-NYT36B3C.js +395 -0
  188. package/dist/funnel-NYT36B3C.js.map +1 -0
  189. package/dist/ga4-6EIQC2TG.js +55 -0
  190. package/dist/get-KAGO4EC5.js +80 -0
  191. package/dist/get-KAGO4EC5.js.map +1 -0
  192. package/dist/get-PZX27LQY.js +38 -0
  193. package/dist/get-PZX27LQY.js.map +1 -0
  194. package/dist/get-R5JAFHTH.js +57 -0
  195. package/dist/get-R5JAFHTH.js.map +1 -0
  196. package/dist/google-O5OI6QFU.js +136 -0
  197. package/dist/google-ads-6X4BHGUR.js +196 -0
  198. package/dist/google-ads-6X4BHGUR.js.map +1 -0
  199. package/dist/gsc-BM3T2GDL.js +30 -0
  200. package/dist/history-LGOWYLBE.js +134 -0
  201. package/dist/history-LGOWYLBE.js.map +1 -0
  202. package/dist/hubspot-LJB3ETUT.js +780 -0
  203. package/dist/hubspot-LJB3ETUT.js.map +1 -0
  204. package/dist/icon-B7DG53S5.js +137 -0
  205. package/dist/ideas-DYN2DMFN.js +41 -0
  206. package/dist/images-EQCUXEHF.js +92 -0
  207. package/dist/ingest-B46AY3QU.js +24 -0
  208. package/dist/ingest-T7ZS2R4U.js +108 -0
  209. package/dist/ingest-T7ZS2R4U.js.map +1 -0
  210. package/dist/inspect-BSNGAT2S.js +190 -0
  211. package/dist/inspect-BSNGAT2S.js.map +1 -0
  212. package/dist/inspiration-TCCKM4R7.js +53 -0
  213. package/dist/keyword-metrics-KNTIN4ZK.js +198 -0
  214. package/dist/keyword-metrics-KNTIN4ZK.js.map +1 -0
  215. package/dist/keywords-for-site-S4MXGXWR.js +129 -0
  216. package/dist/keywords-for-site-S4MXGXWR.js.map +1 -0
  217. package/dist/landing-WVPA7NBR.js +28 -0
  218. package/dist/leads-EINV5FK3.js +113 -0
  219. package/dist/leads-EINV5FK3.js.map +1 -0
  220. package/dist/learn-7Z2VR6MS.js +205 -0
  221. package/dist/learn-7Z2VR6MS.js.map +1 -0
  222. package/dist/line-item-writes-Z3TIB5KZ.js +209 -0
  223. package/dist/line-item-writes-Z3TIB5KZ.js.map +1 -0
  224. package/dist/line-items-OEWYOPFP.js +103 -0
  225. package/dist/link-KYHUIPJE.js +65 -0
  226. package/dist/link-KYHUIPJE.js.map +1 -0
  227. package/dist/linkedin-JVB4HXJC.js +1314 -0
  228. package/dist/linkedin-JVB4HXJC.js.map +1 -0
  229. package/dist/list-EORTO73V.js +93 -0
  230. package/dist/list-EORTO73V.js.map +1 -0
  231. package/dist/list-QQVLURKH.js +152 -0
  232. package/dist/list-QQVLURKH.js.map +1 -0
  233. package/dist/list-QWGKRUSM.js +65 -0
  234. package/dist/list-QWGKRUSM.js.map +1 -0
  235. package/dist/list-WRBWQASJ.js +50 -0
  236. package/dist/list-Z6NMNK3T.js +304 -0
  237. package/dist/list-Z6NMNK3T.js.map +1 -0
  238. package/dist/log-RUMKYPYK.js +93 -0
  239. package/dist/log-RUMKYPYK.js.map +1 -0
  240. package/dist/logo-QTSBKP2J.js +18 -0
  241. package/dist/make-IJGCQA7C.js +1354 -0
  242. package/dist/make-IJGCQA7C.js.map +1 -0
  243. package/dist/map-QZHIJFQT.js +434 -0
  244. package/dist/map-QZHIJFQT.js.map +1 -0
  245. package/dist/mcp-ZH2XDV5P.js +715 -0
  246. package/dist/mcp-ZH2XDV5P.js.map +1 -0
  247. package/dist/media-sources-SQ2RPDBO.js +35 -0
  248. package/dist/media-sources-SQ2RPDBO.js.map +1 -0
  249. package/dist/members-4YX7JEZM.js +45 -0
  250. package/dist/members-4YX7JEZM.js.map +1 -0
  251. package/dist/normalize-ABIWLRIT.js +142 -0
  252. package/dist/normalize-ABIWLRIT.js.map +1 -0
  253. package/dist/options-SVCQVTNE.js +123 -0
  254. package/dist/options-SVCQVTNE.js.map +1 -0
  255. package/dist/organization-FNKDC742.js +947 -0
  256. package/dist/organization-FNKDC742.js.map +1 -0
  257. package/dist/performance-HTU5FR2K.js +25 -0
  258. package/dist/plan-W2K45F7K.js +207 -0
  259. package/dist/posts-3DAPTBH2.js +34 -0
  260. package/dist/posts-3DAPTBH2.js.map +1 -0
  261. package/dist/promoted-tweet-writes-DD3CJNWW.js +181 -0
  262. package/dist/promoted-tweet-writes-DD3CJNWW.js.map +1 -0
  263. package/dist/promoted-tweets-TTWN5OMW.js +119 -0
  264. package/dist/publish-Z62KGDJ2.js +342 -0
  265. package/dist/publish-Z62KGDJ2.js.map +1 -0
  266. package/dist/reddit-6C3PT5CT.js +27 -0
  267. package/dist/refresh-HCQXVFVR.js +95 -0
  268. package/dist/refresh-HCQXVFVR.js.map +1 -0
  269. package/dist/refresh-ZCGH64OZ.js +42 -0
  270. package/dist/refresh-ZCGH64OZ.js.map +1 -0
  271. package/dist/release-FIHW2HCH.js +61 -0
  272. package/dist/release-FIHW2HCH.js.map +1 -0
  273. package/dist/remove-CBR7NVMI.js +51 -0
  274. package/dist/remove-CBR7NVMI.js.map +1 -0
  275. package/dist/remove-PUZP5GWN.js +49 -0
  276. package/dist/remove-PUZP5GWN.js.map +1 -0
  277. package/dist/reopen-EJGLRQWR.js +64 -0
  278. package/dist/reopen-EJGLRQWR.js.map +1 -0
  279. package/dist/rerun-TVBZXASH.js +91 -0
  280. package/dist/rerun-TVBZXASH.js.map +1 -0
  281. package/dist/research-L25D4WHQ.js +263 -0
  282. package/dist/research-L25D4WHQ.js.map +1 -0
  283. package/dist/research-YCMMQVK6.js +62 -0
  284. package/dist/reset-HKKCWKZ7.js +55 -0
  285. package/dist/reset-HKKCWKZ7.js.map +1 -0
  286. package/dist/reset-SRL6I6GP.js +55 -0
  287. package/dist/reset-SRL6I6GP.js.map +1 -0
  288. package/dist/resolve-POMTTAFR.js +122 -0
  289. package/dist/resolve-POMTTAFR.js.map +1 -0
  290. package/dist/retry-MEPTOAV2.js +61 -0
  291. package/dist/retry-MEPTOAV2.js.map +1 -0
  292. package/dist/retry-RNGM3KKA.js +63 -0
  293. package/dist/retry-RNGM3KKA.js.map +1 -0
  294. package/dist/revenue-X4KPTSAM.js +89 -0
  295. package/dist/revenue-X4KPTSAM.js.map +1 -0
  296. package/dist/rules-VK7YA23Q.js +97 -0
  297. package/dist/rules-VK7YA23Q.js.map +1 -0
  298. package/dist/rules-add-VG7AT6EG.js +463 -0
  299. package/dist/rules-add-VG7AT6EG.js.map +1 -0
  300. package/dist/run-DIDQSZU7.js +67 -0
  301. package/dist/run-DIDQSZU7.js.map +1 -0
  302. package/dist/run-SR7DJ7M5.js +66 -0
  303. package/dist/scaffold-ad-46GTFUMP.js +1512 -0
  304. package/dist/scaffold-ad-46GTFUMP.js.map +1 -0
  305. package/dist/scaffold-static-ad-U63V4UHR.js +1006 -0
  306. package/dist/scaffold-static-ad-U63V4UHR.js.map +1 -0
  307. package/dist/scaffold-video-4DNTURH6.js +884 -0
  308. package/dist/scaffold-video-4DNTURH6.js.map +1 -0
  309. package/dist/schedule-JO66N7XO.js +62 -0
  310. package/dist/schedule-JO66N7XO.js.map +1 -0
  311. package/dist/schedule-JZBIX6LH.js +67 -0
  312. package/dist/schedule-JZBIX6LH.js.map +1 -0
  313. package/dist/scheduled-agents-N63EZNY6.js +50 -0
  314. package/dist/schema-B2XANMEY.js +133 -0
  315. package/dist/schema-B2XANMEY.js.map +1 -0
  316. package/dist/schema-C6SGBNA6.js +69 -0
  317. package/dist/search-7GHS3OUZ.js +51 -0
  318. package/dist/search-7GHS3OUZ.js.map +1 -0
  319. package/dist/search-W5HZUJA2.js +175 -0
  320. package/dist/search-W5HZUJA2.js.map +1 -0
  321. package/dist/select-LMGLNFWB.js +102 -0
  322. package/dist/select-LMGLNFWB.js.map +1 -0
  323. package/dist/set-prompt-M5E3UZDM.js +194 -0
  324. package/dist/set-prompt-M5E3UZDM.js.map +1 -0
  325. package/dist/setup-links-ERBQSKAB.js +142 -0
  326. package/dist/setup-links-ERBQSKAB.js.map +1 -0
  327. package/dist/site-PNVFJRYK.js +178 -0
  328. package/dist/site-PNVFJRYK.js.map +1 -0
  329. package/dist/sources-DMZJPLKC.js +455 -0
  330. package/dist/sources-DMZJPLKC.js.map +1 -0
  331. package/dist/sources-HN3GCEDX.js +30 -0
  332. package/dist/stale-VWN25WTL.js +72 -0
  333. package/dist/stale-VWN25WTL.js.map +1 -0
  334. package/dist/stats-CVF6AC7R.js +34 -0
  335. package/dist/status-SF7DTPCJ.js +63 -0
  336. package/dist/status-SF7DTPCJ.js.map +1 -0
  337. package/dist/stock-4LPQ6SM7.js +179 -0
  338. package/dist/studio-NZ6WQ7OE.js +49 -0
  339. package/dist/suggest-WMMEQCUH.js +66 -0
  340. package/dist/suggest-WMMEQCUH.js.map +1 -0
  341. package/dist/sync-F7VNZLWY.js +55 -0
  342. package/dist/sync-F7VNZLWY.js.map +1 -0
  343. package/dist/sync-HVNDPBOD.js +55 -0
  344. package/dist/sync-HVNDPBOD.js.map +1 -0
  345. package/dist/sync-definition-CKEUYKWN.js +65 -0
  346. package/dist/tag-KTQ2FV5C.js +57 -0
  347. package/dist/tag-KTQ2FV5C.js.map +1 -0
  348. package/dist/tag-manager-FLXXLNKP.js +43 -0
  349. package/dist/tags-EUOOSAKN.js +26 -0
  350. package/dist/tags-KOMAP2G5.js +21 -0
  351. package/dist/tags-KOMAP2G5.js.map +1 -0
  352. package/dist/tags-TKXJGTR3.js +21 -0
  353. package/dist/tags-TKXJGTR3.js.map +1 -0
  354. package/dist/tags-VWIPDCUA.js +225 -0
  355. package/dist/tags-VWIPDCUA.js.map +1 -0
  356. package/dist/tags-XAB4HWGW.js +21 -0
  357. package/dist/tags-XAB4HWGW.js.map +1 -0
  358. package/dist/targeting-criteria-HE7K52WN.js +113 -0
  359. package/dist/targets-NA4XPDBF.js +104 -0
  360. package/dist/targets-NA4XPDBF.js.map +1 -0
  361. package/dist/testimonials-3Q5XM7JD.js +32 -0
  362. package/dist/top-companies-TKO4QGPJ.js +109 -0
  363. package/dist/top-companies-TKO4QGPJ.js.map +1 -0
  364. package/dist/translate-YVIZ5T44.js +605 -0
  365. package/dist/translate-YVIZ5T44.js.map +1 -0
  366. package/dist/triggers-QX7VW7UO.js +143 -0
  367. package/dist/triggers-QX7VW7UO.js.map +1 -0
  368. package/dist/unlink-64SRPUNG.js +68 -0
  369. package/dist/unlink-64SRPUNG.js.map +1 -0
  370. package/dist/unstage-5X2MOUMF.js +86 -0
  371. package/dist/unstage-5X2MOUMF.js.map +1 -0
  372. package/dist/update-22ZBHURE.js +81 -0
  373. package/dist/update-22ZBHURE.js.map +1 -0
  374. package/dist/update-2LTPSGWT.js +99 -0
  375. package/dist/update-2LTPSGWT.js.map +1 -0
  376. package/dist/update-DOKS7ATM.js +189 -0
  377. package/dist/update-DOKS7ATM.js.map +1 -0
  378. package/dist/update-FB6X463M.js +64 -0
  379. package/dist/update-FB6X463M.js.map +1 -0
  380. package/dist/update-QIZ7XFAM.js +153 -0
  381. package/dist/update-QIZ7XFAM.js.map +1 -0
  382. package/dist/upload-XJ7TUVIK.js +127 -0
  383. package/dist/upload-XJ7TUVIK.js.map +1 -0
  384. package/dist/url-params-KLQOLNPS.js +99 -0
  385. package/dist/url-params-KLQOLNPS.js.map +1 -0
  386. package/dist/validate-YTBJBG44.js +118 -0
  387. package/dist/validate-YTBJBG44.js.map +1 -0
  388. package/dist/videos-WAPUPJVT.js +39 -0
  389. package/dist/viewer-check-GHQA3UY2.js +81 -0
  390. package/dist/web-6JMWERTT.js +141 -0
  391. package/dist/web-6JMWERTT.js.map +1 -0
  392. package/dist/winning-ads-XCVUAIOU.js +86 -0
  393. package/dist/write-commands-N74CDMQM.js +1493 -0
  394. package/dist/write-commands-N74CDMQM.js.map +1 -0
  395. package/dist/x-SI4KYDEY.js +47 -0
  396. package/package.json +1 -1
  397. package/dist/account-UHNR5KTE.js +0 -79
  398. package/dist/account-UHNR5KTE.js.map +0 -1
  399. package/dist/accounts-KMLXHADA.js +0 -77
  400. package/dist/accounts-KMLXHADA.js.map +0 -1
  401. package/dist/accounts-QDGNTSTV.js +0 -611
  402. package/dist/accounts-QDGNTSTV.js.map +0 -1
  403. package/dist/actions-QL5UD2W4.js +0 -55
  404. package/dist/activecampaign-5OD45ROS.js +0 -935
  405. package/dist/activecampaign-5OD45ROS.js.map +0 -1
  406. package/dist/add-2F7BEVYD.js +0 -105
  407. package/dist/add-2F7BEVYD.js.map +0 -1
  408. package/dist/add-6K6LO7CM.js +0 -104
  409. package/dist/add-6K6LO7CM.js.map +0 -1
  410. package/dist/add-LYDJZDGO.js +0 -302
  411. package/dist/add-LYDJZDGO.js.map +0 -1
  412. package/dist/ads-DHPJFU52.js +0 -40
  413. package/dist/advertisers-23LU7GTV.js +0 -120
  414. package/dist/advertisers-23LU7GTV.js.map +0 -1
  415. package/dist/analytics-DVD4OBBR.js +0 -1976
  416. package/dist/analytics-DVD4OBBR.js.map +0 -1
  417. package/dist/analytics-HO2SLL4W.js +0 -433
  418. package/dist/analytics-HO2SLL4W.js.map +0 -1
  419. package/dist/assign-CLKJKH2B.js +0 -77
  420. package/dist/assign-CLKJKH2B.js.map +0 -1
  421. package/dist/audience-size-NNYYXODL.js +0 -73
  422. package/dist/audience-size-NNYYXODL.js.map +0 -1
  423. package/dist/audit-KB4P2XGS.js +0 -151
  424. package/dist/audit-KB4P2XGS.js.map +0 -1
  425. package/dist/autocomplete-VZD2SMTE.js +0 -111
  426. package/dist/autocomplete-VZD2SMTE.js.map +0 -1
  427. package/dist/avatars-FKOO6VZ2.js +0 -38
  428. package/dist/bid-pricing-6LLXOLLI.js +0 -100
  429. package/dist/bid-pricing-6LLXOLLI.js.map +0 -1
  430. package/dist/brand-NNWHBIAX.js +0 -22
  431. package/dist/brief-CPJQWT6W.js +0 -538
  432. package/dist/brief-CPJQWT6W.js.map +0 -1
  433. package/dist/campaign-groups-YPYNXOWU.js +0 -95
  434. package/dist/campaign-groups-YPYNXOWU.js.map +0 -1
  435. package/dist/campaign-writes-UJ4L2O6G.js +0 -165
  436. package/dist/campaign-writes-UJ4L2O6G.js.map +0 -1
  437. package/dist/campaigns-HLBZRH5A.js +0 -107
  438. package/dist/campaigns-N44ZDGB5.js +0 -109
  439. package/dist/campaigns-N44ZDGB5.js.map +0 -1
  440. package/dist/canvas-D64GLWUO.js +0 -46
  441. package/dist/capabilities-LWXCWMIY.js +0 -144
  442. package/dist/capabilities-LWXCWMIY.js.map +0 -1
  443. package/dist/chatgpt-YI6YNACI.js +0 -47
  444. package/dist/chats-7WGC2CVW.js +0 -276
  445. package/dist/chats-7WGC2CVW.js.map +0 -1
  446. package/dist/check-EH6BXWWL.js +0 -104
  447. package/dist/check-EH6BXWWL.js.map +0 -1
  448. package/dist/chunk-237WE5LX.js +0 -455
  449. package/dist/chunk-237WE5LX.js.map +0 -1
  450. package/dist/chunk-2B772ZEA.js +0 -169
  451. package/dist/chunk-2KRK667G.js +0 -51
  452. package/dist/chunk-2TVXJPGR.js +0 -103
  453. package/dist/chunk-3AMLOCXY.js +0 -392
  454. package/dist/chunk-3B5LPK6D.js +0 -658
  455. package/dist/chunk-3B5LPK6D.js.map +0 -1
  456. package/dist/chunk-3N5A44NQ.js +0 -122
  457. package/dist/chunk-3WAYZQNV.js +0 -61
  458. package/dist/chunk-5A257KJA.js +0 -160
  459. package/dist/chunk-6QGS3RQP.js +0 -363
  460. package/dist/chunk-AFD32O4A.js +0 -494
  461. package/dist/chunk-AW2GKIGS.js +0 -433
  462. package/dist/chunk-CYSBNCPX.js +0 -55
  463. package/dist/chunk-CYSBNCPX.js.map +0 -1
  464. package/dist/chunk-DAO63OOP.js +0 -6352
  465. package/dist/chunk-DAO63OOP.js.map +0 -1
  466. package/dist/chunk-EMQUW6JB.js +0 -942
  467. package/dist/chunk-EW3JEKIV.js +0 -139
  468. package/dist/chunk-FBFWMTOP.js +0 -19
  469. package/dist/chunk-GXDLWBOY.js +0 -73
  470. package/dist/chunk-GXDLWBOY.js.map +0 -1
  471. package/dist/chunk-GXGYTFZA.js +0 -8939
  472. package/dist/chunk-I7J7YQXZ.js +0 -142
  473. package/dist/chunk-IBY44U2M.js +0 -1079
  474. package/dist/chunk-IFXGCI33.js +0 -297
  475. package/dist/chunk-IKLHXGMF.js +0 -91
  476. package/dist/chunk-IYTPWAN3.js +0 -604
  477. package/dist/chunk-J3CWAERS.js +0 -3868
  478. package/dist/chunk-JH2L5CQD.js +0 -206
  479. package/dist/chunk-JUVVCA7B.js +0 -97
  480. package/dist/chunk-MK6XJUCQ.js +0 -197
  481. package/dist/chunk-N3I6ZXR7.js +0 -66
  482. package/dist/chunk-NBO2NSAW.js +0 -592
  483. package/dist/chunk-NEU5QD2C.js +0 -249
  484. package/dist/chunk-NKIBXOHT.js +0 -344
  485. package/dist/chunk-OE3MIV4F.js +0 -547
  486. package/dist/chunk-P2MFWJR3.js +0 -903
  487. package/dist/chunk-PHCIFBP3.js +0 -89
  488. package/dist/chunk-PTUXBO5O.js +0 -224
  489. package/dist/chunk-Q3LXLWZY.js +0 -275
  490. package/dist/chunk-Q5WBTVA7.js +0 -455
  491. package/dist/chunk-RDEAVCMF.js +0 -399
  492. package/dist/chunk-RDEAVCMF.js.map +0 -1
  493. package/dist/chunk-RGMKXNQP.js +0 -23
  494. package/dist/chunk-RZTKCCUL.js +0 -831
  495. package/dist/chunk-TTKBNBQF.js +0 -156
  496. package/dist/chunk-VB3XUR6A.js +0 -207
  497. package/dist/chunk-XCKINS7K.js +0 -57
  498. package/dist/chunk-Y6GKV7CU.js +0 -346
  499. package/dist/chunk-Y6GKV7CU.js.map +0 -1
  500. package/dist/chunk-Z2GQREJY.js +0 -159
  501. package/dist/chunk-ZDAVSTEE.js +0 -172
  502. package/dist/chunk-ZXCSOVS5.js +0 -191
  503. package/dist/claim-SVDCQ2AI.js +0 -197
  504. package/dist/claim-SVDCQ2AI.js.map +0 -1
  505. package/dist/companies-BYMYQK6A.js +0 -195
  506. package/dist/companies-BYMYQK6A.js.map +0 -1
  507. package/dist/complete-NEH3MWRI.js +0 -81
  508. package/dist/complete-NEH3MWRI.js.map +0 -1
  509. package/dist/connect-5PGL7ZOM.js +0 -42
  510. package/dist/conversation-CSOKJXDW.js +0 -93
  511. package/dist/conversation-CSOKJXDW.js.map +0 -1
  512. package/dist/conversions-4JOTTFEH.js +0 -135
  513. package/dist/conversions-4JOTTFEH.js.map +0 -1
  514. package/dist/create-2XYMBULY.js +0 -207
  515. package/dist/create-2XYMBULY.js.map +0 -1
  516. package/dist/create-56PTZABQ.js +0 -235
  517. package/dist/create-56PTZABQ.js.map +0 -1
  518. package/dist/create-D6S6TGWY.js +0 -59
  519. package/dist/create-D6S6TGWY.js.map +0 -1
  520. package/dist/create-SMW4O5PC.js +0 -132
  521. package/dist/create-SMW4O5PC.js.map +0 -1
  522. package/dist/creatives-OO76DAFS.js +0 -58
  523. package/dist/creatives-VJUYWJL6.js +0 -182
  524. package/dist/creatives-VJUYWJL6.js.map +0 -1
  525. package/dist/credentials-2ONYUJW6.js +0 -287
  526. package/dist/credentials-2ONYUJW6.js.map +0 -1
  527. package/dist/critique-NDDFSGPE.js +0 -1458
  528. package/dist/critique-NDDFSGPE.js.map +0 -1
  529. package/dist/critique-YXZVMLZ4.js +0 -227
  530. package/dist/critique-YXZVMLZ4.js.map +0 -1
  531. package/dist/crm-Q6CEP5XV.js +0 -224
  532. package/dist/crm-Q6CEP5XV.js.map +0 -1
  533. package/dist/crm-WRONZYDH.js +0 -318
  534. package/dist/crm-WRONZYDH.js.map +0 -1
  535. package/dist/customers-2EFYSCU2.js +0 -56
  536. package/dist/delete-7WEVC3FS.js +0 -66
  537. package/dist/delete-7WEVC3FS.js.map +0 -1
  538. package/dist/delete-RBWK255M.js +0 -54
  539. package/dist/delete-RBWK255M.js.map +0 -1
  540. package/dist/delete-VN4WWMQF.js +0 -64
  541. package/dist/delete-VN4WWMQF.js.map +0 -1
  542. package/dist/demographics-I5XZ435C.js +0 -138
  543. package/dist/demographics-I5XZ435C.js.map +0 -1
  544. package/dist/discard-XJLIXTNM.js +0 -66
  545. package/dist/discard-XJLIXTNM.js.map +0 -1
  546. package/dist/domain-M7AEGAYI.js +0 -98
  547. package/dist/domain-M7AEGAYI.js.map +0 -1
  548. package/dist/draft-5DQI4W5F.js +0 -306
  549. package/dist/draft-5DQI4W5F.js.map +0 -1
  550. package/dist/draft-7IIYHSY2.js +0 -332
  551. package/dist/draft-7IIYHSY2.js.map +0 -1
  552. package/dist/draft-CN6GKVBF.js +0 -217
  553. package/dist/draft-CN6GKVBF.js.map +0 -1
  554. package/dist/experiment-IDDWRCJ7.js +0 -1397
  555. package/dist/facets-ZLZ6LIHN.js +0 -114
  556. package/dist/facets-ZLZ6LIHN.js.map +0 -1
  557. package/dist/feedback-7LEX2P5Q.js +0 -106
  558. package/dist/feedback-7LEX2P5Q.js.map +0 -1
  559. package/dist/feedback-record-P4JJ63KA.js +0 -260
  560. package/dist/feedback-record-P4JJ63KA.js.map +0 -1
  561. package/dist/fetch-MIVCEHXZ.js +0 -176
  562. package/dist/fetch-MIVCEHXZ.js.map +0 -1
  563. package/dist/find-VHN34MWL.js +0 -134
  564. package/dist/fit-SS6HSZPU.js +0 -62
  565. package/dist/flows-UTIIHDNE.js +0 -247
  566. package/dist/flows-UTIIHDNE.js.map +0 -1
  567. package/dist/fonts-YPNN7ZJP.js +0 -36
  568. package/dist/forecast-OBSHG2GJ.js +0 -118
  569. package/dist/forecast-OBSHG2GJ.js.map +0 -1
  570. package/dist/funnel-Z2VLXUEQ.js +0 -394
  571. package/dist/funnel-Z2VLXUEQ.js.map +0 -1
  572. package/dist/ga4-ZPAEF2G2.js +0 -55
  573. package/dist/get-MDAO6I7T.js +0 -56
  574. package/dist/get-MDAO6I7T.js.map +0 -1
  575. package/dist/get-ZB553BSH.js +0 -79
  576. package/dist/get-ZB553BSH.js.map +0 -1
  577. package/dist/google-C3X7O2UO.js +0 -136
  578. package/dist/google-ads-FTWL772L.js +0 -195
  579. package/dist/google-ads-FTWL772L.js.map +0 -1
  580. package/dist/gsc-SDDHGTZK.js +0 -30
  581. package/dist/history-WKJYKDMG.js +0 -133
  582. package/dist/history-WKJYKDMG.js.map +0 -1
  583. package/dist/hubspot-EPHVEPOO.js +0 -779
  584. package/dist/hubspot-EPHVEPOO.js.map +0 -1
  585. package/dist/icon-MYPDC6FM.js +0 -137
  586. package/dist/ideas-3PBH7VEX.js +0 -40
  587. package/dist/images-J35C3WG4.js +0 -92
  588. package/dist/ingest-5QOPUKFE.js +0 -107
  589. package/dist/ingest-5QOPUKFE.js.map +0 -1
  590. package/dist/ingest-OKUYP632.js +0 -23
  591. package/dist/inspect-PMNCP6MV.js +0 -189
  592. package/dist/inspect-PMNCP6MV.js.map +0 -1
  593. package/dist/inspiration-QAL7NS7G.js +0 -53
  594. package/dist/keyword-metrics-R752SJIT.js +0 -197
  595. package/dist/keyword-metrics-R752SJIT.js.map +0 -1
  596. package/dist/keywords-for-site-7UWPJYQF.js +0 -128
  597. package/dist/keywords-for-site-7UWPJYQF.js.map +0 -1
  598. package/dist/landing-CBVIOGJ5.js +0 -28
  599. package/dist/leads-LIJS6Y5W.js +0 -90
  600. package/dist/leads-LIJS6Y5W.js.map +0 -1
  601. package/dist/learn-N6QV7GXA.js +0 -204
  602. package/dist/learn-N6QV7GXA.js.map +0 -1
  603. package/dist/line-item-writes-3WPJXKIL.js +0 -208
  604. package/dist/line-item-writes-3WPJXKIL.js.map +0 -1
  605. package/dist/line-items-ZOFKOGAA.js +0 -103
  606. package/dist/link-DDRQKOUL.js +0 -64
  607. package/dist/link-DDRQKOUL.js.map +0 -1
  608. package/dist/linkedin-UWZCF66X.js +0 -1057
  609. package/dist/linkedin-UWZCF66X.js.map +0 -1
  610. package/dist/list-5PLXVPLB.js +0 -151
  611. package/dist/list-5PLXVPLB.js.map +0 -1
  612. package/dist/list-RC2NX6AX.js +0 -50
  613. package/dist/list-VSJISE7U.js +0 -303
  614. package/dist/list-VSJISE7U.js.map +0 -1
  615. package/dist/list-WTVOBQYX.js +0 -64
  616. package/dist/list-WTVOBQYX.js.map +0 -1
  617. package/dist/log-YKKPROLZ.js +0 -92
  618. package/dist/log-YKKPROLZ.js.map +0 -1
  619. package/dist/logo-WE2UELX6.js +0 -18
  620. package/dist/make-RNOWBLZQ.js +0 -1353
  621. package/dist/make-RNOWBLZQ.js.map +0 -1
  622. package/dist/map-WTDPQLVO.js +0 -433
  623. package/dist/map-WTDPQLVO.js.map +0 -1
  624. package/dist/mcp-XJNSCPP3.js +0 -714
  625. package/dist/mcp-XJNSCPP3.js.map +0 -1
  626. package/dist/media-sources-JGBDDXZ5.js +0 -32
  627. package/dist/media-sources-JGBDDXZ5.js.map +0 -1
  628. package/dist/members-O3BTMRXX.js +0 -44
  629. package/dist/members-O3BTMRXX.js.map +0 -1
  630. package/dist/normalize-R5AYLA2J.js +0 -141
  631. package/dist/normalize-R5AYLA2J.js.map +0 -1
  632. package/dist/options-AILRY7JY.js +0 -122
  633. package/dist/options-AILRY7JY.js.map +0 -1
  634. package/dist/organization-KJJXZLVK.js +0 -946
  635. package/dist/organization-KJJXZLVK.js.map +0 -1
  636. package/dist/performance-7YU4HOGH.js +0 -24
  637. package/dist/plan-ZC4JY4IG.js +0 -207
  638. package/dist/promoted-tweet-writes-TNELWPVG.js +0 -180
  639. package/dist/promoted-tweet-writes-TNELWPVG.js.map +0 -1
  640. package/dist/promoted-tweets-76WKUFJQ.js +0 -119
  641. package/dist/publish-BKLHCKHB.js +0 -341
  642. package/dist/publish-BKLHCKHB.js.map +0 -1
  643. package/dist/reddit-YK3YUZEI.js +0 -26
  644. package/dist/refresh-WIII7KXB.js +0 -94
  645. package/dist/refresh-WIII7KXB.js.map +0 -1
  646. package/dist/release-ZHXYQI7G.js +0 -60
  647. package/dist/release-ZHXYQI7G.js.map +0 -1
  648. package/dist/remove-NOX4BXWK.js +0 -50
  649. package/dist/remove-NOX4BXWK.js.map +0 -1
  650. package/dist/remove-VLWRCOEZ.js +0 -48
  651. package/dist/remove-VLWRCOEZ.js.map +0 -1
  652. package/dist/reopen-NLWKK5HB.js +0 -63
  653. package/dist/reopen-NLWKK5HB.js.map +0 -1
  654. package/dist/rerun-DZWQNMZQ.js +0 -90
  655. package/dist/rerun-DZWQNMZQ.js.map +0 -1
  656. package/dist/research-Q3P76RHN.js +0 -62
  657. package/dist/research-UDZBCDNX.js +0 -262
  658. package/dist/research-UDZBCDNX.js.map +0 -1
  659. package/dist/reset-5UHFX7QY.js +0 -54
  660. package/dist/reset-5UHFX7QY.js.map +0 -1
  661. package/dist/reset-MTRJQUP7.js +0 -54
  662. package/dist/reset-MTRJQUP7.js.map +0 -1
  663. package/dist/resolve-DA72VT7Q.js +0 -121
  664. package/dist/resolve-DA72VT7Q.js.map +0 -1
  665. package/dist/retry-LQUBX5TK.js +0 -62
  666. package/dist/retry-LQUBX5TK.js.map +0 -1
  667. package/dist/retry-U6F4CS6O.js +0 -60
  668. package/dist/retry-U6F4CS6O.js.map +0 -1
  669. package/dist/rules-VS5PZ7VO.js +0 -96
  670. package/dist/rules-VS5PZ7VO.js.map +0 -1
  671. package/dist/rules-add-LMVZYDXE.js +0 -462
  672. package/dist/rules-add-LMVZYDXE.js.map +0 -1
  673. package/dist/run-6PRA2YSD.js +0 -65
  674. package/dist/run-R6COFNOR.js +0 -66
  675. package/dist/run-R6COFNOR.js.map +0 -1
  676. package/dist/scaffold-ad-3OVJ7VZQ.js +0 -1511
  677. package/dist/scaffold-ad-3OVJ7VZQ.js.map +0 -1
  678. package/dist/scaffold-static-ad-DDRA3Q5I.js +0 -1005
  679. package/dist/scaffold-static-ad-DDRA3Q5I.js.map +0 -1
  680. package/dist/scaffold-video-3JZYFYFU.js +0 -883
  681. package/dist/scaffold-video-3JZYFYFU.js.map +0 -1
  682. package/dist/schedule-BRSYHMKR.js +0 -66
  683. package/dist/schedule-BRSYHMKR.js.map +0 -1
  684. package/dist/schedule-ED2YDUPY.js +0 -61
  685. package/dist/schedule-ED2YDUPY.js.map +0 -1
  686. package/dist/scheduled-agents-5P67MVGX.js +0 -50
  687. package/dist/schema-4XVKERSA.js +0 -132
  688. package/dist/schema-4XVKERSA.js.map +0 -1
  689. package/dist/schema-RRAQW3OS.js +0 -69
  690. package/dist/search-Y2UMIQ57.js +0 -174
  691. package/dist/search-Y2UMIQ57.js.map +0 -1
  692. package/dist/select-OZ4E6VLF.js +0 -101
  693. package/dist/select-OZ4E6VLF.js.map +0 -1
  694. package/dist/set-prompt-O4YAE4CE.js +0 -193
  695. package/dist/set-prompt-O4YAE4CE.js.map +0 -1
  696. package/dist/setup-links-2GJYCV2A.js +0 -141
  697. package/dist/setup-links-2GJYCV2A.js.map +0 -1
  698. package/dist/site-47B6V2UX.js +0 -177
  699. package/dist/site-47B6V2UX.js.map +0 -1
  700. package/dist/sources-DXPZAPQ7.js +0 -454
  701. package/dist/sources-DXPZAPQ7.js.map +0 -1
  702. package/dist/sources-NDXYTASG.js +0 -30
  703. package/dist/stale-VLVBO2L6.js +0 -71
  704. package/dist/stale-VLVBO2L6.js.map +0 -1
  705. package/dist/stats-37OFAMPW.js +0 -34
  706. package/dist/status-4ODD46XY.js +0 -62
  707. package/dist/status-4ODD46XY.js.map +0 -1
  708. package/dist/stock-6R5E7MJX.js +0 -179
  709. package/dist/studio-LEIGL3Q7.js +0 -49
  710. package/dist/sync-EKGEWE53.js +0 -54
  711. package/dist/sync-EKGEWE53.js.map +0 -1
  712. package/dist/sync-TKNVBUDM.js +0 -54
  713. package/dist/sync-TKNVBUDM.js.map +0 -1
  714. package/dist/sync-definition-M5R3H3TP.js +0 -64
  715. package/dist/tag-manager-3Q55PBEW.js +0 -43
  716. package/dist/tags-4N5UUUN6.js +0 -26
  717. package/dist/tags-5NHIAD5A.js +0 -20
  718. package/dist/tags-5NHIAD5A.js.map +0 -1
  719. package/dist/tags-UUKWSWCN.js +0 -20
  720. package/dist/tags-UUKWSWCN.js.map +0 -1
  721. package/dist/tags-VK7B5DJF.js +0 -20
  722. package/dist/tags-VK7B5DJF.js.map +0 -1
  723. package/dist/tags-XAHIB3WA.js +0 -224
  724. package/dist/tags-XAHIB3WA.js.map +0 -1
  725. package/dist/targeting-criteria-AVARWV2G.js +0 -113
  726. package/dist/targets-6RYLQRID.js +0 -103
  727. package/dist/targets-6RYLQRID.js.map +0 -1
  728. package/dist/testimonials-6TF6BOFN.js +0 -32
  729. package/dist/top-companies-45EHRCJD.js +0 -108
  730. package/dist/top-companies-45EHRCJD.js.map +0 -1
  731. package/dist/translate-VHLBACCE.js +0 -604
  732. package/dist/translate-VHLBACCE.js.map +0 -1
  733. package/dist/triggers-ERQONJNO.js +0 -142
  734. package/dist/triggers-ERQONJNO.js.map +0 -1
  735. package/dist/unlink-TPDO6JNF.js +0 -67
  736. package/dist/unlink-TPDO6JNF.js.map +0 -1
  737. package/dist/unstage-YKKQQ7LW.js +0 -85
  738. package/dist/unstage-YKKQQ7LW.js.map +0 -1
  739. package/dist/update-43WU6X7R.js +0 -63
  740. package/dist/update-43WU6X7R.js.map +0 -1
  741. package/dist/update-CAHLAXWO.js +0 -98
  742. package/dist/update-CAHLAXWO.js.map +0 -1
  743. package/dist/update-NGH6YADN.js +0 -152
  744. package/dist/update-NGH6YADN.js.map +0 -1
  745. package/dist/update-SPJIHHLE.js +0 -188
  746. package/dist/update-SPJIHHLE.js.map +0 -1
  747. package/dist/upload-ACESIZIZ.js +0 -126
  748. package/dist/upload-ACESIZIZ.js.map +0 -1
  749. package/dist/url-params-MIXEDBF7.js +0 -98
  750. package/dist/url-params-MIXEDBF7.js.map +0 -1
  751. package/dist/validate-XJJA7ULE.js +0 -117
  752. package/dist/validate-XJJA7ULE.js.map +0 -1
  753. package/dist/videos-LBXPG7WC.js +0 -39
  754. package/dist/viewer-check-7VJ3GUZX.js +0 -80
  755. package/dist/web-EWQJC2SD.js +0 -140
  756. package/dist/web-EWQJC2SD.js.map +0 -1
  757. package/dist/winning-ads-SAOJAKEQ.js +0 -86
  758. package/dist/write-commands-QPDE4GWW.js +0 -1024
  759. package/dist/write-commands-QPDE4GWW.js.map +0 -1
  760. package/dist/x-LXOJPCRF.js +0 -47
  761. /package/dist/{actions-QL5UD2W4.js.map → actions-FMNJSOBA.js.map} +0 -0
  762. /package/dist/{ads-DHPJFU52.js.map → ads-OLXSDPD6.js.map} +0 -0
  763. /package/dist/{avatars-FKOO6VZ2.js.map → avatars-I4H3NMEJ.js.map} +0 -0
  764. /package/dist/{brand-NNWHBIAX.js.map → brand-3V7ECY7D.js.map} +0 -0
  765. /package/dist/{campaigns-HLBZRH5A.js.map → campaigns-MCB76NPQ.js.map} +0 -0
  766. /package/dist/{canvas-D64GLWUO.js.map → canvas-JCNKMGCG.js.map} +0 -0
  767. /package/dist/{chatgpt-YI6YNACI.js.map → chatgpt-XFZ42NXC.js.map} +0 -0
  768. /package/dist/{chunk-VB3XUR6A.js.map → chunk-2YTBPRRG.js.map} +0 -0
  769. /package/dist/{chunk-JUVVCA7B.js.map → chunk-3SNCMEJB.js.map} +0 -0
  770. /package/dist/{chunk-RGMKXNQP.js.map → chunk-7QGFO35A.js.map} +0 -0
  771. /package/dist/{chunk-ZXCSOVS5.js.map → chunk-AV7ALENU.js.map} +0 -0
  772. /package/dist/{chunk-IYTPWAN3.js.map → chunk-BRLFQ4VX.js.map} +0 -0
  773. /package/dist/{chunk-RZTKCCUL.js.map → chunk-DJE7UXYT.js.map} +0 -0
  774. /package/dist/{chunk-EW3JEKIV.js.map → chunk-EFWXYUSK.js.map} +0 -0
  775. /package/dist/{chunk-J3CWAERS.js.map → chunk-EONSZAZB.js.map} +0 -0
  776. /package/dist/{chunk-PHCIFBP3.js.map → chunk-FG3MV2XM.js.map} +0 -0
  777. /package/dist/{chunk-3AMLOCXY.js.map → chunk-FKG476GH.js.map} +0 -0
  778. /package/dist/{chunk-IFXGCI33.js.map → chunk-FUGQSIYG.js.map} +0 -0
  779. /package/dist/{chunk-Q3LXLWZY.js.map → chunk-HPLHAHG5.js.map} +0 -0
  780. /package/dist/{chunk-3N5A44NQ.js.map → chunk-I24YT2KG.js.map} +0 -0
  781. /package/dist/{chunk-P2MFWJR3.js.map → chunk-IFDZZOUC.js.map} +0 -0
  782. /package/dist/{chunk-Q5WBTVA7.js.map → chunk-JVVUI55M.js.map} +0 -0
  783. /package/dist/{chunk-6QGS3RQP.js.map → chunk-KKSHEPBY.js.map} +0 -0
  784. /package/dist/{chunk-OE3MIV4F.js.map → chunk-KQ7RCLGC.js.map} +0 -0
  785. /package/dist/{chunk-ZDAVSTEE.js.map → chunk-L7WMS5PW.js.map} +0 -0
  786. /package/dist/{chunk-FBFWMTOP.js.map → chunk-LBRO4MTL.js.map} +0 -0
  787. /package/dist/{chunk-PTUXBO5O.js.map → chunk-LNRPOULW.js.map} +0 -0
  788. /package/dist/{chunk-EMQUW6JB.js.map → chunk-LX6WC2XZ.js.map} +0 -0
  789. /package/dist/{chunk-I7J7YQXZ.js.map → chunk-MMGTJBM6.js.map} +0 -0
  790. /package/dist/{chunk-2KRK667G.js.map → chunk-OEZYSL3U.js.map} +0 -0
  791. /package/dist/{chunk-2TVXJPGR.js.map → chunk-OOVHBMQB.js.map} +0 -0
  792. /package/dist/{chunk-Z2GQREJY.js.map → chunk-PTH7VWKK.js.map} +0 -0
  793. /package/dist/{chunk-N3I6ZXR7.js.map → chunk-QZF4BVKL.js.map} +0 -0
  794. /package/dist/{chunk-3WAYZQNV.js.map → chunk-RITUSBYO.js.map} +0 -0
  795. /package/dist/{chunk-JH2L5CQD.js.map → chunk-SSTL3A7Z.js.map} +0 -0
  796. /package/dist/{chunk-2B772ZEA.js.map → chunk-TD4SO6TR.js.map} +0 -0
  797. /package/dist/{chunk-IKLHXGMF.js.map → chunk-UZ4RTOFG.js.map} +0 -0
  798. /package/dist/{chunk-NBO2NSAW.js.map → chunk-VAX7PFQV.js.map} +0 -0
  799. /package/dist/{chunk-AFD32O4A.js.map → chunk-VDRSZK4P.js.map} +0 -0
  800. /package/dist/{chunk-NKIBXOHT.js.map → chunk-VNU2EYD4.js.map} +0 -0
  801. /package/dist/{chunk-TTKBNBQF.js.map → chunk-WT4WDIXA.js.map} +0 -0
  802. /package/dist/{chunk-5A257KJA.js.map → chunk-XEX23CIB.js.map} +0 -0
  803. /package/dist/{chunk-GXGYTFZA.js.map → chunk-XXDF25BW.js.map} +0 -0
  804. /package/dist/{chunk-NEU5QD2C.js.map → chunk-YJ3LSFMX.js.map} +0 -0
  805. /package/dist/{chunk-MK6XJUCQ.js.map → chunk-YVK5RT3B.js.map} +0 -0
  806. /package/dist/{chunk-AW2GKIGS.js.map → chunk-YWWRLZUR.js.map} +0 -0
  807. /package/dist/{chunk-XCKINS7K.js.map → chunk-Z4S5BCVZ.js.map} +0 -0
  808. /package/dist/{chunk-IBY44U2M.js.map → chunk-ZYGK7GAK.js.map} +0 -0
  809. /package/dist/{connect-5PGL7ZOM.js.map → connect-COS6G45S.js.map} +0 -0
  810. /package/dist/{creatives-OO76DAFS.js.map → creatives-SEQHJD2M.js.map} +0 -0
  811. /package/dist/{customers-2EFYSCU2.js.map → customers-LMSX33FO.js.map} +0 -0
  812. /package/dist/{experiment-IDDWRCJ7.js.map → experiment-7RJ5X2LL.js.map} +0 -0
  813. /package/dist/{find-VHN34MWL.js.map → find-2EPXK5RF.js.map} +0 -0
  814. /package/dist/{fit-SS6HSZPU.js.map → fit-W7UNFZT5.js.map} +0 -0
  815. /package/dist/{fonts-YPNN7ZJP.js.map → fonts-N42UYWTX.js.map} +0 -0
  816. /package/dist/{ga4-ZPAEF2G2.js.map → ga4-6EIQC2TG.js.map} +0 -0
  817. /package/dist/{google-C3X7O2UO.js.map → google-O5OI6QFU.js.map} +0 -0
  818. /package/dist/{gsc-SDDHGTZK.js.map → gsc-BM3T2GDL.js.map} +0 -0
  819. /package/dist/{icon-MYPDC6FM.js.map → icon-B7DG53S5.js.map} +0 -0
  820. /package/dist/{ideas-3PBH7VEX.js.map → ideas-DYN2DMFN.js.map} +0 -0
  821. /package/dist/{images-J35C3WG4.js.map → images-EQCUXEHF.js.map} +0 -0
  822. /package/dist/{ingest-OKUYP632.js.map → ingest-B46AY3QU.js.map} +0 -0
  823. /package/dist/{inspiration-QAL7NS7G.js.map → inspiration-TCCKM4R7.js.map} +0 -0
  824. /package/dist/{landing-CBVIOGJ5.js.map → landing-WVPA7NBR.js.map} +0 -0
  825. /package/dist/{line-items-ZOFKOGAA.js.map → line-items-OEWYOPFP.js.map} +0 -0
  826. /package/dist/{list-RC2NX6AX.js.map → list-WRBWQASJ.js.map} +0 -0
  827. /package/dist/{logo-WE2UELX6.js.map → logo-QTSBKP2J.js.map} +0 -0
  828. /package/dist/{performance-7YU4HOGH.js.map → performance-HTU5FR2K.js.map} +0 -0
  829. /package/dist/{plan-ZC4JY4IG.js.map → plan-W2K45F7K.js.map} +0 -0
  830. /package/dist/{promoted-tweets-76WKUFJQ.js.map → promoted-tweets-TTWN5OMW.js.map} +0 -0
  831. /package/dist/{reddit-YK3YUZEI.js.map → reddit-6C3PT5CT.js.map} +0 -0
  832. /package/dist/{research-Q3P76RHN.js.map → research-YCMMQVK6.js.map} +0 -0
  833. /package/dist/{run-6PRA2YSD.js.map → run-SR7DJ7M5.js.map} +0 -0
  834. /package/dist/{scheduled-agents-5P67MVGX.js.map → scheduled-agents-N63EZNY6.js.map} +0 -0
  835. /package/dist/{schema-RRAQW3OS.js.map → schema-C6SGBNA6.js.map} +0 -0
  836. /package/dist/{sources-NDXYTASG.js.map → sources-HN3GCEDX.js.map} +0 -0
  837. /package/dist/{stats-37OFAMPW.js.map → stats-CVF6AC7R.js.map} +0 -0
  838. /package/dist/{stock-6R5E7MJX.js.map → stock-4LPQ6SM7.js.map} +0 -0
  839. /package/dist/{studio-LEIGL3Q7.js.map → studio-NZ6WQ7OE.js.map} +0 -0
  840. /package/dist/{sync-definition-M5R3H3TP.js.map → sync-definition-CKEUYKWN.js.map} +0 -0
  841. /package/dist/{tag-manager-3Q55PBEW.js.map → tag-manager-FLXXLNKP.js.map} +0 -0
  842. /package/dist/{tags-4N5UUUN6.js.map → tags-EUOOSAKN.js.map} +0 -0
  843. /package/dist/{targeting-criteria-AVARWV2G.js.map → targeting-criteria-HE7K52WN.js.map} +0 -0
  844. /package/dist/{testimonials-6TF6BOFN.js.map → testimonials-3Q5XM7JD.js.map} +0 -0
  845. /package/dist/{videos-LBXPG7WC.js.map → videos-WAPUPJVT.js.map} +0 -0
  846. /package/dist/{viewer-check-7VJ3GUZX.js.map → viewer-check-GHQA3UY2.js.map} +0 -0
  847. /package/dist/{winning-ads-SAOJAKEQ.js.map → winning-ads-XCVUAIOU.js.map} +0 -0
  848. /package/dist/{x-LXOJPCRF.js.map → x-SI4KYDEY.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../api/src/mcp-catalog.ts","../src/commands/mcp/index.ts","../src/commands/mcp/catalog.ts","../../api/src/mcp-tools.ts","../src/commands/mcp/execute.ts","../src/commands/mcp/platforms.ts"],"sourcesContent":["/**\n * Contract for `GET /api/mcp/catalog` — searching the managed-app catalog the\n * sandbox agent can ask the user to connect when a vendor publishes no MCP\n * server of its own.\n *\n * `connect` mirrors `ToolkitConnectMode` in `convex/composio/types.ts`, folded\n * to what the user will be asked for: a sign-in or a key. Apps that need no\n * sign-in are left out — Composio refuses to connect them.\n */\nimport { z } from \"zod\";\n\nexport const MCP_CATALOG_DEFAULT_LIMIT = 8;\nexport const MCP_CATALOG_DESCRIPTION_MAX = 160;\n\nexport const mcpCatalogRequestSchema = z.object({\n search: z.string().trim().min(1, \"Provide --search\").max(100),\n limit: z.coerce.number().int().min(1).max(20).default(MCP_CATALOG_DEFAULT_LIMIT),\n});\nexport type McpCatalogRequest = z.infer<typeof mcpCatalogRequestSchema>;\n\nexport const mcpCatalogConnectSchema = z.enum([\"sign-in\", \"key\"]);\nexport type McpCatalogConnect = z.infer<typeof mcpCatalogConnectSchema>;\n\nexport const mcpCatalogEntrySchema = z.object({\n /** The toolkit slug — what request_connection `{ app }` takes. */\n app: z.string(),\n name: z.string(),\n description: z.string().max(MCP_CATALOG_DESCRIPTION_MAX),\n connect: mcpCatalogConnectSchema,\n connected: z.boolean(),\n});\nexport type McpCatalogEntry = z.infer<typeof mcpCatalogEntrySchema>;\n\nexport const mcpCatalogResponseSchema = z.object({\n apps: z.array(mcpCatalogEntrySchema),\n /** Baker's own connections this search matched — ask for these with `{ platform }`, never a managed copy. */\n platforms: z.array(z.string()).optional(),\n});\nexport type McpCatalogResponse = z.infer<typeof mcpCatalogResponseSchema>;\n","import {\n type CustomMcpDisableResponse,\n type CustomMcpVerifyResponse,\n customMcpServerNameRequestSchema,\n} from \"@baker/api\";\nimport { type McpCatalogResponse, mcpCatalogRequestSchema } from \"@baker/api/mcp-catalog\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../client.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { repeatedValues } from \"../../lib/repeatedFlags.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { catalogHints } from \"./catalog.ts\";\nimport { executeCommand, toolsCommand } from \"./execute.ts\";\nimport { type ConnectedPlatform, platformEntry } from \"./platforms.ts\";\n\nconst SCOPES = [\"user\", \"user_org\", \"company\", \"org\"] as const;\ntype Scope = (typeof SCOPES)[number];\n\nfunction parseScope(raw: unknown): Scope {\n const scope = raw === undefined ? \"company\" : String(raw);\n if (!(SCOPES as readonly string[]).includes(scope)) {\n throw new ApiError(\"VALIDATION_ERROR\", `Invalid --scope \"${scope}\". Use user | user_org | company | org.`);\n }\n return scope as Scope;\n}\n\n/** The turn's message sender, injected by the bridge — required only for user scope. */\nfunction actingUserId(): string | undefined {\n return getEnv().BAKER_ACTING_USER_ID;\n}\n\ntype CustomMcpServer = {\n _id: string;\n scope: \"user\" | \"user_org\" | \"company\" | \"org\";\n name: string;\n url: string;\n headerKeys: string[];\n enabled: boolean;\n /** Absent until the address has been checked; `ok: false` means it serves no tools. */\n health?: { ok: boolean; message?: string; suggestedUrl?: string; transient?: boolean; checkedAt: number };\n createdAt: number;\n};\n\n/**\n * What to report for one custom server. `problem` is the whole point: a server can\n * be signed in, enabled and still serve nothing (wrong address), and reporting it\n * as plain \"connected\" is how an agent ends up promising tools it does not have.\n * A `transient` failure is reported separately — the tool may well answer, so\n * declaring it broken would be its own kind of lie.\n */\nfunction customEntry(server: CustomMcpServer): Record<string, unknown> {\n const failed = server.health && !server.health.ok;\n const problem = server.health?.message ?? \"This server's address is not serving tools.\";\n return {\n name: server.name,\n scope: server.scope,\n enabled: server.enabled,\n ...(failed && !server.health?.transient ? { usable: false, problem } : {}),\n ...(failed && server.health?.transient ? { lastCheck: \"failed\", problem } : {}),\n ...(failed && server.health?.suggestedUrl ? { suggestedAddress: server.health.suggestedUrl } : {}),\n };\n}\n\n/** The hint an unusable server earns — the agent must not offer its tools or invent a reason. */\nconst BROKEN_SERVER_HINT =\n \"A server marked usable=false will NOT answer: its tools are absent from this turn. Say plainly that the tool is not working and relay `problem`; never claim its tools are loading, coming next message, or temporarily unavailable. `problem` names what a person has to fix — the address, the sign-in, or the key the server was added with — so pass on that fix and no other: never tell the user to reconnect a server whose `problem` is its address or its key. The user makes the fix in the dashboard (Brain → Integrations → More apps). If `suggestedAddress` is present, that is the address to use.\";\n\n/** The hint for a server whose last check failed for a reason that may already have passed. */\nconst LAST_CHECK_FAILED_HINT =\n \"A server with lastCheck=failed was unreachable or erroring when it was last checked — that may already have passed, and its tools ARE loaded this turn. Try the tool; if it works, say nothing about the check. If it fails, report `problem` as what happened rather than guessing.\";\n\n/** Turn repeated `--header \"K: V\"` (or `K=V`) flags into a headers record. */\n/** `--header` is repeatable, so its values come off the command line — citty keeps only the last. */\nfunction parseHeaders(raw: unknown, rawArgs?: readonly string[]): Record<string, string> | undefined {\n const list = repeatedValues(rawArgs, \"header\", raw);\n const headers: Record<string, string> = {};\n for (const entry of list) {\n const text = String(entry);\n const sep = text.indexOf(\":\") >= 0 && (text.indexOf(\":\") < text.indexOf(\"=\") || text.indexOf(\"=\") < 0) ? \":\" : \"=\";\n const at = text.indexOf(sep);\n if (at <= 0) {\n throw new ApiError(\"VALIDATION_ERROR\", `Invalid header \"${text}\". Use \"Key: Value\".`);\n }\n headers[text.slice(0, at).trim()] = text.slice(at + 1).trim();\n }\n return Object.keys(headers).length > 0 ? headers : undefined;\n}\n\nfunction fail(err: unknown): never {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n}\n\ntype ManagedConnection = {\n toolkitSlug: string;\n scope: \"user\" | \"user_org\" | \"company\" | \"org\";\n status: string;\n accountLabel: string | null;\n readOnly: boolean;\n};\n\ntype ConnectedResponse = {\n managed: ManagedConnection[];\n custom: CustomMcpServer[];\n platforms: ConnectedPlatform[];\n};\n\n/** The one thing an agent must not do with this list: infer a platform's state from the MCP half. */\nconst PLATFORMS_HINT =\n \"`platforms` are connected accounts you reach through `baker` commands (HubSpot, Google Ads, GA4, Search Console, Tag Manager, …), NOT mcp__* tools — there is no tool to call for them. A platform listed here IS connected: never tell the user to connect it, and never conclude it is missing because it has no mcp__* entry. Read what it holds with its own command family (`baker hubspot …`, `baker ads google …`, `baker ga4 …`, and so on).\";\n\nregisterSchema({\n command: \"mcp.connected\",\n description:\n \"List everything this chat can reach: managed integrations (Attio, Slack, Gmail, Google Sheets, …), custom MCP servers, and the platforms the company signed in to (HubSpot, Google Ads, GA4, Search Console, Tag Manager) which you read through their own `baker` commands. Start here when the user mentions an external tool or platform.\",\n args: {},\n});\n\nconst connectedCommand = defineCommand({\n meta: {\n name: \"connected\",\n description: `Everything this chat can reach — managed integrations, custom MCP servers, and connected platforms.\n\nManaged tools ride the composio servers (mcp__composio_<scope>__*); custom servers expose mcp__<name>__*.\nPlatforms (HubSpot, Google Ads, GA4, …) have no mcp__* tools at all — you read them with their own\n\\`baker\\` command family, and one listed here is connected and ready to use.\nA tool or platform the user names that is NOT listed anywhere here is simply not connected yet.`,\n },\n run: async () => {\n try {\n const user = actingUserId();\n const data = await apiGet<ConnectedResponse>(\"/api/mcp/connected\", user ? { actingUserId: user } : undefined);\n const managed = data.managed.map((c) => ({\n toolkit: c.toolkitSlug,\n scope: c.scope,\n ...(c.status !== \"ACTIVE\" ? { status: c.status } : {}),\n ...(c.accountLabel ? { account: c.accountLabel } : {}),\n ...(c.readOnly ? { readOnly: true } : {}),\n }));\n const custom = data.custom.map(customEntry);\n const platforms = (data.platforms ?? []).map(platformEntry);\n const hints: string[] = [];\n if (platforms.length > 0) {\n hints.push(PLATFORMS_HINT);\n }\n if (data.custom.some((s) => s.health && !s.health.ok && !s.health.transient)) {\n hints.push(BROKEN_SERVER_HINT);\n }\n if (data.custom.some((s) => s.health && !s.health.ok && s.health.transient)) {\n hints.push(LAST_CHECK_FAILED_HINT);\n }\n if ([...data.managed, ...data.custom].some((e) => e.scope === \"user\" || e.scope === \"user_org\")) {\n hints.push(\n \"user/user_org entries are personal: they belong to the current message sender and load only in their turns — other users in this chat won't have them.\",\n );\n }\n hints.push(\n \"Not listed anywhere = not connected — connect it from the chat with request_connection, never by sending the user to the dashboard: a Baker platform (HubSpot, Google Ads, GA4, …) → { platform }; anything else → the vendor's own MCP server FIRST: use the address the user gave you, or WebSearch '<vendor> MCP server' and WebFetch its official docs for the remote https address and how it signs in, then { server: { name, url, auth, keyHeader } }; only when the vendor has none → `baker mcp catalog --search <name>`, then { app }. Research before you ask the user anything. What they connect loads into this same turn.\",\n );\n writeJson({\n ok: true,\n data: { managed, custom, platforms },\n hints,\n });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nconst catalogArgs = {\n search: { type: \"string\", description: \"App or vendor name, e.g. notion, clarity, pipedrive\", required: true },\n limit: { type: \"string\", description: \"Max apps to return, 1-20 (default 8)\", required: false },\n} as const;\n\nregisterSchema({\n command: \"mcp.catalog\",\n description:\n \"Search the managed apps you can ask the user to connect when a vendor has no MCP server of its own. Each app says how the user connects it (sign-in | key) and whether this chat already reaches it. Example: baker mcp catalog --search notion\",\n args: catalogArgs,\n});\n\nconst catalogCommand = defineCommand({\n meta: {\n name: \"catalog\",\n description: `Managed apps you can ask the user to connect when a vendor has no MCP server of its own.\n\nFor a tool \\`baker mcp connected\\` does not list whose vendor has no official remote MCP server:\n baker mcp catalog --search notion\n baker mcp catalog --search \"microsoft clarity\" --limit 3\n\nEach app: app (slug for request_connection), name, description, connect (sign-in | key), connected.\nPrefer the vendor's own MCP server when it publishes one; a catalog app is the fallback.`,\n },\n args: catalogArgs,\n run: async ({ args }) => {\n const parsed = mcpCatalogRequestSchema.safeParse({ search: args.search, limit: args.limit });\n if (!parsed.success) {\n writeJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: parsed.error.issues[0]?.message ?? \"Invalid arguments\" },\n });\n process.exit(1);\n }\n try {\n const user = actingUserId();\n const data = await apiGet<McpCatalogResponse>(\"/api/mcp/catalog\", {\n search: parsed.data.search,\n limit: String(parsed.data.limit),\n ...(user ? { actingUserId: user } : {}),\n });\n writeJson({\n ok: true,\n data: {\n apps: data.apps,\n ...(data.platforms?.length ? { platforms: data.platforms } : {}),\n },\n hints: catalogHints(data.apps, { platforms: data.platforms ?? [] }),\n });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nregisterSchema({\n command: \"mcp.list\",\n description: \"List the custom MCP servers this company's chats see (org + company + your own user scope).\",\n args: {},\n});\n\nconst listCommand = defineCommand({\n meta: { name: \"list\", description: \"List custom MCP servers visible to this company's chats.\" },\n run: async () => {\n try {\n const user = actingUserId();\n const data = await apiGet<{ servers: CustomMcpServer[] }>(\n \"/api/mcp/custom\",\n user ? { actingUserId: user } : undefined,\n );\n writeJson({\n ok: true,\n // Detail view: the full row (address included) plus the usability verdict.\n // `health` itself is folded into `usable`/`problem` by `customEntry`.\n data: data.servers.map((server) => ({ ...server, health: undefined, ...customEntry(server) })),\n ...(data.servers.some((s) => s.health && !s.health.ok)\n ? {\n hints: data.servers.some((s) => s.health && !s.health.ok && !s.health.transient)\n ? [BROKEN_SERVER_HINT]\n : [LAST_CHECK_FAILED_HINT],\n }\n : {}),\n });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nregisterSchema({\n command: \"mcp.add\",\n description:\n \"Register a custom MCP server. Tools appear as mcp__<name>__* on the next message. URL must be HTTPS. Scope: company (default, all chats) | org (org admin key) | user (only the current sender).\",\n args: {\n name: { type: \"string\", description: \"Server name → tools appear as mcp__<name>__*\", required: true },\n url: {\n type: \"string\",\n description: \"Full HTTPS MCP endpoint (commonly ends in /mcp, not just the domain)\",\n required: true,\n },\n scope: { type: \"string\", description: \"user | user_org | company | org (default company)\", required: false },\n header: { type: \"string\", description: 'Auth header \"Key: Value\" (repeatable)', required: false },\n },\n});\n\nconst addCommand = defineCommand({\n meta: {\n name: \"add\",\n description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.\nFor a server the USER asks for, use request_connection { server } instead: they confirm who can use it,\ntype any key into the card (never the chat), and its tools load in this same turn.\n\nScope: company (default — every chat in the company) | org (all companies in the org; needs an admin key) | user (only the current message sender).\n\nExamples:\n baker mcp add --name weather --url https://mcp.example.com/mcp\n baker mcp add --name acme --url https://acme.dev/mcp --header \"Authorization: Bearer sk-…\"\n baker mcp add --name mine --url https://my.dev/mcp --scope user`,\n },\n args: {\n name: { type: \"string\", description: \"Server name (mcp__<name>__*)\", required: true },\n url: {\n type: \"string\",\n description: \"Full HTTPS MCP endpoint (commonly ends in /mcp, not just the domain)\",\n required: true,\n },\n scope: { type: \"string\", description: \"user | user_org | company | org (default company)\", required: false },\n header: { type: \"string\", description: 'Auth header \"Key: Value\" (repeatable)', required: false },\n },\n run: async ({ args, rawArgs }) => {\n try {\n const scope = parseScope(args.scope);\n const user = actingUserId();\n const headers = parseHeaders(args.header, rawArgs);\n const data = await apiPost<{ name: string }>(\"/api/mcp/custom\", {\n name: args.name as string,\n url: args.url as string,\n scope,\n ...(user ? { actingUserId: user } : {}),\n ...(headers ? { headers } : {}),\n });\n writeJson({\n ok: true,\n data,\n hints: [\n \"The address must be the full MCP endpoint (commonly ending in /mcp), not just the domain — a domain on its own usually answers sign-in and then serves no tools.\",\n \"The address is checked in the background. Run `baker mcp connected` on the next message to confirm it serves tools before promising the user anything.\",\n ],\n });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nregisterSchema({\n command: \"mcp.remove\",\n description: \"Remove a company custom MCP server by name.\",\n args: { name: { type: \"string\", description: \"Server name to remove\", required: true } },\n});\n\nconst removeCommand = defineCommand({\n meta: {\n name: \"remove\",\n description: `Remove a company custom MCP server by name.\n\nExample:\n baker mcp remove --name weather`,\n },\n args: { name: { type: \"string\", description: \"Server name to remove\", required: true } },\n run: async ({ args }) => {\n try {\n const user = actingUserId();\n const data = await apiPost<{ removed: boolean }>(\"/api/mcp/custom/remove\", {\n name: args.name as string,\n ...(user ? { actingUserId: user } : {}),\n });\n writeJson({ ok: true, data });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nconst serverNameArgs = {\n name: { type: \"string\", description: \"Custom server name, as `baker mcp list` shows it\", required: true },\n} as const;\n\nregisterSchema({\n command: \"mcp.verify\",\n description:\n \"Check a custom MCP server now (the dashboard's 'Check now') and store the result. Use after the user fixed its address or sign-in, or when its tools failed this turn.\",\n args: serverNameArgs,\n});\n\nconst verifyCommand = defineCommand({\n meta: {\n name: \"verify\",\n description: `Check a custom MCP server now and store the result.\n\nExample:\n baker mcp verify --name weather`,\n },\n args: serverNameArgs,\n run: async ({ args }) => {\n const parsed = customMcpServerNameRequestSchema.safeParse({ name: args.name, actingUserId: actingUserId() });\n if (!parsed.success) {\n fail(new ApiError(\"VALIDATION_ERROR\", parsed.error.issues[0]?.message ?? \"Invalid arguments\"));\n }\n try {\n const data = await apiPost<CustomMcpVerifyResponse>(\"/api/mcp/custom/verify\", parsed.data);\n writeJson({\n ok: true,\n data,\n hints: [\n data.ok\n ? \"The server answers and serves tools. Its tools load on the next message.\"\n : data.transient\n ? LAST_CHECK_FAILED_HINT\n : BROKEN_SERVER_HINT,\n ],\n });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nregisterSchema({\n command: \"mcp.disable\",\n description:\n \"Switch a custom MCP server off so its tools stop loading; its address and sign-in are kept. Turning it back on is done by a person in the dashboard, never by the agent.\",\n args: serverNameArgs,\n});\n\nconst disableCommand = defineCommand({\n meta: {\n name: \"disable\",\n description: `Switch a custom MCP server off (its tools stop loading). Only a person can turn it back on, in the dashboard.\n\nExample:\n baker mcp disable --name weather`,\n },\n args: serverNameArgs,\n run: async ({ args }) => {\n const parsed = customMcpServerNameRequestSchema.safeParse({ name: args.name, actingUserId: actingUserId() });\n if (!parsed.success) {\n fail(new ApiError(\"VALIDATION_ERROR\", parsed.error.issues[0]?.message ?? \"Invalid arguments\"));\n }\n try {\n const data = await apiPost<CustomMcpDisableResponse>(\"/api/mcp/custom/disable\", parsed.data);\n writeJson({\n ok: true,\n data,\n hints: [\n \"Its tools stop loading from the next message, and this applies right away — publishing or discarding this chat does not undo it. Tell the user they can turn it back on in Brain → Integrations → More apps.\",\n ],\n });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nexport const mcpCommand = defineCommand({\n meta: {\n name: \"mcp\",\n description: `Third-party tools for this company — see what's connected, register custom HTTPS MCP endpoints.\n\nTools from a registered server appear as mcp__<name>__* on the next message.\nManaged here are **company-scoped** servers; user- and org-scoped servers are managed in the dashboard.\n\nStart here:\n baker mcp connected # everything this chat can reach: managed integrations, custom servers, connected platforms\n baker mcp catalog --search notion # managed apps you can connect when a vendor has no MCP server of its own\n\nRun a connected app's read-only tool from the command line (JSON on stdout — for reports and scripts):\n baker mcp tools --app googlesheets --search \"read rows\"\n baker mcp execute --tool GOOGLESHEETS_BATCH_GET --get-schema\n baker mcp execute --tool GOOGLESHEETS_BATCH_GET --data '{\"spreadsheet_id\":\"…\",\"ranges\":[\"A1:D50\"]}'\n\nExamples:\n baker mcp add --name weather --url https://mcp.example.com/mcp\n baker mcp add --name acme --url https://acme.dev/mcp --header \"Authorization: Bearer sk-…\"\n baker mcp remove --name weather\n baker mcp verify --name weather # check it now after the user fixed it\n baker mcp disable --name weather # stop its tools loading (only a person turns it back on)\nFull guide: __tooling__/docs/tools/baker/mcp.md`,\n },\n subCommands: {\n connected: connectedCommand,\n catalog: catalogCommand,\n tools: toolsCommand,\n execute: executeCommand,\n list: listCommand,\n add: addCommand,\n remove: removeCommand,\n verify: verifyCommand,\n disable: disableCommand,\n },\n});\n","/**\n * What `baker mcp catalog` tells the agent to do next with the managed apps it\n * found — the fallback when a vendor publishes no MCP server of its own.\n */\nimport type { McpCatalogEntry } from \"@baker/api/mcp-catalog\";\n\nconst PREFER_VENDOR_HINT =\n 'The vendor\\'s own MCP server comes before any app here. If you have not yet, WebSearch \"<vendor> MCP server\" and WebFetch its official docs for the remote https address and how it signs in, then ask for it with request_connection `{ server: { name, url, auth, keyHeader } }`. Only when the vendor has none, ask for an app from this catalog with request_connection `{ app: \"<slug>\", reason }` — the user connects it in the chat and its tools load right after, in this same turn.';\n\nconst ALREADY_CONNECTED_HINT =\n \"An app marked connected is already reachable — use its mcp__composio_* tools; do not ask again.\";\n\nconst NO_MATCH_HINT =\n \"Nothing in the catalog matches. WebSearch for the vendor's official remote MCP server (its docs, its developer site) before telling the user it can't be connected — if one exists, ask for it with request_connection `{ server }`. Only when the web shows no official remote server either, say plainly this tool can't be connected yet and offer a Task.\";\n\n/** Baker's own connection always wins over a catalog app or anyone's MCP server for the same tool. */\nfunction firstPartyHint(platforms: readonly string[]): string {\n const asks = platforms.map((p) => `request_connection \\`{ platform: \"${p}\" }\\``).join(\" or \");\n return `This is one of Baker's own connections — ask for it with ${asks}. It is the one Baker's commands, staging and publish work with, so never connect it as a catalog app or as an MCP server, even one the vendor publishes or the user names. If it is already connected, read it with its own baker command family instead.`;\n}\n\n/** What the agent should do next with a catalog answer. */\nexport function catalogHints(\n apps: readonly McpCatalogEntry[],\n { platforms = [] }: { platforms?: readonly string[] } = {},\n): string[] {\n if (platforms.length > 0) {\n return [firstPartyHint(platforms)];\n }\n const hints = [PREFER_VENDOR_HINT];\n if (apps.some((a) => a.connected)) {\n hints.push(ALREADY_CONNECTED_HINT);\n }\n if (apps.length === 0) {\n hints.push(NO_MATCH_HINT);\n }\n return hints;\n}\n","/**\n * Contract for running a connected app's tools from the `baker` CLI —\n * `GET /api/mcp/tools` (find one), `GET /api/mcp/tool` (its inputs) and\n * `POST /api/mcp/execute` (run it).\n *\n * The same tools the chat reaches as `mcp__composio_*`, but answered as JSON on\n * stdout, so a Report's data endpoint can call one through `runBaker` and a\n * script can keep what it returned. Only tools the app marks read-only run here:\n * a published Report runs them for whoever opens it, and a chat stages every\n * change it makes until Publish.\n */\nimport { z } from \"zod\";\n\nexport const MCP_TOOLS_DEFAULT_LIMIT = 10;\nexport const MCP_TOOL_DESCRIPTION_MAX = 200;\n\n/** A Composio tool slug: `GMAIL_FETCH_EMAILS`, `GOOGLESHEETS_BATCH_GET`. */\nexport const mcpToolSlugSchema = z\n .string()\n .trim()\n .min(1, \"Provide --tool\")\n .max(120)\n .regex(/^[A-Za-z0-9_]+$/, \"A tool is named like GMAIL_FETCH_EMAILS — find one with `baker mcp tools --search`\")\n .transform((slug) => slug.toUpperCase());\n\n/** A toolkit slug as `baker mcp connected` lists it: `gmail`, `googlesheets`. */\nexport const mcpAppSlugSchema = z\n .string()\n .trim()\n .min(1)\n .max(60)\n .regex(/^[a-z0-9_-]+$/i, \"Name the app as `baker mcp connected` lists it, e.g. gmail\")\n .transform((slug) => slug.toLowerCase());\n\nexport const mcpToolsRequestSchema = z\n .object({\n search: z.string().trim().min(1).max(200).optional(),\n app: mcpAppSlugSchema.optional(),\n limit: z.coerce.number().int().min(1).max(50).default(MCP_TOOLS_DEFAULT_LIMIT),\n })\n .refine((request) => request.search !== undefined || request.app !== undefined, {\n message: \"Provide --search, --app, or both\",\n });\nexport type McpToolsRequest = z.infer<typeof mcpToolsRequestSchema>;\n\nexport const mcpToolSummarySchema = z.object({\n tool: z.string(),\n app: z.string(),\n name: z.string(),\n description: z.string().max(MCP_TOOL_DESCRIPTION_MAX),\n /** Only read-only tools run through `baker mcp execute`. */\n readOnly: z.boolean(),\n});\nexport type McpToolSummary = z.infer<typeof mcpToolSummarySchema>;\n\nexport const mcpToolsResponseSchema = z.object({\n tools: z.array(mcpToolSummarySchema),\n /** The connected apps the search ran over. */\n apps: z.array(z.string()),\n});\nexport type McpToolsResponse = z.infer<typeof mcpToolsResponseSchema>;\n\nexport const mcpToolRequestSchema = z.object({\n tool: mcpToolSlugSchema,\n full: z.boolean().default(false),\n});\n\n/** One input, folded to what the agent needs to fill it. */\nexport const mcpToolInputSchema = z.object({\n name: z.string(),\n type: z.string(),\n required: z.boolean(),\n description: z.string().optional(),\n enum: z.array(z.unknown()).optional(),\n default: z.unknown().optional(),\n});\nexport type McpToolInput = z.infer<typeof mcpToolInputSchema>;\n\nexport const mcpToolResponseSchema = z.object({\n tool: z.string(),\n app: z.string(),\n name: z.string(),\n description: z.string(),\n readOnly: z.boolean(),\n inputs: z.array(mcpToolInputSchema),\n /** The raw JSON schemas, with `--full` only. */\n inputSchema: z.unknown().optional(),\n outputSchema: z.unknown().optional(),\n});\nexport type McpToolResponse = z.infer<typeof mcpToolResponseSchema>;\n\nexport const mcpExecuteRequestSchema = z.object({\n tool: mcpToolSlugSchema,\n arguments: z.record(z.string(), z.unknown()).default({}),\n actingUserId: z.string().optional(),\n});\nexport type McpExecuteRequest = z.infer<typeof mcpExecuteRequestSchema>;\n\nexport const mcpExecuteResponseSchema = z.object({\n tool: z.string(),\n app: z.string(),\n /** Whose connection answered: `company` is the one a published Report reads. */\n scope: z.enum([\"user\", \"user_org\", \"company\", \"org\"]),\n account: z.string().nullable(),\n /** What the tool returned, as the app returned it. */\n data: z.unknown(),\n});\nexport type McpExecuteResponse = z.infer<typeof mcpExecuteResponseSchema>;\n","/**\n * `baker mcp tools` and `baker mcp execute`: a connected app's tools run from\n * the command line, so what they return is JSON on stdout — for a Report's data\n * endpoint (`runReportBaker`), a script, or a file — instead of a tool result\n * only the chat sees. The same tools as `mcp__composio_*`, reads only.\n */\nimport {\n type McpExecuteResponse,\n type McpToolResponse,\n type McpToolsResponse,\n mcpExecuteRequestSchema,\n mcpToolRequestSchema,\n mcpToolsRequestSchema,\n} from \"@baker/api/mcp-tools\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, apiPost } from \"../../client.ts\";\nimport { getEnv } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\n\n/** A tool's run gets as long as a report gives one `baker` call, less its own margin. */\nconst EXECUTE_TIMEOUT_MS = 120_000;\n\nfunction fail(err: unknown): never {\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"NETWORK_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n}\n\nfunction invalid(message: string): never {\n return fail(new ApiError(\"VALIDATION_ERROR\", message));\n}\n\n/** The turn's message sender, injected by the bridge; the backend vouches for it, and a report has none. */\nfunction actingUserId(): string | undefined {\n return getEnv().BAKER_ACTING_USER_ID;\n}\n\n/** What to tell the agent after a run: above all, whether a published report will read the same thing. */\nexport function executeHints(ran: Pick<McpExecuteResponse, \"tool\" | \"app\" | \"scope\">): string[] {\n const hints: string[] = [];\n if (ran.scope !== \"company\") {\n hints.push(\n `This answer came from a ${ran.scope === \"org\" ? \"connection shared by the organization\" : \"connection of the person sending this message\"}. A published report reads only apps connected for the whole company, so ${ran.tool} will answer \"not connected\" there: ask the user to connect ${ran.app} for the whole company before building a report on it.`,\n );\n }\n hints.push(\n `In a report endpoint: runReportBaker(event, [\"mcp\", \"execute\", \"--tool\", \"${ran.tool}\", \"--data\", JSON.stringify(args)]) — return only the fields the page shows.`,\n );\n return hints;\n}\n\nconst toolsArgs = {\n search: {\n type: \"string\",\n description: 'What the tool should do, e.g. \"fetch emails\", \"read sheet rows\"',\n required: false,\n },\n app: {\n type: \"string\",\n description: \"Only this connected app, as `baker mcp connected` lists it (gmail)\",\n required: false,\n },\n limit: { type: \"string\", description: \"Max tools to return, 1-50 (default 10)\", required: false },\n} as const;\n\nregisterSchema({\n command: \"mcp.tools\",\n description:\n 'Find a connected app\\'s tools to run with `baker mcp execute`. Searches the apps this chat reaches (or --app). Each tool: tool (slug), app, name, description, readOnly (only read-only tools run). Example: baker mcp tools --app googlesheets --search \"read rows\"',\n args: toolsArgs,\n});\n\nexport const toolsCommand = defineCommand({\n meta: {\n name: \"tools\",\n description: `Find a connected app's tools to run from the command line with \\`baker mcp execute\\`.\n\nStart here:\n baker mcp tools --search \"fetch unread emails\" # across every connected app\n baker mcp tools --app googlesheets --search \"read rows\"\n baker mcp tools --app hubspot --limit 20 # an app's tools, no search\n\nEach tool: tool (the slug execute takes), app, name, description, readOnly.\nOnly readOnly tools run through execute; a tool that changes things is the chat's own mcp__composio_* tool.`,\n },\n args: toolsArgs,\n run: async ({ args }) => {\n const parsed = mcpToolsRequestSchema.safeParse({ search: args.search, app: args.app, limit: args.limit });\n if (!parsed.success) {\n invalid(parsed.error.issues[0]?.message ?? \"Invalid arguments\");\n }\n try {\n const user = actingUserId();\n const data = await apiGet<McpToolsResponse>(\"/api/mcp/tools\", {\n ...(parsed.data.search ? { search: parsed.data.search } : {}),\n ...(parsed.data.app ? { app: parsed.data.app } : {}),\n limit: String(parsed.data.limit),\n ...(user ? { actingUserId: user } : {}),\n });\n const hints =\n data.apps.length === 0\n ? [\n \"No app is connected here. Check `baker mcp connected`; connect one with request_connection, from the chat.\",\n ]\n : [\n \"Run one with `baker mcp execute --tool <TOOL> --get-schema` first to see its inputs, then `--data '<json>'`.\",\n ...(data.tools.some((tool) => !tool.readOnly)\n ? [\n \"readOnly: false tools cannot run through execute — they change things; use the chat's mcp__composio_* tool.\",\n ]\n : []),\n ];\n writeJson({ ok: true, data, hints });\n } catch (err) {\n fail(err);\n }\n },\n});\n\nconst executeArgs = {\n tool: { type: \"string\", description: \"Tool slug from `baker mcp tools`, e.g. GMAIL_FETCH_EMAILS\", required: true },\n data: {\n type: \"string\",\n description: \"The tool's arguments as a JSON object, e.g. '{\\\"max_results\\\":10}'\",\n required: false,\n },\n \"get-schema\": { type: \"boolean\", description: \"Show the tool's inputs instead of running it\", required: false },\n full: {\n type: \"boolean\",\n description: \"With --get-schema: the raw input and output JSON schemas too\",\n required: false,\n },\n} as const;\n\nregisterSchema({\n command: \"mcp.execute\",\n description:\n 'Run one read-only tool of a connected app and print what it returned as JSON — for a report\\'s data endpoint, a script, or keeping the answer. `--get-schema` shows its inputs first. A published report reaches only apps connected for the whole company. Example: baker mcp execute --tool GOOGLESHEETS_BATCH_GET --data \\'{\"spreadsheet_id\":\"…\",\"ranges\":[\"A1:D50\"]}\\'',\n args: executeArgs,\n});\n\nfunction parseData(raw: unknown): Record<string, unknown> {\n if (raw === undefined || raw === \"\") {\n return {};\n }\n let value: unknown;\n try {\n value = JSON.parse(String(raw));\n } catch {\n invalid(`--data must be a JSON object, e.g. '{\"max_results\":10}' (keys and strings in double quotes).`);\n }\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n invalid(`--data must be a JSON object, e.g. '{\"max_results\":10}'.`);\n }\n return value as Record<string, unknown>;\n}\n\nexport const executeCommand = defineCommand({\n meta: {\n name: \"execute\",\n description: `Run one read-only tool of a connected app; prints what it returned as JSON.\n\nThe same tools as the chat's mcp__composio_* servers, answered on stdout so a report's data endpoint,\na script or a file can keep it. Find the tool with \\`baker mcp tools\\`, read its inputs, then run it:\n baker mcp execute --tool GOOGLESHEETS_BATCH_GET --get-schema\n baker mcp execute --tool GOOGLESHEETS_BATCH_GET --data '{\"spreadsheet_id\":\"1AbC…\",\"ranges\":[\"Sheet1!A1:D50\"]}'\n baker mcp execute --tool GMAIL_FETCH_EMAILS --data '{\"query\":\"is:unread newer_than:7d\",\"max_results\":20}' > /tmp/inbox.json\n\nReads only: a tool that changes things (send, create, update) is refused — use the chat's own tool for it.\nA published report runs as nobody, so it reaches only apps connected for the whole company; a\nperson's own connection answers in their chat and nowhere else.`,\n },\n args: executeArgs,\n run: async ({ args }) => {\n if (args[\"get-schema\"]) {\n const parsed = mcpToolRequestSchema.safeParse({ tool: args.tool, full: args.full === true });\n if (!parsed.success) {\n invalid(parsed.error.issues[0]?.message ?? \"Invalid arguments\");\n }\n try {\n const data = await apiGet<McpToolResponse>(\"/api/mcp/tool\", {\n tool: parsed.data.tool,\n ...(parsed.data.full ? { full: \"true\" } : {}),\n });\n writeJson({\n ok: true,\n data,\n hints: data.readOnly\n ? [`Run it: baker mcp execute --tool ${data.tool} --data '<json object of the inputs above>'`]\n : [\n `${data.tool} changes things, so execute refuses it. In a chat, use the app's own mcp__composio_* tool.`,\n ],\n });\n } catch (err) {\n fail(err);\n }\n return;\n }\n const parsed = mcpExecuteRequestSchema.safeParse({\n tool: args.tool,\n arguments: parseData(args.data),\n actingUserId: actingUserId(),\n });\n if (!parsed.success) {\n invalid(parsed.error.issues[0]?.message ?? \"Invalid arguments\");\n }\n try {\n const data = await apiPost<McpExecuteResponse>(\"/api/mcp/execute\", parsed.data, {\n timeoutMs: EXECUTE_TIMEOUT_MS,\n });\n writeJson({ ok: true, data, hints: executeHints(data) });\n } catch (err) {\n fail(err);\n }\n },\n});\n","/**\n * How a connected platform reads back to the agent.\n *\n * A platform (HubSpot, Google Ads, GA4, …) is an account the company signed in\n * to, reached through its own `baker` command family rather than an `mcp__*`\n * tool. It rides `mcp connected` because that is the one answer to \"what can\n * this chat reach\" — and because an agent that only saw the tool half had no\n * way to tell a working HubSpot connection from a missing one.\n */\n\nexport interface ConnectedPlatform {\n type: string;\n label: string;\n account: string | null;\n reads: string[];\n readsLabel: string | null;\n}\n\n/** \"Ad Accounts\" -> `adAccounts`, \"Properties\" -> `properties`. */\nfunction readsKey(label: string): string {\n const [first = \"\", ...rest] = label.split(\" \");\n return [first.toLowerCase(), ...rest].join(\"\");\n}\n\n/**\n * One platform as the agent sees it. The resources are keyed by the platform's\n * own word for them — `properties` for GA4, `containers` for Tag Manager,\n * `adAccounts` for the ad platforms — so what the agent reads back matches what\n * the user sees in the dashboard.\n */\nexport function platformEntry(platform: ConnectedPlatform): Record<string, unknown> {\n return {\n platform: platform.label,\n ...(platform.account ? { account: platform.account } : {}),\n ...(platform.readsLabel && platform.reads.length > 0 ? { [readsKey(platform.readsLabel)]: platform.reads } : {}),\n };\n}\n"],"mappings":"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","names":["defineCommand","z","parsed","actingUserId","fail","defineCommand"]}
@@ -1,32 +0,0 @@
1
- import "./chunk-YQSBHWOI.js";
2
-
3
- // src/commands/media-sources/index.ts
4
- import { defineCommand } from "citty";
5
- var mediaSourcesCommand = defineCommand({
6
- meta: {
7
- name: "media-sources",
8
- description: `Connect social accounts whose images and videos fill the libraries: Instagram, TikTok, YouTube (videos), LinkedIn company pages, Facebook pages. A Google Drive folder is picked by the user in the chat (request_connection, platform google-drive, choose media-folder), never added here; once connected, list, sync, schedule and remove manage it like any source. Subcommands: add, list, sync, schedule, reset, remove.
9
-
10
- Examples:
11
- baker media-sources add https://www.tiktok.com/@acme
12
- baker media-sources add @acme --platform instagram --every daily
13
- baker media-sources list
14
- baker media-sources sync youtube:acme
15
- baker media-sources schedule linkedin:acme --every monthly
16
- baker media-sources reset instagram:acme # unstick an import that never finished
17
- baker media-sources remove facebook:acme
18
- Full guide: __tooling__/docs/tools/baker/media-sources.md`
19
- },
20
- subCommands: {
21
- add: () => import("./add-2F7BEVYD.js").then((m) => m.addCommand),
22
- list: () => import("./list-RC2NX6AX.js").then((m) => m.listCommand),
23
- sync: () => import("./sync-EKGEWE53.js").then((m) => m.syncCommand),
24
- schedule: () => import("./schedule-BRSYHMKR.js").then((m) => m.scheduleCommand),
25
- reset: () => import("./reset-MTRJQUP7.js").then((m) => m.resetCommand),
26
- remove: () => import("./remove-VLWRCOEZ.js").then((m) => m.removeCommand)
27
- }
28
- });
29
- export {
30
- mediaSourcesCommand
31
- };
32
- //# sourceMappingURL=media-sources-JGBDDXZ5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/media-sources/index.ts"],"sourcesContent":["import { defineCommand } from \"citty\";\n\nexport const mediaSourcesCommand = defineCommand({\n meta: {\n name: \"media-sources\",\n description: `Connect social accounts whose images and videos fill the libraries: Instagram, TikTok, YouTube (videos), LinkedIn company pages, Facebook pages. A Google Drive folder is picked by the user in the chat (request_connection, platform google-drive, choose media-folder), never added here; once connected, list, sync, schedule and remove manage it like any source. Subcommands: add, list, sync, schedule, reset, remove.\n\nExamples:\n baker media-sources add https://www.tiktok.com/@acme\n baker media-sources add @acme --platform instagram --every daily\n baker media-sources list\n baker media-sources sync youtube:acme\n baker media-sources schedule linkedin:acme --every monthly\n baker media-sources reset instagram:acme # unstick an import that never finished\n baker media-sources remove facebook:acme\nFull guide: __tooling__/docs/tools/baker/media-sources.md`,\n },\n subCommands: {\n add: () => import(\"./add.ts\").then((m) => m.addCommand),\n list: () => import(\"./list.ts\").then((m) => m.listCommand),\n sync: () => import(\"./sync.ts\").then((m) => m.syncCommand),\n schedule: () => import(\"./schedule.ts\").then((m) => m.scheduleCommand),\n reset: () => import(\"./reset.ts\").then((m) => m.resetCommand),\n remove: () => import(\"./remove.ts\").then((m) => m.removeCommand),\n },\n});\n"],"mappings":";;;AAAA,SAAS,qBAAqB;AAEvB,IAAM,sBAAsB,cAAc;AAAA,EAC/C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWf;AAAA,EACA,aAAa;AAAA,IACX,KAAK,MAAM,OAAO,mBAAU,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU;AAAA,IACtD,MAAM,MAAM,OAAO,oBAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW;AAAA,IACzD,MAAM,MAAM,OAAO,oBAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW;AAAA,IACzD,UAAU,MAAM,OAAO,wBAAe,EAAE,KAAK,CAAC,MAAM,EAAE,eAAe;AAAA,IACrE,OAAO,MAAM,OAAO,qBAAY,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY;AAAA,IAC5D,QAAQ,MAAM,OAAO,sBAAa,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa;AAAA,EACjE;AACF,CAAC;","names":[]}
@@ -1,44 +0,0 @@
1
- import {
2
- failApi
3
- } from "./chunk-ZDAVSTEE.js";
4
- import "./chunk-DAO63OOP.js";
5
- import "./chunk-GXDLWBOY.js";
6
- import "./chunk-GIWHHCD6.js";
7
- import "./chunk-XQIOCIDO.js";
8
- import "./chunk-WTJSMYY2.js";
9
- import {
10
- apiPost
11
- } from "./chunk-6YLNY6CK.js";
12
- import "./chunk-D5NEIESR.js";
13
- import "./chunk-57KKVDDR.js";
14
- import {
15
- registerSchema,
16
- writeJson
17
- } from "./chunk-QANGHND7.js";
18
- import "./chunk-YQSBHWOI.js";
19
-
20
- // src/commands/actions/members.ts
21
- import { defineCommand } from "citty";
22
- registerSchema({
23
- command: "actions.members",
24
- description: "The teammates a Task can be assigned to \u2014 everyone with access to this company that the person behind this chat can see, as { userId, name, email, role }. Pass a userId or email from here to `baker actions assign --to`. Read-only.",
25
- args: {}
26
- });
27
- var membersCommand = defineCommand({
28
- meta: {
29
- name: "members",
30
- description: "Teammates a Task can be assigned to. Example: baker actions members"
31
- },
32
- run: async () => {
33
- try {
34
- const response = await apiPost("/api/actions/members", {});
35
- writeJson(response);
36
- } catch (err) {
37
- failApi(err);
38
- }
39
- }
40
- });
41
- export {
42
- membersCommand
43
- };
44
- //# sourceMappingURL=members-O3BTMRXX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/actions/members.ts"],"sourcesContent":["import type { ActionsMembersResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"./shared.ts\";\n\nregisterSchema({\n command: \"actions.members\",\n description:\n \"The teammates a Task can be assigned to — everyone with access to this company that the person behind this chat can see, as { userId, name, email, role }. Pass a userId or email from here to `baker actions assign --to`. Read-only.\",\n args: {},\n});\n\nexport const membersCommand = defineCommand({\n meta: {\n name: \"members\",\n description: \"Teammates a Task can be assigned to. Example: baker actions members\",\n },\n run: async () => {\n try {\n const response = await apiPost<ActionsMembersResponse>(\"/api/actions/members\", {});\n writeJson(response);\n } catch (err) {\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAM9B,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM,CAAC;AACT,CAAC;AAEM,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,KAAK,YAAY;AACf,QAAI;AACF,YAAM,WAAW,MAAM,QAAgC,wBAAwB,CAAC,CAAC;AACjF,gBAAU,QAAQ;AAAA,IACpB,SAAS,KAAK;AACZ,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -1,141 +0,0 @@
1
- import {
2
- flowDataPath,
3
- listFlowSlugs,
4
- readFlowTree,
5
- walkNodes,
6
- writeFlowTree
7
- } from "./chunk-Q3LXLWZY.js";
8
- import {
9
- looksLikeUnresolvedVariable,
10
- parseEmailRecipients
11
- } from "./chunk-DAO63OOP.js";
12
- import "./chunk-GXDLWBOY.js";
13
- import "./chunk-GIWHHCD6.js";
14
- import "./chunk-XQIOCIDO.js";
15
- import "./chunk-WTJSMYY2.js";
16
- import "./chunk-6YLNY6CK.js";
17
- import "./chunk-D5NEIESR.js";
18
- import "./chunk-57KKVDDR.js";
19
- import {
20
- registerSchema,
21
- writeJson
22
- } from "./chunk-QANGHND7.js";
23
- import "./chunk-YQSBHWOI.js";
24
-
25
- // src/commands/flows/normalize.ts
26
- import { defineCommand } from "citty";
27
- var OPTIONAL_STRINGS = ["oauthProviderId"];
28
- var ARRAY_FIELDS = [
29
- "fieldMapping",
30
- "columnMapping",
31
- "payloadKeys",
32
- "eventParams",
33
- "eventProperties",
34
- "dataLayerParams",
35
- "goalParams",
36
- "fields",
37
- "tagIds"
38
- ];
39
- var ARRAY_OWNERS = ["", "body"];
40
- function dropUnsetOptionals(sideEffect, path) {
41
- return OPTIONAL_STRINGS.flatMap((key) => {
42
- if (!(key in sideEffect) || sideEffect[key] !== null && sideEffect[key] !== "") return [];
43
- delete sideEffect[key];
44
- return [{ path, change: `dropped \`${key}\` (an optional string is absent, never null)` }];
45
- });
46
- }
47
- function fillNulledArrays(target, prefix, path) {
48
- return ARRAY_FIELDS.flatMap((key) => {
49
- if (!(key in target) || target[key] !== null) return [];
50
- target[key] = [];
51
- return [{ path, change: `\`${prefix}${key}: null\` \u2192 \`[]\`` }];
52
- });
53
- }
54
- function tidyEmailRecipients(sideEffect, path) {
55
- if (sideEffect.type !== "email") return [];
56
- const config = sideEffect.encryptedConfig;
57
- if (!config || typeof config !== "object" || Array.isArray(config)) return [];
58
- const raw = config.email;
59
- if (typeof raw !== "string" || looksLikeUnresolvedVariable(raw)) return [];
60
- const { to, invalid } = parseEmailRecipients(raw);
61
- if (invalid.length > 0 || to.length === 0) return [];
62
- const tidied = to.join(", ");
63
- if (tidied === raw) return [];
64
- config.email = tidied;
65
- return [{ path, change: "tidied the recipient list's spacing and separators" }];
66
- }
67
- function sideEffectsOf(node) {
68
- if (!Array.isArray(node.sideEffects)) return [];
69
- return node.sideEffects.filter(
70
- (sideEffect) => Boolean(sideEffect) && typeof sideEffect === "object"
71
- );
72
- }
73
- function normalizeSideEffect(sideEffect, where) {
74
- const path = `${where} \u2192 ${String(sideEffect.id ?? "side effect")}`;
75
- const arrays = ARRAY_OWNERS.flatMap((owner) => {
76
- const target = owner ? sideEffect[owner] : sideEffect;
77
- if (!target || typeof target !== "object") return [];
78
- return fillNulledArrays(target, owner ? `${owner}.` : "", path);
79
- });
80
- return [...dropUnsetOptionals(sideEffect, path), ...arrays, ...tidyEmailRecipients(sideEffect, path)];
81
- }
82
- function normalizeFlowTree(tree) {
83
- const changes = [];
84
- for (const node of walkNodes(tree)) {
85
- const where = typeof node.name === "string" && node.name ? String(node.name) : String(node.id ?? "node");
86
- if (!("condition" in node)) {
87
- node.condition = null;
88
- changes.push({ path: where, change: "added the missing `condition: null`" });
89
- }
90
- for (const sideEffect of sideEffectsOf(node)) {
91
- changes.push(...normalizeSideEffect(sideEffect, where));
92
- }
93
- }
94
- return changes;
95
- }
96
- registerSchema({
97
- command: "flows.normalize",
98
- description: "Fix the shapes a form file is allowed to get slightly wrong: a nulled optional string, a nulled array, a missing condition. Runs automatically before a commit; you rarely need to call it.",
99
- args: {
100
- slug: { type: "positional", description: "Form slug. Omit to check every form.", required: false },
101
- write: {
102
- type: "boolean",
103
- description: "Apply the fixes. Without it, reports and changes nothing",
104
- required: false
105
- }
106
- }
107
- });
108
- var normalizeCommand = defineCommand({
109
- meta: {
110
- name: "normalize",
111
- description: "Repair the shapes a form file is allowed to get slightly wrong. Example: baker flows normalize contact --write"
112
- },
113
- args: {
114
- // `required: false` matters: citty makes a positional required by default,
115
- // so without it the documented bare `baker flows normalize` printed a wall
116
- // of usage text and exited 1 instead of checking every form.
117
- slug: { type: "positional", description: "Form slug (omit for every form)", required: false },
118
- write: { type: "boolean", description: "Apply the fixes" }
119
- },
120
- run: ({ args }) => {
121
- const slugs = args.slug ? [String(args.slug)] : listFlowSlugs();
122
- const forms = slugs.flatMap((slug) => {
123
- const tree = readFlowTree(slug);
124
- const changes = normalizeFlowTree(tree);
125
- if (changes.length === 0) return [];
126
- if (args.write === true) writeFlowTree(slug, tree);
127
- return [{ slug, path: flowDataPath(slug), changes }];
128
- });
129
- const total = forms.reduce((sum, form) => sum + form.changes.length, 0);
130
- writeJson({
131
- ok: true,
132
- data: { forms, changed: total, written: args.write === true },
133
- hints: total === 0 ? ["Nothing to fix."] : args.write === true ? [`Fixed ${total} field(s).`] : [`${total} field(s) can be fixed. Re-run with --write.`]
134
- });
135
- }
136
- });
137
- export {
138
- normalizeCommand,
139
- normalizeFlowTree
140
- };
141
- //# sourceMappingURL=normalize-R5AYLA2J.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/flows/normalize.ts"],"sourcesContent":["/**\n * Make a form file valid without making the agent memorise a rule.\n *\n * `oauthProviderId` is typed `oauthProviderId?: string`. Writing `null` there is\n * the natural thing to do — every sibling confidential field is authored as\n * `null` — and it is a type error at the next build. Three separate passages in\n * the flow-builder skill existed only to teach that one exception, and the agent\n * paid for them on every turn that touched a form.\n *\n * So the system absorbs it instead: an unset optional is dropped, a nulled array\n * becomes an empty one, a missing `condition` becomes the explicit `null` the\n * schema wants. This runs as a pre-commit fixer, so writing `null` is simply not\n * a mistake any more, and the prose that taught the rule is gone.\n *\n * Pure — `normalizeFlowTree` mutates a decoded tree and reports what it changed,\n * so the command and the tests share one implementation.\n */\n\nimport { looksLikeUnresolvedVariable, parseEmailRecipients } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { flowDataPath, listFlowSlugs, readFlowTree, walkNodes, writeFlowTree } from \"./shared.ts\";\n\ntype AnyRecord = Record<string, unknown>;\n\n/** Optional string fields where \"unset\" must be an absent key, never `null` or `\"\"`. */\nconst OPTIONAL_STRINGS = [\"oauthProviderId\"] as const;\n/**\n * Fields typed as arrays, where `null` means \"none yet\".\n *\n * Every `PayloadKey[]` slot the engine defines is here, not just the common\n * ones: this list is what makes \"a nulled array is not a mistake\" true, so a\n * slot missing from it is a rule the agent is told it no longer has to\n * remember, and then fails a build for forgetting. `flows-normalize-coverage`\n * in `normalize.test.ts` pins it against `MAPPING_SLOTS`.\n */\nconst ARRAY_FIELDS = [\n \"fieldMapping\",\n \"columnMapping\",\n \"payloadKeys\",\n \"eventParams\",\n \"eventProperties\",\n \"dataLayerParams\",\n \"goalParams\",\n \"fields\",\n \"tagIds\",\n] as const;\n\nexport type Normalization = { path: string; change: string };\n\n/**\n * Objects that can carry a mappable array, relative to the side effect.\n *\n * An email's keys live at `body.fields`, one level down, and `null` there is the\n * same type error as `payloadKeys: null` is at the top. Repairing only the top\n * level would leave the one nested slot as a rule the agent still has to know.\n */\nconst ARRAY_OWNERS = [\"\", \"body\"] as const;\n\n/** Drop an optional string that was authored as `null` or `\"\"`. */\nfunction dropUnsetOptionals(sideEffect: AnyRecord, path: string): Normalization[] {\n return OPTIONAL_STRINGS.flatMap((key) => {\n if (!(key in sideEffect) || (sideEffect[key] !== null && sideEffect[key] !== \"\")) return [];\n delete sideEffect[key];\n return [{ path, change: `dropped \\`${key}\\` (an optional string is absent, never null)` }];\n });\n}\n\n/** Turn every nulled array on one object into an empty one. */\nfunction fillNulledArrays(target: AnyRecord, prefix: string, path: string): Normalization[] {\n return ARRAY_FIELDS.flatMap((key) => {\n if (!(key in target) || target[key] !== null) return [];\n target[key] = [];\n return [{ path, change: `\\`${prefix}${key}: null\\` → \\`[]\\`` }];\n });\n}\n\n/**\n * Tidy an email destination's recipient list, or null when there is nothing to\n * tidy — and, just as importantly, when tidying would hide something.\n *\n * The field is one string holding a list, so it collects the marks of having\n * been typed: a leading space, a trailing comma, a semicolon where a comma was\n * meant, the same address twice. None changes who receives the mail —\n * `parseEmailRecipients` reads all of them the same way at send time — so this\n * is a shape repair rather than a judgement call, which is what keeps it here.\n *\n * It refuses where a rewrite would be one. A `{{…}}` that was never substituted\n * and a fragment that is not an address both belong to\n * `validate-flow-email-recipients`, which quotes them back verbatim; a tidied\n * copy would put words in the author's mouth on the screen where they are\n * trying to recognise their own mistake.\n */\nfunction tidyEmailRecipients(sideEffect: AnyRecord, path: string): Normalization[] {\n if (sideEffect.type !== \"email\") return [];\n const config = sideEffect.encryptedConfig;\n // A string is the dashboard-configured half, encrypted; an object is the\n // agent-authored half, which is the only one anybody can read.\n if (!config || typeof config !== \"object\" || Array.isArray(config)) return [];\n const raw = (config as AnyRecord).email;\n if (typeof raw !== \"string\" || looksLikeUnresolvedVariable(raw)) return [];\n const { to, invalid } = parseEmailRecipients(raw);\n if (invalid.length > 0 || to.length === 0) return [];\n const tidied = to.join(\", \");\n if (tidied === raw) return [];\n (config as AnyRecord).email = tidied;\n return [{ path, change: \"tidied the recipient list's spacing and separators\" }];\n}\n\n/** Side effects of one node, skipping anything that is not an object to patch. */\nfunction sideEffectsOf(node: AnyRecord): AnyRecord[] {\n if (!Array.isArray(node.sideEffects)) return [];\n return (node.sideEffects as unknown[]).filter(\n (sideEffect): sideEffect is AnyRecord => Boolean(sideEffect) && typeof sideEffect === \"object\",\n );\n}\n\n/** Repairs to one side effect, reported against the step that owns it. */\nfunction normalizeSideEffect(sideEffect: AnyRecord, where: string): Normalization[] {\n const path = `${where} → ${String(sideEffect.id ?? \"side effect\")}`;\n const arrays = ARRAY_OWNERS.flatMap((owner) => {\n const target = owner ? (sideEffect[owner] as AnyRecord | undefined) : sideEffect;\n if (!target || typeof target !== \"object\") return [];\n return fillNulledArrays(target, owner ? `${owner}.` : \"\", path);\n });\n return [...dropUnsetOptionals(sideEffect, path), ...arrays, ...tidyEmailRecipients(sideEffect, path)];\n}\n\n/** Fix a decoded tree in place. Returns one line per change, empty when already clean. */\nexport function normalizeFlowTree(tree: AnyRecord): Normalization[] {\n const changes: Normalization[] = [];\n\n for (const node of walkNodes(tree)) {\n const where = typeof node.name === \"string\" && node.name ? String(node.name) : String(node.id ?? \"node\");\n\n // The root node has no condition by definition; every other node needs the\n // key present so a reader can tell \"always runs\" from \"nobody set this\".\n if (!(\"condition\" in node)) {\n node.condition = null;\n changes.push({ path: where, change: \"added the missing `condition: null`\" });\n }\n\n // Filtered, not `?? []`: a hand-authored `sideEffects` can hold a null or a\n // string, and reading `.id` off one throws inside the command that exists to\n // repair a form file that is already slightly wrong.\n for (const sideEffect of sideEffectsOf(node)) {\n changes.push(...normalizeSideEffect(sideEffect, where));\n }\n }\n\n return changes;\n}\n\nregisterSchema({\n command: \"flows.normalize\",\n description:\n \"Fix the shapes a form file is allowed to get slightly wrong: a nulled optional string, a nulled array, a missing condition. Runs automatically before a commit; you rarely need to call it.\",\n args: {\n slug: { type: \"positional\", description: \"Form slug. Omit to check every form.\", required: false },\n write: {\n type: \"boolean\",\n description: \"Apply the fixes. Without it, reports and changes nothing\",\n required: false,\n },\n },\n});\n\nexport const normalizeCommand = defineCommand({\n meta: {\n name: \"normalize\",\n description:\n \"Repair the shapes a form file is allowed to get slightly wrong. Example: baker flows normalize contact --write\",\n },\n args: {\n // `required: false` matters: citty makes a positional required by default,\n // so without it the documented bare `baker flows normalize` printed a wall\n // of usage text and exited 1 instead of checking every form.\n slug: { type: \"positional\", description: \"Form slug (omit for every form)\", required: false },\n write: { type: \"boolean\", description: \"Apply the fixes\" },\n },\n run: ({ args }) => {\n const slugs = args.slug ? [String(args.slug)] : listFlowSlugs();\n const forms = slugs.flatMap((slug) => {\n const tree = readFlowTree(slug);\n const changes = normalizeFlowTree(tree);\n if (changes.length === 0) return [];\n if (args.write === true) writeFlowTree(slug, tree);\n return [{ slug, path: flowDataPath(slug), changes }];\n });\n\n const total = forms.reduce((sum, form) => sum + form.changes.length, 0);\n writeJson({\n ok: true,\n data: { forms, changed: total, written: args.write === true },\n hints:\n total === 0\n ? [\"Nothing to fix.\"]\n : args.write === true\n ? [`Fixed ${total} field(s).`]\n : [`${total} field(s) can be fixed. Re-run with --write.`],\n });\n },\n});\n"],"mappings":"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","names":[]}
@@ -1,122 +0,0 @@
1
- import {
2
- destinationRefusal
3
- } from "./chunk-OE3MIV4F.js";
4
- import "./chunk-2KRK667G.js";
5
- import "./chunk-Q3LXLWZY.js";
6
- import {
7
- failApi
8
- } from "./chunk-ZDAVSTEE.js";
9
- import {
10
- FLOW_ACCOUNT_ONLY_KINDS,
11
- FLOW_AGENT_DESTINATION_KINDS
12
- } from "./chunk-DAO63OOP.js";
13
- import "./chunk-GXDLWBOY.js";
14
- import "./chunk-GIWHHCD6.js";
15
- import "./chunk-XQIOCIDO.js";
16
- import "./chunk-WTJSMYY2.js";
17
- import {
18
- ApiError,
19
- apiPost
20
- } from "./chunk-6YLNY6CK.js";
21
- import "./chunk-D5NEIESR.js";
22
- import "./chunk-57KKVDDR.js";
23
- import {
24
- registerSchema,
25
- writeJson
26
- } from "./chunk-QANGHND7.js";
27
- import "./chunk-YQSBHWOI.js";
28
-
29
- // src/commands/flows/options.ts
30
- import { defineCommand } from "citty";
31
- var HUBSPOT_KINDS = {
32
- hubspot: "baker hubspot forms list",
33
- hubspotForm: "baker hubspot forms list",
34
- hubspotMeeting: "baker hubspot meetings list"
35
- };
36
- function optionsHints(data) {
37
- const { kind, options } = data;
38
- if (FLOW_ACCOUNT_ONLY_KINDS.includes(kind)) {
39
- return [
40
- `Nothing to choose: the connected account is the destination. Wire it: baker flows connect <slug> --side-effect <id> (or --all --type ${kind}).`
41
- ];
42
- }
43
- if (kind === "googleSpreadsheet") {
44
- return [
45
- "These are the only spreadsheets Baker can reach: ones someone chose for a Form before, and ones Baker created. Pick one: baker flows connect <slug> --side-effect <id> --resource <id> [--tab <name>].",
46
- 'None fits? Create one yourself: baker flows connect <slug> --side-effect <id> --new-sheet "<Form name> leads" --columns "Name,Email,\u2026". Only when the user wants their own existing sheet: request_flow_input.'
47
- ];
48
- }
49
- const empty = options.length === 0 ? ["The account has none. Tell the user what to create there, or skip this step \u2014 do not invent one."] : [];
50
- return [
51
- ...empty,
52
- `Fill the step: baker flows connect <slug> --node <stepId> --resource <id> (or --all --type ${kind}). One clear match \u2192 use it; several plausible \u2192 ask the user which.`
53
- ];
54
- }
55
- registerSchema({
56
- command: "flows.options",
57
- description: "What a Form step or destination can be filled with, read from the connected account: Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach. Pipedrive, GoHighLevel contact and ActiveCampaign contact have nothing to choose \u2014 the account is the destination. Next: `baker flows connect <slug> --node|--side-effect <id> --resource <id>`. HubSpot has its own: `baker hubspot forms list` / `meetings list`.",
58
- args: {
59
- kind: {
60
- type: "positional",
61
- description: `One of: ${FLOW_AGENT_DESTINATION_KINDS.join(", ")}`,
62
- required: true
63
- },
64
- account: {
65
- type: "string",
66
- description: "Connection id, when more than one account of the platform is connected",
67
- required: false
68
- }
69
- }
70
- });
71
- var optionsCommand = defineCommand({
72
- meta: {
73
- name: "options",
74
- description: "What a step or destination can be filled with, from the connected account. Start here: baker flows options calendly"
75
- },
76
- args: {
77
- kind: { type: "positional", description: FLOW_AGENT_DESTINATION_KINDS.join(" | "), required: true },
78
- account: { type: "string", description: "Connection id when several are connected" }
79
- },
80
- run: async ({ args }) => {
81
- const kind = String(args.kind);
82
- const hubspot = HUBSPOT_KINDS[kind];
83
- if (hubspot) {
84
- writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: `HubSpot has its own list: ${hubspot}.` } });
85
- process.exit(1);
86
- }
87
- if (!FLOW_AGENT_DESTINATION_KINDS.includes(kind)) {
88
- writeJson({
89
- ok: false,
90
- error: {
91
- code: "VALIDATION_ERROR",
92
- message: `"${kind}" is not filled from a platform account.`,
93
- fix: `Kinds: ${FLOW_AGENT_DESTINATION_KINDS.join(", ")}. Typed credentials (webhooks, Zapier, Crmble) go through request_flow_input.`
94
- }
95
- });
96
- process.exit(1);
97
- }
98
- try {
99
- const { data } = await apiPost("/api/flows/destinations/options", {
100
- kind,
101
- ...args.account ? { account: String(args.account) } : {}
102
- });
103
- writeJson({
104
- ok: true,
105
- data: { ...data, accounts: data.accounts.length > 1 ? data.accounts : void 0 },
106
- hints: optionsHints(data)
107
- });
108
- } catch (err) {
109
- const refusal = err instanceof ApiError ? destinationRefusal(kind, err) : null;
110
- if (err instanceof ApiError && refusal !== null) {
111
- writeJson({ ok: false, error: { code: refusal.code, message: err.message, fix: refusal.fix } });
112
- process.exit(1);
113
- }
114
- failApi(err);
115
- }
116
- }
117
- });
118
- export {
119
- optionsCommand,
120
- optionsHints
121
- };
122
- //# sourceMappingURL=options-AILRY7JY.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/flows/options.ts"],"sourcesContent":["/**\n * `options`: what a Form's step or destination could be filled with, read\n * through the company's connected account — the same list the card shows the\n * user, so the agent can choose instead of asking.\n */\n\nimport {\n FLOW_ACCOUNT_ONLY_KINDS,\n FLOW_AGENT_DESTINATION_KINDS,\n type FlowAgentDestinationKind,\n type FlowsOptionsResponse,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi } from \"../actions/shared.ts\";\nimport { destinationRefusal } from \"./connect.ts\";\n\nconst HUBSPOT_KINDS: Record<string, string> = {\n hubspot: \"baker hubspot forms list\",\n hubspotForm: \"baker hubspot forms list\",\n hubspotMeeting: \"baker hubspot meetings list\",\n};\n\n/** The next call for each kind, spelled out — the target flag differs between a step and a destination. */\nexport function optionsHints(data: FlowsOptionsResponse[\"data\"]): string[] {\n const { kind, options } = data;\n if ((FLOW_ACCOUNT_ONLY_KINDS as readonly string[]).includes(kind)) {\n return [\n `Nothing to choose: the connected account is the destination. Wire it: baker flows connect <slug> --side-effect <id> (or --all --type ${kind}).`,\n ];\n }\n if (kind === \"googleSpreadsheet\") {\n return [\n \"These are the only spreadsheets Baker can reach: ones someone chose for a Form before, and ones Baker created. Pick one: baker flows connect <slug> --side-effect <id> --resource <id> [--tab <name>].\",\n 'None fits? Create one yourself: baker flows connect <slug> --side-effect <id> --new-sheet \"<Form name> leads\" --columns \"Name,Email,…\". Only when the user wants their own existing sheet: request_flow_input.',\n ];\n }\n const empty =\n options.length === 0\n ? [\"The account has none. Tell the user what to create there, or skip this step — do not invent one.\"]\n : [];\n return [\n ...empty,\n `Fill the step: baker flows connect <slug> --node <stepId> --resource <id> (or --all --type ${kind}). One clear match → use it; several plausible → ask the user which.`,\n ];\n}\n\nregisterSchema({\n command: \"flows.options\",\n description:\n \"What a Form step or destination can be filled with, read from the connected account: Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach. Pipedrive, GoHighLevel contact and ActiveCampaign contact have nothing to choose — the account is the destination. Next: `baker flows connect <slug> --node|--side-effect <id> --resource <id>`. HubSpot has its own: `baker hubspot forms list` / `meetings list`.\",\n args: {\n kind: {\n type: \"positional\",\n description: `One of: ${FLOW_AGENT_DESTINATION_KINDS.join(\", \")}`,\n required: true,\n },\n account: {\n type: \"string\",\n description: \"Connection id, when more than one account of the platform is connected\",\n required: false,\n },\n },\n});\n\nexport const optionsCommand = defineCommand({\n meta: {\n name: \"options\",\n description:\n \"What a step or destination can be filled with, from the connected account. Start here: baker flows options calendly\",\n },\n args: {\n kind: { type: \"positional\", description: FLOW_AGENT_DESTINATION_KINDS.join(\" | \"), required: true },\n account: { type: \"string\", description: \"Connection id when several are connected\" },\n },\n run: async ({ args }) => {\n const kind = String(args.kind);\n const hubspot = HUBSPOT_KINDS[kind];\n if (hubspot) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: `HubSpot has its own list: ${hubspot}.` } });\n process.exit(1);\n }\n if (!(FLOW_AGENT_DESTINATION_KINDS as readonly string[]).includes(kind)) {\n writeJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: `\"${kind}\" is not filled from a platform account.`,\n fix: `Kinds: ${FLOW_AGENT_DESTINATION_KINDS.join(\", \")}. Typed credentials (webhooks, Zapier, Crmble) go through request_flow_input.`,\n },\n });\n process.exit(1);\n }\n try {\n const { data } = await apiPost<FlowsOptionsResponse>(\"/api/flows/destinations/options\", {\n kind,\n ...(args.account ? { account: String(args.account) } : {}),\n });\n writeJson({\n ok: true,\n data: { ...data, accounts: data.accounts.length > 1 ? data.accounts : undefined },\n hints: optionsHints(data),\n });\n } catch (err) {\n const refusal = err instanceof ApiError ? destinationRefusal(kind as FlowAgentDestinationKind, err) : null;\n if (err instanceof ApiError && refusal !== null) {\n writeJson({ ok: false, error: { code: refusal.code, message: err.message, fix: refusal.fix } });\n process.exit(1);\n }\n failApi(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,SAAS,qBAAqB;AAO9B,IAAM,gBAAwC;AAAA,EAC5C,SAAS;AAAA,EACT,aAAa;AAAA,EACb,gBAAgB;AAClB;AAGO,SAAS,aAAa,MAA8C;AACzE,QAAM,EAAE,MAAM,QAAQ,IAAI;AAC1B,MAAK,wBAA8C,SAAS,IAAI,GAAG;AACjE,WAAO;AAAA,MACL,wIAAwI,IAAI;AAAA,IAC9I;AAAA,EACF;AACA,MAAI,SAAS,qBAAqB;AAChC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,QAAM,QACJ,QAAQ,WAAW,IACf,CAAC,uGAAkG,IACnG,CAAC;AACP,SAAO;AAAA,IACL,GAAG;AAAA,IACH,8FAA8F,IAAI;AAAA,EACpG;AACF;AAEA,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aACE;AAAA,EACF,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa,WAAW,6BAA6B,KAAK,IAAI,CAAC;AAAA,MAC/D,UAAU;AAAA,IACZ;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,EACF;AACF,CAAC;AAEM,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM,EAAE,MAAM,cAAc,aAAa,6BAA6B,KAAK,KAAK,GAAG,UAAU,KAAK;AAAA,IAClG,SAAS,EAAE,MAAM,UAAU,aAAa,2CAA2C;AAAA,EACrF;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,OAAO,OAAO,KAAK,IAAI;AAC7B,UAAM,UAAU,cAAc,IAAI;AAClC,QAAI,SAAS;AACX,gBAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,SAAS,6BAA6B,OAAO,IAAI,EAAE,CAAC;AAC9G,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI,CAAE,6BAAmD,SAAS,IAAI,GAAG;AACvE,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ,OAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS,IAAI,IAAI;AAAA,UACjB,KAAK,UAAU,6BAA6B,KAAK,IAAI,CAAC;AAAA,QACxD;AAAA,MACF,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,QAAI;AACF,YAAM,EAAE,KAAK,IAAI,MAAM,QAA8B,mCAAmC;AAAA,QACtF;AAAA,QACA,GAAI,KAAK,UAAU,EAAE,SAAS,OAAO,KAAK,OAAO,EAAE,IAAI,CAAC;AAAA,MAC1D,CAAC;AACD,gBAAU;AAAA,QACR,IAAI;AAAA,QACJ,MAAM,EAAE,GAAG,MAAM,UAAU,KAAK,SAAS,SAAS,IAAI,KAAK,WAAW,OAAU;AAAA,QAChF,OAAO,aAAa,IAAI;AAAA,MAC1B,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,WAAW,mBAAmB,MAAkC,GAAG,IAAI;AACtG,UAAI,eAAe,YAAY,YAAY,MAAM;AAC/C,kBAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,QAAQ,MAAM,SAAS,IAAI,SAAS,KAAK,QAAQ,IAAI,EAAE,CAAC;AAC9F,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,cAAQ,GAAG;AAAA,IACb;AAAA,EACF;AACF,CAAC;","names":[]}