@koda-sl/baker-cli 0.489.0 → 0.490.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 (311) hide show
  1. package/README.md +169 -7
  2. package/dist/{account-Z65CPOWE.js → account-3H6BZO5H.js} +2 -2
  3. package/dist/account-IKFDY52P.js +138 -0
  4. package/dist/account-IKFDY52P.js.map +1 -0
  5. package/dist/account-assets-LKZVWZAR.js +289 -0
  6. package/dist/account-assets-LKZVWZAR.js.map +1 -0
  7. package/dist/account-level-UJOZDVXY.js +608 -0
  8. package/dist/account-level-UJOZDVXY.js.map +1 -0
  9. package/dist/{account-writes-4N2MA2ZR.js → account-writes-AE5IJGGW.js} +2 -2
  10. package/dist/{accounts-UA2ZWRN4.js → accounts-K4INATCW.js} +2 -2
  11. package/dist/{activities-IQPJPP4B.js → activities-T253KK4Q.js} +4 -4
  12. package/dist/{ad-group-writes-EUTMPBMK.js → ad-group-writes-VRSBI2Z2.js} +2 -2
  13. package/dist/{ad-groups-OVPAI5RM.js → ad-groups-IEBVEAMS.js} +6 -6
  14. package/dist/{ad-writes-DACTYFEO.js → ad-writes-ALV4KFPZ.js} +2 -2
  15. package/dist/{ads-L65JIKCD.js → ads-CQZHD7FC.js} +7 -7
  16. package/dist/{ads-G6AS5L7G.js → ads-QIKZ6O2N.js} +5 -5
  17. package/dist/{ads-HXX2IAFF.js → ads-ZEY72UBN.js} +14 -13
  18. package/dist/ads-ZEY72UBN.js.map +1 -0
  19. package/dist/{adsets-LPN6WFGF.js → adsets-5H3MOT3D.js} +15 -14
  20. package/dist/{adsets-LPN6WFGF.js.map → adsets-5H3MOT3D.js.map} +1 -1
  21. package/dist/{analytics-QKP3A5F3.js → analytics-ALOZ7ZZ4.js} +1 -1
  22. package/dist/asset-writes-L5TMKIZC.js +47 -0
  23. package/dist/audience-writes-X52VG35Y.js +324 -0
  24. package/dist/audience-writes-X52VG35Y.js.map +1 -0
  25. package/dist/{audiences-RPLVMO4H.js → audiences-AAZH56WD.js} +2 -2
  26. package/dist/{audiences-XEZHACKH.js → audiences-X3RLGOVM.js} +12 -6
  27. package/dist/audiences-X3RLGOVM.js.map +1 -0
  28. package/dist/{avatars-MXTI74VC.js → avatars-YSFFRHDK.js} +1 -1
  29. package/dist/{brief-BN4UGUXF.js → brief-7S6XCJIA.js} +15 -15
  30. package/dist/{businesses-PRRYPR7H.js → businesses-H3HIDQX6.js} +2 -2
  31. package/dist/{campaign-writes-BAFB5E7A.js → campaign-writes-7ZF57KLH.js} +3 -3
  32. package/dist/campaign-writes-7ZF57KLH.js.map +1 -0
  33. package/dist/{campaign-writes-U5LTDTYK.js → campaign-writes-U5PUVSMT.js} +2 -2
  34. package/dist/{campaigns-4SOLY7OR.js → campaigns-AV6G3AUU.js} +32 -15
  35. package/dist/campaigns-AV6G3AUU.js.map +1 -0
  36. package/dist/{campaigns-TFEQTSO3.js → campaigns-JEIKY2M4.js} +6 -6
  37. package/dist/{campaigns-NR6TNQFN.js → campaigns-VTRMKSAT.js} +5 -5
  38. package/dist/{canvas-GJAQAVS6.js → canvas-SVJEQO4V.js} +13 -13
  39. package/dist/{catalog-USZL4SGX.js → catalog-S32MX453.js} +5 -5
  40. package/dist/{catalogs-A7XMEEEP.js → catalogs-OCVXZLIF.js} +2 -2
  41. package/dist/catalogs-RXJTZTVX.js +778 -0
  42. package/dist/catalogs-RXJTZTVX.js.map +1 -0
  43. package/dist/{chatgpt-4PEWDJKP.js → chatgpt-QVF2FD3E.js} +12 -12
  44. package/dist/{chats-INN2OHSH.js → chats-QG72JB6Y.js} +22 -8
  45. package/dist/chats-QG72JB6Y.js.map +1 -0
  46. package/dist/{check-MMJGFFZS.js → check-SLNHVYGS.js} +4 -4
  47. package/dist/{chunk-7RBJ2Z7Z.js → chunk-2C7AHPM4.js} +25 -6
  48. package/dist/chunk-2C7AHPM4.js.map +1 -0
  49. package/dist/{chunk-KPYDTIAI.js → chunk-2WZI36D3.js} +2 -2
  50. package/dist/{chunk-FUKDI2UK.js → chunk-3W6G6ARX.js} +2 -2
  51. package/dist/{chunk-JWSEPW7F.js → chunk-46GWHUKN.js} +2 -2
  52. package/dist/{chunk-3TZVZXM6.js → chunk-4KJMLYCD.js} +6 -6
  53. package/dist/{chunk-6JWEGFM5.js → chunk-5C35OW7L.js} +38 -7
  54. package/dist/chunk-5C35OW7L.js.map +1 -0
  55. package/dist/chunk-5GQCN2QZ.js +391 -0
  56. package/dist/chunk-5GQCN2QZ.js.map +1 -0
  57. package/dist/{chunk-KIGGMKAE.js → chunk-65Y3RCWP.js} +4 -2
  58. package/dist/chunk-65Y3RCWP.js.map +1 -0
  59. package/dist/{chunk-R3EKM2P2.js → chunk-6NCJGU6I.js} +5 -5
  60. package/dist/chunk-A4MVVPJ2.js +4204 -0
  61. package/dist/chunk-A4MVVPJ2.js.map +1 -0
  62. package/dist/{chunk-LPXSM2DI.js → chunk-AO45BX6Q.js} +3 -3
  63. package/dist/{chunk-3UXMQ3K2.js → chunk-AQM4JH62.js} +2 -2
  64. package/dist/chunk-AQM4JH62.js.map +1 -0
  65. package/dist/{chunk-NPMAATZG.js → chunk-C7NWUCLQ.js} +2 -2
  66. package/dist/chunk-CP4P6YKM.js +287 -0
  67. package/dist/chunk-CP4P6YKM.js.map +1 -0
  68. package/dist/{chunk-OWA7ZLC4.js → chunk-D4CKCNGW.js} +4 -4
  69. package/dist/{chunk-H5HDZ7IC.js → chunk-DCBZ5CHZ.js} +4 -4
  70. package/dist/{chunk-C6EYCD5J.js → chunk-FVHJCERJ.js} +5 -5
  71. package/dist/{chunk-BITS62MF.js → chunk-G6XKD7QE.js} +2 -2
  72. package/dist/{chunk-QE3JEJXF.js → chunk-GSZZLW5Q.js} +4 -4
  73. package/dist/chunk-HLVRHBKL.js +1078 -0
  74. package/dist/chunk-HLVRHBKL.js.map +1 -0
  75. package/dist/{chunk-TPANP5A2.js → chunk-JKJQWRLO.js} +2 -2
  76. package/dist/{chunk-62JQQUAU.js → chunk-JQH5VG6F.js} +2 -2
  77. package/dist/{chunk-6WXV5GTA.js → chunk-JVH5A3XC.js} +2 -2
  78. package/dist/{chunk-AVNSH2JE.js → chunk-KOXDXSKN.js} +7 -7
  79. package/dist/{chunk-2XRMPSEV.js → chunk-LXQB4ZGE.js} +2 -2
  80. package/dist/{chunk-ZL23HA4N.js → chunk-M6PN3VH6.js} +2 -2
  81. package/dist/{chunk-TZEVD4Q6.js → chunk-P5FRWPG7.js} +2 -2
  82. package/dist/{chunk-CSZFZKVX.js → chunk-PQJXIY64.js} +5 -5
  83. package/dist/{chunk-OP7DNHD2.js → chunk-QTOZ32SU.js} +27 -1
  84. package/dist/chunk-QTOZ32SU.js.map +1 -0
  85. package/dist/chunk-SVAB6KV5.js +219 -0
  86. package/dist/chunk-SVAB6KV5.js.map +1 -0
  87. package/dist/{chunk-LBO2YAZY.js → chunk-UNX6BS4U.js} +15 -15
  88. package/dist/{chunk-UWXDNVS5.js → chunk-ZJSGGJ5R.js} +2 -2
  89. package/dist/cli.js +20 -20
  90. package/dist/{connect-WBGCBBFJ.js → connect-S54TJ6OV.js} +3 -3
  91. package/dist/{conversion-writes-JU7Q2MUO.js → conversion-writes-ECZBVY7D.js} +2 -2
  92. package/dist/{conversions-3ISBR3TS.js → conversions-5QCSCRLI.js} +3 -3
  93. package/dist/copy-writes-D2RTHAL6.js +167 -0
  94. package/dist/copy-writes-D2RTHAL6.js.map +1 -0
  95. package/dist/{creatives-VQO2TKE3.js → creatives-5I3G5YP3.js} +2 -2
  96. package/dist/{creatives-YJ3CXZQC.js → creatives-MZ6ICNSY.js} +5 -4
  97. package/dist/{creatives-YJ3CXZQC.js.map → creatives-MZ6ICNSY.js.map} +1 -1
  98. package/dist/{creatives-S5QUWUL6.js → creatives-PCAGWPW3.js} +10 -10
  99. package/dist/{critique-5LCG5TYF.js → critique-NRHUPIWF.js} +7 -7
  100. package/dist/{custom-conversions-YRYE65PU.js → custom-conversions-FIP6ZS34.js} +5 -3
  101. package/dist/{custom-conversions-YRYE65PU.js.map → custom-conversions-FIP6ZS34.js.map} +1 -1
  102. package/dist/{draft-Y2QJE2NM.js → draft-34CGWUVA.js} +2 -2
  103. package/dist/{draft-GPN3HOAG.js → draft-4P3YO67N.js} +9 -5
  104. package/dist/draft-4P3YO67N.js.map +1 -0
  105. package/dist/{draft-EWDOIXSH.js → draft-L45PGCYZ.js} +7 -3
  106. package/dist/draft-L45PGCYZ.js.map +1 -0
  107. package/dist/engine/index.js +4 -4
  108. package/dist/{experiment-G3FQVAJU.js → experiment-7N4QFRWV.js} +4 -4
  109. package/dist/{feedback-CAOZPGTT.js → feedback-O3H42V4I.js} +10 -10
  110. package/dist/{feedback-record-EXV5H6OS.js → feedback-record-FAPN2GBS.js} +12 -12
  111. package/dist/{find-EVY4XEIQ.js → find-FSQAEGGF.js} +4 -4
  112. package/dist/{flows-Z7355RMD.js → flows-T22B77J3.js} +3 -3
  113. package/dist/{funnel-2B3JXJPX.js → funnel-7OA33VRP.js} +5 -5
  114. package/dist/{ga4-2BL5YAYN.js → ga4-LPDIBNYP.js} +1 -1
  115. package/dist/{google-7STODZQR.js → google-5ESVO76E.js} +5 -5
  116. package/dist/{gsc-UU3T2C6B.js → gsc-FIZTQX3N.js} +1 -1
  117. package/dist/{history-IQ33J5PB.js → history-QKDYBSYM.js} +2 -2
  118. package/dist/{icon-GB7UH5RF.js → icon-CSVAZ7NE.js} +4 -4
  119. package/dist/{ideas-F6CIGTVU.js → ideas-JQT422P7.js} +4 -4
  120. package/dist/{images-WCKTD6Z2.js → images-WBNWK2ZH.js} +6 -6
  121. package/dist/{insights-4HT2NAYP.js → insights-YWVJMATY.js} +4 -3
  122. package/dist/{insights-4HT2NAYP.js.map → insights-YWVJMATY.js.map} +1 -1
  123. package/dist/{inspiration-XQYHBJY2.js → inspiration-IX5N724J.js} +1 -1
  124. package/dist/instant-experiences-NQ2GWIWL.js +257 -0
  125. package/dist/instant-experiences-NQ2GWIWL.js.map +1 -0
  126. package/dist/{landing-WUILAWDS.js → landing-Y6QCTXCZ.js} +2 -2
  127. package/dist/leads-THI37ZMD.js +537 -0
  128. package/dist/leads-THI37ZMD.js.map +1 -0
  129. package/dist/{learn-CC6Q5IK2.js → learn-3BDZUWDT.js} +5 -5
  130. package/dist/{linkedin-XKVPSCLV.js → linkedin-UGMAFSGO.js} +2 -2
  131. package/dist/{locations-YA7NZY44.js → locations-HM56X2MK.js} +2 -2
  132. package/dist/locations-HM56X2MK.js.map +1 -0
  133. package/dist/{logo-YSNUUT33.js → logo-VHXH4J6A.js} +3 -3
  134. package/dist/{make-ED7HBLH3.js → make-W2PYZXYF.js} +39 -39
  135. package/dist/media-H6B7VDON.js +18 -0
  136. package/dist/media-H6B7VDON.js.map +1 -0
  137. package/dist/{media-sources-PEHUMH7C.js → media-sources-EZKAJNVD.js} +1 -1
  138. package/dist/meta-YHDTGJQ6.js +122 -0
  139. package/dist/meta-YHDTGJQ6.js.map +1 -0
  140. package/dist/{options-6FCNFWUF.js → options-NSCZSQ5P.js} +3 -3
  141. package/dist/page-photos-CXRG4AXV.js +115 -0
  142. package/dist/page-photos-CXRG4AXV.js.map +1 -0
  143. package/dist/{pages-FTI44OSH.js → pages-PTWRXAZT.js} +2 -2
  144. package/dist/{pixels-6IUB3Y3H.js → pixels-MYT3TCHZ.js} +2 -2
  145. package/dist/{pixels-MBKR4XPX.js → pixels-ZZCQUS3J.js} +2 -2
  146. package/dist/{preview-V4YBD45S.js → preview-XOXAAPMQ.js} +73 -27
  147. package/dist/preview-XOXAAPMQ.js.map +1 -0
  148. package/dist/{rerun-A2XHGFZS.js → rerun-5THJLQQJ.js} +18 -18
  149. package/dist/{research-BLDY5UWH.js → research-JHDWWFL7.js} +1 -1
  150. package/dist/rule-writes-6ZCAJDYZ.js +522 -0
  151. package/dist/rule-writes-6ZCAJDYZ.js.map +1 -0
  152. package/dist/rules-BMYOY2BM.js +216 -0
  153. package/dist/rules-BMYOY2BM.js.map +1 -0
  154. package/dist/{rules-SK5DFFPY.js → rules-YLLFDZEM.js} +3 -3
  155. package/dist/{rules-add-YQNYSME7.js → rules-add-U2GU4AGP.js} +4 -4
  156. package/dist/{run-KBN5K7LE.js → run-V5YQB6TH.js} +18 -18
  157. package/dist/{scaffold-ad-6BN5LWQH.js → scaffold-ad-H4GJOKAW.js} +12 -12
  158. package/dist/{scaffold-static-ad-VVZRAWBR.js → scaffold-static-ad-2YIFHCTL.js} +25 -25
  159. package/dist/{scaffold-video-LFIYI4GP.js → scaffold-video-3EJLKR2O.js} +14 -14
  160. package/dist/{select-QBU6ED4K.js → select-I22NPSIW.js} +9 -9
  161. package/dist/{set-prompt-TL64CRBQ.js → set-prompt-S75OMQ7L.js} +8 -8
  162. package/dist/{shared-NDRFKAH7.js → shared-3IBNDEFL.js} +2 -2
  163. package/dist/{sources-RMNFV4CA.js → sources-VA23PDND.js} +1 -1
  164. package/dist/{stale-ITFCPOER.js → stale-MHTU2NQJ.js} +8 -8
  165. package/dist/{stats-RCLQE4HJ.js → stats-ZAGJH4AD.js} +1 -1
  166. package/dist/{stock-ECRBD7RP.js → stock-6SHHLSKG.js} +5 -5
  167. package/dist/studies-4NIV4D5Y.js +249 -0
  168. package/dist/studies-4NIV4D5Y.js.map +1 -0
  169. package/dist/{studio-MARZ22J2.js → studio-ZLCGXFAN.js} +1 -1
  170. package/dist/study-writes-L2AA2PGL.js +467 -0
  171. package/dist/study-writes-L2AA2PGL.js.map +1 -0
  172. package/dist/{sync-definition-C6ROLKJ4.js → sync-definition-2EBSQA6A.js} +11 -11
  173. package/dist/{tag-manager-G3LBQZUL.js → tag-manager-3CJ66GKJ.js} +1 -1
  174. package/dist/targeting-LNDQV4EK.js +759 -0
  175. package/dist/targeting-LNDQV4EK.js.map +1 -0
  176. package/dist/{testimonials-YMMA5YWL.js → testimonials-GR6TIS5S.js} +2 -2
  177. package/dist/{translate-OXVIMYHE.js → translate-GEFUP6KQ.js} +18 -18
  178. package/dist/{validate-ZS2M5Q3V.js → validate-NOWIOAHE.js} +11 -11
  179. package/dist/{videos-I6YXFBFT.js → videos-XMTDEHEJ.js} +1 -1
  180. package/dist/{viewer-check-7ZG7KHEN.js → viewer-check-U4XZMMS7.js} +6 -6
  181. package/dist/viewer-check-U4XZMMS7.js.map +1 -0
  182. package/dist/{winning-ads-ABN5OULS.js → winning-ads-QOAYIR5U.js} +1 -1
  183. package/dist/{write-commands-HCQI4Y27.js → write-commands-PEJBTME6.js} +485 -57
  184. package/dist/write-commands-PEJBTME6.js.map +1 -0
  185. package/dist/{x-WK2VQDPF.js → x-VCSMV7T5.js} +4 -4
  186. package/package.json +1 -1
  187. package/dist/account-7LUQWY6Q.js +0 -49
  188. package/dist/account-7LUQWY6Q.js.map +0 -1
  189. package/dist/ads-HXX2IAFF.js.map +0 -1
  190. package/dist/audiences-XEZHACKH.js.map +0 -1
  191. package/dist/campaign-writes-BAFB5E7A.js.map +0 -1
  192. package/dist/campaigns-4SOLY7OR.js.map +0 -1
  193. package/dist/chats-INN2OHSH.js.map +0 -1
  194. package/dist/chunk-3UXMQ3K2.js.map +0 -1
  195. package/dist/chunk-6JWEGFM5.js.map +0 -1
  196. package/dist/chunk-7RBJ2Z7Z.js.map +0 -1
  197. package/dist/chunk-GOJXKIFQ.js +0 -1605
  198. package/dist/chunk-GOJXKIFQ.js.map +0 -1
  199. package/dist/chunk-KIGGMKAE.js.map +0 -1
  200. package/dist/chunk-OP7DNHD2.js.map +0 -1
  201. package/dist/draft-EWDOIXSH.js.map +0 -1
  202. package/dist/draft-GPN3HOAG.js.map +0 -1
  203. package/dist/leads-2XOSAYP4.js +0 -293
  204. package/dist/leads-2XOSAYP4.js.map +0 -1
  205. package/dist/locations-YA7NZY44.js.map +0 -1
  206. package/dist/media-ES2UBGYW.js +0 -15
  207. package/dist/media-ES2UBGYW.js.map +0 -1
  208. package/dist/meta-AOIPEDV5.js +0 -69
  209. package/dist/meta-AOIPEDV5.js.map +0 -1
  210. package/dist/preview-V4YBD45S.js.map +0 -1
  211. package/dist/write-commands-HCQI4Y27.js.map +0 -1
  212. /package/dist/{account-Z65CPOWE.js.map → account-3H6BZO5H.js.map} +0 -0
  213. /package/dist/{account-writes-4N2MA2ZR.js.map → account-writes-AE5IJGGW.js.map} +0 -0
  214. /package/dist/{accounts-UA2ZWRN4.js.map → accounts-K4INATCW.js.map} +0 -0
  215. /package/dist/{activities-IQPJPP4B.js.map → activities-T253KK4Q.js.map} +0 -0
  216. /package/dist/{ad-group-writes-EUTMPBMK.js.map → ad-group-writes-VRSBI2Z2.js.map} +0 -0
  217. /package/dist/{ad-groups-OVPAI5RM.js.map → ad-groups-IEBVEAMS.js.map} +0 -0
  218. /package/dist/{ad-writes-DACTYFEO.js.map → ad-writes-ALV4KFPZ.js.map} +0 -0
  219. /package/dist/{ads-L65JIKCD.js.map → ads-CQZHD7FC.js.map} +0 -0
  220. /package/dist/{ads-G6AS5L7G.js.map → ads-QIKZ6O2N.js.map} +0 -0
  221. /package/dist/{analytics-QKP3A5F3.js.map → analytics-ALOZ7ZZ4.js.map} +0 -0
  222. /package/dist/{connect-WBGCBBFJ.js.map → asset-writes-L5TMKIZC.js.map} +0 -0
  223. /package/dist/{audiences-RPLVMO4H.js.map → audiences-AAZH56WD.js.map} +0 -0
  224. /package/dist/{avatars-MXTI74VC.js.map → avatars-YSFFRHDK.js.map} +0 -0
  225. /package/dist/{brief-BN4UGUXF.js.map → brief-7S6XCJIA.js.map} +0 -0
  226. /package/dist/{businesses-PRRYPR7H.js.map → businesses-H3HIDQX6.js.map} +0 -0
  227. /package/dist/{campaign-writes-U5LTDTYK.js.map → campaign-writes-U5PUVSMT.js.map} +0 -0
  228. /package/dist/{campaigns-TFEQTSO3.js.map → campaigns-JEIKY2M4.js.map} +0 -0
  229. /package/dist/{campaigns-NR6TNQFN.js.map → campaigns-VTRMKSAT.js.map} +0 -0
  230. /package/dist/{canvas-GJAQAVS6.js.map → canvas-SVJEQO4V.js.map} +0 -0
  231. /package/dist/{catalog-USZL4SGX.js.map → catalog-S32MX453.js.map} +0 -0
  232. /package/dist/{catalogs-A7XMEEEP.js.map → catalogs-OCVXZLIF.js.map} +0 -0
  233. /package/dist/{chatgpt-4PEWDJKP.js.map → chatgpt-QVF2FD3E.js.map} +0 -0
  234. /package/dist/{check-MMJGFFZS.js.map → check-SLNHVYGS.js.map} +0 -0
  235. /package/dist/{chunk-KPYDTIAI.js.map → chunk-2WZI36D3.js.map} +0 -0
  236. /package/dist/{chunk-FUKDI2UK.js.map → chunk-3W6G6ARX.js.map} +0 -0
  237. /package/dist/{chunk-JWSEPW7F.js.map → chunk-46GWHUKN.js.map} +0 -0
  238. /package/dist/{chunk-3TZVZXM6.js.map → chunk-4KJMLYCD.js.map} +0 -0
  239. /package/dist/{chunk-R3EKM2P2.js.map → chunk-6NCJGU6I.js.map} +0 -0
  240. /package/dist/{chunk-LPXSM2DI.js.map → chunk-AO45BX6Q.js.map} +0 -0
  241. /package/dist/{chunk-NPMAATZG.js.map → chunk-C7NWUCLQ.js.map} +0 -0
  242. /package/dist/{chunk-OWA7ZLC4.js.map → chunk-D4CKCNGW.js.map} +0 -0
  243. /package/dist/{chunk-H5HDZ7IC.js.map → chunk-DCBZ5CHZ.js.map} +0 -0
  244. /package/dist/{chunk-C6EYCD5J.js.map → chunk-FVHJCERJ.js.map} +0 -0
  245. /package/dist/{chunk-BITS62MF.js.map → chunk-G6XKD7QE.js.map} +0 -0
  246. /package/dist/{chunk-QE3JEJXF.js.map → chunk-GSZZLW5Q.js.map} +0 -0
  247. /package/dist/{chunk-TPANP5A2.js.map → chunk-JKJQWRLO.js.map} +0 -0
  248. /package/dist/{chunk-62JQQUAU.js.map → chunk-JQH5VG6F.js.map} +0 -0
  249. /package/dist/{chunk-6WXV5GTA.js.map → chunk-JVH5A3XC.js.map} +0 -0
  250. /package/dist/{chunk-AVNSH2JE.js.map → chunk-KOXDXSKN.js.map} +0 -0
  251. /package/dist/{chunk-2XRMPSEV.js.map → chunk-LXQB4ZGE.js.map} +0 -0
  252. /package/dist/{chunk-ZL23HA4N.js.map → chunk-M6PN3VH6.js.map} +0 -0
  253. /package/dist/{chunk-TZEVD4Q6.js.map → chunk-P5FRWPG7.js.map} +0 -0
  254. /package/dist/{chunk-CSZFZKVX.js.map → chunk-PQJXIY64.js.map} +0 -0
  255. /package/dist/{chunk-LBO2YAZY.js.map → chunk-UNX6BS4U.js.map} +0 -0
  256. /package/dist/{chunk-UWXDNVS5.js.map → chunk-ZJSGGJ5R.js.map} +0 -0
  257. /package/dist/{ideas-F6CIGTVU.js.map → connect-S54TJ6OV.js.map} +0 -0
  258. /package/dist/{conversion-writes-JU7Q2MUO.js.map → conversion-writes-ECZBVY7D.js.map} +0 -0
  259. /package/dist/{conversions-3ISBR3TS.js.map → conversions-5QCSCRLI.js.map} +0 -0
  260. /package/dist/{creatives-VQO2TKE3.js.map → creatives-5I3G5YP3.js.map} +0 -0
  261. /package/dist/{creatives-S5QUWUL6.js.map → creatives-PCAGWPW3.js.map} +0 -0
  262. /package/dist/{critique-5LCG5TYF.js.map → critique-NRHUPIWF.js.map} +0 -0
  263. /package/dist/{draft-Y2QJE2NM.js.map → draft-34CGWUVA.js.map} +0 -0
  264. /package/dist/{experiment-G3FQVAJU.js.map → experiment-7N4QFRWV.js.map} +0 -0
  265. /package/dist/{feedback-CAOZPGTT.js.map → feedback-O3H42V4I.js.map} +0 -0
  266. /package/dist/{feedback-record-EXV5H6OS.js.map → feedback-record-FAPN2GBS.js.map} +0 -0
  267. /package/dist/{find-EVY4XEIQ.js.map → find-FSQAEGGF.js.map} +0 -0
  268. /package/dist/{flows-Z7355RMD.js.map → flows-T22B77J3.js.map} +0 -0
  269. /package/dist/{funnel-2B3JXJPX.js.map → funnel-7OA33VRP.js.map} +0 -0
  270. /package/dist/{ga4-2BL5YAYN.js.map → ga4-LPDIBNYP.js.map} +0 -0
  271. /package/dist/{google-7STODZQR.js.map → google-5ESVO76E.js.map} +0 -0
  272. /package/dist/{gsc-UU3T2C6B.js.map → gsc-FIZTQX3N.js.map} +0 -0
  273. /package/dist/{history-IQ33J5PB.js.map → history-QKDYBSYM.js.map} +0 -0
  274. /package/dist/{icon-GB7UH5RF.js.map → icon-CSVAZ7NE.js.map} +0 -0
  275. /package/dist/{logo-YSNUUT33.js.map → ideas-JQT422P7.js.map} +0 -0
  276. /package/dist/{images-WCKTD6Z2.js.map → images-WBNWK2ZH.js.map} +0 -0
  277. /package/dist/{inspiration-XQYHBJY2.js.map → inspiration-IX5N724J.js.map} +0 -0
  278. /package/dist/{landing-WUILAWDS.js.map → landing-Y6QCTXCZ.js.map} +0 -0
  279. /package/dist/{learn-CC6Q5IK2.js.map → learn-3BDZUWDT.js.map} +0 -0
  280. /package/dist/{linkedin-XKVPSCLV.js.map → linkedin-UGMAFSGO.js.map} +0 -0
  281. /package/dist/{run-KBN5K7LE.js.map → logo-VHXH4J6A.js.map} +0 -0
  282. /package/dist/{make-ED7HBLH3.js.map → make-W2PYZXYF.js.map} +0 -0
  283. /package/dist/{media-sources-PEHUMH7C.js.map → media-sources-EZKAJNVD.js.map} +0 -0
  284. /package/dist/{options-6FCNFWUF.js.map → options-NSCZSQ5P.js.map} +0 -0
  285. /package/dist/{pages-FTI44OSH.js.map → pages-PTWRXAZT.js.map} +0 -0
  286. /package/dist/{pixels-6IUB3Y3H.js.map → pixels-MYT3TCHZ.js.map} +0 -0
  287. /package/dist/{pixels-MBKR4XPX.js.map → pixels-ZZCQUS3J.js.map} +0 -0
  288. /package/dist/{rerun-A2XHGFZS.js.map → rerun-5THJLQQJ.js.map} +0 -0
  289. /package/dist/{research-BLDY5UWH.js.map → research-JHDWWFL7.js.map} +0 -0
  290. /package/dist/{rules-SK5DFFPY.js.map → rules-YLLFDZEM.js.map} +0 -0
  291. /package/dist/{rules-add-YQNYSME7.js.map → rules-add-U2GU4AGP.js.map} +0 -0
  292. /package/dist/{shared-NDRFKAH7.js.map → run-V5YQB6TH.js.map} +0 -0
  293. /package/dist/{scaffold-ad-6BN5LWQH.js.map → scaffold-ad-H4GJOKAW.js.map} +0 -0
  294. /package/dist/{scaffold-static-ad-VVZRAWBR.js.map → scaffold-static-ad-2YIFHCTL.js.map} +0 -0
  295. /package/dist/{scaffold-video-LFIYI4GP.js.map → scaffold-video-3EJLKR2O.js.map} +0 -0
  296. /package/dist/{select-QBU6ED4K.js.map → select-I22NPSIW.js.map} +0 -0
  297. /package/dist/{set-prompt-TL64CRBQ.js.map → set-prompt-S75OMQ7L.js.map} +0 -0
  298. /package/dist/{sync-definition-C6ROLKJ4.js.map → shared-3IBNDEFL.js.map} +0 -0
  299. /package/dist/{sources-RMNFV4CA.js.map → sources-VA23PDND.js.map} +0 -0
  300. /package/dist/{stale-ITFCPOER.js.map → stale-MHTU2NQJ.js.map} +0 -0
  301. /package/dist/{stats-RCLQE4HJ.js.map → stats-ZAGJH4AD.js.map} +0 -0
  302. /package/dist/{stock-ECRBD7RP.js.map → stock-6SHHLSKG.js.map} +0 -0
  303. /package/dist/{studio-MARZ22J2.js.map → studio-ZLCGXFAN.js.map} +0 -0
  304. /package/dist/{viewer-check-7ZG7KHEN.js.map → sync-definition-2EBSQA6A.js.map} +0 -0
  305. /package/dist/{tag-manager-G3LBQZUL.js.map → tag-manager-3CJ66GKJ.js.map} +0 -0
  306. /package/dist/{testimonials-YMMA5YWL.js.map → testimonials-GR6TIS5S.js.map} +0 -0
  307. /package/dist/{translate-OXVIMYHE.js.map → translate-GEFUP6KQ.js.map} +0 -0
  308. /package/dist/{validate-ZS2M5Q3V.js.map → validate-NOWIOAHE.js.map} +0 -0
  309. /package/dist/{videos-I6YXFBFT.js.map → videos-XMTDEHEJ.js.map} +0 -0
  310. /package/dist/{winning-ads-ABN5OULS.js.map → winning-ads-QOAYIR5U.js.map} +0 -0
  311. /package/dist/{x-WK2VQDPF.js.map → x-VCSMV7T5.js.map} +0 -0
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  versionOf
3
- } from "./chunk-ZL23HA4N.js";
4
- import "./chunk-FUKDI2UK.js";
5
- import "./chunk-AVNSH2JE.js";
6
- import "./chunk-EOY6BK4C.js";
7
- import "./chunk-2XRMPSEV.js";
3
+ } from "./chunk-M6PN3VH6.js";
4
+ import "./chunk-3W6G6ARX.js";
5
+ import "./chunk-KOXDXSKN.js";
6
+ import "./chunk-LXQB4ZGE.js";
8
7
  import "./chunk-PTGYM4J6.js";
