@koda-sl/baker-cli 0.482.0 → 0.484.0-dev.90f362ab7

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 (549) hide show
  1. package/README.md +1 -1
  2. package/dist/{account-Z65CPOWE.js → account-ELL7ZZLM.js} +3 -3
  3. package/dist/{account-VH2AATWI.js → account-KZVOT6HL.js} +5 -5
  4. package/dist/{account-reads-GYI2SS6T.js → account-reads-LA45L6G3.js} +4 -4
  5. package/dist/{account-writes-4N2MA2ZR.js → account-writes-CEPERFD6.js} +3 -3
  6. package/dist/{accounts-XG472YLB.js → accounts-7G556DH4.js} +4 -4
  7. package/dist/{accounts-SPLE7URQ.js → accounts-HC7GPQNG.js} +6 -6
  8. package/dist/{actions-KQTXBNJU.js → actions-V6YP5C3X.js} +18 -18
  9. package/dist/{activecampaign-42JXANUA.js → activecampaign-CHZEHRHZ.js} +4 -4
  10. package/dist/{ad-group-writes-EUTMPBMK.js → ad-group-writes-XGSCEQTW.js} +3 -3
  11. package/dist/{ad-groups-OVPAI5RM.js → ad-groups-GKOLDGET.js} +7 -7
  12. package/dist/{ad-writes-DACTYFEO.js → ad-writes-VVD36JKH.js} +3 -3
  13. package/dist/{add-C3FQ5D62.js → add-3MD72QMT.js} +3 -3
  14. package/dist/{add-KTEJCE4L.js → add-TSQNUP5N.js} +4 -4
  15. package/dist/{ads-L65JIKCD.js → ads-EKZVHKPN.js} +8 -8
  16. package/dist/{ads-WPI3AMSR.js → ads-KRM4WAMZ.js} +5 -5
  17. package/dist/{advertisers-36HP3AOE.js → advertisers-XJG7XDK7.js} +6 -6
  18. package/dist/{analytics-IFNBT7IM.js → analytics-DO4UKW2H.js} +7 -7
  19. package/dist/{analytics-I4LZCRG2.js → analytics-JVT2OBQC.js} +4 -4
  20. package/dist/{animate-3LV3LHXQ.js → animate-G4P3OEJE.js} +4 -4
  21. package/dist/{assign-WBLSZNCO.js → assign-72YAL6TP.js} +4 -4
  22. package/dist/{audience-size-LOX5BNXI.js → audience-size-M5NU4QYN.js} +4 -4
  23. package/dist/{audiences-RPLVMO4H.js → audiences-BU4JZJT7.js} +3 -3
  24. package/dist/{audit-6AG6BPXQ.js → audit-22KQAHJR.js} +4 -4
  25. package/dist/{autocomplete-2QRU7ARD.js → autocomplete-KLNQIK5T.js} +6 -6
  26. package/dist/{avatars-EIETXCF3.js → avatars-VO6FMJFB.js} +4 -4
  27. package/dist/{bid-pricing-5LZFHQTS.js → bid-pricing-52HDANYL.js} +5 -5
  28. package/dist/{brand-CINQG3JG.js → brand-XXNOVSGE.js} +2 -2
  29. package/dist/{brief-WAQ2V6Q4.js → brief-MNWFEJ3L.js} +19 -19
  30. package/dist/{campaign-groups-5CMTEJZZ.js → campaign-groups-JFOFU76X.js} +9 -9
  31. package/dist/{campaign-writes-U5LTDTYK.js → campaign-writes-NSEJCINS.js} +3 -3
  32. package/dist/{campaign-writes-4RMPHQCT.js → campaign-writes-PKWLLKB5.js} +4 -4
  33. package/dist/{campaigns-NFRLFNXI.js → campaigns-5AZMOOID.js} +5 -5
  34. package/dist/{campaigns-PC7UAVXR.js → campaigns-H4VK3GKK.js} +12 -12
  35. package/dist/{campaigns-TFEQTSO3.js → campaigns-VWN2XPK2.js} +7 -7
  36. package/dist/{canvas-A4XKEBN7.js → canvas-TTV7QZZT.js} +14 -14
  37. package/dist/{capabilities-FNVTPCDT.js → capabilities-VJ53ROIP.js} +4 -4
  38. package/dist/{catalog-SJBGNNY4.js → catalog-43BSTAT6.js} +8 -8
  39. package/dist/{catalogs-A7XMEEEP.js → catalogs-XH5NHH4C.js} +3 -3
  40. package/dist/{changes-J67WATHX.js → changes-F6WUXFC3.js} +4 -4
  41. package/dist/{chatgpt-4PEWDJKP.js → chatgpt-K6KNTME4.js} +13 -13
  42. package/dist/{chats-S5FCV7YO.js → chats-PWLQO7UY.js} +4 -4
  43. package/dist/{check-GCZ2ZBKH.js → check-545MAB4E.js} +11 -11
  44. package/dist/{chunk-FRK7SSEH.js → chunk-2QSPPWOU.js} +2 -2
  45. package/dist/{chunk-U6IWRZQF.js → chunk-2WTD5Y34.js} +3 -3
  46. package/dist/{chunk-IG627WWY.js → chunk-3BKNGXCL.js} +169 -169
  47. package/dist/chunk-3BKNGXCL.js.map +1 -0
  48. package/dist/{chunk-AHF6TQWB.js → chunk-3UBTVAFJ.js} +2 -2
  49. package/dist/{chunk-KQDAFZKR.js → chunk-3ZHOBEQD.js} +3 -3
  50. package/dist/{chunk-RLS5OPPZ.js → chunk-46TND6YK.js} +2 -2
  51. package/dist/{chunk-3UXMQ3K2.js → chunk-5SRHACZW.js} +2 -2
  52. package/dist/{chunk-7U3V64YT.js → chunk-64HQDJ2E.js} +5 -5
  53. package/dist/{chunk-65N4ZPQD.js → chunk-6OIKNJ7G.js} +2 -2
  54. package/dist/{chunk-XSGO44OV.js → chunk-6RALLEJO.js} +4 -4
  55. package/dist/{chunk-CXQRTLSQ.js → chunk-AOZ7547I.js} +3 -3
  56. package/dist/{chunk-ZBV5IV5T.js → chunk-B7FVPHCW.js} +2 -2
  57. package/dist/{chunk-A2FKWRKO.js → chunk-C7MENOP5.js} +6 -6
  58. package/dist/{chunk-MIOOPOG2.js → chunk-CSN6L345.js} +5 -5
  59. package/dist/{chunk-NNF4RARY.js → chunk-D6KHVUDS.js} +3 -3
  60. package/dist/{chunk-T6ATGN7Y.js → chunk-F3CZFUXZ.js} +4 -4
  61. package/dist/chunk-F3CZFUXZ.js.map +1 -0
  62. package/dist/{chunk-U2452GLO.js → chunk-F5IH7G2F.js} +11 -6
  63. package/dist/chunk-F5IH7G2F.js.map +1 -0
  64. package/dist/{chunk-DCTEL4KG.js → chunk-FQXGII24.js} +4 -4
  65. package/dist/{chunk-ADSNY4KZ.js → chunk-G5GV6SUK.js} +2 -2
  66. package/dist/{chunk-IWWOGBGA.js → chunk-GD6UJDOB.js} +2 -2
  67. package/dist/{chunk-2DHHL4PU.js → chunk-GJWMPTUE.js} +4 -4
  68. package/dist/{chunk-RTWRNG3E.js → chunk-GM46ZEYP.js} +18 -8
  69. package/dist/{chunk-RTWRNG3E.js.map → chunk-GM46ZEYP.js.map} +1 -1
  70. package/dist/{chunk-GQ6JS5MR.js → chunk-HNEYIWXW.js} +56 -11
  71. package/dist/{chunk-GQ6JS5MR.js.map → chunk-HNEYIWXW.js.map} +1 -1
  72. package/dist/{chunk-ML7DLFFY.js → chunk-I2DNBEV6.js} +14 -14
  73. package/dist/chunk-I2DNBEV6.js.map +1 -0
  74. package/dist/{chunk-6KK26F2T.js → chunk-I2WRZJAC.js} +2 -2
  75. package/dist/{chunk-WNJ5SYAG.js → chunk-I44SNQ34.js} +2 -2
  76. package/dist/{chunk-R5WNYLG4.js → chunk-IYELKHBG.js} +2 -2
  77. package/dist/{chunk-RDCYPWQZ.js → chunk-JLLN7R3S.js} +34 -9
  78. package/dist/chunk-JLLN7R3S.js.map +1 -0
  79. package/dist/{chunk-XUR4QWCS.js → chunk-JQNO6JCV.js} +2 -2
  80. package/dist/{chunk-R2TAVQGZ.js → chunk-K4NMOWG7.js} +2 -2
  81. package/dist/{chunk-YD7BQDJ6.js → chunk-KOVQ2JGM.js} +2 -2
  82. package/dist/{chunk-V6PXHQSI.js → chunk-KXSXZAC2.js} +2 -2
  83. package/dist/{chunk-TNOJ6O6B.js → chunk-LFXE2G6R.js} +2 -2
  84. package/dist/{chunk-NVGXYF6K.js → chunk-LMZAOTRX.js} +2 -2
  85. package/dist/{chunk-ABXTGAG7.js → chunk-MK3OJZIU.js} +2 -2
  86. package/dist/{chunk-DF22CTXE.js → chunk-P5PX2G7E.js} +3 -3
  87. package/dist/{chunk-RMLJNHCU.js → chunk-PHPXAMY3.js} +3 -3
  88. package/dist/{chunk-5RCCESDX.js → chunk-PNVEV3XP.js} +109 -41
  89. package/dist/chunk-PNVEV3XP.js.map +1 -0
  90. package/dist/{chunk-BSEB55E6.js → chunk-QKABEX3F.js} +2 -2
  91. package/dist/{chunk-ELL2IQMF.js → chunk-QTLZXIF3.js} +9 -10
  92. package/dist/chunk-QTLZXIF3.js.map +1 -0
  93. package/dist/{chunk-JFA4R3KS.js → chunk-QYAI24PN.js} +2 -2
  94. package/dist/{chunk-DQC4NIJE.js → chunk-QZHGIJOW.js} +3 -3
  95. package/dist/{chunk-WD5BQBVY.js → chunk-REMR5FHD.js} +3 -3
  96. package/dist/{chunk-AS5VL32C.js → chunk-RGX7AQ2K.js} +2 -2
  97. package/dist/{chunk-WMVTIKET.js → chunk-ROX7LQRR.js} +2 -2
  98. package/dist/{chunk-AQ5WISEG.js → chunk-S7B2TOOU.js} +2 -2
  99. package/dist/{chunk-7VHPAGPK.js → chunk-SEPPFM5S.js} +2 -2
  100. package/dist/{chunk-ORQKMXHA.js → chunk-SIKCVWM3.js} +2 -2
  101. package/dist/{chunk-UMZIQIWN.js → chunk-SK2N45LO.js} +2 -2
  102. package/dist/{chunk-FEELV5IV.js → chunk-SQ7DRYCC.js} +2 -2
  103. package/dist/{chunk-U4W4LULB.js → chunk-TBHRRQZD.js} +8 -8
  104. package/dist/{chunk-PQTY22FR.js → chunk-TGIL4L4L.js} +9 -8
  105. package/dist/chunk-TGIL4L4L.js.map +1 -0
  106. package/dist/{chunk-CCIDHU6M.js → chunk-TKPVVD52.js} +2 -2
  107. package/dist/{chunk-NCP6RD6A.js → chunk-TNB5EIFV.js} +2 -2
  108. package/dist/{chunk-XUB2EK65.js → chunk-TUSR5R7I.js} +2 -2
  109. package/dist/{chunk-MMVLRUMK.js → chunk-TY4BDVLG.js} +23 -11
  110. package/dist/chunk-TY4BDVLG.js.map +1 -0
  111. package/dist/{chunk-4VWTIT5C.js → chunk-U63S2JWI.js} +2 -2
  112. package/dist/{chunk-3S5YZWB7.js → chunk-UTLIQBRY.js} +10 -7
  113. package/dist/chunk-UTLIQBRY.js.map +1 -0
  114. package/dist/{chunk-NR2OVOTD.js → chunk-UWT7RCL3.js} +2 -2
  115. package/dist/{chunk-DH5CKOYK.js → chunk-V4UIM4QE.js} +2 -2
  116. package/dist/{chunk-K2Z3KGOH.js → chunk-WHSTZRUY.js} +2 -2
  117. package/dist/{chunk-2K3NCVDI.js → chunk-XF5R2FQT.js} +31 -19
  118. package/dist/{chunk-2K3NCVDI.js.map → chunk-XF5R2FQT.js.map} +1 -1
  119. package/dist/{chunk-RCSOG2DV.js → chunk-XFJNCZXA.js} +5 -5
  120. package/dist/{chunk-5NS4CNF6.js → chunk-XLJVJ5TK.js} +5 -5
  121. package/dist/{chunk-Q7YZL7PG.js → chunk-XP4G2DJL.js} +2 -2
  122. package/dist/{chunk-5YKC2WWG.js → chunk-YU2XIIL3.js} +6 -6
  123. package/dist/{chunk-RD2XXQW3.js → chunk-ZBUWO4XH.js} +3 -3
  124. package/dist/{chunk-LD4CHA7U.js → chunk-ZJ6HUCRK.js} +2 -2
  125. package/dist/{claim-6MPQD43X.js → claim-QHXKN7W6.js} +4 -4
  126. package/dist/cli.js +30 -30
  127. package/dist/{companies-KRF2K4CA.js → companies-PGVT62JL.js} +4 -4
  128. package/dist/{complete-V433ON5C.js → complete-TCTR3XVD.js} +4 -4
  129. package/dist/{connect-QVIAM3GX.js → connect-4S7JLICS.js} +7 -7
  130. package/dist/{conversation-VZKBZZGG.js → conversation-DI4WMEL2.js} +4 -4
  131. package/dist/{conversion-report-REOHVLCI.js → conversion-report-KL4LIVY5.js} +2 -2
  132. package/dist/{conversion-upload-command-ASHA6T6H.js → conversion-upload-command-EIKJU5ZW.js} +4 -4
  133. package/dist/{conversion-writes-JU7Q2MUO.js → conversion-writes-MPBCTVSP.js} +3 -3
  134. package/dist/{conversions-3ISBR3TS.js → conversions-ACYT6K7H.js} +5 -5
  135. package/dist/{conversions-ZLC6YTJ5.js → conversions-JTYMFX66.js} +8 -8
  136. package/dist/{create-IFCCMKFT.js → create-3QA7X2DD.js} +3 -3
  137. package/dist/{create-R5P6JU5A.js → create-AFVT5JTH.js} +4 -4
  138. package/dist/{create-SF6DOGDJ.js → create-TYCOMVWR.js} +4 -4
  139. package/dist/{create-B3QMYSIX.js → create-VFXEJ3EV.js} +4 -4
  140. package/dist/{creatives-U2M4F3D5.js → creatives-2VVJIAK3.js} +12 -12
  141. package/dist/{creatives-KD7MOCR3.js → creatives-E6N2YLHE.js} +9 -9
  142. package/dist/{credentials-2KJUKBMF.js → credentials-34I6ZZWU.js} +4 -4
  143. package/dist/{critique-JVKJEBAC.js → critique-JM5QADYW.js} +7 -7
  144. package/dist/{critique-43OVWKN7.js → critique-OCVV6N3U.js} +18 -18
  145. package/dist/{crm-ZYDNEME5.js → crm-4F3LFOZD.js} +5 -5
  146. package/dist/{crm-GX72E2LT.js → crm-MNBYNP5R.js} +5 -5
  147. package/dist/{currency-CGDI2NXI.js → currency-3QTI5RSB.js} +4 -4
  148. package/dist/{customers-P4N4NXLJ.js → customers-VNYNT2EQ.js} +8 -8
  149. package/dist/{delete-S4VKH7IS.js → delete-AZEVPMVO.js} +4 -4
  150. package/dist/{delete-RS7RQDUX.js → delete-PRJGFA2U.js} +4 -4
  151. package/dist/{delete-AK5IV44E.js → delete-UZRHYEPK.js} +3 -3
  152. package/dist/{demographics-IKWN2H3V.js → demographics-JMZA7MB6.js} +4 -4
  153. package/dist/{discard-H6DOHJRG.js → discard-OH3B5P4C.js} +4 -4
  154. package/dist/{discover-L4TPEKGY.js → discover-5GLET36U.js} +4 -4
  155. package/dist/{domain-US4KKAXC.js → domain-K3IILLYE.js} +4 -4
  156. package/dist/{draft-OLFQZBWL.js → draft-2KHUZTIE.js} +4 -4
  157. package/dist/{draft-IZ4YLQRD.js → draft-7RYDPOFS.js} +4 -4
  158. package/dist/{draft-R32RFDCI.js → draft-BB3UUWJP.js} +4 -4
  159. package/dist/{draft-BIQ3ZAYW.js → draft-LZL6VWHX.js} +5 -5
  160. package/dist/{draft-Y2QJE2NM.js → draft-VXGZDBC7.js} +3 -3
  161. package/dist/engine/index.js +7 -7
  162. package/dist/{facets-JBZQHN3D.js → facets-PAWOEHOK.js} +4 -4
  163. package/dist/{feedback-3GU3PAEI.js → feedback-GAGIKZ6B.js} +21 -21
  164. package/dist/{feedback-record-PIJDOJW3.js → feedback-record-ZORDBRV2.js} +22 -22
  165. package/dist/{fetch-GOY6DQRL.js → fetch-M5GIBURQ.js} +4 -4
  166. package/dist/{fit-TVQ7RK52.js → fit-DGCYW7LN.js} +13 -13
  167. package/dist/{flows-274YPU6I.js → flows-TD6PNUDM.js} +11 -11
  168. package/dist/{fonts-BMUNDGOZ.js → fonts-IQ6XOUGU.js} +9 -9
  169. package/dist/{forecast-W5F2MNOV.js → forecast-FACEH4WR.js} +5 -5
  170. package/dist/{forecast-F2CZSIMP.js → forecast-YXOKAWDZ.js} +4 -4
  171. package/dist/{funnel-LEUXICXU.js → funnel-CJRFDTCD.js} +5 -5
  172. package/dist/{generate-4HWNFAH3.js → generate-D3LUXFJT.js} +3 -3
  173. package/dist/{get-MGDY5JYZ.js → get-JRMJLLU5.js} +4 -4
  174. package/dist/{get-TY6AMFI4.js → get-NUL4YJG5.js} +4 -4
  175. package/dist/{google-ZTTE34A4.js → google-URYXWN5O.js} +22 -22
  176. package/dist/{google-ads-5ARKO757.js → google-ads-BB7CF4NV.js} +4 -4
  177. package/dist/{history-IQ33J5PB.js → history-OQAOTEO3.js} +3 -3
  178. package/dist/{history-SU7VQCDJ.js → history-Q47TKZJS.js} +4 -4
  179. package/dist/{hubspot-TJED44GO.js → hubspot-A6O5GVTH.js} +8 -8
  180. package/dist/{ideas-UTSCGCT6.js → ideas-NBQPCC5C.js} +10 -10
  181. package/dist/{images-ZMZ4WLYH.js → images-XY5DLJEA.js} +4 -4
  182. package/dist/{ingest-SGBJ3NXX.js → ingest-PUMTHASV.js} +3 -3
  183. package/dist/{ingest-DGDNZWEM.js → ingest-WWNSA6VZ.js} +4 -4
  184. package/dist/{insights-SQLE5NOJ.js → insights-PZXFCMX2.js} +2 -2
  185. package/dist/{inspect-BMQTTKMW.js → inspect-5PRLZLF5.js} +4 -4
  186. package/dist/{intent-LM36WK45.js → intent-4QVVI4FF.js} +4 -4
  187. package/dist/{keyword-gap-P652ODHN.js → keyword-gap-YMMDRYVK.js} +4 -4
  188. package/dist/{keyword-metrics-MQLGGJBT.js → keyword-metrics-FB7FCYK6.js} +6 -6
  189. package/dist/{keywords-for-site-JL6H2YGU.js → keywords-for-site-YZYALONY.js} +6 -6
  190. package/dist/{landing-AJO2BPC2.js → landing-XOCPIOWX.js} +2 -2
  191. package/dist/{languages-HL42MI7H.js → languages-R3Y2IOFU.js} +4 -4
  192. package/dist/{leads-H6JIWVI6.js → leads-SWINPYEP.js} +4 -4
  193. package/dist/{learn-RGO5KDHS.js → learn-CUGQ7MUT.js} +10 -10
  194. package/dist/{line-item-writes-V7AKAHFC.js → line-item-writes-FG3TY4W4.js} +4 -4
  195. package/dist/{line-items-GAMKVVIQ.js → line-items-ZNVBFA4H.js} +5 -5
  196. package/dist/{link-Z5AQP6JN.js → link-IFEXIUDW.js} +4 -4
  197. package/dist/{linkedin-7F6YVXQL.js → linkedin-NINSMEW6.js} +27 -27
  198. package/dist/{list-XZVQWIJN.js → list-FR2OVRVL.js} +3 -3
  199. package/dist/{list-NLGM3QDP.js → list-K65FY6SV.js} +4 -4
  200. package/dist/{list-SZH6TH74.js → list-RJG3FMZR.js} +4 -4
  201. package/dist/{locations-AEGZ36JH.js → locations-6IH7WGRG.js} +4 -4
  202. package/dist/{locations-YA7NZY44.js → locations-VL2G22Y5.js} +2 -2
  203. package/dist/{log-JM4VLJE4.js → log-TAKCMC2C.js} +4 -4
  204. package/dist/{make-IHJROEKG.js → make-JWXDETTM.js} +54 -40
  205. package/dist/make-JWXDETTM.js.map +1 -0
  206. package/dist/{map-HRLUMCR2.js → map-DWLEYXSW.js} +5 -5
  207. package/dist/{mcp-T6SAG4XB.js → mcp-NNQZ5B7N.js} +3 -3
  208. package/dist/{media-sources-7AS3274L.js → media-sources-OAFBA62X.js} +2 -2
  209. package/dist/{members-J5KWXTXY.js → members-SS7IBYVE.js} +4 -4
  210. package/dist/{metrics-VDBJ6KL7.js → metrics-YLAREC4T.js} +4 -4
  211. package/dist/{models-2DQ5NBMT.js → models-IH6KE6OH.js} +2 -2
  212. package/dist/{normalize-CHZB4QDD.js → normalize-WOZTAI6C.js} +4 -4
  213. package/dist/{options-QLXFLESP.js → options-PL44BV5E.js} +7 -7
  214. package/dist/{organization-KEGKAP4P.js → organization-SQBODZUK.js} +4 -4
  215. package/dist/{performance-SPGPGXE5.js → performance-WRARV3YR.js} +5 -5
  216. package/dist/{pixels-6IUB3Y3H.js → pixels-DWW2TDY2.js} +3 -3
  217. package/dist/{promoted-tweet-writes-TRR3KPRJ.js → promoted-tweet-writes-CAD3RGU4.js} +4 -4
  218. package/dist/{promoted-tweets-XRYZNJI2.js → promoted-tweets-NYJP3TXL.js} +3 -3
  219. package/dist/{publish-V5YGMK53.js → publish-ZW6VHB27.js} +4 -4
  220. package/dist/{query-M3IO54U2.js → query-QRPBV2AR.js} +5 -5
  221. package/dist/{reddit-STSECKMZ.js → reddit-VJTNXORD.js} +5 -5
  222. package/dist/{refresh-RQ3C2MHI.js → refresh-6I52WXG5.js} +3 -3
  223. package/dist/{release-UHGU5WBY.js → release-LSSYP2ZJ.js} +4 -4
  224. package/dist/{relevant-pages-G6SNC73K.js → relevant-pages-2XHS5WP4.js} +4 -4
  225. package/dist/{remove-LTKICIIF.js → remove-K62YJYGT.js} +3 -3
  226. package/dist/{reopen-BP5ERELB.js → reopen-RPVEBQVR.js} +4 -4
  227. package/dist/{rerun-R3DNEV5U.js → rerun-ETH2NEEX.js} +27 -27
  228. package/dist/{research-MBAPL35Y.js → research-4ASN2KMB.js} +13 -13
  229. package/dist/{research-GOYMTKZM.js → research-6J3EOBAL.js} +3 -3
  230. package/dist/{reset-SJPGSQ7I.js → reset-ETORO5UO.js} +3 -3
  231. package/dist/{reset-Q62PEGOU.js → reset-YVTYHSTY.js} +3 -3
  232. package/dist/{resolve-R45W7QEQ.js → resolve-BI7GB5U2.js} +4 -4
  233. package/dist/{retry-NBZ7Q6HK.js → retry-2ZZCKSRW.js} +3 -3
  234. package/dist/{retry-CD2Q2AJN.js → retry-QZ7YHXF3.js} +3 -3
  235. package/dist/{rules-SZIY67QF.js → rules-KEHQEXEU.js} +10 -10
  236. package/dist/{rules-add-KTLHU3YD.js → rules-add-IDBWO6XV.js} +11 -11
  237. package/dist/{run-QYIUO4NB.js → run-FFASB4YB.js} +27 -27
  238. package/dist/{run-HCJKCEOL.js → run-KYEOLJFV.js} +4 -4
  239. package/dist/{scaffold-ad-NIVJSO73.js → scaffold-ad-EKCXHZPT.js} +26 -26
  240. package/dist/{scaffold-static-ad-QX2NUXFR.js → scaffold-static-ad-MWKTXATN.js} +33 -33
  241. package/dist/{scaffold-video-NXBM54K3.js → scaffold-video-BYPPH352.js} +23 -23
  242. package/dist/{schedule-BSQHXJ5V.js → schedule-4BK2ML6F.js} +3 -3
  243. package/dist/{scheduled-agents-MFLMG34I.js → scheduled-agents-GMGP3G6T.js} +10 -10
  244. package/dist/{schema-IWPG3YSN.js → schema-QPPWADIL.js} +5 -5
  245. package/dist/{search-EGI5K77S.js → search-GCSQ6CSD.js} +3 -3
  246. package/dist/{select-Q4S4CPKV.js → select-CPFKK57J.js} +20 -20
  247. package/dist/{set-prompt-3MVZW3L6.js → set-prompt-TJ3UTNYS.js} +19 -19
  248. package/dist/{setup-links-5ILQNMFZ.js → setup-links-C3EUV2RX.js} +4 -4
  249. package/dist/{site-LBXNVRPE.js → site-W5W7FCUD.js} +5 -5
  250. package/dist/{sources-GP4PUTX2.js → sources-AWODYZDS.js} +7 -7
  251. package/dist/{sources-N4UANUHJ.js → sources-SGGLJIOA.js} +6 -6
  252. package/dist/{stale-NT2JRQHY.js → stale-KILEXX57.js} +19 -19
  253. package/dist/{status-GSFMLC6W.js → status-KUSLGZD7.js} +4 -4
  254. package/dist/{studio-YB5WXQYC.js → studio-LMDDQWRY.js} +4 -4
  255. package/dist/{sync-LIV7FU4N.js → sync-TCY4NX7J.js} +3 -3
  256. package/dist/{sync-definition-6XPX6VJU.js → sync-definition-DGSAZGQZ.js} +22 -22
  257. package/dist/{tags-ZHCGHGYC.js → tags-IHLO2NDM.js} +4 -4
  258. package/dist/{tags-6RQVXS47.js → tags-QQLYW2QQ.js} +3 -3
  259. package/dist/{tags-AAIFQ6LS.js → tags-QXRKKRIR.js} +4 -4
  260. package/dist/{tags-F355NMIR.js → tags-U5YWCPFW.js} +4 -4
  261. package/dist/{tags-4JQX7HMT.js → tags-ZYVOKGHU.js} +4 -4
  262. package/dist/{targeting-criteria-6FY2JB3V.js → targeting-criteria-AEBSY6OY.js} +3 -3
  263. package/dist/{targets-NI7TR4GV.js → targets-5Q2OFVXL.js} +4 -4
  264. package/dist/{testimonials-G7CCH7VN.js → testimonials-O52ULRAU.js} +6 -6
  265. package/dist/{themes-PXDXIKYR.js → themes-26XFWSWC.js} +4 -4
  266. package/dist/{top-companies-YH2ZJEH5.js → top-companies-OMGAFFWN.js} +4 -4
  267. package/dist/{translate-27DIFMBU.js → translate-FBQTVQFD.js} +24 -24
  268. package/dist/{triggers-WYFM7PAH.js → triggers-PTPG6OQ6.js} +4 -4
  269. package/dist/{unlink-PTWUSM5B.js → unlink-3BAXM2OH.js} +4 -4
  270. package/dist/{unstage-MCM6EZWK.js → unstage-EFW465VN.js} +4 -4
  271. package/dist/{update-V6E3CIFD.js → update-2RCIXWP3.js} +4 -4
  272. package/dist/{update-643S2MUW.js → update-5A7Q7S6I.js} +4 -4
  273. package/dist/{update-2BDIJDHN.js → update-VTUB2M5I.js} +3 -3
  274. package/dist/{update-GUIP6G3N.js → update-XPRHUFBR.js} +4 -4
  275. package/dist/{upload-3YJJ5VID.js → upload-Y3TACPEN.js} +4 -4
  276. package/dist/{url-options-LHS4SWWB.js → url-options-6CNDIUDM.js} +4 -4
  277. package/dist/{url-params-2DKIXKHH.js → url-params-ZUYOLAJG.js} +4 -4
  278. package/dist/{validate-AYPLNS7A.js → validate-KPJLIGYY.js} +22 -22
  279. package/dist/{videos-KEDR4GG3.js → videos-EFMNE6U2.js} +5 -5
  280. package/dist/{viewer-check-TSH3SAYJ.js → viewer-check-2GI26EKA.js} +12 -12
  281. package/dist/{web-UOGBNAHR.js → web-4JGYRY36.js} +4 -4
  282. package/dist/{winning-ads-SGBI3WHK.js → winning-ads-6SXA4HGB.js} +3 -3
  283. package/dist/{write-commands-E7JOB4HX.js → write-commands-LQXKNBA5.js} +5 -5
  284. package/dist/{x-UNSN57YP.js → x-LUEUC3XO.js} +6 -6
  285. package/package.json +1 -1
  286. package/dist/chunk-3S5YZWB7.js.map +0 -1
  287. package/dist/chunk-5RCCESDX.js.map +0 -1
  288. package/dist/chunk-ELL2IQMF.js.map +0 -1
  289. package/dist/chunk-IG627WWY.js.map +0 -1
  290. package/dist/chunk-ML7DLFFY.js.map +0 -1
  291. package/dist/chunk-MMVLRUMK.js.map +0 -1
  292. package/dist/chunk-PQTY22FR.js.map +0 -1
  293. package/dist/chunk-RDCYPWQZ.js.map +0 -1
  294. package/dist/chunk-T6ATGN7Y.js.map +0 -1
  295. package/dist/chunk-U2452GLO.js.map +0 -1
  296. package/dist/make-IHJROEKG.js.map +0 -1
  297. /package/dist/{account-Z65CPOWE.js.map → account-ELL7ZZLM.js.map} +0 -0
  298. /package/dist/{account-VH2AATWI.js.map → account-KZVOT6HL.js.map} +0 -0
  299. /package/dist/{account-reads-GYI2SS6T.js.map → account-reads-LA45L6G3.js.map} +0 -0
  300. /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-CEPERFD6.js.map} +0 -0
  301. /package/dist/{accounts-XG472YLB.js.map → accounts-7G556DH4.js.map} +0 -0
  302. /package/dist/{accounts-SPLE7URQ.js.map → accounts-HC7GPQNG.js.map} +0 -0
  303. /package/dist/{actions-KQTXBNJU.js.map → actions-V6YP5C3X.js.map} +0 -0
  304. /package/dist/{activecampaign-42JXANUA.js.map → activecampaign-CHZEHRHZ.js.map} +0 -0
  305. /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-XGSCEQTW.js.map} +0 -0
  306. /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-GKOLDGET.js.map} +0 -0
  307. /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-VVD36JKH.js.map} +0 -0
  308. /package/dist/{add-C3FQ5D62.js.map → add-3MD72QMT.js.map} +0 -0
  309. /package/dist/{add-KTEJCE4L.js.map → add-TSQNUP5N.js.map} +0 -0
  310. /package/dist/{ads-L65JIKCD.js.map → ads-EKZVHKPN.js.map} +0 -0
  311. /package/dist/{ads-WPI3AMSR.js.map → ads-KRM4WAMZ.js.map} +0 -0
  312. /package/dist/{advertisers-36HP3AOE.js.map → advertisers-XJG7XDK7.js.map} +0 -0
  313. /package/dist/{analytics-IFNBT7IM.js.map → analytics-DO4UKW2H.js.map} +0 -0
  314. /package/dist/{analytics-I4LZCRG2.js.map → analytics-JVT2OBQC.js.map} +0 -0
  315. /package/dist/{animate-3LV3LHXQ.js.map → animate-G4P3OEJE.js.map} +0 -0
  316. /package/dist/{assign-WBLSZNCO.js.map → assign-72YAL6TP.js.map} +0 -0
  317. /package/dist/{audience-size-LOX5BNXI.js.map → audience-size-M5NU4QYN.js.map} +0 -0
  318. /package/dist/{audiences-RPLVMO4H.js.map → audiences-BU4JZJT7.js.map} +0 -0
  319. /package/dist/{audit-6AG6BPXQ.js.map → audit-22KQAHJR.js.map} +0 -0
  320. /package/dist/{autocomplete-2QRU7ARD.js.map → autocomplete-KLNQIK5T.js.map} +0 -0
  321. /package/dist/{avatars-EIETXCF3.js.map → avatars-VO6FMJFB.js.map} +0 -0
  322. /package/dist/{bid-pricing-5LZFHQTS.js.map → bid-pricing-52HDANYL.js.map} +0 -0
  323. /package/dist/{brand-CINQG3JG.js.map → brand-XXNOVSGE.js.map} +0 -0
  324. /package/dist/{brief-WAQ2V6Q4.js.map → brief-MNWFEJ3L.js.map} +0 -0
  325. /package/dist/{campaign-groups-5CMTEJZZ.js.map → campaign-groups-JFOFU76X.js.map} +0 -0
  326. /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-NSEJCINS.js.map} +0 -0
  327. /package/dist/{campaign-writes-4RMPHQCT.js.map → campaign-writes-PKWLLKB5.js.map} +0 -0
  328. /package/dist/{campaigns-NFRLFNXI.js.map → campaigns-5AZMOOID.js.map} +0 -0
  329. /package/dist/{campaigns-PC7UAVXR.js.map → campaigns-H4VK3GKK.js.map} +0 -0
  330. /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-VWN2XPK2.js.map} +0 -0
  331. /package/dist/{canvas-A4XKEBN7.js.map → canvas-TTV7QZZT.js.map} +0 -0
  332. /package/dist/{capabilities-FNVTPCDT.js.map → capabilities-VJ53ROIP.js.map} +0 -0
  333. /package/dist/{catalog-SJBGNNY4.js.map → catalog-43BSTAT6.js.map} +0 -0
  334. /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-XH5NHH4C.js.map} +0 -0
  335. /package/dist/{changes-J67WATHX.js.map → changes-F6WUXFC3.js.map} +0 -0
  336. /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-K6KNTME4.js.map} +0 -0
  337. /package/dist/{chats-S5FCV7YO.js.map → chats-PWLQO7UY.js.map} +0 -0
  338. /package/dist/{check-GCZ2ZBKH.js.map → check-545MAB4E.js.map} +0 -0
  339. /package/dist/{chunk-FRK7SSEH.js.map → chunk-2QSPPWOU.js.map} +0 -0
  340. /package/dist/{chunk-U6IWRZQF.js.map → chunk-2WTD5Y34.js.map} +0 -0
  341. /package/dist/{chunk-AHF6TQWB.js.map → chunk-3UBTVAFJ.js.map} +0 -0
  342. /package/dist/{chunk-KQDAFZKR.js.map → chunk-3ZHOBEQD.js.map} +0 -0
  343. /package/dist/{chunk-RLS5OPPZ.js.map → chunk-46TND6YK.js.map} +0 -0
  344. /package/dist/{chunk-3UXMQ3K2.js.map → chunk-5SRHACZW.js.map} +0 -0
  345. /package/dist/{chunk-7U3V64YT.js.map → chunk-64HQDJ2E.js.map} +0 -0
  346. /package/dist/{chunk-65N4ZPQD.js.map → chunk-6OIKNJ7G.js.map} +0 -0
  347. /package/dist/{chunk-XSGO44OV.js.map → chunk-6RALLEJO.js.map} +0 -0
  348. /package/dist/{chunk-CXQRTLSQ.js.map → chunk-AOZ7547I.js.map} +0 -0
  349. /package/dist/{chunk-ZBV5IV5T.js.map → chunk-B7FVPHCW.js.map} +0 -0
  350. /package/dist/{chunk-A2FKWRKO.js.map → chunk-C7MENOP5.js.map} +0 -0
  351. /package/dist/{chunk-MIOOPOG2.js.map → chunk-CSN6L345.js.map} +0 -0
  352. /package/dist/{chunk-NNF4RARY.js.map → chunk-D6KHVUDS.js.map} +0 -0
  353. /package/dist/{chunk-DCTEL4KG.js.map → chunk-FQXGII24.js.map} +0 -0
  354. /package/dist/{chunk-ADSNY4KZ.js.map → chunk-G5GV6SUK.js.map} +0 -0
  355. /package/dist/{chunk-IWWOGBGA.js.map → chunk-GD6UJDOB.js.map} +0 -0
  356. /package/dist/{chunk-2DHHL4PU.js.map → chunk-GJWMPTUE.js.map} +0 -0
  357. /package/dist/{chunk-6KK26F2T.js.map → chunk-I2WRZJAC.js.map} +0 -0
  358. /package/dist/{chunk-WNJ5SYAG.js.map → chunk-I44SNQ34.js.map} +0 -0
  359. /package/dist/{chunk-R5WNYLG4.js.map → chunk-IYELKHBG.js.map} +0 -0
  360. /package/dist/{chunk-XUR4QWCS.js.map → chunk-JQNO6JCV.js.map} +0 -0
  361. /package/dist/{chunk-R2TAVQGZ.js.map → chunk-K4NMOWG7.js.map} +0 -0
  362. /package/dist/{chunk-YD7BQDJ6.js.map → chunk-KOVQ2JGM.js.map} +0 -0
  363. /package/dist/{chunk-V6PXHQSI.js.map → chunk-KXSXZAC2.js.map} +0 -0
  364. /package/dist/{chunk-TNOJ6O6B.js.map → chunk-LFXE2G6R.js.map} +0 -0
  365. /package/dist/{chunk-NVGXYF6K.js.map → chunk-LMZAOTRX.js.map} +0 -0
  366. /package/dist/{chunk-ABXTGAG7.js.map → chunk-MK3OJZIU.js.map} +0 -0
  367. /package/dist/{chunk-DF22CTXE.js.map → chunk-P5PX2G7E.js.map} +0 -0
  368. /package/dist/{chunk-RMLJNHCU.js.map → chunk-PHPXAMY3.js.map} +0 -0
  369. /package/dist/{chunk-BSEB55E6.js.map → chunk-QKABEX3F.js.map} +0 -0
  370. /package/dist/{chunk-JFA4R3KS.js.map → chunk-QYAI24PN.js.map} +0 -0
  371. /package/dist/{chunk-DQC4NIJE.js.map → chunk-QZHGIJOW.js.map} +0 -0
  372. /package/dist/{chunk-WD5BQBVY.js.map → chunk-REMR5FHD.js.map} +0 -0
  373. /package/dist/{chunk-AS5VL32C.js.map → chunk-RGX7AQ2K.js.map} +0 -0
  374. /package/dist/{chunk-WMVTIKET.js.map → chunk-ROX7LQRR.js.map} +0 -0
  375. /package/dist/{chunk-AQ5WISEG.js.map → chunk-S7B2TOOU.js.map} +0 -0
  376. /package/dist/{chunk-7VHPAGPK.js.map → chunk-SEPPFM5S.js.map} +0 -0
  377. /package/dist/{chunk-ORQKMXHA.js.map → chunk-SIKCVWM3.js.map} +0 -0
  378. /package/dist/{chunk-UMZIQIWN.js.map → chunk-SK2N45LO.js.map} +0 -0
  379. /package/dist/{chunk-FEELV5IV.js.map → chunk-SQ7DRYCC.js.map} +0 -0
  380. /package/dist/{chunk-U4W4LULB.js.map → chunk-TBHRRQZD.js.map} +0 -0
  381. /package/dist/{chunk-CCIDHU6M.js.map → chunk-TKPVVD52.js.map} +0 -0
  382. /package/dist/{chunk-NCP6RD6A.js.map → chunk-TNB5EIFV.js.map} +0 -0
  383. /package/dist/{chunk-XUB2EK65.js.map → chunk-TUSR5R7I.js.map} +0 -0
  384. /package/dist/{chunk-4VWTIT5C.js.map → chunk-U63S2JWI.js.map} +0 -0
  385. /package/dist/{chunk-NR2OVOTD.js.map → chunk-UWT7RCL3.js.map} +0 -0
  386. /package/dist/{chunk-DH5CKOYK.js.map → chunk-V4UIM4QE.js.map} +0 -0
  387. /package/dist/{chunk-K2Z3KGOH.js.map → chunk-WHSTZRUY.js.map} +0 -0
  388. /package/dist/{chunk-RCSOG2DV.js.map → chunk-XFJNCZXA.js.map} +0 -0
  389. /package/dist/{chunk-5NS4CNF6.js.map → chunk-XLJVJ5TK.js.map} +0 -0
  390. /package/dist/{chunk-Q7YZL7PG.js.map → chunk-XP4G2DJL.js.map} +0 -0
  391. /package/dist/{chunk-5YKC2WWG.js.map → chunk-YU2XIIL3.js.map} +0 -0
  392. /package/dist/{chunk-RD2XXQW3.js.map → chunk-ZBUWO4XH.js.map} +0 -0
  393. /package/dist/{chunk-LD4CHA7U.js.map → chunk-ZJ6HUCRK.js.map} +0 -0
  394. /package/dist/{claim-6MPQD43X.js.map → claim-QHXKN7W6.js.map} +0 -0
  395. /package/dist/{companies-KRF2K4CA.js.map → companies-PGVT62JL.js.map} +0 -0
  396. /package/dist/{complete-V433ON5C.js.map → complete-TCTR3XVD.js.map} +0 -0
  397. /package/dist/{connect-QVIAM3GX.js.map → connect-4S7JLICS.js.map} +0 -0
  398. /package/dist/{conversation-VZKBZZGG.js.map → conversation-DI4WMEL2.js.map} +0 -0
  399. /package/dist/{conversion-report-REOHVLCI.js.map → conversion-report-KL4LIVY5.js.map} +0 -0
  400. /package/dist/{conversion-upload-command-ASHA6T6H.js.map → conversion-upload-command-EIKJU5ZW.js.map} +0 -0
  401. /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-MPBCTVSP.js.map} +0 -0
  402. /package/dist/{conversions-3ISBR3TS.js.map → conversions-ACYT6K7H.js.map} +0 -0
  403. /package/dist/{conversions-ZLC6YTJ5.js.map → conversions-JTYMFX66.js.map} +0 -0
  404. /package/dist/{create-IFCCMKFT.js.map → create-3QA7X2DD.js.map} +0 -0
  405. /package/dist/{create-R5P6JU5A.js.map → create-AFVT5JTH.js.map} +0 -0
  406. /package/dist/{create-SF6DOGDJ.js.map → create-TYCOMVWR.js.map} +0 -0
  407. /package/dist/{create-B3QMYSIX.js.map → create-VFXEJ3EV.js.map} +0 -0
  408. /package/dist/{creatives-U2M4F3D5.js.map → creatives-2VVJIAK3.js.map} +0 -0
  409. /package/dist/{creatives-KD7MOCR3.js.map → creatives-E6N2YLHE.js.map} +0 -0
  410. /package/dist/{credentials-2KJUKBMF.js.map → credentials-34I6ZZWU.js.map} +0 -0
  411. /package/dist/{critique-JVKJEBAC.js.map → critique-JM5QADYW.js.map} +0 -0
  412. /package/dist/{critique-43OVWKN7.js.map → critique-OCVV6N3U.js.map} +0 -0
  413. /package/dist/{crm-ZYDNEME5.js.map → crm-4F3LFOZD.js.map} +0 -0
  414. /package/dist/{crm-GX72E2LT.js.map → crm-MNBYNP5R.js.map} +0 -0
  415. /package/dist/{currency-CGDI2NXI.js.map → currency-3QTI5RSB.js.map} +0 -0
  416. /package/dist/{customers-P4N4NXLJ.js.map → customers-VNYNT2EQ.js.map} +0 -0
  417. /package/dist/{delete-S4VKH7IS.js.map → delete-AZEVPMVO.js.map} +0 -0
  418. /package/dist/{delete-RS7RQDUX.js.map → delete-PRJGFA2U.js.map} +0 -0
  419. /package/dist/{delete-AK5IV44E.js.map → delete-UZRHYEPK.js.map} +0 -0
  420. /package/dist/{demographics-IKWN2H3V.js.map → demographics-JMZA7MB6.js.map} +0 -0
  421. /package/dist/{discard-H6DOHJRG.js.map → discard-OH3B5P4C.js.map} +0 -0
  422. /package/dist/{discover-L4TPEKGY.js.map → discover-5GLET36U.js.map} +0 -0
  423. /package/dist/{domain-US4KKAXC.js.map → domain-K3IILLYE.js.map} +0 -0
  424. /package/dist/{draft-OLFQZBWL.js.map → draft-2KHUZTIE.js.map} +0 -0
  425. /package/dist/{draft-IZ4YLQRD.js.map → draft-7RYDPOFS.js.map} +0 -0
  426. /package/dist/{draft-R32RFDCI.js.map → draft-BB3UUWJP.js.map} +0 -0
  427. /package/dist/{draft-BIQ3ZAYW.js.map → draft-LZL6VWHX.js.map} +0 -0
  428. /package/dist/{draft-Y2QJE2NM.js.map → draft-VXGZDBC7.js.map} +0 -0
  429. /package/dist/{facets-JBZQHN3D.js.map → facets-PAWOEHOK.js.map} +0 -0
  430. /package/dist/{feedback-3GU3PAEI.js.map → feedback-GAGIKZ6B.js.map} +0 -0
  431. /package/dist/{feedback-record-PIJDOJW3.js.map → feedback-record-ZORDBRV2.js.map} +0 -0
  432. /package/dist/{fetch-GOY6DQRL.js.map → fetch-M5GIBURQ.js.map} +0 -0
  433. /package/dist/{fit-TVQ7RK52.js.map → fit-DGCYW7LN.js.map} +0 -0
  434. /package/dist/{flows-274YPU6I.js.map → flows-TD6PNUDM.js.map} +0 -0
  435. /package/dist/{fonts-BMUNDGOZ.js.map → fonts-IQ6XOUGU.js.map} +0 -0
  436. /package/dist/{forecast-W5F2MNOV.js.map → forecast-FACEH4WR.js.map} +0 -0
  437. /package/dist/{forecast-F2CZSIMP.js.map → forecast-YXOKAWDZ.js.map} +0 -0
  438. /package/dist/{funnel-LEUXICXU.js.map → funnel-CJRFDTCD.js.map} +0 -0
  439. /package/dist/{generate-4HWNFAH3.js.map → generate-D3LUXFJT.js.map} +0 -0
  440. /package/dist/{get-MGDY5JYZ.js.map → get-JRMJLLU5.js.map} +0 -0
  441. /package/dist/{get-TY6AMFI4.js.map → get-NUL4YJG5.js.map} +0 -0
  442. /package/dist/{google-ZTTE34A4.js.map → google-URYXWN5O.js.map} +0 -0
  443. /package/dist/{google-ads-5ARKO757.js.map → google-ads-BB7CF4NV.js.map} +0 -0
  444. /package/dist/{history-IQ33J5PB.js.map → history-OQAOTEO3.js.map} +0 -0
  445. /package/dist/{history-SU7VQCDJ.js.map → history-Q47TKZJS.js.map} +0 -0
  446. /package/dist/{hubspot-TJED44GO.js.map → hubspot-A6O5GVTH.js.map} +0 -0
  447. /package/dist/{ideas-UTSCGCT6.js.map → ideas-NBQPCC5C.js.map} +0 -0
  448. /package/dist/{images-ZMZ4WLYH.js.map → images-XY5DLJEA.js.map} +0 -0
  449. /package/dist/{ingest-SGBJ3NXX.js.map → ingest-PUMTHASV.js.map} +0 -0
  450. /package/dist/{ingest-DGDNZWEM.js.map → ingest-WWNSA6VZ.js.map} +0 -0
  451. /package/dist/{insights-SQLE5NOJ.js.map → insights-PZXFCMX2.js.map} +0 -0
  452. /package/dist/{inspect-BMQTTKMW.js.map → inspect-5PRLZLF5.js.map} +0 -0
  453. /package/dist/{intent-LM36WK45.js.map → intent-4QVVI4FF.js.map} +0 -0
  454. /package/dist/{keyword-gap-P652ODHN.js.map → keyword-gap-YMMDRYVK.js.map} +0 -0
  455. /package/dist/{keyword-metrics-MQLGGJBT.js.map → keyword-metrics-FB7FCYK6.js.map} +0 -0
  456. /package/dist/{keywords-for-site-JL6H2YGU.js.map → keywords-for-site-YZYALONY.js.map} +0 -0
  457. /package/dist/{landing-AJO2BPC2.js.map → landing-XOCPIOWX.js.map} +0 -0
  458. /package/dist/{languages-HL42MI7H.js.map → languages-R3Y2IOFU.js.map} +0 -0
  459. /package/dist/{leads-H6JIWVI6.js.map → leads-SWINPYEP.js.map} +0 -0
  460. /package/dist/{learn-RGO5KDHS.js.map → learn-CUGQ7MUT.js.map} +0 -0
  461. /package/dist/{line-item-writes-V7AKAHFC.js.map → line-item-writes-FG3TY4W4.js.map} +0 -0
  462. /package/dist/{line-items-GAMKVVIQ.js.map → line-items-ZNVBFA4H.js.map} +0 -0
  463. /package/dist/{link-Z5AQP6JN.js.map → link-IFEXIUDW.js.map} +0 -0
  464. /package/dist/{linkedin-7F6YVXQL.js.map → linkedin-NINSMEW6.js.map} +0 -0
  465. /package/dist/{list-XZVQWIJN.js.map → list-FR2OVRVL.js.map} +0 -0
  466. /package/dist/{list-NLGM3QDP.js.map → list-K65FY6SV.js.map} +0 -0
  467. /package/dist/{list-SZH6TH74.js.map → list-RJG3FMZR.js.map} +0 -0
  468. /package/dist/{locations-AEGZ36JH.js.map → locations-6IH7WGRG.js.map} +0 -0
  469. /package/dist/{locations-YA7NZY44.js.map → locations-VL2G22Y5.js.map} +0 -0
  470. /package/dist/{log-JM4VLJE4.js.map → log-TAKCMC2C.js.map} +0 -0
  471. /package/dist/{map-HRLUMCR2.js.map → map-DWLEYXSW.js.map} +0 -0
  472. /package/dist/{mcp-T6SAG4XB.js.map → mcp-NNQZ5B7N.js.map} +0 -0
  473. /package/dist/{media-sources-7AS3274L.js.map → media-sources-OAFBA62X.js.map} +0 -0
  474. /package/dist/{members-J5KWXTXY.js.map → members-SS7IBYVE.js.map} +0 -0
  475. /package/dist/{metrics-VDBJ6KL7.js.map → metrics-YLAREC4T.js.map} +0 -0
  476. /package/dist/{models-2DQ5NBMT.js.map → models-IH6KE6OH.js.map} +0 -0
  477. /package/dist/{normalize-CHZB4QDD.js.map → normalize-WOZTAI6C.js.map} +0 -0
  478. /package/dist/{options-QLXFLESP.js.map → options-PL44BV5E.js.map} +0 -0
  479. /package/dist/{organization-KEGKAP4P.js.map → organization-SQBODZUK.js.map} +0 -0
  480. /package/dist/{performance-SPGPGXE5.js.map → performance-WRARV3YR.js.map} +0 -0
  481. /package/dist/{pixels-6IUB3Y3H.js.map → pixels-DWW2TDY2.js.map} +0 -0
  482. /package/dist/{promoted-tweet-writes-TRR3KPRJ.js.map → promoted-tweet-writes-CAD3RGU4.js.map} +0 -0
  483. /package/dist/{promoted-tweets-XRYZNJI2.js.map → promoted-tweets-NYJP3TXL.js.map} +0 -0
  484. /package/dist/{publish-V5YGMK53.js.map → publish-ZW6VHB27.js.map} +0 -0
  485. /package/dist/{query-M3IO54U2.js.map → query-QRPBV2AR.js.map} +0 -0
  486. /package/dist/{reddit-STSECKMZ.js.map → reddit-VJTNXORD.js.map} +0 -0
  487. /package/dist/{refresh-RQ3C2MHI.js.map → refresh-6I52WXG5.js.map} +0 -0
  488. /package/dist/{release-UHGU5WBY.js.map → release-LSSYP2ZJ.js.map} +0 -0
  489. /package/dist/{relevant-pages-G6SNC73K.js.map → relevant-pages-2XHS5WP4.js.map} +0 -0
  490. /package/dist/{remove-LTKICIIF.js.map → remove-K62YJYGT.js.map} +0 -0
  491. /package/dist/{reopen-BP5ERELB.js.map → reopen-RPVEBQVR.js.map} +0 -0
  492. /package/dist/{rerun-R3DNEV5U.js.map → rerun-ETH2NEEX.js.map} +0 -0
  493. /package/dist/{research-MBAPL35Y.js.map → research-4ASN2KMB.js.map} +0 -0
  494. /package/dist/{research-GOYMTKZM.js.map → research-6J3EOBAL.js.map} +0 -0
  495. /package/dist/{reset-SJPGSQ7I.js.map → reset-ETORO5UO.js.map} +0 -0
  496. /package/dist/{reset-Q62PEGOU.js.map → reset-YVTYHSTY.js.map} +0 -0
  497. /package/dist/{resolve-R45W7QEQ.js.map → resolve-BI7GB5U2.js.map} +0 -0
  498. /package/dist/{retry-NBZ7Q6HK.js.map → retry-2ZZCKSRW.js.map} +0 -0
  499. /package/dist/{retry-CD2Q2AJN.js.map → retry-QZ7YHXF3.js.map} +0 -0
  500. /package/dist/{rules-SZIY67QF.js.map → rules-KEHQEXEU.js.map} +0 -0
  501. /package/dist/{rules-add-KTLHU3YD.js.map → rules-add-IDBWO6XV.js.map} +0 -0
  502. /package/dist/{run-QYIUO4NB.js.map → run-FFASB4YB.js.map} +0 -0
  503. /package/dist/{run-HCJKCEOL.js.map → run-KYEOLJFV.js.map} +0 -0
  504. /package/dist/{scaffold-ad-NIVJSO73.js.map → scaffold-ad-EKCXHZPT.js.map} +0 -0
  505. /package/dist/{scaffold-static-ad-QX2NUXFR.js.map → scaffold-static-ad-MWKTXATN.js.map} +0 -0
  506. /package/dist/{scaffold-video-NXBM54K3.js.map → scaffold-video-BYPPH352.js.map} +0 -0
  507. /package/dist/{schedule-BSQHXJ5V.js.map → schedule-4BK2ML6F.js.map} +0 -0
  508. /package/dist/{scheduled-agents-MFLMG34I.js.map → scheduled-agents-GMGP3G6T.js.map} +0 -0
  509. /package/dist/{schema-IWPG3YSN.js.map → schema-QPPWADIL.js.map} +0 -0
  510. /package/dist/{search-EGI5K77S.js.map → search-GCSQ6CSD.js.map} +0 -0
  511. /package/dist/{select-Q4S4CPKV.js.map → select-CPFKK57J.js.map} +0 -0
  512. /package/dist/{set-prompt-3MVZW3L6.js.map → set-prompt-TJ3UTNYS.js.map} +0 -0
  513. /package/dist/{setup-links-5ILQNMFZ.js.map → setup-links-C3EUV2RX.js.map} +0 -0
  514. /package/dist/{site-LBXNVRPE.js.map → site-W5W7FCUD.js.map} +0 -0
  515. /package/dist/{sources-GP4PUTX2.js.map → sources-AWODYZDS.js.map} +0 -0
  516. /package/dist/{sources-N4UANUHJ.js.map → sources-SGGLJIOA.js.map} +0 -0
  517. /package/dist/{stale-NT2JRQHY.js.map → stale-KILEXX57.js.map} +0 -0
  518. /package/dist/{status-GSFMLC6W.js.map → status-KUSLGZD7.js.map} +0 -0
  519. /package/dist/{studio-YB5WXQYC.js.map → studio-LMDDQWRY.js.map} +0 -0
  520. /package/dist/{sync-LIV7FU4N.js.map → sync-TCY4NX7J.js.map} +0 -0
  521. /package/dist/{sync-definition-6XPX6VJU.js.map → sync-definition-DGSAZGQZ.js.map} +0 -0
  522. /package/dist/{tags-ZHCGHGYC.js.map → tags-IHLO2NDM.js.map} +0 -0
  523. /package/dist/{tags-6RQVXS47.js.map → tags-QQLYW2QQ.js.map} +0 -0
  524. /package/dist/{tags-AAIFQ6LS.js.map → tags-QXRKKRIR.js.map} +0 -0
  525. /package/dist/{tags-F355NMIR.js.map → tags-U5YWCPFW.js.map} +0 -0
  526. /package/dist/{tags-4JQX7HMT.js.map → tags-ZYVOKGHU.js.map} +0 -0
  527. /package/dist/{targeting-criteria-6FY2JB3V.js.map → targeting-criteria-AEBSY6OY.js.map} +0 -0
  528. /package/dist/{targets-NI7TR4GV.js.map → targets-5Q2OFVXL.js.map} +0 -0
  529. /package/dist/{testimonials-G7CCH7VN.js.map → testimonials-O52ULRAU.js.map} +0 -0
  530. /package/dist/{themes-PXDXIKYR.js.map → themes-26XFWSWC.js.map} +0 -0
  531. /package/dist/{top-companies-YH2ZJEH5.js.map → top-companies-OMGAFFWN.js.map} +0 -0
  532. /package/dist/{translate-27DIFMBU.js.map → translate-FBQTVQFD.js.map} +0 -0
  533. /package/dist/{triggers-WYFM7PAH.js.map → triggers-PTPG6OQ6.js.map} +0 -0
  534. /package/dist/{unlink-PTWUSM5B.js.map → unlink-3BAXM2OH.js.map} +0 -0
  535. /package/dist/{unstage-MCM6EZWK.js.map → unstage-EFW465VN.js.map} +0 -0
  536. /package/dist/{update-V6E3CIFD.js.map → update-2RCIXWP3.js.map} +0 -0
  537. /package/dist/{update-643S2MUW.js.map → update-5A7Q7S6I.js.map} +0 -0
  538. /package/dist/{update-2BDIJDHN.js.map → update-VTUB2M5I.js.map} +0 -0
  539. /package/dist/{update-GUIP6G3N.js.map → update-XPRHUFBR.js.map} +0 -0
  540. /package/dist/{upload-3YJJ5VID.js.map → upload-Y3TACPEN.js.map} +0 -0
  541. /package/dist/{url-options-LHS4SWWB.js.map → url-options-6CNDIUDM.js.map} +0 -0
  542. /package/dist/{url-params-2DKIXKHH.js.map → url-params-ZUYOLAJG.js.map} +0 -0
  543. /package/dist/{validate-AYPLNS7A.js.map → validate-KPJLIGYY.js.map} +0 -0
  544. /package/dist/{videos-KEDR4GG3.js.map → videos-EFMNE6U2.js.map} +0 -0
  545. /package/dist/{viewer-check-TSH3SAYJ.js.map → viewer-check-2GI26EKA.js.map} +0 -0
  546. /package/dist/{web-UOGBNAHR.js.map → web-4JGYRY36.js.map} +0 -0
  547. /package/dist/{winning-ads-SGBI3WHK.js.map → winning-ads-6SXA4HGB.js.map} +0 -0
  548. /package/dist/{write-commands-E7JOB4HX.js.map → write-commands-LQXKNBA5.js.map} +0 -0
  549. /package/dist/{x-UNSN57YP.js.map → x-LUEUC3XO.js.map} +0 -0
