@koda-sl/baker-cli 0.567.0 → 0.569.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 (1031) hide show
  1. package/README.md +10 -9
  2. package/dist/account-MYM2QNFO.js +82 -0
  3. package/dist/account-OUKPRB7C.js +139 -0
  4. package/dist/account-YJ2NNQYP.js +82 -0
  5. package/dist/account-assets-HOOPV5KR.js +290 -0
  6. package/dist/account-level-3QWMJTZQ.js +611 -0
  7. package/dist/account-reads-RKK5BA6L.js +219 -0
  8. package/dist/account-users-GHMPDZUM.js +64 -0
  9. package/dist/account-writes-HEXKGWXC.js +68 -0
  10. package/dist/accounts-DDNEHXXT.js +713 -0
  11. package/dist/accounts-K7VD47FG.js +119 -0
  12. package/dist/accounts-OSVXKNSI.js +76 -0
  13. package/dist/accounts-S7CEGWJL.js +80 -0
  14. package/dist/accounts-SJOO4MQX.js +115 -0
  15. package/dist/actions-JIXQEVIN.js +55 -0
  16. package/dist/active-entities-4KQQSMRZ.js +103 -0
  17. package/dist/activecampaign-4ST7BMHO.js +938 -0
  18. package/dist/activities-FRA33VZZ.js +75 -0
  19. package/dist/ad-group-writes-O2OP4NJ6.js +172 -0
  20. package/dist/ad-groups-AMMMWHHX.js +70 -0
  21. package/dist/ad-writes-IWLRLR2E.js +176 -0
  22. package/dist/add-NZ6SEWUR.js +107 -0
  23. package/dist/add-ZH5HJBUN.js +305 -0
  24. package/dist/ads-7TQKAH4B.js +48 -0
  25. package/dist/ads-KLSFKXUE.js +79 -0
  26. package/dist/ads-L6SMNOUM.js +120 -0
  27. package/dist/adsets-R75LSEV5.js +182 -0
  28. package/dist/advertisers-T37UHN3C.js +123 -0
  29. package/dist/analytics-ITBXTEIC.js +2437 -0
  30. package/dist/analytics-WXLRAXXN.js +447 -0
  31. package/dist/asset-writes-DECROLE3.js +50 -0
  32. package/dist/assign-3CVJL35R.js +80 -0
  33. package/dist/audience-size-23UFSW6H.js +76 -0
  34. package/dist/audience-writes-VSC2BY4Y.js +327 -0
  35. package/dist/audiences-76S4WY7Q.js +280 -0
  36. package/dist/audiences-RN745R53.js +85 -0
  37. package/dist/audiences-V773XHP2.js +106 -0
  38. package/dist/audit-BIHMDO5K.js +88 -0
  39. package/dist/audit-OT42WBII.js +154 -0
  40. package/dist/autocomplete-T642QXBX.js +114 -0
  41. package/dist/avatars-33UGHCQA.js +38 -0
  42. package/dist/bid-pricing-UHU2HOAP.js +103 -0
  43. package/dist/brand-36YIAVGK.js +22 -0
  44. package/dist/brief-A5XFT6VH.js +543 -0
  45. package/dist/businesses-HECSW3EL.js +54 -0
  46. package/dist/campaign-groups-TAVIZR4L.js +99 -0
  47. package/dist/campaign-writes-72OPCWMG.js +176 -0
  48. package/dist/campaign-writes-AQ5T5TII.js +168 -0
  49. package/dist/campaigns-3P2UZWPD.js +111 -0
  50. package/dist/campaigns-D2V423FD.js +113 -0
  51. package/dist/campaigns-NW2H7SAR.js +78 -0
  52. package/dist/campaigns-S62KEFVL.js +130 -0
  53. package/dist/canvas-D7L7R4D2.js +46 -0
  54. package/dist/capabilities-YC36LOZU.js +147 -0
  55. package/dist/cards-RYQN5JLR.js +85 -0
  56. package/dist/catalogs-G33WT5PS.js +782 -0
  57. package/dist/catalogs-XLWWM2Q3.js +130 -0
  58. package/dist/changes-SI2W2PZL.js +167 -0
  59. package/dist/chatgpt-PPWG5WOF.js +47 -0
  60. package/dist/chats-M3RP62YO.js +584 -0
  61. package/dist/chats-M3RP62YO.js.map +1 -0
  62. package/dist/check-FQYDJ5RS.js +107 -0
  63. package/dist/chunk-23RVCBL7.js +709 -0
  64. package/dist/chunk-2JBPS2CV.js +89 -0
  65. package/dist/chunk-2N2R5YSN.js +156 -0
  66. package/dist/chunk-2Q7K4F4H.js +7899 -0
  67. package/dist/chunk-2Q7K4F4H.js.map +1 -0
  68. package/dist/chunk-2TS2ITSG.js +392 -0
  69. package/dist/chunk-2VW7S77J.js +399 -0
  70. package/dist/chunk-4OQG4HBG.js +274 -0
  71. package/dist/chunk-4PAGS7QH.js +76 -0
  72. package/dist/chunk-5C4RRCKM.js +69 -0
  73. package/dist/chunk-5ZHXLY7Y.js +219 -0
  74. package/dist/chunk-6E4KJMXO.js +51 -0
  75. package/dist/chunk-7CORYCEZ.js +142 -0
  76. package/dist/chunk-7TVVYP7K.js +217 -0
  77. package/dist/chunk-A4O3JL6D.js +26 -0
  78. package/dist/chunk-AC7WLPXF.js +8954 -0
  79. package/dist/chunk-AIK2HPDZ.js +312 -0
  80. package/dist/chunk-ANRTDNPQ.js +115 -0
  81. package/dist/chunk-B2BQ2Q64.js +287 -0
  82. package/dist/chunk-CORECUKT.js +685 -0
  83. package/dist/chunk-DRQI2CJJ.js +138 -0
  84. package/dist/chunk-E3PYHCQL.js +344 -0
  85. package/dist/chunk-EIDHLGQM.js +249 -0
  86. package/dist/chunk-FB5OU5HZ.js +169 -0
  87. package/dist/chunk-FGAXZ7ET.js +23 -0
  88. package/dist/chunk-FGTOOTYC.js +91 -0
  89. package/dist/chunk-FUIGPJZZ.js +1320 -0
  90. package/dist/chunk-GDRJS2QJ.js +197 -0
  91. package/dist/chunk-GUYFVYLY.js +170 -0
  92. package/dist/chunk-H3RCEM6L.js +61 -0
  93. package/dist/chunk-HH5WM5VA.js +430 -0
  94. package/dist/chunk-IID2MAYZ.js +91 -0
  95. package/dist/chunk-J32CYEIH.js +74 -0
  96. package/dist/chunk-JCDCIQMA.js +479 -0
  97. package/dist/chunk-JED4JBIK.js +225 -0
  98. package/dist/chunk-JIE45TKJ.js +962 -0
  99. package/dist/chunk-JSOOLOHP.js +468 -0
  100. package/dist/chunk-JWV7LUFM.js +547 -0
  101. package/dist/chunk-KH7AOX2R.js +930 -0
  102. package/dist/chunk-KJTMY7K6.js +224 -0
  103. package/dist/chunk-L5GFFF5G.js +604 -0
  104. package/dist/chunk-LQACNCAV.js +334 -0
  105. package/dist/chunk-MK4HCMEA.js +325 -0
  106. package/dist/chunk-MK4HCMEA.js.map +1 -0
  107. package/dist/chunk-MOKZ5XZO.js +455 -0
  108. package/dist/chunk-MXVP7Z54.js +163 -0
  109. package/dist/chunk-O3O7PXMK.js +103 -0
  110. package/dist/chunk-OLPABGH3.js +152 -0
  111. package/dist/chunk-QUSDGZFS.js +188 -0
  112. package/dist/chunk-QZSNT67Z.js +24026 -0
  113. package/dist/chunk-RF3TP643.js +288 -0
  114. package/dist/chunk-RIRSFFWA.js +191 -0
  115. package/dist/chunk-SIUYWLXB.js +494 -0
  116. package/dist/chunk-TYFXPC5D.js +1902 -0
  117. package/dist/chunk-TZTHGLWN.js +66 -0
  118. package/dist/chunk-UJTIMPEE.js +203 -0
  119. package/dist/chunk-UQZZM6UM.js +831 -0
  120. package/dist/chunk-UUXGSDUC.js +297 -0
  121. package/dist/chunk-UZHDNE6M.js +2209 -0
  122. package/dist/chunk-VJ4IOJQZ.js +19 -0
  123. package/dist/chunk-VMZ62LHB.js +1254 -0
  124. package/dist/chunk-VMZ62LHB.js.map +1 -0
  125. package/dist/chunk-W743FIEY.js +207 -0
  126. package/dist/chunk-X25XRSDP.js +57 -0
  127. package/dist/chunk-XRUB4KRV.js +191 -0
  128. package/dist/chunk-ZICB4OI5.js +106 -0
  129. package/dist/chunk-ZQ7JDYJB.js +454 -0
  130. package/dist/claim-CG3J32WS.js +200 -0
  131. package/dist/cli.js +35 -35
  132. package/dist/companies-DQKUPFWT.js +198 -0
  133. package/dist/company-4CD2OJLB.js +308 -0
  134. package/dist/complete-JSP6VQYI.js +84 -0
  135. package/dist/config-GIETKZGS.js +88 -0
  136. package/dist/connect-O5NRDY4Y.js +45 -0
  137. package/dist/conversation-YHKIB3CU.js +96 -0
  138. package/dist/conversion-report-JV6WZLB3.js +127 -0
  139. package/dist/conversion-upload-command-LXJYNNCK.js +439 -0
  140. package/dist/conversion-writes-NH3DKRQX.js +122 -0
  141. package/dist/conversions-E2KOXF3N.js +140 -0
  142. package/dist/conversions-TKPTZJVM.js +78 -0
  143. package/dist/copy-writes-FP3EI5LI.js +170 -0
  144. package/dist/create-DQ5X5AJT.js +62 -0
  145. package/dist/create-FNPFVKLT.js +239 -0
  146. package/dist/create-GXOFZCR5.js +135 -0
  147. package/dist/create-VAZ65QNJ.js +218 -0
  148. package/dist/creatives-5EIDMQ66.js +229 -0
  149. package/dist/creatives-N7V2BSOW.js +118 -0
  150. package/dist/creatives-QWNQDPNE.js +58 -0
  151. package/dist/credentials-VCERJE24.js +290 -0
  152. package/dist/critique-62QFBC33.js +1451 -0
  153. package/dist/critique-MSL6EU5V.js +232 -0
  154. package/dist/crm-J3SCOR4L.js +323 -0
  155. package/dist/crm-PMPO6QJE.js +229 -0
  156. package/dist/currency-NFKS6PRB.js +88 -0
  157. package/dist/custom-conversions-BFMGX2M3.js +128 -0
  158. package/dist/customers-EYVTYCGY.js +65 -0
  159. package/dist/delete-7A6T6XBD.js +69 -0
  160. package/dist/delete-I3W3M6T7.js +67 -0
  161. package/dist/delete-RZCW3Y6L.js +57 -0
  162. package/dist/demographics-CPMNWMBZ.js +141 -0
  163. package/dist/discard-I773LYVR.js +69 -0
  164. package/dist/discover-DDYFCWQL.js +172 -0
  165. package/dist/domain-7YO5HYHU.js +101 -0
  166. package/dist/download-IYK3UVBF.js +172 -0
  167. package/dist/draft-2EVXU5XB.js +134 -0
  168. package/dist/draft-2Z7EGKBO.js +220 -0
  169. package/dist/draft-4UTNI7BT.js +332 -0
  170. package/dist/draft-BCRW4RLR.js +578 -0
  171. package/dist/draft-BCRW4RLR.js.map +1 -0
  172. package/dist/draft-CQPEGNPP.js +374 -0
  173. package/dist/draft-CQWYTMSS.js +138 -0
  174. package/dist/draft-JYZA3BFD.js +260 -0
  175. package/dist/draft-VT7DAOB7.js +315 -0
  176. package/dist/experiment-YAX26BOO.js +1397 -0
  177. package/dist/experiments-ZEN2H3RV.js +236 -0
  178. package/dist/extract-ZIW5JFTY.js +143 -0
  179. package/dist/facets-RNC4D4UH.js +117 -0
  180. package/dist/feedback-2YJ24NV7.js +115 -0
  181. package/dist/feedback-X3GLQ2QF.js +114 -0
  182. package/dist/feedback-record-A5JLS3QY.js +269 -0
  183. package/dist/fetch-6XMRKLYH.js +204 -0
  184. package/dist/fit-BRJSLR7P.js +65 -0
  185. package/dist/flows-LXJHL3KW.js +340 -0
  186. package/dist/fonts-UUSCLUHW.js +39 -0
  187. package/dist/forecast-YIDXHMST.js +121 -0
  188. package/dist/forecast-YO6BNYX7.js +169 -0
  189. package/dist/funding-QDKFNQI2.js +85 -0
  190. package/dist/funnel-M3SRPZQT.js +397 -0
  191. package/dist/ga4-N6EBLN2W.js +55 -0
  192. package/dist/get-KVZSVN7U.js +62 -0
  193. package/dist/get-OZ7THI2W.js +82 -0
  194. package/dist/google-5U5KXEX7.js +163 -0
  195. package/dist/google-KTVWAA7F.js +3300 -0
  196. package/dist/google-ads-YZTK3YTW.js +198 -0
  197. package/dist/gsc-FILOUFCG.js +30 -0
  198. package/dist/history-QATQCGVQ.js +69 -0
  199. package/dist/history-RYTNMGU5.js +153 -0
  200. package/dist/history-XDYDNQWK.js +102 -0
  201. package/dist/hubspot-IJERD4KT.js +814 -0
  202. package/dist/ideas-TT24LJR5.js +45 -0
  203. package/dist/images-PLYPUXM2.js +92 -0
  204. package/dist/ingest-CSPC3RUK.js +131 -0
  205. package/dist/ingest-MSPQX3Z6.js +28 -0
  206. package/dist/insights-AVNMRFQ4.js +658 -0
  207. package/dist/insights-OZ2EXOHH.js +132 -0
  208. package/dist/inspect-VD6CB2NA.js +192 -0
  209. package/dist/instant-experiences-M2JYG2QS.js +264 -0
  210. package/dist/job-OJB6KIDV.js +202 -0
  211. package/dist/job-create-C6FGCDW4.js +109 -0
  212. package/dist/job-status-4RJHESID.js +74 -0
  213. package/dist/keyword-metrics-NJV3WR75.js +200 -0
  214. package/dist/keywords-for-site-B7MUDHFH.js +131 -0
  215. package/dist/landing-RKOEVY7L.js +28 -0
  216. package/dist/languages-27QCKMNL.js +40 -0
  217. package/dist/leads-AEXWNBAT.js +541 -0
  218. package/dist/leads-O2NLCYDO.js +115 -0
  219. package/dist/learn-XNN3DGDF.js +207 -0
  220. package/dist/line-item-writes-VSP6WEYK.js +211 -0
  221. package/dist/line-items-BQ2CKMGL.js +107 -0
  222. package/dist/link-ENZQAISO.js +67 -0
  223. package/dist/linkedin-YALC66DF.js +1344 -0
  224. package/dist/linkedin-person-3RCX4MI3.js +139 -0
  225. package/dist/list-AF522LRC.js +67 -0
  226. package/dist/list-GPTYUCSX.js +154 -0
  227. package/dist/list-VYTHVUDP.js +306 -0
  228. package/dist/locations-EA5VGY56.js +69 -0
  229. package/dist/locations-OS24BBXE.js +40 -0
  230. package/dist/log-NJR3FJWN.js +95 -0
  231. package/dist/lookup-QNLX2535.js +23 -0
  232. package/dist/make-4XUB6RSF.js +1367 -0
  233. package/dist/map-LIYQCWXU.js +445 -0
  234. package/dist/mcp-QDOAKB3A.js +729 -0
  235. package/dist/media-5SWJCRHI.js +18 -0
  236. package/dist/media-WGIEUEZW.js +89 -0
  237. package/dist/media-sources-LFSDIPUB.js +35 -0
  238. package/dist/members-KGKQQFMN.js +47 -0
  239. package/dist/meta-DRDMT5X4.js +124 -0
  240. package/dist/metrics-NCAYDJNO.js +152 -0
  241. package/dist/normalize-DQPKM3MG.js +144 -0
  242. package/dist/options-XIH7YPEG.js +125 -0
  243. package/dist/organization-BUSXIGA4.js +949 -0
  244. package/dist/output-HZW7LNUL.js +24 -0
  245. package/dist/page-photos-PDSKTR2Z.js +118 -0
  246. package/dist/pages-UH6XEZBO.js +67 -0
  247. package/dist/performance-PU4NHFUE.js +27 -0
  248. package/dist/performance-Y2DTYSFV.js +5565 -0
  249. package/dist/pixels-GY4LKGJK.js +62 -0
  250. package/dist/pixels-PYNK73UG.js +109 -0
  251. package/dist/plan-4OYUV2EF.js +208 -0
  252. package/dist/preview-7E4E3QPT.js +245 -0
  253. package/dist/preview-NP3OFLT6.js +101 -0
  254. package/dist/promoted-tweet-writes-XILB6VCP.js +183 -0
  255. package/dist/promoted-tweets-CBYZG6BG.js +119 -0
  256. package/dist/properties-RDOGNY2O.js +101 -0
  257. package/dist/publish-MDVPC77V.js +350 -0
  258. package/dist/query-K7R5GQ4E.js +236 -0
  259. package/dist/query-LJS64SEQ.js +62 -0
  260. package/dist/query-PO3RT7BR.js +231 -0
  261. package/dist/questionnaire-4OH6K2BF.js +94 -0
  262. package/dist/read-MU5XGWMK.js +141 -0
  263. package/dist/reddit-ZPKVVZGP.js +29 -0
  264. package/dist/refresh-V34YWN3W.js +97 -0
  265. package/dist/release-WRNUOSHB.js +63 -0
  266. package/dist/remove-HKWV7P27.js +53 -0
  267. package/dist/reopen-VHHYVAKC.js +66 -0
  268. package/dist/rerun-THE43RCG.js +97 -0
  269. package/dist/research-773Y7GT4.js +75 -0
  270. package/dist/research-G5A2WXVK.js +265 -0
  271. package/dist/reset-GFJ3AKF5.js +57 -0
  272. package/dist/reset-MVTWA3HT.js +57 -0
  273. package/dist/resolve-FCAP4LQ3.js +124 -0
  274. package/dist/retry-AGHA6IVT.js +65 -0
  275. package/dist/retry-LDJ6FZCZ.js +63 -0
  276. package/dist/revenue-VFML2I5V.js +91 -0
  277. package/dist/rule-writes-KWJNFMJV.js +530 -0
  278. package/dist/rules-4A25K2P7.js +99 -0
  279. package/dist/rules-NRH2X4BM.js +217 -0
  280. package/dist/rules-add-GT7NCUB3.js +465 -0
  281. package/dist/run-NFLKYVIC.js +72 -0
  282. package/dist/run-ZLHQNLCF.js +69 -0
  283. package/dist/scaffold-ad-AJN67FWG.js +1513 -0
  284. package/dist/scaffold-static-ad-L6KXZ3TN.js +1012 -0
  285. package/dist/scaffold-video-XQBZZ5TZ.js +885 -0
  286. package/dist/schedule-45CJDHIX.js +64 -0
  287. package/dist/scheduled-agents-72MWHK63.js +55 -0
  288. package/dist/schema-VX66FH4O.js +135 -0
  289. package/dist/search-Y6TS5UZS.js +177 -0
  290. package/dist/select-MZ2U7U5U.js +110 -0
  291. package/dist/sends-I2B6F5NW.js +349 -0
  292. package/dist/set-prompt-YH6PXNXB.js +199 -0
  293. package/dist/setup-links-Y4YYDQBK.js +144 -0
  294. package/dist/shared-Z7INVKCZ.js +32 -0
  295. package/dist/shopify-AUDLALBS.js +4009 -0
  296. package/dist/site-WZ654OP3.js +180 -0
  297. package/dist/sitemaps-EOMSRKOD.js +77 -0
  298. package/dist/sites-6M73AONG.js +97 -0
  299. package/dist/sources-FCBFLR2J.js +30 -0
  300. package/dist/sources-OR36YOTG.js +457 -0
  301. package/dist/stale-VSSDVB4H.js +90 -0
  302. package/dist/stats-MFEH2TSW.js +34 -0
  303. package/dist/status-L7LYUD3F.js +65 -0
  304. package/dist/stock-73PLAUYU.js +212 -0
  305. package/dist/studies-XNJXWD7I.js +250 -0
  306. package/dist/study-writes-MFAJQHXK.js +471 -0
  307. package/dist/sync-SI25TKY5.js +279 -0
  308. package/dist/sync-XBC3PSSV.js +57 -0
  309. package/dist/sync-definition-IM2NY5QC.js +70 -0
  310. package/dist/tag-manager-JFC6YYVP.js +43 -0
  311. package/dist/tags-2KNOJ7A6.js +26 -0
  312. package/dist/tags-COALQ2CT.js +23 -0
  313. package/dist/tags-HCJTTLSR.js +227 -0
  314. package/dist/tags-MVC56SHA.js +23 -0
  315. package/dist/tags-UNUZVGUA.js +23 -0
  316. package/dist/targeting-ZBGR2PSX.js +762 -0
  317. package/dist/targeting-constants-RF2732EW.js +118 -0
  318. package/dist/targeting-criteria-HU7OAJUA.js +113 -0
  319. package/dist/targets-BNH37YAQ.js +106 -0
  320. package/dist/terms-XFL6QO7A.js +102 -0
  321. package/dist/testimonials-IIAT5IDM.js +32 -0
  322. package/dist/themes-SUNQVNES.js +95 -0
  323. package/dist/top-companies-MSLNT33I.js +111 -0
  324. package/dist/transcript-7WFXVRVW.js +165 -0
  325. package/dist/translate-IPTYPZF6.js +603 -0
  326. package/dist/triggers-RBD2XGNG.js +144 -0
  327. package/dist/tweets-6PQHJXJC.js +123 -0
  328. package/dist/unlink-5IMEUVIS.js +70 -0
  329. package/dist/unstage-DSOVSWEK.js +88 -0
  330. package/dist/unstage-O23ILHCY.js +96 -0
  331. package/dist/update-7JVV5ZL3.js +66 -0
  332. package/dist/update-FIU2ECYQ.js +192 -0
  333. package/dist/update-HSS6CVUK.js +101 -0
  334. package/dist/update-XWL3Q5QY.js +155 -0
  335. package/dist/upload-B5SM33MK.js +137 -0
  336. package/dist/url-options-NZAS37S5.js +131 -0
  337. package/dist/url-params-LUQMABZX.js +101 -0
  338. package/dist/validate-4NXKYAL2.js +125 -0
  339. package/dist/videos-AHOLXU42.js +146 -0
  340. package/dist/videos-FMV4AVB2.js +41 -0
  341. package/dist/viewer-check-2W6BTVQV.js +83 -0
  342. package/dist/web-K2EMYVCD.js +173 -0
  343. package/dist/winning-ads-Q3RXH7EC.js +86 -0
  344. package/dist/write-commands-5OFOD7TE.js +1169 -0
  345. package/dist/write-commands-LHEJESKL.js +206 -0
  346. package/dist/write-commands-SD6DXVNK.js +721 -0
  347. package/dist/write-commands-UEQR7ZXO.js +1524 -0
  348. package/dist/x-UNSHYLJJ.js +47 -0
  349. package/package.json +1 -1
  350. package/dist/account-OCFXNHG7.js +0 -139
  351. package/dist/account-U6DFMD2V.js +0 -82
  352. package/dist/account-UE6DOQXK.js +0 -82
  353. package/dist/account-assets-W7K2PUYB.js +0 -290
  354. package/dist/account-level-Z2JEIJ3X.js +0 -611
  355. package/dist/account-reads-WPKD2LPB.js +0 -219
  356. package/dist/account-users-USGCCE6I.js +0 -64
  357. package/dist/account-writes-QSJ74QFR.js +0 -68
  358. package/dist/accounts-3DS67RX7.js +0 -119
  359. package/dist/accounts-55PDBEDN.js +0 -76
  360. package/dist/accounts-AK4QIG24.js +0 -115
  361. package/dist/accounts-FZCQNX3B.js +0 -713
  362. package/dist/accounts-PVMTLDJU.js +0 -80
  363. package/dist/actions-EG23YFYB.js +0 -55
  364. package/dist/active-entities-HR7NJJLU.js +0 -103
  365. package/dist/activecampaign-GPT5R647.js +0 -938
  366. package/dist/activities-DEWHKBID.js +0 -75
  367. package/dist/ad-group-writes-QBHOPTT5.js +0 -172
  368. package/dist/ad-groups-JZDUFT6J.js +0 -70
  369. package/dist/ad-writes-QYJO4IB3.js +0 -176
  370. package/dist/add-IH6GAMK4.js +0 -107
  371. package/dist/add-UWTWG4VO.js +0 -305
  372. package/dist/ads-F3VUMSEV.js +0 -48
  373. package/dist/ads-QKVNPHBH.js +0 -120
  374. package/dist/ads-UMSWEI5X.js +0 -79
  375. package/dist/adsets-FEVYHKAQ.js +0 -182
  376. package/dist/advertisers-AJNDC3AX.js +0 -123
  377. package/dist/analytics-PEGA46W5.js +0 -447
  378. package/dist/analytics-XCQ3G5PM.js +0 -2437
  379. package/dist/asset-writes-7RFZZYU7.js +0 -50
  380. package/dist/assign-2CZ5C43W.js +0 -80
  381. package/dist/audience-size-FUHDVYLN.js +0 -76
  382. package/dist/audience-writes-RUGU6KEC.js +0 -327
  383. package/dist/audiences-6GVUZUCN.js +0 -106
  384. package/dist/audiences-7OS2ZJYO.js +0 -85
  385. package/dist/audiences-RSAUXKHR.js +0 -280
  386. package/dist/audit-4L7IKIRY.js +0 -88
  387. package/dist/audit-DECB5PP5.js +0 -154
  388. package/dist/autocomplete-6XSIFXDA.js +0 -114
  389. package/dist/avatars-LTV2TSO2.js +0 -38
  390. package/dist/bid-pricing-GC6YU3LW.js +0 -103
  391. package/dist/brand-B4QKPCEC.js +0 -22
  392. package/dist/brief-RYNGM4GX.js +0 -543
  393. package/dist/businesses-42NZP6FP.js +0 -54
  394. package/dist/campaign-groups-FHV5A3EC.js +0 -99
  395. package/dist/campaign-writes-4B7DCAP2.js +0 -168
  396. package/dist/campaign-writes-GKNH2EHV.js +0 -176
  397. package/dist/campaigns-7RV65SXR.js +0 -78
  398. package/dist/campaigns-TL37AY5Y.js +0 -113
  399. package/dist/campaigns-TO74Z7UH.js +0 -130
  400. package/dist/campaigns-VNBJV5QD.js +0 -111
  401. package/dist/canvas-6XSA3VZE.js +0 -46
  402. package/dist/capabilities-6MOMJZFW.js +0 -147
  403. package/dist/cards-CAOGPPG4.js +0 -85
  404. package/dist/catalogs-5LWEXG5X.js +0 -130
  405. package/dist/catalogs-7IEXGLSR.js +0 -782
  406. package/dist/changes-WWZYTLC6.js +0 -167
  407. package/dist/chatgpt-ZI4GWP6S.js +0 -47
  408. package/dist/chats-GRS6RCDL.js +0 -449
  409. package/dist/chats-GRS6RCDL.js.map +0 -1
  410. package/dist/check-VIRAMFKC.js +0 -107
  411. package/dist/chunk-2DAWUWA4.js +0 -115
  412. package/dist/chunk-2GFJN2TR.js +0 -163
  413. package/dist/chunk-2LBQNTTH.js +0 -76
  414. package/dist/chunk-3D5ABNNW.js +0 -156
  415. package/dist/chunk-3E74OM2E.js +0 -288
  416. package/dist/chunk-3GKAVXR3.js +0 -23
  417. package/dist/chunk-5H6N36LS.js +0 -217
  418. package/dist/chunk-5T6DUP7V.js +0 -207
  419. package/dist/chunk-6IR7IQPV.js +0 -69
  420. package/dist/chunk-6IRB3MHG.js +0 -430
  421. package/dist/chunk-6MX37ZQZ.js +0 -454
  422. package/dist/chunk-7M6GZI5B.js +0 -479
  423. package/dist/chunk-AE5S5B2S.js +0 -249
  424. package/dist/chunk-ARPT74DG.js +0 -312
  425. package/dist/chunk-B42CHCXX.js +0 -962
  426. package/dist/chunk-B47TRSMB.js +0 -8954
  427. package/dist/chunk-BHEOF2MF.js +0 -2209
  428. package/dist/chunk-BRPSY35A.js +0 -468
  429. package/dist/chunk-C3EX5OKN.js +0 -188
  430. package/dist/chunk-CDPM6OE6.js +0 -61
  431. package/dist/chunk-D6YLVDVN.js +0 -103
  432. package/dist/chunk-FHWYQSMY.js +0 -930
  433. package/dist/chunk-FWHEAR7F.js +0 -138
  434. package/dist/chunk-GNTI4KST.js +0 -494
  435. package/dist/chunk-GR2BPVLX.js +0 -142
  436. package/dist/chunk-GXAI3EII.js +0 -399
  437. package/dist/chunk-H3PD2KOF.js +0 -203
  438. package/dist/chunk-ILGRC7LJ.js +0 -287
  439. package/dist/chunk-IXVVTPG6.js +0 -831
  440. package/dist/chunk-JBABLH5C.js +0 -547
  441. package/dist/chunk-JHS5PE5Y.js +0 -1246
  442. package/dist/chunk-JHS5PE5Y.js.map +0 -1
  443. package/dist/chunk-KICGV4JB.js +0 -170
  444. package/dist/chunk-LDYI7BIQ.js +0 -334
  445. package/dist/chunk-LXOTNL65.js +0 -7888
  446. package/dist/chunk-LXOTNL65.js.map +0 -1
  447. package/dist/chunk-M45SOKI5.js +0 -91
  448. package/dist/chunk-ME3K6XIS.js +0 -685
  449. package/dist/chunk-MU2TTM6Z.js +0 -197
  450. package/dist/chunk-N2MGR7HT.js +0 -1902
  451. package/dist/chunk-N2TXADL7.js +0 -1320
  452. package/dist/chunk-NTFNLVZG.js +0 -26
  453. package/dist/chunk-O43QFUOG.js +0 -51
  454. package/dist/chunk-OASXBRXQ.js +0 -24026
  455. package/dist/chunk-OSQTSS27.js +0 -74
  456. package/dist/chunk-OTRKBCUB.js +0 -219
  457. package/dist/chunk-P6KTCPJG.js +0 -604
  458. package/dist/chunk-R4RWQ6YX.js +0 -152
  459. package/dist/chunk-RBB3UUYP.js +0 -297
  460. package/dist/chunk-RBCO3C3Q.js +0 -324
  461. package/dist/chunk-RBCO3C3Q.js.map +0 -1
  462. package/dist/chunk-RJIFEHEG.js +0 -392
  463. package/dist/chunk-RYYRGQMM.js +0 -191
  464. package/dist/chunk-S3ZW3KTX.js +0 -89
  465. package/dist/chunk-SZET6NTF.js +0 -57
  466. package/dist/chunk-T4YD5W33.js +0 -66
  467. package/dist/chunk-TPGFX47R.js +0 -709
  468. package/dist/chunk-U5LSGCT3.js +0 -455
  469. package/dist/chunk-ULIQNJ5J.js +0 -274
  470. package/dist/chunk-URKOGN5B.js +0 -19
  471. package/dist/chunk-UYZ4FUC7.js +0 -225
  472. package/dist/chunk-V6TZRCAS.js +0 -169
  473. package/dist/chunk-WBWEKZQ2.js +0 -191
  474. package/dist/chunk-XRR5NN2V.js +0 -91
  475. package/dist/chunk-YD6OZSSY.js +0 -106
  476. package/dist/chunk-YXZV6YKH.js +0 -224
  477. package/dist/chunk-ZREKNWIE.js +0 -344
  478. package/dist/claim-YCK2XQUL.js +0 -200
  479. package/dist/companies-SWGL3MQT.js +0 -198
  480. package/dist/company-XKEQKWPO.js +0 -308
  481. package/dist/complete-CHEZWF5R.js +0 -84
  482. package/dist/config-NDL2YP37.js +0 -88
  483. package/dist/connect-GWLVOOU7.js +0 -45
  484. package/dist/conversation-QD4UJZ7S.js +0 -96
  485. package/dist/conversion-report-76S5JOVT.js +0 -127
  486. package/dist/conversion-upload-command-5OILW65U.js +0 -439
  487. package/dist/conversion-writes-6HX665JT.js +0 -122
  488. package/dist/conversions-BECU3XD2.js +0 -140
  489. package/dist/conversions-QZJRF4WN.js +0 -78
  490. package/dist/copy-writes-X2LM5I4Z.js +0 -170
  491. package/dist/create-4OA5DOSO.js +0 -239
  492. package/dist/create-5QPEESSZ.js +0 -135
  493. package/dist/create-ET3VCGQT.js +0 -62
  494. package/dist/create-IJSH2LHP.js +0 -218
  495. package/dist/creatives-AIRQ3FGH.js +0 -229
  496. package/dist/creatives-L3XSN34M.js +0 -58
  497. package/dist/creatives-SFPNXJ6Z.js +0 -118
  498. package/dist/credentials-Q2FM4DP3.js +0 -290
  499. package/dist/critique-A5FVPC5K.js +0 -1451
  500. package/dist/critique-RSU7N2NV.js +0 -232
  501. package/dist/crm-7GTTSEHH.js +0 -229
  502. package/dist/crm-PQREUPOU.js +0 -323
  503. package/dist/currency-BZUNQ4XJ.js +0 -88
  504. package/dist/custom-conversions-UHRBVUD2.js +0 -128
  505. package/dist/customers-BYNADWKU.js +0 -65
  506. package/dist/delete-2RAKL577.js +0 -69
  507. package/dist/delete-EZ525EJV.js +0 -57
  508. package/dist/delete-ZBYPC5AL.js +0 -67
  509. package/dist/demographics-5XMZ2TBB.js +0 -141
  510. package/dist/discard-Q7R5VJ7I.js +0 -69
  511. package/dist/discover-PDSEJR2P.js +0 -172
  512. package/dist/domain-MS3BKUYW.js +0 -101
  513. package/dist/download-F56SAC2G.js +0 -172
  514. package/dist/draft-44KTLX4P.js +0 -134
  515. package/dist/draft-4EM4TL25.js +0 -332
  516. package/dist/draft-CKFSZDVI.js +0 -260
  517. package/dist/draft-JBLWUO3J.js +0 -220
  518. package/dist/draft-L6XXU2I6.js +0 -374
  519. package/dist/draft-RSKZSUOS.js +0 -138
  520. package/dist/draft-WOE7KQ7T.js +0 -315
  521. package/dist/draft-XOPS4EZW.js +0 -569
  522. package/dist/draft-XOPS4EZW.js.map +0 -1
  523. package/dist/experiment-AZUKJ7ZO.js +0 -1397
  524. package/dist/experiments-34NEL75V.js +0 -236
  525. package/dist/extract-2PG5JB2C.js +0 -143
  526. package/dist/facets-5CGKHFDQ.js +0 -117
  527. package/dist/feedback-C7THFXTE.js +0 -114
  528. package/dist/feedback-SWNIEXMA.js +0 -115
  529. package/dist/feedback-record-BNDFZRYJ.js +0 -269
  530. package/dist/fetch-LMEYFSM5.js +0 -204
  531. package/dist/fit-DBA7FD3M.js +0 -65
  532. package/dist/flows-TQASOYQP.js +0 -340
  533. package/dist/fonts-MPDK2DXR.js +0 -39
  534. package/dist/forecast-3KMAJJWJ.js +0 -169
  535. package/dist/forecast-OP2ECNM2.js +0 -121
  536. package/dist/funding-BSAHWU35.js +0 -85
  537. package/dist/funnel-BLRQAZ65.js +0 -397
  538. package/dist/ga4-YVKA3V4V.js +0 -55
  539. package/dist/get-DEELBPMG.js +0 -82
  540. package/dist/get-YATZI6GN.js +0 -62
  541. package/dist/google-REFD3W2R.js +0 -3300
  542. package/dist/google-ULLPGAXN.js +0 -163
  543. package/dist/google-ads-IEQJEICD.js +0 -198
  544. package/dist/gsc-OJDMSP6H.js +0 -30
  545. package/dist/history-2LE4ELLB.js +0 -102
  546. package/dist/history-FPXZOUHT.js +0 -153
  547. package/dist/history-LXRFZNW7.js +0 -69
  548. package/dist/hubspot-MNREQEVI.js +0 -814
  549. package/dist/ideas-4N7WMX3P.js +0 -45
  550. package/dist/images-KVMFKQX5.js +0 -92
  551. package/dist/ingest-GUJNPD6S.js +0 -28
  552. package/dist/ingest-VG4YGXB2.js +0 -131
  553. package/dist/insights-H6M6VI43.js +0 -132
  554. package/dist/insights-LZJZGNJZ.js +0 -658
  555. package/dist/inspect-VODWKUQY.js +0 -192
  556. package/dist/instant-experiences-J4GSS3Y6.js +0 -264
  557. package/dist/job-UFGGBDG7.js +0 -202
  558. package/dist/job-create-XM4NH322.js +0 -109
  559. package/dist/job-status-47L5Z57J.js +0 -74
  560. package/dist/keyword-metrics-LOLNR24U.js +0 -200
  561. package/dist/keywords-for-site-PLTJBXVN.js +0 -131
  562. package/dist/landing-JMH3WIK2.js +0 -28
  563. package/dist/languages-SVTYYYOC.js +0 -40
  564. package/dist/leads-SEEJ3KRR.js +0 -541
  565. package/dist/leads-XPIBMZI7.js +0 -115
  566. package/dist/learn-MOHK6DHI.js +0 -207
  567. package/dist/line-item-writes-5RVCYHHH.js +0 -211
  568. package/dist/line-items-OESD2IJ6.js +0 -107
  569. package/dist/link-PURCDO7A.js +0 -67
  570. package/dist/linkedin-YWLXEPLB.js +0 -1344
  571. package/dist/linkedin-person-L22XA5LG.js +0 -139
  572. package/dist/list-KE6PQV2U.js +0 -154
  573. package/dist/list-L5VZ35AO.js +0 -306
  574. package/dist/list-T5ZVVC4L.js +0 -67
  575. package/dist/locations-5SLLGWZO.js +0 -69
  576. package/dist/locations-7EBZ6KRH.js +0 -40
  577. package/dist/log-D3WU36FX.js +0 -95
  578. package/dist/lookup-OU6CLATK.js +0 -23
  579. package/dist/make-QPE6H3NT.js +0 -1367
  580. package/dist/map-PT7JJYQR.js +0 -445
  581. package/dist/mcp-62MSONPH.js +0 -729
  582. package/dist/media-DGV2AMZI.js +0 -89
  583. package/dist/media-YKCCMLXL.js +0 -18
  584. package/dist/media-sources-DGVR3YPL.js +0 -35
  585. package/dist/members-DAHPS3MB.js +0 -47
  586. package/dist/meta-5TRG7RTQ.js +0 -124
  587. package/dist/metrics-WRERNMRK.js +0 -152
  588. package/dist/normalize-ZOJ4YROH.js +0 -144
  589. package/dist/options-DTB2NYBL.js +0 -125
  590. package/dist/organization-5JHFNUOD.js +0 -949
  591. package/dist/output-7X5WPPCA.js +0 -24
  592. package/dist/page-photos-VYJU4RNQ.js +0 -118
  593. package/dist/pages-6YMPZDEY.js +0 -67
  594. package/dist/performance-VFDK5PHT.js +0 -5565
  595. package/dist/performance-W6CJEUHR.js +0 -27
  596. package/dist/pixels-DZDVNIVL.js +0 -109
  597. package/dist/pixels-WTTLC4O5.js +0 -62
  598. package/dist/plan-JAWESWJN.js +0 -208
  599. package/dist/preview-JZXGR4KN.js +0 -245
  600. package/dist/preview-PUF62HJU.js +0 -101
  601. package/dist/promoted-tweet-writes-FW4BAA5O.js +0 -183
  602. package/dist/promoted-tweets-LYHKCVNV.js +0 -119
  603. package/dist/properties-Z5S3LRJ5.js +0 -101
  604. package/dist/publish-S2KD5PCN.js +0 -350
  605. package/dist/query-3QFT42PG.js +0 -62
  606. package/dist/query-KKXCMH3Q.js +0 -236
  607. package/dist/query-QXKGVHZL.js +0 -231
  608. package/dist/questionnaire-U7UYICEA.js +0 -94
  609. package/dist/read-ENUS7P3L.js +0 -141
  610. package/dist/reddit-AF2PPR3K.js +0 -29
  611. package/dist/refresh-UC7OTPXS.js +0 -97
  612. package/dist/release-FQOJ2FJ5.js +0 -63
  613. package/dist/remove-H3SU4GJK.js +0 -53
  614. package/dist/reopen-M2PZEHKF.js +0 -66
  615. package/dist/rerun-M63ZAYAV.js +0 -97
  616. package/dist/research-2N5HAFSB.js +0 -75
  617. package/dist/research-ILZZTO6Q.js +0 -265
  618. package/dist/reset-JN437DOZ.js +0 -57
  619. package/dist/reset-XAKAEDPH.js +0 -57
  620. package/dist/resolve-WVE6D7CP.js +0 -124
  621. package/dist/retry-ILL2ZATG.js +0 -63
  622. package/dist/retry-PMJ22IN4.js +0 -65
  623. package/dist/revenue-UWU3ACGP.js +0 -91
  624. package/dist/rule-writes-WT6DQZZE.js +0 -530
  625. package/dist/rules-BOOFGKJA.js +0 -99
  626. package/dist/rules-Y75KR2PC.js +0 -217
  627. package/dist/rules-add-7K5ESEZQ.js +0 -465
  628. package/dist/run-2AIXS3KE.js +0 -72
  629. package/dist/run-OCCY7JHY.js +0 -69
  630. package/dist/scaffold-ad-JQIOCLDU.js +0 -1513
  631. package/dist/scaffold-static-ad-BW56MVIV.js +0 -1012
  632. package/dist/scaffold-video-OGPMQO5D.js +0 -885
  633. package/dist/schedule-WV6NZ4CK.js +0 -64
  634. package/dist/scheduled-agents-MZZMHN3T.js +0 -55
  635. package/dist/schema-ADRFE3AV.js +0 -135
  636. package/dist/search-GGWTLVG7.js +0 -177
  637. package/dist/select-HYZ5JYO7.js +0 -110
  638. package/dist/sends-4ZO6BNZ4.js +0 -349
  639. package/dist/set-prompt-FMJ32YNG.js +0 -199
  640. package/dist/setup-links-76AJJR5Z.js +0 -144
  641. package/dist/shared-UPMEBTVP.js +0 -32
  642. package/dist/shopify-Q3XMCPHI.js +0 -4009
  643. package/dist/site-I4HFMTE5.js +0 -180
  644. package/dist/sitemaps-P3K5Z4TW.js +0 -77
  645. package/dist/sites-TURWC53D.js +0 -97
  646. package/dist/sources-GGLP5NQU.js +0 -30
  647. package/dist/sources-ORL5AEH5.js +0 -457
  648. package/dist/stale-GVPIUPBX.js +0 -90
  649. package/dist/stats-XNKAJD2Z.js +0 -34
  650. package/dist/status-LSHCACMZ.js +0 -65
  651. package/dist/stock-RZH4SEGS.js +0 -212
  652. package/dist/studies-5G67ODR2.js +0 -250
  653. package/dist/study-writes-34BJFZAZ.js +0 -471
  654. package/dist/sync-MK7JTH3U.js +0 -57
  655. package/dist/sync-QVEUQKU5.js +0 -279
  656. package/dist/sync-definition-EFAJ744M.js +0 -70
  657. package/dist/tag-manager-3GIW6BPB.js +0 -43
  658. package/dist/tags-5HX7TDJN.js +0 -23
  659. package/dist/tags-BE6L5NLG.js +0 -23
  660. package/dist/tags-EOIC4EQK.js +0 -26
  661. package/dist/tags-G4HMOLZF.js +0 -23
  662. package/dist/tags-PF6UJWCF.js +0 -227
  663. package/dist/targeting-TVZPIUUI.js +0 -762
  664. package/dist/targeting-constants-RJS2STR5.js +0 -118
  665. package/dist/targeting-criteria-DOHSND62.js +0 -113
  666. package/dist/targets-7AL4HPAW.js +0 -106
  667. package/dist/terms-AATAGKPT.js +0 -102
  668. package/dist/testimonials-BNYHKXD2.js +0 -32
  669. package/dist/themes-5HKRO5RR.js +0 -95
  670. package/dist/top-companies-ASSEFHI3.js +0 -111
  671. package/dist/transcript-OTAKTTSA.js +0 -165
  672. package/dist/translate-ATGQD733.js +0 -603
  673. package/dist/triggers-JQYC4JLT.js +0 -144
  674. package/dist/tweets-MLDLLLDB.js +0 -123
  675. package/dist/unlink-FVHHULLC.js +0 -70
  676. package/dist/unstage-65DUBYNZ.js +0 -96
  677. package/dist/unstage-FIRVPNRC.js +0 -88
  678. package/dist/update-EO5LVV34.js +0 -101
  679. package/dist/update-G7RMT4OC.js +0 -192
  680. package/dist/update-OD75FSPH.js +0 -66
  681. package/dist/update-RA6TX5NV.js +0 -155
  682. package/dist/upload-X33VIDOB.js +0 -137
  683. package/dist/url-options-4J3FRXHO.js +0 -131
  684. package/dist/url-params-IBE4HUKK.js +0 -101
  685. package/dist/validate-ZKQN55FV.js +0 -125
  686. package/dist/videos-NITQKILV.js +0 -146
  687. package/dist/videos-RGCF3EAE.js +0 -41
  688. package/dist/viewer-check-AKVX3XFW.js +0 -83
  689. package/dist/web-QVR2EQ7X.js +0 -173
  690. package/dist/winning-ads-3R4RU3FL.js +0 -86
  691. package/dist/write-commands-OBQPQUIE.js +0 -721
  692. package/dist/write-commands-QQFBJBYD.js +0 -1524
  693. package/dist/write-commands-SIOVTRHH.js +0 -1169
  694. package/dist/write-commands-XLZCRVTU.js +0 -206
  695. package/dist/x-747NTJKH.js +0 -47
  696. /package/dist/{account-UE6DOQXK.js.map → account-MYM2QNFO.js.map} +0 -0
  697. /package/dist/{account-OCFXNHG7.js.map → account-OUKPRB7C.js.map} +0 -0
  698. /package/dist/{account-U6DFMD2V.js.map → account-YJ2NNQYP.js.map} +0 -0
  699. /package/dist/{account-assets-W7K2PUYB.js.map → account-assets-HOOPV5KR.js.map} +0 -0
  700. /package/dist/{account-level-Z2JEIJ3X.js.map → account-level-3QWMJTZQ.js.map} +0 -0
  701. /package/dist/{account-reads-WPKD2LPB.js.map → account-reads-RKK5BA6L.js.map} +0 -0
  702. /package/dist/{account-users-USGCCE6I.js.map → account-users-GHMPDZUM.js.map} +0 -0
  703. /package/dist/{account-writes-QSJ74QFR.js.map → account-writes-HEXKGWXC.js.map} +0 -0
  704. /package/dist/{accounts-FZCQNX3B.js.map → accounts-DDNEHXXT.js.map} +0 -0
  705. /package/dist/{accounts-3DS67RX7.js.map → accounts-K7VD47FG.js.map} +0 -0
  706. /package/dist/{accounts-55PDBEDN.js.map → accounts-OSVXKNSI.js.map} +0 -0
  707. /package/dist/{accounts-PVMTLDJU.js.map → accounts-S7CEGWJL.js.map} +0 -0
  708. /package/dist/{accounts-AK4QIG24.js.map → accounts-SJOO4MQX.js.map} +0 -0
  709. /package/dist/{actions-EG23YFYB.js.map → actions-JIXQEVIN.js.map} +0 -0
  710. /package/dist/{active-entities-HR7NJJLU.js.map → active-entities-4KQQSMRZ.js.map} +0 -0
  711. /package/dist/{activecampaign-GPT5R647.js.map → activecampaign-4ST7BMHO.js.map} +0 -0
  712. /package/dist/{activities-DEWHKBID.js.map → activities-FRA33VZZ.js.map} +0 -0
  713. /package/dist/{ad-group-writes-QBHOPTT5.js.map → ad-group-writes-O2OP4NJ6.js.map} +0 -0
  714. /package/dist/{ad-groups-JZDUFT6J.js.map → ad-groups-AMMMWHHX.js.map} +0 -0
  715. /package/dist/{ad-writes-QYJO4IB3.js.map → ad-writes-IWLRLR2E.js.map} +0 -0
  716. /package/dist/{add-IH6GAMK4.js.map → add-NZ6SEWUR.js.map} +0 -0
  717. /package/dist/{add-UWTWG4VO.js.map → add-ZH5HJBUN.js.map} +0 -0
  718. /package/dist/{ads-F3VUMSEV.js.map → ads-7TQKAH4B.js.map} +0 -0
  719. /package/dist/{ads-UMSWEI5X.js.map → ads-KLSFKXUE.js.map} +0 -0
  720. /package/dist/{ads-QKVNPHBH.js.map → ads-L6SMNOUM.js.map} +0 -0
  721. /package/dist/{adsets-FEVYHKAQ.js.map → adsets-R75LSEV5.js.map} +0 -0
  722. /package/dist/{advertisers-AJNDC3AX.js.map → advertisers-T37UHN3C.js.map} +0 -0
  723. /package/dist/{analytics-XCQ3G5PM.js.map → analytics-ITBXTEIC.js.map} +0 -0
  724. /package/dist/{analytics-PEGA46W5.js.map → analytics-WXLRAXXN.js.map} +0 -0
  725. /package/dist/{asset-writes-7RFZZYU7.js.map → asset-writes-DECROLE3.js.map} +0 -0
  726. /package/dist/{assign-2CZ5C43W.js.map → assign-3CVJL35R.js.map} +0 -0
  727. /package/dist/{audience-size-FUHDVYLN.js.map → audience-size-23UFSW6H.js.map} +0 -0
  728. /package/dist/{audience-writes-RUGU6KEC.js.map → audience-writes-VSC2BY4Y.js.map} +0 -0
  729. /package/dist/{audiences-RSAUXKHR.js.map → audiences-76S4WY7Q.js.map} +0 -0
  730. /package/dist/{audiences-7OS2ZJYO.js.map → audiences-RN745R53.js.map} +0 -0
  731. /package/dist/{audiences-6GVUZUCN.js.map → audiences-V773XHP2.js.map} +0 -0
  732. /package/dist/{audit-4L7IKIRY.js.map → audit-BIHMDO5K.js.map} +0 -0
  733. /package/dist/{audit-DECB5PP5.js.map → audit-OT42WBII.js.map} +0 -0
  734. /package/dist/{autocomplete-6XSIFXDA.js.map → autocomplete-T642QXBX.js.map} +0 -0
  735. /package/dist/{avatars-LTV2TSO2.js.map → avatars-33UGHCQA.js.map} +0 -0
  736. /package/dist/{bid-pricing-GC6YU3LW.js.map → bid-pricing-UHU2HOAP.js.map} +0 -0
  737. /package/dist/{brand-B4QKPCEC.js.map → brand-36YIAVGK.js.map} +0 -0
  738. /package/dist/{brief-RYNGM4GX.js.map → brief-A5XFT6VH.js.map} +0 -0
  739. /package/dist/{businesses-42NZP6FP.js.map → businesses-HECSW3EL.js.map} +0 -0
  740. /package/dist/{campaign-groups-FHV5A3EC.js.map → campaign-groups-TAVIZR4L.js.map} +0 -0
  741. /package/dist/{campaign-writes-GKNH2EHV.js.map → campaign-writes-72OPCWMG.js.map} +0 -0
  742. /package/dist/{campaign-writes-4B7DCAP2.js.map → campaign-writes-AQ5T5TII.js.map} +0 -0
  743. /package/dist/{campaigns-VNBJV5QD.js.map → campaigns-3P2UZWPD.js.map} +0 -0
  744. /package/dist/{campaigns-TL37AY5Y.js.map → campaigns-D2V423FD.js.map} +0 -0
  745. /package/dist/{campaigns-7RV65SXR.js.map → campaigns-NW2H7SAR.js.map} +0 -0
  746. /package/dist/{campaigns-TO74Z7UH.js.map → campaigns-S62KEFVL.js.map} +0 -0
  747. /package/dist/{canvas-6XSA3VZE.js.map → canvas-D7L7R4D2.js.map} +0 -0
  748. /package/dist/{capabilities-6MOMJZFW.js.map → capabilities-YC36LOZU.js.map} +0 -0
  749. /package/dist/{cards-CAOGPPG4.js.map → cards-RYQN5JLR.js.map} +0 -0
  750. /package/dist/{catalogs-7IEXGLSR.js.map → catalogs-G33WT5PS.js.map} +0 -0
  751. /package/dist/{catalogs-5LWEXG5X.js.map → catalogs-XLWWM2Q3.js.map} +0 -0
  752. /package/dist/{changes-WWZYTLC6.js.map → changes-SI2W2PZL.js.map} +0 -0
  753. /package/dist/{chatgpt-ZI4GWP6S.js.map → chatgpt-PPWG5WOF.js.map} +0 -0
  754. /package/dist/{check-VIRAMFKC.js.map → check-FQYDJ5RS.js.map} +0 -0
  755. /package/dist/{chunk-TPGFX47R.js.map → chunk-23RVCBL7.js.map} +0 -0
  756. /package/dist/{chunk-S3ZW3KTX.js.map → chunk-2JBPS2CV.js.map} +0 -0
  757. /package/dist/{chunk-3D5ABNNW.js.map → chunk-2N2R5YSN.js.map} +0 -0
  758. /package/dist/{chunk-RJIFEHEG.js.map → chunk-2TS2ITSG.js.map} +0 -0
  759. /package/dist/{chunk-GXAI3EII.js.map → chunk-2VW7S77J.js.map} +0 -0
  760. /package/dist/{chunk-ULIQNJ5J.js.map → chunk-4OQG4HBG.js.map} +0 -0
  761. /package/dist/{chunk-2LBQNTTH.js.map → chunk-4PAGS7QH.js.map} +0 -0
  762. /package/dist/{chunk-6IR7IQPV.js.map → chunk-5C4RRCKM.js.map} +0 -0
  763. /package/dist/{chunk-OTRKBCUB.js.map → chunk-5ZHXLY7Y.js.map} +0 -0
  764. /package/dist/{chunk-O43QFUOG.js.map → chunk-6E4KJMXO.js.map} +0 -0
  765. /package/dist/{chunk-GR2BPVLX.js.map → chunk-7CORYCEZ.js.map} +0 -0
  766. /package/dist/{chunk-5H6N36LS.js.map → chunk-7TVVYP7K.js.map} +0 -0
  767. /package/dist/{chunk-NTFNLVZG.js.map → chunk-A4O3JL6D.js.map} +0 -0
  768. /package/dist/{chunk-B47TRSMB.js.map → chunk-AC7WLPXF.js.map} +0 -0
  769. /package/dist/{chunk-ARPT74DG.js.map → chunk-AIK2HPDZ.js.map} +0 -0
  770. /package/dist/{chunk-2DAWUWA4.js.map → chunk-ANRTDNPQ.js.map} +0 -0
  771. /package/dist/{chunk-ILGRC7LJ.js.map → chunk-B2BQ2Q64.js.map} +0 -0
  772. /package/dist/{chunk-ME3K6XIS.js.map → chunk-CORECUKT.js.map} +0 -0
  773. /package/dist/{chunk-FWHEAR7F.js.map → chunk-DRQI2CJJ.js.map} +0 -0
  774. /package/dist/{chunk-ZREKNWIE.js.map → chunk-E3PYHCQL.js.map} +0 -0
  775. /package/dist/{chunk-AE5S5B2S.js.map → chunk-EIDHLGQM.js.map} +0 -0
  776. /package/dist/{chunk-V6TZRCAS.js.map → chunk-FB5OU5HZ.js.map} +0 -0
  777. /package/dist/{chunk-3GKAVXR3.js.map → chunk-FGAXZ7ET.js.map} +0 -0
  778. /package/dist/{chunk-XRR5NN2V.js.map → chunk-FGTOOTYC.js.map} +0 -0
  779. /package/dist/{chunk-N2TXADL7.js.map → chunk-FUIGPJZZ.js.map} +0 -0
  780. /package/dist/{chunk-MU2TTM6Z.js.map → chunk-GDRJS2QJ.js.map} +0 -0
  781. /package/dist/{chunk-KICGV4JB.js.map → chunk-GUYFVYLY.js.map} +0 -0
  782. /package/dist/{chunk-CDPM6OE6.js.map → chunk-H3RCEM6L.js.map} +0 -0
  783. /package/dist/{chunk-6IRB3MHG.js.map → chunk-HH5WM5VA.js.map} +0 -0
  784. /package/dist/{chunk-M45SOKI5.js.map → chunk-IID2MAYZ.js.map} +0 -0
  785. /package/dist/{chunk-OSQTSS27.js.map → chunk-J32CYEIH.js.map} +0 -0
  786. /package/dist/{chunk-7M6GZI5B.js.map → chunk-JCDCIQMA.js.map} +0 -0
  787. /package/dist/{chunk-UYZ4FUC7.js.map → chunk-JED4JBIK.js.map} +0 -0
  788. /package/dist/{chunk-B42CHCXX.js.map → chunk-JIE45TKJ.js.map} +0 -0
  789. /package/dist/{chunk-BRPSY35A.js.map → chunk-JSOOLOHP.js.map} +0 -0
  790. /package/dist/{chunk-JBABLH5C.js.map → chunk-JWV7LUFM.js.map} +0 -0
  791. /package/dist/{chunk-FHWYQSMY.js.map → chunk-KH7AOX2R.js.map} +0 -0
  792. /package/dist/{chunk-YXZV6YKH.js.map → chunk-KJTMY7K6.js.map} +0 -0
  793. /package/dist/{chunk-P6KTCPJG.js.map → chunk-L5GFFF5G.js.map} +0 -0
  794. /package/dist/{chunk-LDYI7BIQ.js.map → chunk-LQACNCAV.js.map} +0 -0
  795. /package/dist/{chunk-U5LSGCT3.js.map → chunk-MOKZ5XZO.js.map} +0 -0
  796. /package/dist/{chunk-2GFJN2TR.js.map → chunk-MXVP7Z54.js.map} +0 -0
  797. /package/dist/{chunk-D6YLVDVN.js.map → chunk-O3O7PXMK.js.map} +0 -0
  798. /package/dist/{chunk-R4RWQ6YX.js.map → chunk-OLPABGH3.js.map} +0 -0
  799. /package/dist/{chunk-C3EX5OKN.js.map → chunk-QUSDGZFS.js.map} +0 -0
  800. /package/dist/{chunk-OASXBRXQ.js.map → chunk-QZSNT67Z.js.map} +0 -0
  801. /package/dist/{chunk-3E74OM2E.js.map → chunk-RF3TP643.js.map} +0 -0
  802. /package/dist/{chunk-WBWEKZQ2.js.map → chunk-RIRSFFWA.js.map} +0 -0
  803. /package/dist/{chunk-GNTI4KST.js.map → chunk-SIUYWLXB.js.map} +0 -0
  804. /package/dist/{chunk-N2MGR7HT.js.map → chunk-TYFXPC5D.js.map} +0 -0
  805. /package/dist/{chunk-T4YD5W33.js.map → chunk-TZTHGLWN.js.map} +0 -0
  806. /package/dist/{chunk-H3PD2KOF.js.map → chunk-UJTIMPEE.js.map} +0 -0
  807. /package/dist/{chunk-IXVVTPG6.js.map → chunk-UQZZM6UM.js.map} +0 -0
  808. /package/dist/{chunk-RBB3UUYP.js.map → chunk-UUXGSDUC.js.map} +0 -0
  809. /package/dist/{chunk-BHEOF2MF.js.map → chunk-UZHDNE6M.js.map} +0 -0
  810. /package/dist/{chunk-URKOGN5B.js.map → chunk-VJ4IOJQZ.js.map} +0 -0
  811. /package/dist/{chunk-5T6DUP7V.js.map → chunk-W743FIEY.js.map} +0 -0
  812. /package/dist/{chunk-SZET6NTF.js.map → chunk-X25XRSDP.js.map} +0 -0
  813. /package/dist/{chunk-RYYRGQMM.js.map → chunk-XRUB4KRV.js.map} +0 -0
  814. /package/dist/{chunk-YD6OZSSY.js.map → chunk-ZICB4OI5.js.map} +0 -0
  815. /package/dist/{chunk-6MX37ZQZ.js.map → chunk-ZQ7JDYJB.js.map} +0 -0
  816. /package/dist/{claim-YCK2XQUL.js.map → claim-CG3J32WS.js.map} +0 -0
  817. /package/dist/{companies-SWGL3MQT.js.map → companies-DQKUPFWT.js.map} +0 -0
  818. /package/dist/{company-XKEQKWPO.js.map → company-4CD2OJLB.js.map} +0 -0
  819. /package/dist/{complete-CHEZWF5R.js.map → complete-JSP6VQYI.js.map} +0 -0
  820. /package/dist/{config-NDL2YP37.js.map → config-GIETKZGS.js.map} +0 -0
  821. /package/dist/{connect-GWLVOOU7.js.map → connect-O5NRDY4Y.js.map} +0 -0
  822. /package/dist/{conversation-QD4UJZ7S.js.map → conversation-YHKIB3CU.js.map} +0 -0
  823. /package/dist/{conversion-report-76S5JOVT.js.map → conversion-report-JV6WZLB3.js.map} +0 -0
  824. /package/dist/{conversion-upload-command-5OILW65U.js.map → conversion-upload-command-LXJYNNCK.js.map} +0 -0
  825. /package/dist/{conversion-writes-6HX665JT.js.map → conversion-writes-NH3DKRQX.js.map} +0 -0
  826. /package/dist/{conversions-BECU3XD2.js.map → conversions-E2KOXF3N.js.map} +0 -0
  827. /package/dist/{conversions-QZJRF4WN.js.map → conversions-TKPTZJVM.js.map} +0 -0
  828. /package/dist/{copy-writes-X2LM5I4Z.js.map → copy-writes-FP3EI5LI.js.map} +0 -0
  829. /package/dist/{create-ET3VCGQT.js.map → create-DQ5X5AJT.js.map} +0 -0
  830. /package/dist/{create-4OA5DOSO.js.map → create-FNPFVKLT.js.map} +0 -0
  831. /package/dist/{create-5QPEESSZ.js.map → create-GXOFZCR5.js.map} +0 -0
  832. /package/dist/{create-IJSH2LHP.js.map → create-VAZ65QNJ.js.map} +0 -0
  833. /package/dist/{creatives-AIRQ3FGH.js.map → creatives-5EIDMQ66.js.map} +0 -0
  834. /package/dist/{creatives-SFPNXJ6Z.js.map → creatives-N7V2BSOW.js.map} +0 -0
  835. /package/dist/{creatives-L3XSN34M.js.map → creatives-QWNQDPNE.js.map} +0 -0
  836. /package/dist/{credentials-Q2FM4DP3.js.map → credentials-VCERJE24.js.map} +0 -0
  837. /package/dist/{critique-A5FVPC5K.js.map → critique-62QFBC33.js.map} +0 -0
  838. /package/dist/{critique-RSU7N2NV.js.map → critique-MSL6EU5V.js.map} +0 -0
  839. /package/dist/{crm-PQREUPOU.js.map → crm-J3SCOR4L.js.map} +0 -0
  840. /package/dist/{crm-7GTTSEHH.js.map → crm-PMPO6QJE.js.map} +0 -0
  841. /package/dist/{currency-BZUNQ4XJ.js.map → currency-NFKS6PRB.js.map} +0 -0
  842. /package/dist/{custom-conversions-UHRBVUD2.js.map → custom-conversions-BFMGX2M3.js.map} +0 -0
  843. /package/dist/{customers-BYNADWKU.js.map → customers-EYVTYCGY.js.map} +0 -0
  844. /package/dist/{delete-2RAKL577.js.map → delete-7A6T6XBD.js.map} +0 -0
  845. /package/dist/{delete-ZBYPC5AL.js.map → delete-I3W3M6T7.js.map} +0 -0
  846. /package/dist/{delete-EZ525EJV.js.map → delete-RZCW3Y6L.js.map} +0 -0
  847. /package/dist/{demographics-5XMZ2TBB.js.map → demographics-CPMNWMBZ.js.map} +0 -0
  848. /package/dist/{discard-Q7R5VJ7I.js.map → discard-I773LYVR.js.map} +0 -0
  849. /package/dist/{discover-PDSEJR2P.js.map → discover-DDYFCWQL.js.map} +0 -0
  850. /package/dist/{domain-MS3BKUYW.js.map → domain-7YO5HYHU.js.map} +0 -0
  851. /package/dist/{download-F56SAC2G.js.map → download-IYK3UVBF.js.map} +0 -0
  852. /package/dist/{draft-44KTLX4P.js.map → draft-2EVXU5XB.js.map} +0 -0
  853. /package/dist/{draft-JBLWUO3J.js.map → draft-2Z7EGKBO.js.map} +0 -0
  854. /package/dist/{draft-4EM4TL25.js.map → draft-4UTNI7BT.js.map} +0 -0
  855. /package/dist/{draft-L6XXU2I6.js.map → draft-CQPEGNPP.js.map} +0 -0
  856. /package/dist/{draft-RSKZSUOS.js.map → draft-CQWYTMSS.js.map} +0 -0
  857. /package/dist/{draft-CKFSZDVI.js.map → draft-JYZA3BFD.js.map} +0 -0
  858. /package/dist/{draft-WOE7KQ7T.js.map → draft-VT7DAOB7.js.map} +0 -0
  859. /package/dist/{experiment-AZUKJ7ZO.js.map → experiment-YAX26BOO.js.map} +0 -0
  860. /package/dist/{experiments-34NEL75V.js.map → experiments-ZEN2H3RV.js.map} +0 -0
  861. /package/dist/{extract-2PG5JB2C.js.map → extract-ZIW5JFTY.js.map} +0 -0
  862. /package/dist/{facets-5CGKHFDQ.js.map → facets-RNC4D4UH.js.map} +0 -0
  863. /package/dist/{feedback-SWNIEXMA.js.map → feedback-2YJ24NV7.js.map} +0 -0
  864. /package/dist/{feedback-C7THFXTE.js.map → feedback-X3GLQ2QF.js.map} +0 -0
  865. /package/dist/{feedback-record-BNDFZRYJ.js.map → feedback-record-A5JLS3QY.js.map} +0 -0
  866. /package/dist/{fetch-LMEYFSM5.js.map → fetch-6XMRKLYH.js.map} +0 -0
  867. /package/dist/{fit-DBA7FD3M.js.map → fit-BRJSLR7P.js.map} +0 -0
  868. /package/dist/{flows-TQASOYQP.js.map → flows-LXJHL3KW.js.map} +0 -0
  869. /package/dist/{fonts-MPDK2DXR.js.map → fonts-UUSCLUHW.js.map} +0 -0
  870. /package/dist/{forecast-OP2ECNM2.js.map → forecast-YIDXHMST.js.map} +0 -0
  871. /package/dist/{forecast-3KMAJJWJ.js.map → forecast-YO6BNYX7.js.map} +0 -0
  872. /package/dist/{funding-BSAHWU35.js.map → funding-QDKFNQI2.js.map} +0 -0
  873. /package/dist/{funnel-BLRQAZ65.js.map → funnel-M3SRPZQT.js.map} +0 -0
  874. /package/dist/{ga4-YVKA3V4V.js.map → ga4-N6EBLN2W.js.map} +0 -0
  875. /package/dist/{get-YATZI6GN.js.map → get-KVZSVN7U.js.map} +0 -0
  876. /package/dist/{get-DEELBPMG.js.map → get-OZ7THI2W.js.map} +0 -0
  877. /package/dist/{google-ULLPGAXN.js.map → google-5U5KXEX7.js.map} +0 -0
  878. /package/dist/{google-REFD3W2R.js.map → google-KTVWAA7F.js.map} +0 -0
  879. /package/dist/{google-ads-IEQJEICD.js.map → google-ads-YZTK3YTW.js.map} +0 -0
  880. /package/dist/{gsc-OJDMSP6H.js.map → gsc-FILOUFCG.js.map} +0 -0
  881. /package/dist/{history-LXRFZNW7.js.map → history-QATQCGVQ.js.map} +0 -0
  882. /package/dist/{history-FPXZOUHT.js.map → history-RYTNMGU5.js.map} +0 -0
  883. /package/dist/{history-2LE4ELLB.js.map → history-XDYDNQWK.js.map} +0 -0
  884. /package/dist/{hubspot-MNREQEVI.js.map → hubspot-IJERD4KT.js.map} +0 -0
  885. /package/dist/{ideas-4N7WMX3P.js.map → ideas-TT24LJR5.js.map} +0 -0
  886. /package/dist/{images-KVMFKQX5.js.map → images-PLYPUXM2.js.map} +0 -0
  887. /package/dist/{ingest-VG4YGXB2.js.map → ingest-CSPC3RUK.js.map} +0 -0
  888. /package/dist/{ingest-GUJNPD6S.js.map → ingest-MSPQX3Z6.js.map} +0 -0
  889. /package/dist/{insights-LZJZGNJZ.js.map → insights-AVNMRFQ4.js.map} +0 -0
  890. /package/dist/{insights-H6M6VI43.js.map → insights-OZ2EXOHH.js.map} +0 -0
  891. /package/dist/{inspect-VODWKUQY.js.map → inspect-VD6CB2NA.js.map} +0 -0
  892. /package/dist/{instant-experiences-J4GSS3Y6.js.map → instant-experiences-M2JYG2QS.js.map} +0 -0
  893. /package/dist/{job-UFGGBDG7.js.map → job-OJB6KIDV.js.map} +0 -0
  894. /package/dist/{job-create-XM4NH322.js.map → job-create-C6FGCDW4.js.map} +0 -0
  895. /package/dist/{job-status-47L5Z57J.js.map → job-status-4RJHESID.js.map} +0 -0
  896. /package/dist/{keyword-metrics-LOLNR24U.js.map → keyword-metrics-NJV3WR75.js.map} +0 -0
  897. /package/dist/{keywords-for-site-PLTJBXVN.js.map → keywords-for-site-B7MUDHFH.js.map} +0 -0
  898. /package/dist/{landing-JMH3WIK2.js.map → landing-RKOEVY7L.js.map} +0 -0
  899. /package/dist/{languages-SVTYYYOC.js.map → languages-27QCKMNL.js.map} +0 -0
  900. /package/dist/{leads-SEEJ3KRR.js.map → leads-AEXWNBAT.js.map} +0 -0
  901. /package/dist/{leads-XPIBMZI7.js.map → leads-O2NLCYDO.js.map} +0 -0
  902. /package/dist/{learn-MOHK6DHI.js.map → learn-XNN3DGDF.js.map} +0 -0
  903. /package/dist/{line-item-writes-5RVCYHHH.js.map → line-item-writes-VSP6WEYK.js.map} +0 -0
  904. /package/dist/{line-items-OESD2IJ6.js.map → line-items-BQ2CKMGL.js.map} +0 -0
  905. /package/dist/{link-PURCDO7A.js.map → link-ENZQAISO.js.map} +0 -0
  906. /package/dist/{linkedin-YWLXEPLB.js.map → linkedin-YALC66DF.js.map} +0 -0
  907. /package/dist/{linkedin-person-L22XA5LG.js.map → linkedin-person-3RCX4MI3.js.map} +0 -0
  908. /package/dist/{list-T5ZVVC4L.js.map → list-AF522LRC.js.map} +0 -0
  909. /package/dist/{list-KE6PQV2U.js.map → list-GPTYUCSX.js.map} +0 -0
  910. /package/dist/{list-L5VZ35AO.js.map → list-VYTHVUDP.js.map} +0 -0
  911. /package/dist/{locations-5SLLGWZO.js.map → locations-EA5VGY56.js.map} +0 -0
  912. /package/dist/{locations-7EBZ6KRH.js.map → locations-OS24BBXE.js.map} +0 -0
  913. /package/dist/{log-D3WU36FX.js.map → log-NJR3FJWN.js.map} +0 -0
  914. /package/dist/{lookup-OU6CLATK.js.map → lookup-QNLX2535.js.map} +0 -0
  915. /package/dist/{make-QPE6H3NT.js.map → make-4XUB6RSF.js.map} +0 -0
  916. /package/dist/{map-PT7JJYQR.js.map → map-LIYQCWXU.js.map} +0 -0
  917. /package/dist/{mcp-62MSONPH.js.map → mcp-QDOAKB3A.js.map} +0 -0
  918. /package/dist/{media-YKCCMLXL.js.map → media-5SWJCRHI.js.map} +0 -0
  919. /package/dist/{media-DGV2AMZI.js.map → media-WGIEUEZW.js.map} +0 -0
  920. /package/dist/{media-sources-DGVR3YPL.js.map → media-sources-LFSDIPUB.js.map} +0 -0
  921. /package/dist/{members-DAHPS3MB.js.map → members-KGKQQFMN.js.map} +0 -0
  922. /package/dist/{meta-5TRG7RTQ.js.map → meta-DRDMT5X4.js.map} +0 -0
  923. /package/dist/{metrics-WRERNMRK.js.map → metrics-NCAYDJNO.js.map} +0 -0
  924. /package/dist/{normalize-ZOJ4YROH.js.map → normalize-DQPKM3MG.js.map} +0 -0
  925. /package/dist/{options-DTB2NYBL.js.map → options-XIH7YPEG.js.map} +0 -0
  926. /package/dist/{organization-5JHFNUOD.js.map → organization-BUSXIGA4.js.map} +0 -0
  927. /package/dist/{output-7X5WPPCA.js.map → output-HZW7LNUL.js.map} +0 -0
  928. /package/dist/{page-photos-VYJU4RNQ.js.map → page-photos-PDSKTR2Z.js.map} +0 -0
  929. /package/dist/{pages-6YMPZDEY.js.map → pages-UH6XEZBO.js.map} +0 -0
  930. /package/dist/{performance-W6CJEUHR.js.map → performance-PU4NHFUE.js.map} +0 -0
  931. /package/dist/{performance-VFDK5PHT.js.map → performance-Y2DTYSFV.js.map} +0 -0
  932. /package/dist/{pixels-WTTLC4O5.js.map → pixels-GY4LKGJK.js.map} +0 -0
  933. /package/dist/{pixels-DZDVNIVL.js.map → pixels-PYNK73UG.js.map} +0 -0
  934. /package/dist/{plan-JAWESWJN.js.map → plan-4OYUV2EF.js.map} +0 -0
  935. /package/dist/{preview-JZXGR4KN.js.map → preview-7E4E3QPT.js.map} +0 -0
  936. /package/dist/{preview-PUF62HJU.js.map → preview-NP3OFLT6.js.map} +0 -0
  937. /package/dist/{promoted-tweet-writes-FW4BAA5O.js.map → promoted-tweet-writes-XILB6VCP.js.map} +0 -0
  938. /package/dist/{promoted-tweets-LYHKCVNV.js.map → promoted-tweets-CBYZG6BG.js.map} +0 -0
  939. /package/dist/{properties-Z5S3LRJ5.js.map → properties-RDOGNY2O.js.map} +0 -0
  940. /package/dist/{publish-S2KD5PCN.js.map → publish-MDVPC77V.js.map} +0 -0
  941. /package/dist/{query-KKXCMH3Q.js.map → query-K7R5GQ4E.js.map} +0 -0
  942. /package/dist/{query-3QFT42PG.js.map → query-LJS64SEQ.js.map} +0 -0
  943. /package/dist/{query-QXKGVHZL.js.map → query-PO3RT7BR.js.map} +0 -0
  944. /package/dist/{questionnaire-U7UYICEA.js.map → questionnaire-4OH6K2BF.js.map} +0 -0
  945. /package/dist/{read-ENUS7P3L.js.map → read-MU5XGWMK.js.map} +0 -0
  946. /package/dist/{reddit-AF2PPR3K.js.map → reddit-ZPKVVZGP.js.map} +0 -0
  947. /package/dist/{refresh-UC7OTPXS.js.map → refresh-V34YWN3W.js.map} +0 -0
  948. /package/dist/{release-FQOJ2FJ5.js.map → release-WRNUOSHB.js.map} +0 -0
  949. /package/dist/{remove-H3SU4GJK.js.map → remove-HKWV7P27.js.map} +0 -0
  950. /package/dist/{reopen-M2PZEHKF.js.map → reopen-VHHYVAKC.js.map} +0 -0
  951. /package/dist/{rerun-M63ZAYAV.js.map → rerun-THE43RCG.js.map} +0 -0
  952. /package/dist/{research-2N5HAFSB.js.map → research-773Y7GT4.js.map} +0 -0
  953. /package/dist/{research-ILZZTO6Q.js.map → research-G5A2WXVK.js.map} +0 -0
  954. /package/dist/{reset-XAKAEDPH.js.map → reset-GFJ3AKF5.js.map} +0 -0
  955. /package/dist/{reset-JN437DOZ.js.map → reset-MVTWA3HT.js.map} +0 -0
  956. /package/dist/{resolve-WVE6D7CP.js.map → resolve-FCAP4LQ3.js.map} +0 -0
  957. /package/dist/{retry-PMJ22IN4.js.map → retry-AGHA6IVT.js.map} +0 -0
  958. /package/dist/{retry-ILL2ZATG.js.map → retry-LDJ6FZCZ.js.map} +0 -0
  959. /package/dist/{revenue-UWU3ACGP.js.map → revenue-VFML2I5V.js.map} +0 -0
  960. /package/dist/{rule-writes-WT6DQZZE.js.map → rule-writes-KWJNFMJV.js.map} +0 -0
  961. /package/dist/{rules-BOOFGKJA.js.map → rules-4A25K2P7.js.map} +0 -0
  962. /package/dist/{rules-Y75KR2PC.js.map → rules-NRH2X4BM.js.map} +0 -0
  963. /package/dist/{rules-add-7K5ESEZQ.js.map → rules-add-GT7NCUB3.js.map} +0 -0
  964. /package/dist/{run-2AIXS3KE.js.map → run-NFLKYVIC.js.map} +0 -0
  965. /package/dist/{run-OCCY7JHY.js.map → run-ZLHQNLCF.js.map} +0 -0
  966. /package/dist/{scaffold-ad-JQIOCLDU.js.map → scaffold-ad-AJN67FWG.js.map} +0 -0
  967. /package/dist/{scaffold-static-ad-BW56MVIV.js.map → scaffold-static-ad-L6KXZ3TN.js.map} +0 -0
  968. /package/dist/{scaffold-video-OGPMQO5D.js.map → scaffold-video-XQBZZ5TZ.js.map} +0 -0
  969. /package/dist/{schedule-WV6NZ4CK.js.map → schedule-45CJDHIX.js.map} +0 -0
  970. /package/dist/{scheduled-agents-MZZMHN3T.js.map → scheduled-agents-72MWHK63.js.map} +0 -0
  971. /package/dist/{schema-ADRFE3AV.js.map → schema-VX66FH4O.js.map} +0 -0
  972. /package/dist/{search-GGWTLVG7.js.map → search-Y6TS5UZS.js.map} +0 -0
  973. /package/dist/{select-HYZ5JYO7.js.map → select-MZ2U7U5U.js.map} +0 -0
  974. /package/dist/{sends-4ZO6BNZ4.js.map → sends-I2B6F5NW.js.map} +0 -0
  975. /package/dist/{set-prompt-FMJ32YNG.js.map → set-prompt-YH6PXNXB.js.map} +0 -0
  976. /package/dist/{setup-links-76AJJR5Z.js.map → setup-links-Y4YYDQBK.js.map} +0 -0
  977. /package/dist/{shared-UPMEBTVP.js.map → shared-Z7INVKCZ.js.map} +0 -0
  978. /package/dist/{shopify-Q3XMCPHI.js.map → shopify-AUDLALBS.js.map} +0 -0
  979. /package/dist/{site-I4HFMTE5.js.map → site-WZ654OP3.js.map} +0 -0
  980. /package/dist/{sitemaps-P3K5Z4TW.js.map → sitemaps-EOMSRKOD.js.map} +0 -0
  981. /package/dist/{sites-TURWC53D.js.map → sites-6M73AONG.js.map} +0 -0
  982. /package/dist/{sources-GGLP5NQU.js.map → sources-FCBFLR2J.js.map} +0 -0
  983. /package/dist/{sources-ORL5AEH5.js.map → sources-OR36YOTG.js.map} +0 -0
  984. /package/dist/{stale-GVPIUPBX.js.map → stale-VSSDVB4H.js.map} +0 -0
  985. /package/dist/{stats-XNKAJD2Z.js.map → stats-MFEH2TSW.js.map} +0 -0
  986. /package/dist/{status-LSHCACMZ.js.map → status-L7LYUD3F.js.map} +0 -0
  987. /package/dist/{stock-RZH4SEGS.js.map → stock-73PLAUYU.js.map} +0 -0
  988. /package/dist/{studies-5G67ODR2.js.map → studies-XNJXWD7I.js.map} +0 -0
  989. /package/dist/{study-writes-34BJFZAZ.js.map → study-writes-MFAJQHXK.js.map} +0 -0
  990. /package/dist/{sync-QVEUQKU5.js.map → sync-SI25TKY5.js.map} +0 -0
  991. /package/dist/{sync-MK7JTH3U.js.map → sync-XBC3PSSV.js.map} +0 -0
  992. /package/dist/{sync-definition-EFAJ744M.js.map → sync-definition-IM2NY5QC.js.map} +0 -0
  993. /package/dist/{tag-manager-3GIW6BPB.js.map → tag-manager-JFC6YYVP.js.map} +0 -0
  994. /package/dist/{tags-EOIC4EQK.js.map → tags-2KNOJ7A6.js.map} +0 -0
  995. /package/dist/{tags-G4HMOLZF.js.map → tags-COALQ2CT.js.map} +0 -0
  996. /package/dist/{tags-PF6UJWCF.js.map → tags-HCJTTLSR.js.map} +0 -0
  997. /package/dist/{tags-BE6L5NLG.js.map → tags-MVC56SHA.js.map} +0 -0
  998. /package/dist/{tags-5HX7TDJN.js.map → tags-UNUZVGUA.js.map} +0 -0
  999. /package/dist/{targeting-TVZPIUUI.js.map → targeting-ZBGR2PSX.js.map} +0 -0
  1000. /package/dist/{targeting-constants-RJS2STR5.js.map → targeting-constants-RF2732EW.js.map} +0 -0
  1001. /package/dist/{targeting-criteria-DOHSND62.js.map → targeting-criteria-HU7OAJUA.js.map} +0 -0
  1002. /package/dist/{targets-7AL4HPAW.js.map → targets-BNH37YAQ.js.map} +0 -0
  1003. /package/dist/{terms-AATAGKPT.js.map → terms-XFL6QO7A.js.map} +0 -0
  1004. /package/dist/{testimonials-BNYHKXD2.js.map → testimonials-IIAT5IDM.js.map} +0 -0
  1005. /package/dist/{themes-5HKRO5RR.js.map → themes-SUNQVNES.js.map} +0 -0
  1006. /package/dist/{top-companies-ASSEFHI3.js.map → top-companies-MSLNT33I.js.map} +0 -0
  1007. /package/dist/{transcript-OTAKTTSA.js.map → transcript-7WFXVRVW.js.map} +0 -0
  1008. /package/dist/{translate-ATGQD733.js.map → translate-IPTYPZF6.js.map} +0 -0
  1009. /package/dist/{triggers-JQYC4JLT.js.map → triggers-RBD2XGNG.js.map} +0 -0
  1010. /package/dist/{tweets-MLDLLLDB.js.map → tweets-6PQHJXJC.js.map} +0 -0
  1011. /package/dist/{unlink-FVHHULLC.js.map → unlink-5IMEUVIS.js.map} +0 -0
  1012. /package/dist/{unstage-FIRVPNRC.js.map → unstage-DSOVSWEK.js.map} +0 -0
  1013. /package/dist/{unstage-65DUBYNZ.js.map → unstage-O23ILHCY.js.map} +0 -0
  1014. /package/dist/{update-OD75FSPH.js.map → update-7JVV5ZL3.js.map} +0 -0
  1015. /package/dist/{update-G7RMT4OC.js.map → update-FIU2ECYQ.js.map} +0 -0
  1016. /package/dist/{update-EO5LVV34.js.map → update-HSS6CVUK.js.map} +0 -0
  1017. /package/dist/{update-RA6TX5NV.js.map → update-XWL3Q5QY.js.map} +0 -0
  1018. /package/dist/{upload-X33VIDOB.js.map → upload-B5SM33MK.js.map} +0 -0
  1019. /package/dist/{url-options-4J3FRXHO.js.map → url-options-NZAS37S5.js.map} +0 -0
  1020. /package/dist/{url-params-IBE4HUKK.js.map → url-params-LUQMABZX.js.map} +0 -0
  1021. /package/dist/{validate-ZKQN55FV.js.map → validate-4NXKYAL2.js.map} +0 -0
  1022. /package/dist/{videos-NITQKILV.js.map → videos-AHOLXU42.js.map} +0 -0
  1023. /package/dist/{videos-RGCF3EAE.js.map → videos-FMV4AVB2.js.map} +0 -0
  1024. /package/dist/{viewer-check-AKVX3XFW.js.map → viewer-check-2W6BTVQV.js.map} +0 -0
  1025. /package/dist/{web-QVR2EQ7X.js.map → web-K2EMYVCD.js.map} +0 -0
  1026. /package/dist/{winning-ads-3R4RU3FL.js.map → winning-ads-Q3RXH7EC.js.map} +0 -0
  1027. /package/dist/{write-commands-SIOVTRHH.js.map → write-commands-5OFOD7TE.js.map} +0 -0
  1028. /package/dist/{write-commands-XLZCRVTU.js.map → write-commands-LHEJESKL.js.map} +0 -0
  1029. /package/dist/{write-commands-OBQPQUIE.js.map → write-commands-SD6DXVNK.js.map} +0 -0
  1030. /package/dist/{write-commands-QQFBJBYD.js.map → write-commands-UEQR7ZXO.js.map} +0 -0
  1031. /package/dist/{x-747NTJKH.js.map → x-UNSHYLJJ.js.map} +0 -0
