@koda-sl/baker-cli 0.478.0 → 0.480.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1402) hide show
  1. package/README.md +48 -20
  2. package/dist/account-7LUQWY6Q.js +49 -0
  3. package/dist/account-VH2AATWI.js +79 -0
  4. package/dist/account-Z65CPOWE.js +80 -0
  5. package/dist/account-reads-GYI2SS6T.js +218 -0
  6. package/dist/account-writes-4N2MA2ZR.js +66 -0
  7. package/dist/accounts-E4TVYTUR.js +115 -0
  8. package/dist/accounts-SMB3TNXX.js +114 -0
  9. package/dist/accounts-SPLE7URQ.js +611 -0
  10. package/dist/accounts-UA2ZWRN4.js +75 -0
  11. package/dist/accounts-XG472YLB.js +77 -0
  12. package/dist/actions-KQTXBNJU.js +55 -0
  13. package/dist/active-entities-MCL7UEGV.js +103 -0
  14. package/dist/activecampaign-42JXANUA.js +935 -0
  15. package/dist/activities-IQPJPP4B.js +74 -0
  16. package/dist/ad-group-writes-EUTMPBMK.js +170 -0
  17. package/dist/ad-groups-OVPAI5RM.js +68 -0
  18. package/dist/ad-writes-DACTYFEO.js +174 -0
  19. package/dist/add-5IGUQHVZ.js +105 -0
  20. package/dist/add-BK5AQI5A.js +97 -0
  21. package/dist/add-C3FQ5D62.js +104 -0
  22. package/dist/add-KTEJCE4L.js +302 -0
  23. package/dist/add-accounts-CJSV5NPL.js +91 -0
  24. package/dist/ads-HXX2IAFF.js +113 -0
  25. package/dist/ads-L65JIKCD.js +77 -0
  26. package/dist/ads-RAUM6ISF.js +128 -0
  27. package/dist/ads-WPI3AMSR.js +40 -0
  28. package/dist/adsets-LPN6WFGF.js +176 -0
  29. package/dist/advertisers-36HP3AOE.js +120 -0
  30. package/dist/advertisers-DS2NRWKI.js +125 -0
  31. package/dist/analytics-I4LZCRG2.js +433 -0
  32. package/dist/analytics-IFNBT7IM.js +1976 -0
  33. package/dist/animate-3LV3LHXQ.js +480 -0
  34. package/dist/assign-WBLSZNCO.js +77 -0
  35. package/dist/audience-size-LOX5BNXI.js +73 -0
  36. package/dist/audiences-3LRCLHTQ.js +85 -0
  37. package/dist/audiences-RPLVMO4H.js +268 -0
  38. package/dist/audiences-XEZHACKH.js +78 -0
  39. package/dist/audit-6AG6BPXQ.js +151 -0
  40. package/dist/audit-YEGQU474.js +88 -0
  41. package/dist/autocomplete-2QRU7ARD.js +111 -0
  42. package/dist/avatars-EIETXCF3.js +38 -0
  43. package/dist/bid-pricing-5LZFHQTS.js +100 -0
  44. package/dist/brand-CINQG3JG.js +22 -0
  45. package/dist/brief-WAQ2V6Q4.js +538 -0
  46. package/dist/brief-WAQ2V6Q4.js.map +1 -0
  47. package/dist/businesses-PRRYPR7H.js +53 -0
  48. package/dist/campaign-groups-5CMTEJZZ.js +95 -0
  49. package/dist/campaign-writes-4RMPHQCT.js +165 -0
  50. package/dist/campaign-writes-U5LTDTYK.js +170 -0
  51. package/dist/campaigns-4SOLY7OR.js +110 -0
  52. package/dist/campaigns-NFRLFNXI.js +107 -0
  53. package/dist/campaigns-PC7UAVXR.js +109 -0
  54. package/dist/campaigns-TFEQTSO3.js +76 -0
  55. package/dist/canvas-BPACZHNU.js +46 -0
  56. package/dist/capabilities-FNVTPCDT.js +144 -0
  57. package/dist/cards-WHMCSRZX.js +85 -0
  58. package/dist/catalog-RMMECI4Z.js +65 -0
  59. package/dist/catalog-RMMECI4Z.js.map +1 -0
  60. package/dist/catalogs-A7XMEEEP.js +128 -0
  61. package/dist/changes-J67WATHX.js +135 -0
  62. package/dist/chatgpt-4PEWDJKP.js +47 -0
  63. package/dist/chats-S5FCV7YO.js +262 -0
  64. package/dist/check-GCZ2ZBKH.js +104 -0
  65. package/dist/check-GCZ2ZBKH.js.map +1 -0
  66. package/dist/chunk-232YUPUI.js +125 -0
  67. package/dist/chunk-23H4ZJRP.js +136 -0
  68. package/dist/chunk-2DHHL4PU.js +156 -0
  69. package/dist/chunk-2DHHL4PU.js.map +1 -0
  70. package/dist/chunk-2FSEESJU.js +1744 -0
  71. package/dist/chunk-2FSEESJU.js.map +1 -0
  72. package/dist/chunk-3OCSWUHV.js +67 -0
  73. package/dist/chunk-3S5YZWB7.js +601 -0
  74. package/dist/chunk-3S5YZWB7.js.map +1 -0
  75. package/dist/chunk-3UXMQ3K2.js +274 -0
  76. package/dist/chunk-5NS4CNF6.js +1518 -0
  77. package/dist/chunk-5NS4CNF6.js.map +1 -0
  78. package/dist/chunk-5WMTPYKT.js +84 -0
  79. package/dist/chunk-65N4ZPQD.js +26 -0
  80. package/dist/chunk-65PUXMWE.js +167 -0
  81. package/dist/chunk-65PUXMWE.js.map +1 -0
  82. package/dist/chunk-6JWEGFM5.js +174 -0
  83. package/dist/chunk-6KK26F2T.js +46 -0
  84. package/dist/chunk-6KK26F2T.js.map +1 -0
  85. package/dist/chunk-7HJR5M4R.js +8843 -0
  86. package/dist/chunk-7HJR5M4R.js.map +1 -0
  87. package/dist/chunk-7LU7KARN.js +64 -0
  88. package/dist/chunk-7LU7KARN.js.map +1 -0
  89. package/dist/chunk-7RBJ2Z7Z.js +172 -0
  90. package/dist/chunk-7U3V64YT.js +344 -0
  91. package/dist/chunk-7U3V64YT.js.map +1 -0
  92. package/dist/chunk-ABXTGAG7.js +23 -0
  93. package/dist/chunk-ADSNY4KZ.js +399 -0
  94. package/dist/chunk-AHF6TQWB.js +392 -0
  95. package/dist/chunk-AIJBZSZV.js +224 -0
  96. package/dist/chunk-AIJBZSZV.js.map +1 -0
  97. package/dist/chunk-AQ5WISEG.js +98 -0
  98. package/dist/chunk-AS5VL32C.js +131 -0
  99. package/dist/chunk-AS5VL32C.js.map +1 -0
  100. package/dist/chunk-BFRIRZRZ.js +98 -0
  101. package/dist/chunk-BFZS3WHS.js +84 -0
  102. package/dist/chunk-BITS62MF.js +77 -0
  103. package/dist/chunk-BLAHHMPF.js +333 -0
  104. package/dist/chunk-BSEB55E6.js +148 -0
  105. package/dist/chunk-BSEB55E6.js.map +1 -0
  106. package/dist/chunk-C3TTE7GS.js +66 -0
  107. package/dist/chunk-C3TTE7GS.js.map +1 -0
  108. package/dist/chunk-CCIDHU6M.js +169 -0
  109. package/dist/chunk-CM6FCSWN.js +644 -0
  110. package/dist/chunk-CVBKW75S.js +296 -0
  111. package/dist/chunk-CXQRTLSQ.js +159 -0
  112. package/dist/chunk-D4I3KULJ.js +5367 -0
  113. package/dist/chunk-D4I3KULJ.js.map +1 -0
  114. package/dist/chunk-D4LKZJYJ.js +76 -0
  115. package/dist/chunk-D7KR6KXR.js +66 -0
  116. package/dist/chunk-DCTEL4KG.js +592 -0
  117. package/dist/chunk-DF22CTXE.js +225 -0
  118. package/dist/chunk-DF22CTXE.js.map +1 -0
  119. package/dist/chunk-DH5CKOYK.js +103 -0
  120. package/dist/chunk-DMVDVZJK.js +97 -0
  121. package/dist/chunk-DMVDVZJK.js.map +1 -0
  122. package/dist/chunk-DQC4NIJE.js +51 -0
  123. package/dist/chunk-DWX44QL6.js +75 -0
  124. package/dist/chunk-EE72SSB2.js +472 -0
  125. package/dist/chunk-FNA277HP.js +97 -0
  126. package/dist/chunk-FRK7SSEH.js +6306 -0
  127. package/dist/chunk-FRK7SSEH.js.map +1 -0
  128. package/dist/chunk-FU7HJWGM.js +26 -0
  129. package/dist/chunk-GDLQ6SGW.js +46 -0
  130. package/dist/chunk-GEKXIXMG.js +106 -0
  131. package/dist/chunk-GLW7UJLB.js +58 -0
  132. package/dist/chunk-GMSKPGLI.js +3846 -0
  133. package/dist/chunk-GMSKPGLI.js.map +1 -0
  134. package/dist/chunk-H5HDZ7IC.js +139 -0
  135. package/dist/chunk-HJQ7N7FC.js +8661 -0
  136. package/dist/chunk-HJQ7N7FC.js.map +1 -0
  137. package/dist/chunk-I5VZVQBZ.js +35 -0
  138. package/dist/chunk-IC6SDOED.js +45 -0
  139. package/dist/chunk-IG627WWY.js +23992 -0
  140. package/dist/chunk-IN4G7X6W.js +94 -0
  141. package/dist/chunk-IPLE5K5E.js +188 -0
  142. package/dist/chunk-IWWOGBGA.js +665 -0
  143. package/dist/chunk-JD4SABZC.js +942 -0
  144. package/dist/chunk-JD4SABZC.js.map +1 -0
  145. package/dist/chunk-JFA4R3KS.js +172 -0
  146. package/dist/chunk-JYBLCIRN.js +106 -0
  147. package/dist/chunk-K3TNTBZJ.js +52 -0
  148. package/dist/chunk-KCKC637S.js +122 -0
  149. package/dist/chunk-KCKC637S.js.map +1 -0
  150. package/dist/chunk-KPYDTIAI.js +317 -0
  151. package/dist/chunk-KPYDTIAI.js.map +1 -0
  152. package/dist/chunk-LCW3U4EA.js +25 -0
  153. package/dist/chunk-LD4CHA7U.js +89 -0
  154. package/dist/chunk-LD4CHA7U.js.map +1 -0
  155. package/dist/chunk-LS3A753J.js +225 -0
  156. package/dist/chunk-LS3A753J.js.map +1 -0
  157. package/dist/chunk-MI3JB5KB.js +76 -0
  158. package/dist/chunk-MIOOPOG2.js +547 -0
  159. package/dist/chunk-MJQBXFW6.js +74 -0
  160. package/dist/chunk-MMVLRUMK.js +612 -0
  161. package/dist/chunk-MMVLRUMK.js.map +1 -0
  162. package/dist/chunk-MPACDBH5.js +74 -0
  163. package/dist/chunk-MXWOYFI2.js +544 -0
  164. package/dist/chunk-N5O67GK5.js +215 -0
  165. package/dist/chunk-NBNLGJH5.js +97 -0
  166. package/dist/chunk-NBNLGJH5.js.map +1 -0
  167. package/dist/chunk-NCP6RD6A.js +433 -0
  168. package/dist/chunk-NNF4RARY.js +297 -0
  169. package/dist/chunk-NR2OVOTD.js +363 -0
  170. package/dist/chunk-NVGXYF6K.js +846 -0
  171. package/dist/chunk-OP7DNHD2.js +137 -0
  172. package/dist/chunk-ORQKMXHA.js +76 -0
  173. package/dist/chunk-P3TNRS56.js +149 -0
  174. package/dist/chunk-PQTY22FR.js +159 -0
  175. package/dist/chunk-PQTY22FR.js.map +1 -0
  176. package/dist/chunk-Q7YZL7PG.js +494 -0
  177. package/dist/chunk-QABSQADZ.js +56 -0
  178. package/dist/chunk-QVNSVFSD.js +91 -0
  179. package/dist/chunk-QVNSVFSD.js.map +1 -0
  180. package/dist/chunk-QVQKCVP7.js +85 -0
  181. package/dist/chunk-QVQKCVP7.js.map +1 -0
  182. package/dist/chunk-R2TAVQGZ.js +455 -0
  183. package/dist/chunk-R5WNYLG4.js +197 -0
  184. package/dist/chunk-RCSOG2DV.js +142 -0
  185. package/dist/chunk-RCSOG2DV.js.map +1 -0
  186. package/dist/chunk-RD2XXQW3.js +1599 -0
  187. package/dist/chunk-RDCYPWQZ.js +260 -0
  188. package/dist/chunk-RDCYPWQZ.js.map +1 -0
  189. package/dist/chunk-RLS5OPPZ.js +207 -0
  190. package/dist/chunk-RMLJNHCU.js +346 -0
  191. package/dist/chunk-RTWRNG3E.js +821 -0
  192. package/dist/chunk-RTWRNG3E.js.map +1 -0
  193. package/dist/chunk-S7A34DOA.js +111 -0
  194. package/dist/chunk-SFJW2KED.js +166 -0
  195. package/dist/chunk-SOKVXKRM.js +74 -0
  196. package/dist/chunk-STNCMKL6.js +191 -0
  197. package/dist/chunk-SWL4AAPP.js +320 -0
  198. package/dist/chunk-T6ATGN7Y.js +3187 -0
  199. package/dist/chunk-T6ATGN7Y.js.map +1 -0
  200. package/dist/chunk-TF4PGUO5.js +191 -0
  201. package/dist/chunk-TF4PGUO5.js.map +1 -0
  202. package/dist/chunk-TNOJ6O6B.js +61 -0
  203. package/dist/chunk-U2452GLO.js +1914 -0
  204. package/dist/chunk-U2452GLO.js.map +1 -0
  205. package/dist/chunk-ULPO72IQ.js +225 -0
  206. package/dist/chunk-UMZIQIWN.js +1079 -0
  207. package/dist/chunk-V7N666PJ.js +19 -0
  208. package/dist/chunk-WNJ5SYAG.js +275 -0
  209. package/dist/chunk-WNSE7N75.js +2123 -0
  210. package/dist/chunk-XDZVBX6L.js +220 -0
  211. package/dist/chunk-XGOEX2VJ.js +55 -0
  212. package/dist/chunk-XUB2EK65.js +57 -0
  213. package/dist/chunk-XUR4QWCS.js +206 -0
  214. package/dist/chunk-XZ4YMCZK.js +66 -0
  215. package/dist/chunk-Y3VRMFGF.js +42 -0
  216. package/dist/chunk-YD7BQDJ6.js +903 -0
  217. package/dist/chunk-ZBV5IV5T.js +843 -0
  218. package/dist/chunk-ZBV5IV5T.js.map +1 -0
  219. package/dist/claim-6MPQD43X.js +197 -0
  220. package/dist/cli.js +41 -41
  221. package/dist/client-WL2FKW4T.js +19 -0
  222. package/dist/code-NXN7QYKU.js +76 -0
  223. package/dist/companies-KRF2K4CA.js +195 -0
  224. package/dist/complete-V433ON5C.js +81 -0
  225. package/dist/config-VOF57KBL.js +88 -0
  226. package/dist/connect-QVIAM3GX.js +42 -0
  227. package/dist/content-KA25YYO3.js +85 -0
  228. package/dist/conversation-VZKBZZGG.js +93 -0
  229. package/dist/conversion-report-REOHVLCI.js +125 -0
  230. package/dist/conversion-upload-command-ASHA6T6H.js +438 -0
  231. package/dist/conversion-writes-JU7Q2MUO.js +120 -0
  232. package/dist/conversions-3ISBR3TS.js +76 -0
  233. package/dist/conversions-ZLC6YTJ5.js +135 -0
  234. package/dist/countries-XGMZWUGP.js +82 -0
  235. package/dist/create-B3QMYSIX.js +132 -0
  236. package/dist/create-IFCCMKFT.js +207 -0
  237. package/dist/create-R5P6JU5A.js +235 -0
  238. package/dist/create-SF6DOGDJ.js +59 -0
  239. package/dist/creatives-F3TMRTIR.js +58 -0
  240. package/dist/creatives-F3TMRTIR.js.map +1 -0
  241. package/dist/creatives-KD7MOCR3.js +182 -0
  242. package/dist/creatives-YJ3CXZQC.js +87 -0
  243. package/dist/credentials-2KJUKBMF.js +287 -0
  244. package/dist/critique-A2OEMGZS.js +227 -0
  245. package/dist/critique-A2OEMGZS.js.map +1 -0
  246. package/dist/critique-JVKJEBAC.js +1451 -0
  247. package/dist/critique-JVKJEBAC.js.map +1 -0
  248. package/dist/crm-GX72E2LT.js +224 -0
  249. package/dist/crm-ZYDNEME5.js +318 -0
  250. package/dist/crop-7UTYG7GS.js +113 -0
  251. package/dist/currency-CGDI2NXI.js +88 -0
  252. package/dist/custom-conversions-YRYE65PU.js +125 -0
  253. package/dist/customers-P4N4NXLJ.js +56 -0
  254. package/dist/decide-TWKH5QQU.js +199 -0
  255. package/dist/delete-2GIIUPA3.js +69 -0
  256. package/dist/delete-AK5IV44E.js +66 -0
  257. package/dist/delete-GLLYPNNB.js +71 -0
  258. package/dist/delete-J7DXPGKD.js +71 -0
  259. package/dist/delete-RS7RQDUX.js +54 -0
  260. package/dist/delete-S4VKH7IS.js +64 -0
  261. package/dist/demographics-IKWN2H3V.js +138 -0
  262. package/dist/describe-5QCPRSIG.js +97 -0
  263. package/dist/describe-L3UC6MIL.js +97 -0
  264. package/dist/dimensions-POH4JXEM.js +101 -0
  265. package/dist/discard-H6DOHJRG.js +66 -0
  266. package/dist/discover-L4TPEKGY.js +172 -0
  267. package/dist/discover-XAJKZCMM.js +93 -0
  268. package/dist/domain-US4KKAXC.js +98 -0
  269. package/dist/download-N4J5WFHD.js +299 -0
  270. package/dist/draft-BIQ3ZAYW.js +306 -0
  271. package/dist/draft-EWDOIXSH.js +233 -0
  272. package/dist/draft-IL37WDST.js +103 -0
  273. package/dist/draft-IZ4YLQRD.js +307 -0
  274. package/dist/draft-KDMYGLWN.js +100 -0
  275. package/dist/draft-OLFQZBWL.js +217 -0
  276. package/dist/draft-R32RFDCI.js +328 -0
  277. package/dist/draft-Y2QJE2NM.js +281 -0
  278. package/dist/engine/index.d.ts +31 -1
  279. package/dist/engine/index.js +15 -14
  280. package/dist/env-5MUVYE2L.js +51 -0
  281. package/dist/experiment-G3FQVAJU.js +1397 -0
  282. package/dist/export-OLDI32HM.js +168 -0
  283. package/dist/extract-PPS6ONQN.js +113 -0
  284. package/dist/facets-JBZQHN3D.js +114 -0
  285. package/dist/favorites-4ELADD3R.js +178 -0
  286. package/dist/feed-XIY5TVDL.js +177 -0
  287. package/dist/feedback-CCU6ECMQ.js +106 -0
  288. package/dist/feedback-CCU6ECMQ.js.map +1 -0
  289. package/dist/feedback-record-JCE3JWG6.js +260 -0
  290. package/dist/feedback-record-JCE3JWG6.js.map +1 -0
  291. package/dist/fetch-GOY6DQRL.js +176 -0
  292. package/dist/fetch-YWUVDMUH.js +139 -0
  293. package/dist/find-EVY4XEIQ.js +134 -0
  294. package/dist/fit-TVQ7RK52.js +62 -0
  295. package/dist/flows-274YPU6I.js +247 -0
  296. package/dist/follow-ZTPZKIMZ.js +94 -0
  297. package/dist/follow-competitors-6QDVQ4VJ.js +112 -0
  298. package/dist/following-PBZLZFGQ.js +113 -0
  299. package/dist/fonts-BMUNDGOZ.js +36 -0
  300. package/dist/forecast-F2CZSIMP.js +168 -0
  301. package/dist/forecast-W5F2MNOV.js +118 -0
  302. package/dist/funding-ULBMKUMW.js +85 -0
  303. package/dist/funnel-LEUXICXU.js +394 -0
  304. package/dist/ga4-2BL5YAYN.js +55 -0
  305. package/dist/generate-4HWNFAH3.js +263 -0
  306. package/dist/get-6RZU4M6W.js +63 -0
  307. package/dist/get-7GCEJ6KG.js +92 -0
  308. package/dist/get-MGDY5JYZ.js +79 -0
  309. package/dist/get-MZWUMHEF.js +61 -0
  310. package/dist/get-OAZZHUZP.js +59 -0
  311. package/dist/get-OHU2N7B7.js +63 -0
  312. package/dist/get-TY6AMFI4.js +56 -0
  313. package/dist/gif-NYZYV5RY.js +102 -0
  314. package/dist/gif-NYZYV5RY.js.map +1 -0
  315. package/dist/google-7STODZQR.js +136 -0
  316. package/dist/google-ZTTE34A4.js +3190 -0
  317. package/dist/google-ads-5ARKO757.js +195 -0
  318. package/dist/group-D5WXNFCP.js +43 -0
  319. package/dist/group-Y5PLETFT.js +43 -0
  320. package/dist/gsc-UU3T2C6B.js +30 -0
  321. package/dist/history-IQ33J5PB.js +67 -0
  322. package/dist/history-SU7VQCDJ.js +133 -0
  323. package/dist/hubspot-TJED44GO.js +779 -0
  324. package/dist/icon-GB7UH5RF.js +137 -0
  325. package/dist/ideas-UTSCGCT6.js +40 -0
  326. package/dist/images-ZMZ4WLYH.js +92 -0
  327. package/dist/images-ZMZ4WLYH.js.map +1 -0
  328. package/dist/improve-U5USRH4G.js +86 -0
  329. package/dist/ingest-DGDNZWEM.js +23 -0
  330. package/dist/ingest-SGBJ3NXX.js +107 -0
  331. package/dist/insights-4HT2NAYP.js +423 -0
  332. package/dist/insights-SQLE5NOJ.js +122 -0
  333. package/dist/inspect-BMQTTKMW.js +189 -0
  334. package/dist/inspiration-XQYHBJY2.js +53 -0
  335. package/dist/intent-LM36WK45.js +95 -0
  336. package/dist/job-CGQHEANB.js +202 -0
  337. package/dist/job-create-SZYJT2NC.js +109 -0
  338. package/dist/job-status-6LAKLCKH.js +74 -0
  339. package/dist/keep-3MJSHWU3.js +78 -0
  340. package/dist/keyword-gap-P652ODHN.js +130 -0
  341. package/dist/keyword-metrics-MQLGGJBT.js +197 -0
  342. package/dist/keywords-for-site-JL6H2YGU.js +128 -0
  343. package/dist/landing-AJO2BPC2.js +28 -0
  344. package/dist/landings-ZLKUP66P.js +151 -0
  345. package/dist/languages-3IJVDS5Z.js +55 -0
  346. package/dist/languages-HL42MI7H.js +40 -0
  347. package/dist/launches-RG2SWEXM.js +19 -0
  348. package/dist/layerize-SJYK6HPD.js +190 -0
  349. package/dist/leads-2XOSAYP4.js +293 -0
  350. package/dist/leads-H6JIWVI6.js +90 -0
  351. package/dist/learn-RGO5KDHS.js +204 -0
  352. package/dist/learn-RGO5KDHS.js.map +1 -0
  353. package/dist/library-Q4OU7VR7.js +109 -0
  354. package/dist/lighthouse-FALRSVQH.js +75 -0
  355. package/dist/line-item-writes-V7AKAHFC.js +208 -0
  356. package/dist/line-items-GAMKVVIQ.js +103 -0
  357. package/dist/link-Z5AQP6JN.js +64 -0
  358. package/dist/linkedin-7F6YVXQL.js +1045 -0
  359. package/dist/list-2ZTOMTES.js +65 -0
  360. package/dist/list-GK6LNWIW.js +76 -0
  361. package/dist/list-NLGM3QDP.js +303 -0
  362. package/dist/list-RR53EF3O.js +57 -0
  363. package/dist/list-SZH6TH74.js +64 -0
  364. package/dist/list-TB677Q2F.js +50 -0
  365. package/dist/list-VTVRZIYL.js +51 -0
  366. package/dist/list-XZVQWIJN.js +151 -0
  367. package/dist/locations-AEGZ36JH.js +40 -0
  368. package/dist/locations-YA7NZY44.js +67 -0
  369. package/dist/log-JM4VLJE4.js +92 -0
  370. package/dist/logo-YSNUUT33.js +18 -0
  371. package/dist/lookup-RH5N3OWJ.js +22 -0
  372. package/dist/make-X6IG6KAZ.js +1334 -0
  373. package/dist/make-X6IG6KAZ.js.map +1 -0
  374. package/dist/map-HRLUMCR2.js +433 -0
  375. package/dist/mcp-T6SAG4XB.js +463 -0
  376. package/dist/media-ES2UBGYW.js +15 -0
  377. package/dist/media-MPXEXN4O.js +89 -0
  378. package/dist/media-sources-7AS3274L.js +32 -0
  379. package/dist/members-J5KWXTXY.js +44 -0
  380. package/dist/meme-FMHHKWVU.js +100 -0
  381. package/dist/meme-FMHHKWVU.js.map +1 -0
  382. package/dist/meta-AOIPEDV5.js +69 -0
  383. package/dist/metrics-VDBJ6KL7.js +152 -0
  384. package/dist/models-2DQ5NBMT.js +155 -0
  385. package/dist/normalize-CHZB4QDD.js +141 -0
  386. package/dist/normalize-NR5RS3WR.js +806 -0
  387. package/dist/options-QLXFLESP.js +122 -0
  388. package/dist/organization-KEGKAP4P.js +328 -0
  389. package/dist/output-GWIP6ROX.js +24 -0
  390. package/dist/page-YWGBCN65.js +105 -0
  391. package/dist/pages-FTI44OSH.js +66 -0
  392. package/dist/performance-SPGPGXE5.js +24 -0
  393. package/dist/pinterest-J442QLQS.js +96 -0
  394. package/dist/pixels-6IUB3Y3H.js +60 -0
  395. package/dist/pixels-MBKR4XPX.js +108 -0
  396. package/dist/plan-YPE77T4R.js +207 -0
  397. package/dist/preview-V4YBD45S.js +169 -0
  398. package/dist/profile-S3MXS2VO.js +159 -0
  399. package/dist/promoted-tweet-writes-TRR3KPRJ.js +180 -0
  400. package/dist/promoted-tweets-XRYZNJI2.js +119 -0
  401. package/dist/properties-G3L2OAOL.js +101 -0
  402. package/dist/publish-V5YGMK53.js +341 -0
  403. package/dist/publish-V5YGMK53.js.map +1 -0
  404. package/dist/query-M3IO54U2.js +61 -0
  405. package/dist/query-WCB5W4NW.js +236 -0
  406. package/dist/query-YBS6ZQ75.js +247 -0
  407. package/dist/questionnaire-PAK4DALP.js +93 -0
  408. package/dist/read-LUTB3UOR.js +141 -0
  409. package/dist/reddit-STSECKMZ.js +26 -0
  410. package/dist/refresh-RQ3C2MHI.js +94 -0
  411. package/dist/release-UHGU5WBY.js +60 -0
  412. package/dist/relevant-pages-G6SNC73K.js +99 -0
  413. package/dist/remove-LTKICIIF.js +50 -0
  414. package/dist/remove-X6DNVS67.js +48 -0
  415. package/dist/reopen-BP5ERELB.js +63 -0
  416. package/dist/rerun-NR54OG3M.js +90 -0
  417. package/dist/rerun-NR54OG3M.js.map +1 -0
  418. package/dist/research-GOYMTKZM.js +262 -0
  419. package/dist/research-MBAPL35Y.js +62 -0
  420. package/dist/reset-Q62PEGOU.js +54 -0
  421. package/dist/reset-SJPGSQ7I.js +54 -0
  422. package/dist/resolve-R45W7QEQ.js +121 -0
  423. package/dist/retry-CD2Q2AJN.js +60 -0
  424. package/dist/retry-NBZ7Q6HK.js +62 -0
  425. package/dist/retry-failed-EJBP4236.js +45 -0
  426. package/dist/rules-SZIY67QF.js +96 -0
  427. package/dist/rules-SZIY67QF.js.map +1 -0
  428. package/dist/rules-add-KTLHU3YD.js +462 -0
  429. package/dist/rules-add-KTLHU3YD.js.map +1 -0
  430. package/dist/run-HCJKCEOL.js +66 -0
  431. package/dist/run-IIU2UVQU.js +65 -0
  432. package/dist/scaffold-ad-3VMAP5BF.js +1511 -0
  433. package/dist/scaffold-ad-3VMAP5BF.js.map +1 -0
  434. package/dist/scaffold-static-ad-Z7LO7PKI.js +1005 -0
  435. package/dist/scaffold-static-ad-Z7LO7PKI.js.map +1 -0
  436. package/dist/scaffold-video-SBSSR7TZ.js +883 -0
  437. package/dist/scaffold-video-SBSSR7TZ.js.map +1 -0
  438. package/dist/schedule-BSQHXJ5V.js +61 -0
  439. package/dist/schedule-IDZC6M32.js +66 -0
  440. package/dist/scheduled-agents-MFLMG34I.js +50 -0
  441. package/dist/schema-EFR7NGJG.js +69 -0
  442. package/dist/schema-IWPG3YSN.js +132 -0
  443. package/dist/scrape-J2Y7YZ4Z.js +2241 -0
  444. package/dist/screenshot-K7ZGTVTE.js +102 -0
  445. package/dist/search-CI7LEOOK.js +92 -0
  446. package/dist/search-EGI5K77S.js +174 -0
  447. package/dist/search-I6DRUXBX.js +224 -0
  448. package/dist/search-TTL7VQET.js +26 -0
  449. package/dist/search-VT2KUAH6.js +91 -0
  450. package/dist/search-copy-N2AIJNUH.js +168 -0
  451. package/dist/seeds-EYYQCMGF.js +101 -0
  452. package/dist/select-ON3KZEEK.js +101 -0
  453. package/dist/select-ON3KZEEK.js.map +1 -0
  454. package/dist/sends-RHVFV2XM.js +309 -0
  455. package/dist/sequences-5DUWNSWQ.js +146 -0
  456. package/dist/set-prompt-RHMZ7SFC.js +193 -0
  457. package/dist/set-prompt-RHMZ7SFC.js.map +1 -0
  458. package/dist/setup-links-5ILQNMFZ.js +141 -0
  459. package/dist/shared-NDRFKAH7.js +31 -0
  460. package/dist/site-LBXNVRPE.js +177 -0
  461. package/dist/sitemaps-QKKXMXMV.js +87 -0
  462. package/dist/sites-GRC6CCCK.js +101 -0
  463. package/dist/skills-UML6GSW6.js +47 -0
  464. package/dist/sources-GP4PUTX2.js +454 -0
  465. package/dist/sources-N4UANUHJ.js +30 -0
  466. package/dist/stale-OIOOAP2S.js +71 -0
  467. package/dist/stale-OIOOAP2S.js.map +1 -0
  468. package/dist/stats-RCLQE4HJ.js +34 -0
  469. package/dist/status-GSFMLC6W.js +62 -0
  470. package/dist/sticker-SINY47WT.js +94 -0
  471. package/dist/stock-ECRBD7RP.js +179 -0
  472. package/dist/studio-YB5WXQYC.js +49 -0
  473. package/dist/sync-2MFUI3ME.js +54 -0
  474. package/dist/sync-IE4AAVGY.js +265 -0
  475. package/dist/sync-LIV7FU4N.js +54 -0
  476. package/dist/sync-definition-5JO7QXX3.js +64 -0
  477. package/dist/tag-manager-G3LBQZUL.js +43 -0
  478. package/dist/tags-4JQX7HMT.js +26 -0
  479. package/dist/tags-6RQVXS47.js +224 -0
  480. package/dist/tags-AAIFQ6LS.js +20 -0
  481. package/dist/tags-F355NMIR.js +20 -0
  482. package/dist/tags-ZHCGHGYC.js +20 -0
  483. package/dist/targeting-constants-KEKYU5JQ.js +118 -0
  484. package/dist/targeting-criteria-6FY2JB3V.js +113 -0
  485. package/dist/targets-NI7TR4GV.js +103 -0
  486. package/dist/testimonials-G7CCH7VN.js +32 -0
  487. package/dist/themes-PXDXIKYR.js +94 -0
  488. package/dist/top-companies-YH2ZJEH5.js +108 -0
  489. package/dist/translate-K4D7KDYV.js +604 -0
  490. package/dist/translate-K4D7KDYV.js.map +1 -0
  491. package/dist/triggers-WYFM7PAH.js +142 -0
  492. package/dist/tweets-C3QUKS3I.js +123 -0
  493. package/dist/unfollow-ZI5QU7RD.js +46 -0
  494. package/dist/unlink-PTWUSM5B.js +67 -0
  495. package/dist/unstage-7F7JI6HY.js +95 -0
  496. package/dist/unstage-MCM6EZWK.js +85 -0
  497. package/dist/update-2BDIJDHN.js +188 -0
  498. package/dist/update-2BDIJDHN.js.map +1 -0
  499. package/dist/update-643S2MUW.js +63 -0
  500. package/dist/update-GUIP6G3N.js +152 -0
  501. package/dist/update-V6E3CIFD.js +98 -0
  502. package/dist/upload-3YJJ5VID.js +126 -0
  503. package/dist/upload-KO46L76G.js +150 -0
  504. package/dist/upscale-SJ7SCSRS.js +109 -0
  505. package/dist/url-options-LHS4SWWB.js +130 -0
  506. package/dist/url-params-2DKIXKHH.js +98 -0
  507. package/dist/use-6ULEM3WE.js +95 -0
  508. package/dist/validate-PEWGXGCR.js +117 -0
  509. package/dist/validate-PEWGXGCR.js.map +1 -0
  510. package/dist/variant-5TRRSYBB.js +338 -0
  511. package/dist/videos-KEDR4GG3.js +39 -0
  512. package/dist/view-ABSWZMXW.js +121 -0
  513. package/dist/viewer-check-TSH3SAYJ.js +80 -0
  514. package/dist/web-UOGBNAHR.js +140 -0
  515. package/dist/winners-KRISBKOR.js +113 -0
  516. package/dist/winning-ads-SGBI3WHK.js +84 -0
  517. package/dist/write-commands-E7JOB4HX.js +1015 -0
  518. package/dist/write-commands-HCQI4Y27.js +737 -0
  519. package/dist/write-commands-QCI6XBM7.js +206 -0
  520. package/dist/write-commands-RHCCPMAE.js +713 -0
  521. package/dist/x-UNSN57YP.js +47 -0
  522. package/package.json +2 -1
  523. package/dist/account-63NUWSXK.js +0 -49
  524. package/dist/account-IFB6V6GL.js +0 -80
  525. package/dist/account-JPLZDN6P.js +0 -79
  526. package/dist/account-reads-Y3T65EI4.js +0 -218
  527. package/dist/account-writes-7YZ7PTHF.js +0 -66
  528. package/dist/accounts-66KZC7QI.js +0 -114
  529. package/dist/accounts-A436U3XR.js +0 -77
  530. package/dist/accounts-CONSIJU6.js +0 -611
  531. package/dist/accounts-MVEZ2TRL.js +0 -75
  532. package/dist/accounts-T5DCHHZK.js +0 -115
  533. package/dist/actions-J2YTDYK4.js +0 -55
  534. package/dist/active-entities-QWPGPNGE.js +0 -103
  535. package/dist/activecampaign-W4YD73BL.js +0 -935
  536. package/dist/activities-FN7DOE5S.js +0 -74
  537. package/dist/ad-group-writes-JSOCSYYV.js +0 -170
  538. package/dist/ad-groups-UN52WNJN.js +0 -68
  539. package/dist/ad-writes-X23H4HLZ.js +0 -174
  540. package/dist/add-7EKI6ZA4.js +0 -97
  541. package/dist/add-NFBS2JQL.js +0 -104
  542. package/dist/add-SXFET7AD.js +0 -302
  543. package/dist/add-ZTXN775K.js +0 -105
  544. package/dist/add-accounts-PEJLMYWR.js +0 -91
  545. package/dist/ads-FOJ6P4OA.js +0 -128
  546. package/dist/ads-MKMWS36P.js +0 -113
  547. package/dist/ads-NEJKXB4L.js +0 -77
  548. package/dist/ads-QDFOWMSP.js +0 -40
  549. package/dist/adsets-TIHFYWOU.js +0 -176
  550. package/dist/advertisers-6ASS5GMI.js +0 -120
  551. package/dist/advertisers-E77XAYCQ.js +0 -125
  552. package/dist/analytics-DZJDNCAK.js +0 -1976
  553. package/dist/analytics-VTFXYOVF.js +0 -433
  554. package/dist/animate-3H3TL3N6.js +0 -480
  555. package/dist/assign-2NNSXCTL.js +0 -77
  556. package/dist/audience-size-YAUL5I4L.js +0 -73
  557. package/dist/audiences-BWDG2R2U.js +0 -268
  558. package/dist/audiences-GHMNXDPR.js +0 -85
  559. package/dist/audiences-Q7OCAMAQ.js +0 -78
  560. package/dist/audit-DCVOOFPI.js +0 -151
  561. package/dist/audit-HG53XQJK.js +0 -88
  562. package/dist/autocomplete-6VBDEE6O.js +0 -111
  563. package/dist/avatars-AVLB3D5I.js +0 -38
  564. package/dist/bid-pricing-GHWQIWCX.js +0 -100
  565. package/dist/brand-PPMZKVFC.js +0 -22
  566. package/dist/brief-ZUY55FHQ.js +0 -490
  567. package/dist/brief-ZUY55FHQ.js.map +0 -1
  568. package/dist/businesses-24QYU6BL.js +0 -53
  569. package/dist/campaign-groups-RXN3P22B.js +0 -95
  570. package/dist/campaign-writes-7UHMSPJ3.js +0 -170
  571. package/dist/campaign-writes-FZ2U5IYO.js +0 -165
  572. package/dist/campaigns-C56DUMH6.js +0 -107
  573. package/dist/campaigns-DJV4W6UP.js +0 -76
  574. package/dist/campaigns-WTZBLGVX.js +0 -110
  575. package/dist/campaigns-XNS24UNF.js +0 -109
  576. package/dist/canvas-P64D7YZ7.js +0 -46
  577. package/dist/capabilities-LGQT5ONL.js +0 -144
  578. package/dist/cards-IO2Q423H.js +0 -85
  579. package/dist/catalog-X3VJFC74.js +0 -64
  580. package/dist/catalog-X3VJFC74.js.map +0 -1
  581. package/dist/catalogs-2HT3VRRI.js +0 -128
  582. package/dist/changes-AZ6EUVFN.js +0 -135
  583. package/dist/chatgpt-M27OEM7J.js +0 -47
  584. package/dist/chats-YD36KDU7.js +0 -262
  585. package/dist/chunk-22WY4M2Y.js +0 -207
  586. package/dist/chunk-26HCUIW2.js +0 -166
  587. package/dist/chunk-2SDC7WNS.js +0 -817
  588. package/dist/chunk-2SDC7WNS.js.map +0 -1
  589. package/dist/chunk-2VRD3HSQ.js +0 -60
  590. package/dist/chunk-2VRD3HSQ.js.map +0 -1
  591. package/dist/chunk-2XQ5HU6D.js +0 -3088
  592. package/dist/chunk-2XQ5HU6D.js.map +0 -1
  593. package/dist/chunk-3UA4THEF.js +0 -76
  594. package/dist/chunk-3YSLIBIM.js +0 -6667
  595. package/dist/chunk-3YSLIBIM.js.map +0 -1
  596. package/dist/chunk-4EPGI6I2.js +0 -76
  597. package/dist/chunk-4YEZLIQD.js +0 -159
  598. package/dist/chunk-53JBNG5Q.js +0 -57
  599. package/dist/chunk-5ADTL2LR.js +0 -188
  600. package/dist/chunk-5HABWBQX.js +0 -139
  601. package/dist/chunk-5HYSKH77.js +0 -315
  602. package/dist/chunk-5HYSKH77.js.map +0 -1
  603. package/dist/chunk-5TV4GYP2.js +0 -1830
  604. package/dist/chunk-5TV4GYP2.js.map +0 -1
  605. package/dist/chunk-6M6HUJ55.js +0 -474
  606. package/dist/chunk-6M6HUJ55.js.map +0 -1
  607. package/dist/chunk-6YZNHMPJ.js +0 -74
  608. package/dist/chunk-7ANWFQEA.js +0 -220
  609. package/dist/chunk-7FKRKMGL.js +0 -133
  610. package/dist/chunk-7FKRKMGL.js.map +0 -1
  611. package/dist/chunk-7WZHO6W3.js +0 -225
  612. package/dist/chunk-A5VAM472.js +0 -6242
  613. package/dist/chunk-A5VAM472.js.map +0 -1
  614. package/dist/chunk-AAF7HL4I.js +0 -320
  615. package/dist/chunk-ANWV2VTO.js +0 -136
  616. package/dist/chunk-ANYMWCST.js +0 -2122
  617. package/dist/chunk-AQADZOTG.js +0 -137
  618. package/dist/chunk-AQYH6C32.js +0 -544
  619. package/dist/chunk-BODRDUYQ.js +0 -111
  620. package/dist/chunk-BOHHB74V.js +0 -275
  621. package/dist/chunk-BPPT7YVK.js +0 -274
  622. package/dist/chunk-BWAFZSZ4.js +0 -94
  623. package/dist/chunk-CIWI7LHO.js +0 -191
  624. package/dist/chunk-CLST7PLN.js +0 -26
  625. package/dist/chunk-CMNVR6DX.js +0 -486
  626. package/dist/chunk-CMNVR6DX.js.map +0 -1
  627. package/dist/chunk-CPTOHQSJ.js +0 -296
  628. package/dist/chunk-D5GVSJBK.js +0 -66
  629. package/dist/chunk-DWVNYWWQ.js +0 -23
  630. package/dist/chunk-EBC64WAG.js +0 -74
  631. package/dist/chunk-EK2CTQIR.js +0 -1079
  632. package/dist/chunk-EMPXRKIM.js +0 -644
  633. package/dist/chunk-EQ74MEJN.js +0 -98
  634. package/dist/chunk-ETFAIX4L.js +0 -74
  635. package/dist/chunk-EYUFEDDT.js +0 -297
  636. package/dist/chunk-FDPBTKXZ.js +0 -25
  637. package/dist/chunk-GAD2NYL4.js +0 -1442
  638. package/dist/chunk-GAD2NYL4.js.map +0 -1
  639. package/dist/chunk-GRL25RKS.js +0 -4408
  640. package/dist/chunk-GRL25RKS.js.map +0 -1
  641. package/dist/chunk-GUMLW3YA.js +0 -433
  642. package/dist/chunk-H5CGVMQW.js +0 -472
  643. package/dist/chunk-HDQBILJR.js +0 -45
  644. package/dist/chunk-HH5PFZ7U.js +0 -84
  645. package/dist/chunk-HKR7VCFK.js +0 -42
  646. package/dist/chunk-HSRZIRDM.js +0 -197
  647. package/dist/chunk-IHK2VONG.js +0 -903
  648. package/dist/chunk-JOXSQDDP.js +0 -455
  649. package/dist/chunk-JRLGQA2T.js +0 -333
  650. package/dist/chunk-JSELMKJJ.js +0 -92
  651. package/dist/chunk-JSELMKJJ.js.map +0 -1
  652. package/dist/chunk-JVVPLTOK.js +0 -216
  653. package/dist/chunk-JVVPLTOK.js.map +0 -1
  654. package/dist/chunk-KMKELX5X.js +0 -363
  655. package/dist/chunk-KODTY7PB.js +0 -215
  656. package/dist/chunk-L4LLNGJG.js +0 -111
  657. package/dist/chunk-L4LLNGJG.js.map +0 -1
  658. package/dist/chunk-LEGVJCL4.js +0 -56
  659. package/dist/chunk-LFMKBF6Q.js +0 -206
  660. package/dist/chunk-LNJNZ4KQ.js +0 -392
  661. package/dist/chunk-LOTQBFUP.js +0 -106
  662. package/dist/chunk-LPBLKGH7.js +0 -106
  663. package/dist/chunk-LWOAW25O.js +0 -547
  664. package/dist/chunk-LXAODGOM.js +0 -51
  665. package/dist/chunk-MN25G3MA.js +0 -494
  666. package/dist/chunk-MUHPBWE5.js +0 -35
  667. package/dist/chunk-NFSLRRIE.js +0 -77
  668. package/dist/chunk-NKXH3I65.js +0 -1743
  669. package/dist/chunk-NKXH3I65.js.map +0 -1
  670. package/dist/chunk-NRRNY3TZ.js +0 -55
  671. package/dist/chunk-O6VUX3O5.js +0 -52
  672. package/dist/chunk-OQAE4GPV.js +0 -19
  673. package/dist/chunk-OST3RA6Q.js +0 -610
  674. package/dist/chunk-OST3RA6Q.js.map +0 -1
  675. package/dist/chunk-OWUZN2NC.js +0 -169
  676. package/dist/chunk-PBC63KPH.js +0 -337
  677. package/dist/chunk-PBC63KPH.js.map +0 -1
  678. package/dist/chunk-PWABS2DB.js +0 -172
  679. package/dist/chunk-QBCPZFAV.js +0 -23992
  680. package/dist/chunk-QEZEXMRB.js +0 -96
  681. package/dist/chunk-QEZEXMRB.js.map +0 -1
  682. package/dist/chunk-QGWCBGEC.js +0 -1599
  683. package/dist/chunk-QKUBK3AD.js +0 -97
  684. package/dist/chunk-QNH5NCLM.js +0 -67
  685. package/dist/chunk-QNLWBJUR.js +0 -58
  686. package/dist/chunk-QSSYLT3W.js +0 -399
  687. package/dist/chunk-RJFM6TJC.js +0 -76
  688. package/dist/chunk-RKPSE27R.js +0 -98
  689. package/dist/chunk-S6ODQYTC.js +0 -96
  690. package/dist/chunk-S6ODQYTC.js.map +0 -1
  691. package/dist/chunk-SBN5UIQY.js +0 -665
  692. package/dist/chunk-SG4BABZ7.js +0 -592
  693. package/dist/chunk-TWXM7HVR.js +0 -149
  694. package/dist/chunk-U6RTBCU7.js +0 -26
  695. package/dist/chunk-UARL36OD.js +0 -846
  696. package/dist/chunk-UDG37PC2.js +0 -174
  697. package/dist/chunk-UEC4JUK6.js +0 -3151
  698. package/dist/chunk-UEC4JUK6.js.map +0 -1
  699. package/dist/chunk-UR4PSKOP.js +0 -103
  700. package/dist/chunk-UW7PZFWZ.js +0 -75
  701. package/dist/chunk-UWTAQM4W.js +0 -160
  702. package/dist/chunk-UWTAQM4W.js.map +0 -1
  703. package/dist/chunk-V3NGFNHO.js +0 -509
  704. package/dist/chunk-V3NGFNHO.js.map +0 -1
  705. package/dist/chunk-VDAYKWVH.js +0 -125
  706. package/dist/chunk-VX45CG4L.js +0 -61
  707. package/dist/chunk-VY5CTURR.js +0 -46
  708. package/dist/chunk-WOTX7TNV.js +0 -84
  709. package/dist/chunk-XO3GZLWQ.js +0 -5181
  710. package/dist/chunk-XO3GZLWQ.js.map +0 -1
  711. package/dist/chunk-XWB2L3HS.js +0 -66
  712. package/dist/chunk-YDOZX6E5.js +0 -304
  713. package/dist/chunk-YDOZX6E5.js.map +0 -1
  714. package/dist/chunk-YQDRMOMQ.js +0 -346
  715. package/dist/chunk-ZNEUUBRZ.js +0 -172
  716. package/dist/claim-RDP6PVKV.js +0 -197
  717. package/dist/client-TL7BITWM.js +0 -19
  718. package/dist/code-ORY2WROG.js +0 -76
  719. package/dist/companies-WSHYZ557.js +0 -195
  720. package/dist/complete-MJMDSDTL.js +0 -81
  721. package/dist/config-FMDQ323H.js +0 -88
  722. package/dist/connect-447TO57M.js +0 -42
  723. package/dist/content-ZQB6PXGX.js +0 -85
  724. package/dist/conversation-22J2PEAU.js +0 -93
  725. package/dist/conversion-report-U4UFXSD2.js +0 -125
  726. package/dist/conversion-upload-command-INQX73AK.js +0 -438
  727. package/dist/conversion-writes-MCKROLRA.js +0 -120
  728. package/dist/conversions-KNLCEM2G.js +0 -135
  729. package/dist/conversions-OPNDVQ56.js +0 -76
  730. package/dist/countries-AZ3XSZVM.js +0 -82
  731. package/dist/create-AVOJFXDX.js +0 -235
  732. package/dist/create-LP4QECLS.js +0 -59
  733. package/dist/create-P42BMP2W.js +0 -132
  734. package/dist/create-XUD5CW7C.js +0 -207
  735. package/dist/creatives-43I65CHD.js +0 -87
  736. package/dist/creatives-RX3U2DWI.js +0 -182
  737. package/dist/creatives-TUNKTWAB.js +0 -51
  738. package/dist/creatives-TUNKTWAB.js.map +0 -1
  739. package/dist/credentials-FS5XLAEX.js +0 -287
  740. package/dist/critique-BNEG5CZK.js +0 -1449
  741. package/dist/critique-BNEG5CZK.js.map +0 -1
  742. package/dist/critique-OQWHF4SK.js +0 -213
  743. package/dist/critique-OQWHF4SK.js.map +0 -1
  744. package/dist/crm-3373VMGE.js +0 -224
  745. package/dist/crm-HLPVTUIM.js +0 -318
  746. package/dist/crop-Q2GJLOHE.js +0 -113
  747. package/dist/currency-SVDR5N7L.js +0 -88
  748. package/dist/custom-conversions-5NJNPZKM.js +0 -125
  749. package/dist/customers-UCJBL2IP.js +0 -56
  750. package/dist/decide-PCJTFCWC.js +0 -199
  751. package/dist/delete-7J5VDP6V.js +0 -66
  752. package/dist/delete-7K4KFPUT.js +0 -69
  753. package/dist/delete-GOA4Y562.js +0 -71
  754. package/dist/delete-I2SIRTMZ.js +0 -71
  755. package/dist/delete-UCIUYLIT.js +0 -54
  756. package/dist/delete-ZKWLHEZT.js +0 -64
  757. package/dist/demographics-AJPJPJKY.js +0 -138
  758. package/dist/describe-CRTFAH6Y.js +0 -97
  759. package/dist/describe-OAB2FJYK.js +0 -97
  760. package/dist/dimensions-PFGHRZ5T.js +0 -101
  761. package/dist/discard-H32UEHFB.js +0 -66
  762. package/dist/discover-IOJZYJ6B.js +0 -172
  763. package/dist/discover-R3EUUGRZ.js +0 -93
  764. package/dist/domain-Q42XWULH.js +0 -98
  765. package/dist/download-2HGDCPR7.js +0 -299
  766. package/dist/draft-3KLT2YHI.js +0 -233
  767. package/dist/draft-3YDWWRPY.js +0 -328
  768. package/dist/draft-7O4ABIKK.js +0 -100
  769. package/dist/draft-DK4NZ6PW.js +0 -281
  770. package/dist/draft-ONDP2XRS.js +0 -306
  771. package/dist/draft-PQGTIABK.js +0 -103
  772. package/dist/draft-SRMHEIRG.js +0 -307
  773. package/dist/draft-ZVMS4RFF.js +0 -217
  774. package/dist/env-NPSYSFXD.js +0 -51
  775. package/dist/experiment-V57PLATO.js +0 -1397
  776. package/dist/export-UN2PTCNO.js +0 -168
  777. package/dist/extract-5JOFQZVU.js +0 -113
  778. package/dist/facets-BFKYZCGA.js +0 -114
  779. package/dist/favorites-4AWW5F5B.js +0 -178
  780. package/dist/feed-AK3IFTAL.js +0 -177
  781. package/dist/feedback-R3G4EDCT.js +0 -66
  782. package/dist/feedback-R3G4EDCT.js.map +0 -1
  783. package/dist/feedback-record-FJSCR6FW.js +0 -175
  784. package/dist/feedback-record-FJSCR6FW.js.map +0 -1
  785. package/dist/fetch-6ALLGDRN.js +0 -139
  786. package/dist/fetch-6SUFMXRQ.js +0 -176
  787. package/dist/find-22HWPRFY.js +0 -134
  788. package/dist/fit-S4RO2DMX.js +0 -45
  789. package/dist/flows-OFARDYXZ.js +0 -247
  790. package/dist/follow-IUW3P6KH.js +0 -94
  791. package/dist/follow-competitors-YDF5WM4K.js +0 -112
  792. package/dist/following-PNOYUSHX.js +0 -113
  793. package/dist/fonts-T4M2DIJV.js +0 -34
  794. package/dist/forecast-BA26XWJG.js +0 -118
  795. package/dist/forecast-NHG3UHOP.js +0 -168
  796. package/dist/funding-WSJI56OH.js +0 -85
  797. package/dist/funnel-RFQFRWPN.js +0 -394
  798. package/dist/ga4-4W3KJIS5.js +0 -55
  799. package/dist/generate-3MC7WDL2.js +0 -263
  800. package/dist/get-2W45IBSR.js +0 -56
  801. package/dist/get-4DJXDO42.js +0 -61
  802. package/dist/get-4LG7Q6AQ.js +0 -79
  803. package/dist/get-BK4MBGQF.js +0 -59
  804. package/dist/get-P5ZTH7RQ.js +0 -63
  805. package/dist/get-PTOW6PVF.js +0 -63
  806. package/dist/get-SR2NWOPT.js +0 -92
  807. package/dist/gif-L6RYCB6L.js +0 -94
  808. package/dist/gif-L6RYCB6L.js.map +0 -1
  809. package/dist/google-EMSAXPVB.js +0 -136
  810. package/dist/google-XE35SF3Z.js +0 -3190
  811. package/dist/google-ads-VTOZZ4B5.js +0 -195
  812. package/dist/group-EUYJJ4LI.js +0 -43
  813. package/dist/group-MBRA2QID.js +0 -43
  814. package/dist/gsc-B3NPUNI6.js +0 -30
  815. package/dist/history-4S3YEIPK.js +0 -67
  816. package/dist/history-PGNCHCSU.js +0 -133
  817. package/dist/hubspot-QILJD6UV.js +0 -779
  818. package/dist/icon-4DAXBICB.js +0 -137
  819. package/dist/ideas-4TZUGXTG.js +0 -32
  820. package/dist/images-EWHRAJ46.js +0 -90
  821. package/dist/images-EWHRAJ46.js.map +0 -1
  822. package/dist/improve-U2RA5DPI.js +0 -86
  823. package/dist/ingest-DD6KXDYS.js +0 -107
  824. package/dist/ingest-HIE4SAEY.js +0 -23
  825. package/dist/insights-HQGBM6VA.js +0 -423
  826. package/dist/insights-K2CMI3K5.js +0 -122
  827. package/dist/inspect-5XJ3GTBQ.js +0 -189
  828. package/dist/inspiration-TRMFE64K.js +0 -53
  829. package/dist/intent-2EWV4KXW.js +0 -95
  830. package/dist/job-7GDSDRM4.js +0 -202
  831. package/dist/job-create-PE7G64WC.js +0 -109
  832. package/dist/job-status-LUSCFLZ2.js +0 -74
  833. package/dist/keep-5NFHEILH.js +0 -78
  834. package/dist/keyword-gap-T22T7RN6.js +0 -130
  835. package/dist/keyword-metrics-MGCBJBWU.js +0 -197
  836. package/dist/keywords-for-site-MZWJ7HBX.js +0 -128
  837. package/dist/landing-LIS4NCGW.js +0 -28
  838. package/dist/landings-ZR4YMEPV.js +0 -151
  839. package/dist/languages-HXAZNLNU.js +0 -55
  840. package/dist/languages-VLMJOAJN.js +0 -40
  841. package/dist/launches-T5LAIOYS.js +0 -19
  842. package/dist/layerize-24PQKKPB.js +0 -190
  843. package/dist/leads-EDKSVSWP.js +0 -293
  844. package/dist/leads-TSNX372E.js +0 -90
  845. package/dist/learn-N3JFZXAL.js +0 -203
  846. package/dist/learn-N3JFZXAL.js.map +0 -1
  847. package/dist/library-ZHREUZMU.js +0 -109
  848. package/dist/lighthouse-E2NTHAO4.js +0 -75
  849. package/dist/line-item-writes-H2ZFXYH3.js +0 -208
  850. package/dist/line-items-JBL7LVCS.js +0 -103
  851. package/dist/link-THBFB2H2.js +0 -64
  852. package/dist/linkedin-PVGZWXQJ.js +0 -1045
  853. package/dist/list-37F6C6P5.js +0 -57
  854. package/dist/list-7EEDCI3T.js +0 -51
  855. package/dist/list-E7CJMIGC.js +0 -76
  856. package/dist/list-EIEZNGQ4.js +0 -64
  857. package/dist/list-HA2NITR3.js +0 -50
  858. package/dist/list-LPFAPCN4.js +0 -151
  859. package/dist/list-LS6TUGD5.js +0 -303
  860. package/dist/list-TG6LBHCV.js +0 -65
  861. package/dist/locations-VYIDAVD4.js +0 -67
  862. package/dist/locations-ZWTDUUGL.js +0 -40
  863. package/dist/log-NX7ITJM2.js +0 -92
  864. package/dist/logo-SHQJHJK7.js +0 -18
  865. package/dist/lookup-TWSJ7KRT.js +0 -22
  866. package/dist/make-DBQMLTEI.js +0 -633
  867. package/dist/make-DBQMLTEI.js.map +0 -1
  868. package/dist/map-TI3YWRBW.js +0 -433
  869. package/dist/mcp-5DZTEDYI.js +0 -463
  870. package/dist/media-LDVWXWWZ.js +0 -15
  871. package/dist/media-TNB4DLTJ.js +0 -89
  872. package/dist/media-sources-QYRHVUBJ.js +0 -32
  873. package/dist/members-RV546WDM.js +0 -44
  874. package/dist/meta-RAVCXVZA.js +0 -69
  875. package/dist/metrics-2VB46SDT.js +0 -152
  876. package/dist/models-TYRVCPS2.js +0 -155
  877. package/dist/normalize-KKCNCXI2.js +0 -141
  878. package/dist/normalize-Q7EN7JIF.js +0 -806
  879. package/dist/options-UMDGX464.js +0 -122
  880. package/dist/organization-KQHJ77CV.js +0 -328
  881. package/dist/output-NHMCVVUU.js +0 -24
  882. package/dist/page-5PCVZ7HS.js +0 -105
  883. package/dist/pages-DDXB4NQ4.js +0 -66
  884. package/dist/performance-SVWX2S6E.js +0 -24
  885. package/dist/pinterest-KQYSCTVQ.js +0 -96
  886. package/dist/pixels-GH522EYV.js +0 -108
  887. package/dist/pixels-HJYPX6RR.js +0 -60
  888. package/dist/plan-ZS7SOXL6.js +0 -207
  889. package/dist/preview-W4VKXOCT.js +0 -169
  890. package/dist/profile-FSB4RT55.js +0 -159
  891. package/dist/promoted-tweet-writes-XPRWBI7F.js +0 -180
  892. package/dist/promoted-tweets-W7PCLJMU.js +0 -119
  893. package/dist/properties-V74I56UK.js +0 -101
  894. package/dist/publish-E4M7QXTR.js +0 -322
  895. package/dist/publish-E4M7QXTR.js.map +0 -1
  896. package/dist/query-5F5MBR7H.js +0 -247
  897. package/dist/query-KBXZD4SW.js +0 -61
  898. package/dist/query-SFNCXH4H.js +0 -236
  899. package/dist/questionnaire-JK5JLQXK.js +0 -93
  900. package/dist/read-LGRFU7XB.js +0 -141
  901. package/dist/reddit-BJDU3BO7.js +0 -26
  902. package/dist/refresh-OTR4EWLI.js +0 -94
  903. package/dist/release-QJ4P2AVK.js +0 -60
  904. package/dist/relevant-pages-VMNEEEJK.js +0 -99
  905. package/dist/remove-BNO3BWM5.js +0 -50
  906. package/dist/remove-PIHTPIHM.js +0 -48
  907. package/dist/reopen-BA76RSLQ.js +0 -63
  908. package/dist/rerun-U4I6RPRC.js +0 -84
  909. package/dist/rerun-U4I6RPRC.js.map +0 -1
  910. package/dist/research-3ATNYHRA.js +0 -262
  911. package/dist/research-CYZEWHHZ.js +0 -62
  912. package/dist/reset-HGTZIAHW.js +0 -54
  913. package/dist/reset-NM33L5LY.js +0 -54
  914. package/dist/resolve-L2A3HC56.js +0 -121
  915. package/dist/retry-C3PBVY3I.js +0 -60
  916. package/dist/retry-ID7ZKLBK.js +0 -62
  917. package/dist/retry-failed-XTYV3QJS.js +0 -45
  918. package/dist/run-DI4BRLKS.js +0 -66
  919. package/dist/run-IE4GVP4I.js +0 -59
  920. package/dist/scaffold-ad-VQRC2NA6.js +0 -1548
  921. package/dist/scaffold-ad-VQRC2NA6.js.map +0 -1
  922. package/dist/scaffold-static-ad-B4TEGMSE.js +0 -971
  923. package/dist/scaffold-static-ad-B4TEGMSE.js.map +0 -1
  924. package/dist/scaffold-video-BJLKBATO.js +0 -872
  925. package/dist/scaffold-video-BJLKBATO.js.map +0 -1
  926. package/dist/schedule-OFYLBZT6.js +0 -61
  927. package/dist/schedule-WSO7ETS6.js +0 -66
  928. package/dist/scheduled-agents-X2U7J42A.js +0 -50
  929. package/dist/schema-CULVYXO7.js +0 -132
  930. package/dist/schema-DL34A626.js +0 -69
  931. package/dist/scrape-ZG2OWZL4.js +0 -2241
  932. package/dist/screenshot-GJUY7FCW.js +0 -102
  933. package/dist/search-2BJ4OLMX.js +0 -224
  934. package/dist/search-52CSDYJS.js +0 -91
  935. package/dist/search-FHSQYZOC.js +0 -92
  936. package/dist/search-QDQNZ63X.js +0 -174
  937. package/dist/search-ZAY2QV3Y.js +0 -26
  938. package/dist/search-copy-O5AOEBXC.js +0 -168
  939. package/dist/seeds-XY3EZ33U.js +0 -101
  940. package/dist/select-X3FT42OL.js +0 -94
  941. package/dist/select-X3FT42OL.js.map +0 -1
  942. package/dist/sends-GECHL3NK.js +0 -309
  943. package/dist/sequences-5BB4S63A.js +0 -146
  944. package/dist/set-prompt-C7HSNTIA.js +0 -185
  945. package/dist/set-prompt-C7HSNTIA.js.map +0 -1
  946. package/dist/setup-links-ZK6L7GQD.js +0 -141
  947. package/dist/shared-JDIL3BNQ.js +0 -31
  948. package/dist/site-6Z5A3G5J.js +0 -177
  949. package/dist/sitemaps-UQJFRA2W.js +0 -87
  950. package/dist/sites-ZNNEPEGI.js +0 -101
  951. package/dist/skills-WRKEF2Q4.js +0 -47
  952. package/dist/sources-7QRFH5AB.js +0 -454
  953. package/dist/sources-B2L6X7ZE.js +0 -30
  954. package/dist/stale-ZGIUVXGA.js +0 -63
  955. package/dist/stale-ZGIUVXGA.js.map +0 -1
  956. package/dist/stats-QFBTSDVV.js +0 -34
  957. package/dist/status-SW3PYV6Q.js +0 -62
  958. package/dist/sticker-2JQUC7XO.js +0 -94
  959. package/dist/stock-W3SNJCBV.js +0 -179
  960. package/dist/studio-2GAZ6QOH.js +0 -49
  961. package/dist/sync-4LHVBFMZ.js +0 -265
  962. package/dist/sync-K74WY3AT.js +0 -54
  963. package/dist/sync-NAJQQ6NQ.js +0 -54
  964. package/dist/sync-definition-KKW7R7QS.js +0 -54
  965. package/dist/tag-manager-MNGOJ3GC.js +0 -43
  966. package/dist/tags-4XQ5MEDJ.js +0 -20
  967. package/dist/tags-GJ5MIA6X.js +0 -20
  968. package/dist/tags-JXLOCBQ6.js +0 -20
  969. package/dist/tags-NMZ2NGN2.js +0 -224
  970. package/dist/tags-V2SSR5XY.js +0 -26
  971. package/dist/targeting-constants-RQT4GLUA.js +0 -118
  972. package/dist/targeting-criteria-D2ZMGXLI.js +0 -113
  973. package/dist/targets-6QA6MIQU.js +0 -103
  974. package/dist/testimonials-LBGJKESG.js +0 -32
  975. package/dist/themes-VVID6Y73.js +0 -94
  976. package/dist/top-companies-6D6YFQAB.js +0 -108
  977. package/dist/translate-R4Y2JVXC.js +0 -598
  978. package/dist/translate-R4Y2JVXC.js.map +0 -1
  979. package/dist/triggers-MDZNDNCU.js +0 -142
  980. package/dist/tweets-L4CXZLKQ.js +0 -123
  981. package/dist/unfollow-5T2CT3EF.js +0 -46
  982. package/dist/unlink-WS7DVDLH.js +0 -67
  983. package/dist/unstage-K3I2TLRR.js +0 -85
  984. package/dist/unstage-NEX3EIJX.js +0 -95
  985. package/dist/update-HPSXO5WB.js +0 -63
  986. package/dist/update-J6FHMXWL.js +0 -152
  987. package/dist/update-LCLRO26T.js +0 -155
  988. package/dist/update-LCLRO26T.js.map +0 -1
  989. package/dist/update-LZVLBRAX.js +0 -98
  990. package/dist/upload-C2K66PR3.js +0 -150
  991. package/dist/upload-XD7N4PJS.js +0 -126
  992. package/dist/upscale-SGBB4GWF.js +0 -109
  993. package/dist/url-options-LUKI4Y46.js +0 -130
  994. package/dist/url-params-U5DW22SR.js +0 -98
  995. package/dist/use-XGTUHBUL.js +0 -95
  996. package/dist/validate-PRT6ZD72.js +0 -88
  997. package/dist/validate-PRT6ZD72.js.map +0 -1
  998. package/dist/variant-DQRDW6IZ.js +0 -338
  999. package/dist/videos-KCXSXYJK.js +0 -39
  1000. package/dist/view-KJ6YNRXB.js +0 -121
  1001. package/dist/viewer-check-7DZQDGD3.js +0 -68
  1002. package/dist/web-W2TTELHS.js +0 -140
  1003. package/dist/winners-LD6PFXAS.js +0 -113
  1004. package/dist/winning-ads-YPQY6GVU.js +0 -84
  1005. package/dist/write-commands-CKMHQ4YY.js +0 -737
  1006. package/dist/write-commands-NW5CC3DP.js +0 -206
  1007. package/dist/write-commands-RLEYECTB.js +0 -713
  1008. package/dist/write-commands-SPTWBMLY.js +0 -1015
  1009. package/dist/x-2Y2DGMPG.js +0 -47
  1010. /package/dist/{account-63NUWSXK.js.map → account-7LUQWY6Q.js.map} +0 -0
  1011. /package/dist/{account-JPLZDN6P.js.map → account-VH2AATWI.js.map} +0 -0
  1012. /package/dist/{account-IFB6V6GL.js.map → account-Z65CPOWE.js.map} +0 -0
  1013. /package/dist/{account-reads-Y3T65EI4.js.map → account-reads-GYI2SS6T.js.map} +0 -0
  1014. /package/dist/{account-writes-7YZ7PTHF.js.map → account-writes-4N2MA2ZR.js.map} +0 -0
  1015. /package/dist/{accounts-T5DCHHZK.js.map → accounts-E4TVYTUR.js.map} +0 -0
  1016. /package/dist/{accounts-66KZC7QI.js.map → accounts-SMB3TNXX.js.map} +0 -0
  1017. /package/dist/{accounts-CONSIJU6.js.map → accounts-SPLE7URQ.js.map} +0 -0
  1018. /package/dist/{accounts-MVEZ2TRL.js.map → accounts-UA2ZWRN4.js.map} +0 -0
  1019. /package/dist/{accounts-A436U3XR.js.map → accounts-XG472YLB.js.map} +0 -0
  1020. /package/dist/{actions-J2YTDYK4.js.map → actions-KQTXBNJU.js.map} +0 -0
  1021. /package/dist/{active-entities-QWPGPNGE.js.map → active-entities-MCL7UEGV.js.map} +0 -0
  1022. /package/dist/{activecampaign-W4YD73BL.js.map → activecampaign-42JXANUA.js.map} +0 -0
  1023. /package/dist/{activities-FN7DOE5S.js.map → activities-IQPJPP4B.js.map} +0 -0
  1024. /package/dist/{ad-group-writes-JSOCSYYV.js.map → ad-group-writes-EUTMPBMK.js.map} +0 -0
  1025. /package/dist/{ad-groups-UN52WNJN.js.map → ad-groups-OVPAI5RM.js.map} +0 -0
  1026. /package/dist/{ad-writes-X23H4HLZ.js.map → ad-writes-DACTYFEO.js.map} +0 -0
  1027. /package/dist/{add-ZTXN775K.js.map → add-5IGUQHVZ.js.map} +0 -0
  1028. /package/dist/{add-7EKI6ZA4.js.map → add-BK5AQI5A.js.map} +0 -0
  1029. /package/dist/{add-NFBS2JQL.js.map → add-C3FQ5D62.js.map} +0 -0
  1030. /package/dist/{add-SXFET7AD.js.map → add-KTEJCE4L.js.map} +0 -0
  1031. /package/dist/{add-accounts-PEJLMYWR.js.map → add-accounts-CJSV5NPL.js.map} +0 -0
  1032. /package/dist/{ads-MKMWS36P.js.map → ads-HXX2IAFF.js.map} +0 -0
  1033. /package/dist/{ads-NEJKXB4L.js.map → ads-L65JIKCD.js.map} +0 -0
  1034. /package/dist/{ads-FOJ6P4OA.js.map → ads-RAUM6ISF.js.map} +0 -0
  1035. /package/dist/{ads-QDFOWMSP.js.map → ads-WPI3AMSR.js.map} +0 -0
  1036. /package/dist/{adsets-TIHFYWOU.js.map → adsets-LPN6WFGF.js.map} +0 -0
  1037. /package/dist/{advertisers-6ASS5GMI.js.map → advertisers-36HP3AOE.js.map} +0 -0
  1038. /package/dist/{advertisers-E77XAYCQ.js.map → advertisers-DS2NRWKI.js.map} +0 -0
  1039. /package/dist/{analytics-VTFXYOVF.js.map → analytics-I4LZCRG2.js.map} +0 -0
  1040. /package/dist/{analytics-DZJDNCAK.js.map → analytics-IFNBT7IM.js.map} +0 -0
  1041. /package/dist/{animate-3H3TL3N6.js.map → animate-3LV3LHXQ.js.map} +0 -0
  1042. /package/dist/{assign-2NNSXCTL.js.map → assign-WBLSZNCO.js.map} +0 -0
  1043. /package/dist/{audience-size-YAUL5I4L.js.map → audience-size-LOX5BNXI.js.map} +0 -0
  1044. /package/dist/{audiences-GHMNXDPR.js.map → audiences-3LRCLHTQ.js.map} +0 -0
  1045. /package/dist/{audiences-BWDG2R2U.js.map → audiences-RPLVMO4H.js.map} +0 -0
  1046. /package/dist/{audiences-Q7OCAMAQ.js.map → audiences-XEZHACKH.js.map} +0 -0
  1047. /package/dist/{audit-DCVOOFPI.js.map → audit-6AG6BPXQ.js.map} +0 -0
  1048. /package/dist/{audit-HG53XQJK.js.map → audit-YEGQU474.js.map} +0 -0
  1049. /package/dist/{autocomplete-6VBDEE6O.js.map → autocomplete-2QRU7ARD.js.map} +0 -0
  1050. /package/dist/{avatars-AVLB3D5I.js.map → avatars-EIETXCF3.js.map} +0 -0
  1051. /package/dist/{bid-pricing-GHWQIWCX.js.map → bid-pricing-5LZFHQTS.js.map} +0 -0
  1052. /package/dist/{brand-PPMZKVFC.js.map → brand-CINQG3JG.js.map} +0 -0
  1053. /package/dist/{businesses-24QYU6BL.js.map → businesses-PRRYPR7H.js.map} +0 -0
  1054. /package/dist/{campaign-groups-RXN3P22B.js.map → campaign-groups-5CMTEJZZ.js.map} +0 -0
  1055. /package/dist/{campaign-writes-FZ2U5IYO.js.map → campaign-writes-4RMPHQCT.js.map} +0 -0
  1056. /package/dist/{campaign-writes-7UHMSPJ3.js.map → campaign-writes-U5LTDTYK.js.map} +0 -0
  1057. /package/dist/{campaigns-WTZBLGVX.js.map → campaigns-4SOLY7OR.js.map} +0 -0
  1058. /package/dist/{campaigns-C56DUMH6.js.map → campaigns-NFRLFNXI.js.map} +0 -0
  1059. /package/dist/{campaigns-XNS24UNF.js.map → campaigns-PC7UAVXR.js.map} +0 -0
  1060. /package/dist/{campaigns-DJV4W6UP.js.map → campaigns-TFEQTSO3.js.map} +0 -0
  1061. /package/dist/{canvas-P64D7YZ7.js.map → canvas-BPACZHNU.js.map} +0 -0
  1062. /package/dist/{capabilities-LGQT5ONL.js.map → capabilities-FNVTPCDT.js.map} +0 -0
  1063. /package/dist/{cards-IO2Q423H.js.map → cards-WHMCSRZX.js.map} +0 -0
  1064. /package/dist/{catalogs-2HT3VRRI.js.map → catalogs-A7XMEEEP.js.map} +0 -0
  1065. /package/dist/{changes-AZ6EUVFN.js.map → changes-J67WATHX.js.map} +0 -0
  1066. /package/dist/{chatgpt-M27OEM7J.js.map → chatgpt-4PEWDJKP.js.map} +0 -0
  1067. /package/dist/{chats-YD36KDU7.js.map → chats-S5FCV7YO.js.map} +0 -0
  1068. /package/dist/{chunk-VDAYKWVH.js.map → chunk-232YUPUI.js.map} +0 -0
  1069. /package/dist/{chunk-ANWV2VTO.js.map → chunk-23H4ZJRP.js.map} +0 -0
  1070. /package/dist/{chunk-QNH5NCLM.js.map → chunk-3OCSWUHV.js.map} +0 -0
  1071. /package/dist/{chunk-BPPT7YVK.js.map → chunk-3UXMQ3K2.js.map} +0 -0
  1072. /package/dist/{chunk-HH5PFZ7U.js.map → chunk-5WMTPYKT.js.map} +0 -0
  1073. /package/dist/{chunk-U6RTBCU7.js.map → chunk-65N4ZPQD.js.map} +0 -0
  1074. /package/dist/{chunk-UDG37PC2.js.map → chunk-6JWEGFM5.js.map} +0 -0
  1075. /package/dist/{chunk-PWABS2DB.js.map → chunk-7RBJ2Z7Z.js.map} +0 -0
  1076. /package/dist/{chunk-DWVNYWWQ.js.map → chunk-ABXTGAG7.js.map} +0 -0
  1077. /package/dist/{chunk-QSSYLT3W.js.map → chunk-ADSNY4KZ.js.map} +0 -0
  1078. /package/dist/{chunk-LNJNZ4KQ.js.map → chunk-AHF6TQWB.js.map} +0 -0
  1079. /package/dist/{chunk-RKPSE27R.js.map → chunk-AQ5WISEG.js.map} +0 -0
  1080. /package/dist/{chunk-EQ74MEJN.js.map → chunk-BFRIRZRZ.js.map} +0 -0
  1081. /package/dist/{chunk-WOTX7TNV.js.map → chunk-BFZS3WHS.js.map} +0 -0
  1082. /package/dist/{chunk-NFSLRRIE.js.map → chunk-BITS62MF.js.map} +0 -0
  1083. /package/dist/{chunk-JRLGQA2T.js.map → chunk-BLAHHMPF.js.map} +0 -0
  1084. /package/dist/{chunk-OWUZN2NC.js.map → chunk-CCIDHU6M.js.map} +0 -0
  1085. /package/dist/{chunk-EMPXRKIM.js.map → chunk-CM6FCSWN.js.map} +0 -0
  1086. /package/dist/{chunk-CPTOHQSJ.js.map → chunk-CVBKW75S.js.map} +0 -0
  1087. /package/dist/{chunk-4YEZLIQD.js.map → chunk-CXQRTLSQ.js.map} +0 -0
  1088. /package/dist/{chunk-4EPGI6I2.js.map → chunk-D4LKZJYJ.js.map} +0 -0
  1089. /package/dist/{chunk-D5GVSJBK.js.map → chunk-D7KR6KXR.js.map} +0 -0
  1090. /package/dist/{chunk-SG4BABZ7.js.map → chunk-DCTEL4KG.js.map} +0 -0
  1091. /package/dist/{chunk-UR4PSKOP.js.map → chunk-DH5CKOYK.js.map} +0 -0
  1092. /package/dist/{chunk-LXAODGOM.js.map → chunk-DQC4NIJE.js.map} +0 -0
  1093. /package/dist/{chunk-UW7PZFWZ.js.map → chunk-DWX44QL6.js.map} +0 -0
  1094. /package/dist/{chunk-H5CGVMQW.js.map → chunk-EE72SSB2.js.map} +0 -0
  1095. /package/dist/{chunk-QKUBK3AD.js.map → chunk-FNA277HP.js.map} +0 -0
  1096. /package/dist/{chunk-CLST7PLN.js.map → chunk-FU7HJWGM.js.map} +0 -0
  1097. /package/dist/{chunk-VY5CTURR.js.map → chunk-GDLQ6SGW.js.map} +0 -0
  1098. /package/dist/{chunk-LPBLKGH7.js.map → chunk-GEKXIXMG.js.map} +0 -0
  1099. /package/dist/{chunk-QNLWBJUR.js.map → chunk-GLW7UJLB.js.map} +0 -0
  1100. /package/dist/{chunk-5HABWBQX.js.map → chunk-H5HDZ7IC.js.map} +0 -0
  1101. /package/dist/{chunk-MUHPBWE5.js.map → chunk-I5VZVQBZ.js.map} +0 -0
  1102. /package/dist/{chunk-HDQBILJR.js.map → chunk-IC6SDOED.js.map} +0 -0
  1103. /package/dist/{chunk-QBCPZFAV.js.map → chunk-IG627WWY.js.map} +0 -0
  1104. /package/dist/{chunk-BWAFZSZ4.js.map → chunk-IN4G7X6W.js.map} +0 -0
  1105. /package/dist/{chunk-5ADTL2LR.js.map → chunk-IPLE5K5E.js.map} +0 -0
  1106. /package/dist/{chunk-SBN5UIQY.js.map → chunk-IWWOGBGA.js.map} +0 -0
  1107. /package/dist/{chunk-ZNEUUBRZ.js.map → chunk-JFA4R3KS.js.map} +0 -0
  1108. /package/dist/{chunk-LOTQBFUP.js.map → chunk-JYBLCIRN.js.map} +0 -0
  1109. /package/dist/{chunk-O6VUX3O5.js.map → chunk-K3TNTBZJ.js.map} +0 -0
  1110. /package/dist/{chunk-FDPBTKXZ.js.map → chunk-LCW3U4EA.js.map} +0 -0
  1111. /package/dist/{chunk-RJFM6TJC.js.map → chunk-MI3JB5KB.js.map} +0 -0
  1112. /package/dist/{chunk-LWOAW25O.js.map → chunk-MIOOPOG2.js.map} +0 -0
  1113. /package/dist/{chunk-EBC64WAG.js.map → chunk-MJQBXFW6.js.map} +0 -0
  1114. /package/dist/{chunk-ETFAIX4L.js.map → chunk-MPACDBH5.js.map} +0 -0
  1115. /package/dist/{chunk-AQYH6C32.js.map → chunk-MXWOYFI2.js.map} +0 -0
  1116. /package/dist/{chunk-KODTY7PB.js.map → chunk-N5O67GK5.js.map} +0 -0
  1117. /package/dist/{chunk-GUMLW3YA.js.map → chunk-NCP6RD6A.js.map} +0 -0
  1118. /package/dist/{chunk-EYUFEDDT.js.map → chunk-NNF4RARY.js.map} +0 -0
  1119. /package/dist/{chunk-KMKELX5X.js.map → chunk-NR2OVOTD.js.map} +0 -0
  1120. /package/dist/{chunk-UARL36OD.js.map → chunk-NVGXYF6K.js.map} +0 -0
  1121. /package/dist/{chunk-AQADZOTG.js.map → chunk-OP7DNHD2.js.map} +0 -0
  1122. /package/dist/{chunk-3UA4THEF.js.map → chunk-ORQKMXHA.js.map} +0 -0
  1123. /package/dist/{chunk-TWXM7HVR.js.map → chunk-P3TNRS56.js.map} +0 -0
  1124. /package/dist/{chunk-MN25G3MA.js.map → chunk-Q7YZL7PG.js.map} +0 -0
  1125. /package/dist/{chunk-LEGVJCL4.js.map → chunk-QABSQADZ.js.map} +0 -0
  1126. /package/dist/{chunk-JOXSQDDP.js.map → chunk-R2TAVQGZ.js.map} +0 -0
  1127. /package/dist/{chunk-HSRZIRDM.js.map → chunk-R5WNYLG4.js.map} +0 -0
  1128. /package/dist/{chunk-QGWCBGEC.js.map → chunk-RD2XXQW3.js.map} +0 -0
  1129. /package/dist/{chunk-22WY4M2Y.js.map → chunk-RLS5OPPZ.js.map} +0 -0
  1130. /package/dist/{chunk-YQDRMOMQ.js.map → chunk-RMLJNHCU.js.map} +0 -0
  1131. /package/dist/{chunk-BODRDUYQ.js.map → chunk-S7A34DOA.js.map} +0 -0
  1132. /package/dist/{chunk-26HCUIW2.js.map → chunk-SFJW2KED.js.map} +0 -0
  1133. /package/dist/{chunk-6YZNHMPJ.js.map → chunk-SOKVXKRM.js.map} +0 -0
  1134. /package/dist/{chunk-CIWI7LHO.js.map → chunk-STNCMKL6.js.map} +0 -0
  1135. /package/dist/{chunk-AAF7HL4I.js.map → chunk-SWL4AAPP.js.map} +0 -0
  1136. /package/dist/{chunk-VX45CG4L.js.map → chunk-TNOJ6O6B.js.map} +0 -0
  1137. /package/dist/{chunk-7WZHO6W3.js.map → chunk-ULPO72IQ.js.map} +0 -0
  1138. /package/dist/{chunk-EK2CTQIR.js.map → chunk-UMZIQIWN.js.map} +0 -0
  1139. /package/dist/{chunk-OQAE4GPV.js.map → chunk-V7N666PJ.js.map} +0 -0
  1140. /package/dist/{chunk-BOHHB74V.js.map → chunk-WNJ5SYAG.js.map} +0 -0
  1141. /package/dist/{chunk-ANYMWCST.js.map → chunk-WNSE7N75.js.map} +0 -0
  1142. /package/dist/{chunk-7ANWFQEA.js.map → chunk-XDZVBX6L.js.map} +0 -0
  1143. /package/dist/{chunk-NRRNY3TZ.js.map → chunk-XGOEX2VJ.js.map} +0 -0
  1144. /package/dist/{chunk-53JBNG5Q.js.map → chunk-XUB2EK65.js.map} +0 -0
  1145. /package/dist/{chunk-LFMKBF6Q.js.map → chunk-XUR4QWCS.js.map} +0 -0
  1146. /package/dist/{chunk-XWB2L3HS.js.map → chunk-XZ4YMCZK.js.map} +0 -0
  1147. /package/dist/{chunk-HKR7VCFK.js.map → chunk-Y3VRMFGF.js.map} +0 -0
  1148. /package/dist/{chunk-IHK2VONG.js.map → chunk-YD7BQDJ6.js.map} +0 -0
  1149. /package/dist/{claim-RDP6PVKV.js.map → claim-6MPQD43X.js.map} +0 -0
  1150. /package/dist/{client-TL7BITWM.js.map → client-WL2FKW4T.js.map} +0 -0
  1151. /package/dist/{code-ORY2WROG.js.map → code-NXN7QYKU.js.map} +0 -0
  1152. /package/dist/{companies-WSHYZ557.js.map → companies-KRF2K4CA.js.map} +0 -0
  1153. /package/dist/{complete-MJMDSDTL.js.map → complete-V433ON5C.js.map} +0 -0
  1154. /package/dist/{config-FMDQ323H.js.map → config-VOF57KBL.js.map} +0 -0
  1155. /package/dist/{connect-447TO57M.js.map → connect-QVIAM3GX.js.map} +0 -0
  1156. /package/dist/{content-ZQB6PXGX.js.map → content-KA25YYO3.js.map} +0 -0
  1157. /package/dist/{conversation-22J2PEAU.js.map → conversation-VZKBZZGG.js.map} +0 -0
  1158. /package/dist/{conversion-report-U4UFXSD2.js.map → conversion-report-REOHVLCI.js.map} +0 -0
  1159. /package/dist/{conversion-upload-command-INQX73AK.js.map → conversion-upload-command-ASHA6T6H.js.map} +0 -0
  1160. /package/dist/{conversion-writes-MCKROLRA.js.map → conversion-writes-JU7Q2MUO.js.map} +0 -0
  1161. /package/dist/{conversions-OPNDVQ56.js.map → conversions-3ISBR3TS.js.map} +0 -0
  1162. /package/dist/{conversions-KNLCEM2G.js.map → conversions-ZLC6YTJ5.js.map} +0 -0
  1163. /package/dist/{countries-AZ3XSZVM.js.map → countries-XGMZWUGP.js.map} +0 -0
  1164. /package/dist/{create-P42BMP2W.js.map → create-B3QMYSIX.js.map} +0 -0
  1165. /package/dist/{create-XUD5CW7C.js.map → create-IFCCMKFT.js.map} +0 -0
  1166. /package/dist/{create-AVOJFXDX.js.map → create-R5P6JU5A.js.map} +0 -0
  1167. /package/dist/{create-LP4QECLS.js.map → create-SF6DOGDJ.js.map} +0 -0
  1168. /package/dist/{creatives-RX3U2DWI.js.map → creatives-KD7MOCR3.js.map} +0 -0
  1169. /package/dist/{creatives-43I65CHD.js.map → creatives-YJ3CXZQC.js.map} +0 -0
  1170. /package/dist/{credentials-FS5XLAEX.js.map → credentials-2KJUKBMF.js.map} +0 -0
  1171. /package/dist/{crm-3373VMGE.js.map → crm-GX72E2LT.js.map} +0 -0
  1172. /package/dist/{crm-HLPVTUIM.js.map → crm-ZYDNEME5.js.map} +0 -0
  1173. /package/dist/{crop-Q2GJLOHE.js.map → crop-7UTYG7GS.js.map} +0 -0
  1174. /package/dist/{currency-SVDR5N7L.js.map → currency-CGDI2NXI.js.map} +0 -0
  1175. /package/dist/{custom-conversions-5NJNPZKM.js.map → custom-conversions-YRYE65PU.js.map} +0 -0
  1176. /package/dist/{customers-UCJBL2IP.js.map → customers-P4N4NXLJ.js.map} +0 -0
  1177. /package/dist/{decide-PCJTFCWC.js.map → decide-TWKH5QQU.js.map} +0 -0
  1178. /package/dist/{delete-7K4KFPUT.js.map → delete-2GIIUPA3.js.map} +0 -0
  1179. /package/dist/{delete-7J5VDP6V.js.map → delete-AK5IV44E.js.map} +0 -0
  1180. /package/dist/{delete-GOA4Y562.js.map → delete-GLLYPNNB.js.map} +0 -0
  1181. /package/dist/{delete-I2SIRTMZ.js.map → delete-J7DXPGKD.js.map} +0 -0
  1182. /package/dist/{delete-UCIUYLIT.js.map → delete-RS7RQDUX.js.map} +0 -0
  1183. /package/dist/{delete-ZKWLHEZT.js.map → delete-S4VKH7IS.js.map} +0 -0
  1184. /package/dist/{demographics-AJPJPJKY.js.map → demographics-IKWN2H3V.js.map} +0 -0
  1185. /package/dist/{describe-CRTFAH6Y.js.map → describe-5QCPRSIG.js.map} +0 -0
  1186. /package/dist/{describe-OAB2FJYK.js.map → describe-L3UC6MIL.js.map} +0 -0
  1187. /package/dist/{dimensions-PFGHRZ5T.js.map → dimensions-POH4JXEM.js.map} +0 -0
  1188. /package/dist/{discard-H32UEHFB.js.map → discard-H6DOHJRG.js.map} +0 -0
  1189. /package/dist/{discover-IOJZYJ6B.js.map → discover-L4TPEKGY.js.map} +0 -0
  1190. /package/dist/{discover-R3EUUGRZ.js.map → discover-XAJKZCMM.js.map} +0 -0
  1191. /package/dist/{domain-Q42XWULH.js.map → domain-US4KKAXC.js.map} +0 -0
  1192. /package/dist/{download-2HGDCPR7.js.map → download-N4J5WFHD.js.map} +0 -0
  1193. /package/dist/{draft-ONDP2XRS.js.map → draft-BIQ3ZAYW.js.map} +0 -0
  1194. /package/dist/{draft-3KLT2YHI.js.map → draft-EWDOIXSH.js.map} +0 -0
  1195. /package/dist/{draft-PQGTIABK.js.map → draft-IL37WDST.js.map} +0 -0
  1196. /package/dist/{draft-SRMHEIRG.js.map → draft-IZ4YLQRD.js.map} +0 -0
  1197. /package/dist/{draft-7O4ABIKK.js.map → draft-KDMYGLWN.js.map} +0 -0
  1198. /package/dist/{draft-ZVMS4RFF.js.map → draft-OLFQZBWL.js.map} +0 -0
  1199. /package/dist/{draft-3YDWWRPY.js.map → draft-R32RFDCI.js.map} +0 -0
  1200. /package/dist/{draft-DK4NZ6PW.js.map → draft-Y2QJE2NM.js.map} +0 -0
  1201. /package/dist/{env-NPSYSFXD.js.map → env-5MUVYE2L.js.map} +0 -0
  1202. /package/dist/{experiment-V57PLATO.js.map → experiment-G3FQVAJU.js.map} +0 -0
  1203. /package/dist/{export-UN2PTCNO.js.map → export-OLDI32HM.js.map} +0 -0
  1204. /package/dist/{extract-5JOFQZVU.js.map → extract-PPS6ONQN.js.map} +0 -0
  1205. /package/dist/{facets-BFKYZCGA.js.map → facets-JBZQHN3D.js.map} +0 -0
  1206. /package/dist/{favorites-4AWW5F5B.js.map → favorites-4ELADD3R.js.map} +0 -0
  1207. /package/dist/{feed-AK3IFTAL.js.map → feed-XIY5TVDL.js.map} +0 -0
  1208. /package/dist/{fetch-6SUFMXRQ.js.map → fetch-GOY6DQRL.js.map} +0 -0
  1209. /package/dist/{fetch-6ALLGDRN.js.map → fetch-YWUVDMUH.js.map} +0 -0
  1210. /package/dist/{find-22HWPRFY.js.map → find-EVY4XEIQ.js.map} +0 -0
  1211. /package/dist/{fit-S4RO2DMX.js.map → fit-TVQ7RK52.js.map} +0 -0
  1212. /package/dist/{flows-OFARDYXZ.js.map → flows-274YPU6I.js.map} +0 -0
  1213. /package/dist/{follow-IUW3P6KH.js.map → follow-ZTPZKIMZ.js.map} +0 -0
  1214. /package/dist/{follow-competitors-YDF5WM4K.js.map → follow-competitors-6QDVQ4VJ.js.map} +0 -0
  1215. /package/dist/{following-PNOYUSHX.js.map → following-PBZLZFGQ.js.map} +0 -0
  1216. /package/dist/{fonts-T4M2DIJV.js.map → fonts-BMUNDGOZ.js.map} +0 -0
  1217. /package/dist/{forecast-NHG3UHOP.js.map → forecast-F2CZSIMP.js.map} +0 -0
  1218. /package/dist/{forecast-BA26XWJG.js.map → forecast-W5F2MNOV.js.map} +0 -0
  1219. /package/dist/{funding-WSJI56OH.js.map → funding-ULBMKUMW.js.map} +0 -0
  1220. /package/dist/{funnel-RFQFRWPN.js.map → funnel-LEUXICXU.js.map} +0 -0
  1221. /package/dist/{ga4-4W3KJIS5.js.map → ga4-2BL5YAYN.js.map} +0 -0
  1222. /package/dist/{generate-3MC7WDL2.js.map → generate-4HWNFAH3.js.map} +0 -0
  1223. /package/dist/{get-P5ZTH7RQ.js.map → get-6RZU4M6W.js.map} +0 -0
  1224. /package/dist/{get-SR2NWOPT.js.map → get-7GCEJ6KG.js.map} +0 -0
  1225. /package/dist/{get-4LG7Q6AQ.js.map → get-MGDY5JYZ.js.map} +0 -0
  1226. /package/dist/{get-4DJXDO42.js.map → get-MZWUMHEF.js.map} +0 -0
  1227. /package/dist/{get-BK4MBGQF.js.map → get-OAZZHUZP.js.map} +0 -0
  1228. /package/dist/{get-PTOW6PVF.js.map → get-OHU2N7B7.js.map} +0 -0
  1229. /package/dist/{get-2W45IBSR.js.map → get-TY6AMFI4.js.map} +0 -0
  1230. /package/dist/{google-EMSAXPVB.js.map → google-7STODZQR.js.map} +0 -0
  1231. /package/dist/{google-XE35SF3Z.js.map → google-ZTTE34A4.js.map} +0 -0
  1232. /package/dist/{google-ads-VTOZZ4B5.js.map → google-ads-5ARKO757.js.map} +0 -0
  1233. /package/dist/{group-MBRA2QID.js.map → group-D5WXNFCP.js.map} +0 -0
  1234. /package/dist/{group-EUYJJ4LI.js.map → group-Y5PLETFT.js.map} +0 -0
  1235. /package/dist/{gsc-B3NPUNI6.js.map → gsc-UU3T2C6B.js.map} +0 -0
  1236. /package/dist/{history-4S3YEIPK.js.map → history-IQ33J5PB.js.map} +0 -0
  1237. /package/dist/{history-PGNCHCSU.js.map → history-SU7VQCDJ.js.map} +0 -0
  1238. /package/dist/{hubspot-QILJD6UV.js.map → hubspot-TJED44GO.js.map} +0 -0
  1239. /package/dist/{icon-4DAXBICB.js.map → icon-GB7UH5RF.js.map} +0 -0
  1240. /package/dist/{ideas-4TZUGXTG.js.map → ideas-UTSCGCT6.js.map} +0 -0
  1241. /package/dist/{improve-U2RA5DPI.js.map → improve-U5USRH4G.js.map} +0 -0
  1242. /package/dist/{ingest-HIE4SAEY.js.map → ingest-DGDNZWEM.js.map} +0 -0
  1243. /package/dist/{ingest-DD6KXDYS.js.map → ingest-SGBJ3NXX.js.map} +0 -0
  1244. /package/dist/{insights-HQGBM6VA.js.map → insights-4HT2NAYP.js.map} +0 -0
  1245. /package/dist/{insights-K2CMI3K5.js.map → insights-SQLE5NOJ.js.map} +0 -0
  1246. /package/dist/{inspect-5XJ3GTBQ.js.map → inspect-BMQTTKMW.js.map} +0 -0
  1247. /package/dist/{inspiration-TRMFE64K.js.map → inspiration-XQYHBJY2.js.map} +0 -0
  1248. /package/dist/{intent-2EWV4KXW.js.map → intent-LM36WK45.js.map} +0 -0
  1249. /package/dist/{job-7GDSDRM4.js.map → job-CGQHEANB.js.map} +0 -0
  1250. /package/dist/{job-create-PE7G64WC.js.map → job-create-SZYJT2NC.js.map} +0 -0
  1251. /package/dist/{job-status-LUSCFLZ2.js.map → job-status-6LAKLCKH.js.map} +0 -0
  1252. /package/dist/{keep-5NFHEILH.js.map → keep-3MJSHWU3.js.map} +0 -0
  1253. /package/dist/{keyword-gap-T22T7RN6.js.map → keyword-gap-P652ODHN.js.map} +0 -0
  1254. /package/dist/{keyword-metrics-MGCBJBWU.js.map → keyword-metrics-MQLGGJBT.js.map} +0 -0
  1255. /package/dist/{keywords-for-site-MZWJ7HBX.js.map → keywords-for-site-JL6H2YGU.js.map} +0 -0
  1256. /package/dist/{landing-LIS4NCGW.js.map → landing-AJO2BPC2.js.map} +0 -0
  1257. /package/dist/{landings-ZR4YMEPV.js.map → landings-ZLKUP66P.js.map} +0 -0
  1258. /package/dist/{languages-HXAZNLNU.js.map → languages-3IJVDS5Z.js.map} +0 -0
  1259. /package/dist/{languages-VLMJOAJN.js.map → languages-HL42MI7H.js.map} +0 -0
  1260. /package/dist/{launches-T5LAIOYS.js.map → launches-RG2SWEXM.js.map} +0 -0
  1261. /package/dist/{layerize-24PQKKPB.js.map → layerize-SJYK6HPD.js.map} +0 -0
  1262. /package/dist/{leads-EDKSVSWP.js.map → leads-2XOSAYP4.js.map} +0 -0
  1263. /package/dist/{leads-TSNX372E.js.map → leads-H6JIWVI6.js.map} +0 -0
  1264. /package/dist/{library-ZHREUZMU.js.map → library-Q4OU7VR7.js.map} +0 -0
  1265. /package/dist/{lighthouse-E2NTHAO4.js.map → lighthouse-FALRSVQH.js.map} +0 -0
  1266. /package/dist/{line-item-writes-H2ZFXYH3.js.map → line-item-writes-V7AKAHFC.js.map} +0 -0
  1267. /package/dist/{line-items-JBL7LVCS.js.map → line-items-GAMKVVIQ.js.map} +0 -0
  1268. /package/dist/{link-THBFB2H2.js.map → link-Z5AQP6JN.js.map} +0 -0
  1269. /package/dist/{linkedin-PVGZWXQJ.js.map → linkedin-7F6YVXQL.js.map} +0 -0
  1270. /package/dist/{list-TG6LBHCV.js.map → list-2ZTOMTES.js.map} +0 -0
  1271. /package/dist/{list-E7CJMIGC.js.map → list-GK6LNWIW.js.map} +0 -0
  1272. /package/dist/{list-LS6TUGD5.js.map → list-NLGM3QDP.js.map} +0 -0
  1273. /package/dist/{list-37F6C6P5.js.map → list-RR53EF3O.js.map} +0 -0
  1274. /package/dist/{list-EIEZNGQ4.js.map → list-SZH6TH74.js.map} +0 -0
  1275. /package/dist/{list-HA2NITR3.js.map → list-TB677Q2F.js.map} +0 -0
  1276. /package/dist/{list-7EEDCI3T.js.map → list-VTVRZIYL.js.map} +0 -0
  1277. /package/dist/{list-LPFAPCN4.js.map → list-XZVQWIJN.js.map} +0 -0
  1278. /package/dist/{locations-ZWTDUUGL.js.map → locations-AEGZ36JH.js.map} +0 -0
  1279. /package/dist/{locations-VYIDAVD4.js.map → locations-YA7NZY44.js.map} +0 -0
  1280. /package/dist/{log-NX7ITJM2.js.map → log-JM4VLJE4.js.map} +0 -0
  1281. /package/dist/{logo-SHQJHJK7.js.map → logo-YSNUUT33.js.map} +0 -0
  1282. /package/dist/{lookup-TWSJ7KRT.js.map → lookup-RH5N3OWJ.js.map} +0 -0
  1283. /package/dist/{map-TI3YWRBW.js.map → map-HRLUMCR2.js.map} +0 -0
  1284. /package/dist/{mcp-5DZTEDYI.js.map → mcp-T6SAG4XB.js.map} +0 -0
  1285. /package/dist/{media-LDVWXWWZ.js.map → media-ES2UBGYW.js.map} +0 -0
  1286. /package/dist/{media-TNB4DLTJ.js.map → media-MPXEXN4O.js.map} +0 -0
  1287. /package/dist/{media-sources-QYRHVUBJ.js.map → media-sources-7AS3274L.js.map} +0 -0
  1288. /package/dist/{members-RV546WDM.js.map → members-J5KWXTXY.js.map} +0 -0
  1289. /package/dist/{meta-RAVCXVZA.js.map → meta-AOIPEDV5.js.map} +0 -0
  1290. /package/dist/{metrics-2VB46SDT.js.map → metrics-VDBJ6KL7.js.map} +0 -0
  1291. /package/dist/{models-TYRVCPS2.js.map → models-2DQ5NBMT.js.map} +0 -0
  1292. /package/dist/{normalize-KKCNCXI2.js.map → normalize-CHZB4QDD.js.map} +0 -0
  1293. /package/dist/{normalize-Q7EN7JIF.js.map → normalize-NR5RS3WR.js.map} +0 -0
  1294. /package/dist/{options-UMDGX464.js.map → options-QLXFLESP.js.map} +0 -0
  1295. /package/dist/{organization-KQHJ77CV.js.map → organization-KEGKAP4P.js.map} +0 -0
  1296. /package/dist/{output-NHMCVVUU.js.map → output-GWIP6ROX.js.map} +0 -0
  1297. /package/dist/{page-5PCVZ7HS.js.map → page-YWGBCN65.js.map} +0 -0
  1298. /package/dist/{pages-DDXB4NQ4.js.map → pages-FTI44OSH.js.map} +0 -0
  1299. /package/dist/{performance-SVWX2S6E.js.map → performance-SPGPGXE5.js.map} +0 -0
  1300. /package/dist/{pinterest-KQYSCTVQ.js.map → pinterest-J442QLQS.js.map} +0 -0
  1301. /package/dist/{pixels-HJYPX6RR.js.map → pixels-6IUB3Y3H.js.map} +0 -0
  1302. /package/dist/{pixels-GH522EYV.js.map → pixels-MBKR4XPX.js.map} +0 -0
  1303. /package/dist/{plan-ZS7SOXL6.js.map → plan-YPE77T4R.js.map} +0 -0
  1304. /package/dist/{preview-W4VKXOCT.js.map → preview-V4YBD45S.js.map} +0 -0
  1305. /package/dist/{profile-FSB4RT55.js.map → profile-S3MXS2VO.js.map} +0 -0
  1306. /package/dist/{promoted-tweet-writes-XPRWBI7F.js.map → promoted-tweet-writes-TRR3KPRJ.js.map} +0 -0
  1307. /package/dist/{promoted-tweets-W7PCLJMU.js.map → promoted-tweets-XRYZNJI2.js.map} +0 -0
  1308. /package/dist/{properties-V74I56UK.js.map → properties-G3L2OAOL.js.map} +0 -0
  1309. /package/dist/{query-KBXZD4SW.js.map → query-M3IO54U2.js.map} +0 -0
  1310. /package/dist/{query-SFNCXH4H.js.map → query-WCB5W4NW.js.map} +0 -0
  1311. /package/dist/{query-5F5MBR7H.js.map → query-YBS6ZQ75.js.map} +0 -0
  1312. /package/dist/{questionnaire-JK5JLQXK.js.map → questionnaire-PAK4DALP.js.map} +0 -0
  1313. /package/dist/{read-LGRFU7XB.js.map → read-LUTB3UOR.js.map} +0 -0
  1314. /package/dist/{reddit-BJDU3BO7.js.map → reddit-STSECKMZ.js.map} +0 -0
  1315. /package/dist/{refresh-OTR4EWLI.js.map → refresh-RQ3C2MHI.js.map} +0 -0
  1316. /package/dist/{release-QJ4P2AVK.js.map → release-UHGU5WBY.js.map} +0 -0
  1317. /package/dist/{relevant-pages-VMNEEEJK.js.map → relevant-pages-G6SNC73K.js.map} +0 -0
  1318. /package/dist/{remove-BNO3BWM5.js.map → remove-LTKICIIF.js.map} +0 -0
  1319. /package/dist/{remove-PIHTPIHM.js.map → remove-X6DNVS67.js.map} +0 -0
  1320. /package/dist/{reopen-BA76RSLQ.js.map → reopen-BP5ERELB.js.map} +0 -0
  1321. /package/dist/{research-3ATNYHRA.js.map → research-GOYMTKZM.js.map} +0 -0
  1322. /package/dist/{research-CYZEWHHZ.js.map → research-MBAPL35Y.js.map} +0 -0
  1323. /package/dist/{reset-HGTZIAHW.js.map → reset-Q62PEGOU.js.map} +0 -0
  1324. /package/dist/{reset-NM33L5LY.js.map → reset-SJPGSQ7I.js.map} +0 -0
  1325. /package/dist/{resolve-L2A3HC56.js.map → resolve-R45W7QEQ.js.map} +0 -0
  1326. /package/dist/{retry-C3PBVY3I.js.map → retry-CD2Q2AJN.js.map} +0 -0
  1327. /package/dist/{retry-ID7ZKLBK.js.map → retry-NBZ7Q6HK.js.map} +0 -0
  1328. /package/dist/{retry-failed-XTYV3QJS.js.map → retry-failed-EJBP4236.js.map} +0 -0
  1329. /package/dist/{run-DI4BRLKS.js.map → run-HCJKCEOL.js.map} +0 -0
  1330. /package/dist/{run-IE4GVP4I.js.map → run-IIU2UVQU.js.map} +0 -0
  1331. /package/dist/{schedule-OFYLBZT6.js.map → schedule-BSQHXJ5V.js.map} +0 -0
  1332. /package/dist/{schedule-WSO7ETS6.js.map → schedule-IDZC6M32.js.map} +0 -0
  1333. /package/dist/{scheduled-agents-X2U7J42A.js.map → scheduled-agents-MFLMG34I.js.map} +0 -0
  1334. /package/dist/{schema-DL34A626.js.map → schema-EFR7NGJG.js.map} +0 -0
  1335. /package/dist/{schema-CULVYXO7.js.map → schema-IWPG3YSN.js.map} +0 -0
  1336. /package/dist/{scrape-ZG2OWZL4.js.map → scrape-J2Y7YZ4Z.js.map} +0 -0
  1337. /package/dist/{screenshot-GJUY7FCW.js.map → screenshot-K7ZGTVTE.js.map} +0 -0
  1338. /package/dist/{search-FHSQYZOC.js.map → search-CI7LEOOK.js.map} +0 -0
  1339. /package/dist/{search-QDQNZ63X.js.map → search-EGI5K77S.js.map} +0 -0
  1340. /package/dist/{search-2BJ4OLMX.js.map → search-I6DRUXBX.js.map} +0 -0
  1341. /package/dist/{search-ZAY2QV3Y.js.map → search-TTL7VQET.js.map} +0 -0
  1342. /package/dist/{search-52CSDYJS.js.map → search-VT2KUAH6.js.map} +0 -0
  1343. /package/dist/{search-copy-O5AOEBXC.js.map → search-copy-N2AIJNUH.js.map} +0 -0
  1344. /package/dist/{seeds-XY3EZ33U.js.map → seeds-EYYQCMGF.js.map} +0 -0
  1345. /package/dist/{sends-GECHL3NK.js.map → sends-RHVFV2XM.js.map} +0 -0
  1346. /package/dist/{sequences-5BB4S63A.js.map → sequences-5DUWNSWQ.js.map} +0 -0
  1347. /package/dist/{setup-links-ZK6L7GQD.js.map → setup-links-5ILQNMFZ.js.map} +0 -0
  1348. /package/dist/{shared-JDIL3BNQ.js.map → shared-NDRFKAH7.js.map} +0 -0
  1349. /package/dist/{site-6Z5A3G5J.js.map → site-LBXNVRPE.js.map} +0 -0
  1350. /package/dist/{sitemaps-UQJFRA2W.js.map → sitemaps-QKKXMXMV.js.map} +0 -0
  1351. /package/dist/{sites-ZNNEPEGI.js.map → sites-GRC6CCCK.js.map} +0 -0
  1352. /package/dist/{skills-WRKEF2Q4.js.map → skills-UML6GSW6.js.map} +0 -0
  1353. /package/dist/{sources-7QRFH5AB.js.map → sources-GP4PUTX2.js.map} +0 -0
  1354. /package/dist/{sources-B2L6X7ZE.js.map → sources-N4UANUHJ.js.map} +0 -0
  1355. /package/dist/{stats-QFBTSDVV.js.map → stats-RCLQE4HJ.js.map} +0 -0
  1356. /package/dist/{status-SW3PYV6Q.js.map → status-GSFMLC6W.js.map} +0 -0
  1357. /package/dist/{sticker-2JQUC7XO.js.map → sticker-SINY47WT.js.map} +0 -0
  1358. /package/dist/{stock-W3SNJCBV.js.map → stock-ECRBD7RP.js.map} +0 -0
  1359. /package/dist/{studio-2GAZ6QOH.js.map → studio-YB5WXQYC.js.map} +0 -0
  1360. /package/dist/{sync-NAJQQ6NQ.js.map → sync-2MFUI3ME.js.map} +0 -0
  1361. /package/dist/{sync-4LHVBFMZ.js.map → sync-IE4AAVGY.js.map} +0 -0
  1362. /package/dist/{sync-K74WY3AT.js.map → sync-LIV7FU4N.js.map} +0 -0
  1363. /package/dist/{sync-definition-KKW7R7QS.js.map → sync-definition-5JO7QXX3.js.map} +0 -0
  1364. /package/dist/{tag-manager-MNGOJ3GC.js.map → tag-manager-G3LBQZUL.js.map} +0 -0
  1365. /package/dist/{tags-V2SSR5XY.js.map → tags-4JQX7HMT.js.map} +0 -0
  1366. /package/dist/{tags-NMZ2NGN2.js.map → tags-6RQVXS47.js.map} +0 -0
  1367. /package/dist/{tags-4XQ5MEDJ.js.map → tags-AAIFQ6LS.js.map} +0 -0
  1368. /package/dist/{tags-JXLOCBQ6.js.map → tags-F355NMIR.js.map} +0 -0
  1369. /package/dist/{tags-GJ5MIA6X.js.map → tags-ZHCGHGYC.js.map} +0 -0
  1370. /package/dist/{targeting-constants-RQT4GLUA.js.map → targeting-constants-KEKYU5JQ.js.map} +0 -0
  1371. /package/dist/{targeting-criteria-D2ZMGXLI.js.map → targeting-criteria-6FY2JB3V.js.map} +0 -0
  1372. /package/dist/{targets-6QA6MIQU.js.map → targets-NI7TR4GV.js.map} +0 -0
  1373. /package/dist/{testimonials-LBGJKESG.js.map → testimonials-G7CCH7VN.js.map} +0 -0
  1374. /package/dist/{themes-VVID6Y73.js.map → themes-PXDXIKYR.js.map} +0 -0
  1375. /package/dist/{top-companies-6D6YFQAB.js.map → top-companies-YH2ZJEH5.js.map} +0 -0
  1376. /package/dist/{triggers-MDZNDNCU.js.map → triggers-WYFM7PAH.js.map} +0 -0
  1377. /package/dist/{tweets-L4CXZLKQ.js.map → tweets-C3QUKS3I.js.map} +0 -0
  1378. /package/dist/{unfollow-5T2CT3EF.js.map → unfollow-ZI5QU7RD.js.map} +0 -0
  1379. /package/dist/{unlink-WS7DVDLH.js.map → unlink-PTWUSM5B.js.map} +0 -0
  1380. /package/dist/{unstage-NEX3EIJX.js.map → unstage-7F7JI6HY.js.map} +0 -0
  1381. /package/dist/{unstage-K3I2TLRR.js.map → unstage-MCM6EZWK.js.map} +0 -0
  1382. /package/dist/{update-HPSXO5WB.js.map → update-643S2MUW.js.map} +0 -0
  1383. /package/dist/{update-J6FHMXWL.js.map → update-GUIP6G3N.js.map} +0 -0
  1384. /package/dist/{update-LZVLBRAX.js.map → update-V6E3CIFD.js.map} +0 -0
  1385. /package/dist/{upload-XD7N4PJS.js.map → upload-3YJJ5VID.js.map} +0 -0
  1386. /package/dist/{upload-C2K66PR3.js.map → upload-KO46L76G.js.map} +0 -0
  1387. /package/dist/{upscale-SGBB4GWF.js.map → upscale-SJ7SCSRS.js.map} +0 -0
  1388. /package/dist/{url-options-LUKI4Y46.js.map → url-options-LHS4SWWB.js.map} +0 -0
  1389. /package/dist/{url-params-U5DW22SR.js.map → url-params-2DKIXKHH.js.map} +0 -0
  1390. /package/dist/{use-XGTUHBUL.js.map → use-6ULEM3WE.js.map} +0 -0
  1391. /package/dist/{variant-DQRDW6IZ.js.map → variant-5TRRSYBB.js.map} +0 -0
  1392. /package/dist/{videos-KCXSXYJK.js.map → videos-KEDR4GG3.js.map} +0 -0
  1393. /package/dist/{view-KJ6YNRXB.js.map → view-ABSWZMXW.js.map} +0 -0
  1394. /package/dist/{viewer-check-7DZQDGD3.js.map → viewer-check-TSH3SAYJ.js.map} +0 -0
  1395. /package/dist/{web-W2TTELHS.js.map → web-UOGBNAHR.js.map} +0 -0
  1396. /package/dist/{winners-LD6PFXAS.js.map → winners-KRISBKOR.js.map} +0 -0
  1397. /package/dist/{winning-ads-YPQY6GVU.js.map → winning-ads-SGBI3WHK.js.map} +0 -0
  1398. /package/dist/{write-commands-SPTWBMLY.js.map → write-commands-E7JOB4HX.js.map} +0 -0
  1399. /package/dist/{write-commands-CKMHQ4YY.js.map → write-commands-HCQI4Y27.js.map} +0 -0
  1400. /package/dist/{write-commands-NW5CC3DP.js.map → write-commands-QCI6XBM7.js.map} +0 -0
  1401. /package/dist/{write-commands-RLEYECTB.js.map → write-commands-RHCCPMAE.js.map} +0 -0
  1402. /package/dist/{x-2Y2DGMPG.js.map → x-UNSN57YP.js.map} +0 -0