9
8
  import "./chunk-LCW3U4EA.js";
9
+ import "./chunk-EOY6BK4C.js";
10
10
  import "./chunk-VD73V44J.js";
11
11
  import "./chunk-G2LGMWNG.js";
12
12
  import "./chunk-P3W6SRSQ.js";
@@ -15,15 +15,15 @@ import "./chunk-JYALBYN7.js";
15
15
  import "./chunk-FNA277HP.js";
16
16
  import "./chunk-5WMTPYKT.js";
17
17
  import "./chunk-23H4ZJRP.js";
18
- import "./chunk-62JQQUAU.js";
18
+ import "./chunk-JQH5VG6F.js";
19
19
  import "./chunk-E2RFM6R2.js";
20
20
  import "./chunk-DGCUPJZD.js";
21
21
  import "./chunk-BTY4LZBG.js";
22
22
  import "./chunk-4AMIHNNP.js";
23
23
  import "./chunk-IKCP5NCE.js";
24
24
  import "./chunk-MCJ5I5LR.js";
25
- import "./chunk-KPYDTIAI.js";
26
- import "./chunk-KIGGMKAE.js";
25
+ import "./chunk-2WZI36D3.js";
26
+ import "./chunk-65Y3RCWP.js";
27
27
  import "./chunk-DWX44QL6.js";
