@koda-sl/baker-cli 0.444.0-dev.77f6afa0e → 0.444.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 (494) hide show
  1. package/README.md +6 -4
  2. package/dist/{account-4H7QVBRK.js → account-F6MHQ64I.js} +3 -3
  3. package/dist/{account-RDRK7NOE.js → account-S2PX5JOR.js} +5 -5
  4. package/dist/{account-writes-AK42HGRM.js → account-writes-ISE4U2FQ.js} +3 -3
  5. package/dist/{accounts-4TYIUVWY.js → accounts-2D6D4MTX.js} +4 -4
  6. package/dist/{accounts-6COLJJHM.js → accounts-TC3LBWNF.js} +6 -6
  7. package/dist/{actions-PEI6ZQAG.js → actions-WEZT4Z6N.js} +18 -18
  8. package/dist/{ad-group-writes-QQS4223F.js → ad-group-writes-UU5NNKSO.js} +3 -3
  9. package/dist/{ad-groups-WGPDPUI2.js → ad-groups-CGFXZNIA.js} +7 -7
  10. package/dist/{ad-writes-XE2IE4DS.js → ad-writes-NALDYWOR.js} +3 -3
  11. package/dist/{add-XDOQQCHS.js → add-IJ6DDZFU.js} +3 -3
  12. package/dist/{add-XEDSBYLM.js → add-N7SAQT4W.js} +4 -4
  13. package/dist/{ads-BCOSQALY.js → ads-PV7GZXPR.js} +8 -8
  14. package/dist/{ads-TJ7ACFHG.js → ads-R4VOYYCQ.js} +5 -5
  15. package/dist/{advertisers-WSNHNCBQ.js → advertisers-OVPF7MPT.js} +4 -4
  16. package/dist/{analytics-PT2GKCFU.js → analytics-AIT5OTZU.js} +7 -7
  17. package/dist/{analytics-ZVWUY66X.js → analytics-UQZHJ73K.js} +4 -4
  18. package/dist/{animate-3Z7HXOLE.js → animate-37ZVC3Q5.js} +4 -4
  19. package/dist/{assign-B26AJLGN.js → assign-HTM32ZU7.js} +4 -4
  20. package/dist/{audience-size-ZX565D5P.js → audience-size-34FBOXDD.js} +4 -4
  21. package/dist/{audiences-TGD5US2M.js → audiences-VEKGLWBG.js} +3 -3
  22. package/dist/{audit-SAXVPGWS.js → audit-VLOHMKZS.js} +4 -4
  23. package/dist/{autocomplete-6PYFCOMX.js → autocomplete-COT2XIF2.js} +4 -4
  24. package/dist/{avatars-2UQJXHPV.js → avatars-3OFDMP7K.js} +4 -4
  25. package/dist/{bid-pricing-WSHACGX4.js → bid-pricing-5RJI4XRY.js} +4 -4
  26. package/dist/{brand-XBABUT52.js → brand-HEG34BBE.js} +2 -2
  27. package/dist/{brief-KKNC32TA.js → brief-X3DWOXZB.js} +10 -10
  28. package/dist/{campaign-groups-G35366AW.js → campaign-groups-VSPY3PGK.js} +9 -9
  29. package/dist/{campaign-writes-SXLZFYF6.js → campaign-writes-SX52CJYW.js} +3 -3
  30. package/dist/{campaign-writes-ZQGN7FQ3.js → campaign-writes-UXSPJHNL.js} +4 -4
  31. package/dist/{campaigns-WECN54WV.js → campaigns-K4MWUORA.js} +5 -5
  32. package/dist/{campaigns-GXUCHQ2S.js → campaigns-UB7QCJUT.js} +12 -12
  33. package/dist/{campaigns-YS3OGQXO.js → campaigns-X3DPCCSN.js} +7 -7
  34. package/dist/{canvas-I6UOCL3M.js → canvas-WBQKGYOB.js} +14 -14
  35. package/dist/{capabilities-74I5AQ36.js → capabilities-3W5CZZFQ.js} +4 -4
  36. package/dist/{catalog-IQEQ5TGQ.js → catalog-E62VZ4QC.js} +6 -6
  37. package/dist/{catalogs-BRXEDE56.js → catalogs-G3YEVG6S.js} +3 -3
  38. package/dist/{changes-6QBJMGJC.js → changes-TP7ZZHB3.js} +4 -4
  39. package/dist/{chatgpt-7W75X3ER.js → chatgpt-QNUN63YS.js} +13 -13
  40. package/dist/{chats-DWHF64IU.js → chats-5JUHCYQ7.js} +4 -4
  41. package/dist/{chunk-JM73NDCM.js → chunk-2HZN4CJD.js} +2 -2
  42. package/dist/{chunk-OC5IJSIW.js → chunk-2LY4RW5O.js} +3 -3
  43. package/dist/{chunk-7J6EHOH6.js → chunk-35XWJEWH.js} +2 -2
  44. package/dist/{chunk-7QJVPMVB.js → chunk-3EEOCPPI.js} +3 -3
  45. package/dist/{chunk-7GPDUS3P.js → chunk-5XQEA7RP.js} +2 -2
  46. package/dist/{chunk-RSW6QJPH.js → chunk-6VAAU2DJ.js} +2 -2
  47. package/dist/{chunk-LL2CD5WU.js → chunk-6W37TO6U.js} +2 -2
  48. package/dist/{chunk-CLMM6P6B.js → chunk-76KTC7RD.js} +2 -2
  49. package/dist/{chunk-OKG6GX2F.js → chunk-AQ7UIRZ3.js} +2 -2
  50. package/dist/{chunk-HMEFD2CG.js → chunk-AQYRPO4R.js} +5 -5
  51. package/dist/{chunk-NPE7EWBE.js → chunk-CC7IKR36.js} +2 -2
  52. package/dist/{chunk-QJE6ZYGI.js → chunk-CWX4PPOK.js} +2 -2
  53. package/dist/{chunk-SBMIQDCX.js → chunk-ER322F6V.js} +2 -2
  54. package/dist/{chunk-CRYUEDIE.js → chunk-ERFFZYCK.js} +3 -3
  55. package/dist/{chunk-VWCELTQE.js → chunk-FQOBCTMF.js} +2 -2
  56. package/dist/{chunk-4SJDDGPV.js → chunk-GTRZUWT2.js} +2 -2
  57. package/dist/{chunk-73QKIIIR.js → chunk-GWZCWUUQ.js} +2 -2
  58. package/dist/{chunk-KWAOTV7F.js → chunk-GX6VAHY7.js} +2 -2
  59. package/dist/{chunk-XG3XCHN6.js → chunk-HA5D6US2.js} +2 -2
  60. package/dist/{chunk-ZNBDKK4Y.js → chunk-HWB5DN32.js} +2 -2
  61. package/dist/{chunk-5IDWGK5Q.js → chunk-I2Z3Q436.js} +3 -3
  62. package/dist/{chunk-S7PMGBMG.js → chunk-J6QVRNHE.js} +10 -10
  63. package/dist/{chunk-XWH7CCBL.js → chunk-KFKZHKGZ.js} +23 -8
  64. package/dist/chunk-KFKZHKGZ.js.map +1 -0
  65. package/dist/{chunk-IXKEWS7X.js → chunk-KIAD2YRA.js} +2 -2
  66. package/dist/{chunk-FTWJFDIN.js → chunk-KLBTXETO.js} +169 -169
  67. package/dist/chunk-KLBTXETO.js.map +1 -0
  68. package/dist/{chunk-FEXDI4NM.js → chunk-KSTGP67A.js} +2 -2
  69. package/dist/{chunk-OBDAYP2P.js → chunk-KY4MPR6R.js} +4 -4
  70. package/dist/chunk-KY4MPR6R.js.map +1 -0
  71. package/dist/{chunk-2SCPDSFN.js → chunk-LIQ4SQ2T.js} +2 -2
  72. package/dist/{chunk-AN447DQB.js → chunk-LTGKIBVX.js} +3 -3
  73. package/dist/{chunk-RRUJQVWA.js → chunk-MF5WL2MP.js} +4 -4
  74. package/dist/{chunk-HXTGYOQC.js → chunk-MO7XF4HR.js} +3 -3
  75. package/dist/{chunk-XML7AJM3.js → chunk-NE4F3FHN.js} +1 -1
  76. package/dist/chunk-NE4F3FHN.js.map +1 -0
  77. package/dist/{chunk-3KBCO5LK.js → chunk-NX6U2JSE.js} +13 -13
  78. package/dist/{chunk-FHXIEMCG.js → chunk-O7NR6OPL.js} +2 -2
  79. package/dist/{chunk-DIY6QR3E.js → chunk-OTDS56OQ.js} +4 -4
  80. package/dist/{chunk-SJDPHVGE.js → chunk-PQEPGP2M.js} +2 -2
  81. package/dist/{chunk-QXZYAIWS.js → chunk-Q4XTRXJV.js} +5 -5
  82. package/dist/{chunk-BYDF22T4.js → chunk-QEGHWJXC.js} +3 -3
  83. package/dist/{chunk-XYMPS526.js → chunk-QKBO6QD2.js} +2 -2
  84. package/dist/{chunk-3RJ3VGJP.js → chunk-R3OD5PVZ.js} +2 -2
  85. package/dist/{chunk-ZJ47BR6X.js → chunk-RNNIKAR7.js} +2 -2
  86. package/dist/{chunk-HYCIBVDW.js → chunk-RWPQW73R.js} +2 -2
  87. package/dist/{chunk-ELVSBTHT.js → chunk-STIQPSLZ.js} +3 -3
  88. package/dist/{chunk-EIP4PYCL.js → chunk-TIOQ7ZFQ.js} +2 -2
  89. package/dist/{chunk-VBHDZSI5.js → chunk-UQFAYC2Y.js} +2 -2
  90. package/dist/{chunk-O36RHBTA.js → chunk-V47L5CNH.js} +32 -8
  91. package/dist/chunk-V47L5CNH.js.map +1 -0
  92. package/dist/{chunk-RMSRKXEN.js → chunk-VTGEGDKW.js} +2 -2
  93. package/dist/{chunk-EVYXTT7V.js → chunk-XCM6XWOB.js} +2 -2
  94. package/dist/{chunk-EZUG6WE2.js → chunk-YDJMV7BC.js} +2 -2
  95. package/dist/{chunk-MMEGP6PX.js → chunk-YPKSJRSF.js} +6 -6
  96. package/dist/{chunk-75VNSKS3.js → chunk-Z65HNXZ2.js} +2 -2
  97. package/dist/{chunk-LO6GEJ4Z.js → chunk-ZFKL7UYS.js} +3 -3
  98. package/dist/{claim-EIL4ZBSN.js → claim-GPKFFPWC.js} +4 -4
  99. package/dist/cli.js +28 -28
  100. package/dist/{companies-2UG7RDYN.js → companies-2PQ2BXQO.js} +4 -4
  101. package/dist/{complete-I4KRFYMD.js → complete-LT6PYTQA.js} +4 -4
  102. package/dist/{connect-TA5W6YGW.js → connect-6LR75R2A.js} +7 -7
  103. package/dist/{conversation-BJI54MI6.js → conversation-4DI5N62Z.js} +4 -4
  104. package/dist/{conversion-report-XQBJ6LG4.js → conversion-report-N4HANYOB.js} +2 -2
  105. package/dist/{conversion-upload-command-JULHGVIR.js → conversion-upload-command-TZTHU2CD.js} +4 -4
  106. package/dist/{conversion-writes-UBCVXP2E.js → conversion-writes-LW4HQKK5.js} +3 -3
  107. package/dist/{conversions-VJOJ5S4U.js → conversions-3I2L4J5V.js} +8 -8
  108. package/dist/{conversions-D236RTUK.js → conversions-TS723AZV.js} +5 -5
  109. package/dist/{create-VY3RQXOY.js → create-CDEXO5TQ.js} +4 -4
  110. package/dist/{create-JLQCXAT2.js → create-DCFRBBRW.js} +3 -3
  111. package/dist/{create-E7BIZNUC.js → create-JOJ7PTHG.js} +4 -4
  112. package/dist/{create-HKOO7O5L.js → create-JUSUZ6AH.js} +4 -4
  113. package/dist/{creatives-OOGFEJMB.js → creatives-HW3QALSP.js} +10 -10
  114. package/dist/{creatives-VXQQUH2F.js → creatives-ODCZ3C2H.js} +9 -9
  115. package/dist/{credentials-G5BJK7OR.js → credentials-AYMSKYFV.js} +17 -17
  116. package/dist/credentials-AYMSKYFV.js.map +1 -0
  117. package/dist/{critique-CMLAPVUB.js → critique-4BFUFNZQ.js} +4 -4
  118. package/dist/{critique-RIVL5E34.js → critique-X5N53OCQ.js} +10 -10
  119. package/dist/{crm-CL7R67FT.js → crm-GGKMNFLI.js} +5 -5
  120. package/dist/{crm-GJCAM3DI.js → crm-GXLDR5RP.js} +5 -5
  121. package/dist/{currency-DJDVIR3C.js → currency-XCGKQ7FE.js} +4 -4
  122. package/dist/{customers-4RJGRR2Y.js → customers-4D6MXGCQ.js} +6 -6
  123. package/dist/{delete-IJNJTAGW.js → delete-2SBGGQDG.js} +4 -4
  124. package/dist/{delete-4QXLTL24.js → delete-7RI3657I.js} +4 -4
  125. package/dist/{delete-R57JFJ3A.js → delete-L2I54O3F.js} +3 -3
  126. package/dist/{demographics-VMARSTTE.js → demographics-SXCT2YZA.js} +4 -4
  127. package/dist/{discard-Y2BKPW4Z.js → discard-5DCAWO7J.js} +4 -4
  128. package/dist/{discover-M3ZKKFEL.js → discover-BJPZNXUQ.js} +4 -4
  129. package/dist/{domain-YTHDTRWN.js → domain-XD5HZMA3.js} +4 -4
  130. package/dist/{draft-ABGQYDHP.js → draft-B44SVA7P.js} +4 -4
  131. package/dist/{draft-U6CT6LCC.js → draft-BV2QRPZ4.js} +4 -4
  132. package/dist/{draft-MNFJ4G3C.js → draft-THPZFASM.js} +3 -3
  133. package/dist/{draft-KOLU5BRR.js → draft-XNUD2ZX3.js} +4 -4
  134. package/dist/{draft-ZVVUAMMQ.js → draft-XZ2UXMUK.js} +5 -5
  135. package/dist/engine/index.js +5 -5
  136. package/dist/{facets-UXN4MYPO.js → facets-FGRPLNHJ.js} +4 -4
  137. package/dist/{feedback-DS2LAGNV.js → feedback-DZHOFE74.js} +2 -2
  138. package/dist/{feedback-record-3TDEWYIS.js → feedback-record-5MLRZODN.js} +12 -12
  139. package/dist/{fit-KXHYKIA4.js → fit-275H7ETA.js} +4 -4
  140. package/dist/{flows-PB4K66NJ.js → flows-DTJHR2HD.js} +11 -11
  141. package/dist/{fonts-NTOQS2KU.js → fonts-SEC67SFN.js} +6 -6
  142. package/dist/{forecast-RWDIDDWP.js → forecast-ZZ7FWJST.js} +4 -4
  143. package/dist/{funnel-XCKPRYTV.js → funnel-ILNHRWXJ.js} +5 -5
  144. package/dist/{generate-DMQUS665.js → generate-6DDI42Y2.js} +3 -3
  145. package/dist/{get-67IG7SZI.js → get-6MJRBEGP.js} +4 -4
  146. package/dist/{get-WO22OCMZ.js → get-CQFJWZSM.js} +4 -4
  147. package/dist/{google-KIBLORXX.js → google-35GDU3G3.js} +18 -18
  148. package/dist/{google-KIBLORXX.js.map → google-35GDU3G3.js.map} +1 -1
  149. package/dist/{history-Q3QCT64S.js → history-DBIEYQHY.js} +3 -3
  150. package/dist/{history-PBFRKLU6.js → history-DBR2D4DC.js} +4 -4
  151. package/dist/{hubspot-PMOZST7W.js → hubspot-YPG2W5UP.js} +8 -8
  152. package/dist/{ideas-PU7IAX6F.js → ideas-AV7CYETD.js} +3 -3
  153. package/dist/{images-QI2HTX6B.js → images-F54P6D3N.js} +4 -4
  154. package/dist/{ingest-ZQM47NVZ.js → ingest-G5OVGZUO.js} +3 -3
  155. package/dist/{ingest-BYJNFOOT.js → ingest-RUC3EPHJ.js} +4 -4
  156. package/dist/{insights-LNAXV2CG.js → insights-ZIU6FJMS.js} +2 -2
  157. package/dist/{inspect-CQH55Q6G.js → inspect-6PCX234P.js} +4 -4
  158. package/dist/{intent-ICKFJRT2.js → intent-HG637ISN.js} +4 -4
  159. package/dist/{keyword-gap-NGPH32FN.js → keyword-gap-MBZ4T6PS.js} +4 -4
  160. package/dist/{keyword-metrics-E3NJUSEQ.js → keyword-metrics-C7TN7WVV.js} +5 -5
  161. package/dist/{keywords-for-site-RH47P4GJ.js → keywords-for-site-RXYG74EH.js} +4 -4
  162. package/dist/{landing-4PA7GCPM.js → landing-EPYJ2TYC.js} +2 -2
  163. package/dist/{languages-JDYL2N5F.js → languages-HORKPDNH.js} +4 -4
  164. package/dist/{leads-I7BO5V7P.js → leads-5E3MULCF.js} +4 -4
  165. package/dist/{learn-HZU3QWNN.js → learn-EC73LWRX.js} +8 -8
  166. package/dist/{line-item-writes-JSR53MID.js → line-item-writes-OWDX5TF4.js} +4 -4
  167. package/dist/{line-items-2WFLKOOR.js → line-items-LF4IZCVD.js} +5 -5
  168. package/dist/{link-AYXOJQDV.js → link-D2ZPRSGD.js} +4 -4
  169. package/dist/{linkedin-M2PVZYLV.js → linkedin-3LUIRE76.js} +27 -27
  170. package/dist/{list-3OKEMUFD.js → list-5LXT3MMM.js} +3 -3
  171. package/dist/{list-4MQC23JH.js → list-PYRY2HPB.js} +4 -4
  172. package/dist/{list-QGLIL7J6.js → list-QTFE6CJ2.js} +4 -4
  173. package/dist/{locations-2NKBJKBT.js → locations-74TPQWAT.js} +2 -2
  174. package/dist/{locations-S4U6IJIS.js → locations-J4G5RNPH.js} +4 -4
  175. package/dist/{log-QHR2JNKW.js → log-YOEMOLDG.js} +4 -4
  176. package/dist/{make-25QFTC3S.js → make-2EK4E4BB.js} +18 -18
  177. package/dist/{map-3BVFAP33.js → map-XMWYNJZI.js} +5 -5
  178. package/dist/{mcp-LH5KR6RO.js → mcp-6HL4CR5E.js} +3 -3
  179. package/dist/{media-sources-3D246I3O.js → media-sources-WFTHXYMZ.js} +2 -2
  180. package/dist/{members-4DUQHLZH.js → members-6FKD5KZ2.js} +4 -4
  181. package/dist/{metrics-AY4RP54F.js → metrics-SQDJ5NQO.js} +4 -4
  182. package/dist/{models-5NTC7A5G.js → models-6T2XV2KB.js} +2 -2
  183. package/dist/{normalize-CD4PQRYY.js → normalize-3JLFCOWS.js} +4 -4
  184. package/dist/{options-6TE5E34Z.js → options-RAHLATMR.js} +7 -7
  185. package/dist/{performance-7LQQCEAW.js → performance-FKL2KHHX.js} +5 -5
  186. package/dist/{pixels-TZPF746S.js → pixels-45A55MOP.js} +3 -3
  187. package/dist/{promoted-tweet-writes-F76YIMB6.js → promoted-tweet-writes-DMFVG63W.js} +4 -4
  188. package/dist/{promoted-tweets-EJL37P7K.js → promoted-tweets-KJYCL6J5.js} +3 -3
  189. package/dist/{publish-H5S2IKZP.js → publish-Y5PALSEY.js} +4 -4
  190. package/dist/{query-CPZZNMDY.js → query-IEZRY6HV.js} +4 -4
  191. package/dist/{reddit-INGPFGP4.js → reddit-CIJFBT32.js} +4 -4
  192. package/dist/{refresh-MKSKISPX.js → refresh-SWW23DAQ.js} +3 -3
  193. package/dist/{release-J5LIAIZT.js → release-FOBIO5QG.js} +4 -4
  194. package/dist/{relevant-pages-MTMFMBPD.js → relevant-pages-MFJEPBR4.js} +4 -4
  195. package/dist/{remove-LYEK7VFV.js → remove-OXAH3ZKL.js} +3 -3
  196. package/dist/{reopen-FR4UBOG7.js → reopen-JFRI6ZR6.js} +4 -4
  197. package/dist/{rerun-S43IY6ES.js → rerun-73NGMIM7.js} +19 -19
  198. package/dist/{research-RPJSOWPT.js → research-7N67CM2T.js} +56 -20
  199. package/dist/research-7N67CM2T.js.map +1 -0
  200. package/dist/{research-PA53M335.js → research-SNMF4JOY.js} +10 -10
  201. package/dist/{reset-RCYRE5WO.js → reset-222UFTF6.js} +3 -3
  202. package/dist/{reset-H3ES4WV5.js → reset-B6JRVIIH.js} +3 -3
  203. package/dist/{resolve-QIDQJCE6.js → resolve-XQCGZYTD.js} +4 -4
  204. package/dist/{retry-WLVMR7XP.js → retry-O6BBBGXP.js} +3 -3
  205. package/dist/{retry-PLLCFOJW.js → retry-TQHVMUU4.js} +3 -3
  206. package/dist/{run-G5RKPZII.js → run-6L3QS4PP.js} +19 -19
  207. package/dist/{run-4D7ZCLMF.js → run-FDSII53R.js} +4 -4
  208. package/dist/{scaffold-ad-4BLTIK6L.js → scaffold-ad-WRPLC3JR.js} +17 -17
  209. package/dist/{scaffold-static-ad-QIRUSQ5R.js → scaffold-static-ad-HRLKY5WF.js} +23 -23
  210. package/dist/{scaffold-video-3E2LVSAW.js → scaffold-video-LSOSZCVF.js} +15 -15
  211. package/dist/{schedule-RXUUCNNI.js → schedule-KNRJAYCK.js} +3 -3
  212. package/dist/{scheduled-agents-2NCGSD76.js → scheduled-agents-IPZ5QA6C.js} +11 -11
  213. package/dist/{schema-SFODURN7.js → schema-H43I3TR4.js} +5 -5
  214. package/dist/{search-7QVZOWSI.js → search-7CMRZNWL.js} +3 -3
  215. package/dist/{select-YHN6I22X.js → select-OKF5SLAO.js} +12 -12
  216. package/dist/{set-prompt-FNFAKIXJ.js → set-prompt-N54XKRGK.js} +11 -11
  217. package/dist/{setup-links-XW4A6L2I.js → setup-links-2MOYMVEY.js} +4 -4
  218. package/dist/{site-6UTQSYIK.js → site-BDTMN6VB.js} +5 -5
  219. package/dist/{sources-QQNWQLUM.js → sources-4XCN3STL.js} +7 -7
  220. package/dist/{sources-UGMZFZ2E.js → sources-TCEHZ5RV.js} +6 -6
  221. package/dist/{stale-NWS2K6VC.js → stale-J5PKAEBW.js} +11 -11
  222. package/dist/{status-NXGKJGH7.js → status-6AN44KXK.js} +4 -4
  223. package/dist/{studio-HUEBE6DS.js → studio-TM3MAAUW.js} +4 -4
  224. package/dist/{sync-RXS6BPLM.js → sync-TPOVAGPK.js} +3 -3
  225. package/dist/{sync-definition-GKSRIFNP.js → sync-definition-A4SIK5VW.js} +14 -14
  226. package/dist/{tags-CMBKEXIZ.js → tags-CN6I22A5.js} +4 -4
  227. package/dist/{tags-C65JB762.js → tags-N6SF24MU.js} +3 -3
  228. package/dist/{tags-R3K35KTL.js → tags-QITCY5QO.js} +4 -4
  229. package/dist/{tags-GFFQLLG2.js → tags-TMUNXXYN.js} +4 -4
  230. package/dist/{tags-IJN2SPSM.js → tags-U4JDAVUH.js} +4 -4
  231. package/dist/{targeting-criteria-IHBPLHSX.js → targeting-criteria-DRA5JGCZ.js} +3 -3
  232. package/dist/{targets-JH37NVJF.js → targets-B3HWHREZ.js} +4 -4
  233. package/dist/{templates-HXSHQ23T.js → templates-53VD5PEV.js} +4 -4
  234. package/dist/{testimonials-5QGCPZ6K.js → testimonials-NOTV6AON.js} +6 -6
  235. package/dist/{top-companies-FJEFKVI7.js → top-companies-NIG3PBD3.js} +4 -4
  236. package/dist/{translate-EMZEVMXW.js → translate-QYBPQSAP.js} +171 -50
  237. package/dist/translate-QYBPQSAP.js.map +1 -0
  238. package/dist/{triggers-SEOAAJSS.js → triggers-IIUPW5LU.js} +4 -4
  239. package/dist/{unlink-UZDVSHBO.js → unlink-WRF3E3AL.js} +4 -4
  240. package/dist/{unstage-CE5RRGM5.js → unstage-GXHKDXA5.js} +4 -4
  241. package/dist/{update-JZ4I6WW7.js → update-4KUD5OH4.js} +4 -4
  242. package/dist/{update-ZXOG2V34.js → update-6CHXJFMF.js} +3 -3
  243. package/dist/{update-DGZKEP6T.js → update-FGTKHBEG.js} +4 -4
  244. package/dist/{update-JOS4ITAV.js → update-R47RJ5NM.js} +4 -4
  245. package/dist/{upload-SSOPA7ZT.js → upload-3IDNWUH7.js} +4 -4
  246. package/dist/{url-options-QEWKRKZ3.js → url-options-GGXAL3J4.js} +4 -4
  247. package/dist/{url-params-OR5N5EWT.js → url-params-EYHAK4TR.js} +4 -4
  248. package/dist/{validate-P4RGJUCE.js → validate-S3S52QNH.js} +12 -12
  249. package/dist/{videos-GIYDCCKR.js → videos-FH4XUXWR.js} +5 -5
  250. package/dist/{viewer-check-VN2JK2LW.js → viewer-check-5TJ7UGMV.js} +4 -4
  251. package/dist/{winning-ads-7QWEIMRU.js → winning-ads-QMTRP7DI.js} +3 -3
  252. package/dist/{write-commands-SVJ43D7G.js → write-commands-N6ZN3B4E.js} +5 -5
  253. package/dist/{x-OEAKQBB7.js → x-W6GJ63OZ.js} +6 -6
  254. package/package.json +1 -1
  255. package/dist/chunk-FTWJFDIN.js.map +0 -1
  256. package/dist/chunk-O36RHBTA.js.map +0 -1
  257. package/dist/chunk-OBDAYP2P.js.map +0 -1
  258. package/dist/chunk-XML7AJM3.js.map +0 -1
  259. package/dist/chunk-XWH7CCBL.js.map +0 -1
  260. package/dist/credentials-G5BJK7OR.js.map +0 -1
  261. package/dist/research-RPJSOWPT.js.map +0 -1
  262. package/dist/translate-EMZEVMXW.js.map +0 -1
  263. /package/dist/{account-4H7QVBRK.js.map → account-F6MHQ64I.js.map} +0 -0
  264. /package/dist/{account-RDRK7NOE.js.map → account-S2PX5JOR.js.map} +0 -0
  265. /package/dist/{account-writes-AK42HGRM.js.map → account-writes-ISE4U2FQ.js.map} +0 -0
  266. /package/dist/{accounts-4TYIUVWY.js.map → accounts-2D6D4MTX.js.map} +0 -0
  267. /package/dist/{accounts-6COLJJHM.js.map → accounts-TC3LBWNF.js.map} +0 -0
  268. /package/dist/{actions-PEI6ZQAG.js.map → actions-WEZT4Z6N.js.map} +0 -0
  269. /package/dist/{ad-group-writes-QQS4223F.js.map → ad-group-writes-UU5NNKSO.js.map} +0 -0
  270. /package/dist/{ad-groups-WGPDPUI2.js.map → ad-groups-CGFXZNIA.js.map} +0 -0
  271. /package/dist/{ad-writes-XE2IE4DS.js.map → ad-writes-NALDYWOR.js.map} +0 -0
  272. /package/dist/{add-XDOQQCHS.js.map → add-IJ6DDZFU.js.map} +0 -0
  273. /package/dist/{add-XEDSBYLM.js.map → add-N7SAQT4W.js.map} +0 -0
  274. /package/dist/{ads-BCOSQALY.js.map → ads-PV7GZXPR.js.map} +0 -0
  275. /package/dist/{ads-TJ7ACFHG.js.map → ads-R4VOYYCQ.js.map} +0 -0
  276. /package/dist/{advertisers-WSNHNCBQ.js.map → advertisers-OVPF7MPT.js.map} +0 -0
  277. /package/dist/{analytics-PT2GKCFU.js.map → analytics-AIT5OTZU.js.map} +0 -0
  278. /package/dist/{analytics-ZVWUY66X.js.map → analytics-UQZHJ73K.js.map} +0 -0
  279. /package/dist/{animate-3Z7HXOLE.js.map → animate-37ZVC3Q5.js.map} +0 -0
  280. /package/dist/{assign-B26AJLGN.js.map → assign-HTM32ZU7.js.map} +0 -0
  281. /package/dist/{audience-size-ZX565D5P.js.map → audience-size-34FBOXDD.js.map} +0 -0
  282. /package/dist/{audiences-TGD5US2M.js.map → audiences-VEKGLWBG.js.map} +0 -0
  283. /package/dist/{audit-SAXVPGWS.js.map → audit-VLOHMKZS.js.map} +0 -0
  284. /package/dist/{autocomplete-6PYFCOMX.js.map → autocomplete-COT2XIF2.js.map} +0 -0
  285. /package/dist/{avatars-2UQJXHPV.js.map → avatars-3OFDMP7K.js.map} +0 -0
  286. /package/dist/{bid-pricing-WSHACGX4.js.map → bid-pricing-5RJI4XRY.js.map} +0 -0
  287. /package/dist/{brand-XBABUT52.js.map → brand-HEG34BBE.js.map} +0 -0
  288. /package/dist/{brief-KKNC32TA.js.map → brief-X3DWOXZB.js.map} +0 -0
  289. /package/dist/{campaign-groups-G35366AW.js.map → campaign-groups-VSPY3PGK.js.map} +0 -0
  290. /package/dist/{campaign-writes-SXLZFYF6.js.map → campaign-writes-SX52CJYW.js.map} +0 -0
  291. /package/dist/{campaign-writes-ZQGN7FQ3.js.map → campaign-writes-UXSPJHNL.js.map} +0 -0
  292. /package/dist/{campaigns-WECN54WV.js.map → campaigns-K4MWUORA.js.map} +0 -0
  293. /package/dist/{campaigns-GXUCHQ2S.js.map → campaigns-UB7QCJUT.js.map} +0 -0
  294. /package/dist/{campaigns-YS3OGQXO.js.map → campaigns-X3DPCCSN.js.map} +0 -0
  295. /package/dist/{canvas-I6UOCL3M.js.map → canvas-WBQKGYOB.js.map} +0 -0
  296. /package/dist/{capabilities-74I5AQ36.js.map → capabilities-3W5CZZFQ.js.map} +0 -0
  297. /package/dist/{catalog-IQEQ5TGQ.js.map → catalog-E62VZ4QC.js.map} +0 -0
  298. /package/dist/{catalogs-BRXEDE56.js.map → catalogs-G3YEVG6S.js.map} +0 -0
  299. /package/dist/{changes-6QBJMGJC.js.map → changes-TP7ZZHB3.js.map} +0 -0
  300. /package/dist/{chatgpt-7W75X3ER.js.map → chatgpt-QNUN63YS.js.map} +0 -0
  301. /package/dist/{chats-DWHF64IU.js.map → chats-5JUHCYQ7.js.map} +0 -0
  302. /package/dist/{chunk-JM73NDCM.js.map → chunk-2HZN4CJD.js.map} +0 -0
  303. /package/dist/{chunk-OC5IJSIW.js.map → chunk-2LY4RW5O.js.map} +0 -0
  304. /package/dist/{chunk-7J6EHOH6.js.map → chunk-35XWJEWH.js.map} +0 -0
  305. /package/dist/{chunk-7QJVPMVB.js.map → chunk-3EEOCPPI.js.map} +0 -0
  306. /package/dist/{chunk-7GPDUS3P.js.map → chunk-5XQEA7RP.js.map} +0 -0
  307. /package/dist/{chunk-RSW6QJPH.js.map → chunk-6VAAU2DJ.js.map} +0 -0
  308. /package/dist/{chunk-LL2CD5WU.js.map → chunk-6W37TO6U.js.map} +0 -0
  309. /package/dist/{chunk-CLMM6P6B.js.map → chunk-76KTC7RD.js.map} +0 -0
  310. /package/dist/{chunk-OKG6GX2F.js.map → chunk-AQ7UIRZ3.js.map} +0 -0
  311. /package/dist/{chunk-HMEFD2CG.js.map → chunk-AQYRPO4R.js.map} +0 -0
  312. /package/dist/{chunk-NPE7EWBE.js.map → chunk-CC7IKR36.js.map} +0 -0
  313. /package/dist/{chunk-QJE6ZYGI.js.map → chunk-CWX4PPOK.js.map} +0 -0
  314. /package/dist/{chunk-SBMIQDCX.js.map → chunk-ER322F6V.js.map} +0 -0
  315. /package/dist/{chunk-CRYUEDIE.js.map → chunk-ERFFZYCK.js.map} +0 -0
  316. /package/dist/{chunk-VWCELTQE.js.map → chunk-FQOBCTMF.js.map} +0 -0
  317. /package/dist/{chunk-4SJDDGPV.js.map → chunk-GTRZUWT2.js.map} +0 -0
  318. /package/dist/{chunk-73QKIIIR.js.map → chunk-GWZCWUUQ.js.map} +0 -0
  319. /package/dist/{chunk-KWAOTV7F.js.map → chunk-GX6VAHY7.js.map} +0 -0
  320. /package/dist/{chunk-XG3XCHN6.js.map → chunk-HA5D6US2.js.map} +0 -0
  321. /package/dist/{chunk-ZNBDKK4Y.js.map → chunk-HWB5DN32.js.map} +0 -0
  322. /package/dist/{chunk-5IDWGK5Q.js.map → chunk-I2Z3Q436.js.map} +0 -0
  323. /package/dist/{chunk-S7PMGBMG.js.map → chunk-J6QVRNHE.js.map} +0 -0
  324. /package/dist/{chunk-IXKEWS7X.js.map → chunk-KIAD2YRA.js.map} +0 -0
  325. /package/dist/{chunk-FEXDI4NM.js.map → chunk-KSTGP67A.js.map} +0 -0
  326. /package/dist/{chunk-2SCPDSFN.js.map → chunk-LIQ4SQ2T.js.map} +0 -0
  327. /package/dist/{chunk-AN447DQB.js.map → chunk-LTGKIBVX.js.map} +0 -0
  328. /package/dist/{chunk-RRUJQVWA.js.map → chunk-MF5WL2MP.js.map} +0 -0
  329. /package/dist/{chunk-HXTGYOQC.js.map → chunk-MO7XF4HR.js.map} +0 -0
  330. /package/dist/{chunk-3KBCO5LK.js.map → chunk-NX6U2JSE.js.map} +0 -0
  331. /package/dist/{chunk-FHXIEMCG.js.map → chunk-O7NR6OPL.js.map} +0 -0
  332. /package/dist/{chunk-DIY6QR3E.js.map → chunk-OTDS56OQ.js.map} +0 -0
  333. /package/dist/{chunk-SJDPHVGE.js.map → chunk-PQEPGP2M.js.map} +0 -0
  334. /package/dist/{chunk-QXZYAIWS.js.map → chunk-Q4XTRXJV.js.map} +0 -0
  335. /package/dist/{chunk-BYDF22T4.js.map → chunk-QEGHWJXC.js.map} +0 -0
  336. /package/dist/{chunk-XYMPS526.js.map → chunk-QKBO6QD2.js.map} +0 -0
  337. /package/dist/{chunk-3RJ3VGJP.js.map → chunk-R3OD5PVZ.js.map} +0 -0
  338. /package/dist/{chunk-ZJ47BR6X.js.map → chunk-RNNIKAR7.js.map} +0 -0
  339. /package/dist/{chunk-HYCIBVDW.js.map → chunk-RWPQW73R.js.map} +0 -0
  340. /package/dist/{chunk-ELVSBTHT.js.map → chunk-STIQPSLZ.js.map} +0 -0
  341. /package/dist/{chunk-EIP4PYCL.js.map → chunk-TIOQ7ZFQ.js.map} +0 -0
  342. /package/dist/{chunk-VBHDZSI5.js.map → chunk-UQFAYC2Y.js.map} +0 -0
  343. /package/dist/{chunk-RMSRKXEN.js.map → chunk-VTGEGDKW.js.map} +0 -0
  344. /package/dist/{chunk-EVYXTT7V.js.map → chunk-XCM6XWOB.js.map} +0 -0
  345. /package/dist/{chunk-EZUG6WE2.js.map → chunk-YDJMV7BC.js.map} +0 -0
  346. /package/dist/{chunk-MMEGP6PX.js.map → chunk-YPKSJRSF.js.map} +0 -0
  347. /package/dist/{chunk-75VNSKS3.js.map → chunk-Z65HNXZ2.js.map} +0 -0
  348. /package/dist/{chunk-LO6GEJ4Z.js.map → chunk-ZFKL7UYS.js.map} +0 -0
  349. /package/dist/{claim-EIL4ZBSN.js.map → claim-GPKFFPWC.js.map} +0 -0
  350. /package/dist/{companies-2UG7RDYN.js.map → companies-2PQ2BXQO.js.map} +0 -0
  351. /package/dist/{complete-I4KRFYMD.js.map → complete-LT6PYTQA.js.map} +0 -0
  352. /package/dist/{connect-TA5W6YGW.js.map → connect-6LR75R2A.js.map} +0 -0
  353. /package/dist/{conversation-BJI54MI6.js.map → conversation-4DI5N62Z.js.map} +0 -0
  354. /package/dist/{conversion-report-XQBJ6LG4.js.map → conversion-report-N4HANYOB.js.map} +0 -0
  355. /package/dist/{conversion-upload-command-JULHGVIR.js.map → conversion-upload-command-TZTHU2CD.js.map} +0 -0
  356. /package/dist/{conversion-writes-UBCVXP2E.js.map → conversion-writes-LW4HQKK5.js.map} +0 -0
  357. /package/dist/{conversions-VJOJ5S4U.js.map → conversions-3I2L4J5V.js.map} +0 -0
  358. /package/dist/{conversions-D236RTUK.js.map → conversions-TS723AZV.js.map} +0 -0
  359. /package/dist/{create-VY3RQXOY.js.map → create-CDEXO5TQ.js.map} +0 -0
  360. /package/dist/{create-JLQCXAT2.js.map → create-DCFRBBRW.js.map} +0 -0
  361. /package/dist/{create-E7BIZNUC.js.map → create-JOJ7PTHG.js.map} +0 -0
  362. /package/dist/{create-HKOO7O5L.js.map → create-JUSUZ6AH.js.map} +0 -0
  363. /package/dist/{creatives-OOGFEJMB.js.map → creatives-HW3QALSP.js.map} +0 -0
  364. /package/dist/{creatives-VXQQUH2F.js.map → creatives-ODCZ3C2H.js.map} +0 -0
  365. /package/dist/{critique-CMLAPVUB.js.map → critique-4BFUFNZQ.js.map} +0 -0
  366. /package/dist/{critique-RIVL5E34.js.map → critique-X5N53OCQ.js.map} +0 -0
  367. /package/dist/{crm-CL7R67FT.js.map → crm-GGKMNFLI.js.map} +0 -0
  368. /package/dist/{crm-GJCAM3DI.js.map → crm-GXLDR5RP.js.map} +0 -0
  369. /package/dist/{currency-DJDVIR3C.js.map → currency-XCGKQ7FE.js.map} +0 -0
  370. /package/dist/{customers-4RJGRR2Y.js.map → customers-4D6MXGCQ.js.map} +0 -0
  371. /package/dist/{delete-IJNJTAGW.js.map → delete-2SBGGQDG.js.map} +0 -0
  372. /package/dist/{delete-4QXLTL24.js.map → delete-7RI3657I.js.map} +0 -0
  373. /package/dist/{delete-R57JFJ3A.js.map → delete-L2I54O3F.js.map} +0 -0
  374. /package/dist/{demographics-VMARSTTE.js.map → demographics-SXCT2YZA.js.map} +0 -0
  375. /package/dist/{discard-Y2BKPW4Z.js.map → discard-5DCAWO7J.js.map} +0 -0
  376. /package/dist/{discover-M3ZKKFEL.js.map → discover-BJPZNXUQ.js.map} +0 -0
  377. /package/dist/{domain-YTHDTRWN.js.map → domain-XD5HZMA3.js.map} +0 -0
  378. /package/dist/{draft-ABGQYDHP.js.map → draft-B44SVA7P.js.map} +0 -0
  379. /package/dist/{draft-U6CT6LCC.js.map → draft-BV2QRPZ4.js.map} +0 -0
  380. /package/dist/{draft-MNFJ4G3C.js.map → draft-THPZFASM.js.map} +0 -0
  381. /package/dist/{draft-KOLU5BRR.js.map → draft-XNUD2ZX3.js.map} +0 -0
  382. /package/dist/{draft-ZVVUAMMQ.js.map → draft-XZ2UXMUK.js.map} +0 -0
  383. /package/dist/{facets-UXN4MYPO.js.map → facets-FGRPLNHJ.js.map} +0 -0
  384. /package/dist/{feedback-DS2LAGNV.js.map → feedback-DZHOFE74.js.map} +0 -0
  385. /package/dist/{feedback-record-3TDEWYIS.js.map → feedback-record-5MLRZODN.js.map} +0 -0
  386. /package/dist/{fit-KXHYKIA4.js.map → fit-275H7ETA.js.map} +0 -0
  387. /package/dist/{flows-PB4K66NJ.js.map → flows-DTJHR2HD.js.map} +0 -0
  388. /package/dist/{fonts-NTOQS2KU.js.map → fonts-SEC67SFN.js.map} +0 -0
  389. /package/dist/{forecast-RWDIDDWP.js.map → forecast-ZZ7FWJST.js.map} +0 -0
  390. /package/dist/{funnel-XCKPRYTV.js.map → funnel-ILNHRWXJ.js.map} +0 -0
  391. /package/dist/{generate-DMQUS665.js.map → generate-6DDI42Y2.js.map} +0 -0
  392. /package/dist/{get-67IG7SZI.js.map → get-6MJRBEGP.js.map} +0 -0
  393. /package/dist/{get-WO22OCMZ.js.map → get-CQFJWZSM.js.map} +0 -0
  394. /package/dist/{history-Q3QCT64S.js.map → history-DBIEYQHY.js.map} +0 -0
  395. /package/dist/{history-PBFRKLU6.js.map → history-DBR2D4DC.js.map} +0 -0
  396. /package/dist/{hubspot-PMOZST7W.js.map → hubspot-YPG2W5UP.js.map} +0 -0
  397. /package/dist/{ideas-PU7IAX6F.js.map → ideas-AV7CYETD.js.map} +0 -0
  398. /package/dist/{images-QI2HTX6B.js.map → images-F54P6D3N.js.map} +0 -0
  399. /package/dist/{ingest-ZQM47NVZ.js.map → ingest-G5OVGZUO.js.map} +0 -0
  400. /package/dist/{ingest-BYJNFOOT.js.map → ingest-RUC3EPHJ.js.map} +0 -0
  401. /package/dist/{insights-LNAXV2CG.js.map → insights-ZIU6FJMS.js.map} +0 -0
  402. /package/dist/{inspect-CQH55Q6G.js.map → inspect-6PCX234P.js.map} +0 -0
  403. /package/dist/{intent-ICKFJRT2.js.map → intent-HG637ISN.js.map} +0 -0
  404. /package/dist/{keyword-gap-NGPH32FN.js.map → keyword-gap-MBZ4T6PS.js.map} +0 -0
  405. /package/dist/{keyword-metrics-E3NJUSEQ.js.map → keyword-metrics-C7TN7WVV.js.map} +0 -0
  406. /package/dist/{keywords-for-site-RH47P4GJ.js.map → keywords-for-site-RXYG74EH.js.map} +0 -0
  407. /package/dist/{landing-4PA7GCPM.js.map → landing-EPYJ2TYC.js.map} +0 -0
  408. /package/dist/{languages-JDYL2N5F.js.map → languages-HORKPDNH.js.map} +0 -0
  409. /package/dist/{leads-I7BO5V7P.js.map → leads-5E3MULCF.js.map} +0 -0
  410. /package/dist/{learn-HZU3QWNN.js.map → learn-EC73LWRX.js.map} +0 -0
  411. /package/dist/{line-item-writes-JSR53MID.js.map → line-item-writes-OWDX5TF4.js.map} +0 -0
  412. /package/dist/{line-items-2WFLKOOR.js.map → line-items-LF4IZCVD.js.map} +0 -0
  413. /package/dist/{link-AYXOJQDV.js.map → link-D2ZPRSGD.js.map} +0 -0
  414. /package/dist/{linkedin-M2PVZYLV.js.map → linkedin-3LUIRE76.js.map} +0 -0
  415. /package/dist/{list-3OKEMUFD.js.map → list-5LXT3MMM.js.map} +0 -0
  416. /package/dist/{list-4MQC23JH.js.map → list-PYRY2HPB.js.map} +0 -0
  417. /package/dist/{list-QGLIL7J6.js.map → list-QTFE6CJ2.js.map} +0 -0
  418. /package/dist/{locations-2NKBJKBT.js.map → locations-74TPQWAT.js.map} +0 -0
  419. /package/dist/{locations-S4U6IJIS.js.map → locations-J4G5RNPH.js.map} +0 -0
  420. /package/dist/{log-QHR2JNKW.js.map → log-YOEMOLDG.js.map} +0 -0
  421. /package/dist/{make-25QFTC3S.js.map → make-2EK4E4BB.js.map} +0 -0
  422. /package/dist/{map-3BVFAP33.js.map → map-XMWYNJZI.js.map} +0 -0
  423. /package/dist/{mcp-LH5KR6RO.js.map → mcp-6HL4CR5E.js.map} +0 -0
  424. /package/dist/{media-sources-3D246I3O.js.map → media-sources-WFTHXYMZ.js.map} +0 -0
  425. /package/dist/{members-4DUQHLZH.js.map → members-6FKD5KZ2.js.map} +0 -0
  426. /package/dist/{metrics-AY4RP54F.js.map → metrics-SQDJ5NQO.js.map} +0 -0
  427. /package/dist/{models-5NTC7A5G.js.map → models-6T2XV2KB.js.map} +0 -0
  428. /package/dist/{normalize-CD4PQRYY.js.map → normalize-3JLFCOWS.js.map} +0 -0
  429. /package/dist/{options-6TE5E34Z.js.map → options-RAHLATMR.js.map} +0 -0
  430. /package/dist/{performance-7LQQCEAW.js.map → performance-FKL2KHHX.js.map} +0 -0
  431. /package/dist/{pixels-TZPF746S.js.map → pixels-45A55MOP.js.map} +0 -0
  432. /package/dist/{promoted-tweet-writes-F76YIMB6.js.map → promoted-tweet-writes-DMFVG63W.js.map} +0 -0
  433. /package/dist/{promoted-tweets-EJL37P7K.js.map → promoted-tweets-KJYCL6J5.js.map} +0 -0
  434. /package/dist/{publish-H5S2IKZP.js.map → publish-Y5PALSEY.js.map} +0 -0
  435. /package/dist/{query-CPZZNMDY.js.map → query-IEZRY6HV.js.map} +0 -0
  436. /package/dist/{reddit-INGPFGP4.js.map → reddit-CIJFBT32.js.map} +0 -0
  437. /package/dist/{refresh-MKSKISPX.js.map → refresh-SWW23DAQ.js.map} +0 -0
  438. /package/dist/{release-J5LIAIZT.js.map → release-FOBIO5QG.js.map} +0 -0
  439. /package/dist/{relevant-pages-MTMFMBPD.js.map → relevant-pages-MFJEPBR4.js.map} +0 -0
  440. /package/dist/{remove-LYEK7VFV.js.map → remove-OXAH3ZKL.js.map} +0 -0
  441. /package/dist/{reopen-FR4UBOG7.js.map → reopen-JFRI6ZR6.js.map} +0 -0
  442. /package/dist/{rerun-S43IY6ES.js.map → rerun-73NGMIM7.js.map} +0 -0
  443. /package/dist/{research-PA53M335.js.map → research-SNMF4JOY.js.map} +0 -0
  444. /package/dist/{reset-RCYRE5WO.js.map → reset-222UFTF6.js.map} +0 -0
  445. /package/dist/{reset-H3ES4WV5.js.map → reset-B6JRVIIH.js.map} +0 -0
  446. /package/dist/{resolve-QIDQJCE6.js.map → resolve-XQCGZYTD.js.map} +0 -0
  447. /package/dist/{retry-WLVMR7XP.js.map → retry-O6BBBGXP.js.map} +0 -0
  448. /package/dist/{retry-PLLCFOJW.js.map → retry-TQHVMUU4.js.map} +0 -0
  449. /package/dist/{run-G5RKPZII.js.map → run-6L3QS4PP.js.map} +0 -0
  450. /package/dist/{run-4D7ZCLMF.js.map → run-FDSII53R.js.map} +0 -0
  451. /package/dist/{scaffold-ad-4BLTIK6L.js.map → scaffold-ad-WRPLC3JR.js.map} +0 -0
  452. /package/dist/{scaffold-static-ad-QIRUSQ5R.js.map → scaffold-static-ad-HRLKY5WF.js.map} +0 -0
  453. /package/dist/{scaffold-video-3E2LVSAW.js.map → scaffold-video-LSOSZCVF.js.map} +0 -0
  454. /package/dist/{schedule-RXUUCNNI.js.map → schedule-KNRJAYCK.js.map} +0 -0
  455. /package/dist/{scheduled-agents-2NCGSD76.js.map → scheduled-agents-IPZ5QA6C.js.map} +0 -0
  456. /package/dist/{schema-SFODURN7.js.map → schema-H43I3TR4.js.map} +0 -0
  457. /package/dist/{search-7QVZOWSI.js.map → search-7CMRZNWL.js.map} +0 -0
  458. /package/dist/{select-YHN6I22X.js.map → select-OKF5SLAO.js.map} +0 -0
  459. /package/dist/{set-prompt-FNFAKIXJ.js.map → set-prompt-N54XKRGK.js.map} +0 -0
  460. /package/dist/{setup-links-XW4A6L2I.js.map → setup-links-2MOYMVEY.js.map} +0 -0
  461. /package/dist/{site-6UTQSYIK.js.map → site-BDTMN6VB.js.map} +0 -0
  462. /package/dist/{sources-QQNWQLUM.js.map → sources-4XCN3STL.js.map} +0 -0
  463. /package/dist/{sources-UGMZFZ2E.js.map → sources-TCEHZ5RV.js.map} +0 -0
  464. /package/dist/{stale-NWS2K6VC.js.map → stale-J5PKAEBW.js.map} +0 -0
  465. /package/dist/{status-NXGKJGH7.js.map → status-6AN44KXK.js.map} +0 -0
  466. /package/dist/{studio-HUEBE6DS.js.map → studio-TM3MAAUW.js.map} +0 -0
  467. /package/dist/{sync-RXS6BPLM.js.map → sync-TPOVAGPK.js.map} +0 -0
  468. /package/dist/{sync-definition-GKSRIFNP.js.map → sync-definition-A4SIK5VW.js.map} +0 -0
  469. /package/dist/{tags-CMBKEXIZ.js.map → tags-CN6I22A5.js.map} +0 -0
  470. /package/dist/{tags-C65JB762.js.map → tags-N6SF24MU.js.map} +0 -0
  471. /package/dist/{tags-R3K35KTL.js.map → tags-QITCY5QO.js.map} +0 -0
  472. /package/dist/{tags-GFFQLLG2.js.map → tags-TMUNXXYN.js.map} +0 -0
  473. /package/dist/{tags-IJN2SPSM.js.map → tags-U4JDAVUH.js.map} +0 -0
  474. /package/dist/{targeting-criteria-IHBPLHSX.js.map → targeting-criteria-DRA5JGCZ.js.map} +0 -0
  475. /package/dist/{targets-JH37NVJF.js.map → targets-B3HWHREZ.js.map} +0 -0
  476. /package/dist/{templates-HXSHQ23T.js.map → templates-53VD5PEV.js.map} +0 -0
  477. /package/dist/{testimonials-5QGCPZ6K.js.map → testimonials-NOTV6AON.js.map} +0 -0
  478. /package/dist/{top-companies-FJEFKVI7.js.map → top-companies-NIG3PBD3.js.map} +0 -0
  479. /package/dist/{triggers-SEOAAJSS.js.map → triggers-IIUPW5LU.js.map} +0 -0
  480. /package/dist/{unlink-UZDVSHBO.js.map → unlink-WRF3E3AL.js.map} +0 -0
  481. /package/dist/{unstage-CE5RRGM5.js.map → unstage-GXHKDXA5.js.map} +0 -0
  482. /package/dist/{update-JZ4I6WW7.js.map → update-4KUD5OH4.js.map} +0 -0
  483. /package/dist/{update-ZXOG2V34.js.map → update-6CHXJFMF.js.map} +0 -0
  484. /package/dist/{update-DGZKEP6T.js.map → update-FGTKHBEG.js.map} +0 -0
  485. /package/dist/{update-JOS4ITAV.js.map → update-R47RJ5NM.js.map} +0 -0
  486. /package/dist/{upload-SSOPA7ZT.js.map → upload-3IDNWUH7.js.map} +0 -0
  487. /package/dist/{url-options-QEWKRKZ3.js.map → url-options-GGXAL3J4.js.map} +0 -0
  488. /package/dist/{url-params-OR5N5EWT.js.map → url-params-EYHAK4TR.js.map} +0 -0
  489. /package/dist/{validate-P4RGJUCE.js.map → validate-S3S52QNH.js.map} +0 -0
  490. /package/dist/{videos-GIYDCCKR.js.map → videos-FH4XUXWR.js.map} +0 -0
  491. /package/dist/{viewer-check-VN2JK2LW.js.map → viewer-check-5TJ7UGMV.js.map} +0 -0
  492. /package/dist/{winning-ads-7QWEIMRU.js.map → winning-ads-QMTRP7DI.js.map} +0 -0
  493. /package/dist/{write-commands-SVJ43D7G.js.map → write-commands-N6ZN3B4E.js.map} +0 -0
  494. /package/dist/{x-OEAKQBB7.js.map → x-W6GJ63OZ.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  outputRatioWarningsFor
3
- } from "./chunk-DIY6QR3E.js";
3
+ } from "./chunk-OTDS56OQ.js";
4
4
  import {
5
5
  nodeParamsPreview
6
- } from "./chunk-EZUG6WE2.js";
6
+ } from "./chunk-YDJMV7BC.js";
7
7
  import {
8
8
  waitForSheet
9
9
  } from "./chunk-WN4KX7GE.js";