package/README.md CHANGED
@@ -1992,15 +1992,24 @@ Ads start from what customers said. Three commands carry the process; the agent
1992
1992
  ```bash
1993
1993
  baker creatives brief [--adset <id>] [--account-id act_<id>] [--no-research] # one read: viewer, account bottleneck, what works, taste, customer quotes, ideas on file
1994
1994
  baker creatives ideas [--full] # check and rank src/creatives/_ideas/*.md; build_next
1995
- baker creatives make <idea> [--slug <s>] [--adset <id>] [--reference <adId> [--platform meta|linkedin|tiktok|google]] [--spec <beats.json>] [--from-idea] [--series <lead>]
1995
+ baker creatives make <idea> [--platforms <p,…>] [--formats <r,…>] [--slug <s>] [--adset <id>] [--reference <adId> [--reference-platform meta|linkedin|tiktok|google]] [--avatar <handle>] [--spec <beats.json>] [--from-idea] [--series <lead>]
1996
1996
  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
1997
1997
  baker creatives learn [--days <n>] [--dry-run] # what each idea's ads did, written back onto the idea
1998
+ baker creatives rules list [--kind static|video] [--product <slug>] [--all] # the company's standing rules for every ad
1999
+ baker creatives rules add --candidate <rc-…> | --text "<rule>" --strength never|must|prefer --applies <what> … # a rule the person agreed to
2000
+ baker creatives rules retire <id> [--by <id>|BRAND.md]
2001
+ baker creatives check [--slug <s>] # which ads already made break a rule now in force
1998
2002
  ```