@@ -5,7 +5,7 @@ import {
5
5
  classifyRuleFindings,
6
6
  reviewedRules,
7
7
  rulesSystem
8
- } from "./chunk-ZBV5IV5T.js";
8
+ } from "./chunk-B7FVPHCW.js";
9
9
 
10
10
  // src/engine/nodes/local/lib/confirm-blocking.ts
11
11
  var cutByFrame = (f) => f.kind?.defect === "cut";
@@ -43,4 +43,4 @@ export {
43
43
  confirmBlocking,
44
44
  reviewAgainstRules
45
45
  };
46
- //# sourceMappingURL=chunk-6KK26F2T.js.map
46
+ //# sourceMappingURL=chunk-I2WRZJAC.js.map
@@ -6,7 +6,7 @@ import {
6
6
  FLOW_SECRET_FIELDS,
7
7
  flowCatalogEntry,
8
8
  isFlowOauthSideEffect
9
- } from "./chunk-FRK7SSEH.js";
9
+ } from "./chunk-2QSPPWOU.js";
10
10
  import {
11
11
  apiPost
12
12
  } from "./chunk-XDZVBX6L.js";
@@ -272,4 +272,4 @@ export {
272
272
  isUsableStepNameKey,
273
273
  readSettings
274
274
  };
275
- //# sourceMappingURL=chunk-WNJ5SYAG.js.map
275
+ //# sourceMappingURL=chunk-I44SNQ34.js.map
@@ -2,7 +2,7 @@ import {
2
2
  mediaTagsCreateRequestSchema,
3
3
  mediaTagsDeleteRequestSchema,
4
4
  mediaTagsUpdateRequestSchema
5
- } from "./chunk-FRK7SSEH.js";
5
+ } from "./chunk-2QSPPWOU.js";
6
6
  import {
7
7
  ApiError,
8
8
  apiGet,
@@ -194,4 +194,4 @@ Examples:
194
194
  export {
195
195
  makeTagsCommand
196
196
  };
197
- //# sourceMappingURL=chunk-R5WNYLG4.js.map
197
+ //# sourceMappingURL=chunk-IYELKHBG.js.map
@@ -2,11 +2,11 @@ import {
2
2
  IDEA_VIDEO_FORMATS,
3
3
  figuresIn,
4
4
  unsourcedClaims
5
- } from "./chunk-MMVLRUMK.js";
5
+ } from "./chunk-TY4BDVLG.js";
6
6
  import {
7
7
  AD_SPEC_SCHEMA,
8
8
  unfitReasons
9
- } from "./chunk-U2452GLO.js";
9
+ } from "./chunk-F5IH7G2F.js";
10
10
  import {
11
11
  proofStrength
12
12
  } from "./chunk-WNSE7N75.js";