@@ -31,7 +31,7 @@ import {
31
31
  seriesRunHints,
32
32
  variantImage,
33
33
  writeSeriesMemberCanvas
34
- } from "./chunk-O36RHBTA.js";
34
+ } from "./chunk-V47L5CNH.js";
35
35
  import {
36
36
  buildFailedRunRecord,
37
37
  buildInitialRunRecord,
@@ -40,7 +40,7 @@ import {
40
40
  finalFiles,
41
41
  finalOutputLabelsFromCanvas,
42
42
  nodeOutputsToRecord
43
- } from "./chunk-CRYUEDIE.js";
43
+ } from "./chunk-ERFFZYCK.js";
44
44
  import {
45
45
  clearLegacyDirtyMarker,
46
46
  readRenderState,
@@ -49,7 +49,7 @@ import {
49
49
  recordReviewOutcome,
50
50
  recordSeriesLeadRun,
51
51
  recordSnapshot
52
- } from "./chunk-ELVSBTHT.js";
52
+ } from "./chunk-STIQPSLZ.js";
53
53
  import {
54
54
  BRAND_LOGO_ROLE,
55
55
  CLAIMS_MODEL,
@@ -75,7 +75,7 @@ import {
75
75
  uncastPeople,
76
76
  wireNamedPeople,
77
77
  wireProofBadges
78
- } from "./chunk-S7PMGBMG.js";
78
+ } from "./chunk-J6QVRNHE.js";
79
79
  import {
80
80
  ViewerAnswerSchema,
81
81
  describeViewer,
@@ -95,7 +95,7 @@ import {
95
95
  viewerCheckBeforeRender,
96
96
  viewerCheckSkip,
97
97
  viewerChecksSpent
98
- } from "./chunk-HXTGYOQC.js";
98
+ } from "./chunk-MO7XF4HR.js";
99
99
  import {
100
100
  holdUnbilledSpend,
101
101
  holdWhenSettled,
@@ -113,7 +113,7 @@ import {
113
113
  createEngineFromEnv,
114
114
  resolveConcurrency,
115
115
  ulid
116
- } from "./chunk-HMEFD2CG.js";
116
+ } from "./chunk-AQYRPO4R.js";
117
117
  import {
118
118
  BackendClient,
119
119
  LOGO_COMPOSITE_ROLE,
@@ -135,7 +135,7 @@ import {
135
135
  regenerateTargets,
136
136
  rolesById,
137
137
  staticMasterFormat
138
- } from "./chunk-RRUJQVWA.js";
138
+ } from "./chunk-MF5WL2MP.js";
139
139
  import {
140
140
  requireCredentialsFromEnv
141
141
  } from "./chunk-W3B4BHQU.js";