1999
2003
 
2004
+ - **Creative rules.** Every step of an ad reads one company (`engine/creative-context`): its reading of COMPANY.md (cached per edit), its BRAND.md (name, fonts, colours, voice, imagery, logo usage) and the rules that hold for the ad: BRAND.md's own (read by `google/gemini-3.5-flash`, cached per BRAND.md edit) and the ones a person taught, one file each in `src/content/creative-rules/`. Rules are read when a call runs, never copied into an ad's files; the compiled prompts carry them in a `<company_rules>` block the source fingerprint leaves out, so a rule edit re-renders on the next run and marks nothing stale. A never or a must is held before anything renders on the ad's words (`rule_broken`: whole phrases, accents, case and spacing folded, in the rule's language) and on its cast (`cast_not_decided` for an Avatar made for a role under a rule that only real people appear), and after on the finished ad: the rules a person taught are checked on a static's sizes and a video's frames by a vision model (each blocking break given a second look), and a video's voice, sound and subtitle rules by the watch pass. BRAND.md's rules are told to every render and its banned words are checked, but they never block a finished ad by eye. An ad departs from a rule only through `waive` in its prompt.json, which the source fingerprint covers; a rule three ads waive is flagged to retire. `feedback record` drafts the rules a rejection's words state for every ad (`ruleCandidates`, only where the words say it holds beyond this ad) and names reasons repeated across ads; `rules add` saves one only once the person agreed, after checking it duplicates and contradicts none of theirs, catches the version it came from and blocks none they approved. Each run record names the rules it was made against (`rules: { digest, ids }`). A correction (`--fix`, the spec repair) also reads the creative's case file: every rejection on it, in the person's words.
2005
+ - **An edit keeps the idea.** A creative's idea (its message, who it is for and its market, its reference, what is taken from it and must be kept, what stops the scroll and the proof with what of ours carries each, why it won and what survives of it, the language its viewer reads; on a video its accent, voices, chosen voices, how it is voiced and who appears) is read off `_definition.md`, `prompt.json`, `scenes/*.json` and the canvas, never stored twice. `feedback --slug` and a rejection's `feedback record` return it as `data.anchor` (compact; `--full` adds why it wins, the voices and the changes), restated as the first hint. `canvas run` and `validate` hold it to the version the person saw when the chat turn started (`BAKER_TURN_ID`; outside a chat, the last render here, else the version the run history shows) and refuse a change no new line under `## Changes` in `_definition.md` records with a reason after the dash, the front matter agreeing (`idea_changed`). Words the decision model reads, surely, as another language than the viewer's are refused (`copy_language`), a reading that is not sure warns. A run says `[scope]` before an edit that makes new pictures for more than words or colours, and `[voice]` for a talking take whose rendered voice is kept and is made again. An automatic repair never changes `viewer`.
2006
+
2000
2007
  - `brief` returns a verdict, not raw numbers: `account.bottleneck` is `hook`, `after_click`, `none` or `too_little_data`. A part that cannot be read says `unavailable`; the market searches (the followed brands, and the library for what COMPANY.md's first line says the company sells, in a few words) run at once and get 12 seconds, so a slow ad library leaves them out rather than holding the brief. With few customer quotes on file it runs `research customers` itself alongside the reads (about 30 s) and returns what it wrote; `--no-research` skips that. With no ideas on file, its hint lists the values `awareness`, `angle` and `format` take. `market` says what competitors' ads already say (the followed brands, else the library), how sophisticated the market is, and which awareness stages nobody speaks to.
2001
2008
  - `ideas` is local and nearly free: two readings of the words go to the decision model (a fraction of a cent, billed with the workspace's next run, answers kept in `canvas/.cache/`). An insight filed as `observed` reads as `interpreted` when its source cannot be opened or its quote is a statistic about people rather than someone's words ("39% de los propietarios…"), and a new idea is warned when its message says what a failed idea said, however reworded or translated. Without an answer, an insight keeps its status and only the same words count as the same message. An idea's `evidence` resolves to `src/content/insights/` entries, or it is an `explore` bet. Numbers must be in the Knowledge or our own customers' quotes (a Reddit, forum or web quote never sources a claim), no two ideas may share an angle and format, and a review or testimonial format needs a quote from our own customer.
2002
2009
  - `learn` pools each built idea's creatives, judges them against the rest of the account's cost per result and writes `status` (`winner`, `failed`, `inconclusive`, `testing`) and a frozen `result` onto the idea. `ideas` then warns when a new idea repeats a failed one.
2003
- - `make` builds one idea, on a proven winning ad whenever one fits. A static searches the idea's container on the idea's message for our viewer, then for the container's strongest winners from any category (no query, by winner score), pools the candidates (each ad once, the better search first), checks up to six with `winning-ads fit`, three at a time (the next only once one does not fit), and keeps the best-ranked one that fits as soon as it and every better one have answered. The fit says what made that ad a winner, so what the creative carries of it (`reference.carry`: `whole_ad`, `layout`, `hook` or `angle`); make seeds it into `prompt.json` as `concept`, the canvas keeps the ad as its `original` node, and the renders see it for its structure only at `whole_ad` or `layout`. The first hint names the ad and what it carries (for a `--reference` chosen by hand, only the ad: nothing checked what made it win); if the concept could not be written into `prompt.json`, a hint says so and how to write it from the fit already made. For a new creative it starts scaffolding the best-ranked one while the fits are asked (kept when it fits, stopped and removed whole when another or none is kept). Finding, checking and describing a reference gets 150 seconds; past that the build is stopped and the static starts from the idea (`REFERENCE_SLOW`). A creative whose ad is already written is never built over (`ALREADY_MADE`): edit its `prompt.json`, or pass `--slug` for another ad of the same idea. A video idea takes its beats spec. Either way it records the idea on `_definition.md`, sets `prompt.json`'s `message` and syncs the definition. Drafted copy lines claiming a figure the company never wrote come back first in `hints`. Only when no proven ad fits (or with `--from-idea`) does a static start from the idea itself, and the first hint says why (none in the container, what the ones checked won on that the company lacks, the time ran out, or the proven ad it picked could not be read; a `--reference` chosen by hand that cannot be read fails instead): `prompt.json` holds the message and placeholders, and `canvas run` refuses to render until the scene and copy are written.
2010
+ - `make` builds one idea, on a proven winning ad whenever one fits. A static first reads a reference brief: one small model (`google/gemini-3.5-flash-lite`, about a second, cached per company notes and idea under `canvas/.cache/reference-brief/`) reads COMPANY.md and the idea and says what this ad sells, its industry and its people in the plain English the library files ads under, the market it runs in, who buys (consumer, small business, enterprise), whether the brand jokes (these and its own brand names from the company's reading, read once per COMPANY.md), what its rules forbid (its never-rules), and up to four wider searches, closest first (an adjacent product the same buyer weighs, the same buyer buying something else, the same kind of decision: for a padel-court builder, tennis courts, sports club owners, turnkey business investment). Without an answer it falls back to COMPANY.md's first line, its market line (English, Spanish, French, German or Italian) and the persona. It then searches for ads of what this ad sells, in its market and then anywhere, first in the idea's container for our viewer and then in any static container; then ads made for the same people whatever they sell; then the wider searches; then ads of the broader industry; then the idea's message; then the container's strongest winners from any category (no query, by winner score), in the market and then anywhere (a search that fails is asked once more; when every search for this ad's topic fails, the library's browse of any category's winners is never built on: the static starts from the idea, `REFERENCE_SEARCH_UNAVAILABLE`, and make can be run again later). It pools the candidates (one ad per brand, the better search first, ads whose run barely proves them after the proven ones, the company's own ads left out), reads up to 24 of them against the ad being made with the decision model (made for our kind of buyer? would our viewer see themselves in it? could our brand run something like it?) and checks the best six in that order, checks up to six with `winning-ads fit`, three at a time, each judged for the ad being made (the idea's persona from the Knowledge, its message, awareness, angle and the customers' words it cites; a reference the fit says our viewer would scroll past does not fit, nor one whose scroll-stopper or proof cannot be ours, and a fit made for one idea is never reused for another) (the next only once one does not fit; the first hint names each passed over and why), and, when more than one fits, looks at all of them side by side for the viewer (`~google/gemini-pro-latest`, one call) and keeps the one it prefers, saying why (`reference.chosen_because`, also in the first hint and the thinking's first read). The same look says, as a media buyer would, which element our ad takes from which of them (the hook, the visual, who appears, the proof, the layout, the call to action) and what it must not copy (a fake news page, dated urgency, another brand's marks); every picture is saved under `canvas/references/` and the thinking lays them out as a question to settle; measured on 14 production companies, judged blind by another model, the reference kept went from 5.0 to 6.9 out of 10. The fit says what made that ad a winner, so what the creative carries of it (`reference.carry`: `whole_ad`, `layout`, `hook` or `angle`); make seeds it into `prompt.json` as `concept`, the canvas keeps the ad as its `original` node, and the renders see it for its structure only at `whole_ad` or `layout`. The first hint names the ad and what it carries. A `--reference` chosen by hand skips the search but is checked like one make found (the same fit, for the ad being made; free when made before), so its thinking names what stops the scroll and the proof and asks what of ours carries each, and the first hint calls it the one chosen; only when no check can be made is it built on unchecked, the hint naming only the ad; if the concept could not be written into `prompt.json`, a hint says so and how to write it from the fit already made. For a new creative it starts scaffolding the best-ranked one while the fits are asked (kept when it fits, stopped and removed whole when another or none is kept). Finding, checking and describing a reference gets 150 seconds; past that the build is stopped and the static starts from the idea (`REFERENCE_SLOW`). A creative whose ad is already written is never built over (`ALREADY_MADE`): edit its `prompt.json`, or pass `--slug` for another ad of the same idea. A video idea takes its beats spec. Either way it records the idea on `_definition.md`, saves a proven ad's picture under `canvas/references/`, writes a `## Thinking` outline into its body (open `[TODO: …]` questions, the first sending the agent to that picture, seeded with the fit's read: what the reference is and why it won, or why the bet should work; whether it fits the viewer; our hook; the angle and the call to action; who appears and what we show, listing what the company has: its ready Avatars (real people and ones made for a role), up to three customers' own words for this message from the testimonials, how to make the founder's Avatar, where to get product pictures, and its logos, and closing with three decision lines, `- Cast:`, `- Product shown:`, `- Logo:`; what survives, one decision line per element the proven ad won on, what stops the scroll and the proof first (`- Stops the scroll: <element> — keep`, `— replace with <what of ours does the same job>` or `— impossible: "<rule>"`, the check's first read in each question); the plan, which settles the format when the proven ad's container differs from the idea's), sets `prompt.json`'s `message` and `viewer.who` (the idea's persona, title and segment, never a placeholder: the image prompt, the casting check and the viewer check read it) and syncs the definition. `canvas run` and `canvas validate` refuse to render while a thinking question is open (`definition_not_thought`), so the definition is thought before the ad is written; a creative made before the outline existed is never asked. They also refuse a cast that is not ours (`cast_not_decided`): the cast must be an Avatar (`@handle`), a real customer, real footage or nobody, the product a library picture, a capture, a Hyperframe, footage or none, the logo a brand file or none; and on a static, an Avatar cast must be one `prompt.json` grounds a person on. `--avatar <handle>` (`@eduard` or `eduard,lucia`) casts the ad's people as those Avatars: run again with it once the thinking decides, before `prompt.json` is written; it rebuilds the canvas and keeps the thinking. A static started from the idea has no people to find, so each Avatar is a person of its own, grounded on its sheet (`PERSON_n` in `prompt.json` `references`); a quote signed by that Avatar's person names that reference instead of casting them twice. Drafted copy lines claiming a figure the company never wrote come back first in `hints`. Only when no proven ad fits (or with `--from-idea`) does a static start from the idea itself, and the first hint says why (none in the container, what the ones checked won on that the company lacks, the time ran out, or the proven ad it picked could not be read; a `--reference` chosen by hand that cannot be read fails instead): `prompt.json` holds the message and placeholders, and `canvas run` refuses to render until the scene and copy are written.
2011
+ - **The logo on a static.** A standard ad shows the brand's logo whatever the reference showed (only a native disguise follows the reference, its logo small as the sender). With no logo file in `src/brand/logos/`, `scaffold-static-ad` (and so `make`) looks for the company's own: Brandfetch's when it confirms the brand, else the logo in its website's header (an image or inline SVG from its own domain only), saved as `logo-light`/`logo-dark` and registered in `tokens.json`; with none found a hint says where to add it on the Brand page, and the cast's `- Logo: none` is accepted only then, for a native ad, or when its reason quotes a company rule on the logo. `static_logo` places the file where it reads (each pixel against the ground under it, at least 90%), never on words, a button or a face; with no such spot it sets it on a small plate in a brand colour, and a size with no room is blocked (`--regenerate format_<size>`, keeping the corner clear). An ad with `logo: false` tells the words render to draw no logo or wordmark.
2012
+ - **Where an ad runs decides its sizes.** `make --platforms`, the creative's `_definition.md` (whose recorded `formats` a rebuild keeps), an idea's `platforms` (main first), the one platform the idea's words name, or a Meta `--adset` say where it runs; with none, `make` and `canvas scaffold-static-ad` refuse before anything is searched or billed (`platform_required`, its fix naming the connected ad accounts), never defaulting to Meta. The sizes follow the placement catalog (`@baker/canvas-contract` `deliveryPlan`): Meta 4:5 + 9:16, LinkedIn 1:1, TikTok 9:16, Pinterest 2:3, Google 1:1, YouTube and X 1.91:1, the first platform's size designed first; `--formats` delivers exactly the sizes asked (a size the platform never shows is refused, one it needs left out is a warning naming the placements that show a cropped picture), and a placement id names one placement alone (`meta_stories`). The definition records `platforms`, `platform` and `formats`; editing them re-plans the canvas on the next `canvas validate` or `canvas run` (`[sizes]`), before anything bills, keeping the three options when only a size is added. `make --platform` is retired (it named the reference's library: `--reference-platform`); `scaffold-static-ad --platform`, `--placements` and `--aspect` are mapped onto `--platforms` with a hint, and `--placements none` is refused.
2004
2013
  - `make --series <lead>` makes a static idea as another ad of a series: several messages in one style. Nothing is searched or rendered; the ad's `_definition.md` names its lead (`series: <lead>`), its `prompt.json` starts as the lead's ready version with the idea's message, and only its `copy` is written. Its canvas is written from the lead's on every run: the lead's finished picture with this ad's words, every other size the lead's own size with the same words. `baker canvas run --series <lead>` renders every ad of the series at once, one reviewed and corrected run each, skipping an ad already ready from the lead's current version.
2005
2014
  - `translate --slug <ad> --to <langs>` makes the ad in other languages as ads of the series it leads: one creative per language or country variant, `<ad>-<lang>` (the BCP-47 tag in lowercase: `-es-mx`), whose `_definition.md` says `series: <ad>` and `language: <lang>` (canonical case, `es-MX`, as the spec's market and the dashboard store it; tags are compared without case) and whose `prompt.json` is the ad's as last drawn with its words translated. Every language is translated in one text call (transcreated, each regional tag in that country's own variety and form of address, `es-MX` and `es-CO` two ads, each line keeping its role and about its length, brand names, prices and numbers kept, a customer's quote and the name on it never translated, and the ad's `message` translated with the lines; the spend is billed with the workspace's next run), or read from `--copy-file`: `{"<lang>": ["line 1", …]}` is every line with no model call, `{"<lang>": {"headline": "…", "3": "…"}}` only the lines given (by role or number), the model writing the rest. `--note` is the agent's brief for the translator (tone, form of address, terms to keep). Each made language lists the lines it `kept` as a customer said them, and the answer warns when the ad's `prompt.json` changed after its last render, since translations are made from the version rendered. The ad may itself be an ad of a series (an angle ad), so angles × languages stay one design. A language already made is left as it is, so adding one later re-renders nothing; `--again` translates it again. Then `baker canvas run --series <ad>` renders them; a new version of the ad reaches every language on the next `--series` run.
2006
2015
 
@@ -2568,6 +2577,7 @@ Each external source is its own subcommand. Pick the verb that matches the sourc
2568
2577
  | `baker images pinterest <q>` | Pinterest reference imagery via ScrapeCreators (photo-real mood boards) | off |
2569
2578
  | `baker images logo <domain>` | Brand logo via Brandfetch CDN | **on** (top 1) |
2570
2579
  | `baker images icon <name>` | Iconify (200+ icon sets, no API key) | off (CDN URL is stable) |
2580
+ | `baker images meme <reaction>` | The real, well-known meme template for a reaction (Imgflip; blank picture and caption boxes, best first). Use it when the brand's voice fits a meme | off (`--auto-ingest N` keeps the top N) |
2571
2581
  | `baker images gif <q>` | Reaction GIFs / memes via Giphy (paid-social creative) | off |
2572
2582
  | `baker images sticker <q>` | Transparent stickers via Giphy (overlay-friendly for ad creative) | off |
2573
2583
  | `baker images extract <url>` | Pull every image off a URL via Firecrawl | off |
@@ -2610,7 +2620,7 @@ baker images screenshot https://competitor.com/pricing --context "Competitor pri
2610
2620
 
2611
2621
  **Migrating from Magnific:** `baker images stock` used to run on Magnific, Freepik's developer API. That provider is gone and the command now searches Pexels and Pixabay together. Consequences: it is free (no `image-magnific-search` credit line any more); `--type` survives as `photo|illustration|vector` (PSDs and mockups are the one thing genuinely lost); `--license`, `--ai`, `--people` and `--order` now fail with a fix naming the replacement rather than being silently dropped; and `--orientation` loses `panoramic` while `--size` and `--locale` are new. Library rows already ingested from Magnific keep `source: "magnific"`, stay searchable, and remain a valid `--source` filter; nothing writes that value any more.
2612
2622
 
2613
- **Migrating from Tenor:** the old `baker images meme` command and Tenor provider have been removed. Use `baker images gif` (Giphy) instead. Existing library rows ingested via Tenor remain stored with `source: "tenor"` but are no longer returned by `baker images find` and `--source tenor` is no longer a valid filter on `library`. Re-ingest via `baker images gif --auto-ingest N` if you need fresh equivalents.
2623
+ **Migrating from Tenor:** the old Tenor provider has been removed. Use `baker images gif` (Giphy) instead (`baker images meme` is now a different command: the real meme templates from Imgflip). Existing library rows ingested via Tenor remain stored with `source: "tenor"` but are no longer returned by `baker images find` and `--source tenor` is no longer a valid filter on `library`. Re-ingest via `baker images gif --auto-ingest N` if you need fresh equivalents.
2614
2624
 
2615
2625
  ### `baker images library <query>`
2616
2626
 
@@ -3655,17 +3665,22 @@ the brands it won and lost inside. A common pattern is not a winning one: `count
3655
3665
  ### `baker winning-ads fit <adId>`
3656
3666
 
3657
3667
  Before building on a reference: why the ad wins, read against **this** company. One billed vision call, cached per ad
3658
- under `canvas/.cache/fit/<platform>-<adId>.json` (asking again is free).
3668
+ under `canvas/.cache/fit/<platform>-<adId>.json` (asking again is free), asked at temperature 0 so the same ad, idea and
3669
+ rules read the same in every workspace. A person of the reference (a celebrity, an actor, the advertiser's own people) is never kept. A meme's job goes
3670
+ to a real meme our buyer persona relates to (`baker images meme`), not necessarily the reference's own.
3659
3671
 
3660
3672
  ```bash
3661
3673
  baker winning-ads fit a_12345 --platform meta
3662
3674
  ```
3663
3675
 
3664
3676
  Returns `why_it_wins` in five layers (`disguise`, `voice`, `trigger`, `attention`, `logic`), the `load_bearing`
3665
- elements that carry them (each with what it `needs`, whether the company has it: `have` | `adapt` | `missing`, and
3666
- `ours`, what replaces it), a `verdict`: `use`, `adapt` or `reject`, and what made the ad a winner, so what an ad built
3677
+ elements that carry them, always what stops the scroll (`job: stop`) and the proof that makes it believed (`job:
3678
+ proof`) as they show in the picture (each with what it `needs`, whether the company has it: `have` | `adapt` |
3679
+ `missing`, what our ad does with it, `decision`: `keep` | `replace` | `impossible`, `ours`, what of ours does its job,
3680
+ and `rule`, the company rule that forbids it, quoted), a `verdict`: `use`, `adapt` or `reject` (a stop or proof that is
3681
+ `impossible` for us is a `reject`, whatever the model said; a cached fit that names neither is asked again), and what made the ad a winner, so what an ad built
3667
3682
  on it carries (`carry`: `whole_ad`, `layout`, `hook` or `angle`, with `carry_why`; renders see the reference's picture
3668
- only at `whole_ad` or `layout`). The company's Knowledge, reviews and market, and the library's evidence that the ad won
3683
+ only at `whole_ad` or `layout`). The company's Knowledge, reviews, market and Avatars, and the library's evidence that the ad won
3669
3684
  (its winner category, angle, hook and composition), ground the answer. `baker canvas scaffold-static-ad --source-ad-id <adId> --source-platform <platform>` reads the cached
3670
3685
  answer, writes it into `prompt.json` as `concept`, and refuses a `reject` with `concept_does_not_fit` before anything is
3671
3686
  billed; the hint names the platform the fit was asked on, so a TikTok or LinkedIn reference is read from its own library.
@@ -4897,6 +4912,18 @@ Local; no credits (one box-reader call per variant, about $0.005, which rides on
4897
4912
 
4898
4913
  Local; no credits (one box-reader call, about $0.005, which rides on the run record's review spend). Brings a finished 9:16's words and logo inside the band Reels or Stories leave clear without rendering again: reads where every line and the logo sit and, when any reaches past the band, shrinks the whole picture a little (to 85% at most) and shifts it, carrying its edge into the uncovered margin, only when that edge is plain ground; where the review blocks a line under Reels' or TikTok's buttons down the right (an ad set that runs there and not in Stories), the fit clears them too (a busy edge would read as a blurred duplicate, so the picture is passed on as rendered). The image model cannot move an element by a few points on request, so this replaces re-rendering for small misses. **Inputs:** `image`. **Params:** `format`, `placements` (the ad set's, as the sizes were planned). **Outputs:** `image` (same pixel size), `fit` (`{ scale, x, y }`, or null when passed on unchanged), `reason` (`not_read`, `inside_band`, `too_far` when clearing the band needs more than the 85% shrink, or `busy_edge` when the edge it would carry is not plain ground) and `usage`. Scaffolded by `scaffold-static-ad` after every 9:16 Reels or Stories covers (`safe_<size>`, tagged `static_safe_fit`). It never sets the picture over a blurred or mirrored copy of itself: a layout `too_far` or `busy_edge` is passed on as it is, the run review names what Reels or Stories covers, and `baker canvas run` lays that size out again by itself.
4899
4914
 
4915
+ ##### `static_logo`
4916
+
4917
+ Local; no credits (two box-reader calls, the words and the people and products, about $0.01, which ride on the run record's review spend). Places the brand's logo file on one delivered size pixel for pixel, never drawn by a model, and only where a designer sets a logo: a top corner or the top centre just inside the safe area (on a 9:16, just below the band Stories and Reels cover), a bottom corner at the safe area's foot (off Reels' buttons on the lower right), or beside the button on its row at the margin when the button sits at the foot; never the middle of an edge or a spot inside the picture. The size's brief reserves its slot by the same function (`chooseLogoSpot`; a `static_format`'s `logo_slot`, chosen on the cut before any word is set, off every person, face and product, on plain ground) and the composite keeps that slot while it is still clean. Otherwise it takes the first such place whose whole box (the logo, its clear space, a plate when it needs one) is off every words box, keeps its clear space off every person, face and product, and has no straight edge through it (a card's border, a window's frame, a phone's bezel): on plain ground where the logo reads at a quarter of the frame wide (held between 5% and 9% of the width tall), then a fifth, then a sixth; else the first clean place on a small plate in a brand colour. With no clean place at all it stamps nothing and flags the size (`no_room`): the review sends the node that set the size's words (`format_<size>`, or the render that laid it out again) back with the corner kept clear; a re-laid-out ad's lead size, which is the chosen picture itself, is asked for as a `--fix` of that picture with the corner plain. Of the logo's files (`inputs.logos`: the brand's file and the same artwork in its other colours, `logo-light.svg` beside `logo-dark.svg`) it places the first, in that order, that reads on the ground measured under it (contrast 3:1), else the one that stands out most; a file inked in the text colour (`currentColor`) is drawn in each of `inks` (the brand's accent, its ink, white; projected from prompt.json) and the first that reads is placed (`facts.ink`). An SVG is drawn at the slot's size and every file cut to its artwork. The variant checks (`static_prefilter` `checks.logo_slot`) set aside a re-laid-out variant that puts a line in the master's slot, and no variant is ranked for a logo it was told not to draw. Then it checks the size: the logo and the headline (`params.copy`) each wholly inside the frame and the safe area, and no line of the copy under the logo. **Inputs:** `image`, `logos`, `slot` (optional). **Params:** `format`, `placements`, `position` (`top_left`, `top_right`, `bottom_left`, `bottom_right`, `top_centre`, `bottom_centre`; a bottom centre is tried as the bottom corners), `aspect` (the logo's shape the slot was planned with), `copy`, `inks`, `plates`. **Outputs:** `image`, `facts` (`box`, `slot`, `variant`, `ink`, `ground`, `contrast`, `headline`, `read`, and `problems`, each blocking in the run review) and `usage`. Scaffolded by `scaffold-static-ad` as the last step of every size when the brand has a logo file (`logo_<size>`, tagged `logo_composite`).
4918
+
4919
+ ##### `static_format`
4920
+
4921
+ Local; one image call at the words model's price, reported by the backend (nothing is recorded when the call is replayed), plus a box-reader call (and a subject-reader call when no `subjects` are wired) riding on the run record's review spend. Delivers one size of a static ad from its picture (a plate with no designed words): cuts the size at one scale around the people and products (a face, an animal or a product is never cut, a person only at the bottom), has the image model set the ad's designed words, logo and button on that cut (shown at a ratio the model renders, a 3:4 holding a 4:5), lines its render up with the cut and keeps only what changed at the words (a scrim or card over the picture as a tone on its own pixels, a face never redrawn, text that is part of the scene never taken, and with the copy to go by, any line the copy does not name, such as a phone's status-bar time, is the scene's), then moves each block of words that reaches past the band the size's placements leave clear, or sits on a face of the picture, on its own (shifted first, shrunk to 80% at most, never more than 12% of the height; a change the model made that a tone does not explain, such as a person drawn again, is put back to the picture). Everything outside the words is the picture's own pixels, checked on every run. The paid call is a step of its own: changing only the band, the placements or the node's version replays it free; `--regenerate format_<size>` pays for it again. **Inputs:** `plate`, `subjects` (the plate's subject boxes), `logo`, `type`, `style`, `refs`, `previous` (the last words render, for an edit). **Params:** `format`, `lead`, `placements`, `words` (`model`, `quality`, `prompt`, `edit.instruction`), `copy` (the designed lines), `in_scene` (lines that are part of the picture), `core` (where to centre the cut when no subject was read), `band_min_scale`, `check_formats` (the other sizes cut from the same picture: when one would cut a face or the product, no words are paid for and the size reports `subject_cut`), `logo_slot` (`aspect`, `position`: the brand's logo file is placed on the size afterwards, so the words draw no logo and keep its slot empty, chosen on the cut by the function its `static_logo` places it with: a designer's place inside the size's safe area, off every person, face and product, on plain ground and through no straight edge; the words are told to start below a top slot or end above a bottom one, and words set there are set again, never moved out of it). **Outputs:** `image` (the size at its delivered pixels), `cut`, `words_raw`, `words_alpha`, `logo_slot` (the slot kept empty, in the size's pixels, for its `static_logo`), `facts` (crop, upscale, each block's move, how far the render sat from the cut once lined up, `reason`: `band_too_far`, `words_over_face`, `subject_covered` (the words hide most of a product or animal, named in `covered`), `subject_cut`, `words_misaligned` or `not_read`, the share the model changed that was put back, and each step's credits; carried on the run record) and `usage`.
4922
+
4923
+ ##### `static_plate`
4924
+
4925
+ Local; one image call at the painter's price when anything is missing, reported by the backend, plus a subject-reader call (and, for `from_ad`, a box-reader call) riding on the run record's review spend. Makes a static ad's picture from a picture that exists, kept pixel for pixel, the image model painting only what is missing: `widen` extends the chosen picture sideways to a wide shape (16:9, 21:9), keeping the full-width band its subjects need, so the wide sizes show the tall ones' own people and products; `from_ad` paints an approved ad's words, logo and button out and extends its frame to the plate's shape. A picture a plain cut already gives is cut, nothing painted or billed. **Inputs:** `image`, `subjects`. **Params:** `mode`, `aspect_ratio`, `paint` (`model`, `quality`, `prompt` added after the painting instruction), `copy` and `in_scene` (`from_ad`). After painting, the plate is read twice for subjects standing where only painting was: a person, face or animal, or a product repeating one the kept part shows, is `reason: subject_added` (named in `added`), and every size cut from the plate is blocked by the run's review. **Outputs:** `image` (the plate), `shown`, `painted`, `subjects` (on the plate), `facts` (what was kept and where, the share painted, the boxes cleared, `reason`, `added`) and `usage`.
4926
+
4900
4927
  ##### `font_specimen`
4901
4928
 
4902
4929
  Render specimen text in a given font file to a **PNG** — black `#000` text on a white `#fff` background — via headless Chromium at 2× device-scale. Produces a **typeface reference image**: wire `image` into `image_generate`'s `reference` input so the model replicates the font when generating images that contain text.
@@ -6097,7 +6124,7 @@ when the viewer can only guess what is offered, is sure of something else, or, f
6097
6124
  cart, a trial, a donation, a registration); who it is for is reported but never fails an ad alone. The viewer is the `viewer` recorded in
6098
6125
  `_definition.md`, else the one its `targetAdSet` reaches (as `baker ads meta adsets --audience` reads it), else
6099
6126
  the persona and `awareness` from the Knowledge, else a cold stranger. Not understood → exit 2 with
6100
- `viewer_check_failed` and a `fix` that starts with the one rewrite answering a missed offer (`Do this: make the biggest words say "<message>"`) and names what the viewer missed. After two failures of one ad in a chat turn the check no longer holds it back: the command answers `ok: true` with `understood: false` and what was missed, and `baker canvas run` renders it, printing the miss. The casting check is asked alongside the viewer. Answers are cached per copy, scene and viewer.
6127
+ `viewer_check_failed` and a `fix` that starts with the one rewrite answering a missed offer (`Do this: make the biggest words say "<message>"`) and names what the viewer missed. After two failures of one ad in a chat turn the check no longer holds it back: the command answers `ok: true` with `understood: false` and what was missed, and `baker canvas run` renders it, printing the miss. The casting check is asked alongside the viewer; it judges who each person is against the company's rules, never how the ad shows them (a rule like "people only as small round photos" is the finished ad's review). Answers are cached per copy, scene and viewer.
6101
6128
  Before either, a static ad whose scene quotes words, or names a price or a share, that the copy (or `scene_text`) does not hold is refused (`scene_words_not_in_copy`): the picture would print them and a correction round would erase them. An unreadable `prompt.json` names each wrong field in a line and shows that field's shape. `baker canvas run` makes the same check on a static ad before it spends (skipped for `--fix`, an autofix round, `--use-variant`, a re-layout and resumed runs, never for an edit of the words;
6102
6129
  `--skip-viewer-check` renders without it; a model outage lets the render through with a warning). `--full` adds
