@koda-sl/baker-cli 0.449.0 → 0.450.0-dev.b454c3dd2

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 (878) hide show
  1. package/README.md +11 -2
  2. package/dist/account-4H7QVBRK.js +80 -0
  3. package/dist/account-XQXC7BR6.js +80 -0
  4. package/dist/account-XQXC7BR6.js.map +1 -0
  5. package/dist/account-writes-AK42HGRM.js +66 -0
  6. package/dist/accounts-722UY53A.js +78 -0
  7. package/dist/accounts-722UY53A.js.map +1 -0
  8. package/dist/accounts-E67BMK7T.js +612 -0
  9. package/dist/accounts-E67BMK7T.js.map +1 -0
  10. package/dist/actions-6TQMSVWD.js +55 -0
  11. package/dist/ad-group-writes-QQS4223F.js +170 -0
  12. package/dist/ad-groups-WGPDPUI2.js +68 -0
  13. package/dist/ad-writes-XE2IE4DS.js +174 -0
  14. package/dist/add-2BEGRHUX.js +303 -0
  15. package/dist/add-2BEGRHUX.js.map +1 -0
  16. package/dist/add-LEMKEOPO.js +105 -0
  17. package/dist/add-LEMKEOPO.js.map +1 -0
  18. package/dist/ads-AGYCVD62.js +40 -0
  19. package/dist/ads-BCOSQALY.js +77 -0
  20. package/dist/advertisers-2VQKAYKG.js +121 -0
  21. package/dist/advertisers-2VQKAYKG.js.map +1 -0
  22. package/dist/analytics-IFELDWLL.js +1962 -0
  23. package/dist/analytics-IFELDWLL.js.map +1 -0
  24. package/dist/analytics-OH5QEH7F.js +434 -0
  25. package/dist/analytics-OH5QEH7F.js.map +1 -0
  26. package/dist/animate-AIZ3GS4J.js +480 -0
  27. package/dist/assign-PTUJUCEL.js +78 -0
  28. package/dist/assign-PTUJUCEL.js.map +1 -0
  29. package/dist/audience-size-LRI6GJRT.js +95 -0
  30. package/dist/audience-size-LRI6GJRT.js.map +1 -0
  31. package/dist/audiences-TGD5US2M.js +268 -0
  32. package/dist/audit-HWP7OPB7.js +152 -0
  33. package/dist/audit-HWP7OPB7.js.map +1 -0
  34. package/dist/autocomplete-J6DHU6MR.js +112 -0
  35. package/dist/autocomplete-J6DHU6MR.js.map +1 -0
  36. package/dist/avatars-467OSBD6.js +38 -0
  37. package/dist/bid-pricing-EO5WLHGV.js +100 -0
  38. package/dist/bid-pricing-EO5WLHGV.js.map +1 -0
  39. package/dist/brand-YRTEPGBK.js +22 -0
  40. package/dist/brief-OSFJ2V7F.js +478 -0
  41. package/dist/brief-OSFJ2V7F.js.map +1 -0
  42. package/dist/campaign-groups-PQ6KSQJR.js +96 -0
  43. package/dist/campaign-groups-PQ6KSQJR.js.map +1 -0
  44. package/dist/campaign-writes-5OVLUD5E.js +166 -0
  45. package/dist/campaign-writes-5OVLUD5E.js.map +1 -0
  46. package/dist/campaign-writes-SXLZFYF6.js +170 -0
  47. package/dist/campaigns-6T3NSUT2.js +110 -0
  48. package/dist/campaigns-6T3NSUT2.js.map +1 -0
  49. package/dist/campaigns-OYMXDGWX.js +107 -0
  50. package/dist/campaigns-YS3OGQXO.js +76 -0
  51. package/dist/canvas-YQFG52IG.js +46 -0
  52. package/dist/capabilities-PXBKUN2G.js +145 -0
  53. package/dist/capabilities-PXBKUN2G.js.map +1 -0
  54. package/dist/catalog-XLXIM7IW.js +65 -0
  55. package/dist/catalogs-BRXEDE56.js +128 -0
  56. package/dist/chatgpt-7W75X3ER.js +47 -0
  57. package/dist/chats-UK47UE7C.js +263 -0
  58. package/dist/chats-UK47UE7C.js.map +1 -0
  59. package/dist/chunk-24EB7EDR.js +433 -0
  60. package/dist/chunk-2AOE2MZQ.js +159 -0
  61. package/dist/chunk-2VPBIT65.js +509 -0
  62. package/dist/chunk-4PDHHHUJ.js +537 -0
  63. package/dist/chunk-4PDHHHUJ.js.map +1 -0
  64. package/dist/chunk-54C6YDGJ.js +622 -0
  65. package/dist/chunk-5WCSKQ7Z.js +188 -0
  66. package/dist/chunk-5ZNTADVR.js +197 -0
  67. package/dist/chunk-6F7DVPOS.js +310 -0
  68. package/dist/chunk-6NY2GPR4.js +304 -0
  69. package/dist/chunk-6Y7ZBENQ.js +207 -0
  70. package/dist/chunk-7CTMH5AK.js +111 -0
  71. package/dist/chunk-7EPXVICM.js +6184 -0
  72. package/dist/chunk-7EPXVICM.js.map +1 -0
  73. package/dist/chunk-7J6EHOH6.js +274 -0
  74. package/dist/chunk-ASI4P6X2.js +6667 -0
  75. package/dist/chunk-C46GUI2S.js +19 -0
  76. package/dist/chunk-CAMX6OHF.js +3182 -0
  77. package/dist/chunk-CAMX6OHF.js.map +1 -0
  78. package/dist/chunk-CWYAELVG.js +60 -0
  79. package/dist/chunk-DCRPXOJJ.js +363 -0
  80. package/dist/chunk-EAP4O4FE.js +440 -0
  81. package/dist/chunk-FPOGPFAG.js +4383 -0
  82. package/dist/chunk-FTWJFDIN.js +23992 -0
  83. package/dist/chunk-FTWJFDIN.js.map +1 -0
  84. package/dist/chunk-FUHN4MFY.js +103 -0
  85. package/dist/chunk-FYGR3I2A.js +297 -0
  86. package/dist/chunk-H3427GPU.js +206 -0
  87. package/dist/chunk-HDLYPC6K.js +172 -0
  88. package/dist/chunk-HDLYPC6K.js.map +1 -0
  89. package/dist/chunk-HR6IWNKE.js +2942 -0
  90. package/dist/chunk-HR6IWNKE.js.map +1 -0
  91. package/dist/chunk-HROZYQ5H.js +275 -0
  92. package/dist/chunk-HROZYQ5H.js.map +1 -0
  93. package/dist/chunk-HZUDRKGR.js +98 -0
  94. package/dist/chunk-I3ZR655O.js +382 -0
  95. package/dist/chunk-KMKEYI37.js +96 -0
  96. package/dist/chunk-KS2QY6MK.js +139 -0
  97. package/dist/chunk-LYQJ4PZW.js +5189 -0
  98. package/dist/chunk-MACCF4JZ.js +3147 -0
  99. package/dist/chunk-N4LAYIIN.js +175 -0
  100. package/dist/chunk-NA63BH7V.js +346 -0
  101. package/dist/chunk-NCWCZY5P.js +1441 -0
  102. package/dist/chunk-NDEE6G2J.js +494 -0
  103. package/dist/chunk-NJXNU2G6.js +819 -0
  104. package/dist/chunk-NYIGXDUG.js +178 -0
  105. package/dist/chunk-NYIGXDUG.js.map +1 -0
  106. package/dist/chunk-P5T7OZKV.js +26 -0
  107. package/dist/chunk-PZXCWSKV.js +1830 -0
  108. package/dist/chunk-QE7W555R.js +541 -0
  109. package/dist/chunk-QE7W555R.js.map +1 -0
  110. package/dist/chunk-R25YLW6H.js +20 -0
  111. package/dist/chunk-RL5CP7N6.js +57 -0
  112. package/dist/chunk-RX2DKU3W.js +592 -0
  113. package/dist/chunk-SJYEY5MV.js +172 -0
  114. package/dist/chunk-SJYEY5MV.js.map +1 -0
  115. package/dist/chunk-ULG4QRTV.js +92 -0
  116. package/dist/chunk-VL43TNIP.js +455 -0
  117. package/dist/chunk-VLMBTPXU.js +51 -0
  118. package/dist/chunk-VNUNE5AB.js +160 -0
  119. package/dist/chunk-VYQ3QJ3C.js +169 -0
  120. package/dist/chunk-WGUQHAJY.js +23 -0
  121. package/dist/chunk-WKQG6TER.js +1079 -0
  122. package/dist/chunk-XFGAUP5B.js +76 -0
  123. package/dist/chunk-ZDMTXQ2Q.js +337 -0
  124. package/dist/claim-W6G6VEG5.js +198 -0
  125. package/dist/claim-W6G6VEG5.js.map +1 -0
  126. package/dist/cli.js +30 -30
  127. package/dist/companies-TS6KBATJ.js +196 -0
  128. package/dist/companies-TS6KBATJ.js.map +1 -0
  129. package/dist/complete-LYR2HMQU.js +82 -0
  130. package/dist/complete-LYR2HMQU.js.map +1 -0
  131. package/dist/connect-FCXNVTXG.js +43 -0
  132. package/dist/conversation-6ZJGPCXM.js +94 -0
  133. package/dist/conversation-6ZJGPCXM.js.map +1 -0
  134. package/dist/conversion-report-XQBJ6LG4.js +125 -0
  135. package/dist/conversion-writes-UBCVXP2E.js +120 -0
  136. package/dist/conversions-D236RTUK.js +76 -0
  137. package/dist/conversions-UHB55MMQ.js +136 -0
  138. package/dist/conversions-UHB55MMQ.js.map +1 -0
  139. package/dist/create-EX6OWLNM.js +208 -0
  140. package/dist/create-EX6OWLNM.js.map +1 -0
  141. package/dist/create-JCA7JPLP.js +131 -0
  142. package/dist/create-JCA7JPLP.js.map +1 -0
  143. package/dist/create-JFSK4BOP.js +60 -0
  144. package/dist/create-JFSK4BOP.js.map +1 -0
  145. package/dist/create-WU22YYU2.js +236 -0
  146. package/dist/create-WU22YYU2.js.map +1 -0
  147. package/dist/creatives-FXUQ5WSD.js +51 -0
  148. package/dist/creatives-KGXUOYPE.js +183 -0
  149. package/dist/creatives-KGXUOYPE.js.map +1 -0
  150. package/dist/credentials-MJC7PGKR.js +1056 -0
  151. package/dist/credentials-MJC7PGKR.js.map +1 -0
  152. package/dist/critique-GS5VV5ZC.js +214 -0
  153. package/dist/critique-GS5VV5ZC.js.map +1 -0
  154. package/dist/critique-TPHR27KH.js +1450 -0
  155. package/dist/critique-TPHR27KH.js.map +1 -0
  156. package/dist/crm-AVCM5D4G.js +319 -0
  157. package/dist/crm-AVCM5D4G.js.map +1 -0
  158. package/dist/crm-VK44O3ED.js +225 -0
  159. package/dist/crm-VK44O3ED.js.map +1 -0
  160. package/dist/customers-XH2DMTFH.js +57 -0
  161. package/dist/delete-E3R3TKIL.js +67 -0
  162. package/dist/delete-E3R3TKIL.js.map +1 -0
  163. package/dist/delete-KRH2YMSZ.js +55 -0
  164. package/dist/delete-KRH2YMSZ.js.map +1 -0
  165. package/dist/delete-WI5E3DR3.js +64 -0
  166. package/dist/delete-WI5E3DR3.js.map +1 -0
  167. package/dist/demographics-XV5PBA77.js +139 -0
  168. package/dist/demographics-XV5PBA77.js.map +1 -0
  169. package/dist/discard-HTQUUHJR.js +67 -0
  170. package/dist/discard-HTQUUHJR.js.map +1 -0
  171. package/dist/domain-RECGZXJB.js +99 -0
  172. package/dist/domain-RECGZXJB.js.map +1 -0
  173. package/dist/draft-2IBSJEKC.js +218 -0
  174. package/dist/draft-2IBSJEKC.js.map +1 -0
  175. package/dist/draft-MNFJ4G3C.js +281 -0
  176. package/dist/draft-PVTX6QT6.js +329 -0
  177. package/dist/draft-PVTX6QT6.js.map +1 -0
  178. package/dist/draft-Q546QPPU.js +307 -0
  179. package/dist/draft-Q546QPPU.js.map +1 -0
  180. package/dist/engine/index.js +6 -6
  181. package/dist/facets-7EVPJMKS.js +115 -0
  182. package/dist/facets-7EVPJMKS.js.map +1 -0
  183. package/dist/feedback-EIZKS4JU.js +66 -0
  184. package/dist/feedback-record-TKO54BOE.js +176 -0
  185. package/dist/feedback-record-TKO54BOE.js.map +1 -0
  186. package/dist/fetch-4BY6HYUM.js +177 -0
  187. package/dist/fetch-4BY6HYUM.js.map +1 -0
  188. package/dist/find-FRRHAPWX.js +134 -0
  189. package/dist/fit-UOFYFJ4Q.js +45 -0
  190. package/dist/flows-KTFAML22.js +248 -0
  191. package/dist/flows-KTFAML22.js.map +1 -0
  192. package/dist/fonts-MXR3ZKDX.js +35 -0
  193. package/dist/forecast-3QTJYVND.js +105 -0
  194. package/dist/forecast-3QTJYVND.js.map +1 -0
  195. package/dist/funnel-I6XIAEHG.js +393 -0
  196. package/dist/funnel-I6XIAEHG.js.map +1 -0
  197. package/dist/ga4-DV2AXCSL.js +55 -0
  198. package/dist/generate-3XYYITU6.js +262 -0
  199. package/dist/get-5PKNKJ5S.js +57 -0
  200. package/dist/get-5PKNKJ5S.js.map +1 -0
  201. package/dist/get-72YPHJGV.js +79 -0
  202. package/dist/get-72YPHJGV.js.map +1 -0
  203. package/dist/google-6OGZX47I.js +1872 -0
  204. package/dist/google-QYYYSSXI.js +136 -0
  205. package/dist/google-ads-QGMQKZQD.js +196 -0
  206. package/dist/google-ads-QGMQKZQD.js.map +1 -0
  207. package/dist/gsc-TAKOF7J5.js +30 -0
  208. package/dist/history-6AVQX2OQ.js +134 -0
  209. package/dist/history-6AVQX2OQ.js.map +1 -0
  210. package/dist/history-Q3QCT64S.js +67 -0
  211. package/dist/hubspot-SVEMFK5S.js +780 -0
  212. package/dist/hubspot-SVEMFK5S.js.map +1 -0
  213. package/dist/icon-L4RSS6PZ.js +137 -0
  214. package/dist/ideas-NFOW3HKJ.js +33 -0
  215. package/dist/images-2EFFUNNV.js +90 -0
  216. package/dist/ingest-2EIKN4QC.js +24 -0
  217. package/dist/ingest-2SO62RRI.js +108 -0
  218. package/dist/ingest-2SO62RRI.js.map +1 -0
  219. package/dist/insights-LNAXV2CG.js +122 -0
  220. package/dist/inspect-4OOS4APT.js +190 -0
  221. package/dist/inspect-4OOS4APT.js.map +1 -0
  222. package/dist/inspiration-S3DU4CMQ.js +53 -0
  223. package/dist/keyword-metrics-SF4CSNZ2.js +198 -0
  224. package/dist/keyword-metrics-SF4CSNZ2.js.map +1 -0
  225. package/dist/keywords-for-site-WDAOPNKC.js +129 -0
  226. package/dist/keywords-for-site-WDAOPNKC.js.map +1 -0
  227. package/dist/landing-2ZB46LXH.js +28 -0
  228. package/dist/leads-A4W5KTWB.js +91 -0
  229. package/dist/leads-A4W5KTWB.js.map +1 -0
  230. package/dist/learn-IPULBCOD.js +204 -0
  231. package/dist/learn-IPULBCOD.js.map +1 -0
  232. package/dist/line-item-writes-EMYSOJKM.js +209 -0
  233. package/dist/line-item-writes-EMYSOJKM.js.map +1 -0
  234. package/dist/line-items-5NECXUZT.js +103 -0
  235. package/dist/link-CI45HWFN.js +65 -0
  236. package/dist/link-CI45HWFN.js.map +1 -0
  237. package/dist/linkedin-B7SYR75X.js +1009 -0
  238. package/dist/linkedin-B7SYR75X.js.map +1 -0
  239. package/dist/list-2BARXOT5.js +152 -0
  240. package/dist/list-2BARXOT5.js.map +1 -0
  241. package/dist/list-BIEVLEHS.js +304 -0
  242. package/dist/list-BIEVLEHS.js.map +1 -0
  243. package/dist/list-ZBT3EBVZ.js +64 -0
  244. package/dist/list-ZBT3EBVZ.js.map +1 -0
  245. package/dist/locations-2NKBJKBT.js +67 -0
  246. package/dist/log-C23OOAJZ.js +93 -0
  247. package/dist/log-C23OOAJZ.js.map +1 -0
  248. package/dist/logo-Q5D7PZY6.js +18 -0
  249. package/dist/lookup-ETWY47F7.js +23 -0
  250. package/dist/make-TPKKJXGL.js +594 -0
  251. package/dist/make-TPKKJXGL.js.map +1 -0
  252. package/dist/map-SYZMPHLL.js +405 -0
  253. package/dist/map-SYZMPHLL.js.map +1 -0
  254. package/dist/mcp-6FQBVJ6F.js +477 -0
  255. package/dist/mcp-6FQBVJ6F.js.map +1 -0
  256. package/dist/media-sources-ZXHEEP6T.js +32 -0
  257. package/dist/members-UDY4OOJW.js +45 -0
  258. package/dist/members-UDY4OOJW.js.map +1 -0
  259. package/dist/models-3Z6MDHQW.js +155 -0
  260. package/dist/normalize-DAKHYS3V.js +142 -0
  261. package/dist/normalize-DAKHYS3V.js.map +1 -0
  262. package/dist/options-QL3ULED5.js +122 -0
  263. package/dist/options-QL3ULED5.js.map +1 -0
  264. package/dist/performance-UF5VTY2U.js +25 -0
  265. package/dist/pixels-TZPF746S.js +60 -0
  266. package/dist/plan-FT632COT.js +51 -0
  267. package/dist/plan-FT632COT.js.map +1 -0
  268. package/dist/promoted-tweet-writes-7HGESJ46.js +181 -0
  269. package/dist/promoted-tweet-writes-7HGESJ46.js.map +1 -0
  270. package/dist/promoted-tweets-LZKS5JIF.js +119 -0
  271. package/dist/publish-NPD3SMZL.js +323 -0
  272. package/dist/publish-NPD3SMZL.js.map +1 -0
  273. package/dist/questionnaire-JNGYJTAY.js +37 -0
  274. package/dist/questionnaire-JNGYJTAY.js.map +1 -0
  275. package/dist/reddit-NU2N3LZD.js +27 -0
  276. package/dist/refresh-EBVJ2C6L.js +95 -0
  277. package/dist/refresh-EBVJ2C6L.js.map +1 -0
  278. package/dist/release-V43YB2PY.js +61 -0
  279. package/dist/release-V43YB2PY.js.map +1 -0
  280. package/dist/remove-QPSWLFI4.js +51 -0
  281. package/dist/remove-QPSWLFI4.js.map +1 -0
  282. package/dist/reopen-GQ66NMWF.js +64 -0
  283. package/dist/reopen-GQ66NMWF.js.map +1 -0
  284. package/dist/rerun-PZK275DY.js +86 -0
  285. package/dist/rerun-PZK275DY.js.map +1 -0
  286. package/dist/research-FMM6AWZC.js +62 -0
  287. package/dist/research-GEOCUBXB.js +263 -0
  288. package/dist/research-GEOCUBXB.js.map +1 -0
  289. package/dist/reset-REXJ6AUK.js +55 -0
  290. package/dist/reset-REXJ6AUK.js.map +1 -0
  291. package/dist/reset-Y72IVESB.js +55 -0
  292. package/dist/reset-Y72IVESB.js.map +1 -0
  293. package/dist/resolve-OGX7C4TV.js +122 -0
  294. package/dist/resolve-OGX7C4TV.js.map +1 -0
  295. package/dist/retry-CD6JAQ3F.js +61 -0
  296. package/dist/retry-CD6JAQ3F.js.map +1 -0
  297. package/dist/retry-TCUBBFR5.js +63 -0
  298. package/dist/retry-TCUBBFR5.js.map +1 -0
  299. package/dist/run-A5ZDXTOI.js +66 -0
  300. package/dist/run-A5ZDXTOI.js.map +1 -0
  301. package/dist/run-EUO34T2J.js +61 -0
  302. package/dist/scaffold-ad-SW2HEWM3.js +1550 -0
  303. package/dist/scaffold-ad-SW2HEWM3.js.map +1 -0
  304. package/dist/scaffold-static-ad-ECTJL54Y.js +967 -0
  305. package/dist/scaffold-static-ad-ECTJL54Y.js.map +1 -0
  306. package/dist/scaffold-video-EI7U7RBK.js +874 -0
  307. package/dist/scaffold-video-EI7U7RBK.js.map +1 -0
  308. package/dist/schedule-S5YZJZ5U.js +62 -0
  309. package/dist/schedule-S5YZJZ5U.js.map +1 -0
  310. package/dist/scheduled-agents-N4LJRM4C.js +49 -0
  311. package/dist/schema-R7JWWOF4.js +133 -0
  312. package/dist/schema-R7JWWOF4.js.map +1 -0
  313. package/dist/search-KHMQH3AT.js +175 -0
  314. package/dist/search-KHMQH3AT.js.map +1 -0
  315. package/dist/select-O2FN2JEQ.js +95 -0
  316. package/dist/select-O2FN2JEQ.js.map +1 -0
  317. package/dist/sends-BQZM5PLS.js +310 -0
  318. package/dist/sends-BQZM5PLS.js.map +1 -0
  319. package/dist/set-prompt-2HASHGWC.js +187 -0
  320. package/dist/set-prompt-2HASHGWC.js.map +1 -0
  321. package/dist/setup-links-GYSE56GX.js +142 -0
  322. package/dist/setup-links-GYSE56GX.js.map +1 -0
  323. package/dist/site-4SKM7RKG.js +178 -0
  324. package/dist/site-4SKM7RKG.js.map +1 -0
  325. package/dist/sources-FQ2UZTHL.js +30 -0
  326. package/dist/sources-R2NKNC6J.js +422 -0
  327. package/dist/sources-R2NKNC6J.js.map +1 -0
  328. package/dist/stale-W756ACKC.js +64 -0
  329. package/dist/stale-W756ACKC.js.map +1 -0
  330. package/dist/status-SE2VZJJB.js +63 -0
  331. package/dist/status-SE2VZJJB.js.map +1 -0
  332. package/dist/stock-KXJ26BY4.js +179 -0
  333. package/dist/studio-SYKOSNDB.js +49 -0
  334. package/dist/sync-LJGSODK3.js +55 -0
  335. package/dist/sync-LJGSODK3.js.map +1 -0
  336. package/dist/sync-definition-QR2N233R.js +54 -0
  337. package/dist/tags-4BAVFH4S.js +225 -0
  338. package/dist/tags-4BAVFH4S.js.map +1 -0
  339. package/dist/tags-5SBMRC2A.js +21 -0
  340. package/dist/tags-5SBMRC2A.js.map +1 -0
  341. package/dist/tags-PYWFSBTR.js +26 -0
  342. package/dist/tags-QQU3OKMZ.js +21 -0
  343. package/dist/tags-QQU3OKMZ.js.map +1 -0
  344. package/dist/tags-YYLNF3PK.js +21 -0
  345. package/dist/tags-YYLNF3PK.js.map +1 -0
  346. package/dist/targeting-criteria-RJFLFICN.js +113 -0
  347. package/dist/targets-S2MT2PNB.js +103 -0
  348. package/dist/targets-S2MT2PNB.js.map +1 -0
  349. package/dist/templates-ZE5TOGRT.js +179 -0
  350. package/dist/templates-ZE5TOGRT.js.map +1 -0
  351. package/dist/testimonials-DII5DYLR.js +32 -0
  352. package/dist/top-companies-PGIAEHDF.js +109 -0
  353. package/dist/top-companies-PGIAEHDF.js.map +1 -0
  354. package/dist/translate-GXTS633J.js +599 -0
  355. package/dist/translate-GXTS633J.js.map +1 -0
  356. package/dist/triggers-2PTONXRU.js +142 -0
  357. package/dist/triggers-2PTONXRU.js.map +1 -0
  358. package/dist/unlink-XRMYJ6DB.js +68 -0
  359. package/dist/unlink-XRMYJ6DB.js.map +1 -0
  360. package/dist/unstage-FY7A3YFF.js +85 -0
  361. package/dist/unstage-FY7A3YFF.js.map +1 -0
  362. package/dist/unstage-RM2RLXKD.js +96 -0
  363. package/dist/unstage-RM2RLXKD.js.map +1 -0
  364. package/dist/update-E5SRBXQR.js +143 -0
  365. package/dist/update-E5SRBXQR.js.map +1 -0
  366. package/dist/update-PJ67D2OG.js +156 -0
  367. package/dist/update-PJ67D2OG.js.map +1 -0
  368. package/dist/update-S4562V3O.js +64 -0
  369. package/dist/update-S4562V3O.js.map +1 -0
  370. package/dist/update-V6YVEUI2.js +99 -0
  371. package/dist/update-V6YVEUI2.js.map +1 -0
  372. package/dist/upload-R6CQVLKF.js +127 -0
  373. package/dist/upload-R6CQVLKF.js.map +1 -0
  374. package/dist/url-options-JOKU46F2.js +128 -0
  375. package/dist/url-options-JOKU46F2.js.map +1 -0
  376. package/dist/url-params-7U2XMOWF.js +99 -0
  377. package/dist/url-params-7U2XMOWF.js.map +1 -0
  378. package/dist/validate-7YPOUKPB.js +90 -0
  379. package/dist/validate-7YPOUKPB.js.map +1 -0
  380. package/dist/videos-LICG6ACJ.js +39 -0
  381. package/dist/viewer-check-L4B4LIAX.js +69 -0
  382. package/dist/web-BA2PGTWU.js +141 -0
  383. package/dist/web-BA2PGTWU.js.map +1 -0
  384. package/dist/winning-ads-C6S2C5VP.js +62 -0
  385. package/dist/write-commands-7SJ3BOW5.js +1016 -0
  386. package/dist/write-commands-7SJ3BOW5.js.map +1 -0
  387. package/dist/x-CZHRC6U7.js +47 -0
  388. package/package.json +1 -1
  389. package/dist/account-AL2ZDSR7.js +0 -79
  390. package/dist/account-AL2ZDSR7.js.map +0 -1
  391. package/dist/account-F6MHQ64I.js +0 -80
  392. package/dist/account-writes-ISE4U2FQ.js +0 -66
  393. package/dist/accounts-HAFCLSR5.js +0 -77
  394. package/dist/accounts-HAFCLSR5.js.map +0 -1
  395. package/dist/accounts-O5MFO3QQ.js +0 -611
  396. package/dist/accounts-O5MFO3QQ.js.map +0 -1
  397. package/dist/actions-P35MEMGN.js +0 -55
  398. package/dist/ad-group-writes-UU5NNKSO.js +0 -170
  399. package/dist/ad-groups-CGFXZNIA.js +0 -68
  400. package/dist/ad-writes-NALDYWOR.js +0 -174
  401. package/dist/add-5GAN6CVO.js +0 -280
  402. package/dist/add-5GAN6CVO.js.map +0 -1
  403. package/dist/add-6DTC6X5G.js +0 -104
  404. package/dist/add-6DTC6X5G.js.map +0 -1
  405. package/dist/ads-C47NA2HH.js +0 -40
  406. package/dist/ads-PV7GZXPR.js +0 -77
  407. package/dist/advertisers-AE75CGVE.js +0 -120
  408. package/dist/advertisers-AE75CGVE.js.map +0 -1
  409. package/dist/analytics-FKCXIMPO.js +0 -1958
  410. package/dist/analytics-FKCXIMPO.js.map +0 -1
  411. package/dist/analytics-FPWQQGRM.js +0 -433
  412. package/dist/analytics-FPWQQGRM.js.map +0 -1
  413. package/dist/animate-FWWHSYPL.js +0 -480
  414. package/dist/assign-ABN2AQ4J.js +0 -77
  415. package/dist/assign-ABN2AQ4J.js.map +0 -1
  416. package/dist/audience-size-GNBJY35X.js +0 -94
  417. package/dist/audience-size-GNBJY35X.js.map +0 -1
  418. package/dist/audiences-VEKGLWBG.js +0 -268
  419. package/dist/audit-3VS63TBW.js +0 -151
  420. package/dist/audit-3VS63TBW.js.map +0 -1
  421. package/dist/autocomplete-VS3XG3B7.js +0 -111
  422. package/dist/autocomplete-VS3XG3B7.js.map +0 -1
  423. package/dist/avatars-EKCKHCC3.js +0 -38
  424. package/dist/bid-pricing-Q72B65AY.js +0 -99
  425. package/dist/bid-pricing-Q72B65AY.js.map +0 -1
  426. package/dist/brand-C6PFGGQN.js +0 -22
  427. package/dist/brief-UO52ZHFI.js +0 -477
  428. package/dist/brief-UO52ZHFI.js.map +0 -1
  429. package/dist/campaign-groups-KFFYQPU3.js +0 -95
  430. package/dist/campaign-groups-KFFYQPU3.js.map +0 -1
  431. package/dist/campaign-writes-FHOS5XZY.js +0 -165
  432. package/dist/campaign-writes-FHOS5XZY.js.map +0 -1
  433. package/dist/campaign-writes-SX52CJYW.js +0 -170
  434. package/dist/campaigns-2NHWBF5C.js +0 -109
  435. package/dist/campaigns-2NHWBF5C.js.map +0 -1
  436. package/dist/campaigns-KZYZTXDS.js +0 -107
  437. package/dist/campaigns-X3DPCCSN.js +0 -76
  438. package/dist/canvas-DPCBGW7K.js +0 -46
  439. package/dist/capabilities-DJFTRJKS.js +0 -144
  440. package/dist/capabilities-DJFTRJKS.js.map +0 -1
  441. package/dist/catalog-ME44ZRZF.js +0 -65
  442. package/dist/catalogs-G3YEVG6S.js +0 -128
  443. package/dist/chatgpt-QNUN63YS.js +0 -47
  444. package/dist/chats-D2CSDX5Q.js +0 -262
  445. package/dist/chats-D2CSDX5Q.js.map +0 -1
  446. package/dist/chunk-2QHODRR6.js +0 -19
  447. package/dist/chunk-35XWJEWH.js +0 -274
  448. package/dist/chunk-3G3ZDLMI.js +0 -197
  449. package/dist/chunk-3HJLHTWP.js +0 -163
  450. package/dist/chunk-3HJLHTWP.js.map +0 -1
  451. package/dist/chunk-3IBYKLXR.js +0 -337
  452. package/dist/chunk-4AUMTNVB.js +0 -346
  453. package/dist/chunk-4BQXAE7Z.js +0 -494
  454. package/dist/chunk-54UVGFX3.js +0 -440
  455. package/dist/chunk-5Y5UAJWD.js +0 -111
  456. package/dist/chunk-5ZDLTE5T.js +0 -159
  457. package/dist/chunk-647RO73Q.js +0 -92
  458. package/dist/chunk-7YCRFMXF.js +0 -433
  459. package/dist/chunk-7ZHMGXE2.js +0 -819
  460. package/dist/chunk-A4LOJ2VD.js +0 -23
  461. package/dist/chunk-AEOSAVVL.js +0 -310
  462. package/dist/chunk-CHSNHVYF.js +0 -3182
  463. package/dist/chunk-CHSNHVYF.js.map +0 -1
  464. package/dist/chunk-CSYSX4D2.js +0 -175
  465. package/dist/chunk-DWHIOO7E.js +0 -390
  466. package/dist/chunk-DWHIOO7E.js.map +0 -1
  467. package/dist/chunk-EDLZGTGN.js +0 -216
  468. package/dist/chunk-EDLZGTGN.js.map +0 -1
  469. package/dist/chunk-FD27ZDVP.js +0 -304
  470. package/dist/chunk-GBMP4F45.js +0 -3147
  471. package/dist/chunk-GLCPTMPG.js +0 -5189
  472. package/dist/chunk-HBTF25YG.js +0 -592
  473. package/dist/chunk-HQSCJYZO.js +0 -26
  474. package/dist/chunk-IBURXTL4.js +0 -509
  475. package/dist/chunk-IR6D7K4H.js +0 -382
  476. package/dist/chunk-J5IY3GVE.js +0 -96
  477. package/dist/chunk-JQJDXPCO.js +0 -103
  478. package/dist/chunk-K66OLA6Y.js +0 -4383
  479. package/dist/chunk-K7FZXIOZ.js +0 -60
  480. package/dist/chunk-KFE3S63W.js +0 -1441
  481. package/dist/chunk-KHRXPQID.js +0 -169
  482. package/dist/chunk-KLBTXETO.js +0 -23992
  483. package/dist/chunk-KLBTXETO.js.map +0 -1
  484. package/dist/chunk-KQTYTCKQ.js +0 -98
  485. package/dist/chunk-LYBXCXJB.js +0 -160
  486. package/dist/chunk-LZ73CZGP.js +0 -188
  487. package/dist/chunk-MELOSESI.js +0 -20
  488. package/dist/chunk-MXYBTMKB.js +0 -363
  489. package/dist/chunk-NPY4QUMQ.js +0 -622
  490. package/dist/chunk-OZRUJVIQ.js +0 -206
  491. package/dist/chunk-QRP3PXWN.js +0 -455
  492. package/dist/chunk-RPUSTYHL.js +0 -170
  493. package/dist/chunk-RPUSTYHL.js.map +0 -1
  494. package/dist/chunk-S77PZVYM.js +0 -297
  495. package/dist/chunk-SHL7LOC3.js +0 -51
  496. package/dist/chunk-SSJK7FEV.js +0 -2886
  497. package/dist/chunk-SSJK7FEV.js.map +0 -1
  498. package/dist/chunk-TT5R35PJ.js +0 -207
  499. package/dist/chunk-ULJ5RFOV.js +0 -76
  500. package/dist/chunk-VB6WJJR3.js +0 -1830
  501. package/dist/chunk-W3ZHJJVT.js +0 -139
  502. package/dist/chunk-XF4JUKVF.js +0 -6151
  503. package/dist/chunk-XF4JUKVF.js.map +0 -1
  504. package/dist/chunk-Y6O7EWYY.js +0 -57
  505. package/dist/chunk-YRQYA2LR.js +0 -217
  506. package/dist/chunk-YRQYA2LR.js.map +0 -1
  507. package/dist/chunk-Z2EOC6PL.js +0 -6667
  508. package/dist/chunk-ZEYEWPK6.js +0 -1079
  509. package/dist/claim-FZ5OQLMU.js +0 -197
  510. package/dist/claim-FZ5OQLMU.js.map +0 -1
  511. package/dist/companies-DNI634RC.js +0 -195
  512. package/dist/companies-DNI634RC.js.map +0 -1
  513. package/dist/complete-2FZMGJV5.js +0 -81
  514. package/dist/complete-2FZMGJV5.js.map +0 -1
  515. package/dist/connect-QCOGEPP4.js +0 -36
  516. package/dist/conversation-6IOGV7B7.js +0 -93
  517. package/dist/conversation-6IOGV7B7.js.map +0 -1
  518. package/dist/conversion-report-N4HANYOB.js +0 -125
  519. package/dist/conversion-writes-LW4HQKK5.js +0 -120
  520. package/dist/conversions-4SRZPBBX.js +0 -135
  521. package/dist/conversions-4SRZPBBX.js.map +0 -1
  522. package/dist/conversions-TS723AZV.js +0 -76
  523. package/dist/create-BJNMO6HT.js +0 -207
  524. package/dist/create-BJNMO6HT.js.map +0 -1
  525. package/dist/create-FX4OJ2XF.js +0 -59
  526. package/dist/create-FX4OJ2XF.js.map +0 -1
  527. package/dist/create-RM7HV77Y.js +0 -130
  528. package/dist/create-RM7HV77Y.js.map +0 -1
  529. package/dist/create-VXM34ZWH.js +0 -235
  530. package/dist/create-VXM34ZWH.js.map +0 -1
  531. package/dist/creatives-JSWBFQ5R.js +0 -182
  532. package/dist/creatives-JSWBFQ5R.js.map +0 -1
  533. package/dist/creatives-SJTJU6VT.js +0 -51
  534. package/dist/credentials-VOZTILFO.js +0 -1055
  535. package/dist/credentials-VOZTILFO.js.map +0 -1
  536. package/dist/critique-65W63MFZ.js +0 -213
  537. package/dist/critique-65W63MFZ.js.map +0 -1
  538. package/dist/critique-ZS4ON3SU.js +0 -1449
  539. package/dist/critique-ZS4ON3SU.js.map +0 -1
  540. package/dist/crm-52ROSWH5.js +0 -224
  541. package/dist/crm-52ROSWH5.js.map +0 -1
  542. package/dist/crm-R5IXIFIV.js +0 -318
  543. package/dist/crm-R5IXIFIV.js.map +0 -1
  544. package/dist/customers-4AWBFDUF.js +0 -56
  545. package/dist/delete-AIGE4Y4H.js +0 -63
  546. package/dist/delete-AIGE4Y4H.js.map +0 -1
  547. package/dist/delete-HGHXY24R.js +0 -54
  548. package/dist/delete-HGHXY24R.js.map +0 -1
  549. package/dist/delete-M2GDLPYN.js +0 -66
  550. package/dist/delete-M2GDLPYN.js.map +0 -1
  551. package/dist/demographics-NTWB2IMG.js +0 -138
  552. package/dist/demographics-NTWB2IMG.js.map +0 -1
  553. package/dist/discard-2WWQG6OU.js +0 -66
  554. package/dist/discard-2WWQG6OU.js.map +0 -1
  555. package/dist/domain-Y2LT6JLT.js +0 -98
  556. package/dist/domain-Y2LT6JLT.js.map +0 -1
  557. package/dist/draft-EJXNNJ3Y.js +0 -306
  558. package/dist/draft-EJXNNJ3Y.js.map +0 -1
  559. package/dist/draft-FJ7WHIXW.js +0 -328
  560. package/dist/draft-FJ7WHIXW.js.map +0 -1
  561. package/dist/draft-SLHAKJ2A.js +0 -217
  562. package/dist/draft-SLHAKJ2A.js.map +0 -1
  563. package/dist/draft-THPZFASM.js +0 -281
  564. package/dist/facets-U7AQC4H6.js +0 -114
  565. package/dist/facets-U7AQC4H6.js.map +0 -1
  566. package/dist/feedback-XNJQ63DS.js +0 -66
  567. package/dist/feedback-record-FDLMWMDG.js +0 -175
  568. package/dist/feedback-record-FDLMWMDG.js.map +0 -1
  569. package/dist/fetch-W7NULDEO.js +0 -176
  570. package/dist/fetch-W7NULDEO.js.map +0 -1
  571. package/dist/find-OTDIX6V4.js +0 -134
  572. package/dist/fit-7237F5EB.js +0 -45
  573. package/dist/flows-KABCBS3S.js +0 -244
  574. package/dist/flows-KABCBS3S.js.map +0 -1
  575. package/dist/fonts-EMMX3KII.js +0 -34
  576. package/dist/forecast-GNODEIIC.js +0 -104
  577. package/dist/forecast-GNODEIIC.js.map +0 -1
  578. package/dist/funnel-AAX27NH4.js +0 -837
  579. package/dist/funnel-AAX27NH4.js.map +0 -1
  580. package/dist/ga4-UDQ2HA2J.js +0 -55
  581. package/dist/generate-MMBYB44G.js +0 -262
  582. package/dist/get-QEYJRLV3.js +0 -54
  583. package/dist/get-QEYJRLV3.js.map +0 -1
  584. package/dist/get-RTVUZM6E.js +0 -78
  585. package/dist/get-RTVUZM6E.js.map +0 -1
  586. package/dist/google-KTO3PLEU.js +0 -136
  587. package/dist/google-M7KEXVK5.js +0 -1872
  588. package/dist/google-ads-OK6IG3UV.js +0 -195
  589. package/dist/google-ads-OK6IG3UV.js.map +0 -1
  590. package/dist/gsc-P3QYGDV2.js +0 -30
  591. package/dist/history-DBIEYQHY.js +0 -67
  592. package/dist/history-PQUJKK26.js +0 -133
  593. package/dist/history-PQUJKK26.js.map +0 -1
  594. package/dist/hubspot-Y77VLY6Y.js +0 -779
  595. package/dist/hubspot-Y77VLY6Y.js.map +0 -1
  596. package/dist/icon-I43F77FV.js +0 -137
  597. package/dist/ideas-MIDU7YOA.js +0 -32
  598. package/dist/images-S254MS6O.js +0 -90
  599. package/dist/ingest-J4I3HKM3.js +0 -107
  600. package/dist/ingest-J4I3HKM3.js.map +0 -1
  601. package/dist/ingest-YV2NLDBE.js +0 -23
  602. package/dist/insights-ZIU6FJMS.js +0 -122
  603. package/dist/inspect-Q5NHBBHX.js +0 -189
  604. package/dist/inspect-Q5NHBBHX.js.map +0 -1
  605. package/dist/inspiration-P265QJ2H.js +0 -53
  606. package/dist/keyword-metrics-PDY4ZXSP.js +0 -197
  607. package/dist/keyword-metrics-PDY4ZXSP.js.map +0 -1
  608. package/dist/keywords-for-site-GALSCV77.js +0 -128
  609. package/dist/keywords-for-site-GALSCV77.js.map +0 -1
  610. package/dist/landing-CJYGWCK4.js +0 -28
  611. package/dist/leads-PHKG6CP3.js +0 -90
  612. package/dist/leads-PHKG6CP3.js.map +0 -1
  613. package/dist/learn-3VO6DXUX.js +0 -203
  614. package/dist/learn-3VO6DXUX.js.map +0 -1
  615. package/dist/line-item-writes-E6MZPIZZ.js +0 -208
  616. package/dist/line-item-writes-E6MZPIZZ.js.map +0 -1
  617. package/dist/line-items-7ZGIKEF2.js +0 -103
  618. package/dist/link-QYAW6A2W.js +0 -64
  619. package/dist/link-QYAW6A2W.js.map +0 -1
  620. package/dist/linkedin-FFSDSGGS.js +0 -1008
  621. package/dist/linkedin-FFSDSGGS.js.map +0 -1
  622. package/dist/list-5IC6KIKO.js +0 -63
  623. package/dist/list-5IC6KIKO.js.map +0 -1
  624. package/dist/list-NVQC5SNY.js +0 -151
  625. package/dist/list-NVQC5SNY.js.map +0 -1
  626. package/dist/list-SAV3LQHY.js +0 -303
  627. package/dist/list-SAV3LQHY.js.map +0 -1
  628. package/dist/locations-74TPQWAT.js +0 -67
  629. package/dist/log-XZPVOALD.js +0 -92
  630. package/dist/log-XZPVOALD.js.map +0 -1
  631. package/dist/logo-2IP663QO.js +0 -18
  632. package/dist/lookup-XK45W2SH.js +0 -22
  633. package/dist/make-LCNP76OF.js +0 -593
  634. package/dist/make-LCNP76OF.js.map +0 -1
  635. package/dist/map-4J5WIWIG.js +0 -404
  636. package/dist/map-4J5WIWIG.js.map +0 -1
  637. package/dist/mcp-XXD7ZQCP.js +0 -476
  638. package/dist/mcp-XXD7ZQCP.js.map +0 -1
  639. package/dist/media-sources-O6ZRUA3N.js +0 -32
  640. package/dist/members-D5ZYLS4Y.js +0 -44
  641. package/dist/members-D5ZYLS4Y.js.map +0 -1
  642. package/dist/models-7U3GRYHF.js +0 -155
  643. package/dist/normalize-PCNC6E2N.js +0 -138
  644. package/dist/normalize-PCNC6E2N.js.map +0 -1
  645. package/dist/options-MQ65VEVD.js +0 -121
  646. package/dist/options-MQ65VEVD.js.map +0 -1
  647. package/dist/performance-6QW2KEEQ.js +0 -24
  648. package/dist/pixels-45A55MOP.js +0 -60
  649. package/dist/promoted-tweet-writes-JPLHY3GM.js +0 -180
  650. package/dist/promoted-tweet-writes-JPLHY3GM.js.map +0 -1
  651. package/dist/promoted-tweets-SURKMHFI.js +0 -119
  652. package/dist/publish-HCQ6MXLB.js +0 -322
  653. package/dist/publish-HCQ6MXLB.js.map +0 -1
  654. package/dist/reddit-GIP3ADMS.js +0 -26
  655. package/dist/refresh-UXQSLCR3.js +0 -94
  656. package/dist/refresh-UXQSLCR3.js.map +0 -1
  657. package/dist/release-5KVLXNP6.js +0 -60
  658. package/dist/release-5KVLXNP6.js.map +0 -1
  659. package/dist/remove-6FIVKCJI.js +0 -50
  660. package/dist/remove-6FIVKCJI.js.map +0 -1
  661. package/dist/reopen-YM5LNOLB.js +0 -63
  662. package/dist/reopen-YM5LNOLB.js.map +0 -1
  663. package/dist/rerun-CET74VPF.js +0 -85
  664. package/dist/rerun-CET74VPF.js.map +0 -1
  665. package/dist/research-EY7C7JJY.js +0 -62
  666. package/dist/research-YOGE7GT2.js +0 -262
  667. package/dist/research-YOGE7GT2.js.map +0 -1
  668. package/dist/reset-C4UHQ3EU.js +0 -54
  669. package/dist/reset-C4UHQ3EU.js.map +0 -1
  670. package/dist/reset-OLVB6AE6.js +0 -54
  671. package/dist/reset-OLVB6AE6.js.map +0 -1
  672. package/dist/resolve-XYH2GDAE.js +0 -121
  673. package/dist/resolve-XYH2GDAE.js.map +0 -1
  674. package/dist/retry-726GKI6V.js +0 -62
  675. package/dist/retry-726GKI6V.js.map +0 -1
  676. package/dist/retry-7EELDEQP.js +0 -60
  677. package/dist/retry-7EELDEQP.js.map +0 -1
  678. package/dist/run-P4KR2MXC.js +0 -65
  679. package/dist/run-P4KR2MXC.js.map +0 -1
  680. package/dist/run-XQ7EM3JT.js +0 -60
  681. package/dist/scaffold-ad-U2KSHKBC.js +0 -1549
  682. package/dist/scaffold-ad-U2KSHKBC.js.map +0 -1
  683. package/dist/scaffold-static-ad-63LQKUSO.js +0 -966
  684. package/dist/scaffold-static-ad-63LQKUSO.js.map +0 -1
  685. package/dist/scaffold-video-MUS6LHJQ.js +0 -873
  686. package/dist/scaffold-video-MUS6LHJQ.js.map +0 -1
  687. package/dist/schedule-RDK4GEPI.js +0 -61
  688. package/dist/schedule-RDK4GEPI.js.map +0 -1
  689. package/dist/scheduled-agents-6U44QE76.js +0 -49
  690. package/dist/schema-CHJDC7GQ.js +0 -129
  691. package/dist/schema-CHJDC7GQ.js.map +0 -1
  692. package/dist/search-PMJRU3C4.js +0 -174
  693. package/dist/search-PMJRU3C4.js.map +0 -1
  694. package/dist/select-4Z7BW5RH.js +0 -94
  695. package/dist/select-4Z7BW5RH.js.map +0 -1
  696. package/dist/sends-WGJVQUMF.js +0 -309
  697. package/dist/sends-WGJVQUMF.js.map +0 -1
  698. package/dist/set-prompt-OB2V3XJP.js +0 -186
  699. package/dist/set-prompt-OB2V3XJP.js.map +0 -1
  700. package/dist/setup-links-REPREN3C.js +0 -141
  701. package/dist/setup-links-REPREN3C.js.map +0 -1
  702. package/dist/site-WFSWIA3S.js +0 -177
  703. package/dist/site-WFSWIA3S.js.map +0 -1
  704. package/dist/sources-AMI2AWKZ.js +0 -421
  705. package/dist/sources-AMI2AWKZ.js.map +0 -1
  706. package/dist/sources-YBQ6KPFM.js +0 -30
  707. package/dist/stale-DAYXOY3Z.js +0 -63
  708. package/dist/stale-DAYXOY3Z.js.map +0 -1
  709. package/dist/status-7F2KHFGA.js +0 -62
  710. package/dist/status-7F2KHFGA.js.map +0 -1
  711. package/dist/stock-2YCDN3N6.js +0 -179
  712. package/dist/studio-C5K3YX3P.js +0 -49
  713. package/dist/sync-GWTLKZTU.js +0 -54
  714. package/dist/sync-GWTLKZTU.js.map +0 -1
  715. package/dist/sync-definition-ILS2B2BJ.js +0 -53
  716. package/dist/tags-3WPW6PTV.js +0 -26
  717. package/dist/tags-6342FQEB.js +0 -20
  718. package/dist/tags-6342FQEB.js.map +0 -1
  719. package/dist/tags-ABHSX6M5.js +0 -20
  720. package/dist/tags-ABHSX6M5.js.map +0 -1
  721. package/dist/tags-FJIBBBRG.js +0 -20
  722. package/dist/tags-FJIBBBRG.js.map +0 -1
  723. package/dist/tags-KFYLZLB3.js +0 -224
  724. package/dist/tags-KFYLZLB3.js.map +0 -1
  725. package/dist/targeting-criteria-NR47AF5C.js +0 -113
  726. package/dist/targets-L56KOVQE.js +0 -102
  727. package/dist/targets-L56KOVQE.js.map +0 -1
  728. package/dist/templates-B6XGDYUF.js +0 -178
  729. package/dist/templates-B6XGDYUF.js.map +0 -1
  730. package/dist/testimonials-CVC4YIXO.js +0 -32
  731. package/dist/top-companies-45X3DT7Z.js +0 -108
  732. package/dist/top-companies-45X3DT7Z.js.map +0 -1
  733. package/dist/translate-TA5KQIU7.js +0 -598
  734. package/dist/translate-TA5KQIU7.js.map +0 -1
  735. package/dist/triggers-22EMIVFD.js +0 -141
  736. package/dist/triggers-22EMIVFD.js.map +0 -1
  737. package/dist/unlink-65KUN6ID.js +0 -67
  738. package/dist/unlink-65KUN6ID.js.map +0 -1
  739. package/dist/unstage-2E3I5SWF.js +0 -84
  740. package/dist/unstage-2E3I5SWF.js.map +0 -1
  741. package/dist/unstage-4ZEULXEQ.js +0 -95
  742. package/dist/unstage-4ZEULXEQ.js.map +0 -1
  743. package/dist/update-2S7CSEAW.js +0 -63
  744. package/dist/update-2S7CSEAW.js.map +0 -1
  745. package/dist/update-7NCOTAQZ.js +0 -98
  746. package/dist/update-7NCOTAQZ.js.map +0 -1
  747. package/dist/update-D6DJC6T7.js +0 -155
  748. package/dist/update-D6DJC6T7.js.map +0 -1
  749. package/dist/update-KREBPGBH.js +0 -142
  750. package/dist/update-KREBPGBH.js.map +0 -1
  751. package/dist/upload-O6NHRPS7.js +0 -126
  752. package/dist/upload-O6NHRPS7.js.map +0 -1
  753. package/dist/url-options-GGXAL3J4.js +0 -127
  754. package/dist/url-options-GGXAL3J4.js.map +0 -1
  755. package/dist/url-params-3EFGVTZZ.js +0 -98
  756. package/dist/url-params-3EFGVTZZ.js.map +0 -1
  757. package/dist/validate-LDBAAXQO.js +0 -89
  758. package/dist/validate-LDBAAXQO.js.map +0 -1
  759. package/dist/videos-YSXYGTBM.js +0 -39
  760. package/dist/viewer-check-45T2HLAH.js +0 -69
  761. package/dist/web-IGIGVEKS.js +0 -140
  762. package/dist/web-IGIGVEKS.js.map +0 -1
  763. package/dist/winning-ads-ASH5DSV3.js +0 -62
  764. package/dist/write-commands-5C7FUOVN.js +0 -1015
  765. package/dist/write-commands-5C7FUOVN.js.map +0 -1
  766. package/dist/x-BFSKFCZD.js +0 -47
  767. /package/dist/{account-F6MHQ64I.js.map → account-4H7QVBRK.js.map} +0 -0
  768. /package/dist/{account-writes-ISE4U2FQ.js.map → account-writes-AK42HGRM.js.map} +0 -0
  769. /package/dist/{actions-P35MEMGN.js.map → actions-6TQMSVWD.js.map} +0 -0
  770. /package/dist/{ad-group-writes-UU5NNKSO.js.map → ad-group-writes-QQS4223F.js.map} +0 -0
  771. /package/dist/{ad-groups-CGFXZNIA.js.map → ad-groups-WGPDPUI2.js.map} +0 -0
  772. /package/dist/{ad-writes-NALDYWOR.js.map → ad-writes-XE2IE4DS.js.map} +0 -0
  773. /package/dist/{ads-C47NA2HH.js.map → ads-AGYCVD62.js.map} +0 -0
  774. /package/dist/{ads-PV7GZXPR.js.map → ads-BCOSQALY.js.map} +0 -0
  775. /package/dist/{animate-FWWHSYPL.js.map → animate-AIZ3GS4J.js.map} +0 -0
  776. /package/dist/{audiences-VEKGLWBG.js.map → audiences-TGD5US2M.js.map} +0 -0
  777. /package/dist/{avatars-EKCKHCC3.js.map → avatars-467OSBD6.js.map} +0 -0
  778. /package/dist/{brand-C6PFGGQN.js.map → brand-YRTEPGBK.js.map} +0 -0
  779. /package/dist/{campaign-writes-SX52CJYW.js.map → campaign-writes-SXLZFYF6.js.map} +0 -0
  780. /package/dist/{campaigns-KZYZTXDS.js.map → campaigns-OYMXDGWX.js.map} +0 -0
  781. /package/dist/{campaigns-X3DPCCSN.js.map → campaigns-YS3OGQXO.js.map} +0 -0
  782. /package/dist/{canvas-DPCBGW7K.js.map → canvas-YQFG52IG.js.map} +0 -0
  783. /package/dist/{catalog-ME44ZRZF.js.map → catalog-XLXIM7IW.js.map} +0 -0
  784. /package/dist/{catalogs-G3YEVG6S.js.map → catalogs-BRXEDE56.js.map} +0 -0
  785. /package/dist/{chatgpt-QNUN63YS.js.map → chatgpt-7W75X3ER.js.map} +0 -0
  786. /package/dist/{chunk-7YCRFMXF.js.map → chunk-24EB7EDR.js.map} +0 -0
  787. /package/dist/{chunk-5ZDLTE5T.js.map → chunk-2AOE2MZQ.js.map} +0 -0
  788. /package/dist/{chunk-IBURXTL4.js.map → chunk-2VPBIT65.js.map} +0 -0
  789. /package/dist/{chunk-NPY4QUMQ.js.map → chunk-54C6YDGJ.js.map} +0 -0
  790. /package/dist/{chunk-LZ73CZGP.js.map → chunk-5WCSKQ7Z.js.map} +0 -0
  791. /package/dist/{chunk-3G3ZDLMI.js.map → chunk-5ZNTADVR.js.map} +0 -0
  792. /package/dist/{chunk-AEOSAVVL.js.map → chunk-6F7DVPOS.js.map} +0 -0
  793. /package/dist/{chunk-FD27ZDVP.js.map → chunk-6NY2GPR4.js.map} +0 -0
  794. /package/dist/{chunk-TT5R35PJ.js.map → chunk-6Y7ZBENQ.js.map} +0 -0
  795. /package/dist/{chunk-5Y5UAJWD.js.map → chunk-7CTMH5AK.js.map} +0 -0
  796. /package/dist/{chunk-35XWJEWH.js.map → chunk-7J6EHOH6.js.map} +0 -0
  797. /package/dist/{chunk-Z2EOC6PL.js.map → chunk-ASI4P6X2.js.map} +0 -0
  798. /package/dist/{chunk-2QHODRR6.js.map → chunk-C46GUI2S.js.map} +0 -0
  799. /package/dist/{chunk-K7FZXIOZ.js.map → chunk-CWYAELVG.js.map} +0 -0
  800. /package/dist/{chunk-MXYBTMKB.js.map → chunk-DCRPXOJJ.js.map} +0 -0
  801. /package/dist/{chunk-54UVGFX3.js.map → chunk-EAP4O4FE.js.map} +0 -0
  802. /package/dist/{chunk-K66OLA6Y.js.map → chunk-FPOGPFAG.js.map} +0 -0
  803. /package/dist/{chunk-JQJDXPCO.js.map → chunk-FUHN4MFY.js.map} +0 -0
  804. /package/dist/{chunk-S77PZVYM.js.map → chunk-FYGR3I2A.js.map} +0 -0
  805. /package/dist/{chunk-OZRUJVIQ.js.map → chunk-H3427GPU.js.map} +0 -0
  806. /package/dist/{chunk-KQTYTCKQ.js.map → chunk-HZUDRKGR.js.map} +0 -0
  807. /package/dist/{chunk-IR6D7K4H.js.map → chunk-I3ZR655O.js.map} +0 -0
  808. /package/dist/{chunk-J5IY3GVE.js.map → chunk-KMKEYI37.js.map} +0 -0
  809. /package/dist/{chunk-W3ZHJJVT.js.map → chunk-KS2QY6MK.js.map} +0 -0
  810. /package/dist/{chunk-GLCPTMPG.js.map → chunk-LYQJ4PZW.js.map} +0 -0
  811. /package/dist/{chunk-GBMP4F45.js.map → chunk-MACCF4JZ.js.map} +0 -0
  812. /package/dist/{chunk-CSYSX4D2.js.map → chunk-N4LAYIIN.js.map} +0 -0
  813. /package/dist/{chunk-4AUMTNVB.js.map → chunk-NA63BH7V.js.map} +0 -0
  814. /package/dist/{chunk-KFE3S63W.js.map → chunk-NCWCZY5P.js.map} +0 -0
  815. /package/dist/{chunk-4BQXAE7Z.js.map → chunk-NDEE6G2J.js.map} +0 -0
  816. /package/dist/{chunk-7ZHMGXE2.js.map → chunk-NJXNU2G6.js.map} +0 -0
  817. /package/dist/{chunk-HQSCJYZO.js.map → chunk-P5T7OZKV.js.map} +0 -0
  818. /package/dist/{chunk-VB6WJJR3.js.map → chunk-PZXCWSKV.js.map} +0 -0
  819. /package/dist/{chunk-MELOSESI.js.map → chunk-R25YLW6H.js.map} +0 -0
  820. /package/dist/{chunk-Y6O7EWYY.js.map → chunk-RL5CP7N6.js.map} +0 -0
  821. /package/dist/{chunk-HBTF25YG.js.map → chunk-RX2DKU3W.js.map} +0 -0
  822. /package/dist/{chunk-647RO73Q.js.map → chunk-ULG4QRTV.js.map} +0 -0
  823. /package/dist/{chunk-QRP3PXWN.js.map → chunk-VL43TNIP.js.map} +0 -0
  824. /package/dist/{chunk-SHL7LOC3.js.map → chunk-VLMBTPXU.js.map} +0 -0
  825. /package/dist/{chunk-LYBXCXJB.js.map → chunk-VNUNE5AB.js.map} +0 -0
  826. /package/dist/{chunk-KHRXPQID.js.map → chunk-VYQ3QJ3C.js.map} +0 -0
  827. /package/dist/{chunk-A4LOJ2VD.js.map → chunk-WGUQHAJY.js.map} +0 -0
  828. /package/dist/{chunk-ZEYEWPK6.js.map → chunk-WKQG6TER.js.map} +0 -0
  829. /package/dist/{chunk-ULJ5RFOV.js.map → chunk-XFGAUP5B.js.map} +0 -0
  830. /package/dist/{chunk-3IBYKLXR.js.map → chunk-ZDMTXQ2Q.js.map} +0 -0
  831. /package/dist/{connect-QCOGEPP4.js.map → connect-FCXNVTXG.js.map} +0 -0
  832. /package/dist/{conversion-report-N4HANYOB.js.map → conversion-report-XQBJ6LG4.js.map} +0 -0
  833. /package/dist/{conversion-writes-LW4HQKK5.js.map → conversion-writes-UBCVXP2E.js.map} +0 -0
  834. /package/dist/{conversions-TS723AZV.js.map → conversions-D236RTUK.js.map} +0 -0
  835. /package/dist/{creatives-SJTJU6VT.js.map → creatives-FXUQ5WSD.js.map} +0 -0
  836. /package/dist/{customers-4AWBFDUF.js.map → customers-XH2DMTFH.js.map} +0 -0
  837. /package/dist/{draft-THPZFASM.js.map → draft-MNFJ4G3C.js.map} +0 -0
  838. /package/dist/{feedback-XNJQ63DS.js.map → feedback-EIZKS4JU.js.map} +0 -0
  839. /package/dist/{find-OTDIX6V4.js.map → find-FRRHAPWX.js.map} +0 -0
  840. /package/dist/{fit-7237F5EB.js.map → fit-UOFYFJ4Q.js.map} +0 -0
  841. /package/dist/{fonts-EMMX3KII.js.map → fonts-MXR3ZKDX.js.map} +0 -0
  842. /package/dist/{ga4-UDQ2HA2J.js.map → ga4-DV2AXCSL.js.map} +0 -0
  843. /package/dist/{generate-MMBYB44G.js.map → generate-3XYYITU6.js.map} +0 -0
  844. /package/dist/{google-M7KEXVK5.js.map → google-6OGZX47I.js.map} +0 -0
  845. /package/dist/{google-KTO3PLEU.js.map → google-QYYYSSXI.js.map} +0 -0
  846. /package/dist/{gsc-P3QYGDV2.js.map → gsc-TAKOF7J5.js.map} +0 -0
  847. /package/dist/{history-DBIEYQHY.js.map → history-Q3QCT64S.js.map} +0 -0
  848. /package/dist/{icon-I43F77FV.js.map → icon-L4RSS6PZ.js.map} +0 -0
  849. /package/dist/{ideas-MIDU7YOA.js.map → ideas-NFOW3HKJ.js.map} +0 -0
  850. /package/dist/{images-S254MS6O.js.map → images-2EFFUNNV.js.map} +0 -0
  851. /package/dist/{ingest-YV2NLDBE.js.map → ingest-2EIKN4QC.js.map} +0 -0
  852. /package/dist/{insights-ZIU6FJMS.js.map → insights-LNAXV2CG.js.map} +0 -0
  853. /package/dist/{inspiration-P265QJ2H.js.map → inspiration-S3DU4CMQ.js.map} +0 -0
  854. /package/dist/{landing-CJYGWCK4.js.map → landing-2ZB46LXH.js.map} +0 -0
  855. /package/dist/{line-items-7ZGIKEF2.js.map → line-items-5NECXUZT.js.map} +0 -0
  856. /package/dist/{locations-74TPQWAT.js.map → locations-2NKBJKBT.js.map} +0 -0
  857. /package/dist/{logo-2IP663QO.js.map → logo-Q5D7PZY6.js.map} +0 -0
  858. /package/dist/{lookup-XK45W2SH.js.map → lookup-ETWY47F7.js.map} +0 -0
  859. /package/dist/{media-sources-O6ZRUA3N.js.map → media-sources-ZXHEEP6T.js.map} +0 -0
  860. /package/dist/{models-7U3GRYHF.js.map → models-3Z6MDHQW.js.map} +0 -0
  861. /package/dist/{performance-6QW2KEEQ.js.map → performance-UF5VTY2U.js.map} +0 -0
  862. /package/dist/{pixels-45A55MOP.js.map → pixels-TZPF746S.js.map} +0 -0
  863. /package/dist/{promoted-tweets-SURKMHFI.js.map → promoted-tweets-LZKS5JIF.js.map} +0 -0
  864. /package/dist/{reddit-GIP3ADMS.js.map → reddit-NU2N3LZD.js.map} +0 -0
  865. /package/dist/{research-EY7C7JJY.js.map → research-FMM6AWZC.js.map} +0 -0
  866. /package/dist/{run-XQ7EM3JT.js.map → run-EUO34T2J.js.map} +0 -0
  867. /package/dist/{scheduled-agents-6U44QE76.js.map → scheduled-agents-N4LJRM4C.js.map} +0 -0
  868. /package/dist/{sources-YBQ6KPFM.js.map → sources-FQ2UZTHL.js.map} +0 -0
  869. /package/dist/{stock-2YCDN3N6.js.map → stock-KXJ26BY4.js.map} +0 -0
  870. /package/dist/{studio-C5K3YX3P.js.map → studio-SYKOSNDB.js.map} +0 -0
  871. /package/dist/{sync-definition-ILS2B2BJ.js.map → sync-definition-QR2N233R.js.map} +0 -0
  872. /package/dist/{tags-3WPW6PTV.js.map → tags-PYWFSBTR.js.map} +0 -0
  873. /package/dist/{targeting-criteria-NR47AF5C.js.map → targeting-criteria-RJFLFICN.js.map} +0 -0
  874. /package/dist/{testimonials-CVC4YIXO.js.map → testimonials-DII5DYLR.js.map} +0 -0
  875. /package/dist/{videos-YSXYGTBM.js.map → videos-LICG6ACJ.js.map} +0 -0
  876. /package/dist/{viewer-check-45T2HLAH.js.map → viewer-check-L4B4LIAX.js.map} +0 -0
  877. /package/dist/{winning-ads-ASH5DSV3.js.map → winning-ads-C6S2C5VP.js.map} +0 -0
  878. /package/dist/{x-BFSKFCZD.js.map → x-CZHRC6U7.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/analytics/sends.ts"],"sourcesContent":["/**\n * `baker analytics sends` — where this company's system events are sent, and\n * changing it.\n *\n * A send hangs off an event one of the client's own systems raises, by its\n * key: `page:deal_won` from HubSpot → Meta Purchase. Every such event is\n * uploaded to the platform with who the person is, the click that brought\n * them and the amount forwarded automatically. Nothing is mapped. What happens\n * on a page or in a Form is not sendable here: the page's own pixels and the\n * Form's own side effects already send those.\n *\n * A write STAGES: it lands when the chat is published, and from then on it\n * spends ad budget on every event under the key. The dashboard's Sources page\n * applies at once because the person clicking is the review; an agent's\n * proposal gets its review at Publish.\n */\n\nimport {\n isSendPlatform,\n SEND_PLATFORMS,\n type SendsRequest,\n type SendsResponse,\n sendEventProblem,\n sendsRequestSchema,\n} from \"@baker/api/analytics\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { writeJsonEnvelope } from \"../ads/output.ts\";\nimport { ConversionArgsError, onlyOnce } from \"./conversionArgs.ts\";\n\nexport interface SendsArgs {\n set?: {\n id: string;\n eventKey: string;\n platform: string;\n tagId: string;\n event: string;\n account?: string;\n parameters?: Record<string, string>;\n };\n remove?: string;\n days?: number;\n /** One send's uploads, by id, and whether only the refused ones. */\n uploads?: string;\n failedOnly?: boolean;\n /** With `uploads`: only the events it skipped, for want of anything to match. */\n skippedOnly?: boolean;\n full: boolean;\n}\n\nconst SET_FLAGS = [\"--source-event\", \"--platform\", \"--tag\", \"--event\"] as const;\n\n/**\n * The flags, checked for the shapes that would otherwise stage the wrong\n * send in silence. Pure, so the refusals are tier-1 tested.\n */\nexport function parseSendsArgs(raw: Record<string, unknown>, argv: readonly string[], now = Date.now()): SendsArgs {\n const set = parseSetFlags(raw, argv, now);\n const remove = onlyOnce(raw.remove, \"--remove\", argv);\n\n const days = raw.days === undefined ? undefined : Number(raw.days);\n if (days !== undefined && (!Number.isInteger(days) || days <= 0 || days > 400)) {\n throw new ConversionArgsError(\"--days must be a whole number of days, from 1 to 400.\");\n }\n\n const uploads = onlyOnce(raw.uploads, \"--uploads\", argv);\n if (raw.failed === true && uploads === undefined) {\n throw new ConversionArgsError(\"--failed narrows --uploads <sendId> to the refused ones; name the send.\");\n }\n if (raw.skipped === true && uploads === undefined) {\n throw new ConversionArgsError(\n \"--skipped narrows --uploads <sendId> to the events it never uploaded; name the send.\",\n );\n }\n\n return {\n ...(set === undefined ? {} : { set }),\n ...(remove === undefined ? {} : { remove }),\n ...(days === undefined ? {} : { days }),\n ...(uploads === undefined ? {} : { uploads }),\n ...(raw.failed === true ? { failedOnly: true } : {}),\n ...(raw.skipped === true ? { skippedOnly: true } : {}),\n full: raw.full === true,\n };\n}\n\n/** The value a repeated flag carries at this position, in either spelling, or nothing. */\nfunction flagValueAt(argv: readonly string[], flag: string, index: number): string | undefined {\n const arg = argv[index] ?? \"\";\n if (arg === flag) return argv[index + 1];\n return arg.startsWith(`${flag}=`) ? arg.slice(flag.length + 1) : undefined;\n}\n\n/**\n * Every `--parameter name=template` on the command line, in order. Read off\n * argv rather than the parsed args because citty keeps only the last value\n * of a repeated flag — the defect that once staged one of three UTMs.\n */\nexport function parseParameterArgs(argv: readonly string[]): Record<string, string> | undefined {\n const parameters: Record<string, string> = {};\n for (let index = 0; index < argv.length; index += 1) {\n const pair = flagValueAt(argv, \"--parameter\", index);\n if (pair === undefined) continue;\n const eq = pair.indexOf(\"=\");\n const name = (eq === -1 ? pair : pair.slice(0, eq)).trim();\n const template = eq === -1 ? \"\" : pair.slice(eq + 1).trim();\n if (name === \"\" || template === \"\") {\n throw new ConversionArgsError(\n `--parameter needs <name>=<template>, like --parameter content_name={{properties.plan}}; got \"${pair}\".`,\n );\n }\n parameters[name] = template;\n }\n return Object.keys(parameters).length === 0 ? undefined : parameters;\n}\n\n/**\n * The send `--set` describes, or nothing on a read.\n *\n * The four flags are only meaningful together and only under `--set`: a send\n * described without it would answer ok and stage nothing, and a `--set` with\n * a piece missing would be refused by the server with the field named but not\n * the flag.\n */\nfunction parseSetFlags(raw: Record<string, unknown>, argv: readonly string[], now: number): SendsArgs[\"set\"] {\n if (raw.conversion !== undefined) {\n throw new ConversionArgsError(\n \"--conversion is gone: a send is on a system's EVENT, not a conversion. Pass --source-event <key> — one of events[].eventKey from a plain `baker analytics sends` (page:<name>).\",\n );\n }\n const values = {\n \"--source-event\": onlyOnce(raw[\"source-event\"] ?? raw.sourceEvent, \"--source-event\", argv),\n \"--platform\": onlyOnce(raw.platform, \"--platform\", argv),\n \"--tag\": onlyOnce(raw.tag, \"--tag\", argv),\n \"--event\": onlyOnce(raw.event, \"--event\", argv),\n };\n const given = SET_FLAGS.filter((flag) => values[flag] !== undefined);\n const set = raw.set === true;\n\n if (!set) {\n if (given.length > 0) {\n throw new ConversionArgsError(\n `${given.join(\", \")} describe a send, so add --set to stage it. Without --set the command only reads.`,\n );\n }\n return undefined;\n }\n\n const missing = SET_FLAGS.filter((flag) => values[flag] === undefined);\n if (missing.length > 0) {\n throw new ConversionArgsError(\n `--set needs ${SET_FLAGS.join(\", \")}; missing ${missing.join(\", \")}. Copy --tag from platforms[].tags of a plain \\`baker analytics sends\\`, never from memory.`,\n );\n }\n const platform = values[\"--platform\"] ?? \"\";\n if (!isSendPlatform(platform)) {\n throw new ConversionArgsError(\n `\"${platform}\" is not somewhere a conversion can be sent — --platform is one of ${SEND_PLATFORMS.join(\", \")}.`,\n );\n }\n\n const event = values[\"--event\"] ?? \"\";\n const templated = sendEventProblem(platform, event);\n if (templated !== null) {\n throw new ConversionArgsError(`--event ${event} cannot be sent to ${platform}. ${templated}`);\n }\n\n const account = onlyOnce(raw.account, \"--account\", argv);\n const parameters = parseParameterArgs(argv);\n return {\n id: onlyOnce(raw.id, \"--id\", argv) ?? sendIdFor(now),\n eventKey: values[\"--source-event\"] ?? \"\",\n ...originFlag(raw, argv),\n platform,\n tagId: values[\"--tag\"] ?? \"\",\n event,\n ...(account === undefined ? {} : { account }),\n ...(parameters === undefined ? {} : { parameters }),\n };\n}\n\n/**\n * Which door's events `--set` uploads, as the send spells it: every door the\n * event arrives by (`origin: \"any\"`, the default — one event, one set of\n * destinations, uploaded once when the pixel and the API both report it under\n * one event id), or only the pixel's (`website`) or only the API's and the\n * integrations' (no field at all).\n */\nfunction originFlag(raw: Record<string, unknown>, argv: readonly string[]): { origin?: \"website\" | \"any\" } {\n const from = onlyOnce(raw.from, \"--from\", argv) ?? \"any\";\n if (from === \"any\") return { origin: \"any\" };\n if (from === \"api\") return {};\n if (from === \"pixel\") return { origin: \"website\" };\n throw new ConversionArgsError(\n `--from is any, pixel or api; got \"${from}\". any — the default — uploads the event whichever door it arrives by, once when the pixel and the API both report it with the same event id; pixel only what Baker's pixel sent from the client's website; api only what the API or an integration sent.`,\n );\n}\n\n/** A short id a person can type, when the caller did not choose one. */\nfunction sendIdFor(now: number): string {\n return `s${now.toString(36).slice(-5)}`;\n}\n\n/**\n * The request body, validated against the shared schema here rather than only\n * on the server, so a malformed send is named before a round trip.\n */\nexport function sendsWrite(args: SendsArgs): SendsRequest {\n const body = {\n ...(args.set === undefined ? {} : { set: [args.set] }),\n ...(args.remove === undefined ? {} : { remove: [args.remove] }),\n ...(args.days === undefined ? {} : { days: args.days }),\n ...(args.uploads === undefined ? {} : { uploads: args.uploads }),\n ...(args.failedOnly === undefined ? {} : { failedOnly: args.failedOnly }),\n ...(args.skippedOnly === undefined ? {} : { skippedOnly: args.skippedOnly }),\n };\n const parsed = sendsRequestSchema.safeParse(body);\n if (!parsed.success) {\n const issue = parsed.error.issues[0];\n throw new ConversionArgsError(\n `That send cannot be staged — ${issue?.path.join(\".\") || \"set\"}: ${issue?.message ?? \"invalid\"}. Run \\`baker schema analytics.sends\\` for the exact shape.`,\n );\n }\n return parsed.data;\n}\n\n/**\n * What to print. Compact by default: the sends with their outcomes, the\n * platforms with the tags that can send (where a `tagId` is copied from), and\n * the system events that can be sent. `carries` — every field a send forwards\n * — is the same list every time, so it is behind `--full`.\n */\nexport function sendsView(response: SendsResponse, full: boolean): Record<string, unknown> {\n const { carries, templateFields, ...rest } = response.data;\n return {\n ok: true,\n data: { ...rest, ...(full ? { carries, templateFields } : {}) },\n ...(response.hints && response.hints.length > 0 ? { hints: response.hints } : {}),\n };\n}\n\nconst args = {\n set: {\n type: \"boolean\",\n description:\n \"Stage a send, described by --source-event, --platform, --tag and --event. It applies when this chat is published, and from then on every event arriving under that key is uploaded to the platform and spends ad budget — say so to the client, never that it is a preview\",\n required: false,\n },\n \"source-event\": {\n type: \"string\",\n description:\n \"The event to send, by key — one of `events[].eventKey` from a plain `baker analytics sends`: a Source's own event (page:<source name>), or a named event the client's server posts. A Form's or a page's event is refused: the page's own pixels and the Form's side effects already send those\",\n required: false,\n },\n from: {\n type: \"string\",\n description:\n \"Which door's events the send uploads: `any` (default) — the event whichever door it arrives by, uploaded once when the pixel and the API both report it with the same event id; `pixel` — only what Baker's pixel sent from the client's own website (an `events[]` row with origin `website`); `api` — only what the client's server posted or an integration like HubSpot sent\",\n required: false,\n },\n platform: {\n type: \"string\",\n description: `Where it goes: one of ${SEND_PLATFORMS.join(\", \")}`,\n required: false,\n },\n tag: {\n type: \"string\",\n description:\n \"The tag on Tracking that sends it. COPY the id from `platforms[].tags[].tagId` in the response — it is only listed there when the tag holds its server credential, and one typed from memory is refused\",\n required: false,\n },\n event: {\n type: \"string\",\n description:\n 'What the platform calls it — `platforms[].eventMeans` says what each one takes: a Meta or Google Analytics event name (Purchase, Lead, generate_lead), a Google Ads conversion action id copied from `platforms[].conversionActions`, or the conversion label the person gives you (staged as its id; never type an id: one the account does not hold is refused), a LinkedIn conversion rule id, an X event tag id. On Meta and Google Analytics it may be WRITTEN FROM THE EVENT with the same {{path}} mentions --parameter takes: --event {{properties.plan}} sends each event under the plan it carries, --event \"Purchase {{properties.tier}}\" mixes text and a field. An event carrying nothing there is not uploaded. Google Ads, LinkedIn and X take an id THEY issued, so a template is refused there — pass what varies as a --parameter instead. For a GOOGLE ADS id, list the account\\'s conversion actions first and pick by name — `baker ads google query \"SELECT conversion_action.id, conversion_action.name, conversion_action.primary_for_goal FROM conversion_action WHERE conversion_action.status = \\'ENABLED\\'\"` — never guess: Google accepts an upload against an id the account does not hold and files it against nothing',\n required: false,\n },\n account: {\n type: \"string\",\n description: \"LinkedIn only: the ad account the conversion rule belongs to\",\n required: false,\n },\n parameter: {\n type: \"string\",\n description:\n \"<name>=<template>, repeatable, with --set: an EXTRA parameter the platform receives with every upload, beyond who, the click and the amount — Meta's custom_data (content_name, content_category, or your own), a GA4 event parameter, a Google Ads custom variable (must exist in the account), X's contents (content_name, num_items…); LinkedIn takes none. The template is text with {{path}} mentions over the event: its own properties as {{properties.<key>}} (a HubSpot event's --field properties.<key> rows, a server event's `properties`), and the fields `templateFields` lists (--full): value, value_currency, event_name, page_path, city, country, gclid… Example: --parameter content_name={{properties.plan}} --parameter content_category=hubspot. `parameters[]` in the response says what each platform takes\",\n required: false,\n },\n uploads: {\n type: \"string\",\n description:\n \"The id of a send (`sends[].id`) whose uploads to list, newest first over --days: which event went, when, `outcome` (success | failed | pending | skipped) and in `error` the platform's refusal in its own words or what a skipped event was missing — the rows behind `sends[].outcome`. With --failed, only the refused ones; with --skipped, only the skipped ones\",\n required: false,\n },\n failed: {\n type: \"boolean\",\n description: \"With --uploads: only the uploads the platform refused\",\n required: false,\n },\n skipped: {\n type: \"boolean\",\n description:\n \"With --uploads: only the events the send never uploaded because they carried nothing the platform matches a person by — each `error` names what was missing (a Meta click id or cookie, an email, a gclid…)\",\n required: false,\n },\n id: {\n type: \"string\",\n description:\n \"The send's id, when changing one that exists (`sends[].id` for a live one, `staged.set[].id` for one staged in this chat, like s1). Left out, a new id is minted and a NEW send is staged — so re-running a --set you already ran is refused, naming the send it would duplicate\",\n required: false,\n },\n remove: {\n type: \"string\",\n description: \"The id of a send to stop, from `sends[].id`. Staged like a set: it stops when the chat is published\",\n required: false,\n },\n days: {\n type: \"string\",\n description: \"How many days the outcome beside each send covers (default 30, up to 400)\",\n required: false,\n },\n full: {\n type: \"boolean\",\n description: \"Also return `carries`: every field a send forwards, the same for every send\",\n required: false,\n },\n} as const;\n\nregisterSchema({\n command: \"analytics.sends\",\n description: \"Read where this company's system events are sent, or stage a change\",\n args,\n});\n\nexport const sendsCommand = defineCommand({\n meta: {\n name: \"sends\",\n description: `Where this company's SYSTEM EVENTS are sent — Meta, Google Ads, LinkedIn, X, Google Analytics — and what happened to each upload. A send belongs to an event one of the client's own systems raises, by key: page:deal_won from HubSpot → Meta Purchase means every \"deal_won\" HubSpot reports is uploaded to Meta with who the person is, the click that brought them and the amount forwarded automatically. There is nothing to map. What happens on a page or in a Form is never sent from here — the page's pixels and the Form's own side effects do that — and a send is never set on a funnel step: the step reads the sends of the events behind its ways in.\n\nStart here:\n baker analytics sends — the sends in effect, each with its outcome; the platforms and the tags that can send; the system events (events[]) that can be sent\n baker analytics sends --set --source-event page:deal_won --platform meta --tag <tagId> --event Purchase\n baker analytics sends --set --source-event page:deal_won --platform googleAds --tag <tagId> --event 987654321\n baker analytics sends --set --source-event page:deal_won --platform meta --tag <tagId> --event Purchase --parameter content_name={{properties.plan}}\n baker analytics sends --set --source-event page:lead_completed_step_2 --platform meta --tag <tagId> --event Lead — an event the pixel and/or the API send; uploaded once per event id\n baker analytics sends --set --source-event page:deal_won --platform meta --tag <tagId> --event {{properties.plan}} — a Meta event named after what each one carries\n baker analytics sends --remove s1 — stop one\n baker analytics sends --days 7 — outcomes over the last week\n baker analytics sends --uploads s1 --failed — the uploads Meta refused, each with the event and Meta's own words\n baker analytics sends --uploads s1 --skipped — the events never uploaded, each with what the platform needed and they lacked\n\nThree things to hold on to:\n it is STAGED — a set or a remove lands when this chat is published, and from then on it SPENDS AD BUDGET on every \"<event>\" that arrives. Tell the client that plainly; never call a published send a preview.\n the tagId is COPIED — from \\`platforms[].tags\\` in the response, which lists only the tags on Tracking that hold their server credential. One typed from memory is refused; a platform with no tag listed says what to add on Tracking (\\`platforms[].setupHint\\`).\n the outcome is what happened — \\`sends[].outcome\\` counts what was sent, what failed and why (\\`lastError\\`, in the platform's words), and what was SKIPPED: an event carrying nothing the platform matches a person by is never uploaded (Meta: a Meta click id or cookie, an email or your own customer id; Google Ads: gclid, wbraid, gbraid, an email or a phone; LinkedIn: li_fat_id or an email; X: twclid or an email; Google Analytics: nothing), counted in \\`skipped\\` with \\`lastSkipReason\\`.\n check the MATCH before staging — \\`events[].match\\` says, for the last 30 days of each event, how many arrived and how many each platform could match. A send to a platform matching 0 of 14 skips all 14: say so to the client, and ask for the click id or the email to be sent with the event instead. \"Nothing sent yet\" means no event under that name has fired since the send was set. \\`--uploads <id>\\` lists the rows behind the count, \\`--failed\\` only the refused ones — read it before telling a client a send \"failed\".\n a Meta or GA4 event name can be WRITTEN FROM THE EVENT — \\`--event {{properties.plan}}\\` sends each event under its own plan, so one Source covers every value instead of one Source, one send and one conversion action per value. Only where the platform takes a name of your own: Google Ads, LinkedIn and X take an id they issued and refuse a template.\n extra parameters are optional — \\`--parameter <name>=<template>\\` adds what the platform receives beyond who, the click and the amount: \\`{{properties.<key>}}\\` reads a property the event carries (a HubSpot event's \\`--field properties.<key>\\` rows), \\`{{value}}\\`, \\`{{page_path}}\\`, \\`{{city}}\\`… read the event's fields. \\`parameters[]\\` in the response says what each platform takes and the names it knows; LinkedIn takes none.\n\nAn empty \\`events[]\\` means none of the client's systems sends an event yet and there is nothing to send: make a Source with \\`baker analytics sources\\` (a HubSpot event, or the server's address), then send its event.`,\n },\n args,\n run: async ({ args: raw }) => {\n try {\n const parsed = parseSendsArgs(raw as Record<string, unknown>, process.argv);\n const response = await apiPost<SendsResponse>(\"/api/analytics/sends\", sendsWrite(parsed));\n writeJsonEnvelope(sendsView(response, parsed.full));\n } catch (err) {\n handleError(err);\n }\n },\n});\n\nfunction handleError(err: unknown): never {\n if (err instanceof ConversionArgsError) {\n writeJsonEnvelope({ ok: false, error: { code: \"VALIDATION_ERROR\", message: err.message } });\n process.exit(1);\n }\n if (err instanceof ApiError) {\n writeJsonEnvelope({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJsonEnvelope({\n ok: false,\n error: { code: \"NETWORK_ERROR\", message: err instanceof Error ? err.message : \"Unexpected error\" },\n });\n process.exit(1);\n}\n"],"mappings":"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","names":["args"]}