@@ -149,7 +149,7 @@ import {
149
149
  nativeSurfaceName,
150
150
  readAdSpec,
151
151
  readInterfaceWords
152
- } from "./chunk-CLMM6P6B.js";
152
+ } from "./chunk-76KTC7RD.js";
153
153
  import {
154
154
  bytesOf,
155
155
  judgeWinner,
@@ -158,7 +158,7 @@ import {
158
158
  reviewRenderedStatic,
159
159
  samePictureSizes,
160
160
  staticVerdict
161
- } from "./chunk-4SJDDGPV.js";
161
+ } from "./chunk-GTRZUWT2.js";
162
162
  import {
163
163
  jevCitationJudge
164
164
  } from "./chunk-HO3IUJ4K.js";
@@ -166,7 +166,7 @@ import {
166
166
  GLANCE_CHECK_MODEL,
167
167
  VIEWER_CHECK_MODEL,
168
168
  nearestSupportedAspectRatio
169
- } from "./chunk-OBDAYP2P.js";
169
+ } from "./chunk-KY4MPR6R.js";
170
170
  import {
171
171
  RENDER_REVIEW_MODEL,
172
172
  RENDER_REVIEW_UNAVAILABLE,
@@ -2879,4 +2879,4 @@ export {
2879
2879
  executeCanvasRun,
2880
2880
  buildBackendClient
2881
2881
  };
2882
- //# sourceMappingURL=chunk-3KBCO5LK.js.map
2882
+ //# sourceMappingURL=chunk-NX6U2JSE.js.map
@@ -8,7 +8,7 @@ import {
8
8
  firstTimes,
9
9
  isTriggerKind,
10
10
  parseConditionsExpression
11
- } from "./chunk-XWH7CCBL.js";
11
+ } from "./chunk-KFKZHKGZ.js";
12
12
  import {
13
13
  ApiError,
14
14
  validateConvexId
@@ -379,4 +379,4 @@ export {
379
379
  reactionBody,
380
380
  chatBody
381
381
  };
382
- //# sourceMappingURL=chunk-FHXIEMCG.js.map
382
+ //# sourceMappingURL=chunk-O7NR6OPL.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  loadCompositionMeta
3
- } from "./chunk-HMEFD2CG.js";
3
+ } from "./chunk-AQYRPO4R.js";
4
4
  import {
5
5
  parseRefExpr
6
- } from "./chunk-RRUJQVWA.js";
6
+ } from "./chunk-MF5WL2MP.js";
7
7
  import {
8
8
  resolveAdaptFormats
9
- } from "./chunk-OBDAYP2P.js";
9
+ } from "./chunk-KY4MPR6R.js";
10
10
 
