@koda-sl/baker-cli 0.568.0 → 0.570.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1479) hide show
  1. package/README.md +22 -16
  2. package/dist/account-52WDLW4Z.js +82 -0
  3. package/dist/account-7KZ7MHMN.js +82 -0
  4. package/dist/account-NSBALYYS.js +139 -0
  5. package/dist/account-assets-EPEYTJFD.js +290 -0
  6. package/dist/account-level-VD4NLB2D.js +611 -0
  7. package/dist/account-reads-RXF37O4N.js +219 -0
  8. package/dist/account-users-NUI3ILRE.js +64 -0
  9. package/dist/account-writes-3BJSUM2V.js +68 -0
  10. package/dist/accounts-A47QUTTB.js +76 -0
  11. package/dist/accounts-E5TF2AFI.js +115 -0
  12. package/dist/accounts-FLKNFDIE.js +713 -0
  13. package/dist/accounts-I2ZLR76R.js +80 -0
  14. package/dist/accounts-ZV4IXOF5.js +119 -0
  15. package/dist/actions-IR47GVZ6.js +55 -0
  16. package/dist/active-entities-XRSJNBOV.js +103 -0
  17. package/dist/activecampaign-MNJYIWJL.js +938 -0
  18. package/dist/activities-ZDWREYR7.js +75 -0
  19. package/dist/ad-group-writes-KU4QMQZP.js +172 -0
  20. package/dist/ad-groups-NMW2G32A.js +70 -0
  21. package/dist/ad-writes-7NOFTOM4.js +176 -0
  22. package/dist/add-25YZMFSH.js +85 -0
  23. package/dist/add-4I25INAO.js +107 -0
  24. package/dist/add-7MAL7JRX.js +81 -0
  25. package/dist/add-D44VCDRU.js +148 -0
  26. package/dist/add-JO4ZPS23.js +97 -0
  27. package/dist/add-QMTD6EGI.js +305 -0
  28. package/dist/add-accounts-EKMSHAA4.js +91 -0
  29. package/dist/ads-4YZYNU66.js +128 -0
  30. package/dist/ads-BT2DF3XN.js +48 -0
  31. package/dist/ads-DGL5SGP3.js +120 -0
  32. package/dist/ads-P4Z3MLKS.js +79 -0
  33. package/dist/adsets-PSVCPCE3.js +182 -0
  34. package/dist/advertisers-7NAPI5ZU.js +125 -0
  35. package/dist/advertisers-LOIXTTGP.js +123 -0
  36. package/dist/analytics-6AHC3J4L.js +447 -0
  37. package/dist/analytics-NL2KGDLK.js +2437 -0
  38. package/dist/animate-VX7E7KJE.js +480 -0
  39. package/dist/approved-E4EZA5RT.js +73 -0
  40. package/dist/asset-writes-NDSHY5OT.js +50 -0
  41. package/dist/assign-NKHIHVGI.js +80 -0
  42. package/dist/audience-size-WEOM6XIL.js +76 -0
  43. package/dist/audience-writes-4KQXVGHO.js +327 -0
  44. package/dist/audiences-P3SPTAJT.js +280 -0
  45. package/dist/audiences-T5LMTT3B.js +85 -0
  46. package/dist/audiences-UHLVATR6.js +106 -0
  47. package/dist/audit-46DO2HV3.js +88 -0
  48. package/dist/audit-4RIBJ7BR.js +154 -0
  49. package/dist/autocomplete-FMTJDXTL.js +114 -0
  50. package/dist/avatars-LY5SFMWO.js +38 -0
  51. package/dist/bid-pricing-MQ7WLV5U.js +103 -0
  52. package/dist/brand-LR5IXW3W.js +22 -0
  53. package/dist/brief-4DSXIX3F.js +543 -0
  54. package/dist/businesses-TRFYMZ4I.js +54 -0
  55. package/dist/campaign-groups-EZYLKMO2.js +99 -0
  56. package/dist/campaign-writes-P5XPFTRK.js +176 -0
  57. package/dist/campaign-writes-UMENYMKO.js +168 -0
  58. package/dist/campaigns-2MTON2IE.js +130 -0
  59. package/dist/campaigns-PP2DQMJE.js +113 -0
  60. package/dist/campaigns-SWZJVE2T.js +78 -0
  61. package/dist/campaigns-TAFDM242.js +111 -0
  62. package/dist/canvas-RKR3ZB4E.js +46 -0
  63. package/dist/capabilities-45RZ6E6W.js +147 -0
  64. package/dist/cards-CXKIVM4D.js +85 -0
  65. package/dist/catalog-TOHUVBEU.js +66 -0
  66. package/dist/catalogs-4DNLG4AM.js +782 -0
  67. package/dist/catalogs-V7PTEJBO.js +130 -0
  68. package/dist/changes-5OW3UYMF.js +167 -0
  69. package/dist/chatgpt-JBMYNVJB.js +47 -0
  70. package/dist/chats-VOLBYA3R.js +584 -0
  71. package/dist/check-4DI73QX4.js +107 -0
  72. package/dist/chunk-2CC4CPDT.js +225 -0
  73. package/dist/chunk-2N7TB346.js +5368 -0
  74. package/dist/chunk-2YXTXSYG.js +454 -0
  75. package/dist/chunk-2Z6PFHD2.js +91 -0
  76. package/dist/chunk-3GXHML4V.js +106 -0
  77. package/dist/chunk-3QPG2D27.js +125 -0
  78. package/dist/chunk-3WN5GWX4.js +94 -0
  79. package/dist/chunk-47VWQ7FQ.js +843 -0
  80. package/dist/chunk-4AO3LSYM.js +73 -0
  81. package/dist/chunk-4HFM5RCP.js +217 -0
  82. package/dist/chunk-4QFMRL6O.js +455 -0
  83. package/dist/chunk-5OC6VUDZ.js +930 -0
  84. package/dist/chunk-5QNW5PCM.js +106 -0
  85. package/dist/chunk-5VXEH72O.js +249 -0
  86. package/dist/chunk-6AMN346B.js +114 -0
  87. package/dist/chunk-6EOWBGGW.js +191 -0
  88. package/dist/chunk-6MJKVNLL.js +25 -0
  89. package/dist/chunk-7NBQQOCU.js +97 -0
  90. package/dist/chunk-AQRBEPZL.js +138 -0
  91. package/dist/chunk-AZIXX73C.js +64 -0
  92. package/dist/chunk-B4BITHOD.js +2235 -0
  93. package/dist/chunk-B4BITHOD.js.map +1 -0
  94. package/dist/chunk-B64KJW5C.js +476 -0
  95. package/dist/chunk-BFAPSFS7.js +1518 -0
  96. package/dist/chunk-BIBXZJZI.js +97 -0
  97. package/dist/chunk-BNEWJXKU.js +638 -0
  98. package/dist/chunk-BXTIG5JL.js +66 -0
  99. package/dist/chunk-C7KV5O5J.js +274 -0
  100. package/dist/chunk-CBVUO7SK.js +1744 -0
  101. package/dist/chunk-CDPX6WAL.js +207 -0
  102. package/dist/chunk-CF5I4Q5M.js +69 -0
  103. package/dist/chunk-COOJKEJE.js +312 -0
  104. package/dist/chunk-CTJWMZPL.js +430 -0
  105. package/dist/chunk-D5HD46VV.js +163 -0
  106. package/dist/chunk-DGHSXHZR.js +136 -0
  107. package/dist/chunk-DHF4FXWS.js +58 -0
  108. package/dist/chunk-DPOUS5DN.js +287 -0
  109. package/dist/chunk-EGICPBDY.js +1920 -0
  110. package/dist/chunk-EGICPBDY.js.map +1 -0
  111. package/dist/chunk-EJ6EED6I.js +69 -0
  112. package/dist/chunk-EKOMZH2S.js +685 -0
  113. package/dist/chunk-ELC42LJJ.js +8954 -0
  114. package/dist/chunk-FLTAPEVY.js +288 -0
  115. package/dist/chunk-G4FU6VC5.js +23 -0
  116. package/dist/chunk-H25GY4U4.js +139 -0
  117. package/dist/chunk-H6ASYVQX.js +544 -0
  118. package/dist/chunk-H7LKYGLJ.js +24026 -0
  119. package/dist/chunk-HI4SKWNW.js +709 -0
  120. package/dist/chunk-HM4NWA72.js +5471 -0
  121. package/dist/chunk-HPF3USL2.js +52 -0
  122. package/dist/chunk-I33FO2ON.js +170 -0
  123. package/dist/chunk-IAE24RKD.js +604 -0
  124. package/dist/chunk-IJ6WA2JW.js +148 -0
  125. package/dist/chunk-ITIUWJGQ.js +131 -0
  126. package/dist/chunk-IYDESWW4.js +74 -0
  127. package/dist/chunk-J4BJLHLQ.js +3510 -0
  128. package/dist/chunk-JAME5NBT.js +42 -0
  129. package/dist/chunk-JGK2FDZW.js +1919 -0
  130. package/dist/chunk-JT3UUBID.js +142 -0
  131. package/dist/chunk-KGJ6EIX3.js +76 -0
  132. package/dist/chunk-KUI74TNG.js +169 -0
  133. package/dist/chunk-L4QEMWNJ.js +111 -0
  134. package/dist/chunk-L7I47VGM.js +46 -0
  135. package/dist/chunk-LAOCXV6Z.js +98 -0
  136. package/dist/chunk-LJEJCIHR.js +246 -0
  137. package/dist/chunk-M4KFO256.js +188 -0
  138. package/dist/chunk-MC5F2L64.js +962 -0
  139. package/dist/chunk-MIHY534L.js +39 -0
  140. package/dist/chunk-MKOI6QYM.js +225 -0
  141. package/dist/chunk-MPTNN35I.js +325 -0
  142. package/dist/chunk-MPTNN35I.js.map +1 -0
  143. package/dist/chunk-MSIOGH67.js +66 -0
  144. package/dist/chunk-MTW2NDDD.js +98 -0
  145. package/dist/chunk-NXNOXZGB.js +2523 -0
  146. package/dist/chunk-NXNOXZGB.js.map +1 -0
  147. package/dist/chunk-O2ECZKXP.js +197 -0
  148. package/dist/chunk-O5VSYBUA.js +343 -0
  149. package/dist/chunk-OJZKY5UM.js +46 -0
  150. package/dist/chunk-P4UCSXNA.js +156 -0
  151. package/dist/chunk-Q3G4ZI2U.js +84 -0
  152. package/dist/chunk-Q5XUFN2W.js +35 -0
  153. package/dist/chunk-Q736UFSD.js +75 -0
  154. package/dist/chunk-QLO4RNHU.js +51 -0
  155. package/dist/chunk-QSS34JWZ.js +224 -0
  156. package/dist/chunk-QVHZTCB5.js +1254 -0
  157. package/dist/chunk-QVHZTCB5.js.map +1 -0
  158. package/dist/chunk-RRKUXGAU.js +26 -0
  159. package/dist/chunk-RVIBHENP.js +344 -0
  160. package/dist/chunk-S5S54J2K.js +56 -0
  161. package/dist/chunk-SIRRBWQ2.js +215 -0
  162. package/dist/chunk-TEJOILEY.js +203 -0
  163. package/dist/chunk-TEQEZAJI.js +1320 -0
  164. package/dist/chunk-TLQY4QBW.js +84 -0
  165. package/dist/chunk-TNI7CN4L.js +547 -0
  166. package/dist/chunk-TPJ34LXX.js +220 -0
  167. package/dist/chunk-TPJ34LXX.js.map +1 -0
  168. package/dist/chunk-U6AWJIFP.js +225 -0
  169. package/dist/chunk-UK4XSLV2.js +296 -0
  170. package/dist/chunk-URGXEDFV.js +76 -0
  171. package/dist/chunk-V5ODOBBI.js +399 -0
  172. package/dist/chunk-V7EN5LFS.js +115 -0
  173. package/dist/chunk-VAURJ4QJ.js +89 -0
  174. package/dist/chunk-VAV5CCDD.js +167 -0
  175. package/dist/chunk-VWHUO3AP.js +103 -0
  176. package/dist/chunk-W3TZPHZO.js +285 -0
  177. package/dist/chunk-WTPID22G.js +152 -0
  178. package/dist/chunk-WZATC4O5.js +297 -0
  179. package/dist/chunk-XA76OGSL.js +718 -0
  180. package/dist/chunk-XGG72YRO.js +91 -0
  181. package/dist/chunk-XWAOECD2.js +831 -0
  182. package/dist/chunk-YAMKCMAS.js +219 -0
  183. package/dist/chunk-YDALLZNS.js +494 -0
  184. package/dist/chunk-YRWCXYWW.js +178 -0
  185. package/dist/chunk-Z3RGBLVJ.js +64 -0
  186. package/dist/chunk-Z5JWFNG4.js +19 -0
  187. package/dist/chunk-ZCGM7ZWM.js +45 -0
  188. package/dist/cite-WCAOCOO5.js +191 -0
  189. package/dist/claim-3UMAFZEM.js +200 -0
  190. package/dist/cli.js +49 -49
  191. package/dist/cli.js.map +1 -1
  192. package/dist/client-VCKP6WBR.js +19 -0
  193. package/dist/code-VXOTFGD2.js +76 -0
  194. package/dist/companies-RL5A26AT.js +198 -0
  195. package/dist/company-DJ44F5C6.js +308 -0
  196. package/dist/complete-PGNIP3LN.js +84 -0
  197. package/dist/config-UR45YCIN.js +88 -0
  198. package/dist/connect-ROARWN63.js +45 -0
  199. package/dist/content-EQQIKG5H.js +85 -0
  200. package/dist/conversation-GDFMJL7X.js +96 -0
  201. package/dist/conversion-report-2FREFML5.js +127 -0
  202. package/dist/conversion-upload-command-G7LLWHSK.js +439 -0
  203. package/dist/conversion-writes-JZIJSQ7T.js +122 -0
  204. package/dist/conversions-2IFWDQKK.js +140 -0
  205. package/dist/conversions-Q5EBTEXA.js +78 -0
  206. package/dist/copy-writes-JVUX3YDL.js +170 -0
  207. package/dist/countries-GRCU4IGM.js +82 -0
  208. package/dist/create-B5DIYK5D.js +218 -0
  209. package/dist/create-BRCSXXFO.js +239 -0
  210. package/dist/create-PXAUL6FF.js +62 -0
  211. package/dist/create-R6CMATVY.js +135 -0
  212. package/dist/creatives-4EPM3RHG.js +118 -0
  213. package/dist/creatives-D6O6Z46U.js +229 -0
  214. package/dist/creatives-XNVWQWFF.js +58 -0
  215. package/dist/credentials-CLJO7WWY.js +290 -0
  216. package/dist/critique-MBMKW6SL.js +1451 -0
  217. package/dist/critique-OUJDTVMI.js +232 -0
  218. package/dist/crm-H5ITJ2RC.js +229 -0
  219. package/dist/crm-JJHYRABB.js +323 -0
  220. package/dist/crop-NE7YX4SS.js +113 -0
  221. package/dist/currency-EFDQYW5B.js +88 -0
  222. package/dist/custom-conversions-GQTU5E6X.js +128 -0
  223. package/dist/customers-C5YXAVXI.js +65 -0
  224. package/dist/decide-6Q5X3V3F.js +199 -0
  225. package/dist/delete-3GYCQK6B.js +57 -0
  226. package/dist/delete-EKKOEB3N.js +69 -0
  227. package/dist/delete-NBUDIGSD.js +69 -0
  228. package/dist/delete-QHDDR66K.js +85 -0
  229. package/dist/delete-SP66F7ZV.js +71 -0
  230. package/dist/delete-WZ3KVVX5.js +67 -0
  231. package/dist/demographics-O7AJW7DO.js +141 -0
  232. package/dist/describe-DJPIUEFE.js +97 -0
  233. package/dist/describe-MAGTSOW4.js +97 -0
  234. package/dist/dimensions-IC2H7V3H.js +101 -0
  235. package/dist/discard-RMVZAX2J.js +69 -0
  236. package/dist/discover-BPUUWRBP.js +172 -0
  237. package/dist/discover-PSL2NBJL.js +93 -0
  238. package/dist/domain-J3ZMBOHS.js +101 -0
  239. package/dist/download-EHDJXBAC.js +337 -0
  240. package/dist/download-ZVOGLTFB.js +172 -0
  241. package/dist/draft-27NMTARB.js +134 -0
  242. package/dist/draft-6PJD3MCW.js +374 -0
  243. package/dist/draft-GCOCG4PO.js +315 -0
  244. package/dist/draft-JESKGZ6O.js +138 -0
  245. package/dist/draft-MWYKIZC4.js +260 -0
  246. package/dist/draft-Q4PEFBJB.js +578 -0
  247. package/dist/draft-TPR3DH5N.js +220 -0
  248. package/dist/draft-ZPGGWU7E.js +332 -0
  249. package/dist/engine/index.js +14 -14
  250. package/dist/env-NZXNMWSD.js +53 -0
  251. package/dist/experiment-XAYSEYTU.js +1397 -0
  252. package/dist/experiments-MM4BYHRH.js +236 -0
  253. package/dist/export-W54UZ62P.js +168 -0
  254. package/dist/extract-JMY6YRPW.js +143 -0
  255. package/dist/facets-B5AZAU2C.js +117 -0
  256. package/dist/favorites-Y6CT6NSQ.js +178 -0
  257. package/dist/feed-35BRQPTH.js +177 -0
  258. package/dist/feedback-2EVDGTEN.js +115 -0
  259. package/dist/feedback-4MCMOMVN.js +114 -0
  260. package/dist/feedback-record-DL7UEU2H.js +269 -0
  261. package/dist/fetch-I6P72CDL.js +139 -0
  262. package/dist/fetch-JDNFK476.js +204 -0
  263. package/dist/find-SVGRA7IA.js +144 -0
  264. package/dist/fit-DKVH5BDW.js +65 -0
  265. package/dist/flows-LURTZICL.js +340 -0
  266. package/dist/follow-24QSDNAG.js +94 -0
  267. package/dist/follow-competitors-AG4E4XFA.js +112 -0
  268. package/dist/following-YGM6TBK3.js +113 -0
  269. package/dist/fonts-HUXFDDAE.js +39 -0
  270. package/dist/forecast-ITLKAFHM.js +169 -0
  271. package/dist/forecast-UHTW4Y7Q.js +121 -0
  272. package/dist/funding-WZNGXRLJ.js +85 -0
  273. package/dist/funnel-QM7WFFMD.js +397 -0
  274. package/dist/ga4-W3U5YTRT.js +55 -0
  275. package/dist/generate-KAWRRYTT.js +263 -0
  276. package/dist/get-237TYJZT.js +82 -0
  277. package/dist/get-3MTAVNTP.js +56 -0
  278. package/dist/get-5SPNAIUQ.js +62 -0
  279. package/dist/get-FWPR2YPC.js +62 -0
  280. package/dist/get-GEUSRD5Y.js +59 -0
  281. package/dist/get-JIZPYK3Z.js +74 -0
  282. package/dist/get-TS2ZJDCQ.js +38 -0
  283. package/dist/get-YWDZYEAC.js +92 -0
  284. package/dist/gif-NP6EDGEE.js +111 -0
  285. package/dist/google-DTSLO3PT.js +163 -0
  286. package/dist/google-JY7KDAFC.js +3300 -0
  287. package/dist/google-ads-RZOQQDQN.js +198 -0
  288. package/dist/group-3DT4UYSR.js +43 -0
  289. package/dist/group-OEKKCFXT.js +43 -0
  290. package/dist/gsc-4FEFPFPB.js +30 -0
  291. package/dist/history-H7S7XRBX.js +153 -0
  292. package/dist/history-XL52537O.js +102 -0
  293. package/dist/history-YQSYXBJH.js +69 -0
  294. package/dist/hubspot-2DSISSUI.js +814 -0
  295. package/dist/icon-43UJTGGE.js +138 -0
  296. package/dist/ideas-2XBFQJ56.js +45 -0
  297. package/dist/images-VFRQ32G5.js +92 -0
  298. package/dist/improve-IMXQN6OD.js +86 -0
  299. package/dist/ingest-4RPLN54K.js +28 -0
  300. package/dist/ingest-TPVH44VI.js +131 -0
  301. package/dist/insights-BR3456EI.js +658 -0
  302. package/dist/insights-UVCFOB3N.js +132 -0
  303. package/dist/inspect-VD3GVXDU.js +192 -0
  304. package/dist/inspiration-XZI5KCQW.js +53 -0
  305. package/dist/instant-experiences-2LKF7XVK.js +264 -0
  306. package/dist/intent-F5NTOSQC.js +95 -0
  307. package/dist/job-GOX3KIKG.js +202 -0
  308. package/dist/job-create-F2PQSN3C.js +109 -0
  309. package/dist/job-status-3FMA5D7T.js +74 -0
  310. package/dist/keep-23ZYMWPG.js +78 -0
  311. package/dist/keyword-gap-EB5QATYN.js +130 -0
  312. package/dist/keyword-metrics-PW2DDIJW.js +200 -0
  313. package/dist/keywords-for-site-JEPABY6E.js +131 -0
  314. package/dist/knowledge-7M7DSRF3.js +195 -0
  315. package/dist/landing-4N6YSB4L.js +28 -0
  316. package/dist/landings-VNQ4VA2U.js +151 -0
  317. package/dist/languages-2X22HXM3.js +55 -0
  318. package/dist/languages-4S26FJDP.js +40 -0
  319. package/dist/launches-L4EUROCJ.js +19 -0
  320. package/dist/layerize-6QHQMA7Q.js +190 -0
  321. package/dist/lead-routes-5TPFJEVH.js +733 -0
  322. package/dist/leads-4TLOH47R.js +541 -0
  323. package/dist/leads-R5OZJQHW.js +115 -0
  324. package/dist/learn-AQ2FRFB7.js +207 -0
  325. package/dist/library-MNJC24E4.js +212 -0
  326. package/dist/lighthouse-DJMAXFTD.js +75 -0
  327. package/dist/line-item-writes-LGO7HIJJ.js +211 -0
  328. package/dist/line-items-AAZVKQ7E.js +107 -0
  329. package/dist/link-7IGHVARH.js +67 -0
  330. package/dist/linkedin-UB2CW4KP.js +1344 -0
  331. package/dist/linkedin-person-D6U2ZAUW.js +139 -0
  332. package/dist/list-2277GCPH.js +51 -0
  333. package/dist/list-537S75BZ.js +76 -0
  334. package/dist/list-P44QRX2O.js +154 -0
  335. package/dist/list-Q52FPW3H.js +50 -0
  336. package/dist/list-UMJACDTQ.js +67 -0
  337. package/dist/list-V4PSDBLX.js +93 -0
  338. package/dist/list-VZKUHY4Y.js +306 -0
  339. package/dist/list-WIXQXNKB.js +65 -0
  340. package/dist/list-XK33NCSC.js +57 -0
  341. package/dist/locations-UWBQLHXW.js +40 -0
  342. package/dist/locations-WXGOI3VV.js +69 -0
  343. package/dist/log-6ZKMUTYS.js +95 -0
  344. package/dist/logo-4LSFZ3ZO.js +19 -0
  345. package/dist/lookup-WIM5WR25.js +23 -0
  346. package/dist/make-5CEIJRBC.js +1367 -0
  347. package/dist/map-ZL4MQVJZ.js +445 -0
  348. package/dist/mcp-GSRYLRD4.js +729 -0
  349. package/dist/media-34I7UB7Z.js +89 -0
  350. package/dist/media-KKI3KWLR.js +18 -0
  351. package/dist/media-sources-VSPVHLYN.js +35 -0
  352. package/dist/members-L6SXP6GC.js +47 -0
  353. package/dist/meme-6NFYFQ7T.js +108 -0
  354. package/dist/meta-2UK7KIE4.js +124 -0
  355. package/dist/metrics-4AFEEDVP.js +152 -0
  356. package/dist/models-2ZEM64H5.js +155 -0
  357. package/dist/normalize-G75RDSE4.js +806 -0
  358. package/dist/normalize-GK7DH7ZP.js +144 -0
  359. package/dist/options-FDAAHG7C.js +125 -0
  360. package/dist/organization-K2FTFAAO.js +949 -0
  361. package/dist/output-ELEO2Z6R.js +24 -0
  362. package/dist/page-4X6IBUWG.js +105 -0
  363. package/dist/page-photos-KNBLMFLN.js +118 -0
  364. package/dist/pages-7HW5YOZV.js +67 -0
  365. package/dist/performance-N3UROH7Z.js +5565 -0
  366. package/dist/performance-RG2HR46T.js +27 -0
  367. package/dist/pinterest-KA6VFDM4.js +105 -0
  368. package/dist/pixels-D5HF24FI.js +109 -0
  369. package/dist/pixels-HEI5WVAO.js +62 -0
  370. package/dist/plan-XCA6R3HZ.js +208 -0
  371. package/dist/posts-ALGM6ONV.js +36 -0
  372. package/dist/preview-55TRUF4Q.js +245 -0
  373. package/dist/preview-NVWIEUHF.js +101 -0
  374. package/dist/profile-NHUPUCBR.js +159 -0
  375. package/dist/promoted-tweet-writes-7QZRFDOM.js +183 -0
  376. package/dist/promoted-tweets-V555Y7DN.js +119 -0
  377. package/dist/properties-2ZXA5BPJ.js +101 -0
  378. package/dist/publish-5KR6YLA6.js +350 -0
  379. package/dist/query-63CTX2PH.js +231 -0
  380. package/dist/query-DMWY3TDD.js +236 -0
  381. package/dist/query-K7MYBRTS.js +62 -0
  382. package/dist/questionnaire-WHE42RD4.js +94 -0
  383. package/dist/read-NESEKULG.js +141 -0
  384. package/dist/reddit-XPQ7YAJW.js +29 -0
  385. package/dist/refresh-ILDEPU5A.js +42 -0
  386. package/dist/refresh-XFHEBSDU.js +97 -0
  387. package/dist/release-3ECEF26P.js +63 -0
  388. package/dist/relevant-pages-XYQKVX3U.js +99 -0
  389. package/dist/remove-NHE4UT7G.js +49 -0
  390. package/dist/remove-OCTUC3RB.js +53 -0
  391. package/dist/reopen-JRI3TYD4.js +66 -0
  392. package/dist/rerun-HWWYCDT2.js +97 -0
  393. package/dist/research-ODPU62BA.js +265 -0
  394. package/dist/research-TG5CBTYP.js +75 -0
  395. package/dist/reset-J2NLNITD.js +57 -0
  396. package/dist/reset-SRU7YJUR.js +57 -0
  397. package/dist/resolve-KHMMUGB2.js +124 -0
  398. package/dist/retry-VLH4AO7F.js +65 -0
  399. package/dist/retry-WP7LWKZF.js +63 -0
  400. package/dist/retry-failed-R5HPQ3KQ.js +45 -0
  401. package/dist/revenue-EEIS2AV5.js +91 -0
  402. package/dist/rule-writes-QB4IWFCJ.js +530 -0
  403. package/dist/rules-FYVD2QBB.js +217 -0
  404. package/dist/rules-TTUGQAEB.js +99 -0
  405. package/dist/rules-add-AIXUAZXG.js +465 -0
  406. package/dist/run-AQTACLY6.js +69 -0
  407. package/dist/run-YA6IWQAJ.js +72 -0
  408. package/dist/scaffold-ad-IYNFJPT7.js +1513 -0
  409. package/dist/scaffold-static-ad-SPYKSAJR.js +1012 -0
  410. package/dist/scaffold-video-BUN27PKS.js +885 -0
  411. package/dist/schedule-D7EDEM45.js +67 -0
  412. package/dist/schedule-EH2MOC5C.js +64 -0
  413. package/dist/scheduled-agents-DTAEP25E.js +55 -0
  414. package/dist/schema-7B4MVVAS.js +135 -0
  415. package/dist/schema-Z43AJOJ4.js +152 -0
  416. package/dist/scrape-VL2RWSTW.js +2209 -0
  417. package/dist/screenshot-Y6EEXS3Q.js +103 -0
  418. package/dist/search-CXC7N5XJ.js +51 -0
  419. package/dist/search-JEXYEAPQ.js +228 -0
  420. package/dist/search-L3GTZYRW.js +92 -0
  421. package/dist/search-TXBYKNQC.js +91 -0
  422. package/dist/search-XHSTUBDY.js +26 -0
  423. package/dist/search-ZZWIJRXJ.js +177 -0
  424. package/dist/search-copy-FIPG7OCC.js +168 -0
  425. package/dist/seeds-ADJKURNG.js +101 -0
  426. package/dist/select-LWZRF7KV.js +110 -0
  427. package/dist/sends-RS4LWRAC.js +349 -0
  428. package/dist/sequences-2RPKDKGQ.js +146 -0
  429. package/dist/set-prompt-YKDH6FYK.js +199 -0
  430. package/dist/setup-links-OE6PC2YQ.js +144 -0
  431. package/dist/shared-4GGUIOF2.js +32 -0
  432. package/dist/shopify-CCPLZI2H.js +4009 -0
  433. package/dist/site-FW5BBLYG.js +180 -0
  434. package/dist/sitemaps-Z6IELTQV.js +77 -0
  435. package/dist/sites-KLAKI2EY.js +97 -0
  436. package/dist/skills-OJP36EVR.js +47 -0
  437. package/dist/sources-WPHMWBEK.js +30 -0
  438. package/dist/sources-X77TGJ52.js +457 -0
  439. package/dist/stale-SPCDL73V.js +90 -0
  440. package/dist/stats-MIMFX4R7.js +34 -0
  441. package/dist/status-FLETGJ2A.js +65 -0
  442. package/dist/sticker-IREEEN7I.js +103 -0
  443. package/dist/stock-5AOSQH52.js +212 -0
  444. package/dist/studies-YGYAH3JI.js +250 -0
  445. package/dist/studio-4EV5S7PR.js +49 -0
  446. package/dist/study-writes-UPGJB36A.js +471 -0
  447. package/dist/suggest-5RTISDLI.js +66 -0
  448. package/dist/sync-363VKXU3.js +57 -0
  449. package/dist/sync-OHIXI4I6.js +55 -0
  450. package/dist/sync-VCAFAYW4.js +279 -0
  451. package/dist/sync-definition-ZDE5L644.js +70 -0
  452. package/dist/tag-DSCUKNC3.js +57 -0
  453. package/dist/tag-manager-IINALUEJ.js +43 -0
  454. package/dist/tags-6MN3AWKN.js +23 -0
  455. package/dist/tags-VOKUNEIW.js +227 -0
  456. package/dist/tags-Y6MNMIEA.js +23 -0
  457. package/dist/tags-YHAC3NVY.js +23 -0
  458. package/dist/tags-ZCQMJ5YH.js +26 -0
  459. package/dist/targeting-BM72UTI6.js +762 -0
  460. package/dist/targeting-constants-54S3FXIF.js +118 -0
  461. package/dist/targeting-criteria-ECQFHQF3.js +113 -0
  462. package/dist/targets-U2JHTB5U.js +106 -0
  463. package/dist/terms-OFHNLW6U.js +102 -0
  464. package/dist/testimonials-IDVLMXDT.js +32 -0
  465. package/dist/themes-QMR5TWTI.js +95 -0
  466. package/dist/top-companies-CBI4O3ZB.js +111 -0
  467. package/dist/transcript-IIRFTFRW.js +165 -0
  468. package/dist/translate-N6QW4FZB.js +603 -0
  469. package/dist/triggers-Q3KRAMA3.js +144 -0
  470. package/dist/tweets-TRTXC6O4.js +123 -0
  471. package/dist/unfollow-DATOGPLZ.js +46 -0
  472. package/dist/unlink-7RVQXKAR.js +70 -0
  473. package/dist/unstage-3LPHNZKR.js +88 -0
  474. package/dist/unstage-LLQCMZ5H.js +96 -0
  475. package/dist/update-AL3LBHGK.js +192 -0
  476. package/dist/update-AWR7EHGA.js +155 -0
  477. package/dist/update-LNSSLZXG.js +66 -0
  478. package/dist/update-SD5YQIJC.js +81 -0
  479. package/dist/update-YBTFH5MN.js +101 -0
  480. package/dist/upload-45GCGMA5.js +137 -0
  481. package/dist/upload-7PPMVWVA.js +155 -0
  482. package/dist/upscale-WVJZG76V.js +109 -0
  483. package/dist/url-options-AHJPR5VY.js +131 -0
  484. package/dist/url-params-U6ZM4LL2.js +101 -0
  485. package/dist/use-6FADOAFZ.js +111 -0
  486. package/dist/validate-S325RXPH.js +135 -0
  487. package/dist/validate-S325RXPH.js.map +1 -0
  488. package/dist/variant-RNM36P4J.js +338 -0
  489. package/dist/videos-GHFCOTT7.js +146 -0
  490. package/dist/videos-NW2UP342.js +41 -0
  491. package/dist/view-YR6MDLWL.js +133 -0
  492. package/dist/viewer-check-IDXFRRCO.js +83 -0
  493. package/dist/web-VMPKMBKA.js +173 -0
  494. package/dist/winners-4T5RFQXU.js +113 -0
  495. package/dist/winning-ads-7UJXCWFH.js +86 -0
  496. package/dist/write-commands-6D55SB56.js +206 -0
  497. package/dist/write-commands-AIWLEGO2.js +1169 -0
  498. package/dist/write-commands-R42DQEW6.js +1524 -0
  499. package/dist/write-commands-UO3OQIHH.js +721 -0
  500. package/dist/x-UGTUOCVR.js +47 -0
  501. package/package.json +1 -1
  502. package/dist/account-D2AGXMM3.js +0 -82
  503. package/dist/account-OCFXNHG7.js +0 -139
  504. package/dist/account-U6DFMD2V.js +0 -82
  505. package/dist/account-assets-W7K2PUYB.js +0 -290
  506. package/dist/account-level-Z2JEIJ3X.js +0 -611
  507. package/dist/account-reads-WPKD2LPB.js +0 -219
  508. package/dist/account-users-BK45DBUH.js +0 -64
  509. package/dist/account-writes-QSJ74QFR.js +0 -68
  510. package/dist/accounts-3DS67RX7.js +0 -119
  511. package/dist/accounts-55PDBEDN.js +0 -76
  512. package/dist/accounts-AK4QIG24.js +0 -115
  513. package/dist/accounts-FALANOYX.js +0 -80
  514. package/dist/accounts-VSJVFIPH.js +0 -713
  515. package/dist/actions-JIXQEVIN.js +0 -55
  516. package/dist/active-entities-HR7NJJLU.js +0 -103
  517. package/dist/activecampaign-4ST7BMHO.js +0 -938
  518. package/dist/activities-DEWHKBID.js +0 -75
  519. package/dist/ad-group-writes-QBHOPTT5.js +0 -172
  520. package/dist/ad-groups-JZDUFT6J.js +0 -70
  521. package/dist/ad-writes-QYJO4IB3.js +0 -176
  522. package/dist/add-IMKVYDQV.js +0 -85
  523. package/dist/add-NZ6SEWUR.js +0 -107
  524. package/dist/add-PZEVRQ7Z.js +0 -81
  525. package/dist/add-QXI627AS.js +0 -148
  526. package/dist/add-SPQ4MOCQ.js +0 -97
  527. package/dist/add-ZH5HJBUN.js +0 -305
  528. package/dist/add-accounts-D4V5K7SO.js +0 -91
  529. package/dist/ads-JYSYXF3U.js +0 -48
  530. package/dist/ads-QKVNPHBH.js +0 -120
  531. package/dist/ads-RTRWWEP5.js +0 -128
  532. package/dist/ads-UMSWEI5X.js +0 -79
  533. package/dist/adsets-FEVYHKAQ.js +0 -182
  534. package/dist/advertisers-2GKICB23.js +0 -125
  535. package/dist/advertisers-T37UHN3C.js +0 -123
  536. package/dist/analytics-7QSUKFXF.js +0 -2437
  537. package/dist/analytics-DR4DPUP4.js +0 -447
  538. package/dist/animate-WS63CZ3Y.js +0 -480
  539. package/dist/approved-3XFZNRJR.js +0 -73
  540. package/dist/asset-writes-7RFZZYU7.js +0 -50
  541. package/dist/assign-3CVJL35R.js +0 -80
  542. package/dist/audience-size-6CZ2AZCK.js +0 -76
  543. package/dist/audience-writes-RUGU6KEC.js +0 -327
  544. package/dist/audiences-6GVUZUCN.js +0 -106
  545. package/dist/audiences-7OS2ZJYO.js +0 -85
  546. package/dist/audiences-RSAUXKHR.js +0 -280
  547. package/dist/audit-4L7IKIRY.js +0 -88
  548. package/dist/audit-Q66O3Z46.js +0 -154
  549. package/dist/autocomplete-T642QXBX.js +0 -114
  550. package/dist/avatars-33UGHCQA.js +0 -38
  551. package/dist/bid-pricing-LUWEWGCJ.js +0 -103
  552. package/dist/brand-36YIAVGK.js +0 -22
  553. package/dist/brief-A5XFT6VH.js +0 -543
  554. package/dist/businesses-42NZP6FP.js +0 -54
  555. package/dist/campaign-groups-SZSO5B6C.js +0 -99
  556. package/dist/campaign-writes-AN4IHY5G.js +0 -168
  557. package/dist/campaign-writes-GKNH2EHV.js +0 -176
  558. package/dist/campaigns-7RV65SXR.js +0 -78
  559. package/dist/campaigns-RDHQNOTI.js +0 -111
  560. package/dist/campaigns-TO74Z7UH.js +0 -130
  561. package/dist/campaigns-VLVV2PPO.js +0 -113
  562. package/dist/canvas-D7L7R4D2.js +0 -46
  563. package/dist/capabilities-YC36LOZU.js +0 -147
  564. package/dist/cards-CAOGPPG4.js +0 -85
  565. package/dist/catalog-URTZYAPU.js +0 -66
  566. package/dist/catalogs-5LWEXG5X.js +0 -130
  567. package/dist/catalogs-7IEXGLSR.js +0 -782
  568. package/dist/changes-WWZYTLC6.js +0 -167
  569. package/dist/chatgpt-ZI4GWP6S.js +0 -47
  570. package/dist/chats-M3RP62YO.js +0 -584
  571. package/dist/check-FQYDJ5RS.js +0 -107
  572. package/dist/chunk-2DAWUWA4.js +0 -115
  573. package/dist/chunk-2JBPS2CV.js +0 -89
  574. package/dist/chunk-2LBQNTTH.js +0 -76
  575. package/dist/chunk-2N2R5YSN.js +0 -156
  576. package/dist/chunk-3E74OM2E.js +0 -288
  577. package/dist/chunk-3LYT3NQX.js +0 -42
  578. package/dist/chunk-45D6WRCJ.js +0 -476
  579. package/dist/chunk-4H6XLX7E.js +0 -97
  580. package/dist/chunk-4UNJ4ENA.js +0 -106
  581. package/dist/chunk-5E4Y6RVY.js +0 -56
  582. package/dist/chunk-5H6N36LS.js +0 -217
  583. package/dist/chunk-6E4KJMXO.js +0 -51
  584. package/dist/chunk-6IR7IQPV.js +0 -69
  585. package/dist/chunk-6PO3WSFJ.js +0 -97
  586. package/dist/chunk-6QINKM6T.js +0 -46
  587. package/dist/chunk-7CORYCEZ.js +0 -142
  588. package/dist/chunk-AC7WLPXF.js +0 -8954
  589. package/dist/chunk-AIK2HPDZ.js +0 -312
  590. package/dist/chunk-BESCYH3K.js +0 -125
  591. package/dist/chunk-BGMIO2FR.js +0 -64
  592. package/dist/chunk-C3EX5OKN.js +0 -188
  593. package/dist/chunk-CCYZJMZ7.js +0 -2522
  594. package/dist/chunk-CCYZJMZ7.js.map +0 -1
  595. package/dist/chunk-CDTAKCJR.js +0 -178
  596. package/dist/chunk-CI3QSB6G.js +0 -207
  597. package/dist/chunk-CORECUKT.js +0 -685
  598. package/dist/chunk-CP6RFWLW.js +0 -69
  599. package/dist/chunk-D3YAFC6K.js +0 -98
  600. package/dist/chunk-DEZBCK5P.js +0 -66
  601. package/dist/chunk-DLM5OSHM.js +0 -843
  602. package/dist/chunk-DWPOAU4Z.js +0 -5471
  603. package/dist/chunk-E3PYHCQL.js +0 -344
  604. package/dist/chunk-E56V3RFO.js +0 -75
  605. package/dist/chunk-EFTYCX5C.js +0 -46
  606. package/dist/chunk-EIDHLGQM.js +0 -249
  607. package/dist/chunk-EJBLF2LI.js +0 -167
  608. package/dist/chunk-EL3TDR5S.js +0 -1744
  609. package/dist/chunk-FGAXZ7ET.js +0 -23
  610. package/dist/chunk-FGTOOTYC.js +0 -91
  611. package/dist/chunk-FLQNIFG2.js +0 -84
  612. package/dist/chunk-FWHEAR7F.js +0 -138
  613. package/dist/chunk-G6U45QD3.js +0 -296
  614. package/dist/chunk-GDRJS2QJ.js +0 -197
  615. package/dist/chunk-GO6ISZUZ.js +0 -52
  616. package/dist/chunk-GUYFVYLY.js +0 -170
  617. package/dist/chunk-GWLP45WQ.js +0 -1518
  618. package/dist/chunk-H3HA22Z3.js +0 -1919
  619. package/dist/chunk-HBRXFQQV.js +0 -3510
  620. package/dist/chunk-HH5WM5VA.js +0 -430
  621. package/dist/chunk-HJ3Q4NOM.js +0 -58
  622. package/dist/chunk-IDDG4QKO.js +0 -39
  623. package/dist/chunk-IID2MAYZ.js +0 -91
  624. package/dist/chunk-ILGRC7LJ.js +0 -287
  625. package/dist/chunk-IWNLW7ZC.js +0 -139
  626. package/dist/chunk-JHS5PE5Y.js +0 -1246
  627. package/dist/chunk-JHS5PE5Y.js.map +0 -1
  628. package/dist/chunk-JIE45TKJ.js +0 -962
  629. package/dist/chunk-JTIWQLY5.js +0 -98
  630. package/dist/chunk-JWV7LUFM.js +0 -547
  631. package/dist/chunk-JXTNP3B5.js +0 -215
  632. package/dist/chunk-KDAINT54.js +0 -131
  633. package/dist/chunk-KDVYI4LC.js +0 -35
  634. package/dist/chunk-KH7AOX2R.js +0 -930
  635. package/dist/chunk-KJTMY7K6.js +0 -224
  636. package/dist/chunk-KNA3OWJC.js +0 -114
  637. package/dist/chunk-KZQQ6OLC.js +0 -169
  638. package/dist/chunk-L5GFFF5G.js +0 -604
  639. package/dist/chunk-LC6PVPJX.js +0 -76
  640. package/dist/chunk-MOKZ5XZO.js +0 -455
  641. package/dist/chunk-MXVP7Z54.js +0 -163
  642. package/dist/chunk-MYIOR35H.js +0 -225
  643. package/dist/chunk-N2TXADL7.js +0 -1320
  644. package/dist/chunk-N3PASNUA.js +0 -136
  645. package/dist/chunk-NTFNLVZG.js +0 -26
  646. package/dist/chunk-O3O7PXMK.js +0 -103
  647. package/dist/chunk-OASXBRXQ.js +0 -24026
  648. package/dist/chunk-OFMFBRSL.js +0 -25
  649. package/dist/chunk-ORQ3WBM6.js +0 -225
  650. package/dist/chunk-OSQTSS27.js +0 -74
  651. package/dist/chunk-OTRKBCUB.js +0 -219
  652. package/dist/chunk-PH3FZZIT.js +0 -544
  653. package/dist/chunk-Q5DFEVLE.js +0 -148
  654. package/dist/chunk-QEREDRZO.js +0 -246
  655. package/dist/chunk-R4RWQ6YX.js +0 -152
  656. package/dist/chunk-RBCO3C3Q.js +0 -324
  657. package/dist/chunk-RBCO3C3Q.js.map +0 -1
  658. package/dist/chunk-RJ2ETGAQ.js +0 -73
  659. package/dist/chunk-SIUYWLXB.js +0 -494
  660. package/dist/chunk-TPGFX47R.js +0 -709
  661. package/dist/chunk-TYFXPC5D.js +0 -1902
  662. package/dist/chunk-TYFXPC5D.js.map +0 -1
  663. package/dist/chunk-TZTHGLWN.js +0 -66
  664. package/dist/chunk-UJTIMPEE.js +0 -203
  665. package/dist/chunk-UKZKLXTE.js +0 -638
  666. package/dist/chunk-ULIQNJ5J.js +0 -274
  667. package/dist/chunk-UQZZM6UM.js +0 -831
  668. package/dist/chunk-UUXGSDUC.js +0 -297
  669. package/dist/chunk-UYZ4FUC7.js +0 -225
  670. package/dist/chunk-UZHDNE6M.js +0 -2209
  671. package/dist/chunk-UZHDNE6M.js.map +0 -1
  672. package/dist/chunk-VJ4IOJQZ.js +0 -19
  673. package/dist/chunk-WBWEKZQ2.js +0 -191
  674. package/dist/chunk-WR5Y64OE.js +0 -718
  675. package/dist/chunk-X3GWGFZP.js +0 -5368
  676. package/dist/chunk-X3YYZLBH.js +0 -285
  677. package/dist/chunk-X6U3B6YK.js +0 -343
  678. package/dist/chunk-XRUB4KRV.js +0 -191
  679. package/dist/chunk-XRUB4KRV.js.map +0 -1
  680. package/dist/chunk-XZAVBONI.js +0 -64
  681. package/dist/chunk-Y5PNLB24.js +0 -84
  682. package/dist/chunk-Y6XWO4V4.js +0 -111
  683. package/dist/chunk-YB6G3B3L.js +0 -45
  684. package/dist/chunk-YD6OZSSY.js +0 -106
  685. package/dist/chunk-YVFHDZ3K.js +0 -399
  686. package/dist/chunk-ZQ7JDYJB.js +0 -454
  687. package/dist/chunk-ZZ5B2ZRM.js +0 -94
  688. package/dist/cite-AJ5ZQWD2.js +0 -191
  689. package/dist/claim-CG3J32WS.js +0 -200
  690. package/dist/client-F6KOC77S.js +0 -19
  691. package/dist/code-NV4ARLFS.js +0 -76
  692. package/dist/companies-X6O55ACG.js +0 -198
  693. package/dist/company-4CD2OJLB.js +0 -308
  694. package/dist/complete-JSP6VQYI.js +0 -84
  695. package/dist/config-NDL2YP37.js +0 -88
  696. package/dist/connect-O5NRDY4Y.js +0 -45
  697. package/dist/content-EQZKKIST.js +0 -85
  698. package/dist/conversation-J22BH6O5.js +0 -96
  699. package/dist/conversion-report-76S5JOVT.js +0 -127
  700. package/dist/conversion-upload-command-5OILW65U.js +0 -439
  701. package/dist/conversion-writes-6HX665JT.js +0 -122
  702. package/dist/conversions-I2ZOQHKJ.js +0 -140
  703. package/dist/conversions-QZJRF4WN.js +0 -78
  704. package/dist/copy-writes-X2LM5I4Z.js +0 -170
  705. package/dist/countries-GZSBGSVT.js +0 -82
  706. package/dist/create-DQ5X5AJT.js +0 -62
  707. package/dist/create-FNPFVKLT.js +0 -239
  708. package/dist/create-GXOFZCR5.js +0 -135
  709. package/dist/create-VAZ65QNJ.js +0 -218
  710. package/dist/creatives-4G2V4J6N.js +0 -229
  711. package/dist/creatives-QWNQDPNE.js +0 -58
  712. package/dist/creatives-SFPNXJ6Z.js +0 -118
  713. package/dist/credentials-VCERJE24.js +0 -290
  714. package/dist/critique-62QFBC33.js +0 -1451
  715. package/dist/critique-MSL6EU5V.js +0 -232
  716. package/dist/crm-HODCOAAI.js +0 -229
  717. package/dist/crm-J3SCOR4L.js +0 -323
  718. package/dist/crop-4V4P3SKI.js +0 -113
  719. package/dist/currency-BZUNQ4XJ.js +0 -88
  720. package/dist/custom-conversions-UHRBVUD2.js +0 -128
  721. package/dist/customers-EYVTYCGY.js +0 -65
  722. package/dist/decide-AM6B7WIL.js +0 -199
  723. package/dist/delete-46B7DSQV.js +0 -71
  724. package/dist/delete-7A6T6XBD.js +0 -69
  725. package/dist/delete-I3W3M6T7.js +0 -67
  726. package/dist/delete-RZCW3Y6L.js +0 -57
  727. package/dist/delete-WAPC4XC2.js +0 -69
  728. package/dist/delete-YYIM564B.js +0 -85
  729. package/dist/demographics-OFBRSF7A.js +0 -141
  730. package/dist/describe-5OC7XX2U.js +0 -97
  731. package/dist/describe-EAPKNUUU.js +0 -97
  732. package/dist/dimensions-KI3OENZD.js +0 -101
  733. package/dist/discard-I773LYVR.js +0 -69
  734. package/dist/discover-P7PBB3IV.js +0 -93
  735. package/dist/discover-PDSEJR2P.js +0 -172
  736. package/dist/domain-7YO5HYHU.js +0 -101
  737. package/dist/download-IYK3UVBF.js +0 -172
  738. package/dist/download-YB2DVMRS.js +0 -337
  739. package/dist/draft-2Z7EGKBO.js +0 -220
  740. package/dist/draft-44KTLX4P.js +0 -134
  741. package/dist/draft-6MWXURYC.js +0 -374
  742. package/dist/draft-CKFSZDVI.js +0 -260
  743. package/dist/draft-PCXWAA2Y.js +0 -578
  744. package/dist/draft-QN5XXOS6.js +0 -332
  745. package/dist/draft-RSKZSUOS.js +0 -138
  746. package/dist/draft-WOE7KQ7T.js +0 -315
  747. package/dist/env-2RHPS2VF.js +0 -53
  748. package/dist/experiment-AZUKJ7ZO.js +0 -1397
  749. package/dist/experiments-2DX4K3AQ.js +0 -236
  750. package/dist/export-RPNRPTDK.js +0 -168
  751. package/dist/extract-ZIW5JFTY.js +0 -143
  752. package/dist/facets-OLRASLT7.js +0 -117
  753. package/dist/favorites-536I3GZD.js +0 -178
  754. package/dist/feed-W3ECHUEX.js +0 -177
  755. package/dist/feedback-2YJ24NV7.js +0 -115
  756. package/dist/feedback-X3GLQ2QF.js +0 -114
  757. package/dist/feedback-record-A5JLS3QY.js +0 -269
  758. package/dist/fetch-6XMRKLYH.js +0 -204
  759. package/dist/fetch-KB64NPDF.js +0 -139
  760. package/dist/find-UGFONLSD.js +0 -144
  761. package/dist/fit-BRJSLR7P.js +0 -65
  762. package/dist/flows-LXJHL3KW.js +0 -340
  763. package/dist/follow-5VX5JWAQ.js +0 -94
  764. package/dist/follow-competitors-D7I33T5C.js +0 -112
  765. package/dist/following-6DI4IZ7P.js +0 -113
  766. package/dist/fonts-UUSCLUHW.js +0 -39
  767. package/dist/forecast-3KMAJJWJ.js +0 -169
  768. package/dist/forecast-7DZGLC7Y.js +0 -121
  769. package/dist/funding-BSAHWU35.js +0 -85
  770. package/dist/funnel-2ALYZ3GP.js +0 -397
  771. package/dist/ga4-YVKA3V4V.js +0 -55
  772. package/dist/generate-VGGXTZBP.js +0 -263
  773. package/dist/get-42V7UTNF.js +0 -59
  774. package/dist/get-5SCYUC4G.js +0 -38
  775. package/dist/get-BQBLPGFE.js +0 -74
  776. package/dist/get-JHOH74X5.js +0 -56
  777. package/dist/get-KVZSVN7U.js +0 -62
  778. package/dist/get-OZ7THI2W.js +0 -82
  779. package/dist/get-TBMTBGHJ.js +0 -62
  780. package/dist/get-V4NJXKUR.js +0 -92
  781. package/dist/gif-M2GMVWM4.js +0 -111
  782. package/dist/google-5U5KXEX7.js +0 -163
  783. package/dist/google-RTDPHVLU.js +0 -3300
  784. package/dist/google-ads-YZTK3YTW.js +0 -198
  785. package/dist/group-PLTVV7UZ.js +0 -43
  786. package/dist/group-THZPJALS.js +0 -43
  787. package/dist/gsc-OJDMSP6H.js +0 -30
  788. package/dist/history-LXRFZNW7.js +0 -69
  789. package/dist/history-RYTNMGU5.js +0 -153
  790. package/dist/history-XDYDNQWK.js +0 -102
  791. package/dist/hubspot-MRUCRJLL.js +0 -814
  792. package/dist/icon-THWS5VPO.js +0 -138
  793. package/dist/ideas-TT24LJR5.js +0 -45
  794. package/dist/images-PLYPUXM2.js +0 -92
  795. package/dist/improve-NWFQI63B.js +0 -86
  796. package/dist/ingest-CSPC3RUK.js +0 -131
  797. package/dist/ingest-MSPQX3Z6.js +0 -28
  798. package/dist/insights-H6M6VI43.js +0 -132
  799. package/dist/insights-LZJZGNJZ.js +0 -658
  800. package/dist/inspect-VD6CB2NA.js +0 -192
  801. package/dist/inspiration-FPB3IB7X.js +0 -53
  802. package/dist/instant-experiences-J4GSS3Y6.js +0 -264
  803. package/dist/intent-HXRSLFIO.js +0 -95
  804. package/dist/job-UFGGBDG7.js +0 -202
  805. package/dist/job-create-XM4NH322.js +0 -109
  806. package/dist/job-status-47L5Z57J.js +0 -74
  807. package/dist/keep-I6FLGJH4.js +0 -78
  808. package/dist/keyword-gap-WUHMSTNR.js +0 -130
  809. package/dist/keyword-metrics-NJV3WR75.js +0 -200
  810. package/dist/keywords-for-site-B7MUDHFH.js +0 -131
  811. package/dist/knowledge-H5PJ6LZB.js +0 -195
  812. package/dist/landing-RKOEVY7L.js +0 -28
  813. package/dist/landings-AELJXEYN.js +0 -151
  814. package/dist/languages-GCRI2PI3.js +0 -55
  815. package/dist/languages-SVTYYYOC.js +0 -40
  816. package/dist/launches-CKPZFVMQ.js +0 -19
  817. package/dist/layerize-PHY25VNC.js +0 -190
  818. package/dist/lead-routes-ZMKRNL57.js +0 -733
  819. package/dist/leads-HFB5UXZJ.js +0 -115
  820. package/dist/leads-SEEJ3KRR.js +0 -541
  821. package/dist/learn-XNN3DGDF.js +0 -207
  822. package/dist/library-5YJCCEFL.js +0 -212
  823. package/dist/lighthouse-W3KAVW2G.js +0 -75
  824. package/dist/line-item-writes-VEJ5Y6X4.js +0 -211
  825. package/dist/line-items-U6L2TMPG.js +0 -107
  826. package/dist/link-ENZQAISO.js +0 -67
  827. package/dist/linkedin-SY2WZWKP.js +0 -1344
  828. package/dist/linkedin-person-3RCX4MI3.js +0 -139
  829. package/dist/list-2EJ3XZ6I.js +0 -93
  830. package/dist/list-AF522LRC.js +0 -67
  831. package/dist/list-BQWHFEWY.js +0 -65
  832. package/dist/list-E7JG27WS.js +0 -50
  833. package/dist/list-ERCPPED6.js +0 -76
  834. package/dist/list-GPTYUCSX.js +0 -154
  835. package/dist/list-HYZL4576.js +0 -57
  836. package/dist/list-IKQFAJP7.js +0 -51
  837. package/dist/list-VYTHVUDP.js +0 -306
  838. package/dist/locations-5SLLGWZO.js +0 -69
  839. package/dist/locations-7EBZ6KRH.js +0 -40
  840. package/dist/log-NJR3FJWN.js +0 -95
  841. package/dist/logo-ZSSR66WS.js +0 -19
  842. package/dist/lookup-OU6CLATK.js +0 -23
  843. package/dist/make-4XUB6RSF.js +0 -1367
  844. package/dist/map-LIYQCWXU.js +0 -445
  845. package/dist/mcp-QDOAKB3A.js +0 -729
  846. package/dist/media-DGV2AMZI.js +0 -89
  847. package/dist/media-YKCCMLXL.js +0 -18
  848. package/dist/media-sources-LFSDIPUB.js +0 -35
  849. package/dist/members-KGKQQFMN.js +0 -47
  850. package/dist/meme-3QYKC4BF.js +0 -108
  851. package/dist/meta-5TRG7RTQ.js +0 -124
  852. package/dist/metrics-WRERNMRK.js +0 -152
  853. package/dist/models-SITHUNAA.js +0 -155
  854. package/dist/normalize-DQPKM3MG.js +0 -144
  855. package/dist/normalize-M3VMWF4W.js +0 -806
  856. package/dist/options-XIH7YPEG.js +0 -125
  857. package/dist/organization-BUSXIGA4.js +0 -949
  858. package/dist/output-7X5WPPCA.js +0 -24
  859. package/dist/page-GBLVAKU3.js +0 -105
  860. package/dist/page-photos-VYJU4RNQ.js +0 -118
  861. package/dist/pages-6YMPZDEY.js +0 -67
  862. package/dist/performance-PU4NHFUE.js +0 -27
  863. package/dist/performance-Y2DTYSFV.js +0 -5565
  864. package/dist/pinterest-235S7E6H.js +0 -105
  865. package/dist/pixels-DZDVNIVL.js +0 -109
  866. package/dist/pixels-WTTLC4O5.js +0 -62
  867. package/dist/plan-JAWESWJN.js +0 -208
  868. package/dist/posts-F327IP23.js +0 -36
  869. package/dist/preview-3UOBVP6M.js +0 -101
  870. package/dist/preview-JZXGR4KN.js +0 -245
  871. package/dist/profile-MKKJT2UF.js +0 -159
  872. package/dist/promoted-tweet-writes-6Y4MDPBH.js +0 -183
  873. package/dist/promoted-tweets-JAR2W6KC.js +0 -119
  874. package/dist/properties-Z5S3LRJ5.js +0 -101
  875. package/dist/publish-MDVPC77V.js +0 -350
  876. package/dist/query-3QFT42PG.js +0 -62
  877. package/dist/query-KKXCMH3Q.js +0 -236
  878. package/dist/query-QXKGVHZL.js +0 -231
  879. package/dist/questionnaire-U7UYICEA.js +0 -94
  880. package/dist/read-ENUS7P3L.js +0 -141
  881. package/dist/reddit-ZPKVVZGP.js +0 -29
  882. package/dist/refresh-JSCYTM4B.js +0 -42
  883. package/dist/refresh-V34YWN3W.js +0 -97
  884. package/dist/release-WRNUOSHB.js +0 -63
  885. package/dist/relevant-pages-OFKZYWR3.js +0 -99
  886. package/dist/remove-6FXTPEB6.js +0 -49
  887. package/dist/remove-HKWV7P27.js +0 -53
  888. package/dist/reopen-VHHYVAKC.js +0 -66
  889. package/dist/rerun-THE43RCG.js +0 -97
  890. package/dist/research-773Y7GT4.js +0 -75
  891. package/dist/research-G5A2WXVK.js +0 -265
  892. package/dist/reset-GFJ3AKF5.js +0 -57
  893. package/dist/reset-MVTWA3HT.js +0 -57
  894. package/dist/resolve-JRSSTIAF.js +0 -124
  895. package/dist/retry-AGHA6IVT.js +0 -65
  896. package/dist/retry-LDJ6FZCZ.js +0 -63
  897. package/dist/retry-failed-FCS6PNUZ.js +0 -45
  898. package/dist/revenue-Q2JK5VY6.js +0 -91
  899. package/dist/rule-writes-WT6DQZZE.js +0 -530
  900. package/dist/rules-4A25K2P7.js +0 -99
  901. package/dist/rules-Y75KR2PC.js +0 -217
  902. package/dist/rules-add-GT7NCUB3.js +0 -465
  903. package/dist/run-NFLKYVIC.js +0 -72
  904. package/dist/run-ZLHQNLCF.js +0 -69
  905. package/dist/scaffold-ad-AJN67FWG.js +0 -1513
  906. package/dist/scaffold-static-ad-L6KXZ3TN.js +0 -1012
  907. package/dist/scaffold-video-XQBZZ5TZ.js +0 -885
  908. package/dist/schedule-45CJDHIX.js +0 -64
  909. package/dist/schedule-XFEPEQTN.js +0 -67
  910. package/dist/scheduled-agents-72MWHK63.js +0 -55
  911. package/dist/schema-L4PETLZT.js +0 -152
  912. package/dist/schema-VX66FH4O.js +0 -135
  913. package/dist/scrape-D3XGARHR.js +0 -2209
  914. package/dist/screenshot-5LWUP5VN.js +0 -103
  915. package/dist/search-4DBP6EH5.js +0 -92
  916. package/dist/search-HNRANK6H.js +0 -51
  917. package/dist/search-KGE3BSSH.js +0 -228
  918. package/dist/search-O3AOWEXC.js +0 -26
  919. package/dist/search-QQDR74KQ.js +0 -91
  920. package/dist/search-Y6TS5UZS.js +0 -177
  921. package/dist/search-copy-EB3TONDS.js +0 -168
  922. package/dist/seeds-RGIFHHYC.js +0 -101
  923. package/dist/select-MZ2U7U5U.js +0 -110
  924. package/dist/sends-4ZO6BNZ4.js +0 -349
  925. package/dist/sequences-SSLZ3XTP.js +0 -146
  926. package/dist/set-prompt-YH6PXNXB.js +0 -199
  927. package/dist/setup-links-Y4YYDQBK.js +0 -144
  928. package/dist/shared-UPMEBTVP.js +0 -32
  929. package/dist/shopify-HGFUHYT7.js +0 -4009
  930. package/dist/site-WZ654OP3.js +0 -180
  931. package/dist/sitemaps-P3K5Z4TW.js +0 -77
  932. package/dist/sites-TURWC53D.js +0 -97
  933. package/dist/skills-PDHUHP2T.js +0 -47
  934. package/dist/sources-7ZFY3VEZ.js +0 -457
  935. package/dist/sources-FCBFLR2J.js +0 -30
  936. package/dist/stale-VSSDVB4H.js +0 -90
  937. package/dist/stats-XNKAJD2Z.js +0 -34
  938. package/dist/status-L7LYUD3F.js +0 -65
  939. package/dist/sticker-MWICUYQM.js +0 -103
  940. package/dist/stock-73PLAUYU.js +0 -212
  941. package/dist/studies-5G67ODR2.js +0 -250
  942. package/dist/studio-D2OMFCZZ.js +0 -49
  943. package/dist/study-writes-34BJFZAZ.js +0 -471
  944. package/dist/suggest-KCN2NDYE.js +0 -66
  945. package/dist/sync-QVEUQKU5.js +0 -279
  946. package/dist/sync-TANGFXUN.js +0 -55
  947. package/dist/sync-XBC3PSSV.js +0 -57
  948. package/dist/sync-definition-IM2NY5QC.js +0 -70
  949. package/dist/tag-NKAHDL35.js +0 -57
  950. package/dist/tag-manager-3GIW6BPB.js +0 -43
  951. package/dist/tags-2KNOJ7A6.js +0 -26
  952. package/dist/tags-COALQ2CT.js +0 -23
  953. package/dist/tags-HCJTTLSR.js +0 -227
  954. package/dist/tags-MVC56SHA.js +0 -23
  955. package/dist/tags-UNUZVGUA.js +0 -23
  956. package/dist/targeting-TVZPIUUI.js +0 -762
  957. package/dist/targeting-constants-RJS2STR5.js +0 -118
  958. package/dist/targeting-criteria-SMBIEM7U.js +0 -113
  959. package/dist/targets-BNH37YAQ.js +0 -106
  960. package/dist/terms-AATAGKPT.js +0 -102
  961. package/dist/testimonials-IIAT5IDM.js +0 -32
  962. package/dist/themes-5HKRO5RR.js +0 -95
  963. package/dist/top-companies-PY2NL2GS.js +0 -111
  964. package/dist/transcript-7WFXVRVW.js +0 -165
  965. package/dist/translate-IPTYPZF6.js +0 -603
  966. package/dist/triggers-RBD2XGNG.js +0 -144
  967. package/dist/tweets-MLDLLLDB.js +0 -123
  968. package/dist/unfollow-OEMFPAFS.js +0 -46
  969. package/dist/unlink-5IMEUVIS.js +0 -70
  970. package/dist/unstage-65DUBYNZ.js +0 -96
  971. package/dist/unstage-DSOVSWEK.js +0 -88
  972. package/dist/update-7JVV5ZL3.js +0 -66
  973. package/dist/update-CADTFTYC.js +0 -81
  974. package/dist/update-FIU2ECYQ.js +0 -192
  975. package/dist/update-HSS6CVUK.js +0 -101
  976. package/dist/update-XWL3Q5QY.js +0 -155
  977. package/dist/upload-B5SM33MK.js +0 -137
  978. package/dist/upload-GXS5CTOR.js +0 -155
  979. package/dist/upscale-BCI42TCP.js +0 -109
  980. package/dist/url-options-4J3FRXHO.js +0 -131
  981. package/dist/url-params-TGCGWKAJ.js +0 -101
  982. package/dist/use-26VARHJT.js +0 -111
  983. package/dist/validate-4NXKYAL2.js +0 -125
  984. package/dist/validate-4NXKYAL2.js.map +0 -1
  985. package/dist/variant-F4EEYQJ7.js +0 -338
  986. package/dist/videos-FMV4AVB2.js +0 -41
  987. package/dist/videos-NITQKILV.js +0 -146
  988. package/dist/view-X65GETAV.js +0 -133
  989. package/dist/viewer-check-2W6BTVQV.js +0 -83
  990. package/dist/web-K2EMYVCD.js +0 -173
  991. package/dist/winners-5PRDG7GT.js +0 -113
  992. package/dist/winning-ads-Q3RXH7EC.js +0 -86
  993. package/dist/write-commands-OBQPQUIE.js +0 -721
  994. package/dist/write-commands-SIOVTRHH.js +0 -1169
  995. package/dist/write-commands-VQPEHKH7.js +0 -1524
  996. package/dist/write-commands-XLZCRVTU.js +0 -206
  997. package/dist/x-PW43O6JS.js +0 -47
  998. /package/dist/{account-U6DFMD2V.js.map → account-52WDLW4Z.js.map} +0 -0
  999. /package/dist/{account-D2AGXMM3.js.map → account-7KZ7MHMN.js.map} +0 -0
  1000. /package/dist/{account-OCFXNHG7.js.map → account-NSBALYYS.js.map} +0 -0
  1001. /package/dist/{account-assets-W7K2PUYB.js.map → account-assets-EPEYTJFD.js.map} +0 -0
  1002. /package/dist/{account-level-Z2JEIJ3X.js.map → account-level-VD4NLB2D.js.map} +0 -0
  1003. /package/dist/{account-reads-WPKD2LPB.js.map → account-reads-RXF37O4N.js.map} +0 -0
  1004. /package/dist/{account-users-BK45DBUH.js.map → account-users-NUI3ILRE.js.map} +0 -0
  1005. /package/dist/{account-writes-QSJ74QFR.js.map → account-writes-3BJSUM2V.js.map} +0 -0
  1006. /package/dist/{accounts-55PDBEDN.js.map → accounts-A47QUTTB.js.map} +0 -0
  1007. /package/dist/{accounts-AK4QIG24.js.map → accounts-E5TF2AFI.js.map} +0 -0
  1008. /package/dist/{accounts-VSJVFIPH.js.map → accounts-FLKNFDIE.js.map} +0 -0
  1009. /package/dist/{accounts-FALANOYX.js.map → accounts-I2ZLR76R.js.map} +0 -0
  1010. /package/dist/{accounts-3DS67RX7.js.map → accounts-ZV4IXOF5.js.map} +0 -0
  1011. /package/dist/{actions-JIXQEVIN.js.map → actions-IR47GVZ6.js.map} +0 -0
  1012. /package/dist/{active-entities-HR7NJJLU.js.map → active-entities-XRSJNBOV.js.map} +0 -0
  1013. /package/dist/{activecampaign-4ST7BMHO.js.map → activecampaign-MNJYIWJL.js.map} +0 -0
  1014. /package/dist/{activities-DEWHKBID.js.map → activities-ZDWREYR7.js.map} +0 -0
  1015. /package/dist/{ad-group-writes-QBHOPTT5.js.map → ad-group-writes-KU4QMQZP.js.map} +0 -0
  1016. /package/dist/{ad-groups-JZDUFT6J.js.map → ad-groups-NMW2G32A.js.map} +0 -0
  1017. /package/dist/{ad-writes-QYJO4IB3.js.map → ad-writes-7NOFTOM4.js.map} +0 -0
  1018. /package/dist/{add-IMKVYDQV.js.map → add-25YZMFSH.js.map} +0 -0
  1019. /package/dist/{add-NZ6SEWUR.js.map → add-4I25INAO.js.map} +0 -0
  1020. /package/dist/{add-PZEVRQ7Z.js.map → add-7MAL7JRX.js.map} +0 -0
  1021. /package/dist/{add-QXI627AS.js.map → add-D44VCDRU.js.map} +0 -0
  1022. /package/dist/{add-SPQ4MOCQ.js.map → add-JO4ZPS23.js.map} +0 -0
  1023. /package/dist/{add-ZH5HJBUN.js.map → add-QMTD6EGI.js.map} +0 -0
  1024. /package/dist/{add-accounts-D4V5K7SO.js.map → add-accounts-EKMSHAA4.js.map} +0 -0
  1025. /package/dist/{ads-RTRWWEP5.js.map → ads-4YZYNU66.js.map} +0 -0
  1026. /package/dist/{ads-JYSYXF3U.js.map → ads-BT2DF3XN.js.map} +0 -0
  1027. /package/dist/{ads-QKVNPHBH.js.map → ads-DGL5SGP3.js.map} +0 -0
  1028. /package/dist/{ads-UMSWEI5X.js.map → ads-P4Z3MLKS.js.map} +0 -0
  1029. /package/dist/{adsets-FEVYHKAQ.js.map → adsets-PSVCPCE3.js.map} +0 -0
  1030. /package/dist/{advertisers-2GKICB23.js.map → advertisers-7NAPI5ZU.js.map} +0 -0
  1031. /package/dist/{advertisers-T37UHN3C.js.map → advertisers-LOIXTTGP.js.map} +0 -0
  1032. /package/dist/{analytics-DR4DPUP4.js.map → analytics-6AHC3J4L.js.map} +0 -0
  1033. /package/dist/{analytics-7QSUKFXF.js.map → analytics-NL2KGDLK.js.map} +0 -0
  1034. /package/dist/{animate-WS63CZ3Y.js.map → animate-VX7E7KJE.js.map} +0 -0
  1035. /package/dist/{approved-3XFZNRJR.js.map → approved-E4EZA5RT.js.map} +0 -0
  1036. /package/dist/{asset-writes-7RFZZYU7.js.map → asset-writes-NDSHY5OT.js.map} +0 -0
  1037. /package/dist/{assign-3CVJL35R.js.map → assign-NKHIHVGI.js.map} +0 -0
  1038. /package/dist/{audience-size-6CZ2AZCK.js.map → audience-size-WEOM6XIL.js.map} +0 -0
  1039. /package/dist/{audience-writes-RUGU6KEC.js.map → audience-writes-4KQXVGHO.js.map} +0 -0
  1040. /package/dist/{audiences-RSAUXKHR.js.map → audiences-P3SPTAJT.js.map} +0 -0
  1041. /package/dist/{audiences-7OS2ZJYO.js.map → audiences-T5LMTT3B.js.map} +0 -0
  1042. /package/dist/{audiences-6GVUZUCN.js.map → audiences-UHLVATR6.js.map} +0 -0
  1043. /package/dist/{audit-4L7IKIRY.js.map → audit-46DO2HV3.js.map} +0 -0
  1044. /package/dist/{audit-Q66O3Z46.js.map → audit-4RIBJ7BR.js.map} +0 -0
  1045. /package/dist/{autocomplete-T642QXBX.js.map → autocomplete-FMTJDXTL.js.map} +0 -0
  1046. /package/dist/{avatars-33UGHCQA.js.map → avatars-LY5SFMWO.js.map} +0 -0
  1047. /package/dist/{bid-pricing-LUWEWGCJ.js.map → bid-pricing-MQ7WLV5U.js.map} +0 -0
  1048. /package/dist/{brand-36YIAVGK.js.map → brand-LR5IXW3W.js.map} +0 -0
  1049. /package/dist/{brief-A5XFT6VH.js.map → brief-4DSXIX3F.js.map} +0 -0
  1050. /package/dist/{businesses-42NZP6FP.js.map → businesses-TRFYMZ4I.js.map} +0 -0
  1051. /package/dist/{campaign-groups-SZSO5B6C.js.map → campaign-groups-EZYLKMO2.js.map} +0 -0
  1052. /package/dist/{campaign-writes-GKNH2EHV.js.map → campaign-writes-P5XPFTRK.js.map} +0 -0
  1053. /package/dist/{campaign-writes-AN4IHY5G.js.map → campaign-writes-UMENYMKO.js.map} +0 -0
  1054. /package/dist/{campaigns-TO74Z7UH.js.map → campaigns-2MTON2IE.js.map} +0 -0
  1055. /package/dist/{campaigns-VLVV2PPO.js.map → campaigns-PP2DQMJE.js.map} +0 -0
  1056. /package/dist/{campaigns-7RV65SXR.js.map → campaigns-SWZJVE2T.js.map} +0 -0
  1057. /package/dist/{campaigns-RDHQNOTI.js.map → campaigns-TAFDM242.js.map} +0 -0
  1058. /package/dist/{canvas-D7L7R4D2.js.map → canvas-RKR3ZB4E.js.map} +0 -0
  1059. /package/dist/{capabilities-YC36LOZU.js.map → capabilities-45RZ6E6W.js.map} +0 -0
  1060. /package/dist/{cards-CAOGPPG4.js.map → cards-CXKIVM4D.js.map} +0 -0
  1061. /package/dist/{catalog-URTZYAPU.js.map → catalog-TOHUVBEU.js.map} +0 -0
  1062. /package/dist/{catalogs-7IEXGLSR.js.map → catalogs-4DNLG4AM.js.map} +0 -0
  1063. /package/dist/{catalogs-5LWEXG5X.js.map → catalogs-V7PTEJBO.js.map} +0 -0
  1064. /package/dist/{changes-WWZYTLC6.js.map → changes-5OW3UYMF.js.map} +0 -0
  1065. /package/dist/{chatgpt-ZI4GWP6S.js.map → chatgpt-JBMYNVJB.js.map} +0 -0
  1066. /package/dist/{chats-M3RP62YO.js.map → chats-VOLBYA3R.js.map} +0 -0
  1067. /package/dist/{check-FQYDJ5RS.js.map → check-4DI73QX4.js.map} +0 -0
  1068. /package/dist/{chunk-UYZ4FUC7.js.map → chunk-2CC4CPDT.js.map} +0 -0
  1069. /package/dist/{chunk-X3GWGFZP.js.map → chunk-2N7TB346.js.map} +0 -0
  1070. /package/dist/{chunk-ZQ7JDYJB.js.map → chunk-2YXTXSYG.js.map} +0 -0
  1071. /package/dist/{chunk-IID2MAYZ.js.map → chunk-2Z6PFHD2.js.map} +0 -0
  1072. /package/dist/{chunk-YD6OZSSY.js.map → chunk-3GXHML4V.js.map} +0 -0
  1073. /package/dist/{chunk-BESCYH3K.js.map → chunk-3QPG2D27.js.map} +0 -0
  1074. /package/dist/{chunk-ZZ5B2ZRM.js.map → chunk-3WN5GWX4.js.map} +0 -0
  1075. /package/dist/{chunk-DLM5OSHM.js.map → chunk-47VWQ7FQ.js.map} +0 -0
  1076. /package/dist/{chunk-RJ2ETGAQ.js.map → chunk-4AO3LSYM.js.map} +0 -0
  1077. /package/dist/{chunk-5H6N36LS.js.map → chunk-4HFM5RCP.js.map} +0 -0
  1078. /package/dist/{chunk-MOKZ5XZO.js.map → chunk-4QFMRL6O.js.map} +0 -0
  1079. /package/dist/{chunk-KH7AOX2R.js.map → chunk-5OC6VUDZ.js.map} +0 -0
  1080. /package/dist/{chunk-4UNJ4ENA.js.map → chunk-5QNW5PCM.js.map} +0 -0
  1081. /package/dist/{chunk-EIDHLGQM.js.map → chunk-5VXEH72O.js.map} +0 -0
  1082. /package/dist/{chunk-KNA3OWJC.js.map → chunk-6AMN346B.js.map} +0 -0
  1083. /package/dist/{chunk-WBWEKZQ2.js.map → chunk-6EOWBGGW.js.map} +0 -0
  1084. /package/dist/{chunk-OFMFBRSL.js.map → chunk-6MJKVNLL.js.map} +0 -0
  1085. /package/dist/{chunk-6PO3WSFJ.js.map → chunk-7NBQQOCU.js.map} +0 -0
  1086. /package/dist/{chunk-FWHEAR7F.js.map → chunk-AQRBEPZL.js.map} +0 -0
  1087. /package/dist/{chunk-BGMIO2FR.js.map → chunk-AZIXX73C.js.map} +0 -0
  1088. /package/dist/{chunk-45D6WRCJ.js.map → chunk-B64KJW5C.js.map} +0 -0
  1089. /package/dist/{chunk-GWLP45WQ.js.map → chunk-BFAPSFS7.js.map} +0 -0
  1090. /package/dist/{chunk-4H6XLX7E.js.map → chunk-BIBXZJZI.js.map} +0 -0
  1091. /package/dist/{chunk-UKZKLXTE.js.map → chunk-BNEWJXKU.js.map} +0 -0
  1092. /package/dist/{chunk-TZTHGLWN.js.map → chunk-BXTIG5JL.js.map} +0 -0
  1093. /package/dist/{chunk-ULIQNJ5J.js.map → chunk-C7KV5O5J.js.map} +0 -0
  1094. /package/dist/{chunk-EL3TDR5S.js.map → chunk-CBVUO7SK.js.map} +0 -0
  1095. /package/dist/{chunk-CI3QSB6G.js.map → chunk-CDPX6WAL.js.map} +0 -0
  1096. /package/dist/{chunk-CP6RFWLW.js.map → chunk-CF5I4Q5M.js.map} +0 -0
  1097. /package/dist/{chunk-AIK2HPDZ.js.map → chunk-COOJKEJE.js.map} +0 -0
  1098. /package/dist/{chunk-HH5WM5VA.js.map → chunk-CTJWMZPL.js.map} +0 -0
  1099. /package/dist/{chunk-MXVP7Z54.js.map → chunk-D5HD46VV.js.map} +0 -0
  1100. /package/dist/{chunk-N3PASNUA.js.map → chunk-DGHSXHZR.js.map} +0 -0
  1101. /package/dist/{chunk-HJ3Q4NOM.js.map → chunk-DHF4FXWS.js.map} +0 -0
  1102. /package/dist/{chunk-ILGRC7LJ.js.map → chunk-DPOUS5DN.js.map} +0 -0
  1103. /package/dist/{chunk-6IR7IQPV.js.map → chunk-EJ6EED6I.js.map} +0 -0
  1104. /package/dist/{chunk-CORECUKT.js.map → chunk-EKOMZH2S.js.map} +0 -0
  1105. /package/dist/{chunk-AC7WLPXF.js.map → chunk-ELC42LJJ.js.map} +0 -0
  1106. /package/dist/{chunk-3E74OM2E.js.map → chunk-FLTAPEVY.js.map} +0 -0
  1107. /package/dist/{chunk-FGAXZ7ET.js.map → chunk-G4FU6VC5.js.map} +0 -0
  1108. /package/dist/{chunk-IWNLW7ZC.js.map → chunk-H25GY4U4.js.map} +0 -0
  1109. /package/dist/{chunk-PH3FZZIT.js.map → chunk-H6ASYVQX.js.map} +0 -0
  1110. /package/dist/{chunk-OASXBRXQ.js.map → chunk-H7LKYGLJ.js.map} +0 -0
  1111. /package/dist/{chunk-TPGFX47R.js.map → chunk-HI4SKWNW.js.map} +0 -0
  1112. /package/dist/{chunk-DWPOAU4Z.js.map → chunk-HM4NWA72.js.map} +0 -0
  1113. /package/dist/{chunk-GO6ISZUZ.js.map → chunk-HPF3USL2.js.map} +0 -0
  1114. /package/dist/{chunk-GUYFVYLY.js.map → chunk-I33FO2ON.js.map} +0 -0
  1115. /package/dist/{chunk-L5GFFF5G.js.map → chunk-IAE24RKD.js.map} +0 -0
  1116. /package/dist/{chunk-Q5DFEVLE.js.map → chunk-IJ6WA2JW.js.map} +0 -0
  1117. /package/dist/{chunk-KDAINT54.js.map → chunk-ITIUWJGQ.js.map} +0 -0
  1118. /package/dist/{chunk-OSQTSS27.js.map → chunk-IYDESWW4.js.map} +0 -0
  1119. /package/dist/{chunk-HBRXFQQV.js.map → chunk-J4BJLHLQ.js.map} +0 -0
  1120. /package/dist/{chunk-3LYT3NQX.js.map → chunk-JAME5NBT.js.map} +0 -0
  1121. /package/dist/{chunk-H3HA22Z3.js.map → chunk-JGK2FDZW.js.map} +0 -0
  1122. /package/dist/{chunk-7CORYCEZ.js.map → chunk-JT3UUBID.js.map} +0 -0
  1123. /package/dist/{chunk-LC6PVPJX.js.map → chunk-KGJ6EIX3.js.map} +0 -0
  1124. /package/dist/{chunk-KZQQ6OLC.js.map → chunk-KUI74TNG.js.map} +0 -0
  1125. /package/dist/{chunk-Y6XWO4V4.js.map → chunk-L4QEMWNJ.js.map} +0 -0
  1126. /package/dist/{chunk-EFTYCX5C.js.map → chunk-L7I47VGM.js.map} +0 -0
  1127. /package/dist/{chunk-JTIWQLY5.js.map → chunk-LAOCXV6Z.js.map} +0 -0
  1128. /package/dist/{chunk-QEREDRZO.js.map → chunk-LJEJCIHR.js.map} +0 -0
  1129. /package/dist/{chunk-C3EX5OKN.js.map → chunk-M4KFO256.js.map} +0 -0
  1130. /package/dist/{chunk-JIE45TKJ.js.map → chunk-MC5F2L64.js.map} +0 -0
  1131. /package/dist/{chunk-IDDG4QKO.js.map → chunk-MIHY534L.js.map} +0 -0
  1132. /package/dist/{chunk-MYIOR35H.js.map → chunk-MKOI6QYM.js.map} +0 -0
  1133. /package/dist/{chunk-DEZBCK5P.js.map → chunk-MSIOGH67.js.map} +0 -0
  1134. /package/dist/{chunk-D3YAFC6K.js.map → chunk-MTW2NDDD.js.map} +0 -0
  1135. /package/dist/{chunk-GDRJS2QJ.js.map → chunk-O2ECZKXP.js.map} +0 -0
  1136. /package/dist/{chunk-X6U3B6YK.js.map → chunk-O5VSYBUA.js.map} +0 -0
  1137. /package/dist/{chunk-6QINKM6T.js.map → chunk-OJZKY5UM.js.map} +0 -0
  1138. /package/dist/{chunk-2N2R5YSN.js.map → chunk-P4UCSXNA.js.map} +0 -0
  1139. /package/dist/{chunk-Y5PNLB24.js.map → chunk-Q3G4ZI2U.js.map} +0 -0
  1140. /package/dist/{chunk-KDVYI4LC.js.map → chunk-Q5XUFN2W.js.map} +0 -0
  1141. /package/dist/{chunk-E56V3RFO.js.map → chunk-Q736UFSD.js.map} +0 -0
  1142. /package/dist/{chunk-6E4KJMXO.js.map → chunk-QLO4RNHU.js.map} +0 -0
  1143. /package/dist/{chunk-KJTMY7K6.js.map → chunk-QSS34JWZ.js.map} +0 -0
  1144. /package/dist/{chunk-NTFNLVZG.js.map → chunk-RRKUXGAU.js.map} +0 -0
  1145. /package/dist/{chunk-E3PYHCQL.js.map → chunk-RVIBHENP.js.map} +0 -0
  1146. /package/dist/{chunk-5E4Y6RVY.js.map → chunk-S5S54J2K.js.map} +0 -0
  1147. /package/dist/{chunk-JXTNP3B5.js.map → chunk-SIRRBWQ2.js.map} +0 -0
  1148. /package/dist/{chunk-UJTIMPEE.js.map → chunk-TEJOILEY.js.map} +0 -0
  1149. /package/dist/{chunk-N2TXADL7.js.map → chunk-TEQEZAJI.js.map} +0 -0
  1150. /package/dist/{chunk-FLQNIFG2.js.map → chunk-TLQY4QBW.js.map} +0 -0
  1151. /package/dist/{chunk-JWV7LUFM.js.map → chunk-TNI7CN4L.js.map} +0 -0
  1152. /package/dist/{chunk-ORQ3WBM6.js.map → chunk-U6AWJIFP.js.map} +0 -0
  1153. /package/dist/{chunk-G6U45QD3.js.map → chunk-UK4XSLV2.js.map} +0 -0
  1154. /package/dist/{chunk-2LBQNTTH.js.map → chunk-URGXEDFV.js.map} +0 -0
  1155. /package/dist/{chunk-YVFHDZ3K.js.map → chunk-V5ODOBBI.js.map} +0 -0
  1156. /package/dist/{chunk-2DAWUWA4.js.map → chunk-V7EN5LFS.js.map} +0 -0
  1157. /package/dist/{chunk-2JBPS2CV.js.map → chunk-VAURJ4QJ.js.map} +0 -0
  1158. /package/dist/{chunk-EJBLF2LI.js.map → chunk-VAV5CCDD.js.map} +0 -0
  1159. /package/dist/{chunk-O3O7PXMK.js.map → chunk-VWHUO3AP.js.map} +0 -0
  1160. /package/dist/{chunk-X3YYZLBH.js.map → chunk-W3TZPHZO.js.map} +0 -0
  1161. /package/dist/{chunk-R4RWQ6YX.js.map → chunk-WTPID22G.js.map} +0 -0
  1162. /package/dist/{chunk-UUXGSDUC.js.map → chunk-WZATC4O5.js.map} +0 -0
  1163. /package/dist/{chunk-WR5Y64OE.js.map → chunk-XA76OGSL.js.map} +0 -0
  1164. /package/dist/{chunk-FGTOOTYC.js.map → chunk-XGG72YRO.js.map} +0 -0
  1165. /package/dist/{chunk-UQZZM6UM.js.map → chunk-XWAOECD2.js.map} +0 -0
  1166. /package/dist/{chunk-OTRKBCUB.js.map → chunk-YAMKCMAS.js.map} +0 -0
  1167. /package/dist/{chunk-SIUYWLXB.js.map → chunk-YDALLZNS.js.map} +0 -0
  1168. /package/dist/{chunk-CDTAKCJR.js.map → chunk-YRWCXYWW.js.map} +0 -0
  1169. /package/dist/{chunk-XZAVBONI.js.map → chunk-Z3RGBLVJ.js.map} +0 -0
  1170. /package/dist/{chunk-VJ4IOJQZ.js.map → chunk-Z5JWFNG4.js.map} +0 -0
  1171. /package/dist/{chunk-YB6G3B3L.js.map → chunk-ZCGM7ZWM.js.map} +0 -0
  1172. /package/dist/{cite-AJ5ZQWD2.js.map → cite-WCAOCOO5.js.map} +0 -0
  1173. /package/dist/{claim-CG3J32WS.js.map → claim-3UMAFZEM.js.map} +0 -0
  1174. /package/dist/{client-F6KOC77S.js.map → client-VCKP6WBR.js.map} +0 -0
  1175. /package/dist/{code-NV4ARLFS.js.map → code-VXOTFGD2.js.map} +0 -0
  1176. /package/dist/{companies-X6O55ACG.js.map → companies-RL5A26AT.js.map} +0 -0
  1177. /package/dist/{company-4CD2OJLB.js.map → company-DJ44F5C6.js.map} +0 -0
  1178. /package/dist/{complete-JSP6VQYI.js.map → complete-PGNIP3LN.js.map} +0 -0
  1179. /package/dist/{config-NDL2YP37.js.map → config-UR45YCIN.js.map} +0 -0
  1180. /package/dist/{connect-O5NRDY4Y.js.map → connect-ROARWN63.js.map} +0 -0
  1181. /package/dist/{content-EQZKKIST.js.map → content-EQQIKG5H.js.map} +0 -0
  1182. /package/dist/{conversation-J22BH6O5.js.map → conversation-GDFMJL7X.js.map} +0 -0
  1183. /package/dist/{conversion-report-76S5JOVT.js.map → conversion-report-2FREFML5.js.map} +0 -0
  1184. /package/dist/{conversion-upload-command-5OILW65U.js.map → conversion-upload-command-G7LLWHSK.js.map} +0 -0
  1185. /package/dist/{conversion-writes-6HX665JT.js.map → conversion-writes-JZIJSQ7T.js.map} +0 -0
  1186. /package/dist/{conversions-I2ZOQHKJ.js.map → conversions-2IFWDQKK.js.map} +0 -0
  1187. /package/dist/{conversions-QZJRF4WN.js.map → conversions-Q5EBTEXA.js.map} +0 -0
  1188. /package/dist/{copy-writes-X2LM5I4Z.js.map → copy-writes-JVUX3YDL.js.map} +0 -0
  1189. /package/dist/{countries-GZSBGSVT.js.map → countries-GRCU4IGM.js.map} +0 -0
  1190. /package/dist/{create-VAZ65QNJ.js.map → create-B5DIYK5D.js.map} +0 -0
  1191. /package/dist/{create-FNPFVKLT.js.map → create-BRCSXXFO.js.map} +0 -0
  1192. /package/dist/{create-DQ5X5AJT.js.map → create-PXAUL6FF.js.map} +0 -0
  1193. /package/dist/{create-GXOFZCR5.js.map → create-R6CMATVY.js.map} +0 -0
  1194. /package/dist/{creatives-SFPNXJ6Z.js.map → creatives-4EPM3RHG.js.map} +0 -0
  1195. /package/dist/{creatives-4G2V4J6N.js.map → creatives-D6O6Z46U.js.map} +0 -0
  1196. /package/dist/{creatives-QWNQDPNE.js.map → creatives-XNVWQWFF.js.map} +0 -0
  1197. /package/dist/{credentials-VCERJE24.js.map → credentials-CLJO7WWY.js.map} +0 -0
  1198. /package/dist/{critique-62QFBC33.js.map → critique-MBMKW6SL.js.map} +0 -0
  1199. /package/dist/{critique-MSL6EU5V.js.map → critique-OUJDTVMI.js.map} +0 -0
  1200. /package/dist/{crm-HODCOAAI.js.map → crm-H5ITJ2RC.js.map} +0 -0
  1201. /package/dist/{crm-J3SCOR4L.js.map → crm-JJHYRABB.js.map} +0 -0
  1202. /package/dist/{crop-4V4P3SKI.js.map → crop-NE7YX4SS.js.map} +0 -0
  1203. /package/dist/{currency-BZUNQ4XJ.js.map → currency-EFDQYW5B.js.map} +0 -0
  1204. /package/dist/{custom-conversions-UHRBVUD2.js.map → custom-conversions-GQTU5E6X.js.map} +0 -0
  1205. /package/dist/{customers-EYVTYCGY.js.map → customers-C5YXAVXI.js.map} +0 -0
  1206. /package/dist/{decide-AM6B7WIL.js.map → decide-6Q5X3V3F.js.map} +0 -0
  1207. /package/dist/{delete-RZCW3Y6L.js.map → delete-3GYCQK6B.js.map} +0 -0
  1208. /package/dist/{delete-WAPC4XC2.js.map → delete-EKKOEB3N.js.map} +0 -0
  1209. /package/dist/{delete-7A6T6XBD.js.map → delete-NBUDIGSD.js.map} +0 -0
  1210. /package/dist/{delete-YYIM564B.js.map → delete-QHDDR66K.js.map} +0 -0
  1211. /package/dist/{delete-46B7DSQV.js.map → delete-SP66F7ZV.js.map} +0 -0
  1212. /package/dist/{delete-I3W3M6T7.js.map → delete-WZ3KVVX5.js.map} +0 -0
  1213. /package/dist/{demographics-OFBRSF7A.js.map → demographics-O7AJW7DO.js.map} +0 -0
  1214. /package/dist/{describe-5OC7XX2U.js.map → describe-DJPIUEFE.js.map} +0 -0
  1215. /package/dist/{describe-EAPKNUUU.js.map → describe-MAGTSOW4.js.map} +0 -0
  1216. /package/dist/{dimensions-KI3OENZD.js.map → dimensions-IC2H7V3H.js.map} +0 -0
  1217. /package/dist/{discard-I773LYVR.js.map → discard-RMVZAX2J.js.map} +0 -0
  1218. /package/dist/{discover-PDSEJR2P.js.map → discover-BPUUWRBP.js.map} +0 -0
  1219. /package/dist/{discover-P7PBB3IV.js.map → discover-PSL2NBJL.js.map} +0 -0
  1220. /package/dist/{domain-7YO5HYHU.js.map → domain-J3ZMBOHS.js.map} +0 -0
  1221. /package/dist/{download-YB2DVMRS.js.map → download-EHDJXBAC.js.map} +0 -0
  1222. /package/dist/{download-IYK3UVBF.js.map → download-ZVOGLTFB.js.map} +0 -0
  1223. /package/dist/{draft-44KTLX4P.js.map → draft-27NMTARB.js.map} +0 -0
  1224. /package/dist/{draft-6MWXURYC.js.map → draft-6PJD3MCW.js.map} +0 -0
  1225. /package/dist/{draft-WOE7KQ7T.js.map → draft-GCOCG4PO.js.map} +0 -0
  1226. /package/dist/{draft-RSKZSUOS.js.map → draft-JESKGZ6O.js.map} +0 -0
  1227. /package/dist/{draft-CKFSZDVI.js.map → draft-MWYKIZC4.js.map} +0 -0
  1228. /package/dist/{draft-PCXWAA2Y.js.map → draft-Q4PEFBJB.js.map} +0 -0
  1229. /package/dist/{draft-2Z7EGKBO.js.map → draft-TPR3DH5N.js.map} +0 -0
  1230. /package/dist/{draft-QN5XXOS6.js.map → draft-ZPGGWU7E.js.map} +0 -0
  1231. /package/dist/{env-2RHPS2VF.js.map → env-NZXNMWSD.js.map} +0 -0
  1232. /package/dist/{experiment-AZUKJ7ZO.js.map → experiment-XAYSEYTU.js.map} +0 -0
  1233. /package/dist/{experiments-2DX4K3AQ.js.map → experiments-MM4BYHRH.js.map} +0 -0
  1234. /package/dist/{export-RPNRPTDK.js.map → export-W54UZ62P.js.map} +0 -0
  1235. /package/dist/{extract-ZIW5JFTY.js.map → extract-JMY6YRPW.js.map} +0 -0
  1236. /package/dist/{facets-OLRASLT7.js.map → facets-B5AZAU2C.js.map} +0 -0
  1237. /package/dist/{favorites-536I3GZD.js.map → favorites-Y6CT6NSQ.js.map} +0 -0
  1238. /package/dist/{feed-W3ECHUEX.js.map → feed-35BRQPTH.js.map} +0 -0
  1239. /package/dist/{feedback-2YJ24NV7.js.map → feedback-2EVDGTEN.js.map} +0 -0
  1240. /package/dist/{feedback-X3GLQ2QF.js.map → feedback-4MCMOMVN.js.map} +0 -0
  1241. /package/dist/{feedback-record-A5JLS3QY.js.map → feedback-record-DL7UEU2H.js.map} +0 -0
  1242. /package/dist/{fetch-KB64NPDF.js.map → fetch-I6P72CDL.js.map} +0 -0
  1243. /package/dist/{fetch-6XMRKLYH.js.map → fetch-JDNFK476.js.map} +0 -0
  1244. /package/dist/{find-UGFONLSD.js.map → find-SVGRA7IA.js.map} +0 -0
  1245. /package/dist/{fit-BRJSLR7P.js.map → fit-DKVH5BDW.js.map} +0 -0
  1246. /package/dist/{flows-LXJHL3KW.js.map → flows-LURTZICL.js.map} +0 -0
  1247. /package/dist/{follow-5VX5JWAQ.js.map → follow-24QSDNAG.js.map} +0 -0
  1248. /package/dist/{follow-competitors-D7I33T5C.js.map → follow-competitors-AG4E4XFA.js.map} +0 -0
  1249. /package/dist/{following-6DI4IZ7P.js.map → following-YGM6TBK3.js.map} +0 -0
  1250. /package/dist/{fonts-UUSCLUHW.js.map → fonts-HUXFDDAE.js.map} +0 -0
  1251. /package/dist/{forecast-3KMAJJWJ.js.map → forecast-ITLKAFHM.js.map} +0 -0
  1252. /package/dist/{forecast-7DZGLC7Y.js.map → forecast-UHTW4Y7Q.js.map} +0 -0
  1253. /package/dist/{funding-BSAHWU35.js.map → funding-WZNGXRLJ.js.map} +0 -0
  1254. /package/dist/{funnel-2ALYZ3GP.js.map → funnel-QM7WFFMD.js.map} +0 -0
  1255. /package/dist/{ga4-YVKA3V4V.js.map → ga4-W3U5YTRT.js.map} +0 -0
  1256. /package/dist/{generate-VGGXTZBP.js.map → generate-KAWRRYTT.js.map} +0 -0
  1257. /package/dist/{get-OZ7THI2W.js.map → get-237TYJZT.js.map} +0 -0
  1258. /package/dist/{get-JHOH74X5.js.map → get-3MTAVNTP.js.map} +0 -0
  1259. /package/dist/{get-TBMTBGHJ.js.map → get-5SPNAIUQ.js.map} +0 -0
  1260. /package/dist/{get-KVZSVN7U.js.map → get-FWPR2YPC.js.map} +0 -0
  1261. /package/dist/{get-42V7UTNF.js.map → get-GEUSRD5Y.js.map} +0 -0
  1262. /package/dist/{get-BQBLPGFE.js.map → get-JIZPYK3Z.js.map} +0 -0
  1263. /package/dist/{get-5SCYUC4G.js.map → get-TS2ZJDCQ.js.map} +0 -0
  1264. /package/dist/{get-V4NJXKUR.js.map → get-YWDZYEAC.js.map} +0 -0
  1265. /package/dist/{gif-M2GMVWM4.js.map → gif-NP6EDGEE.js.map} +0 -0
  1266. /package/dist/{google-5U5KXEX7.js.map → google-DTSLO3PT.js.map} +0 -0
  1267. /package/dist/{google-RTDPHVLU.js.map → google-JY7KDAFC.js.map} +0 -0
  1268. /package/dist/{google-ads-YZTK3YTW.js.map → google-ads-RZOQQDQN.js.map} +0 -0
  1269. /package/dist/{group-THZPJALS.js.map → group-3DT4UYSR.js.map} +0 -0
  1270. /package/dist/{group-PLTVV7UZ.js.map → group-OEKKCFXT.js.map} +0 -0
  1271. /package/dist/{gsc-OJDMSP6H.js.map → gsc-4FEFPFPB.js.map} +0 -0
  1272. /package/dist/{history-RYTNMGU5.js.map → history-H7S7XRBX.js.map} +0 -0
  1273. /package/dist/{history-XDYDNQWK.js.map → history-XL52537O.js.map} +0 -0
  1274. /package/dist/{history-LXRFZNW7.js.map → history-YQSYXBJH.js.map} +0 -0
  1275. /package/dist/{hubspot-MRUCRJLL.js.map → hubspot-2DSISSUI.js.map} +0 -0
  1276. /package/dist/{icon-THWS5VPO.js.map → icon-43UJTGGE.js.map} +0 -0
  1277. /package/dist/{ideas-TT24LJR5.js.map → ideas-2XBFQJ56.js.map} +0 -0
  1278. /package/dist/{images-PLYPUXM2.js.map → images-VFRQ32G5.js.map} +0 -0
  1279. /package/dist/{improve-NWFQI63B.js.map → improve-IMXQN6OD.js.map} +0 -0
  1280. /package/dist/{ingest-MSPQX3Z6.js.map → ingest-4RPLN54K.js.map} +0 -0
  1281. /package/dist/{ingest-CSPC3RUK.js.map → ingest-TPVH44VI.js.map} +0 -0
  1282. /package/dist/{insights-LZJZGNJZ.js.map → insights-BR3456EI.js.map} +0 -0
  1283. /package/dist/{insights-H6M6VI43.js.map → insights-UVCFOB3N.js.map} +0 -0
  1284. /package/dist/{inspect-VD6CB2NA.js.map → inspect-VD3GVXDU.js.map} +0 -0
  1285. /package/dist/{inspiration-FPB3IB7X.js.map → inspiration-XZI5KCQW.js.map} +0 -0
  1286. /package/dist/{instant-experiences-J4GSS3Y6.js.map → instant-experiences-2LKF7XVK.js.map} +0 -0
  1287. /package/dist/{intent-HXRSLFIO.js.map → intent-F5NTOSQC.js.map} +0 -0
  1288. /package/dist/{job-UFGGBDG7.js.map → job-GOX3KIKG.js.map} +0 -0
  1289. /package/dist/{job-create-XM4NH322.js.map → job-create-F2PQSN3C.js.map} +0 -0
  1290. /package/dist/{job-status-47L5Z57J.js.map → job-status-3FMA5D7T.js.map} +0 -0
  1291. /package/dist/{keep-I6FLGJH4.js.map → keep-23ZYMWPG.js.map} +0 -0
  1292. /package/dist/{keyword-gap-WUHMSTNR.js.map → keyword-gap-EB5QATYN.js.map} +0 -0
  1293. /package/dist/{keyword-metrics-NJV3WR75.js.map → keyword-metrics-PW2DDIJW.js.map} +0 -0
  1294. /package/dist/{keywords-for-site-B7MUDHFH.js.map → keywords-for-site-JEPABY6E.js.map} +0 -0
  1295. /package/dist/{knowledge-H5PJ6LZB.js.map → knowledge-7M7DSRF3.js.map} +0 -0
  1296. /package/dist/{landing-RKOEVY7L.js.map → landing-4N6YSB4L.js.map} +0 -0
  1297. /package/dist/{landings-AELJXEYN.js.map → landings-VNQ4VA2U.js.map} +0 -0
  1298. /package/dist/{languages-GCRI2PI3.js.map → languages-2X22HXM3.js.map} +0 -0
  1299. /package/dist/{languages-SVTYYYOC.js.map → languages-4S26FJDP.js.map} +0 -0
  1300. /package/dist/{launches-CKPZFVMQ.js.map → launches-L4EUROCJ.js.map} +0 -0
  1301. /package/dist/{layerize-PHY25VNC.js.map → layerize-6QHQMA7Q.js.map} +0 -0
  1302. /package/dist/{lead-routes-ZMKRNL57.js.map → lead-routes-5TPFJEVH.js.map} +0 -0
  1303. /package/dist/{leads-SEEJ3KRR.js.map → leads-4TLOH47R.js.map} +0 -0
  1304. /package/dist/{leads-HFB5UXZJ.js.map → leads-R5OZJQHW.js.map} +0 -0
  1305. /package/dist/{learn-XNN3DGDF.js.map → learn-AQ2FRFB7.js.map} +0 -0
  1306. /package/dist/{library-5YJCCEFL.js.map → library-MNJC24E4.js.map} +0 -0
  1307. /package/dist/{lighthouse-W3KAVW2G.js.map → lighthouse-DJMAXFTD.js.map} +0 -0
  1308. /package/dist/{line-item-writes-VEJ5Y6X4.js.map → line-item-writes-LGO7HIJJ.js.map} +0 -0
  1309. /package/dist/{line-items-U6L2TMPG.js.map → line-items-AAZVKQ7E.js.map} +0 -0
  1310. /package/dist/{link-ENZQAISO.js.map → link-7IGHVARH.js.map} +0 -0
  1311. /package/dist/{linkedin-SY2WZWKP.js.map → linkedin-UB2CW4KP.js.map} +0 -0
  1312. /package/dist/{linkedin-person-3RCX4MI3.js.map → linkedin-person-D6U2ZAUW.js.map} +0 -0
  1313. /package/dist/{list-IKQFAJP7.js.map → list-2277GCPH.js.map} +0 -0
  1314. /package/dist/{list-ERCPPED6.js.map → list-537S75BZ.js.map} +0 -0
  1315. /package/dist/{list-GPTYUCSX.js.map → list-P44QRX2O.js.map} +0 -0
  1316. /package/dist/{list-E7JG27WS.js.map → list-Q52FPW3H.js.map} +0 -0
  1317. /package/dist/{list-AF522LRC.js.map → list-UMJACDTQ.js.map} +0 -0
  1318. /package/dist/{list-2EJ3XZ6I.js.map → list-V4PSDBLX.js.map} +0 -0
  1319. /package/dist/{list-VYTHVUDP.js.map → list-VZKUHY4Y.js.map} +0 -0
  1320. /package/dist/{list-BQWHFEWY.js.map → list-WIXQXNKB.js.map} +0 -0
  1321. /package/dist/{list-HYZL4576.js.map → list-XK33NCSC.js.map} +0 -0
  1322. /package/dist/{locations-7EBZ6KRH.js.map → locations-UWBQLHXW.js.map} +0 -0
  1323. /package/dist/{locations-5SLLGWZO.js.map → locations-WXGOI3VV.js.map} +0 -0
  1324. /package/dist/{log-NJR3FJWN.js.map → log-6ZKMUTYS.js.map} +0 -0
  1325. /package/dist/{logo-ZSSR66WS.js.map → logo-4LSFZ3ZO.js.map} +0 -0
  1326. /package/dist/{lookup-OU6CLATK.js.map → lookup-WIM5WR25.js.map} +0 -0
  1327. /package/dist/{make-4XUB6RSF.js.map → make-5CEIJRBC.js.map} +0 -0
  1328. /package/dist/{map-LIYQCWXU.js.map → map-ZL4MQVJZ.js.map} +0 -0
  1329. /package/dist/{mcp-QDOAKB3A.js.map → mcp-GSRYLRD4.js.map} +0 -0
  1330. /package/dist/{media-DGV2AMZI.js.map → media-34I7UB7Z.js.map} +0 -0
  1331. /package/dist/{media-YKCCMLXL.js.map → media-KKI3KWLR.js.map} +0 -0
  1332. /package/dist/{media-sources-LFSDIPUB.js.map → media-sources-VSPVHLYN.js.map} +0 -0
  1333. /package/dist/{members-KGKQQFMN.js.map → members-L6SXP6GC.js.map} +0 -0
  1334. /package/dist/{meme-3QYKC4BF.js.map → meme-6NFYFQ7T.js.map} +0 -0
  1335. /package/dist/{meta-5TRG7RTQ.js.map → meta-2UK7KIE4.js.map} +0 -0
  1336. /package/dist/{metrics-WRERNMRK.js.map → metrics-4AFEEDVP.js.map} +0 -0
  1337. /package/dist/{models-SITHUNAA.js.map → models-2ZEM64H5.js.map} +0 -0
  1338. /package/dist/{normalize-M3VMWF4W.js.map → normalize-G75RDSE4.js.map} +0 -0
  1339. /package/dist/{normalize-DQPKM3MG.js.map → normalize-GK7DH7ZP.js.map} +0 -0
  1340. /package/dist/{options-XIH7YPEG.js.map → options-FDAAHG7C.js.map} +0 -0
  1341. /package/dist/{organization-BUSXIGA4.js.map → organization-K2FTFAAO.js.map} +0 -0
  1342. /package/dist/{output-7X5WPPCA.js.map → output-ELEO2Z6R.js.map} +0 -0
  1343. /package/dist/{page-GBLVAKU3.js.map → page-4X6IBUWG.js.map} +0 -0
  1344. /package/dist/{page-photos-VYJU4RNQ.js.map → page-photos-KNBLMFLN.js.map} +0 -0
  1345. /package/dist/{pages-6YMPZDEY.js.map → pages-7HW5YOZV.js.map} +0 -0
  1346. /package/dist/{performance-Y2DTYSFV.js.map → performance-N3UROH7Z.js.map} +0 -0
  1347. /package/dist/{performance-PU4NHFUE.js.map → performance-RG2HR46T.js.map} +0 -0
  1348. /package/dist/{pinterest-235S7E6H.js.map → pinterest-KA6VFDM4.js.map} +0 -0
  1349. /package/dist/{pixels-DZDVNIVL.js.map → pixels-D5HF24FI.js.map} +0 -0
  1350. /package/dist/{pixels-WTTLC4O5.js.map → pixels-HEI5WVAO.js.map} +0 -0
  1351. /package/dist/{plan-JAWESWJN.js.map → plan-XCA6R3HZ.js.map} +0 -0
  1352. /package/dist/{posts-F327IP23.js.map → posts-ALGM6ONV.js.map} +0 -0
  1353. /package/dist/{preview-JZXGR4KN.js.map → preview-55TRUF4Q.js.map} +0 -0
  1354. /package/dist/{preview-3UOBVP6M.js.map → preview-NVWIEUHF.js.map} +0 -0
  1355. /package/dist/{profile-MKKJT2UF.js.map → profile-NHUPUCBR.js.map} +0 -0
  1356. /package/dist/{promoted-tweet-writes-6Y4MDPBH.js.map → promoted-tweet-writes-7QZRFDOM.js.map} +0 -0
  1357. /package/dist/{promoted-tweets-JAR2W6KC.js.map → promoted-tweets-V555Y7DN.js.map} +0 -0
  1358. /package/dist/{properties-Z5S3LRJ5.js.map → properties-2ZXA5BPJ.js.map} +0 -0
  1359. /package/dist/{publish-MDVPC77V.js.map → publish-5KR6YLA6.js.map} +0 -0
  1360. /package/dist/{query-QXKGVHZL.js.map → query-63CTX2PH.js.map} +0 -0
  1361. /package/dist/{query-KKXCMH3Q.js.map → query-DMWY3TDD.js.map} +0 -0
  1362. /package/dist/{query-3QFT42PG.js.map → query-K7MYBRTS.js.map} +0 -0
  1363. /package/dist/{questionnaire-U7UYICEA.js.map → questionnaire-WHE42RD4.js.map} +0 -0
  1364. /package/dist/{read-ENUS7P3L.js.map → read-NESEKULG.js.map} +0 -0
  1365. /package/dist/{reddit-ZPKVVZGP.js.map → reddit-XPQ7YAJW.js.map} +0 -0
  1366. /package/dist/{refresh-JSCYTM4B.js.map → refresh-ILDEPU5A.js.map} +0 -0
  1367. /package/dist/{refresh-V34YWN3W.js.map → refresh-XFHEBSDU.js.map} +0 -0
  1368. /package/dist/{release-WRNUOSHB.js.map → release-3ECEF26P.js.map} +0 -0
  1369. /package/dist/{relevant-pages-OFKZYWR3.js.map → relevant-pages-XYQKVX3U.js.map} +0 -0
  1370. /package/dist/{remove-6FXTPEB6.js.map → remove-NHE4UT7G.js.map} +0 -0
  1371. /package/dist/{remove-HKWV7P27.js.map → remove-OCTUC3RB.js.map} +0 -0
  1372. /package/dist/{reopen-VHHYVAKC.js.map → reopen-JRI3TYD4.js.map} +0 -0
  1373. /package/dist/{rerun-THE43RCG.js.map → rerun-HWWYCDT2.js.map} +0 -0
  1374. /package/dist/{research-G5A2WXVK.js.map → research-ODPU62BA.js.map} +0 -0
  1375. /package/dist/{research-773Y7GT4.js.map → research-TG5CBTYP.js.map} +0 -0
  1376. /package/dist/{reset-MVTWA3HT.js.map → reset-J2NLNITD.js.map} +0 -0
  1377. /package/dist/{reset-GFJ3AKF5.js.map → reset-SRU7YJUR.js.map} +0 -0
  1378. /package/dist/{resolve-JRSSTIAF.js.map → resolve-KHMMUGB2.js.map} +0 -0
  1379. /package/dist/{retry-AGHA6IVT.js.map → retry-VLH4AO7F.js.map} +0 -0
  1380. /package/dist/{retry-LDJ6FZCZ.js.map → retry-WP7LWKZF.js.map} +0 -0
  1381. /package/dist/{retry-failed-FCS6PNUZ.js.map → retry-failed-R5HPQ3KQ.js.map} +0 -0
  1382. /package/dist/{revenue-Q2JK5VY6.js.map → revenue-EEIS2AV5.js.map} +0 -0
  1383. /package/dist/{rule-writes-WT6DQZZE.js.map → rule-writes-QB4IWFCJ.js.map} +0 -0
  1384. /package/dist/{rules-Y75KR2PC.js.map → rules-FYVD2QBB.js.map} +0 -0
  1385. /package/dist/{rules-4A25K2P7.js.map → rules-TTUGQAEB.js.map} +0 -0
  1386. /package/dist/{rules-add-GT7NCUB3.js.map → rules-add-AIXUAZXG.js.map} +0 -0
  1387. /package/dist/{run-ZLHQNLCF.js.map → run-AQTACLY6.js.map} +0 -0
  1388. /package/dist/{run-NFLKYVIC.js.map → run-YA6IWQAJ.js.map} +0 -0
  1389. /package/dist/{scaffold-ad-AJN67FWG.js.map → scaffold-ad-IYNFJPT7.js.map} +0 -0
  1390. /package/dist/{scaffold-static-ad-L6KXZ3TN.js.map → scaffold-static-ad-SPYKSAJR.js.map} +0 -0
  1391. /package/dist/{scaffold-video-XQBZZ5TZ.js.map → scaffold-video-BUN27PKS.js.map} +0 -0
  1392. /package/dist/{schedule-XFEPEQTN.js.map → schedule-D7EDEM45.js.map} +0 -0
  1393. /package/dist/{schedule-45CJDHIX.js.map → schedule-EH2MOC5C.js.map} +0 -0
  1394. /package/dist/{scheduled-agents-72MWHK63.js.map → scheduled-agents-DTAEP25E.js.map} +0 -0
  1395. /package/dist/{schema-VX66FH4O.js.map → schema-7B4MVVAS.js.map} +0 -0
  1396. /package/dist/{schema-L4PETLZT.js.map → schema-Z43AJOJ4.js.map} +0 -0
  1397. /package/dist/{scrape-D3XGARHR.js.map → scrape-VL2RWSTW.js.map} +0 -0
  1398. /package/dist/{screenshot-5LWUP5VN.js.map → screenshot-Y6EEXS3Q.js.map} +0 -0
  1399. /package/dist/{search-HNRANK6H.js.map → search-CXC7N5XJ.js.map} +0 -0
  1400. /package/dist/{search-KGE3BSSH.js.map → search-JEXYEAPQ.js.map} +0 -0
  1401. /package/dist/{search-4DBP6EH5.js.map → search-L3GTZYRW.js.map} +0 -0
  1402. /package/dist/{search-QQDR74KQ.js.map → search-TXBYKNQC.js.map} +0 -0
  1403. /package/dist/{search-O3AOWEXC.js.map → search-XHSTUBDY.js.map} +0 -0
  1404. /package/dist/{search-Y6TS5UZS.js.map → search-ZZWIJRXJ.js.map} +0 -0
  1405. /package/dist/{search-copy-EB3TONDS.js.map → search-copy-FIPG7OCC.js.map} +0 -0
  1406. /package/dist/{seeds-RGIFHHYC.js.map → seeds-ADJKURNG.js.map} +0 -0
  1407. /package/dist/{select-MZ2U7U5U.js.map → select-LWZRF7KV.js.map} +0 -0
  1408. /package/dist/{sends-4ZO6BNZ4.js.map → sends-RS4LWRAC.js.map} +0 -0
  1409. /package/dist/{sequences-SSLZ3XTP.js.map → sequences-2RPKDKGQ.js.map} +0 -0
  1410. /package/dist/{set-prompt-YH6PXNXB.js.map → set-prompt-YKDH6FYK.js.map} +0 -0
  1411. /package/dist/{setup-links-Y4YYDQBK.js.map → setup-links-OE6PC2YQ.js.map} +0 -0
  1412. /package/dist/{shared-UPMEBTVP.js.map → shared-4GGUIOF2.js.map} +0 -0
  1413. /package/dist/{shopify-HGFUHYT7.js.map → shopify-CCPLZI2H.js.map} +0 -0
  1414. /package/dist/{site-WZ654OP3.js.map → site-FW5BBLYG.js.map} +0 -0
  1415. /package/dist/{sitemaps-P3K5Z4TW.js.map → sitemaps-Z6IELTQV.js.map} +0 -0
  1416. /package/dist/{sites-TURWC53D.js.map → sites-KLAKI2EY.js.map} +0 -0
  1417. /package/dist/{skills-PDHUHP2T.js.map → skills-OJP36EVR.js.map} +0 -0
  1418. /package/dist/{sources-FCBFLR2J.js.map → sources-WPHMWBEK.js.map} +0 -0
  1419. /package/dist/{sources-7ZFY3VEZ.js.map → sources-X77TGJ52.js.map} +0 -0
  1420. /package/dist/{stale-VSSDVB4H.js.map → stale-SPCDL73V.js.map} +0 -0
  1421. /package/dist/{stats-XNKAJD2Z.js.map → stats-MIMFX4R7.js.map} +0 -0
  1422. /package/dist/{status-L7LYUD3F.js.map → status-FLETGJ2A.js.map} +0 -0
  1423. /package/dist/{sticker-MWICUYQM.js.map → sticker-IREEEN7I.js.map} +0 -0
  1424. /package/dist/{stock-73PLAUYU.js.map → stock-5AOSQH52.js.map} +0 -0
  1425. /package/dist/{studies-5G67ODR2.js.map → studies-YGYAH3JI.js.map} +0 -0
  1426. /package/dist/{studio-D2OMFCZZ.js.map → studio-4EV5S7PR.js.map} +0 -0
  1427. /package/dist/{study-writes-34BJFZAZ.js.map → study-writes-UPGJB36A.js.map} +0 -0
  1428. /package/dist/{suggest-KCN2NDYE.js.map → suggest-5RTISDLI.js.map} +0 -0
  1429. /package/dist/{sync-XBC3PSSV.js.map → sync-363VKXU3.js.map} +0 -0
  1430. /package/dist/{sync-TANGFXUN.js.map → sync-OHIXI4I6.js.map} +0 -0
  1431. /package/dist/{sync-QVEUQKU5.js.map → sync-VCAFAYW4.js.map} +0 -0
  1432. /package/dist/{sync-definition-IM2NY5QC.js.map → sync-definition-ZDE5L644.js.map} +0 -0
  1433. /package/dist/{tag-NKAHDL35.js.map → tag-DSCUKNC3.js.map} +0 -0
  1434. /package/dist/{tag-manager-3GIW6BPB.js.map → tag-manager-IINALUEJ.js.map} +0 -0
  1435. /package/dist/{tags-UNUZVGUA.js.map → tags-6MN3AWKN.js.map} +0 -0
  1436. /package/dist/{tags-HCJTTLSR.js.map → tags-VOKUNEIW.js.map} +0 -0
  1437. /package/dist/{tags-COALQ2CT.js.map → tags-Y6MNMIEA.js.map} +0 -0
  1438. /package/dist/{tags-MVC56SHA.js.map → tags-YHAC3NVY.js.map} +0 -0
  1439. /package/dist/{tags-2KNOJ7A6.js.map → tags-ZCQMJ5YH.js.map} +0 -0
  1440. /package/dist/{targeting-TVZPIUUI.js.map → targeting-BM72UTI6.js.map} +0 -0
  1441. /package/dist/{targeting-constants-RJS2STR5.js.map → targeting-constants-54S3FXIF.js.map} +0 -0
  1442. /package/dist/{targeting-criteria-SMBIEM7U.js.map → targeting-criteria-ECQFHQF3.js.map} +0 -0
  1443. /package/dist/{targets-BNH37YAQ.js.map → targets-U2JHTB5U.js.map} +0 -0
  1444. /package/dist/{terms-AATAGKPT.js.map → terms-OFHNLW6U.js.map} +0 -0
  1445. /package/dist/{testimonials-IIAT5IDM.js.map → testimonials-IDVLMXDT.js.map} +0 -0
  1446. /package/dist/{themes-5HKRO5RR.js.map → themes-QMR5TWTI.js.map} +0 -0
  1447. /package/dist/{top-companies-PY2NL2GS.js.map → top-companies-CBI4O3ZB.js.map} +0 -0
  1448. /package/dist/{transcript-7WFXVRVW.js.map → transcript-IIRFTFRW.js.map} +0 -0
  1449. /package/dist/{translate-IPTYPZF6.js.map → translate-N6QW4FZB.js.map} +0 -0
  1450. /package/dist/{triggers-RBD2XGNG.js.map → triggers-Q3KRAMA3.js.map} +0 -0
  1451. /package/dist/{tweets-MLDLLLDB.js.map → tweets-TRTXC6O4.js.map} +0 -0
  1452. /package/dist/{unfollow-OEMFPAFS.js.map → unfollow-DATOGPLZ.js.map} +0 -0
  1453. /package/dist/{unlink-5IMEUVIS.js.map → unlink-7RVQXKAR.js.map} +0 -0
  1454. /package/dist/{unstage-DSOVSWEK.js.map → unstage-3LPHNZKR.js.map} +0 -0
  1455. /package/dist/{unstage-65DUBYNZ.js.map → unstage-LLQCMZ5H.js.map} +0 -0
  1456. /package/dist/{update-FIU2ECYQ.js.map → update-AL3LBHGK.js.map} +0 -0
  1457. /package/dist/{update-XWL3Q5QY.js.map → update-AWR7EHGA.js.map} +0 -0
  1458. /package/dist/{update-7JVV5ZL3.js.map → update-LNSSLZXG.js.map} +0 -0
  1459. /package/dist/{update-CADTFTYC.js.map → update-SD5YQIJC.js.map} +0 -0
  1460. /package/dist/{update-HSS6CVUK.js.map → update-YBTFH5MN.js.map} +0 -0
  1461. /package/dist/{upload-B5SM33MK.js.map → upload-45GCGMA5.js.map} +0 -0
  1462. /package/dist/{upload-GXS5CTOR.js.map → upload-7PPMVWVA.js.map} +0 -0
  1463. /package/dist/{upscale-BCI42TCP.js.map → upscale-WVJZG76V.js.map} +0 -0
  1464. /package/dist/{url-options-4J3FRXHO.js.map → url-options-AHJPR5VY.js.map} +0 -0
  1465. /package/dist/{url-params-TGCGWKAJ.js.map → url-params-U6ZM4LL2.js.map} +0 -0
  1466. /package/dist/{use-26VARHJT.js.map → use-6FADOAFZ.js.map} +0 -0
  1467. /package/dist/{variant-F4EEYQJ7.js.map → variant-RNM36P4J.js.map} +0 -0
  1468. /package/dist/{videos-NITQKILV.js.map → videos-GHFCOTT7.js.map} +0 -0
  1469. /package/dist/{videos-FMV4AVB2.js.map → videos-NW2UP342.js.map} +0 -0
  1470. /package/dist/{view-X65GETAV.js.map → view-YR6MDLWL.js.map} +0 -0
  1471. /package/dist/{viewer-check-2W6BTVQV.js.map → viewer-check-IDXFRRCO.js.map} +0 -0
  1472. /package/dist/{web-K2EMYVCD.js.map → web-VMPKMBKA.js.map} +0 -0
  1473. /package/dist/{winners-5PRDG7GT.js.map → winners-4T5RFQXU.js.map} +0 -0
  1474. /package/dist/{winning-ads-Q3RXH7EC.js.map → winning-ads-7UJXCWFH.js.map} +0 -0
  1475. /package/dist/{write-commands-XLZCRVTU.js.map → write-commands-6D55SB56.js.map} +0 -0
  1476. /package/dist/{write-commands-SIOVTRHH.js.map → write-commands-AIWLEGO2.js.map} +0 -0
  1477. /package/dist/{write-commands-VQPEHKH7.js.map → write-commands-R42DQEW6.js.map} +0 -0
  1478. /package/dist/{write-commands-OBQPQUIE.js.map → write-commands-UO3OQIHH.js.map} +0 -0
  1479. /package/dist/{x-PW43O6JS.js.map → x-UGTUOCVR.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/canvas/static-edit.ts","../src/commands/canvas/static-ad-canvas.ts","../src/commands/canvas/named-people-read.ts","../src/commands/canvas/static-autofix.ts","../src/commands/canvas/static-run-review.ts","../src/commands/canvas/glance-check.ts","../src/commands/canvas/logo-review.ts","../src/engine/nodes/local/lib/logo-match.ts","../src/commands/canvas/render-state.ts"],"sourcesContent":["/**\n * Iterating a static ad from the version shown, and never paying twice for the same mistake.\n *\n * Audited Sept 2026: every fix re-rolled three fresh pictures at full price (about 85 credits), so\n * a fix became a new, totally different version, blocking counts random-walked, and the person\n * never saw the same ad improve. So a new render whose prompt.json changed only in its words,\n * their places or the colours is made as an edit of the version shown (one render, the picture\n * kept), with the instruction read off the change (`specEditInstruction`); new options are asked\n * for explicitly (`--regenerate static_variants`). And a fix that left its defect in place is\n * never retried with the same words (`repeatsFailedFix`): the spec or the approach has to change.\n *\n * Pure.\n */\nimport type { RenderFinding } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { type AdCopyLine, type AdSpec, readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { isWordsObject } from \"../../engine/scaffold/static-format-briefs.ts\";\nimport { isNativeCanvas } from \"../../engine/scaffold/static-native-graph.ts\";\nimport { isPlateCanvas } from \"../../engine/scaffold/static-topology.ts\";\n\nfunction specOf(raw: unknown): AdSpec | null {\n try {\n return raw ? readAdSpec(raw) : null;\n } catch {\n return null;\n }\n}\n\n/** Everything but the words, their places and looks, and the colours: what an edit cannot change. */\nfunction frame(spec: AdSpec): string {\n const { copy: _copy, colors: _colors, brand, notes: _notes, source: _source, reference: _reference, ...rest } = spec;\n const concept = rest.concept ? { ...rest.concept, transfer_note: undefined } : undefined;\n const brandShape = brand ? { ...brand, ground: undefined, ink: undefined, accent: undefined, cta: undefined, palette: [] } : undefined;\n return JSON.stringify({ ...rest, concept, brand: brandShape });\n}\n\nconst ROLE_WORDS: Record<string, string> = {\n headline: \"the headline\",\n cta: \"the button\",\n button: \"the button\",\n price: \"the price\",\n body: \"body text\",\n caption: \"a caption\",\n label: \"a label\",\n fine_print: \"the fine print\",\n};\n\nfunction copyEdits(before: readonly AdCopyLine[], after: readonly AdCopyLine[]): string[] {\n const out: string[] = [];\n const shared = Math.min(before.length, after.length);\n for (let i = 0; i < shared; i++) {\n const a = before[i] as AdCopyLine;\n const b = after[i] as AdCopyLine;\n if (a.text !== b.text) out.push(`Change the words \"${a.text}\" to exactly \"${b.text}\".`);\n if ((a.position ?? \"\") !== (b.position ?? \"\") && b.position) out.push(`Move \"${b.text}\" to ${b.position}.`);\n if ((a.look ?? \"\") !== (b.look ?? \"\") && b.look) out.push(`Set \"${b.text}\" ${b.look}.`);\n if (a.lettering !== b.lettering || (a.role ?? \"\") !== (b.role ?? \"\") || (a.on ?? \"\") !== (b.on ?? \"\")) {\n out.push(`Set \"${b.text}\" as ${ROLE_WORDS[b.role ?? \"\"] ?? \"it is described\"}${b.on ? `, lettered on ${b.on}` : \"\"}.`);\n }\n }\n for (const added of after.slice(shared)) {\n const role = ROLE_WORDS[added.role ?? \"\"];\n out.push(`Add the words \"${added.text}\"${role ? ` (${role})` : \"\"}${added.position ? `, ${added.position}` : \"\"}.`);\n }\n for (const removed of before.slice(shared)) out.push(`Remove the words \"${removed.text}\".`);\n return out;\n}\n\nfunction colourEdits(before: AdSpec, after: AdSpec): string[] {\n const out: string[] = [];\n for (const use of after.colors) {\n const was = before.colors.find((c) => c.object === use.object);\n if (was && was.name === use.name && was.hex === use.hex) continue;\n out.push(`Make ${use.object} ${use.name}${use.hex ? ` (${use.hex})` : \"\"}.`);\n }\n const roles: Array<[keyof NonNullable<AdSpec[\"brand\"]>, string]> = [\n [\"cta\", \"the button\"],\n [\"ground\", \"the background\"],\n [\"ink\", \"the designed type\"],\n [\"accent\", \"the accent colour\"],\n ];\n for (const [key, object] of roles) {\n const was = before.brand?.[key];\n const now = after.brand?.[key];\n if (typeof now === \"string\" && was !== now) out.push(`Make ${object} ${now}.`);\n }\n return out;\n}\n\n/**\n * The edit a new prompt.json asks of the version made from `previous`, as one instruction, when it\n * changed only the words (added, removed or reworded), their places and looks, or the colours.\n * Null when anything else changed (the scene, the pictures, the concept, the sizes: new pictures\n * are needed), when nothing changed (the cache has it), or when either spec cannot be read.\n */\nexport function specEditInstruction(previous: unknown, next: unknown): string | null {\n const before = specOf(previous);\n const after = specOf(next);\n if (!before || !after || frame(before) !== frame(after)) return null;\n const edits = [...copyEdits(before.copy, after.copy), ...colourEdits(before, after)];\n return edits.length > 0 ? edits.join(\" \") : null;\n}\n\n/**\n * The parts of the ad a new prompt.json changed beyond its words, their places and the colours (the\n * scene, the references, the concept, the sizes…): what makes a run draw new pictures instead of\n * editing the version shown. Empty when either spec cannot be read. Pure.\n */\nexport function frameChanges(previous: unknown, next: unknown): string[] {\n const before = specOf(previous);\n const after = specOf(next);\n if (!before || !after) return [];\n const was = JSON.parse(frame(before)) as Record<string, unknown>;\n const now = JSON.parse(frame(after)) as Record<string, unknown>;\n return [...new Set([...Object.keys(was), ...Object.keys(now)])].filter(\n (key) => JSON.stringify(was[key]) !== JSON.stringify(now[key]),\n );\n}\n\n/** The last fix of a creative and the blocking defects it left. */\nexport type LastFix = { instruction: string; blocking: string[] };\n\nconst normalized = (text: string) => text.trim().toLowerCase().replace(/\\s+/g, \" \");\n\n/** Whether `instruction` is the fix that already ran and left its defects in place. */\nexport function repeatsFailedFix(last: LastFix | undefined, instruction: string): boolean {\n return Boolean(last && last.blocking.length > 0 && normalized(last.instruction) === normalized(instruction));\n}\n\n/**\n * What a fix of the version `from` is measured against: its last fix and the defects its review\n * named. Only the version shown is remembered (`render-state.ts`); a fix of another one (`--from`)\n * starts with nothing to refuse. Pure.\n */\nexport function fixMemoryOf(\n shown: { rendered?: { runId: string }; lastFix?: LastFix; blocking?: string[] },\n from: string | undefined,\n): { lastFix?: LastFix; blocking: string[] } {\n if (from !== undefined && from !== shown.rendered?.runId) return { blocking: [] };\n return { ...(shown.lastFix ? { lastFix: shown.lastFix } : {}), blocking: shown.blocking ?? [] };\n}\n\n/** The blocking defects named before a fix that are still blocking after it. */\nexport function persistingDefects(before: readonly string[], after: readonly RenderFinding[] | null): string[] {\n const now = new Set((after ?? []).filter((f) => f.severity === \"blocking\").map((f) => f.what));\n return before.filter((what) => now.has(what));\n}\n\nconst onSurface = (line: AdCopyLine) => (line.on ? ` on ${line.on}` : \"\");\n\n/**\n * The words lettered in the picture itself (`in_scene`: a label, a sign) that changed, as edits of\n * the picture: no size sets them again, so a picture kept as it was keeps the old words.\n */\nfunction inSceneEdits(before: readonly AdCopyLine[], after: readonly AdCopyLine[]): string[] {\n const was = before.filter((line) => line.lettering === \"in_scene\");\n const now = after.filter((line) => line.lettering === \"in_scene\");\n const out: string[] = [];\n for (let i = 0; i < Math.min(was.length, now.length); i++) {\n const a = was[i] as AdCopyLine;\n const b = now[i] as AdCopyLine;\n if (a.text !== b.text) out.push(`Change the words \"${a.text}\"${onSurface(a)} to exactly \"${b.text}\".`);\n if ((a.on ?? \"\") !== (b.on ?? \"\") && b.on)\n out.push(`Letter \"${b.text}\" on ${b.on}${a.on ? ` instead of ${a.on}` : \"\"}.`);\n }\n for (const added of now.slice(was.length)) out.push(`Letter the words \"${added.text}\"${onSurface(added)}.`);\n for (const removed of was.slice(now.length)) out.push(`Remove the words \"${removed.text}\" from the picture.`);\n return out;\n}\n\n/**\n * On one picture (`plate`), the edit a new prompt.json asks of the version's picture itself: the\n * colours of what the picture shows (a wall, the background) and the words lettered in it (a label,\n * a sign), as one instruction. Its designed words, their colours and what carries them are set again\n * on every size from prompt.json, never edited into the picture. Null when nothing the picture shows\n * changed, or anything beyond the words and the colours did (new pictures are needed). Pure.\n */\nexport function pictureEdit(previous: unknown, next: unknown): string | null {\n const before = specOf(previous);\n const after = specOf(next);\n if (!before || !after || frame(before) !== frame(after)) return null;\n const changed = after.colors.filter((use) => {\n const was = before.colors.find((c) => c.object === use.object);\n return !isWordsObject(use.object) && !(was && was.name === use.name && was.hex === use.hex);\n });\n const ground = after.brand?.ground;\n const edits = [\n ...inSceneEdits(before.copy, after.copy),\n ...changed.map((use) => `Make ${use.object} ${use.name}${use.hex ? ` (${use.hex})` : \"\"}.`),\n ...(typeof ground === \"string\" && before.brand?.ground !== ground ? [`Make the background ${ground}.`] : []),\n ];\n return edits.length > 0 ? edits.join(\" \") : null;\n}\n\n/**\n * The edit a plain `baker canvas run` (no `--fix`, `--regenerate`, `--use-variant` or `--from`) makes\n * of the version shown, read off prompt.json's change since it: `pictureEdit` on one picture,\n * `specEditInstruction` otherwise. Null when the run draws new pictures, when nothing changed, and\n * on a native screen, which is drawn from prompt.json with no picture to edit. Pure.\n */\nexport function plainRunEdit(canvas: unknown, shownPrompt: unknown, promptNow: unknown): string | null {\n if (isNativeCanvas(canvas)) return null;\n return isPlateCanvas(canvas) ? pictureEdit(shownPrompt, promptNow) : specEditInstruction(shownPrompt, promptNow);\n}\n","import { STATIC_AD_ROLE } from \"../../engine/scaffold/static-render-briefs.ts\";\nimport { STATIC_VARIANTS_ROLE } from \"../../engine/scaffold/static-topology.ts\";\n\n/**\n * A static ad canvas, by role: an ingest tagged as the static ad's blueprint, or a node that\n * renders a static ad's variants. A canvas scaffolded by the overlay engine (a `compose_spec`\n * ingest) still counts, so a creative already in a client workspace reads as one until it is\n * re-scaffolded.\n */\nexport function isStaticAdCanvas(parsed: unknown): boolean {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n if (!Array.isArray(nodes)) return false;\n return nodes.some((n) => {\n const role = (n as { tags?: { role?: unknown } } | null)?.tags?.role;\n if (role === STATIC_VARIANTS_ROLE) return true;\n return n?.type === \"ingest\" && (role === STATIC_AD_ROLE || n?.id === \"compose_spec\");\n });\n}\n","/**\n * Who a static ad's copy names, read by the text model the claim gate reads with (`claim-check.ts`\n * `CLAIMS_MODEL`): a fast extraction pinned to one provider at temperature 0, so the same copy\n * reads the same, and kept in the workspace's cache by the copy, the model and the prompt. The\n * answer is checked against the copy (`readPeople`); a reading that fails is null, and the caller\n * casts nobody rather than guess. Measured on 2026-10-07 (scripts/named-people-evals): see\n * docs/decision-model.md.\n */\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { askAboutText, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport {\n type NamedPerson,\n PEOPLE_PROMPT_VERSION,\n type PeopleReader,\n peoplePrompt,\n readPeople,\n} from \"../../engine/scaffold/static-named-people.ts\";\nimport { CLAIMS_MODEL, CLAIMS_REQUEST } from \"./claim-check.ts\";\n\nconst PEOPLE_TIMEOUT_MS = 30_000;\n\n/** The real reader: each copy read once and kept in `cacheDir`, the spend of every call made going to `spent`. */\nexport function peopleReader(cacheDir: string, spent: (usage: ReviewUsage) => void): PeopleReader {\n const dir = path.join(cacheDir, \"named-people\");\n return async (lines) => {\n const said = lines.filter((l) => l.trim());\n if (said.length === 0) return [];\n const key = createHash(\"sha256\")\n .update(JSON.stringify([PEOPLE_PROMPT_VERSION, CLAIMS_MODEL, said]))\n .digest(\"hex\");\n const file = path.join(dir, `${key}.json`);\n const cached = await readFile(file, \"utf8\")\n .then((text) => readPeople(JSON.parse(text), said))\n .catch(() => null);\n if (cached) return cached;\n const answer = await askAboutText(CLAIMS_MODEL, peoplePrompt(said), spent, {\n timeoutMs: PEOPLE_TIMEOUT_MS,\n request: CLAIMS_REQUEST,\n });\n const people: NamedPerson[] | null = readPeople(answer, said);\n if (people) {\n await mkdir(dir, { recursive: true });\n await writeFile(file, JSON.stringify(answer), \"utf8\");\n }\n return people;\n };\n}\n","/**\n * What a static ad's run does on its own when the review finds a blocking defect: one more\n * render that answers it, before anyone sees the ad. Tier 1, Oct 2026: a first render shown as\n * \"needs fixes\" read as failure (\"why doesn't it autofix based on findings until no needs\n * fixes\"), and the agent did not always run the fix the hints named. Pure.\n */\nimport type { FindingKind, RenderFinding } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { formatOfAdaptId, plannedPlacements } from \"../../engine/scaffold/static-adapt-briefs.ts\";\nimport { adaptPlan } from \"../../engine/scaffold/static-adapt.ts\";\nimport { isNativeCanvas } from \"../../engine/scaffold/static-native-graph.ts\";\nimport { type LastFix, repeatsFailedFix } from \"./static-edit.ts\";\nimport { nearestSupportedAspectRatio } from \"@baker/canvas-contract\";\nimport {\n SERIES_LEAD_ROLE,\n formatSlug,\n LOGO_COMPOSITE_ROLE,\n nodesWithRole,\n rolesById,\n STATIC_ADAPT_FORMAT_ROLE,\n STATIC_FORMAT_ROLE,\n STATIC_MASTER_ROLE,\n STATIC_PLACE_ROLE,\n STATIC_PLATE_ROLE,\n STATIC_VARIANT_CALL_ROLE,\n STATIC_VARIANTS_ROLE,\n} from \"../../engine/scaffold/static-topology.ts\";\n\n/** The rounds a run corrects itself before it reports what is left. */\nexport const AUTO_FIX_ROUNDS = 3;\n\nexport type AutoFixStep =\n /**\n * The chosen picture corrected (`--fix`) for its own findings: every size is made again from it,\n * each re-laid size in `relay` told what it must change too, but the sizes in `keep` (nothing\n * blocking on them), delivered as they were.\n */\n | { kind: \"fix\"; instruction: string; relay?: Record<string, string>; keep?: string[]; extend?: string[] }\n /** Only these re-laid-out sizes, each an edit of its last layout (`edits`, by node id) from the same picture. */\n | { kind: \"relayout\"; ids: string[]; edits: Record<string, string>; extend?: string[] }\n /**\n * Only these sizes placed inside their band by code, their margins painted (`withExtendedSizes`).\n * A fix or a re-layout places the sizes in `extend` too, after making them.\n */\n | { kind: \"extend\"; sizes: string[] }\n /** A new picture from the same brief, told what the last one got wrong: every size follows. */\n | { kind: \"regenerate\"; ids: string[]; note: string; brief?: string[]; extend?: string[] }\n /** The spec (prompt.json) corrected for what it caused, and the ad drawn again from it (a native screen: free). */\n | { kind: \"respec\"; findings: string[] };\n\n/**\n * A defect of the picture as a whole, which an edit of it does not mend: subjects that differ\n * where they should be one, a composition or concept that does not read, a ghost or a smear, a\n * face that looks AI-made. Garbled words are erased by an edit (Oct 2026 bench: two new pictures\n * brought them back). Read off the review model's typed fields (`FindingKind`), never its words.\n */\nfunction wholePicture(f: RenderFinding): boolean {\n const kind = f.kind;\n if (!kind) return false;\n return (\n kind.item === \"subject\" ||\n kind.item === \"one_idea\" ||\n kind.item === \"concept\" ||\n ((kind.item === \"picture\" || kind.item === \"native\" || kind.item === \"rule\") && kind.element === \"picture\")\n );\n}\n\n/**\n * A defect the brief asked for: a subject or a concept the spec sets up, a rating it shows with no\n * source, a stranger shown as a real person it names. No edit of the picture mends it, and a new\n * picture from the same brief brings it back: the spec is corrected first (`static-spec-repair.ts`).\n */\nconst BRIEF_ITEMS: ReadonlySet<FindingKind[\"item\"]> = new Set([\"subject\", \"concept\", \"proof\", \"person\"]);\nconst fromBrief = (f: RenderFinding): boolean =>\n f.kind !== undefined && (BRIEF_ITEMS.has(f.kind.item) || (f.kind.item === \"rule\" && f.kind.element === \"picture\"));\n\n/**\n * A company rule the ad's words break: the agent's to rewrite in prompt.json. An edit of the picture\n * keeps every word, and a repair may not reword one, so no automatic round mends it.\n */\nconst wordsBreakRule = (f: RenderFinding): boolean => f.kind?.item === \"rule\" && f.kind.element === \"copy\";\n\n/** A size that lost what stopped the scroll or the proof of the proven ad (`vitalFindings`). */\nexport const lostVital = (f: RenderFinding): boolean =>\n f.severity === \"blocking\" && f.kind?.item === \"concept\" && f.kind.job !== undefined;\n\n/**\n * What the agent is told when a size lost what made its proven ad win: restore it as the plan\n * decided, or build the idea on another proven ad when nothing of ours may carry it; never shown as\n * done. Owner, Oct 2026: a meme ad without its reaction faces would have shipped. Null when nothing\n * of the kind was lost. Pure.\n */\nexport function keptLostHint(review: readonly RenderFinding[], idea?: string): string | null {\n const lost = unique(review.filter(lostVital).map((f) => f.what.replace(/\\.$/, \"\")));\n if (lost.length === 0) return null;\n return `Not done: what made the proven ad win is gone (${lost.join(\"; \")}). Never show this version as done: restore it as the plan decided it (its line under \"What survives and what changes\" and prompt.json's \\`concept.load_bearing\\`, carried in the scene, the references and the lines' \\`look\\`) and run again; if nothing of ours may carry it, build the idea on another proven ad (\\`baker winning-ads fit <adId>\\` on the next candidates, then \\`baker creatives make ${idea ?? \"<idea>\"} --slug <new slug> --reference <adId>\\`) and tell the person why, in one line.`;\n}\n\n/**\n * Whether a run's corrections stop: the plan was asked to restore what made its proven ad win (`brief`,\n * the findings handed to the spec repair) and no repair was written (refused, as a stranger cast in its\n * place, or not answered), so a picture drawn again from the same plan would come back without it. A\n * round that restores it some other way (a size laid out again from a lead that has it) goes on. Pure.\n */\nexport function stopsWithoutRepair(\n review: readonly RenderFinding[],\n brief: readonly string[],\n repaired: boolean,\n): boolean {\n return !repaired && review.some((f) => lostVital(f) && brief.includes(withoutSize(f.what)));\n}\n\n/** The review's finding that one size does not show the same ad as the others (`static-review.ts` item 12). */\nconst comparesSizes = (f: RenderFinding): boolean => f.kind?.item === \"sizes\";\n\n/** A button, a logo or a line the review saw cut by the frame: placed, never asked to move. */\nconst cutCopy = (f: RenderFinding): boolean =>\n f.kind?.defect === \"cut\" && (f.kind.element === \"logo\" || f.kind.element === \"button\" || f.kind.element === \"copy\");\n\n/**\n * A finding about the words a size's words call set (`static_format`): a line misread, missing or\n * added, a block under an interface or cut by the frame, or the copy, button or logo as the review\n * typed it. A size cut from one picture sets only these again; a defect of the picture is the picture's.\n */\nfunction aboutWords(f: RenderFinding): boolean {\n const what = withoutSize(f.what);\n return (\n PLACED.some((p) => p.test(what)) ||\n MISREAD.test(what) ||\n MISSING.test(what) ||\n EXTRA_WORDS.test(what) ||\n cutCopy(f) ||\n (f.kind !== undefined && [\"copy\", \"button\", \"logo\"].includes(f.kind.element))\n );\n}\n\n/** How the review says a size's words came with a patch of redrawn picture (`static_format` `words_misaligned`). */\nexport const PATCHED_WORDS = \"the words came with a patch of redrawn picture around them\";\n\n/** How the review says where a size's words sit could not be read (`static_format` `words_not_read`). */\nexport const UNREAD_WORDS = \"where the words sit could not be read\";\n\n/** What the words layer leaves on a picture: a halo, a seam, a patch, box or scrim behind the words, a smear beside them. */\nconst ARTIFACT =\n /\\b(?:halos?|glow|seams?|smears?|smudges?|blotch(?:es)?|patch(?:es)?|box(?:es)?|rectangles?|scrims?|backings?|ghost(?:ed|ing|s)?)\\b/i;\n/** The words a finding about the words layer names them by. */\nconst WORDS = /\\b(?:words?|text|copy|headline|lines?|lettering|type|quote|caption|label|button|pill|cta|logo)\\b/i;\n\n/**\n * A defect the words call left on a size cut from one picture (dev, Oct 2026: halos, boxes behind the\n * copy, a seam round the text block, a smear beside the button), which the review may type as one of\n * the picture. The picture under it is right: that size's words are set again, never new pictures drawn.\n */\nconst wordsArtifact = (f: RenderFinding): boolean => {\n const what = withoutSize(f.what);\n return ARTIFACT.test(what) && WORDS.test(what);\n};\n\n/** This many blocking defects in one picture say it was rolled badly: a new one is cheaper than three edits. */\nconst MANY_DEFECTS = 3;\n\n/** A finding's own words without the size or sizes it names first (\"9:16: …\", \"4:5, 9:16: …\"). */\nconst withoutSize = (what: string): string =>\n what.replace(/^\\d+(?:\\.\\d+)?:\\d+(?:\\.\\d+)?(?:,\\s*\\d+(?:\\.\\d+)?:\\d+(?:\\.\\d+)?)*:\\s*/, \"\");\n\n/** The sizes a finding names first (\"9:16: …\", \"4:5, 9:16: …\"); none for one about the ad as a whole. */\nconst sizesOf = (what: string): string[] =>\n what.match(/^(\\d+(?:\\.\\d+)?:\\d+(?:\\.\\d+)?(?:,\\s*\\d+(?:\\.\\d+)?:\\d+(?:\\.\\d+)?)*):\\s/)?.[1]?.split(/,\\s*/) ?? [];\n\n/**\n * A round's review with the sizes whose picture did not change (`unchanged`) judged as the last\n * round judged them: a finding about only those sizes is the review's second look at the same\n * pixels, never a defect of the round, so the last round's findings on them stand instead.\n * Oct 2026 bench: an untouched 4:5 handed a new blocking defect in round 2 left three ads unfixed. Pure.\n */\nexport function carryUnchanged(\n now: readonly RenderFinding[],\n prior: readonly RenderFinding[],\n unchanged: readonly string[],\n): RenderFinding[] {\n // A finding comparing the sizes reads the others too, and one of them changed: it is read anew.\n const settled = (f: RenderFinding) => {\n const sizes = sizesOf(f.what);\n return sizes.length > 0 && sizes.every((s) => unchanged.includes(s)) && !comparesSizes(f);\n };\n return [...now.filter((f) => !settled(f)), ...prior.filter(settled)];\n}\n\n/** The share of each edge of a size that an interface covers or the frame trims (`blockingArea`). */\nexport type CoveredEdges = { top: number; bottom: number; left: number; right: number };\n\nconst pct = (share: number): string => `${Math.round(share * 100)}%`;\n\n/** A block past the band, as the review says it (`static-review.ts` `outsideBand`). */\nconst PAST_BAND = /^(.+?) sits? (?:close to )?where (.+?) covers? (?:it|them) \\((.+)\\)\\.?$/;\nconst OFF_EDGE = /^(.+?) runs? off the edge of the picture \\((.+)\\)\\.?$/;\nconst OUTSIDE_SPACE = /^(.+?) sits? outside the space every size keeps clear \\((.+)\\)\\.?$/;\nconst EXTRA_WORDS = /^the picture adds words that aren't in the copy: (.+?)\\. Remove them, or add them to the copy\\.?$/;\nconst SCENE_PRICES = /^the picture shows prices the copy does not hold: (.+?)\\. Make them unreadable\\.?$/;\n/** The review's measured placement findings: where a block sits past the band or the frame. */\nconst PLACED = [PAST_BAND, OFF_EDGE, OUTSIDE_SPACE];\nconst MISREAD = /^Text: (\".+\") reads (\".*\")\\.?$/;\nconst MISSING = /^Text: (\".+\") is missing\\.?$/;\n\n/**\n * How a move fits a full layout: an edit told only to move the button returned the same picture\n * twice, keeping \"everything else exactly\" (Oct 2026 bench).\n */\nconst MAKE_ROOM =\n \"Make the room by moving what is next to it with it and shortening the picture or the gaps, keeping every block in its order.\";\n\n/** How far past the covered band a move aims. */\nconst OVERSHOOT = 0.06;\n\n/** Where a block that crosses `edges` must move so nothing covers it, with the targets `band` gives. */\nfunction moveInto(what: string, edges: string, band?: CoveredEdges): string {\n const at = (edge: string) => edges.includes(edge);\n // Aimed past the band's edge: an edit moves a block less than it is asked (Oct 2026 bench: told\n // \"above 78%\", a button went from 92% to 88%).\n const top = band ? band.top + OVERSHOOT : 0;\n const bottom = band ? band.bottom + OVERSHOOT : 0;\n const vertical = at(\"bottom\") && at(\"top\")\n ? band\n ? `so all of it sits between ${pct(top)} and ${pct(1 - bottom)} of the height`\n : \"into the middle of the frame, away from its top and bottom\"\n : at(\"bottom\") && band ? `up so all of it sits above ${pct(1 - bottom)} of the height, the bottom ${pct(bottom)} showing only the picture`\n : at(\"top\") && band ? `down so all of it sits below ${pct(top)} of the height, the top ${pct(top)} showing only the picture`\n : at(\"bottom\") ? \"up, away from the bottom of the frame\"\n : at(\"top\") ? \"down, away from the top of the frame\"\n : \"\";\n const sides = ([\"right\", \"left\"] as const).filter((e) => at(e === \"right\" ? \"right edge\" : \"left edge\"));\n const side = sides.map((e) => (band ? `at least ${pct(band[e])} in from the ${e} edge` : `away from the ${e} edge`)).join(\" and \");\n if (!vertical) return `Move ${what} ${side}`;\n return side ? `Move ${what} ${vertical}, and ${side}` : `Move ${what} ${vertical}`;\n}\n\n/**\n * One blocking finding as the edit that answers it, with a target where the review measured one:\n * where a block must move (`band`, the size's covered edges), the words to erase, the line to\n * re-letter or add, else the defect to fix in the review's own words. Null for a finding no edit\n * answers (the copy could not be read back). Oct 2026 bench: handed the review's diagnosis, the\n * image model changed nothing in two rounds out of three. Pure.\n */\nexport function correctionOf(finding: string, band?: CoveredEdges, kind?: FindingKind): string | null {\n const what = withoutSize(finding).trim();\n if (/could not be read back/.test(what)) return null;\n const past = what.match(PAST_BAND);\n if (past) {\n const [, block = \"\", surface = \"\", edges = \"\"] = past;\n const covers = band && edges.includes(\"bottom\") && edges.includes(\"top\")\n ? `: ${surface} covers the top ${pct(band.top)} and the bottom ${pct(band.bottom)} of the frame`\n : band && edges.includes(\"bottom\") ? `: ${surface} covers the bottom ${pct(band.bottom)} of the frame`\n : band && edges.includes(\"top\") ? `: ${surface} covers the top ${pct(band.top)} of the frame`\n : \"\";\n return `${moveInto(block, edges, band)}${covers}. ${MAKE_ROOM}`;\n }\n const off = what.match(OFF_EDGE) ?? what.match(OUTSIDE_SPACE);\n if (off) {\n const [, block = \"\", edges = \"\"] = off;\n const named = edges.replace(/the (top|bottom) of the screen/g, \"the $1 edge\").replace(/ and /g, \" and \");\n return `Move ${block} fully inside the frame, with clear space between it and ${named}, smaller if it needs to be.`;\n }\n const extra = what.match(EXTRA_WORDS);\n if (extra) {\n return `Erase these words wherever they appear, leaving the surface they are on blank or with plain lines: ${extra[1]}.`;\n }\n const prices = what.match(SCENE_PRICES);\n if (prices) {\n return `Blur these figures until no digit can be read, keeping the document or screen they are on as it is: ${prices[1]}.`;\n }\n const misread = what.match(MISREAD);\n if (misread) return `Re-letter ${misread[1]} exactly as written, letter for letter (it now reads ${misread[2]}).`;\n const missing = what.match(MISSING);\n if (missing) return `Add the line ${missing[1]}, spelled exactly, where it belongs in the layout.`;\n if (kind?.item === \"sizes\") return FOLLOW_PICTURE;\n const described = what.replace(/\\.$/, \"\");\n return `Fix this: ${described.charAt(0).toLowerCase()}${described.slice(1)}.`;\n}\n\n/**\n * The next automatic step for a reviewed run, or null when there is none: the ad is ready, was\n * not reviewed, is a native screen (drawn from prompt.json, nothing to correct), or the rounds\n * are spent. When every blocking finding is on re-laid-out sizes, only those are laid out again.\n * A picture wrong as a whole (`wholePicture`), wrong in many places, or still wrong after a\n * correction is made again from its brief, told what to avoid; otherwise it is corrected for the\n * blocking findings. A picture the person chose (`keepPicture`, `--use-variant`) is only ever\n * corrected, never replaced. Every size follows the picture.\n */\nexport function autoFixStep(\n canvas: unknown,\n review: readonly RenderFinding[] | null,\n opts: {\n round?: number;\n previous?: AutoFixStep[\"kind\"];\n keepPicture?: boolean;\n lastFix?: LastFix;\n /** Sizes this run's placing passed on unmoved (`placedTooFar`): laid out again, never placed again. */\n tooFar?: readonly string[];\n /** Blocking findings earlier rounds of this correction had and this one no longer has (`fixedSince`). */\n fixedBefore?: readonly string[];\n } = {},\n): AutoFixStep | null {\n if ((opts.round ?? 0) >= AUTO_FIX_ROUNDS) return null;\n const flagged = (review ?? []).filter((f) => f.severity === \"blocking\" && !wordsBreakRule(f));\n if (flagged.length === 0) return null;\n // A native screen is typeset from its spec: correcting the spec is the edit, and it redraws for free.\n if (isNativeCanvas(canvas)) return { kind: \"respec\", findings: unique(flagged.map((f) => f.what)) };\n const relaid = relaidSizes(canvas);\n const blocking = onDerivedSizes(flagged, relaid);\n // A size cut from a picture painted wider differs from the main size only where it was painted: that is painted again.\n const painted = paintedPlates(canvas);\n const onPainted = (f: RenderFinding) =>\n comparesSizes(f) && sizesOf(f.what).length > 0 && sizesOf(f.what).every((size) => painted.has(size));\n // Words whose call moved the picture left a patch: an edit of that render keeps the move, so they are set again from scratch.\n const cutSizes = new Map(relaid.filter((r) => r.words).map((r) => [r.format, r.id] as const));\n // What the proven ad won on, gone, is never the words layer's patch: the plan is repaired toward it.\n const patched = (f: RenderFinding) =>\n !lostVital(f) &&\n ([PATCHED_WORDS, UNREAD_WORDS].some((said) => withoutSize(f.what).startsWith(said)) || wordsArtifact(f)) &&\n sizesOf(f.what).length > 0 &&\n sizesOf(f.what).every((size) => cutSizes.has(size));\n // A size whose words left a box or a halo has its words set again; a misread line beside it is set again with them.\n const wordsOnly = (f: RenderFinding) =>\n patched(f) || (aboutWords(f) && sizesOf(f.what).length > 0 && sizesOf(f.what).every((size) => cutSizes.has(size)));\n if (blocking.length > 0 && blocking.some(patched) && blocking.every(wordsOnly)) {\n return {\n kind: \"regenerate\",\n ids: unique(blocking.flatMap((f) => sizesOf(f.what).flatMap((size) => cutSizes.get(size) ?? []))),\n note: unique(blocking.map((f) => withoutSize(f.what))).join(\" \"),\n };\n }\n if (blocking.length > 0 && blocking.every(onPainted)) {\n return {\n kind: \"regenerate\",\n ids: unique(blocking.flatMap((f) => sizesOf(f.what).flatMap((size) => painted.get(size) ?? []))),\n note: `The last picture painted from the chosen one had this wrong, so avoid it: ${unique(blocking.map((f) => withoutSize(f.what))).join(\" \")}`,\n };\n }\n // A re-laid size its placing found too far out: placing it again would pass it on unchanged. A size\n // cut from one picture is never placed: its words are set again instead.\n const worded = relaid.filter((r) => r.words).map((r) => r.format);\n const unplaceable = new Set([\n ...(opts.tooFar ?? []).filter((format) => relaid.some((r) => r.format === format)),\n ...worded,\n ]);\n // Words or a logo an interface covers, or the frame cuts: code places the size, the model paints its margins.\n const misplaced = (f: RenderFinding) => {\n const what = withoutSize(f.what);\n const sizes = sizesOf(f.what);\n return (\n sizes.length > 0 &&\n !sizes.every((size) => unplaceable.has(size)) &&\n (PLACED.some((p) => p.test(what)) || cutCopy(f))\n );\n };\n const extend = unique(blocking.filter(misplaced).flatMap((f) => sizesOf(f.what))).filter((size) => !unplaceable.has(size));\n const placing = extend.length > 0 ? { extend } : {};\n const rest = blocking.filter((f) => !misplaced(f));\n const at = (f: RenderFinding) => relaid.find((r) => f.what.startsWith(`${r.format}:`) && (!r.words || aboutWords(f)));\n // Each re-laid size's other findings as the edits that answer them.\n const keepRight = keptRules(opts.fixedBefore);\n const edits: Record<string, string> = {};\n for (const r of relaid) {\n const lines = unique(rest.filter((f) => at(f) === r).flatMap((f) => correctionOf(f.what, r.band, f.kind) ?? []));\n if (lines.length > 0) edits[r.id] = [...lines, ...(keepRight ? [keepRight] : [])].join(\" \");\n }\n // Nothing done to the picture itself, or only the sizes: whatever else is wrong with it.\n const sizesOnly = (): AutoFixStep | null => {\n const ids = Object.keys(edits);\n if (ids.length > 0) return { kind: \"relayout\", ids, edits, ...placing };\n return extend.length > 0 ? { kind: \"extend\", sizes: extend } : null;\n };\n // A re-layout or a placing left the picture as it was: what the review now reads into it on one size\n // is the review's own second look, never a defect of the round (Oct 2026 bench). The same defect\n // read on two sizes is in the picture they both show (Dev, Oct 2026: garbled words on an envelope).\n const onSeveralSizes = (f: RenderFinding) => {\n const what = withoutSize(f.what);\n return new Set(rest.filter((g) => withoutSize(g.what) === what).flatMap((g) => sizesOf(g.what))).size >= 2;\n };\n const settledPicture = opts.previous === \"relayout\" || opts.previous === \"extend\";\n // The words layer's own box or halo on a size cut from the picture is no defect of the picture: its words follow the picture.\n const pictureFindings = rest.filter((f) => !at(f) && !patched(f) && (!settledPicture || onSeveralSizes(f)));\n const onPicture = unique(pictureFindings.map((f) => withoutSize(f.what)));\n if (onPicture.length === 0) return sizesOnly();\n // A new or corrected picture can bring its words or logo past an edge with no round left to see it:\n // every size is placed after it (a size already inside passes on as it was).\n const every = unique([...extend, ...deliveredSizes(canvas)]).filter((size) => !worded.includes(size));\n const afterNewPicture = every.length > 0 ? { extend: every } : {};\n // Still wrong after a correction: the same defect the correction was asked to mend.\n const persisting = new Set((opts.lastFix?.blocking ?? []).map(withoutSize));\n const stillWrong = opts.previous === \"fix\" && onPicture.some((w) => persisting.has(w));\n const brief = unique(pictureFindings.filter(fromBrief).map((f) => withoutSize(f.what)));\n const rollAgain =\n stillWrong || brief.length > 0 || onPicture.length >= MANY_DEFECTS || pictureFindings.some(wholePicture);\n // A new picture brings new defects: only a round with another after it may draw one (Oct 2026 bench: 4 of 13).\n const last = (opts.round ?? 0) >= AUTO_FIX_ROUNDS - 1;\n // A defect the brief caused is certain to stand otherwise: its correction is worth a new picture even last.\n if (rollAgain && (!last || brief.length > 0) && !opts.keepPicture && nodesWithRole(canvas, STATIC_VARIANTS_ROLE).length > 0) {\n return {\n kind: \"regenerate\",\n ids: [STATIC_VARIANTS_ROLE],\n note: [`The last picture made from this brief had this wrong, so avoid it: ${onPicture.join(\" \")}`, ...(keepRight ? [keepRight] : [])].join(\" \"),\n ...(brief.length > 0 ? { brief } : {}),\n ...afterNewPicture,\n };\n }\n const changes = unique(\n pictureFindings.filter((f) => !fromBrief(f)).flatMap((f) => correctionOf(f.what, undefined, f.kind) ?? []),\n );\n if (changes.length === 0) return sizesOnly();\n // A correction mends what the review saw: a re-laid size it saw nothing blocking on stays as it was.\n const named = new Set(blocking.flatMap((f) => sizesOf(f.what)));\n // A size cut from the corrected picture is set again on it: none keeps the picture before.\n const keep = relaid.filter((r) => !r.words).map((r) => r.format).filter((format) => !named.has(format));\n const remade = every.filter((size) => !keep.includes(size));\n const kept = {\n ...(keep.length > 0 ? { keep } : {}),\n ...(remade.length > 0 ? { extend: remade } : {}),\n };\n const asked = `Change only this: ${changes.join(\" \")}`;\n // What the last edit was already asked for and did not take, said as such.\n const again = onPicture.filter((w) => persisting.has(w)).map((w) => w.replace(/\\.$/, \"\"));\n const instruction = [\n again.length > 0\n ? `${asked} The last edit was already asked for this and Image 1 still shows it, so make it clearly: ${again.join(\"; \")}.`\n : asked,\n ...(keepRight ? [keepRight] : []),\n ].join(\" \");\n // The correction that just left these in place would be refused as no progress: this run stands.\n if (repeatsFailedFix(opts.lastFix, asked) || repeatsFailedFix(opts.lastFix, instruction)) return null;\n // A size cut from the corrected picture has its words set on it from scratch: its edit waits for the next round.\n const relay = Object.fromEntries(Object.entries(edits).filter(([id]) => relaid.some((r) => r.id === id && !r.words)));\n return { kind: \"fix\", instruction, ...(Object.keys(relay).length > 0 ? { relay } : {}), ...kept };\n}\n\nconst unique = (lines: readonly string[]): string[] => [...new Set(lines)];\n\n/** One render of a correction run: its run and what the review found. */\nexport type Attempt = { runId: string; review: readonly RenderFinding[] };\n\nconst blockingOf = (review: readonly RenderFinding[]): string[] =>\n unique(review.filter((f) => f.severity === \"blocking\").map((f) => f.what));\n\n/**\n * The attempt the next correction starts from, and what the attempts before had wrong that it has\n * right (`keptRules`): the latest, unless a correction left it with more blocking defects than an\n * earlier attempt, which is then corrected instead. A correction never builds on a worse picture.\n * Prod, Oct 2026: logo too low → seam → logo too low → seam, each round correcting the last. Pure.\n */\nexport function correctFrom(attempts: readonly [Attempt, ...Attempt[]]): Attempt & { fixedBefore: string[] } {\n const latest = attempts[attempts.length - 1] as Attempt;\n const fewest = Math.min(...attempts.map((a) => blockingOf(a.review).length));\n const base = blockingOf(latest.review).length > fewest\n ? (attempts.find((a) => blockingOf(a.review).length === fewest) as Attempt)\n : latest;\n const now = new Set(blockingOf(base.review).map(withoutSize));\n const fixedBefore = unique(\n attempts.filter((a) => a !== base).flatMap((a) => blockingOf(a.review)).filter((what) => !now.has(withoutSize(what))),\n );\n return { ...base, fixedBefore };\n}\n\n/**\n * What earlier rounds fixed, said to the next correction so it keeps them right. Prod, Oct 2026:\n * told only the newest defect, 46% of corrections brought a new one (the pill fixed, the brand's\n * name misspelt; the logo moved, a seam). Null when nothing was fixed before. Pure.\n */\nexport function keptRules(fixedBefore: readonly string[] | undefined): string | null {\n const rules = unique((fixedBefore ?? []).map((f) => withoutSize(f).replace(/\\.$/, \"\")));\n return rules.length > 0\n ? `These were wrong in an earlier version and are right now, so keep them right: ${rules.join(\"; \")}.`\n : null;\n}\n\n\n/** What a re-laid size that strayed from the chosen picture is told. */\nconst FOLLOW_PICTURE =\n \"Show exactly what the finished ad (Image 2) shows: its people, products, panels and their order, and nothing it does not show.\";\n\n/**\n * The findings with a sizes mismatch said of the chosen picture moved onto the sizes laid out\n * from it: every size follows the picture, so the one that differs is the one made from it.\n * Dev, Oct 2026: a 9:16 re-layout added a photo, the review said the 4:5 \"drops the image\", and\n * two rounds edited the 4:5 to match. Pure.\n */\nfunction onDerivedSizes(findings: readonly RenderFinding[], relaid: ReadonlyArray<{ format: string }>): RenderFinding[] {\n if (relaid.length === 0) return [...findings];\n return findings.flatMap((f) => {\n const sizes = sizesOf(f.what);\n const onPicture = sizes.length > 0 && sizes.every((size) => !relaid.some((r) => r.format === size));\n if (!onPicture || !comparesSizes(f)) return [f];\n return relaid.map((r) => ({ ...f, what: `${r.format}: ${withoutSize(f.what)}` }));\n });\n}\n\n/** The sizes the canvas delivers, by the final collect's labels. */\nfunction deliveredSizes(canvas: unknown): string[] {\n const nodes = (canvas as { nodes?: GraphNode[] } | null)?.nodes;\n const labels = Array.isArray(nodes) ? nodes.find((n) => n.id === \"final\" && n.type === \"collect\")?.params?.labels : undefined;\n return Array.isArray(labels) ? labels.filter((l): l is string => typeof l === \"string\") : [];\n}\n\n/**\n * The canvas's sizes made apart from the chosen picture, each with the edges its frame's interface\n * covers: re-laid out from it (`static_adapt_format`), or cut from one picture with their words set\n * for them (`static_format`, `words`: only their words are made again).\n */\nfunction relaidSizes(canvas: unknown): Array<{ id: string; format: string; band: CoveredEdges; words: boolean }> {\n const nodes = (canvas as { nodes?: unknown } | null)?.nodes;\n const placements = Array.isArray(nodes) ? plannedPlacements(nodes) : undefined;\n const relaid = nodesWithRole(canvas, STATIC_ADAPT_FORMAT_ROLE).flatMap((n) => {\n const format = formatOfAdaptId(n.id);\n if (!format) return [];\n const model = String((n as { params?: { model?: unknown } }).params?.model ?? \"\");\n return [{ id: n.id, format, band: adaptPlan(model, format, placements).safe, words: false }];\n });\n const cut = nodesWithRole(canvas, STATIC_FORMAT_ROLE).flatMap((n) => {\n const format = n.params?.format;\n if (typeof format !== \"string\") return [];\n const model = String((n.params?.words as { model?: unknown } | undefined)?.model ?? \"\");\n const own = Array.isArray(n.params?.placements) ? (n.params.placements as string[]) : placements;\n return [{ id: n.id, format, band: adaptPlan(model, format, own).safe, words: true }];\n });\n return [...relaid, ...cut];\n}\n\n/** By format, the picture painted from the chosen one (`static_plate`) a size is cut from. */\nfunction paintedPlates(canvas: unknown): Map<string, string> {\n const plates = new Set(nodesWithRole(canvas, STATIC_PLATE_ROLE).map((n) => n.id));\n return new Map(\n nodesWithRole(canvas, STATIC_FORMAT_ROLE).flatMap((n): Array<[string, string]> => {\n const plate = String((n.inputs as { plate?: unknown } | undefined)?.plate ?? \"\").match(/^\\$ref:([a-z][a-z0-9_]*)\\./)?.[1];\n const format = n.params?.format;\n return plate && plates.has(plate) && typeof format === \"string\" ? [[format, plate]] : [];\n }),\n );\n}\n\n/**\n * The sizes this run's placing (`static_place`) passed on unplaced: their words or logo sat too far\n * past the band for a shrink to clear (`too_far`), or it found them inside it (`inside_band`), so\n * placing again would deliver the same picture. A safe fit's \"too far\" is not one: it stops at\n * `MIN_FIT_SCALE`, and placing paints its margins and shrinks further. Pure.\n */\nexport function placedTooFar(canvas: unknown, outputsByNode: Record<string, Record<string, unknown>>): string[] {\n const placed = nodesWithRole(canvas, STATIC_PLACE_ROLE).flatMap((n) => {\n const format = (n as GraphNode).params?.format;\n // Too far out to clear, or found inside its band while the review blocks it: placing it again repeats it.\n const unmoved = outputsByNode[n.id]?.reason;\n return (unmoved === \"too_far\" || unmoved === \"inside_band\") && typeof format === \"string\" ? [format] : [];\n });\n // A size cut from one picture whose words sat too far past its band for code to move them (`static_format` facts).\n const cut = nodesWithRole(canvas, STATIC_FORMAT_ROLE).flatMap((n) => {\n const format = (n as GraphNode).params?.format;\n const facts = outputsByNode[n.id]?.facts as { reason?: unknown } | undefined;\n return facts?.reason === \"band_too_far\" && typeof format === \"string\" ? [format] : [];\n });\n return [...placed, ...cut];\n}\n\n/** The format a size node delivers: a re-lay's by its id, a size cut from one picture by its params; null for any other node. Pure. */\nexport function formatOfSizeNode(canvas: unknown, id: string): string | null {\n const relaid = formatOfAdaptId(id);\n if (relaid) return relaid;\n const node = nodesWithRole(canvas, STATIC_FORMAT_ROLE).find((n) => n.id === id);\n const format = (node as GraphNode | undefined)?.params?.format;\n return typeof format === \"string\" ? format : null;\n}\n\n/** What one static run did: a fix of the shown picture, a chosen option, or only sizes laid out again. */\nexport type StaticRunShape = { fix: boolean; useVariant: boolean; sizesOnly: boolean };\n\n/**\n * Whether a run renders a new picture, so it is fairly compared with the last one (a retry that\n * changed nothing is a note): never an edit or a fix of the shown picture, a chosen option, or\n * sizes re-laid out from the same picture, which keep it on purpose.\n */\nexport function rendersNewPicture(run: StaticRunShape): boolean {\n return !run.fix && !run.useVariant && !run.sizesOnly;\n}\n\n/** What a run's credits bought, for the cost line: a chosen option is laid out again at each size. Pure. */\nexport function paidFor(run: StaticRunShape): \"edit\" | \"sizes\" | \"options\" {\n if (run.fix) return \"edit\";\n return run.useVariant || run.sizesOnly ? \"sizes\" : \"options\";\n}\n\n/**\n * The canvas with `note` right after the deliverable of each node in `ids` (a new copy; the file is\n * untouched): what the last picture or layout got wrong, read before the brief's forty lines, not\n * after them (Oct 2026 bench: appended last, it changed nothing).\n */\nexport function withRelayNote(canvas: unknown, ids: readonly string[], note: string): unknown {\n const holder = canvas as { nodes?: Array<{ id?: unknown; params?: Record<string, unknown> }> };\n if (!Array.isArray(holder.nodes)) return canvas;\n return {\n ...holder,\n nodes: holder.nodes.map((n) => {\n if (typeof n.id !== \"string\" || !ids.includes(n.id)) return n;\n // A picture painted from the chosen one: the note joins what its painting is told.\n const paint = n.params?.paint as { prompt?: unknown } | undefined;\n if (paint && typeof paint === \"object\") {\n const prompt = [typeof paint.prompt === \"string\" ? paint.prompt : \"\", note].filter(Boolean).join(\"\\n\\n\");\n return { ...n, params: { ...n.params, paint: { ...paint, prompt } } };\n }\n if (typeof n.params?.prompt !== \"string\") return n;\n const [lead = \"\", ...rest] = n.params.prompt.split(\"\\n\\n\");\n return { ...n, params: { ...n.params, prompt: [lead, note, ...rest].join(\"\\n\\n\") } };\n }),\n };\n}\n\ntype GraphNode = {\n id?: unknown;\n type?: unknown;\n inputs?: Record<string, unknown>;\n params?: Record<string, unknown>;\n tags?: { role?: unknown };\n};\n\n/**\n * The canvas with re-laid size `id` made as an edit of its own last layout (`previous`, a URL or a\n * path from the canvas folder) rather than drawn again from the finished ad: that layout leads\n * its pictures as Image 1, the finished ad and the rest follow, and its brief says what to change\n * and to keep the rest. `asked`: what earlier rounds asked that the layout still gets wrong.\n * A new copy; the file is untouched. Pure.\n */\nexport function withRelayEdit(\n canvas: unknown,\n id: string,\n opts: { previous: string; instruction: string; asked?: readonly string[] },\n): unknown {\n const holder = canvas as { nodes?: GraphNode[] };\n if (!Array.isArray(holder.nodes)) return canvas;\n const target = holder.nodes.find((n) => n.id === id);\n if (target?.type === \"static_format\") return withWordsEdit({ nodes: holder.nodes, holder }, target, opts);\n const prompt = target?.params?.prompt;\n const refs = target?.inputs?.reference;\n if (!target || typeof prompt !== \"string\" || !Array.isArray(refs)) return canvas;\n const lastId = `last_${id}`;\n const remote = /^(?:https?|data):/.test(opts.previous);\n const last: GraphNode = {\n id: lastId,\n type: \"ingest\",\n params: remote ? { source: \"url\", url: opts.previous, expect: \"image\" } : { source: \"path\", path: opts.previous, expect: \"image\" },\n };\n const again = opts.asked?.includes(opts.instruction)\n ? \"The last edit was asked for this and Image 1 still shows it wrong, so make the change clearly: \"\n : \"\";\n const lead = `Edit: Image 1 is this ad as it was last laid out for this size. ${again}${opts.instruction} Keep the rest of Image 1 as it is: the picture, the colours, the lettering and every word, its layout changed only as much as this needs.`;\n const kept = prompt\n .split(\"\\n\\n\")\n .slice(1)\n // Its scale was asked against the finished ad; the edit keeps the layout's own.\n .filter((p) => !p.startsWith(\"Scale:\"))\n .map((p) => p.replace(/\\bImage (\\d+)\\b/g, (_, n: string) => `Image ${Number(n) + 1}`))\n .map((p) =>\n p.startsWith(\"References:\")\n ? p\n .replace(\"References:\", \"References:\\nImage 1 (THIS SIZE): the last layout of this size, to edit.\")\n .replace(/^Image 2 \\(AD\\):.*$/m, \"Image 2 (AD): the finished ad this size is made from: its words, logo and picture are the ones to keep.\")\n : p,\n );\n // A series ad's size was made from the lead's own size; edited, it follows this ad's own picture.\n const leads = new Set(\n holder.nodes.flatMap((n) => ((n as { tags?: { role?: unknown } }).tags?.role === SERIES_LEAD_ROLE ? [n.id] : [])),\n );\n const own = refs.map((r) => (typeof r === \"string\" && leads.has(r.match(/^\\$ref:([a-z][a-z0-9_]*)\\./)?.[1]) ? \"$ref:master.image\" : r));\n const edited: GraphNode = {\n ...target,\n inputs: { ...target.inputs, reference: [`$ref:${lastId}.asset`, ...own] },\n params: { ...target.params, prompt: [lead, ...kept].join(\"\\n\\n\") },\n };\n const at = holder.nodes.indexOf(target);\n return { ...holder, nodes: [...holder.nodes.slice(0, at), last, edited, ...holder.nodes.slice(at + 1)] };\n}\n\n/** An ingest of a file by URL (or data URL) or by path from the canvas folder. */\nfunction lastFile(id: string, file: string): GraphNode {\n const remote = /^(?:https?|data):/.test(file);\n return {\n id,\n type: \"ingest\",\n params: remote ? { source: \"url\", url: file, expect: \"image\" } : { source: \"path\", path: file, expect: \"image\" },\n };\n}\n\n/**\n * A size cut from one picture (`static_format`) with its words set as an edit of their last setting\n * (`previous`) on the same picture: that size leads the words call as Image 1 and its brief's pictures\n * move up one; the picture is never redrawn, only its words. Pure.\n */\nfunction withWordsEdit(\n at: { nodes: GraphNode[]; holder: { nodes?: GraphNode[] } },\n target: GraphNode,\n opts: { previous: string; instruction: string; asked?: readonly string[] },\n): unknown {\n const words = target.params?.words as { prompt?: unknown } | undefined;\n if (typeof words?.prompt !== \"string\") return at.holder;\n const lastId = `last_${String(target.id)}`;\n const again = opts.asked?.includes(opts.instruction)\n ? \"The last edit was asked for this and Image 1 still shows it wrong, so make the change clearly: \"\n : \"\";\n const instruction = `Image 1 is this size as its words were last set. ${again}${opts.instruction} Keep the rest of Image 1's words as they are: the lines, the type, the colours and what carries them, moved only as much as this needs. The picture is Image 2's, unchanged.`;\n const prompt = words.prompt\n .replace(/\\bImage (\\d+)\\b/g, (_, n: string) => `Image ${Number(n) + 1}`)\n .replace(\"References:\", \"References:\\nImage 1 (THIS SIZE): this size as its words were last set, to edit.\");\n const edited: GraphNode = {\n ...target,\n inputs: { ...target.inputs, previous: `$ref:${lastId}.asset` },\n params: { ...target.params, words: { ...words, prompt, edit: { instruction } } },\n };\n const index = at.nodes.indexOf(target);\n return {\n ...at.holder,\n nodes: [...at.nodes.slice(0, index), lastFile(lastId, opts.previous), edited, ...at.nodes.slice(index + 1)],\n };\n}\n\n/**\n * The canvas with every re-laid size following a correction of the picture (`--fix`): each one\n * edited from its own last layout (`last`, by node id) to make the same `change`, and what `also`\n * names for it, rather than laid out again from nothing, which lost the round before's fix of it\n * (Oct 2026 bench: 3 of 13 ads). A size with no last layout is laid out again, told `also`. Pure.\n */\nexport function withSizesFollowingFix(\n canvas: unknown,\n opts: { last: Record<string, string>; change: string; also?: Record<string, string> },\n): unknown {\n let out = canvas;\n for (const n of nodesWithRole(canvas, STATIC_ADAPT_FORMAT_ROLE)) {\n const also = opts.also?.[n.id];\n const previous = opts.last[n.id];\n if (previous) {\n const instruction = `Make the change the finished ad (Image 2) just had: ${opts.change}${also ? ` ${also}` : \"\"}`;\n out = withRelayEdit(out, n.id, { previous, instruction });\n } else if (also) out = withRelayNote(out, [n.id], `This size must also change this: ${also}`);\n }\n return out;\n}\n\n/** What the model that paints a placed size's margins is told. */\nconst EXTEND_PROMPT = [\n \"Deliverable: Image 1 is a finished ad set inside a frame with flat grey margins around it. Paint only the grey: continue the picture outward into it so the whole frame reads as one picture, the scene going on (the wall, the floor, the sky, the room) or, where the ad has no scene, its own plain ground and colours.\",\n \"Keep everything that is not grey exactly where and as it is: every word, the logo, the button, the people, the products. Nothing in it moves, grows or is redrawn.\",\n \"Add nothing in the grey: no words, no letters, no logos, no buttons, no new people or objects, no frames, borders or shadows around the ad. Never repeat any part of the ad in it: no second logo, button, line of text, card or person; the grey is only more of the room, the table, the floor, the sky or the plain ground.\",\n].join(\"\\n\\n\");\n\n/**\n * The canvas with each size in `formats` placed and extended before it is delivered: a\n * `static_place` reads where its words and logo sit and sets the ad inside the size's band, and a\n * `static_extend_merge` has the ad's own model paint the margins that leaves (in its render shape)\n * and lays the ad's pixels back over the painting, delivered in the size's place. A size already\n * inside its band is passed on as it is, with nothing painted.\n * Placed at run time, so it follows whatever the round made of the size (a fix, a re-layout). Pure.\n */\nexport function withExtendedSizes(canvas: unknown, formats: readonly string[]): unknown {\n const holder = canvas as { nodes?: GraphNode[] };\n if (!Array.isArray(holder.nodes)) return canvas;\n const nodes = holder.nodes;\n const final = nodes.find((n) => n.id === \"final\" && n.type === \"collect\");\n const labels = final?.params?.labels;\n const images = final?.inputs?.images;\n if (!final || !Array.isArray(labels) || !Array.isArray(images)) return canvas;\n const painter =\n nodesWithRole(canvas, STATIC_ADAPT_FORMAT_ROLE)[0] ?? nodesWithRole(canvas, STATIC_VARIANT_CALL_ROLE)[0];\n const params = (painter as GraphNode | undefined)?.params ?? {};\n const model = typeof params.model === \"string\" ? params.model : undefined;\n if (!model) return canvas;\n const placements =\n plannedPlacements(nodes) ??\n (nodes.find((n) => n.type === \"static_safe_fit\" && Array.isArray(n.params?.placements))?.params?.placements as\n | string[]\n | undefined);\n const copy = placingCopy(nodes);\n const added: GraphNode[] = [];\n const delivered = [...images];\n // The logo file placed on a size is placed last again, on the size as it is placed.\n const logoOn = new Map<string, GraphNode>();\n // A size cut from one picture keeps its words inside its band itself: it is never placed and painted.\n const cut = new Set(nodesWithRole(canvas, STATIC_FORMAT_ROLE).map((n) => `$ref:${n.id}.image`));\n for (const format of formats) {\n const at = labels.indexOf(format);\n const reads = images[at];\n const composite = nodes.find(\n (n) => typeof reads === \"string\" && reads === `$ref:${String(n.id)}.image` && n.tags?.role === LOGO_COMPOSITE_ROLE,\n );\n const source = composite ? composite.inputs?.image : reads;\n if (at < 0 || typeof source !== \"string\" || cut.has(source)) continue;\n const slug = formatSlug(format);\n const ratio = nearestSupportedAspectRatio(\"image_generate\", model, format);\n added.push(\n {\n id: `place_${slug}`,\n type: \"static_place\",\n inputs: { image: source },\n params: {\n format,\n render_ratio: ratio,\n ...(placements ? { placements: [...placements] } : {}),\n ...(copy ? { copy } : {}),\n },\n tags: { role: STATIC_PLACE_ROLE },\n } as GraphNode,\n {\n id: `merge_${slug}`,\n type: \"static_extend_merge\",\n inputs: { placed: `$ref:place_${slug}.placed`, shown: `$ref:place_${slug}.shown`, keep: `$ref:place_${slug}.keep` },\n params: {\n render_ratio: ratio,\n paint: {\n model,\n aspect_ratio: ratio,\n ...(params.quality !== undefined ? { quality: params.quality } : {}),\n ...(params.image_size !== undefined ? { image_size: params.image_size } : {}),\n prompt: EXTEND_PROMPT,\n },\n },\n },\n );\n if (composite) logoOn.set(String(composite.id), { ...composite, inputs: { ...composite.inputs, image: `$ref:merge_${slug}.image` } });\n else delivered[at] = `$ref:merge_${slug}.image`;\n }\n if (added.length === 0) return canvas;\n const kept = nodes.filter((n) => n !== final && !logoOn.has(String(n.id)));\n return {\n ...holder,\n nodes: [...kept, ...added, ...logoOn.values(), { ...final, inputs: { ...final.inputs, images: delivered } }],\n };\n}\n\n/**\n * The ad's copy as the scaffolded steps were told it (`projectPlacementCopy`): a placing step's,\n * else the words a re-lay keeps (no roles). Undefined when the canvas carries neither.\n */\nfunction placingCopy(nodes: readonly GraphNode[]): unknown[] | undefined {\n const told = nodes.find(\n (n) => (n.type === \"static_safe_fit\" || n.type === \"static_place\") && Array.isArray(n.params?.copy),\n )?.params?.copy;\n if (Array.isArray(told)) return told;\n const kept = nodes.find((n) => n.type === \"image_aspect_adapt\" && Array.isArray(n.params?.copy))?.params?.copy;\n return Array.isArray(kept) ? kept.filter((t) => typeof t === \"string\").map((text) => ({ text })) : undefined;\n}\n\n/**\n * The canvas delivering each size from the last version's own file (`last`, by format: a URL, a\n * data URL or a path): a round that only places sizes (`withExtendedSizes`) makes nothing upstream\n * again, and the engine skips what no size reads any more. A size with no file keeps its node. Pure.\n */\n/** The role of the node a size is delivered from, through the logo file placed on it (which reads the size under it). */\nfunction deliveredRole(ref: unknown, nodes: readonly GraphNode[], roles: Record<string, string>): string | undefined {\n const idOf = (r: unknown) => (typeof r === \"string\" ? /^\\$ref:([^.]+)\\./.exec(r)?.[1] : undefined);\n const read = idOf(ref);\n const composite = read && roles[read] === LOGO_COMPOSITE_ROLE ? nodes.find((n) => n.id === read) : undefined;\n const from = composite ? idOf(composite.inputs?.image) : read;\n return from ? roles[from] : undefined;\n}\n\nexport function withDeliveredSizes(canvas: unknown, last: Record<string, string>): unknown {\n const holder = canvas as { nodes?: GraphNode[] };\n if (!Array.isArray(holder.nodes)) return canvas;\n const final = holder.nodes.find((n) => n.id === \"final\" && n.type === \"collect\");\n const labels = final?.params?.labels;\n const images = final?.inputs?.images;\n if (!final || !Array.isArray(labels) || !Array.isArray(images)) return canvas;\n const ingests: GraphNode[] = [];\n const roles = rolesById(canvas);\n const delivered = images.map((ref, i) => {\n const format = labels[i];\n const file = typeof format === \"string\" ? last[format] : undefined;\n if (!file || typeof format !== \"string\") return ref;\n const id = `last_${formatSlug(format)}`;\n const remote = /^(?:https?|data):/.test(file);\n // The file that delivered the chosen picture stays it, so a series or translation finds it.\n const role = deliveredRole(ref, holder.nodes ?? [], roles);\n ingests.push({\n id,\n type: \"ingest\",\n params: remote ? { source: \"url\", url: file, expect: \"image\" } : { source: \"path\", path: file, expect: \"image\" },\n ...(role === STATIC_MASTER_ROLE ? { tags: { role } } : {}),\n });\n return `$ref:${id}.asset`;\n });\n const at = holder.nodes.indexOf(final);\n return {\n ...holder,\n nodes: [\n ...holder.nodes.slice(0, at),\n ...ingests,\n { ...final, inputs: { ...final.inputs, images: delivered } },\n ...holder.nodes.slice(at + 1),\n ],\n };\n}\n","import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { ExpectedLine } from \"../../engine/nodes/local/lib/copy-match.ts\";\nimport type { FindingKind, RenderFinding, ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport {\n type JudgeScore,\n judgeWinner,\n nearIdenticalFindings,\n samePictureSizes,\n parseJudgeScores,\n reviewRenderedStatic,\n type StaticVerdict,\n staticVerdict,\n} from \"../../engine/nodes/local/lib/static-review.ts\";\nimport {\n type InterfaceWords,\n nativeChrome,\n nativeCopy,\n nativeSurfaceName,\n readInterfaceWords,\n} from \"../../engine/scaffold/native-surface.ts\";\nimport { type AdSpec, conceptSummary, readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { formatOfAdaptId } from \"../../engine/scaffold/static-adapt-briefs.ts\";\nimport { castsNobody } from \"../../engine/scaffold/static-brief.ts\";\nimport { uncastPeople } from \"../../engine/scaffold/static-named-people.ts\";\nimport { peopleReader } from \"./named-people-read.ts\";\nimport { findWorkspaceRoot } from \"./normalize-paths.ts\";\nimport { heldRules } from \"./rule-gate.ts\";\nimport { BRAND_LOGO_ROLE } from \"../../engine/scaffold/static-render-briefs.ts\";\nimport {\n isPlateCanvas,\n LOGO_COMPOSITE_ROLE,\n nodesWithRole,\n STATIC_ADAPT_FORMAT_ROLE,\n STATIC_ADAPT_ROLE,\n STATIC_FIX_ROLE,\n STATIC_FORMAT_ROLE,\n STATIC_LEAD_ROLE,\n STATIC_MASTER_ROLE,\n STATIC_PICK_ROLE,\n STATIC_PLACE_ROLE,\n STATIC_PLATE_ROLE,\n STATIC_SAFE_FIT_ROLE,\n STATIC_SIZE_ROLE,\n STATIC_VARIANT_CALL_ROLE,\n STATIC_VARIANTS_ROLE,\n staticMasterFormat,\n VARIANT_PREFILTER_ROLE,\n} from \"../../engine/scaffold/static-topology.ts\";\nimport { compareSizes, sizeDifferenceFinding } from \"../../engine/nodes/local/lib/size-consistency.ts\";\nimport { MISALIGNED } from \"../../engine/nodes/local/staticFormat.ts\";\nimport { describeMarket, type ViewerProfile } from \"../../viewer-profile.ts\";\nimport { finalOutputLabelsFromCanvas } from \"./run-record.ts\";\nimport { type AskGlanceModel, gatewayGlanceModel, glanceCheck } from \"./glance-check.ts\";\nimport { deliveredLogoFindings, logoPlacementFindings } from \"./logo-review.ts\";\nimport { carryUnchanged, formatOfSizeNode, keptLostHint, PATCHED_WORDS, UNREAD_WORDS } from \"./static-autofix.ts\";\nimport { frontmatterOf } from \"../creatives/ideas-model.ts\";\nimport { describeViewer, jevReadJudge, type ViewerIntended } from \"./viewer-check.ts\";\nimport { readCompanyReading } from \"../../engine/creative-context/company.ts\";\n\ntype ImageLike = { kind?: unknown; path?: unknown; url?: unknown };\n\nfunction imagesOf(output: unknown): ImageLike[] | null {\n const list = Array.isArray(output) ? output : [output];\n const images = list.filter((o): o is ImageLike => Boolean(o) && typeof o === \"object\");\n return images.length > 0 && images.every((i) => i.kind === \"image\") ? images : null;\n}\n\nfunction promptPathOf(parsed: unknown): string | null {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n if (!Array.isArray(nodes)) return null;\n const prompt = nodes.find((n) => n?.id === \"prompt\" && n?.type === \"ingest\") as\n | { params?: { source?: unknown; path?: unknown; expect?: unknown } }\n | undefined;\n const p = prompt?.params;\n return p?.source === \"path\" && p.expect === \"json\" && typeof p.path === \"string\" ? p.path : null;\n}\n\n/**\n * What a finished static ad run delivered, for the review: every output image with the\n * format its collect label names, and the prompt.json its copy came from. Null for any run\n * that is not a static ad (a video, a canvas with no blueprint).\n */\nexport function staticReviewTargets(\n parsed: unknown,\n output: unknown,\n): { promptPath: string; images: Array<{ path: string; format: string }> } | null {\n const promptPath = promptPathOf(parsed);\n const images = imagesOf(output);\n if (!promptPath || !images) return null;\n const labels = finalOutputLabelsFromCanvas(parsed)?.labels ?? [];\n return {\n promptPath,\n // A local file when the run downloaded it, else its durable URL.\n images: images.flatMap((image, i) => {\n const source = typeof image.path === \"string\" ? image.path : typeof image.url === \"string\" ? image.url : null;\n return source ? [{ path: source, format: labels[i] ?? \"\" }] : [];\n }),\n };\n}\n\ntype ShapeNode = {\n id?: unknown;\n type?: unknown;\n params?: { n?: unknown; formats?: unknown; judge_model?: unknown };\n inputs?: { reference?: unknown; image?: unknown; images?: unknown; logo?: unknown };\n tags?: { role?: unknown };\n};\n\nfunction nodesOf(parsed: unknown): ShapeNode[] {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n return Array.isArray(nodes) ? (nodes as ShapeNode[]) : [];\n}\n\nconst refId = (ref: unknown): string | null =>\n typeof ref === \"string\" ? (ref.match(/^\\$ref:([a-z][a-z0-9_]*)\\./)?.[1] ?? null) : null;\n\nconst hasRole = (n: ShapeNode, role: string) => n.tags?.role === role;\n\n/** How many variants the run rendered: by role on the one-picture graph, by id on an older run's. */\nfunction variantCount(nodes: ShapeNode[]): number {\n const calls = nodes.filter((n) => hasRole(n, STATIC_VARIANT_CALL_ROLE)).length;\n if (calls > 0) return calls;\n const one = nodes.find((n) => hasRole(n, STATIC_VARIANTS_ROLE) && n.type === \"image_generate\");\n if (one) return typeof one.params?.n === \"number\" ? one.params.n : 1;\n if (nodes.some((n) => hasRole(n, STATIC_FIX_ROLE))) return 1;\n return nodes.filter((n) => n.type === \"image_generate\" && /^ad(_[a-z])?$/.test(String(n.id))).length;\n}\n\n/**\n * What a static ad run actually made, read off the canvas that ran (by node role; an older\n * run's graph by its ids): how many variants, whether a judge chose between them, how many\n * sizes were re-laid out, cut or adapted from the chosen picture\n * (or, on an older run, re-laid from it), and whether the brand's real logo file is on the ad.\n */\nexport function staticRunShape(parsed: unknown): {\n candidates: number;\n judged: boolean;\n relays: number;\n cuts: number;\n relaid: number;\n adapted: number;\n /** Master shape `plate`: the pictures drawn (one per variant), and the sizes cut from the chosen one with their words set. */\n plates: number;\n worded: number;\n logo: boolean;\n} {\n const nodes = nodesOf(parsed);\n const renders = nodes.filter((n) => n.type === \"image_generate\" && typeof n.id === \"string\");\n const candidates = variantCount(nodes);\n const logoIds = new Set(nodes.filter((n) => hasRole(n, BRAND_LOGO_ROLE)).map((n) => String(n.id)));\n const logo =\n nodes.some((n) => hasRole(n, LOGO_COMPOSITE_ROLE)) ||\n renders.some((n) => {\n const refs = n.inputs?.reference;\n return (Array.isArray(refs) ? refs : [refs]).some((r) => logoIds.has(refId(r) ?? \"\"));\n }) ||\n // On one picture each size's words call places the logo file.\n nodes.some((n) => n.type === \"static_format\" && logoIds.has(refId(n.inputs?.logo) ?? \"\"));\n const masterId = nodes.find((n) => hasRole(n, STATIC_MASTER_ROLE))?.id;\n const adapt = nodes.find((n) => hasRole(n, STATIC_ADAPT_ROLE));\n return {\n candidates,\n judged:\n candidates > 1 &&\n nodes.some(\n (n) =>\n (n.type === \"image_select\" && (hasRole(n, STATIC_PICK_ROLE) || n.id === \"pick\")) ||\n (hasRole(n, VARIANT_PREFILTER_ROLE) && typeof n.params?.judge_model === \"string\"),\n ),\n relays: masterId !== undefined ? 0 : Math.max(0, renders.length - candidates),\n cuts: nodes.filter((n) => {\n const from = refId(n.inputs?.image);\n return hasRole(n, STATIC_SIZE_ROLE) && from !== null && from === masterId;\n }).length,\n relaid: nodes.filter((n) => hasRole(n, STATIC_ADAPT_FORMAT_ROLE)).length,\n adapted: Array.isArray(adapt?.params?.formats) ? adapt.params.formats.length : 0,\n plates: nodes.some((n) => hasRole(n, STATIC_LEAD_ROLE))\n ? nodes.filter((n) => hasRole(n, STATIC_VARIANT_CALL_ROLE)).length\n : 0,\n // The lead the master delivers is the chosen option's own words, replayed: not a size set again.\n worded: nodes.filter((n) => hasRole(n, STATIC_FORMAT_ROLE) && n.id !== masterReads(nodes)).length,\n logo,\n };\n}\n\n/** The node the master is made from. */\nfunction masterReads(nodes: ShapeNode[]): string | null {\n return refId(nodes.find((n) => hasRole(n, STATIC_MASTER_ROLE))?.inputs?.image);\n}\n\n/** The run in one line, so the report states what ran instead of what usually runs. */\nfunction shapeHint(shape: ReturnType<typeof staticRunShape>, copy: number): string {\n const drawn = shape.plates > 0 ? \" (a picture each without the ad's words, the lead size's words set on it)\" : \"\";\n const variants = `${shape.candidates} variant${shape.candidates === 1 ? \"\" : \"s\"} rendered${drawn}${shape.judged ? \", ranked by the checks with a judge on a tie\" : \", no judge\"}`;\n const sizes = [\n ...(shape.worded > 0\n ? [`${shape.worded} size${shape.worded === 1 ? \"\" : \"s\"} cut from the chosen picture with ${shape.worded === 1 ? \"its\" : \"their\"} words set for ${shape.worded === 1 ? \"it\" : \"them\"} (one request each)`]\n : []),\n ...(shape.relaid > 0\n ? [`${shape.relaid} size${shape.relaid === 1 ? \"\" : \"s\"} re-laid out from the chosen picture (one request each)`]\n : []),\n ...(shape.cuts > 0 ? [`${shape.cuts} size${shape.cuts === 1 ? \"\" : \"s\"} cut from the chosen picture`] : []),\n ...(shape.adapted > 0 ? [`${shape.adapted} adapted from it`] : []),\n ...(shape.relays > 0 ? [`${shape.relays} other format${shape.relays === 1 ? \"\" : \"s\"} re-laid from the winner`] : []),\n ];\n const text = copy === 0 ? \"no copy (the picture is the ad)\" : \"the copy set by the model and read back word for word\";\n return `This run: ${variants}${sizes.length > 0 ? `; ${sizes.join(\"; \")}` : \"\"}; ${text}; ${shape.logo ? \"the brand logo on the ad from its real file\" : \"no logo\"}.`;\n}\n\nconst PAID_FOR = {\n edit: \"one edit of the version shown\",\n sizes: \"only the sizes asked for, laid out again\",\n options: \"new options from scratch, every size made from the one chosen\",\n} as const;\n\n/** What a static run cost and what the credits bought, from the executor's stats. Pure. */\nexport function runCostHint(\n stats: { total_credits: number; total_nodes: number; cached_nodes: number } | undefined,\n kind: keyof typeof PAID_FOR,\n): string | null {\n if (!stats) return null;\n const cached = stats.cached_nodes > 0 ? ` (${stats.cached_nodes} of ${stats.total_nodes} steps came from the cache, free)` : \"\";\n return `This run cost ${Math.round(stats.total_credits)} credits: ${PAID_FOR[kind]}${cached}.`;\n}\n\nasync function textOf(ref: unknown): Promise<string | null> {\n const r = ref as { path?: unknown; url?: unknown } | null;\n try {\n if (typeof r?.path === \"string\") return await readFile(r.path, \"utf8\");\n if (typeof r?.url === \"string\") {\n const res = await fetch(r.url);\n return res.ok ? await res.text() : null;\n }\n } catch {\n return null;\n }\n return null;\n}\n\n/** How a static ad's sizes are made: cut from one picture (`format_<size>`), or each laid out again (`adapt_<size>`). */\nexport type SizeShape = \"plate\" | \"relayout\";\n\n/** The shape a static canvas's sizes are made on, as its size nodes show it. Pure. */\nexport function sizeShapeOf(canvas: unknown): SizeShape {\n return isPlateCanvas(canvas) ? \"plate\" : \"relayout\";\n}\n\n/** The one call that makes a single size again on `shape`, while the chosen picture is right. Pure. */\nexport function oneSizeFix(shape: SizeShape): string {\n return shape === \"plate\"\n ? \"`baker canvas run … --regenerate format_<size>` (for example `format_9x16`) sets that size's words again on the same picture (one request)\"\n : \"`baker canvas run … --regenerate adapt_<size>` (for example `adapt_9x16`) lays out that size again from the same picture (one request)\";\n}\n\n/**\n * The fixes, by what went wrong. Every one is an edit to prompt.json and a re-run, or a correction\n * of the chosen picture: the model draws the picture, so there is no layout to nudge. A bad roll of\n * a right prompt is re-rolled, not re-described; one size wrong is made again by the node its shape\n * makes it with.\n */\nfunction fixHint(shape: SizeShape): string {\n return `One thing wrong in a version that is otherwise right: \\`baker canvas run … --fix \"<what to change>\"\\` edits that version and changes only that, keeping the picture, the layout and the other words (one render). Wrong or missing words: check the lines in prompt.json \\`copy\\` are exactly what should be printed, shorten a line the model keeps breaking, and re-run: a change only to copy, positions or colours is made as an edit of the version shown. Wrong picture, colour or subject: edit prompt.json's \\`scene\\`, \\`colors\\` or \\`references\\`. Layout or a logo drawn wrong: say in each line's \\`position\\` (and \\`scene.layout\\`) where it sits, by what is around it. A right prompt that rolled badly: \\`baker canvas run … --regenerate static_variants\\` renders new options (every size follows from the new pick). One size wrong while the chosen picture is right (words cut or too small, the button small, something drawn twice): ${oneSizeFix(shape)}.`;\n}\n\n/**\n * What the verdict means for the next step, leading the run's hints. Pure.\n *\n * There is no render cap (B2): waste is impossible instead. The same input never bills twice\n * (the cache), a fix edits the version shown at one render, a size problem re-lays only that\n * size, and the same defect after a fix is never retried the same way. A defect a check found\n * is the agent's to fix, never a question for the person: audited Sept 2026, \"Fix what's\n * pending?\" was asked, and the answer recorded as the person's rejection, so every fix became a\n * new version and later chats read the agent's own defects as the company's taste. When a defect\n * cannot be fixed, the best version is shown with what is left, without a question.\n */\nexport function verdictHints(verdict: StaticVerdict, shape: SizeShape = \"plate\"): string[] {\n if (verdict === \"needs_fixes\") {\n const cost =\n shape === \"plate\" ? \"each size's words take one request\" : \"each re-laid-out size takes one request; a cut is free\";\n return [\n `NOT READY: the finished ad has blocking problems. Do not present it as done, and never ask the person whether to fix them: fix them now, inside this version. A defect in a version that is otherwise right is a \\`--fix\\`: it edits the chosen picture only, and every size is made from it again (${cost}). The same defect after a fix means the fix does not work: change the spec (prompt.json) or the approach, never the same retry. If it still cannot be fixed, show the person the best version and say in one plain sentence what is left, in their words (\"the logo sits where Stories covers it\"), without a question; never record your own checks as their feedback.`,\n fixHint(shape),\n ];\n }\n if (verdict === \"not_reviewed\") {\n return [\n \"The finished ad was NOT reviewed: no model gateway key here, or the review model did not answer twice. Look at every word of every format yourself before showing it, or re-run the same command (every node comes from the cache) to review it again.\",\n ];\n }\n if (verdict === \"ready\") {\n return [\"Reviewed every format of the finished ad: every word read back exactly, nothing to fix.\", SHOW_IT];\n }\n return verdict === \"ready_with_notes\" ? [SHOW_IT] : [];\n}\n\n/**\n * The verdict's next step in one line, printed by default in place of `verdictHints` (the full guide, behind\n * `--full`): the guide alone put a reviewed run's result past 1 KB, and the result was tailed for it (BAKER-993). Pure.\n */\nexport function verdictBrief(verdict: StaticVerdict, shape: SizeShape = \"plate\"): string[] {\n if (verdict === \"needs_fixes\") {\n const size = shape === \"plate\" ? \"format_<size>\" : \"adapt_<size>\";\n return [\n `NOT READY: fix every blocking finding now, never asking the person: \\`--fix \"<what to change>\"\\` for one thing wrong, \\`--regenerate ${size}\\` for one size. Never present it as done.`,\n ];\n }\n if (verdict === \"not_reviewed\") return verdictHints(verdict, shape);\n const show = 'Show it as a Version (\"Version 2\"), never a run id or a file; never ask which to keep or whether to publish.';\n if (verdict === \"ready\") return [`Reviewed every format: nothing to fix. ${show}`];\n return verdict === \"ready_with_notes\" ? [show] : [];\n}\n\n/** How a finished version is shown. Live, Oct 2026: ready ads were listed by run id, closing on \"Ready to publish any of these?\". */\nconst SHOW_IT =\n \"Show it as a Version (\\\"Version 2\\\"), never a run id or a file, in one line: the idea's message, who it is for, the customer quote it stands on (or that it is an explore bet), and the finding it answers. Name the versions you would run first; never ask which to keep or whether to publish: the person answers in their own time.\";\n\n/** Words a finished ad may print that are not its copy: what the scene prints, and the other brands' names. */\nexport function allowedSceneWords(spec: Pick<AdSpec, \"scene_text\" | \"third_party_brands\">): string[] {\n return [...new Set([...spec.scene_text, ...spec.third_party_brands.map((b) => b.name)])];\n}\n\n/** Every colour the ad spec names for the brand, the palette the ink of designed type is held to. */\nfunction brandPalette(brand: AdSpec[\"brand\"]): string[] {\n if (!brand) return [];\n const named = [brand.ink, brand.accent, brand.cta, brand.ground, ...brand.palette];\n return [...new Set(named.filter((hex): hex is string => typeof hex === \"string\"))];\n}\n\n/** The ad set's placements for the safe areas; Advantage+ (\"automatic\") is every surface, so the default (Reels) holds. */\nfunction safeAreaPlacements(viewer: ViewerProfile | null | undefined): string[] | undefined {\n const named = (viewer?.placements ?? []).filter((p) => p !== \"automatic\");\n return named.length > 0 && named.length === viewer?.placements.length ? named : undefined;\n}\n\n/** The placements the canvas was laid out for (the variant checks' own), so the review keeps clear of the same interfaces. */\nfunction canvasPlacements(parsed: unknown): string[] | undefined {\n const node = nodesWithRole(parsed, VARIANT_PREFILTER_ROLE)[0] as { params?: { placements?: unknown } } | undefined;\n const placements = node?.params?.placements;\n return Array.isArray(placements) && placements.length > 0 && placements.every((p) => typeof p === \"string\") ? placements : undefined;\n}\n\nexport type StaticRunReview = {\n review: RenderFinding[] | null;\n verdict: StaticVerdict;\n judge: JudgeScore[] | null;\n hints: string[];\n /** The short conditional next steps among `hints` (kept-lost, a copy rule, what the models did not answer), which the default result keeps beside the verdict's brief. */\n notes: string[];\n};\n\n/**\n * Review a finished static ad run: read the judge's scores for the candidates, and look\n * at the delivered images. A blocking finding makes the run NOT ready, and the hints say\n * so before anything else, so a broken ad is never reported as a clean completed run.\n */\nexport async function reviewStaticRun(opts: {\n parsed: unknown;\n output: unknown;\n outputsByNode: Record<string, Record<string, unknown>>;\n onSpend?: (usage: ReviewUsage) => void;\n /** Who the ad reaches (`viewer-check.ts`), so the finished ad is read as them; null when unknown. */\n viewer?: ViewerProfile | null;\n /** The brand's name as the workspace states it (`readStaticBrandKit`), for a spec that names none. */\n brandName?: string;\n /** The words the brand's logo prints, as the workspace states them. */\n lockup?: readonly string[];\n /** The sizes the attempt before this one delivered, to say when a retry made the same picture again. */\n previous?: ReadonlyArray<{ path: string; format: string }>;\n /** The glance model (`glance-check.ts`); the gateway unless given, `false` to skip the glance. */\n glance?: AskGlanceModel | false;\n /** The last autofix round's review and delivered sizes: a size it did not touch keeps that verdict (`carryUnchanged`). */\n settled?: { review: readonly RenderFinding[]; images: ReadonlyArray<{ path: string; format: string }> };\n}): Promise<StaticRunReview | null> {\n const targets = staticReviewTargets(opts.parsed, opts.output);\n if (!targets) return null;\n // The judge's ranking: on the prefilter that asked it on a tie, or (an older run) its own node.\n const prefilterId = nodesWithRole(opts.parsed, VARIANT_PREFILTER_ROLE)[0]?.id;\n const tieBreak = prefilterId ? opts.outputsByNode[prefilterId]?.reasoning : undefined;\n const pickId = nodesWithRole(opts.parsed, STATIC_PICK_ROLE)[0]?.id ?? \"pick\";\n const reasoning = typeof tieBreak === \"string\" ? tieBreak : await textOf(opts.outputsByNode[pickId]?.reasoning);\n const judge = reasoning ? parseJudgeScores(reasoning) : null;\n let copy: string[] = [];\n let mechanisms: string[] = [];\n let intended: ViewerIntended & { recognition?: string } = {};\n let expectLogo = false;\n let concept: ReturnType<typeof conceptSummary> = null;\n let uncast: string[] = [];\n let nobody = false;\n let brand: string | undefined = opts.brandName;\n let lockup: string[] = [...(opts.lockup ?? [])];\n let sceneText: string[] = [];\n let lines: ExpectedLine[] = [];\n let native: string | undefined;\n let palette: string[] = [];\n try {\n // An ad spec or an older blueprint, read the one way every reader agrees on.\n const spec = readAdSpec(JSON.parse(await readFile(targets.promptPath, \"utf8\")));\n copy = spec.copy.map((l) => l.text);\n lines = spec.copy.map((l) => ({ text: l.text, lettering: l.lettering, ...(l.role ? { role: l.role } : {}) }));\n if (spec.native) {\n // A native screen prints exactly its own words, and the platform's names and counts around them.\n copy = nativeCopy(spec.native);\n lines = copy.map((text) => ({ text, lettering: \"designed\" as const }));\n native = nativeSurfaceName(spec.native);\n }\n // The platform's own colours on a native screen (a WhatsApp bubble, X's blue) are not off-brand.\n palette = spec.native ? [] : brandPalette(spec.brand);\n mechanisms = spec.mechanism.map((m) => m.device);\n brand = spec.brand?.name ?? opts.brandName;\n // src/creatives/<slug>/prompt.json → the workspace, whose company reading says what it sells.\n const sells = (await readCompanyReading(path.resolve(path.dirname(targets.promptPath), \"../../..\")))?.sells;\n intended = {\n ...(spec.message?.trim() ? { offer: spec.message.trim() } : {}),\n ...(spec.viewer?.who.trim() ? { persona: spec.viewer.who.trim() } : {}),\n ...(spec.recognition?.trim() ? { recognition: spec.recognition.trim() } : {}),\n ...(sells ? { sells } : {}),\n };\n lockup = [...new Set([...(spec.brand?.lockup ?? []), ...lockup])];\n sceneText = [\n ...allowedSceneWords(spec),\n ...(spec.native ? nativeChrome(spec.native, spec.viewer?.market?.language, interfaceWordsOf(opts.parsed)) : []),\n ];\n // A native screen shows the logo where the platform does (every avatar of the brand's posts), and\n // a brand with no logo file gets none drawn (never a stand-in): neither is a missing logo.\n expectLogo = spec.logo && !spec.native && staticRunShape(opts.parsed).logo;\n concept = conceptSummary(spec);\n // Who the copy names, read once per copy and kept in the workspace's cache.\n const cacheDir = path.join(findWorkspaceRoot(path.dirname(targets.promptPath)) ?? path.dirname(targets.promptPath), \"canvas\", \".cache\");\n const people = spec.native ? [] : ((await peopleReader(cacheDir, (u) => opts.onSpend?.(u))(copy)) ?? []);\n uncast = uncastPeople(spec, people);\n // A native screen's avatars are the platform's; any other ad that casts nobody must show nobody.\n nobody = !spec.native && castsNobody(spec);\n } catch {\n copy = [];\n }\n const shape = staticRunShape(opts.parsed);\n const placements = canvasPlacements(opts.parsed) ?? safeAreaPlacements(opts.viewer);\n const masterFormat = staticMasterFormat(opts.parsed) ?? undefined;\n // The glance and the same-picture check need nothing from the review: all three run at once.\n const glancing =\n opts.glance === false\n ? Promise.resolve(null)\n : glanceAtFinished(\n targets.images,\n opts.viewer ?? STRANGER,\n intended,\n opts.glance ?? gatewayGlanceModel(opts.onSpend),\n opts.onSpend,\n ).catch(() => null);\n const comparing = opts.previous\n ? nearIdenticalFindings(targets.images, opts.previous).catch(() => [])\n : Promise.resolve([]);\n // Each size a model drew apart from the main one, held to it: the same people and product, once, unstretched.\n const leadFormat = masterFormat ?? targets.images[0]?.format ?? \"\";\n const lead = targets.images.find((i) => i.format === leadFormat);\n const drawn = native || !lead ? [] : drawnSizes(opts.parsed, targets.images.map((i) => i.format), leadFormat);\n const matching =\n lead && drawn.length > 0\n ? compareSizes(\n lead,\n targets.images.filter((i) => drawn.includes(i.format)),\n { ...(opts.onSpend ? { onSpend: opts.onSpend } : {}) },\n ).catch(() => drawn.map((format) => ({ format, compared: false, differences: [] })))\n : Promise.resolve([]);\n // A size an autofix round left byte for byte as it was keeps its last verdict: only what changed is read again.\n const untouched = opts.settled ? await samePictureSizes(targets.images, opts.settled.images) : [];\n const changed = targets.images.filter((i) => !untouched.includes(i.format));\n // The company's rules this ad is held to, read as they stand now: checked on the finished ad beside the review.\n const held = await heldRules(path.dirname(targets.promptPath)).catch(() => ({ rules: [] }));\n const review = await reviewRenderedStatic({\n images: changed.length > 0 ? changed : targets.images,\n rules: held.rules,\n copy,\n lines,\n palette,\n ...(placements ? { placements } : {}),\n ...(brand ? { brand } : {}),\n ...(lockup.length > 0 ? { lockup } : {}),\n ...(sceneText.length > 0 ? { sceneText } : {}),\n ...(masterFormat ? { masterFormat } : {}),\n ...(expectLogo ? { expectLogo } : {}),\n ...(concept && concept.mustKeep.length > 0 && referenceSource(opts.parsed)\n ? { concept: { ...concept, reference: referenceSource(opts.parsed) as string } }\n : {}),\n logo: shape.logo,\n ...(native ? { native } : {}),\n ...(uncast.length > 0 ? { uncastPeople: uncast } : {}),\n ...(nobody ? { castsNobody: true } : {}),\n ...(native ? { scrolled: scrolledLines(opts.parsed, opts.outputsByNode) } : {}),\n mechanisms,\n ...(opts.viewer ? { viewer: describeViewer(opts.viewer) } : {}),\n onSpend: opts.onSpend,\n });\n // The finished ad at a glance, as the viewer meets it: counted only once someone looked at it at all.\n const [glanced, compared, matched] = await Promise.all([glancing, comparing, matching]);\n const glance = review === null ? null : glanced;\n const unchanged = review === null ? [] : compared;\n const sized = sizeFactFindings(opts.parsed, opts.outputsByNode);\n // The logo is the brand's file as it is, and it and the headline sit wholly inside the frame and its safe area.\n const logoChecked = expectLogo && review !== null;\n const placedLogo = logoChecked ? logoPlacementFindings(opts.parsed, opts.outputsByNode) : [];\n const deliveredLogo = logoChecked\n ? await deliveredLogoFindings(opts.parsed, opts.outputsByNode, changed.length > 0 ? changed : targets.images, [\n ...new Set([...palette, \"#FFFFFF\", \"#000000\"]),\n ]).catch(() => [])\n : [];\n const differing = matched.flatMap((m) => (m.differences.length > 0 ? [sizeDifferenceFinding(m.format, m.differences)] : []));\n const fresh =\n review === null\n ? null\n : [...review, ...(glance ?? []), ...unchanged, ...sized, ...placedLogo, ...deliveredLogo, ...differing];\n const reviewed =\n fresh === null || !opts.settled\n ? fresh\n : carryUnchanged(fresh, opts.settled.review, untouched);\n const verdict = staticVerdict(reviewed);\n const hints = verdictHints(verdict, sizeShapeOf(opts.parsed));\n const notes: string[] = [];\n /** A short conditional step: in the full hints, and in what the default result prints. */\n const note = (hint: string): void => {\n hints.push(hint);\n notes.push(hint);\n };\n // What made the proven ad win, gone from a size: restored as the plan decided, or built on another proven ad.\n const lost = keptLostHint(reviewed ?? [], await ideaOf(targets.promptPath));\n if (lost) note(lost);\n // A defect on re-laid sizes only is answered by laying out those sizes again: said before the list.\n const sizeHints = verdict === \"needs_fixes\" ? sizeFixHints(opts.parsed, reviewed) : [];\n const sizesFirst = sizeHints[0]?.startsWith(\"Do this first\") === true;\n if (sizesFirst) hints.push(...sizeHints);\n for (const f of reviewed ?? []) hints.push(`${f.severity === \"blocking\" ? \"Must fix\" : \"Should fix\"}: ${f.what}`);\n if ((reviewed ?? []).some((f) => f.severity === \"blocking\" && f.kind?.item === \"rule\" && f.kind.element === \"copy\")) {\n note(\n 'A company rule the words break is yours to rewrite in prompt.json\\'s `copy` (no automatic round changes the words); only when the person asked for those words, keep them and add `\"waive\": [{\"rule\": \"<id>\", \"why\": \"<their ask>\"}]`.',\n );\n }\n if (review !== null && glance === null && opts.glance !== false) {\n note(\"The finished ad was not shown to a stranger at a glance (the model did not answer): look at the 4:5 at phone size yourself and say what it sells in three seconds.\");\n }\n const unmatched = review === null ? [] : matched.filter((m) => !m.compared).map((m) => m.format);\n if (unmatched.length > 0) {\n note(\n `The ${unmatched.join(\" and \")} could not be compared with the ${leadFormat} (the model did not answer): look at them side by side yourself, for the same people and product, shown once, unstretched.`,\n );\n }\n if (!sizesFirst) hints.push(...sizeHints);\n hints.push(shapeHint(shape, copy.length));\n hints.push(...variantHints(judge, prefilterOutcome(opts.parsed, opts.outputsByNode)));\n return { review: reviewed, verdict, judge, hints, notes };\n}\n\n/** By format, the lines a native chat scrolled off that size (`static_native`'s `scrolled` output). */\nexport function scrolledLines(parsed: unknown, outputsByNode: Record<string, unknown>): Record<string, string[]> {\n return Object.fromEntries(\n nodesOf(parsed).flatMap((n) => {\n const out = typeof n.id === \"string\" ? (outputsByNode[n.id] as { scrolled?: unknown } | undefined) : undefined;\n const format = (n as { params?: { format?: unknown } }).params?.format;\n return n.type === \"static_native\" && typeof format === \"string\" && Array.isArray(out?.scrolled)\n ? [[format, out.scrolled.filter((t): t is string => typeof t === \"string\")]]\n : [];\n }),\n );\n}\n\n/** The idea a creative carries (`idea:` in the `_definition.md` beside its prompt.json); undefined when none. */\nasync function ideaOf(promptPath: string): Promise<string | undefined> {\n const definition = await readFile(path.join(path.dirname(promptPath), \"_definition.md\"), \"utf8\").catch(() => \"\");\n const idea = frontmatterOf(definition)?.idea;\n return typeof idea === \"string\" && idea.trim() ? idea.trim() : undefined;\n}\n\n/** The reference ad's picture the canvas records (its `original` ingest): a URL, or a path once resolved. */\nfunction referenceSource(parsed: unknown): string | null {\n const original = nodesOf(parsed).find((n) => n.id === \"original\" && n.type === \"ingest\") as\n | { params?: { url?: unknown; path?: unknown } }\n | undefined;\n const source = original?.params?.url ?? original?.params?.path;\n return typeof source === \"string\" && !source.includes(\"[TODO\") ? source : null;\n}\n\n/** The interface's words the canvas's screens were drawn with (`static_native` `interface_words`), when written for the viewer's language. */\nfunction interfaceWordsOf(parsed: unknown): InterfaceWords | undefined {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n const screen = Array.isArray(nodes)\n ? (nodes as Array<{ type?: unknown; params?: { interface_words?: unknown } }>).find((n) => n?.type === \"static_native\")\n : undefined;\n return readInterfaceWords(screen?.params?.interface_words) ?? undefined;\n}\n\n/** Who sees an ad nobody said who sees: a cold stranger, as `resolveViewer` defaults. */\nconst STRANGER: ViewerProfile = { temperature: \"cold\", knows: [], placements: [\"automatic\"], source: \"knowledge\", reasons: [] };\n\n/** The glance at the delivered 4:5 (the feed's size), else the first size delivered. */\nasync function glanceAtFinished(\n images: ReadonlyArray<{ path: string; format: string }>,\n viewer: ViewerProfile,\n intended: ViewerIntended & { recognition?: string },\n ask: AskGlanceModel,\n onSpend?: (usage: ReviewUsage) => void,\n): Promise<RenderFinding[] | null> {\n const shown = images.find((i) => i.format === \"4:5\") ?? images[0];\n if (!shown) return null;\n return await glanceCheck({\n image: shown.path,\n format: shown.format,\n viewer,\n intended,\n ask,\n judge: jevReadJudge(onSpend),\n ...(viewer.market ? { market: describeMarket(viewer.market) } : {}),\n });\n}\n\n/**\n * One hint per re-laid-out size a blocking finding is on (findings name their size first,\n * \"9:16: …\"): that size alone is laid out again from the same chosen picture, one request,\n * rather than the picture corrected with `--fix` (which makes every size again). A band miss\n * the safe fit could not clear also says the layout has to change. When every blocking finding\n * is on a re-laid size, the first hint says so: that request comes before any `--fix`. Pure.\n */\nexport function sizeFixHints(parsed: unknown, review: RenderFinding[] | null): string[] {\n const cut = new Set(nodesWithRole(parsed, STATIC_FORMAT_ROLE).map((n) => n.id));\n const relaid = [...nodesWithRole(parsed, STATIC_ADAPT_FORMAT_ROLE).map((n) => n.id), ...cut];\n const blocking = (review ?? []).filter((f) => f.severity === \"blocking\");\n const regenerate = relaid.flatMap((id) => {\n const format = formatOfSizeNode(parsed, id);\n if (!format || !blocking.some((f) => f.what.startsWith(`${format}:`))) return [];\n return [\n cut.has(id)\n ? `The ${format}'s words alone need fixing and the picture is right: \\`baker canvas run … --regenerate ${id}\\` sets the ${format}'s words again on the same picture (one request). If the picture itself is wrong, \\`--fix\\` it instead: every size's words are set again on the corrected picture.`\n : `The ${format} alone needs fixing and the chosen picture is right: \\`baker canvas run … --regenerate ${id}\\` lays out the ${format} again from the same picture (one request). If the chosen picture itself is wrong, \\`--fix\\` it instead: every size follows.`,\n ];\n });\n const relaidFormats = relaid.map((id) => formatOfSizeNode(parsed, id)).filter((f): f is string => Boolean(f));\n const sizesOnly =\n regenerate.length > 0 && blocking.every((f) => relaidFormats.some((format) => f.what.startsWith(`${format}:`)));\n const lead = sizesOnly ? regenerate.map((h, i) => (i === 0 ? `Do this first, not a --fix: ${h}` : h)) : regenerate;\n return [...lead, ...safeFitHints(parsed, blocking)];\n}\n\n/** How a finding says an interface covers a word or the logo (`static-review.ts` `outsideBand`). */\nconst COVERED = / sits? where .+? covers? (?:it|them) /;\n\n/**\n * A band miss on a size the safe fit already ran on: small misses are corrected there, for\n * free, so what is left is more than a shrink to 85% clears, and asking the model to move it\n * a few points only loops (it moves about 1%). Pure.\n */\nfunction safeFitHints(parsed: unknown, blocking: readonly RenderFinding[]): string[] {\n return nodesWithRole(parsed, STATIC_SAFE_FIT_ROLE).flatMap((n) => {\n const format = typeof n.params?.format === \"string\" ? n.params.format : formatOfSlug(n.id.replace(/^safe_/, \"\"));\n if (!blocking.some((f) => f.what.startsWith(`${format}:`) && COVERED.test(f.what))) return [];\n return [\n `The ${format} was already shrunk and shifted automatically to clear what the app covers; small misses are corrected that way, so this one is too large for it. Change the layout itself (shorter copy, fewer lines, a smaller block of text) rather than a \\`--fix\\` asking to move it, which moves it only about 1%.`,\n ];\n });\n}\n\n/** What a size's facts name beside its reason. */\ntype SizeFacts = { covered?: string[] };\n\n/** What a size cut from one picture could not do with its words or its cut (`static_format` facts), said as the review says it. */\nconst SIZE_FACT_FINDING: Record<string, { what: (format: string, facts: SizeFacts) => string; kind: FindingKind }> = {\n band_too_far: {\n what: (format) =>\n `${format}: the words reach too far past the part of the frame the app leaves clear to be moved inside it; set them inside it.`,\n kind: { item: \"safe_zone\", element: \"copy\", defect: \"other\", edges: [] },\n },\n words_over_face: {\n what: (format) => `${format}: the words were set over a face; set them where no face is.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n words_misaligned: {\n what: (format) =>\n `${format}: ${PATCHED_WORDS}, which shows as a box; set them again on the same picture.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n words_not_read: {\n what: (format) =>\n `${format}: ${UNREAD_WORDS}, so the picture around them may have been redrawn; set them again on the same picture.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n subject_covered: {\n what: (format, facts) =>\n `${format}: the words hide ${(facts.covered ?? [\"the product\"]).join(\" and \")}, which the other sizes show; set them where it stays in view.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n subject_cut: {\n what: (format) => `${format}: no cut of the picture keeps every person and product whole in this size.`,\n kind: { item: \"picture\", element: \"picture\", defect: \"cut\", edges: [] },\n },\n};\n\n/** The products a size's facts say its words hide; null when the size recorded no facts. */\nfunction coveredIn(facts: unknown): string[] | null {\n if (facts === undefined || facts === null || typeof facts !== \"object\") return null;\n const covered = (facts as { covered?: unknown }).covered;\n return Array.isArray(covered) ? covered.filter((c): c is string => typeof c === \"string\") : [];\n}\n\n/**\n * A product a size's words hide that every size's words hide (each size recorded): no size shows it\n * to be held to, so it is noted once, on the first size that hides it, never blocked. Pure.\n */\nfunction hiddenEverywhere(\n sizes: ReadonlyArray<{ id: string; format: string | null }>,\n outputsByNode: Record<string, Record<string, unknown>>,\n): { labels: Set<string>; notes: RenderFinding[] } {\n const lists = sizes.map((s) => ({ ...s, covered: coveredIn(outputsByNode[s.id]?.facts) }));\n const labels = new Set(\n (lists[0]?.covered ?? []).filter((label) => lists.length > 1 && lists.every((s) => s.covered?.includes(label))),\n );\n const first = lists.find((s) => s.format && s.covered?.some((label) => labels.has(label)));\n const notes: RenderFinding[] =\n first?.format && labels.size > 0\n ? [\n {\n severity: \"warning\",\n what: `${first.format}: the words hide ${[...labels].join(\" and \")} in every size; set them where it stays in view if it is what the ad sells.`,\n kind: { item: \"layout\", element: \"copy\", defect: \"other\", edges: [] },\n },\n ]\n : [];\n return { labels, notes };\n}\n\n/**\n * Blocking findings from what each size cut from one picture recorded (`facts.reason`): words too far\n * past the band for code to move, words over a face, or a picture this size cannot be cut from. In\n * the canvas's order. Pure.\n */\nexport function sizeFactFindings(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): RenderFinding[] {\n const added = paintedAdditions(parsed, outputsByNode);\n const sizes = nodesWithRole(parsed, STATIC_FORMAT_ROLE);\n const everywhere = hiddenEverywhere(\n sizes.map((n) => ({ id: n.id, format: formatOfSizeNode(parsed, n.id) })),\n outputsByNode,\n );\n const found = sizes.flatMap((n) => {\n const format = formatOfSizeNode(parsed, n.id);\n const facts = (outputsByNode[n.id]?.facts ?? {}) as {\n reason?: unknown;\n covered?: unknown;\n residual?: unknown;\n words_mode?: unknown;\n };\n const shownElsewhere = (coveredIn(facts) ?? []).some((label) => !everywhere.labels.has(label));\n const said =\n typeof facts.reason === \"string\" && (facts.reason !== \"subject_covered\" || shownElsewhere)\n ? SIZE_FACT_FINDING[facts.reason]\n : undefined;\n // Only one reason is recorded; a render that sat this far from the picture left a patch whatever it\n // was, unless the size is that render taken whole (a band laid over the picture sits far from it by design).\n const patched =\n facts.reason !== \"words_misaligned\" &&\n facts.words_mode !== \"whole\" &&\n typeof facts.residual === \"number\" &&\n facts.residual > MISALIGNED\n ? SIZE_FACT_FINDING.words_misaligned\n : undefined;\n const covered = (coveredIn(facts) ?? []).filter((label) => !everywhere.labels.has(label));\n const fromPlate = refId((n.inputs as { plate?: unknown } | undefined)?.plate);\n const extra = fromPlate ? added.get(fromPlate) : undefined;\n if (!format) return [];\n return [\n ...[said, patched].flatMap((f) =>\n f ? [{ severity: \"blocking\" as const, what: f.what(format, covered.length > 0 ? { covered } : {}), kind: f.kind }] : [],\n ),\n ...(extra\n ? [\n {\n severity: \"blocking\" as const,\n what: `${format}: the picture painted wider from the chosen one shows ${extra.join(\", \")}, which the other sizes do not. It must show the main size's people and product, once each.`,\n kind: { item: \"sizes\" as const, element: \"picture\" as const, defect: \"other\" as const, edges: [] },\n },\n ]\n : []),\n ];\n });\n return [...found, ...everywhere.notes];\n}\n\n/** By plate node, what its painting added (`static_plate` facts `subject_added`). Pure. */\nfunction paintedAdditions(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): Map<string, string[]> {\n return new Map(\n nodesWithRole(parsed, STATIC_PLATE_ROLE).flatMap((n): Array<[string, string[]]> => {\n const facts = outputsByNode[n.id]?.facts as { reason?: unknown; added?: unknown } | undefined;\n const added = Array.isArray(facts?.added) ? facts.added.filter((a): a is string => typeof a === \"string\") : [];\n return facts?.reason === \"subject_added\" && added.length > 0 ? [[n.id, added]] : [];\n }),\n );\n}\n\n/**\n * The delivered sizes a model drew apart from the main size (`masterFormat`), each compared with it\n * after the run (`size-consistency.ts`): on a re-laid-out run every other size; on one picture only a\n * size cut from a picture painted from it (`static_plate`), since a cut of the chosen picture keeps\n * its people and products pixel for pixel. Pure.\n */\nexport function drawnSizes(parsed: unknown, delivered: readonly string[], masterFormat: string): string[] {\n const others = delivered.filter((format) => format && format !== masterFormat);\n const cut = nodesWithRole(parsed, STATIC_FORMAT_ROLE);\n if (cut.length === 0) return others;\n const painted = new Set(nodesWithRole(parsed, STATIC_PLATE_ROLE).map((n) => n.id));\n const fromPainted = new Set(\n cut.flatMap((n) => {\n const plate = refId((n.inputs as { plate?: unknown } | undefined)?.plate);\n const format = formatOfSizeNode(parsed, n.id);\n return plate && painted.has(plate) && format ? [format] : [];\n }),\n );\n return others.filter((format) => fromPainted.has(format));\n}\n\n/** A node-id format fragment back to its format: `9x16` → `9:16`, `1_91x1` → `1.91:1`. */\nfunction formatOfSlug(slug: string): string {\n return slug.replace(\"x\", \":\").replace(\"_\", \".\");\n}\n\ntype PrefilterDrop = { index: number; reasons: string[] };\ntype PrefilterOutcome = {\n images?: unknown[];\n /** Which variant each of `images` is, in the order the judge saw them. */\n order?: number[];\n dropped: PrefilterDrop[];\n flagged?: PrefilterDrop;\n usage?: ReviewUsage[];\n};\n\nfunction prefilterNodeId(parsed: unknown): string | null {\n return nodesWithRole(parsed, VARIANT_PREFILTER_ROLE)[0]?.id ?? null;\n}\n\n/** What the variant checks did on this run (`static_prefilter`), null on a run without them. */\nfunction prefilterOutcome(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): PrefilterOutcome | null {\n const id = prefilterNodeId(parsed);\n const out = id ? (outputsByNode[id] as PrefilterOutcome | undefined) : undefined;\n return out && Array.isArray(out.dropped) ? out : null;\n}\n\n/**\n * What the run's box readers cost, for the run record's `reviewUsage`: the variant checks'\n * and each 9:16 safe fit's, as the node reported the gateway's `usage.cost`, and nothing for\n * a node that came from the cache (that call was paid for, and recorded, by the run that made it).\n */\nexport function prefilterSpend(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n nodeRuns: ReadonlyArray<{ node_id: string; cached: boolean }>,\n): ReviewUsage[] {\n const cached = (id: string) => nodeRuns.some((r) => r.node_id === id && r.cached);\n const id = prefilterNodeId(parsed);\n const checks = id && !cached(id) ? (prefilterOutcome(parsed, outputsByNode)?.usage ?? []) : [];\n const fits = [\n ...nodesWithRole(parsed, STATIC_SAFE_FIT_ROLE),\n ...nodesWithRole(parsed, STATIC_PLACE_ROLE),\n // A size cut from one picture reads its subjects and its words; a widened picture its subjects.\n ...nodesWithRole(parsed, STATIC_LEAD_ROLE),\n ...nodesWithRole(parsed, STATIC_FORMAT_ROLE),\n ...nodesWithRole(parsed, STATIC_PLATE_ROLE),\n // The logo's composite reads the size's words for its check.\n ...nodesWithRole(parsed, LOGO_COMPOSITE_ROLE),\n ]\n .filter((n) => !cached(n.id))\n .flatMap((n) => {\n const usage = outputsByNode[n.id]?.usage;\n return Array.isArray(usage) ? (usage as ReviewUsage[]) : [];\n });\n return [...checks, ...fits];\n}\n\n/**\n * The variants in the agent's words: which the checks set aside before the judge and why, and\n * which the judge picked. Variants are numbered from 1 as rendered; the judge numbers only the\n * ones it was shown, in the order the checks gave it (`order`; older runs: rendered order less\n * the drops), so its pick is mapped back through that. Pure.\n */\nexport function variantHints(judge: JudgeScore[] | null, prefilter: PrefilterOutcome | null): string[] {\n const hints: string[] = [];\n const dropped = prefilter?.dropped ?? [];\n const kept = Array.isArray(prefilter?.images) ? prefilter.images.length : (judge?.length ?? 0);\n const total = dropped.length + kept;\n if (prefilter?.flagged) {\n hints.push(\n `Every variant failed the checks; variant ${prefilter.flagged.index + 1} had the fewest problems and was kept: ${prefilter.flagged.reasons.join(\" \")}`,\n );\n } else if (dropped.length > 0) {\n const list = dropped.map((d) => `variant ${d.index + 1} (${d.reasons.join(\" \")})`).join(\"; \");\n hints.push(`${dropped.length} of ${total} variants set aside by the checks before the judge: ${list}.`);\n }\n const alone = prefilter?.order?.length === 1 && !prefilter.flagged ? prefilter.order[0] : undefined;\n if (alone !== undefined && dropped.length > 0) {\n hints.push(\n `The checks ranked variant ${alone + 1} best, so no judge was needed; the others stay in this run as options the person can switch to (\\`baker canvas run --use-variant\\`).`,\n );\n }\n const winner = judge ? judgeWinner(judge) : null;\n if (judge && winner) {\n const gone = new Set(dropped.map((d) => d.index));\n const shown = prefilter?.order ?? Array.from({ length: total }, (_, i) => i).filter((i) => !gone.has(i));\n const variant = (shown[winner.image - 1] ?? winner.image - 1) + 1;\n const why =\n winner.of === undefined\n ? `${winner.total}/${Object.keys(winner.scores).length * 5}`\n : `first on ${\n Object.entries(winner.scores)\n .filter(([, beaten]) => beaten === winner.of)\n .map(([criterion]) => criterion.replace(/_/g, \" \"))\n .join(\", \") || \"none of the criteria alone\"\n }`;\n hints.push(\n `The judge picked variant ${variant} of the ${judge.length} it compared (${why}); the others it compared stay in this run as options the person can switch to (\\`baker canvas run --use-variant\\`).`,\n );\n }\n return hints;\n}\n","/**\n * Would a stranger know, in three seconds, what this finished ad is and whether it is for them?\n *\n * The pre-render viewer check (`viewer-check.ts`) reads the copy and a description of the\n * picture, with the brand's name given. A person scrolling gets neither: they see the picture,\n * at phone size, for about three seconds, and the advertiser is a name they have never heard of.\n * Audited Sept 2026: ads that passed every check read, at a glance, as a chat about nothing, a\n * newspaper about another company, a tweet with no product. So the finished ad itself, shrunk\n * to the width a phone shows it, is shown to a model playing that viewer, with no brand and no\n * brief; it says what is sold, who it is for and whether that is them, what it would do next,\n * and what made it stop. The decision model compares that with what the ad means to say, in any\n * language (`misreadings`), and the code grades it (`judgeViewerAnswer`). Blocking: an ad nobody understands in passing is not ready.\n */\nimport { GLANCE_CHECK_MODEL } from \"@baker/canvas-contract\";\nimport sharp from \"sharp\";\nimport { z } from \"zod\";\nimport { askAboutImages, type RenderFinding, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { bytesOf } from \"../../engine/nodes/local/lib/static-review.ts\";\nimport type { ViewerProfile } from \"../../viewer-profile.ts\";\nimport {\n describeViewer,\n jevReadJudge,\n judgeViewerAnswer,\n misreadings,\n type ReadJudge,\n sureEnough,\n ViewerAnswerSchema,\n type ViewerClarity,\n type ViewerIntended,\n type ViewerMiss,\n type ViewerQuestion,\n} from \"./viewer-check.ts\";\n\n/**\n * The least a glance must reach: the viewer can name what is sold, however sure they say they\n * are (Tier 0, Oct 2026: viewers who named the offer exactly called it a guess). Who it is for and\n * what to do next go into the fix but never fail it: the platform's button carries the next step.\n */\nconst GLANCE_REQUIRED: Readonly<Record<ViewerQuestion, ViewerClarity>> = {\n offer: \"guess\",\n for_whom: \"unclear\",\n next_step: \"unclear\",\n};\n\n/** The width a phone feed shows a static ad at, in CSS pixels, give or take. */\nexport const GLANCE_WIDTH = 400;\n\n/** The glance answer: the viewer check's questions, whether the ad is for them, and what stopped them. */\nexport const GlanceAnswerSchema = ViewerAnswerSchema.extend({\n /** What kind of product or service they take it for (D4). */\n category: z\n .object({ answer: z.string().default(\"\"), clarity: z.enum([\"clear\", \"guess\", \"unclear\"]).default(\"unclear\") })\n .default({ answer: \"\", clarity: \"unclear\" }),\n stopped: z.string().default(\"\"),\n me: z.enum([\"yes\", \"no\", \"unsure\"]).default(\"unsure\"),\n});\nexport type GlanceAnswer = z.infer<typeof GlanceAnswerSchema>;\n\n/** Where the viewer meets the ad, said as they would. */\nfunction wherePhrase(placements: readonly string[]): string {\n const fullScreen = placements.length === 0 || placements.some((p) => /automatic|stor|reel/i.test(p));\n return fullScreen ? \"your Instagram or Facebook feed, Stories or Reels\" : \"your Instagram or Facebook feed\";\n}\n\n/** What the viewer already knows, never the advertiser's name: the ad has to say it. */\nfunction knowledge(viewer: ViewerProfile): string {\n if (!viewer.knows.includes(\"brand\")) return \"You have never heard of the advertiser.\";\n const offer = viewer.knows.includes(\"offer\") ? \" You know roughly what they sell.\" : \"\";\n return `You have come across the advertiser before.${offer}`;\n}\n\n/**\n * The glance prompt: the viewer, the picture and three seconds; the question last and the\n * answer a fixed JSON the code grades. `market` sets who the viewer is when it is known\n * (\"a person in Mexico who speaks Mexican Spanish\"). Pure.\n */\nexport function buildGlancePrompt(input: { viewer: ViewerProfile; market?: string }): string {\n const who = input.market ? `You are ${input.market}. ` : \"\";\n return [\n `${who}You are scrolling ${wherePhrase(input.viewer.placements)} on your phone. ${knowledge(input.viewer)}`,\n \"This ad passes under your thumb and holds you for about three seconds: you take in the picture and read the biggest words, not the small print. The image is shown at the size your phone shows it.\",\n \"Answer as this person, from those three seconds alone. Do not fill gaps with what ads like this usually sell.\",\n 'For each question give your answer in English and how sure you are: \"clear\" when the ad says it outright or you already know it; \"guess\" when you are piecing it together; \"unclear\" when you cannot tell.',\n \"offer: what is being sold or offered?\",\n \"for_whom: who is it for?\",\n \"next_step: what would you do next if you wanted it?\",\n \"category: what kind of product or service is this for (a payroll app, a trade course, a phone)?\",\n 'missing: in one short sentence, what you would need to be told to get it; \"\" when nothing.',\n \"stopped: what made you stop on it, or what nearly made you scroll past, in a few words.\",\n 'me: is this for someone like you? \"yes\", \"no\" or \"unsure\".',\n \"\",\n 'Reply with only this JSON: {\"offer\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"for_whom\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"next_step\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"category\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"missing\":\"\",\"stopped\":\"\",\"me\":\"yes|no|unsure\"}',\n ].join(\"\\n\");\n}\n\nconst QUESTION_WORDS: Record<Exclude<ViewerMiss[\"question\"], \"presumes\">, string> = {\n offer: \"what is offered\",\n for_whom: \"who it is for\",\n next_step: \"what to do next\",\n};\n\nfunction missWords(miss: ViewerMiss): string {\n if (miss.question === \"presumes\") return `it talks to them as a customer already (\"${miss.viewerSaid}\")`;\n const said = miss.viewerSaid.trim() ? `\"${miss.viewerSaid.trim()}\"` : \"nothing\";\n const what = QUESTION_WORDS[miss.question];\n return miss.reason === \"misread\" ? `${what} (they were sure it is ${said})` : `${what} (they said ${said})`;\n}\n\n/** What the decision model said the viewer misread: the offer, and the kind of thing the ad is (`misreadings`). */\nexport type GlanceMisreads = { offer: boolean; category: boolean };\n\n/**\n * The finished ad graded on what a viewer took from three seconds of it: one blocking finding\n * naming what they could not tell, what they said, and what they needed. Pure.\n */\nexport function glanceFindings(\n answer: GlanceAnswer,\n intended: ViewerIntended & { recognition?: string },\n format: string,\n viewer: ViewerProfile,\n misread: GlanceMisreads = { offer: false, category: false },\n): RenderFinding[] {\n // Whether the words presume a past with the brand is the pre-render check's question, asked of the copy.\n const verdict = judgeViewerAnswer({ ...answer, presumes: \"\" }, intended, GLANCE_REQUIRED, misread.offer);\n // D4: what kind of thing a stranger takes it for, against what it is meant to be recognised as.\n // Only a warning: whether they can name what is sold is already the offer's question.\n const category = answer.category.answer.trim();\n const kind: RenderFinding[] =\n intended.recognition && category && misread.category\n ? [\n {\n severity: \"warning\",\n what: `${format}: At a glance, a stranger took it for \"${category}\"; it is meant as ${intended.recognition}.`,\n },\n ]\n : [];\n if (verdict.pass) return kind;\n const needed = answer.missing.trim() ? ` They needed: ${answer.missing.trim().replace(/[.!]+$/, \"\")}.` : \"\";\n const missed = verdict.missed.map(missWords).join(\"; \");\n return [\n {\n severity: \"blocking\",\n what: `${format}: At a glance, ${describeViewer(viewer).replace(/, on .* placements$/, \"\")} could not tell ${missed}.${needed}`,\n },\n ...kind,\n ];\n}\n\n/** Whether the viewer misread the offer and the kind of thing the ad is: one request to the decision model. */\nasync function glanceMisreads(\n answer: GlanceAnswer,\n intended: ViewerIntended & { recognition?: string },\n judge: ReadJudge,\n): Promise<GlanceMisreads> {\n const sure = sureEnough(answer.offer.clarity, GLANCE_REQUIRED.offer);\n const [offer = false, category = false] = await misreadings(\n [\n { said: sure ? answer.offer.answer : \"\", meant: intended.offer, sells: intended.sells },\n { said: answer.category.answer, meant: intended.recognition },\n ],\n judge,\n );\n return { offer, category };\n}\n\n/** The model boundary: the parsed JSON answer about one picture (base64 JPEG), or null when no model answered. */\nexport type AskGlanceModel = (jpeg: string, prompt: string) => Promise<unknown>;\n\n/** The glance model through the gateway, its spend reported to `onSpend`. */\nexport function gatewayGlanceModel(onSpend?: (usage: ReviewUsage) => void): AskGlanceModel {\n return (jpeg, prompt) => askAboutImages(GLANCE_CHECK_MODEL, [jpeg], prompt, onSpend);\n}\n\n/**\n * Show the finished ad, at phone width, to the viewer it reaches, and grade what they took from\n * it. Null when no model answered (twice) or the picture could not be read: the caller says the\n * glance was not checked, never that it passed.\n */\nexport async function glanceCheck(opts: {\n /** The delivered image: a local path or its URL. */\n image: string;\n format: string;\n viewer: ViewerProfile;\n intended: ViewerIntended & { recognition?: string };\n market?: string;\n ask: AskGlanceModel;\n /** Whether the viewer read what the ad means (`misreadings`); the decision model unless given. */\n judge?: ReadJudge;\n}): Promise<RenderFinding[] | null> {\n let jpeg: string;\n try {\n const bytes = await bytesOf(opts.image);\n jpeg = (await sharp(bytes).resize({ width: GLANCE_WIDTH }).jpeg({ quality: 85 }).toBuffer()).toString(\"base64\");\n } catch {\n return null;\n }\n const prompt = buildGlancePrompt({ viewer: opts.viewer, ...(opts.market ? { market: opts.market } : {}) });\n for (let attempt = 0; attempt < 2; attempt++) {\n const parsed = GlanceAnswerSchema.safeParse(await opts.ask(jpeg, prompt));\n if (parsed.success) {\n const misread = await glanceMisreads(parsed.data, opts.intended, opts.judge ?? jevReadJudge());\n return glanceFindings(parsed.data, opts.intended, opts.format, opts.viewer, misread);\n }\n }\n return null;\n}\n","/**\n * The finished ad's logo, checked on the pixels: the brand's file is on every size exactly as it is,\n * wholly inside the frame and the part of it the app leaves clear, and the headline too.\n *\n * Two readings. Where the logo was placed from its file (`static_logo`), its own facts say where\n * and what its check found (`logoPlacementFindings`), and the delivered size is compared with the\n * file at that box (`deliveredLogoFindings`). Where a model drew it (a creative not yet moved onto\n * the file), the logo is found on each size by its shape and compared there: Red Points' \"POIПTS\"\n * drawn as \"POINTS\" passed the review model (Oct 2026); it does not pass this.\n */\nimport sharp from \"sharp\";\nimport { DRAWN_LOGO_MATCH, LOGO_MATCH, locateLogo, logoAgreement, type Rgba } from \"../../engine/nodes/local/lib/logo-match.ts\";\nimport { fitArtwork, logoArtwork, textColourSource, usesTextColour } from \"../../engine/nodes/local/lib/logo-raster.ts\";\nimport type { FindingKind, RenderFinding } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { bytesOf } from \"../../engine/nodes/local/lib/static-review.ts\";\nimport { LogoFacts } from \"../../engine/nodes/local/staticLogo.ts\";\nimport {\n logoCornerWords,\n type PlacementProblem,\n placementProblems,\n slotPosition,\n} from \"../../engine/scaffold/static-logo.ts\";\nimport { deliveredSize } from \"../../engine/scaffold/static-sizes.ts\";\nimport { formatSlug, LOGO_COMPOSITE_ROLE, nodesWithRole } from \"../../engine/scaffold/static-topology.ts\";\n\ntype Node = { id?: unknown; type?: unknown; inputs?: Record<string, unknown>; tags?: { role?: unknown } };\n\nconst nodesOf = (parsed: unknown): Node[] => {\n const nodes = (parsed as { nodes?: unknown } | null)?.nodes;\n return Array.isArray(nodes) ? (nodes as Node[]) : [];\n};\n\nconst refId = (ref: unknown): string | null =>\n typeof ref === \"string\" ? (ref.match(/^\\$ref:([a-z][a-z0-9_]*)\\./)?.[1] ?? null) : null;\n\nconst edgesSaid = (edges: readonly string[]) => edges.join(\" and \") || \"edge\";\n\n/** The size's id in `--regenerate`, as its nodes spell it: `4:5` is `4x5`, `1.91:1` is `1_91x1`. */\nconst sizeId = formatSlug;\n\n/**\n * The node that set a size's words, read up the composite's picture: its `static_format`, or the\n * render that laid the size out again (an `image_generate`); null for the chosen picture itself\n * (a re-laid-out ad's lead, after `static_prefilter`), which only a `--fix` changes;\n * `format_<size>` when none is found.\n */\nfunction wordsNodeOf(nodes: readonly Node[], composite: Node | undefined, format: string): string | null {\n let ref = composite?.inputs?.image;\n for (let hops = 0; hops < 12; hops++) {\n const n = nodes.find((m) => m.id === refId(ref));\n if (!n) break;\n if (n.type === \"static_format\" || n.type === \"image_generate\") return String(n.id);\n if (n.type === \"static_prefilter\") return null;\n ref = n.inputs?.image;\n }\n return `format_${sizeId(format)}`;\n}\n\n/** A logo with no room on its size, or lost on the ground under it: what to run, and what to keep clear. */\nfunction saidOfRoom(\n format: string,\n defect: \"no_room\" | \"illegible\",\n corner: string,\n words: string | null = `format_${sizeId(format)}`,\n): RenderFinding {\n const kind: FindingKind = { item: \"logo\", element: \"logo\", defect: \"other\", edges: [] };\n const room =\n words === null\n ? `keep the ${corner} plain for the logo, with no word, button or card in it (a \\`--fix\\` of the chosen picture).`\n : `run \\`baker canvas run … --regenerate ${words}\\` and keep the ${corner} clear for the logo.`;\n const what =\n defect === \"no_room\"\n ? `${format}: there is no room for the logo, not even on a small plate; ${room}`\n : `${format}: the logo is lost on the picture under it; run \\`--regenerate logo_${sizeId(format)}\\` so it is set on a plate.`;\n return { severity: \"blocking\", what, kind };\n}\n\n/** One problem a composite's check found, as the review says it, and what it is. */\nfunction said(\n format: string,\n p: PlacementProblem,\n corner = logoCornerWords(undefined),\n words?: string | null,\n): RenderFinding {\n if (p.defect === \"no_room\" || p.defect === \"illegible\") return saidOfRoom(format, p.defect, corner, words);\n const kind = (\n item: FindingKind[\"item\"],\n element: FindingKind[\"element\"],\n defect: FindingKind[\"defect\"],\n ): FindingKind => ({\n item,\n element,\n defect,\n edges: p.defect === \"cut\" ? [...p.edges] : [],\n });\n const blocking = (what: string, k: FindingKind): RenderFinding => ({\n severity: \"blocking\",\n what: `${format}: ${what}`,\n kind: k,\n });\n if (p.element === \"logo\") {\n return p.defect === \"cut\"\n ? blocking(\n `the frame cuts the logo at its ${edgesSaid(p.edges)}; place it again inside the frame.`,\n kind(\"logo\", \"logo\", \"cut\"),\n )\n : blocking(\n `the logo reaches past the ${edgesSaid(p.edges)} of the part of the frame the app leaves clear; place it again inside it.`,\n kind(\"safe_zone\", \"logo\", \"other\"),\n );\n }\n if (p.defect === \"under_logo\") {\n const what = p.element === \"headline\" ? \"the headline\" : \"a line of the copy\";\n return blocking(\n `the logo covers ${what}; set the words again clear of the logo's corner.`,\n kind(\"layout\", \"copy\", \"other\"),\n );\n }\n return p.defect === \"cut\"\n ? blocking(\n `the frame cuts the headline at its ${edgesSaid(p.edges)}; set the words again inside the frame.`,\n kind(\"layout\", \"copy\", \"cut\"),\n )\n : blocking(\n `the headline reaches past the ${edgesSaid(p.edges)} of the part of the frame the app leaves clear; set the words again inside it.`,\n kind(\"safe_zone\", \"copy\", \"other\"),\n );\n}\n\n/** What each composite's own check found (`static_logo` `facts.problems`), blocking, in the canvas's order. Pure. */\nexport function logoPlacementFindings(\n parsed: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): RenderFinding[] {\n return nodesWithRole(parsed, LOGO_COMPOSITE_ROLE).flatMap((n) => {\n const facts = LogoFacts.safeParse(outputsByNode[n.id]?.facts);\n if (!facts.success) return [];\n // With no room, the corner the size kept for the logo (its slot), which the words are set again around.\n const { format, slot, problems } = facts.data;\n const kept = problems.some((p) => p.defect === \"no_room\") ? slotPosition(slot, deliveredSize(format)) : undefined;\n const corner = logoCornerWords(kept ?? (n as { params?: { position?: unknown } }).params?.position);\n const words = wordsNodeOf(nodesOf(parsed), n as Node, facts.data.format);\n return facts.data.problems.map((p) => said(facts.data.format, p, corner, words));\n });\n}\n\nasync function rgbaOf(bytes: Buffer): Promise<Rgba> {\n const { data, info } = await sharp(bytes).ensureAlpha().raw().toBuffer({ resolveWithObject: true });\n return { data, width: info.width, height: info.height };\n}\n\n/** The bytes of the picture an ingest delivered (`$ref:<id>.asset`), when the run recorded it. */\nasync function ingestBytes(\n ref: unknown,\n outputsByNode: Record<string, Record<string, unknown>>,\n): Promise<Buffer | null> {\n const id = refId(ref);\n const asset = id\n ? (outputsByNode[id]?.asset as { path?: unknown; url?: unknown; metadata?: unknown } | undefined)\n : undefined;\n const source = await textColourSource(asset?.metadata);\n if (source) return source;\n const at = typeof asset?.path === \"string\" ? asset.path : typeof asset?.url === \"string\" ? asset.url : null;\n return at ? await bytesOf(at).catch(() => null) : null;\n}\n\n/** A logo the model drew is found when its shape fits this well: the brand's own (Red Points: 0.83-0.90), never a stray mark (under 0.5). */\nconst LOGO_FOUND = 0.6;\n\nconst pct = (v: number) => `${Math.round(v * 100)}%`;\n\nfunction mismatch(format: string, agreement: number): RenderFinding {\n return {\n severity: \"blocking\",\n what: `${format}: the logo is not the brand's file as it is (redrawn or altered: ${pct(agreement)} of it matches the file); run it again so the file itself is placed.`,\n kind: { item: \"logo\", element: \"logo\", defect: \"other\", edges: [] },\n };\n}\n\n/** A logo the model drew far from the brand's: drawn again, it is drawn from the file, which is never pasted. */\nfunction drawnMismatch(format: string, agreement: number): RenderFinding {\n return {\n severity: \"blocking\",\n what: `${format}: the logo drawn is not the brand's logo (only ${pct(agreement)} of it matches the file); draw this size again with the brand's logo copied exactly from the logo file, letter for letter.`,\n kind: { item: \"logo\", element: \"logo\", defect: \"other\", edges: [] },\n };\n}\n\n/** The widths a drawn logo is looked for at: from 8% to 45% of the frame, 4% apart. */\nfunction searchWidths(frameWidth: number): number[] {\n const widths: number[] = [];\n for (let w = frameWidth * 0.08; w <= frameWidth * 0.45; w *= 1.04) widths.push(Math.round(w));\n return widths;\n}\n\ntype Image = { path: string; format: string };\ntype Outputs = Record<string, Record<string, unknown>>;\n\n/** A size the logo was placed on from its file: its pixels at the composite's box held to the file. */\nasync function placedLogoFinding(n: Node, outputsByNode: Outputs, images: readonly Image[]): Promise<RenderFinding[]> {\n const facts = LogoFacts.safeParse(outputsByNode[String(n.id)]?.facts);\n // No room: nothing was stamped, and the size's own finding sends its words back.\n if (!facts.success || facts.data.problems.some((p) => p.defect === \"no_room\")) return [];\n const { format, box, variant, ink } = facts.data;\n const image = images.find((i) => i.format === format);\n const logos = Array.isArray(n.inputs?.logos) ? n.inputs.logos : [];\n const [ad, file] = await Promise.all([\n image ? bytesOf(image.path).catch(() => null) : null,\n ingestBytes(logos[variant], outputsByNode),\n ]);\n if (!ad || !file) return [];\n const placed = await fitArtwork(await logoArtwork(file, ink ? { currentColor: ink } : {}), box);\n const agreement = logoAgreement(await rgbaOf(ad), placed, box);\n return agreement < LOGO_MATCH ? [mismatch(format, agreement)] : [];\n}\n\ntype DrawnLogo = { agreement: number; box: { x: number; y: number; width: number; height: number }; score: number };\n\n/** The logo a model drew on `picture`, found by its shape among the file's colourways (`arts`); null when none fits. */\nasync function drawnLogoOn(picture: Rgba, arts: ReadonlyArray<Rgba | null>): Promise<DrawnLogo | null> {\n let best: DrawnLogo | null = null;\n for (const art of arts) {\n if (!art) continue;\n const templates = await Promise.all(\n searchWidths(picture.width).map((w) => fitArtwork(art, { width: w, height: picture.height })),\n );\n const at = locateLogo(picture, templates);\n if (!at || at.score < LOGO_FOUND || (best && best.score >= at.score)) continue;\n best = { agreement: logoAgreement(picture, templates[at.template] as Rgba, at), box: at, score: at.score };\n }\n return best;\n}\n\nconst NO_MARGIN = { top: 0, bottom: 0, left: 0, right: 0 };\n\n/** A logo file's artwork as it can be drawn: as it is, or once per colour when it is inked in the text colour. */\nasync function artworksOf(file: Buffer, inks: readonly string[]): Promise<Array<Rgba | null>> {\n const colours = usesTextColour(file) ? inks : [undefined];\n return await Promise.all(colours.map((ink) => logoArtwork(file, ink ? { currentColor: ink } : {}).catch(() => null)));\n}\n\n/** A size a model drew the logo on: blocking when the frame cuts it, or it is clearly not the brand's logo (`DRAWN_LOGO_MATCH`). */\nasync function drawnLogoFinding(image: Image, arts: ReadonlyArray<Rgba | null>): Promise<RenderFinding[]> {\n const ad = await bytesOf(image.path).catch(() => null);\n if (!ad) return [];\n const picture = await rgbaOf(ad);\n const drawn = await drawnLogoOn(picture, arts);\n if (!drawn) return [];\n const frame = { width: picture.width, height: picture.height };\n const cut = placementProblems({ frame, safe: NO_MARGIN, logo: drawn.box });\n if (cut.length > 0) return cut.map((p) => said(image.format, p));\n return drawn.agreement < DRAWN_LOGO_MATCH ? [drawnMismatch(image.format, drawn.agreement)] : [];\n}\n\n/**\n * The delivered logo held to its file, on each delivered size (`images`, by format). Placed from the\n * file: the size's pixels at the composite's box are the file's (`LOGO_MATCH`), else blocking. Drawn by\n * a model: the logo is found by its shape among the file's colourways, and blocking when the frame\n * cuts it or it is clearly another logo (`DRAWN_LOGO_MATCH`); a drawn logo is never the file exactly. A size delivered as it was approved (an ingest) is the\n * person's and is not read. A logo that cannot be read or found says nothing here.\n */\nexport async function deliveredLogoFindings(\n parsed: unknown,\n outputsByNode: Outputs,\n images: readonly Image[],\n /** The colours a logo inked in the text colour is looked for in (the brand's, and white). */\n inks: readonly string[] = [\"#000000\", \"#FFFFFF\"],\n): Promise<RenderFinding[]> {\n const nodes = nodesOf(parsed);\n const composites = nodes.filter((n) => n.tags?.role === LOGO_COMPOSITE_ROLE && n.type === \"static_logo\");\n if (composites.length > 0) {\n return (await Promise.all(composites.map((n) => placedLogoFinding(n, outputsByNode, images)))).flat();\n }\n const logos = nodes.filter((n) => n.type === \"ingest\" && /^brand_logo/.test(String(n.tags?.role ?? \"\")));\n const files = await Promise.all(logos.map((n) => ingestBytes(`$ref:${String(n.id)}.asset`, outputsByNode)));\n const arts = (await Promise.all(files.map((f) => (f ? artworksOf(f, inks) : [])))).flat();\n if (!arts.some((a) => a !== null)) return [];\n const asIs = deliveredAsIs(nodes);\n const drawn = images.filter((i) => !asIs.has(i.format));\n return (await Promise.all(drawn.map((image) => drawnLogoFinding(image, arts)))).flat();\n}\n\n/** The formats the final collect delivers straight from an ingest: an approved size, or a round's last file, as it was. */\nfunction deliveredAsIs(nodes: readonly Node[]): Set<string> {\n const final = nodes.find((n) => n.id === \"final\" && n.type === \"collect\") as\n | (Node & { params?: { labels?: unknown } })\n | undefined;\n const labels = final?.params?.labels;\n const images = final?.inputs?.images;\n if (!Array.isArray(labels) || !Array.isArray(images)) return new Set();\n return new Set(\n labels.filter((label, i): label is string => {\n const from = nodes.find((n) => n.id === refId(images[i]));\n return typeof label === \"string\" && from?.type === \"ingest\";\n }),\n );\n}\n","/**\n * Whether the logo on a delivered ad is the brand's file, measured on the pixels.\n *\n * An image model handed a logo redraws it: Red Points' stylised lowercase-n \"POIПTS\" came back\n * as a plain \"POINTS\" (Oct 2026), close enough that the review model passed it. A logo\n * composited from the file is the file pixel for pixel, so the check is exact where the box is\n * known (`logoAgreement`), and found by its shape where the model drew it (`locateLogo`).\n *\n * Pure: RGBA pixels in, numbers out.\n */\n\n/** Pixels, four channels each (RGBA), row by row. */\nexport type Rgba = { data: Uint8Array | Buffer; width: number; height: number };\n\n/** A logo pixel counts as drawn when it is at least this opaque. */\nconst SOLID = 250;\n/** How far (RGB distance) a delivered pixel may sit from the file's and still be the file's: resampling, not redrawing. */\nconst SAME_COLOUR = 60;\n/**\n * The share of the file's solid pixels the ad must show as they are for its logo to be the file.\n * Measured on Red Points (Oct 2026): the file composited reads 1.000; the logo the model drew from\n * the file, at its best fit, 0.91-0.96 (a redrawn letter, a mark's proportions).\n */\nexport const LOGO_MATCH = 0.98;\n/**\n * The share a logo the model drew must show to be the brand's logo at all. A drawn logo is never\n * the file pixel for pixel: Red Points read 0.91-0.96 and Zernio 0.93-0.97 (Oct 2026), and a redraw\n * reads the same again, so holding it to `LOGO_MATCH` blocked every ad and no round converged.\n * Under this it is another mark, letters out of order or most of it missing.\n */\nexport const DRAWN_LOGO_MATCH = 0.9;\n\n/** Where the logo was found on an ad: its box in the ad's pixels (it may reach past the frame), which size of it, how well it fits (0-1). */\ntype LogoFound = { x: number; y: number; width: number; height: number; template: number; score: number };\n\n/** The width the first, coarse search reads the ad at. */\nconst COARSE_WIDTH = 180;\n/** A logo is looked for with at least this share of it inside the frame: a cut logo is still found. */\nconst MIN_SHOWN = 0.4;\n/** The logo's colours: a quantised colour holding at least this share of its solid pixels. */\nconst MAIN_COLOUR = 0.12;\n/** A pixel is in one of the logo's colours within this RGB distance, for the search. */\nconst INK_NEAR = 90;\n\ntype Map01 = { map: Uint8Array; width: number; height: number };\n\n/** The logo's main colours: the means of the quantised colours that hold a fair share of its solid pixels. */\nfunction inkColours(logo: Rgba): Array<[number, number, number]> {\n const bins = new Map<number, { n: number; r: number; g: number; b: number }>();\n let total = 0;\n for (let i = 0; i < logo.width * logo.height; i++) {\n if ((logo.data[i * 4 + 3] ?? 0) < SOLID) continue;\n const r = logo.data[i * 4] ?? 0;\n const g = logo.data[i * 4 + 1] ?? 0;\n const b = logo.data[i * 4 + 2] ?? 0;\n const key = ((r >> 5) << 6) | ((g >> 5) << 3) | (b >> 5);\n const bin = bins.get(key) ?? { n: 0, r: 0, g: 0, b: 0 };\n bins.set(key, { n: bin.n + 1, r: bin.r + r, g: bin.g + g, b: bin.b + b });\n total++;\n }\n return [...bins.values()].filter((b) => b.n >= MAIN_COLOUR * total).map((b) => [b.r / b.n, b.g / b.n, b.b / b.n]);\n}\n\n/** `test` per pixel, averaged down by `f`: a cell is on when at least half its pixels are. */\nfunction mapOf(img: Rgba, f: number, test: (i: number) => boolean): Map01 {\n const width = Math.max(1, Math.floor(img.width / f));\n const height = Math.max(1, Math.floor(img.height / f));\n const map = new Uint8Array(width * height);\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) map[y * width + x] = cellOn(img.width, f, x * f, y * f, test) ? 1 : 0;\n }\n return { map, width, height };\n}\n\n/** Whether at least half the `f`×`f` pixels from (x0, y0) of a picture `width` wide pass `test`. */\nfunction cellOn(width: number, f: number, x0: number, y0: number, test: (i: number) => boolean): boolean {\n let on = 0;\n for (let j = 0; j < f; j++) {\n for (let i = 0; i < f; i++) on += test((y0 + j) * width + x0 + i) ? 1 : 0;\n }\n return on * 2 >= f * f;\n}\n\nfunction inkMapOf(image: Rgba, colours: ReadonlyArray<[number, number, number]>, f: number): Map01 {\n return mapOf(image, f, (i) => colours.some((c) => distance(image.data, i * 4, c, 0) < INK_NEAR));\n}\n\nconst maskOf = (logo: Rgba, f: number): Map01 => mapOf(logo, f, (i) => (logo.data[i * 4 + 3] ?? 0) >= 128);\n\n/** A map with its summed-area table: the ink under any rectangle in four reads. */\ntype Summed = Map01 & { sum: Int32Array };\n\nfunction summed(m: Map01): Summed {\n const w = m.width + 1;\n const sum = new Int32Array(w * (m.height + 1));\n for (let y = 0; y < m.height; y++) {\n let row = 0;\n for (let x = 0; x < m.width; x++) {\n row += m.map[y * m.width + x] ?? 0;\n sum[(y + 1) * w + x + 1] = (sum[y * w + x + 1] ?? 0) + row;\n }\n }\n return { ...m, sum };\n}\n\n/** The ink of `m` inside [x0, x1) × [y0, y1), clamped to it. */\nfunction inkIn(m: Summed, x0: number, y0: number, x1: number, y1: number): number {\n const w = m.width + 1;\n const [a, b] = [Math.max(0, x0), Math.min(m.width, x1)];\n const [c, d] = [Math.max(0, y0), Math.min(m.height, y1)];\n if (a >= b || c >= d) return 0;\n return (m.sum[d * w + b] ?? 0) - (m.sum[c * w + b] ?? 0) - (m.sum[d * w + a] ?? 0) + (m.sum[c * w + a] ?? 0);\n}\n\n/**\n * A mask as its rows' runs of solid cells (`row`, from `x0` to before `x1`), with its own\n * summed-area table: how much of it a frame shows in four reads.\n */\ntype Cells = {\n rows: Int32Array;\n x0s: Int32Array;\n x1s: Int32Array;\n mask: Summed;\n area: number;\n width: number;\n height: number;\n};\n\nfunction cellsOf(m: Map01): Cells {\n const rows: number[] = [];\n const x0s: number[] = [];\n const x1s: number[] = [];\n for (let y = 0; y < m.height; y++) {\n for (let x = 0; x < m.width; x++) {\n if (!m.map[y * m.width + x]) continue;\n const start = x;\n while (x < m.width && m.map[y * m.width + x]) x++;\n rows.push(y);\n x0s.push(start);\n x1s.push(x);\n }\n }\n const mask = summed(m);\n return {\n rows: Int32Array.from(rows),\n x0s: Int32Array.from(x0s),\n x1s: Int32Array.from(x1s),\n mask,\n area: inkIn(mask, 0, 0, m.width, m.height),\n width: m.width,\n height: m.height,\n };\n}\n\n/** The overlap over the union, weighed down by the share of the mask outside the frame. */\nconst fitScore = (inter: number, inside: number, win: number, area: number) =>\n (inter / (inside + win - inter)) * Math.sqrt(inside / area);\n\n/**\n * How well a mask (`cells`) fits `ink` with its top-left at (x, y): the overlap over the union, on\n * the part of the mask inside the frame, weighed down by how much of it lies outside. 0 when it\n * cannot beat `floor`: the overlap is at most the lesser of the mask shown and the ink under it, and\n * the score grows with it, so a place whose best case is no better is never counted cell by cell.\n */\nfunction fitAt(ink: Summed, cells: Cells, x: number, y: number, floor = 0): number {\n const inside = inkIn(cells.mask, -x, -y, ink.width - x, ink.height - y);\n if (inside < MIN_SHOWN * cells.area) return 0;\n const win = inkIn(ink, x, y, x + cells.width, y + cells.height);\n if (fitScore(Math.min(inside, win), inside, win, cells.area) <= floor) return 0;\n let inter = 0;\n for (let k = 0; k < cells.rows.length; k++) {\n const v = y + (cells.rows[k] ?? 0);\n inter += inkIn(ink, x + (cells.x0s[k] ?? 0), v, x + (cells.x1s[k] ?? 0), v + 1);\n }\n return fitScore(inter, inside, win, cells.area);\n}\n\n/** The best fit of `cells` on `ink` over the places in `xs` × `ys`, `step` apart, the first place of the best score. */\nfunction bestFit(ink: Summed, cells: Cells, xs: [number, number], ys: [number, number], step = 1) {\n let best = { x: 0, y: 0, score: 0 };\n if (cells.area === 0) return best;\n for (let y = ys[0]; y <= ys[1]; y += step) {\n for (let x = xs[0]; x <= xs[1]; x += step) {\n const score = fitAt(ink, cells, x, y, best.score);\n if (score > best.score) best = { x, y, score };\n }\n }\n return best;\n}\n\n/**\n * Where on `image` the logo sits and at what size, among `templates` (the logo file rasterised at\n * a range of widths, smallest first): found by its shape in its own colours, read coarse (every\n * other size) and then at full size around the best place and its neighbouring sizes. A logo the\n * frame cuts is found past the edge (its box reaches outside the frame). Null when nothing of the\n * logo's shape is on the ad. Pure.\n */\nexport function locateLogo(image: Rgba, templates: readonly Rgba[]): LogoFound | null {\n const first = templates[0];\n if (!first) return null;\n const colours = inkColours(templates[templates.length - 1] ?? first);\n if (colours.length === 0) return null;\n const f = Math.max(1, Math.round(image.width / COARSE_WIDTH));\n const found = coarseFind(summed(inkMapOf(image, colours, f)), templates, f);\n if (!found || found.score === 0) return null;\n if (f === 1) {\n const t = templates[found.template] as Rgba;\n return { x: found.x, y: found.y, width: t.width, height: t.height, template: found.template, score: found.score };\n }\n return fineFind(summed(inkMapOf(image, colours, 1)), templates, found, f);\n}\n\ntype Found = { template: number; x: number; y: number; score: number };\n\n/** The best size and place over the whole ad read `f` times smaller, a logo reaching past its edge included. */\nfunction coarseFind(coarse: Summed, templates: readonly Rgba[], f: number): Found | null {\n let found: Found | null = null;\n templates.forEach((t, k) => {\n const cells = cellsOf(maskOf(t, f));\n const reachX = Math.round(cells.width * (1 - MIN_SHOWN));\n const reachY = Math.round(cells.height * (1 - MIN_SHOWN));\n const fit = bestFit(\n coarse,\n cells,\n [-reachX, coarse.width - cells.width + reachX],\n [-reachY, coarse.height - cells.height + reachY],\n );\n if (!found || fit.score > found.score) found = { template: k, ...fit };\n });\n return found;\n}\n\n/** The coarse find read again at full size: its neighbouring sizes, around its place. */\nfunction fineFind(full: Summed, templates: readonly Rgba[], found: Found, f: number): LogoFound | null {\n let fine: LogoFound | null = null;\n const [cx, cy] = [found.x * f, found.y * f];\n for (const k of [-2, -1, 0, 1, 2].map((d) => found.template + d)) {\n const t = templates[k];\n if (!t) continue;\n const cells = cellsOf(maskOf(t, 1));\n const near = bestFit(full, cells, [cx - 2 * f, cx + 2 * f], [cy - 2 * f, cy + 2 * f], 3);\n const fit = bestFit(full, cells, [near.x - 2, near.x + 2], [near.y - 2, near.y + 2]);\n if (!fine || fit.score > fine.score)\n fine = { x: fit.x, y: fit.y, width: t.width, height: t.height, template: k, score: fit.score };\n }\n return fine;\n}\n\nconst distance = (a: ArrayLike<number>, i: number, b: ArrayLike<number>, j: number) =>\n Math.hypot((a[i] ?? 0) - (b[j] ?? 0), (a[i + 1] ?? 0) - (b[j + 1] ?? 0), (a[i + 2] ?? 0) - (b[j + 2] ?? 0));\n\n/**\n * The share of the logo file's solid pixels (`logo`, rasterised at the size it sits at) that the\n * delivered `image` shows in the file's colour with the logo's top-left at `at`. A pixel past the\n * frame's edge is a pixel the ad lost. 1 for the file composited; well under `LOGO_MATCH` for a\n * logo redrawn, recoloured, covered or cut. Pure.\n */\nexport function logoAgreement(image: Rgba, logo: Rgba, at: { x: number; y: number }): number {\n let solid = 0;\n let same = 0;\n for (let j = 0; j < logo.height; j++) {\n for (let i = 0; i < logo.width; i++) {\n const s = (j * logo.width + i) * 4;\n if ((logo.data[s + 3] ?? 0) < SOLID) continue;\n solid++;\n const u = at.x + i;\n const v = at.y + j;\n if (u < 0 || v < 0 || u >= image.width || v >= image.height) continue;\n if (distance(image.data, (v * image.width + u) * 4, logo.data, s) < SAME_COLOUR) same++;\n }\n }\n return solid === 0 ? 0 : same / solid;\n}\n","import { mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { isSourceStale } from \"@baker/api\";\nimport type { IdeaAnchor } from \"../../engine/creative-context/anchor.ts\";\nimport type { PictureRecord } from \"./static-fix.ts\";\nimport { unsuppliedPlaceholderAssets } from \"./placeholders.ts\";\nimport { type PreparedCanvas, prepareCanvas } from \"./prepare-canvas.ts\";\nimport { type LastFix, plainRunEdit } from \"./static-edit.ts\";\nimport { isStaticAdCanvas } from \"./static-ad-canvas.ts\";\nimport { sizeShapeOf } from \"./static-run-review.ts\";\nimport { readTurnRenders, turnRenderRefusal } from \"./turn-renders.ts\";\n\n/**\n * What this workspace last rendered, per creative: `canvas/.rendered/<slug>.json`.\n *\n * \"Edited since its last render\" is the source fingerprint (`computeSourceSha`) now,\n * compared with the fingerprint the last completed render recorded here. It replaces the\n * `canvas/.dirty` marker a PostToolUse hook used to drop, which only saw the Write and\n * Edit tools touching `*.canvas.json` / `prompt.json`: an edit to a scene file, a\n * composition, or anything made through the shell slipped past it, and the Stop hook and\n * the `validate-creative-renders` gate let a stale preview ship.\n *\n * Two facts are kept apart:\n * - `rendered`: the source a COMPLETED render drew, and its run id;\n * - `attempted`: the source the last `baker canvas run` started on, whatever came of it.\n * A render that fails on exactly this source is not asked for again until the source\n * moves, so a canvas that cannot render never loops the agent.\n *\n * Lives under the gitignored `canvas/` outputs root of the workspace the canvas belongs\n * to (never `--outputs-dir`), so the CLI and the scaffold hooks always agree on the path.\n * A fresh workspace has no record, and a creative with none is not stale: there is no\n * preview of it in this workspace to be out of date.\n */\nexport const RENDER_STATE_DIR = \".rendered\";\n\nexport type RenderState = {\n rendered?: { sourceSha: string; runId: string; at: number };\n attempted?: { sourceSha: string; at: number };\n /** The last portable run snapshot uploaded for this creative (see `run-snapshot.ts`). */\n snapshot?: { identity: string; url: string };\n /** A static ad's prompt.json as the completed render drew it: a later edit of only its words or colours renders as an edit of that version (`static-edit.ts`). */\n prompt?: unknown;\n /** The `--fix` (or edit) the completed render ran, and the blocking defects it left: the same fix is never run again. */\n lastFix?: LastFix;\n /** The blocking defects the review of the completed render named: what a fix of it is measured against. */\n blocking?: string[];\n /** How the completed render's picture came to be, where its canvas would not say (`static-fix.ts`). */\n picture?: PictureRecord;\n /**\n * An ad of a series: the version of its lead its last registered run was made from, finished or not\n * (`series-member.ts`). A run that fails after it is registered is not a new ask when retried.\n */\n seriesLeadRun?: string;\n /** The idea of the completed render (`anchor.ts`): what an edit of it keeps (`idea-gate.ts`). */\n anchor?: IdeaAnchor;\n /** The idea of the completed render in plain lines, for the per-message hook: the version the person sees. */\n idea?: string[];\n /**\n * What the person saw when the chat turn `turnId` started: every run in that turn is held to it, so\n * the agent's own renders in the turn never become the baseline. No `anchor`: the turn started with\n * nothing shown, and nothing in it is held.\n */\n seen?: { turnId: string; anchor?: IdeaAnchor };\n};\n\nfunction statePath(canvasRoot: string, slug: string): string {\n return path.join(canvasRoot, RENDER_STATE_DIR, `${slug}.json`);\n}\n\nexport async function readRenderState(canvasRoot: string, slug: string): Promise<RenderState> {\n try {\n const parsed = JSON.parse(await readFile(statePath(canvasRoot, slug), \"utf8\")) as RenderState;\n return parsed && typeof parsed === \"object\" ? parsed : {};\n } catch {\n return {};\n }\n}\n\n/** The version (run id) a creative shows in this workspace: its last completed render; null before one. */\nexport async function latestVersion(canvasRoot: string, slug: string): Promise<string | null> {\n return (await readRenderState(canvasRoot, slug)).rendered?.runId ?? null;\n}\n\n/** Merge `patch` into the record. Best-effort: freshness is advisory, a render never fails over it. */\nasync function updateRenderState(canvasRoot: string, slug: string, patch: Partial<RenderState>): Promise<void> {\n try {\n const next = { ...(await readRenderState(canvasRoot, slug)), ...patch };\n await mkdir(path.join(canvasRoot, RENDER_STATE_DIR), { recursive: true });\n await writeFile(statePath(canvasRoot, slug), `${JSON.stringify(next, null, 2)}\\n`, \"utf8\");\n } catch {\n // Ignore: at worst the Stop hook asks for one render too many or too few.\n }\n}\n\nexport async function recordRenderAttempt(canvasRoot: string, slug: string, sourceSha: string | undefined): Promise<void> {\n if (!sourceSha) return;\n await updateRenderState(canvasRoot, slug, { attempted: { sourceSha, at: Date.now() } });\n}\n\nexport async function recordRendered(\n canvasRoot: string,\n slug: string,\n sourceSha: string | undefined,\n runId: string,\n drawn: {\n prompt?: unknown;\n lastFix?: LastFix;\n picture?: PictureRecord;\n seriesLeadRun?: string;\n anchor?: IdeaAnchor;\n idea?: string[];\n } = {},\n): Promise<void> {\n if (!sourceSha) return;\n await updateRenderState(canvasRoot, slug, {\n rendered: { sourceSha, runId, at: Date.now() },\n ...(drawn.prompt !== undefined ? { prompt: drawn.prompt } : {}),\n ...(drawn.anchor ? { anchor: drawn.anchor } : {}),\n ...(drawn.idea ? { idea: drawn.idea } : {}),\n lastFix: drawn.lastFix,\n picture: drawn.picture,\n ...(drawn.seriesLeadRun ? { seriesLeadRun: drawn.seriesLeadRun } : {}),\n });\n}\n\n/** What the person saw when a chat turn started: every run in that turn is held to it (`idea-gate.ts`). */\nexport async function recordSeen(canvasRoot: string, slug: string, seen: NonNullable<RenderState[\"seen\"]>): Promise<void> {\n await updateRenderState(canvasRoot, slug, { seen });\n}\n\n/** The idea of the version shown in plain lines, for the per-message hook, when this workspace has none yet. */\nexport async function recordIdeaLines(canvasRoot: string, slug: string, idea: string[]): Promise<void> {\n if ((await readRenderState(canvasRoot, slug)).idea) return;\n await updateRenderState(canvasRoot, slug, { idea });\n}\n\n/** What the review of a completed render found blocking, and the fix the render ran, if one. */\nexport async function recordReviewOutcome(\n canvasRoot: string,\n slug: string,\n outcome: { blocking: string[]; lastFix?: LastFix },\n): Promise<void> {\n await updateRenderState(canvasRoot, slug, outcome);\n}\n\n/** The version of its lead a series ad's run was registered from: written before the run renders. */\nexport async function recordSeriesLeadRun(canvasRoot: string, slug: string, leadRunId: string): Promise<void> {\n await updateRenderState(canvasRoot, slug, { seriesLeadRun: leadRunId });\n}\n\nexport async function recordSnapshot(canvasRoot: string, slug: string, snapshot: RenderState[\"snapshot\"]): Promise<void> {\n await updateRenderState(canvasRoot, slug, { snapshot });\n}\n\n/**\n * Whether the preview in this workspace no longer shows the source: it was rendered, the\n * source has moved since (`isSourceStale`: a render fingerprinted by an older rule never\n * is), and no render of the source as it is now was attempted yet.\n */\nexport function isRenderStale(state: RenderState, currentSourceSha: string): boolean {\n if (!state.rendered) return false;\n if (!isSourceStale(currentSourceSha, state.rendered.sourceSha)) return false;\n return state.attempted?.sourceSha !== currentSourceSha;\n}\n\n/**\n * `sourceSha` is the source as it stands now: what a render of it would record. `refusedThisTurn` is\n * why a plain `baker canvas run` of it is refused in this chat turn (`turn-renders.ts`), so the\n * turn-end reminder never orders a render the CLI will not make.\n */\nexport type StaleCreative = {\n slug: string;\n canvasPath: string;\n renderedRunId: string;\n sourceSha: string;\n refusedThisTurn?: string;\n};\n\n/**\n * Every renderable creative in the workspace whose preview is stale. A canvas that still\n * has an unfilled `[TODO]` asset slot is skipped: the agent is mid-build, and a half-built\n * creative must never be pushed to render. The source is fingerprinted the way a render\n * and the dashboard sync fingerprint it (`prepareCanvas`, read-only), so the three never\n * disagree about what is stale. `canvasPath` is workspace-relative.\n */\nexport async function staleCreatives(workspaceRoot: string, turnId?: string): Promise<StaleCreative[]> {\n const creativesDir = path.join(workspaceRoot, \"src\", \"creatives\");\n const canvasRoot = path.join(workspaceRoot, \"canvas\");\n const turnRenders = turnId === undefined ? undefined : await readTurnRenders(path.join(canvasRoot, \".cache\"));\n let slugs: string[];\n try {\n slugs = (await readdir(creativesDir, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => d.name);\n } catch {\n return [];\n }\n const stale: StaleCreative[] = [];\n for (const slug of slugs.sort()) {\n const state = await readRenderState(canvasRoot, slug);\n if (!state.rendered) continue;\n const canvasPath = path.join(creativesDir, slug, `${slug}.canvas.json`);\n let prepared: PreparedCanvas;\n try {\n prepared = await prepareCanvas(canvasPath, { write: false });\n } catch {\n continue; // Gone, renamed, or mid-edit invalid JSON: the next check reads it again.\n }\n if (unsuppliedPlaceholderAssets(prepared.fileGraph).length > 0) continue;\n const current = prepared.sourceSha;\n if (!current || !isRenderStale(state, current)) continue;\n const promptOnDisk = await readFile(path.join(creativesDir, slug, \"prompt.json\"), \"utf8\")\n .then((text): unknown => JSON.parse(text))\n .catch(() => null);\n // What `baker canvas run <canvasPath>` decides: a correction only when it edits the version shown.\n const promptNow = isStaticAdCanvas(prepared.canvas) ? promptOnDisk : null;\n const refusal = turnRenderRefusal(turnRenders, turnId, slug, {\n correction: plainRunEdit(prepared.canvas, state.prompt, promptNow) !== null,\n shape: sizeShapeOf(prepared.fileGraph),\n });\n stale.push({\n slug,\n canvasPath: path.relative(workspaceRoot, canvasPath).split(path.sep).join(\"/\"),\n renderedRunId: state.rendered.runId,\n sourceSha: current,\n ...(refusal ? { refusedThisTurn: `${refusal.message} ${refusal.fix}` } : {}),\n });\n }\n return stale;\n}\n\n/**\n * Remove the `canvas/.dirty/<slug>.json` marker an older scaffold's PostToolUse hook wrote.\n * Nothing in a current scaffold reads it, but a client repo can run this CLI before its\n * scaffold sync lands, and there the old Stop hook and verify gate still read the marker:\n * clearing it on a render attempt, as the CLI always did, keeps that gate from blocking\n * forever. Delete once every client runs a scaffold without `nudge-canvas-rerender`.\n */\nexport async function clearLegacyDirtyMarker(canvasRoot: string, slug: string): Promise<void> {\n await rm(path.join(canvasRoot, \".dirty\", `${slug}.json`), { force: true }).catch(() => undefined);\n}\n"],"mappings":"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","names":["said","said","readFile","path","said","sharp","sharp","pct","frame","nodesOf","refId","readFile","path","said","id","mkdir","readFile","writeFile","path","path","readFile","mkdir","writeFile"]}