@@ -15,7 +15,7 @@ import {
15
15
  import { parse, parseDocument, Scalar, visit } from "yaml";
16
16
  var REFERENCE_CANDIDATES = 6;
17
17
  function isVideoIdea(idea) {
18
- return IDEA_VIDEO_FORMATS.includes(idea.format);
18
+ return IDEA_VIDEO_FORMATS.includes(idea.format ?? "");
19
19
  }
20
20
  var BY_TEMPERATURE = {
21
21
  cold: { audienceTemperature: "0_cold", excludeBrandReliant: true },
@@ -48,7 +48,28 @@ function referenceSearchesFor(idea, temperature, where = {}) {
48
48
  const { query: _query, ...winners } = anyStage;
49
49
  const { query: _anyQuery, country: _winnersCountry, ...winnersAnywhere } = anyViewer;
50
50
  const inMarket = (steps) => where.country ? steps : [];
51
+ const shows = idea.shows?.trim();
52
+ const { formatPattern: _shownPattern, ...anyCategory } = { ...anyStage, scope: "all" };
53
+ const { country: _shownCountry, ...anyCategoryAnywhere } = anyCategory;
54
+ const { country: _viewerCountry, ...anyViewerAnywhere } = anyViewer;
55
+ const { formatPattern: _anyPattern, ...shownAnyViewer } = anyViewerAnywhere;
56
+ const kinds = (where.shows ?? []).flatMap((q) => q.trim() ? [{ ...anyCategoryAnywhere, query: q.trim() }] : []);
57
+ const shown = shows ? [
58
+ ...inMarket([{ ...anyCategory, query: shows }]),
59
+ ...kinds,
60
+ { ...anyCategoryAnywhere, query: shows },
61
+ { ...shownAnyViewer, query: shows },
62
+ ...idea.format ? [{ ...anyViewerAnywhere, query: shows }] : []
63
+ ] : [];
51
64
  const anyAd = (query) => query?.trim() ? [...inMarket([{ ...anyContainer, query: query.trim() }]), { ...anyContainerAnywhere, query: query.trim() }] : [];
65
+ if (shows) {
66
+ return [
67
+ ...shown,
68
+ ...where.category ? [anyContainerAnywhere] : [],
69
+ ...where.audience?.trim() ? [{ ...anyContainerAnywhere, query: where.audience.trim() }] : [],
70
+ { ...winnersAnywhere, sort: "winner" }
71
+ ];
72
+ }
52
73
  return [
53
74
  ...where.country ? [strict, anyStage, anyContainer] : [strict, anyStage],
54
75
  anywhere,
@@ -70,7 +91,8 @@ function referenceWhereOf(brief, fallback) {
70
91
  category: brief.category,
71
92
  ...brief.industry ? { industry: brief.industry } : {},
72
93
  ...audience ? { audience } : {},
73
- ...brief.wider.length ? { wider: brief.wider } : {}
94
+ ...brief.wider.length ? { wider: brief.wider } : {},
95
+ ...brief.shows?.length ? { shows: brief.shows } : {}
74
96
  };
75
97
  }
76
98
  function rankedForOf(brief, where, bet) {
@@ -83,7 +105,8 @@ function rankedForOf(brief, where, bet) {
83
105
  ...brief?.memesWhy ? { memesWhy: brief.memesWhy } : {},
84
106
  ...brief?.avoid.length ? { avoid: brief.avoid } : {},
85
107
  message: bet.message,
86
- who: bet.who
108
+ who: bet.who,
109
+ ...bet.shows ? { shows: bet.shows } : {}
87
110
  };
88
111
  }
89
112
  var brandKey = (name) => name.normalize("NFD").replace(new RegExp("\\p{M}", "gu"), "").toLowerCase().replace(/[^\p{L}\p{N}]/gu, "");
@@ -193,6 +216,7 @@ function fitBetOf(idea, personas, insights, market) {
193
216
  message: idea.message,
194
217
  awareness: idea.awareness,
195
218
  angle: idea.angle,
219
+ ...idea.shows ? { shows: idea.shows } : {},
196
220
  ...quotes.length > 0 ? { quotes } : {},
197
221
  ...market ? { market } : {}
198
222
  };
@@ -215,15 +239,16 @@ function unsourcedCopyLines(specJson, corpus) {
215
239
  }
216
240
  var PHOTO_FORMATS = /photo|lifestyle|before_after|ugc|product|selfie|street/;
217
241
  function ideaSpec(idea, who) {
218
- const container = idea.format.replace(/_/g, " ");
242
+ const container = idea.format ? `, as a ${idea.format.replace(/_/g, " ")}` : "";
243
+ const shows = idea.shows ? ` (${idea.shows})` : "";
219
244
  return {
220
245
  schema: AD_SPEC_SCHEMA,
221
246
  viewer: { who },
222
247
  message: idea.message,
223
248
  copy: [{ text: "[TODO: the headline, in the customer's words]", lettering: "designed", role: "headline" }],
224
249
  scene: {
225
- description: `[TODO: what the viewer sees, as a ${container}, that shows: ${idea.message}]`,
226
- look: PHOTO_FORMATS.test(idea.format) ? "photo" : "designed"
250
+ description: `[TODO: what the viewer sees first${shows}${container}, that shows: ${idea.message}]`,
251
+ look: PHOTO_FORMATS.test(idea.format ?? idea.shows ?? "") ? "photo" : "designed"
227
252
  },
228
253
  colors: [],
229
254
  references: [],
@@ -257,4 +282,4 @@ export {
257
282
  unsourcedCopyLines,
258
283
  ideaSpec
259
284
  };
260
- //# sourceMappingURL=chunk-RDCYPWQZ.js.map
285
+ //# sourceMappingURL=chunk-JLLN7R3S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/creatives/make-model.ts"],"sourcesContent":["/**\n * The rules `baker creatives make` applies to turn an idea into a creative: which reference to\n * look for, which one fits, and what the creative records about the idea it carries. Pure.\n */\nimport { proofStrength } from \"@baker/api/ad-library\";\nimport { parse, parseDocument, Scalar, visit } from \"yaml\";\nimport { AD_SPEC_SCHEMA, type AdSpec, unfitReasons } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport type { ViewerTemperature } from \"../../viewer-profile.ts\";\nimport type { PersonaEntry } from \"../canvas/viewer-check.ts\";\nimport type { FitAnswer, FitBet } from \"../winning-ads/fit.ts\";\nimport type { WinningAdsSearchArgs } from \"../winning-ads/search.ts\";\nimport { type EvidenceLevel, figuresIn, IDEA_VIDEO_FORMATS, type Idea, unsourcedClaims } from \"./ideas-model.ts\";\nimport type { ReferenceBrief } from \"./reference-brief.ts\";\nimport type { RankedFor } from \"./reference-rank.ts\";\n\nexport const REFERENCE_CANDIDATES = 6;\n\n/** Whether the idea is a video, built from beats, rather than a static from a reference. */\nexport function isVideoIdea(idea: Pick<Idea, \"format\">): boolean {\n return (IDEA_VIDEO_FORMATS as readonly string[]).includes(idea.format ?? \"\");\n}\n\n/** Who a reference was made for, by our viewer: a stranger's ad never leans on its own brand. */\nconst BY_TEMPERATURE: Record<ViewerTemperature, { audienceTemperature: string; excludeBrandReliant?: true }> = {\n cold: { audienceTemperature: \"0_cold\", excludeBrandReliant: true },\n warm: { audienceTemperature: \"1_warm_engaged,2_hot_visited\", excludeBrandReliant: true },\n hot: { audienceTemperature: \"3_customer\" },\n};\n\n/**\n * Where a reference is looked for: the company's market (`GB`), what it sells (\"rooftop solar\") and\n * who the ad is for (\"Bill-shocked homeowner\") and its broader industry (\"home energy\"), when known.\n */\nexport type ReferenceWhere = {\n country?: string;\n category?: string;\n audience?: string;\n /** Searches that widen from the ad, closest first: adjacent products, the same buyer, the same decision. */\n wider?: readonly string[];\n industry?: string;\n /** The kind of picture the idea shows, in the library's words (the brief's read of `shows`). */\n shows?: readonly string[];\n};\n\n/**\n * The library search for a static idea's reference: its container, made for our viewer, on what\n * the company sells (else the idea's message), in its market when given.\n */\nexport function referenceSearchFor(\n idea: Idea,\n temperature: ViewerTemperature,\n where: ReferenceWhere = {},\n): WinningAdsSearchArgs {\n return {\n query: where.category || idea.message,\n scope: \"followed-first\",\n platform: \"meta\",\n format: \"static\",\n formatPattern: idea.format,\n awareness: idea.awareness,\n ...BY_TEMPERATURE[temperature],\n ...(where.country ? { country: where.country } : {}),\n maxPerAdvertiser: 1,\n limit: REFERENCE_CANDIDATES,\n diverse: true,\n };\n}\n\n/**\n * The searches whose candidates are tried, best first. A proven ad of what the company sells comes\n * before the idea's container: its market, viewer and objections are ours, and its container is one\n * the thinking can keep or change. So: what the company sells, in its market (in the idea's\n * container for our viewer, loosened in turn, then any container), then anywhere; then ads made for\n * the same people, whatever they sell; then wider (an adjacent product, the same buyer buying\n * something else, the same kind of decision); then ads of the broader industry; then the message;\n * then the container's proven winners from any category, in the market and anywhere.\n * The library's judge scores an ad against the query: prod, Oct 2026, a customer's sentence about\n * one product matched no ad of another category and 13 of 15 ideas found nothing; dev, Oct 2026,\n * searched with the whole message, a UK solar installer's ads were checked against a crypto\n * exchange, a clinic and an English course, while the library held UK solar ads; and with the\n * container a filter, 7 of 10 companies found 0–2 ads of their own category.\n */\nexport function referenceSearchesFor(\n idea: Idea,\n temperature: ViewerTemperature,\n where: ReferenceWhere = {},\n): WinningAdsSearchArgs[] {\n const strict = referenceSearchFor(idea, temperature, where);\n const { awareness: _awareness, ...anyStage } = strict;\n const { audienceTemperature: _temperature, excludeBrandReliant: _reliant, ...viewerAny } = anyStage;\n const anyViewer = { ...viewerAny, scope: \"all\" as const };\n const { formatPattern: _pattern, ...anyContainer } = anyViewer;\n const { country: _country, ...anywhere } = anyViewer;\n const { country: _anyCountry, ...anyContainerAnywhere } = anyContainer;\n const { query: _query, ...winners } = anyStage;\n const { query: _anyQuery, country: _winnersCountry, ...winnersAnywhere } = anyViewer;\n const inMarket = (steps: WinningAdsSearchArgs[]) => (where.country ? steps : []);\n // What the idea shows, from any category: the picture that lands the message is found where it\n // won, and the ranking then asks whether it was made for our buyer.\n const shows = idea.shows?.trim();\n const { formatPattern: _shownPattern, ...anyCategory } = { ...anyStage, scope: \"all\" as const };\n const { country: _shownCountry, ...anyCategoryAnywhere } = anyCategory;\n const { country: _viewerCountry, ...anyViewerAnywhere } = anyViewer;\n const { formatPattern: _anyPattern, ...shownAnyViewer } = anyViewerAnywhere;\n const kinds = (where.shows ?? []).flatMap((q) => (q.trim() ? [{ ...anyCategoryAnywhere, query: q.trim() }] : []));\n const shown: WinningAdsSearchArgs[] = shows\n ? [\n ...inMarket([{ ...anyCategory, query: shows }]),\n ...kinds,\n { ...anyCategoryAnywhere, query: shows },\n { ...shownAnyViewer, query: shows },\n ...(idea.format ? [{ ...anyViewerAnywhere, query: shows }] : []),\n ]\n : [];\n const anyAd = (query: string | undefined) =>\n query?.trim()\n ? [...inMarket([{ ...anyContainer, query: query.trim() }]), { ...anyContainerAnywhere, query: query.trim() }]\n : [];\n // With what it shows searched first, the company's category is a short fallback: every search\n // runs at once, and the full ladder beside them ran a make out of its time (dev, Oct 2026).\n if (shows) {\n return [\n ...shown,\n ...(where.category ? [anyContainerAnywhere] : []),\n ...(where.audience?.trim() ? [{ ...anyContainerAnywhere, query: where.audience.trim() }] : []),\n { ...winnersAnywhere, sort: \"winner\" },\n ];\n }\n return [\n ...(where.country ? [strict, anyStage, anyContainer] : [strict, anyStage]),\n anywhere,\n anyContainerAnywhere,\n ...anyAd(where.audience),\n ...(where.wider ?? []).flatMap((q) => (q.trim() ? [{ ...anyContainerAnywhere, query: q.trim() }] : [])),\n ...anyAd(where.industry),\n ...(where.category ? [{ ...anyContainerAnywhere, query: idea.message }] : []),\n ...inMarket([{ ...winners, sort: \"winner\" }]),\n { ...winnersAnywhere, sort: \"winner\" },\n ];\n}\n\n/**\n * Where a reference is looked for, from the brief when the model read one (its market over the\n * notes' guess; every market when it says the ad runs in several), else from the notes. Pure.\n */\nexport function referenceWhereOf(brief: ReferenceBrief | null, fallback: ReferenceWhere): ReferenceWhere {\n if (!brief) return fallback;\n const country = brief.country === null ? undefined : (brief.country ?? fallback.country);\n const audience = brief.audience ?? fallback.audience;\n return {\n ...(country ? { country } : {}),\n category: brief.category,\n ...(brief.industry ? { industry: brief.industry } : {}),\n ...(audience ? { audience } : {}),\n ...(brief.wider.length ? { wider: brief.wider } : {}),\n ...(brief.shows?.length ? { shows: brief.shows } : {}),\n };\n}\n\n/** The ad being made, as candidates are ranked and picked for it: the brief's read, else the search's words. Pure. */\nexport function rankedForOf(\n brief: ReferenceBrief | null,\n where: ReferenceWhere,\n bet: Pick<FitBet, \"who\" | \"message\" | \"shows\">,\n): RankedFor {\n return {\n category: brief?.category ?? where.category ?? bet.message,\n ...(brief?.industry ? { industry: brief.industry } : {}),\n ...(brief?.buyer ? { buyer: brief.buyer } : {}),\n ...(brief?.humour ? { humour: brief.humour } : {}),\n ...(brief?.memes ? { memes: brief.memes } : {}),\n ...(brief?.memesWhy ? { memesWhy: brief.memesWhy } : {}),\n ...(brief?.avoid.length ? { avoid: brief.avoid } : {}),\n message: bet.message,\n who: bet.who,\n ...(bet.shows ? { shows: bet.shows } : {}),\n };\n}\n\n/** A name as the library and a person may both spell it: no accents, case or punctuation. Pure. */\nconst brandKey = (name: string) =>\n name\n .normalize(\"NFD\")\n .replace(/\\p{M}/gu, \"\")\n .toLowerCase()\n .replace(/[^\\p{L}\\p{N}]/gu, \"\");\n\n/** Whether an ad's advertiser is the company itself, by its brand names (three letters or more). Pure. */\nexport function isOwnBrand(advertiser: string | null | undefined, brands: readonly string[]): boolean {\n const page = brandKey(advertiser ?? \"\");\n return page !== \"\" && brands.some((b) => brandKey(b).length >= 3 && page.includes(brandKey(b)));\n}\n\ntype PoolCandidate = { ad_id?: string | null; advertiser_id?: string | null; winner_score?: number | null };\n\n/**\n * Every search's candidates in one list, the better search's first, one ad per brand (each fit\n * tried is another brand's move), the ads whose run barely proves them (`proofStrength` \"little\")\n * after the proven ones, at most `limit`. Pure.\n */\nexport function pooledCandidates<T extends PoolCandidate>(searches: readonly T[][], limit: number): T[] {\n const seen = new Set<string>();\n const pooled: T[] = [];\n for (const candidate of searches.flat()) {\n const brand = candidate.advertiser_id ? `brand:${candidate.advertiser_id}` : null;\n if (!candidate.ad_id || seen.has(candidate.ad_id) || (brand && seen.has(brand))) continue;\n seen.add(candidate.ad_id);\n if (brand) seen.add(brand);\n pooled.push(candidate);\n }\n const proven = (c: T) => proofStrength(c.winner_score) !== \"little\";\n return [...pooled.filter(proven), ...pooled.filter((c) => !proven(c))].slice(0, limit);\n}\n\n/** The proven ads, and their brands, the workspace's other creatives are already built on. */\nexport type TakenReferences = { adIds: ReadonlySet<string>; advertiserIds: ReadonlySet<string> };\n\n/**\n * The candidates no other creative is built on first (neither the ad nor its brand), then the\n * rest, each in its order: a batch of ideas is no longer built on one winning ad over and over,\n * and one already used is still built on when nothing else fits. Pure.\n */\nexport function freshReferencesFirst<T extends PoolCandidate>(candidates: readonly T[], taken: TakenReferences): T[] {\n return [\n ...candidates.filter((c) => !isTakenReference(c, taken)),\n ...candidates.filter((c) => isTakenReference(c, taken)),\n ];\n}\n\n/** Whether another creative is built on this ad or on another ad of its brand. Pure. */\nexport function isTakenReference(c: PoolCandidate, taken: TakenReferences): boolean {\n return (\n (c.ad_id != null && taken.adIds.has(c.ad_id)) ||\n (c.advertiser_id != null && taken.advertiserIds.has(c.advertiser_id))\n );\n}\n\n/** A reference fits when what it wins on is something we can supply, and our viewer would stop for it. */\nexport function fitsIdea(fit: Pick<FitAnswer, \"verdict\" | \"load_bearing\" | \"our_viewer\">): boolean {\n return fit.verdict !== \"reject\" && missingElements(fit).length === 0 && fit.our_viewer?.stops !== \"no\";\n}\n\n/** The load-bearing elements a reference wins on that we have nothing for. Pure. */\nexport function missingElements(fit: Pick<FitAnswer, \"load_bearing\">): string[] {\n return fit.load_bearing.filter((l) => l.have === \"missing\" && !l.ours?.trim()).map((l) => l.element);\n}\n\n/**\n * Why a checked reference was not built on, in one line the person can hear: what stops the scroll\n * or the proof that cannot be ours first, with the rule that forbids it; else that our viewer would\n * not stop for it; else the check's own note. Pure.\n */\nexport function whyUnfit(fit: Pick<FitAnswer, \"load_bearing\" | \"our_viewer\" | \"transfer_note\">): string {\n const reasons = unfitReasons(fit);\n if (reasons.length > 0) return reasons.join(\"; \");\n if (fit.our_viewer?.stops === \"no\") {\n return `our viewer would not stop for it${fit.our_viewer.why ? `: ${fit.our_viewer.why}` : \"\"}`;\n }\n return fit.transfer_note?.trim() || \"the check found it does not carry this ad\";\n}\n\nexport type DefinitionStrategyFields = {\n idea: string;\n message: string;\n evidence?: EvidenceLevel;\n angle: string;\n persona: string;\n awareness: string;\n hypothesis: string;\n};\n\n/** What a creative records about the idea it executes. */\nexport function definitionFieldsOf(idea: Idea, evidence: EvidenceLevel | \"explore\"): DefinitionStrategyFields {\n return {\n idea: idea.id,\n message: idea.message,\n ...(evidence !== \"explore\" ? { evidence } : {}),\n angle: idea.angle,\n persona: idea.who,\n awareness: idea.awareness,\n hypothesis: idea.why,\n };\n}\n\nconst FRONTMATTER = /^---\\r?\\n([\\s\\S]*?\\r?\\n)?---/;\n\n/** Whether a bare string reads back as the same text under YAML 1.1. */\nfunction readsAsText11(text: string): boolean {\n try {\n return parse(text, { version: \"1.1\" }) === text;\n } catch {\n return false;\n }\n}\n\n/** Set fields in a markdown file's frontmatter, keeping every other field and the body. */\nexport function setDefinitionFields(raw: string, fields: Record<string, unknown>): string {\n const match = raw.match(FRONTMATTER);\n if (!match) return raw;\n const doc = parseDocument(match[1] ?? \"\");\n if (doc.errors.length > 0) return raw;\n for (const [key, value] of Object.entries(fields)) {\n if (value === undefined) continue;\n const node = doc.createNode(value);\n // The site reads frontmatter as YAML 1.1, where a bare 2026-10-04 is a date, not text.\n visit(node, {\n Scalar(_, scalar) {\n if (typeof scalar.value === \"string\" && !readsAsText11(scalar.value)) {\n scalar.type = Scalar.QUOTE_DOUBLE;\n }\n },\n });\n doc.set(key, node);\n }\n return `---\\n${doc.toString()}---${raw.slice(match[0].length)}`;\n}\n\n/** The ad spec with the idea's message as the one thing it tells the viewer. */\nexport function setSpecMessage(specJson: string, message: string): string {\n const spec = JSON.parse(specJson) as Record<string, unknown>;\n return `${JSON.stringify({ ...spec, message }, null, 2)}\\n`;\n}\n\n/**\n * The ad spec made for the idea's persona: its title and segment from the Knowledge (\"The owner on\n * the move (Owner, 30–55, 1–10 staff)\"), else the idea's own words. The image prompt, the casting\n * check and the viewer check all read `viewer.who`; a reference-built spec held only the\n * scaffold's placeholder. The market and what the viewer knows are kept. Pure.\n */\nexport function setSpecViewer(specJson: string, idea: Pick<Idea, \"who\">, personas: readonly PersonaEntry[]): string {\n const spec = JSON.parse(specJson) as Record<string, unknown>;\n const viewer = (spec.viewer ?? {}) as Record<string, unknown>;\n return `${JSON.stringify({ ...spec, viewer: { ...viewer, who: personaWho(idea, personas) } }, null, 2)}\\n`;\n}\n\n/** Who an idea is for, in its persona's words (\"The owner on the move (Owner, 30–55)\"), else its own. Pure. */\nexport function personaWho(idea: Pick<Idea, \"who\">, personas: readonly PersonaEntry[]): string {\n const persona = personas.find((p) => p.slug === idea.who);\n if (persona?.title) return `${persona.title}${persona.segment ? ` (${persona.segment})` : \"\"}`;\n return persona?.segment ?? idea.who.replace(/[-_]/g, \" \");\n}\n\n/** The most words the audience search keeps: the library's judge reads a long query slowly. */\nconst AUDIENCE_QUERY_WORDS = 9;\n\n/**\n * The people the idea is for, as a library search: its persona's own words, cut short. Dev, Oct\n * 2026: \"homeowners worried about rising energy bills\" found twelve proven energy ads where\n * \"rooftop solar\" in the idea's container found one. Pure.\n */\nexport function audienceQuery(idea: Pick<Idea, \"who\">, personas: readonly PersonaEntry[]): string {\n return personaWho(idea, personas)\n .replace(/\\(/g, \" \")\n .replace(/\\)/g, \"\")\n .split(/\\s+/)\n .filter(Boolean)\n .slice(0, AUDIENCE_QUERY_WORDS)\n .join(\" \")\n .replace(/[\\s,;:.–—-]+$/, \"\");\n}\n\n/** The ad being made, as the fit judges a reference for it: its persona, message and the customers' words it stands on. Pure. */\nexport function fitBetOf(\n idea: Pick<Idea, \"who\" | \"message\" | \"awareness\" | \"angle\" | \"evidence\" | \"shows\">,\n personas: readonly PersonaEntry[],\n insights: readonly { id: string; quote: string }[],\n market?: string,\n): FitBet {\n const quotes = insights.filter((i) => idea.evidence.includes(i.id)).map((i) => i.quote);\n return {\n who: personaWho(idea, personas),\n message: idea.message,\n awareness: idea.awareness,\n angle: idea.angle,\n ...(idea.shows ? { shows: idea.shows } : {}),\n ...(quotes.length > 0 ? { quotes } : {}),\n ...(market ? { market } : {}),\n };\n}\n\n/**\n * The ad spec with the concept the reference's fit read (`conceptFromFit`): a build started before\n * the fit answered has none, or only the one the scaffold drafted from its describe, which names no\n * reference and nothing of what we have; without the fit's, the render never sees the reference at\n * the level that won. A concept a fit already seeded (it names its reference) stays. Pure.\n */\nexport function withFitConcept(specJson: string, seeded: Record<string, unknown>): string {\n const spec = JSON.parse(specJson) as Record<string, unknown>;\n const held = spec.concept as { reference_ad_id?: unknown } | undefined;\n if (held?.reference_ad_id) return specJson;\n return `${JSON.stringify({ ...spec, ...seeded }, null, 2)}\\n`;\n}\n\n/**\n * The copy lines the scaffold drafted that claim a figure the company never wrote: a draft written\n * beside a competitor's ad can carry the competitor's promise. `corpus` is what the company wrote.\n */\nexport function unsourcedCopyLines(specJson: string, corpus: string): string[] {\n const spec = JSON.parse(specJson) as { copy?: unknown };\n const figures = figuresIn(corpus);\n const lines = Array.isArray(spec.copy) ? spec.copy : [];\n return lines.flatMap((line) => {\n const text = typeof line === \"object\" && line !== null ? (line as { text?: unknown }).text : undefined;\n return typeof text === \"string\" && unsourcedClaims(text, figures).length > 0 ? [text] : [];\n });\n}\n\n/** Containers shown as a photograph; every other container is a designed graphic or a screen. */\nconst PHOTO_FORMATS = /photo|lifestyle|before_after|ugc|product|selfie|street/;\n\n/**\n * The ad spec an idea starts from when no proven ad fits it: the message and who it is for are\n * the idea's; the scene and the copy are placeholders the agent writes before anything renders\n * (`canvas run` refuses a placeholder). Pure.\n */\nexport function ideaSpec(idea: Idea, who: string): AdSpec {\n const container = idea.format ? `, as a ${idea.format.replace(/_/g, \" \")}` : \"\";\n const shows = idea.shows ? ` (${idea.shows})` : \"\";\n return {\n schema: AD_SPEC_SCHEMA,\n viewer: { who },\n message: idea.message,\n copy: [{ text: \"[TODO: the headline, in the customer's words]\", lettering: \"designed\", role: \"headline\" }],\n scene: {\n description: `[TODO: what the viewer sees first${shows}${container}, that shows: ${idea.message}]`,\n look: PHOTO_FORMATS.test(idea.format ?? idea.shows ?? \"\") ? \"photo\" : \"designed\",\n },\n colors: [],\n references: [],\n logo: true,\n third_party_brands: [],\n scene_text: [],\n mechanism: [],\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RESEARCH_GOOGLE_ADS_MAX_COPY
3
- } from "./chunk-FRK7SSEH.js";
3
+ } from "./chunk-2QSPPWOU.js";
4
4
 
5
5
  // src/commands/research/hints.ts
6
6
  var AD_COPY_ROUTE = 'This returns competing domains and their SERP economics \u2014 no ad copy, no headlines, no creative. For a competitor\'s Google ads and their copy: `baker research google-ads <competitor.com> --copy` (Google\'s Ads Transparency Center: every ad, how long it has run, and the text ads\' headline and description). For Meta and LinkedIn: `baker winning-ads advertisers "<brand>"` \u2192 `baker winning-ads search "<brief>" --advertiser-id <id>` \u2192 `baker winning-ads content <adId>` (`primary_text` / `headline` / `cta`, plus the spoken transcript and on-screen text for video). Do not keep querying this command for copy.';
@@ -203,4 +203,4 @@ export {
203
203
  redditPageFix,
204
204
  googleAdsHints
205
205
  };
206
- //# sourceMappingURL=chunk-XUR4QWCS.js.map
206
+ //# sourceMappingURL=chunk-JQNO6JCV.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseBrandTokens
3
- } from "./chunk-DF22CTXE.js";
3
+ } from "./chunk-P5PX2G7E.js";
4
4
 
5
5
  // src/engine/brand/fonts.ts
6
6
  import { posix } from "path";
@@ -452,4 +452,4 @@ export {
452
452
  stripFontFaceBlocks,
453
453
  upsertFontFaceCss
454
454
  };
455
- //# sourceMappingURL=chunk-R2TAVQGZ.js.map
455
+ //# sourceMappingURL=chunk-K4NMOWG7.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  flowsDir,
3
3
  walkNodes
4
- } from "./chunk-WNJ5SYAG.js";
4
+ } from "./chunk-I44SNQ34.js";
5
5
 