@@ -1,1367 +0,0 @@
1
- import {
2
- scaffoldDelivery
3
- } from "./chunk-M45SOKI5.js";
4
- import {
5
- makeSeriesAd,
6
- seriesMadeEnvelope
7
- } from "./chunk-XRR5NN2V.js";
8
- import {
9
- runBaker
10
- } from "./chunk-FHWYQSMY.js";
11
- import {
12
- audienceQuery,
13
- definitionFieldsOf,
14
- fitBetOf,
15
- fitsIdea,
16
- freshReferencesFirst,
17
- ideaSpec,
18
- isOwnBrand,
19
- isTakenReference,
20
- isVideoIdea,
21
- missingElements,
22
- personaWho,
23
- pooledCandidates,
24
- rankedForOf,
25
- referenceSearchesFor,
26
- referenceWhereOf,
27
- setDefinitionFields,
28
- setSpecMessage,
29
- setSpecViewer,
30
- unsourcedCopyLines,
31
- whyUnfit,
32
- withFitConcept
33
- } from "./chunk-X3YYZLBH.js";
34
- import "./chunk-3GKAVXR3.js";
35
- import "./chunk-N2MGR7HT.js";
36
- import "./chunk-EJBLF2LI.js";
37
- import {
38
- parseDefinitionDelivery,
39
- parseDefinitionSourceFields,
40
- platformsNamedIn,
41
- projectAdaptBriefs,
42
- projectFormatBriefs,
43
- projectStaticBriefs,
44
- recordedShape,
45
- reroutedOnSpec,
46
- thinkingOutline,
47
- withThinking
48
- } from "./chunk-B47TRSMB.js";
49
- import {
50
- liveViewerLookups,
51
- readPersonas
52
- } from "./chunk-IXVVTPG6.js";
53
- import "./chunk-GR2BPVLX.js";
54
- import {
55
- buildSearchBody
56
- } from "./chunk-PH3FZZIT.js";
57
- import "./chunk-DEZBCK5P.js";
58
- import "./chunk-KDVYI4LC.js";
59
- import {
60
- storeProductReads
61
- } from "./chunk-CP6RFWLW.js";
62
- import "./chunk-EKX37C3T.js";
63
- import {
64
- IDEAS_DIR,
65
- coverageOf,
66
- readCreativeRecords,
67
- readIdeas,
68
- readInsights,
69
- readKnowledgeCorpus,
70
- readPersonaIds
71
- } from "./chunk-Q5DFEVLE.js";
72
- import {
73
- NO_FIT_HINT,
74
- conceptFromFit,
75
- fitReference,
76
- notADesignReference,
77
- pictureOf,
78
- resolveSourcePlatform
79
- } from "./chunk-P6KTCPJG.js";
80
- import {
81
- castInventory,
82
- companyName
83
- } from "./chunk-S3ZW3KTX.js";
84
- import "./chunk-OFMFBRSL.js";
85
- import {
86
- avoidOf,
87
- memeRegister,
88
- readCompanyReading,
89
- readCreativeContext
90
- } from "./chunk-ZREKNWIE.js";
91
- import {
92
- checkIdeas,
93
- sourcesClaims
94
- } from "./chunk-UKZKLXTE.js";
95
- import "./chunk-U5LSGCT3.js";
96
- import "./chunk-AE5S5B2S.js";
97
- import "./chunk-KDAINT54.js";
98
- import "./chunk-G6XKD7QE.js";
99
- import "./chunk-4H6XLX7E.js";
100
- import {
101
- holdUnbilledSpend
102
- } from "./chunk-Y5PNLB24.js";
103
- import {
104
- findWorkspaceRoot
105
- } from "./chunk-N3PASNUA.js";
106
- import "./chunk-HBRXFQQV.js";
107
- import "./chunk-X3GWGFZP.js";
108
- import "./chunk-GWLP45WQ.js";
109
- import "./chunk-DGCUPJZD.js";
110
- import "./chunk-6QINKM6T.js";
111
- import {
112
- SPEC_SHAPES_HINT,
113
- decisionOf,
114
- isVital,
115
- readAdSpec,
116
- unwrittenProblems
117
- } from "./chunk-H3HA22Z3.js";
118
- import {
119
- askAboutImages,
120
- askAboutText
121
- } from "./chunk-DLM5OSHM.js";
122
- import "./chunk-MCJ5I5LR.js";
123
- import {
124
- describeMarket,
125
- marketFromCompanyDoc,
126
- viewerFromKnowledge
127
- } from "./chunk-2WZI36D3.js";
128
- import "./chunk-65Y3RCWP.js";
129
- import {
130
- askJevQuestions
131
- } from "./chunk-E56V3RFO.js";
132
- import "./chunk-EL3TDR5S.js";
133
- import "./chunk-G6U45QD3.js";
134
- import "./chunk-X6U3B6YK.js";
135
- import "./chunk-LXOTNL65.js";
136
- import "./chunk-QV6AST5T.js";
137
- import "./chunk-WCU362Z6.js";
138
- import "./chunk-GIWHHCD6.js";
139
- import "./chunk-SOPVIIUW.js";
140
- import "./chunk-G4FG5EQO.js";
141
- import "./chunk-R7XDGNZD.js";
142
- import "./chunk-XHWHBGKX.js";
143
- import {
144
- apiPost
145
- } from "./chunk-QEREDRZO.js";
146
- import "./chunk-JXTNP3B5.js";
147
- import "./chunk-45D6WRCJ.js";
148
- import {
149
- registerSchema,
150
- writeJson
151
- } from "./chunk-CCYZJMZ7.js";
152
- import "./chunk-YQSBHWOI.js";
153
-
154
- // src/commands/creatives/make.ts
155
- import { mkdir as mkdir2, mkdtemp, readdir, readFile as readFile2, rm, stat, writeFile as writeFile2 } from "fs/promises";
156
- import { tmpdir } from "os";
157
- import path2 from "path";
158
- import { defineCommand } from "citty";
159
-
160
- // src/commands/creatives/reference-brief.ts
161
- import { createHash } from "crypto";
162
- import { mkdir, readFile, writeFile } from "fs/promises";
163
- import path from "path";
164
- import { z } from "zod";
165
- var text = z.string().transform((s) => s.trim()).pipe(z.string().min(1)).optional().catch(void 0);
166
- var shortList = (max) => z.array(z.string()).transform(
167
- (list) => list.map((s) => s.trim()).filter(Boolean).slice(0, max)
168
- ).catch([]);
169
- var BriefSchema = z.object({
170
- category: text,
171
- industry: text,
172
- audience: text,
173
- buyer: z.enum(["consumer", "small_business", "enterprise"]).optional().catch(void 0),
174
- country: z.string().transform((s) => s.trim().toUpperCase()).pipe(z.union([z.literal("").transform(() => null), z.string().regex(/^[A-Z]{2}$/)])).optional().catch(void 0),
175
- humour: z.enum(["fits", "risky", "off_brand"]).optional().catch(void 0),
176
- avoid: shortList(5),
177
- brands: shortList(4),
178
- wider: shortList(4),
179
- shows: shortList(2)
180
- });
181
- function parseReferenceBrief(reply) {
182
- const parsed = BriefSchema.safeParse(reply);
183
- if (!parsed.success || !parsed.data.category) return null;
184
- const { category, avoid, brands, wider, shows, ...rest } = parsed.data;
185
- const known = Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== void 0));
186
- return { category, ...known, avoid, brands, wider, ...shows.length > 0 ? { shows } : {} };
187
- }
188
- var REFERENCE_BRIEF_MODEL = "google/gemini-3.5-flash-lite";
189
- var REFERENCE_BRIEF_REQUEST = {
190
- provider: { order: ["google-vertex"], allow_fallbacks: false },
191
- seed: 0,
192
- temperature: 0,
193
- response_format: { type: "json_object" }
194
- };
195
- var REFERENCE_BRIEF_TIMEOUT_MS = 2e4;
196
- var MAX_COMPANY_CHARS = 12e3;
197
- function referenceBriefPrompt(companyDoc, ad) {
198
- return `You prepare a search of a library of proven ads (Meta, LinkedIn, TikTok, Google) for the ad below. The library's search reads short English phrases the way it files ads: by what the ad sells, its industry and who it is for.
199
-
200
- The company (its own notes):
201
- """
202
- ${companyDoc.slice(0, MAX_COMPANY_CHARS)}
203
- """
204
-
205
- The ad we are making:
206
- - Says: ${ad.message}
207
- - For: ${ad.who}${ad.shows ? `
208
- - Shows first: ${ad.shows}` : ""}
209
-
210
- Answer only JSON:
211
- {
212
- "category": "what THIS ad sells, 2-6 plain English words a library would file it under, no brand names (e.g. 'electrician training course', 'pet health insurance', 'ecommerce customer service AI')",
213
- "industry": "the broader industry, 1-3 English words (e.g. 'vocational education', 'insurance', 'customer service software')",
214
- "audience": "who the ad is for and the problem they have, 4-9 plain English words (e.g. 'unemployed adults looking for a stable trade')",
215
- "wider": ["4 library searches of 2-6 English words that widen from this ad, closest first, for when ads of exactly this product are few. 1: an adjacent product the same buyer weighs (e.g. 'tennis court construction'). 2: the same buyer buying something else (e.g. 'gym and sports club owners'). 3 and 4: the same kind of decision with NO word of this product's category, as other industries sell it (e.g. for a padel-court builder: 'turnkey franchise investment', 'commercial real estate investment'; for an acne serum: 'skincare before and after'). Never brand names"]${ad.shows ? `,
216
- "shows": ["2 library searches of 6-14 English words for the KIND of picture 'Shows first' describes, the way the library describes an ad's visual: the device and what it contrasts or proves, with no word of this product, no numbers and no brand (e.g. for 'a calendar strip, 9 days green against 31 grey': 'time comparison graphic: the usual long wait against a much shorter one', 'two bars side by side, ours far shorter than the competition'; for 'a phone with missed calls next to a quote': 'phone screen full of missed calls and notifications, the stress of chasing')"]` : ""}
217
- }`;
218
- }
219
- var askBriefModel = (root) => async (prompt) => {
220
- const spent = [];
221
- const answer = await askAboutText(REFERENCE_BRIEF_MODEL, prompt, (u) => spent.push(u), {
222
- timeoutMs: REFERENCE_BRIEF_TIMEOUT_MS,
223
- request: REFERENCE_BRIEF_REQUEST
224
- }).catch(() => null);
225
- await holdUnbilledSpend(path.join(root, "canvas", ".cache"), spent).catch(() => void 0);
226
- return answer;
227
- };
228
- var briefCachePath = (root, key) => path.join(root, "canvas", ".cache", "reference-brief", `${key}.json`);
229
- async function referenceBriefFor(root, ad, ask = askBriefModel(root)) {
230
- const companyDoc = await readFile(path.join(root, "COMPANY.md"), "utf8").catch(() => "");
231
- const [company, own] = await Promise.all([readCompanyReading(root, ask), adBrief(root, companyDoc, ad, ask)]);
232
- if (!own) return null;
233
- const {
234
- sells: _sells,
235
- category: _category,
236
- industry,
237
- memes: _memes,
238
- memes_why: _why,
239
- ...facts
240
- } = company ?? { brands: [] };
241
- const register = memeRegister(company);
242
- return {
243
- ...facts,
244
- ...register ? { memes: register.memes, ...register.why ? { memesWhy: register.why } : {} } : {},
245
- ...own,
246
- ...own.industry ?? industry ? { industry: own.industry ?? industry } : {},
247
- brands: own.brands.length > 0 ? own.brands : facts.brands
248
- };
249
- }
250
- async function adBrief(root, companyDoc, ad, ask) {
251
- const prompt = referenceBriefPrompt(companyDoc, ad);
252
- const file = briefCachePath(root, createHash("sha256").update(prompt).digest("hex").slice(0, 16));
253
- const cached = await readFile(file, "utf8").then((raw) => parseReferenceBrief(JSON.parse(raw))).catch(() => null);
254
- if (cached) return cached;
255
- const brief = parseReferenceBrief(await ask(prompt));
256
- if (!brief) return null;
257
- await mkdir(path.dirname(file), { recursive: true });
258
- await writeFile(file, `${JSON.stringify(brief, null, 2)}
259
- `, "utf8");
260
- return brief;
261
- }
262
-
263
- // src/commands/creatives/reference-rank.ts
264
- var BUYERS = {
265
- consumer: "people buying for themselves",
266
- small_business: "small businesses buying for work",
267
- enterprise: "large companies buying for work"
268
- };
269
- function memesLine(bet) {
270
- return bet.memes === "off_brand" ? ` Our brand's voice does not run memes${bet.memesWhy ? ` (${bet.memesWhy})` : ""}: rank meme and reaction-face ads last.` : "";
271
- }
272
- function oursText(bet) {
273
- const sells = `${bet.category}${bet.industry ? ` (${bet.industry})` : ""}`;
274
- const buyer = bet.buyer ? `, to ${BUYERS[bet.buyer]}` : "";
275
- const humour = bet.humour === "off_brand" ? " Our brand does not joke in ads." : "";
276
- const avoid = bet.avoid?.length ? ` Our brand never uses: ${bet.avoid.join(", ")}.` : "";
277
- const shows = bet.shows ? ` It shows: ${bet.shows}.` : "";
278
- return `We sell: ${sells}${buyer}. Our ad says: "${bet.message}". It is for: ${bet.who}.${shows}${humour}${memesLine(bet)}${avoid}`;
279
- }
280
- function cardText(c) {
281
- const d = c.dna ?? {};
282
- const line = (label, value) => value ? `${label}: ${value}` : "";
283
- return [
284
- line("Advertiser", c.advertiser),
285
- line("Industry", [d.industry, d.business_model].filter(Boolean).join(", ")),
286
- line("Made for", d.target_persona),
287
- line("Looks like", [d.container ?? c.format, d.visual].filter(Boolean).join(": ")),
288
- line("Concept", d.creative_concept),
289
- line("Why it works", d.mechanism)
290
- ].filter(Boolean).join("\n").slice(0, 1400);
291
- }
292
- var QUESTIONS_PER_REQUEST = 60;
293
- var QUESTIONS = [
294
- "Was `ad` made for the same kind of buyer as `ours`: a person buying for themselves, or a business buying for work, of a similar size?",
295
- "Would the viewer `ours` is for feel that `ad` speaks to someone like them, about a problem like theirs?",
296
- "Could the brand of `ours` run an ad made like `ad` (its look, its tone, its kind of hook) without breaking its own rules or looking out of character?"
297
- ];
298
- var SHOWS_QUESTION = "Does `ad` show what `ours` shows (its `It shows:`), or the same kind of picture doing the same job, so that ours could be made in its image?";
299
- var REMADE_QUESTION = "Remade with the product, people and words of `ours`, would a picture made like `ad` speak to the viewer `ours` is for, about a problem like theirs?";
300
- function questionsFor(bet) {
301
- return bet.shows ? [SHOWS_QUESTION, REMADE_QUESTION, QUESTIONS[2] ?? ""] : QUESTIONS;
302
- }
303
- async function rankForBet(candidates, bet, askOverride, onSpend) {
304
- const ask = askOverride ?? ((questions2) => askJevQuestions(questions2, onSpend));
305
- if (candidates.length < 2) return [...candidates];
306
- const ours = oursText(bet);
307
- const asks = questionsFor(bet);
308
- const questions = candidates.flatMap(
309
- (c) => asks.map((question) => ({ type: "noul", instructions: { ours, ad: cardText(c), question } }))
310
- );
311
- const parts = [];
312
- for (let start = 0; start < questions.length; start += QUESTIONS_PER_REQUEST) {
313
- parts.push(questions.slice(start, start + QUESTIONS_PER_REQUEST));
314
- }
315
- const replies = await Promise.all(parts.map((part) => ask(part).catch(() => null)));
316
- if (replies.some((r, i) => !r || r.length !== parts[i]?.length)) return [...candidates];
317
- const answers = replies.flatMap((r) => r ?? []);
318
- const scored = candidates.map((c, i) => ({
319
- c,
320
- i,
321
- score: asks.reduce((product, _, k) => {
322
- const answer = answers[i * asks.length + k];
323
- return product * (answer && "noul" in answer ? answer.noul : 0.5);
324
- }, 1)
325
- }));
326
- return scored.sort((a, b) => b.score - a.score || a.i - b.i).map((s) => s.c);
327
- }
328
-
329
- // src/commands/creatives/reference-pick.ts
330
- var REFERENCE_PICK_MODEL = "~google/gemini-pro-latest";
331
- var REFERENCE_PICK_TIMEOUT_MS = 6e4;
332
- function vitalRead(fit) {
333
- const vital = (fit.load_bearing ?? []).filter(isVital).map((l) => {
334
- const ours = decisionOf(l) === "keep" ? "kept as it is" : l.ours?.trim() ? `ours: ${l.ours.trim()}` : "";
335
- return `${l.job === "stop" ? "stops the scroll with" : "proof:"} ${l.element}${ours ? ` (${ours})` : ""}`;
336
- });
337
- return vital.length > 0 ? ` It ${vital.join("; ")}.` : "";
338
- }
339
- var TAKE_ELEMENTS = ["hook", "visual", "who_appears", "proof", "layout", "call_to_action"];
340
- function referencePickPrompt(options, bet) {
341
- const reads = options.map((o, i) => {
342
- const wins = Object.values(o.fit.why_it_wins ?? {}).filter(Boolean).join("; ");
343
- const viewer = o.fit.our_viewer ? ` Our viewer: ${o.fit.our_viewer.stops}, ${o.fit.our_viewer.why}` : "";
344
- return `${i + 1}. ${o.advertiser ?? "an advertiser"}: wins on ${wins || "(not read)"}.${vitalRead(o.fit)}${viewer}`;
345
- }).join("\n");
346
- const avoid = bet.avoid?.length ? ` The brand never uses: ${bet.avoid.join(", ").replace(/\.$/, "")}. Its rules forbid only what they name: "no stock photography" never rules out a meme's reaction face, our own people or our Avatars.` : "";
347
- const humour = `${bet.humour === "off_brand" ? " The brand does not joke in ads." : ""}${memesLine(bet)}`;
348
- return `Pick the proven ad our next ad should be built on. Images 1..${options.length} are proven ads of other advertisers, each already checked to be adaptable.
349
-
350
- We sell: ${bet.category}${bet.industry ? ` (${bet.industry})` : ""}. Our ad says: "${bet.message}". It is for: ${bet.who}.${bet.shows ? ` It shows first: ${bet.shows}; the ad built on wins only if it can show that as strongly as its own picture shows its offer.` : ""}${humour}${avoid}
351
-
352
- What the check read of each:
353
- ${reads}
354
-
355
- Rank them by how likely a version of each, made for us, stops this exact viewer and makes them act: the viewer must see themselves and their problem in it, its winning move must carry our offer as strongly as theirs, and our brand must be able to run it.
356
-
357
- Then, as a media buyer does, say what our ad takes. Our ad may combine several: the hook of one, the visual of another, the proof of a third. For each element worth taking (${TAKE_ELEMENTS.join(", ")}), the image whose version of it would work best for us, exactly what to take, and why it applies to this viewer. Leave out an element no image does well for us. Then what our ad must not copy from them: a device that misleads or that the platform restricts (a fake newspaper or news page, a fake app notification), dated urgency, another brand's marks, words that hide what is sold; never what stops the scroll or the proof, which ours keeps as named above. A rule forbids only what it names: "no stock photography" never rules out a meme's reaction face, our own people or our Avatars; when a rule of ours is why, quote the rule word for word.
358
-
359
- Answer only JSON: {"ranking": [image numbers, best first], "why": "one sentence on why the first beats the others", "takes": [{"element": "hook", "from": image number, "what": "...", "applies": "..."}], "avoid": [{"from": image number, "what": "...", "why": "..."}]}`;
360
- }
361
- function readPickRanking(reply, count) {
362
- const ranking = reply?.ranking;
363
- if (!Array.isArray(ranking)) return null;
364
- const order = [];
365
- for (const n of ranking) {
366
- const index = Number(n) - 1;
367
- if (Number.isInteger(index) && index >= 0 && index < count && !order.includes(index)) order.push(index);
368
- }
369
- if (order.length === 0) return null;
370
- for (let i = 0; i < count; i++) if (!order.includes(i)) order.push(i);
371
- return order;
372
- }
373
- var text2 = (value) => typeof value === "string" ? value.trim() : "";
374
- function adOf(from, options) {
375
- return options[Number(from) - 1]?.adId ?? null;
376
- }
377
- function readTakes(reply, options) {
378
- const takes = reply?.takes;
379
- if (!Array.isArray(takes)) return [];
380
- const read = [];
381
- for (const t of takes) {
382
- const element = TAKE_ELEMENTS.find((e) => e === t?.element);
383
- const adId = adOf(t?.from, options);
384
- if (!element || !adId || !text2(t.what) || read.some((r) => r.element === element)) continue;
385
- read.push({ element, adId, what: text2(t.what), applies: text2(t.applies) });
386
- }
387
- return read;
388
- }
389
- function readAvoid(reply, options) {
390
- const avoid = reply?.avoid;
391
- if (!Array.isArray(avoid)) return [];
392
- return avoid.flatMap((a) => {
393
- const adId = adOf(a?.from, options);
394
- return adId && text2(a.what) ? [{ adId, what: text2(a.what), why: text2(a.why) }] : [];
395
- });
396
- }
397
- var askPickModel = (onSpend) => (pictures, prompt) => askAboutImages(REFERENCE_PICK_MODEL, pictures, prompt, onSpend, REFERENCE_PICK_TIMEOUT_MS).catch(() => null);
398
- async function pickAmong(options, bet, ask = askPickModel()) {
399
- const reply = await ask(
400
- options.map((o) => o.picture),
401
- referencePickPrompt(options, bet)
402
- );
403
- const order = readPickRanking(reply, options.length);
404
- if (!order) return null;
405
- const why = text2(reply.why);
406
- const takes = readTakes(reply, options);
407
- const avoid = readAvoid(reply, options);
408
- return {
409
- order,
410
- ...why ? { why } : {},
411
- ...takes.length > 0 ? { takes } : {},
412
- ...avoid.length > 0 ? { avoid } : {}
413
- };
414
- }
415
-
416
- // src/commands/creatives/make.ts
417
- var FITS_TRIED = 6;
418
- var FITS_AT_ONCE = 3;
419
- var RANKED_POOL = 24;
420
- var SEARCH_TIMEOUT_MS = 12e4;
421
- var REFERENCE_MS = 15e4;
422
- var DESCRIPTION = `Build one idea from src/creatives/_ideas/ into a creative. For a static it builds on a proven winning ad: it reads what this ad sells and for whom, searches ads of that in its market (the idea's container first, then any), then ads made for the idea's persona, its industry, the idea's message, then the container's strongest winners from any category; leaves out the company's own ads, ranks the rest for this ad's buyer, viewer and brand (a proven ad, or brand, another creative is already built on last, so a batch of ideas builds on different winners), checks which fit us (one whose scroll-stopper or proof cannot be ours is passed over, and the first hint says which and why) and, when several do, compares them side by side, scaffolds the creative on the best-ranked one, records the idea on it and sets the ad's message. The fit says what made that ad win, so what ours carries of it (\`reference.carry\`: whole_ad, layout, hook or angle); its first hint names the ad: tell the person. When no proven ad fits, it starts the ad from the idea itself and says why (never a dead end, never retry with another format). You then write the copy lines and the scene in prompt.json and run it. Takes up to about two and a half minutes: run it in the foreground, once per idea.
423
-
424
- Where the ad runs decides its sizes (Meta 4:5 + 9:16, LinkedIn 1:1, TikTok 9:16): it is the idea's \`platforms\`, or --platforms from the person's request; nothing saying so is refused, never defaulted to Meta.
425
-
426
- Start here, with an idea from \`baker creatives ideas\` build_next:
427
- baker creatives make phone-payroll # static: reference found and checked for you
428
- baker creatives make phone-payroll --platforms linkedin # where it runs, when the idea does not say
429
- baker creatives make phone-payroll --adset 120210000000 # written for that ad set's viewer
430
- baker creatives make phone-payroll --reference 1310524137919413 # your own reference instead
431
- baker creatives make founder-story --spec beats.json # a video idea: from its beats spec
432
- baker creatives make phone-payroll --slug phone-payroll-h2 # another hook of the same idea
433
- baker creatives make tiktok-speed --series zernio-live # another message in the style of a ready ad
434
- Then: edit src/creatives/<slug>/prompt.json (copy + scene; the message is set), and \`baker canvas run src/creatives/<slug>/<slug>.canvas.json\`.`;
435
- var ARGS = {
436
- idea: { type: "positional", required: true, description: "The idea id (src/creatives/_ideas/<idea>.md)" },
437
- slug: { type: "string", required: false, description: "Creative slug (default: the idea id)" },
438
- adset: { type: "string", required: false, description: "Meta ad set the ad is for: its viewer and placements" },
439
- reference: {
440
- type: "string",
441
- required: false,
442
- description: "A library ad id to build on instead of searching (statics)"
443
- },
444
- platforms: {
445
- type: "string",
446
- required: false,
447
- description: "Where the ad runs, the main platform first: meta (4:5 + 9:16), linkedin (1:1), tiktok (9:16), google_demandgen, \u2026 Take it from the person's request; default the creative's definition (and the sizes it records), then the idea's `platforms`, then the ad set's (Meta). Nothing saying so is refused, never defaulted."
448
- },
449
- formats: {
450
- type: "string",
451
- required: false,
452
- description: "Exactly the sizes to make, when the person asks for others than the platform's (`--platforms linkedin --formats 1:1,4:5`)."
453
- },
454
- "reference-platform": {
455
- type: "string",
456
- required: false,
457
- description: "Library platform of --reference: meta|linkedin|tiktok|google (default meta). On google only display ads are built on (a static needs a picture)"
458
- },
459
- platform: {
460
- type: "string",
461
- required: false,
462
- description: "Retired: --platforms says where the ad runs; --reference-platform says which library --reference is in."
463
- },
464
- spec: {
465
- type: "string",
466
- required: false,
467
- description: "Video ideas: the beats spec for `baker canvas scaffold-ad --spec`"
468
- },
469
- series: {
470
- type: "string",
471
- required: false,
472
- description: "Statics: make this idea as another ad of the series led by this creative (its slug): the same design, only its words changed. No reference is searched; seconds. The lead must have a ready version. Then write its words and run the whole series: baker canvas run --series <lead>"
473
- },
474
- avatar: {
475
- type: "string",
476
- required: false,
477
- description: "Statics: the Avatar(s) the ad's people are cast as (`@eduard` or `eduard,lucia`; `baker avatars list`). Run make again with it once the definition decides the cast, before prompt.json is written: it rebuilds the canvas on them and keeps the thinking"
478
- },
479
- "from-idea": {
480
- type: "boolean",
481
- required: false,
482
- default: false,
483
- description: "Statics: skip the reference search and start from the idea (what make does by itself when no proven ad fits)"
484
- }
485
- };
486
- registerSchema({ command: "creatives.make", description: DESCRIPTION, args: ARGS });
487
- function fail(error) {
488
- writeJson({ ok: false, error });
489
- process.exit(1);
490
- }
491
- async function viewerTemperature(root, adSet, awareness) {
492
- if (adSet) {
493
- const read = await liveViewerLookups(root).adSetViewer(adSet).catch(() => null);
494
- if (read) return read.temperature;
495
- }
496
- return viewerFromKnowledge({ personas: [], awareness }).temperature;
497
- }
498
- var PASSED_SAID = 3;
499
- function passedOver(candidates, fits) {
500
- return candidates.flatMap((candidate, i) => {
501
- const fit = fits[i];
502
- if (!fit?.ok || fitsIdea(fit.fit)) return [];
503
- return [
504
- {
505
- adId: String(candidate.ad_id),
506
- ...candidate.advertiser ? { advertiser: candidate.advertiser } : {},
507
- why: whyUnfit(fit.fit)
508
- }
509
- ];
510
- }).slice(0, PASSED_SAID);
511
- }
512
- function candidatePlatform(c) {
513
- const resolved = resolveSourcePlatform(typeof c.platform === "string" ? c.platform : void 0);
514
- return resolved.ok ? resolved.platform : null;
515
- }
516
- function buildable(c) {
517
- const platform = candidatePlatform(c);
518
- if (!platform || notADesignReference(platform, String(c.ad_id), { format: c.format ?? null })) return [];
519
- return [{ ...c, platform }];
520
- }
521
- function liveReferenceDeps(root, bet, rankedFor, brands = []) {
522
- return {
523
- search: async (body) => {
524
- const ask = () => apiPost("/api/ad-library/winners/search", body, {
525
- timeoutMs: SEARCH_TIMEOUT_MS
526
- }).catch(() => null);
527
- return (await ask() ?? await ask())?.results ?? null;
528
- },
529
- fit: (platform, adId) => fitReference(root, platform, adId, bet),
530
- ...rankedFor ? {
531
- rank: async (found) => {
532
- const spent = [];
533
- try {
534
- return await rankForBet(
535
- found.filter((c) => !isOwnBrand(c.advertiser, brands)),
536
- rankedFor,
537
- void 0,
538
- (u) => spent.push(u)
539
- );
540
- } finally {
541
- await holdUnbilledSpend(path2.join(root, "canvas", ".cache"), spent).catch(() => void 0);
542
- }
543
- },
544
- choose: (fitting) => chooseLive(root, fitting, rankedFor)
545
- } : {}
546
- };
547
- }
548
- async function chooseLive(root, fitting, rankedFor) {
549
- const options = (await Promise.all(
550
- fitting.map(async (f) => {
551
- const picture = await pictureOf(f.candidate.media_url);
552
- return picture ? [
553
- {
554
- adId: f.adId,
555
- picture,
556
- fit: f.fit,
557
- ...f.candidate.advertiser ? { advertiser: f.candidate.advertiser } : {}
558
- }
559
- ] : [];
560
- })
561
- )).flat();
562
- if (options.length < 2) return null;
563
- const spent = [];
564
- const picked = await pickAmong(
565
- options,
566
- rankedFor,
567
- askPickModel((u) => spent.push(u))
568
- );
569
- await holdUnbilledSpend(path2.join(root, "canvas", ".cache"), spent).catch(() => void 0);
570
- if (!picked) return null;
571
- const byAd = new Map(fitting.map((f, i) => [f.adId, i]));
572
- const order = picked.order.flatMap((i) => {
573
- const at = byAd.get(options[i]?.adId ?? "");
574
- return at === void 0 ? [] : [at];
575
- });
576
- return { ...picked, order };
577
- }
578
- async function findCandidates(searches, deps) {
579
- const results = await Promise.all(searches.map((search) => deps.search(search).catch(() => null)));
580
- const topics = searches.flatMap((search, i) => search.free_text_query ? [results[i]] : []);
581
- if (topics.length > 0 && topics.every((found) => found === null)) return "unavailable";
582
- const pooled = pooledCandidates(
583
- results.map((found) => (found ?? []).flatMap(buildable)),
584
- deps.rank ? RANKED_POOL : FITS_TRIED
585
- );
586
- const fresh = (found) => deps.taken ? freshReferencesFirst(found, deps.taken) : found;
587
- if (!deps.rank) return fresh(pooled);
588
- const ranked = await deps.rank(pooled).catch(() => pooled);
589
- return fresh(ranked.flatMap(buildable)).slice(0, FITS_TRIED);
590
- }
591
- var candidateOf = (c) => ({
592
- adId: String(c.ad_id),
593
- platform: c.platform,
594
- ...c.advertiser_id ? { advertiserId: c.advertiser_id } : {}
595
- });
596
- async function pickReference(root, searches, deps = liveReferenceDeps(root), prepare, within) {
597
- const out = whenAborted(within);
598
- const found = await Promise.race([findCandidates(searches, deps), out]);
599
- if (found === "out") return slowReference();
600
- if (found === "unavailable") return searchUnavailable();
601
- const candidates = found.slice(0, FITS_TRIED);
602
- const first = candidates[0];
603
- const stop = new AbortController();
604
- const building = first && prepare ? prepare(candidateOf(first), stop.signal) : void 0;
605
- void building?.catch(() => void 0);
606
- let settled = false;
607
- const asked = [];
608
- const askNext = () => {
609
- const index = asked.length;
610
- const candidate = candidates[index];
611
- if (settled || !candidate) return;
612
- asked.push(
613
- askFit(deps, candidate).then((fit) => {
614
- if (!(fit.ok && fitsIdea(fit.fit))) askNext();
615
- return fit;
616
- })
617
- );
618
- };
619
- for (let slot = 0; slot < FITS_AT_ONCE; slot++) askNext();
620
- const deciding = deps.choose ? chosenFitting(candidates, asked, deps.choose, deps.taken) : firstFitting(candidates, asked);
621
- const kept = await Promise.race([deciding, out]);
622
- settled = true;
623
- if (kept === "out") {
624
- stop.abort();
625
- return { ...slowReference(), ...building ? { discarded: building } : {} };
626
- }
627
- if (kept.index !== 0) stop.abort();
628
- const speculated = building ? kept.index === 0 ? { prepared: building } : { discarded: building } : {};
629
- return { ...kept.picked, ...speculated };
630
- }
631
- var askFit = (deps, c) => Promise.resolve().then(() => deps.fit(c.platform, String(c.ad_id))).catch((e) => ({ ok: false, error: { code: "UNAVAILABLE", message: String(e), fix: "" } }));
632
- var whenAborted = (signal) => new Promise((resolve) => {
633
- if (signal?.aborted) resolve("out");
634
- signal?.addEventListener("abort", () => resolve("out"), { once: true });
635
- });
636
- function pickedOf(candidate, fit, index, preferred) {
637
- const layers = fit.why_it_wins;
638
- return {
639
- ...candidateOf(candidate),
640
- why: [layers.disguise, layers.trigger, layers.logic].filter(Boolean).join("; "),
641
- tried: index + 1,
642
- fit,
643
- ...candidate.dna?.container ? { container: candidate.dna.container } : {},
644
- ...preferred ? { preferred } : {}
645
- };
646
- }
647
- async function firstFitting(candidates, fits) {
648
- let unchecked = null;
649
- let checked = 0;
650
- const lacking = [];
651
- const answered = [];
652
- for (const [index, candidate] of candidates.entries()) {
653
- const fit = await fits[index];
654
- answered.push(fit);
655
- if (!fit) continue;
656
- if (!fit.ok) unchecked = fit.error;
657
- else checked += 1;
658
- if (fit.ok && !fitsIdea(fit.fit)) lacking.push(...missingElements(fit.fit));
659
- if (!(fit.ok && fitsIdea(fit.fit))) continue;
660
- const passed = passedOver(candidates, answered);
661
- return { picked: { ...pickedOf(candidate, fit.fit, index), ...passed.length > 0 ? { passed } : {} }, index };
662
- }
663
- return { picked: noReference(candidates.length, checked, unchecked, lacking), index: -1 };
664
- }
665
- async function allFits(fits) {
666
- let seen = -1;
667
- while (seen !== fits.length) {
668
- seen = fits.length;
669
- await Promise.all(fits);
670
- }
671
- return await Promise.all(fits);
672
- }
673
- async function chosenFitting(candidates, fits, choose, taken) {
674
- const answered = await allFits(fits);
675
- const fitted = answered.flatMap((fit, index) => {
676
- const candidate = candidates[index];
677
- return candidate && fit.ok && fitsIdea(fit.fit) ? [{ index, candidate, fit: fit.fit }] : [];
678
- });
679
- const fresh = taken ? fitted.filter((f) => !isTakenReference(f.candidate, taken)) : [];
680
- const fitting = fresh.length > 0 ? fresh : fitted;
681
- if (fitting.length < 2) return await firstFitting(candidates, fits);
682
- const chosen = await choose(
683
- fitting.map((f) => ({ adId: String(f.candidate.ad_id), candidate: f.candidate, fit: f.fit }))
684
- ).catch(() => null);
685
- const kept = chosen && fitting[chosen.order[0] ?? 0] || fitting[0];
686
- if (!kept) return await firstFitting(candidates, fits);
687
- const ordered = chosen ? chosen.order.flatMap((i) => fitting[i] ?? []) : fitting;
688
- const passed = passedOver(candidates, answered);
689
- return {
690
- picked: {
691
- ...pickedOf(kept.candidate, kept.fit, kept.index, chosen?.why),
692
- board: [kept, ...ordered.filter((f) => f !== kept)].map((f) => boardAdOf(f.candidate)),
693
- ...chosen?.takes ? { takes: chosen.takes } : {},
694
- ...chosen?.avoid ? { avoid: chosen.avoid } : {},
695
- ...passed.length > 0 ? { passed } : {}
696
- },
697
- index: kept.index
698
- };
699
- }
700
- var boardAdOf = (c) => ({
701
- adId: String(c.ad_id),
702
- ...c.advertiser ? { advertiser: c.advertiser } : {},
703
- ...c.media_url ? { mediaUrl: c.media_url } : {}
704
- });
705
- var lackingText = (lacking) => {
706
- const named = [...new Set(lacking.map((l) => l.trim()).filter(Boolean))].slice(0, 3);
707
- return named.length > 0 ? ` (they won on ${named.join(", ")})` : "";
708
- };
709
- var searchUnavailable = () => ({
710
- code: "REFERENCE_SEARCH_UNAVAILABLE",
711
- message: "The ads library could not search for this ad's category just now.",
712
- fix: "Run make again in a minute: every ad is built on a proven one. Only when the person asks for an ad without one, pass --from-idea."
713
- });
714
- var slowReference = () => ({
715
- code: "REFERENCE_SLOW",
716
- message: `Finding and checking a proven ad took longer than ${REFERENCE_MS / 1e3} s.`,
717
- fix: "Run make again: the searches and checks already made are kept, so it goes further each time. Or pass --reference <adId> for one you looked at (`baker winning-ads search`). Never start the ad from the idea for this."
718
- });
719
- function startsFromIdea(failure) {
720
- return failure.code === "FROM_IDEA" || failure.code === "NO_REFERENCE_FITS";
721
- }
722
- function noReference(found, checked, unchecked, lacking = []) {
723
- if (found > 0 && checked === 0 && unchecked) {
724
- return {
725
- code: "FIT_UNAVAILABLE",
726
- message: `Could not check whether the references fit (${unchecked.message})`,
727
- fix: "Run make again in a moment. To build now, pass --reference <adId> with one you looked at yourself (`baker winning-ads search`)."
728
- };
729
- }
730
- return {
731
- code: "NO_REFERENCE_FITS",
732
- message: found === 0 ? "The library has no proven ad in this idea's format." : `None of the ${found} proven ads checked wins on something this company has, for a viewer who would stop for it${lackingText(lacking)}.`,
733
- fix: "Nothing to do to go on: the ad starts from the idea. To build on a proven ad instead, pass --reference <adId> for one you looked at (`baker winning-ads search --format static` with what the company sells or who the ad is for). Do not stop the batch: build the other ideas."
734
- };
735
- }
736
- function alreadyWritten(promptJson, slug, draft) {
737
- if (promptJson === null || promptJson === void 0) return null;
738
- if (draft !== void 0 && sameJson(promptJson, draft)) return null;
739
- try {
740
- if (unwrittenProblems(readAdSpec(promptJson)).length > 0) return null;
741
- } catch {
742
- }
743
- return {
744
- code: "ALREADY_MADE",
745
- message: `"${slug}" is already made and its ad is written: building it again would replace that ad with placeholders.`,
746
- fix: `To change this ad, edit src/creatives/${slug}/prompt.json and run \`baker canvas run\` on it. For another ad of the same idea, run make again with --slug <new-slug>.`
747
- };
748
- }
749
- function sameJson(parsed, text3) {
750
- try {
751
- return JSON.stringify(parsed) === JSON.stringify(JSON.parse(text3));
752
- } catch {
753
- return false;
754
- }
755
- }
756
- var draftPath = (root, slug) => path2.join(root, "canvas", ".cache", "make-drafts", `${slug}.json`);
757
- function castRebuild(definition, args) {
758
- if (!definition || !args.avatar || args.reference || args.fromIdea) return null;
759
- const { sourceAdId, sourcePlatform } = parseDefinitionSourceFields(definition);
760
- return sourceAdId ? { adId: sourceAdId, platform: sourcePlatform ?? "meta" } : null;
761
- }
762
- function ideaRecast(definition, args) {
763
- if (!definition || !args.avatar || args.reference || args.fromIdea) return false;
764
- return !parseDefinitionSourceFields(definition).sourceAdId;
765
- }
766
- function castFlags(avatar) {
767
- const handles = (avatar ?? "").split(/[\s,]+/).map((h) => h.replace(/^@/, "").toLowerCase()).filter(Boolean);
768
- return handles.length > 0 ? ["--avatar", handles.join(",")] : [];
769
- }
770
- var flag = (value) => typeof value === "string" && value ? value : void 0;
771
- async function loadIdea(root, ideaId) {
772
- const { ideas, unreadable } = await readIdeas(root);
773
- const bad = unreadable.find((u) => u.id === ideaId);
774
- if (bad) {
775
- fail({
776
- code: "INVALID_IDEA",
777
- message: bad.problems.join("; "),
778
- fix: `Fix ${IDEAS_DIR}/${ideaId}.md, then run make again.`
779
- });
780
- }
781
- const idea = ideas.find((i) => i.id === ideaId);
782
- if (!idea) {
783
- fail({
784
- code: "NOT_FOUND",
785
- message: `No idea "${ideaId}" in ${IDEAS_DIR}/.`,
786
- fix: `Ideas on file: ${ideas.map((i) => i.id).join(", ") || "none"}. Write it there first.`
787
- });
788
- }
789
- const [insights, knowledge, personas, creatives, products] = await Promise.all([
790
- readInsights(root),
791
- readKnowledgeCorpus(root),
792
- readPersonaIds(root),
793
- readCreativeRecords(root),
794
- storeProductReads([idea.product])
795
- ]);
796
- const check = checkIdeas({ ideas, insights, knowledge, personas, products, ...coverageOf(ideas, creatives) }).find(
797
- (c) => c.id === idea.id
798
- );
799
- if (check && check.problems.length > 0) {
800
- fail({
801
- code: "IDEA_HAS_PROBLEMS",
802
- message: check.problems.join("; "),
803
- fix: "Fix the idea file and run `baker creatives ideas` again."
804
- });
805
- }
806
- const product = idea.product ? products.get(idea.product) : void 0;
807
- return { idea, check, productRecord: product && "record" in product ? product.record : "" };
808
- }
809
- async function scaffoldIdea(root, idea, args, slug, temperature, whereFlags) {
810
- const viewerFlags = [
811
- ...args.adset ? ["--target-adset", args.adset] : ["--viewer-temperature", temperature],
812
- ...whereFlags
813
- ];
814
- if (isVideoIdea(idea)) {
815
- if (!args.spec) {
816
- fail({
817
- code: "SPEC_REQUIRED",
818
- message: `"${idea.id}" is a video idea (${idea.format}): it is built from its beats.`,
819
- fix: `Write the beats spec (one spoken line plus one shot each; references/video-flow.md), message first, then: baker creatives make ${idea.id} --spec <file>.`
820
- });
821
- }
822
- return {
823
- scaffold: await runBaker(["canvas", "scaffold-ad", "--spec", args.spec, "--slug", slug, ...viewerFlags]),
824
- reference: null
825
- };
826
- }
827
- return await scaffoldStatic(root, idea, args, slug, temperature, [...viewerFlags, ...castFlags(args.avatar)]);
828
- }
829
- async function checkedByHand(adId, platform, deps) {
830
- const byHand = handPickedReference(adId, platform);
831
- if ("code" in byHand) return byHand;
832
- const fit = await deps.fit(byHand.platform, byHand.adId).catch(() => null);
833
- if (!fit?.ok) return byHand;
834
- if (!fitsIdea(fit.fit)) {
835
- return {
836
- code: "REFERENCE_UNFIT",
837
- message: `The proven ad ${adId} does not fit this idea: ${whyUnfit(fit.fit)}.`,
838
- fix: "Pick another proven ad (`baker winning-ads search`), or run make without --reference to build from the idea."
839
- };
840
- }
841
- const layers = fit.fit.why_it_wins;
842
- return { ...byHand, why: [layers.disguise, layers.trigger, layers.logic].filter(Boolean).join("; "), fit: fit.fit };
843
- }
844
- async function chooseReference(args, deps, pick) {
845
- if (args.reference) {
846
- const byHand = await checkedByHand(args.reference, args.referencePlatform, deps);
847
- if ("code" in byHand) fail(byHand);
848
- return byHand;
849
- }
850
- if (args.fromIdea) return { code: "FROM_IDEA", message: "Asked to start from the idea." };
851
- return await pick();
852
- }
853
- async function referenceTarget(root, idea) {
854
- const market = marketFromCompanyDoc(await readFile2(path2.join(root, "COMPANY.md"), "utf8").catch(() => ""));
855
- const personas = await readPersonas(root).catch(() => []);
856
- const [found, company, context] = await Promise.all([
857
- referenceBriefFor(root, {
858
- message: idea.message,
859
- who: personaWho(idea, personas),
860
- ...idea.shows ? { shows: idea.shows } : {}
861
- }),
862
- readCompanyReading(root),
863
- readCreativeContext(root, { kind: "static" })
864
- ]);
865
- const brief = found && { ...found, avoid: avoidOf(context.rules) };
866
- const category = company?.category ?? company?.sells;
867
- const where = referenceWhereOf(brief, {
868
- ...market && market.country !== "global" ? { country: market.country } : {},
869
- ...category ? { category } : {},
870
- audience: audienceQuery(idea, personas)
871
- });
872
- return { market, personas, brief, where };
873
- }
874
- async function takenReferencesIn(root, slug) {
875
- const creatives = path2.join(root, "src", "creatives");
876
- const names = await readdir(creatives).catch(() => []);
877
- const sources = await Promise.all(
878
- names.filter((name) => name !== slug && !name.startsWith("_")).map(
879
- (name) => readFile2(path2.join(creatives, name, "_definition.md"), "utf8").then(
880
- parseDefinitionSourceFields,
881
- () => ({})
882
- )
883
- )
884
- );
885
- return {
886
- adIds: new Set(sources.flatMap((s) => s.sourceAdId ? [s.sourceAdId] : [])),
887
- advertiserIds: new Set(sources.flatMap((s) => s.sourceAdvertiserId ? [s.sourceAdvertiserId] : []))
888
- };
889
- }
890
- async function scaffoldStatic(root, idea, args, slug, temperature, viewerFlags) {
891
- const onReference = (c, signal) => runBaker(
892
- [
893
- "canvas",
894
- "scaffold-static-ad",
895
- "--source-ad-id",
896
- c.adId,
897
- "--source-platform",
898
- c.platform,
899
- ...c.advertiserId ? ["--source-advertiser-id", c.advertiserId] : [],
900
- "--slug",
901
- slug,
902
- "--title",
903
- idea.message.slice(0, 120),
904
- ...viewerFlags
905
- ],
906
- signal
907
- );
908
- const dir = path2.join(root, "src", "creatives", slug);
909
- const fresh = !await stat(dir).catch(() => null);
910
- const budget = AbortSignal.timeout(REFERENCE_MS);
911
- const { market, personas, brief, where } = await referenceTarget(root, idea);
912
- const bet = fitBetOf(
913
- idea,
914
- personas,
915
- await readInsights(root).catch(() => []),
916
- market ? describeMarket(market) : void 0
917
- );
918
- const deps = {
919
- ...liveReferenceDeps(root, bet, rankedForOf(brief, where, bet), brief?.brands),
920
- taken: await takenReferencesIn(root, slug)
921
- };
922
- const definition = await readFile2(path2.join(dir, "_definition.md"), "utf8").catch(() => null);
923
- const recast = castRebuild(definition, args);
924
- const fromIdea = args.fromIdea || ideaRecast(definition, args);
925
- const reference = await chooseReference({ ...args, fromIdea }, deps, async () => {
926
- if (recast) {
927
- const kept = await checkedByHand(recast.adId, recast.platform, deps);
928
- if ("code" in kept) fail(kept);
929
- return kept;
930
- }
931
- return await pickReference(
932
- root,
933
- referenceSearchesFor(idea, temperature, where).map(buildSearchBody),
934
- deps,
935
- fresh ? (c, signal) => onReference(c, AbortSignal.any([signal, budget])) : void 0,
936
- budget
937
- );
938
- });
939
- if ("discarded" in reference && reference.discarded) {
940
- await reference.discarded.catch(() => void 0);
941
- await rm(dir, { recursive: true, force: true });
942
- }
943
- if ("code" in reference) return await fromIdeaWhenNoneFits(reference, idea, slug, viewerFlags);
944
- const prepared = "prepared" in reference ? await reference.prepared?.catch(() => null) : null;
945
- if (prepared?.ok !== true && budget.aborted && !args.reference) {
946
- await rm(dir, { recursive: true, force: true });
947
- fail(slowReference());
948
- }
949
- const scaffold = prepared?.ok === true ? prepared : await onReference(reference);
950
- if (scaffold.ok !== true && scaffold.error?.code === "avatar") {
951
- fail(scaffoldFailure(scaffold));
952
- }
953
- const unbuilt = unbuiltReference(scaffold, { adId: reference.adId, byHand: Boolean(args.reference || recast) });
954
- if (!unbuilt) return await withKeptConcept(dir, slug, scaffold, reference);
955
- if (fresh) await rm(dir, { recursive: true, force: true });
956
- return { scaffold: await scaffoldFromIdea(idea, slug, viewerFlags), reference: null, fromIdea: unbuilt };
957
- }
958
- async function fromIdeaWhenNoneFits(failure, idea, slug, viewerFlags) {
959
- if (!startsFromIdea(failure)) fail(failure);
960
- return { scaffold: await scaffoldFromIdea(idea, slug, viewerFlags), reference: null, fromIdea: failure.message };
961
- }
962
- function handPickedReference(adId, platform) {
963
- const resolved = resolveSourcePlatform(platform);
964
- if (!resolved.ok) {
965
- return {
966
- code: "INVALID_ARGUMENT",
967
- message: resolved.message.replace("--source-platform", "--platform"),
968
- fix: "Pass the platform `baker winning-ads search` names beside the ad."
969
- };
970
- }
971
- return { adId, platform: resolved.platform, why: "chosen by hand", tried: 0 };
972
- }
973
- function unbuiltReference(scaffold, reference) {
974
- if (scaffold.ok === true || reference.byHand) return null;
975
- return `The proven ad ${reference.adId} could not be read to build on.`;
976
- }
977
- async function withKeptConcept(dir, slug, scaffold, reference) {
978
- if (scaffold.ok !== true || !reference.fit) return { scaffold, reference };
979
- const unseeded = await seedConcept(dir, slug, conceptFromFit(reference.fit, reference.adId));
980
- return { scaffold, reference, ...unseeded ? { conceptUnseeded: unseeded } : {} };
981
- }
982
- async function seedConcept(dir, slug, seeded) {
983
- const promptPath = path2.join(dir, "prompt.json");
984
- const canvasPath = path2.join(dir, `${slug}.canvas.json`);
985
- let prompt;
986
- try {
987
- prompt = withFitConcept(await readFile2(promptPath, "utf8"), seeded);
988
- await writeFile2(promptPath, prompt, "utf8");
989
- } catch (e) {
990
- return `prompt.json could not take the proven ad's concept (${e instanceof Error ? e.message : String(e)})`;
991
- }
992
- try {
993
- const spec = JSON.parse(prompt);
994
- const { canvas, rerouted } = reroutedOnSpec(JSON.parse(await readFile2(canvasPath, "utf8")), spec);
995
- const briefed = projectStaticBriefs(canvas, spec) + projectAdaptBriefs(canvas, spec) + projectFormatBriefs(canvas, spec);
996
- if (rerouted || briefed > 0) {
997
- await writeFile2(canvasPath, `${JSON.stringify(canvas, null, 2)}
998
- `, "utf8");
999
- }
1000
- } catch {
1001
- }
1002
- return null;
1003
- }
1004
- async function scaffoldFromIdea(idea, slug, viewerFlags) {
1005
- const dir = await mkdtemp(path2.join(tmpdir(), "idea-spec-"));
1006
- const specPath = path2.join(dir, "prompt.json");
1007
- await writeFile2(specPath, JSON.stringify(ideaSpec(idea, idea.who.replace(/[-_]/g, " ")), null, 2), "utf8");
1008
- try {
1009
- return await runBaker([
1010
- "canvas",
1011
- "scaffold-static-ad",
1012
- "--spec",
1013
- specPath,
1014
- "--slug",
1015
- slug,
1016
- "--title",
1017
- idea.message.slice(0, 120),
1018
- ...viewerFlags
1019
- ]);
1020
- } finally {
1021
- await rm(dir, { recursive: true, force: true });
1022
- }
1023
- }
1024
- function referencePictureUrl(canvas) {
1025
- const nodes = canvas?.nodes;
1026
- if (!Array.isArray(nodes)) return null;
1027
- const original = nodes.find(
1028
- (n) => n?.id === "original"
1029
- );
1030
- const url = original?.params?.url;
1031
- return typeof url === "string" && /^https?:\/\//.test(url) ? url : null;
1032
- }
1033
- async function saveReferencePicture(root, canvasPath, adId) {
1034
- const url = await readFile2(canvasPath, "utf8").then(
1035
- (text3) => referencePictureUrl(JSON.parse(text3)),
1036
- () => null
1037
- );
1038
- return url ? await savePicture(root, url, adId) : null;
1039
- }
1040
- async function savePicture(root, url, adId) {
1041
- try {
1042
- const response = await fetch(url, { signal: AbortSignal.timeout(2e4) });
1043
- if (!response.ok) return null;
1044
- const ext = path2.extname(new URL(url).pathname).toLowerCase() || ".jpg";
1045
- const relative = path2.join("canvas", "references", `${adId}${ext}`);
1046
- await mkdir2(path2.join(root, "canvas", "references"), { recursive: true });
1047
- await writeFile2(path2.join(root, relative), Buffer.from(await response.arrayBuffer()));
1048
- return relative;
1049
- } catch {
1050
- return null;
1051
- }
1052
- }
1053
- async function withPictures(root, canvasPath, reference) {
1054
- const picture = await saveReferencePicture(root, canvasPath, reference.adId);
1055
- const board = reference.board ? await savedBoard(root, reference.board, reference.adId, picture) : void 0;
1056
- return { ...reference, ...picture ? { picture } : {}, ...board ? { board } : {} };
1057
- }
1058
- async function savedBoard(root, board, keptId, keptPicture) {
1059
- return await Promise.all(
1060
- board.map(async ({ adId, advertiser, mediaUrl }) => {
1061
- const picture = adId === keptId ? keptPicture : mediaUrl ? await savePicture(root, mediaUrl, adId) : null;
1062
- return { adId, ...advertiser ? { advertiser } : {}, ...picture ? { picture } : {} };
1063
- })
1064
- );
1065
- }
1066
- async function recordIdea(root, slug, idea, evidence, productRecord, reference) {
1067
- const dir = path2.join(root, "src", "creatives", slug);
1068
- const definitionPath = path2.join(dir, "_definition.md");
1069
- const definition = await readFile2(definitionPath, "utf8").catch(() => null);
1070
- if (definition !== null) {
1071
- const recorded = setDefinitionFields(definition, { ...definitionFieldsOf(idea, evidence) });
1072
- const thinkingReference = reference ? await withPictures(root, path2.join(dir, `${slug}.canvas.json`), reference) : null;
1073
- const inventory = await castInventory(root, idea.message, await companyName(root));
1074
- const castRules = (await readCreativeContext(root, { kind: idea.format?.startsWith("video_") ? "video" : "static" })).rules.filter((r) => r.applies === "cast" || r.applies === "picture" || r.applies === "logo").map((r) => ({ id: r.id, strength: r.strength, text: r.text }));
1075
- const audience = memeRegister(await readCompanyReading(root).catch(() => null));
1076
- await writeFile2(
1077
- definitionPath,
1078
- withThinking(
1079
- recorded,
1080
- thinkingOutline({
1081
- idea,
1082
- reference: thinkingReference,
1083
- inventory,
1084
- rules: castRules,
1085
- ...audience ? { audience } : {}
1086
- })
1087
- ),
1088
- "utf8"
1089
- );
1090
- }
1091
- const promptPath = path2.join(dir, "prompt.json");
1092
- const prompt = isVideoIdea(idea) ? null : await readFile2(promptPath, "utf8").catch(() => null);
1093
- if (prompt !== null) {
1094
- const personas = await readPersonas(root).catch(() => []);
1095
- const written = (() => {
1096
- try {
1097
- return setSpecViewer(setSpecMessage(prompt, idea.message), idea, personas);
1098
- } catch {
1099
- return null;
1100
- }
1101
- })();
1102
- if (written !== null) await writeFile2(promptPath, written, "utf8").catch(() => void 0);
1103
- }
1104
- const unsourcedCopy = prompt === null ? [] : await draftedClaims(root, prompt, productRecord);
1105
- await keepDraft(root, slug, promptPath);
1106
- if (idea.status === "idea") {
1107
- const ideaPath = path2.join(root, IDEAS_DIR, `${idea.id}.md`);
1108
- await writeFile2(ideaPath, setDefinitionFields(await readFile2(ideaPath, "utf8"), { status: "built" }), "utf8");
1109
- }
1110
- await runBaker(["canvas", "sync-definition", dir]);
1111
- return { dir, unsourcedCopy };
1112
- }
1113
- async function keepDraft(root, slug, promptPath) {
1114
- const written = await readFile2(promptPath, "utf8").catch(() => null);
1115
- if (written === null) return;
1116
- await mkdir2(path2.dirname(draftPath(root, slug)), { recursive: true });
1117
- await writeFile2(draftPath(root, slug), written, "utf8");
1118
- }
1119
- async function draftedClaims(root, prompt, productRecord) {
1120
- const [knowledge, insights] = await Promise.all([readKnowledgeCorpus(root), readInsights(root)]);
1121
- const own = insights.filter(sourcesClaims).map((i) => i.quote);
1122
- try {
1123
- return unsourcedCopyLines(prompt, `${knowledge}
1124
- ${own.join("\n")}
1125
- ${productRecord}`);
1126
- } catch {
1127
- return [];
1128
- }
1129
- }
1130
- function makeArgsOf(args) {
1131
- const opts = {};
1132
- for (const key of ["slug", "adset", "reference", "platforms", "formats", "spec", "series", "avatar"]) {
1133
- const value = flag(args[key]);
1134
- if (value) opts[key] = value;
1135
- }
1136
- const referencePlatform = flag(args["reference-platform"]) ?? (opts.reference ? flag(args.platform) : void 0);
1137
- if (referencePlatform) opts.referencePlatform = referencePlatform;
1138
- if (flag(args.platform) && !opts.reference) {
1139
- return {
1140
- code: "INVALID_ARGUMENT",
1141
- message: `--platform ${flag(args.platform)} is ambiguous: it named the library of --reference.`,
1142
- fix: "--platforms says where the ad runs (baker creatives make <idea> --platforms linkedin); --reference-platform says which library the reference is in."
1143
- };
1144
- }
1145
- if (args["from-idea"] === true) opts.fromIdea = true;
1146
- return opts;
1147
- }
1148
- function deliveryFlags(delivery, args, kind = "static") {
1149
- const sizes = args.formats && kind === "static" ? ["--formats", args.formats] : [];
1150
- return ["--platforms", delivery.platforms.join(","), ...sizes];
1151
- }
1152
- function scaffoldFailure(scaffold) {
1153
- const error = scaffold.error ?? {};
1154
- return {
1155
- code: error.code ?? "SCAFFOLD_FAILED",
1156
- message: error.message ?? "The creative could not be scaffolded.",
1157
- ...error.fix ? { fix: error.fix } : {}
1158
- };
1159
- }
1160
- var CARRY_WORDS = {
1161
- whole_ad: "the whole ad (its disguise, layout and hook)",
1162
- layout: "its layout",
1163
- hook: "its hook",
1164
- angle: "its angle"
1165
- };
1166
- function builtOnHint(reference) {
1167
- const tell = "Tell the person which proven ad this builds on";
1168
- const ours = "the words, brand, people and claims stay ours.";
1169
- if (!reference.fit) {
1170
- return `Built on proven ad ${reference.adId}, the one chosen for it; no check read what made it win. The canvas shows that ad as \`original\`. ${tell}; ${ours}`;
1171
- }
1172
- const carried = CARRY_WORDS[reference.fit.carry ?? "whole_ad"];
1173
- const why = reference.fit.carry_why ? ` (${reference.fit.carry_why})` : "";
1174
- const won = reference.why ? ` It won on: ${reference.why}.` : "";
1175
- const chosen = reference.preferred ? ` Chosen over the other proven ads that fit because ${reference.preferred.replace(/\.$/, "")}.` : "";
1176
- const passed = (reference.passed ?? []).map(
1177
- (p) => ` Passed over ${p.advertiser ? `${p.advertiser}'s proven ad` : "proven ad"} ${p.adId}: ${p.why.replace(/\.$/, "")}.`
1178
- ).join("");
1179
- const whyNot = passed ? ", and in one line why not the ones passed over" : "";
1180
- const byHand = reference.tried === 0 ? ", the one chosen for it" : "";
1181
- return `Built on proven ad ${reference.adId}${byHand}: it carries ${carried}${why}.${won}${chosen}${passed} The canvas shows that ad as \`original\`. ${tell} and what it takes from it${whyNot}; ${ours}`;
1182
- }
1183
- var unseededHint = (reference, slug, why) => `${why}, so the render does not see proven ad ${reference.adId} yet. \`baker winning-ads fit ${reference.adId} --platform ${reference.platform} --full\` prints the check already made (free): write its \`read\` into src/creatives/${slug}/prompt.json as \`concept\`, with \`reference_ad_id: "${reference.adId}"\`.`;
1184
- function thinkFirstHint(made) {
1185
- const basis = made.reference ? "what the proven ad is and why it won" : "why this bet should work";
1186
- const board = (made.reference?.board?.length ?? 0) > 1 ? " what to take from which of the proven ads that fit (the hook of one, the proof of another)," : "";
1187
- const survives = made.reference ? " what of it must survive," : "";
1188
- const read = made.reference ? "first open the proven ads' pictures the outline names and read .claude/skills/creative-canvas-ads/references/reading-a-winner.md, then " : "";
1189
- const recast = made.reference ? ` When the cast is an Avatar the canvas was not built with, \`baker creatives make ${made.idea.id}${made.slug === made.idea.id ? "" : ` --slug ${made.slug}`} --avatar <handle>\` rebuilds it on the same proven ad before you write prompt.json.` : "";
1190
- return `Think first: ${read}answer every question under "Thinking" in src/creatives/${made.slug}/_definition.md before you touch prompt.json (how: .claude/skills/creative-canvas-ads/references/creative-intent.md): ${basis},${board} whether it fits our viewer, our hook, who appears and what of the product shows (decided from what the company has, listed there: its Avatars, real customers, founder, product pictures, logos),${survives} and the plan.${recast} This thinking decides the ad; the run renders nothing while a question is open or the cast is not ours.`;
1191
- }
1192
- function writeTheAdHint(made, quote) {
1193
- const words = `say the message in the customer's words${quote ? ` ("${quote.slice(0, 80)}")` : ""}; keep \`message\` as it is`;
1194
- if (made.idea.format?.startsWith("video_")) {
1195
- return `Then write the ad from "The plan": its scene files and prompt.json carry every decision (the render never reads the definition); ${words}.`;
1196
- }
1197
- const drafted = made.reference ? " The drafted lines are the reference's: keep one only if the Knowledge says it (badges, ratings and guarantees too)." : "";
1198
- return `Then write the ad from "The plan" in src/creatives/${made.slug}/prompt.json, every decision in its fields (the render never reads the definition); ${words}.${drafted} Read static-image-flow.md first. Inspect existing Avatars before creating an actor. Keep interfaces native and requested overlays separate. Preserve plausible anatomy, device proportions, scale, perspective and support; reflow text rather than distort it. Honour the requested sizes.`;
1199
- }
1200
- function makeEnvelope(made) {
1201
- const quote = made.check?.quote;
1202
- return {
1203
- ok: true,
1204
- data: {
1205
- creative: made.slug,
1206
- idea: made.idea.id,
1207
- message: made.idea.message,
1208
- evidence: made.check?.evidence ?? "explore",
1209
- ...quote ? { customer_quote: quote } : {},
1210
- ...made.fromIdea ? { built_from: "idea" } : {},
1211
- ...made.reference ? {
1212
- reference: {
1213
- ad_id: made.reference.adId,
1214
- platform: made.reference.platform,
1215
- why_it_wins: made.reference.why,
1216
- ...made.reference.fit?.carry ? { carry: made.reference.fit.carry } : {},
1217
- ...made.reference.preferred ? { chosen_because: made.reference.preferred } : {}
1218
- }
1219
- } : {},
1220
- viewer: made.viewer,
1221
- ...made.delivery ? { platforms: made.delivery.platforms, lead: made.delivery.lead } : {},
1222
- ...made.shape ? { master_shape: made.shape } : {},
1223
- canvas_path: made.canvasPath
1224
- },
1225
- hints: [
1226
- ...made.reference ? [builtOnHint(made.reference)] : [],
1227
- ...made.reference && made.conceptUnseeded ? [unseededHint(made.reference, made.slug, made.conceptUnseeded)] : [],
1228
- ...made.fromIdea ? [
1229
- `${made.fromIdea} So this ad starts from the idea: write the scene and every line of copy in src/creatives/${made.slug}/prompt.json (a placeholder refuses to run). Tell the person this ad is not built on a proven ad, and why, in plain words.`
1230
- ] : [],
1231
- ...made.unsourcedCopy.length > 0 ? [
1232
- `Rewrite before running: ${made.unsourcedCopy.map((l) => JSON.stringify(l)).join(", ")} claim a figure nothing the company wrote holds (the reference's promise, not ours).`
1233
- ] : [],
1234
- thinkFirstHint(made),
1235
- writeTheAdHint(made, quote),
1236
- SPEC_SHAPES_HINT,
1237
- `Then: baker canvas run ${made.canvasPath} (it validates and asks the viewer itself: nothing to run before it).`,
1238
- // The scaffold's own next steps name a separate validate; the run does it (dev, Oct 2026: five validates before one run).
1239
- ...made.scaffoldHints.filter((h) => !/canvas (?:validate|viewer-check)/.test(h)).filter((h) => !(made.reference?.fit && h.startsWith(NO_FIT_HINT))).slice(0, 4)
1240
- ]
1241
- };
1242
- }
1243
- function ideaPlatforms(idea) {
1244
- if (idea.platforms && idea.platforms.length > 0) return idea.platforms;
1245
- const named = platformsNamedIn([idea.message, idea.who, idea.why, idea.format].join(" "));
1246
- return named.length > 0 ? named : void 0;
1247
- }
1248
- async function makeDelivery(root, idea, args, slug) {
1249
- const definition = await readFile2(path2.join(root, "src", "creatives", slug, "_definition.md"), "utf8").catch(
1250
- () => null
1251
- );
1252
- const flags = { platforms: args.platforms, formats: args.formats, "target-adset": args.adset };
1253
- const resolved = await scaffoldDelivery(flags, definition, ideaPlatforms(idea));
1254
- const video = isVideoIdea(idea);
1255
- if (resolved.ok)
1256
- return { delivery: resolved.delivery, flags: deliveryFlags(resolved.delivery, args, video ? "video" : "static") };
1257
- if (video && resolved.error.code === "platform_required") return { flags: [] };
1258
- return fail({ code: resolved.error.code.toUpperCase(), message: resolved.error.message, fix: resolved.error.fix });
1259
- }
1260
- async function makeInSeries(root, idea, slug, lead, evidence) {
1261
- if (isVideoIdea(idea)) {
1262
- fail({
1263
- code: "SERIES_STATIC_ONLY",
1264
- message: `"${idea.id}" is a video idea: a series repeats one static ad with other words.`,
1265
- fix: `Make it on its own: baker creatives make ${idea.id} --spec <beats file>.`
1266
- });
1267
- }
1268
- const made = await makeSeriesAd(root, idea, slug, lead, evidence, {
1269
- sync: (dir) => runBaker(["canvas", "sync-definition", dir, "--title"])
1270
- });
1271
- if ("code" in made) fail(made);
1272
- const leadDefinition = await readFile2(path2.join(root, "src", "creatives", lead, "_definition.md"), "utf8").catch(
1273
- () => ""
1274
- );
1275
- const leadPlatforms = parseDefinitionDelivery(leadDefinition)?.platforms;
1276
- writeJson(
1277
- seriesMadeEnvelope(
1278
- { ...made, canvasPath: path2.relative(root, made.canvasPath), ...leadPlatforms ? { leadPlatforms } : {} },
1279
- idea
1280
- )
1281
- );
1282
- }
1283
- var makeCommand = defineCommand({
1284
- meta: { name: "make", description: DESCRIPTION },
1285
- args: ARGS,
1286
- async run({ args }) {
1287
- const root = findWorkspaceRoot(process.cwd()) ?? process.cwd();
1288
- const opts = makeArgsOf(args);
1289
- if ("code" in opts) return fail(opts);
1290
- const { idea, check, productRecord } = await loadIdea(root, String(args.idea));
1291
- const slug = opts.slug ?? idea.id;
1292
- const written = await readFile2(path2.join(root, "src", "creatives", slug, "prompt.json"), "utf8").then(
1293
- (text3) => {
1294
- try {
1295
- return JSON.parse(text3);
1296
- } catch {
1297
- return {};
1298
- }
1299
- },
1300
- (err) => err.code === "ENOENT" ? null : {}
1301
- );
1302
- const draft = await readFile2(draftPath(root, slug), "utf8").catch(() => void 0);
1303
- const refused = alreadyWritten(written, slug, draft);
1304
- if (refused) fail(refused);
1305
- if (opts.series) {
1306
- await makeInSeries(root, idea, slug, opts.series, check?.evidence ?? "explore");
1307
- return;
1308
- }
1309
- const { delivery, flags } = await makeDelivery(root, idea, opts, slug);
1310
- const temperature = await viewerTemperature(root, opts.adset, idea.awareness);
1311
- const { scaffold, reference, fromIdea, conceptUnseeded } = await scaffoldIdea(
1312
- root,
1313
- idea,
1314
- opts,
1315
- slug,
1316
- temperature,
1317
- flags
1318
- );
1319
- if (scaffold.ok !== true) fail(scaffoldFailure(scaffold));
1320
- const { dir, unsourcedCopy } = await recordIdea(
1321
- root,
1322
- slug,
1323
- idea,
1324
- check?.evidence ?? "explore",
1325
- productRecord,
1326
- reference
1327
- );
1328
- const canvasPath = String(scaffold.canvas_path ?? path2.join(dir, `${slug}.canvas.json`));
1329
- const shape = recordedShape(await readFile2(canvasPath, "utf8").then(JSON.parse, () => null));
1330
- writeJson(
1331
- makeEnvelope({
1332
- slug,
1333
- idea,
1334
- check,
1335
- reference,
1336
- ...fromIdea ? { fromIdea } : {},
1337
- ...conceptUnseeded ? { conceptUnseeded } : {},
1338
- viewer: opts.adset ? { adset: opts.adset } : { temperature },
1339
- canvasPath: path2.relative(root, canvasPath),
1340
- scaffoldHints: Array.isArray(scaffold.hints) ? scaffold.hints : [],
1341
- unsourcedCopy,
1342
- ...delivery ? { delivery } : {},
1343
- ...shape ? { shape } : {}
1344
- })
1345
- );
1346
- }
1347
- });
1348
- export {
1349
- alreadyWritten,
1350
- castFlags,
1351
- castRebuild,
1352
- checkedByHand,
1353
- deliveryFlags,
1354
- handPickedReference,
1355
- ideaPlatforms,
1356
- ideaRecast,
1357
- makeArgsOf,
1358
- makeCommand,
1359
- makeEnvelope,
1360
- noReference,
1361
- pickReference,
1362
- referencePictureUrl,
1363
- seedConcept,
1364
- startsFromIdea,
1365
- unbuiltReference
1366
- };
1367
- //# sourceMappingURL=make-QPE6H3NT.js.map