11
11
  // src/commands/canvas/output-ratio.ts
12
12
  import { readFile } from "fs/promises";
@@ -93,4 +93,4 @@ async function outputRatioWarningsFor(canvas, canvasPath) {
93
93
  export {
94
94
  outputRatioWarningsFor
95
95
  };
96
- //# sourceMappingURL=chunk-DIY6QR3E.js.map
96
+ //# sourceMappingURL=chunk-OTDS56OQ.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-VVZBBKRC.js";
24
24
  import {
25
25
  videosIngestRequestSchema
26
- } from "./chunk-XWH7CCBL.js";
26
+ } from "./chunk-KFKZHKGZ.js";
27
27
  import {
28
28
  ApiError,
29
29
  apiPost
@@ -360,4 +360,4 @@ export {
360
360
  runVideoIngest,
361
361
  ingestHints
362
362
  };
363
- //# sourceMappingURL=chunk-SJDPHVGE.js.map
363
+ //# sourceMappingURL=chunk-PQEPGP2M.js.map
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  hubspotRefusal
3
- } from "./chunk-LO6GEJ4Z.js";
3
+ } from "./chunk-ZFKL7UYS.js";
4
4
  import {
5
5
  collectSideEffects,
6
6
  readFlowTree,
7
7
  walkNodes,
8
8
  writeFlowTree
9
- } from "./chunk-RSW6QJPH.js";
9
+ } from "./chunk-6VAAU2DJ.js";
10
10
  import {
11
11
  failApi
12
- } from "./chunk-JM73NDCM.js";
12
+ } from "./chunk-2HZN4CJD.js";
13
13
  import {
14
14
  FLOW_AGENT_DESTINATION_KINDS,
15
15
  FLOW_PROVIDER_TYPE
16
- } from "./chunk-XWH7CCBL.js";
16
+ } from "./chunk-KFKZHKGZ.js";
17
17
  import {
18
18
  ApiError,
19
19
  apiPost
@@ -387,4 +387,4 @@ export {
387
387
  destinationRefusal,
388
388
  connectCommand
389
389
  };
390
- //# sourceMappingURL=chunk-QXZYAIWS.js.map
390
+ //# sourceMappingURL=chunk-Q4XTRXJV.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  handleLinkedinError,
3
3
  resolveAccountIdArg
4
- } from "./chunk-SBMIQDCX.js";
4
+ } from "./chunk-ER322F6V.js";
5
5
  import {
6
6
  adCopyHints,
7
7
  booleanWordPositionalError,
@@ -16,7 +16,7 @@ import {
16
16
  import {
17
17
  LINKEDIN_DRAFT_BATCH_MAX,
18
18
  linkedinDraftOpInputSchema
19
- } from "./chunk-XWH7CCBL.js";
19
+ } from "./chunk-KFKZHKGZ.js";
20
20
  import {
21
21
  apiPost
22
22
  } from "./chunk-XBOK23HI.js";
@@ -343,4 +343,4 @@ export {
343
343
  requireTarget,
344
344
  requireTargets
345
345
  };
346
- //# sourceMappingURL=chunk-BYDF22T4.js.map
346
+ //# sourceMappingURL=chunk-QEGHWJXC.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  flowsDir,
3
3
  walkNodes
4
- } from "./chunk-RSW6QJPH.js";
4
+ } from "./chunk-6VAAU2DJ.js";
5
5
 
