@koda-sl/baker-cli 0.458.0 → 0.459.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 (1398) hide show
  1. package/dist/account-7Q3SWFEQ.js +78 -0
  2. package/dist/account-7Q3SWFEQ.js.map +1 -0
  3. package/dist/account-IRGRKYJY.js +80 -0
  4. package/dist/account-Y355AWQZ.js +49 -0
  5. package/dist/account-reads-76UWMB3T.js +218 -0
  6. package/dist/account-writes-G6B3D75J.js +66 -0
  7. package/dist/accounts-3EN57BBF.js +76 -0
  8. package/dist/accounts-3EN57BBF.js.map +1 -0
  9. package/dist/accounts-6BSNUSL2.js +115 -0
  10. package/dist/accounts-RFLO74GX.js +610 -0
  11. package/dist/accounts-RFLO74GX.js.map +1 -0
  12. package/dist/accounts-W3O34NIB.js +114 -0
  13. package/dist/accounts-ZCKOPY4V.js +75 -0
  14. package/dist/actions-SPJ7K3WP.js +55 -0
  15. package/dist/active-entities-OF34PSKJ.js +103 -0
  16. package/dist/activities-C5WK3MXQ.js +74 -0
  17. package/dist/ad-group-writes-NOJXE2SD.js +170 -0
  18. package/dist/ad-groups-YJQFLYXT.js +68 -0
  19. package/dist/ad-writes-NZITPMNK.js +174 -0
  20. package/dist/add-37RLQWXR.js +105 -0
  21. package/dist/add-BXTSVYMJ.js +97 -0
  22. package/dist/add-KREQCZ3B.js +103 -0
  23. package/dist/add-KREQCZ3B.js.map +1 -0
  24. package/dist/add-WFAYC64E.js +301 -0
  25. package/dist/add-WFAYC64E.js.map +1 -0
  26. package/dist/ads-4FVN7UTX.js +113 -0
  27. package/dist/ads-FZSPK3L7.js +77 -0
  28. package/dist/ads-KCIFEMF6.js +128 -0
  29. package/dist/ads-KCIFEMF6.js.map +1 -0
  30. package/dist/ads-YYVMBTMC.js +40 -0
  31. package/dist/adsets-I35MU53T.js +176 -0
  32. package/dist/advertisers-6C3JWMFN.js +125 -0
  33. package/dist/advertisers-S4YJJF36.js +119 -0
  34. package/dist/advertisers-S4YJJF36.js.map +1 -0
  35. package/dist/analytics-7XFTQHRQ.js +432 -0
  36. package/dist/analytics-7XFTQHRQ.js.map +1 -0
  37. package/dist/analytics-FTAYYC7B.js +1975 -0
  38. package/dist/analytics-FTAYYC7B.js.map +1 -0
  39. package/dist/animate-BZZ4PRNK.js +480 -0
  40. package/dist/assign-DS6P23RY.js +76 -0
  41. package/dist/assign-DS6P23RY.js.map +1 -0
  42. package/dist/audience-size-BFRNMLRD.js +93 -0
  43. package/dist/audience-size-BFRNMLRD.js.map +1 -0
  44. package/dist/audiences-57Z5DJ3C.js +78 -0
  45. package/dist/audiences-ALMKJXOE.js +85 -0
  46. package/dist/audiences-QEFTSR3A.js +268 -0
  47. package/dist/audit-4ODYNTLU.js +88 -0
  48. package/dist/audit-5FREWHG6.js +150 -0
  49. package/dist/audit-5FREWHG6.js.map +1 -0
  50. package/dist/autocomplete-CJMIVLXG.js +110 -0
  51. package/dist/autocomplete-CJMIVLXG.js.map +1 -0
  52. package/dist/avatars-D7RH6FQK.js +38 -0
  53. package/dist/bid-pricing-WEVFA3ZV.js +98 -0
  54. package/dist/bid-pricing-WEVFA3ZV.js.map +1 -0
  55. package/dist/brand-GON2DGDG.js +22 -0
  56. package/dist/brief-5ZXJG52M.js +490 -0
  57. package/dist/brief-5ZXJG52M.js.map +1 -0
  58. package/dist/businesses-U7V7D5O4.js +53 -0
  59. package/dist/campaign-groups-PRIQBLMQ.js +94 -0
  60. package/dist/campaign-groups-PRIQBLMQ.js.map +1 -0
  61. package/dist/campaign-writes-2URYK37Q.js +170 -0
  62. package/dist/campaign-writes-UYRSROW5.js +164 -0
  63. package/dist/campaign-writes-UYRSROW5.js.map +1 -0
  64. package/dist/campaigns-ENPXM4OI.js +110 -0
  65. package/dist/campaigns-IUPJX5EL.js +76 -0
  66. package/dist/campaigns-V66PVG7T.js +107 -0
  67. package/dist/campaigns-YRSLVSCL.js +108 -0
  68. package/dist/campaigns-YRSLVSCL.js.map +1 -0
  69. package/dist/canvas-BJQ556BB.js +46 -0
  70. package/dist/capabilities-WR5B364T.js +143 -0
  71. package/dist/capabilities-WR5B364T.js.map +1 -0
  72. package/dist/cards-5TOCOH5L.js +85 -0
  73. package/dist/catalog-7GPT7ZNH.js +65 -0
  74. package/dist/catalogs-I6PRBCEX.js +128 -0
  75. package/dist/changes-KSTSKL7T.js +135 -0
  76. package/dist/chatgpt-Y3UXQIRV.js +47 -0
  77. package/dist/chats-4ZTDTK7O.js +261 -0
  78. package/dist/chats-4ZTDTK7O.js.map +1 -0
  79. package/dist/chunk-2J5N24NW.js +98 -0
  80. package/dist/chunk-2WXLB66I.js +169 -0
  81. package/dist/chunk-2YK5XCY2.js +197 -0
  82. package/dist/chunk-2ZRSQDXR.js +160 -0
  83. package/dist/chunk-3GO6OOUD.js +474 -0
  84. package/dist/chunk-3L4P5X7N.js +75 -0
  85. package/dist/chunk-3XA4JVMY.js +454 -0
  86. package/dist/chunk-44RWJ33Z.js +74 -0
  87. package/dist/chunk-4AK4BUJR.js +191 -0
  88. package/dist/chunk-4EKRZKPX.js +84 -0
  89. package/dist/chunk-4RARCMPM.js +4410 -0
  90. package/dist/chunk-6MUPGGQ3.js +592 -0
  91. package/dist/chunk-6NS5HQUZ.js +74 -0
  92. package/dist/chunk-7VCD55XF.js +1599 -0
  93. package/dist/chunk-AINDZHQQ.js +225 -0
  94. package/dist/chunk-AUDVLNMT.js +172 -0
  95. package/dist/chunk-B7GQ4YUK.js +1830 -0
  96. package/dist/chunk-BABISVOU.js +74 -0
  97. package/dist/chunk-BBJWIA7F.js +159 -0
  98. package/dist/chunk-CE6IE364.js +215 -0
  99. package/dist/chunk-CL2X6KB5.js +846 -0
  100. package/dist/chunk-CUJ2F472.js +31 -0
  101. package/dist/chunk-DMXNT47S.js +136 -0
  102. package/dist/chunk-DQZEJV3K.js +494 -0
  103. package/dist/chunk-E5EJRF7J.js +139 -0
  104. package/dist/chunk-EHXZDWAE.js +25 -0
  105. package/dist/chunk-EPQXF3JZ.js +58 -0
  106. package/dist/chunk-FH23H72G.js +111 -0
  107. package/dist/chunk-FZT2UQF2.js +819 -0
  108. package/dist/chunk-GM4EDUTF.js +76 -0
  109. package/dist/chunk-HSAPEQBP.js +509 -0
  110. package/dist/chunk-I2HHXYRN.js +304 -0
  111. package/dist/chunk-IDORRX5W.js +275 -0
  112. package/dist/chunk-IFT6ID4T.js +28 -0
  113. package/dist/chunk-IK56IWZC.js +333 -0
  114. package/dist/chunk-IRUUPYCH.js +5189 -0
  115. package/dist/chunk-ITWB62LG.js +610 -0
  116. package/dist/chunk-IUPS2OYL.js +346 -0
  117. package/dist/chunk-J2UCNSRR.js +665 -0
  118. package/dist/chunk-JBDX74X5.js +1711 -0
  119. package/dist/chunk-JE2MELTY.js +19 -0
  120. package/dist/chunk-KDW5DT5B.js +297 -0
  121. package/dist/chunk-L4TPZLDW.js +45 -0
  122. package/dist/chunk-LFNVHAF3.js +172 -0
  123. package/dist/chunk-LLEF2Q66.js +486 -0
  124. package/dist/chunk-LXBRJNIB.js +337 -0
  125. package/dist/chunk-M2746TPS.js +207 -0
  126. package/dist/chunk-M6VLLYN2.js +98 -0
  127. package/dist/chunk-MD3B6MTI.js +103 -0
  128. package/dist/chunk-ME76DRT3.js +149 -0
  129. package/dist/chunk-MQEA2YZZ.js +96 -0
  130. package/dist/chunk-MQW4DEQD.js +382 -0
  131. package/dist/chunk-MWOIESOS.js +60 -0
  132. package/dist/chunk-NQGRCWKN.js +541 -0
  133. package/dist/chunk-NUHMHZTZ.js +214 -0
  134. package/dist/chunk-OAYHDIW2.js +309 -0
  135. package/dist/chunk-OB6QMAE3.js +84 -0
  136. package/dist/chunk-P2I4FSVO.js +188 -0
  137. package/dist/chunk-PSRKQJ6Y.js +125 -0
  138. package/dist/chunk-QDG5N7JH.js +106 -0
  139. package/dist/chunk-QNEKQWJS.js +175 -0
  140. package/dist/chunk-QZTIAVYI.js +274 -0
  141. package/dist/chunk-RGI7YZ6K.js +174 -0
  142. package/dist/chunk-S4EYRHCD.js +136 -0
  143. package/dist/chunk-SKAB7IBX.js +97 -0
  144. package/dist/chunk-SKXCU3XX.js +533 -0
  145. package/dist/chunk-SKXCU3XX.js.map +1 -0
  146. package/dist/chunk-SRAMULKE.js +67 -0
  147. package/dist/chunk-SXIPXBL2.js +96 -0
  148. package/dist/chunk-T6N4L5L5.js +65 -0
  149. package/dist/chunk-T7Q4SWW4.js +3153 -0
  150. package/dist/chunk-TD4PVILC.js +92 -0
  151. package/dist/chunk-TII4OUSW.js +42 -0
  152. package/dist/chunk-TU7DPHNP.js +6667 -0
  153. package/dist/chunk-TUYWBLHR.js +23 -0
  154. package/dist/chunk-UEQ4MZSP.js +51 -0
  155. package/dist/chunk-ULPPKJQH.js +296 -0
  156. package/dist/chunk-UMVRVX6L.js +76 -0
  157. package/dist/chunk-USFTTDIO.js +1965 -0
  158. package/dist/chunk-USFTTDIO.js.map +1 -0
  159. package/dist/chunk-UU6MRBKX.js +622 -0
  160. package/dist/chunk-VIZ5NYTI.js +94 -0
  161. package/dist/chunk-WAGMHPWG.js +455 -0
  162. package/dist/chunk-WCOZUD56.js +26 -0
  163. package/dist/chunk-WLRQPH3F.js +55 -0
  164. package/dist/chunk-WNP25LQF.js +46 -0
  165. package/dist/chunk-WSUZBTE6.js +1441 -0
  166. package/dist/chunk-WVABBPSH.js +166 -0
  167. package/dist/chunk-WZH3D2H7.js +106 -0
  168. package/dist/chunk-XF6OUF7E.js +363 -0
  169. package/dist/chunk-XN2OQQXR.js +23992 -0
  170. package/dist/chunk-XQITDMRD.js +133 -0
  171. package/dist/chunk-YZBQ4ACW.js +66 -0
  172. package/dist/chunk-ZH7F3M3L.js +56 -0
  173. package/dist/claim-IP7TW36G.js +196 -0
  174. package/dist/claim-IP7TW36G.js.map +1 -0
  175. package/dist/cli.js +36 -36
  176. package/dist/client-7ZMKIPDA.js +19 -0
  177. package/dist/code-T6ANPNY4.js +76 -0
  178. package/dist/companies-CVZSYR4I.js +194 -0
  179. package/dist/companies-CVZSYR4I.js.map +1 -0
  180. package/dist/complete-3EI3UAXO.js +80 -0
  181. package/dist/complete-3EI3UAXO.js.map +1 -0
  182. package/dist/config-4BUL56PU.js +88 -0
  183. package/dist/connect-OPAG6B4I.js +41 -0
  184. package/dist/content-627YHJUP.js +85 -0
  185. package/dist/conversation-DCV3XLVJ.js +92 -0
  186. package/dist/conversation-DCV3XLVJ.js.map +1 -0
  187. package/dist/conversion-report-5KFFJ2VU.js +125 -0
  188. package/dist/conversion-upload-command-JU6ZSJBV.js +438 -0
  189. package/dist/conversion-writes-RSCIEGWD.js +120 -0
  190. package/dist/conversions-YXBMEICL.js +134 -0
  191. package/dist/conversions-YXBMEICL.js.map +1 -0
  192. package/dist/conversions-ZODHC7RT.js +76 -0
  193. package/dist/countries-HKTPBBLQ.js +82 -0
  194. package/dist/create-PB7SQBVR.js +58 -0
  195. package/dist/create-PB7SQBVR.js.map +1 -0
  196. package/dist/create-POI3XUG4.js +206 -0
  197. package/dist/create-POI3XUG4.js.map +1 -0
  198. package/dist/create-UQT3B6RD.js +129 -0
  199. package/dist/create-UQT3B6RD.js.map +1 -0
  200. package/dist/create-W77RMT5Y.js +234 -0
  201. package/dist/create-W77RMT5Y.js.map +1 -0
  202. package/dist/creatives-G3L7TNF2.js +181 -0
  203. package/dist/creatives-G3L7TNF2.js.map +1 -0
  204. package/dist/creatives-KV3N6WGN.js +87 -0
  205. package/dist/creatives-NFKVUZE6.js +51 -0
  206. package/dist/credentials-ICIHZGMJ.js +286 -0
  207. package/dist/credentials-ICIHZGMJ.js.map +1 -0
  208. package/dist/critique-5ZBSMDQB.js +1448 -0
  209. package/dist/critique-5ZBSMDQB.js.map +1 -0
  210. package/dist/critique-WCTII73A.js +212 -0
  211. package/dist/critique-WCTII73A.js.map +1 -0
  212. package/dist/crm-37OBNSMQ.js +317 -0
  213. package/dist/crm-37OBNSMQ.js.map +1 -0
  214. package/dist/crm-WAYQIIPC.js +223 -0
  215. package/dist/crm-WAYQIIPC.js.map +1 -0
  216. package/dist/crop-JXBA435D.js +113 -0
  217. package/dist/currency-G3MQUET6.js +88 -0
  218. package/dist/custom-conversions-CKNJONBF.js +125 -0
  219. package/dist/customers-54DNP36T.js +55 -0
  220. package/dist/delete-5AE5ZXKZ.js +65 -0
  221. package/dist/delete-5AE5ZXKZ.js.map +1 -0
  222. package/dist/delete-DRIIOQVD.js +71 -0
  223. package/dist/delete-KEY72YMK.js +62 -0
  224. package/dist/delete-KEY72YMK.js.map +1 -0
  225. package/dist/delete-MJRH3R3P.js +69 -0
  226. package/dist/delete-UVCG2LTO.js +53 -0
  227. package/dist/delete-UVCG2LTO.js.map +1 -0
  228. package/dist/delete-ZO2NTIMH.js +71 -0
  229. package/dist/demographics-DFQAW2TZ.js +137 -0
  230. package/dist/demographics-DFQAW2TZ.js.map +1 -0
  231. package/dist/describe-2UB4CN5S.js +97 -0
  232. package/dist/describe-6744DROL.js +97 -0
  233. package/dist/dimensions-TZLKBZN7.js +101 -0
  234. package/dist/discard-N6IROZSY.js +65 -0
  235. package/dist/discard-N6IROZSY.js.map +1 -0
  236. package/dist/discover-73K5J5RJ.js +172 -0
  237. package/dist/domain-26HC6EFR.js +97 -0
  238. package/dist/domain-26HC6EFR.js.map +1 -0
  239. package/dist/download-FSZVKV5I.js +299 -0
  240. package/dist/draft-I33XVUQO.js +216 -0
  241. package/dist/draft-I33XVUQO.js.map +1 -0
  242. package/dist/draft-NWYVWHR4.js +103 -0
  243. package/dist/draft-OTEC5VNP.js +307 -0
  244. package/dist/draft-RVMSQTH6.js +233 -0
  245. package/dist/draft-TR6L3SUD.js +327 -0
  246. package/dist/draft-TR6L3SUD.js.map +1 -0
  247. package/dist/draft-XPUDO6BL.js +100 -0
  248. package/dist/draft-YTEETFEN.js +281 -0
  249. package/dist/draft-YXZHA6YH.js +305 -0
  250. package/dist/draft-YXZHA6YH.js.map +1 -0
  251. package/dist/engine/index.js +13 -13
  252. package/dist/env-CJCGNARF.js +43 -0
  253. package/dist/experiment-CBAGPNF4.js +1397 -0
  254. package/dist/export-5TK2LH7S.js +168 -0
  255. package/dist/extract-OP7YHID2.js +113 -0
  256. package/dist/facets-3XBOJEUW.js +113 -0
  257. package/dist/facets-3XBOJEUW.js.map +1 -0
  258. package/dist/favorites-S4ZT5JII.js +178 -0
  259. package/dist/feed-5U4RTYLR.js +179 -0
  260. package/dist/feedback-FRILY4XF.js +66 -0
  261. package/dist/feedback-record-T6JXOSAV.js +174 -0
  262. package/dist/feedback-record-T6JXOSAV.js.map +1 -0
  263. package/dist/fetch-E6SRZGRB.js +139 -0
  264. package/dist/fetch-ELCHOTCH.js +175 -0
  265. package/dist/fetch-ELCHOTCH.js.map +1 -0
  266. package/dist/find-KBXUSX2G.js +134 -0
  267. package/dist/fit-QBG3EXST.js +45 -0
  268. package/dist/flows-KGXKD2OV.js +246 -0
  269. package/dist/flows-KGXKD2OV.js.map +1 -0
  270. package/dist/follow-7JLLZBRN.js +80 -0
  271. package/dist/follow-7JLLZBRN.js.map +1 -0
  272. package/dist/follow-competitors-XNBHJAFQ.js +129 -0
  273. package/dist/follow-competitors-XNBHJAFQ.js.map +1 -0
  274. package/dist/following-AH24UDXY.js +113 -0
  275. package/dist/fonts-5OKN5H2C.js +33 -0
  276. package/dist/forecast-3KUCCPOJ.js +103 -0
  277. package/dist/forecast-3KUCCPOJ.js.map +1 -0
  278. package/dist/forecast-HDF4PALO.js +168 -0
  279. package/dist/funding-KGAE3LKV.js +85 -0
  280. package/dist/funnel-VSBJ5AZK.js +393 -0
  281. package/dist/funnel-VSBJ5AZK.js.map +1 -0
  282. package/dist/ga4-G5NBFPPT.js +55 -0
  283. package/dist/generate-HXE2MOAO.js +262 -0
  284. package/dist/get-2Q3FKYH7.js +63 -0
  285. package/dist/get-ALNQPO3F.js +59 -0
  286. package/dist/get-BLWUJWTJ.js +92 -0
  287. package/dist/get-BQYGOFSS.js +55 -0
  288. package/dist/get-BQYGOFSS.js.map +1 -0
  289. package/dist/get-OT3AANLU.js +61 -0
  290. package/dist/get-PFFST42A.js +63 -0
  291. package/dist/get-TMTKSZVG.js +77 -0
  292. package/dist/get-TMTKSZVG.js.map +1 -0
  293. package/dist/gif-QCH3FJHD.js +94 -0
  294. package/dist/google-5RM2V7PE.js +3190 -0
  295. package/dist/google-YQ5D4PB6.js +136 -0
  296. package/dist/google-ads-CJHPQ6ZB.js +194 -0
  297. package/dist/google-ads-CJHPQ6ZB.js.map +1 -0
  298. package/dist/group-CHOPV2I3.js +43 -0
  299. package/dist/group-KTFOHXGH.js +43 -0
  300. package/dist/gsc-35YVWJ4E.js +30 -0
  301. package/dist/history-7D3P5JDO.js +132 -0
  302. package/dist/history-7D3P5JDO.js.map +1 -0
  303. package/dist/history-Y4VNF5TU.js +67 -0
  304. package/dist/hubspot-NLHQKLH4.js +778 -0
  305. package/dist/hubspot-NLHQKLH4.js.map +1 -0
  306. package/dist/icon-WT2BZJ5G.js +137 -0
  307. package/dist/ideas-MT2NSIYS.js +31 -0
  308. package/dist/images-JFNAKV5U.js +90 -0
  309. package/dist/improve-4BN7ASFK.js +86 -0
  310. package/dist/ingest-JGVH4DZH.js +106 -0
  311. package/dist/ingest-JGVH4DZH.js.map +1 -0
  312. package/dist/ingest-XWWDPKPZ.js +22 -0
  313. package/dist/insights-2JRN53IF.js +423 -0
  314. package/dist/insights-Q3QN4YQ2.js +122 -0
  315. package/dist/inspect-FXUYLHPE.js +188 -0
  316. package/dist/inspect-FXUYLHPE.js.map +1 -0
  317. package/dist/inspiration-3MF6SN4M.js +53 -0
  318. package/dist/intent-4X76HZ4S.js +95 -0
  319. package/dist/job-IA7XUMHW.js +202 -0
  320. package/dist/job-create-A3YQCY4U.js +109 -0
  321. package/dist/job-status-56EON3DS.js +74 -0
  322. package/dist/keep-S6MJM5RW.js +78 -0
  323. package/dist/keyword-gap-JZQSQBCJ.js +130 -0
  324. package/dist/keyword-metrics-OWHQGCOD.js +196 -0
  325. package/dist/keyword-metrics-OWHQGCOD.js.map +1 -0
  326. package/dist/keywords-for-site-JPZUG65E.js +127 -0
  327. package/dist/keywords-for-site-JPZUG65E.js.map +1 -0
  328. package/dist/landing-T5X74INN.js +28 -0
  329. package/dist/landings-IBADDGX5.js +144 -0
  330. package/dist/landings-IBADDGX5.js.map +1 -0
  331. package/dist/languages-CVH5RLA3.js +40 -0
  332. package/dist/languages-OG5UB5HX.js +55 -0
  333. package/dist/launches-VA7F7VNW.js +108 -0
  334. package/dist/layerize-AD5QZ27N.js +190 -0
  335. package/dist/leads-MWLO42NZ.js +293 -0
  336. package/dist/leads-N43AJZ2A.js +89 -0
  337. package/dist/leads-N43AJZ2A.js.map +1 -0
  338. package/dist/learn-DF7MS7DH.js +202 -0
  339. package/dist/learn-DF7MS7DH.js.map +1 -0
  340. package/dist/library-JZWQF5LV.js +109 -0
  341. package/dist/lighthouse-PZVDR4V4.js +75 -0
  342. package/dist/line-item-writes-NLV2J5LT.js +207 -0
  343. package/dist/line-item-writes-NLV2J5LT.js.map +1 -0
  344. package/dist/line-items-U6W2WHK2.js +103 -0
  345. package/dist/link-TFWYRATB.js +63 -0
  346. package/dist/link-TFWYRATB.js.map +1 -0
  347. package/dist/linkedin-TOXNMGL5.js +1007 -0
  348. package/dist/linkedin-TOXNMGL5.js.map +1 -0
  349. package/dist/list-FHD6XLBG.js +50 -0
  350. package/dist/list-H77PTVSF.js +51 -0
  351. package/dist/list-JDJY55SE.js +76 -0
  352. package/dist/list-MIQZ6ARQ.js +302 -0
  353. package/dist/list-MIQZ6ARQ.js.map +1 -0
  354. package/dist/list-UZQ4J3GJ.js +62 -0
  355. package/dist/list-UZQ4J3GJ.js.map +1 -0
  356. package/dist/list-VP2FP2DZ.js +65 -0
  357. package/dist/list-Z44K4QN3.js +57 -0
  358. package/dist/list-ZWOILE3A.js +150 -0
  359. package/dist/list-ZWOILE3A.js.map +1 -0
  360. package/dist/locations-3PVEWKUN.js +40 -0
  361. package/dist/locations-KPB7YMY7.js +67 -0
  362. package/dist/log-LGOEQGH5.js +91 -0
  363. package/dist/log-LGOEQGH5.js.map +1 -0
  364. package/dist/logo-N7JOUSLF.js +18 -0
  365. package/dist/lookup-NTOAWVB7.js +22 -0
  366. package/dist/make-P6VL4GWO.js +633 -0
  367. package/dist/make-P6VL4GWO.js.map +1 -0
  368. package/dist/map-5Y367KMF.js +403 -0
  369. package/dist/map-5Y367KMF.js.map +1 -0
  370. package/dist/mcp-T6NHJX6O.js +462 -0
  371. package/dist/mcp-T6NHJX6O.js.map +1 -0
  372. package/dist/media-IZ4RDOGZ.js +15 -0
  373. package/dist/media-QNVOMX2L.js +89 -0
  374. package/dist/media-sources-ESDSKU77.js +32 -0
  375. package/dist/members-PKYLK6YN.js +43 -0
  376. package/dist/members-PKYLK6YN.js.map +1 -0
  377. package/dist/meta-P5CF3K3C.js +69 -0
  378. package/dist/metrics-DGEUY2UE.js +152 -0
  379. package/dist/models-KAAOFX22.js +155 -0
  380. package/dist/normalize-GTETIA76.js +140 -0
  381. package/dist/normalize-GTETIA76.js.map +1 -0
  382. package/dist/normalize-LC6FTTX2.js +806 -0
  383. package/dist/options-PJCPZWKV.js +120 -0
  384. package/dist/options-PJCPZWKV.js.map +1 -0
  385. package/dist/output-G3GBWY3I.js +24 -0
  386. package/dist/page-T27BIISC.js +105 -0
  387. package/dist/pages-Z7L65T4G.js +66 -0
  388. package/dist/performance-PIB64TCS.js +23 -0
  389. package/dist/pinterest-EGNWZUFU.js +96 -0
  390. package/dist/pixels-EXZO6PO7.js +108 -0
  391. package/dist/pixels-PK3NDJWX.js +60 -0
  392. package/dist/plan-2FBPAUNT.js +207 -0
  393. package/dist/preview-VON3MQGX.js +169 -0
  394. package/dist/profile-2UZLQUTP.js +131 -0
  395. package/dist/promoted-tweet-writes-OMUOQL2P.js +179 -0
  396. package/dist/promoted-tweet-writes-OMUOQL2P.js.map +1 -0
  397. package/dist/promoted-tweets-GHHCSHZU.js +119 -0
  398. package/dist/properties-TKJVTJWP.js +101 -0
  399. package/dist/publish-YCCZLTKN.js +321 -0
  400. package/dist/publish-YCCZLTKN.js.map +1 -0
  401. package/dist/query-E6G2FS4B.js +236 -0
  402. package/dist/query-IEJ6GDJT.js +61 -0
  403. package/dist/query-JDLAZAZB.js +247 -0
  404. package/dist/questionnaire-7TDP2OIX.js +93 -0
  405. package/dist/read-H3WO6TUB.js +141 -0
  406. package/dist/reddit-6U3NJUBN.js +25 -0
  407. package/dist/refresh-ZGUGIV4V.js +93 -0
  408. package/dist/refresh-ZGUGIV4V.js.map +1 -0
  409. package/dist/release-2DPMLDCF.js +59 -0
  410. package/dist/release-2DPMLDCF.js.map +1 -0
  411. package/dist/relevant-pages-E5IWT4JX.js +99 -0
  412. package/dist/remove-AKNVDNMY.js +49 -0
  413. package/dist/remove-AKNVDNMY.js.map +1 -0
  414. package/dist/remove-BNRKVQEW.js +48 -0
  415. package/dist/reopen-SDM64C4N.js +62 -0
  416. package/dist/reopen-SDM64C4N.js.map +1 -0
  417. package/dist/rerun-V4AMTVWG.js +84 -0
  418. package/dist/rerun-V4AMTVWG.js.map +1 -0
  419. package/dist/research-C6SQN5IV.js +261 -0
  420. package/dist/research-C6SQN5IV.js.map +1 -0
  421. package/dist/research-XRE3LGFO.js +62 -0
  422. package/dist/reset-G67E32S3.js +53 -0
  423. package/dist/reset-G67E32S3.js.map +1 -0
  424. package/dist/reset-GKF3PG5D.js +53 -0
  425. package/dist/reset-GKF3PG5D.js.map +1 -0
  426. package/dist/resolve-5LR4LNOX.js +120 -0
  427. package/dist/resolve-5LR4LNOX.js.map +1 -0
  428. package/dist/retry-YB2OHYYY.js +59 -0
  429. package/dist/retry-YB2OHYYY.js.map +1 -0
  430. package/dist/retry-YPLHXIDR.js +61 -0
  431. package/dist/retry-YPLHXIDR.js.map +1 -0
  432. package/dist/retry-failed-3DMGOEFM.js +45 -0
  433. package/dist/run-NK5LF3UC.js +59 -0
  434. package/dist/run-NWYMEPOI.js +64 -0
  435. package/dist/run-NWYMEPOI.js.map +1 -0
  436. package/dist/scaffold-ad-ZPHWORM7.js +1548 -0
  437. package/dist/scaffold-ad-ZPHWORM7.js.map +1 -0
  438. package/dist/scaffold-static-ad-TS42T3XI.js +971 -0
  439. package/dist/scaffold-static-ad-TS42T3XI.js.map +1 -0
  440. package/dist/scaffold-video-EY7LQHUY.js +872 -0
  441. package/dist/scaffold-video-EY7LQHUY.js.map +1 -0
  442. package/dist/schedule-5FHKONNU.js +60 -0
  443. package/dist/schedule-5FHKONNU.js.map +1 -0
  444. package/dist/schedule-EB3LSEUO.js +66 -0
  445. package/dist/scheduled-agents-UDH7LHT2.js +49 -0
  446. package/dist/schema-B6HPX7LD.js +131 -0
  447. package/dist/schema-B6HPX7LD.js.map +1 -0
  448. package/dist/schema-TSTEGRJ7.js +63 -0
  449. package/dist/scrape-VGSZS6SM.js +2241 -0
  450. package/dist/screenshot-NUVTRG3D.js +102 -0
  451. package/dist/search-265T7Y7G.js +92 -0
  452. package/dist/search-7XFVB6DH.js +26 -0
  453. package/dist/search-SOZ3HPIB.js +91 -0
  454. package/dist/search-UNYQXK6E.js +224 -0
  455. package/dist/search-ZPX5JOSI.js +173 -0
  456. package/dist/search-ZPX5JOSI.js.map +1 -0
  457. package/dist/search-copy-AKY73GKO.js +115 -0
  458. package/dist/seeds-FF6JTDIB.js +101 -0
  459. package/dist/select-43CHIWPI.js +93 -0
  460. package/dist/select-43CHIWPI.js.map +1 -0
  461. package/dist/sends-XOR6X3MW.js +309 -0
  462. package/dist/sequences-HJJTLSCV.js +146 -0
  463. package/dist/set-prompt-UTPNGH5C.js +185 -0
  464. package/dist/set-prompt-UTPNGH5C.js.map +1 -0
  465. package/dist/setup-links-W2CYPT3X.js +140 -0
  466. package/dist/setup-links-W2CYPT3X.js.map +1 -0
  467. package/dist/shared-NOT4U5P3.js +31 -0
  468. package/dist/site-MTXQAIMF.js +176 -0
  469. package/dist/site-MTXQAIMF.js.map +1 -0
  470. package/dist/sitemaps-GHFPKIGO.js +87 -0
  471. package/dist/sites-UGDJGEI4.js +101 -0
  472. package/dist/skills-RKCLARCX.js +47 -0
  473. package/dist/sources-RDRS6BKL.js +420 -0
  474. package/dist/sources-RDRS6BKL.js.map +1 -0
  475. package/dist/sources-ZQG5GKKC.js +30 -0
  476. package/dist/stale-LDDPU7U5.js +62 -0
  477. package/dist/stale-LDDPU7U5.js.map +1 -0
  478. package/dist/stats-RX67ANJJ.js +34 -0
  479. package/dist/status-ENQK53AS.js +61 -0
  480. package/dist/status-ENQK53AS.js.map +1 -0
  481. package/dist/sticker-FPIFV6J3.js +94 -0
  482. package/dist/stock-4BZVZYM5.js +179 -0
  483. package/dist/studio-6J4HFHKT.js +49 -0
  484. package/dist/sync-3XOV4JVW.js +54 -0
  485. package/dist/sync-ORAGCD3B.js +53 -0
  486. package/dist/sync-ORAGCD3B.js.map +1 -0
  487. package/dist/sync-XMQP4ASW.js +265 -0
  488. package/dist/sync-definition-IQ7LDTM2.js +52 -0
  489. package/dist/tag-manager-3FKPMUYJ.js +43 -0
  490. package/dist/tags-2JN5EFEM.js +223 -0
  491. package/dist/tags-2JN5EFEM.js.map +1 -0
  492. package/dist/tags-BT4U6UG2.js +19 -0
  493. package/dist/tags-BT4U6UG2.js.map +1 -0
  494. package/dist/tags-EEPRL747.js +26 -0
  495. package/dist/tags-EFBFX4RT.js +19 -0
  496. package/dist/tags-EFBFX4RT.js.map +1 -0
  497. package/dist/tags-ZN4AOY3F.js +19 -0
  498. package/dist/tags-ZN4AOY3F.js.map +1 -0
  499. package/dist/targeting-constants-T5SV3RBQ.js +118 -0
  500. package/dist/targeting-criteria-4CMZS63Y.js +113 -0
  501. package/dist/targets-6RCKH4KY.js +101 -0
  502. package/dist/targets-6RCKH4KY.js.map +1 -0
  503. package/dist/templates-H4EIQV6D.js +177 -0
  504. package/dist/templates-H4EIQV6D.js.map +1 -0
  505. package/dist/testimonials-HX7LCXEB.js +32 -0
  506. package/dist/themes-N3A5RRFO.js +94 -0
  507. package/dist/top-companies-7X23BKOG.js +107 -0
  508. package/dist/top-companies-7X23BKOG.js.map +1 -0
  509. package/dist/translate-A55Q7MGZ.js +597 -0
  510. package/dist/translate-A55Q7MGZ.js.map +1 -0
  511. package/dist/triggers-XKDF3ABP.js +140 -0
  512. package/dist/triggers-XKDF3ABP.js.map +1 -0
  513. package/dist/tweets-IR2HROMH.js +123 -0
  514. package/dist/unfollow-A7GRLMY2.js +46 -0
  515. package/dist/unlink-HITAQUFK.js +66 -0
  516. package/dist/unlink-HITAQUFK.js.map +1 -0
  517. package/dist/unstage-4UHFMQYC.js +83 -0
  518. package/dist/unstage-4UHFMQYC.js.map +1 -0
  519. package/dist/unstage-EY5GFBKG.js +95 -0
  520. package/dist/update-HO67FDTK.js +141 -0
  521. package/dist/update-HO67FDTK.js.map +1 -0
  522. package/dist/update-M2NPG4OC.js +154 -0
  523. package/dist/update-M2NPG4OC.js.map +1 -0
  524. package/dist/update-PBZSKQ2A.js +62 -0
  525. package/dist/update-PBZSKQ2A.js.map +1 -0
  526. package/dist/update-VH535NTO.js +97 -0
  527. package/dist/update-VH535NTO.js.map +1 -0
  528. package/dist/upload-GYJP3MTW.js +150 -0
  529. package/dist/upload-UQ5G7O5L.js +125 -0
  530. package/dist/upload-UQ5G7O5L.js.map +1 -0
  531. package/dist/upscale-IN7ONODV.js +109 -0
  532. package/dist/url-options-M2PRFR7P.js +130 -0
  533. package/dist/url-params-HGTPP2FP.js +97 -0
  534. package/dist/url-params-HGTPP2FP.js.map +1 -0
  535. package/dist/use-DRH3UODR.js +95 -0
  536. package/dist/validate-YSL4KA63.js +88 -0
  537. package/dist/validate-YSL4KA63.js.map +1 -0
  538. package/dist/variant-4JRLIUEF.js +338 -0
  539. package/dist/videos-M6OJINGL.js +39 -0
  540. package/dist/view-NKEOHFYX.js +121 -0
  541. package/dist/viewer-check-FVVKJROL.js +69 -0
  542. package/dist/web-YSFEOI53.js +139 -0
  543. package/dist/web-YSFEOI53.js.map +1 -0
  544. package/dist/winners-3QYUR4HE.js +113 -0
  545. package/dist/winning-ads-MCH5FYMT.js +79 -0
  546. package/dist/write-commands-24EXCNQQ.js +206 -0
  547. package/dist/write-commands-EXK4PK7F.js +1014 -0
  548. package/dist/write-commands-EXK4PK7F.js.map +1 -0
  549. package/dist/write-commands-K7UNX4CE.js +737 -0
  550. package/dist/write-commands-QQVMIG7U.js +713 -0
  551. package/dist/x-3CFDN2QM.js +47 -0
  552. package/package.json +1 -1
  553. package/dist/account-CZWMPCRJ.js +0 -79
  554. package/dist/account-CZWMPCRJ.js.map +0 -1
  555. package/dist/account-F2D257QB.js +0 -49
  556. package/dist/account-VGIKDAK3.js +0 -80
  557. package/dist/account-reads-OS6RLJFJ.js +0 -218
  558. package/dist/account-writes-7HZJWI5U.js +0 -66
  559. package/dist/accounts-25JDCWKR.js +0 -75
  560. package/dist/accounts-4IIILFLV.js +0 -115
  561. package/dist/accounts-6GNGCHU7.js +0 -77
  562. package/dist/accounts-6GNGCHU7.js.map +0 -1
  563. package/dist/accounts-X5MPAWZX.js +0 -114
  564. package/dist/accounts-Z45QINO4.js +0 -611
  565. package/dist/accounts-Z45QINO4.js.map +0 -1
  566. package/dist/actions-CLFWCFFA.js +0 -55
  567. package/dist/active-entities-V2K2S3UY.js +0 -103
  568. package/dist/activities-CUVZGTGA.js +0 -74
  569. package/dist/ad-group-writes-GG3BUQQY.js +0 -170
  570. package/dist/ad-groups-KRZ6YX7O.js +0 -68
  571. package/dist/ad-writes-YDMS7NPG.js +0 -174
  572. package/dist/add-7P4VYS7R.js +0 -302
  573. package/dist/add-7P4VYS7R.js.map +0 -1
  574. package/dist/add-BHLEFGCG.js +0 -97
  575. package/dist/add-LHAZ34ZF.js +0 -105
  576. package/dist/add-PC7YGO2Z.js +0 -104
  577. package/dist/add-PC7YGO2Z.js.map +0 -1
  578. package/dist/ads-5SGFPSQL.js +0 -113
  579. package/dist/ads-CP4VTPKO.js +0 -77
  580. package/dist/ads-FYSAF7HG.js +0 -130
  581. package/dist/ads-FYSAF7HG.js.map +0 -1
  582. package/dist/ads-Q54IPFAS.js +0 -40
  583. package/dist/adsets-4RXF4YXR.js +0 -176
  584. package/dist/advertisers-JDUAIACQ.js +0 -125
  585. package/dist/advertisers-LAIOXSCF.js +0 -120
  586. package/dist/advertisers-LAIOXSCF.js.map +0 -1
  587. package/dist/analytics-7M6JSC2C.js +0 -1976
  588. package/dist/analytics-7M6JSC2C.js.map +0 -1
  589. package/dist/analytics-7RGPJKUD.js +0 -433
  590. package/dist/analytics-7RGPJKUD.js.map +0 -1
  591. package/dist/animate-PYYWDHQ2.js +0 -480
  592. package/dist/assign-4UP6F6UX.js +0 -77
  593. package/dist/assign-4UP6F6UX.js.map +0 -1
  594. package/dist/audience-size-AYNVGVBR.js +0 -94
  595. package/dist/audience-size-AYNVGVBR.js.map +0 -1
  596. package/dist/audiences-6QF625VZ.js +0 -268
  597. package/dist/audiences-B2ZSJSOJ.js +0 -78
  598. package/dist/audiences-S6IHCG3G.js +0 -85
  599. package/dist/audit-43GSHWBO.js +0 -151
  600. package/dist/audit-43GSHWBO.js.map +0 -1
  601. package/dist/audit-IJUKCS2K.js +0 -88
  602. package/dist/autocomplete-YVP3WOFQ.js +0 -111
  603. package/dist/autocomplete-YVP3WOFQ.js.map +0 -1
  604. package/dist/avatars-O64BDZHC.js +0 -38
  605. package/dist/bid-pricing-GMEWVIQP.js +0 -99
  606. package/dist/bid-pricing-GMEWVIQP.js.map +0 -1
  607. package/dist/brand-W55FHWU6.js +0 -22
  608. package/dist/brief-QH7Z6QBP.js +0 -491
  609. package/dist/brief-QH7Z6QBP.js.map +0 -1
  610. package/dist/businesses-ZFP263RY.js +0 -53
  611. package/dist/campaign-groups-XPYTQFNQ.js +0 -95
  612. package/dist/campaign-groups-XPYTQFNQ.js.map +0 -1
  613. package/dist/campaign-writes-7MFHQAAI.js +0 -165
  614. package/dist/campaign-writes-7MFHQAAI.js.map +0 -1
  615. package/dist/campaign-writes-APYVRCNH.js +0 -170
  616. package/dist/campaigns-ANQW3YDH.js +0 -76
  617. package/dist/campaigns-LXSVJEXI.js +0 -109
  618. package/dist/campaigns-LXSVJEXI.js.map +0 -1
  619. package/dist/campaigns-UN3XB6TJ.js +0 -107
  620. package/dist/campaigns-YPI4KS7U.js +0 -110
  621. package/dist/canvas-GPXU2ZSC.js +0 -46
  622. package/dist/capabilities-HD2T6H24.js +0 -144
  623. package/dist/capabilities-HD2T6H24.js.map +0 -1
  624. package/dist/cards-QRX43TGI.js +0 -85
  625. package/dist/catalog-CRIYIXOJ.js +0 -65
  626. package/dist/catalogs-D677AN33.js +0 -128
  627. package/dist/changes-PWBOKKNL.js +0 -135
  628. package/dist/chatgpt-RYL44ASK.js +0 -47
  629. package/dist/chats-OQ6JOASV.js +0 -262
  630. package/dist/chats-OQ6JOASV.js.map +0 -1
  631. package/dist/chunk-2QLNGCFZ.js +0 -175
  632. package/dist/chunk-2V2M2CHS.js +0 -225
  633. package/dist/chunk-35QYDREI.js +0 -160
  634. package/dist/chunk-3BG2BVWN.js +0 -622
  635. package/dist/chunk-3FOE4P6A.js +0 -28
  636. package/dist/chunk-3JX4NUGF.js +0 -45
  637. package/dist/chunk-3KN3VCS3.js +0 -1711
  638. package/dist/chunk-54VIXBLO.js +0 -46
  639. package/dist/chunk-5IQL24NI.js +0 -76
  640. package/dist/chunk-5TOKIRCD.js +0 -1441
  641. package/dist/chunk-5URIFBIL.js +0 -75
  642. package/dist/chunk-5Z6SSOLG.js +0 -188
  643. package/dist/chunk-6C4S466W.js +0 -486
  644. package/dist/chunk-6HLPM7U3.js +0 -191
  645. package/dist/chunk-6R7CMUIZ.js +0 -74
  646. package/dist/chunk-6XPBHM5P.js +0 -84
  647. package/dist/chunk-6ZEFXZRD.js +0 -274
  648. package/dist/chunk-73JXX4LJ.js +0 -136
  649. package/dist/chunk-A2PTD6FL.js +0 -166
  650. package/dist/chunk-AGEJ7IJG.js +0 -592
  651. package/dist/chunk-APY53DKV.js +0 -304
  652. package/dist/chunk-BJ4SHBS2.js +0 -207
  653. package/dist/chunk-BXKJZBBJ.js +0 -125
  654. package/dist/chunk-C2DAPBYB.js +0 -4410
  655. package/dist/chunk-D2JOBGBD.js +0 -541
  656. package/dist/chunk-DE64GHEP.js +0 -74
  657. package/dist/chunk-E4ICSNSW.js +0 -215
  658. package/dist/chunk-EIAA3XTT.js +0 -275
  659. package/dist/chunk-EMLM2TKM.js +0 -6667
  660. package/dist/chunk-EOWMPN3Q.js +0 -51
  661. package/dist/chunk-F66W4QQL.js +0 -92
  662. package/dist/chunk-FCADB4RG.js +0 -535
  663. package/dist/chunk-FCADB4RG.js.map +0 -1
  664. package/dist/chunk-FIBL3EZN.js +0 -197
  665. package/dist/chunk-FJDTR2IN.js +0 -363
  666. package/dist/chunk-FNKOQQ2U.js +0 -42
  667. package/dist/chunk-FZKC65TR.js +0 -455
  668. package/dist/chunk-G4PE563Y.js +0 -309
  669. package/dist/chunk-G6UBBPH3.js +0 -106
  670. package/dist/chunk-GKUIGEY6.js +0 -56
  671. package/dist/chunk-GWFJAVWD.js +0 -97
  672. package/dist/chunk-HMKVVPWY.js +0 -333
  673. package/dist/chunk-HMVVNB23.js +0 -76
  674. package/dist/chunk-ICFITD5H.js +0 -31
  675. package/dist/chunk-IDEFDDTX.js +0 -819
  676. package/dist/chunk-IFZD2MDE.js +0 -474
  677. package/dist/chunk-IH4NS3NT.js +0 -172
  678. package/dist/chunk-ITYFVNLA.js +0 -846
  679. package/dist/chunk-IX6PPPOS.js +0 -346
  680. package/dist/chunk-JTSYEIHY.js +0 -103
  681. package/dist/chunk-K63BDJYR.js +0 -136
  682. package/dist/chunk-KNX2UBLI.js +0 -610
  683. package/dist/chunk-KPHBHRJY.js +0 -149
  684. package/dist/chunk-KWMCE3Q2.js +0 -23
  685. package/dist/chunk-KYQZM5FB.js +0 -1830
  686. package/dist/chunk-LAAJ3V67.js +0 -159
  687. package/dist/chunk-LCMGWIEQ.js +0 -296
  688. package/dist/chunk-MNCMAJKB.js +0 -337
  689. package/dist/chunk-N3DLCXMB.js +0 -98
  690. package/dist/chunk-NKU7RLAI.js +0 -169
  691. package/dist/chunk-NWAFH7K3.js +0 -98
  692. package/dist/chunk-NYVO4TND.js +0 -26
  693. package/dist/chunk-O5MNUL7C.js +0 -509
  694. package/dist/chunk-O5RBFETA.js +0 -665
  695. package/dist/chunk-ODMKCAAQ.js +0 -111
  696. package/dist/chunk-OIS3WG2U.js +0 -65
  697. package/dist/chunk-OL4RPZ64.js +0 -96
  698. package/dist/chunk-OP2OMNVN.js +0 -106
  699. package/dist/chunk-P5V7NXMY.js +0 -25
  700. package/dist/chunk-Q3PB5ZUT.js +0 -172
  701. package/dist/chunk-QT7FKFNS.js +0 -60
  702. package/dist/chunk-R5VW2ACF.js +0 -494
  703. package/dist/chunk-RGE7STV4.js +0 -3153
  704. package/dist/chunk-RIXGQIMZ.js +0 -84
  705. package/dist/chunk-RWEVT5SO.js +0 -133
  706. package/dist/chunk-S3TSJQOJ.js +0 -96
  707. package/dist/chunk-SMVHUBXE.js +0 -66
  708. package/dist/chunk-SZX5LUHK.js +0 -94
  709. package/dist/chunk-TG63NMMW.js +0 -58
  710. package/dist/chunk-TOYLG3ZY.js +0 -214
  711. package/dist/chunk-TZKJNSZH.js +0 -55
  712. package/dist/chunk-U57KAPAJ.js +0 -74
  713. package/dist/chunk-VAOMHPEX.js +0 -936
  714. package/dist/chunk-VAOMHPEX.js.map +0 -1
  715. package/dist/chunk-VFME5MT5.js +0 -297
  716. package/dist/chunk-WCHPZD64.js +0 -5189
  717. package/dist/chunk-WHOS7L4N.js +0 -19
  718. package/dist/chunk-WOB3ESBQ.js +0 -67
  719. package/dist/chunk-XM75RTFZ.js +0 -1599
  720. package/dist/chunk-XUGTYYXY.js +0 -174
  721. package/dist/chunk-Y4V55WFQ.js +0 -23992
  722. package/dist/chunk-YKSIHGIL.js +0 -454
  723. package/dist/chunk-YOLNNZ77.js +0 -382
  724. package/dist/chunk-ZW6EMA2U.js +0 -139
  725. package/dist/chunk-ZZFYDAJQ.js +0 -981
  726. package/dist/chunk-ZZFYDAJQ.js.map +0 -1
  727. package/dist/claim-B6LWKULS.js +0 -197
  728. package/dist/claim-B6LWKULS.js.map +0 -1
  729. package/dist/client-DUZXHJAT.js +0 -19
  730. package/dist/code-BQCH5ARZ.js +0 -76
  731. package/dist/companies-BC6TCRXY.js +0 -195
  732. package/dist/companies-BC6TCRXY.js.map +0 -1
  733. package/dist/complete-Y7ZAKY62.js +0 -81
  734. package/dist/complete-Y7ZAKY62.js.map +0 -1
  735. package/dist/config-2NKM5GSZ.js +0 -88
  736. package/dist/connect-4WXSJAIK.js +0 -42
  737. package/dist/content-MJ3W6FKW.js +0 -85
  738. package/dist/conversation-SEVRAH5J.js +0 -93
  739. package/dist/conversation-SEVRAH5J.js.map +0 -1
  740. package/dist/conversion-report-KLP2PJKJ.js +0 -125
  741. package/dist/conversion-upload-command-KB6ME34E.js +0 -438
  742. package/dist/conversion-writes-LO24U7NW.js +0 -120
  743. package/dist/conversions-OC2UHXG7.js +0 -135
  744. package/dist/conversions-OC2UHXG7.js.map +0 -1
  745. package/dist/conversions-QBWE4C5T.js +0 -76
  746. package/dist/countries-F67IA6DF.js +0 -82
  747. package/dist/create-BPHBGMFM.js +0 -59
  748. package/dist/create-BPHBGMFM.js.map +0 -1
  749. package/dist/create-IGZH5OFP.js +0 -235
  750. package/dist/create-IGZH5OFP.js.map +0 -1
  751. package/dist/create-NLNOXZ2T.js +0 -130
  752. package/dist/create-NLNOXZ2T.js.map +0 -1
  753. package/dist/create-YX3YN4SU.js +0 -207
  754. package/dist/create-YX3YN4SU.js.map +0 -1
  755. package/dist/creatives-4N6RRVBP.js +0 -87
  756. package/dist/creatives-ESTFGCVQ.js +0 -182
  757. package/dist/creatives-ESTFGCVQ.js.map +0 -1
  758. package/dist/creatives-ZDWQ7AP3.js +0 -51
  759. package/dist/credentials-GA4ZW4QL.js +0 -287
  760. package/dist/credentials-GA4ZW4QL.js.map +0 -1
  761. package/dist/critique-IJG6WBDW.js +0 -1449
  762. package/dist/critique-IJG6WBDW.js.map +0 -1
  763. package/dist/critique-SYBZXBHJ.js +0 -213
  764. package/dist/critique-SYBZXBHJ.js.map +0 -1
  765. package/dist/crm-2P7WHZBW.js +0 -224
  766. package/dist/crm-2P7WHZBW.js.map +0 -1
  767. package/dist/crm-SVDB2XHW.js +0 -318
  768. package/dist/crm-SVDB2XHW.js.map +0 -1
  769. package/dist/crop-ZAYOFRSS.js +0 -113
  770. package/dist/currency-UWW5QJGL.js +0 -88
  771. package/dist/custom-conversions-2BG2VUOY.js +0 -125
  772. package/dist/customers-2LZ3HG3V.js +0 -56
  773. package/dist/delete-A3JJJHC6.js +0 -63
  774. package/dist/delete-A3JJJHC6.js.map +0 -1
  775. package/dist/delete-ER3LIA3F.js +0 -71
  776. package/dist/delete-HVCQQSG4.js +0 -71
  777. package/dist/delete-QPPPLHS4.js +0 -54
  778. package/dist/delete-QPPPLHS4.js.map +0 -1
  779. package/dist/delete-T22GD7FG.js +0 -69
  780. package/dist/delete-VZUF57KL.js +0 -66
  781. package/dist/delete-VZUF57KL.js.map +0 -1
  782. package/dist/demographics-3KAK7JGZ.js +0 -138
  783. package/dist/demographics-3KAK7JGZ.js.map +0 -1
  784. package/dist/describe-ADQWM55K.js +0 -97
  785. package/dist/describe-XEGTSEUI.js +0 -97
  786. package/dist/dimensions-WQZBBY7I.js +0 -101
  787. package/dist/discard-VU72HO4B.js +0 -66
  788. package/dist/discard-VU72HO4B.js.map +0 -1
  789. package/dist/discover-HXKIQWH2.js +0 -172
  790. package/dist/domain-ERWROFZC.js +0 -98
  791. package/dist/domain-ERWROFZC.js.map +0 -1
  792. package/dist/download-7Z3BWAHR.js +0 -299
  793. package/dist/draft-3V3HOB5N.js +0 -217
  794. package/dist/draft-3V3HOB5N.js.map +0 -1
  795. package/dist/draft-4TCT6UQD.js +0 -103
  796. package/dist/draft-5YJY6YT5.js +0 -328
  797. package/dist/draft-5YJY6YT5.js.map +0 -1
  798. package/dist/draft-7LIGULA2.js +0 -100
  799. package/dist/draft-C2DDLJH2.js +0 -307
  800. package/dist/draft-FCCYMFKW.js +0 -281
  801. package/dist/draft-FELTG6LD.js +0 -306
  802. package/dist/draft-FELTG6LD.js.map +0 -1
  803. package/dist/draft-JIFFSL5U.js +0 -233
  804. package/dist/env-IUF4DTG2.js +0 -43
  805. package/dist/experiment-T3H6LFLK.js +0 -1397
  806. package/dist/export-V7WQJD4L.js +0 -168
  807. package/dist/extract-WW7WLLRB.js +0 -113
  808. package/dist/facets-J4JLHESD.js +0 -114
  809. package/dist/facets-J4JLHESD.js.map +0 -1
  810. package/dist/favorites-XLCT5S6E.js +0 -178
  811. package/dist/feed-PG6AXUYA.js +0 -179
  812. package/dist/feedback-J6FSCCWF.js +0 -66
  813. package/dist/feedback-record-4AY3MG2E.js +0 -175
  814. package/dist/feedback-record-4AY3MG2E.js.map +0 -1
  815. package/dist/fetch-C4JYRA53.js +0 -139
  816. package/dist/fetch-QIHGIATQ.js +0 -176
  817. package/dist/fetch-QIHGIATQ.js.map +0 -1
  818. package/dist/find-SLZO4FBR.js +0 -134
  819. package/dist/fit-SSR3JDDI.js +0 -45
  820. package/dist/flows-IRFHGBUR.js +0 -247
  821. package/dist/flows-IRFHGBUR.js.map +0 -1
  822. package/dist/follow-EKNBOS7Z.js +0 -82
  823. package/dist/follow-EKNBOS7Z.js.map +0 -1
  824. package/dist/follow-competitors-OYQXYSI5.js +0 -131
  825. package/dist/follow-competitors-OYQXYSI5.js.map +0 -1
  826. package/dist/following-M3C3XSHY.js +0 -113
  827. package/dist/fonts-ZU5Q4A6U.js +0 -34
  828. package/dist/forecast-KVPAU7OT.js +0 -104
  829. package/dist/forecast-KVPAU7OT.js.map +0 -1
  830. package/dist/forecast-XGBT722Z.js +0 -168
  831. package/dist/funding-BWSGYQPP.js +0 -85
  832. package/dist/funnel-JXC5WXLR.js +0 -394
  833. package/dist/funnel-JXC5WXLR.js.map +0 -1
  834. package/dist/ga4-XWK5H7HN.js +0 -55
  835. package/dist/generate-E6YDVJ23.js +0 -262
  836. package/dist/get-23E7ZEKP.js +0 -56
  837. package/dist/get-23E7ZEKP.js.map +0 -1
  838. package/dist/get-HXJSMHDC.js +0 -61
  839. package/dist/get-IWYF6PA4.js +0 -78
  840. package/dist/get-IWYF6PA4.js.map +0 -1
  841. package/dist/get-JGCMBA7Y.js +0 -63
  842. package/dist/get-QLFMRSLN.js +0 -59
  843. package/dist/get-XWIA6BEO.js +0 -63
  844. package/dist/get-ZLSZTGXA.js +0 -92
  845. package/dist/gif-KHF452GC.js +0 -94
  846. package/dist/google-5GESCEKC.js +0 -136
  847. package/dist/google-KTDHD75U.js +0 -3190
  848. package/dist/google-ads-VW5UGOGO.js +0 -195
  849. package/dist/google-ads-VW5UGOGO.js.map +0 -1
  850. package/dist/group-JYNKEOPG.js +0 -43
  851. package/dist/group-ZMCHUQMI.js +0 -43
  852. package/dist/gsc-I6RIFE7I.js +0 -30
  853. package/dist/history-F3N6M4JM.js +0 -67
  854. package/dist/history-IAKV2LJN.js +0 -133
  855. package/dist/history-IAKV2LJN.js.map +0 -1
  856. package/dist/hubspot-QVDLE3BF.js +0 -779
  857. package/dist/hubspot-QVDLE3BF.js.map +0 -1
  858. package/dist/icon-4C2JOBPE.js +0 -137
  859. package/dist/ideas-7COQX7C3.js +0 -32
  860. package/dist/images-5XNXXZLM.js +0 -90
  861. package/dist/improve-6VC6ORAG.js +0 -86
  862. package/dist/ingest-L6MMXL6R.js +0 -23
  863. package/dist/ingest-UP42M3WU.js +0 -107
  864. package/dist/ingest-UP42M3WU.js.map +0 -1
  865. package/dist/insights-3H736QZH.js +0 -122
  866. package/dist/insights-3TEVP4B2.js +0 -423
  867. package/dist/inspect-2WOLOPTV.js +0 -189
  868. package/dist/inspect-2WOLOPTV.js.map +0 -1
  869. package/dist/inspiration-I2XMXXEW.js +0 -53
  870. package/dist/intent-IYUKLNST.js +0 -95
  871. package/dist/job-MTHK2PPN.js +0 -202
  872. package/dist/job-create-AD3L6A6F.js +0 -109
  873. package/dist/job-status-MCFOA5V3.js +0 -74
  874. package/dist/keep-NNATO2B6.js +0 -78
  875. package/dist/keyword-gap-RSITTJ56.js +0 -130
  876. package/dist/keyword-metrics-E5D2ESIH.js +0 -197
  877. package/dist/keyword-metrics-E5D2ESIH.js.map +0 -1
  878. package/dist/keywords-for-site-SRUKRBCR.js +0 -128
  879. package/dist/keywords-for-site-SRUKRBCR.js.map +0 -1
  880. package/dist/landing-ZFZ4LYCB.js +0 -28
  881. package/dist/landings-JJELYF4P.js +0 -143
  882. package/dist/landings-JJELYF4P.js.map +0 -1
  883. package/dist/languages-3FETIHSB.js +0 -55
  884. package/dist/languages-SJ6ZWALA.js +0 -40
  885. package/dist/launches-ZZ7ST4SY.js +0 -108
  886. package/dist/layerize-NSF6NEWY.js +0 -190
  887. package/dist/leads-EVFLPNG6.js +0 -293
  888. package/dist/leads-P46ND2LT.js +0 -90
  889. package/dist/leads-P46ND2LT.js.map +0 -1
  890. package/dist/learn-EJSMXKSE.js +0 -203
  891. package/dist/learn-EJSMXKSE.js.map +0 -1
  892. package/dist/library-UKGHGGOG.js +0 -109
  893. package/dist/lighthouse-B2IBNWLX.js +0 -75
  894. package/dist/line-item-writes-EM6I5KIH.js +0 -208
  895. package/dist/line-item-writes-EM6I5KIH.js.map +0 -1
  896. package/dist/line-items-GLNMIKM5.js +0 -103
  897. package/dist/link-CZ4XFU2D.js +0 -64
  898. package/dist/link-CZ4XFU2D.js.map +0 -1
  899. package/dist/linkedin-ES3KPPHF.js +0 -1008
  900. package/dist/linkedin-ES3KPPHF.js.map +0 -1
  901. package/dist/list-3IJMAQHX.js +0 -51
  902. package/dist/list-B7GN44R3.js +0 -63
  903. package/dist/list-B7GN44R3.js.map +0 -1
  904. package/dist/list-BDPUPCQZ.js +0 -57
  905. package/dist/list-HGQY4OHN.js +0 -151
  906. package/dist/list-HGQY4OHN.js.map +0 -1
  907. package/dist/list-JD7EIBPU.js +0 -303
  908. package/dist/list-JD7EIBPU.js.map +0 -1
  909. package/dist/list-NZZ75O6C.js +0 -65
  910. package/dist/list-XBYKFXS3.js +0 -76
  911. package/dist/list-XRON5I6M.js +0 -50
  912. package/dist/locations-M2665NGJ.js +0 -40
  913. package/dist/locations-TKPILKLO.js +0 -67
  914. package/dist/log-KUHIZL53.js +0 -92
  915. package/dist/log-KUHIZL53.js.map +0 -1
  916. package/dist/logo-EVE3TAL5.js +0 -18
  917. package/dist/lookup-Z5TFHYDU.js +0 -22
  918. package/dist/make-ISUBJILH.js +0 -634
  919. package/dist/make-ISUBJILH.js.map +0 -1
  920. package/dist/map-NNMEQE6E.js +0 -404
  921. package/dist/map-NNMEQE6E.js.map +0 -1
  922. package/dist/mcp-AJDXG3NV.js +0 -463
  923. package/dist/mcp-AJDXG3NV.js.map +0 -1
  924. package/dist/media-DGNFOT7M.js +0 -89
  925. package/dist/media-FRNTELKI.js +0 -15
  926. package/dist/media-sources-V452RJ6B.js +0 -32
  927. package/dist/members-VUJ62KJQ.js +0 -44
  928. package/dist/members-VUJ62KJQ.js.map +0 -1
  929. package/dist/meta-NGBLUNVU.js +0 -69
  930. package/dist/metrics-QRRK473C.js +0 -152
  931. package/dist/models-4BTFIZZZ.js +0 -155
  932. package/dist/normalize-O47OIEUO.js +0 -806
  933. package/dist/normalize-OTNIBYUO.js +0 -141
  934. package/dist/normalize-OTNIBYUO.js.map +0 -1
  935. package/dist/options-FTXE6HFT.js +0 -121
  936. package/dist/options-FTXE6HFT.js.map +0 -1
  937. package/dist/output-W473ZLGR.js +0 -24
  938. package/dist/page-7TEJ5NA5.js +0 -105
  939. package/dist/pages-S2E3FHDH.js +0 -66
  940. package/dist/performance-IMD2N7OD.js +0 -24
  941. package/dist/pinterest-DQC3JXQT.js +0 -96
  942. package/dist/pixels-M5GS7DIH.js +0 -60
  943. package/dist/pixels-MHH4N35F.js +0 -108
  944. package/dist/plan-GGLBOLIU.js +0 -207
  945. package/dist/preview-AHDEJO2X.js +0 -169
  946. package/dist/profile-2TPKFD4Y.js +0 -131
  947. package/dist/promoted-tweet-writes-XUM4WGZH.js +0 -180
  948. package/dist/promoted-tweet-writes-XUM4WGZH.js.map +0 -1
  949. package/dist/promoted-tweets-TIHMJ5PU.js +0 -119
  950. package/dist/properties-KOY2GE45.js +0 -101
  951. package/dist/publish-Q7MHUVVZ.js +0 -322
  952. package/dist/publish-Q7MHUVVZ.js.map +0 -1
  953. package/dist/query-EO7BX4MH.js +0 -236
  954. package/dist/query-QZWMKAJZ.js +0 -247
  955. package/dist/query-XLTRAAQO.js +0 -61
  956. package/dist/questionnaire-BL3G6UYL.js +0 -93
  957. package/dist/read-ZMNYD3PA.js +0 -141
  958. package/dist/reddit-RO3VKMJ7.js +0 -26
  959. package/dist/refresh-OER4JT3Q.js +0 -94
  960. package/dist/refresh-OER4JT3Q.js.map +0 -1
  961. package/dist/release-4DLGFSYY.js +0 -60
  962. package/dist/release-4DLGFSYY.js.map +0 -1
  963. package/dist/relevant-pages-ZGGWFDLL.js +0 -99
  964. package/dist/remove-MQ3JY36P.js +0 -48
  965. package/dist/remove-WENY6GQU.js +0 -50
  966. package/dist/remove-WENY6GQU.js.map +0 -1
  967. package/dist/reopen-VSVK5EZI.js +0 -63
  968. package/dist/reopen-VSVK5EZI.js.map +0 -1
  969. package/dist/rerun-B32CIKVH.js +0 -85
  970. package/dist/rerun-B32CIKVH.js.map +0 -1
  971. package/dist/research-2XAQRMC3.js +0 -62
  972. package/dist/research-ZEIW667A.js +0 -262
  973. package/dist/research-ZEIW667A.js.map +0 -1
  974. package/dist/reset-DXBESBL7.js +0 -54
  975. package/dist/reset-DXBESBL7.js.map +0 -1
  976. package/dist/reset-G4A52FMR.js +0 -54
  977. package/dist/reset-G4A52FMR.js.map +0 -1
  978. package/dist/resolve-FA6CFVX4.js +0 -121
  979. package/dist/resolve-FA6CFVX4.js.map +0 -1
  980. package/dist/retry-CXTOGFZT.js +0 -60
  981. package/dist/retry-CXTOGFZT.js.map +0 -1
  982. package/dist/retry-THMD27CA.js +0 -62
  983. package/dist/retry-THMD27CA.js.map +0 -1
  984. package/dist/retry-failed-3R35LZ6I.js +0 -45
  985. package/dist/run-HRSNUGWJ.js +0 -60
  986. package/dist/run-NYJUDS32.js +0 -65
  987. package/dist/run-NYJUDS32.js.map +0 -1
  988. package/dist/scaffold-ad-RUJQIYQH.js +0 -1549
  989. package/dist/scaffold-ad-RUJQIYQH.js.map +0 -1
  990. package/dist/scaffold-static-ad-36KRZNWU.js +0 -973
  991. package/dist/scaffold-static-ad-36KRZNWU.js.map +0 -1
  992. package/dist/scaffold-video-RYVG4IFA.js +0 -873
  993. package/dist/scaffold-video-RYVG4IFA.js.map +0 -1
  994. package/dist/schedule-ENH4N66R.js +0 -61
  995. package/dist/schedule-ENH4N66R.js.map +0 -1
  996. package/dist/schedule-KSIMVG5U.js +0 -66
  997. package/dist/scheduled-agents-RM24BRGD.js +0 -49
  998. package/dist/schema-JJVSWKGP.js +0 -132
  999. package/dist/schema-JJVSWKGP.js.map +0 -1
  1000. package/dist/schema-MT76C7XK.js +0 -63
  1001. package/dist/scrape-ICS5UA62.js +0 -2241
  1002. package/dist/screenshot-YPUFPY5W.js +0 -102
  1003. package/dist/search-6BHODVNN.js +0 -27
  1004. package/dist/search-HOQZ3XIK.js +0 -92
  1005. package/dist/search-KFP4GPMJ.js +0 -174
  1006. package/dist/search-KFP4GPMJ.js.map +0 -1
  1007. package/dist/search-TCDI77HS.js +0 -91
  1008. package/dist/search-W7E5S347.js +0 -224
  1009. package/dist/search-copy-LXBPFQC3.js +0 -115
  1010. package/dist/seeds-Q6VS27LT.js +0 -101
  1011. package/dist/select-CB5BBKHR.js +0 -94
  1012. package/dist/select-CB5BBKHR.js.map +0 -1
  1013. package/dist/sends-HDTG7XRL.js +0 -309
  1014. package/dist/sequences-SISO5JGS.js +0 -146
  1015. package/dist/set-prompt-IS7JSFYY.js +0 -186
  1016. package/dist/set-prompt-IS7JSFYY.js.map +0 -1
  1017. package/dist/setup-links-NBO7B64S.js +0 -141
  1018. package/dist/setup-links-NBO7B64S.js.map +0 -1
  1019. package/dist/shared-MJEF5Z6R.js +0 -31
  1020. package/dist/site-5MPVICS2.js +0 -177
  1021. package/dist/site-5MPVICS2.js.map +0 -1
  1022. package/dist/sitemaps-G3YCZDEM.js +0 -87
  1023. package/dist/sites-YH2ZIMCP.js +0 -101
  1024. package/dist/skills-SQTM676S.js +0 -47
  1025. package/dist/sources-FSYJ2EQL.js +0 -421
  1026. package/dist/sources-FSYJ2EQL.js.map +0 -1
  1027. package/dist/sources-OES5YJY6.js +0 -30
  1028. package/dist/stale-YT3CGHAI.js +0 -63
  1029. package/dist/stale-YT3CGHAI.js.map +0 -1
  1030. package/dist/stats-IDL2KWGM.js +0 -34
  1031. package/dist/status-ZDKRO7TH.js +0 -62
  1032. package/dist/status-ZDKRO7TH.js.map +0 -1
  1033. package/dist/sticker-2R5LODHJ.js +0 -94
  1034. package/dist/stock-5DWDTNFB.js +0 -179
  1035. package/dist/studio-PPFFAUWO.js +0 -49
  1036. package/dist/sync-7DWOHCVF.js +0 -265
  1037. package/dist/sync-JRRGJWFH.js +0 -54
  1038. package/dist/sync-RNKJFPDI.js +0 -54
  1039. package/dist/sync-RNKJFPDI.js.map +0 -1
  1040. package/dist/sync-definition-SDJM567M.js +0 -53
  1041. package/dist/tag-manager-MBS6YCZM.js +0 -43
  1042. package/dist/tags-5EVJ73IX.js +0 -26
  1043. package/dist/tags-5THBYIHN.js +0 -20
  1044. package/dist/tags-5THBYIHN.js.map +0 -1
  1045. package/dist/tags-D74DMYCW.js +0 -20
  1046. package/dist/tags-D74DMYCW.js.map +0 -1
  1047. package/dist/tags-KFDRX4H7.js +0 -20
  1048. package/dist/tags-KFDRX4H7.js.map +0 -1
  1049. package/dist/tags-YEWHOSC5.js +0 -224
  1050. package/dist/tags-YEWHOSC5.js.map +0 -1
  1051. package/dist/targeting-constants-KIMGCL2N.js +0 -118
  1052. package/dist/targeting-criteria-5BN4EELG.js +0 -113
  1053. package/dist/targets-DBQNYE34.js +0 -102
  1054. package/dist/targets-DBQNYE34.js.map +0 -1
  1055. package/dist/templates-J2NZIOY2.js +0 -178
  1056. package/dist/templates-J2NZIOY2.js.map +0 -1
  1057. package/dist/testimonials-2IJE6K2L.js +0 -32
  1058. package/dist/themes-6BRONMJ2.js +0 -94
  1059. package/dist/top-companies-TAA7HKTA.js +0 -108
  1060. package/dist/top-companies-TAA7HKTA.js.map +0 -1
  1061. package/dist/translate-ZVQQJJQT.js +0 -598
  1062. package/dist/translate-ZVQQJJQT.js.map +0 -1
  1063. package/dist/triggers-2VPLSNP7.js +0 -141
  1064. package/dist/triggers-2VPLSNP7.js.map +0 -1
  1065. package/dist/tweets-YEMIGLP7.js +0 -123
  1066. package/dist/unfollow-S6XQVQIA.js +0 -46
  1067. package/dist/unlink-DDTHG25I.js +0 -67
  1068. package/dist/unlink-DDTHG25I.js.map +0 -1
  1069. package/dist/unstage-ABSCDW43.js +0 -84
  1070. package/dist/unstage-ABSCDW43.js.map +0 -1
  1071. package/dist/unstage-VDLTHNHY.js +0 -95
  1072. package/dist/update-C2QWKWXB.js +0 -98
  1073. package/dist/update-C2QWKWXB.js.map +0 -1
  1074. package/dist/update-COMDOEYG.js +0 -142
  1075. package/dist/update-COMDOEYG.js.map +0 -1
  1076. package/dist/update-FMROPHXQ.js +0 -155
  1077. package/dist/update-FMROPHXQ.js.map +0 -1
  1078. package/dist/update-SY54UP5O.js +0 -63
  1079. package/dist/update-SY54UP5O.js.map +0 -1
  1080. package/dist/upload-7QBWAQLM.js +0 -126
  1081. package/dist/upload-7QBWAQLM.js.map +0 -1
  1082. package/dist/upload-PTXQ7IEE.js +0 -150
  1083. package/dist/upscale-YQ2KZRCI.js +0 -109
  1084. package/dist/url-options-QRGN4Q34.js +0 -130
  1085. package/dist/url-params-ZBOCO4CG.js +0 -98
  1086. package/dist/url-params-ZBOCO4CG.js.map +0 -1
  1087. package/dist/use-BFD6WCDB.js +0 -95
  1088. package/dist/validate-M7B2SBDH.js +0 -89
  1089. package/dist/validate-M7B2SBDH.js.map +0 -1
  1090. package/dist/variant-U77I2UDY.js +0 -338
  1091. package/dist/videos-2EPKRCW6.js +0 -39
  1092. package/dist/view-BDLUTKMK.js +0 -121
  1093. package/dist/viewer-check-YF6ENNNL.js +0 -69
  1094. package/dist/web-JRDXE2GL.js +0 -140
  1095. package/dist/web-JRDXE2GL.js.map +0 -1
  1096. package/dist/winners-AWRCSFAC.js +0 -113
  1097. package/dist/winning-ads-QQ6Y5R7T.js +0 -79
  1098. package/dist/write-commands-3UXPJJ75.js +0 -1015
  1099. package/dist/write-commands-3UXPJJ75.js.map +0 -1
  1100. package/dist/write-commands-HZI5YF52.js +0 -737
  1101. package/dist/write-commands-MYA273DT.js +0 -206
  1102. package/dist/write-commands-OQPBPQ77.js +0 -713
  1103. package/dist/x-WA3Q46K6.js +0 -47
  1104. /package/dist/{account-VGIKDAK3.js.map → account-IRGRKYJY.js.map} +0 -0
  1105. /package/dist/{account-F2D257QB.js.map → account-Y355AWQZ.js.map} +0 -0
  1106. /package/dist/{account-reads-OS6RLJFJ.js.map → account-reads-76UWMB3T.js.map} +0 -0
  1107. /package/dist/{account-writes-7HZJWI5U.js.map → account-writes-G6B3D75J.js.map} +0 -0
  1108. /package/dist/{accounts-4IIILFLV.js.map → accounts-6BSNUSL2.js.map} +0 -0
  1109. /package/dist/{accounts-X5MPAWZX.js.map → accounts-W3O34NIB.js.map} +0 -0
  1110. /package/dist/{accounts-25JDCWKR.js.map → accounts-ZCKOPY4V.js.map} +0 -0
  1111. /package/dist/{actions-CLFWCFFA.js.map → actions-SPJ7K3WP.js.map} +0 -0
  1112. /package/dist/{active-entities-V2K2S3UY.js.map → active-entities-OF34PSKJ.js.map} +0 -0
  1113. /package/dist/{activities-CUVZGTGA.js.map → activities-C5WK3MXQ.js.map} +0 -0
  1114. /package/dist/{ad-group-writes-GG3BUQQY.js.map → ad-group-writes-NOJXE2SD.js.map} +0 -0
  1115. /package/dist/{ad-groups-KRZ6YX7O.js.map → ad-groups-YJQFLYXT.js.map} +0 -0
  1116. /package/dist/{ad-writes-YDMS7NPG.js.map → ad-writes-NZITPMNK.js.map} +0 -0
  1117. /package/dist/{add-LHAZ34ZF.js.map → add-37RLQWXR.js.map} +0 -0
  1118. /package/dist/{add-BHLEFGCG.js.map → add-BXTSVYMJ.js.map} +0 -0
  1119. /package/dist/{ads-5SGFPSQL.js.map → ads-4FVN7UTX.js.map} +0 -0
  1120. /package/dist/{ads-CP4VTPKO.js.map → ads-FZSPK3L7.js.map} +0 -0
  1121. /package/dist/{ads-Q54IPFAS.js.map → ads-YYVMBTMC.js.map} +0 -0
  1122. /package/dist/{adsets-4RXF4YXR.js.map → adsets-I35MU53T.js.map} +0 -0
  1123. /package/dist/{advertisers-JDUAIACQ.js.map → advertisers-6C3JWMFN.js.map} +0 -0
  1124. /package/dist/{animate-PYYWDHQ2.js.map → animate-BZZ4PRNK.js.map} +0 -0
  1125. /package/dist/{audiences-B2ZSJSOJ.js.map → audiences-57Z5DJ3C.js.map} +0 -0
  1126. /package/dist/{audiences-S6IHCG3G.js.map → audiences-ALMKJXOE.js.map} +0 -0
  1127. /package/dist/{audiences-6QF625VZ.js.map → audiences-QEFTSR3A.js.map} +0 -0
  1128. /package/dist/{audit-IJUKCS2K.js.map → audit-4ODYNTLU.js.map} +0 -0
  1129. /package/dist/{avatars-O64BDZHC.js.map → avatars-D7RH6FQK.js.map} +0 -0
  1130. /package/dist/{brand-W55FHWU6.js.map → brand-GON2DGDG.js.map} +0 -0
  1131. /package/dist/{businesses-ZFP263RY.js.map → businesses-U7V7D5O4.js.map} +0 -0
  1132. /package/dist/{campaign-writes-APYVRCNH.js.map → campaign-writes-2URYK37Q.js.map} +0 -0
  1133. /package/dist/{campaigns-YPI4KS7U.js.map → campaigns-ENPXM4OI.js.map} +0 -0
  1134. /package/dist/{campaigns-ANQW3YDH.js.map → campaigns-IUPJX5EL.js.map} +0 -0
  1135. /package/dist/{campaigns-UN3XB6TJ.js.map → campaigns-V66PVG7T.js.map} +0 -0
  1136. /package/dist/{canvas-GPXU2ZSC.js.map → canvas-BJQ556BB.js.map} +0 -0
  1137. /package/dist/{cards-QRX43TGI.js.map → cards-5TOCOH5L.js.map} +0 -0
  1138. /package/dist/{catalog-CRIYIXOJ.js.map → catalog-7GPT7ZNH.js.map} +0 -0
  1139. /package/dist/{catalogs-D677AN33.js.map → catalogs-I6PRBCEX.js.map} +0 -0
  1140. /package/dist/{changes-PWBOKKNL.js.map → changes-KSTSKL7T.js.map} +0 -0
  1141. /package/dist/{chatgpt-RYL44ASK.js.map → chatgpt-Y3UXQIRV.js.map} +0 -0
  1142. /package/dist/{chunk-N3DLCXMB.js.map → chunk-2J5N24NW.js.map} +0 -0
  1143. /package/dist/{chunk-NKU7RLAI.js.map → chunk-2WXLB66I.js.map} +0 -0
  1144. /package/dist/{chunk-FIBL3EZN.js.map → chunk-2YK5XCY2.js.map} +0 -0
  1145. /package/dist/{chunk-35QYDREI.js.map → chunk-2ZRSQDXR.js.map} +0 -0
  1146. /package/dist/{chunk-IFZD2MDE.js.map → chunk-3GO6OOUD.js.map} +0 -0
  1147. /package/dist/{chunk-5URIFBIL.js.map → chunk-3L4P5X7N.js.map} +0 -0
  1148. /package/dist/{chunk-YKSIHGIL.js.map → chunk-3XA4JVMY.js.map} +0 -0
  1149. /package/dist/{chunk-6R7CMUIZ.js.map → chunk-44RWJ33Z.js.map} +0 -0
  1150. /package/dist/{chunk-6HLPM7U3.js.map → chunk-4AK4BUJR.js.map} +0 -0
  1151. /package/dist/{chunk-6XPBHM5P.js.map → chunk-4EKRZKPX.js.map} +0 -0
  1152. /package/dist/{chunk-C2DAPBYB.js.map → chunk-4RARCMPM.js.map} +0 -0
  1153. /package/dist/{chunk-AGEJ7IJG.js.map → chunk-6MUPGGQ3.js.map} +0 -0
  1154. /package/dist/{chunk-U57KAPAJ.js.map → chunk-6NS5HQUZ.js.map} +0 -0
  1155. /package/dist/{chunk-XM75RTFZ.js.map → chunk-7VCD55XF.js.map} +0 -0
  1156. /package/dist/{chunk-2V2M2CHS.js.map → chunk-AINDZHQQ.js.map} +0 -0
  1157. /package/dist/{chunk-IH4NS3NT.js.map → chunk-AUDVLNMT.js.map} +0 -0
  1158. /package/dist/{chunk-KYQZM5FB.js.map → chunk-B7GQ4YUK.js.map} +0 -0
  1159. /package/dist/{chunk-DE64GHEP.js.map → chunk-BABISVOU.js.map} +0 -0
  1160. /package/dist/{chunk-LAAJ3V67.js.map → chunk-BBJWIA7F.js.map} +0 -0
  1161. /package/dist/{chunk-E4ICSNSW.js.map → chunk-CE6IE364.js.map} +0 -0
  1162. /package/dist/{chunk-ITYFVNLA.js.map → chunk-CL2X6KB5.js.map} +0 -0
  1163. /package/dist/{chunk-ICFITD5H.js.map → chunk-CUJ2F472.js.map} +0 -0
  1164. /package/dist/{chunk-K63BDJYR.js.map → chunk-DMXNT47S.js.map} +0 -0
  1165. /package/dist/{chunk-R5VW2ACF.js.map → chunk-DQZEJV3K.js.map} +0 -0
  1166. /package/dist/{chunk-ZW6EMA2U.js.map → chunk-E5EJRF7J.js.map} +0 -0
  1167. /package/dist/{chunk-P5V7NXMY.js.map → chunk-EHXZDWAE.js.map} +0 -0
  1168. /package/dist/{chunk-TG63NMMW.js.map → chunk-EPQXF3JZ.js.map} +0 -0
  1169. /package/dist/{chunk-ODMKCAAQ.js.map → chunk-FH23H72G.js.map} +0 -0
  1170. /package/dist/{chunk-IDEFDDTX.js.map → chunk-FZT2UQF2.js.map} +0 -0
  1171. /package/dist/{chunk-5IQL24NI.js.map → chunk-GM4EDUTF.js.map} +0 -0
  1172. /package/dist/{chunk-O5MNUL7C.js.map → chunk-HSAPEQBP.js.map} +0 -0
  1173. /package/dist/{chunk-APY53DKV.js.map → chunk-I2HHXYRN.js.map} +0 -0
  1174. /package/dist/{chunk-EIAA3XTT.js.map → chunk-IDORRX5W.js.map} +0 -0
  1175. /package/dist/{chunk-3FOE4P6A.js.map → chunk-IFT6ID4T.js.map} +0 -0
  1176. /package/dist/{chunk-HMKVVPWY.js.map → chunk-IK56IWZC.js.map} +0 -0
  1177. /package/dist/{chunk-WCHPZD64.js.map → chunk-IRUUPYCH.js.map} +0 -0
  1178. /package/dist/{chunk-KNX2UBLI.js.map → chunk-ITWB62LG.js.map} +0 -0
  1179. /package/dist/{chunk-IX6PPPOS.js.map → chunk-IUPS2OYL.js.map} +0 -0
  1180. /package/dist/{chunk-O5RBFETA.js.map → chunk-J2UCNSRR.js.map} +0 -0
  1181. /package/dist/{chunk-3KN3VCS3.js.map → chunk-JBDX74X5.js.map} +0 -0
  1182. /package/dist/{chunk-WHOS7L4N.js.map → chunk-JE2MELTY.js.map} +0 -0
  1183. /package/dist/{chunk-VFME5MT5.js.map → chunk-KDW5DT5B.js.map} +0 -0
  1184. /package/dist/{chunk-3JX4NUGF.js.map → chunk-L4TPZLDW.js.map} +0 -0
  1185. /package/dist/{chunk-Q3PB5ZUT.js.map → chunk-LFNVHAF3.js.map} +0 -0
  1186. /package/dist/{chunk-6C4S466W.js.map → chunk-LLEF2Q66.js.map} +0 -0
  1187. /package/dist/{chunk-MNCMAJKB.js.map → chunk-LXBRJNIB.js.map} +0 -0
  1188. /package/dist/{chunk-BJ4SHBS2.js.map → chunk-M2746TPS.js.map} +0 -0
  1189. /package/dist/{chunk-NWAFH7K3.js.map → chunk-M6VLLYN2.js.map} +0 -0
  1190. /package/dist/{chunk-JTSYEIHY.js.map → chunk-MD3B6MTI.js.map} +0 -0
  1191. /package/dist/{chunk-KPHBHRJY.js.map → chunk-ME76DRT3.js.map} +0 -0
  1192. /package/dist/{chunk-S3TSJQOJ.js.map → chunk-MQEA2YZZ.js.map} +0 -0
  1193. /package/dist/{chunk-YOLNNZ77.js.map → chunk-MQW4DEQD.js.map} +0 -0
  1194. /package/dist/{chunk-QT7FKFNS.js.map → chunk-MWOIESOS.js.map} +0 -0
  1195. /package/dist/{chunk-D2JOBGBD.js.map → chunk-NQGRCWKN.js.map} +0 -0
  1196. /package/dist/{chunk-TOYLG3ZY.js.map → chunk-NUHMHZTZ.js.map} +0 -0
  1197. /package/dist/{chunk-G4PE563Y.js.map → chunk-OAYHDIW2.js.map} +0 -0
  1198. /package/dist/{chunk-RIXGQIMZ.js.map → chunk-OB6QMAE3.js.map} +0 -0
  1199. /package/dist/{chunk-5Z6SSOLG.js.map → chunk-P2I4FSVO.js.map} +0 -0
  1200. /package/dist/{chunk-BXKJZBBJ.js.map → chunk-PSRKQJ6Y.js.map} +0 -0
  1201. /package/dist/{chunk-G6UBBPH3.js.map → chunk-QDG5N7JH.js.map} +0 -0
  1202. /package/dist/{chunk-2QLNGCFZ.js.map → chunk-QNEKQWJS.js.map} +0 -0
  1203. /package/dist/{chunk-6ZEFXZRD.js.map → chunk-QZTIAVYI.js.map} +0 -0
  1204. /package/dist/{chunk-XUGTYYXY.js.map → chunk-RGI7YZ6K.js.map} +0 -0
  1205. /package/dist/{chunk-73JXX4LJ.js.map → chunk-S4EYRHCD.js.map} +0 -0
  1206. /package/dist/{chunk-GWFJAVWD.js.map → chunk-SKAB7IBX.js.map} +0 -0
  1207. /package/dist/{chunk-WOB3ESBQ.js.map → chunk-SRAMULKE.js.map} +0 -0
  1208. /package/dist/{chunk-OL4RPZ64.js.map → chunk-SXIPXBL2.js.map} +0 -0
  1209. /package/dist/{chunk-OIS3WG2U.js.map → chunk-T6N4L5L5.js.map} +0 -0
  1210. /package/dist/{chunk-RGE7STV4.js.map → chunk-T7Q4SWW4.js.map} +0 -0
  1211. /package/dist/{chunk-F66W4QQL.js.map → chunk-TD4PVILC.js.map} +0 -0
  1212. /package/dist/{chunk-FNKOQQ2U.js.map → chunk-TII4OUSW.js.map} +0 -0
  1213. /package/dist/{chunk-EMLM2TKM.js.map → chunk-TU7DPHNP.js.map} +0 -0
  1214. /package/dist/{chunk-KWMCE3Q2.js.map → chunk-TUYWBLHR.js.map} +0 -0
  1215. /package/dist/{chunk-EOWMPN3Q.js.map → chunk-UEQ4MZSP.js.map} +0 -0
  1216. /package/dist/{chunk-LCMGWIEQ.js.map → chunk-ULPPKJQH.js.map} +0 -0
  1217. /package/dist/{chunk-HMVVNB23.js.map → chunk-UMVRVX6L.js.map} +0 -0
  1218. /package/dist/{chunk-3BG2BVWN.js.map → chunk-UU6MRBKX.js.map} +0 -0
  1219. /package/dist/{chunk-SZX5LUHK.js.map → chunk-VIZ5NYTI.js.map} +0 -0
  1220. /package/dist/{chunk-FZKC65TR.js.map → chunk-WAGMHPWG.js.map} +0 -0
  1221. /package/dist/{chunk-NYVO4TND.js.map → chunk-WCOZUD56.js.map} +0 -0
  1222. /package/dist/{chunk-TZKJNSZH.js.map → chunk-WLRQPH3F.js.map} +0 -0
  1223. /package/dist/{chunk-54VIXBLO.js.map → chunk-WNP25LQF.js.map} +0 -0
  1224. /package/dist/{chunk-5TOKIRCD.js.map → chunk-WSUZBTE6.js.map} +0 -0
  1225. /package/dist/{chunk-A2PTD6FL.js.map → chunk-WVABBPSH.js.map} +0 -0
  1226. /package/dist/{chunk-OP2OMNVN.js.map → chunk-WZH3D2H7.js.map} +0 -0
  1227. /package/dist/{chunk-FJDTR2IN.js.map → chunk-XF6OUF7E.js.map} +0 -0
  1228. /package/dist/{chunk-Y4V55WFQ.js.map → chunk-XN2OQQXR.js.map} +0 -0
  1229. /package/dist/{chunk-RWEVT5SO.js.map → chunk-XQITDMRD.js.map} +0 -0
  1230. /package/dist/{chunk-SMVHUBXE.js.map → chunk-YZBQ4ACW.js.map} +0 -0
  1231. /package/dist/{chunk-GKUIGEY6.js.map → chunk-ZH7F3M3L.js.map} +0 -0
  1232. /package/dist/{client-DUZXHJAT.js.map → client-7ZMKIPDA.js.map} +0 -0
  1233. /package/dist/{code-BQCH5ARZ.js.map → code-T6ANPNY4.js.map} +0 -0
  1234. /package/dist/{config-2NKM5GSZ.js.map → config-4BUL56PU.js.map} +0 -0
  1235. /package/dist/{connect-4WXSJAIK.js.map → connect-OPAG6B4I.js.map} +0 -0
  1236. /package/dist/{content-MJ3W6FKW.js.map → content-627YHJUP.js.map} +0 -0
  1237. /package/dist/{conversion-report-KLP2PJKJ.js.map → conversion-report-5KFFJ2VU.js.map} +0 -0
  1238. /package/dist/{conversion-upload-command-KB6ME34E.js.map → conversion-upload-command-JU6ZSJBV.js.map} +0 -0
  1239. /package/dist/{conversion-writes-LO24U7NW.js.map → conversion-writes-RSCIEGWD.js.map} +0 -0
  1240. /package/dist/{conversions-QBWE4C5T.js.map → conversions-ZODHC7RT.js.map} +0 -0
  1241. /package/dist/{countries-F67IA6DF.js.map → countries-HKTPBBLQ.js.map} +0 -0
  1242. /package/dist/{creatives-4N6RRVBP.js.map → creatives-KV3N6WGN.js.map} +0 -0
  1243. /package/dist/{creatives-ZDWQ7AP3.js.map → creatives-NFKVUZE6.js.map} +0 -0
  1244. /package/dist/{crop-ZAYOFRSS.js.map → crop-JXBA435D.js.map} +0 -0
  1245. /package/dist/{currency-UWW5QJGL.js.map → currency-G3MQUET6.js.map} +0 -0
  1246. /package/dist/{custom-conversions-2BG2VUOY.js.map → custom-conversions-CKNJONBF.js.map} +0 -0
  1247. /package/dist/{customers-2LZ3HG3V.js.map → customers-54DNP36T.js.map} +0 -0
  1248. /package/dist/{delete-HVCQQSG4.js.map → delete-DRIIOQVD.js.map} +0 -0
  1249. /package/dist/{delete-T22GD7FG.js.map → delete-MJRH3R3P.js.map} +0 -0
  1250. /package/dist/{delete-ER3LIA3F.js.map → delete-ZO2NTIMH.js.map} +0 -0
  1251. /package/dist/{describe-XEGTSEUI.js.map → describe-2UB4CN5S.js.map} +0 -0
  1252. /package/dist/{describe-ADQWM55K.js.map → describe-6744DROL.js.map} +0 -0
  1253. /package/dist/{dimensions-WQZBBY7I.js.map → dimensions-TZLKBZN7.js.map} +0 -0
  1254. /package/dist/{discover-HXKIQWH2.js.map → discover-73K5J5RJ.js.map} +0 -0
  1255. /package/dist/{download-7Z3BWAHR.js.map → download-FSZVKV5I.js.map} +0 -0
  1256. /package/dist/{draft-4TCT6UQD.js.map → draft-NWYVWHR4.js.map} +0 -0
  1257. /package/dist/{draft-C2DDLJH2.js.map → draft-OTEC5VNP.js.map} +0 -0
  1258. /package/dist/{draft-JIFFSL5U.js.map → draft-RVMSQTH6.js.map} +0 -0
  1259. /package/dist/{draft-7LIGULA2.js.map → draft-XPUDO6BL.js.map} +0 -0
  1260. /package/dist/{draft-FCCYMFKW.js.map → draft-YTEETFEN.js.map} +0 -0
  1261. /package/dist/{env-IUF4DTG2.js.map → env-CJCGNARF.js.map} +0 -0
  1262. /package/dist/{experiment-T3H6LFLK.js.map → experiment-CBAGPNF4.js.map} +0 -0
  1263. /package/dist/{export-V7WQJD4L.js.map → export-5TK2LH7S.js.map} +0 -0
  1264. /package/dist/{extract-WW7WLLRB.js.map → extract-OP7YHID2.js.map} +0 -0
  1265. /package/dist/{favorites-XLCT5S6E.js.map → favorites-S4ZT5JII.js.map} +0 -0
  1266. /package/dist/{feed-PG6AXUYA.js.map → feed-5U4RTYLR.js.map} +0 -0
  1267. /package/dist/{feedback-J6FSCCWF.js.map → feedback-FRILY4XF.js.map} +0 -0
  1268. /package/dist/{fetch-C4JYRA53.js.map → fetch-E6SRZGRB.js.map} +0 -0
  1269. /package/dist/{find-SLZO4FBR.js.map → find-KBXUSX2G.js.map} +0 -0
  1270. /package/dist/{fit-SSR3JDDI.js.map → fit-QBG3EXST.js.map} +0 -0
  1271. /package/dist/{following-M3C3XSHY.js.map → following-AH24UDXY.js.map} +0 -0
  1272. /package/dist/{fonts-ZU5Q4A6U.js.map → fonts-5OKN5H2C.js.map} +0 -0
  1273. /package/dist/{forecast-XGBT722Z.js.map → forecast-HDF4PALO.js.map} +0 -0
  1274. /package/dist/{funding-BWSGYQPP.js.map → funding-KGAE3LKV.js.map} +0 -0
  1275. /package/dist/{ga4-XWK5H7HN.js.map → ga4-G5NBFPPT.js.map} +0 -0
  1276. /package/dist/{generate-E6YDVJ23.js.map → generate-HXE2MOAO.js.map} +0 -0
  1277. /package/dist/{get-XWIA6BEO.js.map → get-2Q3FKYH7.js.map} +0 -0
  1278. /package/dist/{get-QLFMRSLN.js.map → get-ALNQPO3F.js.map} +0 -0
  1279. /package/dist/{get-ZLSZTGXA.js.map → get-BLWUJWTJ.js.map} +0 -0
  1280. /package/dist/{get-HXJSMHDC.js.map → get-OT3AANLU.js.map} +0 -0
  1281. /package/dist/{get-JGCMBA7Y.js.map → get-PFFST42A.js.map} +0 -0
  1282. /package/dist/{gif-KHF452GC.js.map → gif-QCH3FJHD.js.map} +0 -0
  1283. /package/dist/{google-KTDHD75U.js.map → google-5RM2V7PE.js.map} +0 -0
  1284. /package/dist/{google-5GESCEKC.js.map → google-YQ5D4PB6.js.map} +0 -0
  1285. /package/dist/{group-ZMCHUQMI.js.map → group-CHOPV2I3.js.map} +0 -0
  1286. /package/dist/{group-JYNKEOPG.js.map → group-KTFOHXGH.js.map} +0 -0
  1287. /package/dist/{gsc-I6RIFE7I.js.map → gsc-35YVWJ4E.js.map} +0 -0
  1288. /package/dist/{history-F3N6M4JM.js.map → history-Y4VNF5TU.js.map} +0 -0
  1289. /package/dist/{icon-4C2JOBPE.js.map → icon-WT2BZJ5G.js.map} +0 -0
  1290. /package/dist/{ideas-7COQX7C3.js.map → ideas-MT2NSIYS.js.map} +0 -0
  1291. /package/dist/{images-5XNXXZLM.js.map → images-JFNAKV5U.js.map} +0 -0
  1292. /package/dist/{improve-6VC6ORAG.js.map → improve-4BN7ASFK.js.map} +0 -0
  1293. /package/dist/{ingest-L6MMXL6R.js.map → ingest-XWWDPKPZ.js.map} +0 -0
  1294. /package/dist/{insights-3TEVP4B2.js.map → insights-2JRN53IF.js.map} +0 -0
  1295. /package/dist/{insights-3H736QZH.js.map → insights-Q3QN4YQ2.js.map} +0 -0
  1296. /package/dist/{inspiration-I2XMXXEW.js.map → inspiration-3MF6SN4M.js.map} +0 -0
  1297. /package/dist/{intent-IYUKLNST.js.map → intent-4X76HZ4S.js.map} +0 -0
  1298. /package/dist/{job-MTHK2PPN.js.map → job-IA7XUMHW.js.map} +0 -0
  1299. /package/dist/{job-create-AD3L6A6F.js.map → job-create-A3YQCY4U.js.map} +0 -0
  1300. /package/dist/{job-status-MCFOA5V3.js.map → job-status-56EON3DS.js.map} +0 -0
  1301. /package/dist/{keep-NNATO2B6.js.map → keep-S6MJM5RW.js.map} +0 -0
  1302. /package/dist/{keyword-gap-RSITTJ56.js.map → keyword-gap-JZQSQBCJ.js.map} +0 -0
  1303. /package/dist/{landing-ZFZ4LYCB.js.map → landing-T5X74INN.js.map} +0 -0
  1304. /package/dist/{languages-SJ6ZWALA.js.map → languages-CVH5RLA3.js.map} +0 -0
  1305. /package/dist/{languages-3FETIHSB.js.map → languages-OG5UB5HX.js.map} +0 -0
  1306. /package/dist/{launches-ZZ7ST4SY.js.map → launches-VA7F7VNW.js.map} +0 -0
  1307. /package/dist/{layerize-NSF6NEWY.js.map → layerize-AD5QZ27N.js.map} +0 -0
  1308. /package/dist/{leads-EVFLPNG6.js.map → leads-MWLO42NZ.js.map} +0 -0
  1309. /package/dist/{library-UKGHGGOG.js.map → library-JZWQF5LV.js.map} +0 -0
  1310. /package/dist/{lighthouse-B2IBNWLX.js.map → lighthouse-PZVDR4V4.js.map} +0 -0
  1311. /package/dist/{line-items-GLNMIKM5.js.map → line-items-U6W2WHK2.js.map} +0 -0
  1312. /package/dist/{list-XRON5I6M.js.map → list-FHD6XLBG.js.map} +0 -0
  1313. /package/dist/{list-3IJMAQHX.js.map → list-H77PTVSF.js.map} +0 -0
  1314. /package/dist/{list-XBYKFXS3.js.map → list-JDJY55SE.js.map} +0 -0
  1315. /package/dist/{list-NZZ75O6C.js.map → list-VP2FP2DZ.js.map} +0 -0
  1316. /package/dist/{list-BDPUPCQZ.js.map → list-Z44K4QN3.js.map} +0 -0
  1317. /package/dist/{locations-M2665NGJ.js.map → locations-3PVEWKUN.js.map} +0 -0
  1318. /package/dist/{locations-TKPILKLO.js.map → locations-KPB7YMY7.js.map} +0 -0
  1319. /package/dist/{logo-EVE3TAL5.js.map → logo-N7JOUSLF.js.map} +0 -0
  1320. /package/dist/{lookup-Z5TFHYDU.js.map → lookup-NTOAWVB7.js.map} +0 -0
  1321. /package/dist/{media-FRNTELKI.js.map → media-IZ4RDOGZ.js.map} +0 -0
  1322. /package/dist/{media-DGNFOT7M.js.map → media-QNVOMX2L.js.map} +0 -0
  1323. /package/dist/{media-sources-V452RJ6B.js.map → media-sources-ESDSKU77.js.map} +0 -0
  1324. /package/dist/{meta-NGBLUNVU.js.map → meta-P5CF3K3C.js.map} +0 -0
  1325. /package/dist/{metrics-QRRK473C.js.map → metrics-DGEUY2UE.js.map} +0 -0
  1326. /package/dist/{models-4BTFIZZZ.js.map → models-KAAOFX22.js.map} +0 -0
  1327. /package/dist/{normalize-O47OIEUO.js.map → normalize-LC6FTTX2.js.map} +0 -0
  1328. /package/dist/{output-W473ZLGR.js.map → output-G3GBWY3I.js.map} +0 -0
  1329. /package/dist/{page-7TEJ5NA5.js.map → page-T27BIISC.js.map} +0 -0
  1330. /package/dist/{pages-S2E3FHDH.js.map → pages-Z7L65T4G.js.map} +0 -0
  1331. /package/dist/{performance-IMD2N7OD.js.map → performance-PIB64TCS.js.map} +0 -0
  1332. /package/dist/{pinterest-DQC3JXQT.js.map → pinterest-EGNWZUFU.js.map} +0 -0
  1333. /package/dist/{pixels-MHH4N35F.js.map → pixels-EXZO6PO7.js.map} +0 -0
  1334. /package/dist/{pixels-M5GS7DIH.js.map → pixels-PK3NDJWX.js.map} +0 -0
  1335. /package/dist/{plan-GGLBOLIU.js.map → plan-2FBPAUNT.js.map} +0 -0
  1336. /package/dist/{preview-AHDEJO2X.js.map → preview-VON3MQGX.js.map} +0 -0
  1337. /package/dist/{profile-2TPKFD4Y.js.map → profile-2UZLQUTP.js.map} +0 -0
  1338. /package/dist/{promoted-tweets-TIHMJ5PU.js.map → promoted-tweets-GHHCSHZU.js.map} +0 -0
  1339. /package/dist/{properties-KOY2GE45.js.map → properties-TKJVTJWP.js.map} +0 -0
  1340. /package/dist/{query-EO7BX4MH.js.map → query-E6G2FS4B.js.map} +0 -0
  1341. /package/dist/{query-XLTRAAQO.js.map → query-IEJ6GDJT.js.map} +0 -0
  1342. /package/dist/{query-QZWMKAJZ.js.map → query-JDLAZAZB.js.map} +0 -0
  1343. /package/dist/{questionnaire-BL3G6UYL.js.map → questionnaire-7TDP2OIX.js.map} +0 -0
  1344. /package/dist/{read-ZMNYD3PA.js.map → read-H3WO6TUB.js.map} +0 -0
  1345. /package/dist/{reddit-RO3VKMJ7.js.map → reddit-6U3NJUBN.js.map} +0 -0
  1346. /package/dist/{relevant-pages-ZGGWFDLL.js.map → relevant-pages-E5IWT4JX.js.map} +0 -0
  1347. /package/dist/{remove-MQ3JY36P.js.map → remove-BNRKVQEW.js.map} +0 -0
  1348. /package/dist/{research-2XAQRMC3.js.map → research-XRE3LGFO.js.map} +0 -0
  1349. /package/dist/{retry-failed-3R35LZ6I.js.map → retry-failed-3DMGOEFM.js.map} +0 -0
  1350. /package/dist/{run-HRSNUGWJ.js.map → run-NK5LF3UC.js.map} +0 -0
  1351. /package/dist/{schedule-KSIMVG5U.js.map → schedule-EB3LSEUO.js.map} +0 -0
  1352. /package/dist/{scheduled-agents-RM24BRGD.js.map → scheduled-agents-UDH7LHT2.js.map} +0 -0
  1353. /package/dist/{schema-MT76C7XK.js.map → schema-TSTEGRJ7.js.map} +0 -0
  1354. /package/dist/{scrape-ICS5UA62.js.map → scrape-VGSZS6SM.js.map} +0 -0
  1355. /package/dist/{screenshot-YPUFPY5W.js.map → screenshot-NUVTRG3D.js.map} +0 -0
  1356. /package/dist/{search-HOQZ3XIK.js.map → search-265T7Y7G.js.map} +0 -0
  1357. /package/dist/{search-6BHODVNN.js.map → search-7XFVB6DH.js.map} +0 -0
  1358. /package/dist/{search-TCDI77HS.js.map → search-SOZ3HPIB.js.map} +0 -0
  1359. /package/dist/{search-W7E5S347.js.map → search-UNYQXK6E.js.map} +0 -0
  1360. /package/dist/{search-copy-LXBPFQC3.js.map → search-copy-AKY73GKO.js.map} +0 -0
  1361. /package/dist/{seeds-Q6VS27LT.js.map → seeds-FF6JTDIB.js.map} +0 -0
  1362. /package/dist/{sends-HDTG7XRL.js.map → sends-XOR6X3MW.js.map} +0 -0
  1363. /package/dist/{sequences-SISO5JGS.js.map → sequences-HJJTLSCV.js.map} +0 -0
  1364. /package/dist/{shared-MJEF5Z6R.js.map → shared-NOT4U5P3.js.map} +0 -0
  1365. /package/dist/{sitemaps-G3YCZDEM.js.map → sitemaps-GHFPKIGO.js.map} +0 -0
  1366. /package/dist/{sites-YH2ZIMCP.js.map → sites-UGDJGEI4.js.map} +0 -0
  1367. /package/dist/{skills-SQTM676S.js.map → skills-RKCLARCX.js.map} +0 -0
  1368. /package/dist/{sources-OES5YJY6.js.map → sources-ZQG5GKKC.js.map} +0 -0
  1369. /package/dist/{stats-IDL2KWGM.js.map → stats-RX67ANJJ.js.map} +0 -0
  1370. /package/dist/{sticker-2R5LODHJ.js.map → sticker-FPIFV6J3.js.map} +0 -0
  1371. /package/dist/{stock-5DWDTNFB.js.map → stock-4BZVZYM5.js.map} +0 -0
  1372. /package/dist/{studio-PPFFAUWO.js.map → studio-6J4HFHKT.js.map} +0 -0
  1373. /package/dist/{sync-JRRGJWFH.js.map → sync-3XOV4JVW.js.map} +0 -0
  1374. /package/dist/{sync-7DWOHCVF.js.map → sync-XMQP4ASW.js.map} +0 -0
  1375. /package/dist/{sync-definition-SDJM567M.js.map → sync-definition-IQ7LDTM2.js.map} +0 -0
  1376. /package/dist/{tag-manager-MBS6YCZM.js.map → tag-manager-3FKPMUYJ.js.map} +0 -0
  1377. /package/dist/{tags-5EVJ73IX.js.map → tags-EEPRL747.js.map} +0 -0
  1378. /package/dist/{targeting-constants-KIMGCL2N.js.map → targeting-constants-T5SV3RBQ.js.map} +0 -0
  1379. /package/dist/{targeting-criteria-5BN4EELG.js.map → targeting-criteria-4CMZS63Y.js.map} +0 -0
  1380. /package/dist/{testimonials-2IJE6K2L.js.map → testimonials-HX7LCXEB.js.map} +0 -0
  1381. /package/dist/{themes-6BRONMJ2.js.map → themes-N3A5RRFO.js.map} +0 -0
  1382. /package/dist/{tweets-YEMIGLP7.js.map → tweets-IR2HROMH.js.map} +0 -0
  1383. /package/dist/{unfollow-S6XQVQIA.js.map → unfollow-A7GRLMY2.js.map} +0 -0
  1384. /package/dist/{unstage-VDLTHNHY.js.map → unstage-EY5GFBKG.js.map} +0 -0
  1385. /package/dist/{upload-PTXQ7IEE.js.map → upload-GYJP3MTW.js.map} +0 -0
  1386. /package/dist/{upscale-YQ2KZRCI.js.map → upscale-IN7ONODV.js.map} +0 -0
  1387. /package/dist/{url-options-QRGN4Q34.js.map → url-options-M2PRFR7P.js.map} +0 -0
  1388. /package/dist/{use-BFD6WCDB.js.map → use-DRH3UODR.js.map} +0 -0
  1389. /package/dist/{variant-U77I2UDY.js.map → variant-4JRLIUEF.js.map} +0 -0
  1390. /package/dist/{videos-2EPKRCW6.js.map → videos-M6OJINGL.js.map} +0 -0
  1391. /package/dist/{view-BDLUTKMK.js.map → view-NKEOHFYX.js.map} +0 -0
  1392. /package/dist/{viewer-check-YF6ENNNL.js.map → viewer-check-FVVKJROL.js.map} +0 -0
  1393. /package/dist/{winners-AWRCSFAC.js.map → winners-3QYUR4HE.js.map} +0 -0
  1394. /package/dist/{winning-ads-QQ6Y5R7T.js.map → winning-ads-MCH5FYMT.js.map} +0 -0
  1395. /package/dist/{write-commands-MYA273DT.js.map → write-commands-24EXCNQQ.js.map} +0 -0
  1396. /package/dist/{write-commands-HZI5YF52.js.map → write-commands-K7UNX4CE.js.map} +0 -0
  1397. /package/dist/{write-commands-OQPBPQ77.js.map → write-commands-QQVMIG7U.js.map} +0 -0
  1398. /package/dist/{x-WA3Q46K6.js.map → x-3CFDN2QM.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/canvas/scaffold-video.ts","../src/engine/scaffold/lib/model-router.ts","../src/engine/nodes/local/lib/sceneDetect.ts","../src/commands/canvas/gitignore.ts"],"sourcesContent":["import { cp, mkdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport {\n AD_IMAGE_MODEL,\n BLUEPRINT_ANALYSIS_MODEL,\n DEFAULT_VIDEO_GENERATE_MODEL,\n SEEDANCE_DURATIONS,\n VIDEO_DECONSTRUCT_MODEL,\n} from \"@baker/canvas-contract\";\nimport { defineCommand } from \"citty\";\nimport { enforceNewCreativeLimit } from \"./creative-limit.ts\";\nimport { fetchExternalBytes } from \"../../lib/externalFetch.ts\";\nimport { MAX_ASSET_BYTES } from \"../../engine/storage/asset-store.ts\";\nimport { routeVideoModel, type VideoBudget } from \"../../engine/scaffold/lib/model-router.ts\";\nimport { sha256Hex } from \"../../engine/storage/sha256.ts\";\nimport { createEngineFromEnv, defaultRegistry, ValidationError, validateCanvasDeep } from \"../../engine/index.ts\";\nimport { detectSceneCutsPySceneDetect } from \"../../engine/nodes/local/lib/sceneDetect.ts\";\nimport {\n annotateBlueprintWithElements,\n avatarsNotCast,\n buildOverlayHtml,\n canvasDims,\n castAvatarsOnElements,\n genAspectsFor,\n resolveAspect,\n type ScaffoldVideoOpts,\n scaffoldVideoCanvas,\n slimBlueprintForSelection,\n videoReport,\n} from \"../../engine/scaffold/video.ts\";\nimport { stampCompositionDims } from \"./composition-dims.ts\";\nimport {\n fail,\n fileExists,\n loadAssetText,\n parseElements,\n resolveModel,\n SHIPPED_CAPTIONS_DIR,\n SHIPPED_OVERLAY_COMPOSITION_DIR,\n} from \"./scaffold-common.ts\";\nimport { REBUILD_FILE, writeSceneFiles } from \"./scene-files.ts\";\nimport { renderStyleProjectionFromValue } from \"./style-projection.ts\";\nimport { buildCreativeDefinition, resolveFormats, resolvePlatform, titleFromSlug } from \"./creative-definition.ts\";\nimport { ensureGitignore } from \"./gitignore.ts\";\nimport { computeSourceSha } from \"./source-version.ts\";\nimport { syncCreativeDefinitionBestEffort } from \"./sync-definition.ts\";\nimport { resolveRelativeCanvasPaths } from \"./resolve-paths.ts\";\nimport { isValidScaffoldSlug } from \"./scaffold-static-ad-paths.ts\";\nimport { resolveCastAvatars } from \"../avatars/resolveCast.ts\";\nimport { askJevQuestions } from \"../../engine/nodes/local/lib/jev.ts\";\nimport { cachedJev } from \"../../engine/nodes/local/lib/jev-cache.ts\";\nimport { voiceGenderModel } from \"../../engine/scaffold/video/dialogue/voice-gender.ts\";\nimport type { ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { languageCodeNamed, spokenLanguage } from \"../../engine/scaffold/lib/language.ts\";\nimport { readBlueprintSpeech } from \"../../engine/scaffold/video/speech-reading.ts\";\nimport { findWorkspaceRoot } from \"./normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"./unbilled-spend.ts\";\n\nconst SELECT_SYSTEM =\n \"You identify the RECURRING, identity-critical visual elements of a video ad from its deconstruction blueprint — \" +\n \"the people, animals, products, and logos that must stay consistent every time they appear, so a faithful \" +\n \"reproduction grounds each in ONE real reference image reused across every frame it appears in. Output ONLY a JSON \" +\n 'object of the form { \"elements\": [ ... ] }, no prose.';\n\nconst SELECT_PROMPT =\n \"VIDEO DECONSTRUCTION BLUEPRINT (video-deconstruct/1):\\n{{blueprint}}\\n\\n\" +\n \"List ONLY the elements worth keeping consistent across frames — the ones a reproduction must ground in a real asset:\\n\" +\n '- each recurring person from global.cast (a presenter/actor/persona) -> type \"person\"\\n' +\n '- a recurring animal/pet/character with a stable identity -> type \"animal\"\\n' +\n '- a showcased product, package, card, or device the ad sells or demonstrates -> type \"product\"\\n' +\n '- the advertiser brand logo/wordmark (from global.branding) -> type \"logo\"\\n' +\n '- a recurring trust/rating/certification badge -> type \"badge\"\\n' +\n '- the dominant recording set/location the scenes share (e.g. the same living room, car interior, kitchen) -> type \"location\"\\n\\n' +\n \"DROP one-off background extras and incidental props — but the shared set/location is NOT generic scenery: pin it as ONE \" +\n '\"location\" element so the room stays identical across scenes. A person in global.cast is almost always recurring. Keep at most ~8.\\n\\n' +\n \"ONE PERSON, MULTIPLE LOOKS: if a single individual plays MULTIPLE personas or wardrobes (e.g. a creator as a skeptic in \" +\n \"one outfit and a believer in another, or a before/after), emit ONE element PER look (so each outfit gets its own real \" +\n 'reference image) and link the extra looks to the first via \"same_as\" — they are the SAME person, only the wardrobe/state ' +\n \"differs, so the face must stay identical.\\n\\n\" +\n 'For each kept element return: { \"type\": one of person|animal|product|logo|badge|location, \"label\": a short ' +\n 'UPPER_SNAKE_CASE name (e.g. HERO, CREATOR_SKEPTIC, INSURANCE_CARD, LOGO), \"description\": a concrete reusable ' +\n \"description to source/shoot the real asset — for a person/animal give a NEUTRAL castable role (e.g. \" +\n '\"hero pet-owner, woman in her 30s\" or \"a small beagle\"), NOT the original individual\\'s literal face/identity: ' +\n \"we RECAST with a FRESH person/animal, so never tell the agent to reuse the original. \" +\n '\"expression\": a living subject\\'s typical expression or null, \"cast_id\": the global.cast id if it maps to one else ' +\n 'null, \"same_as\": the label of another element this is the SAME individual as (different wardrobe/persona) else null, ' +\n '\"scenes\": the 0-based indices of ONLY the scenes where the element is ACTUALLY VISIBLE ON SCREEN — judged from ' +\n \"that scene's start_frame_prompt / end_frame_prompt subjects and its action_detail, NOT from who is merely \" +\n \"speaking. A narrator heard over b-roll is NOT present in that b-roll scene; a dog-running cutaway does NOT \" +\n \"contain the couch creator just because she talks across it. Do NOT pad the list — an element wrongly listed in a \" +\n \"scene makes the reproduction render the wrong subject there (e.g. the creator appearing in a pure-dog b-roll). \" +\n \"When in doubt, leave a scene OUT. Output ONLY the JSON object.\";\n\n/** Load the deconstruct's word-level transcript as text; a missing/unreadable one just\n * means no caption track is wired (best-effort — never fails the scaffold). */\nasync function loadTranscriptBestEffort(ref: unknown): Promise<string | undefined> {\n if (!ref) return undefined;\n try {\n return await loadAssetText(ref, \"deconstruct transcript\");\n } catch {\n return undefined;\n }\n}\n\n/**\n * Stage the burned-in caption track next to the canvas: copy the TikTok caption\n * composition. The caption TEXT is transcribed from the rendered audio at run time\n * (`video_transcribe`, wired by the scaffolder) — not the source transcript — so we don't\n * persist the deconstruct transcript here; we only use its presence to decide whether the\n * ad has speech worth captioning. Returns `compositionPath` (undefined ⇒ no caption track).\n */\nasync function stageCaptions(outDir: string, transcript: string | undefined): Promise<{ compositionPath?: string }> {\n const text = transcript?.trim();\n if (!text || text === \"[]\") return {};\n const compositionPath = path.join(outDir, \"tiktok-captions-composition\");\n await cp(SHIPPED_CAPTIONS_DIR, compositionPath, { recursive: true });\n return { compositionPath };\n}\n\n/**\n * Detect hard shot cuts in the local video with PySceneDetect (`scenedetect`, installed\n * in the canvas sandbox). Best-effort: a detection failure just falls back to LLM-only\n * scene boundaries, so a transient `scenedetect` error never blocks the scaffold.\n */\nasync function detectShotCutsBestEffort(videoPath: string, threshold?: number): Promise<number[] | undefined> {\n try {\n const cuts = await detectSceneCutsPySceneDetect(videoPath, threshold ? { threshold } : {});\n if (cuts.length > 0) {\n process.stderr.write(`Detected ${cuts.length} shot cut(s) via PySceneDetect: ${cuts.join(\", \")}s\\n`);\n } else {\n process.stderr.write(\"PySceneDetect ran but found no hard cuts; using LLM scene boundaries.\\n\");\n }\n return cuts;\n } catch (e) {\n // Stay non-fatal (the deconstruct can still segment with LLM-only boundaries),\n // but a MISSING `scenedetect` binary is an actionable setup gap, not a transient\n // blip — without cuts the segmentation tends to be too coarse, so shout LOUDLY\n // and tell the operator how to fix it instead of degrading silently.\n const msg = e instanceof Error ? e.message : String(e);\n const code = (e as { code?: unknown })?.code;\n const missing = code === \"ENOENT\" || /ENOENT|not found|command not found/i.test(msg);\n if (missing) {\n process.stderr.write(\n \"WARNING: `scenedetect` (PySceneDetect) is NOT installed — falling back to LLM-only scene boundaries, \" +\n \"which under-segments (coarse 9-15s scenes instead of the real 1-4s cuts). \" +\n \"Install it (`pipx install scenedetect[opencv]` or `pip install scenedetect[opencv]`) for accurate shot-cut detection.\\n\",\n );\n } else {\n process.stderr.write(`Shot-cut detection skipped (${msg}); using LLM boundaries.\\n`);\n }\n // Detection FAILED (vs \"ran and found none\") — undefined tells the deconstruct\n // it cannot treat the video as verified cut-less.\n return undefined;\n }\n}\n\nconst VIDEO_EXT_BY_MIME: Record<string, string> = {\n \"video/mp4\": \".mp4\",\n \"video/quicktime\": \".mov\",\n \"video/webm\": \".webm\",\n \"video/x-matroska\": \".mkv\",\n};\n\n/** Extension for a downloaded reference: URL pathname first, then content-type, else .mp4. */\nexport function referenceVideoExt(url: string, contentType: string | null): string {\n const fromPath = path.extname(new URL(url).pathname).toLowerCase();\n if (fromPath && fromPath.length <= 5) return fromPath;\n const mime = (contentType ?? \"\").split(\";\")[0]?.trim().toLowerCase();\n return (mime && VIDEO_EXT_BY_MIME[mime]) || \".mp4\";\n}\n\n/**\n * The reference the scaffold reproduces. Accept a URL (e.g. a `baker winning-ads`\n * presigned link) directly and download it once to a temp file — the local bytes\n * are needed anyway for PySceneDetect shot-cut detection before the billed\n * deconstruct — so the caller never has to `curl` it first. A local path passes\n * straight through.\n */\n/**\n * The INSPIRATION video's provenance for the creative's `_definition.md` + dashboard: the\n * durable, content-addressed R2 URL the deconstruct already uploaded the source to\n * (`blueprint.source.url` — survives even after a presigned winning-ads URL expires),\n * falling back to the original URL argument; plus the advertiser the deconstruct identified.\n * We record the URL rather than committing the file: a reference video can be up to 2 GiB\n * and the video canvas never re-ingests the source at run time (it uses the extracted frame\n * URLs), so a git copy would be pure bloat with no re-run benefit.\n */\nfunction videoSourceReference(blueprint: unknown, fileArg: string): { url?: string; advertiser?: string } {\n const bp = (blueprint ?? {}) as { source?: { url?: unknown }; global?: { branding?: { brand_name?: unknown } } };\n const durable = typeof bp.source?.url === \"string\" ? bp.source.url : undefined;\n const original = /^https?:\\/\\//i.test(fileArg) ? fileArg : undefined;\n const brand = bp.global?.branding?.brand_name;\n return { url: durable ?? original, advertiser: typeof brand === \"string\" && brand.trim() ? brand.trim() : undefined };\n}\n\n/** A short human summary for the video creative's `_definition.md` body (deconstruct-derived). */\nfunction videoDefinitionDescription(blueprint: unknown): string | undefined {\n const g = ((blueprint ?? {}) as { global?: Record<string, unknown> }).global ?? {};\n const notes = g.reproduction_notes;\n if (typeof notes === \"string\" && notes.trim()) return notes.trim();\n const product = (g.branding as { product?: unknown } | undefined)?.product;\n return typeof product === \"string\" && product.trim() ? product.trim() : undefined;\n}\n\n/**\n * The frames mode the canvas actually uses. `--frames reuse` on a video with people in it\n * is refused by the scaffold (their faces would reach our ad), so report that and why\n * rather than echo the flag back.\n */\nfunction framesModeReport(\n canvas: { metadata?: unknown },\n requested: \"generate\" | \"reuse\",\n): { frames_mode: string; frames_reuse_refused?: string } {\n const todo = (canvas.metadata as { todo?: { frames_mode?: unknown; frames_reuse_refused?: unknown } } | undefined)\n ?.todo;\n const mode = typeof todo?.frames_mode === \"string\" ? todo.frames_mode : requested;\n const refused = typeof todo?.frames_reuse_refused === \"string\" ? todo.frames_reuse_refused : undefined;\n return { frames_mode: mode, ...(refused ? { frames_reuse_refused: refused } : {}) };\n}\n\nasync function materializeReferenceVideo(fileArg: string): Promise<string> {\n if (!/^https?:\\/\\//i.test(fileArg)) return path.resolve(fileArg);\n let bytes: Buffer;\n let contentType: string | null;\n try {\n // No challenge sniff: this is definitionally a video file, and decoding the\n // first 64 KB of one as text to look for a bot wall is waste, not caution.\n // The canvas asset ceiling, not the image one: this is a reference video,\n // and it is the surface most likely to meet a limit at all.\n ({ buffer: bytes, contentType } = await fetchExternalBytes(fileArg, {\n sniffChallenge: false,\n maxBytes: MAX_ASSET_BYTES,\n }));\n } catch (e) {\n throw new Error(`failed to download reference video: ${e instanceof Error ? e.message : String(e)}`);\n }\n if (bytes.length === 0) throw new Error(\"reference video download was empty\");\n const dest = path.join(\n tmpdir(),\n `baker-ref-${sha256Hex(bytes).slice(0, 16)}${referenceVideoExt(fileArg, contentType)}`,\n );\n await writeFile(dest, bytes);\n return dest;\n}\n\n/** Parse the `--seam-dedup` flag; defaults to \"head\". Rejects any other value so a typo fails loud. */\nfunction resolveSeamDedup(raw: unknown): ScaffoldVideoOpts[\"seamDedup\"] {\n if (raw === undefined) return \"head\";\n const v = String(raw);\n if (v === \"head\" || v === \"tail\" || v === \"off\") return v;\n throw new Error(`--seam-dedup must be \"head\", \"tail\", or \"off\" (got \"${v}\")`);\n}\n\nconst VIDEO_BUDGETS: readonly VideoBudget[] = [\"economy\", \"standard\", \"premium\"];\nfunction parseBudget(raw: unknown): VideoBudget {\n const v = raw === undefined ? \"standard\" : String(raw);\n if ((VIDEO_BUDGETS as readonly string[]).includes(v)) return v as VideoBudget;\n throw new Error(`--budget must be one of ${VIDEO_BUDGETS.join(\", \")} (got \"${v}\")`);\n}\n\n/** Resolve the model ids that DON'T depend on the deconstruct output. The video\n * model is resolved separately (`resolveVideoModel`) once the cast is known. */\nfunction resolveModels(args: Record<string, unknown>): {\n deconstructModel: string;\n selectModel: string;\n imageModel: string;\n} {\n return {\n // Flash by default (the `videoDeconstruct` role). Override with --deconstruct-model\n // ~google/gemini-pro-latest for the densest extraction when speed matters less.\n deconstructModel: resolveModel(\"video_deconstruct\", args[\"deconstruct-model\"], VIDEO_DECONSTRUCT_MODEL),\n selectModel: resolveModel(\"text_generate\", args[\"select-model\"], BLUEPRINT_ANALYSIS_MODEL),\n // The ad-frame model (matches the static-ad scaffold); the frame generators need the\n // most faithful text/identity reproduction. Override with --image-model for a\n // cheaper/faster pass.\n imageModel: resolveModel(\"image_generate\", args[\"image-model\"], AD_IMAGE_MODEL),\n };\n}\n\n/** True when the deconstruct surfaced a photoreal on-camera person/animal cast —\n * exactly the frames ByteDance's real-person filter blocks on Seedance. */\nexport function hasPhotorealCast(elements: unknown): boolean {\n return (\n Array.isArray(elements) &&\n elements.some((e) => {\n const type = typeof e === \"object\" && e !== null ? (e as { type?: unknown }).type : undefined;\n return type === \"person\" || type === \"animal\";\n })\n );\n}\n\n/** Resolve the video model once the cast is known. An explicit --video-model\n * always wins. Otherwise the scored router picks from the curated roster — and a\n * detected photoreal on-camera cast counts as a real-face brief, so it routes to\n * Veo up front. That cast WOULD be blocked on Seedance by ByteDance's real-person\n * filter, and a blocked frame-started clip is not moved to another model at run\n * time, so picking Seedance burns an attempt and dead-ends. Mirrors Higgsfield's models_explore\n * and explains its pick via the returned reason. */\nexport function resolveVideoModel(\n args: Record<string, unknown>,\n elements: unknown,\n): { videoModel: string; videoRouteReason?: string } {\n if (args[\"video-model\"]) {\n return { videoModel: resolveModel(\"video_generate\", args[\"video-model\"], DEFAULT_VIDEO_GENERATE_MODEL) };\n }\n const photorealCast = hasPhotorealCast(elements);\n const route = routeVideoModel({\n hasRealFace: Boolean(args[\"real-face\"]) || photorealCast,\n needsIdentity: Boolean(args.identity),\n needsMotionTransfer: Boolean(args[\"motion-transfer\"]),\n budget: parseBudget(args.budget),\n });\n // Make the auto-detection legible when it (not an explicit flag) drove the pick.\n const reason =\n photorealCast && !args[\"real-face\"]\n ? `${route.reason} — detected a photoreal on-camera cast, which Seedance's real-person filter would block`\n : route.reason;\n return {\n videoModel: resolveModel(\"video_generate\", route.model, DEFAULT_VIDEO_GENERATE_MODEL),\n videoRouteReason: reason,\n };\n}\n\n/** The deconstruct canvas: ingest → full scene-by-scene blueprint. Run first, on its own. */\nfunction buildDeconstructCanvas(\n videoPath: string,\n deconstructModel: string,\n opts: { maxScenes?: number; language?: string; focus?: string; shotCuts?: number[] },\n) {\n const deconstructParams: Record<string, unknown> = { model: deconstructModel, mode: \"full\" };\n if (typeof opts.maxScenes === \"number\") deconstructParams.max_scenes = opts.maxScenes;\n if (opts.language) deconstructParams.language = opts.language;\n if (opts.focus) deconstructParams.focus = opts.focus;\n // Real visual shot cuts (detected locally with PySceneDetect) so the deconstruct\n // snaps scene boundaries onto them and never lets a scene span a hard cut. An\n // EMPTY list is meaningful (detection ran, the video is verified cut-less — every\n // LLM boundary is a same-take beat); only a failed detection omits the param.\n if (opts.shotCuts) deconstructParams.shot_cuts = opts.shotCuts;\n // The Seedance per-clip ceiling: a shot longer than this is split into seamless\n // continuation sub-scenes (shared splice frame) instead of being truncated.\n deconstructParams.max_clip_s = SEEDANCE_DURATIONS[SEEDANCE_DURATIONS.length - 1];\n return {\n schema: \"baker-canvas/1\" as const,\n metadata: { name: \"video deconstruct pass\" },\n nodes: [\n { id: \"src\", type: \"ingest\", params: { source: \"path\", path: videoPath, expect: \"video\" } },\n { id: \"deconstruct\", type: \"video_deconstruct\", inputs: { video: \"$ref:src.asset\" }, params: deconstructParams },\n ],\n output: { node: \"deconstruct\", output: \"analysis\" },\n };\n}\n\n/**\n * The element-selection canvas: a single text_generate over a SLIMMED blueprint. The slim\n * is inlined into the prompt as a literal STRING (no `$ref` slot), so it never trips the\n * engine's 256KB inline-slot limit no matter how long the ad — a full 42-scene blueprint\n * inlined as a slot blew past it. A function replacer keeps `$`/`{{` in the JSON literal.\n */\nfunction buildSelectCanvas(selectModel: string, slimmedBlueprintJson: string) {\n return {\n schema: \"baker-canvas/1\" as const,\n metadata: { name: \"element selection pass\" },\n nodes: [\n {\n id: \"select\",\n type: \"text_generate\",\n params: {\n model: selectModel,\n max_tokens: 6000,\n temperature: 0,\n response_format: \"json_object\",\n system: SELECT_SYSTEM,\n prompt: SELECT_PROMPT.replace(\"{{blueprint}}\", () => slimmedBlueprintJson),\n },\n },\n ],\n output: { node: \"select\", output: \"text\" },\n };\n}\n\n/**\n * Run the deconstruct pass, then the element-selection pass over a SLIMMED blueprint.\n * Two passes (not one chained canvas) so the CLI can slim the blueprint between them —\n * the selector only reads cast/branding + a few per-scene prompt fields, and inlining the\n * full blueprint busts the engine's inline-prompt limit on long ads. The FULL blueprint is\n * still returned (the source of truth for prompt.json + scaffolding). Credits sum both runs.\n */\nasync function runAnalysisPasses(\n deconstructCanvas: ReturnType<typeof buildDeconstructCanvas>,\n selectModel: string,\n): Promise<{\n blueprint: unknown;\n elements: unknown[];\n transcript: string | undefined;\n /** The language the deconstruct's transcriber heard, as it named it (\"es\", or \"spanish\"). */\n detectedLanguage: string | undefined;\n creditsSpent: number | undefined;\n}> {\n const engine = createEngineFromEnv({ log: (line) => process.stderr.write(`${line}\\n`) });\n let credits = 0;\n let sawCredits = false;\n const addCredits = (stats: unknown) => {\n const c = (stats as { total_credits?: number })?.total_credits;\n if (typeof c === \"number\") {\n credits += c;\n sawCredits = true;\n }\n };\n\n // Pass 1: the full deconstruct blueprint (+ its word-level transcript, used to drive\n // the burned-in caption track).\n let blueprint: unknown;\n let transcript: string | undefined;\n let detectedLanguage: string | undefined;\n try {\n const r1 = await engine.run(deconstructCanvas, {});\n addCredits(r1.stats);\n blueprint = JSON.parse(await loadAssetText(r1.outputs_by_node.deconstruct?.analysis, \"deconstruct output\"));\n transcript = await loadTranscriptBestEffort(r1.outputs_by_node.deconstruct?.transcript);\n const heard = (r1.outputs_by_node.deconstruct?.transcript as { metadata?: { detected_language?: unknown } } | undefined)\n ?.metadata?.detected_language;\n detectedLanguage = typeof heard === \"string\" && heard.trim() ? heard.trim() : undefined;\n } catch (e) {\n if (e instanceof ValidationError) return fail(\"validation\", JSON.stringify(e.issues));\n if (e instanceof SyntaxError) return fail(\"read_outputs\", e.message);\n return fail(\"deconstruct\", e instanceof Error ? e.message : String(e));\n }\n\n // Pass 2: element selection over the slimmed blueprint (inlined as a literal prompt).\n const slimJson = JSON.stringify(slimBlueprintForSelection(blueprint));\n try {\n const r2 = await engine.run(buildSelectCanvas(selectModel, slimJson), {});\n addCredits(r2.stats);\n const elements = parseElements(await loadAssetText(r2.outputs_by_node.select?.text, \"selection output\"));\n return { blueprint, elements, transcript, detectedLanguage, creditsSpent: sawCredits ? credits : undefined };\n } catch (e) {\n if (e instanceof ValidationError) return fail(\"validation\", JSON.stringify(e.issues));\n if (e instanceof SyntaxError) return fail(\"read_outputs\", e.message);\n return fail(\"deconstruct\", e instanceof Error ? e.message : String(e));\n }\n}\n\nexport const scaffoldVideoCommand = defineCommand({\n meta: {\n name: \"scaffold-video\",\n description:\n \"Turn a reference video into a runnable reproduction canvas in one command. Runs billed passes — video_deconstruct \" +\n \"(the full scene-by-scene blueprint + transcript, baked to a split, editable blueprint: a global prompt.json plus one \" +\n \"small scenes/sNN.json per scene) and an AI selection \" +\n \"of the video's RECURRING identity elements (person/animal/product/logo) — then scaffolds a pipeline where every \" +\n \"scene boundary is a static-ad-grade frame (the blueprint as target_blueprint, a reference legend, the real frame as \" +\n \"anchor) and each recurring element gets ONE shared [TODO] ingest slot wired into every frame it appears in. The \" +\n \"clips feed Seedance an ultra-detailed motion brief (action, camera, dialogue, transcript). Edit a scene's \" +\n \"scenes/sNN.json (or prompt.json for global cast/palette/brand), fill the remaining [TODO] images, then `baker canvas run`. \" +\n \"A person in the reference is played by an invented, realistic person generated from their description — never the \" +\n \"source actor and never a photo of anyone real; pass `--avatar <handle>` (`baker avatars list`) when the same actor \" +\n \"has to recur across the company's ads.\",\n },\n args: {\n file: {\n type: \"positional\",\n required: true,\n description:\n \"Reference video — a local path OR an http(s) URL (e.g. a winning-ads link). A URL is downloaded for you; pass --slug or --out with it.\",\n },\n out: { type: \"string\", description: \"Output canvas path (default <video-dir>/<name>.video.canvas.json)\" },\n slug: {\n type: \"string\",\n description: \"Creative slug — writes the canvas to src/creatives/<slug>/<slug>.canvas.json (repo convention)\",\n },\n frames: {\n type: \"string\",\n description:\n '\"generate\" (default, every frame regenerated for our ad) or \"reuse\" (wire the source\\'s real frames in). Reuse applies only to a video with nobody in it — on a video showing people it is refused and every frame is generated, so the source\\'s actors never reach our ad.',\n },\n ambient: {\n type: \"boolean\",\n description: \"Give silent b-roll scenes native diegetic ambient mixed deep under the music bed (off by default)\",\n },\n \"seam-dedup\": {\n type: \"string\",\n description:\n 'How to dedup the frame two clips SHARE when a long shot is split for length: \"head\" (default, drop the second clip\\'s first frame), \"tail\" (drop the first clip\\'s last frame), or \"off\" (keep both).',\n },\n \"max-scenes\": { type: \"string\", description: \"Cap the number of scenes the deconstruct emits\" },\n \"shot-threshold\": {\n type: \"string\",\n description:\n \"PySceneDetect content threshold. Default is adaptive (18, auto re-checked at 27 when a continuous shot looks over-segmented); pinning a value disables the re-check. Lower = more/softer cuts, higher = fewer.\",\n },\n language: { type: \"string\", description: \"Transcript/dialogue language hint (e.g. fr, en)\" },\n focus: { type: \"string\", description: \"Known provenance/emphasis to ground the deconstruct\" },\n advertiser: {\n type: \"string\",\n description: \"Source advertiser recorded in _definition.md (default: the brand the deconstruct identified)\",\n },\n platform: {\n type: \"string\",\n description: \"Ad platform for _definition.md (meta|google|linkedin|tiktok|youtube|x|other; default meta)\",\n },\n \"deconstruct-model\": { type: \"string\", description: \"Override the video_deconstruct model id\" },\n \"select-model\": { type: \"string\", description: \"Override the text_generate model id for element selection\" },\n \"image-model\": { type: \"string\", description: \"Override the image_generate model id for frames\" },\n \"video-model\": { type: \"string\", description: \"Override the video_generate model id for clips (skips the scored router)\" },\n \"real-face\": {\n type: \"boolean\",\n description:\n \"The ad has a photoreal human face on camera → the router picks Veo (dodges the ByteDance real-person filter). Set this for ANY photoreal presenter/creator/testimonial cast — the filter blocks AI-GENERATED photoreal faces too, not just real ones.\",\n },\n \"motion-transfer\": {\n type: \"boolean\",\n description: \"Motion driven from a reference video / deliberately hyper-dynamic → the router picks Kling.\",\n },\n identity: {\n type: \"boolean\",\n description: \"The same character/product must stay consistent across clips → the router picks the Seedance workhorse.\",\n },\n budget: {\n type: \"string\",\n description: 'Cost posture for the router: \"economy\" | \"standard\" | \"premium\" (default standard).',\n },\n aspect: {\n type: \"string\",\n description:\n 'Output aspect ratio (e.g. \"4:5\"). Default: the source video\\'s detected ratio. When the video model ' +\n \"can't generate the ratio (Seedance has no 4:5) clips generate at the nearest supported ratio and are \" +\n \"center-cropped onto the output canvas.\",\n },\n resolution: {\n type: \"string\",\n description:\n 'Output resolution for generated clips (e.g. \"1080p\"). Default 1080p — the highest the video model supports — so clips keep the keyframe sharpness instead of the model\\'s low default.',\n },\n avatar: {\n type: \"string\",\n description:\n \"Cast company avatars as the reference's people — pass this when the same actor has to recur across ads (without it, \" +\n \"each person is invented from their description). \" +\n 'One handle, or several comma-separated in the order the people appear (`--avatar marta` / `--avatar marta,joan`). ' +\n \"Each recurring person grounds on that avatar's identity sheet, so the ad shows the company's own cast instead of \" +\n \"the source ad's actors. `baker avatars list` shows who there is; checked before anything is billed.\",\n },\n },\n async run({ args }) {\n const fileArg = String(args.file);\n const slug = args.slug ? String(args.slug) : undefined;\n if (slug && !isValidScaffoldSlug(slug)) {\n process.stderr.write(\n `${JSON.stringify({ ok: false, error: { code: \"invalid_slug\", message: \"--slug must be lowercase kebab (a-z, 0-9, hyphens), max 100 chars\" } }, null, 2)}\\n`,\n );\n process.exit(2);\n }\n // A URL is downloaded to a temp file, which is no sensible home for the output\n // canvas — require an explicit target so the reproduction lands in the repo.\n const isUrl = /^https?:\\/\\//i.test(fileArg);\n if (isUrl && !slug && !args.out) {\n return fail(\n \"missing_output_target\",\n \"When the reference is a URL, pass --slug (writes src/creatives/<slug>/) or --out <path> so the scaffolded canvas has a home in the repo.\",\n );\n }\n let videoPath: string;\n try {\n videoPath = await materializeReferenceVideo(fileArg);\n } catch (e) {\n return fail(\"download\", e instanceof Error ? e.message : String(e));\n }\n const base = path.basename(videoPath, path.extname(videoPath));\n const outPath = args.out\n ? path.resolve(String(args.out))\n : slug\n ? path.join(process.cwd(), \"src\", \"creatives\", slug, `${slug}.canvas.json`)\n : path.join(path.dirname(videoPath), `${base}.video.canvas.json`);\n if (slug) await enforceNewCreativeLimit(slug, outPath);\n const outDir = path.dirname(outPath);\n const blueprintPath = path.join(outDir, \"prompt.json\");\n // The slim style projection every frame's target_blueprint reads (global cast/palette/\n // brand only). Written alongside prompt.json so the full blueprint stays hand-editable.\n const blueprintStylePath = path.join(outDir, \"prompt.style.json\");\n const frames = args.frames === \"reuse\" ? \"reuse\" : \"generate\";\n const maxScenes = args[\"max-scenes\"] ? Number(args[\"max-scenes\"]) : undefined;\n\n // A faithful reproduction defaults to ALL source scenes. Capping is a cost\n // lever that silently DROPS scenes (the deconstruct merges everything past the\n // cap into the last kept scene), so make it a loud, explicit operator choice.\n if (Number.isFinite(maxScenes)) {\n process.stderr.write(\n `⚠️ --max-scenes ${maxScenes} caps the deconstruct: any scenes beyond ${maxScenes} are MERGED away, ` +\n `reducing fidelity (fewer cuts, lost beats). Omit it to reproduce every scene.\\n`,\n );\n }\n\n let models: ReturnType<typeof resolveModels>;\n try {\n models = resolveModels(args);\n // Checked now, before the billed passes, although the video model is only\n // routed once the cast is known.\n if (args[\"video-model\"]) resolveModel(\"video_generate\", args[\"video-model\"], DEFAULT_VIDEO_GENERATE_MODEL);\n } catch (e) {\n return fail(\"unknown_model\", e instanceof Error ? e.message : String(e));\n }\n const { deconstructModel, selectModel, imageModel } = models;\n\n // Resolved before the billed passes: a handle that cannot be cast fails for free.\n const cast = await resolveCastAvatars(args.avatar);\n if (\"error\" in cast) return fail(\"avatar\", cast.error);\n const { handles: avatarHandles, avatars } = cast;\n\n // Detect real visual shot cuts locally with PySceneDetect so the deconstruct can\n // snap scene boundaries onto them (a scene must never span a hard cut). Lower\n // `--shot-threshold` to catch more (softer) cuts on a fast-cut ad; higher to catch\n // fewer.\n const shotThreshold = args[\"shot-threshold\"] ? Number(args[\"shot-threshold\"]) : undefined;\n const shotCuts = await detectShotCutsBestEffort(videoPath, shotThreshold);\n\n // Two passes: ingest → video_deconstruct, then element selection over a SLIMMED\n // blueprint (so a long ad's blueprint never busts the inline-prompt limit).\n const deconstructCanvas = buildDeconstructCanvas(videoPath, deconstructModel, {\n maxScenes: Number.isFinite(maxScenes) ? maxScenes : undefined,\n language: args.language ? String(args.language) : undefined,\n focus: args.focus ? String(args.focus) : undefined,\n shotCuts,\n });\n const analysis = await runAnalysisPasses(deconstructCanvas, selectModel);\n const { blueprint, transcript, creditsSpent } = analysis;\n // The language the lines are spoken in: `--language` when given, else what the transcriber\n // heard, else Jev's reading of the lines. Read with each voice's gender and the words a\n // caption card may not end on, in one request, kept in the workspace's cache.\n const heard = analysis.detectedLanguage;\n const declaredLanguage =\n (args.language ? spokenLanguage(String(args.language))?.tag : undefined) ??\n (heard ? (spokenLanguage(heard)?.tag ?? languageCodeNamed(heard)) : undefined);\n const speechCache = path.join(findWorkspaceRoot(outDir) ?? process.cwd(), \"canvas\", \".cache\");\n const speechSpent: ReviewUsage[] = [];\n const speech = await readBlueprintSpeech(\n blueprint,\n declaredLanguage ? { declaredLanguage } : {},\n {\n ask: cachedJev(speechCache, (questions) => askJevQuestions(questions, (u) => speechSpent.push(u))),\n genders: voiceGenderModel(speechCache, (u) => speechSpent.push(u)),\n },\n );\n await holdUnbilledSpend(speechCache, speechSpent).catch(() => {});\n const elements = castAvatarsOnElements(analysis.elements, avatars);\n const uncast = avatarsNotCast(analysis.elements, avatarHandles);\n const uncastHint = uncast.length\n ? {\n hints: [\n `NOT CAST: ${uncast.map((h) => `\\`${h}\\``).join(\", \")} — the element selection found no more recurring people than it cast, so ${uncast.length === 1 ? \"this avatar plays\" : \"these avatars play\"} nobody in this canvas. A person shown in only one scene is not a recurring element, so those frames render whoever their scene file describes — tell the user who is cast and who is not.`,\n ],\n }\n : {};\n\n // Route the video model now that the cast is known: a photoreal on-camera\n // person/animal is auto-routed to Veo (Seedance's real-person filter would\n // block it — no point burning a wasted attempt before the runtime fallback).\n let routed: ReturnType<typeof resolveVideoModel>;\n try {\n routed = resolveVideoModel(args, elements);\n } catch (e) {\n return fail(\"unknown_model\", e instanceof Error ? e.message : String(e));\n }\n const { videoModel, videoRouteReason } = routed;\n if (videoRouteReason && !args[\"video-model\"] && !args[\"real-face\"] && hasPhotorealCast(elements)) {\n process.stderr.write(`🎬 Photoreal on-camera cast detected → generating clips on ${videoModel} (dodges Seedance's real-person filter).\\n`);\n }\n\n // Bake the deconstruct blueprint as the editable prompt, annotated so the human\n // editing it sees which wired slot grounds which recurring element.\n await mkdir(outDir, { recursive: true });\n const annotated = annotateBlueprintWithElements(blueprint, elements);\n // Split the blueprint into the global slice (`prompt.json`) + one `scenes/sNN.json`\n // per scene. An agent edits ONE small scene file at a time instead of a 2000-line\n // monolith; `run`/`validate` re-assemble and re-flow each scene into the graph\n // (see scene-projection.ts). blueprintPath still names prompt.json — now scene-less.\n await writeSceneFiles(outDir, annotated);\n // The slim style projection frames actually read via target_blueprint (no per-scene\n // array), derived from the SAME annotated blueprint so brand/cast/palette stay in\n // sync. Written through the ONE renderer `validate`/`run` also use to re-derive it\n // from an edited prompt.json — byte-identical formatting is what makes their\n // \"already up to date\" comparison (and the ingest cache) work.\n await writeFile(blueprintStylePath, renderStyleProjectionFromValue(annotated), \"utf8\");\n\n // Copy the overlay composition next to the canvas, then BAKE the reference's\n // overlays into its index.html as real, editable HTML at the <!--OVERLAYS-->\n // marker. The operator edits that HTML to paint the broadcast look — overlays\n // are authored markup, never props fed to a styling engine.\n // Resolve the output vs generation aspect up front: the overlay/caption composition\n // dims, the ffmpeg canvas, and the clip/frame generation params must all agree.\n let aspect: ReturnType<typeof resolveAspect>;\n try {\n aspect = resolveAspect(\n (blueprint as { source?: { aspect_ratio?: string } }).source?.aspect_ratio,\n args.aspect ? String(args.aspect) : undefined,\n genAspectsFor(videoModel),\n );\n } catch (e) {\n return fail(\"aspect\", e instanceof Error ? e.message : String(e));\n }\n const outDims = canvasDims(aspect.outAr);\n if (aspect.remapped) {\n process.stderr.write(\n `⚠️ ${aspect.outAr} output → clips generate at ${aspect.genAr} (the video model's nearest ratio) and are ` +\n `center-cropped to ${aspect.outAr} (${outDims.w}×${outDims.h}) — keep subjects centered in frame prompts.\\n`,\n );\n }\n\n const compositionDest = path.join(outDir, \"video-overlay-composition\");\n await cp(SHIPPED_OVERLAY_COMPOSITION_DIR, compositionDest, { recursive: true });\n await stampCompositionDims(compositionDest, outDims);\n const indexPath = path.join(compositionDest, \"index.html\");\n // With a transcript the scaffold wires a word-synced caption track (stageCaptions\n // below) — the reference's caption-role overlay fragments must then NOT also seed\n // as frozen static overlays (they'd double the same words on screen).\n const overlayHtml = buildOverlayHtml(blueprint, { captionsActive: Boolean(transcript), videoModel });\n const indexHtml = await readFile(indexPath, \"utf8\");\n // Function replacer (not the string form) so `$`-sequences in overlay copy\n // (e.g. `save $$$!`, a literal `$&`) are inserted verbatim, not interpreted as\n // replacement patterns by String.prototype.replace.\n const injected = indexHtml.replace(\"<!--OVERLAYS-->\", () => overlayHtml);\n // replace() returns the string unchanged when the marker is absent — fail loud\n // rather than silently shipping a composition with no overlay layer.\n if (injected === indexHtml && overlayHtml.trim()) {\n fail(\n \"composition_marker_missing\",\n `video-overlay-composition/index.html is missing the <!--OVERLAYS--> marker — cannot inject the overlay layer`,\n );\n }\n await writeFile(indexPath, injected, \"utf8\");\n\n // Burned-in caption track: a sound-off feed needs the spoken words on screen, so the\n // scaffold wires a word-synced TikTok track by default whenever the deconstruct\n // returned a transcript (staged below). No transcript ⇒ no caption track.\n const captions = await stageCaptions(outDir, transcript);\n if (captions.compositionPath) await stampCompositionDims(captions.compositionPath, outDims);\n\n // Embed paths RELATIVE to the canvas file so the written canvas is portable —\n // `run`/`validate` resolve them against the canvas dir at load time. Baking\n // absolutes here is what made a moved/renamed workspace read a sibling's stale\n // composition + assets (the `memphis` cross-workspace bug).\n const opts: ScaffoldVideoOpts = {\n imageModel,\n videoModel,\n overlayCompositionPath: path.relative(outDir, compositionDest),\n captionsCompositionPath: captions.compositionPath\n ? path.relative(outDir, captions.compositionPath)\n : undefined,\n blueprintPath: path.relative(outDir, blueprintPath),\n blueprintStylePath: path.relative(outDir, blueprintStylePath),\n frames,\n ambient: Boolean(args.ambient),\n seamDedup: resolveSeamDedup(args[\"seam-dedup\"]),\n ...(speech.spokenLanguage ? { spokenLanguage: speech.spokenLanguage } : {}),\n voiceGenders: speech.voiceGenders,\n ...(speech.captionCarriesOn.length ? { captionCarriesOn: speech.captionCarriesOn } : {}),\n ...(args.aspect ? { aspect: String(args.aspect) } : {}),\n ...(args.resolution ? { resolution: String(args.resolution) } : {}),\n };\n\n let canvas: ReturnType<typeof scaffoldVideoCanvas>;\n let report: ReturnType<typeof videoReport>;\n try {\n canvas = scaffoldVideoCanvas(blueprint, elements, opts);\n report = videoReport(blueprint, elements, videoModel);\n } catch (e) {\n return fail(\"scaffold\", e instanceof Error ? e.message : String(e));\n }\n\n // MERGED overlay+captions pass: when the scaffold rendered the caption track\n // inside the overlay composition (no standalone `captions` node), the staged\n // TikTok caption dir is unused — remove it so the workspace holds no dead\n // composition an operator would edit to zero effect.\n if (captions.compositionPath && !canvas.nodes.some((n) => n.id === \"captions\")) {\n await rm(captions.compositionPath, { recursive: true, force: true });\n }\n\n // Validate against a copy whose relative paths are resolved to the output dir\n // (the on-disk canvas keeps the portable relatives).\n const validation = await validateCanvasDeep(resolveRelativeCanvasPaths(canvas, outDir), defaultRegistry());\n\n // ALWAYS write the canvas — the deconstruct behind it is already paid for. A\n // blocking validation issue becomes part of the operator's checklist (fix, then\n // `baker canvas validate`), never a hard exit that discards the artifact.\n if (!validation.ok) {\n const meta = canvas.metadata as Record<string, unknown>;\n const todo = (meta.todo ?? {}) as Record<string, unknown>;\n todo.blocking_validation_issues = validation.issues;\n meta.todo = todo;\n }\n await writeFile(outPath, `${JSON.stringify(canvas, null, 2)}\\n`, \"utf8\");\n // The frozen rebuild context the scene sync feeds back into scaffoldVideoCanvas to\n // regenerate scene prompts deterministically (NO model call): the element-selection\n // artifact + the exact scaffold opts. Written once, never hand-edited. Its absence\n // (an old canvas) makes the sync degrade to legacy behavior, never fail.\n await writeFile(\n path.join(outDir, REBUILD_FILE),\n `${JSON.stringify({ elements, opts }, null, 2)}\\n`,\n \"utf8\",\n );\n if (!validation.ok) {\n process.stderr.write(\n `${JSON.stringify(\n {\n ok: false,\n error: { code: \"validation\", issues: validation.issues },\n canvas_path: outPath,\n prompt_path: blueprintPath,\n ...framesModeReport(canvas, frames),\n note: \"The canvas WAS written despite the blocking issue(s) — fix them in place, then `baker canvas validate` before running.\",\n ...uncastHint,\n },\n null,\n 2,\n )}\\n`,\n );\n process.exit(2);\n }\n\n // Keep the engine's run cache + the scaffold's working files out of git.\n await ensureGitignore(process.cwd(), [\"canvas/\", \".context/\"]);\n\n // Preserve the INSPIRATION video the same way the static flow preserves its reference\n // image — so the creative (and the dashboard) shows what it was built from. We record the\n // durable R2 URL the deconstruct already produced, not a committed copy (see helper).\n const sourceRef = videoSourceReference(blueprint, fileArg);\n if (slug) {\n // Auto-write _definition.md so the video creative joins the content collection with its\n // source provenance (the video command never wrote one before). Preserve on re-scaffold.\n const definitionPath = path.join(outDir, \"_definition.md\");\n if (!(await fileExists(definitionPath))) {\n await writeFile(\n definitionPath,\n buildCreativeDefinition({\n title: titleFromSlug(slug),\n kind: \"video\",\n platform: resolvePlatform(args.platform ? String(args.platform) : undefined),\n formats: resolveFormats(aspect.outAr),\n sourceReferenceUrl: sourceRef.url,\n sourceAdvertiser: args.advertiser ? String(args.advertiser) : sourceRef.advertiser,\n sourceKind: \"video\",\n description: videoDefinitionDescription(blueprint),\n }),\n \"utf8\",\n );\n }\n }\n\n // Push the parsed node-graph so the dashboard can draw this video's full\n // workflow immediately — before spending any of the ~200-credit render. Best-effort.\n if (slug) {\n await syncCreativeDefinitionBestEffort({\n slug,\n title: titleFromSlug(slug),\n formats: [aspect.outAr],\n canvas,\n sourceReferenceUrl: sourceRef.url,\n sourceSha: await computeSourceSha(outPath),\n });\n }\n\n process.stdout.write(\n `${JSON.stringify(\n {\n ok: true,\n canvas_path: outPath,\n prompt_path: blueprintPath,\n source_reference: sourceRef.url,\n composition_dir: compositionDest,\n output: canvas.output,\n ...uncastHint,\n ...framesModeReport(canvas, frames),\n models: {\n deconstruct: deconstructModel,\n select: selectModel,\n image: imageModel,\n video: videoModel,\n ...(videoRouteReason ? { video_route_reason: videoRouteReason } : {}),\n },\n stats: {\n scene_count: report.scene_count,\n total_nodes: canvas.nodes.length,\n analysis_credits_spent: creditsSpent,\n run_estimated_credits: validation.estimatedCredits,\n // WHY the graph has its nodes: per-scene routes + the node-type histogram\n // (mirrors metadata.video.graph_stats in the canvas).\n graph: (canvas.metadata as { video?: { graph_stats?: unknown } })?.video?.graph_stats,\n },\n checklist: {\n edit_prompt: `The blueprint is split so you edit ONE small file at a time — never a giant one. Per-scene content (a scene's dialogue, action, frame prompts, overlays) lives in \\`scenes/sNN.json\\` — edit the single scene you want to change. Global cast/palette/brand/copy lives in \\`${path.basename(blueprintPath)}\\`. \\`baker canvas validate\\`/\\`run\\` re-assemble the blueprint and re-flow every edited scene back into the render (and regenerate ${path.basename(blueprintStylePath)}, the projection each frame's target_blueprint reads) — so your scene edits reach the render automatically. Never hand-edit the inlined node prompts in the canvas or the derived ${path.basename(blueprintStylePath)}; both are regenerated.`,\n recurring_elements_to_supply: report.elements,\n voices_to_confirm: report.dialogue.map((d) => ({\n scene: d.scene,\n speaker: d.speaker,\n voice_description: d.voice_description,\n line: d.line,\n })),\n sfx_count: report.sfx_count,\n overlay_count: report.overlay_count,\n has_music: report.has_music,\n scenes_clamped_to_clip_max: report.clamped_scenes,\n oversize_scenes: report.oversize_scenes,\n overstuffed_scenes: report.overstuffed_scenes,\n // Steer the edit toward disciplined prompting + on-brand MOTION, not just\n // on-brand color. The overlays inherit the reference's motion unless the\n // operator restyles easing/transition/accent from the brand's motion language.\n prompt_discipline:\n \"Rewrite each scene with the six-decision structure (Route / Spec / Beats / Copy / Technique / Negatives): quote exact copy, give every beat a timestamp, and name the moves. Pull easing, transition (cut vs fade), pacing, and the accent moment from BRAND.md § Brand in Motion so the overlays move like THIS brand — not the reference's. If BRAND.md has no Brand-in-Motion section, seed it with brand-build first. See the creative-canvas-ads skill: references/prompt-anatomy.md + references/hyperframes/.\",\n // Photoreal on-camera casts auto-route to Veo above, so this only fires\n // when `--video-model bytedance/seedance-2.0` was EXPLICITLY forced despite\n // a person/animal cast — overriding that safety route. Warn that every such\n // clip will hit ByteDance's real-person filter and burn a wasted attempt.\n ...(report.elements.some((e) => e.type === \"person\" || e.type === \"animal\") && /seedance/i.test(videoModel)\n ? {\n content_policy_risk:\n \"You FORCED Seedance (`--video-model bytedance/seedance-2.0`) on an ad with a photoreal on-camera cast. ByteDance's real-person filter will reject those clips (content_policy_blocked, E005) — no prompt change clears it. Each clip auto-recovers on Veo at render time so the run still completes, but you burn a wasted Seedance attempt per clip. Drop `--video-model` to let the scaffold route the cast to Veo up front, or make the frames less photorealistic.\",\n }\n : {}),\n note: \"Fill each el_* [TODO] — a person needs none (invented from their description, or cast with `--avatar <handle>`), never a photo of a real person; anything else with ONE real source image (reused across every frame that element appears in) — confirm each voice_select casting, then `baker canvas validate` and `baker canvas run`. Running generates many billed image/video/audio assets — it is not free.\",\n },\n },\n null,\n 2,\n )}\\n`,\n );\n },\n});\n","/**\n * A SCORED video-model router — the curated-and-explainable answer to\n * Higgsfield's `models_explore(recommend)`. Instead of a single hardcoded\n * default, a small weighted scorer picks between five curated video models (the\n * `videoRouter*` and `videoDefault` roles in the contract's `MODEL_ROLES`) and\n * returns a human-readable `reason` (mirroring Higgsfield's `match_reason`).\n *\n * The roster stays deliberately tiny (curation over breadth); this only makes the\n * pick correct and transparent:\n * - a real human likeness → Veo (the ONLY model that dodges ByteDance's\n * real-person filter), so a real-face brief never wastes a billed Seedance 422.\n * - motion-transfer / deliberately dynamic multi-shot beats → Kling.\n * - identity/product consistency → Seedance, the workhorse.\n * - anything else → the default video model (Gemini Omni 1.1).\n * - budget \"economy\" prefers the cheap Veo-fast tier over the 3.1 ceiling.\n *\n * Pure function, no I/O — tier-1 unit-testable per `.claude/rules/tdd.md`.\n */\n\nimport { MODEL_ROLES } from \"@baker/canvas-contract\";\n\nexport type VideoBudget = \"economy\" | \"standard\" | \"premium\";\n\nexport type VideoRouterInput = {\n /** The brief needs a real human likeness preserved (from a real reference face). */\n hasRealFace?: boolean;\n /** The same character/product must stay consistent across clips. */\n needsIdentity?: boolean;\n /** Motion is driven from a reference video, or the ad is deliberately hyper-dynamic. */\n needsMotionTransfer?: boolean;\n /** Cost posture. `economy` favors the cheap iteration tier. */\n budget?: VideoBudget;\n};\n\nexport type VideoRoute = {\n model: string;\n reason: string;\n /** Per-candidate score, exposed so the pick is fully auditable. */\n scores: Record<string, number>;\n};\n\nconst SEEDANCE = MODEL_ROLES.videoRouterWorkhorse.model;\nconst VEO = MODEL_ROLES.videoRouterRealFace.model;\nconst VEO_FAST = MODEL_ROLES.videoRouterRealFaceEconomy.model;\nconst KLING = MODEL_ROLES.videoRouterMotion.model;\n// The default video model (Omni 1.1, never the legacy preview): the router picks for\n// NEW work, and the preview exists only so stored canvases re-run verbatim.\nconst GEMINI_OMNI = MODEL_ROLES.videoDefault.model;\n\n/** A single weighted contribution to a candidate's score, with the reason it fired. */\ntype Signal = { model: string; weight: number; because: string };\n\n/**\n * Score every curated video model against the brief and return the winner plus\n * the dominant reason. Weights are intentionally coarse and readable — the goal\n * is a correct, explainable pick, not a tuned ML score.\n */\nexport function routeVideoModel(input: VideoRouterInput): VideoRoute {\n const budget = input.budget ?? \"standard\";\n const signals: Signal[] = [];\n\n // Hard rule: a real face MUST route to Veo — Seedance/Kling hit ByteDance-style\n // real-person filters. This dominates everything else.\n if (input.hasRealFace) {\n signals.push({ model: VEO, weight: 1200, because: \"real human likeness → Veo (dodges the real-person filter)\" });\n }\n\n // Motion transfer / hyper-dynamic multi-shot beats are Kling's lane.\n if (input.needsMotionTransfer) {\n signals.push({ model: KLING, weight: 800, because: \"motion-transfer / dynamic multi-shot → Kling\" });\n }\n\n // Identity/product consistency is the Seedance workhorse's strength (cheap, strong i2v).\n if (input.needsIdentity && !input.hasRealFace) {\n signals.push({ model: SEEDANCE, weight: 300, because: \"identity/product consistency → Seedance workhorse\" });\n }\n\n // Baseline preference so a signal-free brief still has a sensible default.\n // Omni wins the default because it renders picture + synchronized audio in one\n // call. It is deliberately a WEAK signal: it loses to every specific need above,\n // and it should: it stops at 10s and takes only 16:9 or 9:16, so any brief with a\n // real requirement is better served elsewhere.\n signals.push({ model: GEMINI_OMNI, weight: 100, because: \"default — native audio in one call\" });\n\n // Budget nudges: economy shifts a Veo pick to the cheap iteration tier; premium\n // keeps the 3.1 ceiling. Applied as a swap, not a competing candidate.\n const scores: Record<string, number> = { [SEEDANCE]: 0, [VEO]: 0, [VEO_FAST]: 0, [KLING]: 0, [GEMINI_OMNI]: 0 };\n let top: Signal = signals[0] as Signal;\n for (const s of signals) {\n scores[s.model] = (scores[s.model] ?? 0) + s.weight;\n if ((scores[s.model] ?? 0) >= (scores[top.model] ?? 0)) top = s;\n }\n\n let model = top.model;\n let reason = top.because;\n if (model === VEO && budget === \"economy\") {\n model = VEO_FAST;\n reason = `${reason}, on the economy fast tier`;\n scores[VEO_FAST] = scores[VEO] ?? 0;\n }\n\n return { model, reason, scores };\n}\n","import { execFile } from \"node:child_process\";\nimport { mkdtemp, readdir, readFile, rm } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\n/**\n * PySceneDetect `detect-content` threshold (HSV per-frame content difference, 0–255\n * scale; NOT comparable to ffmpeg's `scene` luma score). PySceneDetect's own default is\n * 27, but social ads cut fast and often on SOFT reframes (same set, slight angle change)\n * that 27 misses — leaving the deconstruct under-segmented. 18 recovers those soft cuts\n * while staying clear of motion-driven false positives; tune per video with\n * `--shot-threshold` (lower = more cuts).\n */\nconst PYSCENEDETECT_THRESHOLD = 18;\n/**\n * Minimum scene length (seconds) for PySceneDetect. Its own default is ~0.6s, which\n * merges away rapid montage flashes; 0.25 matches the backend's `snapAndSplitToCuts`\n * minimum scene duration so fast cuts survive end-to-end (and sub-2s silent beats become\n * cheap still-holds). Below ~0.2s is single-frame flicker, not a real cut.\n */\nconst PYSCENEDETECT_MIN_SCENE_LEN_S = 0.25;\n/**\n * Adaptive re-check threshold. The low default (18) recovers soft reframes on montage\n * ads, but on a CONTINUOUS talking-head selfie (no real cuts) the creator's motion and\n * the held subject trip it dozens of times — shredding one shot into 20+ micro-scenes.\n * PySceneDetect's own default (27) is the discriminator: a real montage's cuts are\n * genuine HSV jumps that SURVIVE 27, while a continuous shot's motion artifacts VANISH.\n * So when the first pass looks over-segmented we re-run at 27 and trust that result —\n * it keeps real cuts and drops false ones. Paired with a longer min-scene-len.\n */\nconst PYSCENEDETECT_RECHECK_THRESHOLD = 27;\nconst PYSCENEDETECT_RECHECK_MIN_SCENE_LEN_S = 0.6;\n\n/**\n * Does a cut list look like a continuous shot shredded by motion rather than a real\n * montage? True when there are many cuts packed close together — the MEDIAN gap between\n * consecutive boundaries (counting 0 → first cut) is short. This is only a TRIGGER to\n * re-check at a higher threshold; the re-check itself is what decides montage vs\n * continuous, so a false trigger on a genuinely fast montage is harmless (its real cuts\n * survive the re-check). Pure + deterministic.\n */\nexport function isLikelyOverSegmented(cuts: number[], opts: { minCuts?: number; medianGapS?: number } = {}): boolean {\n const minCuts = opts.minCuts ?? 6;\n const maxMedianGap = opts.medianGapS ?? 2.0;\n const sorted = [...cuts].filter((c) => Number.isFinite(c) && c > 0).sort((a, b) => a - b);\n if (sorted.length < minCuts) return false;\n const gaps: number[] = [];\n let prev = 0;\n for (const c of sorted) {\n gaps.push(c - prev);\n prev = c;\n }\n gaps.sort((a, b) => a - b);\n const mid = Math.floor(gaps.length / 2);\n const median = gaps.length % 2 ? (gaps[mid] as number) : ((gaps[mid - 1] as number) + (gaps[mid] as number)) / 2;\n return median < maxMedianGap;\n}\n\n/**\n * Merge the over-segmentation re-check with the first pass instead of discarding it\n * wholesale. The high-threshold set is the base (it dropped the motion shred), but the\n * low pass ALSO found real SOFT transitions (blur-morphs, gradual reframes) that vanish\n * at 27 — losing them chains scenes across real shot changes. An extra is added back\n * only when it is ISOLATED: ≥ `isolationS` from every kept cut and from every other\n * extra. Motion shred clusters (sub-second neighbors); genuine soft cuts stand alone.\n * Pure + deterministic.\n */\nexport function mergeRecheckCuts(firstPass: number[], recheck: number[], isolationS = 0.75): number[] {\n const kept = [...new Set(recheck)].sort((a, b) => a - b);\n const extras = [...new Set(firstPass)]\n .filter((c) => kept.every((k) => Math.abs(k - c) >= isolationS))\n .sort((a, b) => a - b);\n const isolated = extras.filter((c, i) => {\n const prev = extras[i - 1];\n const next = extras[i + 1];\n return (prev === undefined || c - prev >= isolationS) && (next === undefined || next - c >= isolationS);\n });\n return [...new Set([...kept, ...isolated])].sort((a, b) => a - b);\n}\n\n/** Parse an `HH:MM:SS.mmm` PySceneDetect timecode into seconds, or null if malformed. */\nexport function timecodeToSeconds(tc: string): number | null {\n const m = tc.trim().match(/^(\\d+):(\\d{1,2}):(\\d{1,2}(?:\\.\\d+)?)$/);\n if (!m) return null;\n const h = Number.parseInt(m[1] ?? \"\", 10);\n const min = Number.parseInt(m[2] ?? \"\", 10);\n const s = Number.parseFloat(m[3] ?? \"\");\n if (!Number.isFinite(h) || !Number.isFinite(min) || !Number.isFinite(s)) return null;\n return h * 3600 + min * 60 + s;\n}\n\n/**\n * Parse hard-cut timestamps (seconds) out of a PySceneDetect `*-Scenes.csv`. The\n * first CSV row is the cutting list: `Timecode List:,00:00:08.900,00:00:11.333,…`\n * — each entry is a scene boundary (internal hard cut). Sorted, deduped, positive. Pure.\n */\nexport function parsePySceneDetectCsvCuts(csv: string): number[] {\n const firstLine = csv.split(/\\r?\\n/, 1)[0] ?? \"\";\n if (!/^\\s*Timecode List:/i.test(firstLine)) return [];\n const cuts: number[] = [];\n for (const cell of firstLine.split(\",\").slice(1)) {\n const t = timecodeToSeconds(cell);\n if (t !== null && t > 0) cuts.push(Math.round(t * 1000) / 1000);\n }\n return [...new Set(cuts)].sort((a, b) => a - b);\n}\n\n/**\n * Detect hard visual shot cuts with PySceneDetect's `scenedetect` CLI (battle-tested\n * ContentDetector: RGB→HSV per-frame average difference, default threshold 27). Writes\n * the scene CSV to a temp dir, parses the cutting list, then cleans up. Returns the cut\n * timestamps in seconds. Throws if `scenedetect` is missing or fails (caller falls back).\n */\n/** One `scenedetect detect-content` invocation at a fixed threshold; returns the cuts. */\nasync function runSceneDetectOnce(\n filePath: string,\n threshold: number,\n minSceneLenS: number,\n timeoutMs: number,\n): Promise<number[]> {\n const outDir = await mkdtemp(join(tmpdir(), \"baker-scenedetect-\"));\n try {\n await execFileAsync(\n \"scenedetect\",\n [\n \"--input\",\n filePath,\n \"--output\",\n outDir,\n \"detect-content\",\n \"--threshold\",\n String(threshold),\n \"--min-scene-len\",\n String(minSceneLenS),\n \"list-scenes\",\n \"--quiet\",\n ],\n { encoding: \"utf-8\", maxBuffer: 32 * 1024 * 1024, timeout: timeoutMs },\n );\n const csvName = (await readdir(outDir)).find((f) => f.toLowerCase().endsWith(\".csv\"));\n if (!csvName) return [];\n return parsePySceneDetectCsvCuts(await readFile(join(outDir, csvName), \"utf-8\"));\n } finally {\n await rm(outDir, { recursive: true, force: true });\n }\n}\n\nexport async function detectSceneCutsPySceneDetect(\n filePath: string,\n opts: { threshold?: number; minSceneLenS?: number; timeout_ms?: number } = {},\n): Promise<number[]> {\n // An operator-pinned threshold disables the adaptive re-check (they know best).\n const pinned = opts.threshold !== undefined;\n const threshold = opts.threshold ?? PYSCENEDETECT_THRESHOLD;\n // Minimum scene length (seconds). PySceneDetect's default (~0.6s) MERGES cuts closer\n // than that, silently dropping super-fast montage flashes. We floor it at the backend's\n // own minimum scene duration so genuine sub-second flashes survive as their own scenes\n // (then become cheap still-holds downstream). A float string is parsed as seconds.\n const minSceneLenS = opts.minSceneLenS ?? PYSCENEDETECT_MIN_SCENE_LEN_S;\n const timeoutMs = opts.timeout_ms ?? 120_000;\n const cuts = await runSceneDetectOnce(filePath, threshold, minSceneLenS, timeoutMs);\n // Adaptive guard: if the first pass shredded a continuous shot into many micro-cuts,\n // re-run at PySceneDetect's own (higher) default and trust THAT — real montage cuts\n // survive it, motion artifacts don't. Only when the operator didn't pin a threshold.\n if (!pinned && isLikelyOverSegmented(cuts)) {\n const rechecked = await runSceneDetectOnce(\n filePath,\n PYSCENEDETECT_RECHECK_THRESHOLD,\n PYSCENEDETECT_RECHECK_MIN_SCENE_LEN_S,\n timeoutMs,\n );\n // Merge instead of replace: the re-check drops the motion shred, but the low pass\n // also caught real SOFT transitions invisible at 27 — keep its isolated extras.\n return mergeRecheckCuts(cuts, rechecked);\n }\n return cuts;\n}\n","import { appendFile, readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\n/**\n * Which of `entries` are not already ignored by `existing` .gitignore content.\n * Matches a whole non-comment line (trimmed, optional trailing slash) so `canvas`\n * and `canvas/` both count as present. Pure — unit-tested without the filesystem.\n */\nexport function missingGitignoreEntries(existing: string, entries: string[]): string[] {\n const present = new Set(\n existing\n .split(\"\\n\")\n .map((l) => l.trim().replace(/\\/+$/, \"\"))\n .filter((l) => l.length > 0 && !l.startsWith(\"#\")),\n );\n return entries.filter((e) => !present.has(e.trim().replace(/\\/+$/, \"\")));\n}\n\n/**\n * Append any missing `entries` to `<dir>/.gitignore`. The canvas engine writes a\n * content-addressed cache + per-run dirs under `canvas/`, and the scaffold writes\n * working files under `.context/` — committing either would bloat the repo. Only\n * touches an EXISTING .gitignore (never creates surprise files); best-effort.\n */\nexport async function ensureGitignore(dir: string, entries: string[]): Promise<void> {\n const file = path.join(dir, \".gitignore\");\n let existing: string;\n try {\n existing = await readFile(file, \"utf8\");\n } catch {\n return; // no .gitignore here — don't conjure one\n }\n const missing = missingGitignoreEntries(existing, entries);\n if (missing.length === 0) return;\n const prefix = existing.endsWith(\"\\n\") || existing.length === 0 ? \"\" : \"\\n\";\n await appendFile(file, `${prefix}\\n# Baker canvas (engine cache + scaffold working files)\\n${missing.join(\"\\n\")}\\n`);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,IAAI,OAAO,YAAAA,WAAU,MAAAC,KAAI,iBAAiB;AACnD,SAAS,UAAAC,eAAc;AACvB,OAAOC,WAAU;AAQjB,SAAS,qBAAqB;;;AC+B9B,IAAM,WAAW,YAAY,qBAAqB;AAClD,IAAM,MAAM,YAAY,oBAAoB;AAC5C,IAAM,WAAW,YAAY,2BAA2B;AACxD,IAAM,QAAQ,YAAY,kBAAkB;AAG5C,IAAM,cAAc,YAAY,aAAa;AAUtC,SAAS,gBAAgB,OAAqC;AACnE,QAAM,SAAS,MAAM,UAAU;AAC/B,QAAM,UAAoB,CAAC;AAI3B,MAAI,MAAM,aAAa;AACrB,YAAQ,KAAK,EAAE,OAAO,KAAK,QAAQ,MAAM,SAAS,iEAA4D,CAAC;AAAA,EACjH;AAGA,MAAI,MAAM,qBAAqB;AAC7B,YAAQ,KAAK,EAAE,OAAO,OAAO,QAAQ,KAAK,SAAS,oDAA+C,CAAC;AAAA,EACrG;AAGA,MAAI,MAAM,iBAAiB,CAAC,MAAM,aAAa;AAC7C,YAAQ,KAAK,EAAE,OAAO,UAAU,QAAQ,KAAK,SAAS,yDAAoD,CAAC;AAAA,EAC7G;AAOA,UAAQ,KAAK,EAAE,OAAO,aAAa,QAAQ,KAAK,SAAS,0CAAqC,CAAC;AAI/F,QAAM,SAAiC,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,GAAG,EAAE;AAC9G,MAAI,MAAc,QAAQ,CAAC;AAC3B,aAAW,KAAK,SAAS;AACvB,WAAO,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,KAAK,KAAK,EAAE;AAC7C,SAAK,OAAO,EAAE,KAAK,KAAK,OAAO,OAAO,IAAI,KAAK,KAAK,GAAI,OAAM;AAAA,EAChE;AAEA,MAAI,QAAQ,IAAI;AAChB,MAAI,SAAS,IAAI;AACjB,MAAI,UAAU,OAAO,WAAW,WAAW;AACzC,YAAQ;AACR,aAAS,GAAG,MAAM;AAClB,WAAO,QAAQ,IAAI,OAAO,GAAG,KAAK;AAAA,EACpC;AAEA,SAAO,EAAE,OAAO,QAAQ,OAAO;AACjC;;;ACtGA,SAAS,gBAAgB;AACzB,SAAS,SAAS,SAAS,UAAU,UAAU;AAC/C,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAE1B,IAAM,gBAAgB,UAAU,QAAQ;AAUxC,IAAM,0BAA0B;AAOhC,IAAM,gCAAgC;AAUtC,IAAM,kCAAkC;AACxC,IAAM,wCAAwC;AAUvC,SAAS,sBAAsB,MAAgB,OAAkD,CAAC,GAAY;AACnH,QAAM,UAAU,KAAK,WAAW;AAChC,QAAM,eAAe,KAAK,cAAc;AACxC,QAAM,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,OAAO,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACxF,MAAI,OAAO,SAAS,QAAS,QAAO;AACpC,QAAM,OAAiB,CAAC;AACxB,MAAI,OAAO;AACX,aAAW,KAAK,QAAQ;AACtB,SAAK,KAAK,IAAI,IAAI;AAClB,WAAO;AAAA,EACT;AACA,OAAK,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACzB,QAAM,MAAM,KAAK,MAAM,KAAK,SAAS,CAAC;AACtC,QAAM,SAAS,KAAK,SAAS,IAAK,KAAK,GAAG,KAAiB,KAAK,MAAM,CAAC,IAAgB,KAAK,GAAG,KAAgB;AAC/G,SAAO,SAAS;AAClB;AAWO,SAAS,iBAAiB,WAAqB,SAAmB,aAAa,MAAgB;AACpG,QAAM,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACvD,QAAM,SAAS,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC,EAClC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,UAAU,CAAC,EAC9D,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AACvB,QAAM,WAAW,OAAO,OAAO,CAAC,GAAG,MAAM;AACvC,UAAM,OAAO,OAAO,IAAI,CAAC;AACzB,UAAM,OAAO,OAAO,IAAI,CAAC;AACzB,YAAQ,SAAS,UAAa,IAAI,QAAQ,gBAAgB,SAAS,UAAa,OAAO,KAAK;AAAA,EAC9F,CAAC;AACD,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAClE;AAGO,SAAS,kBAAkB,IAA2B;AAC3D,QAAM,IAAI,GAAG,KAAK,EAAE,MAAM,uCAAuC;AACjE,MAAI,CAAC,EAAG,QAAO;AACf,QAAM,IAAI,OAAO,SAAS,EAAE,CAAC,KAAK,IAAI,EAAE;AACxC,QAAM,MAAM,OAAO,SAAS,EAAE,CAAC,KAAK,IAAI,EAAE;AAC1C,QAAM,IAAI,OAAO,WAAW,EAAE,CAAC,KAAK,EAAE;AACtC,MAAI,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,SAAS,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,EAAG,QAAO;AAChF,SAAO,IAAI,OAAO,MAAM,KAAK;AAC/B;AAOO,SAAS,0BAA0B,KAAuB;AAC/D,QAAM,YAAY,IAAI,MAAM,SAAS,CAAC,EAAE,CAAC,KAAK;AAC9C,MAAI,CAAC,sBAAsB,KAAK,SAAS,EAAG,QAAO,CAAC;AACpD,QAAM,OAAiB,CAAC;AACxB,aAAW,QAAQ,UAAU,MAAM,GAAG,EAAE,MAAM,CAAC,GAAG;AAChD,UAAM,IAAI,kBAAkB,IAAI;AAChC,QAAI,MAAM,QAAQ,IAAI,EAAG,MAAK,KAAK,KAAK,MAAM,IAAI,GAAI,IAAI,GAAI;AAAA,EAChE;AACA,SAAO,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAChD;AASA,eAAe,mBACb,UACA,WACA,cACA,WACmB;AACnB,QAAM,SAAS,MAAM,QAAQ,KAAK,OAAO,GAAG,oBAAoB,CAAC;AACjE,MAAI;AACF,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,SAAS;AAAA,QAChB;AAAA,QACA,OAAO,YAAY;AAAA,QACnB;AAAA,QACA;AAAA,MACF;AAAA,MACA,EAAE,UAAU,SAAS,WAAW,KAAK,OAAO,MAAM,SAAS,UAAU;AAAA,IACvE;AACA,UAAM,WAAW,MAAM,QAAQ,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,CAAC;AACpF,QAAI,CAAC,QAAS,QAAO,CAAC;AACtB,WAAO,0BAA0B,MAAM,SAAS,KAAK,QAAQ,OAAO,GAAG,OAAO,CAAC;AAAA,EACjF,UAAE;AACA,UAAM,GAAG,QAAQ,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EACnD;AACF;AAEA,eAAsB,6BACpB,UACA,OAA2E,CAAC,GACzD;AAEnB,QAAM,SAAS,KAAK,cAAc;AAClC,QAAM,YAAY,KAAK,aAAa;AAKpC,QAAM,eAAe,KAAK,gBAAgB;AAC1C,QAAM,YAAY,KAAK,cAAc;AACrC,QAAM,OAAO,MAAM,mBAAmB,UAAU,WAAW,cAAc,SAAS;AAIlF,MAAI,CAAC,UAAU,sBAAsB,IAAI,GAAG;AAC1C,UAAM,YAAY,MAAM;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAGA,WAAO,iBAAiB,MAAM,SAAS;AAAA,EACzC;AACA,SAAO;AACT;;;ACnLA,SAAS,YAAY,YAAAC,iBAAgB;AACrC,OAAO,UAAU;AAOV,SAAS,wBAAwB,UAAkB,SAA6B;AACrF,QAAM,UAAU,IAAI;AAAA,IAClB,SACG,MAAM,IAAI,EACV,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,QAAQ,EAAE,CAAC,EACvC,OAAO,CAAC,MAAM,EAAE,SAAS,KAAK,CAAC,EAAE,WAAW,GAAG,CAAC;AAAA,EACrD;AACA,SAAO,QAAQ,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,QAAQ,QAAQ,EAAE,CAAC,CAAC;AACzE;AAQA,eAAsB,gBAAgB,KAAa,SAAkC;AACnF,QAAM,OAAO,KAAK,KAAK,KAAK,YAAY;AACxC,MAAI;AACJ,MAAI;AACF,eAAW,MAAMA,UAAS,MAAM,MAAM;AAAA,EACxC,QAAQ;AACN;AAAA,EACF;AACA,QAAM,UAAU,wBAAwB,UAAU,OAAO;AACzD,MAAI,QAAQ,WAAW,EAAG;AAC1B,QAAM,SAAS,SAAS,SAAS,IAAI,KAAK,SAAS,WAAW,IAAI,KAAK;AACvE,QAAM,WAAW,MAAM,GAAG,MAAM;AAAA;AAAA,EAA6D,QAAQ,KAAK,IAAI,CAAC;AAAA,CAAI;AACrH;;;AHuBA,IAAM,gBACJ;AAKF,IAAM,gBACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8BF,eAAe,yBAAyB,KAA2C;AACjF,MAAI,CAAC,IAAK,QAAO;AACjB,MAAI;AACF,WAAO,MAAM,cAAc,KAAK,wBAAwB;AAAA,EAC1D,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AASA,eAAe,cAAc,QAAgB,YAAuE;AAClH,QAAM,OAAO,YAAY,KAAK;AAC9B,MAAI,CAAC,QAAQ,SAAS,KAAM,QAAO,CAAC;AACpC,QAAM,kBAAkBC,MAAK,KAAK,QAAQ,6BAA6B;AACvE,QAAM,GAAG,sBAAsB,iBAAiB,EAAE,WAAW,KAAK,CAAC;AACnE,SAAO,EAAE,gBAAgB;AAC3B;AAOA,eAAe,yBAAyB,WAAmB,WAAmD;AAC5G,MAAI;AACF,UAAM,OAAO,MAAM,6BAA6B,WAAW,YAAY,EAAE,UAAU,IAAI,CAAC,CAAC;AACzF,QAAI,KAAK,SAAS,GAAG;AACnB,cAAQ,OAAO,MAAM,YAAY,KAAK,MAAM,mCAAmC,KAAK,KAAK,IAAI,CAAC;AAAA,CAAK;AAAA,IACrG,OAAO;AACL,cAAQ,OAAO,MAAM,yEAAyE;AAAA,IAChG;AACA,WAAO;AAAA,EACT,SAAS,GAAG;AAKV,UAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AACrD,UAAM,OAAQ,GAA0B;AACxC,UAAM,UAAU,SAAS,YAAY,sCAAsC,KAAK,GAAG;AACnF,QAAI,SAAS;AACX,cAAQ,OAAO;AAAA,QACb;AAAA,MAGF;AAAA,IACF,OAAO;AACL,cAAQ,OAAO,MAAM,+BAA+B,GAAG;AAAA,CAA4B;AAAA,IACrF;AAGA,WAAO;AAAA,EACT;AACF;AAEA,IAAM,oBAA4C;AAAA,EAChD,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,oBAAoB;AACtB;AAGO,SAAS,kBAAkB,KAAa,aAAoC;AACjF,QAAM,WAAWA,MAAK,QAAQ,IAAI,IAAI,GAAG,EAAE,QAAQ,EAAE,YAAY;AACjE,MAAI,YAAY,SAAS,UAAU,EAAG,QAAO;AAC7C,QAAM,QAAQ,eAAe,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,YAAY;AACnE,SAAQ,QAAQ,kBAAkB,IAAI,KAAM;AAC9C;AAkBA,SAAS,qBAAqB,WAAoB,SAAwD;AACxG,QAAM,KAAM,aAAa,CAAC;AAC1B,QAAM,UAAU,OAAO,GAAG,QAAQ,QAAQ,WAAW,GAAG,OAAO,MAAM;AACrE,QAAM,WAAW,gBAAgB,KAAK,OAAO,IAAI,UAAU;AAC3D,QAAM,QAAQ,GAAG,QAAQ,UAAU;AACnC,SAAO,EAAE,KAAK,WAAW,UAAU,YAAY,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,OAAU;AACtH;AAGA,SAAS,2BAA2B,WAAwC;AAC1E,QAAM,KAAM,aAAa,CAAC,GAA4C,UAAU,CAAC;AACjF,QAAM,QAAQ,EAAE;AAChB,MAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAG,QAAO,MAAM,KAAK;AACjE,QAAM,UAAW,EAAE,UAAgD;AACnE,SAAO,OAAO,YAAY,YAAY,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI;AAC1E;AAOA,SAAS,iBACP,QACA,WACwD;AACxD,QAAM,OAAQ,OAAO,UACjB;AACJ,QAAM,OAAO,OAAO,MAAM,gBAAgB,WAAW,KAAK,cAAc;AACxE,QAAM,UAAU,OAAO,MAAM,yBAAyB,WAAW,KAAK,uBAAuB;AAC7F,SAAO,EAAE,aAAa,MAAM,GAAI,UAAU,EAAE,sBAAsB,QAAQ,IAAI,CAAC,EAAG;AACpF;AAEA,eAAe,0BAA0B,SAAkC;AACzE,MAAI,CAAC,gBAAgB,KAAK,OAAO,EAAG,QAAOA,MAAK,QAAQ,OAAO;AAC/D,MAAI;AACJ,MAAI;AACJ,MAAI;AAKF,KAAC,EAAE,QAAQ,OAAO,YAAY,IAAI,MAAM,mBAAmB,SAAS;AAAA,MAClE,gBAAgB;AAAA,MAChB,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,SAAS,GAAG;AACV,UAAM,IAAI,MAAM,uCAAuC,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC,EAAE;AAAA,EACrG;AACA,MAAI,MAAM,WAAW,EAAG,OAAM,IAAI,MAAM,oCAAoC;AAC5E,QAAM,OAAOA,MAAK;AAAA,IAChBC,QAAO;AAAA,IACP,aAAa,UAAU,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,GAAG,kBAAkB,SAAS,WAAW,CAAC;AAAA,EACtF;AACA,QAAM,UAAU,MAAM,KAAK;AAC3B,SAAO;AACT;AAGA,SAAS,iBAAiB,KAA8C;AACtE,MAAI,QAAQ,OAAW,QAAO;AAC9B,QAAM,IAAI,OAAO,GAAG;AACpB,MAAI,MAAM,UAAU,MAAM,UAAU,MAAM,MAAO,QAAO;AACxD,QAAM,IAAI,MAAM,uDAAuD,CAAC,IAAI;AAC9E;AAEA,IAAM,gBAAwC,CAAC,WAAW,YAAY,SAAS;AAC/E,SAAS,YAAY,KAA2B;AAC9C,QAAM,IAAI,QAAQ,SAAY,aAAa,OAAO,GAAG;AACrD,MAAK,cAAoC,SAAS,CAAC,EAAG,QAAO;AAC7D,QAAM,IAAI,MAAM,2BAA2B,cAAc,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI;AACpF;AAIA,SAAS,cAAc,MAIrB;AACA,SAAO;AAAA;AAAA;AAAA,IAGL,kBAAkB,aAAa,qBAAqB,KAAK,mBAAmB,GAAG,uBAAuB;AAAA,IACtG,aAAa,aAAa,iBAAiB,KAAK,cAAc,GAAG,wBAAwB;AAAA;AAAA;AAAA;AAAA,IAIzF,YAAY,aAAa,kBAAkB,KAAK,aAAa,GAAG,cAAc;AAAA,EAChF;AACF;AAIO,SAAS,iBAAiB,UAA4B;AAC3D,SACE,MAAM,QAAQ,QAAQ,KACtB,SAAS,KAAK,CAAC,MAAM;AACnB,UAAM,OAAO,OAAO,MAAM,YAAY,MAAM,OAAQ,EAAyB,OAAO;AACpF,WAAO,SAAS,YAAY,SAAS;AAAA,EACvC,CAAC;AAEL;AASO,SAAS,kBACd,MACA,UACmD;AACnD,MAAI,KAAK,aAAa,GAAG;AACvB,WAAO,EAAE,YAAY,aAAa,kBAAkB,KAAK,aAAa,GAAG,4BAA4B,EAAE;AAAA,EACzG;AACA,QAAM,gBAAgB,iBAAiB,QAAQ;AAC/C,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,aAAa,QAAQ,KAAK,WAAW,CAAC,KAAK;AAAA,IAC3C,eAAe,QAAQ,KAAK,QAAQ;AAAA,IACpC,qBAAqB,QAAQ,KAAK,iBAAiB,CAAC;AAAA,IACpD,QAAQ,YAAY,KAAK,MAAM;AAAA,EACjC,CAAC;AAED,QAAM,SACJ,iBAAiB,CAAC,KAAK,WAAW,IAC9B,GAAG,MAAM,MAAM,iGACf,MAAM;AACZ,SAAO;AAAA,IACL,YAAY,aAAa,kBAAkB,MAAM,OAAO,4BAA4B;AAAA,IACpF,kBAAkB;AAAA,EACpB;AACF;AAGA,SAAS,uBACP,WACA,kBACA,MACA;AACA,QAAM,oBAA6C,EAAE,OAAO,kBAAkB,MAAM,OAAO;AAC3F,MAAI,OAAO,KAAK,cAAc,SAAU,mBAAkB,aAAa,KAAK;AAC5E,MAAI,KAAK,SAAU,mBAAkB,WAAW,KAAK;AACrD,MAAI,KAAK,MAAO,mBAAkB,QAAQ,KAAK;AAK/C,MAAI,KAAK,SAAU,mBAAkB,YAAY,KAAK;AAGtD,oBAAkB,aAAa,mBAAmB,mBAAmB,SAAS,CAAC;AAC/E,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,EAAE,MAAM,yBAAyB;AAAA,IAC3C,OAAO;AAAA,MACL,EAAE,IAAI,OAAO,MAAM,UAAU,QAAQ,EAAE,QAAQ,QAAQ,MAAM,WAAW,QAAQ,QAAQ,EAAE;AAAA,MAC1F,EAAE,IAAI,eAAe,MAAM,qBAAqB,QAAQ,EAAE,OAAO,iBAAiB,GAAG,QAAQ,kBAAkB;AAAA,IACjH;AAAA,IACA,QAAQ,EAAE,MAAM,eAAe,QAAQ,WAAW;AAAA,EACpD;AACF;AAQA,SAAS,kBAAkB,aAAqB,sBAA8B;AAC5E,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,UAAU,EAAE,MAAM,yBAAyB;AAAA,IAC3C,OAAO;AAAA,MACL;AAAA,QACE,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,QAAQ;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,QAAQ,cAAc,QAAQ,iBAAiB,MAAM,oBAAoB;AAAA,QAC3E;AAAA,MACF;AAAA,IACF;AAAA,IACA,QAAQ,EAAE,MAAM,UAAU,QAAQ,OAAO;AAAA,EAC3C;AACF;AASA,eAAe,kBACb,mBACA,aAQC;AACD,QAAM,SAAS,oBAAoB,EAAE,KAAK,CAAC,SAAS,QAAQ,OAAO,MAAM,GAAG,IAAI;AAAA,CAAI,EAAE,CAAC;AACvF,MAAI,UAAU;AACd,MAAI,aAAa;AACjB,QAAM,aAAa,CAAC,UAAmB;AACrC,UAAM,IAAK,OAAsC;AACjD,QAAI,OAAO,MAAM,UAAU;AACzB,iBAAW;AACX,mBAAa;AAAA,IACf;AAAA,EACF;AAIA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACF,UAAM,KAAK,MAAM,OAAO,IAAI,mBAAmB,CAAC,CAAC;AACjD,eAAW,GAAG,KAAK;AACnB,gBAAY,KAAK,MAAM,MAAM,cAAc,GAAG,gBAAgB,aAAa,UAAU,oBAAoB,CAAC;AAC1G,iBAAa,MAAM,yBAAyB,GAAG,gBAAgB,aAAa,UAAU;AACtF,UAAM,QAAS,GAAG,gBAAgB,aAAa,YAC3C,UAAU;AACd,uBAAmB,OAAO,UAAU,YAAY,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;AAAA,EAChF,SAAS,GAAG;AACV,QAAI,aAAa,gBAAiB,QAAO,KAAK,cAAc,KAAK,UAAU,EAAE,MAAM,CAAC;AACpF,QAAI,aAAa,YAAa,QAAO,KAAK,gBAAgB,EAAE,OAAO;AACnE,WAAO,KAAK,eAAe,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,EACvE;AAGA,QAAM,WAAW,KAAK,UAAU,0BAA0B,SAAS,CAAC;AACpE,MAAI;AACF,UAAM,KAAK,MAAM,OAAO,IAAI,kBAAkB,aAAa,QAAQ,GAAG,CAAC,CAAC;AACxE,eAAW,GAAG,KAAK;AACnB,UAAM,WAAW,cAAc,MAAM,cAAc,GAAG,gBAAgB,QAAQ,MAAM,kBAAkB,CAAC;AACvG,WAAO,EAAE,WAAW,UAAU,YAAY,kBAAkB,cAAc,aAAa,UAAU,OAAU;AAAA,EAC7G,SAAS,GAAG;AACV,QAAI,aAAa,gBAAiB,QAAO,KAAK,cAAc,KAAK,UAAU,EAAE,MAAM,CAAC;AACpF,QAAI,aAAa,YAAa,QAAO,KAAK,gBAAgB,EAAE,OAAO;AACnE,WAAO,KAAK,eAAe,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,EACvE;AACF;AAEO,IAAM,uBAAuB,cAAc;AAAA,EAChD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EAWJ;AAAA,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,aACE;AAAA,IACJ;AAAA,IACA,KAAK,EAAE,MAAM,UAAU,aAAa,oEAAoE;AAAA,IACxG,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,cAAc,EAAE,MAAM,UAAU,aAAa,iDAAiD;AAAA,IAC9F,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,UAAU,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAC3F,OAAO,EAAE,MAAM,UAAU,aAAa,sDAAsD;AAAA,IAC5F,YAAY;AAAA,MACV,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,qBAAqB,EAAE,MAAM,UAAU,aAAa,0CAA0C;AAAA,IAC9F,gBAAgB,EAAE,MAAM,UAAU,aAAa,4DAA4D;AAAA,IAC3G,eAAe,EAAE,MAAM,UAAU,aAAa,kDAAkD;AAAA,IAChG,eAAe,EAAE,MAAM,UAAU,aAAa,2EAA2E;AAAA,IACzH,aAAa;AAAA,MACX,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aACE;AAAA,IAGJ;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,aACE;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,aACE;AAAA,IAKJ;AAAA,EACF;AAAA,EACA,MAAM,IAAI,EAAE,KAAK,GAAG;AAClB,UAAM,UAAU,OAAO,KAAK,IAAI;AAChC,UAAM,OAAO,KAAK,OAAO,OAAO,KAAK,IAAI,IAAI;AAC7C,QAAI,QAAQ,CAAC,oBAAoB,IAAI,GAAG;AACtC,cAAQ,OAAO;AAAA,QACb,GAAG,KAAK,UAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,gBAAgB,SAAS,oEAAoE,EAAE,GAAG,MAAM,CAAC,CAAC;AAAA;AAAA,MAC1J;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,UAAM,QAAQ,gBAAgB,KAAK,OAAO;AAC1C,QAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK;AAC/B,aAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,QAAI;AACJ,QAAI;AACF,kBAAY,MAAM,0BAA0B,OAAO;AAAA,IACrD,SAAS,GAAG;AACV,aAAO,KAAK,YAAY,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,IACpE;AACA,UAAM,OAAOD,MAAK,SAAS,WAAWA,MAAK,QAAQ,SAAS,CAAC;AAC7D,UAAM,UAAU,KAAK,MACjBA,MAAK,QAAQ,OAAO,KAAK,GAAG,CAAC,IAC7B,OACEA,MAAK,KAAK,QAAQ,IAAI,GAAG,OAAO,aAAa,MAAM,GAAG,IAAI,cAAc,IACxEA,MAAK,KAAKA,MAAK,QAAQ,SAAS,GAAG,GAAG,IAAI,oBAAoB;AACpE,QAAI,KAAM,OAAM,wBAAwB,MAAM,OAAO;AACrD,UAAM,SAASA,MAAK,QAAQ,OAAO;AACnC,UAAM,gBAAgBA,MAAK,KAAK,QAAQ,aAAa;AAGrD,UAAM,qBAAqBA,MAAK,KAAK,QAAQ,mBAAmB;AAChE,UAAM,SAAS,KAAK,WAAW,UAAU,UAAU;AACnD,UAAM,YAAY,KAAK,YAAY,IAAI,OAAO,KAAK,YAAY,CAAC,IAAI;AAKpE,QAAI,OAAO,SAAS,SAAS,GAAG;AAC9B,cAAQ,OAAO;AAAA,QACb,8BAAoB,SAAS,4CAA4C,SAAS;AAAA;AAAA,MAEpF;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AACF,eAAS,cAAc,IAAI;AAG3B,UAAI,KAAK,aAAa,EAAG,cAAa,kBAAkB,KAAK,aAAa,GAAG,4BAA4B;AAAA,IAC3G,SAAS,GAAG;AACV,aAAO,KAAK,iBAAiB,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,IACzE;AACA,UAAM,EAAE,kBAAkB,aAAa,WAAW,IAAI;AAGtD,UAAM,OAAO,MAAM,mBAAmB,KAAK,MAAM;AACjD,QAAI,WAAW,KAAM,QAAO,KAAK,UAAU,KAAK,KAAK;AACrD,UAAM,EAAE,SAAS,eAAe,QAAQ,IAAI;AAM5C,UAAM,gBAAgB,KAAK,gBAAgB,IAAI,OAAO,KAAK,gBAAgB,CAAC,IAAI;AAChF,UAAM,WAAW,MAAM,yBAAyB,WAAW,aAAa;AAIxE,UAAM,oBAAoB,uBAAuB,WAAW,kBAAkB;AAAA,MAC5E,WAAW,OAAO,SAAS,SAAS,IAAI,YAAY;AAAA,MACpD,UAAU,KAAK,WAAW,OAAO,KAAK,QAAQ,IAAI;AAAA,MAClD,OAAO,KAAK,QAAQ,OAAO,KAAK,KAAK,IAAI;AAAA,MACzC;AAAA,IACF,CAAC;AACD,UAAM,WAAW,MAAM,kBAAkB,mBAAmB,WAAW;AACvE,UAAM,EAAE,WAAW,YAAY,aAAa,IAAI;AAIhD,UAAM,QAAQ,SAAS;AACvB,UAAM,oBACH,KAAK,WAAW,eAAe,OAAO,KAAK,QAAQ,CAAC,GAAG,MAAM,YAC7D,QAAS,eAAe,KAAK,GAAG,OAAO,kBAAkB,KAAK,IAAK;AACtE,UAAM,cAAcA,MAAK,KAAK,kBAAkB,MAAM,KAAK,QAAQ,IAAI,GAAG,UAAU,QAAQ;AAC5F,UAAM,cAA6B,CAAC;AACpC,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA,mBAAmB,EAAE,iBAAiB,IAAI,CAAC;AAAA,MAC3C;AAAA,QACE,KAAK,UAAU,aAAa,CAAC,cAAc,gBAAgB,WAAW,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC;AAAA,QACjG,SAAS,iBAAiB,aAAa,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC;AAAA,MACnE;AAAA,IACF;AACA,UAAM,kBAAkB,aAAa,WAAW,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAChE,UAAM,WAAW,sBAAsB,SAAS,UAAU,OAAO;AACjE,UAAM,SAAS,eAAe,SAAS,UAAU,aAAa;AAC9D,UAAM,aAAa,OAAO,SACtB;AAAA,MACE,OAAO;AAAA,QACL,aAAa,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,iFAA4E,OAAO,WAAW,IAAI,sBAAsB,oBAAoB;AAAA,MACnM;AAAA,IACF,IACA,CAAC;AAKL,QAAI;AACJ,QAAI;AACF,eAAS,kBAAkB,MAAM,QAAQ;AAAA,IAC3C,SAAS,GAAG;AACV,aAAO,KAAK,iBAAiB,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,IACzE;AACA,UAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAI,oBAAoB,CAAC,KAAK,aAAa,KAAK,CAAC,KAAK,WAAW,KAAK,iBAAiB,QAAQ,GAAG;AAChG,cAAQ,OAAO,MAAM,0EAA8D,UAAU;AAAA,CAA4C;AAAA,IAC3I;AAIA,UAAM,MAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AACvC,UAAM,YAAY,8BAA8B,WAAW,QAAQ;AAKnE,UAAM,gBAAgB,QAAQ,SAAS;AAMvC,UAAM,UAAU,oBAAoB,+BAA+B,SAAS,GAAG,MAAM;AAQrF,QAAI;AACJ,QAAI;AACF,eAAS;AAAA,QACN,UAAqD,QAAQ;AAAA,QAC9D,KAAK,SAAS,OAAO,KAAK,MAAM,IAAI;AAAA,QACpC,cAAc,UAAU;AAAA,MAC1B;AAAA,IACF,SAAS,GAAG;AACV,aAAO,KAAK,UAAU,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,IAClE;AACA,UAAM,UAAU,WAAW,OAAO,KAAK;AACvC,QAAI,OAAO,UAAU;AACnB,cAAQ,OAAO;AAAA,QACb,iBAAO,OAAO,KAAK,oCAA+B,OAAO,KAAK,gEACvC,OAAO,KAAK,KAAK,QAAQ,CAAC,OAAI,QAAQ,CAAC;AAAA;AAAA,MAChE;AAAA,IACF;AAEA,UAAM,kBAAkBA,MAAK,KAAK,QAAQ,2BAA2B;AACrE,UAAM,GAAG,iCAAiC,iBAAiB,EAAE,WAAW,KAAK,CAAC;AAC9E,UAAM,qBAAqB,iBAAiB,OAAO;AACnD,UAAM,YAAYA,MAAK,KAAK,iBAAiB,YAAY;AAIzD,UAAM,cAAc,iBAAiB,WAAW,EAAE,gBAAgB,QAAQ,UAAU,GAAG,WAAW,CAAC;AACnG,UAAM,YAAY,MAAME,UAAS,WAAW,MAAM;AAIlD,UAAM,WAAW,UAAU,QAAQ,mBAAmB,MAAM,WAAW;AAGvE,QAAI,aAAa,aAAa,YAAY,KAAK,GAAG;AAChD;AAAA,QACE;AAAA,QACA;AAAA,MACF;AAAA,IACF;AACA,UAAM,UAAU,WAAW,UAAU,MAAM;AAK3C,UAAM,WAAW,MAAM,cAAc,QAAQ,UAAU;AACvD,QAAI,SAAS,gBAAiB,OAAM,qBAAqB,SAAS,iBAAiB,OAAO;AAM1F,UAAM,OAA0B;AAAA,MAC9B;AAAA,MACA;AAAA,MACA,wBAAwBF,MAAK,SAAS,QAAQ,eAAe;AAAA,MAC7D,yBAAyB,SAAS,kBAC9BA,MAAK,SAAS,QAAQ,SAAS,eAAe,IAC9C;AAAA,MACJ,eAAeA,MAAK,SAAS,QAAQ,aAAa;AAAA,MAClD,oBAAoBA,MAAK,SAAS,QAAQ,kBAAkB;AAAA,MAC5D;AAAA,MACA,SAAS,QAAQ,KAAK,OAAO;AAAA,MAC7B,WAAW,iBAAiB,KAAK,YAAY,CAAC;AAAA,MAC9C,GAAI,OAAO,iBAAiB,EAAE,gBAAgB,OAAO,eAAe,IAAI,CAAC;AAAA,MACzE,cAAc,OAAO;AAAA,MACrB,GAAI,OAAO,iBAAiB,SAAS,EAAE,kBAAkB,OAAO,iBAAiB,IAAI,CAAC;AAAA,MACtF,GAAI,KAAK,SAAS,EAAE,QAAQ,OAAO,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,MACrD,GAAI,KAAK,aAAa,EAAE,YAAY,OAAO,KAAK,UAAU,EAAE,IAAI,CAAC;AAAA,IACnE;AAEA,QAAI;AACJ,QAAI;AACJ,QAAI;AACF,eAAS,oBAAoB,WAAW,UAAU,IAAI;AACtD,eAAS,YAAY,WAAW,UAAU,UAAU;AAAA,IACtD,SAAS,GAAG;AACV,aAAO,KAAK,YAAY,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,IACpE;AAMA,QAAI,SAAS,mBAAmB,CAAC,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,UAAU,GAAG;AAC9E,YAAMG,IAAG,SAAS,iBAAiB,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IACrE;AAIA,UAAM,aAAa,MAAM,mBAAmB,2BAA2B,QAAQ,MAAM,GAAG,gBAAgB,CAAC;AAKzG,QAAI,CAAC,WAAW,IAAI;AAClB,YAAM,OAAO,OAAO;AACpB,YAAM,OAAQ,KAAK,QAAQ,CAAC;AAC5B,WAAK,6BAA6B,WAAW;AAC7C,WAAK,OAAO;AAAA,IACd;AACA,UAAM,UAAU,SAAS,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,GAAM,MAAM;AAKvE,UAAM;AAAA,MACJH,MAAK,KAAK,QAAQ,YAAY;AAAA,MAC9B,GAAG,KAAK,UAAU,EAAE,UAAU,KAAK,GAAG,MAAM,CAAC,CAAC;AAAA;AAAA,MAC9C;AAAA,IACF;AACA,QAAI,CAAC,WAAW,IAAI;AAClB,cAAQ,OAAO;AAAA,QACb,GAAG,KAAK;AAAA,UACN;AAAA,YACE,IAAI;AAAA,YACJ,OAAO,EAAE,MAAM,cAAc,QAAQ,WAAW,OAAO;AAAA,YACvD,aAAa;AAAA,YACb,aAAa;AAAA,YACb,GAAG,iBAAiB,QAAQ,MAAM;AAAA,YAClC,MAAM;AAAA,YACN,GAAG;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA;AAAA,MACH;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,UAAM,gBAAgB,QAAQ,IAAI,GAAG,CAAC,WAAW,WAAW,CAAC;AAK7D,UAAM,YAAY,qBAAqB,WAAW,OAAO;AACzD,QAAI,MAAM;AAGR,YAAM,iBAAiBA,MAAK,KAAK,QAAQ,gBAAgB;AACzD,UAAI,CAAE,MAAM,WAAW,cAAc,GAAI;AACvC,cAAM;AAAA,UACJ;AAAA,UACA,wBAAwB;AAAA,YACtB,OAAO,cAAc,IAAI;AAAA,YACzB,MAAM;AAAA,YACN,UAAU,gBAAgB,KAAK,WAAW,OAAO,KAAK,QAAQ,IAAI,MAAS;AAAA,YAC3E,SAAS,eAAe,OAAO,KAAK;AAAA,YACpC,oBAAoB,UAAU;AAAA,YAC9B,kBAAkB,KAAK,aAAa,OAAO,KAAK,UAAU,IAAI,UAAU;AAAA,YACxE,YAAY;AAAA,YACZ,aAAa,2BAA2B,SAAS;AAAA,UACnD,CAAC;AAAA,UACD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAIA,QAAI,MAAM;AACR,YAAM,iCAAiC;AAAA,QACrC;AAAA,QACA,OAAO,cAAc,IAAI;AAAA,QACzB,SAAS,CAAC,OAAO,KAAK;AAAA,QACtB;AAAA,QACA,oBAAoB,UAAU;AAAA,QAC9B,WAAW,MAAM,iBAAiB,OAAO;AAAA,MAC3C,CAAC;AAAA,IACH;AAEA,YAAQ,OAAO;AAAA,MACb,GAAG,KAAK;AAAA,QACN;AAAA,UACE,IAAI;AAAA,UACJ,aAAa;AAAA,UACb,aAAa;AAAA,UACb,kBAAkB,UAAU;AAAA,UAC5B,iBAAiB;AAAA,UACjB,QAAQ,OAAO;AAAA,UACf,GAAG;AAAA,UACH,GAAG,iBAAiB,QAAQ,MAAM;AAAA,UAClC,QAAQ;AAAA,YACN,aAAa;AAAA,YACb,QAAQ;AAAA,YACR,OAAO;AAAA,YACP,OAAO;AAAA,YACP,GAAI,mBAAmB,EAAE,oBAAoB,iBAAiB,IAAI,CAAC;AAAA,UACrE;AAAA,UACA,OAAO;AAAA,YACL,aAAa,OAAO;AAAA,YACpB,aAAa,OAAO,MAAM;AAAA,YAC1B,wBAAwB;AAAA,YACxB,uBAAuB,WAAW;AAAA;AAAA;AAAA,YAGlC,OAAQ,OAAO,UAAoD,OAAO;AAAA,UAC5E;AAAA,UACA,WAAW;AAAA,YACT,aAAa,yRAA+QA,MAAK,SAAS,aAAa,CAAC,uIAAuIA,MAAK,SAAS,kBAAkB,CAAC,0LAAqLA,MAAK,SAAS,kBAAkB,CAAC;AAAA,YACtrB,8BAA8B,OAAO;AAAA,YACrC,mBAAmB,OAAO,SAAS,IAAI,CAAC,OAAO;AAAA,cAC7C,OAAO,EAAE;AAAA,cACT,SAAS,EAAE;AAAA,cACX,mBAAmB,EAAE;AAAA,cACrB,MAAM,EAAE;AAAA,YACV,EAAE;AAAA,YACF,WAAW,OAAO;AAAA,YAClB,eAAe,OAAO;AAAA,YACtB,WAAW,OAAO;AAAA,YAClB,4BAA4B,OAAO;AAAA,YACnC,iBAAiB,OAAO;AAAA,YACxB,oBAAoB,OAAO;AAAA;AAAA;AAAA;AAAA,YAI3B,mBACE;AAAA;AAAA;AAAA;AAAA;AAAA,YAKF,GAAI,OAAO,SAAS,KAAK,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,SAAS,QAAQ,KAAK,YAAY,KAAK,UAAU,IACtG;AAAA,cACE,qBACE;AAAA,YACJ,IACA,CAAC;AAAA,YACL,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA;AAAA,IACH;AAAA,EACF;AACF,CAAC;","names":["readFile","rm","tmpdir","path","readFile","path","tmpdir","readFile","rm"]}
@@ -1,61 +0,0 @@
1
- import {
2
- reportError,
3
- reportInvalid
4
- } from "./chunk-54VIXBLO.js";
5
- import {
6
- testimonialSourceRefreshIntervalSchema,
7
- testimonialSourcesScheduleRequestSchema
8
- } from "./chunk-ZJVHZHYP.js";
9
- import "./chunk-GXDLWBOY.js";
10
- import "./chunk-VAOMHPEX.js";
11
- import "./chunk-XQIOCIDO.js";
12
- import "./chunk-ML7DLFFY.js";
13
- import {
14
- apiPost
15
- } from "./chunk-TOYLG3ZY.js";
16
- import "./chunk-E4ICSNSW.js";
17
- import "./chunk-YKSIHGIL.js";
18
- import {
19
- registerSchema,
20
- writeJson
21
- } from "./chunk-ZZFYDAJQ.js";
22
- import "./chunk-YQSBHWOI.js";
23
-
24
- // src/commands/testimonials/sources/schedule.ts
25
- import { defineCommand } from "citty";
26
- var INTERVALS = testimonialSourceRefreshIntervalSchema.options.join("|");
27
- registerSchema({
28
- command: "testimonials.sources.schedule",
29
- description: "Set how often a review source imports its new reviews on its own.",
30
- args: {
31
- id: { type: "string", description: "Source id from `testimonials sources list`", required: true },
32
- every: { type: "string", description: `Auto-sync cadence: ${INTERVALS}`, required: true }
33
- }
34
- });
35
- var scheduleCommand = defineCommand({
36
- meta: {
37
- name: "schedule",
38
- description: "Set a review source's auto-sync cadence.\n\nExample: baker testimonials sources schedule <source-id> --every monthly"
39
- },
40
- args: {
41
- id: { type: "positional", description: "Source id from `testimonials sources list`", required: true },
42
- every: { type: "string", description: INTERVALS, required: true }
43
- },
44
- run: async ({ args }) => {
45
- const parsed = testimonialSourcesScheduleRequestSchema.safeParse({
46
- id: String(args.id ?? ""),
47
- every: String(args.every ?? "").toLowerCase()
48
- });
49
- if (!parsed.success) reportInvalid(parsed.error.issues[0]);
50
- try {
51
- const data = await apiPost("/api/testimonials/sources/schedule", parsed.data);
52
- writeJson({ ok: true, data: { id: data.id, autoSync: parsed.data.every } });
53
- } catch (err) {
54
- reportError(err);
55
- }
56
- }
57
- });
58
- export {
59
- scheduleCommand
60
- };
61
- //# sourceMappingURL=schedule-ENH4N66R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/testimonials/sources/schedule.ts"],"sourcesContent":["import {\n type TestimonialSourcesScheduleResponse,\n testimonialSourceRefreshIntervalSchema,\n testimonialSourcesScheduleRequestSchema,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { apiPost } from \"../../../client.ts\";\nimport { writeJson } from \"../../../output.ts\";\nimport { registerSchema } from \"../../../schemas.ts\";\nimport { reportError, reportInvalid } from \"./shared.ts\";\n\nconst INTERVALS = testimonialSourceRefreshIntervalSchema.options.join(\"|\");\n\nregisterSchema({\n command: \"testimonials.sources.schedule\",\n description: \"Set how often a review source imports its new reviews on its own.\",\n args: {\n id: { type: \"string\", description: \"Source id from `testimonials sources list`\", required: true },\n every: { type: \"string\", description: `Auto-sync cadence: ${INTERVALS}`, required: true },\n },\n});\n\nexport const scheduleCommand = defineCommand({\n meta: {\n name: \"schedule\",\n description:\n \"Set a review source's auto-sync cadence.\\n\\nExample: baker testimonials sources schedule <source-id> --every monthly\",\n },\n args: {\n id: { type: \"positional\", description: \"Source id from `testimonials sources list`\", required: true },\n every: { type: \"string\", description: INTERVALS, required: true },\n },\n run: async ({ args }) => {\n const parsed = testimonialSourcesScheduleRequestSchema.safeParse({\n id: String(args.id ?? \"\"),\n every: String(args.every ?? \"\").toLowerCase(),\n });\n if (!parsed.success) reportInvalid(parsed.error.issues[0]);\n try {\n const data = await apiPost<TestimonialSourcesScheduleResponse>(\"/api/testimonials/sources/schedule\", parsed.data);\n writeJson({ ok: true, data: { id: data.id, autoSync: parsed.data.every } });\n } catch (err) {\n reportError(err);\n }\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,SAAS,qBAAqB;AAM9B,IAAM,YAAY,uCAAuC,QAAQ,KAAK,GAAG;AAEzE,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,UAAU,aAAa,8CAA8C,UAAU,KAAK;AAAA,IAChG,OAAO,EAAE,MAAM,UAAU,aAAa,sBAAsB,SAAS,IAAI,UAAU,KAAK;AAAA,EAC1F;AACF,CAAC;AAEM,IAAM,kBAAkB,cAAc;AAAA,EAC3C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,IAAI,EAAE,MAAM,cAAc,aAAa,8CAA8C,UAAU,KAAK;AAAA,IACpG,OAAO,EAAE,MAAM,UAAU,aAAa,WAAW,UAAU,KAAK;AAAA,EAClE;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,UAAM,SAAS,wCAAwC,UAAU;AAAA,MAC/D,IAAI,OAAO,KAAK,MAAM,EAAE;AAAA,MACxB,OAAO,OAAO,KAAK,SAAS,EAAE,EAAE,YAAY;AAAA,IAC9C,CAAC;AACD,QAAI,CAAC,OAAO,QAAS,eAAc,OAAO,MAAM,OAAO,CAAC,CAAC;AACzD,QAAI;AACF,YAAM,OAAO,MAAM,QAA4C,sCAAsC,OAAO,IAAI;AAChH,gBAAU,EAAE,IAAI,MAAM,MAAM,EAAE,IAAI,KAAK,IAAI,UAAU,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,IAC5E,SAAS,KAAK;AACZ,kBAAY,GAAG;AAAA,IACjB;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -1,66 +0,0 @@
1
- import {
2
- reportError
3
- } from "./chunk-TZKJNSZH.js";
4
- import {
5
- mediaSourceRefreshIntervalSchema,
6
- mediaSourcesScheduleRequestSchema
7
- } from "./chunk-GXDLWBOY.js";
8
- import {
9
- apiPost
10
- } from "./chunk-TOYLG3ZY.js";
11
- import "./chunk-E4ICSNSW.js";
12
- import "./chunk-YKSIHGIL.js";
13
- import {
14
- registerSchema,
15
- writeJson
16
- } from "./chunk-ZZFYDAJQ.js";
17
- import "./chunk-YQSBHWOI.js";
18
-
19
- // src/commands/media-sources/schedule.ts
20
- import { defineCommand } from "citty";
21
- registerSchema({
22
- command: "media-sources.schedule",
23
- description: "Set how often a connected source imports new posts on its own.",
24
- args: {
25
- key: { type: "string", description: "Source key, e.g. tiktok:acme", required: true },
26
- every: {
27
- type: "string",
28
- description: `Cadence: ${mediaSourceRefreshIntervalSchema.options.join("|")} (never = only on demand)`,
29
- required: true
30
- }
31
- }
32
- });
33
- var scheduleCommand = defineCommand({
34
- meta: {
35
- name: "schedule",
36
- description: "Set a source's auto-sync cadence.\n\nExample: baker media-sources schedule tiktok:acme --every weekly"
37
- },
38
- args: {
39
- key: { type: "positional", description: "Source key, e.g. tiktok:acme", required: true },
40
- every: { type: "string", description: "never|daily|weekly|monthly", required: true }
41
- },
42
- run: async ({ args }) => {
43
- const parsed = mediaSourcesScheduleRequestSchema.safeParse({
44
- key: String(args.key ?? ""),
45
- every: String(args.every ?? "").toLowerCase()
46
- });
47
- if (!parsed.success) {
48
- const issue = parsed.error.issues[0];
49
- writeJson({
50
- ok: false,
51
- error: { code: "VALIDATION_ERROR", message: issue ? `${issue.path.join(".")}: ${issue.message}` : "" }
52
- });
53
- process.exit(1);
54
- }
55
- try {
56
- const data = await apiPost("/api/media-sources/schedule", parsed.data);
57
- writeJson({ ok: true, data: { ...data, autoSync: parsed.data.every } });
58
- } catch (err) {
59
- reportError(err);
60
- }
61
- }
62
- });
63
- export {
64
- scheduleCommand
65
- };
66
- //# sourceMappingURL=schedule-KSIMVG5U.js.map
@@ -1,49 +0,0 @@
1
- import "./chunk-YQSBHWOI.js";
2
-
3
- // src/commands/scheduled-agents/index.ts
4
- import { defineCommand } from "citty";
5
- var scheduledAgentsCommand = defineCommand({
6
- meta: {
7
- name: "scheduled-agents",
8
- description: `Manage Scheduled agents. Subcommands: list, get, triggers, targets, create, update, delete, unstage, run, templates.
9
-
10
- A scheduled agent is a **trigger** and a **prompt**, and nothing else. The trigger is the whole of the "when" \u2014 a time, a cadence, a call-in from another tool, an event arriving, a Form being submitted, an A/B test finishing, a Task closing. The prompt is the whole of the "what": when the trigger fires, a Session opens with that prompt and does the job. There is no Task in between.
11
-
12
- Start with \`triggers\`: a time of day is only the most obvious way to start one, and most of what a marketer actually wants is a reaction to something. Then \`targets\` to point it at one thing \u2014 this Task, that agent's publish, one competitor \u2014 rather than every one.
13
-
14
- Drafts: create/update/delete stage changes on BAKER_CHAT_ID and apply when the chat is published; \`unstage\` takes one back before then. \`run\` fires a published item immediately. \`get\` on a published item says who its runs act as and which tools they load (runsAs).
15
-
16
- Publishing every run's work unreviewed is the user's switch, on the item \u2014 not a flag. Ask them to turn it on after this chat is published.
17
-
18
- Examples:
19
- baker scheduled-agents triggers
20
- baker scheduled-agents targets --trigger task.claimed --field taskId
21
- baker scheduled-agents list
22
- baker scheduled-agents get <id-or-temp_agent_id>
23
- baker scheduled-agents create --name "Weekly report" --description "..." --prompt "..." --cron "0 9 * * MON"
24
- baker scheduled-agents create --name "Chase a new lead" --description "..." --prompt "..." --trigger form.submitted --form quote
25
- baker scheduled-agents create --name "Welcome the first signup" --description "..." --prompt "..." --trigger event.received --event signup --occurrences 1
26
- baker scheduled-agents create --name "Check the SEO agent's work" --description "..." --prompt "..." --trigger session.published --agent <id>
27
- baker scheduled-agents update <id-or-temp_agent_id> --enabled false
28
- baker scheduled-agents delete <id-or-temp_agent_id>
29
- baker scheduled-agents unstage <id-or-temp_agent_id> [--index <n>]
30
- baker scheduled-agents run <id>
31
- Full guide: __tooling__/docs/tools/baker/scheduled-agents.md`
32
- },
33
- subCommands: {
34
- list: () => import("./list-B7GN44R3.js").then((m) => m.listCommand),
35
- get: () => import("./get-IWYF6PA4.js").then((m) => m.getCommand),
36
- triggers: () => import("./triggers-2VPLSNP7.js").then((m) => m.triggersCommand),
37
- targets: () => import("./targets-DBQNYE34.js").then((m) => m.targetsCommand),
38
- create: () => import("./create-NLNOXZ2T.js").then((m) => m.createCommand),
39
- update: () => import("./update-COMDOEYG.js").then((m) => m.updateCommand),
40
- delete: () => import("./delete-A3JJJHC6.js").then((m) => m.deleteCommand),
41
- unstage: () => import("./unstage-ABSCDW43.js").then((m) => m.unstageCommand),
42
- templates: () => import("./templates-J2NZIOY2.js").then((m) => m.templatesCommand),
43
- run: () => import("./run-NYJUDS32.js").then((m) => m.runCommand)
44
- }
45
- });
46
- export {
47
- scheduledAgentsCommand
48
- };
49
- //# sourceMappingURL=scheduled-agents-RM24BRGD.js.map
@@ -1,132 +0,0 @@
1
- import {
2
- describeSlots
3
- } from "./chunk-3BG2BVWN.js";
4
- import "./chunk-EIAA3XTT.js";
5
- import {
6
- FLOW_CATALOG,
7
- FLOW_FORM_FIELD_TYPES,
8
- flowCatalogEntry,
9
- flowCatalogTypes,
10
- flowNodeTriggers
11
- } from "./chunk-ZJVHZHYP.js";
12
- import "./chunk-GXDLWBOY.js";
13
- import "./chunk-VAOMHPEX.js";
14
- import "./chunk-XQIOCIDO.js";
15
- import "./chunk-ML7DLFFY.js";
16
- import "./chunk-TOYLG3ZY.js";
17
- import "./chunk-E4ICSNSW.js";
18
- import "./chunk-YKSIHGIL.js";
19
- import {
20
- registerSchema,
21
- writeJson
22
- } from "./chunk-ZZFYDAJQ.js";
23
- import "./chunk-YQSBHWOI.js";
24
-
25
- // src/commands/flows/schema.ts
26
- import { defineCommand } from "citty";
27
- registerSchema({
28
- command: "flows.schema",
29
- description: "The shape of one node or side-effect type: a pasteable skeleton, who fills each part, and the reference file with the craft. Start here before authoring anything in a form's _data.json.",
30
- args: {
31
- kind: { type: "positional", description: "node | side-effect. Omit to list both vocabularies.", required: false },
32
- type: { type: "positional", description: "The type, e.g. customForm or googleSpreadsheet", required: false }
33
- }
34
- });
35
- var KINDS = ["node", "side-effect"];
36
- function triggerReport(triggers) {
37
- return {
38
- fires: triggers.completion,
39
- available: triggers.available,
40
- ...triggers.why ? { why: triggers.why } : {}
41
- };
42
- }
43
- function triggerHints(triggers) {
44
- if (!triggers) return [];
45
- if (!triggers.completion) return [`No side effect can be added to this step as it stands: ${triggers.why}`];
46
- const others = triggers.available.filter((id) => id !== triggers.completion);
47
- return [
48
- `A side effect on this step carries \`triggerId: "${triggers.completion}"\`, and \`baker flows add-side-effect\` writes it for you. The trigger belongs to the STEP, not to the side-effect type: one that does not match is valid, ships, and never runs.` + (others.length > 0 ? ` Other moments this step raises: ${others.join(", ")}.` : "")
49
- ];
50
- }
51
- var schemaCommand = defineCommand({
52
- meta: {
53
- name: "schema",
54
- description: "Show a node or side-effect type's shape. Start here: baker flows schema node customForm \xB7 baker flows schema side-effect googleSpreadsheet \xB7 baker flows schema (lists both)"
55
- },
56
- args: {
57
- kind: { type: "positional", description: "node | side-effect", required: false },
58
- type: { type: "positional", description: "The type name", required: false }
59
- },
60
- run: ({ args }) => {
61
- const kind = args.kind ? String(args.kind) : void 0;
62
- const type = args.type ? String(args.type) : void 0;
63
- if (!kind) {
64
- writeJson({
65
- ok: true,
66
- data: {
67
- node: flowCatalogTypes("node"),
68
- "side-effect": flowCatalogTypes("side-effect"),
69
- formFieldTypes: FLOW_FORM_FIELD_TYPES
70
- },
71
- hints: [
72
- "baker flows schema node <type> \xB7 baker flows schema side-effect <type>",
73
- "`hubspot` is in both lists and they are different things: the node embeds a form on the page, the side effect fires a behavioural event.",
74
- "formFieldTypes are the `fieldtype` values INSIDE a customForm \u2014 a third vocabulary, not node types."
75
- ]
76
- });
77
- return;
78
- }
79
- if (!KINDS.includes(kind)) {
80
- writeJson({
81
- ok: false,
82
- error: { code: "VALIDATION_ERROR", message: `Unknown kind "${kind}".`, fix: `Expected: ${KINDS.join(" | ")}` }
83
- });
84
- process.exit(1);
85
- }
86
- if (!type) {
87
- writeJson({
88
- ok: true,
89
- data: { kind, types: flowCatalogTypes(kind) },
90
- hints: [`baker flows schema ${kind} <type>`]
91
- });
92
- return;
93
- }
94
- const entry = flowCatalogEntry(kind, type);
95
- if (!entry) {
96
- const alternate = FLOW_CATALOG.find((candidate) => candidate.type === type);
97
- writeJson({
98
- ok: false,
99
- error: {
100
- code: "NOT_FOUND",
101
- message: `No ${kind} type "${type}".`,
102
- fix: alternate ? `"${type}" is a ${alternate.kind} type, not a ${kind} type. Try: baker flows schema ${alternate.kind} ${type}` : `Known ${kind} types: ${flowCatalogTypes(kind).join(", ")}`
103
- }
104
- });
105
- process.exit(1);
106
- }
107
- const mappable = kind === "side-effect" ? describeSlots(type) : [];
108
- const triggers = kind === "node" ? flowNodeTriggers(entry.skeleton.nodeData) : null;
109
- writeJson({
110
- ok: true,
111
- data: {
112
- ...entry,
113
- ...mappable.length > 0 ? { mappable } : {},
114
- ...triggers ? { triggers: triggerReport(triggers) } : {}
115
- },
116
- hints: [
117
- `Full schema, gotchas and a worked example: ${entry.reference}`,
118
- ...triggerHints(triggers),
119
- ...mappable.length > 0 ? [
120
- `Mappable with \`baker flows map\`: ${mappable.map((slot) => slot.slot).join(", ")}. Run \`baker flows map <slug> --side-effect <id>\` with no --map to see the legal keys for one you already have.`
121
- ] : [],
122
- ...entry.owners ? [
123
- `You author everything except: ${Object.entries(entry.owners).filter(([, owner]) => owner !== "agent").map(([key, owner]) => `${key} (${owner})`).join(", ")}`
124
- ] : []
125
- ].filter(Boolean)
126
- });
127
- }
128
- });
129
- export {
130
- schemaCommand
131
- };
132
- //# sourceMappingURL=schema-JJVSWKGP.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/flows/schema.ts"],"sourcesContent":["import {\n FLOW_CATALOG,\n FLOW_FORM_FIELD_TYPES,\n type FlowNodeTriggers,\n flowCatalogEntry,\n flowCatalogTypes,\n flowNodeTriggers,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { describeSlots } from \"./mapping.ts\";\n\nregisterSchema({\n command: \"flows.schema\",\n description:\n \"The shape of one node or side-effect type: a pasteable skeleton, who fills each part, and the reference file with the craft. Start here before authoring anything in a form's _data.json.\",\n args: {\n kind: { type: \"positional\", description: \"node | side-effect. Omit to list both vocabularies.\", required: false },\n type: { type: \"positional\", description: \"The type, e.g. customForm or googleSpreadsheet\", required: false },\n },\n});\n\n/**\n * `hubspot` is a node type AND a side-effect type, and the reference file they\n * used to share put them at different heading depths — which is why the doc\n * carried a paragraph about heading depths. Taking the kind as an argument makes\n * that ambiguity unreachable, so it is required as soon as a type is named.\n */\nconst KINDS = [\"node\", \"side-effect\"] as const;\n\n/**\n * The trigger half of a node's answer.\n *\n * Carried on `schema node <type>` because `triggerId` is the one field on a\n * side effect that its own type does not decide — the STEP does. A mismatch is\n * written, passes every validator in the repo, and never runs, so the moment to\n * learn which id a step raises is before anything is authored, not after a CRM\n * quietly receives nothing.\n */\nfunction triggerReport(triggers: FlowNodeTriggers) {\n return {\n fires: triggers.completion,\n available: triggers.available,\n ...(triggers.why ? { why: triggers.why } : {}),\n };\n}\n\nfunction triggerHints(triggers: FlowNodeTriggers | null): string[] {\n if (!triggers) return [];\n if (!triggers.completion) return [`No side effect can be added to this step as it stands: ${triggers.why}`];\n const others = triggers.available.filter((id) => id !== triggers.completion);\n return [\n `A side effect on this step carries \\`triggerId: \"${triggers.completion}\"\\`, and \\`baker flows add-side-effect\\` writes it for you. The trigger belongs to the STEP, not to the side-effect type: one that does not match is valid, ships, and never runs.` +\n (others.length > 0 ? ` Other moments this step raises: ${others.join(\", \")}.` : \"\"),\n ];\n}\n\nexport const schemaCommand = defineCommand({\n meta: {\n name: \"schema\",\n description:\n \"Show a node or side-effect type's shape. Start here: baker flows schema node customForm · baker flows schema side-effect googleSpreadsheet · baker flows schema (lists both)\",\n },\n args: {\n kind: { type: \"positional\", description: \"node | side-effect\", required: false },\n type: { type: \"positional\", description: \"The type name\", required: false },\n },\n run: ({ args }) => {\n const kind = args.kind ? String(args.kind) : undefined;\n const type = args.type ? String(args.type) : undefined;\n\n if (!kind) {\n writeJson({\n ok: true,\n data: {\n node: flowCatalogTypes(\"node\"),\n \"side-effect\": flowCatalogTypes(\"side-effect\"),\n formFieldTypes: FLOW_FORM_FIELD_TYPES,\n },\n hints: [\n \"baker flows schema node <type> · baker flows schema side-effect <type>\",\n \"`hubspot` is in both lists and they are different things: the node embeds a form on the page, the side effect fires a behavioural event.\",\n \"formFieldTypes are the `fieldtype` values INSIDE a customForm — a third vocabulary, not node types.\",\n ],\n });\n return;\n }\n\n if (!(KINDS as readonly string[]).includes(kind)) {\n writeJson({\n ok: false,\n error: { code: \"VALIDATION_ERROR\", message: `Unknown kind \"${kind}\".`, fix: `Expected: ${KINDS.join(\" | \")}` },\n });\n process.exit(1);\n }\n\n if (!type) {\n writeJson({\n ok: true,\n data: { kind, types: flowCatalogTypes(kind as \"node\" | \"side-effect\") },\n hints: [`baker flows schema ${kind} <type>`],\n });\n return;\n }\n\n const entry = flowCatalogEntry(kind as \"node\" | \"side-effect\", type);\n if (!entry) {\n const alternate = FLOW_CATALOG.find((candidate) => candidate.type === type);\n writeJson({\n ok: false,\n error: {\n code: \"NOT_FOUND\",\n message: `No ${kind} type \"${type}\".`,\n fix: alternate\n ? `\"${type}\" is a ${alternate.kind} type, not a ${kind} type. Try: baker flows schema ${alternate.kind} ${type}`\n : `Known ${kind} types: ${flowCatalogTypes(kind as \"node\" | \"side-effect\").join(\", \")}`,\n },\n });\n process.exit(1);\n }\n\n // What can be mapped into it, and where the key names come from. The\n // skeleton shows a closed set only as a side effect of every key being\n // required — `eventParams: []` teaches nothing, and an account-sourced slot\n // teaches nothing either. This says it outright, before anything is authored.\n const mappable = kind === \"side-effect\" ? describeSlots(type) : [];\n\n // Which trigger a side effect on this step would have to carry. Resolved\n // from the skeleton above rather than described separately, so it always\n // answers for the exact node `baker flows add-node` mints — a `text` step\n // raises a different id depending on `allowNextNode`, and this way the two\n // can never disagree.\n const triggers = kind === \"node\" ? flowNodeTriggers(entry.skeleton.nodeData) : null;\n\n writeJson({\n ok: true,\n data: {\n ...entry,\n ...(mappable.length > 0 ? { mappable } : {}),\n ...(triggers ? { triggers: triggerReport(triggers) } : {}),\n },\n hints: [\n `Full schema, gotchas and a worked example: ${entry.reference}`,\n ...triggerHints(triggers),\n ...(mappable.length > 0\n ? [\n `Mappable with \\`baker flows map\\`: ${mappable.map((slot) => slot.slot).join(\", \")}. Run \\`baker flows map <slug> --side-effect <id>\\` with no --map to see the legal keys for one you already have.`,\n ]\n : []),\n ...(entry.owners\n ? [\n `You author everything except: ${Object.entries(entry.owners)\n .filter(([, owner]) => owner !== \"agent\")\n .map(([key, owner]) => `${key} (${owner})`)\n .join(\", \")}`,\n ]\n : []),\n ].filter(Boolean),\n });\n },\n});\n"],"mappings":"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","names":[]}
@@ -1,63 +0,0 @@
1
- import {
2
- findSchema,
3
- listSchemas,
4
- writeJson
5
- } from "./chunk-ZZFYDAJQ.js";
6
- import "./chunk-YQSBHWOI.js";
7
-
8
- // src/commands/schema.ts
9
- import { defineCommand } from "citty";
10
- function narrowToFamily(commandName, available) {
11
- const segments = commandName.split(".");
12
- const prefix = segments[0] === "ads" && segments[1] ? `ads.${segments[1]}.` : `${segments[0]}.`;
13
- const siblings = available.filter((name) => name.startsWith(prefix));
14
- return siblings.length > 0 ? siblings : available;
15
- }
16
- var schemaCommand = defineCommand({
17
- meta: {
18
- name: "schema",
19
- description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images search (or images.search)"
20
- },
21
- args: {
22
- command: {
23
- type: "positional",
24
- description: "Command path, as typed (images list) or dotted (images.list). Omit to list all.",
25
- required: false
26
- }
27
- },
28
- run: ({ args }) => {
29
- const words = args._.filter((word) => typeof word === "string" && word.length > 0);
30
- if (words.length === 0) {
31
- const schemas = listSchemas();
32
- writeJson({ ok: true, data: { commands: schemas } });
33
- return;
34
- }
35
- const commandName = words.join(".");
36
- const schema = findSchema(words);
37
- if (!schema) {
38
- const all = listSchemas();
39
- const available = narrowToFamily(commandName, all);
40
- const segments = commandName.split(".");
41
- const family = segments[0] === "ads" && segments[1] ? `ads-${segments[1]}` : segments[0];
42
- const scope = available.length < all.length ? ` in the "${family}" family` : "";
43
- writeJson({
44
- ok: false,
45
- error: {
46
- code: "NOT_FOUND",
47
- message: `Schema "${commandName}" not found. Available${scope}: ${available.join(", ")}`,
48
- fix: {
49
- action: `Run the command with --help for exact args, and read __tooling__/docs/tools/baker/${family}.md`,
50
- explanation: "Not every command registers a schema; --help and the family doc are the ground truth for those."
51
- }
52
- }
53
- });
54
- process.exit(1);
55
- }
56
- writeJson({ ok: true, data: schema });
57
- }
58
- });
59
- export {
60
- narrowToFamily,
61
- schemaCommand
62
- };
63
- //# sourceMappingURL=schema-MT76C7XK.js.map