@koda-sl/baker-cli 0.448.0-dev.0d67e41b9 → 0.448.0-dev.ccc3c9a37

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 (1388) hide show
  1. package/README.md +229 -40
  2. package/dist/account-JG7QD522.js +79 -0
  3. package/dist/account-V6PB6PA5.js +80 -0
  4. package/dist/account-VLPX7EZT.js +49 -0
  5. package/dist/account-reads-4P5L6CJN.js +218 -0
  6. package/dist/account-reads-4P5L6CJN.js.map +1 -0
  7. package/dist/account-writes-BGREY7ZL.js +66 -0
  8. package/dist/accounts-2FINK5GZ.js +114 -0
  9. package/dist/accounts-2UV5Z3Y6.js +75 -0
  10. package/dist/accounts-3EX2PFJB.js +77 -0
  11. package/dist/accounts-G2QT3ZVP.js +115 -0
  12. package/dist/accounts-N63J5YTK.js +611 -0
  13. package/dist/actions-PA2BPIYO.js +55 -0
  14. package/dist/active-entities-RDXDSMA2.js +103 -0
  15. package/dist/activecampaign-EE5ERO25.js +897 -0
  16. package/dist/activecampaign-EE5ERO25.js.map +1 -0
  17. package/dist/activities-RBTU2Q24.js +74 -0
  18. package/dist/ad-group-writes-5NTRJTVE.js +170 -0
  19. package/dist/ad-groups-4OTAKWUC.js +68 -0
  20. package/dist/ad-writes-T7W3DDKK.js +174 -0
  21. package/dist/add-4VKA4NDH.js +105 -0
  22. package/dist/add-MQO33HL3.js +97 -0
  23. package/dist/add-MYPHHYC4.js +302 -0
  24. package/dist/add-MYPHHYC4.js.map +1 -0
  25. package/dist/add-QM7ANAVG.js +104 -0
  26. package/dist/add-accounts-VDSWHJ4K.js +91 -0
  27. package/dist/add-accounts-VDSWHJ4K.js.map +1 -0
  28. package/dist/ads-HYODBAPV.js +128 -0
  29. package/dist/ads-HYODBAPV.js.map +1 -0
  30. package/dist/ads-IJCFN2N3.js +113 -0
  31. package/dist/ads-QKMLAPZC.js +40 -0
  32. package/dist/ads-XYAWONXR.js +77 -0
  33. package/dist/adsets-DPTIKGTG.js +176 -0
  34. package/dist/advertisers-ITFXIXUW.js +125 -0
  35. package/dist/advertisers-ITFXIXUW.js.map +1 -0
  36. package/dist/advertisers-SZFDOPBQ.js +120 -0
  37. package/dist/analytics-HFBYIPZ7.js +433 -0
  38. package/dist/analytics-NDZR33ZJ.js +1976 -0
  39. package/dist/analytics-NDZR33ZJ.js.map +1 -0
  40. package/dist/animate-LUKNHCF4.js +480 -0
  41. package/dist/assign-QCICUD72.js +77 -0
  42. package/dist/audience-size-HML4BLHJ.js +94 -0
  43. package/dist/audiences-BSABKS5K.js +268 -0
  44. package/dist/audiences-FWOOSUSJ.js +78 -0
  45. package/dist/audiences-VK4M7GLQ.js +85 -0
  46. package/dist/audit-DUM55J5U.js +151 -0
  47. package/dist/audit-JR5R75XK.js +88 -0
  48. package/dist/autocomplete-VX4PMMLR.js +111 -0
  49. package/dist/avatars-5KCRSUJ3.js +38 -0
  50. package/dist/bid-pricing-AIUACXUH.js +99 -0
  51. package/dist/brand-UBTC2WXR.js +22 -0
  52. package/dist/brief-NU7ZGPXO.js +490 -0
  53. package/dist/brief-NU7ZGPXO.js.map +1 -0
  54. package/dist/businesses-P3RX4UXS.js +53 -0
  55. package/dist/campaign-groups-SJZEDIBL.js +95 -0
  56. package/dist/campaign-writes-5BPVXG4C.js +170 -0
  57. package/dist/campaign-writes-VE6QLIDA.js +165 -0
  58. package/dist/campaigns-JEWEDCTC.js +109 -0
  59. package/dist/campaigns-MEIMSHJF.js +110 -0
  60. package/dist/campaigns-NCGJNJKS.js +107 -0
  61. package/dist/campaigns-XY7QWHDN.js +76 -0
  62. package/dist/canvas-DK2DH7BA.js +46 -0
  63. package/dist/canvas-DK2DH7BA.js.map +1 -0
  64. package/dist/capabilities-W6SPXOPF.js +144 -0
  65. package/dist/cards-CLD4WX6G.js +85 -0
  66. package/dist/catalog-W6RBOIOF.js +64 -0
  67. package/dist/catalog-W6RBOIOF.js.map +1 -0
  68. package/dist/catalogs-DINPKQXY.js +128 -0
  69. package/dist/changes-N2YZXAPF.js +135 -0
  70. package/dist/chatgpt-TPAP6BVY.js +47 -0
  71. package/dist/chats-FKVVBXVF.js +262 -0
  72. package/dist/chunk-237WE5LX.js +455 -0
  73. package/dist/chunk-237WE5LX.js.map +1 -0
  74. package/dist/chunk-24IQ6K7K.js +103 -0
  75. package/dist/chunk-2FZG5DD2.js +297 -0
  76. package/dist/chunk-2T3EH2MU.js +363 -0
  77. package/dist/chunk-2Y5UE2CV.js +174 -0
  78. package/dist/chunk-2ZZR2SOF.js +215 -0
  79. package/dist/chunk-2ZZR2SOF.js.map +1 -0
  80. package/dist/chunk-3KPQDXIU.js +1830 -0
  81. package/dist/chunk-4AFGT3L3.js +46 -0
  82. package/dist/chunk-4JKBMKFC.js +225 -0
  83. package/dist/chunk-4KBWL7S4.js +610 -0
  84. package/dist/chunk-4R3QKEDV.js +136 -0
  85. package/dist/chunk-536R4RRM.js +166 -0
  86. package/dist/chunk-536R4RRM.js.map +1 -0
  87. package/dist/chunk-57XJ7QF7.js +65 -0
  88. package/dist/chunk-57XJ7QF7.js.map +1 -0
  89. package/dist/chunk-6AJ6ZD73.js +172 -0
  90. package/dist/chunk-6AJ6ZD73.js.map +1 -0
  91. package/dist/chunk-6SL6463H.js +309 -0
  92. package/dist/chunk-7TRSFEHZ.js +51 -0
  93. package/dist/chunk-AOCG7COT.js +474 -0
  94. package/dist/chunk-AOCG7COT.js.map +1 -0
  95. package/dist/chunk-APNV7FMK.js +191 -0
  96. package/dist/chunk-AR7PU7BB.js +76 -0
  97. package/dist/chunk-AR7PU7BB.js.map +1 -0
  98. package/dist/chunk-B2HLSTK6.js +392 -0
  99. package/dist/chunk-B2HLSTK6.js.map +1 -0
  100. package/dist/chunk-B2VKGTBS.js +3151 -0
  101. package/dist/chunk-B2VKGTBS.js.map +1 -0
  102. package/dist/chunk-BC2BXRXY.js +2887 -0
  103. package/dist/chunk-BC2BXRXY.js.map +1 -0
  104. package/dist/chunk-BC6M5YYV.js +1599 -0
  105. package/dist/chunk-BC6M5YYV.js.map +1 -0
  106. package/dist/chunk-BCSOWRQL.js +76 -0
  107. package/dist/chunk-BIZH3X6P.js +817 -0
  108. package/dist/chunk-BIZH3X6P.js.map +1 -0
  109. package/dist/chunk-BJEW3LST.js +296 -0
  110. package/dist/chunk-BYKUAX26.js +106 -0
  111. package/dist/chunk-C4KJHTQU.js +1079 -0
  112. package/dist/chunk-C4KJHTQU.js.map +1 -0
  113. package/dist/chunk-C7NPNSFO.js +169 -0
  114. package/dist/chunk-CLK2FPAV.js +76 -0
  115. package/dist/chunk-CLK2FPAV.js.map +1 -0
  116. package/dist/chunk-CVIMIOPO.js +94 -0
  117. package/dist/chunk-D3RTGIT4.js +2102 -0
  118. package/dist/chunk-D3RTGIT4.js.map +1 -0
  119. package/dist/chunk-DAKIMGUS.js +74 -0
  120. package/dist/chunk-DCRUGS3G.js +25 -0
  121. package/dist/chunk-DJPCTTUN.js +1743 -0
  122. package/dist/chunk-DJPCTTUN.js.map +1 -0
  123. package/dist/chunk-DJUHGO3O.js +547 -0
  124. package/dist/chunk-DJUHGO3O.js.map +1 -0
  125. package/dist/chunk-DMA77LLI.js +106 -0
  126. package/dist/chunk-EEEAC655.js +45 -0
  127. package/dist/chunk-EEEAC655.js.map +1 -0
  128. package/dist/chunk-EESOZY5S.js +26 -0
  129. package/dist/chunk-EIZMOICE.js +175 -0
  130. package/dist/chunk-F3IVR3V3.js +136 -0
  131. package/dist/chunk-FSX6CQ2Z.js +188 -0
  132. package/dist/chunk-G7LAQE56.js +56 -0
  133. package/dist/chunk-G7QKXFQ2.js +66 -0
  134. package/dist/chunk-G7XY4T6K.js +23 -0
  135. package/dist/chunk-GIWHHCD6.js +145 -0
  136. package/dist/chunk-GIWHHCD6.js.map +1 -0
  137. package/dist/chunk-GRJCZF2H.js +5187 -0
  138. package/dist/chunk-GRJCZF2H.js.map +1 -0
  139. package/dist/chunk-HCDCWXSU.js +346 -0
  140. package/dist/chunk-HKSLIV4T.js +533 -0
  141. package/dist/chunk-HKSLIV4T.js.map +1 -0
  142. package/dist/chunk-I2DNBEV6.js +4227 -0
  143. package/dist/chunk-I2DNBEV6.js.map +1 -0
  144. package/dist/chunk-I4IVUAQN.js +337 -0
  145. package/dist/chunk-ICJFL7DU.js +35 -0
  146. package/dist/chunk-ICJFL7DU.js.map +1 -0
  147. package/dist/chunk-IWNZCYWI.js +74 -0
  148. package/dist/chunk-JF5LNI6O.js +84 -0
  149. package/dist/chunk-JJZBZYNK.js +96 -0
  150. package/dist/chunk-JPK34QPS.js +134 -0
  151. package/dist/chunk-JPK34QPS.js.map +1 -0
  152. package/dist/chunk-JZP5IODJ.js +98 -0
  153. package/dist/chunk-KL5VTXIK.js +149 -0
  154. package/dist/chunk-KL5VTXIK.js.map +1 -0
  155. package/dist/chunk-KWMYTVHI.js +455 -0
  156. package/dist/chunk-LFGCOAB4.js +75 -0
  157. package/dist/chunk-LLN6WTER.js +665 -0
  158. package/dist/chunk-LLN6WTER.js.map +1 -0
  159. package/dist/chunk-LO7OQKUD.js +4410 -0
  160. package/dist/chunk-LO7OQKUD.js.map +1 -0
  161. package/dist/chunk-LPRUP3ZX.js +172 -0
  162. package/dist/chunk-MAGSNHYB.js +6214 -0
  163. package/dist/chunk-MAGSNHYB.js.map +1 -0
  164. package/dist/chunk-MD3VH5UG.js +84 -0
  165. package/dist/chunk-MFORE6F4.js +19 -0
  166. package/dist/chunk-MMBHCAON.js +160 -0
  167. package/dist/chunk-MMOTJIV6.js +216 -0
  168. package/dist/chunk-MMOTJIV6.js.map +1 -0
  169. package/dist/chunk-NIGGMK7L.js +125 -0
  170. package/dist/chunk-NN7A2ILR.js +433 -0
  171. package/dist/chunk-O356YNIW.js +509 -0
  172. package/dist/chunk-OUQMJRH6.js +159 -0
  173. package/dist/chunk-OXKUWTFL.js +494 -0
  174. package/dist/chunk-PAJJXZ3Z.js +170 -0
  175. package/dist/chunk-PC56KVAD.js +74 -0
  176. package/dist/chunk-PEWNEPDR.js +206 -0
  177. package/dist/chunk-PY4FAOW6.js +275 -0
  178. package/dist/chunk-PY4FAOW6.js.map +1 -0
  179. package/dist/chunk-Q2T4XZG4.js +139 -0
  180. package/dist/chunk-QEHICHMP.js +875 -0
  181. package/dist/chunk-QEHICHMP.js.map +1 -0
  182. package/dist/chunk-RCR6RVYE.js +274 -0
  183. package/dist/chunk-RH2H5PBV.js +111 -0
  184. package/dist/chunk-S3L2ITS7.js +111 -0
  185. package/dist/chunk-S3L2ITS7.js.map +1 -0
  186. package/dist/chunk-S3XM4LD3.js +57 -0
  187. package/dist/chunk-SEPPFM5S.js +228 -0
  188. package/dist/chunk-SEPPFM5S.js.map +1 -0
  189. package/dist/chunk-SFHL3KWY.js +96 -0
  190. package/dist/chunk-SQ7DRYCC.js +150 -0
  191. package/dist/chunk-SSVZM3P6.js +333 -0
  192. package/dist/chunk-T64IRDKW.js +52 -0
  193. package/dist/chunk-T64IRDKW.js.map +1 -0
  194. package/dist/chunk-TMNLIA7R.js +60 -0
  195. package/dist/chunk-UF55TADX.js +92 -0
  196. package/dist/chunk-UGI33KTO.js +55 -0
  197. package/dist/chunk-UK2OTLT3.js +197 -0
  198. package/dist/chunk-UU3FGKUW.js +207 -0
  199. package/dist/chunk-UUBHU2TY.js +304 -0
  200. package/dist/chunk-UX7HIGS7.js +67 -0
  201. package/dist/chunk-VDZIGI2C.js +98 -0
  202. package/dist/chunk-VF6JFG27.js +846 -0
  203. package/dist/chunk-VF6JFG27.js.map +1 -0
  204. package/dist/chunk-VKVIBQP3.js +486 -0
  205. package/dist/chunk-VLF2M4GZ.js +592 -0
  206. package/dist/chunk-VTF7XNOP.js +58 -0
  207. package/dist/chunk-WDA3L4NF.js +382 -0
  208. package/dist/chunk-WMN2WKNZ.js +1442 -0
  209. package/dist/chunk-WMN2WKNZ.js.map +1 -0
  210. package/dist/chunk-XDV6Q33B.js +42 -0
  211. package/dist/chunk-XQIOCIDO.js +204 -0
  212. package/dist/chunk-XQIOCIDO.js.map +1 -0
  213. package/dist/chunk-XYC26BDM.js +133 -0
  214. package/dist/chunk-YHQYDNYD.js +23992 -0
  215. package/dist/chunk-YOARYFC2.js +6667 -0
  216. package/dist/chunk-YOARYFC2.js.map +1 -0
  217. package/dist/chunk-YPCVPDU7.js +455 -0
  218. package/dist/chunk-YPCVPDU7.js.map +1 -0
  219. package/dist/chunk-YTWNY3RF.js +97 -0
  220. package/dist/claim-JLVISHS4.js +197 -0
  221. package/dist/cli.js +41 -37
  222. package/dist/cli.js.map +1 -1
  223. package/dist/client-G6DGRGKT.js +19 -0
  224. package/dist/code-AYN42EK7.js +76 -0
  225. package/dist/companies-XDMOP2GL.js +195 -0
  226. package/dist/complete-XM7VLC4F.js +81 -0
  227. package/dist/config-UE7GCROG.js +88 -0
  228. package/dist/connect-VTDKGYP3.js +42 -0
  229. package/dist/content-5LHM4PBE.js +85 -0
  230. package/dist/content-5LHM4PBE.js.map +1 -0
  231. package/dist/conversation-F53OE25Y.js +93 -0
  232. package/dist/conversion-report-35MLL3FA.js +125 -0
  233. package/dist/conversion-upload-command-CV2TA7OV.js +438 -0
  234. package/dist/conversion-writes-NSZPNMPE.js +120 -0
  235. package/dist/conversions-7YO6DDL3.js +135 -0
  236. package/dist/conversions-XNISCCC2.js +76 -0
  237. package/dist/countries-NMWPKFFW.js +82 -0
  238. package/dist/create-ARERZYCL.js +59 -0
  239. package/dist/create-C6ZVYIF5.js +207 -0
  240. package/dist/create-FAPJFCZE.js +235 -0
  241. package/dist/create-M7TUO3XS.js +130 -0
  242. package/dist/creatives-3YIV6IOK.js +182 -0
  243. package/dist/creatives-QZCO6WGH.js +51 -0
  244. package/dist/creatives-WJLJ3NKP.js +87 -0
  245. package/dist/credentials-2DO23MYD.js +287 -0
  246. package/dist/credentials-2DO23MYD.js.map +1 -0
  247. package/dist/critique-56MNXW7R.js +1449 -0
  248. package/dist/critique-KRIKEHF6.js +213 -0
  249. package/dist/crm-OETFQNR3.js +224 -0
  250. package/dist/crm-WXCFB4TU.js +318 -0
  251. package/dist/crop-VCP2JLQL.js +113 -0
  252. package/dist/currency-MNNDKY4Z.js +88 -0
  253. package/dist/custom-conversions-CIU525HM.js +125 -0
  254. package/dist/customers-GTPEABJI.js +56 -0
  255. package/dist/decide-NFTEKQKC.js +199 -0
  256. package/dist/decide-NFTEKQKC.js.map +1 -0
  257. package/dist/delete-5CURRI25.js +71 -0
  258. package/dist/delete-CLC2Q2OE.js +63 -0
  259. package/dist/delete-CQ6Q3URI.js +54 -0
  260. package/dist/delete-JIRZBBDD.js +69 -0
  261. package/dist/delete-LD3F4UIW.js +66 -0
  262. package/dist/delete-LGZ5OI4C.js +71 -0
  263. package/dist/demographics-EK2ZPHWK.js +138 -0
  264. package/dist/describe-BNB6643C.js +97 -0
  265. package/dist/describe-ZXGFTCDR.js +97 -0
  266. package/dist/dimensions-IU4ETG4U.js +101 -0
  267. package/dist/discard-VWCXYJWU.js +66 -0
  268. package/dist/discover-4EQWGIAN.js +172 -0
  269. package/dist/discover-4N3V5K2R.js +93 -0
  270. package/dist/discover-4N3V5K2R.js.map +1 -0
  271. package/dist/domain-I2SAGVAB.js +98 -0
  272. package/dist/download-D7TB4744.js +299 -0
  273. package/dist/draft-4VOOSJQJ.js +233 -0
  274. package/dist/draft-6KG2YFOY.js +328 -0
  275. package/dist/draft-APDGACIC.js +306 -0
  276. package/dist/draft-D76C4JR3.js +103 -0
  277. package/dist/draft-HFH2Y6F5.js +281 -0
  278. package/dist/draft-NLUJX7TA.js +307 -0
  279. package/dist/draft-NLUJX7TA.js.map +1 -0
  280. package/dist/draft-NVVWWQVC.js +217 -0
  281. package/dist/draft-NWLPLTWM.js +100 -0
  282. package/dist/engine/index.js +12 -13
  283. package/dist/env-LHLGM2YJ.js +43 -0
  284. package/dist/experiment-4SUIXVBP.js +1397 -0
  285. package/dist/experiment-4SUIXVBP.js.map +1 -0
  286. package/dist/export-VGCFD7GL.js +168 -0
  287. package/dist/extract-32J7V2RX.js +113 -0
  288. package/dist/facets-WVI6VBDC.js +114 -0
  289. package/dist/favorites-WKV5H5OF.js +178 -0
  290. package/dist/feed-2CRO4HA6.js +177 -0
  291. package/dist/feed-2CRO4HA6.js.map +1 -0
  292. package/dist/feedback-NMNKYEMU.js +66 -0
  293. package/dist/feedback-record-2VYBMWMO.js +175 -0
  294. package/dist/fetch-CENBDLT6.js +176 -0
  295. package/dist/fetch-XQFPE3MI.js +139 -0
  296. package/dist/find-PNDKEOXT.js +134 -0
  297. package/dist/fit-SEWGCEW5.js +45 -0
  298. package/dist/flows-3N4RPGSP.js +247 -0
  299. package/dist/flows-3N4RPGSP.js.map +1 -0
  300. package/dist/follow-BB5KUEXZ.js +94 -0
  301. package/dist/follow-BB5KUEXZ.js.map +1 -0
  302. package/dist/follow-competitors-EURYGGXE.js +112 -0
  303. package/dist/follow-competitors-EURYGGXE.js.map +1 -0
  304. package/dist/following-CA5BQXYB.js +113 -0
  305. package/dist/following-CA5BQXYB.js.map +1 -0
  306. package/dist/fonts-KUCQAR7N.js +34 -0
  307. package/dist/forecast-G5KRTVDM.js +168 -0
  308. package/dist/forecast-G5KRTVDM.js.map +1 -0
  309. package/dist/forecast-PI52G2GL.js +104 -0
  310. package/dist/funding-ZRC25X5I.js +85 -0
  311. package/dist/funnel-WGFMUWQP.js +394 -0
  312. package/dist/funnel-WGFMUWQP.js.map +1 -0
  313. package/dist/ga4-YDKXVJOC.js +55 -0
  314. package/dist/generate-BVMMX3SS.js +262 -0
  315. package/dist/get-7MSF4RVQ.js +59 -0
  316. package/dist/get-FILH7BDT.js +78 -0
  317. package/dist/get-FILH7BDT.js.map +1 -0
  318. package/dist/get-KFVPIDIA.js +61 -0
  319. package/dist/get-NHQ2XYKZ.js +63 -0
  320. package/dist/get-TCDAYTZA.js +56 -0
  321. package/dist/get-UMMTY74K.js +92 -0
  322. package/dist/get-YM77HCL5.js +63 -0
  323. package/dist/gif-X323HXS2.js +94 -0
  324. package/dist/google-76A4MHQH.js +136 -0
  325. package/dist/google-OZTCY7HD.js +3190 -0
  326. package/dist/google-OZTCY7HD.js.map +1 -0
  327. package/dist/google-ads-S6O4MLKA.js +195 -0
  328. package/dist/group-CTIZVYX2.js +43 -0
  329. package/dist/group-HKWQ75CJ.js +43 -0
  330. package/dist/gsc-CORRYJBJ.js +30 -0
  331. package/dist/history-4U7FJGEM.js +133 -0
  332. package/dist/history-BXOMJ5PL.js +67 -0
  333. package/dist/hubspot-I5MFAZ4G.js +779 -0
  334. package/dist/icon-6QW63AHG.js +137 -0
  335. package/dist/ideas-QDS5XA4S.js +32 -0
  336. package/dist/images-NVTA2OHD.js +90 -0
  337. package/dist/improve-WR23CHYH.js +86 -0
  338. package/dist/ingest-QAVJ2J7F.js +107 -0
  339. package/dist/ingest-XJHV3GG6.js +23 -0
  340. package/dist/insights-AW7SOGHI.js +122 -0
  341. package/dist/insights-IJEPLWQH.js +423 -0
  342. package/dist/inspect-7I53PWCF.js +189 -0
  343. package/dist/inspiration-TJJFUVY2.js +53 -0
  344. package/dist/intent-VEUQS34Z.js +95 -0
  345. package/dist/job-K7LAIBYN.js +202 -0
  346. package/dist/job-create-DFZL4CGA.js +109 -0
  347. package/dist/job-status-6Q2TVTEO.js +74 -0
  348. package/dist/keep-XJFCLVCP.js +78 -0
  349. package/dist/keyword-gap-CUOGKUMM.js +130 -0
  350. package/dist/keyword-metrics-LK7FME4N.js +197 -0
  351. package/dist/keywords-for-site-4E7UU44P.js +128 -0
  352. package/dist/landing-I65PFN7H.js +28 -0
  353. package/dist/landings-SQJWZOJR.js +151 -0
  354. package/dist/landings-SQJWZOJR.js.map +1 -0
  355. package/dist/languages-KPPKX3E2.js +40 -0
  356. package/dist/languages-MGEBLO64.js +55 -0
  357. package/dist/launches-E3Y6NCQE.js +19 -0
  358. package/dist/layerize-N4IQ2KE7.js +190 -0
  359. package/dist/leads-PPMOBH7U.js +293 -0
  360. package/dist/leads-TNEQUOUN.js +90 -0
  361. package/dist/learn-QQS323PS.js +203 -0
  362. package/dist/library-4QQAVB6X.js +109 -0
  363. package/dist/lighthouse-CD47CPJM.js +75 -0
  364. package/dist/line-item-writes-QJZQUQ4E.js +208 -0
  365. package/dist/line-items-ESEAXGBV.js +103 -0
  366. package/dist/link-DPJYS4WY.js +64 -0
  367. package/dist/linkedin-EJPNC4VY.js +1008 -0
  368. package/dist/list-A45NTPSJ.js +76 -0
  369. package/dist/list-GNP4GIV2.js +51 -0
  370. package/dist/list-KQFLOVC4.js +57 -0
  371. package/dist/list-MDHK3ENJ.js +50 -0
  372. package/dist/list-PRUFXMXW.js +65 -0
  373. package/dist/list-S3BAQCTL.js +303 -0
  374. package/dist/list-UU5NPLJ7.js +151 -0
  375. package/dist/list-V525A4Z4.js +63 -0
  376. package/dist/locations-J2PVPDZU.js +67 -0
  377. package/dist/locations-TFOYESTF.js +40 -0
  378. package/dist/log-XQBEJOOW.js +92 -0
  379. package/dist/logo-KQD5KUAH.js +18 -0
  380. package/dist/lookup-QCREWUV4.js +22 -0
  381. package/dist/make-NZHJ7ICV.js +633 -0
  382. package/dist/make-NZHJ7ICV.js.map +1 -0
  383. package/dist/map-7SHU5WCJ.js +433 -0
  384. package/dist/map-7SHU5WCJ.js.map +1 -0
  385. package/dist/mcp-GATPHY4D.js +463 -0
  386. package/dist/mcp-GATPHY4D.js.map +1 -0
  387. package/dist/media-2WENMOAA.js +15 -0
  388. package/dist/media-N4C6Q4IV.js +89 -0
  389. package/dist/media-sources-BPOTW6IB.js +32 -0
  390. package/dist/members-BOYZKLNK.js +44 -0
  391. package/dist/meta-PXYHWOOG.js +69 -0
  392. package/dist/metrics-FZANUN7E.js +152 -0
  393. package/dist/models-W6EN3WB7.js +155 -0
  394. package/dist/normalize-LOMDPNFJ.js +806 -0
  395. package/dist/normalize-RP3D7BUT.js +141 -0
  396. package/dist/normalize-RP3D7BUT.js.map +1 -0
  397. package/dist/options-FXND5P2W.js +122 -0
  398. package/dist/options-FXND5P2W.js.map +1 -0
  399. package/dist/output-SR4DN3A4.js +24 -0
  400. package/dist/page-FS76L5WU.js +105 -0
  401. package/dist/pages-INMNJSX2.js +66 -0
  402. package/dist/performance-53D43XVZ.js +24 -0
  403. package/dist/pinterest-JMHFPNVW.js +96 -0
  404. package/dist/pixels-K6ZD7SXV.js +60 -0
  405. package/dist/pixels-XPBBJYE3.js +108 -0
  406. package/dist/plan-45ESBYZA.js +207 -0
  407. package/dist/plan-45ESBYZA.js.map +1 -0
  408. package/dist/preview-KXSNG3BS.js +169 -0
  409. package/dist/profile-I4IXWBAQ.js +159 -0
  410. package/dist/profile-I4IXWBAQ.js.map +1 -0
  411. package/dist/promoted-tweet-writes-I6HVQRDB.js +180 -0
  412. package/dist/promoted-tweets-YAQ5ZUXI.js +119 -0
  413. package/dist/properties-NYNEONHI.js +101 -0
  414. package/dist/publish-Z5DVKZSG.js +322 -0
  415. package/dist/query-MSZPOHFL.js +61 -0
  416. package/dist/query-RK2TFMBI.js +236 -0
  417. package/dist/query-TWNH6GV7.js +247 -0
  418. package/dist/questionnaire-CNXN2TUZ.js +93 -0
  419. package/dist/questionnaire-CNXN2TUZ.js.map +1 -0
  420. package/dist/read-2AGRYWXU.js +141 -0
  421. package/dist/read-2AGRYWXU.js.map +1 -0
  422. package/dist/reddit-6DQTBTO6.js +26 -0
  423. package/dist/refresh-TP2TOGS6.js +94 -0
  424. package/dist/release-PHQEZ2ZX.js +60 -0
  425. package/dist/relevant-pages-ORVFFVAM.js +99 -0
  426. package/dist/remove-ETLMMDEA.js +48 -0
  427. package/dist/remove-KTBM5YSH.js +50 -0
  428. package/dist/reopen-OURQR6U7.js +63 -0
  429. package/dist/rerun-HGCVZ3D4.js +84 -0
  430. package/dist/rerun-HGCVZ3D4.js.map +1 -0
  431. package/dist/research-P23YBKS3.js +62 -0
  432. package/dist/research-WCNWT5Y5.js +262 -0
  433. package/dist/reset-2NCAWWN4.js +54 -0
  434. package/dist/reset-65R2CUB5.js +54 -0
  435. package/dist/resolve-65FKZ23N.js +121 -0
  436. package/dist/retry-P5K6LE6K.js +60 -0
  437. package/dist/retry-UIPDQJ5F.js +62 -0
  438. package/dist/retry-failed-QMWQ6TRL.js +45 -0
  439. package/dist/run-NDMEYUOI.js +59 -0
  440. package/dist/run-OP3T4TCF.js +65 -0
  441. package/dist/scaffold-ad-A5MWIOQJ.js +1548 -0
  442. package/dist/scaffold-ad-A5MWIOQJ.js.map +1 -0
  443. package/dist/scaffold-static-ad-MFPDXR6J.js +971 -0
  444. package/dist/scaffold-static-ad-MFPDXR6J.js.map +1 -0
  445. package/dist/scaffold-video-N6TY36I3.js +872 -0
  446. package/dist/scaffold-video-N6TY36I3.js.map +1 -0
  447. package/dist/schedule-6D667AXB.js +61 -0
  448. package/dist/schedule-KXLQVCZW.js +66 -0
  449. package/dist/scheduled-agents-LYWEX4PU.js +49 -0
  450. package/dist/schema-5HZIAHY3.js +132 -0
  451. package/dist/schema-5HZIAHY3.js.map +1 -0
  452. package/dist/schema-CCFLFAOY.js +63 -0
  453. package/dist/scrape-DBZQFIW7.js +2241 -0
  454. package/dist/screenshot-MPFANYIH.js +102 -0
  455. package/dist/search-4AANIUUL.js +91 -0
  456. package/dist/search-EMJABZYF.js +224 -0
  457. package/dist/search-HQDN7DOF.js +174 -0
  458. package/dist/search-OVHC4CRQ.js +26 -0
  459. package/dist/search-YSGZRANA.js +92 -0
  460. package/dist/search-copy-E3EVO7YT.js +168 -0
  461. package/dist/search-copy-E3EVO7YT.js.map +1 -0
  462. package/dist/seeds-XTBVEHSF.js +101 -0
  463. package/dist/seeds-XTBVEHSF.js.map +1 -0
  464. package/dist/select-C6BKHB4B.js +94 -0
  465. package/dist/sends-HXN5HSF6.js +309 -0
  466. package/dist/sequences-FRK76ZQV.js +146 -0
  467. package/dist/set-prompt-AOSHNBFC.js +185 -0
  468. package/dist/set-prompt-AOSHNBFC.js.map +1 -0
  469. package/dist/setup-links-BM2GLSSO.js +141 -0
  470. package/dist/shared-EH5ZTQXC.js +31 -0
  471. package/dist/site-3PEJYQJW.js +177 -0
  472. package/dist/sitemaps-7KHY2KXI.js +87 -0
  473. package/dist/sites-6B76JW6C.js +101 -0
  474. package/dist/skills-SCTT3LCM.js +47 -0
  475. package/dist/sources-ODJBHNGY.js +30 -0
  476. package/dist/sources-ZTLMXFHK.js +454 -0
  477. package/dist/sources-ZTLMXFHK.js.map +1 -0
  478. package/dist/stale-2O54QXY2.js +63 -0
  479. package/dist/stats-4NBOAOR2.js +34 -0
  480. package/dist/status-NE5OBM4B.js +62 -0
  481. package/dist/sticker-NLXBIOBO.js +94 -0
  482. package/dist/stock-F3SA4VHV.js +179 -0
  483. package/dist/studio-ZPDIOFKL.js +49 -0
  484. package/dist/sync-5GJNZDGZ.js +54 -0
  485. package/dist/sync-FCNFXTFD.js +265 -0
  486. package/dist/sync-YXCZ3DHY.js +54 -0
  487. package/dist/sync-definition-IL6Z4ZI7.js +52 -0
  488. package/dist/sync-definition-IL6Z4ZI7.js.map +1 -0
  489. package/dist/tag-manager-YM4Q3CZT.js +43 -0
  490. package/dist/tags-456UOYJU.js +26 -0
  491. package/dist/tags-5YPYHV5V.js +20 -0
  492. package/dist/tags-HXMHEHG2.js +224 -0
  493. package/dist/tags-K34666RY.js +20 -0
  494. package/dist/tags-NB35ISO3.js +20 -0
  495. package/dist/targeting-constants-3CMGPWRI.js +118 -0
  496. package/dist/targeting-criteria-UKQ4WF5C.js +113 -0
  497. package/dist/targets-VQ4BQ657.js +102 -0
  498. package/dist/templates-PMUIOVDX.js +178 -0
  499. package/dist/testimonials-XZCGVD6V.js +32 -0
  500. package/dist/themes-TVXLYJ7Y.js +94 -0
  501. package/dist/themes-TVXLYJ7Y.js.map +1 -0
  502. package/dist/top-companies-VMRIDOOH.js +108 -0
  503. package/dist/translate-F5KR62LF.js +598 -0
  504. package/dist/triggers-2MZX7W6Y.js +141 -0
  505. package/dist/tweets-XWE3VYQ4.js +123 -0
  506. package/dist/unfollow-7U4UBAJX.js +46 -0
  507. package/dist/unlink-AWSNY3QS.js +67 -0
  508. package/dist/unstage-OGB43ZXO.js +95 -0
  509. package/dist/unstage-RQBOQ4DY.js +84 -0
  510. package/dist/update-4KWYHMLS.js +63 -0
  511. package/dist/update-6DKEWM64.js +142 -0
  512. package/dist/update-G6EKHPIF.js +155 -0
  513. package/dist/update-OFV452AC.js +98 -0
  514. package/dist/upload-6CJWMQ24.js +126 -0
  515. package/dist/upload-GUKMQ5MT.js +150 -0
  516. package/dist/upscale-A456MESF.js +109 -0
  517. package/dist/url-options-FGDOVUSI.js +130 -0
  518. package/dist/url-options-FGDOVUSI.js.map +1 -0
  519. package/dist/url-params-OE3UMYMM.js +98 -0
  520. package/dist/use-HBVKVT5S.js +95 -0
  521. package/dist/validate-ZCUZV3L4.js +88 -0
  522. package/dist/validate-ZCUZV3L4.js.map +1 -0
  523. package/dist/variant-HULP57YI.js +338 -0
  524. package/dist/videos-ION7UT3M.js +39 -0
  525. package/dist/view-GCDEJZII.js +121 -0
  526. package/dist/viewer-check-UKYFBFMY.js +68 -0
  527. package/dist/viewer-check-UKYFBFMY.js.map +1 -0
  528. package/dist/web-CCVD6UZ4.js +140 -0
  529. package/dist/winners-WSMWC4M5.js +113 -0
  530. package/dist/winners-WSMWC4M5.js.map +1 -0
  531. package/dist/winning-ads-UCSSFEXD.js +84 -0
  532. package/dist/winning-ads-UCSSFEXD.js.map +1 -0
  533. package/dist/write-commands-47OP673X.js +713 -0
  534. package/dist/write-commands-IJ5IFHS6.js +737 -0
  535. package/dist/write-commands-NNVDWBLG.js +1015 -0
  536. package/dist/write-commands-OBMIVFZJ.js +206 -0
  537. package/dist/x-U32DT24S.js +47 -0
  538. package/package.json +2 -2
  539. package/dist/account-4H7QVBRK.js +0 -80
  540. package/dist/account-DTHGTZCN.js +0 -79
  541. package/dist/account-IEVEOFIK.js +0 -49
  542. package/dist/account-writes-AK42HGRM.js +0 -66
  543. package/dist/accounts-4CDRK4S4.js +0 -75
  544. package/dist/accounts-5QDKBZMH.js +0 -115
  545. package/dist/accounts-5RLG6BBA.js +0 -77
  546. package/dist/accounts-6LSBBXKA.js +0 -611
  547. package/dist/accounts-KYJO3JC6.js +0 -114
  548. package/dist/actions-WH5C6Q7I.js +0 -55
  549. package/dist/active-entities-YUSOUR5M.js +0 -103
  550. package/dist/activities-ZVQOBHZH.js +0 -74
  551. package/dist/ad-group-writes-QQS4223F.js +0 -170
  552. package/dist/ad-groups-WGPDPUI2.js +0 -68
  553. package/dist/ad-writes-XE2IE4DS.js +0 -174
  554. package/dist/add-577QWMCF.js +0 -97
  555. package/dist/add-BZ4QPLK4.js +0 -104
  556. package/dist/add-CUWAW7KG.js +0 -105
  557. package/dist/add-TRSKOIO6.js +0 -305
  558. package/dist/add-TRSKOIO6.js.map +0 -1
  559. package/dist/ads-6UEDYT3O.js +0 -113
  560. package/dist/ads-6UG66KA5.js +0 -40
  561. package/dist/ads-BCOSQALY.js +0 -77
  562. package/dist/adsets-Q5DWGANV.js +0 -176
  563. package/dist/advertisers-OABQDELT.js +0 -120
  564. package/dist/advertisers-YMHPZYNF.js +0 -111
  565. package/dist/advertisers-YMHPZYNF.js.map +0 -1
  566. package/dist/analytics-3YAWQF5K.js +0 -1958
  567. package/dist/analytics-3YAWQF5K.js.map +0 -1
  568. package/dist/analytics-BCZGSSXP.js +0 -433
  569. package/dist/animate-AIZ3GS4J.js +0 -480
  570. package/dist/assign-O6QNAZD5.js +0 -77
  571. package/dist/audience-size-CXPWERR3.js +0 -94
  572. package/dist/audiences-AMRFZRZ7.js +0 -78
  573. package/dist/audiences-HFRVIE2X.js +0 -85
  574. package/dist/audiences-TGD5US2M.js +0 -268
  575. package/dist/audit-AD4ZZNJN.js +0 -88
  576. package/dist/audit-MNOQK3U4.js +0 -151
  577. package/dist/autocomplete-TRCMPNW4.js +0 -111
  578. package/dist/avatars-P3WX5TQP.js +0 -38
  579. package/dist/bid-pricing-6XXSM7C2.js +0 -99
  580. package/dist/brand-LXU7YNCF.js +0 -22
  581. package/dist/brief-Y4F37TH5.js +0 -477
  582. package/dist/brief-Y4F37TH5.js.map +0 -1
  583. package/dist/businesses-JBDQZZIG.js +0 -53
  584. package/dist/campaign-groups-CEAM3WRO.js +0 -95
  585. package/dist/campaign-writes-D6BJAULL.js +0 -165
  586. package/dist/campaign-writes-SXLZFYF6.js +0 -170
  587. package/dist/campaigns-CXOKBCPS.js +0 -109
  588. package/dist/campaigns-D6B6Z67Y.js +0 -110
  589. package/dist/campaigns-V3SWBM4E.js +0 -107
  590. package/dist/campaigns-YS3OGQXO.js +0 -76
  591. package/dist/canvas-VH3Q26TK.js +0 -46
  592. package/dist/canvas-VH3Q26TK.js.map +0 -1
  593. package/dist/capabilities-NZPSSS6T.js +0 -144
  594. package/dist/cards-4477BFEV.js +0 -85
  595. package/dist/catalog-GWN3WT7J.js +0 -65
  596. package/dist/catalog-GWN3WT7J.js.map +0 -1
  597. package/dist/catalogs-BRXEDE56.js +0 -128
  598. package/dist/changes-TP7ZZHB3.js +0 -135
  599. package/dist/chatgpt-7W75X3ER.js +0 -47
  600. package/dist/chats-GN3PBFX4.js +0 -262
  601. package/dist/chunk-2BKVVCCV.js +0 -133
  602. package/dist/chunk-2GTYAHDN.js +0 -455
  603. package/dist/chunk-2TK4DEOE.js +0 -74
  604. package/dist/chunk-3OFVFHKT.js +0 -622
  605. package/dist/chunk-3OFVFHKT.js.map +0 -1
  606. package/dist/chunk-4NDCTLI5.js +0 -191
  607. package/dist/chunk-4QEY2L6U.js +0 -486
  608. package/dist/chunk-4Z7DEN75.js +0 -57
  609. package/dist/chunk-5ARG3CQG.js +0 -141
  610. package/dist/chunk-5ARG3CQG.js.map +0 -1
  611. package/dist/chunk-5Z2KSVIV.js +0 -67
  612. package/dist/chunk-6B7VKFS4.js +0 -172
  613. package/dist/chunk-6G5K6ZC6.js +0 -46
  614. package/dist/chunk-6Y7SIP2D.js +0 -4383
  615. package/dist/chunk-6Y7SIP2D.js.map +0 -1
  616. package/dist/chunk-75FDTDLH.js +0 -96
  617. package/dist/chunk-7ED5TAFP.js +0 -346
  618. package/dist/chunk-7J6EHOH6.js +0 -274
  619. package/dist/chunk-7OFNN4CT.js +0 -58
  620. package/dist/chunk-BNCW67EM.js +0 -534
  621. package/dist/chunk-BNCW67EM.js.map +0 -1
  622. package/dist/chunk-C6U6UDHJ.js +0 -106
  623. package/dist/chunk-CFHIW5QZ.js +0 -297
  624. package/dist/chunk-CYEO5ZIO.js +0 -133
  625. package/dist/chunk-CYEO5ZIO.js.map +0 -1
  626. package/dist/chunk-D6744YSX.js +0 -440
  627. package/dist/chunk-D6744YSX.js.map +0 -1
  628. package/dist/chunk-DQMZXK27.js +0 -433
  629. package/dist/chunk-DZSIUEGH.js +0 -136
  630. package/dist/chunk-E4NCRGY3.js +0 -494
  631. package/dist/chunk-EAEOPERX.js +0 -6667
  632. package/dist/chunk-EAEOPERX.js.map +0 -1
  633. package/dist/chunk-EFSYTROP.js +0 -94
  634. package/dist/chunk-ESB5DLIP.js +0 -382
  635. package/dist/chunk-F2S5BLPE.js +0 -97
  636. package/dist/chunk-FTWJFDIN.js +0 -23992
  637. package/dist/chunk-FVF5SXTZ.js +0 -19
  638. package/dist/chunk-GX6VAHY7.js +0 -830
  639. package/dist/chunk-GX6VAHY7.js.map +0 -1
  640. package/dist/chunk-GYU7BWEN.js +0 -111
  641. package/dist/chunk-H26L3OQY.js +0 -42
  642. package/dist/chunk-HRYOZUSK.js +0 -1711
  643. package/dist/chunk-HRYOZUSK.js.map +0 -1
  644. package/dist/chunk-HZUDRKGR.js +0 -98
  645. package/dist/chunk-IFWP3ZDO.js +0 -215
  646. package/dist/chunk-IFWP3ZDO.js.map +0 -1
  647. package/dist/chunk-IGQZ5U3C.js +0 -207
  648. package/dist/chunk-IYU4X5A7.js +0 -592
  649. package/dist/chunk-JERXV5A3.js +0 -26
  650. package/dist/chunk-JVLAV62J.js +0 -3147
  651. package/dist/chunk-JVLAV62J.js.map +0 -1
  652. package/dist/chunk-K6WVV74H.js +0 -6178
  653. package/dist/chunk-K6WVV74H.js.map +0 -1
  654. package/dist/chunk-KLNKEVIY.js +0 -136
  655. package/dist/chunk-KNY76UGC.js +0 -84
  656. package/dist/chunk-L27H2R2N.js +0 -174
  657. package/dist/chunk-L5J3S6B6.js +0 -260
  658. package/dist/chunk-L5J3S6B6.js.map +0 -1
  659. package/dist/chunk-LERTEZST.js +0 -28
  660. package/dist/chunk-LERTEZST.js.map +0 -1
  661. package/dist/chunk-LIQ4SQ2T.js +0 -150
  662. package/dist/chunk-LLOOWRBB.js +0 -496
  663. package/dist/chunk-LLOOWRBB.js.map +0 -1
  664. package/dist/chunk-LS5MTRFI.js +0 -106
  665. package/dist/chunk-LZ73CZGP.js +0 -188
  666. package/dist/chunk-MELOSESI.js +0 -20
  667. package/dist/chunk-MELOSESI.js.map +0 -1
  668. package/dist/chunk-MZL4H5PY.js +0 -225
  669. package/dist/chunk-NAWWC5I3.js +0 -454
  670. package/dist/chunk-NAWWC5I3.js.map +0 -1
  671. package/dist/chunk-ND5MJ3AA.js +0 -60
  672. package/dist/chunk-NE4F3FHN.js +0 -1854
  673. package/dist/chunk-NE4F3FHN.js.map +0 -1
  674. package/dist/chunk-NECTN6N7.js +0 -206
  675. package/dist/chunk-NIJSXVFT.js +0 -304
  676. package/dist/chunk-NJXNU2G6.js +0 -819
  677. package/dist/chunk-NJXNU2G6.js.map +0 -1
  678. package/dist/chunk-NU7JSWVA.js +0 -946
  679. package/dist/chunk-NU7JSWVA.js.map +0 -1
  680. package/dist/chunk-OKJWBB2K.js +0 -5189
  681. package/dist/chunk-OKJWBB2K.js.map +0 -1
  682. package/dist/chunk-ORO7VAXB.js +0 -197
  683. package/dist/chunk-OUTF5JFG.js +0 -51
  684. package/dist/chunk-PBA3YCZA.js +0 -76
  685. package/dist/chunk-PTCIM35Y.js +0 -310
  686. package/dist/chunk-PTCIM35Y.js.map +0 -1
  687. package/dist/chunk-PVUZWHNQ.js +0 -509
  688. package/dist/chunk-PWGWMIIJ.js +0 -25
  689. package/dist/chunk-PZXCWSKV.js +0 -1830
  690. package/dist/chunk-QSN5MZGS.js +0 -74
  691. package/dist/chunk-QVJDPOEB.js +0 -175
  692. package/dist/chunk-R5RIH3N5.js +0 -337
  693. package/dist/chunk-RB5CVIK6.js +0 -1079
  694. package/dist/chunk-RB5CVIK6.js.map +0 -1
  695. package/dist/chunk-RPUSTYHL.js +0 -170
  696. package/dist/chunk-RX6F3GEA.js +0 -610
  697. package/dist/chunk-RZT263H7.js +0 -363
  698. package/dist/chunk-SSJK7FEV.js +0 -2886
  699. package/dist/chunk-SSJK7FEV.js.map +0 -1
  700. package/dist/chunk-STIB5DR5.js +0 -56
  701. package/dist/chunk-T4DD5YMP.js +0 -166
  702. package/dist/chunk-T4DD5YMP.js.map +0 -1
  703. package/dist/chunk-TD2P4HBP.js +0 -55
  704. package/dist/chunk-TEINLN64.js +0 -649
  705. package/dist/chunk-TEINLN64.js.map +0 -1
  706. package/dist/chunk-TUB34FVS.js +0 -96
  707. package/dist/chunk-TX7LZWZD.js +0 -1411
  708. package/dist/chunk-TX7LZWZD.js.map +0 -1
  709. package/dist/chunk-V7CTQOHG.js +0 -92
  710. package/dist/chunk-VAJBWA2U.js +0 -75
  711. package/dist/chunk-VFIOJD5M.js +0 -309
  712. package/dist/chunk-VNUNE5AB.js +0 -160
  713. package/dist/chunk-VVZBBKRC.js +0 -296
  714. package/dist/chunk-W3B4BHQU.js +0 -31
  715. package/dist/chunk-W3B4BHQU.js.map +0 -1
  716. package/dist/chunk-W3ZHJJVT.js +0 -139
  717. package/dist/chunk-WNFIJAUO.js +0 -98
  718. package/dist/chunk-WS2GMOSG.js +0 -74
  719. package/dist/chunk-WTOYCUKH.js +0 -84
  720. package/dist/chunk-X7ZODEXJ.js +0 -36
  721. package/dist/chunk-X7ZODEXJ.js.map +0 -1
  722. package/dist/chunk-XBOK23HI.js +0 -214
  723. package/dist/chunk-XBOK23HI.js.map +0 -1
  724. package/dist/chunk-XCM6XWOB.js +0 -417
  725. package/dist/chunk-XCM6XWOB.js.map +0 -1
  726. package/dist/chunk-XFGAUP5B.js +0 -76
  727. package/dist/chunk-XFGAUP5B.js.map +0 -1
  728. package/dist/chunk-XL3BMSYG.js +0 -125
  729. package/dist/chunk-XQIKDODN.js +0 -103
  730. package/dist/chunk-XTRAI6CL.js +0 -23
  731. package/dist/chunk-XVOI4BIS.js +0 -169
  732. package/dist/chunk-YBMVHGY3.js +0 -333
  733. package/dist/chunk-ZDNOCKKY.js +0 -172
  734. package/dist/chunk-ZDNOCKKY.js.map +0 -1
  735. package/dist/chunk-ZGTCZ6H4.js +0 -159
  736. package/dist/chunk-ZJLETAOO.js +0 -484
  737. package/dist/chunk-ZJLETAOO.js.map +0 -1
  738. package/dist/chunk-ZJWUBJYQ.js +0 -204
  739. package/dist/chunk-ZJWUBJYQ.js.map +0 -1
  740. package/dist/chunk-ZZQXVYUY.js +0 -66
  741. package/dist/claim-25JJM4AG.js +0 -197
  742. package/dist/client-VHN32ZRE.js +0 -19
  743. package/dist/code-YS6ZMGX3.js +0 -76
  744. package/dist/companies-VR5M5PAN.js +0 -195
  745. package/dist/complete-DRMOTC2W.js +0 -81
  746. package/dist/config-CQN5FHMZ.js +0 -88
  747. package/dist/connect-WUDJR2GH.js +0 -40
  748. package/dist/content-3ZPP4SW2.js +0 -81
  749. package/dist/content-3ZPP4SW2.js.map +0 -1
  750. package/dist/conversation-K6LYF2ZP.js +0 -93
  751. package/dist/conversion-report-XQBJ6LG4.js +0 -125
  752. package/dist/conversion-upload-command-AUF3LNTH.js +0 -438
  753. package/dist/conversion-writes-UBCVXP2E.js +0 -120
  754. package/dist/conversions-D236RTUK.js +0 -76
  755. package/dist/conversions-GF32XOWY.js +0 -135
  756. package/dist/countries-ESAKTQAE.js +0 -82
  757. package/dist/create-2D7AIFJI.js +0 -235
  758. package/dist/create-4TFAD6HY.js +0 -59
  759. package/dist/create-IXYXYLLE.js +0 -207
  760. package/dist/create-PKJVFJMO.js +0 -130
  761. package/dist/creatives-OHCFHRZ5.js +0 -182
  762. package/dist/creatives-QLSZFOMB.js +0 -51
  763. package/dist/creatives-UEPLNCPN.js +0 -87
  764. package/dist/credentials-WSLR5VU4.js +0 -1055
  765. package/dist/credentials-WSLR5VU4.js.map +0 -1
  766. package/dist/critique-5PCQ2CJH.js +0 -1449
  767. package/dist/critique-WDO6SKK2.js +0 -213
  768. package/dist/crm-HNUOHXAN.js +0 -224
  769. package/dist/crm-SNIUADNK.js +0 -318
  770. package/dist/crop-2J4RKJ6B.js +0 -113
  771. package/dist/currency-XCGKQ7FE.js +0 -88
  772. package/dist/custom-conversions-2VLJGPRV.js +0 -125
  773. package/dist/customers-72L2KZHO.js +0 -56
  774. package/dist/delete-3AV3ARMX.js +0 -71
  775. package/dist/delete-A5XD52K4.js +0 -69
  776. package/dist/delete-EVGM5B36.js +0 -54
  777. package/dist/delete-MRM2S4Z5.js +0 -71
  778. package/dist/delete-PA2GY5EC.js +0 -63
  779. package/dist/delete-YNNFTFYV.js +0 -66
  780. package/dist/demographics-SYS2E7QC.js +0 -138
  781. package/dist/describe-6NVOWIBE.js +0 -97
  782. package/dist/describe-P3PPIQME.js +0 -97
  783. package/dist/dimensions-EYAYO27I.js +0 -101
  784. package/dist/discard-JS2YJUIM.js +0 -66
  785. package/dist/discover-BJPZNXUQ.js +0 -172
  786. package/dist/domain-XKKH5NCL.js +0 -98
  787. package/dist/download-7T6HIJKD.js +0 -299
  788. package/dist/draft-4AO4YH3V.js +0 -306
  789. package/dist/draft-5YAYCEYY.js +0 -107
  790. package/dist/draft-5YAYCEYY.js.map +0 -1
  791. package/dist/draft-BGUJDHXR.js +0 -103
  792. package/dist/draft-GCUXNPVH.js +0 -217
  793. package/dist/draft-KIBMVKSR.js +0 -100
  794. package/dist/draft-MNFJ4G3C.js +0 -281
  795. package/dist/draft-WWWKSEEE.js +0 -328
  796. package/dist/draft-YDY2Q2K6.js +0 -233
  797. package/dist/env-KIP2J2UB.js +0 -43
  798. package/dist/experiment-LKK77YAN.js +0 -1377
  799. package/dist/experiment-LKK77YAN.js.map +0 -1
  800. package/dist/export-JQRMBJ7D.js +0 -168
  801. package/dist/extract-7QKLME7Z.js +0 -113
  802. package/dist/facets-NVBX5WDT.js +0 -114
  803. package/dist/favorites-NSGF4OV5.js +0 -178
  804. package/dist/feed-RV4KPPXM.js +0 -157
  805. package/dist/feed-RV4KPPXM.js.map +0 -1
  806. package/dist/feedback-OGAPR45R.js +0 -66
  807. package/dist/feedback-record-GVXGDY5Y.js +0 -175
  808. package/dist/fetch-U4TJIHZU.js +0 -176
  809. package/dist/fetch-XF76JABV.js +0 -139
  810. package/dist/find-OTDIX6V4.js +0 -134
  811. package/dist/fit-BOQL6OK3.js +0 -45
  812. package/dist/flows-XVZJ6GOI.js +0 -264
  813. package/dist/flows-XVZJ6GOI.js.map +0 -1
  814. package/dist/follow-FN7LV3WV.js +0 -82
  815. package/dist/follow-FN7LV3WV.js.map +0 -1
  816. package/dist/follow-competitors-MKXFHLXB.js +0 -131
  817. package/dist/follow-competitors-MKXFHLXB.js.map +0 -1
  818. package/dist/following-RKC2FLHI.js +0 -109
  819. package/dist/following-RKC2FLHI.js.map +0 -1
  820. package/dist/fonts-64T6KRZS.js +0 -34
  821. package/dist/forecast-YIIGTHRM.js +0 -104
  822. package/dist/funding-NYO65IMT.js +0 -85
  823. package/dist/funnel-XHDCXXQ5.js +0 -837
  824. package/dist/funnel-XHDCXXQ5.js.map +0 -1
  825. package/dist/ga4-UDQ2HA2J.js +0 -55
  826. package/dist/generate-3XYYITU6.js +0 -262
  827. package/dist/get-3L6W3E3T.js +0 -59
  828. package/dist/get-6RQFDAIN.js +0 -56
  829. package/dist/get-6WEYKOY6.js +0 -63
  830. package/dist/get-P743RPSI.js +0 -63
  831. package/dist/get-XJ3AZX35.js +0 -78
  832. package/dist/get-XJ3AZX35.js.map +0 -1
  833. package/dist/get-XN5ZGDIK.js +0 -61
  834. package/dist/get-YIHTAMRT.js +0 -92
  835. package/dist/gif-53ULFVLR.js +0 -94
  836. package/dist/google-KTO3PLEU.js +0 -136
  837. package/dist/google-M7KEXVK5.js +0 -1872
  838. package/dist/google-M7KEXVK5.js.map +0 -1
  839. package/dist/google-ads-7XAGJVNJ.js +0 -195
  840. package/dist/group-EFZ3AJIE.js +0 -43
  841. package/dist/group-GKWCCX66.js +0 -43
  842. package/dist/gsc-P3QYGDV2.js +0 -30
  843. package/dist/history-EUG4LE44.js +0 -133
  844. package/dist/history-Q3QCT64S.js +0 -67
  845. package/dist/hubspot-UULVEYVO.js +0 -779
  846. package/dist/icon-I43F77FV.js +0 -137
  847. package/dist/ideas-7LXYXS5G.js +0 -32
  848. package/dist/images-3SOTFMJV.js +0 -90
  849. package/dist/improve-BCCU5AS6.js +0 -86
  850. package/dist/ingest-HQUXSBWA.js +0 -107
  851. package/dist/ingest-HYSZC3EX.js +0 -23
  852. package/dist/insights-LNAXV2CG.js +0 -122
  853. package/dist/insights-NZWSJKU4.js +0 -423
  854. package/dist/inspect-HZQ7GSVM.js +0 -189
  855. package/dist/inspiration-P265QJ2H.js +0 -53
  856. package/dist/intent-E3UIVZBN.js +0 -95
  857. package/dist/job-L7RJZMSG.js +0 -202
  858. package/dist/job-create-JUDAN52O.js +0 -109
  859. package/dist/job-status-U43WE3RJ.js +0 -74
  860. package/dist/keep-55CPC7DG.js +0 -78
  861. package/dist/keyword-gap-BG6M665A.js +0 -130
  862. package/dist/keyword-metrics-YG3K7MQZ.js +0 -197
  863. package/dist/keywords-for-site-V4K744TF.js +0 -128
  864. package/dist/landing-3SSX6WK6.js +0 -28
  865. package/dist/languages-HORKPDNH.js +0 -40
  866. package/dist/languages-JSGWCC7Z.js +0 -55
  867. package/dist/layerize-RPD6SNP6.js +0 -190
  868. package/dist/leads-ARUWPHBM.js +0 -293
  869. package/dist/leads-FAHQ6KJX.js +0 -90
  870. package/dist/learn-XNHGNQE5.js +0 -203
  871. package/dist/library-ARKRLCNJ.js +0 -109
  872. package/dist/lighthouse-6ZC45E53.js +0 -75
  873. package/dist/line-item-writes-A6BPZQPL.js +0 -208
  874. package/dist/line-items-J7PXJHMD.js +0 -103
  875. package/dist/link-4GGAQAVH.js +0 -64
  876. package/dist/linkedin-I6JDSTRB.js +0 -1008
  877. package/dist/list-22HZ2S4W.js +0 -63
  878. package/dist/list-7MVBXOJT.js +0 -51
  879. package/dist/list-A5UCIR2J.js +0 -65
  880. package/dist/list-AL7N6X2P.js +0 -50
  881. package/dist/list-AQMGXI4N.js +0 -303
  882. package/dist/list-KAJZFHMN.js +0 -151
  883. package/dist/list-LI4OGQFW.js +0 -57
  884. package/dist/list-P7NAFN6J.js +0 -76
  885. package/dist/locations-2NKBJKBT.js +0 -67
  886. package/dist/locations-J4G5RNPH.js +0 -40
  887. package/dist/log-MUPKKYSJ.js +0 -92
  888. package/dist/logo-2IP663QO.js +0 -18
  889. package/dist/lookup-XK45W2SH.js +0 -22
  890. package/dist/make-3FO76LA7.js +0 -593
  891. package/dist/make-3FO76LA7.js.map +0 -1
  892. package/dist/map-F4LXTAJV.js +0 -404
  893. package/dist/map-F4LXTAJV.js.map +0 -1
  894. package/dist/mcp-NLAQJWG6.js +0 -476
  895. package/dist/mcp-NLAQJWG6.js.map +0 -1
  896. package/dist/media-53DJRC4N.js +0 -15
  897. package/dist/media-6CQYG4UY.js +0 -89
  898. package/dist/media-sources-W2CQFSVQ.js +0 -32
  899. package/dist/members-3U6GINDF.js +0 -44
  900. package/dist/meta-A7KM6TF5.js +0 -69
  901. package/dist/metrics-SQDJ5NQO.js +0 -152
  902. package/dist/models-3Z6MDHQW.js +0 -155
  903. package/dist/normalize-FQ6WP5E4.js +0 -138
  904. package/dist/normalize-FQ6WP5E4.js.map +0 -1
  905. package/dist/normalize-ICQF2AST.js +0 -806
  906. package/dist/options-K6FNT5A3.js +0 -121
  907. package/dist/options-K6FNT5A3.js.map +0 -1
  908. package/dist/output-RAH3TSIL.js +0 -24
  909. package/dist/page-GS3WLT2C.js +0 -105
  910. package/dist/pages-FXYQLHSJ.js +0 -66
  911. package/dist/performance-ZA7VCHOU.js +0 -24
  912. package/dist/pinterest-AUH7WBA7.js +0 -96
  913. package/dist/pixels-TZPF746S.js +0 -60
  914. package/dist/pixels-ZFF4BGUH.js +0 -108
  915. package/dist/preview-AD4GKYIA.js +0 -169
  916. package/dist/promoted-tweet-writes-4H3ZFD6O.js +0 -180
  917. package/dist/promoted-tweets-MCMKPIHM.js +0 -119
  918. package/dist/properties-L2XIYQDS.js +0 -101
  919. package/dist/publish-CW5YSAAL.js +0 -322
  920. package/dist/query-IEZRY6HV.js +0 -1341
  921. package/dist/query-IEZRY6HV.js.map +0 -1
  922. package/dist/query-SGGBCHTF.js +0 -236
  923. package/dist/query-VTGVZQIO.js +0 -247
  924. package/dist/read-LSF7DYTG.js +0 -140
  925. package/dist/read-LSF7DYTG.js.map +0 -1
  926. package/dist/reddit-P7LLO4TK.js +0 -26
  927. package/dist/refresh-IGHEOA6Y.js +0 -94
  928. package/dist/release-C74JOYDA.js +0 -60
  929. package/dist/relevant-pages-OWMNUCP7.js +0 -99
  930. package/dist/remove-6LGGKMLJ.js +0 -48
  931. package/dist/remove-HPN62MPQ.js +0 -50
  932. package/dist/reopen-XI53RP7R.js +0 -63
  933. package/dist/rerun-2ITYGAIT.js +0 -85
  934. package/dist/rerun-2ITYGAIT.js.map +0 -1
  935. package/dist/research-HAHUTFVJ.js +0 -262
  936. package/dist/research-O6QXFCD7.js +0 -62
  937. package/dist/reset-BISRUHT4.js +0 -54
  938. package/dist/reset-YMKVEOS4.js +0 -54
  939. package/dist/resolve-D2VESQ45.js +0 -121
  940. package/dist/retry-CGBATPQX.js +0 -62
  941. package/dist/retry-SUKRXBHX.js +0 -60
  942. package/dist/retry-failed-6HXPUVXJ.js +0 -45
  943. package/dist/run-BFERU46Q.js +0 -65
  944. package/dist/run-HSZFWRYZ.js +0 -60
  945. package/dist/scaffold-ad-BYQYVB2C.js +0 -1549
  946. package/dist/scaffold-ad-BYQYVB2C.js.map +0 -1
  947. package/dist/scaffold-static-ad-5MXVTMEE.js +0 -966
  948. package/dist/scaffold-static-ad-5MXVTMEE.js.map +0 -1
  949. package/dist/scaffold-video-KEIHX3UD.js +0 -873
  950. package/dist/scaffold-video-KEIHX3UD.js.map +0 -1
  951. package/dist/schedule-O2K6M43V.js +0 -66
  952. package/dist/schedule-XJ24PL3K.js +0 -61
  953. package/dist/scheduled-agents-HWEKBANT.js +0 -49
  954. package/dist/schema-6GR77VJG.js +0 -63
  955. package/dist/schema-TAAAJHOJ.js +0 -129
  956. package/dist/schema-TAAAJHOJ.js.map +0 -1
  957. package/dist/scrape-ETAMW43A.js +0 -2241
  958. package/dist/screenshot-YCQF25ZB.js +0 -102
  959. package/dist/search-742XSULP.js +0 -224
  960. package/dist/search-MEEM4D3W.js +0 -92
  961. package/dist/search-NVCIIGQS.js +0 -174
  962. package/dist/search-OQNGSMUH.js +0 -91
  963. package/dist/search-UO5KJTYS.js +0 -26
  964. package/dist/seeds-N6FF5S4T.js +0 -101
  965. package/dist/seeds-N6FF5S4T.js.map +0 -1
  966. package/dist/select-K3EMTTI3.js +0 -94
  967. package/dist/sends-WGJVQUMF.js +0 -309
  968. package/dist/sequences-OIPVR7JL.js +0 -146
  969. package/dist/set-prompt-PY7FWYX6.js +0 -186
  970. package/dist/set-prompt-PY7FWYX6.js.map +0 -1
  971. package/dist/setup-links-5ZCASHAL.js +0 -141
  972. package/dist/shared-HJDFNID4.js +0 -31
  973. package/dist/site-7PSCHITE.js +0 -177
  974. package/dist/sitemaps-POPZJTAX.js +0 -87
  975. package/dist/sites-262H6LM4.js +0 -101
  976. package/dist/skills-6TQZLIMP.js +0 -47
  977. package/dist/sources-GEB6OEGY.js +0 -421
  978. package/dist/sources-GEB6OEGY.js.map +0 -1
  979. package/dist/sources-ICMUQMCJ.js +0 -30
  980. package/dist/stale-KBY5WARW.js +0 -63
  981. package/dist/stats-NNXZMPZR.js +0 -34
  982. package/dist/status-ZX5WM5PJ.js +0 -62
  983. package/dist/sticker-4KMBSMP5.js +0 -94
  984. package/dist/stock-2YCDN3N6.js +0 -179
  985. package/dist/studio-RA7QQH4O.js +0 -49
  986. package/dist/sync-CF7FVUQJ.js +0 -54
  987. package/dist/sync-TZNIPZRX.js +0 -54
  988. package/dist/sync-ZSNUBYPM.js +0 -265
  989. package/dist/sync-definition-ADXXWWV5.js +0 -53
  990. package/dist/tag-manager-DYZUOIAS.js +0 -43
  991. package/dist/tags-4OZCALA3.js +0 -20
  992. package/dist/tags-4PXXFIPU.js +0 -26
  993. package/dist/tags-KFVUEPL6.js +0 -20
  994. package/dist/tags-TESETZGC.js +0 -224
  995. package/dist/tags-WIMUIZHU.js +0 -20
  996. package/dist/targeting-constants-XJ2VOW7K.js +0 -118
  997. package/dist/targeting-criteria-VRI7V6C5.js +0 -113
  998. package/dist/targets-ERVS2VEU.js +0 -102
  999. package/dist/templates-TE6LBUIP.js +0 -178
  1000. package/dist/testimonials-FV7KPAPK.js +0 -32
  1001. package/dist/top-companies-B5M43KGJ.js +0 -108
  1002. package/dist/translate-OKADZCBC.js +0 -598
  1003. package/dist/triggers-JLJQOSKI.js +0 -141
  1004. package/dist/tweets-ATP3FQAC.js +0 -123
  1005. package/dist/unfollow-CBVPGPF7.js +0 -46
  1006. package/dist/unlink-KMWDKVIC.js +0 -67
  1007. package/dist/unstage-4ZEULXEQ.js +0 -95
  1008. package/dist/unstage-M4IQKJIO.js +0 -84
  1009. package/dist/update-5MBR4TPK.js +0 -155
  1010. package/dist/update-AHDGHOCP.js +0 -142
  1011. package/dist/update-K6LFJHNI.js +0 -63
  1012. package/dist/update-PNRNYXUW.js +0 -98
  1013. package/dist/upload-KAQC4AH7.js +0 -126
  1014. package/dist/upload-L5SYZB3X.js +0 -150
  1015. package/dist/upscale-YWRLFU22.js +0 -109
  1016. package/dist/url-options-GGXAL3J4.js +0 -127
  1017. package/dist/url-options-GGXAL3J4.js.map +0 -1
  1018. package/dist/url-params-SM32OOXZ.js +0 -98
  1019. package/dist/use-UT2DIZOG.js +0 -95
  1020. package/dist/validate-NCTK5BXD.js +0 -89
  1021. package/dist/validate-NCTK5BXD.js.map +0 -1
  1022. package/dist/variant-FLZJYGYL.js +0 -338
  1023. package/dist/videos-A32DPGHD.js +0 -39
  1024. package/dist/view-NPAG66QK.js +0 -121
  1025. package/dist/viewer-check-L4B4LIAX.js +0 -69
  1026. package/dist/web-TZEIFUYY.js +0 -140
  1027. package/dist/winners-I5BMATJZ.js +0 -79
  1028. package/dist/winners-I5BMATJZ.js.map +0 -1
  1029. package/dist/winning-ads-THIR7E5S.js +0 -62
  1030. package/dist/winning-ads-THIR7E5S.js.map +0 -1
  1031. package/dist/write-commands-CE4FIQ6Y.js +0 -1015
  1032. package/dist/write-commands-CT74VHH6.js +0 -737
  1033. package/dist/write-commands-ERKVRHTC.js +0 -206
  1034. package/dist/write-commands-WTRSOSO3.js +0 -713
  1035. package/dist/x-YXABYM5U.js +0 -47
  1036. /package/dist/{account-DTHGTZCN.js.map → account-JG7QD522.js.map} +0 -0
  1037. /package/dist/{account-4H7QVBRK.js.map → account-V6PB6PA5.js.map} +0 -0
  1038. /package/dist/{account-IEVEOFIK.js.map → account-VLPX7EZT.js.map} +0 -0
  1039. /package/dist/{account-writes-AK42HGRM.js.map → account-writes-BGREY7ZL.js.map} +0 -0
  1040. /package/dist/{accounts-KYJO3JC6.js.map → accounts-2FINK5GZ.js.map} +0 -0
  1041. /package/dist/{accounts-4CDRK4S4.js.map → accounts-2UV5Z3Y6.js.map} +0 -0
  1042. /package/dist/{accounts-5RLG6BBA.js.map → accounts-3EX2PFJB.js.map} +0 -0
  1043. /package/dist/{accounts-5QDKBZMH.js.map → accounts-G2QT3ZVP.js.map} +0 -0
  1044. /package/dist/{accounts-6LSBBXKA.js.map → accounts-N63J5YTK.js.map} +0 -0
  1045. /package/dist/{actions-WH5C6Q7I.js.map → actions-PA2BPIYO.js.map} +0 -0
  1046. /package/dist/{active-entities-YUSOUR5M.js.map → active-entities-RDXDSMA2.js.map} +0 -0
  1047. /package/dist/{activities-ZVQOBHZH.js.map → activities-RBTU2Q24.js.map} +0 -0
  1048. /package/dist/{ad-group-writes-QQS4223F.js.map → ad-group-writes-5NTRJTVE.js.map} +0 -0
  1049. /package/dist/{ad-groups-WGPDPUI2.js.map → ad-groups-4OTAKWUC.js.map} +0 -0
  1050. /package/dist/{ad-writes-XE2IE4DS.js.map → ad-writes-T7W3DDKK.js.map} +0 -0
  1051. /package/dist/{add-CUWAW7KG.js.map → add-4VKA4NDH.js.map} +0 -0
  1052. /package/dist/{add-577QWMCF.js.map → add-MQO33HL3.js.map} +0 -0
  1053. /package/dist/{add-BZ4QPLK4.js.map → add-QM7ANAVG.js.map} +0 -0
  1054. /package/dist/{ads-6UEDYT3O.js.map → ads-IJCFN2N3.js.map} +0 -0
  1055. /package/dist/{ads-6UG66KA5.js.map → ads-QKMLAPZC.js.map} +0 -0
  1056. /package/dist/{ads-BCOSQALY.js.map → ads-XYAWONXR.js.map} +0 -0
  1057. /package/dist/{adsets-Q5DWGANV.js.map → adsets-DPTIKGTG.js.map} +0 -0
  1058. /package/dist/{advertisers-OABQDELT.js.map → advertisers-SZFDOPBQ.js.map} +0 -0
  1059. /package/dist/{analytics-BCZGSSXP.js.map → analytics-HFBYIPZ7.js.map} +0 -0
  1060. /package/dist/{animate-AIZ3GS4J.js.map → animate-LUKNHCF4.js.map} +0 -0
  1061. /package/dist/{assign-O6QNAZD5.js.map → assign-QCICUD72.js.map} +0 -0
  1062. /package/dist/{audience-size-CXPWERR3.js.map → audience-size-HML4BLHJ.js.map} +0 -0
  1063. /package/dist/{audiences-TGD5US2M.js.map → audiences-BSABKS5K.js.map} +0 -0
  1064. /package/dist/{audiences-AMRFZRZ7.js.map → audiences-FWOOSUSJ.js.map} +0 -0
  1065. /package/dist/{audiences-HFRVIE2X.js.map → audiences-VK4M7GLQ.js.map} +0 -0
  1066. /package/dist/{audit-MNOQK3U4.js.map → audit-DUM55J5U.js.map} +0 -0
  1067. /package/dist/{audit-AD4ZZNJN.js.map → audit-JR5R75XK.js.map} +0 -0
  1068. /package/dist/{autocomplete-TRCMPNW4.js.map → autocomplete-VX4PMMLR.js.map} +0 -0
  1069. /package/dist/{avatars-P3WX5TQP.js.map → avatars-5KCRSUJ3.js.map} +0 -0
  1070. /package/dist/{bid-pricing-6XXSM7C2.js.map → bid-pricing-AIUACXUH.js.map} +0 -0
  1071. /package/dist/{brand-LXU7YNCF.js.map → brand-UBTC2WXR.js.map} +0 -0
  1072. /package/dist/{businesses-JBDQZZIG.js.map → businesses-P3RX4UXS.js.map} +0 -0
  1073. /package/dist/{campaign-groups-CEAM3WRO.js.map → campaign-groups-SJZEDIBL.js.map} +0 -0
  1074. /package/dist/{campaign-writes-SXLZFYF6.js.map → campaign-writes-5BPVXG4C.js.map} +0 -0
  1075. /package/dist/{campaign-writes-D6BJAULL.js.map → campaign-writes-VE6QLIDA.js.map} +0 -0
  1076. /package/dist/{campaigns-CXOKBCPS.js.map → campaigns-JEWEDCTC.js.map} +0 -0
  1077. /package/dist/{campaigns-D6B6Z67Y.js.map → campaigns-MEIMSHJF.js.map} +0 -0
  1078. /package/dist/{campaigns-V3SWBM4E.js.map → campaigns-NCGJNJKS.js.map} +0 -0
  1079. /package/dist/{campaigns-YS3OGQXO.js.map → campaigns-XY7QWHDN.js.map} +0 -0
  1080. /package/dist/{capabilities-NZPSSS6T.js.map → capabilities-W6SPXOPF.js.map} +0 -0
  1081. /package/dist/{cards-4477BFEV.js.map → cards-CLD4WX6G.js.map} +0 -0
  1082. /package/dist/{catalogs-BRXEDE56.js.map → catalogs-DINPKQXY.js.map} +0 -0
  1083. /package/dist/{changes-TP7ZZHB3.js.map → changes-N2YZXAPF.js.map} +0 -0
  1084. /package/dist/{chatgpt-7W75X3ER.js.map → chatgpt-TPAP6BVY.js.map} +0 -0
  1085. /package/dist/{chats-GN3PBFX4.js.map → chats-FKVVBXVF.js.map} +0 -0
  1086. /package/dist/{chunk-XQIKDODN.js.map → chunk-24IQ6K7K.js.map} +0 -0
  1087. /package/dist/{chunk-CFHIW5QZ.js.map → chunk-2FZG5DD2.js.map} +0 -0
  1088. /package/dist/{chunk-RZT263H7.js.map → chunk-2T3EH2MU.js.map} +0 -0
  1089. /package/dist/{chunk-L27H2R2N.js.map → chunk-2Y5UE2CV.js.map} +0 -0
  1090. /package/dist/{chunk-PZXCWSKV.js.map → chunk-3KPQDXIU.js.map} +0 -0
  1091. /package/dist/{chunk-6G5K6ZC6.js.map → chunk-4AFGT3L3.js.map} +0 -0
  1092. /package/dist/{chunk-MZL4H5PY.js.map → chunk-4JKBMKFC.js.map} +0 -0
  1093. /package/dist/{chunk-RX6F3GEA.js.map → chunk-4KBWL7S4.js.map} +0 -0
  1094. /package/dist/{chunk-KLNKEVIY.js.map → chunk-4R3QKEDV.js.map} +0 -0
  1095. /package/dist/{chunk-VFIOJD5M.js.map → chunk-6SL6463H.js.map} +0 -0
  1096. /package/dist/{chunk-OUTF5JFG.js.map → chunk-7TRSFEHZ.js.map} +0 -0
  1097. /package/dist/{chunk-4NDCTLI5.js.map → chunk-APNV7FMK.js.map} +0 -0
  1098. /package/dist/{chunk-PBA3YCZA.js.map → chunk-BCSOWRQL.js.map} +0 -0
  1099. /package/dist/{chunk-VVZBBKRC.js.map → chunk-BJEW3LST.js.map} +0 -0
  1100. /package/dist/{chunk-LS5MTRFI.js.map → chunk-BYKUAX26.js.map} +0 -0
  1101. /package/dist/{chunk-XVOI4BIS.js.map → chunk-C7NPNSFO.js.map} +0 -0
  1102. /package/dist/{chunk-EFSYTROP.js.map → chunk-CVIMIOPO.js.map} +0 -0
  1103. /package/dist/{chunk-WS2GMOSG.js.map → chunk-DAKIMGUS.js.map} +0 -0
  1104. /package/dist/{chunk-PWGWMIIJ.js.map → chunk-DCRUGS3G.js.map} +0 -0
  1105. /package/dist/{chunk-C6U6UDHJ.js.map → chunk-DMA77LLI.js.map} +0 -0
  1106. /package/dist/{chunk-JERXV5A3.js.map → chunk-EESOZY5S.js.map} +0 -0
  1107. /package/dist/{chunk-QVJDPOEB.js.map → chunk-EIZMOICE.js.map} +0 -0
  1108. /package/dist/{chunk-DZSIUEGH.js.map → chunk-F3IVR3V3.js.map} +0 -0
  1109. /package/dist/{chunk-LZ73CZGP.js.map → chunk-FSX6CQ2Z.js.map} +0 -0
  1110. /package/dist/{chunk-STIB5DR5.js.map → chunk-G7LAQE56.js.map} +0 -0
  1111. /package/dist/{chunk-ZZQXVYUY.js.map → chunk-G7QKXFQ2.js.map} +0 -0
  1112. /package/dist/{chunk-XTRAI6CL.js.map → chunk-G7XY4T6K.js.map} +0 -0
  1113. /package/dist/{chunk-7ED5TAFP.js.map → chunk-HCDCWXSU.js.map} +0 -0
  1114. /package/dist/{chunk-R5RIH3N5.js.map → chunk-I4IVUAQN.js.map} +0 -0
  1115. /package/dist/{chunk-2TK4DEOE.js.map → chunk-IWNZCYWI.js.map} +0 -0
  1116. /package/dist/{chunk-WTOYCUKH.js.map → chunk-JF5LNI6O.js.map} +0 -0
  1117. /package/dist/{chunk-TUB34FVS.js.map → chunk-JJZBZYNK.js.map} +0 -0
  1118. /package/dist/{chunk-WNFIJAUO.js.map → chunk-JZP5IODJ.js.map} +0 -0
  1119. /package/dist/{chunk-2GTYAHDN.js.map → chunk-KWMYTVHI.js.map} +0 -0
  1120. /package/dist/{chunk-VAJBWA2U.js.map → chunk-LFGCOAB4.js.map} +0 -0
  1121. /package/dist/{chunk-6B7VKFS4.js.map → chunk-LPRUP3ZX.js.map} +0 -0
  1122. /package/dist/{chunk-KNY76UGC.js.map → chunk-MD3VH5UG.js.map} +0 -0
  1123. /package/dist/{chunk-FVF5SXTZ.js.map → chunk-MFORE6F4.js.map} +0 -0
  1124. /package/dist/{chunk-VNUNE5AB.js.map → chunk-MMBHCAON.js.map} +0 -0
  1125. /package/dist/{chunk-XL3BMSYG.js.map → chunk-NIGGMK7L.js.map} +0 -0
  1126. /package/dist/{chunk-DQMZXK27.js.map → chunk-NN7A2ILR.js.map} +0 -0
  1127. /package/dist/{chunk-PVUZWHNQ.js.map → chunk-O356YNIW.js.map} +0 -0
  1128. /package/dist/{chunk-ZGTCZ6H4.js.map → chunk-OUQMJRH6.js.map} +0 -0
  1129. /package/dist/{chunk-E4NCRGY3.js.map → chunk-OXKUWTFL.js.map} +0 -0
  1130. /package/dist/{chunk-RPUSTYHL.js.map → chunk-PAJJXZ3Z.js.map} +0 -0
  1131. /package/dist/{chunk-QSN5MZGS.js.map → chunk-PC56KVAD.js.map} +0 -0
  1132. /package/dist/{chunk-NECTN6N7.js.map → chunk-PEWNEPDR.js.map} +0 -0
  1133. /package/dist/{chunk-W3ZHJJVT.js.map → chunk-Q2T4XZG4.js.map} +0 -0
  1134. /package/dist/{chunk-7J6EHOH6.js.map → chunk-RCR6RVYE.js.map} +0 -0
  1135. /package/dist/{chunk-GYU7BWEN.js.map → chunk-RH2H5PBV.js.map} +0 -0
  1136. /package/dist/{chunk-4Z7DEN75.js.map → chunk-S3XM4LD3.js.map} +0 -0
  1137. /package/dist/{chunk-75FDTDLH.js.map → chunk-SFHL3KWY.js.map} +0 -0
  1138. /package/dist/{chunk-LIQ4SQ2T.js.map → chunk-SQ7DRYCC.js.map} +0 -0
  1139. /package/dist/{chunk-YBMVHGY3.js.map → chunk-SSVZM3P6.js.map} +0 -0
  1140. /package/dist/{chunk-ND5MJ3AA.js.map → chunk-TMNLIA7R.js.map} +0 -0
  1141. /package/dist/{chunk-V7CTQOHG.js.map → chunk-UF55TADX.js.map} +0 -0
  1142. /package/dist/{chunk-TD2P4HBP.js.map → chunk-UGI33KTO.js.map} +0 -0
  1143. /package/dist/{chunk-ORO7VAXB.js.map → chunk-UK2OTLT3.js.map} +0 -0
  1144. /package/dist/{chunk-IGQZ5U3C.js.map → chunk-UU3FGKUW.js.map} +0 -0
  1145. /package/dist/{chunk-NIJSXVFT.js.map → chunk-UUBHU2TY.js.map} +0 -0
  1146. /package/dist/{chunk-5Z2KSVIV.js.map → chunk-UX7HIGS7.js.map} +0 -0
  1147. /package/dist/{chunk-HZUDRKGR.js.map → chunk-VDZIGI2C.js.map} +0 -0
  1148. /package/dist/{chunk-4QEY2L6U.js.map → chunk-VKVIBQP3.js.map} +0 -0
  1149. /package/dist/{chunk-IYU4X5A7.js.map → chunk-VLF2M4GZ.js.map} +0 -0
  1150. /package/dist/{chunk-7OFNN4CT.js.map → chunk-VTF7XNOP.js.map} +0 -0
  1151. /package/dist/{chunk-ESB5DLIP.js.map → chunk-WDA3L4NF.js.map} +0 -0
  1152. /package/dist/{chunk-H26L3OQY.js.map → chunk-XDV6Q33B.js.map} +0 -0
  1153. /package/dist/{chunk-2BKVVCCV.js.map → chunk-XYC26BDM.js.map} +0 -0
  1154. /package/dist/{chunk-FTWJFDIN.js.map → chunk-YHQYDNYD.js.map} +0 -0
  1155. /package/dist/{chunk-F2S5BLPE.js.map → chunk-YTWNY3RF.js.map} +0 -0
  1156. /package/dist/{claim-25JJM4AG.js.map → claim-JLVISHS4.js.map} +0 -0
  1157. /package/dist/{client-VHN32ZRE.js.map → client-G6DGRGKT.js.map} +0 -0
  1158. /package/dist/{code-YS6ZMGX3.js.map → code-AYN42EK7.js.map} +0 -0
  1159. /package/dist/{companies-VR5M5PAN.js.map → companies-XDMOP2GL.js.map} +0 -0
  1160. /package/dist/{complete-DRMOTC2W.js.map → complete-XM7VLC4F.js.map} +0 -0
  1161. /package/dist/{config-CQN5FHMZ.js.map → config-UE7GCROG.js.map} +0 -0
  1162. /package/dist/{connect-WUDJR2GH.js.map → connect-VTDKGYP3.js.map} +0 -0
  1163. /package/dist/{conversation-K6LYF2ZP.js.map → conversation-F53OE25Y.js.map} +0 -0
  1164. /package/dist/{conversion-report-XQBJ6LG4.js.map → conversion-report-35MLL3FA.js.map} +0 -0
  1165. /package/dist/{conversion-upload-command-AUF3LNTH.js.map → conversion-upload-command-CV2TA7OV.js.map} +0 -0
  1166. /package/dist/{conversion-writes-UBCVXP2E.js.map → conversion-writes-NSZPNMPE.js.map} +0 -0
  1167. /package/dist/{conversions-GF32XOWY.js.map → conversions-7YO6DDL3.js.map} +0 -0
  1168. /package/dist/{conversions-D236RTUK.js.map → conversions-XNISCCC2.js.map} +0 -0
  1169. /package/dist/{countries-ESAKTQAE.js.map → countries-NMWPKFFW.js.map} +0 -0
  1170. /package/dist/{create-4TFAD6HY.js.map → create-ARERZYCL.js.map} +0 -0
  1171. /package/dist/{create-IXYXYLLE.js.map → create-C6ZVYIF5.js.map} +0 -0
  1172. /package/dist/{create-2D7AIFJI.js.map → create-FAPJFCZE.js.map} +0 -0
  1173. /package/dist/{create-PKJVFJMO.js.map → create-M7TUO3XS.js.map} +0 -0
  1174. /package/dist/{creatives-OHCFHRZ5.js.map → creatives-3YIV6IOK.js.map} +0 -0
  1175. /package/dist/{creatives-QLSZFOMB.js.map → creatives-QZCO6WGH.js.map} +0 -0
  1176. /package/dist/{creatives-UEPLNCPN.js.map → creatives-WJLJ3NKP.js.map} +0 -0
  1177. /package/dist/{critique-5PCQ2CJH.js.map → critique-56MNXW7R.js.map} +0 -0
  1178. /package/dist/{critique-WDO6SKK2.js.map → critique-KRIKEHF6.js.map} +0 -0
  1179. /package/dist/{crm-HNUOHXAN.js.map → crm-OETFQNR3.js.map} +0 -0
  1180. /package/dist/{crm-SNIUADNK.js.map → crm-WXCFB4TU.js.map} +0 -0
  1181. /package/dist/{crop-2J4RKJ6B.js.map → crop-VCP2JLQL.js.map} +0 -0
  1182. /package/dist/{currency-XCGKQ7FE.js.map → currency-MNNDKY4Z.js.map} +0 -0
  1183. /package/dist/{custom-conversions-2VLJGPRV.js.map → custom-conversions-CIU525HM.js.map} +0 -0
  1184. /package/dist/{customers-72L2KZHO.js.map → customers-GTPEABJI.js.map} +0 -0
  1185. /package/dist/{delete-3AV3ARMX.js.map → delete-5CURRI25.js.map} +0 -0
  1186. /package/dist/{delete-PA2GY5EC.js.map → delete-CLC2Q2OE.js.map} +0 -0
  1187. /package/dist/{delete-EVGM5B36.js.map → delete-CQ6Q3URI.js.map} +0 -0
  1188. /package/dist/{delete-A5XD52K4.js.map → delete-JIRZBBDD.js.map} +0 -0
  1189. /package/dist/{delete-YNNFTFYV.js.map → delete-LD3F4UIW.js.map} +0 -0
  1190. /package/dist/{delete-MRM2S4Z5.js.map → delete-LGZ5OI4C.js.map} +0 -0
  1191. /package/dist/{demographics-SYS2E7QC.js.map → demographics-EK2ZPHWK.js.map} +0 -0
  1192. /package/dist/{describe-6NVOWIBE.js.map → describe-BNB6643C.js.map} +0 -0
  1193. /package/dist/{describe-P3PPIQME.js.map → describe-ZXGFTCDR.js.map} +0 -0
  1194. /package/dist/{dimensions-EYAYO27I.js.map → dimensions-IU4ETG4U.js.map} +0 -0
  1195. /package/dist/{discard-JS2YJUIM.js.map → discard-VWCXYJWU.js.map} +0 -0
  1196. /package/dist/{discover-BJPZNXUQ.js.map → discover-4EQWGIAN.js.map} +0 -0
  1197. /package/dist/{domain-XKKH5NCL.js.map → domain-I2SAGVAB.js.map} +0 -0
  1198. /package/dist/{download-7T6HIJKD.js.map → download-D7TB4744.js.map} +0 -0
  1199. /package/dist/{draft-YDY2Q2K6.js.map → draft-4VOOSJQJ.js.map} +0 -0
  1200. /package/dist/{draft-WWWKSEEE.js.map → draft-6KG2YFOY.js.map} +0 -0
  1201. /package/dist/{draft-4AO4YH3V.js.map → draft-APDGACIC.js.map} +0 -0
  1202. /package/dist/{draft-BGUJDHXR.js.map → draft-D76C4JR3.js.map} +0 -0
  1203. /package/dist/{draft-MNFJ4G3C.js.map → draft-HFH2Y6F5.js.map} +0 -0
  1204. /package/dist/{draft-GCUXNPVH.js.map → draft-NVVWWQVC.js.map} +0 -0
  1205. /package/dist/{draft-KIBMVKSR.js.map → draft-NWLPLTWM.js.map} +0 -0
  1206. /package/dist/{env-KIP2J2UB.js.map → env-LHLGM2YJ.js.map} +0 -0
  1207. /package/dist/{export-JQRMBJ7D.js.map → export-VGCFD7GL.js.map} +0 -0
  1208. /package/dist/{extract-7QKLME7Z.js.map → extract-32J7V2RX.js.map} +0 -0
  1209. /package/dist/{facets-NVBX5WDT.js.map → facets-WVI6VBDC.js.map} +0 -0
  1210. /package/dist/{favorites-NSGF4OV5.js.map → favorites-WKV5H5OF.js.map} +0 -0
  1211. /package/dist/{feedback-OGAPR45R.js.map → feedback-NMNKYEMU.js.map} +0 -0
  1212. /package/dist/{feedback-record-GVXGDY5Y.js.map → feedback-record-2VYBMWMO.js.map} +0 -0
  1213. /package/dist/{fetch-U4TJIHZU.js.map → fetch-CENBDLT6.js.map} +0 -0
  1214. /package/dist/{fetch-XF76JABV.js.map → fetch-XQFPE3MI.js.map} +0 -0
  1215. /package/dist/{find-OTDIX6V4.js.map → find-PNDKEOXT.js.map} +0 -0
  1216. /package/dist/{fit-BOQL6OK3.js.map → fit-SEWGCEW5.js.map} +0 -0
  1217. /package/dist/{fonts-64T6KRZS.js.map → fonts-KUCQAR7N.js.map} +0 -0
  1218. /package/dist/{forecast-YIIGTHRM.js.map → forecast-PI52G2GL.js.map} +0 -0
  1219. /package/dist/{funding-NYO65IMT.js.map → funding-ZRC25X5I.js.map} +0 -0
  1220. /package/dist/{ga4-UDQ2HA2J.js.map → ga4-YDKXVJOC.js.map} +0 -0
  1221. /package/dist/{generate-3XYYITU6.js.map → generate-BVMMX3SS.js.map} +0 -0
  1222. /package/dist/{get-3L6W3E3T.js.map → get-7MSF4RVQ.js.map} +0 -0
  1223. /package/dist/{get-XN5ZGDIK.js.map → get-KFVPIDIA.js.map} +0 -0
  1224. /package/dist/{get-6WEYKOY6.js.map → get-NHQ2XYKZ.js.map} +0 -0
  1225. /package/dist/{get-6RQFDAIN.js.map → get-TCDAYTZA.js.map} +0 -0
  1226. /package/dist/{get-YIHTAMRT.js.map → get-UMMTY74K.js.map} +0 -0
  1227. /package/dist/{get-P743RPSI.js.map → get-YM77HCL5.js.map} +0 -0
  1228. /package/dist/{gif-53ULFVLR.js.map → gif-X323HXS2.js.map} +0 -0
  1229. /package/dist/{google-KTO3PLEU.js.map → google-76A4MHQH.js.map} +0 -0
  1230. /package/dist/{google-ads-7XAGJVNJ.js.map → google-ads-S6O4MLKA.js.map} +0 -0
  1231. /package/dist/{group-GKWCCX66.js.map → group-CTIZVYX2.js.map} +0 -0
  1232. /package/dist/{group-EFZ3AJIE.js.map → group-HKWQ75CJ.js.map} +0 -0
  1233. /package/dist/{gsc-P3QYGDV2.js.map → gsc-CORRYJBJ.js.map} +0 -0
  1234. /package/dist/{history-EUG4LE44.js.map → history-4U7FJGEM.js.map} +0 -0
  1235. /package/dist/{history-Q3QCT64S.js.map → history-BXOMJ5PL.js.map} +0 -0
  1236. /package/dist/{hubspot-UULVEYVO.js.map → hubspot-I5MFAZ4G.js.map} +0 -0
  1237. /package/dist/{icon-I43F77FV.js.map → icon-6QW63AHG.js.map} +0 -0
  1238. /package/dist/{ideas-7LXYXS5G.js.map → ideas-QDS5XA4S.js.map} +0 -0
  1239. /package/dist/{images-3SOTFMJV.js.map → images-NVTA2OHD.js.map} +0 -0
  1240. /package/dist/{improve-BCCU5AS6.js.map → improve-WR23CHYH.js.map} +0 -0
  1241. /package/dist/{ingest-HQUXSBWA.js.map → ingest-QAVJ2J7F.js.map} +0 -0
  1242. /package/dist/{ingest-HYSZC3EX.js.map → ingest-XJHV3GG6.js.map} +0 -0
  1243. /package/dist/{insights-LNAXV2CG.js.map → insights-AW7SOGHI.js.map} +0 -0
  1244. /package/dist/{insights-NZWSJKU4.js.map → insights-IJEPLWQH.js.map} +0 -0
  1245. /package/dist/{inspect-HZQ7GSVM.js.map → inspect-7I53PWCF.js.map} +0 -0
  1246. /package/dist/{inspiration-P265QJ2H.js.map → inspiration-TJJFUVY2.js.map} +0 -0
  1247. /package/dist/{intent-E3UIVZBN.js.map → intent-VEUQS34Z.js.map} +0 -0
  1248. /package/dist/{job-L7RJZMSG.js.map → job-K7LAIBYN.js.map} +0 -0
  1249. /package/dist/{job-create-JUDAN52O.js.map → job-create-DFZL4CGA.js.map} +0 -0
  1250. /package/dist/{job-status-U43WE3RJ.js.map → job-status-6Q2TVTEO.js.map} +0 -0
  1251. /package/dist/{keep-55CPC7DG.js.map → keep-XJFCLVCP.js.map} +0 -0
  1252. /package/dist/{keyword-gap-BG6M665A.js.map → keyword-gap-CUOGKUMM.js.map} +0 -0
  1253. /package/dist/{keyword-metrics-YG3K7MQZ.js.map → keyword-metrics-LK7FME4N.js.map} +0 -0
  1254. /package/dist/{keywords-for-site-V4K744TF.js.map → keywords-for-site-4E7UU44P.js.map} +0 -0
  1255. /package/dist/{landing-3SSX6WK6.js.map → landing-I65PFN7H.js.map} +0 -0
  1256. /package/dist/{languages-HORKPDNH.js.map → languages-KPPKX3E2.js.map} +0 -0
  1257. /package/dist/{languages-JSGWCC7Z.js.map → languages-MGEBLO64.js.map} +0 -0
  1258. /package/dist/{logo-2IP663QO.js.map → launches-E3Y6NCQE.js.map} +0 -0
  1259. /package/dist/{layerize-RPD6SNP6.js.map → layerize-N4IQ2KE7.js.map} +0 -0
  1260. /package/dist/{leads-ARUWPHBM.js.map → leads-PPMOBH7U.js.map} +0 -0
  1261. /package/dist/{leads-FAHQ6KJX.js.map → leads-TNEQUOUN.js.map} +0 -0
  1262. /package/dist/{learn-XNHGNQE5.js.map → learn-QQS323PS.js.map} +0 -0
  1263. /package/dist/{library-ARKRLCNJ.js.map → library-4QQAVB6X.js.map} +0 -0
  1264. /package/dist/{lighthouse-6ZC45E53.js.map → lighthouse-CD47CPJM.js.map} +0 -0
  1265. /package/dist/{line-item-writes-A6BPZQPL.js.map → line-item-writes-QJZQUQ4E.js.map} +0 -0
  1266. /package/dist/{line-items-J7PXJHMD.js.map → line-items-ESEAXGBV.js.map} +0 -0
  1267. /package/dist/{link-4GGAQAVH.js.map → link-DPJYS4WY.js.map} +0 -0
  1268. /package/dist/{linkedin-I6JDSTRB.js.map → linkedin-EJPNC4VY.js.map} +0 -0
  1269. /package/dist/{list-P7NAFN6J.js.map → list-A45NTPSJ.js.map} +0 -0
  1270. /package/dist/{list-7MVBXOJT.js.map → list-GNP4GIV2.js.map} +0 -0
  1271. /package/dist/{list-LI4OGQFW.js.map → list-KQFLOVC4.js.map} +0 -0
  1272. /package/dist/{list-AL7N6X2P.js.map → list-MDHK3ENJ.js.map} +0 -0
  1273. /package/dist/{list-A5UCIR2J.js.map → list-PRUFXMXW.js.map} +0 -0
  1274. /package/dist/{list-AQMGXI4N.js.map → list-S3BAQCTL.js.map} +0 -0
  1275. /package/dist/{list-KAJZFHMN.js.map → list-UU5NPLJ7.js.map} +0 -0
  1276. /package/dist/{list-22HZ2S4W.js.map → list-V525A4Z4.js.map} +0 -0
  1277. /package/dist/{locations-2NKBJKBT.js.map → locations-J2PVPDZU.js.map} +0 -0
  1278. /package/dist/{locations-J4G5RNPH.js.map → locations-TFOYESTF.js.map} +0 -0
  1279. /package/dist/{log-MUPKKYSJ.js.map → log-XQBEJOOW.js.map} +0 -0
  1280. /package/dist/{lookup-XK45W2SH.js.map → logo-KQD5KUAH.js.map} +0 -0
  1281. /package/dist/{output-RAH3TSIL.js.map → lookup-QCREWUV4.js.map} +0 -0
  1282. /package/dist/{media-53DJRC4N.js.map → media-2WENMOAA.js.map} +0 -0
  1283. /package/dist/{media-6CQYG4UY.js.map → media-N4C6Q4IV.js.map} +0 -0
  1284. /package/dist/{media-sources-W2CQFSVQ.js.map → media-sources-BPOTW6IB.js.map} +0 -0
  1285. /package/dist/{members-3U6GINDF.js.map → members-BOYZKLNK.js.map} +0 -0
  1286. /package/dist/{meta-A7KM6TF5.js.map → meta-PXYHWOOG.js.map} +0 -0
  1287. /package/dist/{metrics-SQDJ5NQO.js.map → metrics-FZANUN7E.js.map} +0 -0
  1288. /package/dist/{models-3Z6MDHQW.js.map → models-W6EN3WB7.js.map} +0 -0
  1289. /package/dist/{normalize-ICQF2AST.js.map → normalize-LOMDPNFJ.js.map} +0 -0
  1290. /package/dist/{performance-ZA7VCHOU.js.map → output-SR4DN3A4.js.map} +0 -0
  1291. /package/dist/{page-GS3WLT2C.js.map → page-FS76L5WU.js.map} +0 -0
  1292. /package/dist/{pages-FXYQLHSJ.js.map → pages-INMNJSX2.js.map} +0 -0
  1293. /package/dist/{reddit-P7LLO4TK.js.map → performance-53D43XVZ.js.map} +0 -0
  1294. /package/dist/{pinterest-AUH7WBA7.js.map → pinterest-JMHFPNVW.js.map} +0 -0
  1295. /package/dist/{pixels-TZPF746S.js.map → pixels-K6ZD7SXV.js.map} +0 -0
  1296. /package/dist/{pixels-ZFF4BGUH.js.map → pixels-XPBBJYE3.js.map} +0 -0
  1297. /package/dist/{preview-AD4GKYIA.js.map → preview-KXSNG3BS.js.map} +0 -0
  1298. /package/dist/{promoted-tweet-writes-4H3ZFD6O.js.map → promoted-tweet-writes-I6HVQRDB.js.map} +0 -0
  1299. /package/dist/{promoted-tweets-MCMKPIHM.js.map → promoted-tweets-YAQ5ZUXI.js.map} +0 -0
  1300. /package/dist/{properties-L2XIYQDS.js.map → properties-NYNEONHI.js.map} +0 -0
  1301. /package/dist/{publish-CW5YSAAL.js.map → publish-Z5DVKZSG.js.map} +0 -0
  1302. /package/dist/{run-HSZFWRYZ.js.map → query-MSZPOHFL.js.map} +0 -0
  1303. /package/dist/{query-SGGBCHTF.js.map → query-RK2TFMBI.js.map} +0 -0
  1304. /package/dist/{query-VTGVZQIO.js.map → query-TWNH6GV7.js.map} +0 -0
  1305. /package/dist/{search-UO5KJTYS.js.map → reddit-6DQTBTO6.js.map} +0 -0
  1306. /package/dist/{refresh-IGHEOA6Y.js.map → refresh-TP2TOGS6.js.map} +0 -0
  1307. /package/dist/{release-C74JOYDA.js.map → release-PHQEZ2ZX.js.map} +0 -0
  1308. /package/dist/{relevant-pages-OWMNUCP7.js.map → relevant-pages-ORVFFVAM.js.map} +0 -0
  1309. /package/dist/{remove-6LGGKMLJ.js.map → remove-ETLMMDEA.js.map} +0 -0
  1310. /package/dist/{remove-HPN62MPQ.js.map → remove-KTBM5YSH.js.map} +0 -0
  1311. /package/dist/{reopen-XI53RP7R.js.map → reopen-OURQR6U7.js.map} +0 -0
  1312. /package/dist/{research-O6QXFCD7.js.map → research-P23YBKS3.js.map} +0 -0
  1313. /package/dist/{research-HAHUTFVJ.js.map → research-WCNWT5Y5.js.map} +0 -0
  1314. /package/dist/{reset-BISRUHT4.js.map → reset-2NCAWWN4.js.map} +0 -0
  1315. /package/dist/{reset-YMKVEOS4.js.map → reset-65R2CUB5.js.map} +0 -0
  1316. /package/dist/{resolve-D2VESQ45.js.map → resolve-65FKZ23N.js.map} +0 -0
  1317. /package/dist/{retry-SUKRXBHX.js.map → retry-P5K6LE6K.js.map} +0 -0
  1318. /package/dist/{retry-CGBATPQX.js.map → retry-UIPDQJ5F.js.map} +0 -0
  1319. /package/dist/{retry-failed-6HXPUVXJ.js.map → retry-failed-QMWQ6TRL.js.map} +0 -0
  1320. /package/dist/{shared-HJDFNID4.js.map → run-NDMEYUOI.js.map} +0 -0
  1321. /package/dist/{run-BFERU46Q.js.map → run-OP3T4TCF.js.map} +0 -0
  1322. /package/dist/{schedule-XJ24PL3K.js.map → schedule-6D667AXB.js.map} +0 -0
  1323. /package/dist/{schedule-O2K6M43V.js.map → schedule-KXLQVCZW.js.map} +0 -0
  1324. /package/dist/{scheduled-agents-HWEKBANT.js.map → scheduled-agents-LYWEX4PU.js.map} +0 -0
  1325. /package/dist/{schema-6GR77VJG.js.map → schema-CCFLFAOY.js.map} +0 -0
  1326. /package/dist/{scrape-ETAMW43A.js.map → scrape-DBZQFIW7.js.map} +0 -0
  1327. /package/dist/{screenshot-YCQF25ZB.js.map → screenshot-MPFANYIH.js.map} +0 -0
  1328. /package/dist/{search-OQNGSMUH.js.map → search-4AANIUUL.js.map} +0 -0
  1329. /package/dist/{search-742XSULP.js.map → search-EMJABZYF.js.map} +0 -0
  1330. /package/dist/{search-NVCIIGQS.js.map → search-HQDN7DOF.js.map} +0 -0
  1331. /package/dist/{sync-definition-ADXXWWV5.js.map → search-OVHC4CRQ.js.map} +0 -0
  1332. /package/dist/{search-MEEM4D3W.js.map → search-YSGZRANA.js.map} +0 -0
  1333. /package/dist/{select-K3EMTTI3.js.map → select-C6BKHB4B.js.map} +0 -0
  1334. /package/dist/{sends-WGJVQUMF.js.map → sends-HXN5HSF6.js.map} +0 -0
  1335. /package/dist/{sequences-OIPVR7JL.js.map → sequences-FRK76ZQV.js.map} +0 -0
  1336. /package/dist/{setup-links-5ZCASHAL.js.map → setup-links-BM2GLSSO.js.map} +0 -0
  1337. /package/dist/{viewer-check-L4B4LIAX.js.map → shared-EH5ZTQXC.js.map} +0 -0
  1338. /package/dist/{site-7PSCHITE.js.map → site-3PEJYQJW.js.map} +0 -0
  1339. /package/dist/{sitemaps-POPZJTAX.js.map → sitemaps-7KHY2KXI.js.map} +0 -0
  1340. /package/dist/{sites-262H6LM4.js.map → sites-6B76JW6C.js.map} +0 -0
  1341. /package/dist/{skills-6TQZLIMP.js.map → skills-SCTT3LCM.js.map} +0 -0
  1342. /package/dist/{sources-ICMUQMCJ.js.map → sources-ODJBHNGY.js.map} +0 -0
  1343. /package/dist/{stale-KBY5WARW.js.map → stale-2O54QXY2.js.map} +0 -0
  1344. /package/dist/{stats-NNXZMPZR.js.map → stats-4NBOAOR2.js.map} +0 -0
  1345. /package/dist/{status-ZX5WM5PJ.js.map → status-NE5OBM4B.js.map} +0 -0
  1346. /package/dist/{sticker-4KMBSMP5.js.map → sticker-NLXBIOBO.js.map} +0 -0
  1347. /package/dist/{stock-2YCDN3N6.js.map → stock-F3SA4VHV.js.map} +0 -0
  1348. /package/dist/{studio-RA7QQH4O.js.map → studio-ZPDIOFKL.js.map} +0 -0
  1349. /package/dist/{sync-TZNIPZRX.js.map → sync-5GJNZDGZ.js.map} +0 -0
  1350. /package/dist/{sync-ZSNUBYPM.js.map → sync-FCNFXTFD.js.map} +0 -0
  1351. /package/dist/{sync-CF7FVUQJ.js.map → sync-YXCZ3DHY.js.map} +0 -0
  1352. /package/dist/{tag-manager-DYZUOIAS.js.map → tag-manager-YM4Q3CZT.js.map} +0 -0
  1353. /package/dist/{tags-4PXXFIPU.js.map → tags-456UOYJU.js.map} +0 -0
  1354. /package/dist/{tags-4OZCALA3.js.map → tags-5YPYHV5V.js.map} +0 -0
  1355. /package/dist/{tags-TESETZGC.js.map → tags-HXMHEHG2.js.map} +0 -0
  1356. /package/dist/{tags-WIMUIZHU.js.map → tags-K34666RY.js.map} +0 -0
  1357. /package/dist/{tags-KFVUEPL6.js.map → tags-NB35ISO3.js.map} +0 -0
  1358. /package/dist/{targeting-constants-XJ2VOW7K.js.map → targeting-constants-3CMGPWRI.js.map} +0 -0
  1359. /package/dist/{targeting-criteria-VRI7V6C5.js.map → targeting-criteria-UKQ4WF5C.js.map} +0 -0
  1360. /package/dist/{targets-ERVS2VEU.js.map → targets-VQ4BQ657.js.map} +0 -0
  1361. /package/dist/{templates-TE6LBUIP.js.map → templates-PMUIOVDX.js.map} +0 -0
  1362. /package/dist/{testimonials-FV7KPAPK.js.map → testimonials-XZCGVD6V.js.map} +0 -0
  1363. /package/dist/{top-companies-B5M43KGJ.js.map → top-companies-VMRIDOOH.js.map} +0 -0
  1364. /package/dist/{translate-OKADZCBC.js.map → translate-F5KR62LF.js.map} +0 -0
  1365. /package/dist/{triggers-JLJQOSKI.js.map → triggers-2MZX7W6Y.js.map} +0 -0
  1366. /package/dist/{tweets-ATP3FQAC.js.map → tweets-XWE3VYQ4.js.map} +0 -0
  1367. /package/dist/{unfollow-CBVPGPF7.js.map → unfollow-7U4UBAJX.js.map} +0 -0
  1368. /package/dist/{unlink-KMWDKVIC.js.map → unlink-AWSNY3QS.js.map} +0 -0
  1369. /package/dist/{unstage-4ZEULXEQ.js.map → unstage-OGB43ZXO.js.map} +0 -0
  1370. /package/dist/{unstage-M4IQKJIO.js.map → unstage-RQBOQ4DY.js.map} +0 -0
  1371. /package/dist/{update-K6LFJHNI.js.map → update-4KWYHMLS.js.map} +0 -0
  1372. /package/dist/{update-AHDGHOCP.js.map → update-6DKEWM64.js.map} +0 -0
  1373. /package/dist/{update-5MBR4TPK.js.map → update-G6EKHPIF.js.map} +0 -0
  1374. /package/dist/{update-PNRNYXUW.js.map → update-OFV452AC.js.map} +0 -0
  1375. /package/dist/{upload-KAQC4AH7.js.map → upload-6CJWMQ24.js.map} +0 -0
  1376. /package/dist/{upload-L5SYZB3X.js.map → upload-GUKMQ5MT.js.map} +0 -0
  1377. /package/dist/{upscale-YWRLFU22.js.map → upscale-A456MESF.js.map} +0 -0
  1378. /package/dist/{url-params-SM32OOXZ.js.map → url-params-OE3UMYMM.js.map} +0 -0
  1379. /package/dist/{use-UT2DIZOG.js.map → use-HBVKVT5S.js.map} +0 -0
  1380. /package/dist/{variant-FLZJYGYL.js.map → variant-HULP57YI.js.map} +0 -0
  1381. /package/dist/{videos-A32DPGHD.js.map → videos-ION7UT3M.js.map} +0 -0
  1382. /package/dist/{view-NPAG66QK.js.map → view-GCDEJZII.js.map} +0 -0
  1383. /package/dist/{web-TZEIFUYY.js.map → web-CCVD6UZ4.js.map} +0 -0
  1384. /package/dist/{write-commands-WTRSOSO3.js.map → write-commands-47OP673X.js.map} +0 -0
  1385. /package/dist/{write-commands-CT74VHH6.js.map → write-commands-IJ5IFHS6.js.map} +0 -0
  1386. /package/dist/{write-commands-CE4FIQ6Y.js.map → write-commands-NNVDWBLG.js.map} +0 -0
  1387. /package/dist/{write-commands-ERKVRHTC.js.map → write-commands-OBMIVFZJ.js.map} +0 -0
  1388. /package/dist/{x-YXABYM5U.js.map → x-U32DT24S.js.map} +0 -0