6
6
  // src/commands/flows/value-expression.ts
7
7
  import { existsSync, readFileSync } from "fs";
@@ -619,4 +619,4 @@ export {
619
619
  otherSlots,
620
620
  buildFieldMapping
621
621
  };
622
- //# sourceMappingURL=chunk-XYMPS526.js.map
622
+ //# sourceMappingURL=chunk-QKBO6QD2.js.map
@@ -2,7 +2,7 @@ import {
2
2
  mediaTagsCreateRequestSchema,
3
3
  mediaTagsDeleteRequestSchema,
4
4
  mediaTagsUpdateRequestSchema
5
- } from "./chunk-XWH7CCBL.js";
5
+ } from "./chunk-KFKZHKGZ.js";
6
6
  import {
7
7
  ApiError,
8
8
  apiGet,
@@ -194,4 +194,4 @@ Examples:
194
194
  export {
195
195
  makeTagsCommand
196
196
  };
197
- //# sourceMappingURL=chunk-3RJ3VGJP.js.map
197
+ //# sourceMappingURL=chunk-R3OD5PVZ.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-RX6F3GEA.js";
7
7
  import {
8
8
  brandTokensSchema
9
- } from "./chunk-XWH7CCBL.js";
9
+ } from "./chunk-KFKZHKGZ.js";
10
10
 
11
11
  // src/engine/landing/lib/brand-tokens.ts
12
12
  import { readFile as readFile2 } from "fs/promises";
@@ -334,4 +334,4 @@ export {
334
334
  brandCommitsAiHue,
335
335
  brandCommitsCream
336
336
  };
337
- //# sourceMappingURL=chunk-ZJ47BR6X.js.map
337
+ //# sourceMappingURL=chunk-RNNIKAR7.js.map
@@ -9,7 +9,7 @@ import {
9
9
  IMAGE_GENERATE_MODELS,
10
10
  MODEL_REGISTRY,
11
11
  VIDEO_GENERATE_MODELS
12
- } from "./chunk-OBDAYP2P.js";
12
+ } from "./chunk-KY4MPR6R.js";
13
13
  import {
14
14
  ApiError,
15
15
  apiPost
@@ -95,4 +95,4 @@ export {
95
95
  CLIP_PERSON_GENERATION,
96
96
  resolveLibraryImageIds
97
97
  };
98
- //# sourceMappingURL=chunk-HYCIBVDW.js.map
98
+ //# sourceMappingURL=chunk-RWPQW73R.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  prepareCanvas,
3
3
  unsuppliedPlaceholderAssets
4
- } from "./chunk-S7PMGBMG.js";
4
+ } from "./chunk-J6QVRNHE.js";
5
5
  import {
6
6
  isSourceStale
7
- } from "./chunk-XWH7CCBL.js";
7
+ } from "./chunk-KFKZHKGZ.js";
8
8
 
9
9
  // src/commands/canvas/render-state.ts
10
10
  import { mkdir, readdir, readFile, rm, writeFile } from "fs/promises";
@@ -108,4 +108,4 @@ export {
108
108
  staleCreatives,
109
109
  clearLegacyDirtyMarker
110
110
  };
111
- //# sourceMappingURL=chunk-ELVSBTHT.js.map
111
+ //# sourceMappingURL=chunk-STIQPSLZ.js.map
@@ -19,7 +19,7 @@ import {
19
19
  GOOGLE_DRAFT_BATCH_MAX,
20
20
  googleDraftOpInputSchema,
21
21
  toMicros
22
- } from "./chunk-XML7AJM3.js";
22
+ } from "./chunk-NE4F3FHN.js";
23
23
  import {
24
24
  ApiError,
25
25
  apiPost
@@ -493,4 +493,4 @@ export {
493
493
  draftAction,
494
494
  draftListAction
495
495
  };
496
- //# sourceMappingURL=chunk-EIP4PYCL.js.map
496
+ //# sourceMappingURL=chunk-TIOQ7ZFQ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-SSJK7FEV.js";
4
4
  import {
5
5
  flowNodeTriggers
6
- } from "./chunk-XWH7CCBL.js";
6
+ } from "./chunk-KFKZHKGZ.js";
7
7
 