@@ -0,0 +1,187 @@
1
+ import {
2
+ CanvasPrepareError,
3
+ adaptNodes,
4
+ compiledPromptNodeIds,
5
+ prepareCanvas,
6
+ sceneOwnedPrompts
7
+ } from "./chunk-ASI4P6X2.js";
8
+ import "./chunk-4QEY2L6U.js";
9
+ import "./chunk-VL43TNIP.js";
10
+ import "./chunk-ZDMTXQ2Q.js";
11
+ import "./chunk-F2S5BLPE.js";
12
+ import "./chunk-WTOYCUKH.js";
13
+ import "./chunk-DZSIUEGH.js";
14
+ import {
15
+ defaultRegistry,
16
+ validateCanvasDeep
17
+ } from "./chunk-LYQJ4PZW.js";
18
+ import "./chunk-FPOGPFAG.js";
19
+ import "./chunk-NCWCZY5P.js";
20
+ import "./chunk-DGCUPJZD.js";
21
+ import "./chunk-W3B4BHQU.js";
22
+ import {
23
+ COPY_DIRECTIVE_HEADER
24
+ } from "./chunk-PZXCWSKV.js";
25
+ import "./chunk-CAMX6OHF.js";
26
+ import "./chunk-RX6F3GEA.js";
27
+ import "./chunk-5HYSKH77.js";
28
+ import "./chunk-KIGGMKAE.js";
29
+ import "./chunk-VAJBWA2U.js";
30
+ import "./chunk-HRYOZUSK.js";
31
+ import "./chunk-VVZBBKRC.js";
32
+ import "./chunk-YBMVHGY3.js";
33
+ import "./chunk-7EPXVICM.js";
34
+ import "./chunk-GXDLWBOY.js";
35
+ import "./chunk-TEINLN64.js";
36
+ import "./chunk-ZJWUBJYQ.js";
37
+ import "./chunk-HR6IWNKE.js";
38
+ import "./chunk-NE4F3FHN.js";
39
+ import "./chunk-IFWP3ZDO.js";
40
+ import "./chunk-NAWWC5I3.js";
41
+ import "./chunk-NU7JSWVA.js";
42
+ import "./chunk-YQSBHWOI.js";
43
+
44
+ // src/commands/canvas/set-prompt.ts
45
+ import { readFile, writeFile } from "fs/promises";
46
+ import path from "path";
47
+ import { defineCommand } from "citty";
48
+ function setNodePrompt(canvas, nodeId, text) {
49
+ const nodes = canvas?.nodes;
50
+ if (!Array.isArray(nodes)) throw new Error("canvas has no nodes array");
51
+ const idx = nodes.findIndex((n) => n?.id === nodeId);
52
+ if (idx < 0) {
53
+ const ids = nodes.map((n) => n?.id).filter((id) => typeof id === "string");
54
+ throw new Error(`node "${nodeId}" not found. Known nodes: ${ids.join(", ")}`);
55
+ }
56
+ const node = nodes[idx];
57
+ const newNode = { ...node, params: { ...node.params ?? {}, prompt: text } };
58
+ const newNodes = [...nodes];
59
+ newNodes[idx] = newNode;
60
+ return { ...canvas, nodes: newNodes };
61
+ }
62
+ var SetPromptError = class extends Error {
63
+ code;
64
+ fix;
65
+ details;
66
+ constructor(code, message, opts = {}) {
67
+ super(message);
68
+ this.name = "SetPromptError";
69
+ this.code = code;
70
+ this.fix = opts.fix;
71
+ this.details = opts.details;
72
+ }
73
+ };
74
+ async function setPromptInCanvasFile(canvasPath, nodeId, text) {
75
+ const filePath = path.resolve(canvasPath);
76
+ const original = await readFile(filePath, "utf8");
77
+ let canvas;
78
+ try {
79
+ canvas = JSON.parse(original);
80
+ } catch (e) {
81
+ throw new SetPromptError("parse", `${filePath}: JSON parse error: ${e instanceof Error ? e.message : String(e)}`);
82
+ }
83
+ const sceneFile = (await sceneOwnedPrompts(filePath)).get(nodeId);
84
+ if (sceneFile) {
85
+ throw new SetPromptError(
86
+ "projected_prompt",
87
+ `The prompt of "${nodeId}" is rebuilt from ${sceneFile} on every validate and run, so setting it in the canvas would be overwritten.`,
88
+ {
89
+ fix: `Edit the scene's description in ${sceneFile} (its frame and motion fields, e.g. start_frame_prompt, end_frame_prompt, frame_prompt, motion_prompt), then run \`baker canvas validate\` to see the rebuilt prompt.`
90
+ }
91
+ );
92
+ }
93
+ if (compiledPromptNodeIds(canvas).has(nodeId) || adaptNodes(canvas).some((a) => a.node.id === nodeId)) {
94
+ throw new SetPromptError(
95
+ "projected_prompt",
96
+ `The prompt of "${nodeId}" is compiled from prompt.json on every validate and run, so setting it in the canvas would be overwritten.`,
97
+ {
98
+ fix: `Edit the ad in ${path.join(path.dirname(filePath), "prompt.json")} (its scene, copy, references or direction), then run \`baker canvas validate\` to see the compiled prompt on the node.`
99
+ }
100
+ );
101
+ }
102
+ let updated;
103
+ try {
104
+ updated = setNodePrompt(canvas, nodeId, withCopyBlock(canvas, nodeId, text));
105
+ } catch (e) {
106
+ throw new SetPromptError("node_not_found", e instanceof Error ? e.message : String(e));
107
+ }
108
+ await writeFile(filePath, `${JSON.stringify(updated, null, 2)}
109
+ `, "utf8");
110
+ const restore = () => writeFile(filePath, original, "utf8");
111
+ try {
112
+ const prepared = await prepareCanvas(filePath);
113
+ const validation = await validateCanvasDeep(prepared.canvas, defaultRegistry());
114
+ if (!validation.ok) {
115
+ await restore();
116
+ throw new SetPromptError("validation", "The edited canvas does not validate; nothing was changed.", {
117
+ details: { issues: validation.issues }
118
+ });
119
+ }
120
+ } catch (e) {
121
+ if (e instanceof SetPromptError) throw e;
122
+ await restore();
123
+ if (e instanceof CanvasPrepareError) {
124
+ throw new SetPromptError(e.code, e.message, { ...e.fix ? { fix: e.fix } : {}, ...e.details ? { details: e.details } : {} });
125
+ }
126
+ throw e;
127
+ }
128
+ }
129
+ function withCopyBlock(canvas, nodeId, text) {
130
+ const nodes = canvas?.nodes;
131
+ const current = Array.isArray(nodes) ? nodes.find((n) => n?.id === nodeId)?.params?.prompt : void 0;
132
+ if (typeof current !== "string" || !current.includes(COPY_DIRECTIVE_HEADER) || text.includes(COPY_DIRECTIVE_HEADER)) {
133
+ return text;
134
+ }
135
+ return `${text.trimEnd()}
136
+
137
+ ${COPY_DIRECTIVE_HEADER}`;
138
+ }
139
+ var setPromptCommand = defineCommand({
140
+ meta: {
141
+ name: "set-prompt",
142
+ description: "Safely set a node's params.prompt (a frame description, motion prompt, etc.) without hand-editing the JSON. Prefer --text-file for multi-line/accented copy \u2014 it preserves UTF-8 exactly, unlike shell-quoted jq. A prompt rebuilt from a scene file (scenes/sNN.json), or compiled from a static ad's prompt.json, is refused with the file to edit instead."
143
+ },
144
+ args: {
145
+ file: { type: "positional", required: true, description: "Path to canvas JSON" },
146
+ node: { type: "positional", required: true, description: "Node id to edit (e.g. s0_start)" },
147
+ text: { type: "string", description: "New prompt text (inline)" },
148
+ "text-file": { type: "string", description: "Read the new prompt from a UTF-8 file (preserves accents/newlines)" }
149
+ },
150
+ async run({ args }) {
151
+ let text;
152
+ if (args["text-file"]) text = await readFile(path.resolve(String(args["text-file"])), "utf8");
153
+ else if (args.text !== void 0) text = String(args.text);
154
+ else {
155
+ process.stderr.write(
156
+ `${JSON.stringify({ ok: false, error: { code: "no_text", message: "pass --text or --text-file" } }, null, 2)}
157
+ `
158
+ );
159
+ process.exit(2);
160
+ return;
161
+ }
162
+ try {
163
+ await setPromptInCanvasFile(String(args.file), String(args.node), text);
164
+ } catch (e) {
165
+ if (!(e instanceof SetPromptError)) throw e;
166
+ process.stderr.write(
167
+ `${JSON.stringify(
168
+ { ok: false, error: { code: e.code, message: e.message, ...e.fix ? { fix: e.fix } : {}, ...e.details ?? {} } },
169
+ null,
170
+ 2
171
+ )}
172
+ `
173
+ );
174
+ process.exit(2);
175
+ return;
176
+ }
177
+ process.stdout.write(`${JSON.stringify({ ok: true, node: String(args.node), bytes: text.length }, null, 2)}
178
+ `);
179
+ }
180
+ });
181
+ export {
182
+ SetPromptError,
183
+ setNodePrompt,
184
+ setPromptCommand,
185
+ setPromptInCanvasFile
186
+ };
187
+ //# sourceMappingURL=set-prompt-2HASHGWC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/canvas/set-prompt.ts"],"sourcesContent":["import { readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { defaultRegistry, validateCanvasDeep } from \"../../engine/index.ts\";\nimport { COPY_DIRECTIVE_HEADER } from \"../../engine/scaffold/static-copy.ts\";\nimport { adaptNodes } from \"../../engine/scaffold/static-adapt-briefs.ts\";\nimport { compiledPromptNodeIds } from \"../../engine/scaffold/static-render-briefs.ts\";\nimport { CanvasPrepareError, prepareCanvas } from \"./prepare-canvas.ts\";\nimport { sceneOwnedPrompts } from \"./scene-projection.ts\";\n\n/**\n * Set one node's `params.prompt` in a parsed canvas, returning a NEW canvas. The\n * structured alternative to hand-editing a 133 KB machine JSON with jq/sed — which\n * is where `\"prompt\": null` pollution (a global `gsub` writing prompt onto every\n * node) and the French-accent corruption (shell `''` eating apostrophes) came from.\n * Throws when the node id is unknown. Pure — unit-tested without the filesystem.\n */\nexport function setNodePrompt(canvas: unknown, nodeId: string, text: string): unknown {\n const nodes = (canvas as { nodes?: unknown })?.nodes;\n if (!Array.isArray(nodes)) throw new Error(\"canvas has no nodes array\");\n const idx = nodes.findIndex((n) => (n as { id?: unknown })?.id === nodeId);\n if (idx < 0) {\n const ids = nodes.map((n) => (n as { id?: unknown })?.id).filter((id): id is string => typeof id === \"string\");\n throw new Error(`node \"${nodeId}\" not found. Known nodes: ${ids.join(\", \")}`);\n }\n const node = nodes[idx] as { params?: Record<string, unknown> };\n const newNode = { ...node, params: { ...(node.params ?? {}), prompt: text } };\n const newNodes = [...nodes];\n newNodes[idx] = newNode;\n return { ...(canvas as object), nodes: newNodes };\n}\n\n/** Why `set-prompt` did not write: the node's prompt is owned elsewhere, or the edit does not validate. */\nexport class SetPromptError extends Error {\n readonly code: string;\n readonly fix: string | undefined;\n readonly details: Record<string, unknown> | undefined;\n constructor(code: string, message: string, opts: { fix?: string; details?: Record<string, unknown> } = {}) {\n super(message);\n this.name = \"SetPromptError\";\n this.code = code;\n this.fix = opts.fix;\n this.details = opts.details;\n }\n}\n\n/**\n * Set a node's prompt in the canvas FILE, where it will survive.\n *\n * The canvas is a projection of its blueprint, and `prepareCanvas` rewrites the projected\n * parts on every validate and run. So:\n * - a frame or clip prompt a scene file rebuilds is refused, naming the scene file to edit\n * (writing it here would be silently overwritten by the next preflight);\n * - a static ad's scaffolded render prompt (a take, a re-lay, the judge) is refused, naming\n * prompt.json: it is compiled from the ad spec there on every run;\n * - a hand-written static render prompt keeps its copy block: the text replaces the scene\n * description, and the \"render these exact strings\" block after it is re-read from\n * prompt.json, as always;\n * - anything else is the canvas's own, and is written.\n * The result is validated; an edit that does not validate is undone.\n */\nexport async function setPromptInCanvasFile(canvasPath: string, nodeId: string, text: string): Promise<void> {\n const filePath = path.resolve(canvasPath);\n const original = await readFile(filePath, \"utf8\");\n let canvas: unknown;\n try {\n canvas = JSON.parse(original);\n } catch (e) {\n throw new SetPromptError(\"parse\", `${filePath}: JSON parse error: ${e instanceof Error ? e.message : String(e)}`);\n }\n\n const sceneFile = (await sceneOwnedPrompts(filePath)).get(nodeId);\n if (sceneFile) {\n throw new SetPromptError(\n \"projected_prompt\",\n `The prompt of \"${nodeId}\" is rebuilt from ${sceneFile} on every validate and run, so setting it in the canvas would be overwritten.`,\n {\n fix: `Edit the scene's description in ${sceneFile} (its frame and motion fields, e.g. start_frame_prompt, end_frame_prompt, frame_prompt, motion_prompt), then run \\`baker canvas validate\\` to see the rebuilt prompt.`,\n },\n );\n }\n\n if (compiledPromptNodeIds(canvas).has(nodeId) || adaptNodes(canvas).some((a) => a.node.id === nodeId)) {\n throw new SetPromptError(\n \"projected_prompt\",\n `The prompt of \"${nodeId}\" is compiled from prompt.json on every validate and run, so setting it in the canvas would be overwritten.`,\n {\n fix: `Edit the ad in ${path.join(path.dirname(filePath), \"prompt.json\")} (its scene, copy, references or direction), then run \\`baker canvas validate\\` to see the compiled prompt on the node.`,\n },\n );\n }\n\n let updated: unknown;\n try {\n updated = setNodePrompt(canvas, nodeId, withCopyBlock(canvas, nodeId, text));\n } catch (e) {\n throw new SetPromptError(\"node_not_found\", e instanceof Error ? e.message : String(e));\n }\n\n await writeFile(filePath, `${JSON.stringify(updated, null, 2)}\\n`, \"utf8\");\n const restore = () => writeFile(filePath, original, \"utf8\");\n try {\n const prepared = await prepareCanvas(filePath);\n const validation = await validateCanvasDeep(prepared.canvas, defaultRegistry());\n if (!validation.ok) {\n await restore();\n throw new SetPromptError(\"validation\", \"The edited canvas does not validate; nothing was changed.\", {\n details: { issues: validation.issues },\n });\n }\n } catch (e) {\n if (e instanceof SetPromptError) throw e;\n await restore();\n if (e instanceof CanvasPrepareError) {\n throw new SetPromptError(e.code, e.message, { ...(e.fix ? { fix: e.fix } : {}), ...(e.details ? { details: e.details } : {}) });\n }\n throw e;\n }\n}\n\n/**\n * A static ad's render prompt ends with the copy block the preflight fills from prompt.json.\n * New text that leaves it out keeps it, so replacing the scene description never drops the\n * words the ad must show.\n */\nfunction withCopyBlock(canvas: unknown, nodeId: string, text: string): string {\n const nodes = (canvas as { nodes?: unknown })?.nodes;\n const current = Array.isArray(nodes)\n ? (nodes as Array<{ id?: unknown; params?: { prompt?: unknown } }>).find((n) => n?.id === nodeId)?.params?.prompt\n : undefined;\n if (typeof current !== \"string\" || !current.includes(COPY_DIRECTIVE_HEADER) || text.includes(COPY_DIRECTIVE_HEADER)) {\n return text;\n }\n return `${text.trimEnd()}\\n\\n${COPY_DIRECTIVE_HEADER}`;\n}\n\nexport const setPromptCommand = defineCommand({\n meta: {\n name: \"set-prompt\",\n description:\n \"Safely set a node's params.prompt (a frame description, motion prompt, etc.) without hand-editing the JSON. Prefer --text-file for multi-line/accented copy — it preserves UTF-8 exactly, unlike shell-quoted jq. A prompt rebuilt from a scene file (scenes/sNN.json), or compiled from a static ad's prompt.json, is refused with the file to edit instead.\",\n },\n args: {\n file: { type: \"positional\", required: true, description: \"Path to canvas JSON\" },\n node: { type: \"positional\", required: true, description: \"Node id to edit (e.g. s0_start)\" },\n text: { type: \"string\", description: \"New prompt text (inline)\" },\n \"text-file\": { type: \"string\", description: \"Read the new prompt from a UTF-8 file (preserves accents/newlines)\" },\n },\n async run({ args }) {\n let text: string;\n if (args[\"text-file\"]) text = await readFile(path.resolve(String(args[\"text-file\"])), \"utf8\");\n else if (args.text !== undefined) text = String(args.text);\n else {\n process.stderr.write(\n `${JSON.stringify({ ok: false, error: { code: \"no_text\", message: \"pass --text or --text-file\" } }, null, 2)}\\n`,\n );\n process.exit(2);\n return;\n }\n\n try {\n await setPromptInCanvasFile(String(args.file), String(args.node), text);\n } catch (e) {\n if (!(e instanceof SetPromptError)) throw e;\n process.stderr.write(\n `${JSON.stringify(\n { ok: false, error: { code: e.code, message: e.message, ...(e.fix ? { fix: e.fix } : {}), ...(e.details ?? {}) } },\n null,\n 2,\n )}\\n`,\n );\n process.exit(2);\n return;\n }\n process.stdout.write(`${JSON.stringify({ ok: true, node: String(args.node), bytes: text.length }, null, 2)}\\n`);\n },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,142 @@
1
+ import {
2
+ repeatedFlagValues
3
+ } from "./chunk-ERSX3MKH.js";
4
+ import {
5
+ failApi,
6
+ failValidation
7
+ } from "./chunk-SJYEY5MV.js";
8
+ import "./chunk-7EPXVICM.js";
9
+ import "./chunk-GXDLWBOY.js";
10
+ import "./chunk-TEINLN64.js";
11
+ import "./chunk-ZJWUBJYQ.js";
12
+ import "./chunk-HR6IWNKE.js";
13
+ import "./chunk-NE4F3FHN.js";
14
+ import {
15
+ apiPost
16
+ } from "./chunk-XBOK23HI.js";
17
+ import "./chunk-IFWP3ZDO.js";
18
+ import "./chunk-NAWWC5I3.js";
19
+ import {
20
+ registerSchema,
21
+ writeJson
22
+ } from "./chunk-NU7JSWVA.js";
23
+ import "./chunk-YQSBHWOI.js";
24
+
25
+ // src/commands/setup-links/index.ts
26
+ import { defineCommand } from "citty";
27
+ var DOC = "__tooling__/docs/tools/baker/setup-links.md";
28
+ var CREATE_HINT = "Send this link to whoever owns the accounts; it works without a Baker login and expires in 30 days. Revoke it in Settings \u2192 Setup links.";
29
+ var LIST_FLAGS = ["tags", "connect", "keys", "apps", "domains"];
30
+ var FLAG_HELP = {
31
+ tags: "Tracking tags to add (repeatable or comma-separated): meta, googleAds, googleAnalytics, linkedinInsightTag, tiktok, \u2026",
32
+ connect: "Accounts to connect by signing in (repeatable or comma-separated): google-ads, meta, google-analytics, google-tag-manager, google-search-console, linkedin, x-ads, hubspot, \u2026",
33
+ keys: "Accounts connected by pasting a key (repeatable or comma-separated): chatgpt-ads",
34
+ apps: "Apps from the app catalog, by slug or exact name (repeatable or comma-separated): slack, notion, \u2026 Find one with `baker mcp catalog <search>`.",
35
+ mcp: "An MCP server to connect, as name=https://address (repeatable). The recipient types any key into the link, never you.",
36
+ domains: "The company's own domain whose DNS record the recipient sets, by hostname (repeatable or comma-separated). It must already be added to Baker."
37
+ };
38
+ registerSchema({
39
+ command: "setup-links.create",
40
+ description: "Start here: make a setup link for whoever holds the company's accounts (an agency, the client's IT) \u2014 they open it, no Baker login needed, and connect what it asks for. Example: baker setup-links create --connect google-ads --tags meta. Made at once and returned now with its url: send it back to the user in this reply. Unknown names are refused: tags, connections and keys with the list of valid ones, apps with a pointer to `baker mcp catalog`.",
41
+ args: {
42
+ tags: { type: "string", description: FLAG_HELP.tags, required: false },
43
+ connect: { type: "string", description: FLAG_HELP.connect, required: false },
44
+ keys: { type: "string", description: FLAG_HELP.keys, required: false },
45
+ apps: { type: "string", description: FLAG_HELP.apps, required: false },
46
+ mcp: { type: "string", description: FLAG_HELP.mcp, required: false },
47
+ domains: { type: "string", description: FLAG_HELP.domains, required: false }
48
+ }
49
+ });
50
+ registerSchema({
51
+ command: "setup-links.list",
52
+ description: "The company's setup links that still work: what each asks for (in the same words `create` takes), how much of it is done, its url and when it expires. Check it before making a link that already exists.",
53
+ args: {}
54
+ });
55
+ function listFlag(rawArgs, flag) {
56
+ return repeatedFlagValues(rawArgs, flag).flatMap((value) => value.split(",")).map((value) => value.trim()).filter((value) => value !== "");
57
+ }
58
+ function createBody(rawArgs) {
59
+ const body = {};
60
+ for (const flag of LIST_FLAGS) {
61
+ const values = listFlag(rawArgs, flag);
62
+ if (values.length > 0) body[flag] = values;
63
+ }
64
+ const mcp = [];
65
+ for (const raw of repeatedFlagValues(rawArgs, "mcp")) {
66
+ const separator = raw.indexOf("=");
67
+ const name = raw.slice(0, separator).trim();
68
+ const url = raw.slice(separator + 1).trim();
69
+ if (separator < 0 || name === "" || !/^https:\/\//.test(url)) {
70
+ return { ok: false, error: `--mcp takes name=https://address, got "${raw}".` };
71
+ }
72
+ mcp.push({ name, url });
73
+ }
74
+ if (mcp.length > 0) body.mcp = mcp;
75
+ if (Object.keys(body).length === 0) {
76
+ return {
77
+ ok: false,
78
+ error: "A setup link has to ask for something: pass --tags, --connect, --keys, --apps, --mcp or --domains."
79
+ };
80
+ }
81
+ return { ok: true, body };
82
+ }
83
+ var createCommand = defineCommand({
84
+ meta: {
85
+ name: "create",
86
+ description: `Make a setup link for whoever holds the company's accounts; returns its url now.
87
+ Start here: baker setup-links create --connect google-ads --tags meta`
88
+ },
89
+ args: {
90
+ tags: { type: "string", description: FLAG_HELP.tags, required: false },
91
+ connect: { type: "string", description: FLAG_HELP.connect, required: false },
92
+ keys: { type: "string", description: FLAG_HELP.keys, required: false },
93
+ apps: { type: "string", description: FLAG_HELP.apps, required: false },
94
+ mcp: { type: "string", description: FLAG_HELP.mcp, required: false },
95
+ domains: { type: "string", description: FLAG_HELP.domains, required: false }
96
+ },
97
+ run: async ({ rawArgs }) => {
98
+ const parsed = createBody(rawArgs);
99
+ if (!parsed.ok) {
100
+ failValidation(parsed.error);
101
+ }
102
+ try {
103
+ const response = await apiPost("/api/setup-links/create", parsed.body);
104
+ writeJson({ ok: true, data: response.data, hints: [CREATE_HINT] });
105
+ } catch (err) {
106
+ failApi(err);
107
+ }
108
+ }
109
+ });
110
+ var listCommand = defineCommand({
111
+ meta: {
112
+ name: "list",
113
+ description: "The company's setup links that still work: what each asks for, progress, url and expiry."
114
+ },
115
+ args: {},
116
+ run: async () => {
117
+ try {
118
+ const response = await apiPost("/api/setup-links/list", {});
119
+ writeJson({
120
+ ok: true,
121
+ data: response.data,
122
+ meta: { count: response.data.links.length },
123
+ ...response.data.links.length === 0 ? { hints: ["No setup links are out. Make one with baker setup-links create."] } : {}
124
+ });
125
+ } catch (err) {
126
+ failApi(err);
127
+ }
128
+ }
129
+ });
130
+ var setupLinksCommand = defineCommand({
131
+ meta: {
132
+ name: "setup-links",
133
+ description: `Setup links: one link that lets whoever holds the company's accounts connect them, without a Baker login. Subcommands: create, list.
134
+ Full guide: ${DOC}`
135
+ },
136
+ subCommands: { create: createCommand, list: listCommand }
137
+ });
138
+ export {
139
+ createBody,
140
+ setupLinksCommand
141
+ };
142
+ //# sourceMappingURL=setup-links-GYSE56GX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/setup-links/index.ts"],"sourcesContent":["import type { SetupLinksCreateRequest, SetupLinksCreateResponse, SetupLinksListResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../client.ts\";\nimport { repeatedFlagValues } from \"../../lib/repeatedFlags.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { failApi, failValidation } from \"../actions/shared.ts\";\n\nconst DOC = \"__tooling__/docs/tools/baker/setup-links.md\";\n\nconst CREATE_HINT =\n \"Send this link to whoever owns the accounts; it works without a Baker login and expires in 30 days. Revoke it in Settings → Setup links.\";\n\nconst LIST_FLAGS = [\"tags\", \"connect\", \"keys\", \"apps\", \"domains\"] as const;\n\nconst FLAG_HELP = {\n tags: \"Tracking tags to add (repeatable or comma-separated): meta, googleAds, googleAnalytics, linkedinInsightTag, tiktok, …\",\n connect:\n \"Accounts to connect by signing in (repeatable or comma-separated): google-ads, meta, google-analytics, google-tag-manager, google-search-console, linkedin, x-ads, hubspot, …\",\n keys: \"Accounts connected by pasting a key (repeatable or comma-separated): chatgpt-ads\",\n apps: \"Apps from the app catalog, by slug or exact name (repeatable or comma-separated): slack, notion, … Find one with `baker mcp catalog <search>`.\",\n mcp: \"An MCP server to connect, as name=https://address (repeatable). The recipient types any key into the link, never you.\",\n domains:\n \"The company's own domain whose DNS record the recipient sets, by hostname (repeatable or comma-separated). It must already be added to Baker.\",\n} as const;\n\nregisterSchema({\n command: \"setup-links.create\",\n description:\n \"Start here: make a setup link for whoever holds the company's accounts (an agency, the client's IT) — they open it, no Baker login needed, and connect what it asks for. Example: baker setup-links create --connect google-ads --tags meta. Made at once and returned now with its url: send it back to the user in this reply. Unknown names are refused: tags, connections and keys with the list of valid ones, apps with a pointer to `baker mcp catalog`.\",\n args: {\n tags: { type: \"string\", description: FLAG_HELP.tags, required: false },\n connect: { type: \"string\", description: FLAG_HELP.connect, required: false },\n keys: { type: \"string\", description: FLAG_HELP.keys, required: false },\n apps: { type: \"string\", description: FLAG_HELP.apps, required: false },\n mcp: { type: \"string\", description: FLAG_HELP.mcp, required: false },\n domains: { type: \"string\", description: FLAG_HELP.domains, required: false },\n },\n});\n\nregisterSchema({\n command: \"setup-links.list\",\n description:\n \"The company's setup links that still work: what each asks for (in the same words `create` takes), how much of it is done, its url and when it expires. Check it before making a link that already exists.\",\n args: {},\n});\n\n/** Every value of a repeatable, comma-separated flag. */\nfunction listFlag(rawArgs: readonly string[], flag: string): string[] {\n return repeatedFlagValues(rawArgs, flag)\n .flatMap((value) => value.split(\",\"))\n .map((value) => value.trim())\n .filter((value) => value !== \"\");\n}\n\n/** The request one `create` line asks for, or why it cannot be sent. */\nexport function createBody(\n rawArgs: readonly string[],\n): { ok: true; body: SetupLinksCreateRequest } | { ok: false; error: string } {\n const body: SetupLinksCreateRequest = {};\n for (const flag of LIST_FLAGS) {\n const values = listFlag(rawArgs, flag);\n if (values.length > 0) body[flag] = values;\n }\n const mcp: NonNullable<SetupLinksCreateRequest[\"mcp\"]> = [];\n for (const raw of repeatedFlagValues(rawArgs, \"mcp\")) {\n const separator = raw.indexOf(\"=\");\n const name = raw.slice(0, separator).trim();\n const url = raw.slice(separator + 1).trim();\n if (separator < 0 || name === \"\" || !/^https:\\/\\//.test(url)) {\n return { ok: false, error: `--mcp takes name=https://address, got \"${raw}\".` };\n }\n mcp.push({ name, url });\n }\n if (mcp.length > 0) body.mcp = mcp;\n if (Object.keys(body).length === 0) {\n return {\n ok: false,\n error: \"A setup link has to ask for something: pass --tags, --connect, --keys, --apps, --mcp or --domains.\",\n };\n }\n return { ok: true, body };\n}\n\nconst createCommand = defineCommand({\n meta: {\n name: \"create\",\n description: `Make a setup link for whoever holds the company's accounts; returns its url now.\nStart here: baker setup-links create --connect google-ads --tags meta`,\n },\n args: {\n tags: { type: \"string\", description: FLAG_HELP.tags, required: false },\n connect: { type: \"string\", description: FLAG_HELP.connect, required: false },\n keys: { type: \"string\", description: FLAG_HELP.keys, required: false },\n apps: { type: \"string\", description: FLAG_HELP.apps, required: false },\n mcp: { type: \"string\", description: FLAG_HELP.mcp, required: false },\n domains: { type: \"string\", description: FLAG_HELP.domains, required: false },\n },\n run: async ({ rawArgs }) => {\n const parsed = createBody(rawArgs);\n if (!parsed.ok) {\n failValidation(parsed.error);\n }\n try {\n const response = await apiPost<SetupLinksCreateResponse>(\"/api/setup-links/create\", parsed.body);\n writeJson({ ok: true, data: response.data, hints: [CREATE_HINT] });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description: \"The company's setup links that still work: what each asks for, progress, url and expiry.\",\n },\n args: {},\n run: async () => {\n try {\n const response = await apiPost<SetupLinksListResponse>(\"/api/setup-links/list\", {});\n writeJson({\n ok: true,\n data: response.data,\n meta: { count: response.data.links.length },\n ...(response.data.links.length === 0\n ? { hints: [\"No setup links are out. Make one with baker setup-links create.\"] }\n : {}),\n });\n } catch (err) {\n failApi(err);\n }\n },\n});\n\nexport const setupLinksCommand = defineCommand({\n meta: {\n name: \"setup-links\",\n description: `Setup links: one link that lets whoever holds the company's accounts connect them, without a Baker login. Subcommands: create, list.\nFull guide: ${DOC}`,\n },\n subCommands: { create: createCommand, list: listCommand },\n});\n"],"mappings":"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","names":[]}
@@ -0,0 +1,178 @@
1
+ import {
2
+ SiteArgsError,
3
+ failSite,
4
+ parseSetArgs
5
+ } from "./chunk-FUHN4MFY.js";
6
+ import "./chunk-7EPXVICM.js";
7
+ import "./chunk-GXDLWBOY.js";
8
+ import "./chunk-TEINLN64.js";
9
+ import "./chunk-ZJWUBJYQ.js";
10
+ import "./chunk-HR6IWNKE.js";
11
+ import "./chunk-NE4F3FHN.js";
12
+ import {
13
+ apiGet,
14
+ apiPost
15
+ } from "./chunk-XBOK23HI.js";
16
+ import "./chunk-IFWP3ZDO.js";
17
+ import {
18
+ optionalChatId,
19
+ requireChatId
20
+ } from "./chunk-NAWWC5I3.js";
21
+ import {
22
+ registerSchema,
23
+ writeJson
24
+ } from "./chunk-NU7JSWVA.js";
25
+ import "./chunk-YQSBHWOI.js";
26
+
27
+ // src/commands/site/index.ts
28
+ import { readFileSync } from "fs";
29
+ import { defineCommand } from "citty";
30
+ registerSchema({
31
+ command: "site.show",
32
+ description: "Start here: the company's site settings as they will be after this chat publishes \u2014 cookie consent (consent), what Baker records (analyticsCollection), search engines (indexing), the home page (homePage, null = the first published landing), time zone, download format (exportProfile, null = default) and custom domains with their status \u2014 plus `staged`: what this chat changed, each with before/after. Hints name other open chats that already staged a site setting. Read-only.",
33
+ args: {
34
+ chat: {
35
+ type: "string",
36
+ description: "Read another chat's staged settings instead of this chat's (a chat id from `baker chats list`)",
37
+ required: false
38
+ }
39
+ }
40
+ });
41
+ registerSchema({
42
+ command: "site.set",
43
+ description: "Stage one or more site settings in one call; all apply when the chat is published, none mid-chat. Combine flags freely: `baker site set --consent recovery --indexing on`. Restaging a setting replaces what this chat staged before. Any member's chat may change these \u2014 the person who publishes is the review. --consent: bypass (no banner, maximum tracking), recovery (banner; declines still send anonymized pings \u2014 the usual EU choice), strict (banner; declines send nothing), external (the site's own consent tool). --collection: full, aggregate (counts only, nobody identifiable), off (Baker records nothing). --home takes a published landing slug (or one this chat is building); \"none\" restores the default. Always ask the user before hiding the site from search engines or reducing what Baker records.",
44
+ args: {
45
+ consent: { type: "string", description: "bypass | recovery | strict | external", required: false },
46
+ collection: { type: "string", description: "full | aggregate | off", required: false },
47
+ payloads: {
48
+ type: "string",
49
+ description: "on | off \u2014 keep a copy of each lead (only with --collection full)",
50
+ required: false
51
+ },
52
+ indexing: { type: "string", description: "on | off \u2014 show the site in search engines", required: false },
53
+ home: { type: "string", description: "Landing slug to serve at the site root, or none", required: false },
54
+ "home-mode": {
55
+ type: "string",
56
+ description: "rewrite (default; the root shows the landing) | redirect (the root sends visitors to /<slug>)",
57
+ required: false
58
+ },
59
+ timezone: { type: "string", description: "IANA time zone, e.g. Europe/Madrid", required: false },
60
+ "export-profile": {
61
+ type: "string",
62
+ description: 'Only the download-format fields to change, as JSON (e.g. {"htmlOutput":"fragment"}) or @path/to/profile.json. A second call adds to the first; Publish lays them over the format saved then',
63
+ required: false
64
+ }
65
+ }
66
+ });
67
+ registerSchema({
68
+ command: "site.unstage",
69
+ description: "Take back a site setting this chat staged, before publish \u2014 the same as discarding its row in the chat's Settings review. The key is the setting (consent, analyticsCollection, indexing, homePage, timezone, exportProfile) or customDomain:<hostname>; --all takes back every one. Never touches what is already live.",
70
+ args: {
71
+ key: { type: "string", description: "A `key` from `baker site show` \u2192 staged", required: false },
72
+ all: { type: "boolean", description: "Take back every staged site setting", required: false }
73
+ }
74
+ });
75
+ var showCommand = defineCommand({
76
+ meta: {
77
+ name: "show",
78
+ description: "Show the site settings as they will be after this chat publishes, and what this chat staged.\n\nExample: baker site show"
79
+ },
80
+ args: {
81
+ chat: { type: "string", description: "Another chat's id, to read what it staged", required: false }
82
+ },
83
+ run: async ({ args }) => {
84
+ try {
85
+ const chatId = typeof args.chat === "string" && args.chat.length > 0 ? args.chat : optionalChatId();
86
+ writeJson(await apiGet("/api/site", chatId ? { chatId } : void 0));
87
+ } catch (err) {
88
+ failSite(err);
89
+ }
90
+ }
91
+ });
92
+ var setCommand = defineCommand({
93
+ meta: {
94
+ name: "set",
95
+ description: "Stage site settings; they apply when the chat is published.\n\nExamples:\n baker site set --consent recovery\n baker site set --collection aggregate\n baker site set --indexing off\n baker site set --home oferta --home-mode redirect\n baker site set --home none\n baker site set --timezone Europe/Madrid\n baker site set --export-profile @profile.json"
96
+ },
97
+ args: {
98
+ consent: { type: "string", description: "bypass | recovery | strict | external", required: false },
99
+ collection: { type: "string", description: "full | aggregate | off", required: false },
100
+ payloads: { type: "string", description: "on | off (with --collection full)", required: false },
101
+ indexing: { type: "string", description: "on | off", required: false },
102
+ home: { type: "string", description: "Landing slug, or none", required: false },
103
+ "home-mode": { type: "string", description: "rewrite | redirect", required: false },
104
+ timezone: { type: "string", description: "IANA time zone", required: false },
105
+ "export-profile": {
106
+ type: "string",
107
+ description: "Fields to change, as JSON or @path; added to any staged earlier, laid over the saved format at Publish",
108
+ required: false
109
+ }
110
+ },
111
+ run: async ({ args }) => {
112
+ try {
113
+ const inputs = parseSetArgs(
114
+ {
115
+ consent: args.consent,
116
+ collection: args.collection,
117
+ payloads: args.payloads,
118
+ indexing: args.indexing,
119
+ home: args.home,
120
+ "home-mode": args["home-mode"],
121
+ timezone: args.timezone,
122
+ "export-profile": args["export-profile"]
123
+ },
124
+ (path) => readFileSync(path, "utf8")
125
+ );
126
+ const body = { chatId: requireChatId(), inputs };
127
+ writeJson(await apiPost("/api/site/stage", body));
128
+ } catch (err) {
129
+ failSite(err);
130
+ }
131
+ }
132
+ });
133
+ var unstageCommand = defineCommand({
134
+ meta: {
135
+ name: "unstage",
136
+ description: "Take back a staged site setting before publish.\n\nExamples:\n baker site unstage consent\n baker site unstage customDomain:shop.acme.com\n baker site unstage --all"
137
+ },
138
+ args: {
139
+ key: { type: "positional", description: "The setting key from `baker site show` \u2192 staged", required: false },
140
+ all: { type: "boolean", description: "Take back every staged site setting", required: false }
141
+ },
142
+ run: async ({ args }) => {
143
+ try {
144
+ const key = typeof args.key === "string" && args.key.length > 0 ? args.key : void 0;
145
+ if (key === void 0 === (args.all !== true)) {
146
+ throw new SiteArgsError("Pass one setting key (see `baker site show` \u2192 staged) or --all.");
147
+ }
148
+ const body = { chatId: requireChatId(), ...key ? { key } : { all: true } };
149
+ writeJson(await apiPost("/api/site/draft-op/remove", body));
150
+ } catch (err) {
151
+ failSite(err);
152
+ }
153
+ }
154
+ });
155
+ var siteCommand = defineCommand({
156
+ meta: {
157
+ name: "site",
158
+ description: `The company's site settings: cookie consent, what Baker records, search engines, home page, time zone, landing download format, custom domains. Every change stages on this chat and applies when it is published. Subcommands: show, set, unstage, domain.
159
+
160
+ Examples:
161
+ baker site show
162
+ baker site set --consent recovery --indexing on
163
+ baker site set --home oferta
164
+ baker site domain add shop.acme.com
165
+ baker site unstage homePage
166
+ Full guide: __tooling__/docs/tools/baker/site.md`
167
+ },
168
+ subCommands: {
169
+ show: showCommand,
170
+ set: setCommand,
171
+ unstage: unstageCommand,
172
+ domain: () => import("./domain-RECGZXJB.js").then((m) => m.domainCommand)
173
+ }
174
+ });
175
+ export {
176
+ siteCommand
177
+ };
178
+ //# sourceMappingURL=site-4SKM7RKG.js.map