package/README.md CHANGED
@@ -36,7 +36,7 @@ export BAKER_X_ADS_ACCOUNT_ID="18ce53xyz"
36
36
  export BAKER_CHAT_ID="<chat-id>"
37
37
  ```
38
38
 
39
- - `BAKER_API_KEY` must start with `bk_` (or `bkr_` for the read-only credential a Session review runs with)
39
+ - `BAKER_API_KEY` must start with `bk_` (or `bkr_` for the read-only credential a Session review runs with, or `bkv_` for the one a published report runs with)
40
40
  - A missing or malformed `BAKER_API_KEY` / `BAKER_API_URL` ends any command that talks to Baker with `NOT_CONFIGURED` (non-retryable, with a `fix`) naming the variable and the rule it broke — never its value
41
41
  - A malformed `BAKER_GOOGLE_ADS_CUSTOMER_ID`, `BAKER_LINKEDIN_AD_ACCOUNT_ID` or `BAKER_X_ADS_ACCOUNT_ID` ends it with `VALIDATION_ERROR` instead, whose `fix` says to correct or unset the variable
42
42
  - `BAKER_API_URL` is your Convex site URL — the deployment the CLI talks to, not an address to show anybody
@@ -47,6 +47,7 @@ export BAKER_CHAT_ID="<chat-id>"
47
47
  - `BAKER_X_ADS_ACCOUNT_ID` — default X Ads account ID (base36). Used when `--account-id` is not passed. If neither is set and exactly one X Ads account is connected, it is auto-selected.
48
48
  - `BAKER_CHAT_ID` — chat context for staged Work Action commands and staged Scheduled agent create/update/delete/unstage. `scheduled-agents run` does not require it. When set, it is also sent as an `x-baker-chat-id` header on every request, so library additions that apply immediately (images, videos, followed brands) are listed in that chat's changes as already applied.
49
49
  - `BAKER_THREAD_ID` — set per turn by the sandbox. Sent as an `x-baker-thread-id` header alongside the chat header, so the tools a command reports or changes are those of whoever sent this turn, even while someone else writes in another thread of the same chat.
50
+ - `BAKER_KEY_SCOPE` — `report` while a report's data endpoint runs in the chat preview (set by the reports runtime). Sent as an `x-baker-key-scope` header, Baker then holds the key to what a published report may do — reads only — so a report that writes fails in the preview rather than once published. It can only narrow the key.
50
51
 
51
52
  ## Debug logging
52
53
 
@@ -221,10 +222,10 @@ baker ads google currency --customer-id 5904042878
221
222
 
222
223
  ### `baker ads google url-options`
223
224
 
224
- The UTM / tracking parameters in force on the account: the account-level Final URL Suffix and tracking template, plus every campaign that overrides them. Start here for any "add `utm_agency=…`" or agency-tag question.
225
+ The UTM / tracking parameters in force on the account: the account-level Final URL Suffix and tracking template, plus every campaign, ad group and ad that overrides them. Start here for any "add `utm_agency=…`" or agency-tag question.
225
226
 
226
227
  ```bash