28
28
  import "./chunk-2FSEESJU.js";
29
29
  import "./chunk-CVBKW75S.js";
@@ -98,4 +98,4 @@ var selectCommand = defineCommand({
98
98
  export {
99
99
  selectCommand
100
100
  };
101
- //# sourceMappingURL=select-QBU6ED4K.js.map
101
+ //# sourceMappingURL=select-I22NPSIW.js.map
@@ -4,11 +4,11 @@ import {
4
4
  compiledPromptNodeIds,
5
5
  prepareCanvas,
6
6
  sceneOwnedPrompts
7
- } from "./chunk-AVNSH2JE.js";
8
- import "./chunk-EOY6BK4C.js";
9
- import "./chunk-2XRMPSEV.js";
7
+ } from "./chunk-KOXDXSKN.js";
8
+ import "./chunk-LXQB4ZGE.js";
10
9
  import "./chunk-PTGYM4J6.js";
11
10
  import "./chunk-LCW3U4EA.js";
11
+ import "./chunk-EOY6BK4C.js";
12
12
  import "./chunk-VD73V44J.js";
13
13
  import "./chunk-G2LGMWNG.js";
14
14
  import "./chunk-P3W6SRSQ.js";
@@ -20,8 +20,8 @@ import "./chunk-23H4ZJRP.js";
20
20
  import {
21
21
  defaultRegistry,
22
22
  validateCanvasDeep
23
- } from "./chunk-6WXV5GTA.js";
24
- import "./chunk-62JQQUAU.js";
23
+ } from "./chunk-JVH5A3XC.js";
24
+ import "./chunk-JQH5VG6F.js";
25
25
  import "./chunk-E2RFM6R2.js";