6
6
  // ../api/src/activecampaign.ts
7
7
  import { z } from "zod";
@@ -900,4 +900,4 @@ export {
900
900
  activeCampaignMappingHints,
901
901
  buildFieldMapping
902
902
  };
903
- //# sourceMappingURL=chunk-YD7BQDJ6.js.map
903
+ //# sourceMappingURL=chunk-KOVQ2JGM.js.map
@@ -2,7 +2,7 @@ import {
2
2
  BRAND_DIR,
3
3
  inkLuma,
4
4
  logoArtwork
5
- } from "./chunk-ELL2IQMF.js";
5
+ } from "./chunk-QTLZXIF3.js";
6
6
  import {
7
7
  fetchExternalBytes
8
8
  } from "./chunk-BLAHHMPF.js";
@@ -222,4 +222,4 @@ export {
222
222
  fetchClientLogo,
223
223
  withClientLogo
224
224
  };
225
- //# sourceMappingURL=chunk-V6PXHQSI.js.map
225
+ //# sourceMappingURL=chunk-KXSXZAC2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  OBJECTIVE_TYPES,
4
4
  calendarDaySchema,
5
5
  targetingCriteriaSchema
6
- } from "./chunk-FRK7SSEH.js";
6
+ } from "./chunk-2QSPPWOU.js";
7
7
 