6103
6130
  the viewer's whole answer and how the viewer was chosen.
@@ -6144,9 +6171,9 @@ A completed render the review calls ready (`verdict` `ready` or `ready_with_note
6144
6171
 
6145
6172
  **Resuming an interrupted run.** A long `baker canvas run` (multi-clip video) that is killed mid-render — session end, sandbox pause — leaves a marker under the outputs dir. The next `baker canvas run` of the same canvas automatically **resumes** that run: it reuses the run id so still-running billed jobs re-attach instead of being abandoned and re-billed, and completed nodes come from the cache. A live render keeps its marker's heartbeat fresh, so a second `run` of the same canvas is refused while it is alive (checked with `kill(pid, 0)` plus the heartbeat, on Linux and macOS alike). Resume also works from a **different workspace or a fresh sandbox**: when no local marker survives, the run history is consulted for a resumable run of the same source (canvas, `prompt.json`, scenes, compositions and formats), and it is adopted when the backend says it may be: interrupted, stopped at a checkpoint, or a `running` row whose keepalive is older than the backend's staleness threshold. Ctrl-C / SIGTERM aborts gracefully — no new nodes dispatch, a resumable snapshot is flushed, and the marker survives. A clean completion (or a handled failure) clears the marker, so a normal re-run starts a fresh generation. Force a new run with `--fresh`, or pin a specific run with `--run-id <id>` (also the escape hatch to adopt a run that is reported as concurrently live). Independent same-layer nodes (e.g. video clips) fan out in parallel up to `--parallel`/`--concurrency` (default 8; env `BAKER_CANVAS_CONCURRENCY`).
6146
6173
 
6147
- **Static ads: the run corrects a blocking defect itself.** When the review of a static ad finds a blocking defect, `baker canvas run` makes up to 3 more renders (`AUTO_FIX_ROUNDS` in `static-autofix.ts`) before it reports, correcting each defect at the layer that causes it: words or a logo where an interface covers them (Reels, Stories) or the frame cuts them are **placed and extended** (`withExtendedSizes`): a `static_place` node reads where everything sits and shrinks the ad (to 60% at most) into the size's safe area, and a `static_extend_merge` node has the ad's own model paint the margins that leaves and keeps its painting as one picture across the whole frame, laying the ad's own pixels back only over the words, logo and buttons the placing read (padded and feathered, so no edge of the shrunk ad shows; the whole ad is laid back, as before, when nothing was read or the painting moved the words), so the model is never asked to move anything (a size already inside its area is passed on with nothing painted or billed, and one whose words sit too far out for a shrink to clear, or that the placing found inside its area while the review still blocks it, is laid out again instead, never placed the same way twice; a button is placed by its shape, its words grown by 0.7 of their height on every side, as the review judges it); a defect the spec asked for (a second subject, stars with no named source, a concept that does not read) and any defect of a native screen corrects the spec first (`static-spec-repair.ts`: a model rewrites `prompt.json` for those findings alone, every line of the copy kept word for word), then draws the ad again from it (a native screen redraws free); a picture wrong as a whole or in three places or more is made again from its brief, told what the last one got wrong, but only in a round with another after it unless the brief caused the defect; anything else on the picture is a `--fix` of the chosen picture for its own findings (`correctionOf`: the words to erase, the line to re-letter or add), naming what the last edit was already asked for, while each re-laid size the review flagged follows as an edit of its own last layout (`withSizesFollowingFix`), keeping what an earlier round fixed in it, and a size it found nothing blocking on is delivered as it was (`keep`, nothing in it made again or placed); anything else on a re-laid size alone edits just that size from its own last layout (`withRelayEdit`); sizes that do not show the same ad (`SIZES:`) are always the re-laid ones' fault, since every size follows the chosen picture, so they are laid out again to show exactly what it shows, never the picture edited to match them. A size a round did not touch (its file the same byte for byte) keeps the round before's verdict (`carryUnchanged`) and is not read again: the review reads only the sizes the round changed. Each correction is told what earlier rounds fixed so it keeps it right (`keptRules`), and starts from the best attempt so far: one that came out with more blocking defects than an earlier attempt is set aside and the earlier one corrected instead (`correctFrom`). Each round is one render (a fix, or one request per re-laid size) and prints `[autofix] round N of 3: …` on stdout; the final JSON's hints start with "Corrected automatically before this result, …" and its review is of the corrected version. Blocking findings left after the rounds keep the hints below. A round that would only repeat the correction that just left its defect in place (a chosen option, `--use-variant`, is only ever corrected) is not run: that version is reported as it is. `--no-autofix` reports after the first render.
6174
+ **Static ads: the run corrects a blocking defect itself.** When the review of a static ad finds a blocking defect, `baker canvas run` makes up to 3 more renders (`AUTO_FIX_ROUNDS` in `static-autofix.ts`) before it reports, correcting each defect at the layer that causes it: words or a logo where an interface covers them (Reels, Stories) or the frame cuts them are **placed and extended** (`withExtendedSizes`): a `static_place` node reads where everything sits and shrinks the ad (to 60% at most) into the size's safe area, and a `static_extend_merge` node has the ad's own model paint the margins that leaves and keeps its painting as one picture across the whole frame, laying the ad's own pixels back only over the words, logo and buttons the placing read (padded and feathered, so no edge of the shrunk ad shows; the whole ad is laid back, as before, when nothing was read or the painting moved the words), so the model is never asked to move anything (a size already inside its area is passed on with nothing painted or billed, and one whose words sit too far out for a shrink to clear, or that the placing found inside its area while the review still blocks it, is laid out again instead, never placed the same way twice; a button is placed by its shape, its words grown by 0.7 of their height on every side, as the review judges it); on a size cut from one picture, a halo, a seam, a box or patch behind the words or a smear beside the button that its words left has that size's words set again from scratch on the same picture (`--regenerate format_<size>`), never new pictures, even when the review types it as a defect of the picture; a defect the spec asked for (a second subject, stars with no named source, a concept that does not read) and any defect of a native screen corrects the spec first (`static-spec-repair.ts`: a model rewrites `prompt.json` for those findings alone, every line of the copy kept word for word), then draws the ad again from it (a native screen redraws free); a size that lost what stopped the scroll or the proof of its proven ad has the spec repaired toward that ad, told what of ours `concept.load_bearing` declares carries each (a repair may ground the Avatar the concept declares in an ad that cast nobody, never another person, and never takes that Avatar away), and when no repair is written the corrections stop (`[autofix] stopped`) with the hint to restore it as the plan decided or build the idea on another proven ad, the version never shown as done; a picture wrong as a whole or in three places or more is made again from its brief, told what the last one got wrong, but only in a round with another after it unless the brief caused the defect; anything else on the picture is a `--fix` of the chosen picture for its own findings (`correctionOf`: the words to erase, the line to re-letter or add), naming what the last edit was already asked for, while each re-laid size the review flagged follows as an edit of its own last layout (`withSizesFollowingFix`), keeping what an earlier round fixed in it, and a size it found nothing blocking on is delivered as it was (`keep`, nothing in it made again or placed); anything else on a re-laid size alone edits just that size from its own last layout (`withRelayEdit`); sizes that do not show the same ad (`SIZES:`) are always the re-laid ones' fault, since every size follows the chosen picture, so they are laid out again to show exactly what it shows, never the picture edited to match them. A size a round did not touch (its file the same byte for byte) keeps the round before's verdict (`carryUnchanged`) and is not read again: the review reads only the sizes the round changed. Each correction is told what earlier rounds fixed so it keeps it right (`keptRules`), and starts from the best attempt so far: one that came out with more blocking defects than an earlier attempt is set aside and the earlier one corrected instead (`correctFrom`). Each round is one render (a fix, or one request per re-laid size) and prints `[autofix] round N of 3: …` on stdout; the final JSON's hints start with "Corrected automatically before this result, …" and its review is of the corrected version. Blocking findings left after the rounds keep the hints below. A round that would only repeat the correction that just left its defect in place (a chosen option, `--use-variant`, is only ever corrected) is not run: that version is reported as it is. `--no-autofix` reports after the first render.
6148
6175
 
6149
- **Static ads: correct a version, or use another of its variants.** Correct a finished version with `--fix "<what to change>"`: one render takes that version (the last one, or `--from <run_id>`) as its first reference and changes only what you said, keeping the picture, the layout and every other word, and every size is made again from the corrected picture. **A correction grows on top of the version it starts from**: the run executes that version's own graph (its variants, the prefilter and pick, every earlier correction) with each of those steps pinned to the outputs that version recorded (free, never re-rendered, whatever `prompt.json` says now), then appends `edit_1` (the picture as its first reference, framed for the master as a variant is) and makes the sizes from it; a second correction appends `edit_2` on `edit_1`. `--use-variant` wires the chosen variant from the version's own `gen` as a `chosen` step, and a `--regenerate adapt_<size>` keeps the version's picture the same way. So the run record, and the dashboard's workflow of each version, show the whole history: options, pick, edits, sizes. The canvas file is never rewritten. Every static run keeps the graph it executed in the asset store (`graphUrl` on its run record, up to 4 MB), so a version rendered in another workspace ("Edit creative …" from a new chat, `--from <run_id>`) grows the same way, its steps pinned to the outputs its run record holds; only a run recorded before graphs were kept is corrected from its picture by URL. **A `prompt.json` changed only in its words, their positions or its colours** since the version shown is made the same way, as an edit of that version (`[edit]` in the output, the instruction read off the change); three new options are asked for only with `--regenerate static_variants`. A `--fix` whose defect is still blocking afterwards is recorded, and asking for it again with the same words exits 2 with `no_progress`. When every blocking finding is on re-laid-out sizes, the first hint says to lay out those sizes again (`--regenerate adapt_<size>`) before any `--fix`. Every static run's hints say what it cost in credits and what for. There is no render limit per creative. Use another variant with `--use-variant <sha256>` (`--from <run_id>`, default the last render): when the person asks in the chat for another of a version's variants over the judge's pick, every size is made again from that picture, and the only requests re-lay it out for each other size; `--regenerate adapt_9x16` lays out one size again from the same chosen picture when only that size came out wrong (after a `--fix` or `--use-variant`, from that corrected or chosen picture, so the size never brings back the uncorrected one; `--from <run_id>` names another version).
6176
+ **Static ads: correct a version, or use another of its variants.** Correct a finished version with `--fix "<what to change>"`: one render takes that version (the last one, or `--from <run_id>`) as its first reference and changes only what you said, keeping the picture, the layout and every other word, and every size is made again from the corrected picture. **A correction grows on top of the version it starts from**: the run executes that version's own graph (its variants, the prefilter and pick, every earlier correction) with each of those steps pinned to the outputs that version recorded (free, never re-rendered, whatever `prompt.json` says now), then appends `edit_1` (the picture as its first reference, framed for the master as a variant is) and makes the sizes from it; a second correction appends `edit_2` on `edit_1`. `--use-variant` wires the chosen variant from the version's own `gen` as a `chosen` step, and a `--regenerate format_<size>` (or `adapt_<size>`) keeps the version's picture the same way. So the run record, and the dashboard's workflow of each version, show the whole history: options, pick, edits, sizes. The canvas file is never rewritten. Every static run keeps the graph it executed in the asset store (`graphUrl` on its run record, up to 4 MB), so a version rendered in another workspace ("Edit creative …" from a new chat, `--from <run_id>`) grows the same way, its steps pinned to the outputs its run record holds; only a run recorded before graphs were kept is corrected from its picture by URL. **A `prompt.json` changed only in its words, their positions or its colours** since the version shown is made the same way, as an edit of that version (`[edit]` in the output, the instruction read off the change); three new options are asked for only with `--regenerate static_variants`. A `--fix` whose defect is still blocking afterwards is recorded, and asking for it again with the same words exits 2 with `no_progress`. When every blocking finding is on some sizes, the first hint says to make those sizes again (`--regenerate format_<size>` on one picture, `adapt_<size>` when laid out again) before any `--fix`. Every static run's hints say what it cost in credits and what for. There is no render limit per creative. Use another variant with `--use-variant <sha256>` (`--from <run_id>`, default the last render): when the person asks in the chat for another of a version's variants over the judge's pick, every size is made again from that picture, and the only requests re-lay it out for each other size; `--regenerate format_9x16` (`adapt_9x16` when laid out again for each size) makes one size again from the same chosen picture when only that size came out wrong (after a `--fix` or `--use-variant`, from that corrected or chosen picture, so the size never brings back the uncorrected one; `--from <run_id>` names another version).
6150
6177
 
6151
6178
  #### `baker canvas scaffold-video <video> [flags]`
6152
6179
 
@@ -6259,14 +6286,15 @@ Turn a source/inspiration image into a **runnable, self-validated static-ad canv
6259
6286
 
6260
6287
  **A library ad is read once for every company.** With `--source-ad-id` and the library's own picture (no `<image>`, `--context`, `--describe-model` or `--select-model`), both passes below come from `POST /api/ad-library/reference-read`: the backend reads the ad from Ad DNA's picture, grounded in its full DNA, and keeps the read for every company. The first build on an ad pays for it (~40 s); every later one, in any company, gets it at once and free. When the shared read cannot be had, the passes run here as before.
6261
6288
 
6262
- 1. **`image_describe`** (`~google/gemini-flash-latest`) — reverse-engineers the image (layout by what fills each region, copy verbatim, typefaces, capture in words, the `mechanism` and the `audience` it is built for) and writes it next to the canvas as **`prompt.json`**, an **ad spec** (`"schema": "baker-static-ad/3"`; `/2` still reads) you rewrite into the ad you want: `viewer` (who sees it and what they already know), `message` (the one thing it tells them, never printed), `copy` (each line with `lettering`: `in_scene`, written on something in the picture (`on`, `look`), or `designed`, set in the brand's face), `scene` (`description`, `look`: photo | designed | illustration, `capture` in words, `mood`, `layout`), `brand`, `colors` (each tied to an object, from the brand palette), `references` (one picture each, labelled by role: `PERSON_1`, `ANIMAL_1`, `PRODUCT_1`, `BADGE_1`, `PROP_1`), `logo` (and `logo_position`), `third_party_brands` (other brands the offer is about, a car brand on a car loan: `name`, `what`, and `logo` naming the `BADGE_n` reference of its logo; their logos may appear), an optional `direction`, the `mechanism` to rebuild for our brand, and in `/3`: `viewer.market` (`country`, `language`, `currency`), `brand_presence` (`standard` | `native`: a native disguise carries the logo as its sender and no big button), `recognition` (the kind of product a stranger must take it for at a glance, never the format), `native` (the ad is a screen people know, drawn exactly from HTML at every size by the free `static_native` node instead of painted: `x_post` (a post or a thread, with `reply_to`), `whatsapp`, `imessage`, `trustpilot`, `google_reviews`, `notes`, `slack`; on a 9:16 the app is drawn full screen as a phone shows it: status bar and app header pinned at the top, the reply bar and tab bar (or a keyboard under a chat or note) pinned at the bottom, the posts or messages as large as the clear band holds, and the frame's headline, caption and logo a card in the brand's colours under the app's header; a wall of reviews (`trustpilot`, `google_reviews`) takes up to 16 real reviews, the first two (`FEATURED_REVIEWS`) the ad's copy set whole in the safe area and the rest filling the whole frame behind them as large, sharp cards, turned and cut by its edges, because a wall wins on how many there are; a review longer than 160 characters is shown cut at a word with "…", and that cut text is the copy the review reads back; a chat (`whatsapp`, `imessage`) on a 9:16 never shrinks below about 62% of the phone scale: its earliest messages scroll up under the header, as the app does, the node's optional `scrolled` output lists the copy lines scrolled off that size, and the run review expects those lines nowhere on it; a logo file whose drawing runs off its own edge is set aside for a whole one, and a square mark where a wordmark goes is drawn larger; the run review never flags the app's own interface words (status bar, keyboard) as under Reels; those words ("Today", "Verified", "Post your reply") are printed in the viewer's language: Spanish, Portuguese and English as checked against the apps, any other written once by a text model and cached per language (`scripts/interface-words-evals`), English when it cannot; the image model renders only the screen's `photos`, each a plain phone photo of ordinary people of the market; adding the block switches an existing ad on its next run, `--fix` does not apply, an invented brand handle or a rating the Knowledge does not hold (either decimal mark) is refused as `native_screen_invalid`, and a photo of ours goes in as its `image`: a native photo takes no `avatar`, since nothing would cast it), a role on each third-party brand (`partner` | `proof` | `category_signal`), a reference's `image` (wired as a picture of ours) and a person's `avatar` (the company avatar cast), and `concept` (`why_it_wins` in five layers, `load_bearing` elements with `have`/`adapt`/`missing` and `ours`, `verdict` `use`|`adapt`|`reject`, `transfer_note`; seeded from `baker winning-ads fit`). Every render keeps the load-bearing elements; `validate`/`run` refuse a `reject` or a `missing` element with nothing named (`concept_does_not_fit`) and a rating, or a promised price, share, multiple or time, the Knowledge does not hold with that unit, or a superlative it does not make (`proof_without_source`), in any language or several in one ad: a text model reads each claim of the copy and of the Knowledge as a kind, a number and a unit (cached by text, billed with the next run), code compares them exactly, and the decision model (Jev) judges a superlative; with no model, every number the copy writes in digits must be in the Knowledge (`claim-check.ts`, eval: `scripts/claim-check-evals`); a line citing a review platform gets its real badge wired (Trustpilot, G2 and the like by name; Google, Google Play or the App Store when the line shows stars or a score, or the decision model reads it as citing them for reviews in any language, `scripts/review-citation-evals`). **You never write a model prompt**: every render prompt is compiled from this file for the model it runs on (short labelled sections for gpt-image, sentences with reasons for Gemini; each line quoted once; pictures numbered with one role each; colours from the brand; realism as capture cues; the safe area from its one owner; constraints last), on every `validate` and `run`, and shown on its node. A `prompt.json` written before the ad spec (the describe blueprint) is read through an adapter and keeps working. The source's own read (`source`, and the library's `reference`) stays as bookkeeping and is never sent to a model.
6289
+ 1. **`image_describe`** (`~google/gemini-flash-latest`) — reverse-engineers the image (layout by what fills each region, copy verbatim, typefaces, capture in words, the `mechanism` and the `audience` it is built for) and writes it next to the canvas as **`prompt.json`**, an **ad spec** (`"schema": "baker-static-ad/3"`; `/2` still reads) you rewrite into the ad you want: `viewer` (who sees it and what they already know), `message` (the one thing it tells them, never printed), `copy` (each line with `lettering`: `in_scene`, written on something in the picture (`on`, `look`), or `designed`, set in the brand's face), `scene` (`description`, `look`: photo | designed | illustration, `capture` in words, `mood`, `layout`), `brand`, `colors` (each tied to an object, from the brand palette), `references` (one picture each, labelled by role: `PERSON_1`, `ANIMAL_1`, `PRODUCT_1`, `BADGE_1`, `PROP_1`), `logo` (and `logo_position`), `third_party_brands` (other brands the offer is about, a car brand on a car loan: `name`, `what`, and `logo` naming the `BADGE_n` reference of its logo; their logos may appear), an optional `direction`, the `mechanism` to rebuild for our brand, and in `/3`: `viewer.market` (`country`, `language`, `currency`), `brand_presence` (`standard` | `native`: a native disguise carries the logo as its sender and no big button), `recognition` (the kind of product a stranger must take it for at a glance, never the format), `native` (the ad is a screen people know, drawn exactly from HTML at every size by the free `static_native` node instead of painted: `x_post` (a post or a thread, with `reply_to`), `whatsapp`, `imessage`, `trustpilot`, `google_reviews`, `notes`, `slack`; on a 9:16 the app is drawn full screen as a phone shows it: status bar and app header pinned at the top, the reply bar and tab bar (or a keyboard under a chat or note) pinned at the bottom, the posts or messages as large as the clear band holds, and the frame's headline, caption and logo a card in the brand's colours under the app's header; a wall of reviews (`trustpilot`, `google_reviews`) takes up to 16 real reviews, the first two (`FEATURED_REVIEWS`) the ad's copy set whole in the safe area and the rest filling the whole frame behind them as large, sharp cards, turned and cut by its edges, because a wall wins on how many there are; a review longer than 160 characters is shown cut at a word with "…", and that cut text is the copy the review reads back; a chat (`whatsapp`, `imessage`) on a 9:16 never shrinks below about 62% of the phone scale: its earliest messages scroll up under the header, as the app does, the node's optional `scrolled` output lists the copy lines scrolled off that size, and the run review expects those lines nowhere on it; a logo file whose drawing runs off its own edge is set aside for a whole one, and a square mark where a wordmark goes is drawn larger; the run review never flags the app's own interface words (status bar, keyboard) as under Reels; those words ("Today", "Verified", "Post your reply") are printed in the viewer's language: Spanish, Portuguese and English as checked against the apps, any other written once by a text model and cached per language (`scripts/interface-words-evals`), English when it cannot; the image model renders only the screen's `photos`, each a plain phone photo of ordinary people of the market; adding the block switches an existing ad on its next run, `--fix` does not apply, an invented brand handle or a rating the Knowledge does not hold (either decimal mark) is refused as `native_screen_invalid`, and a photo of ours goes in as its `image`: a native photo takes no `avatar`, since nothing would cast it), a role on each third-party brand (`partner` | `proof` | `category_signal`), a reference's `image` (wired as a picture of ours) and a person's `avatar` (the company avatar cast), and `concept` (`why_it_wins` in five layers, `load_bearing` elements with `have`/`adapt`/`missing` and `ours`, `verdict` `use`|`adapt`|`reject`, `transfer_note`; seeded from `baker winning-ads fit`). Every render keeps the load-bearing elements; `validate`/`run` refuse a `reject` or a `missing` element with nothing named (`concept_does_not_fit`), and a plan that drops what stops the scroll (`job: stop`) or the proof (`job: proof`): one left `impossible` or replaced with nothing named, replaced with an Avatar `references` does not ground or the cast does not name, or decided otherwise in prompt.json than in the thinking's decision lines under "What survives and what changes" (the fix names each element, and says to build on another proven ad when one cannot be ours) and a rating, or a promised price, share, multiple or time, the Knowledge does not hold with that unit, or a superlative it does not make (`proof_without_source`), in any language or several in one ad: a text model reads each claim of the copy and of the Knowledge as a kind, a number and a unit (cached by text, billed with the next run), code compares them exactly, and the decision model (Jev) judges a superlative; with no model, every number the copy writes in digits must be in the Knowledge (`claim-check.ts`, eval: `scripts/claim-check-evals`); a line citing a review platform gets its real badge wired (Trustpilot, G2 and the like by name; Google, Google Play or the App Store when the line shows stars or a score, or the decision model reads it as citing them for reviews in any language, `scripts/review-citation-evals`). **You never write a model prompt**: every render prompt is compiled from this file for the model it runs on (short labelled sections for gpt-image, sentences with reasons for Gemini; each line quoted once; pictures numbered with one role each; colours from the brand; realism as capture cues; the safe area from its one owner; constraints last), on every `validate` and `run`, and shown on its node. A `prompt.json` written before the ad spec (the describe blueprint) is read through an adapter and keeps working. The source's own read (`source`, and the library's `reference`) stays as bookkeeping and is never sent to a model.
6263
6290
  2. **element selection** (`~google/gemini-flash-latest`) — picks the **main, identity-critical** elements (the brand logo, a showcased product, a trust badge) **plus any foreground/hero person or animal** — the emotional focal point — even a generic one, because a free-generated face/muzzle reads as AI and grows artifacts; the emotional hero always gets a real-reference slot. When the advertiser's logo appears in **more than one lockup** (a square/icon **mark** and a horizontal **wordmark**), each is emitted as its **own** element (e.g. `LOGO_MARK`, `LOGO_WORDMARK`). The describe pass also records the ad's **typography** (each typeface's classification, a best-guess family, and its weight/case), which seeds the spec's `brand.typeface`. Background extras are dropped. Each element becomes a `references` entry in the spec, named by its role and naming the canvas slot it fills, so the file says which slot grounds which subject.
6264
6291
 
6265
6292
  It then scaffolds a canvas on which **the image model designs the finished ad**, holding only what `prompt.json` holds; no element is mandatory:
6266
6293
 
6267
- - Up to **three variants** (`--takes`, default 3) render on the model the router picks for the concept (today `openai/gpt-image-2.5-sunburst` at quality `xhigh`, about 45 s a picture against 80 s at `max`; `--gen-model` overrides), each a finished ad: the picture and every word of the copy. Each variant is **its own request** (tagged `static_variant_call`), run in parallel on its own direction (the scene as written; another picture of the same message, by the scene's look; another line leading, named by number so no word changes), and a `collect` tagged `static_variants` gathers them, on every model: one request with `n` costs the same (`n` is billed per picture) but gave fewer distinct options, so the graph never uses it. The brief quotes every line of `copy` verbatim and asks for each once; it is compiled again from `prompt.json` on every `validate` and `run`, so an edit re-keys exactly the renders it touches. The brand's **typeface** is shown to the model as a `font_specimen` set on the `designed` lines: a file in `src/brand/fonts/` (via `src/brand/tokens.json` when present), else the heading family `tokens.json` or `BRAND.md` names, fetched as a web font file; an `in_scene` line keeps its own lettering only on the real packaging, signage or screen its `on` names (handwriting on post-its, whiteboards or chalkboards, and a line naming no surface, are set as designed type). Each line's `role` sets its size: a price or stat (else the headline) leads, the `cta` is a large solid button, fine print is smallest. **The logo is optional**: the real file in `src/brand/logos/` goes to the model as a reference to reproduce once, at least a fifth of the frame wide, where it contrasts or on a small brand-colour plate, only when `prompt.json` has `"logo": true` (an older blueprint: an `advertiser_brand` entry in `brands_logos`) and the file exists; no logo is never an error, never a slot to fill and never a stand-in. Setting it false drops the logo on the next run; adding one to a canvas scaffolded without the file needs the file in `src/brand/logos/` and a re-scaffold. `prompt.json` also carries a **`brand`** block (ground, ink, accent, CTA and palette, from `src/brand/tokens.json` roles or `BRAND.md`); a colour outside it never reaches the model. The brief describes a complete ad at the master's shape and asks only for its edge margin (see below). `baker canvas set-prompt` refuses these nodes and names `prompt.json`.
6294
+ - Up to **three variants** (`--takes`, default 3) render on the model the router picks for the concept (today `openai/gpt-image-2.5-sunburst` at quality `xhigh`, about 45 s a picture against 80 s at `max`; `--gen-model` overrides), each a finished ad: the picture and every word of the copy. Each variant is **its own request** (tagged `static_variant_call`), run in parallel on its own direction (the scene as written; another picture of the same message, by the scene's look; another line leading, named by number so no word changes), and a `collect` tagged `static_variants` gathers them, on every model: one request with `n` costs the same (`n` is billed per picture) but gave fewer distinct options, so the graph never uses it. The brief quotes every line of `copy` verbatim and asks for each once; it is compiled again from `prompt.json` on every `validate` and `run`, so an edit re-keys exactly the renders it touches. The brand's **typeface** is shown to the model as a `font_specimen` set on the `designed` lines: a file in `src/brand/fonts/` (via `src/brand/tokens.json` when present), else the heading family `tokens.json` or `BRAND.md` names, fetched as a web font file; an `in_scene` line keeps its own lettering only on the real packaging, signage or screen its `on` names (handwriting on post-its, whiteboards or chalkboards, and a line naming no surface, are set as designed type). Each line's `role` sets its size: a price or stat (else the headline) leads, the `cta` is a large solid button, fine print is smallest. **The logo is optional**: when `prompt.json` has `"logo": true` (an older blueprint: an `advertiser_brand` entry in `brands_logos`) and the real file is in `src/brand/logos/`, that file is placed on every size pixel for pixel, never drawn by a model (`static_logo`, below): every render is told to draw no logo and keep its slot plain, the slot planned inside the size's safe area at the concept's `logo_position` (top-left when it names none). A creative scaffolded while the model drew the logo is moved onto the file on its next run (`[logo]` note). A file that does not open as a picture is handed to the model to draw from instead, and the run says so; no logo is never an error, never a slot to fill and never a stand-in. Setting it false drops the logo on the next run; adding one to a canvas scaffolded without the file needs the file in `src/brand/logos/` and a re-scaffold. `prompt.json` also carries a **`brand`** block (ground, ink, accent, CTA and palette, from `src/brand/tokens.json` roles or `BRAND.md`); a colour outside it never reaches the model. The brief describes a complete ad at the master's shape and asks only for its edge margin (see below). `baker canvas set-prompt` refuses these nodes and names `prompt.json`.
6268
6295
  - A **`static_prefilter`** node (tagged `variant_prefilter`) drops variants that fail the deterministic checks before the judge sees them, never all of them; its **judge** (`judge_model`, `judge_prompt`) compares the rest pairwise against the compiled brief when the checks tie (one variant passes through unjudged). A canvas scaffolded with a separate `image_select` judge (tagged `pick`) has it folded into the prefilter on its next run.
6269
- - **Every placement format is made from the chosen picture, and no size is a crop or a paste of another.** The pick goes to exact pixels as the master (an `imagemagick` node tagged `static_master`) at the lead size: the 4:5 when a feed size is delivered, else the square, else the first portrait size, rendered at the model's nearest ratio (3:4 on GPT Image) and filled to Meta's pixels. It is delivered as it is. Every other size (9:16, 1:1, 16:9, …) is **re-laid out** from the master by one request (`image_generate` node `adapt_<size>`, tagged `static_adapt_format`, on the router's `relayout` model, GPT Image 2.5 at quality `xhigh`): the master, the variants' own product and people pictures and the logo file as references and a brief compiled from `prompt.json` for that frame on every run (`static-adapt.ts`): the exact lines and their hierarchy, the same people (same face, same clothes), product and label, logo and none the chosen ad does not show, the words and the button re-scaled for the frame, the frame stated as zones inside its safe area, never the master shrunk onto a background, set as a square or cut. A `size_<size>` node (`static_size`) brings it to Meta's exact pixels (1:1 at 1080×1080; a landscape size the same way). Every 9:16 Reels or Stories covers then passes a free `static_safe_fit` node (`safe_<size>`), which shrinks and shifts the picture just enough (to 85% at most) to bring a word or the logo a few points past the band back inside it; a layout further out passes unchanged and the run lays it out again. The 9:16 is never extended instead (the 4:5 set whole in the clear band, its scene continued to the frame) nor set over its own blurred copy: rated in October 2026, the first showed the ad small inside a continued scene ("text super tiny") and the second "looks bad". The master shape is one decision in the code (`DEFAULT_MASTER_SHAPE`: `relayout`; the `9x16_band` and `4x5_adapt` shapes, kept for the bench, make the sizes by cutting or reframing the master, and the person rating them rejected every such way; a canvas from the retired band master, which extended a square master into the 9:16, is upgraded to the re-layout graph on its next run). Placing the logo file on every size instead of having the model draw it (`logo_composite` nodes) is a scaffold option, off until it is proven on the bench.
6296
+ - **Every placement format is made from the chosen picture, and no size is a crop or a paste of another.** On an ad laid out again for each size (a designed or interface ad, or `--master-shape relayout`), the pick goes to exact pixels as the master (an `imagemagick` node tagged `static_master`) at the lead size: the 4:5 when a feed size is delivered, else the square, else the first portrait size, rendered at the model's nearest ratio (3:4 on GPT Image) and filled to Meta's pixels. It is delivered as it is. Every other size (9:16, 1:1, 16:9, …) is **re-laid out** from the master by one request (`image_generate` node `adapt_<size>`, tagged `static_adapt_format`, on the router's `relayout` model, GPT Image 2.5 at quality `xhigh`): the master, the variants' own product and people pictures and the logo file as references and a brief compiled from `prompt.json` for that frame on every run (`static-adapt.ts`): the exact lines and their hierarchy, the same people (same face, same clothes), product and label, logo and none the chosen ad does not show, the words and the button re-scaled for the frame, the frame stated as zones inside its safe area, never the master shrunk onto a background, set as a square or cut. A `size_<size>` node (`static_size`) brings it to Meta's exact pixels (1:1 at 1080×1080; a landscape size the same way). Every 9:16 Reels or Stories covers then passes a free `static_safe_fit` node (`safe_<size>`), which shrinks and shifts the picture just enough (to 85% at most) to bring a word or the logo a few points past the band back inside it; a layout further out passes unchanged and the run lays it out again. The 9:16 is never extended instead (the 4:5 set whole in the clear band, its scene continued to the frame) nor set over its own blurred copy: rated in October 2026, the first showed the ad small inside a continued scene ("text super tiny") and the second "looks bad". The master shape is one decision in the code (`DEFAULT_MASTER_SHAPE`: `relayout`; the `9x16_band` and `4x5_adapt` shapes, kept for the bench, make the sizes by cutting or reframing the master, and the person rating them rejected every such way; a canvas from the retired band master, which extended a square master into the 9:16, is upgraded to the re-layout graph on its next run). Every size then gets the brand's logo file placed on it last (`logo_<size>`, a `static_logo` tagged `logo_composite`); on one picture, in the slot that size's words left empty (`format_<size>`'s `logo_slot`).
6297
+ - **One picture, every size (the default for a photo-led ad, ADR 0014).** A designed or interface ad (one keeping the whole or the layout of a proven chat, screenshot, table, grid or text-card ad, or lettering words in chat bubbles or on a screen) is laid out again for each size instead; the canvas records why (`metadata.master_shape_reason`) and the scaffold and `baker creatives make` print it (`master_shape`). The first `baker canvas run` of a creative never rendered routes it once more on the prompt.json written since (`[shape]` note), since make routed it on the proven ad's drafted words. Each variant is a picture drawn without the ad's designed words (`plate_<i>`, `static_variant_call`, at the widest ratio the model draws that every tall size can be cut from: 9:16 for Meta's 4:5 and 9:16), its brief stating where the people and products stay and where the words go, the scene's own words (a chat on a phone, a label) kept. Each picture gets its lead size's words (`lead_<i>`, a `static_format` tagged `static_lead`), so the options shown are finished ads; the prefilter chooses among them and passes on the chosen one's picture (`plate`), dropping a variant whose picture cannot give every size without cutting a face or the product before any words are paid for. Every size, the lead included (`format_<size>`, `static_format`), is then cut from that picture with its words set in the lead's look; the lead's replays its option's paid words, free. A size's words call is told each line's `look` whole at every trim level (a tag, a pill, the ✗ or ✓ beside it), and the marks a look names are no stray icon, so a before/after's ✗/✓ proof is set with its lines. A wide size beside tall ones is cut from the chosen picture extended sideways (`plate_wide`, `static_plate`). A change of the words or colours in `prompt.json` keeps the pictures and the choice and sets only the words again; `--fix` corrects the picture itself (`edit_<n>`) and every size's words are set on it again; `--regenerate format_<size>` sets one size's words again on the same picture; a run correcting itself sets a size's words again for a misread line or words under the interface, and corrects the picture only for a defect of the picture. An ad of a series led by an ad on one picture draws no picture: every size is cut from the lead's picture with its own words. An existing creative stays on the shape it was made on through every run, fix, edit, ad of its series and translation. Scaffolded again with `--master-shape plate`, an approved creative made before plates moves onto one picture: its approved size is kept byte for byte, every other size cut from its picture with the words painted out (`static_plate` `from_ad`), refused when more than a quarter of its frame would be painted. `baker canvas validate` refuses a size's words set on a finished ad (`STATIC_FORMAT_PLATE_SOURCE`) and a canvas mixing these sizes with the re-layout, safe-fit or placing steps (`STATIC_MIXED_SIZE_PIPELINE`).
6270
6298
  - Readers go by these roles, never by node ids: the run review, `--fix`, `--use-variant`, `--regenerate static_variants`, and the dashboard. A static ad scaffolded before this graph (`ad_a`/`ad_b`/`ad_c`, `pick`, re-lays `ad_4x5`/`ad_9x16`, `fit_4x5`) is **upgraded in place** on its next `validate` or `run`: prompt.json, every asset slot, the model and the formats are kept, the render part becomes this graph, and the creative is not reported as changed by the upgrade. Its old runs stay readable.
6271
6299
  - Detected elements are **never slots to fill**: the source's people, products, animals and badges are its world. The original image stays on the canvas as the record of the source; when `prompt.json` keeps its concept (`concept.verdict` `use` or `adapt`) the first renders are shown it **for its structure only**, and otherwise it never reaches a render. Only the people cast from a company Avatar and the brand's logo become pictures on the canvas; everything else is described in words (a picture of ours is added through a reference's `image`). A **person** with no avatar needs no slot and no casting: the render draws an invented, realistic person from the element's description. With `--avatar <handle>` (for an actor who recurs across ads) the slot ingests the Avatar's identity sheet and `prompt.json` describes that person in the Avatar's own words. A reference's `avatar` names who was cast and draws no face on its own: its face reaches the render only with a picture behind it (the `--avatar` slot, or the identity sheet URL from `baker avatars get <handle>` as the reference's `image`).
6272
6300
 
@@ -6276,7 +6304,7 @@ The canvas is validated before it is written. stdout returns `{ ok, canvas_path,
6276
6304
 
6277
6305
  **Who sees the ad.** `--target-adset <id>` names the Meta ad set the ad will run in. Before anything is billed, the viewer its targeting reaches is read exactly as `baker ads meta adsets --audience` reads it (`temperature`, what they already `knows`, `placements`) and written to `_definition.md` as `targetAdSet` and `viewer` (an existing definition keeps every other field). The sizes, the brief and the prefilter keep clear of that viewer's placements (`staticSafeArea`; `automatic`, a bare `facebook`/`instagram` or no placements is Advantage+, Reels included), and every `baker canvas run` checks the ad against that viewer. With no ad account, give the viewer from the Knowledge: `--viewer-temperature cold|warm|hot [--viewer-knows brand,offer,product] [--viewer-placements <placement,…>]`, recorded with `source: knowledge`; next to `--target-adset` they correct the read, and its `reasons` say so. A bad value exits 2 (`invalid_viewer`) before any billed pass; an ad set that cannot be read never stops the scaffold (a hint says why, and the sizes keep clear of every placement). With neither flag, a `viewer` (or `targetAdSet`) already in `_definition.md` is used as it is. stdout carries `target_adset`, `viewer` and a `checklist.viewer` line.
6278
6306
 
6279
- **After a run** the CLI reads the finished ad back on what makes a static win, not a checklist of elements: every delivered image's pixel shape against its format; **every line of `prompt.json`'s copy (in-scene and designed alike) read back with its box by a box reader and compared** (a line more than 2% off, missing, or joined by words nobody asked for is blocking; case and punctuation fold, as does a capital I read as an l (one stroke in a sans-serif), accents do not; words the picture adds are blocking only when set at the copy's usual size or making a claim (a figure, a price, an offer), and otherwise a note, as a screen's code, a poster or a mug in the scene, except a price (a currency sign beside a figure) the copy does not hold, blocking at any size and blurred by the correction, the document it is on kept; every render is asked for no readable prices on a bill, quote, receipt, screen or price tag beyond the copy; a copy line is "on the ad twice" only when most of its words repeat, never a word or two echoed on a prop; on a native screen, which code typesets from the spec, a line read differently is the reader's error and only a missing one counts); **the ad's own copy and its logo measured against the format's safe area** (`staticSafeArea`, the one owner of those areas; `must-show.ts` decides what is measured: never what the scene prints, nor a copy line printed again in the scene while the line itself sits clear). On a 9:16, which runs in Stories and Reels alike, what Stories' header or bottom bar covers (and any other app's interface named) is said as "where Stories and Reels cover it" ("where Reels covers it" for an ad set that runs only in Reels) and blocks for the logo, the button, the headline, the figure and the offer, while a supporting line (body, caption, label, small print) there is a note; what only Reels' taller footer covers is one note, and only for the lead line, since Stories shows it and the 9:16 is laid out in Stories' band; words merely close to where an app draws are no finding. The steps that place a size clear of an interface (`static_safe_fit`, `static_place`) are told the same copy (`prompt.json`'s lines, their roles, and the brand's name and the logo's words, a wordmark read close to them counting as the logo) and move the ad for those alone, a supporting line included only where the frame cuts it; on a feed image such as a 4:5, only a design margin, so words close to the edge are a warning and only words the frame cuts are blocking); a copy line written over two lines (`"15%\noff"`) is matched part by part wherever the reader finds each; designed type in a colour far from the brand palette is a warning; supporting lines too small to read on a phone are one note per size; the main line set smaller than a supporting one is a note, the brand's wordmark never counted as part of a line that starts with its name; the logo set twice is a note, a far smaller mark printed on something in the scene (a hoodie, a bag) is not. When the copy names a real person ("Lautaro Suarez, CTO at Vibiz", "田中 美咲、Acme 創業者"; read by a text model in any language, cached by copy, `scripts/named-people-evals`), the run casts them as themselves before it renders (`baker avatars research --create`, their avatar's sheet added to `prompt.json` `references` as a `PERSON_n`), and a face shown as a named person the ad has no photo of is blocking. When the reader cannot answer, the vision pass transcribes the copy instead and judges the safe zones by eye. Then one vision pass for clipping, overlaps, artifacts, one dominant idea, the brand with the logo covered and the concept's mechanisms (each finding typed by the model with the item it answers, what it is about, what is wrong and the edges that cut it, which the grading and the automatic correction read instead of its words), with every format shown a second time at phone-feed thumbnail size (240px wide, same call): a lead message unreadable at that size is blocking. A missing logo, CTA or copy is never a finding; a logo that is drawn and broken is. stdout carries `verdict` (`ready` | `ready_with_notes` | `needs_fixes` | `not_reviewed`), `judge` (the per-candidate scores) and hints that end with what the run made; the findings are stored on the run as its `review`. `needs_fixes` means the ad is not done even though every node completed, and the run is recorded with `presentable: false` so it is never shown as a version; every fix is an edit to `prompt.json` and a re-run (wrong words: the lines in `copy`; wrong picture: the `scene`; a bad roll: `--regenerate static_variants`; one size wrong while the chosen picture is right: `--regenerate adapt_<size>`, which re-lays it out, named in the hints); a blocking defect is first corrected by the run itself (`--autofix`, above). The checks rank the variants before the pick and the judge only breaks an exact tie, comparing pairwise against the compiled brief, knowing the brand and the viewer; every variant stays on offer to the person in Baker. Within one chat turn an ad gets two runs you start (each with its automatic corrections) and about 12 minutes in all: a correction round that would take it past that is not started (`[autofix] not started`), the version shown as it stands, and no render starts once it is spent; once the ad is `ready` or `ready_with_notes` only a correction of it starts (`--fix`, `--regenerate adapt_<size>`, or an edit of its words or colours), within the same two runs, and anything else is refused (`CONFLICT`, exit 2) with what to show instead; the person's next message starts a new turn (`turn-renders.ts`). When a defect still stands after the automatic rounds, the hints say to fix it with a `--fix`, then by changing the spec or the approach, and if it still cannot be fixed to show the best version and name what is left in one plain sentence, without a question.
6307
+ **After a run** the CLI reads the finished ad back on what makes a static win, not a checklist of elements: every delivered image's pixel shape against its format; **every line of `prompt.json`'s copy (in-scene and designed alike) read back with its box by a box reader and compared** (a line more than 2% off, missing, or joined by words nobody asked for is blocking; case and punctuation fold, as does a capital I read as an l (one stroke in a sans-serif), accents do not; words the picture adds are blocking only when set at the copy's usual size or making a claim (a figure, a price, an offer), and otherwise a note, as a screen's code, a poster or a mug in the scene, except a price (a currency sign beside a figure) the copy does not hold, blocking at any size and blurred by the correction, the document it is on kept; every render is asked for no readable prices on a bill, quote, receipt, screen or price tag beyond the copy; a copy line is "on the ad twice" only when most of its words repeat, never a word or two echoed on a prop; on a native screen, which code typesets from the spec, a line read differently is the reader's error and only a missing one counts); **the ad's own copy and its logo measured against the format's safe area** (`staticSafeArea`, the one owner of those areas; `must-show.ts` decides what is measured: never what the scene prints, nor a copy line printed again in the scene while the line itself sits clear). On a 9:16, which runs in Stories and Reels alike (Advantage+, or both named), what either covers (Stories' header and reply bar, Reels' caption and the buttons down its right side, `blockingArea`, from `AD_PLACEMENTS`; and any other app's interface named) blocks for the logo, the button, the headline, the figure and the offer, said as "where Stories and Reels cover it", or "where Reels' caption and buttons cover it" for what Stories shows ("where Reels covers it" for an ad set that runs only in Reels), while a supporting line (body, caption, label, small print) there is a note; words merely close to where an app draws are no finding. The plate's words zone, the words and re-layout briefs, the code move of the words (up to a quarter of the frame) and the safe fit keep to the same band. The steps that place a size clear of an interface (`static_safe_fit`, `static_place`) are told the same copy (`prompt.json`'s lines, their roles, and the brand's name and the logo's words, a wordmark read close to them counting as the logo) and move the ad for those alone, a supporting line included only where the frame cuts it; on a feed image such as a 4:5, only a design margin, so words close to the edge are a warning and only words the frame cuts are blocking); a copy line written over two lines (`"15%\noff"`) is matched part by part wherever the reader finds each; designed type in a colour far from the brand palette is a warning; supporting lines too small to read on a phone are one note per size; the main line set smaller than a supporting one is a note, the brand's wordmark never counted as part of a line that starts with its name; the logo set twice is a note, a far smaller mark printed on something in the scene (a hoodie, a bag) is not. When the copy names a real person ("Lautaro Suarez, CTO at Vibiz", "田中 美咲、Acme 創業者"; read by a text model in any language, cached by copy, `scripts/named-people-evals`), the run casts them as themselves before it renders (`baker avatars research --create`, their avatar's sheet added to `prompt.json` `references` as a `PERSON_n`), and a face shown as a named person the ad has no photo of is blocking. An ad that casts nobody (no person picture, and its scene names nobody or rules people out) blocks any person drawn in it, a tiny round avatar in an interface aside; a brief trimmed to fit its word budget says again what its scene ruled out ("no people, no phone"). A correction of the spec never puts a person in an ad that casts nobody. When the reader cannot answer, the vision pass transcribes the copy instead and judges the safe zones by eye. Then one vision pass for clipping, overlaps, artifacts, one dominant idea, the brand with the logo covered and the concept's mechanisms; an ad built on a proven ad is checked against that ad's picture for each element it must keep, and what stops the scroll and the proof (`job: stop | proof`) are asked one by one for every size (`keeps`): a size that lost either is blocking whatever the model graded its words, typed with the job it did, and no second look lifts it (`vitalFindings`) (each finding typed by the model with the item it answers, what it is about, what is wrong and the edges that cut it, which the grading and the automatic correction read instead of its words), with every format shown a second time at phone-feed thumbnail size (240px wide, same call): a lead message unreadable at that size is blocking. **Every size a model drew apart from the lead** (each `adapt_<size>`, or a size cut from a picture painted wider) **is compared with it**: people, faces and animals counted on two reads of the subject boxes, and a side-by-side vision comparison (catalog role `sizeMatch`) for the same product and people, nothing shown twice, never the lead boxed inside a bigger frame; a difference is one blocking `<size>: …` finding (item `sizes`) that the automatic correction answers by making that size again (painting `plate_wide` again when the size is cut from it), and a size that could not be compared is named in the hints. A size cut from the chosen picture (`format_<size>`) is consistent by construction and is not compared. A missing logo, CTA or copy is never a finding; a logo that is drawn and broken is. **The delivered logo is held to the brand's file on the pixels**: where it was placed from the file, the size at the composite's box must show the file's own pixels (98% of them), and the composite's own check must find the logo and the headline wholly inside the frame and its safe area with no line of the copy under the logo; where a model drew it, the logo is found by its shape among the file's colourways and blocked when the frame cuts it or it is not the file as it is (Red Points' "POIПTS" drawn as "POINTS"). Each is a blocking `<size>: …` finding the automatic correction answers by setting that size's words again. stdout carries `verdict` (`ready` | `ready_with_notes` | `needs_fixes` | `not_reviewed`), `judge` (the per-candidate scores) and hints that end with what the run made; the findings are stored on the run as its `review`. `needs_fixes` means the ad is not done even though every node completed, and the run is recorded with `presentable: false` so it is never shown as a version; every fix is an edit to `prompt.json` and a re-run (wrong words: the lines in `copy`; wrong picture: the `scene`; a bad roll: `--regenerate static_variants`; one size wrong while the chosen picture is right: `--regenerate format_<size>`, which sets its words again, or `adapt_<size>` on an ad laid out again for each size, named in the hints); a blocking defect is first corrected by the run itself (`--autofix`, above). The checks rank the variants before the pick and the judge only breaks an exact tie, comparing pairwise against the compiled brief, knowing the brand and the viewer; every variant stays on offer to the person in Baker. Within one chat turn an ad gets two runs you start (each with its automatic corrections) and about 12 minutes in all: a correction round that would take it past that is not started (`[autofix] not started`), the version shown as it stands, and no render starts once it is spent; once the ad is `ready` or `ready_with_notes` only a correction of it starts (`--fix`, one size's `--regenerate format_<size>` or `adapt_<size>`, or an edit of its words or colours), within the same two runs, and anything else is refused (`CONFLICT`, exit 2) with what to show instead; the person's next message starts a new turn (`turn-renders.ts`). When a defect still stands after the automatic rounds, the hints say to fix it with a `--fix`, then by changing the spec or the approach, and if it still cannot be fixed to show the best version and name what is left in one plain sentence, without a question.
6280
6308
 