26
26
  import "./chunk-DGCUPJZD.js";
27
27
  import "./chunk-BTY4LZBG.js";
@@ -30,8 +30,8 @@ import {
30
30
  } from "./chunk-4AMIHNNP.js";
31
31
  import "./chunk-IKCP5NCE.js";
32
32
  import "./chunk-MCJ5I5LR.js";
33
- import "./chunk-KPYDTIAI.js";
34
- import "./chunk-KIGGMKAE.js";
33
+ import "./chunk-2WZI36D3.js";
34
+ import "./chunk-65Y3RCWP.js";
35
35
  import "./chunk-DWX44QL6.js";
36
36
  import "./chunk-2FSEESJU.js";
37
37
  import "./chunk-CVBKW75S.js";
@@ -190,4 +190,4 @@ export {
190
190
  setPromptCommand,
191
191
  setPromptInCanvasFile
192
192
  };
193
- //# sourceMappingURL=set-prompt-TL64CRBQ.js.map
193
+ //# sourceMappingURL=set-prompt-S75OMQ7L.js.map
@@ -9,7 +9,7 @@ import {
9
9
  resolveEffectiveStatus,
10
10
  statusFilterHints,
11
11
  todayIso
12
- } from "./chunk-OP7DNHD2.js";
12
+ } from "./chunk-QTOZ32SU.js";
13
13
  import "./chunk-SWL4AAPP.js";