227
- baker ads google url-options --customer-id 1234567890 # overriding campaigns only
228
+ baker ads google url-options --customer-id 1234567890 # overriding campaigns, ad groups and ads
228
229
  baker ads google url-options --customer-id 1234567890 --full # every campaign read
229
230
  ```
230
231
 
@@ -235,15 +236,19 @@ Every value is a tagged union, never a bare string, so an unread level can never
235
236
  "ok": true,
236
237
  "data": {
237
238
  "account": { "final_url_suffix": { "state": "set", "value": "utm_source=google" } },
238
- "campaigns": { "overriding": [], "omitted": 12 },
239
- "levels_not_read": ["ad_group", "ad"]
239
+ "campaigns": { "overrides": [], "omitted": 12 },
240
+ "ad_groups": { "read": true, "overrides": [], "truncated": false },
241
+ "ads": { "read": true, "overrides": [], "truncated": false },
242
+ "levels_not_read": []
240
243
  }
241
244
  }
242
245
  ```
243
246
 
244
247
  `set` holds a value · `not_set` means Google carries none at that level · `not_read` means it was never observed. **Only `not_set` is a finding.**
245
248
 
246
- Writing it: `baker ads google campaigns update <id> --final-url-suffix "utm_source=google&utm_agency=baker"` stages a campaign-level override (it *replaces* the account value for that campaign, it does not merge). The **account** level is deliberately not stageable — Google writes it through `CustomerService`, outside the atomic publish batch, so it could not be published atomically nor reversed by discarding the chat. `--level account` stages nothing and returns a structured `error.fix` naming where to set it.
249
+ Writing it: `baker ads google campaigns update <id> --final-url-suffix "utm_source=google&utm_agency=baker"` stages a campaign-level override (it *replaces* the account value for that campaign, it does not merge). The **account** level stages too: `baker ads google account update --customer-id … --final-url-suffix "utm_source=google&utm_agency=baker"` (or `campaigns update --level account --final-url-suffix …`, the same op) applies at publish with the rest of the draft; `""` clears it.
250
+
251
+ **Account settings** — `baker ads google account update --customer-id …` stages the account's own settings: `--final-url-suffix`, `--tracking-template`, `--auto-tagging` / `--auto-tagging=false`, `--call-reporting`, `--call-conversions`, `--video-inventory EXPANDED|STANDARD|LIMITED`. One card per account (staging again amends it), shown before → after; a setting the account already holds is a no-op. Turning auto-tagging off stages with a warning (conversion tracking loses the gclid). The conversion action that counts calls is not writable through Google's API.
247
252
 