8
8
  // ../api/src/analytics/flowEventKeys.ts
9
9
  function flowNodes(node, acc = []) {
@@ -54,4 +54,4 @@ export {
54
54
  flowNodes,
55
55
  flowEventKeys
56
56
  };
57
- //# sourceMappingURL=chunk-VBHDZSI5.js.map
57
+ //# sourceMappingURL=chunk-UQFAYC2Y.js.map
@@ -1,19 +1,21 @@
1
1
  import {
2
2
  finalOutputLabelsFromCanvas,
3
3
  parseDefinitionStrategyFields
4
- } from "./chunk-CRYUEDIE.js";
4
+ } from "./chunk-ERFFZYCK.js";
5
5
  import {
6
6
  readRenderState
7
- } from "./chunk-ELVSBTHT.js";
7
+ } from "./chunk-STIQPSLZ.js";
8
8
  import {
9
9
  STATIC_AD_ROLE,
10
10
  formatOfAdaptId,
11
+ isCustomersWords,
12
+ isSignatureLine,
11
13
  sameTag,
12
14
  seriesMemberAd
13
- } from "./chunk-S7PMGBMG.js";
15
+ } from "./chunk-J6QVRNHE.js";
14
16
  import {
15
17
  fetchRunRecord
16
- } from "./chunk-73QKIIIR.js";
18
+ } from "./chunk-GWZCWUUQ.js";
17
19
  import {
18
20
  localPathParam
19
21
  } from "./chunk-HIPDMQZ6.js";
@@ -28,11 +30,11 @@ import {
28
30
  nodesWithRole,
29
31
  relaidPictureRole,
30
32
  rolesById
31
- } from "./chunk-RRUJQVWA.js";
33
+ } from "./chunk-MF5WL2MP.js";
32
34
  import {
33
35
  isAdSpec,
34
36
  readAdSpec
35
- } from "./chunk-CLMM6P6B.js";
37
+ } from "./chunk-76KTC7RD.js";
36
38
 
37
39
  // src/commands/baker-child.ts
38
40
  import { execFile } from "child_process";
@@ -339,6 +341,26 @@ function unchangedCopyRefusal(lead, memberSpec) {
339
341
  "Write this ad's own words in its prompt.json `copy`, one line for each of the lead's (same roles), saying this ad's message. Keep everything else: the design is the lead's."
340
342
  );
341
343
  }
