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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/README.md +11 -6
  2. package/dist/{account-AL2ZDSR7.js → account-XQXC7BR6.js} +5 -4
  3. package/dist/{account-AL2ZDSR7.js.map → account-XQXC7BR6.js.map} +1 -1
  4. package/dist/{accounts-HAFCLSR5.js → accounts-722UY53A.js} +4 -3
  5. package/dist/{accounts-HAFCLSR5.js.map → accounts-722UY53A.js.map} +1 -1
  6. package/dist/{accounts-O5MFO3QQ.js → accounts-E67BMK7T.js} +6 -5
  7. package/dist/{accounts-O5MFO3QQ.js.map → accounts-E67BMK7T.js.map} +1 -1
  8. package/dist/{actions-P35MEMGN.js → actions-6TQMSVWD.js} +18 -18
  9. package/dist/{add-5GAN6CVO.js → add-2BEGRHUX.js} +28 -5
  10. package/dist/add-2BEGRHUX.js.map +1 -0
  11. package/dist/{add-6DTC6X5G.js → add-LEMKEOPO.js} +3 -2
  12. package/dist/{add-6DTC6X5G.js.map → add-LEMKEOPO.js.map} +1 -1
  13. package/dist/{ads-73PGA4YC.js → ads-AGYCVD62.js} +4 -4
  14. package/dist/{advertisers-AE75CGVE.js → advertisers-2VQKAYKG.js} +4 -3
  15. package/dist/{advertisers-AE75CGVE.js.map → advertisers-2VQKAYKG.js.map} +1 -1
  16. package/dist/{analytics-FKCXIMPO.js → analytics-IFELDWLL.js} +24 -20
  17. package/dist/analytics-IFELDWLL.js.map +1 -0
  18. package/dist/{analytics-FPWQQGRM.js → analytics-OH5QEH7F.js} +4 -3
  19. package/dist/{analytics-FPWQQGRM.js.map → analytics-OH5QEH7F.js.map} +1 -1
  20. package/dist/{assign-ABN2AQ4J.js → assign-PTUJUCEL.js} +4 -3
  21. package/dist/{assign-ABN2AQ4J.js.map → assign-PTUJUCEL.js.map} +1 -1
  22. package/dist/{audience-size-GNBJY35X.js → audience-size-LRI6GJRT.js} +4 -3
  23. package/dist/{audience-size-GNBJY35X.js.map → audience-size-LRI6GJRT.js.map} +1 -1
  24. package/dist/{audit-3VS63TBW.js → audit-HWP7OPB7.js} +4 -3
  25. package/dist/{audit-3VS63TBW.js.map → audit-HWP7OPB7.js.map} +1 -1
  26. package/dist/{autocomplete-VS3XG3B7.js → autocomplete-J6DHU6MR.js} +4 -3
  27. package/dist/{autocomplete-VS3XG3B7.js.map → autocomplete-J6DHU6MR.js.map} +1 -1
  28. package/dist/{avatars-EKCKHCC3.js → avatars-467OSBD6.js} +4 -4
  29. package/dist/{bid-pricing-Q72B65AY.js → bid-pricing-EO5WLHGV.js} +4 -3
  30. package/dist/{bid-pricing-Q72B65AY.js.map → bid-pricing-EO5WLHGV.js.map} +1 -1
  31. package/dist/{brand-C6PFGGQN.js → brand-YRTEPGBK.js} +2 -2
  32. package/dist/{brief-YFJHQ5VQ.js → brief-OSFJ2V7F.js} +8 -7
  33. package/dist/{brief-YFJHQ5VQ.js.map → brief-OSFJ2V7F.js.map} +1 -1
  34. package/dist/{campaign-groups-KFFYQPU3.js → campaign-groups-PQ6KSQJR.js} +9 -8
  35. package/dist/{campaign-groups-KFFYQPU3.js.map → campaign-groups-PQ6KSQJR.js.map} +1 -1
  36. package/dist/{campaign-writes-FHOS5XZY.js → campaign-writes-5OVLUD5E.js} +4 -3
  37. package/dist/{campaign-writes-FHOS5XZY.js.map → campaign-writes-5OVLUD5E.js.map} +1 -1
  38. package/dist/{campaigns-2NHWBF5C.js → campaigns-6T3NSUT2.js} +12 -11
  39. package/dist/{campaigns-2NHWBF5C.js.map → campaigns-6T3NSUT2.js.map} +1 -1
  40. package/dist/{campaigns-KZYZTXDS.js → campaigns-OYMXDGWX.js} +5 -5
  41. package/dist/{canvas-UJNSHD3B.js → canvas-YQFG52IG.js} +13 -13
  42. package/dist/{capabilities-DJFTRJKS.js → capabilities-PXBKUN2G.js} +4 -3
  43. package/dist/{capabilities-DJFTRJKS.js.map → capabilities-PXBKUN2G.js.map} +1 -1
  44. package/dist/{catalog-ZQX6BGXS.js → catalog-XLXIM7IW.js} +4 -4
  45. package/dist/{chats-D2CSDX5Q.js → chats-UK47UE7C.js} +4 -3
  46. package/dist/{chats-D2CSDX5Q.js.map → chats-UK47UE7C.js.map} +1 -1
  47. package/dist/{chunk-7YCRFMXF.js → chunk-24EB7EDR.js} +3 -3
  48. package/dist/{chunk-5ZDLTE5T.js → chunk-2AOE2MZQ.js} +3 -3
  49. package/dist/{chunk-4SG4RW2P.js → chunk-2VPBIT65.js} +8 -8
  50. package/dist/chunk-4PDHHHUJ.js +537 -0
  51. package/dist/chunk-4PDHHHUJ.js.map +1 -0
  52. package/dist/{chunk-NPY4QUMQ.js → chunk-54C6YDGJ.js} +2 -2
  53. package/dist/{chunk-LZ73CZGP.js → chunk-5WCSKQ7Z.js} +6 -6
  54. package/dist/{chunk-3G3ZDLMI.js → chunk-5ZNTADVR.js} +2 -2
  55. package/dist/{chunk-AEOSAVVL.js → chunk-6F7DVPOS.js} +3 -3
  56. package/dist/{chunk-CJCVIEJ5.js → chunk-6NY2GPR4.js} +3 -3
  57. package/dist/{chunk-CXWFX2AM.js → chunk-6Y7ZBENQ.js} +6 -6
  58. package/dist/{chunk-M242LHLX.js → chunk-7CTMH5AK.js} +3 -3
  59. package/dist/{chunk-XF4JUKVF.js → chunk-7EPXVICM.js} +38 -5
  60. package/dist/chunk-7EPXVICM.js.map +1 -0
  61. package/dist/{chunk-T2PC5AVH.js → chunk-ASI4P6X2.js} +6 -6
  62. package/dist/chunk-ASI4P6X2.js.map +1 -0
  63. package/dist/{chunk-QD7ESRLN.js → chunk-C46GUI2S.js} +2 -2
  64. package/dist/{chunk-6N6WKAJM.js → chunk-CWYAELVG.js} +2 -2
  65. package/dist/{chunk-MXYBTMKB.js → chunk-DCRPXOJJ.js} +2 -2
  66. package/dist/{chunk-GKZ2WU75.js → chunk-FPOGPFAG.js} +3 -14
  67. package/dist/chunk-FPOGPFAG.js.map +1 -0
  68. package/dist/{chunk-JQJDXPCO.js → chunk-FUHN4MFY.js} +2 -2
  69. package/dist/{chunk-S77PZVYM.js → chunk-FYGR3I2A.js} +3 -3
  70. package/dist/{chunk-OZRUJVIQ.js → chunk-H3427GPU.js} +2 -2
  71. package/dist/{chunk-RPUSTYHL.js → chunk-HDLYPC6K.js} +5 -3
  72. package/dist/{chunk-RPUSTYHL.js.map → chunk-HDLYPC6K.js.map} +1 -1
  73. package/dist/{chunk-SSJK7FEV.js → chunk-HR6IWNKE.js} +1196 -1140
  74. package/dist/chunk-HR6IWNKE.js.map +1 -0
  75. package/dist/{chunk-YRQYA2LR.js → chunk-HROZYQ5H.js} +63 -5
  76. package/dist/chunk-HROZYQ5H.js.map +1 -0
  77. package/dist/{chunk-IR6D7K4H.js → chunk-I3ZR655O.js} +2 -2
  78. package/dist/{chunk-YK32GUBN.js → chunk-KMKEYI37.js} +3 -3
  79. package/dist/{chunk-W3ZHJJVT.js → chunk-KS2QY6MK.js} +4 -4
  80. package/dist/{chunk-WNRV4QH7.js → chunk-LYQJ4PZW.js} +5 -5
  81. package/dist/{chunk-B5SCU7MJ.js → chunk-MACCF4JZ.js} +16 -22
  82. package/dist/{chunk-B5SCU7MJ.js.map → chunk-MACCF4JZ.js.map} +1 -1
  83. package/dist/{chunk-CSYSX4D2.js → chunk-N4LAYIIN.js} +2 -2
  84. package/dist/{chunk-4AUMTNVB.js → chunk-NA63BH7V.js} +3 -3
  85. package/dist/{chunk-4BQXAE7Z.js → chunk-NDEE6G2J.js} +2 -2
  86. package/dist/{chunk-EDLZGTGN.js → chunk-NYIGXDUG.js} +1 -39
  87. package/dist/chunk-NYIGXDUG.js.map +1 -0
  88. package/dist/{chunk-DWHIOO7E.js → chunk-QE7W555R.js} +163 -12
  89. package/dist/chunk-QE7W555R.js.map +1 -0
  90. package/dist/{chunk-MELOSESI.js → chunk-R25YLW6H.js} +2 -2
  91. package/dist/{chunk-Y6O7EWYY.js → chunk-RL5CP7N6.js} +5 -5
  92. package/dist/{chunk-DGUNI37S.js → chunk-RX2DKU3W.js} +2 -2
  93. package/dist/{chunk-3HJLHTWP.js → chunk-SJYEY5MV.js} +12 -3
  94. package/dist/{chunk-3HJLHTWP.js.map → chunk-SJYEY5MV.js.map} +1 -1
  95. package/dist/{chunk-VTDMKARH.js → chunk-ULG4QRTV.js} +2 -2
  96. package/dist/{chunk-QRP3PXWN.js → chunk-VL43TNIP.js} +2 -2
  97. package/dist/{chunk-SHL7LOC3.js → chunk-VLMBTPXU.js} +3 -3
  98. package/dist/{chunk-KHRXPQID.js → chunk-VYQ3QJ3C.js} +2 -2
  99. package/dist/{chunk-A4LOJ2VD.js → chunk-WGUQHAJY.js} +2 -2
  100. package/dist/{chunk-ZEYEWPK6.js → chunk-WKQG6TER.js} +2 -2
  101. package/dist/{chunk-3IBYKLXR.js → chunk-ZDMTXQ2Q.js} +2 -2
  102. package/dist/{claim-FZ5OQLMU.js → claim-W6G6VEG5.js} +4 -3
  103. package/dist/{claim-FZ5OQLMU.js.map → claim-W6G6VEG5.js.map} +1 -1
  104. package/dist/cli.js +30 -30
  105. package/dist/{companies-DNI634RC.js → companies-TS6KBATJ.js} +4 -3
  106. package/dist/{companies-DNI634RC.js.map → companies-TS6KBATJ.js.map} +1 -1
  107. package/dist/{complete-2FZMGJV5.js → complete-LYR2HMQU.js} +4 -3
  108. package/dist/{complete-2FZMGJV5.js.map → complete-LYR2HMQU.js.map} +1 -1
  109. package/dist/{connect-QCOGEPP4.js → connect-FCXNVTXG.js} +13 -6
  110. package/dist/{conversation-6IOGV7B7.js → conversation-6ZJGPCXM.js} +4 -3
  111. package/dist/{conversation-6IOGV7B7.js.map → conversation-6ZJGPCXM.js.map} +1 -1
  112. package/dist/{conversions-4SRZPBBX.js → conversions-UHB55MMQ.js} +8 -7
  113. package/dist/{conversions-4SRZPBBX.js.map → conversions-UHB55MMQ.js.map} +1 -1
  114. package/dist/{create-BJNMO6HT.js → create-EX6OWLNM.js} +3 -2
  115. package/dist/{create-BJNMO6HT.js.map → create-EX6OWLNM.js.map} +1 -1
  116. package/dist/{create-RM7HV77Y.js → create-JCA7JPLP.js} +4 -3
  117. package/dist/{create-RM7HV77Y.js.map → create-JCA7JPLP.js.map} +1 -1
  118. package/dist/{create-FX4OJ2XF.js → create-JFSK4BOP.js} +4 -3
  119. package/dist/{create-FX4OJ2XF.js.map → create-JFSK4BOP.js.map} +1 -1
  120. package/dist/{create-VXM34ZWH.js → create-WU22YYU2.js} +4 -3
  121. package/dist/{create-VXM34ZWH.js.map → create-WU22YYU2.js.map} +1 -1
  122. package/dist/{creatives-NJF2U763.js → creatives-FXUQ5WSD.js} +10 -10
  123. package/dist/{creatives-JSWBFQ5R.js → creatives-KGXUOYPE.js} +9 -8
  124. package/dist/{creatives-JSWBFQ5R.js.map → creatives-KGXUOYPE.js.map} +1 -1
  125. package/dist/{credentials-C33K6XCJ.js → credentials-MJC7PGKR.js} +4 -3
  126. package/dist/{credentials-C33K6XCJ.js.map → credentials-MJC7PGKR.js.map} +1 -1
  127. package/dist/{critique-YDKPYZLD.js → critique-GS5VV5ZC.js} +7 -6
  128. package/dist/{critique-YDKPYZLD.js.map → critique-GS5VV5ZC.js.map} +1 -1
  129. package/dist/{critique-ZS4ON3SU.js → critique-TPHR27KH.js} +4 -3
  130. package/dist/{critique-ZS4ON3SU.js.map → critique-TPHR27KH.js.map} +1 -1
  131. package/dist/{crm-R5IXIFIV.js → crm-AVCM5D4G.js} +5 -4
  132. package/dist/{crm-R5IXIFIV.js.map → crm-AVCM5D4G.js.map} +1 -1
  133. package/dist/{crm-52ROSWH5.js → crm-VK44O3ED.js} +5 -4
  134. package/dist/{crm-52ROSWH5.js.map → crm-VK44O3ED.js.map} +1 -1
  135. package/dist/{customers-A36LOZOB.js → customers-XH2DMTFH.js} +6 -5
  136. package/dist/{delete-M2GDLPYN.js → delete-E3R3TKIL.js} +3 -2
  137. package/dist/{delete-M2GDLPYN.js.map → delete-E3R3TKIL.js.map} +1 -1
  138. package/dist/{delete-HGHXY24R.js → delete-KRH2YMSZ.js} +4 -3
  139. package/dist/{delete-HGHXY24R.js.map → delete-KRH2YMSZ.js.map} +1 -1
  140. package/dist/{delete-AIGE4Y4H.js → delete-WI5E3DR3.js} +4 -3
  141. package/dist/{delete-AIGE4Y4H.js.map → delete-WI5E3DR3.js.map} +1 -1
  142. package/dist/{demographics-NTWB2IMG.js → demographics-XV5PBA77.js} +4 -3
  143. package/dist/{demographics-NTWB2IMG.js.map → demographics-XV5PBA77.js.map} +1 -1
  144. package/dist/{discard-2WWQG6OU.js → discard-HTQUUHJR.js} +4 -3
  145. package/dist/{discard-2WWQG6OU.js.map → discard-HTQUUHJR.js.map} +1 -1
  146. package/dist/{domain-Y2LT6JLT.js → domain-RECGZXJB.js} +4 -3
  147. package/dist/{domain-Y2LT6JLT.js.map → domain-RECGZXJB.js.map} +1 -1
  148. package/dist/{draft-SLHAKJ2A.js → draft-2IBSJEKC.js} +4 -3
  149. package/dist/{draft-SLHAKJ2A.js.map → draft-2IBSJEKC.js.map} +1 -1
  150. package/dist/{draft-FJ7WHIXW.js → draft-PVTX6QT6.js} +4 -3
  151. package/dist/{draft-FJ7WHIXW.js.map → draft-PVTX6QT6.js.map} +1 -1
  152. package/dist/{draft-EJXNNJ3Y.js → draft-Q546QPPU.js} +5 -4
  153. package/dist/{draft-EJXNNJ3Y.js.map → draft-Q546QPPU.js.map} +1 -1
  154. package/dist/engine/index.js +3 -3
  155. package/dist/{facets-U7AQC4H6.js → facets-7EVPJMKS.js} +4 -3
  156. package/dist/{facets-U7AQC4H6.js.map → facets-7EVPJMKS.js.map} +1 -1
  157. package/dist/{feedback-PPQMOQ46.js → feedback-EIZKS4JU.js} +2 -2
  158. package/dist/{feedback-record-V66HWVRR.js → feedback-record-TKO54BOE.js} +9 -8
  159. package/dist/{feedback-record-V66HWVRR.js.map → feedback-record-TKO54BOE.js.map} +1 -1
  160. package/dist/{fetch-W7NULDEO.js → fetch-4BY6HYUM.js} +4 -3
  161. package/dist/{fetch-W7NULDEO.js.map → fetch-4BY6HYUM.js.map} +1 -1
  162. package/dist/{find-OTDIX6V4.js → find-FRRHAPWX.js} +4 -4
  163. package/dist/{flows-KABCBS3S.js → flows-KTFAML22.js} +21 -17
  164. package/dist/flows-KTFAML22.js.map +1 -0
  165. package/dist/{fonts-EMMX3KII.js → fonts-MXR3ZKDX.js} +6 -5
  166. package/dist/{forecast-GNODEIIC.js → forecast-3QTJYVND.js} +4 -3
  167. package/dist/{forecast-GNODEIIC.js.map → forecast-3QTJYVND.js.map} +1 -1
  168. package/dist/{funnel-AAX27NH4.js → funnel-I6XIAEHG.js} +11 -455
  169. package/dist/funnel-I6XIAEHG.js.map +1 -0
  170. package/dist/{ga4-UDQ2HA2J.js → ga4-DV2AXCSL.js} +1 -1
  171. package/dist/{get-QEYJRLV3.js → get-5PKNKJ5S.js} +7 -4
  172. package/dist/get-5PKNKJ5S.js.map +1 -0
  173. package/dist/{get-RTVUZM6E.js → get-72YPHJGV.js} +4 -3
  174. package/dist/{get-RTVUZM6E.js.map → get-72YPHJGV.js.map} +1 -1
  175. package/dist/{google-M7KEXVK5.js → google-6OGZX47I.js} +2 -2
  176. package/dist/{google-KTO3PLEU.js → google-QYYYSSXI.js} +5 -5
  177. package/dist/{google-ads-OK6IG3UV.js → google-ads-QGMQKZQD.js} +4 -3
  178. package/dist/{google-ads-OK6IG3UV.js.map → google-ads-QGMQKZQD.js.map} +1 -1
  179. package/dist/{gsc-P3QYGDV2.js → gsc-TAKOF7J5.js} +1 -1
  180. package/dist/{history-PQUJKK26.js → history-6AVQX2OQ.js} +4 -3
  181. package/dist/{history-PQUJKK26.js.map → history-6AVQX2OQ.js.map} +1 -1
  182. package/dist/{hubspot-Y77VLY6Y.js → hubspot-SVEMFK5S.js} +9 -8
  183. package/dist/{hubspot-Y77VLY6Y.js.map → hubspot-SVEMFK5S.js.map} +1 -1
  184. package/dist/{icon-I43F77FV.js → icon-L4RSS6PZ.js} +4 -4
  185. package/dist/{ideas-MIDU7YOA.js → ideas-NFOW3HKJ.js} +3 -2
  186. package/dist/{images-S254MS6O.js → images-2EFFUNNV.js} +9 -9
  187. package/dist/{ingest-YV2NLDBE.js → ingest-2EIKN4QC.js} +4 -3
  188. package/dist/{ingest-J4I3HKM3.js → ingest-2SO62RRI.js} +3 -2
  189. package/dist/{ingest-J4I3HKM3.js.map → ingest-2SO62RRI.js.map} +1 -1
  190. package/dist/{inspect-Q5NHBBHX.js → inspect-4OOS4APT.js} +4 -3
  191. package/dist/{inspect-Q5NHBBHX.js.map → inspect-4OOS4APT.js.map} +1 -1
  192. package/dist/{inspiration-P265QJ2H.js → inspiration-S3DU4CMQ.js} +1 -1
  193. package/dist/{keyword-metrics-PDY4ZXSP.js → keyword-metrics-SF4CSNZ2.js} +4 -3
  194. package/dist/{keyword-metrics-PDY4ZXSP.js.map → keyword-metrics-SF4CSNZ2.js.map} +1 -1
  195. package/dist/{keywords-for-site-GALSCV77.js → keywords-for-site-WDAOPNKC.js} +4 -3
  196. package/dist/{keywords-for-site-GALSCV77.js.map → keywords-for-site-WDAOPNKC.js.map} +1 -1
  197. package/dist/{landing-CJYGWCK4.js → landing-2ZB46LXH.js} +3 -3
  198. package/dist/{leads-PHKG6CP3.js → leads-A4W5KTWB.js} +4 -3
  199. package/dist/{leads-PHKG6CP3.js.map → leads-A4W5KTWB.js.map} +1 -1
  200. package/dist/{learn-FUQSY7DN.js → learn-IPULBCOD.js} +5 -4
  201. package/dist/{learn-FUQSY7DN.js.map → learn-IPULBCOD.js.map} +1 -1
  202. package/dist/{line-item-writes-E6MZPIZZ.js → line-item-writes-EMYSOJKM.js} +4 -3
  203. package/dist/{line-item-writes-E6MZPIZZ.js.map → line-item-writes-EMYSOJKM.js.map} +1 -1
  204. package/dist/{line-items-7ZGIKEF2.js → line-items-5NECXUZT.js} +5 -5
  205. package/dist/{link-QYAW6A2W.js → link-CI45HWFN.js} +4 -3
  206. package/dist/{link-QYAW6A2W.js.map → link-CI45HWFN.js.map} +1 -1
  207. package/dist/{linkedin-FFSDSGGS.js → linkedin-B7SYR75X.js} +27 -26
  208. package/dist/{linkedin-FFSDSGGS.js.map → linkedin-B7SYR75X.js.map} +1 -1
  209. package/dist/{list-NVQC5SNY.js → list-2BARXOT5.js} +3 -2
  210. package/dist/{list-NVQC5SNY.js.map → list-2BARXOT5.js.map} +1 -1
  211. package/dist/{list-SAV3LQHY.js → list-BIEVLEHS.js} +4 -3
  212. package/dist/{list-SAV3LQHY.js.map → list-BIEVLEHS.js.map} +1 -1
  213. package/dist/{list-5IC6KIKO.js → list-ZBT3EBVZ.js} +4 -3
  214. package/dist/{list-5IC6KIKO.js.map → list-ZBT3EBVZ.js.map} +1 -1
  215. package/dist/{log-XZPVOALD.js → log-C23OOAJZ.js} +4 -3
  216. package/dist/{log-XZPVOALD.js.map → log-C23OOAJZ.js.map} +1 -1
  217. package/dist/{logo-2IP663QO.js → logo-Q5D7PZY6.js} +3 -3
  218. package/dist/{lookup-XK45W2SH.js → lookup-ETWY47F7.js} +6 -5
  219. package/dist/{make-J3WBO62B.js → make-TPKKJXGL.js} +18 -17
  220. package/dist/{make-J3WBO62B.js.map → make-TPKKJXGL.js.map} +1 -1
  221. package/dist/{map-4J5WIWIG.js → map-SYZMPHLL.js} +5 -4
  222. package/dist/{map-4J5WIWIG.js.map → map-SYZMPHLL.js.map} +1 -1
  223. package/dist/{mcp-XXD7ZQCP.js → mcp-6FQBVJ6F.js} +3 -2
  224. package/dist/{mcp-XXD7ZQCP.js.map → mcp-6FQBVJ6F.js.map} +1 -1
  225. package/dist/{media-sources-O6ZRUA3N.js → media-sources-ZXHEEP6T.js} +2 -2
  226. package/dist/{members-D5ZYLS4Y.js → members-UDY4OOJW.js} +4 -3
  227. package/dist/{members-D5ZYLS4Y.js.map → members-UDY4OOJW.js.map} +1 -1
  228. package/dist/{normalize-PCNC6E2N.js → normalize-DAKHYS3V.js} +7 -3
  229. package/dist/{normalize-PCNC6E2N.js.map → normalize-DAKHYS3V.js.map} +1 -1
  230. package/dist/{options-MQ65VEVD.js → options-QL3ULED5.js} +7 -6
  231. package/dist/{options-MQ65VEVD.js.map → options-QL3ULED5.js.map} +1 -1
  232. package/dist/{performance-6QW2KEEQ.js → performance-UF5VTY2U.js} +5 -4
  233. package/dist/plan-FT632COT.js +51 -0
  234. package/dist/plan-FT632COT.js.map +1 -0
  235. package/dist/{promoted-tweet-writes-JPLHY3GM.js → promoted-tweet-writes-7HGESJ46.js} +4 -3
  236. package/dist/{promoted-tweet-writes-JPLHY3GM.js.map → promoted-tweet-writes-7HGESJ46.js.map} +1 -1
  237. package/dist/{promoted-tweets-SURKMHFI.js → promoted-tweets-LZKS5JIF.js} +3 -3
  238. package/dist/{publish-HCQ6MXLB.js → publish-NPD3SMZL.js} +4 -3
  239. package/dist/{publish-HCQ6MXLB.js.map → publish-NPD3SMZL.js.map} +1 -1
  240. package/dist/questionnaire-JNGYJTAY.js +37 -0
  241. package/dist/questionnaire-JNGYJTAY.js.map +1 -0
  242. package/dist/{reddit-GIP3ADMS.js → reddit-NU2N3LZD.js} +5 -4
  243. package/dist/{refresh-UXQSLCR3.js → refresh-EBVJ2C6L.js} +3 -2
  244. package/dist/{refresh-UXQSLCR3.js.map → refresh-EBVJ2C6L.js.map} +1 -1
  245. package/dist/{release-5KVLXNP6.js → release-V43YB2PY.js} +4 -3
  246. package/dist/{release-5KVLXNP6.js.map → release-V43YB2PY.js.map} +1 -1
  247. package/dist/{remove-6FIVKCJI.js → remove-QPSWLFI4.js} +3 -2
  248. package/dist/{remove-6FIVKCJI.js.map → remove-QPSWLFI4.js.map} +1 -1
  249. package/dist/{reopen-YM5LNOLB.js → reopen-GQ66NMWF.js} +4 -3
  250. package/dist/{reopen-YM5LNOLB.js.map → reopen-GQ66NMWF.js.map} +1 -1
  251. package/dist/{rerun-WYDRHIUJ.js → rerun-PZK275DY.js} +18 -17
  252. package/dist/{rerun-WYDRHIUJ.js.map → rerun-PZK275DY.js.map} +1 -1
  253. package/dist/{research-2BLEISBG.js → research-FMM6AWZC.js} +10 -10
  254. package/dist/{research-YOGE7GT2.js → research-GEOCUBXB.js} +3 -2
  255. package/dist/{research-YOGE7GT2.js.map → research-GEOCUBXB.js.map} +1 -1
  256. package/dist/{reset-C4UHQ3EU.js → reset-REXJ6AUK.js} +3 -2
  257. package/dist/{reset-C4UHQ3EU.js.map → reset-REXJ6AUK.js.map} +1 -1
  258. package/dist/{reset-OLVB6AE6.js → reset-Y72IVESB.js} +3 -2
  259. package/dist/{reset-OLVB6AE6.js.map → reset-Y72IVESB.js.map} +1 -1
  260. package/dist/{resolve-XYH2GDAE.js → resolve-OGX7C4TV.js} +4 -3
  261. package/dist/{resolve-XYH2GDAE.js.map → resolve-OGX7C4TV.js.map} +1 -1
  262. package/dist/{retry-7EELDEQP.js → retry-CD6JAQ3F.js} +3 -2
  263. package/dist/{retry-7EELDEQP.js.map → retry-CD6JAQ3F.js.map} +1 -1
  264. package/dist/{retry-726GKI6V.js → retry-TCUBBFR5.js} +3 -2
  265. package/dist/{retry-726GKI6V.js.map → retry-TCUBBFR5.js.map} +1 -1
  266. package/dist/{run-P4KR2MXC.js → run-A5ZDXTOI.js} +4 -3
  267. package/dist/{run-P4KR2MXC.js.map → run-A5ZDXTOI.js.map} +1 -1
  268. package/dist/{run-MODGUNGT.js → run-EUO34T2J.js} +18 -17
  269. package/dist/{scaffold-ad-5ZE7KE62.js → scaffold-ad-SW2HEWM3.js} +13 -12
  270. package/dist/{scaffold-ad-5ZE7KE62.js.map → scaffold-ad-SW2HEWM3.js.map} +1 -1
  271. package/dist/{scaffold-static-ad-HJY5HFDL.js → scaffold-static-ad-ECTJL54Y.js} +37 -36
  272. package/dist/scaffold-static-ad-ECTJL54Y.js.map +1 -0
  273. package/dist/{scaffold-video-P2PYPWG2.js → scaffold-video-EI7U7RBK.js} +12 -11
  274. package/dist/{scaffold-video-P2PYPWG2.js.map → scaffold-video-EI7U7RBK.js.map} +1 -1
  275. package/dist/{schedule-RDK4GEPI.js → schedule-S5YZJZ5U.js} +3 -2
  276. package/dist/{schedule-RDK4GEPI.js.map → schedule-S5YZJZ5U.js.map} +1 -1
  277. package/dist/{scheduled-agents-6U44QE76.js → scheduled-agents-N4LJRM4C.js} +11 -11
  278. package/dist/{schema-CHJDC7GQ.js → schema-R7JWWOF4.js} +8 -4
  279. package/dist/{schema-CHJDC7GQ.js.map → schema-R7JWWOF4.js.map} +1 -1
  280. package/dist/{search-PMJRU3C4.js → search-KHMQH3AT.js} +3 -2
  281. package/dist/{search-PMJRU3C4.js.map → search-KHMQH3AT.js.map} +1 -1
  282. package/dist/{select-AB2L4GAA.js → select-O2FN2JEQ.js} +9 -8
  283. package/dist/{select-AB2L4GAA.js.map → select-O2FN2JEQ.js.map} +1 -1
  284. package/dist/{sends-WGJVQUMF.js → sends-BQZM5PLS.js} +5 -4
  285. package/dist/{sends-WGJVQUMF.js.map → sends-BQZM5PLS.js.map} +1 -1
  286. package/dist/{set-prompt-DU2G2WTB.js → set-prompt-2HASHGWC.js} +9 -8
  287. package/dist/{set-prompt-DU2G2WTB.js.map → set-prompt-2HASHGWC.js.map} +1 -1
  288. package/dist/{setup-links-REPREN3C.js → setup-links-GYSE56GX.js} +4 -3
  289. package/dist/{setup-links-REPREN3C.js.map → setup-links-GYSE56GX.js.map} +1 -1
  290. package/dist/{site-WFSWIA3S.js → site-4SKM7RKG.js} +5 -4
  291. package/dist/{site-WFSWIA3S.js.map → site-4SKM7RKG.js.map} +1 -1
  292. package/dist/{sources-YBQ6KPFM.js → sources-FQ2UZTHL.js} +6 -6
  293. package/dist/{sources-AMI2AWKZ.js → sources-R2NKNC6J.js} +10 -9
  294. package/dist/{sources-AMI2AWKZ.js.map → sources-R2NKNC6J.js.map} +1 -1
  295. package/dist/{stale-6MJHVEG4.js → stale-W756ACKC.js} +8 -7
  296. package/dist/{stale-6MJHVEG4.js.map → stale-W756ACKC.js.map} +1 -1
  297. package/dist/{status-7F2KHFGA.js → status-SE2VZJJB.js} +4 -3
  298. package/dist/{status-7F2KHFGA.js.map → status-SE2VZJJB.js.map} +1 -1
  299. package/dist/{stock-2YCDN3N6.js → stock-KXJ26BY4.js} +5 -5
  300. package/dist/{studio-RA7QQH4O.js → studio-SYKOSNDB.js} +1 -1
  301. package/dist/{sync-GWTLKZTU.js → sync-LJGSODK3.js} +3 -2
  302. package/dist/{sync-GWTLKZTU.js.map → sync-LJGSODK3.js.map} +1 -1
  303. package/dist/{sync-definition-IPUFS5XS.js → sync-definition-QR2N233R.js} +12 -11
  304. package/dist/{tags-KFYLZLB3.js → tags-4BAVFH4S.js} +3 -2
  305. package/dist/{tags-KFYLZLB3.js.map → tags-4BAVFH4S.js.map} +1 -1
  306. package/dist/{tags-ABHSX6M5.js → tags-5SBMRC2A.js} +4 -3
  307. package/dist/{tags-ABHSX6M5.js.map → tags-5SBMRC2A.js.map} +1 -1
  308. package/dist/{tags-3WPW6PTV.js → tags-PYWFSBTR.js} +4 -4
  309. package/dist/{tags-6342FQEB.js → tags-QQU3OKMZ.js} +4 -3
  310. package/dist/{tags-6342FQEB.js.map → tags-QQU3OKMZ.js.map} +1 -1
  311. package/dist/{tags-FJIBBBRG.js → tags-YYLNF3PK.js} +4 -3
  312. package/dist/{tags-FJIBBBRG.js.map → tags-YYLNF3PK.js.map} +1 -1
  313. package/dist/{targeting-criteria-NR47AF5C.js → targeting-criteria-RJFLFICN.js} +3 -3
  314. package/dist/{targets-L56KOVQE.js → targets-S2MT2PNB.js} +4 -3
  315. package/dist/{targets-L56KOVQE.js.map → targets-S2MT2PNB.js.map} +1 -1
  316. package/dist/{templates-B6XGDYUF.js → templates-ZE5TOGRT.js} +4 -3
  317. package/dist/{templates-B6XGDYUF.js.map → templates-ZE5TOGRT.js.map} +1 -1
  318. package/dist/{testimonials-CVC4YIXO.js → testimonials-DII5DYLR.js} +6 -6
  319. package/dist/{top-companies-45X3DT7Z.js → top-companies-PGIAEHDF.js} +4 -3
  320. package/dist/{top-companies-45X3DT7Z.js.map → top-companies-PGIAEHDF.js.map} +1 -1
  321. package/dist/{translate-Z66FDB4K.js → translate-GXTS633J.js} +12 -11
  322. package/dist/{translate-Z66FDB4K.js.map → translate-GXTS633J.js.map} +1 -1
  323. package/dist/{triggers-22EMIVFD.js → triggers-2PTONXRU.js} +4 -3
  324. package/dist/{triggers-22EMIVFD.js.map → triggers-2PTONXRU.js.map} +1 -1
  325. package/dist/{unlink-65KUN6ID.js → unlink-XRMYJ6DB.js} +4 -3
  326. package/dist/{unlink-65KUN6ID.js.map → unlink-XRMYJ6DB.js.map} +1 -1
  327. package/dist/{unstage-2E3I5SWF.js → unstage-FY7A3YFF.js} +4 -3
  328. package/dist/{unstage-2E3I5SWF.js.map → unstage-FY7A3YFF.js.map} +1 -1
  329. package/dist/{unstage-4ZEULXEQ.js → unstage-RM2RLXKD.js} +5 -4
  330. package/dist/{unstage-4ZEULXEQ.js.map → unstage-RM2RLXKD.js.map} +1 -1
  331. package/dist/{update-KREBPGBH.js → update-E5SRBXQR.js} +4 -3
  332. package/dist/{update-KREBPGBH.js.map → update-E5SRBXQR.js.map} +1 -1
  333. package/dist/{update-D6DJC6T7.js → update-PJ67D2OG.js} +3 -2
  334. package/dist/{update-D6DJC6T7.js.map → update-PJ67D2OG.js.map} +1 -1
  335. package/dist/{update-2S7CSEAW.js → update-S4562V3O.js} +4 -3
  336. package/dist/{update-2S7CSEAW.js.map → update-S4562V3O.js.map} +1 -1
  337. package/dist/{update-7NCOTAQZ.js → update-V6YVEUI2.js} +4 -3
  338. package/dist/{update-7NCOTAQZ.js.map → update-V6YVEUI2.js.map} +1 -1
  339. package/dist/{upload-O6NHRPS7.js → upload-R6CQVLKF.js} +4 -3
  340. package/dist/{upload-O6NHRPS7.js.map → upload-R6CQVLKF.js.map} +1 -1
  341. package/dist/{url-options-GGXAL3J4.js → url-options-JOKU46F2.js} +4 -3
  342. package/dist/{url-options-GGXAL3J4.js.map → url-options-JOKU46F2.js.map} +1 -1
  343. package/dist/{url-params-3EFGVTZZ.js → url-params-7U2XMOWF.js} +4 -3
  344. package/dist/{url-params-3EFGVTZZ.js.map → url-params-7U2XMOWF.js.map} +1 -1
  345. package/dist/{validate-UMHHNTVU.js → validate-7YPOUKPB.js} +10 -9
  346. package/dist/{validate-UMHHNTVU.js.map → validate-7YPOUKPB.js.map} +1 -1
  347. package/dist/{videos-YSXYGTBM.js → videos-LICG6ACJ.js} +5 -5
  348. package/dist/{web-IGIGVEKS.js → web-BA2PGTWU.js} +4 -3
  349. package/dist/{web-IGIGVEKS.js.map → web-BA2PGTWU.js.map} +1 -1
  350. package/dist/{winning-ads-2WS7FI4E.js → winning-ads-C6S2C5VP.js} +2 -2
  351. package/dist/{write-commands-5C7FUOVN.js → write-commands-7SJ3BOW5.js} +5 -4
  352. package/dist/{write-commands-5C7FUOVN.js.map → write-commands-7SJ3BOW5.js.map} +1 -1
  353. package/dist/{x-BFSKFCZD.js → x-CZHRC6U7.js} +6 -6
  354. package/package.json +1 -1
  355. package/dist/add-5GAN6CVO.js.map +0 -1
  356. package/dist/analytics-FKCXIMPO.js.map +0 -1
  357. package/dist/chunk-DWHIOO7E.js.map +0 -1
  358. package/dist/chunk-EDLZGTGN.js.map +0 -1
  359. package/dist/chunk-GKZ2WU75.js.map +0 -1
  360. package/dist/chunk-SSJK7FEV.js.map +0 -1
  361. package/dist/chunk-T2PC5AVH.js.map +0 -1
  362. package/dist/chunk-XF4JUKVF.js.map +0 -1
  363. package/dist/chunk-YRQYA2LR.js.map +0 -1
  364. package/dist/flows-KABCBS3S.js.map +0 -1
  365. package/dist/funnel-AAX27NH4.js.map +0 -1
  366. package/dist/get-QEYJRLV3.js.map +0 -1
  367. package/dist/scaffold-static-ad-HJY5HFDL.js.map +0 -1
  368. /package/dist/{actions-P35MEMGN.js.map → actions-6TQMSVWD.js.map} +0 -0
  369. /package/dist/{ads-73PGA4YC.js.map → ads-AGYCVD62.js.map} +0 -0
  370. /package/dist/{avatars-EKCKHCC3.js.map → avatars-467OSBD6.js.map} +0 -0
  371. /package/dist/{brand-C6PFGGQN.js.map → brand-YRTEPGBK.js.map} +0 -0
  372. /package/dist/{campaigns-KZYZTXDS.js.map → campaigns-OYMXDGWX.js.map} +0 -0
  373. /package/dist/{canvas-UJNSHD3B.js.map → canvas-YQFG52IG.js.map} +0 -0
  374. /package/dist/{catalog-ZQX6BGXS.js.map → catalog-XLXIM7IW.js.map} +0 -0
  375. /package/dist/{chunk-7YCRFMXF.js.map → chunk-24EB7EDR.js.map} +0 -0
  376. /package/dist/{chunk-5ZDLTE5T.js.map → chunk-2AOE2MZQ.js.map} +0 -0
  377. /package/dist/{chunk-4SG4RW2P.js.map → chunk-2VPBIT65.js.map} +0 -0
  378. /package/dist/{chunk-NPY4QUMQ.js.map → chunk-54C6YDGJ.js.map} +0 -0
  379. /package/dist/{chunk-LZ73CZGP.js.map → chunk-5WCSKQ7Z.js.map} +0 -0
  380. /package/dist/{chunk-3G3ZDLMI.js.map → chunk-5ZNTADVR.js.map} +0 -0
  381. /package/dist/{chunk-AEOSAVVL.js.map → chunk-6F7DVPOS.js.map} +0 -0
  382. /package/dist/{chunk-CJCVIEJ5.js.map → chunk-6NY2GPR4.js.map} +0 -0
  383. /package/dist/{chunk-CXWFX2AM.js.map → chunk-6Y7ZBENQ.js.map} +0 -0
  384. /package/dist/{chunk-M242LHLX.js.map → chunk-7CTMH5AK.js.map} +0 -0
  385. /package/dist/{chunk-QD7ESRLN.js.map → chunk-C46GUI2S.js.map} +0 -0
  386. /package/dist/{chunk-6N6WKAJM.js.map → chunk-CWYAELVG.js.map} +0 -0
  387. /package/dist/{chunk-MXYBTMKB.js.map → chunk-DCRPXOJJ.js.map} +0 -0
  388. /package/dist/{chunk-JQJDXPCO.js.map → chunk-FUHN4MFY.js.map} +0 -0
  389. /package/dist/{chunk-S77PZVYM.js.map → chunk-FYGR3I2A.js.map} +0 -0
  390. /package/dist/{chunk-OZRUJVIQ.js.map → chunk-H3427GPU.js.map} +0 -0
  391. /package/dist/{chunk-IR6D7K4H.js.map → chunk-I3ZR655O.js.map} +0 -0
  392. /package/dist/{chunk-YK32GUBN.js.map → chunk-KMKEYI37.js.map} +0 -0
  393. /package/dist/{chunk-W3ZHJJVT.js.map → chunk-KS2QY6MK.js.map} +0 -0
  394. /package/dist/{chunk-WNRV4QH7.js.map → chunk-LYQJ4PZW.js.map} +0 -0
  395. /package/dist/{chunk-CSYSX4D2.js.map → chunk-N4LAYIIN.js.map} +0 -0
  396. /package/dist/{chunk-4AUMTNVB.js.map → chunk-NA63BH7V.js.map} +0 -0
  397. /package/dist/{chunk-4BQXAE7Z.js.map → chunk-NDEE6G2J.js.map} +0 -0
  398. /package/dist/{chunk-MELOSESI.js.map → chunk-R25YLW6H.js.map} +0 -0
  399. /package/dist/{chunk-Y6O7EWYY.js.map → chunk-RL5CP7N6.js.map} +0 -0
  400. /package/dist/{chunk-DGUNI37S.js.map → chunk-RX2DKU3W.js.map} +0 -0
  401. /package/dist/{chunk-VTDMKARH.js.map → chunk-ULG4QRTV.js.map} +0 -0
  402. /package/dist/{chunk-QRP3PXWN.js.map → chunk-VL43TNIP.js.map} +0 -0
  403. /package/dist/{chunk-SHL7LOC3.js.map → chunk-VLMBTPXU.js.map} +0 -0
  404. /package/dist/{chunk-KHRXPQID.js.map → chunk-VYQ3QJ3C.js.map} +0 -0
  405. /package/dist/{chunk-A4LOJ2VD.js.map → chunk-WGUQHAJY.js.map} +0 -0
  406. /package/dist/{chunk-ZEYEWPK6.js.map → chunk-WKQG6TER.js.map} +0 -0
  407. /package/dist/{chunk-3IBYKLXR.js.map → chunk-ZDMTXQ2Q.js.map} +0 -0
  408. /package/dist/{connect-QCOGEPP4.js.map → connect-FCXNVTXG.js.map} +0 -0
  409. /package/dist/{creatives-NJF2U763.js.map → creatives-FXUQ5WSD.js.map} +0 -0
  410. /package/dist/{customers-A36LOZOB.js.map → customers-XH2DMTFH.js.map} +0 -0
  411. /package/dist/{feedback-PPQMOQ46.js.map → feedback-EIZKS4JU.js.map} +0 -0
  412. /package/dist/{find-OTDIX6V4.js.map → find-FRRHAPWX.js.map} +0 -0
  413. /package/dist/{fonts-EMMX3KII.js.map → fonts-MXR3ZKDX.js.map} +0 -0
  414. /package/dist/{ga4-UDQ2HA2J.js.map → ga4-DV2AXCSL.js.map} +0 -0
  415. /package/dist/{google-M7KEXVK5.js.map → google-6OGZX47I.js.map} +0 -0
  416. /package/dist/{google-KTO3PLEU.js.map → google-QYYYSSXI.js.map} +0 -0
  417. /package/dist/{gsc-P3QYGDV2.js.map → gsc-TAKOF7J5.js.map} +0 -0
  418. /package/dist/{icon-I43F77FV.js.map → icon-L4RSS6PZ.js.map} +0 -0
  419. /package/dist/{ideas-MIDU7YOA.js.map → ideas-NFOW3HKJ.js.map} +0 -0
  420. /package/dist/{images-S254MS6O.js.map → images-2EFFUNNV.js.map} +0 -0
  421. /package/dist/{ingest-YV2NLDBE.js.map → ingest-2EIKN4QC.js.map} +0 -0
  422. /package/dist/{inspiration-P265QJ2H.js.map → inspiration-S3DU4CMQ.js.map} +0 -0
  423. /package/dist/{landing-CJYGWCK4.js.map → landing-2ZB46LXH.js.map} +0 -0
  424. /package/dist/{line-items-7ZGIKEF2.js.map → line-items-5NECXUZT.js.map} +0 -0
  425. /package/dist/{logo-2IP663QO.js.map → logo-Q5D7PZY6.js.map} +0 -0
  426. /package/dist/{lookup-XK45W2SH.js.map → lookup-ETWY47F7.js.map} +0 -0
  427. /package/dist/{media-sources-O6ZRUA3N.js.map → media-sources-ZXHEEP6T.js.map} +0 -0
  428. /package/dist/{performance-6QW2KEEQ.js.map → performance-UF5VTY2U.js.map} +0 -0
  429. /package/dist/{promoted-tweets-SURKMHFI.js.map → promoted-tweets-LZKS5JIF.js.map} +0 -0
  430. /package/dist/{reddit-GIP3ADMS.js.map → reddit-NU2N3LZD.js.map} +0 -0
  431. /package/dist/{research-2BLEISBG.js.map → research-FMM6AWZC.js.map} +0 -0
  432. /package/dist/{run-MODGUNGT.js.map → run-EUO34T2J.js.map} +0 -0
  433. /package/dist/{scheduled-agents-6U44QE76.js.map → scheduled-agents-N4LJRM4C.js.map} +0 -0
  434. /package/dist/{sources-YBQ6KPFM.js.map → sources-FQ2UZTHL.js.map} +0 -0
  435. /package/dist/{stock-2YCDN3N6.js.map → stock-KXJ26BY4.js.map} +0 -0
  436. /package/dist/{studio-RA7QQH4O.js.map → studio-SYKOSNDB.js.map} +0 -0
  437. /package/dist/{sync-definition-IPUFS5XS.js.map → sync-definition-QR2N233R.js.map} +0 -0
  438. /package/dist/{tags-3WPW6PTV.js.map → tags-PYWFSBTR.js.map} +0 -0
  439. /package/dist/{targeting-criteria-NR47AF5C.js.map → targeting-criteria-RJFLFICN.js.map} +0 -0
  440. /package/dist/{testimonials-CVC4YIXO.js.map → testimonials-DII5DYLR.js.map} +0 -0
  441. /package/dist/{videos-YSXYGTBM.js.map → videos-LICG6ACJ.js.map} +0 -0
  442. /package/dist/{winning-ads-2WS7FI4E.js.map → winning-ads-C6S2C5VP.js.map} +0 -0
  443. /package/dist/{x-BFSKFCZD.js.map → x-CZHRC6U7.js.map} +0 -0