8
8
  // ../api/src/ads-linkedin/planning.ts
9
9
  import { z } from "zod";
@@ -58,4 +58,4 @@ export {
58
58
  LINKEDIN_FORECAST_DEFAULT_DAYS,
59
59
  linkedinForecastRequestSchema
60
60
  };
61
- //# sourceMappingURL=chunk-TNOJ6O6B.js.map
61
+ //# sourceMappingURL=chunk-LFXE2G6R.js.map
@@ -3,7 +3,7 @@ import {
3
3
  CHANGE_SCOPE_MAX_DAYS,
4
4
  DEFAULT_CHANGE_DAYS,
5
5
  isChangeLookbackWithinReach
6
- } from "./chunk-7VHPAGPK.js";
6
+ } from "./chunk-SEPPFM5S.js";
7
7
  import {
8
8
  connectionFixExplanation,
9
9
  isNotConnectedError
@@ -843,4 +843,4 @@ export {
843
843
  resolveChangesWindow,
844
844
  parseApiError
845
845
  };
846
- //# sourceMappingURL=chunk-NVGXYF6K.js.map
846
+ //# sourceMappingURL=chunk-LMZAOTRX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  creativesRunResponseSchema
3
- } from "./chunk-FRK7SSEH.js";
3
+ } from "./chunk-2QSPPWOU.js";
4
4
  import {
5
5
  ApiError,
6
6
  apiPost
@@ -20,4 +20,4 @@ async function fetchRunRecord(runId, post = apiPost) {
20
20
  export {
21
21
  fetchRunRecord
22
22
  };
23
- //# sourceMappingURL=chunk-ABXTGAG7.js.map
23
+ //# sourceMappingURL=chunk-MK3OJZIU.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  readWorkspaceBrandDoc
3
- } from "./chunk-AS5VL32C.js";
3
+ } from "./chunk-RGX7AQ2K.js";
4
4
  import {
5
5
  brandTokensSchema
6
- } from "./chunk-FRK7SSEH.js";
6
+ } from "./chunk-2QSPPWOU.js";
7
7
 