248
253
  ---
249
254
 
@@ -317,19 +322,19 @@ baker ads google query --list-presets
317
322
 
318
323
  Read it before interpreting any null. Field coverage is folded page by page on the `--out` path too, so the file summary reports it; `.resource_name` is never reported (the server strips it from every row).
319
324
 
320
- **A page is not the data set.** Without `--all`, a query returns one page capped by `--limit` (default 200, or the `LIMIT` in the statement, whichever is smaller). With `--all` every page is followed, but the statement's `LIMIT` still caps the read — and preflight adds one at `--limit` to any query that arrives without it, so `--all` on its own still stops at 200 rows. When the rows fill whichever cap is in force, or the API returns a cursor the run did not follow, the response carries a `TRUNCATED_RESULTS` warning:
325
+ **A page is not the data set.** Every query is read a page at a time: without `--all` it returns one page of `--limit` rows (the preset's page size, else 200) and, when the account holds more, `pagination.cursor` — pass it back with `--cursor` (same query, same `--limit`) for the next page. `--all` follows every page until the account has no more rows; only a `LIMIT` written in the statement caps it. When the API returns a cursor the run did not follow, or the rows fill the statement's own `LIMIT`, the response carries a `TRUNCATED_RESULTS` warning:
321
326
 
322
327
  ```json
323
328
  {
324
329
  "ok": true,
325
330
  "warnings": [{ "code": "TRUNCATED_RESULTS", "message": "INCOMPLETE READ — ..." }],
326
- "pagination": { "hasMore": true, "cursor": "eyJwYWdl..." },
331
+ "pagination": { "hasMore": true, "cursor": "skip:200.k3x9q2:" },
327
332
  "data": [...],
328
333
  "notice": "Read the \"warnings\" above before using these rows: TRUNCATED_RESULTS."
329
334
  }
330
335
  ```
331
336
 
332
- Never total or count from a response carrying it — re-run with `--all --limit 8192 --out data.csv` (one read returns at most 8,192 rows; split a bigger data set into narrower queries — a shorter date range or one campaign each) and check the re-run came back without the warning. A read that returns one row by construction — `FROM customer` with no segment selected, such as `--preset account-summary` — has no page to fill, so it never carries `TRUNCATED_RESULTS`, nor `CONVERSION_MIX`, since one account-wide row has no campaigns to total or compare. Warnings reach every output format, so no `--output` choice can hide one:
337
+ Never total or count from a response carrying it — re-run with `--all --out data.csv` (it pages through every row, however many) and check the re-run came back without the warning. A read that returns one row by construction — `FROM customer` with no segment selected, such as `--preset account-summary` — has no page to fill, so it never carries `TRUNCATED_RESULTS`, nor `CONVERSION_MIX`, since one account-wide row has no campaigns to total or compare. Warnings reach every output format, so no `--output` choice can hide one:
333
338
 
334
339
  | `--output` | Where warnings land |
335
340
  |------------|---------------------|
@@ -370,9 +375,10 @@ The same lines also go to stderr. A read with nothing to report prints none of i
370
375
  | `--preset` | Named query template (see presets below) |
371
376
  | `--date-range` | Override preset date range: a Google literal (LAST_7_DAYS, LAST_30_DAYS, LAST_MONTH, etc.) or `BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'` — there is no LAST_90_DAYS |
372
377
  | `--include-paused` | Include paused entities in preset results. Off by default: presets return only actually-serving entities (enabled campaign **and** ad group **and** ad). Google Ads has no single serving flag, so the whole chain must be `ENABLED` for an entity to serve. |
373
- | `--limit` | Max rows per page (default 200, at most 8,192) |
374
- | `--cursor` | Pagination cursor from previous response |
375
- | `--all` | Auto-paginate all results. Exhausts the pages, not the statement's `LIMIT` — pair it with a `LIMIT` in the statement above the expected row count (at most 8,192 — split bigger reads into narrower queries), and a read that still fills its cap is flagged `TRUNCATED_RESULTS` either way |
378
+ | `--gaql` | The GAQL statement as a flag, instead of the positional |
379
+ | `--limit` | Rows per page (default: the preset's page size, else 200; at most 8,192). A page size, not a cap |
380
+ | `--cursor` | `pagination.cursor` from the previous page (same query, same `--limit`) |
381
+ | `--all` | Follow every page until the account has no more rows. Only a `LIMIT` written in the statement stops it early, and a read that fills that `LIMIT` is flagged `TRUNCATED_RESULTS` |
376
382
  | `--out` | Write data to file (format from extension: .csv, .jsonl, .json) |
377
383
  | `--append` | Append to existing file (skip CSV headers) |
378
384
  | `--output` | Output format: `json` \| `csv` \| `jsonl` \| `md` |
@@ -393,9 +399,21 @@ The same lines also go to stderr. A read with nothing to report prints none of i
393
399
  | `negative-list-attachments`| Which campaigns each shared list covers | ALL_TIME |
394
400
  | `search-terms` | Actual user queries triggering ads | LAST_7_DAYS |
395
401
  | `ad-copy-performance` | Ad headline/description effectiveness | LAST_30_DAYS |
396
- | `asset-performance` | PMax asset performance labels | LAST_30_DAYS |
402
+ | `asset-performance` | PMax assets: serving status + metrics | LAST_30_DAYS |
397
403
  | `shopping-products` | Product-level shopping metrics | LAST_30_DAYS |
398
404
  | `account-summary` | Account-level totals | LAST_30_DAYS |
405
+ | `pmax-channels` | PMax spend/results per channel (Search, YouTube, Display, …) | LAST_30_DAYS |
406
+ | `pmax-placements` | Where PMax ads showed (impressions) | LAST_30_DAYS |
407
+ | `placements` | Display / Video / Demand Gen placements with cost and conversions | LAST_30_DAYS |
408
+ | `rsa-assets` | Each RSA headline/description: pin, approval, own metrics | LAST_30_DAYS |
409
+ | `landing-pages` | Final URLs with clicks, cost, speed score, mobile-friendly share | LAST_30_DAYS |
410
+ | `geo-performance` | Results by country and location type (in vs interested in) | LAST_30_DAYS |
411
+ | `age-performance` / `gender-performance` | Results by age range / gender per ad group | LAST_30_DAYS |
412
+ | `ai-max-search-terms` | AI Max search terms with the headline and landing page used | LAST_30_DAYS |
413
+ | `account-budget` | Account budget: limit, served, pending change | — |
414
+ | `recommendations` | Google's open recommendations with impact | — |
415
+ | `campaign-simulations` / `keyword-bid-simulations` | Google's what-if points (budget, tCPA, tROAS, CPC bid) | — |
416
+ | `campaigns`, `budgets`, `ad-groups`, `keywords`, `ads`, `assets`, `asset-groups`, `audiences`, `conversion-actions`, `bidding-strategies`, `labels`, `campaign-criteria`, `ad-group-criteria`, `ad-group-bid-modifiers`, `account-exclusions`, `shared-sets`, `campaign-negative-keywords`, `ad-group-negative-keywords` | Inventories behind the `<thing> list` commands | — |
399
417
 
400
418
  Every preset except the negatives lists and `account-summary` filters to **actually-serving entities** by default — the full status chain (`campaign.status = 'ENABLED' AND ad_group.status = 'ENABLED' AND ad_group_ad.status = 'ENABLED'`, as applicable) — and selects the status columns so you can see them. Pass `--include-paused` to widen to `!= 'REMOVED'` (keeps paused, still drops removed). Raw GAQL (no `--preset`) has no such default: a query over a serving-hierarchy resource without a status filter emits a `SERVING_SCOPE` warning reminding you to add the chain, because Google Ads has no single serving flag.
401
419
 
@@ -411,13 +429,12 @@ The CLI rejects or automatically corrects common GAQL mistakes before hitting th
411
429
 
412
430
  | Pattern | Behavior | Warning/error emitted |
413
431
  |---------|----------|-----------------------|
414
- | Missing LIMIT | Adds `LIMIT 200` | `"Added LIMIT 200. Use --limit to override."` |
415
432
  | Bare `keyword.text` / `keyword.match_type` | Rewrites to `ad_group_criterion.*` (resource-scoped forms like `shared_criterion.keyword.text` pass through untouched) | `"keyword.text → ad_group_criterion.keyword.text"` |
416
433
  | `shopping_performance_view.product_*` | Rewrites to `segments.product_*` | Field renamed |
417
434
  | `campaign.status = 'ACTIVE'` | Rewrites to `= 'ENABLED'` | Enum corrected |
418
435
  | `segments.conversion_action_name` with `metrics.cost_micros` | Rejects; split into separate conversion-action and spend queries | `INCOMPATIBLE_FIELDS` with `fix.action: "split_query"` |
419
436
  | `DURING` with a literal Google does not accept (`LAST_90_DAYS`, `LAST_12_MONTHS`, `THIS_YEAR` …) | Rejects before any request; `DURING` takes only `TODAY`, `YESTERDAY`, `LAST_7_DAYS`, `LAST_14_DAYS`, `LAST_30_DAYS`, `LAST_BUSINESS_WEEK`, `THIS_MONTH`, `LAST_MONTH`, `THIS_WEEK_SUN_TODAY`, `THIS_WEEK_MON_TODAY`, `LAST_WEEK_SUN_SAT`, `LAST_WEEK_MON_SUN` | `INVALID_DATE_RANGE`, with `fix.correctedCommand` spelling the same window as `BETWEEN 'YYYY-MM-DD' AND 'YYYY-MM-DD'` |
420
- | `--limit` outside 1–8,192, or a statement `LIMIT` above 8,192 | Rejects before any request — one read returns at most 8,192 rows | `VALIDATION_ERROR` naming the cap and how to split a bigger read; a statement `LIMIT` also gets `fix.correctedCommand` at `LIMIT 8192` |
437
+ | `--limit` outside 1–8,192 | Rejects before any request — one page holds at most 8,192 rows | `VALIDATION_ERROR` pointing at `--all --out` for bigger reads |
421
438
  | `FROM ad_group_criterion` without `negative` field | Warns | `"ad_group_criterion returns BOTH positive and negative keywords. Use --preset positive-keywords or negative-keywords."` |
422
439
 
423
440
  Auto-fixed queries proceed normally. Warnings appear in the response:
@@ -456,7 +473,7 @@ Google keeps account history in two layers, and neither reaches past 90 days:
456
473
 
457
474
  | Scope | Reach | What you get |
458
475
  |-------------|---------|---------------------------------------------------------------------|
459
- | `detail` | 30 days | What changed, old → new value, and who changed it |
476
+ | `detail` | 30 days | What changed — a `changes` list of `{ field, old, new }` per changed field — and who changed it |
460
477
  | `summary` | 90 days | Which resources were added, changed or removed — no values, no user |
461
478
 
462
479
  Beyond 90 days there is no API. Infer the change from a monthly spend trend per campaign
@@ -481,6 +498,43 @@ baker ads google changes --customer-id 1234567890 --days 60 --scope summary
481
498
 
482
499
  ---
483
500
 
501
+ ### `baker ads google keywords forecast` / `keywords themes`
502
+
503
+ ```bash
504
+ baker ads google keywords forecast --customer-id 1234567890 --text "running shoes:PHRASE,trail shoes:EXACT" --max-cpc 1.2 --location 2724 --language 1003
505
+ baker ads google keywords forecast --customer-id 1234567890 --text "crm software" --match-type BROAD --daily-spend 20 --strategy MAXIMIZE_CONVERSIONS --start 2026-11-01 --end 2026-11-30
506
+ baker ads google keywords themes --customer-id 1234567890 --keywords "trail shoes,road shoes" --ad-groups 111,222
507
+ ```
508
+
509
+ `forecast` returns Google's Keyword Planner forecast (v25) for the whole period under one bidding strategy: `{ source: "keyword_planner_forecast", period, forecast_clicks, forecast_cost_micros, forecast_conversions, forecast_average_cpc_micros, forecast_average_cpa_micros }`. `--max-cpc` alone is Manual CPC; `--daily-spend` is Maximize clicks (or Maximize conversions with `--strategy`). Without `--start/--end` it forecasts the 30 days from tomorrow. `themes` returns which existing ad group each keyword fits (`suggestions`) and the ad groups Google could not read a theme from (`unusable_ad_groups`).
510
+
511
+ ### `baker ads google previews` / `invoices` / `identity-verification` / `brands`
512
+
513
+ ```bash
514
+ baker ads google previews --customer-id 1234567890 --asset-groups 6743268912 # Performance Max, Google's preview page
515
+ baker ads google previews --customer-id 1234567890 --ads 111~222 # a Video campaign's ad, live on YouTube
516
+ baker ads google invoices --customer-id 1234567890 --month 2026-09
517
+ baker ads google identity-verification --customer-id 1234567890
518
+ baker ads google brands --customer-id 1234567890 --prefix nike # brand entity ids for a BRANDS list
519
+ ```
520
+
521
+ Read-only. A refusal that is the account's situation comes back as a structured error the agent carries on from: `NOT_INVOICED` (not billed by monthly invoicing — no invoices through the API), `VERIFICATION_NOT_READABLE` (verification status is only readable through the API on monthly invoicing), `NO_PREVIEW_FOR_AD_TYPE` (only video ads of Video campaigns preview by ad). Each `error.fix` says where the answer lives instead.
522
+
523
+ ### `baker ads google <thing> list`
524
+
525
+ What exists, with the id or resource name each write command takes — one inventory preset read through `query`, so it pages (`--limit`, `--cursor`, `--all --out`) and formats (`--output`) the same way. Paused entities are listed; removed ones are not; `--serving-only` narrows to what serves.
526
+
527
+ ```bash
528
+ baker ads google campaigns list --customer-id 1234567890
529
+ baker ads google keywords list --customer-id 1234567890 --all --out keywords.csv
530
+ baker ads google negative-keywords list --customer-id 1234567890 --level adGroup
531
+ baker ads google keyword-lists list --customer-id 1234567890 --members
532
+ ```
533
+
534
+ Lists exist for `campaigns`, `budgets`, `ad-groups`, `keywords`, `negative-keywords` (`--level campaign|adGroup`), `keyword-lists` (`--members` for the terms), `ads`, `assets`, `asset-groups`, `audiences`, `conversions`, `bidding-strategies`, `labels`, `campaign-criteria`, `ad-group-criteria`, `ad-group-bid-modifiers` and `account-exclusions`.
535
+
536
+ ---
537
+
484
538
  ### `baker ads google keywords discover`
485
539
 
486
540
  Discover keyword ideas from seed keywords or URLs.
@@ -488,6 +542,7 @@ Discover keyword ideas from seed keywords or URLs.
488
542
  ```bash
489
543
  baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes,athletic footwear"
490
544
  baker ads google keywords discover --customer-id 1234567890 --url "https://competitor.com" --limit 50
545
+ baker ads google keywords discover --customer-id 1234567890 --seeds "running shoes" --cursor <next_page_token> # next page
491
546
  ```
492
547
 
493
548
  **Response:**
@@ -601,6 +656,8 @@ Reference not-yet-created resources with `g_temp_*` refs returned by earlier `cr
601
656
  ```bash
602
657
  # Build a Search campaign bottom-up, chaining temp refs
603
658
  baker ads google budgets create --customer-id 1234567890 --name "Search budget" --amount 50
659
+ # Delivery is always STANDARD: --delivery ACCELERATED is refused (Google stores such a budget but will
660
+ # not attach it to a campaign).
604
661
  # → { ref: "g_temp_ab12", ... }
605
662
  baker ads google campaigns create --customer-id 1234567890 --name "Brand — Search" \
606
663
  --channel-type SEARCH --budget-ref g_temp_ab12 --bidding-strategy MANUAL_CPC \
@@ -633,6 +690,10 @@ baker ads google campaigns update <campaign-id> --customer-id 1234567890 \
633
690
  # --ai-max-url-expansion (final URL expansion, needs text customization). An omitted switch
634
691
  # keeps the campaign's value; a combination Google refuses is refused at staging.
635
692
  baker ads google campaigns update <campaign-id> --customer-id 1234567890 --ai-max --ai-max-text
693
+ # Bidding is per campaign type — staging refuses a pair Google does not take and names the ones it does.
694
+ # Target impression share (Search only) needs its whole goal on a new strategy:
695
+ baker ads google campaigns update <campaign-id> --customer-id 1234567890 --bidding-strategy TARGET_IMPRESSION_SHARE \
696
+ --impression-share 70 --impression-share-location ABSOLUTE_TOP_OF_PAGE --max-cpc 2
636
697
  baker ads google ad-groups create --customer-id 1234567890 --name "Brand terms" --campaign-ref g_temp_<campaign>
637
698
  baker ads google keywords add --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --text "brand name" --match-type EXACT
638
699
  # Shared negative keyword list → attach to the campaign
@@ -666,7 +727,7 @@ baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgr
666
727
  # Video ad — the YouTube video is its own asset first, then referenced by --video-assets
667
728
  baker ads google assets create --customer-id 1234567890 --file '{"type":"youtubeVideo","youtubeVideoId":"dQw4w9WgXcQ"}'
668
729
  baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --format video \
669
- --video-assets g_temp_<video> --final-url https://example.com
730
+ --video-assets g_temp_<video> --business-name "Acme" --logo-image-assets g_temp_<img_logo> --final-url https://example.com
670
731
  # Demand Gen ad — image refs the same way
671
732
  baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --format demandGen \
672
733
  --headlines "Discover the app" --descriptions "Try it free today" --business-name "Acme" --final-url https://example.com \
@@ -681,6 +742,8 @@ baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgr
681
742
  # App campaign ad — images are fields on the ad itself, same asset-ref flow
682
743
  baker ads google ads create --customer-id 1234567890 --ad-group-ref g_temp_<adgroup> --format app \
683
744
  --headlines "Insure your dog" --descriptions "Refunds in 2 hours" --image-assets g_temp_<img1>,g_temp_<img2>
745
+ # Call ads are retired — Google's API has no call ad, so --format call is refused. Stage a responsive
746
+ # search ad and have the user add the phone number as a call asset in Google Ads.
684
747
  # Change a live ad's content — every field you pass replaces its current value, so list what you want to keep
685
748
  baker ads google ads update <adId> --customer-id 1234567890 --format app \
686
749
  --headlines "Insure your dog" --descriptions "Refunds in 2 hours" \
@@ -702,9 +765,16 @@ baker ads google asset-groups attach --customer-id 1234567890 \
702
765
  baker ads google asset-groups detach customers/1234567890/assetGroupAssets/6718302454~402654762568~PORTRAIT_MARKETING_IMAGE \
703
766
  --customer-id 1234567890
704
767
 
768
+ # Audiences — each type carries what Google builds it from (a type alone is refused)
769
+ baker ads google audiences create --customer-id 1234567890 --file '{"name":"Pricing visitors","type":"RULE_BASED","rule":{"include":[{"conditions":[{"operator":"CONTAINS","value":"/pricing"}],"lookbackWindowDays":30}],"prefill":true}}'
770
+ # BASIC takes "conversionActions", LOGICAL "logic", LOOKALIKE "lookalike" — each naming lists/actions
771
+ # that already exist in the account (not g_temp_* refs). `baker ads google audiences create --help` has one example per type.
772
+
705
773
  # Review / undo / amend staged changes
706
774
  baker ads google draft list # readable campaign ▸ ad group ▸ ad tree + completeness advisories
707
775
  baker ads google draft list --json # raw JSON envelope for scripting
776
+ baker ads google draft validate # dry run the whole draft against Google (validateOnly) — per-op verdicts
777
+ baker ads google draft validate --full # every op, with the built request and Google's raw answer
708
778
  baker ads google draft show g_temp_ab12 # full staged payload — the receipt before publish
709
779
  baker ads google draft amend g_temp_ab12 --patch '{"amountMicros": 60000000}' # update in place, never remove+recreate
710
780
  baker ads google draft remove g_temp_ab12 # cascades to dependents
@@ -719,7 +789,17 @@ baker tag-manager draft show --chat <chat-id> gtm_temp_ab12
719
789
  baker actions draft --chat <chat-id>
720
790
  ```
721
791
 
722
- Command groups: `budgets`, `campaigns`, `ad-groups`, `keywords` (add/update/remove), `negative-keywords`, `keyword-lists`, `ads`, `assets` (create/update/attach/detach), `asset-groups` (create/update/attach/detach — Performance Max), `audiences`, `conversions` (create/update/goal/upload), `bidding-strategies`, `labels`, `campaign-criteria` (add/update/remove), and `draft`. Amounts are in major currency units (converted to micros). Money/bids: `--amount`, `--cpc-bid`, `--target-cpa`, `--target-cpc`, `--max-cpc` take major units; `--target-roas` a ratio. `--target-cpc` pairs with `--bidding-strategy TARGET_CPC` and is Demand Gen only. `--max-cpc` sets the max CPC bid ceiling for `TARGET_IMPRESSION_SHARE` / `TARGET_SPEND` / `PERCENT_CPC` and must be paired with `--bidding-strategy`. Less-common ops accept a `--file` payload — a path to a JSON file, or the JSON object written inline (flags override its keys). Updates target a resource name or bare id as the positional argument; a target that names an op staged earlier **amends it in place**.
792
+ **Budgets and portfolios** — `budgets create --total 300` stages a total budget (one amount over the campaign's flight; Search, Performance Max and Demand Gen; the campaign needs `--end-date`; never shared) instead of `--amount`'s daily one, and `budgets update --total` moves it. `campaigns create|update --portfolio-ref <ref>` puts a campaign on a portfolio bid strategy (checked against the campaign type); staging a campaign's own `--bidding-strategy` while it is on a portfolio takes it off (with a warning). `budgets remove <id>` and `bidding-strategies remove <id>` remove a budget / portfolio once no campaign uses it — staging refuses while one does, unless the same draft removes or moves those campaigns; publish removes the campaigns first.
793
+
794
+ **Shopping campaigns** — `campaigns create --channel-type SHOPPING --merchant-id <id>` (`merchant-center list` shows the Merchant Center accounts linked to the account; staging refuses any other) with optional `--feed-label`, `--shopping-priority low|medium|high` and `--local-inventory`; `campaigns update` changes those three (`--clear-feed-label`), never the Merchant Center. `ad-groups create --type SHOPPING_PRODUCT_ADS` creates the ad group with its "All products" listing group, and `ads create --format shoppingProduct` its product ad (no copy — the feed supplies it). A retail Performance Max campaign takes `--merchant-id` / `--feed-label` too.
795
+
796
+ **App, Travel and Hotel campaigns** — App: `campaigns create --channel-type MULTI_CHANNEL --sub-type APP_CAMPAIGN|APP_CAMPAIGN_FOR_ENGAGEMENT --app-id <package or App Store id> --app-store google|apple --app-goal installs|installs-volume|in-app|in-app-install-cost|value [--app-conversions <ids>]` (each goal takes one bidding strategy; App ads are created enabled — Google refuses a paused one, so `ads create --format app` defaults to `ENABLED`). Travel: `--channel-type TRAVEL --travel-account-id <id>` on Maximize conversion value with `--target-roas`. Hotel: `--channel-type HOTEL --hotel-center-id <id>`. Staging asks Google (validate-only) whether the app, the travel account or Hotel Center is there and refuses with what to ask the user when it is not. Smart campaigns are refused (their business setting cannot be validated).
797
+
798
+ **Dynamic Search Ads and frequency caps** — `campaigns create|update --dsa-domain <domain> --dsa-language <code> [--dsa-supplied-urls-only]` (Search only; an update may change one field; it cannot be removed) and `--frequency-cap <cap>/<day|week|month>[/<campaign|ad-group|ad>][/<impressions|video-views>]` (repeatable, replaces the campaign's caps; `--clear-frequency-caps`; Display and existing Video campaigns only).
799
+
800
+ **Performance Max creative controls** — `campaigns create|update` take `--term-exclusion` / `--messaging-restriction` (text guidelines; a Search create needs `--ai-max --ai-max-text`), the generated-asset switches `--generated-text --url-expansion --video-enhancement --image-enhancement --image-extraction --image-design-versions` (each `=false` to turn off), `--brand-guidelines` on create (link the business name and a square logo to the campaign in the same draft) and `--main-color --accent-color --font`. `campaigns enable-brand-guidelines <id> --business-name-asset --logo-assets [--landscape-logo-assets] [--final-url-domain] | --auto-populate` turns brand guidelines on for an existing campaign at publish (no dry run: `draft validate` shows it unchecked).
801
+
802
+ Command groups: `account` (update), `budgets` (create/update/remove), `campaigns`, `ad-groups`, `keywords` (add/update/pause/resume/remove), `negative-keywords` (add/update/remove — `update <resource name> --text --match-type` publishes as a replace of the live negative), `keyword-lists` (create/rename/delete a list — `--type NEGATIVE_KEYWORDS|NEGATIVE_PLACEMENTS|BRANDS|ACCOUNT_LEVEL_NEGATIVE_KEYWORDS`; add/remove its members — keywords, or `--placement/--app/--youtube-channel/--youtube-video/--brand`; attach/detach), `ads`, `assets` (create/update/attach/detach), `asset-groups` (create/update/attach/detach — Performance Max), `audiences`, `conversions` (create/update/goal/upload), `bidding-strategies` (create/update/remove), `labels` (create/update/remove; attach/detach on a campaign, ad group, ad or keyword — `--level --on --label-ref`), `campaign-criteria` (add/update/remove — locations, languages, schedule, devices, radius, carriers, operating systems, and exclusions of placements, apps, YouTube, topics, demographics, content types, IP addresses, web pages, brand lists), `ad-group-criteria` (add/update/remove — placements, topics, demographics, web pages, Demand Gen locations/languages/combined audience; `update --bid-modifier --max-cpc --status`), `ad-group-bid-modifiers` (add/update/remove — one ad group's own device bid), `account-exclusions` (add/remove — account-wide site, app, YouTube, content-type, IP and negative-keyword-list exclusions; `add --placement --youtube-channel --youtube-video --app --content-label --ip` comma-separated, or `--file`), `merchant-center` (list), and `draft`. `audiences attach` takes `--user-list`, `--interest` or `--custom-segment`. Amounts are in major currency units (converted to micros). Money/bids: `--amount`, `--cpc-bid`, `--target-cpa`, `--target-cpc`, `--max-cpc` take major units; `--target-roas` a ratio. `--target-cpc` pairs with `--bidding-strategy TARGET_CPC` and is Demand Gen only. `--max-cpc` sets the max CPC bid ceiling for `TARGET_IMPRESSION_SHARE` / `TARGET_SPEND` / `PERCENT_CPC` and must be paired with `--bidding-strategy`. Less-common ops accept a `--file` payload — a path to a JSON file, or the JSON object written inline (flags override its keys). Updates target a resource name or bare id as the positional argument; a target that names an op staged earlier **amends it in place**.
723
803
 
724
804
  **A device criterion can be added, but never removed** — `campaign-criteria add` with a device criterion works, but Google then rejects `campaign-criteria remove` on it forever, including on a criterion you added yourself (and Baker refuses the removal before publish). Adjust it instead with `campaign-criteria update customers/<cid>/campaignCriteria/<campaignId>~<criterionId> --bid-modifier <n>`: `1` for no adjustment, `1.25` to bid 25% more, `0.9` to bid 10% less, `0` to stop serving on that device. Locations, languages and ad schedules remove normally.
725
805
 
@@ -733,16 +813,22 @@ Command groups: `budgets`, `campaigns`, `ad-groups`, `keywords` (add/update/remo
733
813
 
734
814
  **Retiring a conversion action** — `status` accepts `ENABLED` and `REMOVED` only. Google denies `HIDDEN` on every conversion-action write, so to stop bidding toward an action while it keeps measuring use `--no-primary`, and to stop it counting at all use `"status": "REMOVED"`. Conversion actions **Google owns** cannot be changed at all — Smart campaign call/directions actions, the in-ad lead form's submit, YouTube subscriptions and follow-on views, Floodlight and Search Ads 360 imports, store visits, codeless webpage actions. Staging any edit to one, a rename included, is refused up front; there is no manual route either, since the Google Ads interface will not change them.
735
815
 
816
+ **Validating the draft** — `baker ads google draft validate` sends the whole staged draft to Google exactly as publish would (same batching and order), with `validateOnly: true`, so nothing is applied. Each op comes back `accepted`, `refused` (with the reason publish would record), `blocked` (a change it depends on is refused), `unchecked` (only publish can check it — a new asset group, whose text assets are created first) or `applied` (an earlier publish did). Compact by default (counts plus the ops that need attention); `--full` lists every op with its request and Google's raw answer.
817
+
736
818
  **Reviewing the draft** — `baker ads google draft list` renders everything you've staged as a grouped campaign ▸ ad group ▸ ad tree (with non-blocking completeness advisories), the CLI counterpart to the dashboard's Google Ads tab. Pass `--json` for the raw envelope. Once the chat has published it reports the outcome instead — `published · N applied, M failed`, with a `✗` line naming each op that did not land and why. Aim for a fully built campaign — 2–4 ad groups, ≥5 keywords each, 2–4 RSAs with 8–12 headlines, ≥4 sitelinks / ≥3 callouts / ≥1 structured snippet, and ≥1 shared negative list; the advisories flag what's still thin.
737
819
 
738
820
  **Amending a staged op** — `draft amend <ref> (--file patch.json | --patch '<json>')` merges a JSON patch into an already-staged op's payload (objects deep-merge, `null` deletes a key, arrays/scalars replace) and re-validates it in full. Always prefer this over removing and re-staging — it preserves the op's ref (so dependents don't break) and its position in the draft. `draft show <ref>` prints the full staged payload (including warnings/annotations) so you can verify a change looks right before publish.
739
821
 
822
+ **Tracking warnings** — Tag Manager stage, amend, list and show responses provide repair hints whenever warnings remain. The compact `tag-manager draft list` prints the warnings beside their changes. Resolve the intended event role and technical gaps, then read the draft again before finishing; progress and diagnostics are not counted just to clear an alert. Adding and then removing a conversion that was never live cancels that proposal, so it disappears from the review.
823
+
740
824
  **Reading an earlier chat's changes** — `draft list` and `draft show` take `--chat <chat-id>` to read another chat in the same company instead of the current one. Every staged-draft family accepts it: `ads google|meta|linkedin draft list|show`, `tag-manager draft list|show`, `actions draft`, `tags draft`, and `scheduled-agents list|get` (`list` leaves briefs out; `get <id>` or `list --full` returns them). A published draft is kept in full, so this returns what that chat actually wrote — every headline, bid and target — plus each op's outcome and error. Use it when asked to redo or reapply earlier work rather than reconstructing copy from a summary. Read-only: staging, `amend`, `remove` and `clear` stay bound to `BAKER_CHAT_ID`, so one chat can never edit another's draft. To re-run only the changes a publish failed to land, use the chat's **Retry** control in the dashboard — it re-sends exactly those and leaves the ones that applied untouched.
741
825
 
742
826
  **Already-satisfied writes aren't staged** — an update or pause/resume whose every field already holds the requested value on the live account is dropped instead of staged: the envelope returns `"staged": false, "noop": true` with a `reason` ("this ad is already Paused on Google Ads"), plus a hint. This is a success, not an error — there is nothing to publish. Only a positively-read live snapshot can trigger it; a failed or empty read always stages. Batch responses list the dropped ops under `skipped`, and `count` reflects what actually entered the draft.
743
827
 
744
828
  **Batch keyword adds** — `keywords add`, `negative-keywords add`, and `keyword-lists add` take a whole batch in one command: comma-separate `--text` entries and/or pass `--file <list.txt>` (one keyword per line). A `:EXACT`/`:PHRASE`/`:BROAD` suffix per entry overrides the `--match-type` default. Batches stage all-or-nothing as one request (limit 500); each keyword still lands as its own draft op, so it stays individually removable/amendable.
745
829
 
830
+ **Bulk changes — one file, one call** — `draft stage --file ops.json [--customer-id <id>]` stages up to 500 ops of any mix of kinds in one request: the file is a JSON array (or JSON Lines) of whole ops `{"kind","customerId"?,"target"?,"payload"?}`; `--customer-id` fills ops that leave it out. All-or-nothing on validity (an error names `ops[i]`); ops the account already satisfies come back as `skipped`. An op may name a `g_temp_*` ref from an earlier call, not one from the same file. `draft amend --file amends.json` (no ref) amends many staged ops at once from `[{"ref","patch"}, …]`, all or none. The `--file` create commands (`assets create|attach`, `audiences create`, `conversions create`, `bidding-strategies create`, `labels attach`, `campaign-criteria add`, `ad-group-criteria add`) take a JSON array of payloads too. `keywords pause|resume <target>…` (or `--file`, one resource name per line) change many keywords' status in one call, and `keyword-lists remove --list-ref <id> --text "a,b:EXACT"` takes terms out of a shared negative list — the CLI reads the list to find each member (no `:MATCH_TYPE` = every match type), or takes members by resource name / `listId~criterionId`. Five single stages of one kind in a row on a chat earn a `LOOP:` hint pointing at these. A chat's draft holds any number of ops (each is its own record); only one op over `GOOGLE_DRAFT_OP_MAX_BYTES` (512 KB) is refused — the stage or amend stages nothing and answers `OP_TOO_LARGE` with an `error.fix` (split that change).
831
+
746
832
  **Pausing or removing a keyword returns a per-ad-group hint** — `keywords update --status PAUSED|REMOVED` and `keywords remove` come back with hints telling you to base the decision on `keyword_view` rows carrying `ad_group.id` + `ad_group_criterion.criterion_id`, never on campaign totals. A keyword's criterion id is derived from its text + match type, so every copy of the same keyword across ad groups shares one id and any aggregate blends the copy holding the history with the copies that never served. The `keyword-analysis` and `positive-keywords` presets select both ids so one query identifies each copy. A bid or URL edit gets no hint — only a pause/removal can strand history.
747
833
 
748
834
  ---
@@ -1441,8 +1527,11 @@ baker analytics sources --map --source <id> --field email={{contact.email}} --fi
1441
1527
  baker analytics sources --create-hubspot --property lifecyclestage --value customer # an event HubSpot keeps for Baker each time the property changes
1442
1528
  baker analytics sources --create-hubspot --property deal_value --operator greaterThan --value 1000 # any condition a Form's filter can say
1443
1529
  baker analytics sources --map --source <id> --field email={{work_email}} --field value={{deal_value}} --field currency=EUR # repoint a HubSpot read
1530
+ baker analytics sources --create-activecampaign --events subscribe,deal_update # ActiveCampaign's webhook sends these; each is an activecampaign.<event>
1444
1531
  ```
1445
1532
 
1533
+ **ActiveCampaign events.** `--create-activecampaign [--events …] [--name …] [--account <id>]` makes a source that ActiveCampaign's own webhook sends to — set up on the account when the chat is published (at once outside a chat), deleted when the source is removed. Each arrival is an event named `activecampaign.<event>` (`activecampaign.subscribe`, `activecampaign.deal_update`, …), about its contact, with the rest of the payload as `properties.*` — the name a scheduled agent on `event.received` is narrowed to.
1534
+
1446
1535
  **Sources: where events reach Baker from a server.** Measure → Sources is three built-in doors — the Baker landings, the website tag, and **the client's own server** — plus the connections Baker reads (HubSpot today). `--server` prints the server's one address: made once, the same for ever, `counting` at once, Baker's own format (`sending-events` is the contract; `X-Baker-Mode: test` rehearses). A HubSpot event is a trigger in HubSpot's own words, kept by HubSpot's journal each time the property changes and counted within a minute. `--create --name <tool>` still makes an address for a tool that cannot be told what to send — its first send is a masked sample counted as nothing until `--map` confirms the rows — but the dashboard no longer offers those; a tool worth reading is a connection, requested from the Sources page. Each `--field` is a **template**: text with `{{path}}` mentions, one thing per mention (`--field currency=EUR` types a value, `--field first_name="{{who.first}} {{who.last}}"` joins two; there is no `{{a|b}}` fallback); a bare path is read as its mention when the sample has it. From then on every arrival is an ordinary event carrying `baker_source: <name>`, listed by `feed --source <name>`, and `--pause`, `--resume` and `--remove` are by `--source <id>`.
1447
1536
 
1448
1537
  **`--preview` then `--create-hubspot --property <name> [--operator <op>] --value <value>… [--name <name>] [--field <field>=<template>…] [--amount-property <n> --currency <c>]`: a HubSpot event.** HubSpot keeps each change to the property for Baker, filtered to the condition — on any plan, nothing to set up in HubSpot, an account of any size — and every contact whose new value satisfies the condition is one event, within a minute, named after the source (default: the trigger's words). The condition is any a Form's filter can say, by the property's kind: `is` / `isNot` (a dropdown, `--value` repeated for several), `contains` / `startsWith` / `endsWith` (text), `greaterThan` / `lessThanOrEqual` … (numbers), `isAfter` / `isBetween` (dates, `YYYY-MM-DD`), `isEmpty` / `isNotEmpty` (any); `--operator` is `is` when unsaid. Names, kinds and operators come from `baker hubspot contacts properties` and row properties from `baker hubspot contacts fields`; `--preview --property … [--operator …] --value … [--field …] [--contact <id or email>]` says how many contacts satisfy it today (NOT counted — only contacts that come to satisfy it from now on are) and returns `preview.record`, the one most recently there or the one asked for, to check every row against before making anything. `--set-trigger --source <id> --property … [--operator …] --value …` changes what an event watches later: the rows stay and `countingSince` moves to now. The connection must be allowed to read contacts, and a refusal names the reconnect. `counting` at once, no URL; the source carries `hubspot { property, propertyLabel, kind, operator, values, valueLabels }`, `countingSince`, `listening` (whether HubSpot has been told to keep its changes: `listening`, `not_configured` or `failed`, with a `detail`), `lastError` and `mapping` — the same field → template table as an address, over the contact's properties plus `{{id}}`, defaulting to HubSpot's standard ones (email, phone, the contact id, name, address, `hs_google_click_id`, `hs_facebook_click_id`); a `--field` row at creation replaces the default it names, `--map --field` replaces the whole set later, and `--amount-property … --currency …` is the short spelling for the `value` and `currency` rows. `--field properties.<name>=<template>` adds an extra property of the event (`--field properties.plan={{plan_tier}}`): it breaks the event down on Measure → Events and a send reads it back as `{{properties.<name>}}`. A deal is watched the same way with `--object deal`, and a lead with `--object lead` (`baker hubspot leads properties|fields`) — where HubSpot records qualification and disqualification as the lead's stage. A deal's or a lead's event is about its contacts (`--contacts every|first`), read as `{{contact.<name>}}`; a lead has no amount. Leads need Sales Hub Professional or Enterprise. Where the event is sent on (Meta, Google Ads…) is `sends`, edited on the event's own card on the Sources page.
@@ -1553,14 +1642,15 @@ baker experiment update --id a3f91c2b --because "…" # a live one
1553
1642
  baker experiment status # the verdict on every test, first; dates as calendar dates
1554
1643
  baker experiment status --id a3f91c2b --full # one test, with everything the dashboard reads and the posteriors
1555
1644
  baker experiment history --landing oferta # every finished test on a page: claim, numbers, decision, learning
1645
+ baker experiment start … --hold # publish both versions with the split off, for the client to approve by link first
1556
1646
  baker experiment pause --id a3f91c2b # everyone sees the original for now
1557
- baker experiment resume --id a3f91c2b # the split picks up with the same sides
1647
+ baker experiment resume --id a3f91c2b # the split picks up with the same sides; a held test starts here, dated from now
1558
1648
  baker experiment finish --id a3f91c2b --keep variant --learning "…" # end it now; say which version stays and what it taught
1559
1649
  baker experiment cancel --id a3f91c2b # call it off: staged → gone, live → ended, original kept
1560
1650
  baker experiment fold # make the page's own content the version that was kept
1561
1651
  ```
1562
1652
 
1563
- **A page has variants. A variant is never a page.** The variant is a real built folder at `src/pages/oferta--1/`, so it gets every quality gate a page gets — which matters, because it is about to be shown to half the client's visitors. What it does not get is a public address: it is absent from the Landings list and the sitemap, names the page's URL as its canonical, and `/oferta--1/` returns **404** at the edge. It is as indexable as the page it is a version of, deliberately — half the crawls of `/oferta/` are served the variant, so a `noindex` on it is a `noindex` on the live page. Both versions answer at `/oferta/`. Assignment happens while the HTML is served, so there is no flicker and nothing for an ad blocker to suppress, and the split is a path rewrite and never a redirect. To look at one side deliberately, `/oferta/?_bkr_preview=a` and `?_bkr_preview=b` serve it exactly, with no assignment and no cookie.
1653
+ **A page has variants. A variant is never a page.** The variant is a real built folder at `src/pages/oferta--1/`, so it gets every quality gate a page gets — which matters, because it is about to be shown to half the client's visitors. What it does not get is a public address: it is absent from the Landings list and the sitemap, names the page's URL as its canonical, and `/oferta--1/` returns **404** at the edge. It is as indexable as the page it is a version of, deliberately — half the crawls of `/oferta/` are served the variant, so a `noindex` on it is a `noindex` on the live page. Both versions answer at `/oferta/`. Assignment happens while the HTML is served, so there is no flicker and nothing for an ad blocker to suppress, and the split is a path rewrite and never a redirect. To look at one side deliberately, `/oferta/?_bkr_preview=a` and `?_bkr_preview=b` serve it exactly, with no assignment and no cookie — and they keep answering while the test is paused and after it ends, up to `fold`, which removes the other version's file. That window is how a client is shown a version at all.
1564
1654
 
1565
1655
  **The goal is one event, named by its key.** `--goal submit:book-a-call` — the same vocabulary the event stream uses (`form:<flow>:<node>:<trigger>`, `submit:<flow>`, `page:<name>`, `exit:<host>`), and `baker analytics conversions --candidates` lists the keys these pages produce. Not a conversion *name*, which groups several keys: a variant that swaps the page's Form for a shorter one converts on a different key, and a name would either count both endings as one outcome or count the new version as never converting at all — `--variant-goal` gives the new version its own event when it has one. The goal is fixed for the life of the test and the verdict is read on it alone. Every other conversion the company counts comes back under `secondary` on every result, with the same interval and a one-word reading, and decides nothing. A conversion counts for a visitor wherever it happens after they were shown a version — on the page, on another page, in a delivered lead, or in a deal the CRM posted a week later by email.
1566
1656
 
@@ -1771,6 +1861,38 @@ baker ga4 draft clear
1771
1861
 
1772
1862
  ---
1773
1863
 
1864
+ ### ActiveCampaign reads (`baker activecampaign`)
1865
+
1866
+ Read the connected ActiveCampaign account live; nothing is stored and nothing in ActiveCampaign changes.
1867
+
1868
+ ```bash
1869
+ baker activecampaign account # contacts, site tracking on/off + tracking account id, allowed domains, event tracking
1870
+ baker activecampaign campaigns [--status completed] [--since 2026-09-01] [--limit 20] # email reports, most recently sent first
1871
+ baker activecampaign automations [--active-only] # on/off, entered/exited, what starts each one
1872
+ baker activecampaign contacts [--email a@b.com | --tag <id|name> | --list <id|name> | --search <text>] [--limit 20]
1873
+ baker activecampaign deals [--pipeline <id|title>] [--stage <id|title>] [--status open|won|lost] [--owner <id|username|email>]
1874
+ baker activecampaign pipelines | lists | tags [--search <text>] | fields | users
1875
+ ```
1876
+
1877
+ Campaign rows carry `sends`, `opens`, `uniqueOpens`, `clicks`, `uniqueClicks`, `unsubscribes`, `hardBounces`, `softBounces` and `rates` (`open`, `click`, `unsubscribe` and `bounce` as shares of sends; `clickToOpen` as unique clicks over unique opens; `null` before anything is sent). Deal values are in the currency's major units, and `totals` sums every matching deal per currency. Every command takes `--account <id>` when the company has more than one ActiveCampaign connection, and `--full` adds each row's untouched ActiveCampaign payload as `raw`. Nothing connected answers `NO_ACTIVECAMPAIGN_CONNECTION`, a key ActiveCampaign stopped accepting `ACTIVECAMPAIGN_RECONNECT_REQUIRED` — both with a `request_connection` fix.
1878
+
1879
+ ### ActiveCampaign changes (`baker activecampaign stage` / `unstage` / `drafts`)
1880
+
1881
+ Stage a custom contact field, list, tag or deal pipeline on the connected ActiveCampaign account. Nothing changes in ActiveCampaign until the chat is published; then each change is created — or, when the account already has it (a field by its personalization tag, the rest by name), reused rather than duplicated.
1882
+
1883
+ ```bash
1884
+ baker activecampaign stage field --utm # UTM_SOURCE, UTM_MEDIUM, UTM_CAMPAIGN, UTM_CONTENT, UTM_TERM
1885
+ baker activecampaign stage field --title "Plan" --type dropdown --options "Basic,Pro"
1886
+ baker activecampaign stage list --name "Webinar sign-ups"
1887
+ baker activecampaign stage tag --name "hot-lead"
1888
+ baker activecampaign stage pipeline --title "Inbound" --stages "New lead,Qualified,Won" --currency usd
1889
+ baker activecampaign drafts [--chat <id>] # what is staged; after Publish, what happened to each
1890
+ baker activecampaign unstage <ref|name|perstag> # drop one staged change
1891
+ baker activecampaign unstage --all # drop every staged change
1892
+ ```
1893
+
1894
+ A field is put on every list. Field types: `text`, `textarea`, `date`, `datetime`, `dropdown`, `listbox`, `radio`, `checkbox`, `hidden`; `dropdown`, `listbox`, `radio` and `checkbox` need `--options`. A new pipeline gets exactly `--stages`; an existing one only gains the stages it lacks. Every `stage` takes `--account <id>` when the company has more than one ActiveCampaign connection.
1895
+
1774
1896
  ### Google Search Console (`baker gsc`)
1775
1897
 
1776
1898
  GSC commands for PPC-SEO arbitrage, brand halo analysis, and negative keyword discovery.
@@ -1850,7 +1972,7 @@ Ads start from what customers said. Three commands carry the process; the agent
1850
1972
  ```bash
1851
1973
  baker creatives brief [--adset <id>] [--account-id act_<id>] [--no-research] # one read: viewer, account bottleneck, what works, taste, customer quotes, ideas on file
1852
1974
  baker creatives ideas [--full] # check and rank src/creatives/_ideas/*.md; build_next
1853
- baker creatives make <idea> [--slug <s>] [--adset <id>] [--reference <adId>] [--spec <beats.json>] [--from-idea] [--series <lead>]
1975
+ baker creatives make <idea> [--slug <s>] [--adset <id>] [--reference <adId> [--platform meta|linkedin|tiktok|google]] [--spec <beats.json>] [--from-idea] [--series <lead>]
1854
1976
  baker creatives translate --slug <ad> --to es-MX,es-CO,pt-BR [--copy-file <json>] [--note "<brief>"] [--again] # the same ad in other languages, one design
1855
1977
  baker creatives learn [--days <n>] [--dry-run] # what each idea's ads did, written back onto the idea
1856
1978
  ```
@@ -2005,7 +2127,7 @@ baker research customers --dry-run # print, write nothing
2005
2127
 
2006
2128
  ### `baker research advertisers "keyword"`
2007
2129
 
2008
- Returns a ranked list of **domains** competing for one keyword in Google, with average SERP position, relevance rating, estimated traffic value and visibility — domain economics, **NOT ad copy**. Despite the name it returns no headlines, descriptions or creative of any kind; for a competitor's actual ad copy use `baker winning-ads content <adId>` (Meta/LinkedIn only — Google SERP ad copy is not available anywhere in Baker).
2130
+ Returns a ranked list of **domains** competing for one keyword in Google, with average SERP position, relevance rating, estimated traffic value and visibility — domain economics, **NOT ad copy**. Despite the name it returns no headlines, descriptions or creative of any kind; for a competitor's actual ad copy use `baker winning-ads content <adId>` (Meta, LinkedIn, TikTok and Google, for brands the library tracks) or, for a one-off Google read, `baker research google-ads <domain> --copy`.
2009
2131
 
2010
2132
  Defaults to `--location us` and `--language en` when omitted; the response carries a `query_context` showing which pair was used, so always set both for non-US or non-English markets.
2011
2133
 
@@ -3405,12 +3527,20 @@ A Google Drive folder is never added with `add`: the agent calls `request_connec
3405
3527
 
3406
3528
  Search the **ad-dna** corpus of scored "winning" competitor ads for reference creatives to reproduce (e.g. with `baker canvas`), and manage the brands your library tracks (`follow` / `following` / `feed` / `unfollow`). Each result carries a presigned media URL (~1h TTL), the ad's DNA summary, and scores. The CLI authenticates with the normal `BAKER_API_KEY`; the Baker backend proxies the request to the ad-dna service with a server-held token — no extra credential in the sandbox.
3407
3529
 
3408
- > The corpus has **Meta + LinkedIn** connectors, so `--platform` inputs are limited to `meta,linkedin`. (Older result rows may still carry a legacy platform string.)
3530
+ > The corpus reads **Meta, LinkedIn, TikTok and Google Ads** (`--platform meta,linkedin,tiktok,google`). Google search text ads are `--format text`; only Google display and YouTube ads can be a design reference.
3531
+
3532
+ > Rows are compact by default. `--fields a,b` keeps only those columns in every `--output` on `search`, `feed`, `winners`, `ads`, `advertisers`, `following` and `content`; on ad rows a name only `--full` carries (`angle`, `hook_archetype`, …) comes back on its own, and a name no row carries is refused with `error.fix.validValues`.
3409
3533
 
3410
3534
  > Backend env: the Convex deployment must have `AD_DNA_API_TOKEN` set (`npx convex env set AD_DNA_API_TOKEN …`). `AD_DNA_API_URL` is optional and defaults to `https://ads.withbaker.com`.
3411
3535
 
3412
3536
  > Replaces the old `baker ads google library` tree, which has been removed. Competitor-by-keyword discovery still lives at `baker research advertisers`.
3413
3537
 
3538
+ `baker winning-ads profile <advertiserId>` returns what one brand is doing: an estimated spend in USD (a range over every ad since `since`, the last 30 days, and a minimum, split by channel in `by_platform` — a channel that publishes no delivery is marked `unpriced`; `ads_counted` says how many ads were measured, estimated from similar ads, or not counted for lack of reach), what it launched lately and which of those still run, the concepts it tested and the version it kept, its format and platform mix, top landing pages, audiences and similar brands. `--platform` narrows it, `--full` returns everything. `baker winning-ads launches [--since 7] [--advertiser a,b]` lists what the followed brands (or the named ones) launched in the last N days and which still run. Both say, for every launch, whether it was a `new` idea, another version of one still in `testing`, or a version built on a `winner` the brand had already kept; the profile also counts new ideas per week and `unique_ideas` overall.
3539
+
3540
+ `baker winning-ads landings <advertiserId>` lists every landing page the brand's ads point to, most ads first, with how many ads point there, how many still run, the platforms and when each was last used. `address_only` marks an address only Google search ads print: Google publishes no search ad's destination, so it may not be a real page and is never analysed. `--analyse` studies the top 5 pages not analysed yet (`--pages a,b` to name them): each page's headline, value propositions, offer, pricing, calls to action, proof, audience and sections in order. Analysis takes a few minutes per page and is shared by every company, so a page analysed once is ready for all. `--platform` narrows it, `--full` returns every field.
3541
+
3542
+ `baker winning-ads search-copy <advertiserId>` reads what a brand says on Google Search from its search ads: every headline with its hook (category, brand, free, price_discount, outcome, proof, new_timely, comparison, audience, location, feature, call_to_action, question), its descriptions, sitelinks and callouts. Each is `running` or `dropped` (every ad that carried it has stopped), with how many ads carried it and the longest any ran. `hooks` compares the running headlines' hooks with the dropped ones; `rival_headlines` lists headlines naming a competitor. `part_totals` counts every part of each kind; `--part <headlines|descriptions|sitelinks|callouts> --offset <n>` reads one list a page at a time (`next_offset` until null). `--running` keeps what still runs, `--limit` sets rows per list or page (default 15), `--full` adds dates and every address the ads show (Google publishes no search ad's destination, only that address).
3543
+
3414
3544
  `baker winning-ads refresh <advertiserId>` re-scrapes a followed brand so its newest ads land in the library. It applies immediately and runs at most once every 6 hours per brand; inside that window it answers `RATE_LIMITED` with an `error.fix` naming when the brand can be refreshed again. While a follow or the last refresh is still collecting the brand's ads, it starts nothing and says so.
3415
3545
 
3416
3546
  ### `baker winning-ads search <query>`
@@ -3461,6 +3591,7 @@ baker winning-ads search "delivery driver recruitment" --audience-temperature 0_
3461
3591
  | `--hook-archetype <list>` | Narrow to ads on a proven hook **seed** (from `winning-ads hooks`) |
3462
3592
  | `--format-pattern <list>` | Narrow to statics in these containers (from `winning-ads formats`, e.g. `comparison_table`) |
3463
3593
  | `--diverse` | One varied page (different brands, containers, hooks) instead of rank order; ignores paging |
3594
+ | `--all-kinds` | Also return Google search text, Shopping and app ads. By default only designed pictures and videos come back; `--format text` (or a query asking for search ads) returns search ads alone |
3464
3595
  | `--output json\|md\|files` | Output format (default json) |
3465
3596
  | `--fields <list>` | Only these row fields (e.g. `advertiser,container,mechanism`); a `--full`-only field turns `--full` on, an unknown one is refused with `error.fix.validValues` |
3466
3597
  | `--full` | Include DNA detail + longevity |
@@ -3520,7 +3651,7 @@ billed; the hint names the platform the fit was asked on, so a TikTok or LinkedI
3520
3651
 
3521
3652
  | Flag | Default | Description |
3522
3653
  |---|---|---|
3523
- | `--platform <meta\|linkedin\|tiktok>` | `meta` | Which platform the id is on |
3654
+ | `--platform <meta\|linkedin\|tiktok\|google>` | `meta` | Which platform the id is on. The fit reads a still picture: a video ad (YouTube included) is refused (`VIDEO_REFERENCE`, read it with `content`), and on Google a search text ad, Shopping listing or app-install ad is refused (`NOT_A_DESIGN_REFERENCE`) |
3524
3655
  | `--full` | off | The whole answer, with the reasoning per element |
3525
3656
 
3526
3657
  ### `baker winning-ads advertisers <brand>`
@@ -3532,17 +3663,31 @@ baker winning-ads advertisers "Acme" --output md # find our own adverti
3532
3663
  baker winning-ads advertisers "Deel" --platform meta --output md
3533
3664
  ```
3534
3665
 
3535
- ### `baker winning-ads follow "<domain | profile URL | brand>" --platform meta|linkedin`
3666
+ ### `baker winning-ads follow "<website | brand | link>"`
3536
3667
 
3537
- Add **all** of a brand's ads to your library — every platform (Meta + LinkedIn) and every country → `POST /api/ad-library/follow`. `--platform` is **required**, but it only tells us how to read your `input` (Facebook vs LinkedIn URL); it does **not** limit what we track. A bare domain is best: we resolve both the Meta page and the LinkedIn company from it and track both. Discovery is never region-scoped. The result `status` is one of:
3668
+ Add **all** of a brand's ads to your library — every platform (Meta, LinkedIn, TikTok, Google Ads), every account it runs there, and every country → `POST /api/ad-library/follow`. Paste whatever you have: a website is best — we resolve every Facebook page and LinkedIn company the site links (a brand often runs one per market), its TikTok account, and every Google Ads entity running its ads (never a reseller) — but a brand name or any profile / ad-library link works too. Discovery is never region-scoped. `--platform` is accepted and ignored. The result `status` is one of:
3538
3669
 
3539
3670
  - `following` — the brand is already in the corpus; you're now subscribed (no wait).
3540
3671
  - `added` — a new brand was queued for ingestion; its ads appear as discovery completes (a `hints[]` note flags this).
3541
- - `ambiguous` — the input mapped to multiple brands; pick one from `candidates` and re-run with a more specific domain/URL.
3672
+ - `ambiguous` — the input mapped to multiple brands; pick one from `candidates` and re-run with a more specific website/link.
3673
+
3674
+ `suggestions` lists accounts only *named* like the brand (say, another country's Facebook page its site doesn't link). They are not tracked; `hints[]` carries a ready `add-accounts` command for them.
3542
3675
 
3543
3676
  ```bash
3544
- baker winning-ads follow "deel.com" --platform meta
3545
- baker winning-ads follow "https://www.linkedin.com/company/acme" --platform linkedin --label "Acme (competitor)"
3677
+ baker winning-ads follow "deel.com"
3678
+ baker winning-ads follow "https://www.linkedin.com/company/acme" --label "Acme (competitor)"
3679
+ ```
3680
+
3681
+ ### `baker winning-ads discover "<website | brand | link>"`
3682
+
3683
+ The `accounts` and `suggestions` a follow would find, without following anything → `POST /api/ad-library/discover`. Paid lookups. Each account is compact — `platform`, `name`, `followers`, `ads_url` (its public ad library, to check it is the brand's) and `input` (what to paste into `add-accounts`); `--full` adds every other field the lookup read.
3684
+
3685
+ ### `baker winning-ads add-accounts <advertiser> "<link,link,...>"`
3686
+
3687
+ Track more accounts under a brand you already follow — another market's Facebook page, a second LinkedIn company, another Google Ads entity → `POST /api/ad-library/accounts/add`. Each input is a profile or ad-library link, a Google advertiser id (`AR…`) or a website; up to 20. The response lists `added`, `already_tracked`, and `failed` (with a reason per input); one input failing never blocks the rest. An account that already belongs to a different brand in the library is refused — follow it as its own brand.
3688
+
3689
+ ```bash
3690
+ baker winning-ads add-accounts adv_123 "https://www.facebook.com/barkibu.it,AR01614014350098432001"
3546
3691
  ```
3547
3692
 
3548
3693
  ### `baker winning-ads following`
@@ -3576,18 +3721,28 @@ baker winning-ads feed --advertiser adv_123,adv_456 --platform meta --output md
3576
3721
  | `--limit <n>` | Total winners across all follows 1–200 (default 40) |
3577
3722
  | `--winner-category <list>` | Restrict to specific winner categories |
3578
3723
  | `--format <list>` | Restrict to specific formats (e.g. `static,video`) |
3724
+ | `--all-kinds` | Also return Google search text, Shopping and app ads (default: designed pictures and videos only; `--format text` returns search ads alone) |
3579
3725
 
3580
3726
  ### `baker winning-ads winners <advertiser>`
3581
3727
 
3582
- Top winning ads for one advertiser id → `GET /api/ad-library/advertiser-winners` (use `feed` for all your follows at once). Same lean winner cards as `search` (add `--full` for DNA + longevity). Supports `--top N` and `--platform meta|linkedin`.
3728
+ Top winning ads for one advertiser id → `GET /api/ad-library/advertiser-winners` (use `feed` for all your follows at once). Same lean winner cards as `search` (add `--full` for DNA + longevity). Supports `--top N`, `--platform meta|linkedin|tiktok|google` (omit it for the top winners across every platform) and `--per-platform`, which adds `by_platform`: each platform's own top winners, since scores don't compare across platforms.
3583
3729
 
3584
3730
  ```bash
3585
- baker winning-ads winners adv_123 --top 15 --output md
3731
+ baker winning-ads winners adv_123 --per-platform --top 5 --output md
3732
+ ```
3733
+
3734
+ ### `baker winning-ads ads <advertiser>`
3735
+
3736
+ Every ad one advertiser has run → `GET /api/ad-library/advertiser-ads`, one row per distinct ad, the same cards as `winners`. `--platform meta|linkedin|tiktok|google` narrows it to one platform (omit it for all together), `--format video,static,carousel,text` to those formats (`text` is a Google search ad), `--running all|running|stopped` to what still runs or what stopped. Rows come strongest first. Pages with `--limit` (1-100, default 24) and `--offset`: the response carries `total` and `next_offset` (`null` on the last page).
3737
+
3738
+ ```bash
3739
+ baker winning-ads ads adv_123 --platform google --running running --output md
3740
+ baker winning-ads ads adv_123 --offset 24
3586
3741
  ```
3587
3742
 
3588
3743
  ### `baker winning-ads content <ad-id>`
3589
3744
 
3590
- Read what's **inside** one ad → `GET /api/ad-library/ad-content`. `search`/`winners`/`feed` return a lean shortlist; this opens a single `ad_id` so you can understand a reference before reproducing it. For a **video** it returns the spoken `transcript`, the `on_screen_text` overlays, and the ad `copy` (`primary_text`/`headline`/`cta`). A **static** or **carousel** ad returns the text drawn into the image, each line led by its job and card (`card 2 · headline: …`); a static also returns its `format_pattern`. Add `--full` for how the ad is built (composition, colours, CTA drawn in the image, markers such as price tags or badges), how it persuades (awareness stage, mechanism, pain points, desires, value props, proof, objections handled), what it offers (offer type, pricing, entry price, guarantee, urgency, bonus), and for video its speech, pacing, soundtrack and each overlay's role + position (e.g. `GLOBAL PAYROLL @0.5s [hook, top]`). Fields the ad does not carry are left out. `--platform meta|linkedin|tiktok` selects which platform the id is on (default `meta`).
3745
+ Read what's **inside** one ad → `GET /api/ad-library/ad-content`. `search`/`winners`/`feed` return a lean shortlist; this opens a single `ad_id` so you can understand a reference before reproducing it. For a **video** it returns the spoken `transcript`, the `on_screen_text` overlays, and the ad `copy` (`primary_text`/`headline`/`cta`, plus `landing_url`; a Google ad also carries `google_ad_type`). A **static** or **carousel** ad returns the text drawn into the image, each line led by its job and card (`card 2 · headline: …`); a static also returns its `format_pattern`. Add `--full` for how the ad is built (composition, colours, CTA drawn in the image, markers such as price tags or badges), how it persuades (awareness stage, mechanism, pain points, desires, value props, proof, objections handled), what it offers (offer type, pricing, entry price, guarantee, urgency, bonus), and for video its speech, pacing, soundtrack and each overlay's role + position (e.g. `GLOBAL PAYROLL @0.5s [hook, top]`). Fields the ad does not carry are left out. `--platform meta|linkedin|tiktok|google` selects which platform the id is on (default `meta`).
3591
3746
 
3592
3747
  ```bash
3593
3748
  baker winning-ads content adg_123 # transcript + on-screen text + copy
@@ -3603,6 +3758,22 @@ Stop following a brand by advertiser id → `POST /api/ad-library/unfollow`. Ret
3603
3758
  baker winning-ads unfollow adv_123
3604
3759
  ```
3605
3760
 
3761
+ ### Decisions about text (`baker decide`)
3762
+
3763
+ Typed questions about text, answered by Jev (a decision model) with a probability: a yes/no (`noul`), one option of your set (`choice`) or a level on a scale (`score`). Read-only, text only, never generates prose. Works with a `bk_`, `bkr_` or `bkv_` key, so a published Report can call it.
3764
+
3765
+ ```bash
3766
+ baker decide --questions '{"b2b":{"type":"noul","question":"Is `message` written for a business buyer?"}}' --state '{"message":"…"}'
3767
+ baker decide --questions questions.json --items ads.json --state '{"advertiser":"Notion"}' [--full]
3768
+ ```
3769
+
3770
+ - `--questions` (required): `{ "<name>": { "type": "noul", "question" } | { "type": "choice", "question", "options": { "<key>": "<meaning>" } } | { "type": "score", "question", "levels": [lowest, …, highest] } }`.
3771
+ - `--items`: `[{ "id", "text": "…" | { "<field>": "…" } }]`. Every question is asked about every item, which reaches Jev as `` `item` `` inside its own question. Up to 500 items of 4,000 characters, 2,000 questions per call; packed into requests of up to 200 questions sent at once.
3772
+ - `--state`: shared context, or the text itself when there are no items (inline JSON, a file, `-`, or plain text).
3773
+ - Each flag that takes JSON accepts it inline, as a file path, or `-` for stdin.
3774
+ - Output: `{ model, answers | items: [{ id, answers | null }], unanswered, requests, costUsd }`. A noul is `{ noul }`; a choice `{ choice, probability, confidence }`; a score `{ score, level, confidence }`. `--full` adds every option's `probabilities`.
3775
+ - When the model does not answer, the error carries `fix.action: "degrade"`: carry on without the answers rather than abort.
3776
+
3606
3777
  ### Scheduled agents (`baker scheduled-agents`)
3607
3778
 
3608
3779
  A Scheduled agent is a **trigger** and a **prompt**. When the trigger fires, a Session opens with that prompt and does the job — there is no Task in between. `create`, `update`, and `delete` stage draft ops on `BAKER_CHAT_ID` and apply when the chat is published. `unstage` takes back what this chat staged on one item before Publish (`--index <n>` for one change only, by its index in `list` → `draft.ops`). `list` and `get` include draft state when `BAKER_CHAT_ID` is set; `get` on a published item also returns `runsAs` — who each run acts as and which tools it loads. `run` fires a published item immediately and does not require a chat id. Publishing every run unreviewed is switched on by the user on the item, never through the CLI: `--auto-publish` is refused with an `ask_user` fix.
@@ -3726,11 +3897,11 @@ Read and shape this workspace's Forms (flows). Operates on the local `_data.json
3726
3897
 
3727
3898
  For ChatGPT Ads conversions, add a `chatgptAds` side effect to the Form step, choose a supported event name, and use `baker flows map` to map `advancedMatching` and optional `eventParams` (`value` and `currency`).
3728
3899
 
3729
- **A Form has two halves, split by a trust boundary.** Its *structure* — steps, conditions, side effects, field mappings — is yours, and the write subcommands below edit exactly that. Its *confidential* half — connection secrets, OAuth accounts, third-party field definitions (HubSpot, Calendly, HighLevel, SavvyCal) — is configured through the `request_flow_input` tool (`baker_ui` MCP server): the agent authors the surrounding structure and references it by `nodeId`/`sideEffectId`, and the user enters secrets, connects accounts, and picks resources in the dashboard. Those values are written (encrypted, where a secret) into the Form on the chat's branch and go live when the chat is published. Nothing any of these commands does touches a live system.
3900
+ **A Form has two halves, split by a trust boundary.** Its *structure* — steps, conditions, side effects, field mappings — is yours, and the write subcommands below edit exactly that. Its *confidential* half — connection secrets, OAuth accounts, third-party field definitions (HubSpot, Calendly, HighLevel, SavvyCal) — is set with `baker flows connect` whenever the agent knows the answer (an email's recipients and subject always; a connected platform's resource; a webhook with no token), and otherwise through the `request_flow_input` tool (`baker_ui` MCP server): the agent authors the surrounding structure and references it by `nodeId`/`sideEffectId`, and the user enters secrets, connects accounts, and picks resources in the dashboard. Those values are written (encrypted, where a secret) into the Form on the chat's branch and go live when the chat is published. Nothing any of these commands does touches a live system.
3730
3901
 
3731
3902
  ```bash
3732
3903
  baker flows list # every Form + how many confidential fields still need setup
3733
- baker flows show contact # confidential fields + whether the destination changed under this Form
3904
+ baker flows show contact # confidential fields, where each sealed destination sends (never a credential), and drift
3734
3905
  baker flows show contact --full # include the full flow tree (secret values redacted)
3735
3906
 
3736
3907
  baker flows schema # both vocabularies + the customForm field types
@@ -3745,11 +3916,14 @@ baker flows options calendly # what a step/destination ca
3745
3916
  baker flows connect contact --node book --resource <id> # fill a Calendly/SavvyCal/GoHighLevel step yourself
3746
3917
  baker flows connect contact --side-effect se-gsheet-1 --resource <spreadsheetId> # a sheet Baker can reach (--tab to pick the tab)
3747
3918
  baker flows connect contact --side-effect se-gsheet-1 --new-sheet "Contact leads" --columns "Name,Email" # create one and wire it
3748
- baker flows connect contact --side-effect se-pipedrive-1 # Pipedrive / GoHighLevel contact: the account is the destination
3919
+ baker flows connect contact --side-effect se-pipedrive-1 # Pipedrive / GoHighLevel / ActiveCampaign contact: the account is the destination
3920
+ baker flows connect contact --side-effect se-email-1 --email "ana@x.com, luis@x.com" --subject "New lead — Contact" # an email destination: the agent states it, never a card
3921
+ baker flows connect contact --side-effect se-httpWebhook-1 --url https://hooks.example.com/lead # a webhook that needs no token
3749
3922
  baker flows connect contact --all --type googleSpreadsheet --same-as madrid:se-gsheet-1 # copy another Form's destination
3750
3923
  baker flows map contact --from map.json --write # a whole mapping at once — past ~3 fields, use this
3751
3924
  baker flows map contact --map A=nombre --write # one or two fields
3752
3925
  baker flows map contact --hubspot-form <guid> --from map.json --write # HubSpot: field types read off the form
3926
+ baker flows map contact --map email=email --map 'tags="withbaker-"+tracking:page_path' --write # ActiveCampaign: fields read off the account; tag each lead with its page
3753
3927
  baker flows map contact --side-effect <id> --hubspot-form <guid> --prune-missing --write # drop dead mappings
3754
3928
  baker flows map contact --from map.json --replace --write # the slot becomes exactly this; drops everything not named
3755
3929
  baker flows normalize contact --write # repairs a nulled optional; runs pre-commit anyway
@@ -3759,12 +3933,13 @@ Notes:
3759
3933
 
3760
3934
  - **`schema` takes the kind as an argument because `hubspot` is both** — a node type (embeds a form on the page) and a side-effect type (fires a behavioural event). They are different things with one name.
3761
3935
  - **`connect` wires a HubSpot form without asking the user.** When HubSpot is connected and the agent knows which form is meant, `baker flows connect <slug> --hubspot-form <formId> [--side-effect <id>]` attaches the account and the form to a `hubspotForm` side effect (`--all`: every one in the Form still missing it, never repointing one already wired) — the same thing the chat card writes, sealed by Baker so the config never passes through the agent. It refuses a form with spam prevention (captcha) on, and returns `destination.formGuid` for `map --hubspot-form`. The card (`request_flow_input`) stays for an unconnected account or an ambiguous choice.
3762
- - **`options` + `connect` do the same for every other connected platform.** `baker flows options <kind>` lists what the connected account holds (Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach); `connect --node|--side-effect <id> --resource <id>` writes exactly what the card would. Pipedrive and a GoHighLevel contact take no resource. `--new-sheet` creates a spreadsheet in the connected Google account (Google only lets Baker reach sheets it created or the user chose), `--same-as <slug>:<id>` copies another Form's wired destination, `--all --type <kind>` fills every unwired one of a kind. Nothing connected answers `NOT_CONNECTED` with the `request_connection` fix; several accounts connected need `--account <id>`.
3936
+ - **`options` + `connect` do the same for every other connected platform.** `baker flows options <kind>` lists what the connected account holds (Calendly events, SavvyCal links, GoHighLevel calendars and forms, the Google spreadsheets Baker can reach); `connect --node|--side-effect <id> --resource <id>` writes exactly what the card would. Pipedrive, a GoHighLevel contact and an ActiveCampaign contact take no resource. `--new-sheet` creates a spreadsheet in the connected Google account (Google only lets Baker reach sheets it created or the user chose), `--same-as <slug>:<id>` copies another Form's wired destination, `--all --type <kind>` fills every unwired one of a kind. Nothing connected answers `NOT_CONNECTED` with the `request_connection` fix; several accounts connected need `--account <id>`.
3937
+ - **`--email` / `--url` replace a destination whole, so they leave alone what only the user can set.** `--all --email` passes over an email that replies to the visitor's own answer (and says so in its hints); naming one is refused. A webhook that sends a credential keeps its address until the user re-enters both through `request_flow_input`. Unreadable settings are also left alone by default. For one unreadable email, `--replace-unreadable --email <complete list> --subject <text>` replaces the old setup when the user intends replacement, without revealing it. Never use this to add to an unknown recipient list; it cannot override `--all`, a known visitor reply, or a webhook. `flows show` reads back only destinations sealed for this company.
3763
3938
  - **Configure the destination before you map.** `columnMapping`/`fieldMapping` describe a *specific* destination — sheet columns, a portal's field names — that only `connect` or `request_flow_input` can set, and both return it. A mapping written first is valid JSON that ships and drops every submission; `verify` blocks the half-wired result.
3764
- - **`map` reads the record shape off the side effect's type.** One property name, four record shapes: a Sheet is addressed by column letter, HubSpot by property name, Pipedrive and GoHighLevel by field key, Crmble by field id. That is why there is no `--key`, and why `--entity` and `--custom`/`--standard` are required rather than defaulted.
3939
+ - **`map` reads the record shape off the side effect's type.** One property name, four record shapes: a Sheet is addressed by column letter, HubSpot by property name, Pipedrive and GoHighLevel by field key, ActiveCampaign by field key (`email`, `firstName`, a custom field's id, `tags`, `lists`, `automations`, `note`, or a qualified `deal.title` / `account.name` / `event.name`), Crmble by field id. That is why there is no `--key`, and why `--entity` and `--custom`/`--standard` are required rather than defaulted for Pipedrive and GoHighLevel.
3765
3940
  - **A mapping is usually eight to fifteen fields, so `--from` is the main door.** It takes `{ "map": { "<destField>": "<value>" } }` from a file or stdin; `--map` flags are for one or two. Both produce identical output.
3766
3941
  - **Most CRM fields are not fed by a form field.** The value grammar is a bare form field (`nombre`), `field:Step.name` when two steps share a name, `tracking:utm_source`, `global:Name`, `code:exposed_value`, a `"literal"`, or any of those joined with `+`. Tracking names are validated against the engine's own `TRACKING_FIELD_IDS`, read out of the workspace rather than copied — attribution columns are the most common CRM mapping there is, and they were unexpressible before.
3767
- - **A CRM mapping's field type is derived from the destination, never defaulted.** Every CRM record types `fieldType` as required, and it is the account's answer, not the agent's — HubSpot builds its submission key as `<objectTypeId>.<fieldType>.<fieldName>`, so a wrong type on a date property skips the `YYYY-MM-DD` coercion and the value is dropped. `--hubspot-form <formGuid>` (or `"hubspotForm"` in the mapping file) reads every property's type and object type off the form, so nothing has to state one. Where a destination cannot be read, put the type on the LEFT — `c0ffee:varchar=email` — which leaves `:` on the right for the value kinds. A mapping with no type from either route is refused, never written without one.
3942
+ - **A CRM mapping's field type is derived from the destination, never defaulted.** Every CRM record types `fieldType` as required, and it is the account's answer, not the agent's — HubSpot builds its submission key as `<objectTypeId>.<fieldType>.<fieldName>`, so a wrong type on a date property skips the `YYYY-MM-DD` coercion and the value is dropped. `--hubspot-form <formGuid>` (or `"hubspotForm"` in the mapping file) reads every property's type and object type off the form, so nothing has to state one. An `activeCampaignContact` mapping reads the connected ActiveCampaign account's field list on every call — no flag — so its types (`standard`, `custom`, `tags`, `lists`, `automations`, `deal`, `account`, `note`, `event`) are derived too, a custom field may be named by its id, personalization tag or label (stored as the id) — or as `custom.<TAG>` for one that is only staged so far, resolved when each lead is sent — and a name the account does not have is refused with the list of the ones it does. Its `tags`, `lists` and `automations` mappings are comma-separated names or ids that may mix text and variables, e.g. `tags="withbaker-"+tracking:page_path`; `deal.title` or `deal.pipeline` creates a deal (`deal.value` in major units, `deal.stage` / `deal.owner` by name or id), `account.name` finds or creates the lead's company, `note` leaves a note and `event.name` records an event (it needs the account's event key on the connection). The answer's `hints` name a list, automation, pipeline, stage or user the account does not have, a deal nothing creates, and an event with no event key. Where a destination cannot be read, put the type on the LEFT — `c0ffee:varchar=email` — which leaves `:` on the right for the value kinds. A mapping with no type from either route is refused, never written without one.
3768
3943
  - **`email` maps like anything else**, into `body.fields`, while `body.format` is `"json"`. A `"body"`-format email is one written message with no keys to address, and `map` refuses it rather than reshaping the body.
3769
3944
  - **A Form can look finished and be losing every lead.** HubSpot refuses a submission that names a property it does not have — the whole submission, not the field — and the visitor still reaches the thank-you screen. Baker re-checks each Form's destination and `baker flows show <slug>` reports what it found: `data.drift[]` carries **one entry per drifted destination** — a Form with two HubSpot side effects has two mappings, two form ids and two repairs — each with the severity, a sentence naming the fields, the side-effect id and that destination's HubSpot form id; the hints carry one repair command per entry. `drift: null` means the check could not be made and is not the same answer as `[]`.
3770
3945
  - **`--prune-missing` is the repair; `--replace` is not.** With `--side-effect <id>` and `--hubspot-form <guid>`, `--prune-missing` drops exactly the mappings whose destination field is absent from that form's live field list, names each one in `dropped`, and leaves every other mapping alone. It needs no `--map` and runs on its own. `--replace` drops everything the call does not name, so using it to remove three dead mappings means first restating the ten good ones correctly.
@@ -3774,7 +3949,7 @@ Notes:
3774
3949
  - **`normalize` exists so authoring a Form does not require remembering an exception.** `oauthProviderId` is an optional `string`, so a `null` there fails typecheck one build later — it is repaired and staged instead of rejected.
3775
3950
 
3776
3951
  - **Secrets never travel through this CLI or the chat.** `show` reports only whether each field is configured (`[set]`/`[missing]`, `[connected]`/`[needs connection]`, selected/not selected) — never a value. Configured secrets appear only as `[configured]` ciphertext markers.
3777
- - Confidential side-effect types: `httpWebhook`, `zapier`, `crmble` (typed credentials); `pipedrive`, `googleSpreadsheet`, `hubspotForm`, `goHighlevelContact` (OAuth connection + resource); `email`. Widget node types needing a resource pick: `calendly`, `savvycal`, `hubspot`, `hubspotMeeting`, `highlevel`, `highlevelForm`.
3952
+ - Confidential side-effect types: `httpWebhook`, `zapier`, `crmble` (typed credentials); `pipedrive`, `googleSpreadsheet`, `hubspotForm`, `goHighlevelContact`, `activeCampaignContact` (connected account + resource); `email`. Widget node types needing a resource pick: `calendly`, `savvycal`, `hubspot`, `hubspotMeeting`, `highlevel`, `highlevelForm`.
3778
3953
  - `request_flow_input` changes stage on the chat's branch and apply when the chat is published; discarding the chat drops them.
3779
3954
 
3780
3955
  ### Action Items (`baker actions`)
@@ -4309,10 +4484,14 @@ A skill fills only what you did **not** pin — `--model`, `--aspect-ratio` and
4309
4484
 
4310
4485
  ## Creative Canvas
4311
4486
 
4487
+ Static-ad guidance prefers a ready company Avatar whenever an actor is needed, chosen for the buyer context. A real founder or testimonial author uses their verified likeness; if it cannot be found, use initials or no face. The shared creative instructions also call for deliberate complete-logo selection, one consistent primary CTA treatment, and deterministic rendering of recognizable interfaces. Screen guidance distinguishes laptops and notebook computers from paper notebooks beside a phone.
4488
+
4312
4489
  The creative canvas runs declarative JSON pipelines. You author a graph of nodes (text, image, video, audio, composition, control-flow), `baker canvas run` it, and every node's output drops to disk under `canvas/<run_id>/` so you can watch progress and consume the artifacts.
4313
4490
 
4314
4491
  Auth: same `BAKER_API_KEY` + `BAKER_API_URL` as the rest of the CLI.
4315
4492
 
4493
+ Static resizes, fixes and series continuations keep why the original ad works and the elements its concept depends on, alongside the previous image. Older specs carry their persuasion mechanism and its reason instead. Automatic spec repairs preserve the concept, mechanism, message, brand (including the CTA color) and native interface; they can correct the execution without changing the idea. Change those choices explicitly in `prompt.json` when the brief changes.
4494
+
4316
4495
  ### Quick start
4317
4496
 
4318
4497
  ```bash
@@ -6106,7 +6285,7 @@ The canvas is validated before it is written. stdout returns `{ ok, canvas_path,
6106
6285
 
6107
6286
  The render prompt is **model-aware**: each model's profile (`src/engine/lib/prompt-profiles.ts`) sets its shape, word budget, picture order and request params. gpt-image gets short labelled sections with the constraints last; Gemini gets sentences that give the reason and a positive closing list of the only words allowed. A profile change, or a new model on the router (`src/engine/lib/image-model-router.ts`), is re-run on the static bench (`scripts/creative-evals`, `--job static`) before it ships. Run `baker canvas critique` on the scaffolded canvas for an advisory read before you spend.
6108
6287
 
6109
- **A reference from the winners library goes in by id.** `--source-ad-id <ad_id> --source-platform meta|linkedin|tiktok [--source-advertiser-id <id>]` (the ids beside the ad in `baker winning-ads search`) fetches the library's structured read of that ad, the same one `baker winning-ads content <ad_id> --full` returns, and writes it into `prompt.json` as a `reference` block: `{ ad_id, platform, advertiser, advertiser_id, format_pattern, layout: { composition, focal_subject, aspect_ratio, background, palette_mood, colors, production, aesthetic, cta_in_image, markers }, message: { mechanism, awareness, sophistication, angle, hook_archetype, pain_points, desires, value_props, objections_handled, proof, risk_reversal }, offer: { offer_type, pricing_model, entry_price, no_credit_card, guarantee, guarantee_days, urgency, bonus }, text_blocks: [{ text, role, position }], copy: { primary_text, headline, cta } }` (filled fields only). The describe pass still reads the pixels but is told that read as grounding, so the two cannot disagree on the container or the mechanism; when it names no `winning_mechanisms`, the library's container + mechanism seeds the list. The source ids (`sourceAdId`, `sourcePlatform`, `sourceAdvertiserId`, and `sourceAdvertiser` from the library when `--advertiser` is absent) are written to `_definition.md` and synced to the creative at scaffold time. A library read that fails warns, records the ids anyway and scaffolds from the picture alone (`hints`: `REFERENCE NOT READ`); with no picture either, the command exits 2 (`source_unavailable`). `baker canvas sync-definition` re-reads the three ids from `_definition.md` on every sync.
6288
+ **A reference from the winners library goes in by id.** `--source-ad-id <ad_id> --source-platform meta|linkedin|tiktok|google [--source-advertiser-id <id>]` (the ids beside the ad in `baker winning-ads search`) fetches the library's structured read of that ad, the same one `baker winning-ads content <ad_id> --full` returns, and writes it into `prompt.json` as a `reference` block: `{ ad_id, platform, advertiser, advertiser_id, format_pattern, layout: { composition, focal_subject, aspect_ratio, background, palette_mood, colors, production, aesthetic, cta_in_image, markers }, message: { mechanism, awareness, sophistication, angle, hook_archetype, pain_points, desires, value_props, objections_handled, proof, risk_reversal }, offer: { offer_type, pricing_model, entry_price, no_credit_card, guarantee, guarantee_days, urgency, bonus }, text_blocks: [{ text, role, position }], copy: { primary_text, headline, cta } }` (filled fields only). The describe pass still reads the pixels but is told that read as grounding, so the two cannot disagree on the container or the mechanism; when it names no `winning_mechanisms`, the library's container + mechanism seeds the list. The source ids (`sourceAdId`, `sourcePlatform`, `sourceAdvertiserId`, and `sourceAdvertiser` from the library when `--advertiser` is absent) are written to `_definition.md` and synced to the creative at scaffold time. A library read that fails warns, records the ids anyway and scaffolds from the picture alone (`hints`: `REFERENCE NOT READ`); with no picture either, the command exits 2 (`source_unavailable`). `baker canvas sync-definition` re-reads the three ids from `_definition.md` on every sync.
6110
6289
 
6111
6290
  ```bash
6112
6291
  baker canvas scaffold-static-ad --source-ad-id adg_123 --source-platform meta --slug spring-offer --platform meta --target-adset 120249211706990208
@@ -6138,6 +6317,10 @@ baker canvas run ./static-ad.canvas.json
6138
6317
 
6139
6318
  Scaffolding runs (and bills) the two vision passes; **running** the result generates billed images. `baker canvas validate` does not check that the `[TODO]` paths exist — supply the real files before `run`.
6140
6319
 
6320
+ Size adaptations move and proportionally scale the existing composition first, keeping its background treatment, including intentional flat colour. Generation, adaptation, correction and series briefs preserve plausible anatomy, device proportions, scale, perspective and support, and reflow text while preserving letter shapes. Recognizable app controls remain native; marketing overlays stay visibly separate. Shared guidance records applicable intent and constraints briefly in `_definition.md`, then carries them into `prompt.json` (Markdown is not a render input). Direct briefs need no invented winner or fixed template; reference adaptations reason through the mechanism, transfer hypothesis and what must survive. `creatives make` returns this preparation hint before rendering. Choose the represented role and inspect existing Avatars before creating a new actor; a real founder or customer keeps their verified identity.
6321
+
6322
+ During continuations, the accepted image's screen content takes priority over geometry references unless explicitly changed. Laptop scenes receive guidance for a real laptop and consistent display, keyboard and hinge perspective.
6323
+
6141
6324
  #### `baker canvas rerun <slug> [flags]` (deprecated)
6142
6325
 
6143
6326
  Now `baker canvas run --slug <slug>`; `rerun` stays as a hidden alias for one release and prints a deprecation note. Every `canvas run` of a creative records a portable snapshot (the canvas JSON plus the local files it ingests: prompt blueprints, composition dirs, reference images) in durable storage, so `run --slug` can rebuild `src/creatives/<slug>/` in a workspace that never had it. A snapshot whose files are exactly the last one uploaded for the creative is reused without a request, and a file the store already holds is not uploaded again. Files the snapshot could not include (missing at run time, or oversized) are listed as warnings.
@@ -7019,3 +7202,9 @@ Pushing to `main` with changes in `packages/cli/` triggers the GitHub Actions wo
7019
7202
  npx convex env set BAKER_CLI_VERSION <version> # Override sandbox version
7020
7203
  npx convex env remove BAKER_CLI_VERSION # Clean up after testing
7021
7204
  ```
7205
+
7206
+ ### Agreed tracking setup and external questionnaire diagnostics
7207
+
7208
+ `baker analytics plan [--full]` reads the effective session plan. `--json @preparation.json` stages journeys, event purposes and readiness, optionally wiring conversion definitions, funnel steps and a managed Tag Manager installation. The generated base queues early events and runs before event tags; repeating preparation replaces its own draft operations. These changes apply only at Publish. Waiting events record the missing change and owner; prepared tags do not imply accepted events. The full request contract and example are in the scaffold's [analytics tool doc](../../apps/scaffold-template/__tooling__/docs/tools/baker/analytics.md#shared-journey-and-tracking-plan).
7209
+
7210
+ `baker analytics questionnaire [--name questionnaire_step] [--days 7] [--inactivity 30]` reports distinct attempts reaching/completing/skipping questions and distinguishes pending, abandoned and incomplete steps. The external app must emit the documented attempt/version/sequence contract. The report refuses truncated histories above 600 events and excludes attempts without an observed start; no observations do not establish zero abandonment.