344
+ function changedCustomerWordsRefusal(lead, memberSpec) {
345
+ let copy;
346
+ try {
347
+ copy = readAdSpec(memberSpec).copy;
348
+ } catch {
349
+ return null;
350
+ }
351
+ const said = new Set(copy.map((l) => l.text.trim()));
352
+ const changed = lead.copy.filter((line, i) => {
353
+ const below = lead.copy[i + 1];
354
+ const theirs = isCustomersWords(line) || below !== void 0 && isSignatureLine(below);
355
+ return theirs && !said.has(line.text.trim());
356
+ });
357
+ if (changed.length === 0) return null;
358
+ return refusal(
359
+ "series_customer_words_changed",
360
+ `This translation changed a customer's own words: ${changed.map((l) => `"${l.text}"`).join(", ")} is how they said it, and translated it would be words they never said under their name.`,
361
+ `Put ${changed.length === 1 ? "that line" : "those lines"} back in this ad's prompt.json exactly as the lead has ${changed.length === 1 ? "it" : "them"}: ${changed.map((l) => `"${l.text}"`).join(", ")}. Translate only the advertiser's own lines.`
362
+ );
363
+ }
342
364
  function designChangedRefusal(lead, leads) {
343
365
  const chain = leads.length > 0 ? leads : [lead];
344
366
  const design = chain[chain.length - 1] ?? lead;
@@ -359,6 +381,9 @@ async function writeSeriesMemberCanvas(root, slug, opts = {}) {
359
381
  let memberSpec = JSON.parse(await readFile2(promptPath, "utf8").catch(() => "null"));
360
382
  const unchanged = opts.leadWords ? null : unchangedCopyRefusal(version.lead, memberSpec);
361
383
  if (unchanged) return unchanged;
384
+ const language = await translatedInto(root, slug, lead);
385
+ const rewritten = language ? changedCustomerWordsRefusal(version.lead, memberSpec) : null;
386
+ if (rewritten) return rewritten;
362
387
  const file = canvasFile(root, slug);
363
388
  const before = await readFile2(file, "utf8").catch(() => null);
364
389
  const leadDesign = seriesDesignOf(version.spec);
@@ -375,7 +400,6 @@ async function writeSeriesMemberCanvas(root, slug, opts = {}) {
375
400
  `, "utf8");
376
401
  designFromLead = true;
377
402
  }
378
- const language = await translatedInto(root, slug, lead);
379
403
  const canvas = seriesMemberAd(
380
404
  rebaseLeadPaths(version.canvas, creativeDir(root, lead), dir),
381
405
  { ...version.lead, ...leadDesign !== null ? { design: leadDesign } : {} },
@@ -419,4 +443,4 @@ export {
419
443
  writeSeriesMemberCanvas,
420
444
  seriesRunHints
421
445
  };
422
- //# sourceMappingURL=chunk-O36RHBTA.js.map
446
+ //# sourceMappingURL=chunk-V47L5CNH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/baker-child.ts","../src/commands/canvas/static-ad-canvas.ts","../src/commands/canvas/static-fix.ts","../src/commands/canvas/series-member.ts"],"sourcesContent":["/**\n * Another `baker` command run from this one, as a child process of the same CLI, read back by its\n * JSON answer: `creatives make` scaffolds through it, and `canvas run --series` renders each ad of\n * a series through it, all at once.\n */\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst run = promisify(execFile);\n\n/** The last JSON object a command printed, after any progress lines. Pure. */\nexport function lastJsonObject(stdout: string): Record<string, unknown> | null {\n for (let at = stdout.lastIndexOf(\"{\"); at >= 0; at = stdout.lastIndexOf(\"{\", at - 1)) {\n if (at > 0 && stdout[at - 1] !== \"\\n\") continue;\n try {\n const parsed: unknown = JSON.parse(stdout.slice(at));\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) return parsed as Record<string, unknown>;\n } catch {\n // Not the start of the final object: keep looking further back.\n }\n if (at === 0) break;\n }\n return null;\n}\n\n/** Run another `baker` command in this same CLI and read its JSON answer. */\nexport async function runBaker(args: string[], signal?: AbortSignal): Promise<Record<string, unknown>> {\n const entry = process.argv[1];\n const [file, argv] = entry ? [process.execPath, [...process.execArgv, entry, ...args]] : [\"baker\", args];\n try {\n const { stdout } = await run(file, argv, { maxBuffer: 32 * 1024 * 1024, ...(signal ? { signal } : {}) });\n return lastJsonObject(stdout) ?? { ok: false, error: { code: \"INTERNAL_ERROR\", message: \"no answer\" } };\n } catch (err) {\n // A scaffold reports its failure on stderr, other commands on stdout.\n const { stdout = \"\", stderr = \"\" } = err as { stdout?: string; stderr?: string };\n return (\n lastJsonObject(stdout) ??\n lastJsonObject(stderr) ?? {\n ok: false,\n error: { code: \"INTERNAL_ERROR\", message: err instanceof Error ? err.message.slice(0, 300) : String(err) },\n }\n );\n }\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","import { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fetchRunRecord } from \"./run-history.ts\";\n\nimport {\n rolesById,\n STATIC_ADAPT_FORMAT_ROLE,\n STATIC_FIX_ROLE,\n STATIC_MASTER_ROLE,\n STATIC_PICK_ROLE,\n STATIC_SAFE_FIT_ROLE,\n STATIC_SIZE_ROLE,\n STATIC_VARIANTS_ROLE,\n} from \"../../engine/scaffold/static-topology.ts\";\n\ntype Output = { url?: unknown; slot?: unknown; sha256?: unknown; path?: unknown };\n/** One node's outputs as a run keeps them: a list (`images`) or a single image, and its role when known. */\n/** A node's outputs by slot: a generation's `images`, a tool's `image`, an ingest's `asset`. */\ntype NodeOutputs = { images?: Output[]; image?: Output; asset?: Output; role?: string };\n\n/**\n * The finished ad a run chose, as the durable URL its record holds: its master (the chosen\n * picture before any logo is placed on it), or, on a run of the older graph, the judge's pick\n * or the lone take. Read from the local run folder first (`manifest.json`, outputs by node id,\n * given roles by `roles` — the canvas's), then from the company's run history (whose nodes\n * carry their roles), so a version rendered in another chat can be corrected too. Null when\n * the run is unknown or made no ad.\n */\nexport async function previousAdImage(\n canvasRoot: string,\n runId: string,\n fetchRecord: (\n runId: string,\n ) => Promise<{ nodes: Array<{ nodeId: string; role?: string; outputs: Output[] }> } | null> = fetchRunRecord,\n roles: Readonly<Record<string, string>> = {},\n): Promise<string | null> {\n try {\n const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, \"manifest.json\"), \"utf8\")) as {\n outputs_by_node?: Record<string, NodeOutputs>;\n };\n const byNode = Object.fromEntries(\n Object.entries(manifest.outputs_by_node ?? {}).map(([id, out]) => [id, { ...out, ...(roles[id] ? { role: roles[id] } : {}) }]),\n );\n const local = chosenUrl(byNode);\n if (local) return local;\n } catch {\n // Not rendered here: ask the run history.\n }\n const record = await fetchRecord(runId).catch(() => null);\n if (!record) return null;\n return chosenUrl(\n Object.fromEntries(\n record.nodes.map((n) => {\n const role = n.role ?? roles[n.nodeId];\n return [n.nodeId, { images: n.outputs, ...(role ? { role } : {}) }];\n }),\n ),\n );\n}\n\n/**\n * The sizes a run delivered (its `output` collect, `finalNode`), each with the format `labels`\n * gives it, from the local run folder: its local file, or its durable URL first (`prefer: \"url\"`).\n * Empty when the run was not rendered here.\n */\nexport async function previousDelivered(\n canvasRoot: string,\n runId: string,\n finalNode: string,\n labels: readonly (string | undefined)[],\n opts: { prefer?: \"url\" } = {},\n): Promise<Array<{ format: string; path: string }>> {\n try {\n const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, \"manifest.json\"), \"utf8\")) as {\n outputs_by_node?: Record<string, NodeOutputs>;\n };\n const images = manifest.outputs_by_node?.[finalNode]?.images ?? [];\n return images.flatMap((image, i) => {\n const local = typeof image.path === \"string\" ? image.path : null;\n const durable = typeof image.url === \"string\" ? image.url : null;\n const source = opts.prefer === \"url\" ? (durable ?? local) : (local ?? durable);\n const format = labels[i];\n return source && format ? [{ format, path: source }] : [];\n });\n } catch {\n return [];\n }\n}\n\n/** Which node holds the chosen ad, best first: by role on the one-picture graph, by id on an older one. */\nconst CHOSEN: ReadonlyArray<(id: string, out: NodeOutputs) => boolean> = [\n (_, out) => out.role === STATIC_MASTER_ROLE,\n (_, out) => out.role === STATIC_PICK_ROLE,\n (_, out) => out.role === STATIC_FIX_ROLE,\n (id, out) => id === \"pick\" && out.role === undefined,\n (id, out) => id === \"ad\" && out.role === undefined,\n];\n\nfunction urlOf(out: NodeOutputs): string | null {\n const url = out.images?.find((o) => typeof o?.url === \"string\")?.url ?? out.image?.url ?? out.asset?.url;\n return typeof url === \"string\" ? url : null;\n}\n\n/** The chosen ad among a run's node outputs (see `previousAdImage`). Never a variant the judge did not keep. Pure. */\nexport function chosenUrl(byNode: Record<string, NodeOutputs>): string | null {\n const entries = Object.entries(byNode).filter(([, out]) => out.role !== STATIC_VARIANTS_ROLE);\n for (const matches of CHOSEN) {\n for (const [id, out] of entries) {\n if (!matches(id, out)) continue;\n const url = urlOf(out);\n if (url) return url;\n }\n }\n return null;\n}\n\n/**\n * The picture a correction (`--fix`) or a person's choice (`--use-variant`) put in place of the\n * variants, the input its master was made from. Null for a plain render: the scaffolded graph\n * already reaches that picture through its own cache. Ids are the ones `fixStaticAd` and\n * `rederiveFromVariant` give those nodes; a run record also carries the correction's role. Pure.\n */\nexport function correctedUrl(byNode: Record<string, NodeOutputs>): string | null {\n for (const [id, out] of Object.entries(byNode)) {\n if (id === \"fix\" || id === \"chosen\" || out.role === STATIC_FIX_ROLE) {\n const url = urlOf(out);\n if (url) return url;\n }\n }\n return null;\n}\n\n/**\n * `correctedUrl` of a run: the local run folder first, then the company's run history, so a\n * version corrected in another chat is found too. Null for a plain render or an unknown run.\n */\nexport async function correctedPicture(\n canvasRoot: string,\n runId: string,\n fetchRecord: (\n runId: string,\n ) => Promise<{ nodes: Array<{ nodeId: string; role?: string; outputs: Output[] }> } | null> = fetchRunRecord,\n): Promise<string | null> {\n try {\n const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, \"manifest.json\"), \"utf8\")) as {\n outputs_by_node?: Record<string, NodeOutputs>;\n };\n if (manifest.outputs_by_node) return correctedUrl(manifest.outputs_by_node);\n } catch {\n // Not rendered here: ask the run history.\n }\n const record = await fetchRecord(runId).catch(() => null);\n if (!record) return null;\n return correctedUrl(\n Object.fromEntries(record.nodes.map((n) => [n.nodeId, { images: n.outputs, ...(n.role ? { role: n.role } : {}) }])),\n );\n}\n\n/**\n * How a version's picture came to be, where its canvas alone would not say: `chosen`, the person\n * picked it (`--use-variant`), so it is only ever corrected, never replaced, through every fix and\n * re-layout of it; `redrawn`, a new picture told what the last one got wrong (an autofix round),\n * which the scaffolded graph would not draw again.\n */\nexport type PictureRecord = { runId: string; chosen?: true; redrawn?: true };\n\n/**\n * The record of run `runId`'s picture: `chose`, the person picked it now; `keeps`, the run kept the\n * picture of version `from` (a fix, an edit, a re-layout), whose record `of` is. Pure.\n */\nexport function pictureRecord(\n runId: string,\n opts: { chose?: boolean; of?: PictureRecord | undefined; from?: string | undefined; keeps?: boolean; redrawn?: boolean },\n): PictureRecord {\n const chosen = opts.chose === true || (opts.keeps === true && keepsChosen(opts.of, opts.from));\n return { runId, ...(chosen ? { chosen: true as const } : {}), ...(opts.redrawn ? { redrawn: true as const } : {}) };\n}\n\n/** Whether version `from` shows a picture the person chose. Pure. */\nexport function keepsChosen(picture: PictureRecord | undefined, from: string | undefined): boolean {\n return picture?.chosen === true && from !== undefined && picture.runId === from;\n}\n\n/**\n * Whether `--regenerate` forces only re-laid-out sizes (their fills and safe fits): work that must start\n * from the picture the version already shows, never from new variants. Pure.\n */\nexport function relaysSizesOnly(canvas: unknown, ids: readonly string[]): boolean {\n const roles = rolesById(canvas);\n const sizing = new Set([STATIC_ADAPT_FORMAT_ROLE, STATIC_SIZE_ROLE, STATIC_SAFE_FIT_ROLE]);\n return ids.length > 0 && ids.every((id) => sizing.has(roles[id] ?? \"\"));\n}\n\n/** A sha256 or a unique prefix of one (at least 8 hex characters). */\nconst SHA_PREFIX = /^[0-9a-f]{8,64}$/;\n\n/** The URL of the variant whose sha256 starts with `sha` among one node's outputs; null when none or several match. */\nfunction matchVariant(outputs: readonly Output[], sha: string): string | null {\n const hits = outputs.filter((o) => typeof o?.sha256 === \"string\" && o.sha256.startsWith(sha) && typeof o.url === \"string\");\n const urls = [...new Set(hits.map((o) => o.url as string))];\n return urls.length === 1 ? (urls[0] as string) : null;\n}\n\n/**\n * The durable URL of the variant to make every size from instead of the judge's pick (`--use-variant`),\n * found by its sha256 among the run's variants, never by position: the local run folder first\n * (its outputs keyed by node id, given roles by `roles`), then the run history. Null when the\n * run or the variant is unknown.\n */\nexport async function variantImage(\n canvasRoot: string,\n runId: string,\n sha256: string,\n fetchRecord: (\n runId: string,\n ) => Promise<{ nodes: Array<{ nodeId: string; role?: string; outputs: Output[] }> } | null> = fetchRunRecord,\n roles: Readonly<Record<string, string>> = {},\n): Promise<string | null> {\n const sha = sha256.trim().toLowerCase();\n if (!SHA_PREFIX.test(sha)) return null;\n try {\n const manifest = JSON.parse(await readFile(path.join(canvasRoot, runId, \"manifest.json\"), \"utf8\")) as {\n outputs_by_node?: Record<string, NodeOutputs>;\n };\n for (const [id, out] of Object.entries(manifest.outputs_by_node ?? {})) {\n if (roles[id] !== STATIC_VARIANTS_ROLE) continue;\n const url = matchVariant(out.images ?? [], sha);\n if (url) return url;\n }\n } catch {\n // Not rendered here: ask the run history.\n }\n const record = await fetchRecord(runId).catch(() => null);\n const variants = record?.nodes.find((n) => n.role === STATIC_VARIANTS_ROLE);\n return variants ? matchVariant(variants.outputs, sha) : null;\n}\n","/**\n * An ad of a series, on disk: `src/creatives/<slug>/` holds its own words (`prompt.json`) and a\n * `_definition.md` naming its lead (`series: <lead>`); its canvas is written from the lead's,\n * every run, as an edit of the lead's ready version (`seriesMemberAd`). The ad never designs a\n * picture of its own, so ten messages in one style come out as one ad ten times.\n */\nimport { existsSync } from \"node:fs\";\nimport { readdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { CreativesRunData } from \"@baker/api\";\nimport { isAdSpec, readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { isCustomersWords, isSignatureLine } from \"../../engine/scaffold/static-proof.ts\";\nimport { sameTag } from \"../../language.ts\";\nimport { formatOfAdaptId } from \"../../engine/scaffold/static-adapt-briefs.ts\";\nimport {\n nodesWithRole,\n relaidPictureRole,\n rolesById,\n STATIC_ADAPT_FORMAT_ROLE,\n} from \"../../engine/scaffold/static-topology.ts\";\nimport { type SeriesLead, seriesMemberAd } from \"../../engine/scaffold/staticAd.ts\";\nimport { parseDefinitionStrategyFields } from \"./creative-definition.ts\";\nimport { localPathParam } from \"./resolve-paths.ts\";\nimport { readRenderState } from \"./render-state.ts\";\nimport { fetchRunRecord } from \"./run-history.ts\";\nimport { finalOutputLabelsFromCanvas } from \"./run-record.ts\";\nimport { isStaticAdCanvas } from \"./static-ad-canvas.ts\";\nimport { previousAdImage, previousDelivered } from \"./static-fix.ts\";\n\n/** Why a series ad cannot be made yet: what to tell the agent, and what to do. */\nexport type SeriesRefusal = { refused: { code: string; message: string; fix: string } };\n\ntype Fetch = (runId: string) => Promise<CreativesRunData | null>;\n\nconst creativeDir = (root: string, slug: string) => path.join(root, \"src\", \"creatives\", slug);\nconst canvasFile = (root: string, slug: string) => path.join(creativeDir(root, slug), `${slug}.canvas.json`);\n\n/** What a creative's `_definition.md` says of its series: its lead (`series:`) and the language its words are in. */\nasync function seriesFieldsOf(root: string, slug: string): Promise<{ seriesLead?: string; language?: string }> {\n const raw = await readFile(path.join(creativeDir(root, slug), \"_definition.md\"), \"utf8\").catch(() => null);\n return raw === null ? {} : parseDefinitionStrategyFields(raw);\n}\n\n/** The lead a creative's `_definition.md` names (`series:`); null when it is no ad of a series. */\nexport async function seriesLeadOf(root: string, slug: string): Promise<string | null> {\n return (await seriesFieldsOf(root, slug)).seriesLead ?? null;\n}\n\n/** The language a translation's words are in: its own, when it is not its lead's. Undefined on any other ad. */\nasync function translatedInto(root: string, slug: string, lead: string): Promise<string | undefined> {\n const own = (await seriesFieldsOf(root, slug)).language;\n const leads = (await seriesFieldsOf(root, lead)).language;\n return own && !(leads && sameTag(own, leads)) ? own : undefined;\n}\n\n/** How many leads up a series may chain: a design, its angle ads, their translations. */\nexport const SERIES_DEPTH = 3;\n\n/**\n * The leads above `slug`, nearest first, up to the ad whose design the whole series has (an angle\n * ad, then the design it was made from). Bounded and cycle-safe; empty for an ad in no series.\n */\nexport async function seriesLeadsAbove(root: string, slug: string): Promise<string[]> {\n const leads: string[] = [];\n let at = await seriesLeadOf(root, slug);\n while (at && at !== slug && !leads.includes(at) && leads.length < SERIES_DEPTH) {\n leads.push(at);\n at = await seriesLeadOf(root, at);\n }\n return leads;\n}\n\n/** Every ad of the series led by `lead`, by slug, in folder order. */\nexport async function seriesMembers(root: string, lead: string): Promise<string[]> {\n const slugs = await readdir(path.join(root, \"src\", \"creatives\")).catch(() => [] as string[]);\n const members: string[] = [];\n for (const slug of slugs.sort()) {\n if (slug !== lead && (await seriesLeadOf(root, slug)) === lead) members.push(slug);\n }\n return members;\n}\n\nfunction refusal(code: string, message: string, fix: string): SeriesRefusal {\n return { refused: { code, message, fix } };\n}\n\n/**\n * The lead's ready version: the one this workspace shows (its render state), its words as that\n * render drew them, its chosen picture and every size it delivered. A lead never rendered, or\n * whose version still needs fixes, is refused: every ad of the series copies it.\n */\nexport async function leadVersion(\n root: string,\n lead: string,\n fetchRecord: Fetch = fetchRunRecord,\n): Promise<{ lead: SeriesLead; canvas: unknown; spec: unknown } | SeriesRefusal> {\n const file = canvasFile(root, lead);\n const canvas: unknown = existsSync(file) ? JSON.parse(await readFile(file, \"utf8\")) : null;\n if (!canvas || !isStaticAdCanvas(canvas)) {\n return refusal(\n \"series_lead_not_found\",\n `The lead ad \"${lead}\" is not a static ad in this workspace.`,\n \"Name a static ad of this workspace as the lead: make it with `baker creatives make <idea>` and render it first.\",\n );\n }\n const canvasRoot = path.join(root, \"canvas\");\n const state = await readRenderState(canvasRoot, lead);\n const runId = state.rendered?.runId;\n if (!runId) {\n return refusal(\n \"series_lead_not_rendered\",\n `The lead ad \"${lead}\" has no finished version yet: every ad of its series is made from it.`,\n `Render the lead first and get it ready: baker canvas run --slug ${lead}. Then make the series.`,\n );\n }\n if ((state.blocking ?? []).length > 0) {\n return refusal(\n \"series_lead_not_ready\",\n `The lead ad \"${lead}\" still needs fixes (${(state.blocking ?? []).join(\" | \")}): the series would copy them.`,\n `Correct the lead until its verdict is ready (baker canvas run --slug ${lead}, or --fix \"<what to change>\"), then run the series again.`,\n );\n }\n const record = (): Promise<CreativesRunData | null> => fetchRecord(runId).catch(() => null);\n const picture = await previousAdImage(canvasRoot, runId, record, { ...rolesById(canvas), ...relaidPictureRole(canvas) });\n const sizes = await deliveredSizes(canvasRoot, runId, canvas, record);\n if (!picture) {\n return refusal(\n \"series_lead_not_rendered\",\n `The finished picture of the lead's version (${runId}) is not available.`,\n `Render the lead again (baker canvas run --slug ${lead}), then run the series.`,\n );\n }\n const drawn = state.prompt ?? JSON.parse(await readFile(path.join(creativeDir(root, lead), \"prompt.json\"), \"utf8\"));\n const copy = readAdSpec(drawn).copy.map((l) => ({ text: l.text, ...(l.role ? { role: l.role } : {}) }));\n return { lead: { slug: lead, runId, copy, picture, sizes }, canvas, spec: drawn };\n}\n\n/** Each re-laid-out size the lead's version delivered, by format: its local run folder first, else its record. */\nasync function deliveredSizes(\n canvasRoot: string,\n runId: string,\n canvas: unknown,\n record: () => Promise<CreativesRunData | null>,\n): Promise<Record<string, string>> {\n const wanted = new Set(nodesWithRole(canvas, STATIC_ADAPT_FORMAT_ROLE).flatMap((n) => formatOfAdaptId(n.id) ?? []));\n const labels = finalOutputLabelsFromCanvas(canvas);\n const local = await previousDelivered(canvasRoot, runId, labels?.nodeId ?? \"final\", labels?.labels ?? [], {\n prefer: \"url\",\n });\n const found = local.length > 0 ? local : ((await record())?.finalOutputs ?? []).flatMap((o) =>\n o.label && o.url ? [{ format: o.label, path: o.url }] : [],\n );\n return Object.fromEntries(found.filter((d) => wanted.has(d.format)).map((d) => [d.format, d.path]));\n}\n\n/**\n * The lead's canvas with its local paths read from the member's folder: the brand's font and\n * logo are the same files, the member's own `prompt.json` stays its own. Pure.\n */\nexport function rebaseLeadPaths<T>(canvas: T, leadDir: string, memberDir: string): T {\n const out = structuredClone(canvas) as { nodes?: Array<{ id?: unknown; type?: unknown; params?: Record<string, unknown> }> };\n for (const node of out.nodes ?? []) {\n const key = localPathParam(node);\n const value = key ? node.params?.[key] : undefined;\n if (!key || !node.params || typeof value !== \"string\" || node.id === \"prompt\" || path.isAbsolute(value)) continue;\n const rel = path.relative(memberDir, path.resolve(leadDir, value)).split(path.sep).join(\"/\");\n node.params[key] = rel.startsWith(\".\") ? rel : `./${rel}`;\n }\n return out as T;\n}\n\n/** What every ad of a series shares with its lead: everything in prompt.json but its words and who it speaks to. */\nconst DESIGN_FIELDS = [\n \"scene\",\n \"brand\",\n \"colors\",\n \"references\",\n \"logo\",\n \"logo_position\",\n \"third_party_brands\",\n \"formats\",\n \"direction\",\n] as const;\n\n/** The design a spec draws, as one comparable string; null when it does not read as an ad spec. Pure. */\nexport function seriesDesignOf(spec: unknown): string | null {\n try {\n const read = readAdSpec(spec) as Record<string, unknown>;\n return JSON.stringify(DESIGN_FIELDS.map((key) => read[key] ?? null));\n } catch {\n return null;\n }\n}\n\n/** `memberSpec` with the lead's design and its own words, viewer and message. Pure. */\nfunction withLeadDesign(memberSpec: unknown, leadSpec: unknown): Record<string, unknown> {\n // An older blueprint names its design in its own shape: each is taken as the ad spec it reads as.\n const asSpec = (spec: unknown): Record<string, unknown> =>\n isAdSpec(spec) ? (spec as Record<string, unknown>) : readAdSpec(spec);\n const lead = asSpec(leadSpec);\n const out = { ...asSpec(memberSpec) };\n for (const key of DESIGN_FIELDS) {\n if (key in lead) out[key] = lead[key];\n else delete out[key];\n }\n return out;\n}\n\n/** A series ad whose words are still the lead's renders the lead again: refused before anything bills. Pure. */\nexport function unchangedCopyRefusal(lead: SeriesLead, memberSpec: unknown): SeriesRefusal | null {\n const words = (copy: ReadonlyArray<{ text: string }>) => copy.map((l) => l.text.trim()).join(\"\\n\");\n let copy: ReadonlyArray<{ text: string }>;\n try {\n copy = readAdSpec(memberSpec).copy;\n } catch {\n return null;\n }\n if (words(copy) !== words(lead.copy)) return null;\n return refusal(\n \"series_copy_unchanged\",\n `This ad's words are still the lead's (\"${lead.copy[0]?.text ?? \"\"}\"): it would render the lead again.`,\n \"Write this ad's own words in its prompt.json `copy`, one line for each of the lead's (same roles), saying this ad's message. Keep everything else: the design is the lead's.\",\n );\n}\n\n/**\n * A translation whose lines the lead holds as a customer's words (a quote, signed by its shape or\n * its role, or by a signature on the line below) are not those words as the lead has them: the\n * translation puts words the customer never said under their name. Null when every one is kept. Pure.\n */\nexport function changedCustomerWordsRefusal(lead: SeriesLead, memberSpec: unknown): SeriesRefusal | null {\n let copy: ReadonlyArray<{ text: string }>;\n try {\n copy = readAdSpec(memberSpec).copy;\n } catch {\n return null;\n }\n const said = new Set(copy.map((l) => l.text.trim()));\n const changed = lead.copy.filter((line, i) => {\n const below = lead.copy[i + 1];\n const theirs = isCustomersWords(line) || (below !== undefined && isSignatureLine(below));\n return theirs && !said.has(line.text.trim());\n });\n if (changed.length === 0) return null;\n return refusal(\n \"series_customer_words_changed\",\n `This translation changed a customer's own words: ${changed.map((l) => `\"${l.text}\"`).join(\", \")} is how they said it, and translated it would be words they never said under their name.`,\n `Put ${changed.length === 1 ? \"that line\" : \"those lines\"} back in this ad's prompt.json exactly as the lead has ${changed.length === 1 ? \"it\" : \"them\"}: ${changed.map((l) => `\"${l.text}\"`).join(\", \")}. Translate only the advertiser's own lines.`,\n );\n}\n\n/**\n * A design edited on an ad of a series: it is made once, on the ad whose design the whole series\n * has (the last of `leads`), then carried down each series run, the farthest first. Pure.\n */\nexport function designChangedRefusal(lead: string, leads: readonly string[]): SeriesRefusal {\n const chain = leads.length > 0 ? leads : [lead];\n const design = chain[chain.length - 1] ?? lead;\n const runs = [...chain].reverse().map((l) => `baker canvas run --series ${l}`);\n return refusal(\n \"series_design_changed\",\n `This ad's design (its scene, colours, pictures or logo in prompt.json) was changed on the ad itself, but every ad of the series has the design of \"${design}\".`,\n `Make the change once, on ${design}: edit src/creatives/${design}/prompt.json (or baker canvas run --slug ${design} --fix \"<the change>\"), then ${runs.join(\", then \")}: every ad takes the new design, its own words kept. Only this ad's copy belongs in its own prompt.json.`,\n );\n}\n\n/**\n * Write the canvas of series ad `slug` from its lead's ready version. Null when `slug` is no ad\n * of a series; a refusal when its lead is not ready or its words are still the lead's (allowed\n * only when the ad is first made, before its words are written: `leadWords`).\n */\nexport async function writeSeriesMemberCanvas(\n root: string,\n slug: string,\n opts: { fetchRecord?: Fetch; leadWords?: boolean; takeLeadDesign?: boolean } = {},\n): Promise<\n | {\n lead: string;\n leadRunId: string;\n canvasPath: string;\n written: boolean;\n designFromLead: boolean;\n /** The ad was last made from an older version of its lead: this run is a new version of the ad. */\n newLeadVersion: boolean;\n }\n | SeriesRefusal\n | null\n> {\n const lead = await seriesLeadOf(root, slug);\n if (!lead) return null;\n const version = await leadVersion(root, lead, opts.fetchRecord);\n if (\"refused\" in version) return version;\n const dir = creativeDir(root, slug);\n const promptPath = path.join(dir, \"prompt.json\");\n let memberSpec = JSON.parse(await readFile(promptPath, \"utf8\").catch(() => \"null\"));\n const unchanged = opts.leadWords ? null : unchangedCopyRefusal(version.lead, memberSpec);\n if (unchanged) return unchanged;\n const language = await translatedInto(root, slug, lead);\n const rewritten = language ? changedCustomerWordsRefusal(version.lead, memberSpec) : null;\n if (rewritten) return rewritten;\n const file = canvasFile(root, slug);\n const before = await readFile(file, \"utf8\").catch(() => null);\n // The design is the lead's. A new version of the lead carries it to an ad untouched since; a\n // design edited on the ad itself is refused, unless the series run is asked to take the lead's back.\n const leadDesign = seriesDesignOf(version.spec);\n const ownDesign = seriesDesignOf(memberSpec);\n const previous = before\n ? (JSON.parse(before) as { metadata?: { series?: { design?: string; run_id?: string } } }).metadata?.series\n : undefined;\n const synced = previous?.design;\n let designFromLead = false;\n if (leadDesign !== null && ownDesign !== null && ownDesign !== leadDesign) {\n if (!opts.takeLeadDesign && ownDesign !== synced) {\n return designChangedRefusal(lead, await seriesLeadsAbove(root, slug));\n }\n memberSpec = withLeadDesign(memberSpec, version.spec);\n await writeFile(promptPath, `${JSON.stringify(memberSpec, null, 2)}\\n`, \"utf8\");\n designFromLead = true;\n }\n const canvas = seriesMemberAd(\n rebaseLeadPaths(version.canvas, creativeDir(root, lead), dir),\n { ...version.lead, ...(leadDesign !== null ? { design: leadDesign } : {}) },\n language ? { language } : {},\n );\n const text = `${JSON.stringify(canvas, null, 2)}\\n`;\n if (before !== text) await writeFile(file, text, \"utf8\");\n const madeFrom = (await readRenderState(path.join(root, \"canvas\"), slug)).seriesLeadRun;\n const newLeadVersion = madeFrom !== undefined && madeFrom !== version.lead.runId;\n return { lead, leadRunId: version.lead.runId, canvasPath: file, written: before !== text, designFromLead, newLeadVersion };\n}\n\n/**\n * What a run of an ad of a series, or of its lead, says to do next: a new version of the lead\n * reaches the series only through a series run, and a change to the design every ad shares is\n * made once, on the lead. Empty for an ad in no series. Pure.\n */\nexport function seriesRunHints(\n slug: string,\n series: { lead?: string | null; leads?: readonly string[]; members: readonly string[] },\n): string[] {\n // Nearest lead first: a translation of an angle ad takes its design from the ad at the top.\n const leads = series.leads?.length ? series.leads : series.lead ? [series.lead] : [];\n const root = leads[leads.length - 1];\n if (root) {\n const runs = [...leads].reverse().map((lead) => `baker canvas run --series ${lead}`);\n return [\n `This ad is one of the series led by ${leads[0]}: its picture is ${root}'s with its own words. A change to what every ad shares (the picture, colours, layout, logo) is made once, on ${root} (src/creatives/${root}/prompt.json, or baker canvas run --slug ${root} --fix \"<the change>\"), then ${runs.join(\", then \")}. Correct only this ad's own words or its own defect here.`,\n ];\n }\n if (series.members.length === 0) return [];\n return [\n `This ad leads a series of ${series.members.length + 1}: baker canvas run --series ${slug} makes ${series.members.join(\", \")} again from this version, each with its own words. Until then they show the lead's earlier version; an ad of the series run by itself (baker canvas run --slug ${series.members[0]}) is made from this version too, its design included.`,\n ];\n}\n"],"mappings":"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","names":["readFile","path","path","readFile","copy"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  latestVersion
3
- } from "./chunk-ELVSBTHT.js";
3
+ } from "./chunk-STIQPSLZ.js";
4
4
  import {
5
5
  canvasOutputsRoot
6
6
  } from "./chunk-HIPDMQZ6.js";
@@ -16,4 +16,4 @@ async function versionOf(slug, run) {
16
16
  export {
17
17
  versionOf
18
18
  };
19
- //# sourceMappingURL=chunk-RMSRKXEN.js.map
19
+ //# sourceMappingURL=chunk-VTGEGDKW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  NUMERIC_ID_REGEX
3
- } from "./chunk-XML7AJM3.js";
3
+ } from "./chunk-NE4F3FHN.js";
4
4
 