8
8
  // src/engine/landing/lib/brand-tokens.ts
9
9
  import { readFile } from "fs/promises";
@@ -222,4 +222,4 @@ export {
222
222
  brandCommitsAiHue,
223
223
  brandCommitsCream
224
224
  };
225
- //# sourceMappingURL=chunk-DF22CTXE.js.map
225
+ //# sourceMappingURL=chunk-P5PX2G7E.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  handleLinkedinError,
3
3
  resolveAccountIdArg
4
- } from "./chunk-RLS5OPPZ.js";
4
+ } from "./chunk-46TND6YK.js";
5
5
  import {
6
6
  adCopyHints,
7
7
  booleanWordPositionalError,
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  LINKEDIN_DRAFT_BATCH_MAX,
18
18
  linkedinDraftOpInputSchema
19
- } from "./chunk-FRK7SSEH.js";
19
+ } from "./chunk-2QSPPWOU.js";
20
20
  import {
21
21
  apiPost
22
22
  } from "./chunk-XDZVBX6L.js";
@@ -343,4 +343,4 @@ export {
343
343
  requireTarget,
344
344
  requireTargets
345
345
  };
346
- //# sourceMappingURL=chunk-RMLJNHCU.js.map
346
+ //# sourceMappingURL=chunk-PHPXAMY3.js.map
@@ -1,30 +1,30 @@
1
1
  import {
2
2
  readInsights
3
- } from "./chunk-BSEB55E6.js";
3
+ } from "./chunk-QKABEX3F.js";
4
4
  import {
5
5
  heldRules,
6
6
  readAdWords,
7
7
  ruleGate
8
- } from "./chunk-RCSOG2DV.js";
8
+ } from "./chunk-XFJNCZXA.js";
9
9
  import {
10
10
  avatarRelation,
11
11
  castCompany
12
- } from "./chunk-LD4CHA7U.js";
12
+ } from "./chunk-ZJ6HUCRK.js";
13
13
  import {
14
14
  readAvatars
15
15
  } from "./chunk-LCW3U4EA.js";