6281
6309
  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.
6282
6310
 
@@ -6312,7 +6340,7 @@ baker canvas run ./static-ad.canvas.json
6312
6340
 
6313
6341
  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`.
6314
6342
 
6315
- 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.
6343
+ 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 thinks the ad through in `_definition.md` first (the `## Thinking` outline `creatives make` writes), then writes `prompt.json` from its plan (Markdown is not a render input). `creatives make` returns this think-first hint before the one that writes the ad. Choose the represented role and inspect existing Avatars before creating a new actor; a real founder or customer keeps their verified identity.
6316
6344
 
6317
6345
  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.
6318
6346
 
@@ -6327,7 +6355,7 @@ baker canvas run --slug spring-offer --force-remote --regenerate gen
6327
6355
 
6328
6356
  #### `baker canvas stale`
6329
6357
 
6330
- Lists the creatives edited since their last render in this workspace, each with the command to re-render it: `{ ok, data: { stale: [{ slug, canvasPath, renderedRunId, sourceSha }] }, hints? }`. "Edited" is one content fingerprint of what the models would be sent: the canvas as it renders (after the copy, logo and scene projections), `prompt.json` without its bookkeeping (`reference`, `source_context`, `notes`), every `scenes/sNN.json`, every local composition directory the canvas renders, and the `formats` in `_definition.md`, so a change counts however it was made and reformatting a JSON file is not a change. The fingerprint is prefixed `v2:`; a render fingerprinted by the older rule (a bare sha) is never reported stale, so upgrading the CLI re-renders nothing. A completed `run` records the fingerprint it drew in `canvas/.rendered/<slug>.json`, and a render attempt of the current source is not asked for again until the source moves. Creatives never rendered in this workspace, and ones with an unfilled `[TODO]` asset slot, are not listed. Read-only, offline, free. The scaffold's turn-end reminder and its `validate-creative-renders` check read this list (at Publish it is a warning: Publish ships the last version the person was shown and never renders); the same fingerprint is what `sync-definition` and `run` post as `sourceSha`.
6358
+ Lists the creatives edited since their last render in this workspace, each with the command to re-render it: `{ ok, data: { stale: [{ slug, canvasPath, renderedRunId, sourceSha }] }, hints? }`. "Edited" is one content fingerprint of what the models would be sent: the canvas as it renders (after the copy, logo and scene projections), `prompt.json` without its bookkeeping (`reference`, `source_context`, `notes`), every `scenes/sNN.json`, every local composition directory the canvas renders, and the `formats` in `_definition.md`, so a change counts however it was made and reformatting a JSON file is not a change. The fingerprint is prefixed `v3:`; a render fingerprinted by an older rule (a bare sha, or `v2:`) is never reported stale, so upgrading the CLI re-renders nothing (a creative edited before the upgrade is not listed until it is rendered again). A completed `run` records the fingerprint it drew in `canvas/.rendered/<slug>.json`, and a render attempt of the current source is not asked for again until the source moves. Creatives never rendered in this workspace, and ones with an unfilled `[TODO]` asset slot, are not listed. Read-only, offline, free. The scaffold's turn-end reminder and its `validate-creative-renders` check read this list (at Publish it is a warning: Publish ships the last version the person was shown and never renders); the same fingerprint is what `sync-definition` and `run` post as `sourceSha`.
6331
6359
 