14
14
  import "./chunk-XDZVBX6L.js";
15
15
  import "./chunk-N5O67GK5.js";
@@ -28,4 +28,4 @@ export {
28
28
  statusFilterHints,
29
29
  todayIso
30
30
  };
31
- //# sourceMappingURL=shared-NDRFKAH7.js.map
31
+ //# sourceMappingURL=shared-3IBNDEFL.js.map
@@ -27,4 +27,4 @@ Examples:
27
27
  export {
28
28
  sourcesCommand
29
29
  };
30
- //# sourceMappingURL=sources-RMNFV4CA.js.map
30
+ //# sourceMappingURL=sources-VA23PDND.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  staleCreatives
3
- } from "./chunk-FUKDI2UK.js";
4
- import "./chunk-AVNSH2JE.js";
5
- import "./chunk-EOY6BK4C.js";
6
- import "./chunk-2XRMPSEV.js";
3
+ } from "./chunk-3W6G6ARX.js";
4
+ import "./chunk-KOXDXSKN.js";
5
+ import "./chunk-LXQB4ZGE.js";
7
6
  import "./chunk-PTGYM4J6.js";
8
7
  import "./chunk-LCW3U4EA.js";
8
+ import "./chunk-EOY6BK4C.js";
9
9
  import "./chunk-VD73V44J.js";
10
10
  import "./chunk-G2LGMWNG.js";
11
11
  import "./chunk-P3W6SRSQ.js";
@@ -16,15 +16,15 @@ import "./chunk-5WMTPYKT.js";
16
16
  import {
17
17
  findWorkspaceRoot
18
18
  } from "./chunk-23H4ZJRP.js";
19
- import "./chunk-62JQQUAU.js";
19
+ import "./chunk-JQH5VG6F.js";
20
20
  import "./chunk-E2RFM6R2.js";
21
21
  import "./chunk-DGCUPJZD.js";
22
22
  import "./chunk-BTY4LZBG.js";
23
23
  import "./chunk-4AMIHNNP.js";
24
24
  import "./chunk-IKCP5NCE.js";
25
25
  import "./chunk-MCJ5I5LR.js";
26
- import "./chunk-KPYDTIAI.js";
27
- import "./chunk-KIGGMKAE.js";
26
+ import "./chunk-2WZI36D3.js";
27
+ import "./chunk-65Y3RCWP.js";
28
28
  import "./chunk-DWX44QL6.js";
29
29
  import "./chunk-2FSEESJU.js";
30
30
  import "./chunk-CVBKW75S.js";