16
16
  import {
17
17
  frontmatterOf,
18
18
  sourcesClaims
19
- } from "./chunk-MMVLRUMK.js";
19
+ } from "./chunk-TY4BDVLG.js";
20
20
  import {
21
21
  GENERIC_FAMILIES,
22
22
  resolveBrandFaces
23
- } from "./chunk-R2TAVQGZ.js";
23
+ } from "./chunk-K4NMOWG7.js";
24
24
  import {
25
25
  LOGO_FILE,
26
26
  readWorkspaceBrandDoc
27
- } from "./chunk-AS5VL32C.js";
27
+ } from "./chunk-RGX7AQ2K.js";
28
28
  import {
29
29
  holdUnbilledSpend
30
30
  } from "./chunk-5WMTPYKT.js";
@@ -98,10 +98,10 @@ import {
98
98
  staticRenderNodes,
99
99
  trimmedRenderBand,
100
100
  wordCount
101
- } from "./chunk-ELL2IQMF.js";
101
+ } from "./chunk-QTLZXIF3.js";
102
102
  import {
103
103
  blockingArea
104
- } from "./chunk-5NS4CNF6.js";
104
+ } from "./chunk-XLJVJ5TK.js";
105
105
  import {
106
106
  ACTOR_SHEET_MODEL,
107
107
  AD_SPEC_SCHEMA,
@@ -142,13 +142,13 @@ import {
142
142
  unwrittenProblems,
143
143
  winningMechanisms,
144
144
  withRenderedLettering
145
- } from "./chunk-U2452GLO.js";
145
+ } from "./chunk-F5IH7G2F.js";
146
146
  import {
147
147
  askAboutText,
148
148
  briefRules,
149
149
  rulesBlock,
150
150
  withoutRulesDeep
151
- } from "./chunk-ZBV5IV5T.js";
151
+ } from "./chunk-B7FVPHCW.js";
152
152
  import {
153
153
  AD_DESCRIBE_MODEL,
154
154
  AD_IMAGE_MODEL,
@@ -178,7 +178,7 @@ import {
178
178
  platformFormats,
179
179
  supportedAspectRatios,
180
180
  supportsLastFrame
181
- } from "./chunk-T6ATGN7Y.js";
181
+ } from "./chunk-F3CZFUXZ.js";
182
182
  import {
183
183
  AWARENESS_VALUES,
184
184
  marketFromCompanyDoc
@@ -196,7 +196,7 @@ import {
196
196
  } from "./chunk-2FSEESJU.js";
197
197
  import {
198
198
  brandTokensSchema
199
- } from "./chunk-FRK7SSEH.js";
199
+ } from "./chunk-2QSPPWOU.js";
200
200
  import {
201
201
  apiPost
202
202
  } from "./chunk-XDZVBX6L.js";