@@ -2,10 +2,10 @@ import {
2
2
  FRAME_PLACEHOLDER_NOTE,
3
3
  exitOnPrepareError,
4
4
  prepareCanvas
5
- } from "./chunk-T2PC5AVH.js";
5
+ } from "./chunk-ASI4P6X2.js";
6
6
  import "./chunk-4QEY2L6U.js";
7
- import "./chunk-QRP3PXWN.js";
8
- import "./chunk-3IBYKLXR.js";
7
+ import "./chunk-VL43TNIP.js";
8
+ import "./chunk-ZDMTXQ2Q.js";
9
9
  import "./chunk-F2S5BLPE.js";
10
10
  import "./chunk-WTOYCUKH.js";
11
11
  import "./chunk-DZSIUEGH.js";
@@ -13,7 +13,7 @@ import {
13
13
  briefCopyLines,
14
14
  frameDescriptionOf,
15
15
  nativeDialogueOf
16
- } from "./chunk-GKZ2WU75.js";
16
+ } from "./chunk-FPOGPFAG.js";
17
17
  import "./chunk-NCWCZY5P.js";
18
18
  import "./chunk-DGCUPJZD.js";
19
19
  import {
@@ -27,10 +27,11 @@ import "./chunk-VAJBWA2U.js";
27
27
  import "./chunk-HRYOZUSK.js";
28
28
  import "./chunk-VVZBBKRC.js";
29
29
  import "./chunk-YBMVHGY3.js";
30
- import "./chunk-XF4JUKVF.js";
30
+ import "./chunk-7EPXVICM.js";
31
31
  import "./chunk-GXDLWBOY.js";
32
32
  import "./chunk-TEINLN64.js";
33
33
  import "./chunk-ZJWUBJYQ.js";
34
+ import "./chunk-HR6IWNKE.js";
34
35
  import "./chunk-NE4F3FHN.js";
35
36
  import "./chunk-IFWP3ZDO.js";
36
37
  import "./chunk-NAWWC5I3.js";
@@ -210,4 +211,4 @@ var critiqueCommand = defineCommand({
210
211
  export {
211
212
  critiqueCommand
212
213
  };
213
- //# sourceMappingURL=critique-YDKPYZLD.js.map
214
+ //# sourceMappingURL=critique-GS5VV5ZC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/commands/canvas/critique.ts","../src/engine/scaffold/lib/critique.ts"],"sourcesContent":["import path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { critiqueCanvas } from \"../../engine/scaffold/lib/critique.ts\";\nimport { exitOnPrepareError, type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\n\nexport const critiqueCommand = defineCommand({\n meta: {\n name: \"critique\",\n description:\n \"Pre-spend creative critic (ADVISORY — never blocks). Scores a scaffolded creative BEFORE the billed render, so weak spots get fixed for free. It scores what will render: prompt.json and scenes/*.json edits are brought into the canvas first, exactly as `run` does. A VIDEO creative is scored on hook strength, sound-off first-frame legibility, retention risk, and mechanism clarity; a STATIC ad on baked-text legibility risk, identity grounding, brand-type fidelity, and mechanism clarity. Ground a video hook against `baker winning-ads hooks` for a proven pattern.\",\n },\n args: { file: { type: \"positional\", required: true, description: \"Path to canvas JSON\" } },\n async run({ args }) {\n const filePath = path.resolve(String(args.file));\n // Scored on the graph the render will run: every projection applied (the static copy\n // from prompt.json, each scene's frame and clip prompts from scenes/*.json), not the\n // canvas as it was scaffolded.\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(filePath, { log: (line) => process.stderr.write(`${line}\\n`) });\n } catch (e) {\n exitOnPrepareError(e);\n }\n const report = critiqueCanvas(prepared.canvas as Parameters<typeof critiqueCanvas>[0]);\n // Advisory: always exit 0. A low score is guidance, not a gate — the operator\n // decides whether to strengthen the creative or render as-is.\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n advisory: true,\n overall: report.overall,\n dimensions: report.dimensions,\n hint: \"Scores are 0–1 (higher is better). This never blocks a render — strengthen weak dimensions or proceed.\",\n },\n null,\n 2,\n )}\\n`,\n );\n },\n});\n","/**\n * Pre-spend creative critic (T4.1) — our answer to Higgsfield's Virality Predictor,\n * grounded in the doctrine we already enforce. It scores a scaffolded creative on\n * the dimensions that decide whether an ad stops the scroll, BEFORE the billed\n * render, so the operator can strengthen a weak hook for free.\n *\n * ADVISORY ONLY. It never blocks a render or publish — it returns scores + notes;\n * the operator decides. This mirrors our validator philosophy (advisory warnings\n * steer, they don't gate).\n *\n * Pure + offline: it reads the parsed canvas and reasons from the node graph. The\n * deeper \"is this hook a proven winner for the segment\" question is answered by\n * grounding against `baker winning-ads hooks` (see references/critique.md) — kept\n * out of this function so the critic can't fail on a network hiccup.\n */\n\nimport { frameDescriptionOf } from \"../../engine/lint/rules/video-prompt.ts\";\nimport { nativeDialogueOf } from \"../../lib/prompt-profiles.ts\";\nimport { briefCopyLines } from \"../static-brief.ts\";\nimport { COPY_DIRECTIVE_HEADER } from \"../static-copy.ts\";\nimport { FRAME_PLACEHOLDER_NOTE } from \"../video/prompts/frame.ts\";\n\nexport type CritiqueCanvasInput = {\n nodes?: Array<{ id?: string; type?: string; params?: Record<string, unknown>; inputs?: unknown }>;\n metadata?: { video?: { duration_s?: number; vo_segments?: unknown[]; talking_scenes?: unknown[] } };\n};\n\nexport type CritiqueDimension = {\n dimension: // Video creative dimensions.\n | \"hook_strength\"\n | \"first_frame_legibility\"\n | \"retention_risk\"\n // Static-ad dimensions.\n | \"text_legibility_risk\"\n | \"identity_grounding\"\n | \"type_fidelity\"\n // Shared.\n | \"mechanism_clarity\";\n /** 0–1, higher is better (for the *_risk dimensions, higher = LOWER risk). */\n score: number;\n note: string;\n};\n\nexport type CritiqueReport = {\n advisory: true;\n overall: number;\n dimensions: CritiqueDimension[];\n};\n\nconst VIBE_CUE = /\\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\\b/i;\nconst MECHANISM_CUE =\n /\\b(because|works by|so that|mechanism|proof|guarantee|clinically|backed by|the reason|that's why)\\b/i;\n\nfunction promptOf(node: { params?: Record<string, unknown> } | undefined): string {\n const p = node?.params?.prompt;\n return typeof p === \"string\" ? p : \"\";\n}\n\nfunction round(n: number): number {\n return Math.round(n * 100) / 100;\n}\n\ntype CanvasNode = NonNullable<CritiqueCanvasInput[\"nodes\"]>[number];\n\n/**\n * What a frame node says about its own picture: the FRAME DESCRIPTION a scaffolded frame\n * wraps in fixed instructions (the same slice the validator reads), or a hand-authored\n * prompt whole. The fixed instructions are the same on every frame — scoring them is how\n * every hook read as having a mood, because they name \"lighting\" — and a frame still\n * waiting for its description has none.\n */\nfunction frameLook(node: CanvasNode): string {\n const description = frameDescriptionOf(promptOf(node)).trim();\n return description.endsWith(FRAME_PLACEHOLDER_NOTE) ? \"\" : description;\n}\n\n/** The words the creative itself says: every frame's own description and every spoken line. */\nfunction creativeText(nodes: CanvasNode[]): string {\n return nodes\n .flatMap((n) => {\n if (n.type === \"image_generate\") return [frameLook(n)];\n if (n.type === \"video_generate\") return [nativeDialogueOf(promptOf(n)) ?? \"\"];\n if (n.type === \"tts\" && typeof n.params?.text === \"string\") return [n.params.text];\n return [];\n })\n .join(\"\\n\");\n}\n\n/**\n * HOOK STRENGTH — the four hook layers present on scene 0 (text/sound/visual/vibe). The\n * visual and vibe layers are read off the opening frames' own descriptions (a canvas with\n * no generated frame: its scene-0 prompts, whole).\n */\nfunction scoreHookStrength(nodes: CanvasNode[], scene0: CanvasNode[], hasOverlay: boolean): CritiqueDimension {\n const scene0Text = scene0.map((n) => promptOf(n)).join(\"\\n\");\n const frames = scene0.filter((n) => n.type === \"image_generate\");\n const look = (frames.length > 0 ? frames.map(frameLook) : scene0.map((n) => promptOf(n))).join(\"\\n\");\n const hookClip = scene0.find((n) => n.type === \"video_generate\");\n const hasSound =\n hookClip?.params?.generate_audio === true ||\n /Dialogue:|Audio:/.test(scene0Text) ||\n nodes.some((n) => n.type === \"tts\" || n.type === \"dialogue\");\n const layers = [hasOverlay, hasSound, look.trim().length > 40, VIBE_CUE.test(look)];\n const layerCount = layers.filter(Boolean).length;\n return {\n dimension: \"hook_strength\",\n score: round(hookClip ? layerCount / 4 : 0.5),\n note: hookClip\n ? `hook works on ${layerCount}/4 layers (text/sound/visual/vibe)`\n : \"no scene-0 clip found — is this a video creative?\",\n };\n}\n\n/** FIRST-FRAME LEGIBILITY (sound-off) — feeds autoplay muted, so the first frame\n * must read without audio. A designed overlay text layer is the strongest signal. */\nfunction scoreFirstFrameLegibility(hasOverlay: boolean): CritiqueDimension {\n return {\n dimension: \"first_frame_legibility\",\n score: hasOverlay ? 1 : 0.4,\n note: hasOverlay\n ? \"a designed overlay layer carries the sound-off message\"\n : \"footage-only — the first frame may not read with sound off; consider an overlay hook\",\n };\n}\n\n/** RETENTION RISK (higher = lower risk) — long clips with no spoken line sag. */\nfunction scoreRetentionRisk(videoNodes: CanvasNode[]): CritiqueDimension {\n let saggy = 0;\n for (const n of videoNodes) {\n const dur = typeof n.params?.duration === \"number\" ? n.params.duration : 0;\n const spoken = /Dialogue:/.test(promptOf(n)) || n.params?.generate_audio === true;\n if (dur >= 8 && !spoken) saggy += 1;\n }\n return {\n dimension: \"retention_risk\",\n score: round(videoNodes.length > 0 ? 1 - Math.min(1, saggy / videoNodes.length) : 0.7),\n note: saggy > 0 ? `${saggy} long clip(s) with no spoken line may sag` : \"no obvious sag points\",\n };\n}\n\n/** MECHANISM CLARITY — does the creative state WHY it works, not just what it is? */\nfunction scoreMechanismClarity(allPromptText: string): CritiqueDimension {\n const clear = MECHANISM_CUE.test(allPromptText);\n return {\n dimension: \"mechanism_clarity\",\n score: clear ? 1 : 0.4,\n note: clear ? \"states a mechanism/proof\" : \"no clear 'why it works' — add the mechanism\",\n };\n}\n\nfunction clamp01(n: number): number {\n return Math.max(0, Math.min(1, n));\n}\n\n/**\n * The copy a static ad carries: the numbered lines its compiled brief quotes\n * (`static-brief.ts`), or, on a canvas no run has compiled yet, the strings of the older\n * prompt's copy block (from its header to the next blank line).\n */\nfunction staticCopyLines(nodes: CanvasNode[]): string[] {\n const gen = nodes.find((n) => n.type === \"image_generate\");\n const prompt = promptOf(gen);\n const compiled = briefCopyLines(prompt);\n if (compiled.length > 0) return compiled;\n const start = prompt.indexOf(COPY_DIRECTIVE_HEADER);\n if (start === -1) return [];\n const bodyStart = start + COPY_DIRECTIVE_HEADER.length;\n const end = prompt.indexOf(\"\\n\\n\", bodyStart);\n const block = prompt.slice(bodyStart, end === -1 ? undefined : end);\n const quoted = block.match(/\"[^\"]+\"/g);\n return quoted ? quoted.map((s) => s.slice(1, -1)) : [];\n}\n\n/** TEXT LEGIBILITY RISK (higher = lower risk) — baked copy is the #1 static-ad defect,\n * and it crowds fast: past ~6 distinct copy blocks the render garbles and duplicates. */\nfunction scoreTextLegibilityRisk(copy: string[]): CritiqueDimension {\n const lines = copy.length;\n return {\n dimension: \"text_legibility_risk\",\n score: round(clamp01(1 - Math.max(0, lines - 6) / 12)),\n note:\n lines > 6\n ? `${lines} copy blocks — dense; trim or split so type stays legible`\n : `${lines} copy block(s) — reads cleanly`,\n };\n}\n\n/** IDENTITY GROUNDING — Rule 1: every real subject grounds on a real reference (a\n * dropped `el_*` asset or its fused reference sheet), never free-generated. */\nfunction scoreIdentityGrounding(nodes: CanvasNode[]): CritiqueDimension {\n const grounded =\n nodes.filter((n) => n.type === \"image_reference_sheet\").length +\n nodes.filter((n) => n.type === \"ingest\" && typeof n.id === \"string\" && /^el_/.test(n.id)).length;\n return {\n dimension: \"identity_grounding\",\n // 0 grounded is fine for a pure-type ad, so it's a soft nudge, not a failure.\n score: grounded > 0 ? 1 : 0.6,\n note:\n grounded > 0\n ? `${grounded} subject(s) grounded in a real reference`\n : \"no grounded subject — fine for a type-only ad; otherwise ground the hero in a real reference\",\n };\n}\n\n/** TYPE FIDELITY — \"the big one\": image models don't hold a brand font, so a wired\n * font specimen that biases the render toward the real face is the strongest lever. */\nfunction scoreTypeFidelity(nodes: CanvasNode[]): CritiqueDimension {\n const hasSpecimen = nodes.some((n) => n.type === \"font_specimen\");\n return {\n dimension: \"type_fidelity\",\n score: hasSpecimen ? 1 : 0.5,\n note: hasSpecimen\n ? \"brand type biased by a font specimen\"\n : \"no font specimen — brand type may drift; wire the brand font\",\n };\n}\n\n/** VIDEO creative dimensions (hook / legibility / retention / mechanism). */\nfunction critiqueVideo(nodes: CanvasNode[], videoNodes: CanvasNode[]): CritiqueDimension[] {\n const scene0 = nodes.filter((n) => typeof n.id === \"string\" && /^s0(?:[_a-z0-9])*_/.test(n.id));\n const hasOverlay = nodes.some((n) => typeof n.type === \"string\" && /hyperframe/.test(n.type));\n return [\n scoreHookStrength(nodes, scene0, hasOverlay),\n scoreFirstFrameLegibility(hasOverlay),\n scoreRetentionRisk(videoNodes),\n scoreMechanismClarity(creativeText(nodes)),\n ];\n}\n\n/** STATIC-ad dimensions (legibility / grounding / type / mechanism). */\nfunction critiqueStatic(nodes: CanvasNode[]): CritiqueDimension[] {\n // Only the ad's own copy: every other prompt on the canvas is the scaffold's boilerplate,\n // and the judge's rubric alone (\"the reason the reference ad works\") read as a stated\n // mechanism on every multi-take ad.\n const copy = staticCopyLines(nodes);\n const copyText = copy.join(\"\\n\");\n return [\n scoreTextLegibilityRisk(copy),\n scoreIdentityGrounding(nodes),\n scoreTypeFidelity(nodes),\n scoreMechanismClarity(copyText),\n ];\n}\n\n/**\n * Score a scaffolded creative. Branches on modality — a canvas with `video_generate`\n * nodes is a video creative; anything else (an `image_generate` static ad, or an empty\n * canvas) is scored on the static dimensions. All heuristics degrade gracefully rather\n * than throwing, and every dimension is advisory only.\n */\nexport function critiqueCanvas(canvas: CritiqueCanvasInput): CritiqueReport {\n const nodes = Array.isArray(canvas.nodes) ? canvas.nodes : [];\n const videoNodes = nodes.filter((n) => n.type === \"video_generate\");\n const dimensions = videoNodes.length > 0 ? critiqueVideo(nodes, videoNodes) : critiqueStatic(nodes);\n const overall = round(dimensions.reduce((s, d) => s + d.score, 0) / dimensions.length);\n return { advisory: true, overall, dimensions };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/commands/canvas/critique.ts","../src/engine/scaffold/lib/critique.ts"],"sourcesContent":["import path from \"node:path\";\nimport { defineCommand } from \"citty\";\nimport { critiqueCanvas } from \"../../engine/scaffold/lib/critique.ts\";\nimport { exitOnPrepareError, type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\n\nexport const critiqueCommand = defineCommand({\n meta: {\n name: \"critique\",\n description:\n \"Pre-spend creative critic (ADVISORY — never blocks). Scores a scaffolded creative BEFORE the billed render, so weak spots get fixed for free. It scores what will render: prompt.json and scenes/*.json edits are brought into the canvas first, exactly as `run` does. A VIDEO creative is scored on hook strength, sound-off first-frame legibility, retention risk, and mechanism clarity; a STATIC ad on baked-text legibility risk, identity grounding, brand-type fidelity, and mechanism clarity. Ground a video hook against `baker winning-ads hooks` for a proven pattern.\",\n },\n args: { file: { type: \"positional\", required: true, description: \"Path to canvas JSON\" } },\n async run({ args }) {\n const filePath = path.resolve(String(args.file));\n // Scored on the graph the render will run: every projection applied (the static copy\n // from prompt.json, each scene's frame and clip prompts from scenes/*.json), not the\n // canvas as it was scaffolded.\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(filePath, { log: (line) => process.stderr.write(`${line}\\n`) });\n } catch (e) {\n exitOnPrepareError(e);\n }\n const report = critiqueCanvas(prepared.canvas as Parameters<typeof critiqueCanvas>[0]);\n // Advisory: always exit 0. A low score is guidance, not a gate — the operator\n // decides whether to strengthen the creative or render as-is.\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n advisory: true,\n overall: report.overall,\n dimensions: report.dimensions,\n hint: \"Scores are 0–1 (higher is better). This never blocks a render — strengthen weak dimensions or proceed.\",\n },\n null,\n 2,\n )}\\n`,\n );\n },\n});\n","/**\n * Pre-spend creative critic (T4.1) — our answer to Higgsfield's Virality Predictor,\n * grounded in the doctrine we already enforce. It scores a scaffolded creative on\n * the dimensions that decide whether an ad stops the scroll, BEFORE the billed\n * render, so the operator can strengthen a weak hook for free.\n *\n * ADVISORY ONLY. It never blocks a render or publish — it returns scores + notes;\n * the operator decides. This mirrors our validator philosophy (advisory warnings\n * steer, they don't gate).\n *\n * Pure + offline: it reads the parsed canvas and reasons from the node graph. The\n * deeper \"is this hook a proven winner for the segment\" question is answered by\n * grounding against `baker winning-ads hooks` (see references/critique.md) — kept\n * out of this function so the critic can't fail on a network hiccup.\n */\n\nimport { frameDescriptionOf } from \"../../engine/lint/rules/video-prompt.ts\";\nimport { nativeDialogueOf } from \"../../lib/prompt-profiles.ts\";\nimport { briefCopyLines } from \"../static-brief.ts\";\nimport { COPY_DIRECTIVE_HEADER } from \"../static-copy.ts\";\nimport { FRAME_PLACEHOLDER_NOTE } from \"../video/prompts/frame.ts\";\n\nexport type CritiqueCanvasInput = {\n nodes?: Array<{ id?: string; type?: string; params?: Record<string, unknown>; inputs?: unknown }>;\n metadata?: { video?: { duration_s?: number; vo_segments?: unknown[]; talking_scenes?: unknown[] } };\n};\n\nexport type CritiqueDimension = {\n dimension: // Video creative dimensions.\n | \"hook_strength\"\n | \"first_frame_legibility\"\n | \"retention_risk\"\n // Static-ad dimensions.\n | \"text_legibility_risk\"\n | \"identity_grounding\"\n | \"type_fidelity\"\n // Shared.\n | \"mechanism_clarity\";\n /** 0–1, higher is better (for the *_risk dimensions, higher = LOWER risk). */\n score: number;\n note: string;\n};\n\nexport type CritiqueReport = {\n advisory: true;\n overall: number;\n dimensions: CritiqueDimension[];\n};\n\nconst VIBE_CUE = /\\b(light|lighting|golden|moody|warm|cool|tone|grade|contrast|shadow|glow|rim|backlit|neon|soft)\\b/i;\nconst MECHANISM_CUE =\n /\\b(because|works by|so that|mechanism|proof|guarantee|clinically|backed by|the reason|that's why)\\b/i;\n\nfunction promptOf(node: { params?: Record<string, unknown> } | undefined): string {\n const p = node?.params?.prompt;\n return typeof p === \"string\" ? p : \"\";\n}\n\nfunction round(n: number): number {\n return Math.round(n * 100) / 100;\n}\n\ntype CanvasNode = NonNullable<CritiqueCanvasInput[\"nodes\"]>[number];\n\n/**\n * What a frame node says about its own picture: the FRAME DESCRIPTION a scaffolded frame\n * wraps in fixed instructions (the same slice the validator reads), or a hand-authored\n * prompt whole. The fixed instructions are the same on every frame — scoring them is how\n * every hook read as having a mood, because they name \"lighting\" — and a frame still\n * waiting for its description has none.\n */\nfunction frameLook(node: CanvasNode): string {\n const description = frameDescriptionOf(promptOf(node)).trim();\n return description.endsWith(FRAME_PLACEHOLDER_NOTE) ? \"\" : description;\n}\n\n/** The words the creative itself says: every frame's own description and every spoken line. */\nfunction creativeText(nodes: CanvasNode[]): string {\n return nodes\n .flatMap((n) => {\n if (n.type === \"image_generate\") return [frameLook(n)];\n if (n.type === \"video_generate\") return [nativeDialogueOf(promptOf(n)) ?? \"\"];\n if (n.type === \"tts\" && typeof n.params?.text === \"string\") return [n.params.text];\n return [];\n })\n .join(\"\\n\");\n}\n\n/**\n * HOOK STRENGTH — the four hook layers present on scene 0 (text/sound/visual/vibe). The\n * visual and vibe layers are read off the opening frames' own descriptions (a canvas with\n * no generated frame: its scene-0 prompts, whole).\n */\nfunction scoreHookStrength(nodes: CanvasNode[], scene0: CanvasNode[], hasOverlay: boolean): CritiqueDimension {\n const scene0Text = scene0.map((n) => promptOf(n)).join(\"\\n\");\n const frames = scene0.filter((n) => n.type === \"image_generate\");\n const look = (frames.length > 0 ? frames.map(frameLook) : scene0.map((n) => promptOf(n))).join(\"\\n\");\n const hookClip = scene0.find((n) => n.type === \"video_generate\");\n const hasSound =\n hookClip?.params?.generate_audio === true ||\n /Dialogue:|Audio:/.test(scene0Text) ||\n nodes.some((n) => n.type === \"tts\" || n.type === \"dialogue\");\n const layers = [hasOverlay, hasSound, look.trim().length > 40, VIBE_CUE.test(look)];\n const layerCount = layers.filter(Boolean).length;\n return {\n dimension: \"hook_strength\",\n score: round(hookClip ? layerCount / 4 : 0.5),\n note: hookClip\n ? `hook works on ${layerCount}/4 layers (text/sound/visual/vibe)`\n : \"no scene-0 clip found — is this a video creative?\",\n };\n}\n\n/** FIRST-FRAME LEGIBILITY (sound-off) — feeds autoplay muted, so the first frame\n * must read without audio. A designed overlay text layer is the strongest signal. */\nfunction scoreFirstFrameLegibility(hasOverlay: boolean): CritiqueDimension {\n return {\n dimension: \"first_frame_legibility\",\n score: hasOverlay ? 1 : 0.4,\n note: hasOverlay\n ? \"a designed overlay layer carries the sound-off message\"\n : \"footage-only — the first frame may not read with sound off; consider an overlay hook\",\n };\n}\n\n/** RETENTION RISK (higher = lower risk) — long clips with no spoken line sag. */\nfunction scoreRetentionRisk(videoNodes: CanvasNode[]): CritiqueDimension {\n let saggy = 0;\n for (const n of videoNodes) {\n const dur = typeof n.params?.duration === \"number\" ? n.params.duration : 0;\n const spoken = /Dialogue:/.test(promptOf(n)) || n.params?.generate_audio === true;\n if (dur >= 8 && !spoken) saggy += 1;\n }\n return {\n dimension: \"retention_risk\",\n score: round(videoNodes.length > 0 ? 1 - Math.min(1, saggy / videoNodes.length) : 0.7),\n note: saggy > 0 ? `${saggy} long clip(s) with no spoken line may sag` : \"no obvious sag points\",\n };\n}\n\n/** MECHANISM CLARITY — does the creative state WHY it works, not just what it is? */\nfunction scoreMechanismClarity(allPromptText: string): CritiqueDimension {\n const clear = MECHANISM_CUE.test(allPromptText);\n return {\n dimension: \"mechanism_clarity\",\n score: clear ? 1 : 0.4,\n note: clear ? \"states a mechanism/proof\" : \"no clear 'why it works' — add the mechanism\",\n };\n}\n\nfunction clamp01(n: number): number {\n return Math.max(0, Math.min(1, n));\n}\n\n/**\n * The copy a static ad carries: the numbered lines its compiled brief quotes\n * (`static-brief.ts`), or, on a canvas no run has compiled yet, the strings of the older\n * prompt's copy block (from its header to the next blank line).\n */\nfunction staticCopyLines(nodes: CanvasNode[]): string[] {\n const gen = nodes.find((n) => n.type === \"image_generate\");\n const prompt = promptOf(gen);\n const compiled = briefCopyLines(prompt);\n if (compiled.length > 0) return compiled;\n const start = prompt.indexOf(COPY_DIRECTIVE_HEADER);\n if (start === -1) return [];\n const bodyStart = start + COPY_DIRECTIVE_HEADER.length;\n const end = prompt.indexOf(\"\\n\\n\", bodyStart);\n const block = prompt.slice(bodyStart, end === -1 ? undefined : end);\n const quoted = block.match(/\"[^\"]+\"/g);\n return quoted ? quoted.map((s) => s.slice(1, -1)) : [];\n}\n\n/** TEXT LEGIBILITY RISK (higher = lower risk) — baked copy is the #1 static-ad defect,\n * and it crowds fast: past ~6 distinct copy blocks the render garbles and duplicates. */\nfunction scoreTextLegibilityRisk(copy: string[]): CritiqueDimension {\n const lines = copy.length;\n return {\n dimension: \"text_legibility_risk\",\n score: round(clamp01(1 - Math.max(0, lines - 6) / 12)),\n note:\n lines > 6\n ? `${lines} copy blocks — dense; trim or split so type stays legible`\n : `${lines} copy block(s) — reads cleanly`,\n };\n}\n\n/** IDENTITY GROUNDING — Rule 1: every real subject grounds on a real reference (a\n * dropped `el_*` asset or its fused reference sheet), never free-generated. */\nfunction scoreIdentityGrounding(nodes: CanvasNode[]): CritiqueDimension {\n const grounded =\n nodes.filter((n) => n.type === \"image_reference_sheet\").length +\n nodes.filter((n) => n.type === \"ingest\" && typeof n.id === \"string\" && /^el_/.test(n.id)).length;\n return {\n dimension: \"identity_grounding\",\n // 0 grounded is fine for a pure-type ad, so it's a soft nudge, not a failure.\n score: grounded > 0 ? 1 : 0.6,\n note:\n grounded > 0\n ? `${grounded} subject(s) grounded in a real reference`\n : \"no grounded subject — fine for a type-only ad; otherwise ground the hero in a real reference\",\n };\n}\n\n/** TYPE FIDELITY — \"the big one\": image models don't hold a brand font, so a wired\n * font specimen that biases the render toward the real face is the strongest lever. */\nfunction scoreTypeFidelity(nodes: CanvasNode[]): CritiqueDimension {\n const hasSpecimen = nodes.some((n) => n.type === \"font_specimen\");\n return {\n dimension: \"type_fidelity\",\n score: hasSpecimen ? 1 : 0.5,\n note: hasSpecimen\n ? \"brand type biased by a font specimen\"\n : \"no font specimen — brand type may drift; wire the brand font\",\n };\n}\n\n/** VIDEO creative dimensions (hook / legibility / retention / mechanism). */\nfunction critiqueVideo(nodes: CanvasNode[], videoNodes: CanvasNode[]): CritiqueDimension[] {\n const scene0 = nodes.filter((n) => typeof n.id === \"string\" && /^s0(?:[_a-z0-9])*_/.test(n.id));\n const hasOverlay = nodes.some((n) => typeof n.type === \"string\" && /hyperframe/.test(n.type));\n return [\n scoreHookStrength(nodes, scene0, hasOverlay),\n scoreFirstFrameLegibility(hasOverlay),\n scoreRetentionRisk(videoNodes),\n scoreMechanismClarity(creativeText(nodes)),\n ];\n}\n\n/** STATIC-ad dimensions (legibility / grounding / type / mechanism). */\nfunction critiqueStatic(nodes: CanvasNode[]): CritiqueDimension[] {\n // Only the ad's own copy: every other prompt on the canvas is the scaffold's boilerplate,\n // and the judge's rubric alone (\"the reason the reference ad works\") read as a stated\n // mechanism on every multi-take ad.\n const copy = staticCopyLines(nodes);\n const copyText = copy.join(\"\\n\");\n return [\n scoreTextLegibilityRisk(copy),\n scoreIdentityGrounding(nodes),\n scoreTypeFidelity(nodes),\n scoreMechanismClarity(copyText),\n ];\n}\n\n/**\n * Score a scaffolded creative. Branches on modality — a canvas with `video_generate`\n * nodes is a video creative; anything else (an `image_generate` static ad, or an empty\n * canvas) is scored on the static dimensions. All heuristics degrade gracefully rather\n * than throwing, and every dimension is advisory only.\n */\nexport function critiqueCanvas(canvas: CritiqueCanvasInput): CritiqueReport {\n const nodes = Array.isArray(canvas.nodes) ? canvas.nodes : [];\n const videoNodes = nodes.filter((n) => n.type === \"video_generate\");\n const dimensions = videoNodes.length > 0 ? critiqueVideo(nodes, videoNodes) : critiqueStatic(nodes);\n const overall = round(dimensions.reduce((s, d) => s + d.score, 0) / dimensions.length);\n return { advisory: true, overall, dimensions };\n}\n"],"mappings":"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","names":[]}
@@ -10,7 +10,7 @@ import {
10
10
  isNeutralAuthoredColor,
11
11
  loadBrandTokens,
12
12
  parseColor
13
- } from "./chunk-3IBYKLXR.js";
13
+ } from "./chunk-ZDMTXQ2Q.js";
14
14
  import {
15
15
  STACCATO_MAX_WORDS,
16
16
  STACCATO_RUN,
@@ -34,10 +34,11 @@ import {
34
34
  } from "./chunk-HRYOZUSK.js";
35
35
  import "./chunk-VVZBBKRC.js";
36
36
  import "./chunk-YBMVHGY3.js";
37
- import "./chunk-XF4JUKVF.js";
37
+ import "./chunk-7EPXVICM.js";
38
38
  import "./chunk-GXDLWBOY.js";
39
39
  import "./chunk-TEINLN64.js";
40
40
  import "./chunk-ZJWUBJYQ.js";
41
+ import "./chunk-HR6IWNKE.js";
41
42
  import "./chunk-NE4F3FHN.js";
42
43
  import "./chunk-IFWP3ZDO.js";
43
44
  import "./chunk-NAWWC5I3.js";
@@ -1446,4 +1447,4 @@ export {
1446
1447
  critiqueOne,
1447
1448
  parseCritiqueSlugs
1448
1449
  };
1449
- //# sourceMappingURL=critique-ZS4ON3SU.js.map
1450
+ //# sourceMappingURL=critique-TPHR27KH.js.map