@@ -68,4 +68,4 @@ var staleCommand = defineCommand({
68
68
  export {
69
69
  staleCommand
70
70
  };
71
- //# sourceMappingURL=stale-ITFCPOER.js.map
71
+ //# sourceMappingURL=stale-MHTU2NQJ.js.map
@@ -31,4 +31,4 @@ Examples:
31
31
  export {
32
32
  statsCommand
33
33
  };
34
- //# sourceMappingURL=stats-RCLQE4HJ.js.map
34
+ //# sourceMappingURL=stats-ZAGJH4AD.js.map
@@ -1,11 +1,11 @@
1
- import {
2
- activeFilterFlags,
3
- emptyResultHints
4
- } from "./chunk-Q6ULQMWG.js";
5
1
  import {
6
2
  AUTO_INGEST_MAX,
7
3
  parseAutoIngest
8
4
  } from "./chunk-KKJ4KJCW.js";
5
+ import {
6
+ activeFilterFlags,
7
+ emptyResultHints
8
+ } from "./chunk-Q6ULQMWG.js";
9
9
  import {
10
10
  ApiError,
11
11
  apiPost
@@ -176,4 +176,4 @@ export {
176
176
  partialLibraryHints,
177
177
  stockCommand
178
178
  };
179
- //# sourceMappingURL=stock-ECRBD7RP.js.map
179
+ //# sourceMappingURL=stock-6SHHLSKG.js.map
@@ -0,0 +1,249 @@
1
+ import {
2
+ adStudyFromWire,
3
+ cellObjects,
4
+ unixSeconds
5
+ } from "./chunk-HLVRHBKL.js";
6
+ import {
7
+ handleMetaError,
8
+ resolveAccountIdArg
9
+ } from "./chunk-QTOZ32SU.js";
10
+ import {
11
+ writeJsonEnvelope
12
+ } from "./chunk-SWL4AAPP.js";
13
+ import {
14
+ NO_CACHE_ARG
15
+ } from "./chunk-K3TNTBZJ.js";
16
+ import {
17
+ apiGet
18
+ } from "./chunk-XDZVBX6L.js";
19
+ import "./chunk-N5O67GK5.js";
20
+ import "./chunk-EE72SSB2.js";
21
+ import {
22
+ registerSchema
23
+ } from "./chunk-WNSE7N75.js";
24
+ import "./chunk-YQSBHWOI.js";
25
+
26
+ // ../api/src/ads-meta/adStudyDescription.ts
27
+ var MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
28
+ function adStudyTime(seconds) {
29
+ const date = new Date(seconds * 1e3);
30
+ const hh = String(date.getUTCHours()).padStart(2, "0");
31
+ const mm = String(date.getUTCMinutes()).padStart(2, "0");
32
+ return `${date.getUTCDate()} ${MONTHS[date.getUTCMonth()]} ${date.getUTCFullYear()}, ${hh}:${mm} UTC`;
33
+ }
34
+ function daysLabel(seconds) {
35
+ const days = Math.round(seconds / 86400 * 10) / 10;
36
+ return `${days} ${days === 1 ? "day" : "days"}`;
37
+ }
38
+ function quoted(id, names) {
39
+ const name = names[id];
40
+ return name ? `"${name}"` : id;
41
+ }
42
+ function cellWords(cell, names) {
43
+ const [noun, ids] = cell.ads ? ["ad", cell.ads] : cell.adsets ? ["ad set", cell.adsets] : ["campaign", cell.campaigns ?? []];
44
+ const plural = ids.length > 1 ? `${noun}s` : noun;
45
+ const runs = ids.length > 0 ? ` (${plural} ${ids.map((id) => quoted(id, names)).join(", ")})` : "";
46
+ const share = cell.control_percentage === void 0 ? `${cell.treatment_percentage}%` : `${cell.treatment_percentage}% see the ads, ${cell.control_percentage}% held out`;
47
+ return `${cell.name}${runs} ${share}`;
48
+ }
49
+ var STUDY_KIND = {
50
+ SPLIT_TEST: "Split test",
51
+ LIFT: "Lift study",
52
+ SPLIT_TEST_V2: "Creative test"
53
+ };
54
+ function primaryObjective(objectives) {
55
+ if (!objectives || objectives.length === 0) {
56
+ return void 0;
57
+ }
58
+ return objectives.find((objective) => objective.is_primary === true) ?? objectives[0];
59
+ }
60
+ var SOURCE_NOUN = {
61
+ adspixels: "pixel",
62
+ applications: "app",
63
+ offsite_datasets: "dataset"
64
+ };
65
+ function sourceWords(objective, names) {
66
+ const words = [];
67
+ for (const key of ["adspixels", "applications", "offsite_datasets"]) {
68
+ for (const source of objective[key] ?? []) {
69
+ const events = source.event_names?.join(" or ") ?? "any event";
70
+ words.push(`${events} on ${SOURCE_NOUN[key]} ${quoted(source.id, names)}`);
71
+ }
72
+ }
73
+ for (const source of objective.customconversions ?? []) {
74
+ words.push(`custom conversion ${quoted(source.id, names)}`);
75
+ }
76
+ return words;
77
+ }
78
+ function measuringWords(objectives, names) {
79
+ const primary = primaryObjective(objectives);
80
+ if (!primary) {
81
+ return "cost per result on the campaigns' objective";
82
+ }
83
+ const sources = sourceWords(primary, names);
84
+ return `cost per "${primary.name}"${sources.length > 0 ? ` (${sources.join(", ")})` : ""}`;
85
+ }
86
+ function measuringPhrase(type, primary, measuring) {
87
+ if (type === "LIFT") return `measuring the lift in ${primary ? `"${primary.name}"` : "results"}`;
88
+ return `measuring ${primary ? `cost per "${primary.name}"` : measuring}`;
89
+ }
90
+ function describeAdStudy(study, { names = {} } = {}) {
91
+ const versions = study.cells && study.cells.length > 0 ? study.cells.map((cell) => cellWords(cell, names)).join(" vs ") : void 0;
92
+ const measuring = measuringWords(study.objectives, names);
93
+ const primary = primaryObjective(study.objectives);
94
+ const others = (study.objectives ?? []).filter((objective) => objective !== primary);
95
+ const alsoMeasured = others.length > 0 ? others.map((objective) => `"${objective.name}"`).join(", ") : void 0;
96
+ const hasSchedule = study.start_time !== void 0 && study.end_time !== void 0;
97
+ const length = hasSchedule ? daysLabel((study.end_time ?? 0) - (study.start_time ?? 0)) : void 0;
98
+ const schedule = hasSchedule ? `${adStudyTime(study.start_time ?? 0)} \u2192 ${adStudyTime(study.end_time ?? 0)} \xB7 ${length}` : void 0;
99
+ const confidence = study.confidence_level !== void 0 ? `${Math.round(study.confidence_level * 100)}%` : void 0;
100
+ const parts = [
101
+ versions,
102
+ measuringPhrase(study.type, primary, measuring),
103
+ length,
104
+ confidence ? `${confidence} confidence` : void 0
105
+ ].filter((part) => part !== void 0);
106
+ const kind = STUDY_KIND[study.type ?? "SPLIT_TEST"] ?? "Split test";
107
+ return { sentence: `${kind}: ${parts.join(", ")}`, versions, measuring, alsoMeasured, schedule, confidence };
108
+ }
109
+
110
+ // src/commands/ads/meta/studies.ts
111
+ import { defineCommand } from "citty";
112
+ function studyState(row, nowSeconds) {
113
+ if (row.canceled_time) return "cancelled";
114
+ const start = unixSeconds(row.start_time) ?? 0;
115
+ const end = unixSeconds(row.end_time) ?? Number.POSITIVE_INFINITY;
116
+ if (nowSeconds < start) return "scheduled";
117
+ return nowSeconds < end ? "running" : "ended";
118
+ }
119
+ function compactStudy(row, nowSeconds) {
120
+ const study = adStudyFromWire(row);
121
+ const words = describeAdStudy(study, { names: study.names });
122
+ return {
123
+ id: study.id,
124
+ name: study.name,
125
+ state: studyState(row, nowSeconds),
126
+ compares: words.versions,
127
+ ...study.start_time !== void 0 ? { starts: adStudyTime(study.start_time) } : {},
128
+ ...study.end_time !== void 0 ? { ends: adStudyTime(study.end_time) } : {},
129
+ ...row.results_first_available_date ? { results_from: row.results_first_available_date } : {}
130
+ };
131
+ }
132
+ function studyDetail(row, nowSeconds) {
133
+ const study = adStudyFromWire(row);
134
+ const measures = (row.objectives?.data ?? []).map((objective) => ({
135
+ id: objective.id,
136
+ name: objective.name,
137
+ primary: objective.is_primary === true,
138
+ ...objective.results !== void 0 ? { results: objective.results } : {}
139
+ }));
140
+ return {
141
+ ...compactStudy(row, nowSeconds),
142
+ ...study.description ? { description: study.description } : {},
143
+ versions: study.cells.map((cell) => ({
144
+ cell_id: cell.id,
145
+ name: cell.name,
146
+ share: `${cell.treatment_percentage}%`,
147
+ runs: cellObjects(cell).map((id) => ({ id, name: study.names[id] })),
148
+ level: cell.ads ? "ad" : cell.adsets ? "ad set" : "campaign"
149
+ })),
150
+ measures
151
+ };
152
+ }
153
+ function studyHints(detail) {
154
+ const state = detail.state;
155
+ if (state === "scheduled") {
156
+ return [
157
+ "Not started: it can still be re-timed, re-split (`studies update --split <cell_id>=60 \u2026`) or deleted. Results appear once it runs."
158
+ ];
159
+ }
160
+ const measures = detail.measures ?? [];
161
+ const hasResults = measures.some((measure) => measure.results !== void 0);
162
+ return [
163
+ hasResults ? "Meta's verdict is in each measure's results, with its confidence. Report a winner only when Meta names one at the test's confidence level; otherwise say the versions performed alike." : "No results yet \u2014 Meta publishes them once the test has gathered enough. Compare per-version delivery meanwhile with `baker ads meta insights --object <ad set or campaign id>`, and do not call a winner from it.",
164
+ state === "running" ? "Running: its split and start are fixed; it can be renamed, its end moved, ended now (`studies end`) or deleted (results and all)." : "Over. Read the per-version numbers with `baker ads meta insights --object <id>` for the period it ran."
165
+ ];
166
+ }
167
+ registerSchema({
168
+ command: "ads.meta.studies",
169
+ description: "Meta A/B tests (ad studies) whose versions run in an ad account \u2014 what each compares, when it runs and its state (scheduled, running, ended). --study-id reads one: every version with its cell id and share, and each measure with Meta's results. --business-id lists every test on a Business. Stage new ones with `studies create`.",
170
+ args: {
171
+ "account-id": { type: "string", description: "Meta ad account ID (act_123)", required: false },
172
+ "business-id": { type: "string", description: "List every test on this Business instead", required: false },
173
+ "study-id": { type: "string", description: "One test: its versions and results", required: false },
174
+ full: { type: "boolean", description: "The tests as Meta returns them", required: false },
175
+ "no-cache": { type: "boolean", description: "Bypass the cache", required: false }
176
+ }
177
+ });
178
+ var listArgs = {
179
+ "account-id": { type: "string", description: "Meta ad account ID" },
180
+ "business-id": { type: "string", description: "List every test on this Business instead" },
181
+ "study-id": { type: "string", description: "Read one test: versions, cell ids, results" },
182
+ full: { type: "boolean", description: "The tests as Meta returns them" },
183
+ "no-cache": NO_CACHE_ARG
184
+ };
185
+ async function read(path, params, noCache) {
186
+ if (noCache) params["skip-cache"] = "true";
187
+ return await apiGet(path, params);
188
+ }
189
+ var listCommand = defineCommand({
190
+ meta: {
191
+ name: "list",
192
+ description: "List A/B tests. Runs by default. Example: baker ads meta studies --account-id act_123 \xB7 one test: baker ads meta studies --study-id 6123"
193
+ },
194
+ args: listArgs,
195
+ run: async ({ args }) => {
196
+ const now = Math.floor(Date.now() / 1e3);
197
+ try {
198
+ if (args["study-id"]) {
199
+ const row = await read(
200
+ "/api/ads/meta/study-results",
201
+ { "study-id": String(args["study-id"]) },
202
+ args["no-cache"]
203
+ );
204
+ const detail = studyDetail(row, now);
205
+ writeJsonEnvelope({ ok: true, data: args.full ? row : detail, hints: studyHints(detail) });
206
+ return;
207
+ }
208
+ const params = args["business-id"] ? { "business-id": String(args["business-id"]) } : { "account-id": resolveAccountIdArg(args) };
209
+ const rows = await read("/api/ads/meta/studies", params, args["no-cache"]);
210
+ const hints = rows.length === 0 ? [
211
+ "No A/B tests. To set one up: duplicate the ad set (`adsets duplicate`), change ONE thing on the copy, then `studies create --adsets <original>,<copy>`."
212
+ ] : ["`studies --study-id <id>` reads one test's versions and results."];
213
+ writeJsonEnvelope({ ok: true, data: args.full ? rows : rows.map((row) => compactStudy(row, now)), hints });
214
+ } catch (err) {
215
+ handleMetaError(err);
216
+ }
217
+ }
218
+ });
219
+ var studiesCommand = defineCommand({
220
+ meta: {
221
+ name: "studies",
222
+ description: `Meta A/B tests (ad studies): Meta splits one audience between versions \u2014 ad sets or campaigns \u2014 so each person sees one, and calls the winner.
223
+ Not Baker's own page experiments (\`baker experiment\`), which test landing pages.
224
+
225
+ Examples:
226
+ baker ads meta studies --account-id act_123 # tests on this account and their state
227
+ baker ads meta studies --study-id 6123 # versions, cell ids, Meta's results
228
+ baker ads meta studies create --name "Broad vs lookalike" --adsets 6123,6124 --start 2026-10-20T08:00Z --days 14 --confidence 90
229
+ baker ads meta studies update 6123 --end 2026-11-10T08:00Z
230
+ baker ads meta studies end 6123 | delete 6123`
231
+ },
232
+ subCommands: {
233
+ list: listCommand,
234
+ create: () => import("./study-writes-L2AA2PGL.js").then((m) => m.studiesCreateCommand),
235
+ update: () => import("./study-writes-L2AA2PGL.js").then((m) => m.studiesUpdateCommand),
236
+ end: () => import("./study-writes-L2AA2PGL.js").then((m) => m.studiesEndCommand),
237
+ delete: () => import("./study-writes-L2AA2PGL.js").then((m) => m.studiesDeleteCommand)
238
+ },
239
+ args: listArgs,
240
+ default: "list"
241
+ });
242
+ export {
243
+ compactStudy,
244
+ studiesCommand,
245
+ studyDetail,
246
+ studyHints,
247
+ studyState
248
+ };
249
+ //# sourceMappingURL=studies-4NIV4D5Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../api/src/ads-meta/adStudyDescription.ts","../src/commands/ads/meta/studies.ts"],"sourcesContent":["/**\n * A Meta A/B test in words — the one reading shared by the staged summary, the\n * draft review rows and the CLI, so all three say the same thing: what each\n * version runs and how much of the audience it gets, what decides the winner,\n * for how long, and how sure Meta has to be.\n */\nimport type { AdStudyCell, AdStudyObjective } from \"./adStudies\";\n\nexport interface AdStudyWordsInput {\n type?: string;\n start_time?: number;\n end_time?: number;\n confidence_level?: number;\n cells?: readonly Pick<\n AdStudyCell,\n \"name\" | \"treatment_percentage\" | \"control_percentage\" | \"adsets\" | \"campaigns\" | \"ads\"\n >[];\n objectives?: readonly AdStudyObjective[];\n}\n\nexport interface AdStudyWords {\n sentence: string;\n versions?: string;\n measuring: string;\n /** The measures besides the primary one, by name. */\n alsoMeasured?: string;\n schedule?: string;\n confidence?: string;\n}\n\nconst MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\nexport function adStudyTime(seconds: number): string {\n const date = new Date(seconds * 1000);\n const hh = String(date.getUTCHours()).padStart(2, \"0\");\n const mm = String(date.getUTCMinutes()).padStart(2, \"0\");\n return `${date.getUTCDate()} ${MONTHS[date.getUTCMonth()]} ${date.getUTCFullYear()}, ${hh}:${mm} UTC`;\n}\n\nfunction daysLabel(seconds: number): string {\n const days = Math.round((seconds / 86_400) * 10) / 10;\n return `${days} ${days === 1 ? \"day\" : \"days\"}`;\n}\n\nfunction quoted(id: string, names: Record<string, string>): string {\n const name = names[id];\n return name ? `\"${name}\"` : id;\n}\n\nfunction cellWords(\n cell: Pick<AdStudyCell, \"name\" | \"treatment_percentage\" | \"control_percentage\" | \"adsets\" | \"campaigns\" | \"ads\">,\n names: Record<string, string>,\n): string {\n const [noun, ids] = cell.ads\n ? [\"ad\", cell.ads]\n : cell.adsets\n ? [\"ad set\", cell.adsets]\n : [\"campaign\", cell.campaigns ?? []];\n const plural = ids.length > 1 ? `${noun}s` : noun;\n const runs = ids.length > 0 ? ` (${plural} ${ids.map((id) => quoted(id, names)).join(\", \")})` : \"\";\n const share =\n cell.control_percentage === undefined\n ? `${cell.treatment_percentage}%`\n : `${cell.treatment_percentage}% see the ads, ${cell.control_percentage}% held out`;\n return `${cell.name}${runs} ${share}`;\n}\n\nconst STUDY_KIND: Record<string, string> = {\n SPLIT_TEST: \"Split test\",\n LIFT: \"Lift study\",\n SPLIT_TEST_V2: \"Creative test\",\n};\n\nfunction primaryObjective(objectives: readonly AdStudyObjective[] | undefined): AdStudyObjective | undefined {\n if (!objectives || objectives.length === 0) {\n return undefined;\n }\n return objectives.find((objective) => objective.is_primary === true) ?? objectives[0];\n}\n\nconst SOURCE_NOUN: Record<\"adspixels\" | \"applications\" | \"offsite_datasets\", string> = {\n adspixels: \"pixel\",\n applications: \"app\",\n offsite_datasets: \"dataset\",\n};\n\n/** \"Lead on pixel \"Site\"\", one per event source. */\nfunction sourceWords(objective: AdStudyObjective, names: Record<string, string>): string[] {\n const words: string[] = [];\n for (const key of [\"adspixels\", \"applications\", \"offsite_datasets\"] as const) {\n for (const source of objective[key] ?? []) {\n const events = source.event_names?.join(\" or \") ?? \"any event\";\n words.push(`${events} on ${SOURCE_NOUN[key]} ${quoted(source.id, names)}`);\n }\n }\n for (const source of objective.customconversions ?? []) {\n words.push(`custom conversion ${quoted(source.id, names)}`);\n }\n return words;\n}\n\n/** What decides the winner. Meta's split test compares cost per result of the primary measure. */\nfunction measuringWords(objectives: readonly AdStudyObjective[] | undefined, names: Record<string, string>): string {\n const primary = primaryObjective(objectives);\n if (!primary) {\n return \"cost per result on the campaigns' objective\";\n }\n const sources = sourceWords(primary, names);\n return `cost per \"${primary.name}\"${sources.length > 0 ? ` (${sources.join(\", \")})` : \"\"}`;\n}\n\n/** What the sentence says the study measures: a lift study reads the lift, a test the cost per result. */\nfunction measuringPhrase(type: string | undefined, primary: AdStudyObjective | undefined, measuring: string): string {\n if (type === \"LIFT\") return `measuring the lift in ${primary ? `\"${primary.name}\"` : \"results\"}`;\n return `measuring ${primary ? `cost per \"${primary.name}\"` : measuring}`;\n}\n\nexport function describeAdStudy(\n study: AdStudyWordsInput,\n { names = {} }: { names?: Record<string, string> } = {},\n): AdStudyWords {\n const versions =\n study.cells && study.cells.length > 0 ? study.cells.map((cell) => cellWords(cell, names)).join(\" vs \") : undefined;\n const measuring = measuringWords(study.objectives, names);\n const primary = primaryObjective(study.objectives);\n const others = (study.objectives ?? []).filter((objective) => objective !== primary);\n const alsoMeasured = others.length > 0 ? others.map((objective) => `\"${objective.name}\"`).join(\", \") : undefined;\n const hasSchedule = study.start_time !== undefined && study.end_time !== undefined;\n const length = hasSchedule ? daysLabel((study.end_time ?? 0) - (study.start_time ?? 0)) : undefined;\n const schedule = hasSchedule\n ? `${adStudyTime(study.start_time ?? 0)} → ${adStudyTime(study.end_time ?? 0)} · ${length}`\n : undefined;\n const confidence = study.confidence_level !== undefined ? `${Math.round(study.confidence_level * 100)}%` : undefined;\n const parts = [\n versions,\n measuringPhrase(study.type, primary, measuring),\n length,\n confidence ? `${confidence} confidence` : undefined,\n ].filter((part): part is string => part !== undefined);\n const kind = STUDY_KIND[study.type ?? \"SPLIT_TEST\"] ?? \"Split test\";\n return { sentence: `${kind}: ${parts.join(\", \")}`, versions, measuring, alsoMeasured, schedule, confidence };\n}\n","import { adStudyFromWire, cellObjects, unixSeconds } from \"@baker/api/ads-meta/adStudies\";\nimport { adStudyTime, describeAdStudy } from \"@baker/api/ads-meta/adStudyDescription\";\nimport { defineCommand } from \"citty\";\nimport { NO_CACHE_ARG } from \"../../../cache-flag.ts\";\nimport { apiGet } from \"../../../client.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { writeJsonEnvelope } from \"../output.ts\";\nimport { handleMetaError, resolveAccountIdArg } from \"./shared.ts\";\n\n/**\n * Meta A/B tests (ad studies) — reads. A test splits one audience between\n * versions (ad sets, campaigns, or a creative test's ads) so each person sees one, and Meta calls the\n * winner. Writes (create / update / end / delete) stage like every Meta change\n * and live in `study-writes.ts`.\n */\n\ntype Row = Record<string, unknown>;\n\nexport type StudyState = \"scheduled\" | \"running\" | \"ended\" | \"cancelled\";\n\nexport function studyState(row: Row, nowSeconds: number): StudyState {\n if (row.canceled_time) return \"cancelled\";\n const start = unixSeconds(row.start_time) ?? 0;\n const end = unixSeconds(row.end_time) ?? Number.POSITIVE_INFINITY;\n if (nowSeconds < start) return \"scheduled\";\n return nowSeconds < end ? \"running\" : \"ended\";\n}\n\n/** What an agent needs to pick a test and know what it compares. The raw node sits behind --full. */\nexport function compactStudy(row: Row, nowSeconds: number): Row {\n const study = adStudyFromWire(row);\n const words = describeAdStudy(study, { names: study.names });\n return {\n id: study.id,\n name: study.name,\n state: studyState(row, nowSeconds),\n compares: words.versions,\n ...(study.start_time !== undefined ? { starts: adStudyTime(study.start_time) } : {}),\n ...(study.end_time !== undefined ? { ends: adStudyTime(study.end_time) } : {}),\n ...(row.results_first_available_date ? { results_from: row.results_first_available_date } : {}),\n };\n}\n\n/** One test in full: each version with its cell id (what `studies update --split` names), each measure with Meta's results. */\nexport function studyDetail(row: Row, nowSeconds: number): Row {\n const study = adStudyFromWire(row);\n const measures = ((row.objectives as { data?: Row[] } | undefined)?.data ?? []).map((objective) => ({\n id: objective.id,\n name: objective.name,\n primary: objective.is_primary === true,\n ...(objective.results !== undefined ? { results: objective.results } : {}),\n }));\n return {\n ...compactStudy(row, nowSeconds),\n ...(study.description ? { description: study.description } : {}),\n versions: study.cells.map((cell) => ({\n cell_id: cell.id,\n name: cell.name,\n share: `${cell.treatment_percentage}%`,\n runs: cellObjects(cell).map((id) => ({ id, name: study.names[id] })),\n level: cell.ads ? \"ad\" : cell.adsets ? \"ad set\" : \"campaign\",\n })),\n measures,\n };\n}\n\nexport function studyHints(detail: Row): string[] {\n const state = detail.state as StudyState;\n if (state === \"scheduled\") {\n return [\n \"Not started: it can still be re-timed, re-split (`studies update --split <cell_id>=60 …`) or deleted. Results appear once it runs.\",\n ];\n }\n const measures = (detail.measures as Row[] | undefined) ?? [];\n const hasResults = measures.some((measure) => measure.results !== undefined);\n return [\n hasResults\n ? \"Meta's verdict is in each measure's results, with its confidence. Report a winner only when Meta names one at the test's confidence level; otherwise say the versions performed alike.\"\n : \"No results yet — Meta publishes them once the test has gathered enough. Compare per-version delivery meanwhile with `baker ads meta insights --object <ad set or campaign id>`, and do not call a winner from it.\",\n state === \"running\"\n ? \"Running: its split and start are fixed; it can be renamed, its end moved, ended now (`studies end`) or deleted (results and all).\"\n : \"Over. Read the per-version numbers with `baker ads meta insights --object <id>` for the period it ran.\",\n ];\n}\n\nregisterSchema({\n command: \"ads.meta.studies\",\n description:\n \"Meta A/B tests (ad studies) whose versions run in an ad account — what each compares, when it runs and its state (scheduled, running, ended). --study-id reads one: every version with its cell id and share, and each measure with Meta's results. --business-id lists every test on a Business. Stage new ones with `studies create`.\",\n args: {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID (act_123)\", required: false },\n \"business-id\": { type: \"string\", description: \"List every test on this Business instead\", required: false },\n \"study-id\": { type: \"string\", description: \"One test: its versions and results\", required: false },\n full: { type: \"boolean\", description: \"The tests as Meta returns them\", required: false },\n \"no-cache\": { type: \"boolean\", description: \"Bypass the cache\", required: false },\n },\n});\n\nconst listArgs = {\n \"account-id\": { type: \"string\", description: \"Meta ad account ID\" },\n \"business-id\": { type: \"string\", description: \"List every test on this Business instead\" },\n \"study-id\": { type: \"string\", description: \"Read one test: versions, cell ids, results\" },\n full: { type: \"boolean\", description: \"The tests as Meta returns them\" },\n \"no-cache\": NO_CACHE_ARG,\n} as const;\n\nasync function read<T>(path: string, params: Record<string, string>, noCache: unknown): Promise<T> {\n if (noCache) params[\"skip-cache\"] = \"true\";\n return await apiGet<T>(path, params);\n}\n\nconst listCommand = defineCommand({\n meta: {\n name: \"list\",\n description:\n \"List A/B tests. Runs by default. Example: baker ads meta studies --account-id act_123 · one test: baker ads meta studies --study-id 6123\",\n },\n args: listArgs,\n run: async ({ args }) => {\n const now = Math.floor(Date.now() / 1000);\n try {\n if (args[\"study-id\"]) {\n const row = await read<Row>(\n \"/api/ads/meta/study-results\",\n { \"study-id\": String(args[\"study-id\"]) },\n args[\"no-cache\"],\n );\n const detail = studyDetail(row, now);\n writeJsonEnvelope({ ok: true, data: args.full ? row : detail, hints: studyHints(detail) });\n return;\n }\n const params: Record<string, string> = args[\"business-id\"]\n ? { \"business-id\": String(args[\"business-id\"]) }\n : { \"account-id\": resolveAccountIdArg(args) };\n const rows = await read<Row[]>(\"/api/ads/meta/studies\", params, args[\"no-cache\"]);\n const hints =\n rows.length === 0\n ? [\n \"No A/B tests. To set one up: duplicate the ad set (`adsets duplicate`), change ONE thing on the copy, then `studies create --adsets <original>,<copy>`.\",\n ]\n : [\"`studies --study-id <id>` reads one test's versions and results.\"];\n writeJsonEnvelope({ ok: true, data: args.full ? rows : rows.map((row) => compactStudy(row, now)), hints });\n } catch (err) {\n handleMetaError(err);\n }\n },\n});\n\nexport const studiesCommand = defineCommand({\n meta: {\n name: \"studies\",\n description: `Meta A/B tests (ad studies): Meta splits one audience between versions — ad sets or campaigns — so each person sees one, and calls the winner.\nNot Baker's own page experiments (\\`baker experiment\\`), which test landing pages.\n\nExamples:\n baker ads meta studies --account-id act_123 # tests on this account and their state\n baker ads meta studies --study-id 6123 # versions, cell ids, Meta's results\n baker ads meta studies create --name \"Broad vs lookalike\" --adsets 6123,6124 --start 2026-10-20T08:00Z --days 14 --confidence 90\n baker ads meta studies update 6123 --end 2026-11-10T08:00Z\n baker ads meta studies end 6123 | delete 6123`,\n },\n subCommands: {\n list: listCommand,\n create: () => import(\"./study-writes.ts\").then((m) => m.studiesCreateCommand),\n update: () => import(\"./study-writes.ts\").then((m) => m.studiesUpdateCommand),\n end: () => import(\"./study-writes.ts\").then((m) => m.studiesEndCommand),\n delete: () => import(\"./study-writes.ts\").then((m) => m.studiesDeleteCommand),\n },\n args: listArgs,\n default: \"list\",\n});\n"],"mappings":"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","names":[]}
@@ -46,4 +46,4 @@ Full guide: __tooling__/docs/tools/baker/studio.md`
46
46
  export {
47
47
  studioCommand
48
48
  };
49
- //# sourceMappingURL=studio-MARZ22J2.js.map
49
+ //# sourceMappingURL=studio-ZLCGXFAN.js.map