6332
6360
  #### `baker canvas inspect <run_id> [--thumbnails]`
6333
6361
 
@@ -6810,8 +6838,8 @@ import {
6810
6838
  Save a finished canvas render as a Baker creative: a static image (PNG, JPG, WebP) or a finished video (MP4, MOV, WebM). Choose and save the best finished version without waiting for the user to choose, including in the turn that rendered it. Saving pins the version as the agent's choice without recording user approval or putting an ad live. An image uploads to the Baker image library (tagged `creative`); a video uploads to the Baker video library and is saved once it plays (bounded at 3 minutes). A creative record is created/updated, and the command prints the creative reference JSON the dashboard renders in chat.
6811
6839
 
6812
6840
  ```bash
6813
- baker creatives publish --title "Spring Offer 4x5" \
6814
- --slug spring-offer-4x5 --run-id r_01JXYZ... --output 4:5 \
6841
+ baker creatives publish --title "Spring Offer" \
6842
+ --slug spring-offer --run-id r_01JXYZ... \
6815
6843
  --source-reference-url "https://www.facebook.com/ads/library/?id=..."
6816
6844
  # or from a local file
6817
6845
  baker creatives publish ./canvas/<run_id>/<final>.png --title "Spring Offer 4x5" --slug spring-offer-4x5 --run-id r_01JXYZ...
@@ -6826,11 +6854,11 @@ baker creatives publish ./canvas/<run_id>/final.mp4 --title "Spring Offer Reel"
6826
6854
  | `--title <text>` | Required. Human title for the creative. |
6827
6855
  | `--slug <slug>` | Creative slug (`src/creatives/<slug>/`): attaches the image or video to that creative's row, marks it `published`. Required for a video. With `--run-id` an image publish also sets `status: published` in the creative's `_definition.md` (`definitionStatus` in the output). |
6828
6856
  | `--run-id <r_…>` | Pins the finished generation from the creative's run history as the saved one. |
6829
- | `--output <label\|slot\|n>` | With `--run-id` and no file: which of the run's images to save when it made several (a label such as `4:5`, a slot, or a 1-based number). |
6857
+ | `--output <label\|slot\|n>` | With `--run-id` and no file: which of the run's sizes is the creative's cover (a label such as `9:16`, a slot, or a 1-based number). Every size is saved either way; the default cover is the lead. |
6830
6858
  | `--source-reference-url <url>` | Original reference ad URL, recorded on the creative. |
6831
6859
  | `--context <text>` | Optional describe context for the uploaded image or video. |
6832
6860
 
6833
- An image prints `{ ok, data: { creativeId, imageId, reference } }`. A video prints `{ ok, data: { creativeId, videoId, reference }, hints }`, where `reference.asset.kind` is `video` (with `videoId`, `muxPlaybackId`, the poster as `thumbnailUrl`, size and duration) and `hints` names the next step to put it in a Meta ad: `baker ads meta media upload --kind video --video-id <videoId>`.
6861
+ With `--run-id` and no file, every size the run made is uploaded, sha-verified, as one library set (`creative_sizes`, keyed `creative:<slug>:<runId>`, the lead first), and an image prints `{ ok, data: { creativeId, imageId, reference, sizes? }, hints? }`: `sizes` is `[{ format, imageId }]` when there were several, and the hint says which size goes to which placement (Meta: 4:5 for Feed, 9:16 for Stories and Reels; LinkedIn: the 1:1). A video prints `{ ok, data: { creativeId, videoId, reference }, hints }`, where `reference.asset.kind` is `video` (with `videoId`, `muxPlaybackId`, the poster as `thumbnailUrl`, size and duration) and `hints` names the next step to put it in a Meta ad: `baker ads meta media upload --kind video --video-id <videoId>`.
6834
6862
 
6835
6863
  Without `--slug` an image behaves as before (one creative record per published image). With `--slug` it upserts the repo-convention row — the same one the dashboard's Creatives tab and the `src/creatives/{slug}/` folder describe — so publish, repo sync, and run history all land on a single record regardless of order.
6836
6864
 
@@ -0,0 +1,49 @@
1
+ import {
2
+ handleMetaError,
3
+ resolveAccountIdArg
4
+ } from "./chunk-OP7DNHD2.js";
5
+ import {
6
+ writeAdsJson
7
+ } from "./chunk-SWL4AAPP.js";
8
+ import {
9
+ NO_CACHE_ARG
10
+ } from "./chunk-K3TNTBZJ.js";
11
+ import {
12
+ apiGet
13
+ } from "./chunk-XDZVBX6L.js";
14
+ import "./chunk-N5O67GK5.js";
15
+ import "./chunk-EE72SSB2.js";
16
+ import "./chunk-WNSE7N75.js";
17
+ import "./chunk-YQSBHWOI.js";
18
+
19
+ // src/commands/ads/meta/account.ts
20
+ import { defineCommand } from "citty";
21
+ var accountCommand = defineCommand({
22
+ meta: {
23
+ name: "account",
24
+ description: `Show single Meta ad account detail (currency, timezone, balance, business).
25
+
26
+ Examples:
27
+ baker ads meta account --account-id act_123
28
+ BAKER_META_AD_ACCOUNT_ID=act_123 baker ads meta account`
29
+ },
30
+ args: {
31
+ "account-id": { type: "string", description: "Meta ad account ID (act_...)" },
32
+ "no-cache": NO_CACHE_ARG
33
+ },
34
+ run: async ({ args }) => {
35
+ const accountId = resolveAccountIdArg(args);
36
+ try {
37
+ const params = { "account-id": accountId };
38
+ if (args["no-cache"]) params["skip-cache"] = "true";
39
+ const data = await apiGet("/api/ads/meta/account", params);
40
+ writeAdsJson({ ok: true, data });
41
+ } catch (err) {
42
+ handleMetaError(err);
43
+ }
44
+ }
45
+ });
46
+ export {
47
+ accountCommand
48
+ };
49
+ //# sourceMappingURL=account-7LUQWY6Q.js.map
@@ -0,0 +1,79 @@
1
+ import {
2
+ csvOrJson,
3
+ handleLinkedinError,
4
+ resolveAccountIdArg
5
+ } from "./chunk-RLS5OPPZ.js";
6
+ import {
7
+ writeAdsJson,
8
+ writeAdsOutput
9
+ } from "./chunk-SWL4AAPP.js";
10
+ import {
11
+ NO_CACHE_ARG
12
+ } from "./chunk-K3TNTBZJ.js";
13
+ import "./chunk-FRK7SSEH.js";
14
+ import "./chunk-GXDLWBOY.js";
15
+ import "./chunk-GIWHHCD6.js";
16
+ import "./chunk-XQIOCIDO.js";
17
+ import "./chunk-ML7DLFFY.js";
18
+ import {
19
+ apiGet
20
+ } from "./chunk-XDZVBX6L.js";
21
+ import "./chunk-N5O67GK5.js";
22
+ import "./chunk-EE72SSB2.js";
23
+ import "./chunk-WNSE7N75.js";
24
+ import "./chunk-YQSBHWOI.js";
25
+
26
+ // src/commands/ads/linkedin/account.ts
27
+ import { defineCommand } from "citty";
28
+ var accountDetailCommand = defineCommand({
29
+ meta: {
30
+ name: "detail",
31
+ description: `Single LinkedIn ad account detail (currency, status, type).
32
+
33
+ Examples:
34
+ baker ads linkedin account --account-id 503001492
35
+ baker ads linkedin account --account-urn urn:li:sponsoredAccount:503001492 --output md`
36
+ },
37
+ args: {
38
+ "account-id": { type: "string", description: "Numeric account ID or urn:li:sponsoredAccount:N" },
39
+ "account-urn": { type: "string", description: "Alias for --account-id" },
40
+ "no-cache": NO_CACHE_ARG,
41
+ output: { type: "string", description: "json|csv|jsonl|md", default: "json" }
42
+ },
43
+ run: async ({ args }) => {
44
+ const accountId = resolveAccountIdArg(args);
45
+ try {
46
+ const params = { "account-id": accountId };
47
+ if (args["no-cache"]) params["skip-cache"] = "true";
48
+ const data = await apiGet("/api/ads/linkedin/account", params);
49
+ const fmt = csvOrJson(args);
50
+ if (fmt !== "json") {
51
+ writeAdsOutput([data], fmt);
52
+ return;
53
+ }
54
+ writeAdsJson({ ok: true, data });
55
+ } catch (err) {
56
+ handleLinkedinError(err);
57
+ }
58
+ }
59
+ });
60
+ var accountCommand = defineCommand({
61
+ meta: {
62
+ name: "account",
63
+ description: `LinkedIn ad account: its detail, and the settings that apply across every ad set in it.
64
+
65
+ Examples:
66
+ baker ads linkedin account --account-id 503001492 \u2014 currency, status, type
67
+ baker ads linkedin account url-params --param utm_source=linkedin \u2014 UTMs for every ad in the account`
68
+ },
69
+ subCommands: {
70
+ detail: accountDetailCommand,
71
+ "url-params": () => import("./write-commands-E7JOB4HX.js").then((m) => m.accountUrlParamsCommand)
72
+ },
73
+ args: accountDetailCommand.args,
74
+ default: "detail"
75
+ });
76
+ export {
77
+ accountCommand
78
+ };
79
+ //# sourceMappingURL=account-VH2AATWI.js.map
@@ -0,0 +1,80 @@
1
+ import {
2
+ CHATGPT_ADS_REFERENCE,
3
+ runChatgptRead
4
+ } from "./chunk-IG627WWY.js";
5
+ import "./chunk-SWL4AAPP.js";
6
+ import {
7
+ apiGet
8
+ } from "./chunk-XDZVBX6L.js";
9
+ import "./chunk-N5O67GK5.js";
10
+ import "./chunk-EE72SSB2.js";
11
+ import {
12
+ registerSchema
13
+ } from "./chunk-WNSE7N75.js";
14
+ import "./chunk-YQSBHWOI.js";
15
+
16
+ // src/commands/ads/chatgpt/account.ts
17
+ import { defineCommand } from "citty";
18
+ registerSchema({
19
+ command: "ads.chatgpt.account",
20
+ description: "The connected ChatGPT Ads account: name, currency, timezone, status, and the brand and account reviews that decide whether anything in it can serve.",
21
+ args: {
22
+ full: { type: "boolean", description: "Return ChatGPT Ads' own account object", required: false }
23
+ }
24
+ });
25
+ function accountHints(account) {
26
+ const hints = [];
27
+ if (account.brandReview.status !== "approved") {
28
+ const reason = account.brandReview.reason ? ` (${account.brandReview.reason})` : "";
29
+ hints.push(
30
+ `Brand review is ${account.brandReview.status}${reason}: nothing in this account serves until it is approved. Fix it in ChatGPT Ads Manager before changing campaigns.`
31
+ );
32
+ }
33
+ if (account.accountReview && account.accountReview.status !== "approved") {
34
+ hints.push(`A separate account review is ${account.accountReview.status}; delivery can wait on it too.`);
35
+ }
36
+ if (account.status === "paused") {
37
+ hints.push("The whole account is paused, so no campaign in it serves whatever its own status says.");
38
+ }
39
+ return hints;
40
+ }
41
+ var SHOW_ARGS = {
42
+ full: { type: "boolean", description: "Return ChatGPT Ads' own account object", required: false }
43
+ };
44
+ var accountShowCommand = defineCommand({
45
+ meta: {
46
+ name: "show",
47
+ description: "The connected ChatGPT Ads account. Example: baker ads chatgpt account"
48
+ },
49
+ args: SHOW_ARGS,
50
+ run: async ({ args }) => {
51
+ await runChatgptRead(
52
+ CHATGPT_ADS_REFERENCE.account,
53
+ () => apiGet("/api/ads/chatgpt/account", args.full ? { full: "true" } : void 0),
54
+ (account) => args.full ? [] : accountHints(account)
55
+ );
56
+ }
57
+ });
58
+ var accountCommand = defineCommand({
59
+ meta: {
60
+ name: "account",
61
+ description: `The connected ChatGPT Ads account. Start here: currency and timezone for every figure, and whether reviews let anything serve.
62
+
63
+ Examples:
64
+ baker ads chatgpt account
65
+ baker ads chatgpt account --full
66
+ baker ads chatgpt account update --favicon-url https://example.com/icon.png \u2014 staged; applies on publish`
67
+ },
68
+ subCommands: {
69
+ show: accountShowCommand,
70
+ update: () => import("./account-writes-4N2MA2ZR.js").then((m) => m.accountUpdateCommand)
71
+ },
72
+ // A parent must never declare `run`: citty falls through to it after the matched subcommand.
73
+ args: SHOW_ARGS,
74
+ default: "show"
75
+ });
76
+ export {
77
+ accountCommand,
78
+ accountHints
79
+ };
80
+ //# sourceMappingURL=account-Z65CPOWE.js.map