5
5
  // ../api/src/ads-google/change-history.ts
6
6
  var CHANGE_SCOPES = ["detail", "summary"];
@@ -414,4 +414,4 @@ export {
414
414
  ACCOUNT_URL_OPTIONS_NOT_STAGEABLE,
415
415
  urlOptionsHints
416
416
  };
417
- //# sourceMappingURL=chunk-EVYXTT7V.js.map
417
+ //# sourceMappingURL=chunk-XCM6XWOB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  REF_PREFIX
3
- } from "./chunk-RRUJQVWA.js";
3
+ } from "./chunk-MF5WL2MP.js";
4
4
 
5
5
  // src/commands/canvas/node-preview.ts
6
6
  var MAX_PARAMS_PREVIEW_LENGTH = 4e3;
@@ -57,4 +57,4 @@ ${body}` : header || body || compactJson(record);
57
57
  export {
58
58
  nodeParamsPreview
59
59
  };
60
- //# sourceMappingURL=chunk-EZUG6WE2.js.map
60
+ //# sourceMappingURL=chunk-YDJMV7BC.js.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  nodeParamsPreview
3
- } from "./chunk-EZUG6WE2.js";
3
+ } from "./chunk-YDJMV7BC.js";
4
4
  import {
5
5
  creativeSlugFromCanvasPath,
6
6
  parseDefinitionSeriesPlace,
7
7
  parseDefinitionSourceFields,
8
8
  parseDefinitionStrategyFields
9
- } from "./chunk-CRYUEDIE.js";
9
+ } from "./chunk-ERFFZYCK.js";
10
10
  import {
11
11
  prepareCanvas
12
- } from "./chunk-S7PMGBMG.js";
12
+ } from "./chunk-J6QVRNHE.js";
13
13
  import {
14
14
  BackendClient
15
- } from "./chunk-HMEFD2CG.js";
15
+ } from "./chunk-AQYRPO4R.js";
16
16
  import {
17
17
  nodeDependencies
18
- } from "./chunk-RRUJQVWA.js";
18
+ } from "./chunk-MF5WL2MP.js";
19
19
  import {
20
20
  requireCredentialsFromEnv
21
21
  } from "./chunk-W3B4BHQU.js";
@@ -204,4 +204,4 @@ export {
204
204
  resolveCanvasPath,
205
205
  syncDefinitionCommand
206
206
  };
207
- //# sourceMappingURL=chunk-MMEGP6PX.js.map
207
+ //# sourceMappingURL=chunk-YPKSJRSF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseBrandTokens
3
- } from "./chunk-ZJ47BR6X.js";
3
+ } from "./chunk-RNNIKAR7.js";
4
4
 
5
5
  // src/engine/brand/fonts.ts
6
6
  import { posix } from "path";
@@ -452,4 +452,4 @@ export {
452
452
  stripFontFaceBlocks,
453
453
  upsertFontFaceCss
454
454
  };
455
- //# sourceMappingURL=chunk-75VNSKS3.js.map
455
+ //# sourceMappingURL=chunk-Z65HNXZ2.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  failApi
3
- } from "./chunk-JM73NDCM.js";
3
+ } from "./chunk-2HZN4CJD.js";
4
4
  import {
5
5
  HUBSPOT_MISSING_GRANT_MARKER,
6
6
  HUBSPOT_NOT_CONNECTED_MESSAGE
7
- } from "./chunk-XWH7CCBL.js";
7
+ } from "./chunk-KFKZHKGZ.js";
8
8
  import {
9
9
  ApiError
10
10
  } from "./chunk-XBOK23HI.js";
@@ -48,4 +48,4 @@ export {
48
48
  hubspotRefusal,
49
49
  failNotConnected
50
50
  };
51
- //# sourceMappingURL=chunk-LO6GEJ4Z.js.map
51
+ //# sourceMappingURL=chunk-ZFKL7UYS.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  failApi,
3
3
  failValidation
4
- } from "./chunk-JM73NDCM.js";
5
- import "./chunk-XWH7CCBL.js";
4
+ } from "./chunk-2HZN4CJD.js";
5
+ import "./chunk-KFKZHKGZ.js";
6
6
  import "./chunk-GXDLWBOY.js";
7
7
  import "./chunk-WYCVJIHD.js";
8
8
  import "./chunk-ZJWUBJYQ.js";
9
- import "./chunk-XML7AJM3.js";
9
+ import "./chunk-NE4F3FHN.js";
10
10
  import {
11
11
  apiPost,
12
12
  validateConvexId
@@ -194,4 +194,4 @@ var claimCommand = defineCommand({
194
194
  export {
195
195
  claimCommand
196
196
  };
197
- //# sourceMappingURL=claim-EIL4ZBSN.js.map
197
+ //# sourceMappingURL=claim-GPKFFPWC.js.map