@@ -2635,20 +2635,82 @@ async function readNamedTypefaces(root = ".", opts = {}) {
2635
2635
  return namedTypefaces({ tokensJson, brandDoc });
2636
2636
  }
2637
2637
  var MARK_FILE = /isotype|isologo|symbol|logomark|brandmark|(^|[-_ ])(mark|icon|avatar)([-_ .]|$)/i;
2638
+ var VARIANT_WORDS = new Set(
2639
+ "logo logos logotype logotipo lockup wordmark isotype isotipo isologo symbol logomark brandmark mark icon avatar favicon brand primary secondary main default full horizontal vertical stacked square round circle alt outline transparent light dark white black mono inverse inverted negative positive negativo positivo reverse reversed color colour on blanco negro negra claro clara oscuro oscura rgb cmyk small large sm md lg".split(" ")
2640
+ );
2641
+ function artworkOwner(file, slug) {
2642
+ const rest = path.basename(file).replace(/\.[a-z0-9]+$/i, "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().split(/[^a-z0-9]+/).filter((w) => w && !VARIANT_WORDS.has(w) && !/^\d+(x|px|w|h)?$/.test(w)).join("");
2643
+ return slug.length > 2 ? rest.replace(slug, "") : rest;
2644
+ }
2645
+ function ownLogoFamily(files, slug) {
2646
+ const families = /* @__PURE__ */ new Map();
2647
+ for (const f of files) {
2648
+ const owner = artworkOwner(f, slug);
2649
+ families.set(owner, [...families.get(owner) ?? [], f]);
2650
+ }
2651
+ const own = families.get("");
2652
+ if (own) return own;
2653
+ const picked = pickBrandMark(files.map((f) => path.basename(f)));
2654
+ const ranked = [...families.values()].sort(
2655
+ (a, b) => b.length - a.length || Number(b.some((f) => path.basename(f) === picked)) - Number(a.some((f) => path.basename(f) === picked))
2656
+ );
2657
+ return ranked[0] ?? [];
2658
+ }
2638
2659
  async function readBrandLogoFiles(root, brandName) {
2639
2660
  const dir = path.join(root, BRAND_DIR, "logos");
2640
- const files = (await readdir(dir).catch(() => [])).filter((f) => /\.(png|jpe?g|webp|svg)$/i.test(f)).sort();
2641
2661
  const slug = (brandName ?? "").normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "");
2642
- const ours = (f) => LOGO_FILE.test(f) || slug.length > 2 && f.toLowerCase().replace(/[^a-z0-9]/g, "").includes(slug);
2662
+ const named2 = await tokenLogos(root);
2663
+ let candidates;
2664
+ if (named2.length > 0) {
2665
+ candidates = named2;
2666
+ } else {
2667
+ const files = (await readdir(dir).catch(() => [])).filter((f) => /\.(png|jpe?g|webp|svg)$/i.test(f)).sort();
2668
+ const ours = (f) => LOGO_FILE.test(f) || slug.length > 2 && f.toLowerCase().replace(/[^a-z0-9]/g, "").includes(slug);
2669
+ candidates = ownLogoFamily(files.filter(ours), slug).map((f) => path.join(dir, f));
2670
+ }
2671
+ const notes = await Promise.all(
2672
+ [path.join(root, BRAND_DIR, "BRAND.md"), path.join(dir, "README.md")].map(
2673
+ (f) => readFile(f, "utf8").catch(() => "")
2674
+ )
2675
+ );
2676
+ const retired = retiredLogos(notes.join("\n"));
2643
2677
  const real = [];
2644
- for (const f of files.filter(ours)) {
2645
- const full = path.join(dir, f);
2678
+ for (const full of candidates) {
2679
+ if (retired.has(path.basename(full).toLowerCase())) continue;
2646
2680
  if (await markIsReal(full, root)) real.push(full);
2647
2681
  }
2648
2682
  const mark = real.find((f) => MARK_FILE.test(path.basename(f)));
2649
2683
  const logos = real.filter((f) => f !== mark);
2650
2684
  return { logos: logos.length > 0 ? logos : real, ...mark ? { mark } : {} };
2651
2685
  }
2686
+ var RETIRED = /\b(retired|deprecated|legacy|outdated|obsolete|no longer (?:used|in use)|retirad[oa]|obsolet[oa]|antigu[oa])\b/i;
2687
+ function retiredLogos(notes) {
2688
+ const out = /* @__PURE__ */ new Set();
2689
+ for (const line of notes.split("\n")) {
2690
+ if (!RETIRED.test(line)) continue;
2691
+ const named2 = [...line.matchAll(/[\w.-]+\.(?:png|jpe?g|webp|svg)\b/gi)].map((m) => m[0].toLowerCase());
2692
+ if (new Set(named2).size === 1 && named2[0]) out.add(named2[0]);
2693
+ }
2694
+ return out;
2695
+ }
2696
+ async function tokenLogos(root) {
2697
+ const raw = await readFile(path.join(root, BRAND_DIR, "tokens.json"), "utf8").catch(() => null);
2698
+ if (!raw) return [];
2699
+ let json2;
2700
+ try {
2701
+ json2 = JSON.parse(raw);
2702
+ } catch {
2703
+ return [];
2704
+ }
2705
+ const parsed = brandTokensSchema.safeParse(json2);
2706
+ if (!parsed.success) return [];
2707
+ const out = [];
2708
+ for (const logo of parsed.data.logos) {
2709
+ const abs = path.join(root, logo.path);
2710
+ if (/\.(png|jpe?g|webp|svg)$/i.test(abs) && await exists(abs) && !out.includes(abs)) out.push(abs);
2711
+ }
2712
+ return out;
2713
+ }
2652
2714
 
2653
2715
  // src/engine/scaffold/static-native-graph.ts
2654
2716
  var NATIVE_PHOTO_ROLE = "native_photo";
@@ -2708,10 +2770,10 @@ function nativeCanvas(canvas, spec, opts) {
2708
2770
  const kept = nodesOf3(canvas).filter(
2709
2771
  (n) => n.tags?.role === STATIC_AD_ROLE || n.id === "original" || n.id === "font_headline"
2710
2772
  );
2711
- const logos = opts.logos.map((file, i) => ({
2773
+ const logos = logosWired(canvas, opts).map((where, i) => ({
2712
2774
  id: logoId(i),
2713
2775
  type: "ingest",
2714
- params: { ...locate(file, opts), expect: "image" },
2776
+ params: { ...where, expect: "image" },
2715
2777
  ...i === 0 ? { tags: { role: BRAND_LOGO_ROLE } } : {}
2716
2778
  }));
2717
2779
  const mark = opts.mark ? [
@@ -2775,6 +2837,21 @@ function nativeCanvas(canvas, spec, opts) {
2775
2837
  };
2776
2838
  return { ...canvas, nodes: [...kept, ...logos, ...mark, ...photos, ...screens, final] };
2777
2839
  }
2840
+ function placeOf(where) {
2841
+ return where.source === "url" ? where.url : where.path;
2842
+ }
2843
+ function logosWired(canvas, opts) {
2844
+ const own = opts.logos.map((file) => locate(file, opts));
2845
+ const ownPlaces = new Set(own.map(placeOf));
2846
+ const chosen = nodesOf3(canvas).filter((n) => n.type === "ingest" && typeof n.id === "string" && /^brand_logo(_\d+)?$/.test(n.id)).flatMap((n) => {
2847
+ const p = n.params;
2848
+ const where = p?.source === "url" && typeof p.url === "string" ? locate(p.url, opts) : p?.source === "path" && typeof p.path === "string" ? locate(p.path, opts) : null;
2849
+ if (!where || !ownPlaces.has(placeOf(where))) return [];
2850
+ ownPlaces.delete(placeOf(where));
2851
+ return [where];
2852
+ });
2853
+ return chosen.length > 0 ? chosen : own;
2854
+ }
2778
2855
  function locate(file, opts) {
2779
2856
  return /^https?:\/\//i.test(file) ? { source: "url", url: file } : opts.resolve(file);
2780
2857
  }
@@ -7021,6 +7098,7 @@ function lookFirst(reference) {
7021
7098
  }
7022
7099
  function planFormat(format, reference) {
7023
7100
  const theirs = reference?.container;
7101
+ if (!format) return theirs ? `the format (the proven ad's ${theirs.replace(/_/g, " ")})` : "the format";
7024
7102
  if (!theirs || theirs === format) return `the format (${format})`;
7025
7103
  const words = (f) => f.replace(/_/g, " ");
7026
7104
  return `the format (the proven ad is a ${words(theirs)}, the idea named a ${words(format)}: keep the proven ad's unless the idea's says the message better, and say which)`;
@@ -7135,7 +7213,7 @@ function memesRecord(audience) {
7135
7213
  }
7136
7214
  function thinkingOutline(input) {
7137
7215
  const { idea, reference } = input;
7138
- const sections = [];
7216
+ const sections = [["The moment in the feed", feedMoment(idea, reference, input.audience)]];
7139
7217
  if (reference) {
7140
7218
  sections.push(
7141
7219
  [
@@ -7153,31 +7231,12 @@ function thinkingOutline(input) {
7153
7231
  );
7154
7232
  const combined = takeFromWhich(reference);
7155
7233
  if (combined) sections.push(["What we take, from which ad", combined]);
7156
- } else {
7157
- sections.push([
7158
- "Why it should work",
7159
- question(
7160
- "no proven ad fits, so this is a bet. What should stop this viewer, and why should they believe it? Say what would prove the bet wrong."
7161
- )
7162
- ]);
7163
7234
  }
7164
7235
  sections.push(
7165
7236
  [
7166
- "Does it fit our audience",
7167
- `${memesRecord(input.audience)}${question(
7168
- `our viewer is ${idea.who.replace(/[-_]/g, " ")}. Would they get the joke, recognise the format, see themselves in it? What in it would fall flat or put them off, and what do they care about that it does not say yet?`
7169
- )}`
7170
- ],
7171
- [
7172
- "The hook, ours",
7237
+ "The hook, the angle and the call to action",
7173
7238
  question(
7174
- `our message is "${idea.message}". Write the hook ${reference ? "the reference's hook becomes" : "that opens it"} for us, in our customers' words, and say why it should stop this viewer. Give the two or three you weighed and why this one won.`
7175
- )
7176
- ],
7177
- [
7178
- "The angle and the call to action",
7179
- question(
7180
- `the angle the ${reference ? "reference wins on" : "idea takes"} (pain, desire, fear of loss, status, identity, savings, convenience, proof, authority, urgency, us against them, contrarian) and ours (the idea says "${idea.angle}"): why it is the right one for this viewer at this stage. Then the call to action: what we ask, how big an ask it is for this viewer, what lowers the risk (an offer, a guarantee, a free step), and where and how it shows (a button, a line, a native ask like "comment X", or none).`
7239
+ `our message is "${idea.message}". Write the hook ${reference ? "the reference's hook becomes" : "that opens it"} for us, in our customers' words, and say why it stops this viewer; give the two or three you weighed and why this one won. The angle (the idea says "${idea.angle}"${reference ? "; say the one the reference wins on" : ""}) and why it is right for this viewer at this stage. Then the call to action: what we ask, how big an ask it is for this viewer, what lowers the risk (an offer, a guarantee, a free step), and where and how it shows (a button, a line, a native ask, or none).`
7181
7240
  )
7182
7241
  ],
7183
7242
  [CAST_HEADING, castAndShow(input.inventory, input.rules ?? [])]
@@ -7198,6 +7257,15 @@ function thinkingOutline(input) {
7198
7257
  ]);
7199
7258
  return [THINKING_HEADING, "", ...sections.flatMap(([title, body]) => [`### ${title}`, "", body, ""])].join("\n");
7200
7259
  }
7260
+ function feedMoment(idea, reference, audience) {
7261
+ const viewer = idea.who.replace(/[-_]/g, " ");
7262
+ const shows = idea.shows ? `What ours shows first: ${idea.shows}.
7263
+
7264
+ ` : "";
7265
+ const ask = `${viewer} is scrolling, not looking for an ad. In the first second ours must break their pattern (they stop), make them think "this is for me" (their problem, their words, someone like them) and make them want to know more. Say what of ours does each of the three${idea.shows ? "" : ", starting with what the picture shows"}, and what would leave them scrolling.`;
7266
+ const tied = reference ? ` Then: does proven ad ${reference.adId} show that, or the same kind of picture doing the same job? If it does not, it is the wrong reference: find one that does (\`baker winning-ads search "<what ours shows>"\`) and rebuild on it (\`baker creatives make <idea> --reference <adId>\`) before answering anything below.` : " No proven ad fits, so this is a bet: say why it should stop them and what would prove it wrong.";
7267
+ return `${shows}${memesRecord(audience)}${question(`${ask}${tied}`)}`;
7268
+ }
7201
7269
  function withThinking(definition, outline) {
7202
7270
  if (definition.split("\n").some((line) => line.trim() === THINKING_HEADING)) return definition;
7203
7271
  return `${definition.trimEnd()}
@@ -8857,4 +8925,4 @@ export {
8857
8925
  prepareCanvas,
8858
8926
  exitOnPrepareError
8859
8927
  };
8860
- //# sourceMappingURL=chunk-5RCCESDX.js.map
8928
+ //# sourceMappingURL=chunk-PNVEV3XP.js.map