@koda-sl/baker-cli 0.447.0 → 0.448.0-dev.ccc3c9a37

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 (1400) hide show
  1. package/README.md +231 -42
  2. package/dist/account-JG7QD522.js +79 -0
  3. package/dist/account-V6PB6PA5.js +80 -0
  4. package/dist/account-VLPX7EZT.js +49 -0
  5. package/dist/account-reads-4P5L6CJN.js +218 -0
  6. package/dist/account-reads-4P5L6CJN.js.map +1 -0
  7. package/dist/account-writes-BGREY7ZL.js +66 -0
  8. package/dist/accounts-2FINK5GZ.js +114 -0
  9. package/dist/accounts-2UV5Z3Y6.js +75 -0
  10. package/dist/accounts-3EX2PFJB.js +77 -0
  11. package/dist/accounts-G2QT3ZVP.js +115 -0
  12. package/dist/accounts-N63J5YTK.js +611 -0
  13. package/dist/actions-PA2BPIYO.js +55 -0
  14. package/dist/active-entities-RDXDSMA2.js +103 -0
  15. package/dist/activecampaign-EE5ERO25.js +897 -0
  16. package/dist/activecampaign-EE5ERO25.js.map +1 -0
  17. package/dist/activities-RBTU2Q24.js +74 -0
  18. package/dist/ad-group-writes-5NTRJTVE.js +170 -0
  19. package/dist/ad-groups-4OTAKWUC.js +68 -0
  20. package/dist/ad-writes-T7W3DDKK.js +174 -0
  21. package/dist/add-4VKA4NDH.js +105 -0
  22. package/dist/add-MQO33HL3.js +97 -0
  23. package/dist/add-MYPHHYC4.js +302 -0
  24. package/dist/add-MYPHHYC4.js.map +1 -0
  25. package/dist/add-QM7ANAVG.js +104 -0
  26. package/dist/add-accounts-VDSWHJ4K.js +91 -0
  27. package/dist/add-accounts-VDSWHJ4K.js.map +1 -0
  28. package/dist/ads-HYODBAPV.js +128 -0
  29. package/dist/ads-HYODBAPV.js.map +1 -0
  30. package/dist/ads-IJCFN2N3.js +113 -0
  31. package/dist/ads-QKMLAPZC.js +40 -0
  32. package/dist/ads-XYAWONXR.js +77 -0
  33. package/dist/adsets-DPTIKGTG.js +176 -0
  34. package/dist/advertisers-ITFXIXUW.js +125 -0
  35. package/dist/advertisers-ITFXIXUW.js.map +1 -0
  36. package/dist/advertisers-SZFDOPBQ.js +120 -0
  37. package/dist/analytics-HFBYIPZ7.js +433 -0
  38. package/dist/analytics-NDZR33ZJ.js +1976 -0
  39. package/dist/analytics-NDZR33ZJ.js.map +1 -0
  40. package/dist/animate-LUKNHCF4.js +480 -0
  41. package/dist/assign-QCICUD72.js +77 -0
  42. package/dist/audience-size-HML4BLHJ.js +94 -0
  43. package/dist/audiences-BSABKS5K.js +268 -0
  44. package/dist/audiences-FWOOSUSJ.js +78 -0
  45. package/dist/audiences-VK4M7GLQ.js +85 -0
  46. package/dist/audit-DUM55J5U.js +151 -0
  47. package/dist/audit-JR5R75XK.js +88 -0
  48. package/dist/autocomplete-VX4PMMLR.js +111 -0
  49. package/dist/avatars-5KCRSUJ3.js +38 -0
  50. package/dist/bid-pricing-AIUACXUH.js +99 -0
  51. package/dist/brand-UBTC2WXR.js +22 -0
  52. package/dist/brief-NU7ZGPXO.js +490 -0
  53. package/dist/brief-NU7ZGPXO.js.map +1 -0
  54. package/dist/businesses-P3RX4UXS.js +53 -0
  55. package/dist/campaign-groups-SJZEDIBL.js +95 -0
  56. package/dist/campaign-writes-5BPVXG4C.js +170 -0
  57. package/dist/campaign-writes-VE6QLIDA.js +165 -0
  58. package/dist/campaigns-JEWEDCTC.js +109 -0
  59. package/dist/campaigns-MEIMSHJF.js +110 -0
  60. package/dist/campaigns-NCGJNJKS.js +107 -0
  61. package/dist/campaigns-XY7QWHDN.js +76 -0
  62. package/dist/canvas-DK2DH7BA.js +46 -0
  63. package/dist/canvas-DK2DH7BA.js.map +1 -0
  64. package/dist/capabilities-W6SPXOPF.js +144 -0
  65. package/dist/cards-CLD4WX6G.js +85 -0
  66. package/dist/catalog-W6RBOIOF.js +64 -0
  67. package/dist/catalog-W6RBOIOF.js.map +1 -0
  68. package/dist/catalogs-DINPKQXY.js +128 -0
  69. package/dist/changes-N2YZXAPF.js +135 -0
  70. package/dist/chatgpt-TPAP6BVY.js +47 -0
  71. package/dist/chats-FKVVBXVF.js +262 -0
  72. package/dist/chunk-237WE5LX.js +455 -0
  73. package/dist/chunk-237WE5LX.js.map +1 -0
  74. package/dist/chunk-24IQ6K7K.js +103 -0
  75. package/dist/chunk-2FZG5DD2.js +297 -0
  76. package/dist/chunk-2T3EH2MU.js +363 -0
  77. package/dist/chunk-2Y5UE2CV.js +174 -0
  78. package/dist/chunk-2ZZR2SOF.js +215 -0
  79. package/dist/chunk-2ZZR2SOF.js.map +1 -0
  80. package/dist/chunk-3KPQDXIU.js +1830 -0
  81. package/dist/chunk-4AFGT3L3.js +46 -0
  82. package/dist/chunk-4JKBMKFC.js +225 -0
  83. package/dist/chunk-4KBWL7S4.js +610 -0
  84. package/dist/chunk-4R3QKEDV.js +136 -0
  85. package/dist/chunk-536R4RRM.js +166 -0
  86. package/dist/chunk-536R4RRM.js.map +1 -0
  87. package/dist/chunk-57XJ7QF7.js +65 -0
  88. package/dist/chunk-57XJ7QF7.js.map +1 -0
  89. package/dist/chunk-6AJ6ZD73.js +172 -0
  90. package/dist/chunk-6AJ6ZD73.js.map +1 -0
  91. package/dist/chunk-6SL6463H.js +309 -0
  92. package/dist/chunk-7TRSFEHZ.js +51 -0
  93. package/dist/chunk-AOCG7COT.js +474 -0
  94. package/dist/chunk-AOCG7COT.js.map +1 -0
  95. package/dist/chunk-APNV7FMK.js +191 -0
  96. package/dist/chunk-AR7PU7BB.js +76 -0
  97. package/dist/chunk-AR7PU7BB.js.map +1 -0
  98. package/dist/chunk-B2HLSTK6.js +392 -0
  99. package/dist/chunk-B2HLSTK6.js.map +1 -0
  100. package/dist/chunk-B2VKGTBS.js +3151 -0
  101. package/dist/chunk-B2VKGTBS.js.map +1 -0
  102. package/dist/chunk-BC2BXRXY.js +2887 -0
  103. package/dist/chunk-BC2BXRXY.js.map +1 -0
  104. package/dist/chunk-BC6M5YYV.js +1599 -0
  105. package/dist/chunk-BC6M5YYV.js.map +1 -0
  106. package/dist/chunk-BCSOWRQL.js +76 -0
  107. package/dist/chunk-BIZH3X6P.js +817 -0
  108. package/dist/chunk-BIZH3X6P.js.map +1 -0
  109. package/dist/chunk-BJEW3LST.js +296 -0
  110. package/dist/chunk-BYKUAX26.js +106 -0
  111. package/dist/chunk-C4KJHTQU.js +1079 -0
  112. package/dist/chunk-C4KJHTQU.js.map +1 -0
  113. package/dist/chunk-C7NPNSFO.js +169 -0
  114. package/dist/chunk-CAMX6OHF.js +3182 -0
  115. package/dist/chunk-CAMX6OHF.js.map +1 -0
  116. package/dist/chunk-CLK2FPAV.js +76 -0
  117. package/dist/chunk-CLK2FPAV.js.map +1 -0
  118. package/dist/chunk-CVIMIOPO.js +94 -0
  119. package/dist/chunk-D3RTGIT4.js +2102 -0
  120. package/dist/chunk-D3RTGIT4.js.map +1 -0
  121. package/dist/chunk-DAKIMGUS.js +74 -0
  122. package/dist/chunk-DCRUGS3G.js +25 -0
  123. package/dist/chunk-DJPCTTUN.js +1743 -0
  124. package/dist/chunk-DJPCTTUN.js.map +1 -0
  125. package/dist/chunk-DJUHGO3O.js +547 -0
  126. package/dist/chunk-DJUHGO3O.js.map +1 -0
  127. package/dist/chunk-DMA77LLI.js +106 -0
  128. package/dist/chunk-EEEAC655.js +45 -0
  129. package/dist/chunk-EEEAC655.js.map +1 -0
  130. package/dist/chunk-EESOZY5S.js +26 -0
  131. package/dist/chunk-EIZMOICE.js +175 -0
  132. package/dist/chunk-F3IVR3V3.js +136 -0
  133. package/dist/chunk-FSX6CQ2Z.js +188 -0
  134. package/dist/chunk-G7LAQE56.js +56 -0
  135. package/dist/chunk-G7QKXFQ2.js +66 -0
  136. package/dist/chunk-G7XY4T6K.js +23 -0
  137. package/dist/chunk-GIWHHCD6.js +145 -0
  138. package/dist/chunk-GIWHHCD6.js.map +1 -0
  139. package/dist/chunk-GRJCZF2H.js +5187 -0
  140. package/dist/chunk-GRJCZF2H.js.map +1 -0
  141. package/dist/chunk-HCDCWXSU.js +346 -0
  142. package/dist/chunk-HKSLIV4T.js +533 -0
  143. package/dist/chunk-HKSLIV4T.js.map +1 -0
  144. package/dist/chunk-I2DNBEV6.js +4227 -0
  145. package/dist/chunk-I2DNBEV6.js.map +1 -0
  146. package/dist/chunk-I4IVUAQN.js +337 -0
  147. package/dist/chunk-ICJFL7DU.js +35 -0
  148. package/dist/chunk-ICJFL7DU.js.map +1 -0
  149. package/dist/chunk-IWNZCYWI.js +74 -0
  150. package/dist/chunk-JF5LNI6O.js +84 -0
  151. package/dist/chunk-JJZBZYNK.js +96 -0
  152. package/dist/chunk-JPK34QPS.js +134 -0
  153. package/dist/chunk-JPK34QPS.js.map +1 -0
  154. package/dist/chunk-JZP5IODJ.js +98 -0
  155. package/dist/chunk-KL5VTXIK.js +149 -0
  156. package/dist/chunk-KL5VTXIK.js.map +1 -0
  157. package/dist/chunk-KWMYTVHI.js +455 -0
  158. package/dist/chunk-LFGCOAB4.js +75 -0
  159. package/dist/chunk-LLN6WTER.js +665 -0
  160. package/dist/chunk-LLN6WTER.js.map +1 -0
  161. package/dist/chunk-LO7OQKUD.js +4410 -0
  162. package/dist/chunk-LO7OQKUD.js.map +1 -0
  163. package/dist/chunk-LPRUP3ZX.js +172 -0
  164. package/dist/chunk-MAGSNHYB.js +6214 -0
  165. package/dist/chunk-MAGSNHYB.js.map +1 -0
  166. package/dist/chunk-MD3VH5UG.js +84 -0
  167. package/dist/chunk-MFORE6F4.js +19 -0
  168. package/dist/chunk-MMBHCAON.js +160 -0
  169. package/dist/chunk-MMOTJIV6.js +216 -0
  170. package/dist/chunk-MMOTJIV6.js.map +1 -0
  171. package/dist/chunk-NIGGMK7L.js +125 -0
  172. package/dist/chunk-NN7A2ILR.js +433 -0
  173. package/dist/chunk-O356YNIW.js +509 -0
  174. package/dist/chunk-O356YNIW.js.map +1 -0
  175. package/dist/chunk-OUQMJRH6.js +159 -0
  176. package/dist/chunk-OXKUWTFL.js +494 -0
  177. package/dist/chunk-P5T7OZKV.js +26 -0
  178. package/dist/chunk-PAJJXZ3Z.js +170 -0
  179. package/dist/chunk-PC56KVAD.js +74 -0
  180. package/dist/chunk-PEWNEPDR.js +206 -0
  181. package/dist/chunk-PY4FAOW6.js +275 -0
  182. package/dist/chunk-PY4FAOW6.js.map +1 -0
  183. package/dist/chunk-Q2T4XZG4.js +139 -0
  184. package/dist/chunk-QEHICHMP.js +875 -0
  185. package/dist/chunk-QEHICHMP.js.map +1 -0
  186. package/dist/chunk-RCR6RVYE.js +274 -0
  187. package/dist/chunk-RH2H5PBV.js +111 -0
  188. package/dist/chunk-S3L2ITS7.js +111 -0
  189. package/dist/chunk-S3L2ITS7.js.map +1 -0
  190. package/dist/chunk-S3XM4LD3.js +57 -0
  191. package/dist/chunk-SEPPFM5S.js +228 -0
  192. package/dist/chunk-SEPPFM5S.js.map +1 -0
  193. package/dist/chunk-SFHL3KWY.js +96 -0
  194. package/dist/chunk-SQ7DRYCC.js +150 -0
  195. package/dist/chunk-SSVZM3P6.js +333 -0
  196. package/dist/chunk-T64IRDKW.js +52 -0
  197. package/dist/chunk-T64IRDKW.js.map +1 -0
  198. package/dist/chunk-TMNLIA7R.js +60 -0
  199. package/dist/chunk-UF55TADX.js +92 -0
  200. package/dist/chunk-UGI33KTO.js +55 -0
  201. package/dist/chunk-UK2OTLT3.js +197 -0
  202. package/dist/chunk-UU3FGKUW.js +207 -0
  203. package/dist/chunk-UUBHU2TY.js +304 -0
  204. package/dist/chunk-UUBHU2TY.js.map +1 -0
  205. package/dist/chunk-UX7HIGS7.js +67 -0
  206. package/dist/chunk-VDZIGI2C.js +98 -0
  207. package/dist/chunk-VF6JFG27.js +846 -0
  208. package/dist/chunk-VF6JFG27.js.map +1 -0
  209. package/dist/chunk-VKVIBQP3.js +486 -0
  210. package/dist/chunk-VLF2M4GZ.js +592 -0
  211. package/dist/chunk-VTF7XNOP.js +58 -0
  212. package/dist/chunk-WDA3L4NF.js +382 -0
  213. package/dist/chunk-WMN2WKNZ.js +1442 -0
  214. package/dist/chunk-WMN2WKNZ.js.map +1 -0
  215. package/dist/chunk-XDV6Q33B.js +42 -0
  216. package/dist/chunk-XQIOCIDO.js +204 -0
  217. package/dist/chunk-XQIOCIDO.js.map +1 -0
  218. package/dist/chunk-XYC26BDM.js +133 -0
  219. package/dist/chunk-YHQYDNYD.js +23992 -0
  220. package/dist/chunk-YHQYDNYD.js.map +1 -0
  221. package/dist/chunk-YOARYFC2.js +6667 -0
  222. package/dist/chunk-YOARYFC2.js.map +1 -0
  223. package/dist/chunk-YPCVPDU7.js +455 -0
  224. package/dist/chunk-YPCVPDU7.js.map +1 -0
  225. package/dist/chunk-YTWNY3RF.js +97 -0
  226. package/dist/claim-JLVISHS4.js +197 -0
  227. package/dist/cli.js +41 -37
  228. package/dist/cli.js.map +1 -1
  229. package/dist/client-G6DGRGKT.js +19 -0
  230. package/dist/code-AYN42EK7.js +76 -0
  231. package/dist/companies-XDMOP2GL.js +195 -0
  232. package/dist/complete-XM7VLC4F.js +81 -0
  233. package/dist/config-UE7GCROG.js +88 -0
  234. package/dist/connect-VTDKGYP3.js +42 -0
  235. package/dist/content-5LHM4PBE.js +85 -0
  236. package/dist/content-5LHM4PBE.js.map +1 -0
  237. package/dist/conversation-F53OE25Y.js +93 -0
  238. package/dist/conversion-report-35MLL3FA.js +125 -0
  239. package/dist/conversion-upload-command-CV2TA7OV.js +438 -0
  240. package/dist/conversion-writes-NSZPNMPE.js +120 -0
  241. package/dist/conversions-7YO6DDL3.js +135 -0
  242. package/dist/conversions-XNISCCC2.js +76 -0
  243. package/dist/countries-NMWPKFFW.js +82 -0
  244. package/dist/create-ARERZYCL.js +59 -0
  245. package/dist/create-C6ZVYIF5.js +207 -0
  246. package/dist/create-FAPJFCZE.js +235 -0
  247. package/dist/create-M7TUO3XS.js +130 -0
  248. package/dist/creatives-3YIV6IOK.js +182 -0
  249. package/dist/creatives-QZCO6WGH.js +51 -0
  250. package/dist/creatives-WJLJ3NKP.js +87 -0
  251. package/dist/credentials-2DO23MYD.js +287 -0
  252. package/dist/credentials-2DO23MYD.js.map +1 -0
  253. package/dist/critique-56MNXW7R.js +1449 -0
  254. package/dist/critique-KRIKEHF6.js +213 -0
  255. package/dist/crm-OETFQNR3.js +224 -0
  256. package/dist/crm-WXCFB4TU.js +318 -0
  257. package/dist/crop-VCP2JLQL.js +113 -0
  258. package/dist/currency-MNNDKY4Z.js +88 -0
  259. package/dist/custom-conversions-CIU525HM.js +125 -0
  260. package/dist/customers-GTPEABJI.js +56 -0
  261. package/dist/decide-NFTEKQKC.js +199 -0
  262. package/dist/decide-NFTEKQKC.js.map +1 -0
  263. package/dist/delete-5CURRI25.js +71 -0
  264. package/dist/delete-CLC2Q2OE.js +63 -0
  265. package/dist/delete-CQ6Q3URI.js +54 -0
  266. package/dist/delete-JIRZBBDD.js +69 -0
  267. package/dist/delete-LD3F4UIW.js +66 -0
  268. package/dist/delete-LGZ5OI4C.js +71 -0
  269. package/dist/demographics-EK2ZPHWK.js +138 -0
  270. package/dist/describe-BNB6643C.js +97 -0
  271. package/dist/describe-ZXGFTCDR.js +97 -0
  272. package/dist/dimensions-IU4ETG4U.js +101 -0
  273. package/dist/discard-VWCXYJWU.js +66 -0
  274. package/dist/discover-4EQWGIAN.js +172 -0
  275. package/dist/discover-4N3V5K2R.js +93 -0
  276. package/dist/discover-4N3V5K2R.js.map +1 -0
  277. package/dist/domain-I2SAGVAB.js +98 -0
  278. package/dist/download-D7TB4744.js +299 -0
  279. package/dist/draft-4VOOSJQJ.js +233 -0
  280. package/dist/draft-6KG2YFOY.js +328 -0
  281. package/dist/draft-APDGACIC.js +306 -0
  282. package/dist/draft-D76C4JR3.js +103 -0
  283. package/dist/draft-HFH2Y6F5.js +281 -0
  284. package/dist/draft-NLUJX7TA.js +307 -0
  285. package/dist/draft-NLUJX7TA.js.map +1 -0
  286. package/dist/draft-NVVWWQVC.js +217 -0
  287. package/dist/draft-NWLPLTWM.js +100 -0
  288. package/dist/engine/index.d.ts +12 -0
  289. package/dist/engine/index.js +13 -14
  290. package/dist/env-LHLGM2YJ.js +43 -0
  291. package/dist/experiment-4SUIXVBP.js +1397 -0
  292. package/dist/experiment-4SUIXVBP.js.map +1 -0
  293. package/dist/export-VGCFD7GL.js +168 -0
  294. package/dist/extract-32J7V2RX.js +113 -0
  295. package/dist/facets-WVI6VBDC.js +114 -0
  296. package/dist/favorites-WKV5H5OF.js +178 -0
  297. package/dist/feed-2CRO4HA6.js +177 -0
  298. package/dist/feed-2CRO4HA6.js.map +1 -0
  299. package/dist/feedback-NMNKYEMU.js +66 -0
  300. package/dist/feedback-record-2VYBMWMO.js +175 -0
  301. package/dist/fetch-CENBDLT6.js +176 -0
  302. package/dist/fetch-XQFPE3MI.js +139 -0
  303. package/dist/find-PNDKEOXT.js +134 -0
  304. package/dist/fit-SEWGCEW5.js +45 -0
  305. package/dist/flows-3N4RPGSP.js +247 -0
  306. package/dist/flows-3N4RPGSP.js.map +1 -0
  307. package/dist/follow-BB5KUEXZ.js +94 -0
  308. package/dist/follow-BB5KUEXZ.js.map +1 -0
  309. package/dist/follow-competitors-EURYGGXE.js +112 -0
  310. package/dist/follow-competitors-EURYGGXE.js.map +1 -0
  311. package/dist/following-CA5BQXYB.js +113 -0
  312. package/dist/following-CA5BQXYB.js.map +1 -0
  313. package/dist/fonts-KUCQAR7N.js +34 -0
  314. package/dist/forecast-G5KRTVDM.js +168 -0
  315. package/dist/forecast-G5KRTVDM.js.map +1 -0
  316. package/dist/forecast-PI52G2GL.js +104 -0
  317. package/dist/funding-ZRC25X5I.js +85 -0
  318. package/dist/funnel-WGFMUWQP.js +394 -0
  319. package/dist/funnel-WGFMUWQP.js.map +1 -0
  320. package/dist/ga4-YDKXVJOC.js +55 -0
  321. package/dist/generate-BVMMX3SS.js +262 -0
  322. package/dist/get-7MSF4RVQ.js +59 -0
  323. package/dist/get-FILH7BDT.js +78 -0
  324. package/dist/get-FILH7BDT.js.map +1 -0
  325. package/dist/get-KFVPIDIA.js +61 -0
  326. package/dist/get-NHQ2XYKZ.js +63 -0
  327. package/dist/get-TCDAYTZA.js +56 -0
  328. package/dist/get-TCDAYTZA.js.map +1 -0
  329. package/dist/get-UMMTY74K.js +92 -0
  330. package/dist/get-YM77HCL5.js +63 -0
  331. package/dist/gif-X323HXS2.js +94 -0
  332. package/dist/google-76A4MHQH.js +136 -0
  333. package/dist/google-OZTCY7HD.js +3190 -0
  334. package/dist/google-OZTCY7HD.js.map +1 -0
  335. package/dist/google-ads-S6O4MLKA.js +195 -0
  336. package/dist/group-CTIZVYX2.js +43 -0
  337. package/dist/group-HKWQ75CJ.js +43 -0
  338. package/dist/gsc-CORRYJBJ.js +30 -0
  339. package/dist/history-4U7FJGEM.js +133 -0
  340. package/dist/history-BXOMJ5PL.js +67 -0
  341. package/dist/hubspot-I5MFAZ4G.js +779 -0
  342. package/dist/icon-6QW63AHG.js +137 -0
  343. package/dist/ideas-QDS5XA4S.js +32 -0
  344. package/dist/images-NVTA2OHD.js +90 -0
  345. package/dist/improve-WR23CHYH.js +86 -0
  346. package/dist/ingest-QAVJ2J7F.js +107 -0
  347. package/dist/ingest-XJHV3GG6.js +23 -0
  348. package/dist/insights-AW7SOGHI.js +122 -0
  349. package/dist/insights-IJEPLWQH.js +423 -0
  350. package/dist/inspect-7I53PWCF.js +189 -0
  351. package/dist/inspiration-TJJFUVY2.js +53 -0
  352. package/dist/intent-VEUQS34Z.js +95 -0
  353. package/dist/job-K7LAIBYN.js +202 -0
  354. package/dist/job-create-DFZL4CGA.js +109 -0
  355. package/dist/job-status-6Q2TVTEO.js +74 -0
  356. package/dist/keep-XJFCLVCP.js +78 -0
  357. package/dist/keyword-gap-CUOGKUMM.js +130 -0
  358. package/dist/keyword-metrics-LK7FME4N.js +197 -0
  359. package/dist/keywords-for-site-4E7UU44P.js +128 -0
  360. package/dist/landing-I65PFN7H.js +28 -0
  361. package/dist/landings-SQJWZOJR.js +151 -0
  362. package/dist/landings-SQJWZOJR.js.map +1 -0
  363. package/dist/languages-KPPKX3E2.js +40 -0
  364. package/dist/languages-MGEBLO64.js +55 -0
  365. package/dist/launches-E3Y6NCQE.js +19 -0
  366. package/dist/layerize-N4IQ2KE7.js +190 -0
  367. package/dist/leads-PPMOBH7U.js +293 -0
  368. package/dist/leads-TNEQUOUN.js +90 -0
  369. package/dist/learn-QQS323PS.js +203 -0
  370. package/dist/library-4QQAVB6X.js +109 -0
  371. package/dist/lighthouse-CD47CPJM.js +75 -0
  372. package/dist/line-item-writes-QJZQUQ4E.js +208 -0
  373. package/dist/line-items-ESEAXGBV.js +103 -0
  374. package/dist/link-DPJYS4WY.js +64 -0
  375. package/dist/linkedin-EJPNC4VY.js +1008 -0
  376. package/dist/list-A45NTPSJ.js +76 -0
  377. package/dist/list-GNP4GIV2.js +51 -0
  378. package/dist/list-KQFLOVC4.js +57 -0
  379. package/dist/list-MDHK3ENJ.js +50 -0
  380. package/dist/list-PRUFXMXW.js +65 -0
  381. package/dist/list-S3BAQCTL.js +303 -0
  382. package/dist/list-UU5NPLJ7.js +151 -0
  383. package/dist/list-V525A4Z4.js +63 -0
  384. package/dist/locations-J2PVPDZU.js +67 -0
  385. package/dist/locations-TFOYESTF.js +40 -0
  386. package/dist/log-XQBEJOOW.js +92 -0
  387. package/dist/logo-KQD5KUAH.js +18 -0
  388. package/dist/lookup-QCREWUV4.js +22 -0
  389. package/dist/make-NZHJ7ICV.js +633 -0
  390. package/dist/make-NZHJ7ICV.js.map +1 -0
  391. package/dist/map-7SHU5WCJ.js +433 -0
  392. package/dist/map-7SHU5WCJ.js.map +1 -0
  393. package/dist/mcp-GATPHY4D.js +463 -0
  394. package/dist/mcp-GATPHY4D.js.map +1 -0
  395. package/dist/media-2WENMOAA.js +15 -0
  396. package/dist/media-N4C6Q4IV.js +89 -0
  397. package/dist/media-sources-BPOTW6IB.js +32 -0
  398. package/dist/members-BOYZKLNK.js +44 -0
  399. package/dist/meta-PXYHWOOG.js +69 -0
  400. package/dist/metrics-FZANUN7E.js +152 -0
  401. package/dist/models-W6EN3WB7.js +155 -0
  402. package/dist/normalize-LOMDPNFJ.js +806 -0
  403. package/dist/normalize-RP3D7BUT.js +141 -0
  404. package/dist/normalize-RP3D7BUT.js.map +1 -0
  405. package/dist/options-FXND5P2W.js +122 -0
  406. package/dist/options-FXND5P2W.js.map +1 -0
  407. package/dist/output-SR4DN3A4.js +24 -0
  408. package/dist/page-FS76L5WU.js +105 -0
  409. package/dist/pages-INMNJSX2.js +66 -0
  410. package/dist/performance-53D43XVZ.js +24 -0
  411. package/dist/pinterest-JMHFPNVW.js +96 -0
  412. package/dist/pixels-K6ZD7SXV.js +60 -0
  413. package/dist/pixels-XPBBJYE3.js +108 -0
  414. package/dist/plan-45ESBYZA.js +207 -0
  415. package/dist/plan-45ESBYZA.js.map +1 -0
  416. package/dist/preview-KXSNG3BS.js +169 -0
  417. package/dist/profile-I4IXWBAQ.js +159 -0
  418. package/dist/profile-I4IXWBAQ.js.map +1 -0
  419. package/dist/promoted-tweet-writes-I6HVQRDB.js +180 -0
  420. package/dist/promoted-tweets-YAQ5ZUXI.js +119 -0
  421. package/dist/properties-NYNEONHI.js +101 -0
  422. package/dist/publish-Z5DVKZSG.js +322 -0
  423. package/dist/query-MSZPOHFL.js +61 -0
  424. package/dist/query-RK2TFMBI.js +236 -0
  425. package/dist/query-TWNH6GV7.js +247 -0
  426. package/dist/questionnaire-CNXN2TUZ.js +93 -0
  427. package/dist/questionnaire-CNXN2TUZ.js.map +1 -0
  428. package/dist/read-2AGRYWXU.js +141 -0
  429. package/dist/read-2AGRYWXU.js.map +1 -0
  430. package/dist/reddit-6DQTBTO6.js +26 -0
  431. package/dist/refresh-TP2TOGS6.js +94 -0
  432. package/dist/release-PHQEZ2ZX.js +60 -0
  433. package/dist/relevant-pages-ORVFFVAM.js +99 -0
  434. package/dist/remove-ETLMMDEA.js +48 -0
  435. package/dist/remove-KTBM5YSH.js +50 -0
  436. package/dist/reopen-OURQR6U7.js +63 -0
  437. package/dist/rerun-HGCVZ3D4.js +84 -0
  438. package/dist/rerun-HGCVZ3D4.js.map +1 -0
  439. package/dist/research-P23YBKS3.js +62 -0
  440. package/dist/research-WCNWT5Y5.js +262 -0
  441. package/dist/reset-2NCAWWN4.js +54 -0
  442. package/dist/reset-65R2CUB5.js +54 -0
  443. package/dist/resolve-65FKZ23N.js +121 -0
  444. package/dist/retry-P5K6LE6K.js +60 -0
  445. package/dist/retry-UIPDQJ5F.js +62 -0
  446. package/dist/retry-failed-QMWQ6TRL.js +45 -0
  447. package/dist/run-NDMEYUOI.js +59 -0
  448. package/dist/run-OP3T4TCF.js +65 -0
  449. package/dist/scaffold-ad-A5MWIOQJ.js +1548 -0
  450. package/dist/scaffold-ad-A5MWIOQJ.js.map +1 -0
  451. package/dist/scaffold-static-ad-MFPDXR6J.js +971 -0
  452. package/dist/scaffold-static-ad-MFPDXR6J.js.map +1 -0
  453. package/dist/scaffold-video-N6TY36I3.js +872 -0
  454. package/dist/scaffold-video-N6TY36I3.js.map +1 -0
  455. package/dist/schedule-6D667AXB.js +61 -0
  456. package/dist/schedule-KXLQVCZW.js +66 -0
  457. package/dist/scheduled-agents-LYWEX4PU.js +49 -0
  458. package/dist/schema-5HZIAHY3.js +132 -0
  459. package/dist/schema-5HZIAHY3.js.map +1 -0
  460. package/dist/schema-CCFLFAOY.js +63 -0
  461. package/dist/scrape-DBZQFIW7.js +2241 -0
  462. package/dist/screenshot-MPFANYIH.js +102 -0
  463. package/dist/search-4AANIUUL.js +91 -0
  464. package/dist/search-EMJABZYF.js +224 -0
  465. package/dist/search-HQDN7DOF.js +174 -0
  466. package/dist/search-OVHC4CRQ.js +26 -0
  467. package/dist/search-YSGZRANA.js +92 -0
  468. package/dist/search-copy-E3EVO7YT.js +168 -0
  469. package/dist/search-copy-E3EVO7YT.js.map +1 -0
  470. package/dist/seeds-XTBVEHSF.js +101 -0
  471. package/dist/seeds-XTBVEHSF.js.map +1 -0
  472. package/dist/select-C6BKHB4B.js +94 -0
  473. package/dist/sends-HXN5HSF6.js +309 -0
  474. package/dist/sequences-FRK76ZQV.js +146 -0
  475. package/dist/set-prompt-AOSHNBFC.js +185 -0
  476. package/dist/set-prompt-AOSHNBFC.js.map +1 -0
  477. package/dist/setup-links-BM2GLSSO.js +141 -0
  478. package/dist/shared-EH5ZTQXC.js +31 -0
  479. package/dist/site-3PEJYQJW.js +177 -0
  480. package/dist/sitemaps-7KHY2KXI.js +87 -0
  481. package/dist/sites-6B76JW6C.js +101 -0
  482. package/dist/skills-SCTT3LCM.js +47 -0
  483. package/dist/sources-ODJBHNGY.js +30 -0
  484. package/dist/sources-ZTLMXFHK.js +454 -0
  485. package/dist/sources-ZTLMXFHK.js.map +1 -0
  486. package/dist/stale-2O54QXY2.js +63 -0
  487. package/dist/stats-4NBOAOR2.js +34 -0
  488. package/dist/status-NE5OBM4B.js +62 -0
  489. package/dist/sticker-NLXBIOBO.js +94 -0
  490. package/dist/stock-F3SA4VHV.js +179 -0
  491. package/dist/studio-ZPDIOFKL.js +49 -0
  492. package/dist/sync-5GJNZDGZ.js +54 -0
  493. package/dist/sync-FCNFXTFD.js +265 -0
  494. package/dist/sync-YXCZ3DHY.js +54 -0
  495. package/dist/sync-definition-IL6Z4ZI7.js +52 -0
  496. package/dist/sync-definition-IL6Z4ZI7.js.map +1 -0
  497. package/dist/tag-manager-YM4Q3CZT.js +43 -0
  498. package/dist/tags-456UOYJU.js +26 -0
  499. package/dist/tags-5YPYHV5V.js +20 -0
  500. package/dist/tags-HXMHEHG2.js +224 -0
  501. package/dist/tags-K34666RY.js +20 -0
  502. package/dist/tags-NB35ISO3.js +20 -0
  503. package/dist/targeting-constants-3CMGPWRI.js +118 -0
  504. package/dist/targeting-criteria-UKQ4WF5C.js +113 -0
  505. package/dist/targets-VQ4BQ657.js +102 -0
  506. package/dist/templates-PMUIOVDX.js +178 -0
  507. package/dist/testimonials-XZCGVD6V.js +32 -0
  508. package/dist/themes-TVXLYJ7Y.js +94 -0
  509. package/dist/themes-TVXLYJ7Y.js.map +1 -0
  510. package/dist/top-companies-VMRIDOOH.js +108 -0
  511. package/dist/translate-F5KR62LF.js +598 -0
  512. package/dist/triggers-2MZX7W6Y.js +141 -0
  513. package/dist/tweets-XWE3VYQ4.js +123 -0
  514. package/dist/unfollow-7U4UBAJX.js +46 -0
  515. package/dist/unlink-AWSNY3QS.js +67 -0
  516. package/dist/unstage-OGB43ZXO.js +95 -0
  517. package/dist/unstage-RQBOQ4DY.js +84 -0
  518. package/dist/update-4KWYHMLS.js +63 -0
  519. package/dist/update-6DKEWM64.js +142 -0
  520. package/dist/update-G6EKHPIF.js +155 -0
  521. package/dist/update-OFV452AC.js +98 -0
  522. package/dist/upload-6CJWMQ24.js +126 -0
  523. package/dist/upload-GUKMQ5MT.js +150 -0
  524. package/dist/upscale-A456MESF.js +109 -0
  525. package/dist/url-options-FGDOVUSI.js +130 -0
  526. package/dist/url-options-FGDOVUSI.js.map +1 -0
  527. package/dist/url-params-OE3UMYMM.js +98 -0
  528. package/dist/use-HBVKVT5S.js +95 -0
  529. package/dist/validate-ZCUZV3L4.js +88 -0
  530. package/dist/validate-ZCUZV3L4.js.map +1 -0
  531. package/dist/variant-HULP57YI.js +338 -0
  532. package/dist/videos-ION7UT3M.js +39 -0
  533. package/dist/view-GCDEJZII.js +121 -0
  534. package/dist/viewer-check-UKYFBFMY.js +68 -0
  535. package/dist/viewer-check-UKYFBFMY.js.map +1 -0
  536. package/dist/web-CCVD6UZ4.js +140 -0
  537. package/dist/winners-WSMWC4M5.js +113 -0
  538. package/dist/winners-WSMWC4M5.js.map +1 -0
  539. package/dist/winning-ads-UCSSFEXD.js +84 -0
  540. package/dist/winning-ads-UCSSFEXD.js.map +1 -0
  541. package/dist/write-commands-47OP673X.js +713 -0
  542. package/dist/write-commands-IJ5IFHS6.js +737 -0
  543. package/dist/write-commands-NNVDWBLG.js +1015 -0
  544. package/dist/write-commands-OBMIVFZJ.js +206 -0
  545. package/dist/x-U32DT24S.js +47 -0
  546. package/package.json +2 -2
  547. package/dist/account-2ZMZFPIU.js +0 -79
  548. package/dist/account-F6MHQ64I.js +0 -80
  549. package/dist/account-IEVEOFIK.js +0 -49
  550. package/dist/account-writes-ISE4U2FQ.js +0 -66
  551. package/dist/accounts-4CDRK4S4.js +0 -75
  552. package/dist/accounts-5QDKBZMH.js +0 -115
  553. package/dist/accounts-KYJO3JC6.js +0 -114
  554. package/dist/accounts-RHGN5WMU.js +0 -611
  555. package/dist/accounts-VINHZRWA.js +0 -77
  556. package/dist/actions-5F4ZP6M4.js +0 -55
  557. package/dist/active-entities-YUSOUR5M.js +0 -103
  558. package/dist/activities-ZVQOBHZH.js +0 -74
  559. package/dist/ad-group-writes-UU5NNKSO.js +0 -170
  560. package/dist/ad-groups-CGFXZNIA.js +0 -68
  561. package/dist/ad-writes-NALDYWOR.js +0 -174
  562. package/dist/add-577QWMCF.js +0 -97
  563. package/dist/add-CUWAW7KG.js +0 -105
  564. package/dist/add-KBPMSK2P.js +0 -104
  565. package/dist/add-OGH4DZZ5.js +0 -280
  566. package/dist/add-OGH4DZZ5.js.map +0 -1
  567. package/dist/ads-56OWZBXZ.js +0 -40
  568. package/dist/ads-H7GH7A26.js +0 -113
  569. package/dist/ads-PV7GZXPR.js +0 -77
  570. package/dist/adsets-H7QT42U6.js +0 -176
  571. package/dist/advertisers-PM4WPG4N.js +0 -120
  572. package/dist/advertisers-YMHPZYNF.js +0 -111
  573. package/dist/advertisers-YMHPZYNF.js.map +0 -1
  574. package/dist/analytics-5FALU2GL.js +0 -433
  575. package/dist/analytics-JVZKN735.js +0 -1958
  576. package/dist/analytics-JVZKN735.js.map +0 -1
  577. package/dist/animate-FWWHSYPL.js +0 -480
  578. package/dist/assign-KLYZ6USE.js +0 -77
  579. package/dist/audience-size-JHB42DB4.js +0 -94
  580. package/dist/audiences-HFRVIE2X.js +0 -85
  581. package/dist/audiences-JACGRBNN.js +0 -78
  582. package/dist/audiences-VEKGLWBG.js +0 -268
  583. package/dist/audit-5XH7WZIM.js +0 -151
  584. package/dist/audit-AD4ZZNJN.js +0 -88
  585. package/dist/autocomplete-7F3PZLEY.js +0 -111
  586. package/dist/avatars-N4SRNQI7.js +0 -38
  587. package/dist/bid-pricing-VYLVGU26.js +0 -99
  588. package/dist/brand-ASBS2HZM.js +0 -22
  589. package/dist/brief-JSZKDPGU.js +0 -477
  590. package/dist/brief-JSZKDPGU.js.map +0 -1
  591. package/dist/businesses-JBDQZZIG.js +0 -53
  592. package/dist/campaign-groups-ATE2DE4V.js +0 -95
  593. package/dist/campaign-writes-ETT57KLQ.js +0 -165
  594. package/dist/campaign-writes-SX52CJYW.js +0 -170
  595. package/dist/campaigns-FGBAS6AZ.js +0 -107
  596. package/dist/campaigns-J6VZBIV6.js +0 -109
  597. package/dist/campaigns-WBEG5QA4.js +0 -110
  598. package/dist/campaigns-X3DPCCSN.js +0 -76
  599. package/dist/canvas-K7IN7HLO.js +0 -46
  600. package/dist/canvas-K7IN7HLO.js.map +0 -1
  601. package/dist/capabilities-RDAERPYY.js +0 -144
  602. package/dist/cards-4477BFEV.js +0 -85
  603. package/dist/catalog-MENVHL5U.js +0 -65
  604. package/dist/catalog-MENVHL5U.js.map +0 -1
  605. package/dist/catalogs-G3YEVG6S.js +0 -128
  606. package/dist/changes-TP7ZZHB3.js +0 -135
  607. package/dist/chatgpt-QNUN63YS.js +0 -47
  608. package/dist/chats-YIAQGQ3X.js +0 -262
  609. package/dist/chunk-2GK33EJV.js +0 -382
  610. package/dist/chunk-2TK4DEOE.js +0 -74
  611. package/dist/chunk-35XWJEWH.js +0 -274
  612. package/dist/chunk-3CWL2LY4.js +0 -206
  613. package/dist/chunk-4NBVGARW.js +0 -1079
  614. package/dist/chunk-4NBVGARW.js.map +0 -1
  615. package/dist/chunk-4NDCTLI5.js +0 -191
  616. package/dist/chunk-5ARG3CQG.js +0 -141
  617. package/dist/chunk-5ARG3CQG.js.map +0 -1
  618. package/dist/chunk-5R5ADJ47.js +0 -2880
  619. package/dist/chunk-5R5ADJ47.js.map +0 -1
  620. package/dist/chunk-5Z2KSVIV.js +0 -67
  621. package/dist/chunk-65RIB7A6.js +0 -592
  622. package/dist/chunk-6B7VKFS4.js +0 -172
  623. package/dist/chunk-6DB2B3GF.js +0 -175
  624. package/dist/chunk-6G5K6ZC6.js +0 -46
  625. package/dist/chunk-75FDTDLH.js +0 -96
  626. package/dist/chunk-7OFNN4CT.js +0 -58
  627. package/dist/chunk-7SDFKGQ4.js +0 -363
  628. package/dist/chunk-ACANMASG.js +0 -19
  629. package/dist/chunk-ALTBBAYU.js +0 -96
  630. package/dist/chunk-ANCSKUWI.js +0 -433
  631. package/dist/chunk-AWMFUGVX.js +0 -160
  632. package/dist/chunk-BA7FDXQC.js +0 -197
  633. package/dist/chunk-BNCW67EM.js +0 -534
  634. package/dist/chunk-BNCW67EM.js.map +0 -1
  635. package/dist/chunk-BSC33FLJ.js +0 -217
  636. package/dist/chunk-BSC33FLJ.js.map +0 -1
  637. package/dist/chunk-C6U6UDHJ.js +0 -106
  638. package/dist/chunk-CHSNHVYF.js +0 -3182
  639. package/dist/chunk-CHSNHVYF.js.map +0 -1
  640. package/dist/chunk-CYEO5ZIO.js +0 -133
  641. package/dist/chunk-CYEO5ZIO.js.map +0 -1
  642. package/dist/chunk-DKGTQSLR.js +0 -310
  643. package/dist/chunk-DKGTQSLR.js.map +0 -1
  644. package/dist/chunk-DR34ZTWD.js +0 -207
  645. package/dist/chunk-E4MDJBLO.js +0 -163
  646. package/dist/chunk-E4MDJBLO.js.map +0 -1
  647. package/dist/chunk-EFSYTROP.js +0 -94
  648. package/dist/chunk-EH4C4CZK.js +0 -455
  649. package/dist/chunk-F2S5BLPE.js +0 -97
  650. package/dist/chunk-FXED3VZK.js +0 -174
  651. package/dist/chunk-G7UTTEBS.js +0 -337
  652. package/dist/chunk-GATKK4RJ.js +0 -440
  653. package/dist/chunk-GATKK4RJ.js.map +0 -1
  654. package/dist/chunk-GIJT3A5U.js +0 -166
  655. package/dist/chunk-GIJT3A5U.js.map +0 -1
  656. package/dist/chunk-GX6VAHY7.js +0 -830
  657. package/dist/chunk-GX6VAHY7.js.map +0 -1
  658. package/dist/chunk-H26L3OQY.js +0 -42
  659. package/dist/chunk-HIPDMQZ6.js +0 -136
  660. package/dist/chunk-HQSCJYZO.js +0 -26
  661. package/dist/chunk-HZ5DR5MX.js +0 -51
  662. package/dist/chunk-I4NEHDSD.js +0 -813
  663. package/dist/chunk-I4NEHDSD.js.map +0 -1
  664. package/dist/chunk-IFWP3ZDO.js +0 -215
  665. package/dist/chunk-IFWP3ZDO.js.map +0 -1
  666. package/dist/chunk-IM52NHGL.js +0 -390
  667. package/dist/chunk-IM52NHGL.js.map +0 -1
  668. package/dist/chunk-JERXV5A3.js +0 -26
  669. package/dist/chunk-JF47LEPU.js +0 -5163
  670. package/dist/chunk-JF47LEPU.js.map +0 -1
  671. package/dist/chunk-K3PN7TN5.js +0 -84
  672. package/dist/chunk-KBP7WJQB.js +0 -446
  673. package/dist/chunk-KBP7WJQB.js.map +0 -1
  674. package/dist/chunk-KLBTXETO.js +0 -23992
  675. package/dist/chunk-KLBTXETO.js.map +0 -1
  676. package/dist/chunk-KLNKEVIY.js +0 -136
  677. package/dist/chunk-KNWHUMVZ.js +0 -4381
  678. package/dist/chunk-KNWHUMVZ.js.map +0 -1
  679. package/dist/chunk-KNY76UGC.js +0 -84
  680. package/dist/chunk-KQTYTCKQ.js +0 -98
  681. package/dist/chunk-LERTEZST.js +0 -28
  682. package/dist/chunk-LERTEZST.js.map +0 -1
  683. package/dist/chunk-LIQ4SQ2T.js +0 -150
  684. package/dist/chunk-LS5MTRFI.js +0 -106
  685. package/dist/chunk-LW4VSTL5.js +0 -304
  686. package/dist/chunk-LW4VSTL5.js.map +0 -1
  687. package/dist/chunk-LZ73CZGP.js +0 -188
  688. package/dist/chunk-MADAAZZV.js +0 -169
  689. package/dist/chunk-MELOSESI.js +0 -20
  690. package/dist/chunk-MELOSESI.js.map +0 -1
  691. package/dist/chunk-MLU6STIN.js +0 -66
  692. package/dist/chunk-MZL4H5PY.js +0 -225
  693. package/dist/chunk-NAWWC5I3.js +0 -454
  694. package/dist/chunk-NAWWC5I3.js.map +0 -1
  695. package/dist/chunk-NDXBU22S.js +0 -6145
  696. package/dist/chunk-NDXBU22S.js.map +0 -1
  697. package/dist/chunk-NE4F3FHN.js +0 -1854
  698. package/dist/chunk-NE4F3FHN.js.map +0 -1
  699. package/dist/chunk-NU7JSWVA.js +0 -946
  700. package/dist/chunk-NU7JSWVA.js.map +0 -1
  701. package/dist/chunk-OTFHEHIU.js +0 -1706
  702. package/dist/chunk-OTFHEHIU.js.map +0 -1
  703. package/dist/chunk-PBA3YCZA.js +0 -76
  704. package/dist/chunk-PDTB5EX6.js +0 -57
  705. package/dist/chunk-PWGWMIIJ.js +0 -25
  706. package/dist/chunk-QSN5MZGS.js +0 -74
  707. package/dist/chunk-RPUSTYHL.js +0 -170
  708. package/dist/chunk-RX6F3GEA.js +0 -610
  709. package/dist/chunk-SB3GZFCV.js +0 -622
  710. package/dist/chunk-SB3GZFCV.js.map +0 -1
  711. package/dist/chunk-SSJK7FEV.js +0 -2886
  712. package/dist/chunk-SSJK7FEV.js.map +0 -1
  713. package/dist/chunk-STIB5DR5.js +0 -56
  714. package/dist/chunk-T3BDNJIX.js +0 -494
  715. package/dist/chunk-TD2P4HBP.js +0 -55
  716. package/dist/chunk-TEINLN64.js +0 -649
  717. package/dist/chunk-TEINLN64.js.map +0 -1
  718. package/dist/chunk-TIOQ7ZFQ.js +0 -496
  719. package/dist/chunk-TIOQ7ZFQ.js.map +0 -1
  720. package/dist/chunk-U3HAMW5W.js +0 -133
  721. package/dist/chunk-U6SYRIOB.js +0 -486
  722. package/dist/chunk-UC6BWM5J.js +0 -159
  723. package/dist/chunk-ULJ5RFOV.js +0 -76
  724. package/dist/chunk-ULJ5RFOV.js.map +0 -1
  725. package/dist/chunk-VAISMQQB.js +0 -346
  726. package/dist/chunk-VAJBWA2U.js +0 -75
  727. package/dist/chunk-VB6WJJR3.js +0 -1830
  728. package/dist/chunk-VDHQJ6HD.js +0 -23
  729. package/dist/chunk-VFIOJD5M.js +0 -309
  730. package/dist/chunk-VMDAXFRI.js +0 -111
  731. package/dist/chunk-VVZBBKRC.js +0 -296
  732. package/dist/chunk-W3B4BHQU.js +0 -31
  733. package/dist/chunk-W3B4BHQU.js.map +0 -1
  734. package/dist/chunk-W3ZHJJVT.js +0 -139
  735. package/dist/chunk-WNFIJAUO.js +0 -98
  736. package/dist/chunk-WS2GMOSG.js +0 -74
  737. package/dist/chunk-X7ZODEXJ.js +0 -36
  738. package/dist/chunk-X7ZODEXJ.js.map +0 -1
  739. package/dist/chunk-XBOK23HI.js +0 -214
  740. package/dist/chunk-XBOK23HI.js.map +0 -1
  741. package/dist/chunk-XCM6XWOB.js +0 -417
  742. package/dist/chunk-XCM6XWOB.js.map +0 -1
  743. package/dist/chunk-XL3BMSYG.js +0 -125
  744. package/dist/chunk-XMD4SHFI.js +0 -60
  745. package/dist/chunk-Y6QAJNKP.js +0 -1411
  746. package/dist/chunk-Y6QAJNKP.js.map +0 -1
  747. package/dist/chunk-YBMVHGY3.js +0 -333
  748. package/dist/chunk-YBP7O5P4.js +0 -103
  749. package/dist/chunk-YC2TQ3VC.js +0 -297
  750. package/dist/chunk-YPZYOJP6.js +0 -6664
  751. package/dist/chunk-YPZYOJP6.js.map +0 -1
  752. package/dist/chunk-ZJWUBJYQ.js +0 -204
  753. package/dist/chunk-ZJWUBJYQ.js.map +0 -1
  754. package/dist/chunk-ZPU3WDVK.js +0 -92
  755. package/dist/claim-V4F5GZJK.js +0 -197
  756. package/dist/client-VHN32ZRE.js +0 -19
  757. package/dist/code-YS6ZMGX3.js +0 -76
  758. package/dist/companies-NJGJ7XNN.js +0 -195
  759. package/dist/complete-MGNF5OAK.js +0 -81
  760. package/dist/config-CQN5FHMZ.js +0 -88
  761. package/dist/connect-PJOTRTT4.js +0 -36
  762. package/dist/content-3ZPP4SW2.js +0 -81
  763. package/dist/content-3ZPP4SW2.js.map +0 -1
  764. package/dist/conversation-4DM26FRD.js +0 -93
  765. package/dist/conversion-report-N4HANYOB.js +0 -125
  766. package/dist/conversion-upload-command-TZTHU2CD.js +0 -438
  767. package/dist/conversion-writes-LW4HQKK5.js +0 -120
  768. package/dist/conversions-JGECVZSY.js +0 -135
  769. package/dist/conversions-TS723AZV.js +0 -76
  770. package/dist/countries-ESAKTQAE.js +0 -82
  771. package/dist/create-DSGQFBI7.js +0 -207
  772. package/dist/create-I2KVDTCQ.js +0 -59
  773. package/dist/create-SBQWVLXG.js +0 -130
  774. package/dist/create-WOHPIGBK.js +0 -235
  775. package/dist/creatives-4JGVZQGC.js +0 -182
  776. package/dist/creatives-DWO5KEQC.js +0 -51
  777. package/dist/creatives-PSWCNY7U.js +0 -87
  778. package/dist/credentials-UULYCN2L.js +0 -1055
  779. package/dist/credentials-UULYCN2L.js.map +0 -1
  780. package/dist/critique-NGMZK5LX.js +0 -213
  781. package/dist/critique-TIZJ5GFM.js +0 -1449
  782. package/dist/crm-2WAR565U.js +0 -224
  783. package/dist/crm-VDXUO2YU.js +0 -318
  784. package/dist/crop-2J4RKJ6B.js +0 -113
  785. package/dist/currency-XCGKQ7FE.js +0 -88
  786. package/dist/custom-conversions-6P555U2K.js +0 -125
  787. package/dist/customers-ATENMXDO.js +0 -56
  788. package/dist/delete-3AV3ARMX.js +0 -71
  789. package/dist/delete-A5XD52K4.js +0 -69
  790. package/dist/delete-AVMZYNVT.js +0 -54
  791. package/dist/delete-H744GNS4.js +0 -63
  792. package/dist/delete-MRM2S4Z5.js +0 -71
  793. package/dist/delete-OEYPFATY.js +0 -66
  794. package/dist/demographics-M5LJF3RZ.js +0 -138
  795. package/dist/describe-6NVOWIBE.js +0 -97
  796. package/dist/describe-P3PPIQME.js +0 -97
  797. package/dist/dimensions-EYAYO27I.js +0 -101
  798. package/dist/discard-72I6SM7G.js +0 -66
  799. package/dist/discover-BJPZNXUQ.js +0 -172
  800. package/dist/domain-R4EIZD2W.js +0 -98
  801. package/dist/download-7T6HIJKD.js +0 -299
  802. package/dist/draft-34C3F5U4.js +0 -217
  803. package/dist/draft-BBFJNZ5X.js +0 -328
  804. package/dist/draft-BGUJDHXR.js +0 -103
  805. package/dist/draft-BV2QRPZ4.js +0 -107
  806. package/dist/draft-BV2QRPZ4.js.map +0 -1
  807. package/dist/draft-KIBMVKSR.js +0 -100
  808. package/dist/draft-THPZFASM.js +0 -281
  809. package/dist/draft-YDY2Q2K6.js +0 -233
  810. package/dist/draft-YYYRWF7M.js +0 -306
  811. package/dist/env-KIP2J2UB.js +0 -43
  812. package/dist/experiment-LKK77YAN.js +0 -1377
  813. package/dist/experiment-LKK77YAN.js.map +0 -1
  814. package/dist/export-JQRMBJ7D.js +0 -168
  815. package/dist/extract-7QKLME7Z.js +0 -113
  816. package/dist/facets-F2H52MS4.js +0 -114
  817. package/dist/favorites-NSGF4OV5.js +0 -178
  818. package/dist/feed-RV4KPPXM.js +0 -157
  819. package/dist/feed-RV4KPPXM.js.map +0 -1
  820. package/dist/feedback-IQKKT4MC.js +0 -66
  821. package/dist/feedback-record-UZV4Y7UD.js +0 -175
  822. package/dist/fetch-XF76JABV.js +0 -139
  823. package/dist/fetch-ZUAZPLAE.js +0 -176
  824. package/dist/find-OTDIX6V4.js +0 -134
  825. package/dist/fit-2CA4JH7N.js +0 -45
  826. package/dist/flows-CWXCXEUD.js +0 -244
  827. package/dist/flows-CWXCXEUD.js.map +0 -1
  828. package/dist/follow-FN7LV3WV.js +0 -82
  829. package/dist/follow-FN7LV3WV.js.map +0 -1
  830. package/dist/follow-competitors-MKXFHLXB.js +0 -131
  831. package/dist/follow-competitors-MKXFHLXB.js.map +0 -1
  832. package/dist/following-RKC2FLHI.js +0 -109
  833. package/dist/following-RKC2FLHI.js.map +0 -1
  834. package/dist/fonts-F2XUCIIW.js +0 -34
  835. package/dist/forecast-IDKJYM2B.js +0 -104
  836. package/dist/funding-NYO65IMT.js +0 -85
  837. package/dist/funnel-RLGQGYKO.js +0 -837
  838. package/dist/funnel-RLGQGYKO.js.map +0 -1
  839. package/dist/ga4-UDQ2HA2J.js +0 -55
  840. package/dist/generate-MMBYB44G.js +0 -262
  841. package/dist/get-3L6W3E3T.js +0 -59
  842. package/dist/get-6WEYKOY6.js +0 -63
  843. package/dist/get-C6UQ22HH.js +0 -54
  844. package/dist/get-C6UQ22HH.js.map +0 -1
  845. package/dist/get-EEUR6SAW.js +0 -78
  846. package/dist/get-EEUR6SAW.js.map +0 -1
  847. package/dist/get-P743RPSI.js +0 -63
  848. package/dist/get-XN5ZGDIK.js +0 -61
  849. package/dist/get-YIHTAMRT.js +0 -92
  850. package/dist/gif-53ULFVLR.js +0 -94
  851. package/dist/google-35GDU3G3.js +0 -1872
  852. package/dist/google-35GDU3G3.js.map +0 -1
  853. package/dist/google-KTO3PLEU.js +0 -136
  854. package/dist/google-ads-Q37I2D5P.js +0 -195
  855. package/dist/group-EFZ3AJIE.js +0 -43
  856. package/dist/group-GKWCCX66.js +0 -43
  857. package/dist/gsc-P3QYGDV2.js +0 -30
  858. package/dist/history-4II5QA4B.js +0 -133
  859. package/dist/history-DBIEYQHY.js +0 -67
  860. package/dist/hubspot-TTITJFBO.js +0 -779
  861. package/dist/icon-I43F77FV.js +0 -137
  862. package/dist/ideas-V4Q6JDKV.js +0 -32
  863. package/dist/images-SP5REF6E.js +0 -90
  864. package/dist/improve-BCCU5AS6.js +0 -86
  865. package/dist/ingest-574GIFAR.js +0 -107
  866. package/dist/ingest-IC4T76W6.js +0 -23
  867. package/dist/insights-NZWSJKU4.js +0 -423
  868. package/dist/insights-ZIU6FJMS.js +0 -122
  869. package/dist/inspect-ATHYY6A2.js +0 -189
  870. package/dist/inspiration-P265QJ2H.js +0 -53
  871. package/dist/intent-E3UIVZBN.js +0 -95
  872. package/dist/job-L7RJZMSG.js +0 -202
  873. package/dist/job-create-JUDAN52O.js +0 -109
  874. package/dist/job-status-U43WE3RJ.js +0 -74
  875. package/dist/keep-55CPC7DG.js +0 -78
  876. package/dist/keyword-gap-BG6M665A.js +0 -130
  877. package/dist/keyword-metrics-J4UPUDN7.js +0 -197
  878. package/dist/keywords-for-site-MWADFEO2.js +0 -128
  879. package/dist/landing-R6DN7XLK.js +0 -28
  880. package/dist/languages-HORKPDNH.js +0 -40
  881. package/dist/languages-JSGWCC7Z.js +0 -55
  882. package/dist/layerize-RPD6SNP6.js +0 -190
  883. package/dist/leads-7EVHMNUF.js +0 -293
  884. package/dist/leads-JM6HUERX.js +0 -90
  885. package/dist/learn-LGS2F5TR.js +0 -203
  886. package/dist/library-ARKRLCNJ.js +0 -109
  887. package/dist/lighthouse-6ZC45E53.js +0 -75
  888. package/dist/line-item-writes-KUYEXSIH.js +0 -208
  889. package/dist/line-items-GIWLP3FL.js +0 -103
  890. package/dist/link-PVM7XJQI.js +0 -64
  891. package/dist/linkedin-WX54EAX6.js +0 -1008
  892. package/dist/list-4ZKQZBCL.js +0 -151
  893. package/dist/list-7MVBXOJT.js +0 -51
  894. package/dist/list-A5UCIR2J.js +0 -65
  895. package/dist/list-AL7N6X2P.js +0 -50
  896. package/dist/list-LI4OGQFW.js +0 -57
  897. package/dist/list-MCEFXC6L.js +0 -63
  898. package/dist/list-P7NAFN6J.js +0 -76
  899. package/dist/list-WR7QYTON.js +0 -303
  900. package/dist/locations-74TPQWAT.js +0 -67
  901. package/dist/locations-J4G5RNPH.js +0 -40
  902. package/dist/log-U6IWZGOF.js +0 -92
  903. package/dist/logo-2IP663QO.js +0 -18
  904. package/dist/lookup-XK45W2SH.js +0 -22
  905. package/dist/make-RXFHEGUI.js +0 -593
  906. package/dist/make-RXFHEGUI.js.map +0 -1
  907. package/dist/map-TWL7T4KP.js +0 -404
  908. package/dist/map-TWL7T4KP.js.map +0 -1
  909. package/dist/mcp-HVAVJGGS.js +0 -476
  910. package/dist/mcp-HVAVJGGS.js.map +0 -1
  911. package/dist/media-6CQYG4UY.js +0 -89
  912. package/dist/media-M7E6V2XU.js +0 -15
  913. package/dist/media-sources-JWGO23BZ.js +0 -32
  914. package/dist/members-5FAW4YE7.js +0 -44
  915. package/dist/meta-EZ4SY25M.js +0 -69
  916. package/dist/metrics-SQDJ5NQO.js +0 -152
  917. package/dist/models-7U3GRYHF.js +0 -155
  918. package/dist/normalize-GW4GZNVY.js +0 -138
  919. package/dist/normalize-GW4GZNVY.js.map +0 -1
  920. package/dist/normalize-ICQF2AST.js +0 -806
  921. package/dist/options-NSUCENLU.js +0 -121
  922. package/dist/options-NSUCENLU.js.map +0 -1
  923. package/dist/output-RAH3TSIL.js +0 -24
  924. package/dist/page-GS3WLT2C.js +0 -105
  925. package/dist/pages-FXYQLHSJ.js +0 -66
  926. package/dist/performance-FGCDWHMC.js +0 -24
  927. package/dist/pinterest-AUH7WBA7.js +0 -96
  928. package/dist/pixels-45A55MOP.js +0 -60
  929. package/dist/pixels-ZFF4BGUH.js +0 -108
  930. package/dist/preview-AD4GKYIA.js +0 -169
  931. package/dist/promoted-tweet-writes-BPWTDESL.js +0 -180
  932. package/dist/promoted-tweets-OS3NHYVE.js +0 -119
  933. package/dist/properties-L2XIYQDS.js +0 -101
  934. package/dist/publish-SXZEWBVJ.js +0 -322
  935. package/dist/query-IEZRY6HV.js +0 -1341
  936. package/dist/query-IEZRY6HV.js.map +0 -1
  937. package/dist/query-SGGBCHTF.js +0 -236
  938. package/dist/query-VTGVZQIO.js +0 -247
  939. package/dist/read-LSF7DYTG.js +0 -140
  940. package/dist/read-LSF7DYTG.js.map +0 -1
  941. package/dist/reddit-TF6K37SB.js +0 -26
  942. package/dist/refresh-APVDWXRZ.js +0 -94
  943. package/dist/release-32SEJU4L.js +0 -60
  944. package/dist/relevant-pages-OWMNUCP7.js +0 -99
  945. package/dist/remove-6LGGKMLJ.js +0 -48
  946. package/dist/remove-U64GTHLQ.js +0 -50
  947. package/dist/reopen-5VS233SF.js +0 -63
  948. package/dist/rerun-7Z45QOOO.js +0 -85
  949. package/dist/rerun-7Z45QOOO.js.map +0 -1
  950. package/dist/research-O7CJV5IS.js +0 -62
  951. package/dist/research-QYSQ6LW4.js +0 -262
  952. package/dist/reset-22FC7BXQ.js +0 -54
  953. package/dist/reset-47B5VPT4.js +0 -54
  954. package/dist/resolve-7KQGVTQT.js +0 -121
  955. package/dist/retry-J5UVLS72.js +0 -62
  956. package/dist/retry-UJ5UF4BM.js +0 -60
  957. package/dist/retry-failed-6HXPUVXJ.js +0 -45
  958. package/dist/run-SI4FA32F.js +0 -65
  959. package/dist/run-TFLFBQU2.js +0 -60
  960. package/dist/scaffold-ad-SEXNE2K6.js +0 -1549
  961. package/dist/scaffold-ad-SEXNE2K6.js.map +0 -1
  962. package/dist/scaffold-static-ad-VBOL6CLN.js +0 -966
  963. package/dist/scaffold-static-ad-VBOL6CLN.js.map +0 -1
  964. package/dist/scaffold-video-Z37MIBDI.js +0 -873
  965. package/dist/scaffold-video-Z37MIBDI.js.map +0 -1
  966. package/dist/schedule-52ZM4KRQ.js +0 -61
  967. package/dist/schedule-O2K6M43V.js +0 -66
  968. package/dist/scheduled-agents-PCWCQAKP.js +0 -49
  969. package/dist/schema-6GR77VJG.js +0 -63
  970. package/dist/schema-FY6ORDXZ.js +0 -129
  971. package/dist/schema-FY6ORDXZ.js.map +0 -1
  972. package/dist/scrape-ETAMW43A.js +0 -2241
  973. package/dist/screenshot-YCQF25ZB.js +0 -102
  974. package/dist/search-742XSULP.js +0 -224
  975. package/dist/search-MEEM4D3W.js +0 -92
  976. package/dist/search-NS7XNRZC.js +0 -174
  977. package/dist/search-OQNGSMUH.js +0 -91
  978. package/dist/search-UO5KJTYS.js +0 -26
  979. package/dist/seeds-N6FF5S4T.js +0 -101
  980. package/dist/seeds-N6FF5S4T.js.map +0 -1
  981. package/dist/select-4XCYVV2G.js +0 -94
  982. package/dist/sends-WGJVQUMF.js +0 -309
  983. package/dist/sequences-OIPVR7JL.js +0 -146
  984. package/dist/set-prompt-TRJBYA3D.js +0 -186
  985. package/dist/set-prompt-TRJBYA3D.js.map +0 -1
  986. package/dist/setup-links-V3URI7DL.js +0 -141
  987. package/dist/shared-HJDFNID4.js +0 -31
  988. package/dist/site-WIQ7SSU3.js +0 -177
  989. package/dist/sitemaps-POPZJTAX.js +0 -87
  990. package/dist/sites-262H6LM4.js +0 -101
  991. package/dist/skills-6TQZLIMP.js +0 -47
  992. package/dist/sources-DWJXOLEH.js +0 -421
  993. package/dist/sources-DWJXOLEH.js.map +0 -1
  994. package/dist/sources-L453U5MT.js +0 -30
  995. package/dist/stale-6OVG6VME.js +0 -63
  996. package/dist/stats-NNXZMPZR.js +0 -34
  997. package/dist/status-WXWU54WR.js +0 -62
  998. package/dist/sticker-4KMBSMP5.js +0 -94
  999. package/dist/stock-2YCDN3N6.js +0 -179
  1000. package/dist/studio-C5K3YX3P.js +0 -49
  1001. package/dist/sync-CDZUTGV3.js +0 -54
  1002. package/dist/sync-CF7FVUQJ.js +0 -54
  1003. package/dist/sync-ZSNUBYPM.js +0 -265
  1004. package/dist/sync-definition-BAJQUBE3.js +0 -53
  1005. package/dist/tag-manager-DYZUOIAS.js +0 -43
  1006. package/dist/tags-6RY23XOG.js +0 -20
  1007. package/dist/tags-BHFQWNPL.js +0 -224
  1008. package/dist/tags-SG3NVC3J.js +0 -26
  1009. package/dist/tags-VN5HTL35.js +0 -20
  1010. package/dist/tags-WR6PDIDR.js +0 -20
  1011. package/dist/targeting-constants-XJ2VOW7K.js +0 -118
  1012. package/dist/targeting-criteria-5EXP2NXF.js +0 -113
  1013. package/dist/targets-WUVEJPSD.js +0 -102
  1014. package/dist/templates-LOJQX2NG.js +0 -178
  1015. package/dist/testimonials-6M5DXORT.js +0 -32
  1016. package/dist/top-companies-E2OMMPSV.js +0 -108
  1017. package/dist/translate-AW4CUKDA.js +0 -598
  1018. package/dist/triggers-MRXIDCSN.js +0 -141
  1019. package/dist/tweets-ATP3FQAC.js +0 -123
  1020. package/dist/unfollow-CBVPGPF7.js +0 -46
  1021. package/dist/unlink-HNL747YM.js +0 -67
  1022. package/dist/unstage-4ZEULXEQ.js +0 -95
  1023. package/dist/unstage-OL2JDCLK.js +0 -84
  1024. package/dist/update-4KGIT4BF.js +0 -142
  1025. package/dist/update-JPBUF7M2.js +0 -98
  1026. package/dist/update-RTTC3SAK.js +0 -155
  1027. package/dist/update-YNNRX5B2.js +0 -63
  1028. package/dist/upload-L5SYZB3X.js +0 -150
  1029. package/dist/upload-UIXPCSXJ.js +0 -126
  1030. package/dist/upscale-YWRLFU22.js +0 -109
  1031. package/dist/url-options-GGXAL3J4.js +0 -127
  1032. package/dist/url-options-GGXAL3J4.js.map +0 -1
  1033. package/dist/url-params-K47CE7Y5.js +0 -98
  1034. package/dist/use-UT2DIZOG.js +0 -95
  1035. package/dist/validate-TD2BY4VE.js +0 -89
  1036. package/dist/validate-TD2BY4VE.js.map +0 -1
  1037. package/dist/variant-FLZJYGYL.js +0 -338
  1038. package/dist/videos-BP3BKNTY.js +0 -39
  1039. package/dist/view-NPAG66QK.js +0 -121
  1040. package/dist/viewer-check-HFRUJ4ZU.js +0 -69
  1041. package/dist/web-RPSGFN4U.js +0 -140
  1042. package/dist/winners-I5BMATJZ.js +0 -79
  1043. package/dist/winners-I5BMATJZ.js.map +0 -1
  1044. package/dist/winning-ads-WUENRDVJ.js +0 -62
  1045. package/dist/winning-ads-WUENRDVJ.js.map +0 -1
  1046. package/dist/write-commands-4WARNR2T.js +0 -1015
  1047. package/dist/write-commands-ERKVRHTC.js +0 -206
  1048. package/dist/write-commands-TAYGTJEZ.js +0 -737
  1049. package/dist/write-commands-WTRSOSO3.js +0 -713
  1050. package/dist/x-VZCELH3P.js +0 -47
  1051. /package/dist/{account-2ZMZFPIU.js.map → account-JG7QD522.js.map} +0 -0
  1052. /package/dist/{account-F6MHQ64I.js.map → account-V6PB6PA5.js.map} +0 -0
  1053. /package/dist/{account-IEVEOFIK.js.map → account-VLPX7EZT.js.map} +0 -0
  1054. /package/dist/{account-writes-ISE4U2FQ.js.map → account-writes-BGREY7ZL.js.map} +0 -0
  1055. /package/dist/{accounts-KYJO3JC6.js.map → accounts-2FINK5GZ.js.map} +0 -0
  1056. /package/dist/{accounts-4CDRK4S4.js.map → accounts-2UV5Z3Y6.js.map} +0 -0
  1057. /package/dist/{accounts-VINHZRWA.js.map → accounts-3EX2PFJB.js.map} +0 -0
  1058. /package/dist/{accounts-5QDKBZMH.js.map → accounts-G2QT3ZVP.js.map} +0 -0
  1059. /package/dist/{accounts-RHGN5WMU.js.map → accounts-N63J5YTK.js.map} +0 -0
  1060. /package/dist/{actions-5F4ZP6M4.js.map → actions-PA2BPIYO.js.map} +0 -0
  1061. /package/dist/{active-entities-YUSOUR5M.js.map → active-entities-RDXDSMA2.js.map} +0 -0
  1062. /package/dist/{activities-ZVQOBHZH.js.map → activities-RBTU2Q24.js.map} +0 -0
  1063. /package/dist/{ad-group-writes-UU5NNKSO.js.map → ad-group-writes-5NTRJTVE.js.map} +0 -0
  1064. /package/dist/{ad-groups-CGFXZNIA.js.map → ad-groups-4OTAKWUC.js.map} +0 -0
  1065. /package/dist/{ad-writes-NALDYWOR.js.map → ad-writes-T7W3DDKK.js.map} +0 -0
  1066. /package/dist/{add-CUWAW7KG.js.map → add-4VKA4NDH.js.map} +0 -0
  1067. /package/dist/{add-577QWMCF.js.map → add-MQO33HL3.js.map} +0 -0
  1068. /package/dist/{add-KBPMSK2P.js.map → add-QM7ANAVG.js.map} +0 -0
  1069. /package/dist/{ads-H7GH7A26.js.map → ads-IJCFN2N3.js.map} +0 -0
  1070. /package/dist/{ads-56OWZBXZ.js.map → ads-QKMLAPZC.js.map} +0 -0
  1071. /package/dist/{ads-PV7GZXPR.js.map → ads-XYAWONXR.js.map} +0 -0
  1072. /package/dist/{adsets-H7QT42U6.js.map → adsets-DPTIKGTG.js.map} +0 -0
  1073. /package/dist/{advertisers-PM4WPG4N.js.map → advertisers-SZFDOPBQ.js.map} +0 -0
  1074. /package/dist/{analytics-5FALU2GL.js.map → analytics-HFBYIPZ7.js.map} +0 -0
  1075. /package/dist/{animate-FWWHSYPL.js.map → animate-LUKNHCF4.js.map} +0 -0
  1076. /package/dist/{assign-KLYZ6USE.js.map → assign-QCICUD72.js.map} +0 -0
  1077. /package/dist/{audience-size-JHB42DB4.js.map → audience-size-HML4BLHJ.js.map} +0 -0
  1078. /package/dist/{audiences-VEKGLWBG.js.map → audiences-BSABKS5K.js.map} +0 -0
  1079. /package/dist/{audiences-JACGRBNN.js.map → audiences-FWOOSUSJ.js.map} +0 -0
  1080. /package/dist/{audiences-HFRVIE2X.js.map → audiences-VK4M7GLQ.js.map} +0 -0
  1081. /package/dist/{audit-5XH7WZIM.js.map → audit-DUM55J5U.js.map} +0 -0
  1082. /package/dist/{audit-AD4ZZNJN.js.map → audit-JR5R75XK.js.map} +0 -0
  1083. /package/dist/{autocomplete-7F3PZLEY.js.map → autocomplete-VX4PMMLR.js.map} +0 -0
  1084. /package/dist/{avatars-N4SRNQI7.js.map → avatars-5KCRSUJ3.js.map} +0 -0
  1085. /package/dist/{bid-pricing-VYLVGU26.js.map → bid-pricing-AIUACXUH.js.map} +0 -0
  1086. /package/dist/{brand-ASBS2HZM.js.map → brand-UBTC2WXR.js.map} +0 -0
  1087. /package/dist/{businesses-JBDQZZIG.js.map → businesses-P3RX4UXS.js.map} +0 -0
  1088. /package/dist/{campaign-groups-ATE2DE4V.js.map → campaign-groups-SJZEDIBL.js.map} +0 -0
  1089. /package/dist/{campaign-writes-SX52CJYW.js.map → campaign-writes-5BPVXG4C.js.map} +0 -0
  1090. /package/dist/{campaign-writes-ETT57KLQ.js.map → campaign-writes-VE6QLIDA.js.map} +0 -0
  1091. /package/dist/{campaigns-J6VZBIV6.js.map → campaigns-JEWEDCTC.js.map} +0 -0
  1092. /package/dist/{campaigns-WBEG5QA4.js.map → campaigns-MEIMSHJF.js.map} +0 -0
  1093. /package/dist/{campaigns-FGBAS6AZ.js.map → campaigns-NCGJNJKS.js.map} +0 -0
  1094. /package/dist/{campaigns-X3DPCCSN.js.map → campaigns-XY7QWHDN.js.map} +0 -0
  1095. /package/dist/{capabilities-RDAERPYY.js.map → capabilities-W6SPXOPF.js.map} +0 -0
  1096. /package/dist/{cards-4477BFEV.js.map → cards-CLD4WX6G.js.map} +0 -0
  1097. /package/dist/{catalogs-G3YEVG6S.js.map → catalogs-DINPKQXY.js.map} +0 -0
  1098. /package/dist/{changes-TP7ZZHB3.js.map → changes-N2YZXAPF.js.map} +0 -0
  1099. /package/dist/{chatgpt-QNUN63YS.js.map → chatgpt-TPAP6BVY.js.map} +0 -0
  1100. /package/dist/{chats-YIAQGQ3X.js.map → chats-FKVVBXVF.js.map} +0 -0
  1101. /package/dist/{chunk-YBP7O5P4.js.map → chunk-24IQ6K7K.js.map} +0 -0
  1102. /package/dist/{chunk-YC2TQ3VC.js.map → chunk-2FZG5DD2.js.map} +0 -0
  1103. /package/dist/{chunk-7SDFKGQ4.js.map → chunk-2T3EH2MU.js.map} +0 -0
  1104. /package/dist/{chunk-FXED3VZK.js.map → chunk-2Y5UE2CV.js.map} +0 -0
  1105. /package/dist/{chunk-VB6WJJR3.js.map → chunk-3KPQDXIU.js.map} +0 -0
  1106. /package/dist/{chunk-6G5K6ZC6.js.map → chunk-4AFGT3L3.js.map} +0 -0
  1107. /package/dist/{chunk-MZL4H5PY.js.map → chunk-4JKBMKFC.js.map} +0 -0
  1108. /package/dist/{chunk-RX6F3GEA.js.map → chunk-4KBWL7S4.js.map} +0 -0
  1109. /package/dist/{chunk-KLNKEVIY.js.map → chunk-4R3QKEDV.js.map} +0 -0
  1110. /package/dist/{chunk-VFIOJD5M.js.map → chunk-6SL6463H.js.map} +0 -0
  1111. /package/dist/{chunk-HZ5DR5MX.js.map → chunk-7TRSFEHZ.js.map} +0 -0
  1112. /package/dist/{chunk-4NDCTLI5.js.map → chunk-APNV7FMK.js.map} +0 -0
  1113. /package/dist/{chunk-PBA3YCZA.js.map → chunk-BCSOWRQL.js.map} +0 -0
  1114. /package/dist/{chunk-VVZBBKRC.js.map → chunk-BJEW3LST.js.map} +0 -0
  1115. /package/dist/{chunk-LS5MTRFI.js.map → chunk-BYKUAX26.js.map} +0 -0
  1116. /package/dist/{chunk-MADAAZZV.js.map → chunk-C7NPNSFO.js.map} +0 -0
  1117. /package/dist/{chunk-EFSYTROP.js.map → chunk-CVIMIOPO.js.map} +0 -0
  1118. /package/dist/{chunk-WS2GMOSG.js.map → chunk-DAKIMGUS.js.map} +0 -0
  1119. /package/dist/{chunk-PWGWMIIJ.js.map → chunk-DCRUGS3G.js.map} +0 -0
  1120. /package/dist/{chunk-C6U6UDHJ.js.map → chunk-DMA77LLI.js.map} +0 -0
  1121. /package/dist/{chunk-JERXV5A3.js.map → chunk-EESOZY5S.js.map} +0 -0
  1122. /package/dist/{chunk-6DB2B3GF.js.map → chunk-EIZMOICE.js.map} +0 -0
  1123. /package/dist/{chunk-HIPDMQZ6.js.map → chunk-F3IVR3V3.js.map} +0 -0
  1124. /package/dist/{chunk-LZ73CZGP.js.map → chunk-FSX6CQ2Z.js.map} +0 -0
  1125. /package/dist/{chunk-STIB5DR5.js.map → chunk-G7LAQE56.js.map} +0 -0
  1126. /package/dist/{chunk-MLU6STIN.js.map → chunk-G7QKXFQ2.js.map} +0 -0
  1127. /package/dist/{chunk-VDHQJ6HD.js.map → chunk-G7XY4T6K.js.map} +0 -0
  1128. /package/dist/{chunk-VAISMQQB.js.map → chunk-HCDCWXSU.js.map} +0 -0
  1129. /package/dist/{chunk-G7UTTEBS.js.map → chunk-I4IVUAQN.js.map} +0 -0
  1130. /package/dist/{chunk-2TK4DEOE.js.map → chunk-IWNZCYWI.js.map} +0 -0
  1131. /package/dist/{chunk-K3PN7TN5.js.map → chunk-JF5LNI6O.js.map} +0 -0
  1132. /package/dist/{chunk-ALTBBAYU.js.map → chunk-JJZBZYNK.js.map} +0 -0
  1133. /package/dist/{chunk-WNFIJAUO.js.map → chunk-JZP5IODJ.js.map} +0 -0
  1134. /package/dist/{chunk-EH4C4CZK.js.map → chunk-KWMYTVHI.js.map} +0 -0
  1135. /package/dist/{chunk-VAJBWA2U.js.map → chunk-LFGCOAB4.js.map} +0 -0
  1136. /package/dist/{chunk-6B7VKFS4.js.map → chunk-LPRUP3ZX.js.map} +0 -0
  1137. /package/dist/{chunk-KNY76UGC.js.map → chunk-MD3VH5UG.js.map} +0 -0
  1138. /package/dist/{chunk-ACANMASG.js.map → chunk-MFORE6F4.js.map} +0 -0
  1139. /package/dist/{chunk-AWMFUGVX.js.map → chunk-MMBHCAON.js.map} +0 -0
  1140. /package/dist/{chunk-XL3BMSYG.js.map → chunk-NIGGMK7L.js.map} +0 -0
  1141. /package/dist/{chunk-ANCSKUWI.js.map → chunk-NN7A2ILR.js.map} +0 -0
  1142. /package/dist/{chunk-UC6BWM5J.js.map → chunk-OUQMJRH6.js.map} +0 -0
  1143. /package/dist/{chunk-T3BDNJIX.js.map → chunk-OXKUWTFL.js.map} +0 -0
  1144. /package/dist/{chunk-HQSCJYZO.js.map → chunk-P5T7OZKV.js.map} +0 -0
  1145. /package/dist/{chunk-RPUSTYHL.js.map → chunk-PAJJXZ3Z.js.map} +0 -0
  1146. /package/dist/{chunk-QSN5MZGS.js.map → chunk-PC56KVAD.js.map} +0 -0
  1147. /package/dist/{chunk-3CWL2LY4.js.map → chunk-PEWNEPDR.js.map} +0 -0
  1148. /package/dist/{chunk-W3ZHJJVT.js.map → chunk-Q2T4XZG4.js.map} +0 -0
  1149. /package/dist/{chunk-35XWJEWH.js.map → chunk-RCR6RVYE.js.map} +0 -0
  1150. /package/dist/{chunk-VMDAXFRI.js.map → chunk-RH2H5PBV.js.map} +0 -0
  1151. /package/dist/{chunk-PDTB5EX6.js.map → chunk-S3XM4LD3.js.map} +0 -0
  1152. /package/dist/{chunk-75FDTDLH.js.map → chunk-SFHL3KWY.js.map} +0 -0
  1153. /package/dist/{chunk-LIQ4SQ2T.js.map → chunk-SQ7DRYCC.js.map} +0 -0
  1154. /package/dist/{chunk-YBMVHGY3.js.map → chunk-SSVZM3P6.js.map} +0 -0
  1155. /package/dist/{chunk-XMD4SHFI.js.map → chunk-TMNLIA7R.js.map} +0 -0
  1156. /package/dist/{chunk-ZPU3WDVK.js.map → chunk-UF55TADX.js.map} +0 -0
  1157. /package/dist/{chunk-TD2P4HBP.js.map → chunk-UGI33KTO.js.map} +0 -0
  1158. /package/dist/{chunk-BA7FDXQC.js.map → chunk-UK2OTLT3.js.map} +0 -0
  1159. /package/dist/{chunk-DR34ZTWD.js.map → chunk-UU3FGKUW.js.map} +0 -0
  1160. /package/dist/{chunk-5Z2KSVIV.js.map → chunk-UX7HIGS7.js.map} +0 -0
  1161. /package/dist/{chunk-KQTYTCKQ.js.map → chunk-VDZIGI2C.js.map} +0 -0
  1162. /package/dist/{chunk-U6SYRIOB.js.map → chunk-VKVIBQP3.js.map} +0 -0
  1163. /package/dist/{chunk-65RIB7A6.js.map → chunk-VLF2M4GZ.js.map} +0 -0
  1164. /package/dist/{chunk-7OFNN4CT.js.map → chunk-VTF7XNOP.js.map} +0 -0
  1165. /package/dist/{chunk-2GK33EJV.js.map → chunk-WDA3L4NF.js.map} +0 -0
  1166. /package/dist/{chunk-H26L3OQY.js.map → chunk-XDV6Q33B.js.map} +0 -0
  1167. /package/dist/{chunk-U3HAMW5W.js.map → chunk-XYC26BDM.js.map} +0 -0
  1168. /package/dist/{chunk-F2S5BLPE.js.map → chunk-YTWNY3RF.js.map} +0 -0
  1169. /package/dist/{claim-V4F5GZJK.js.map → claim-JLVISHS4.js.map} +0 -0
  1170. /package/dist/{client-VHN32ZRE.js.map → client-G6DGRGKT.js.map} +0 -0
  1171. /package/dist/{code-YS6ZMGX3.js.map → code-AYN42EK7.js.map} +0 -0
  1172. /package/dist/{companies-NJGJ7XNN.js.map → companies-XDMOP2GL.js.map} +0 -0
  1173. /package/dist/{complete-MGNF5OAK.js.map → complete-XM7VLC4F.js.map} +0 -0
  1174. /package/dist/{config-CQN5FHMZ.js.map → config-UE7GCROG.js.map} +0 -0
  1175. /package/dist/{connect-PJOTRTT4.js.map → connect-VTDKGYP3.js.map} +0 -0
  1176. /package/dist/{conversation-4DM26FRD.js.map → conversation-F53OE25Y.js.map} +0 -0
  1177. /package/dist/{conversion-report-N4HANYOB.js.map → conversion-report-35MLL3FA.js.map} +0 -0
  1178. /package/dist/{conversion-upload-command-TZTHU2CD.js.map → conversion-upload-command-CV2TA7OV.js.map} +0 -0
  1179. /package/dist/{conversion-writes-LW4HQKK5.js.map → conversion-writes-NSZPNMPE.js.map} +0 -0
  1180. /package/dist/{conversions-JGECVZSY.js.map → conversions-7YO6DDL3.js.map} +0 -0
  1181. /package/dist/{conversions-TS723AZV.js.map → conversions-XNISCCC2.js.map} +0 -0
  1182. /package/dist/{countries-ESAKTQAE.js.map → countries-NMWPKFFW.js.map} +0 -0
  1183. /package/dist/{create-I2KVDTCQ.js.map → create-ARERZYCL.js.map} +0 -0
  1184. /package/dist/{create-DSGQFBI7.js.map → create-C6ZVYIF5.js.map} +0 -0
  1185. /package/dist/{create-WOHPIGBK.js.map → create-FAPJFCZE.js.map} +0 -0
  1186. /package/dist/{create-SBQWVLXG.js.map → create-M7TUO3XS.js.map} +0 -0
  1187. /package/dist/{creatives-4JGVZQGC.js.map → creatives-3YIV6IOK.js.map} +0 -0
  1188. /package/dist/{creatives-DWO5KEQC.js.map → creatives-QZCO6WGH.js.map} +0 -0
  1189. /package/dist/{creatives-PSWCNY7U.js.map → creatives-WJLJ3NKP.js.map} +0 -0
  1190. /package/dist/{critique-TIZJ5GFM.js.map → critique-56MNXW7R.js.map} +0 -0
  1191. /package/dist/{critique-NGMZK5LX.js.map → critique-KRIKEHF6.js.map} +0 -0
  1192. /package/dist/{crm-2WAR565U.js.map → crm-OETFQNR3.js.map} +0 -0
  1193. /package/dist/{crm-VDXUO2YU.js.map → crm-WXCFB4TU.js.map} +0 -0
  1194. /package/dist/{crop-2J4RKJ6B.js.map → crop-VCP2JLQL.js.map} +0 -0
  1195. /package/dist/{currency-XCGKQ7FE.js.map → currency-MNNDKY4Z.js.map} +0 -0
  1196. /package/dist/{custom-conversions-6P555U2K.js.map → custom-conversions-CIU525HM.js.map} +0 -0
  1197. /package/dist/{customers-ATENMXDO.js.map → customers-GTPEABJI.js.map} +0 -0
  1198. /package/dist/{delete-3AV3ARMX.js.map → delete-5CURRI25.js.map} +0 -0
  1199. /package/dist/{delete-H744GNS4.js.map → delete-CLC2Q2OE.js.map} +0 -0
  1200. /package/dist/{delete-AVMZYNVT.js.map → delete-CQ6Q3URI.js.map} +0 -0
  1201. /package/dist/{delete-A5XD52K4.js.map → delete-JIRZBBDD.js.map} +0 -0
  1202. /package/dist/{delete-OEYPFATY.js.map → delete-LD3F4UIW.js.map} +0 -0
  1203. /package/dist/{delete-MRM2S4Z5.js.map → delete-LGZ5OI4C.js.map} +0 -0
  1204. /package/dist/{demographics-M5LJF3RZ.js.map → demographics-EK2ZPHWK.js.map} +0 -0
  1205. /package/dist/{describe-6NVOWIBE.js.map → describe-BNB6643C.js.map} +0 -0
  1206. /package/dist/{describe-P3PPIQME.js.map → describe-ZXGFTCDR.js.map} +0 -0
  1207. /package/dist/{dimensions-EYAYO27I.js.map → dimensions-IU4ETG4U.js.map} +0 -0
  1208. /package/dist/{discard-72I6SM7G.js.map → discard-VWCXYJWU.js.map} +0 -0
  1209. /package/dist/{discover-BJPZNXUQ.js.map → discover-4EQWGIAN.js.map} +0 -0
  1210. /package/dist/{domain-R4EIZD2W.js.map → domain-I2SAGVAB.js.map} +0 -0
  1211. /package/dist/{download-7T6HIJKD.js.map → download-D7TB4744.js.map} +0 -0
  1212. /package/dist/{draft-YDY2Q2K6.js.map → draft-4VOOSJQJ.js.map} +0 -0
  1213. /package/dist/{draft-BBFJNZ5X.js.map → draft-6KG2YFOY.js.map} +0 -0
  1214. /package/dist/{draft-YYYRWF7M.js.map → draft-APDGACIC.js.map} +0 -0
  1215. /package/dist/{draft-BGUJDHXR.js.map → draft-D76C4JR3.js.map} +0 -0
  1216. /package/dist/{draft-THPZFASM.js.map → draft-HFH2Y6F5.js.map} +0 -0
  1217. /package/dist/{draft-34C3F5U4.js.map → draft-NVVWWQVC.js.map} +0 -0
  1218. /package/dist/{draft-KIBMVKSR.js.map → draft-NWLPLTWM.js.map} +0 -0
  1219. /package/dist/{env-KIP2J2UB.js.map → env-LHLGM2YJ.js.map} +0 -0
  1220. /package/dist/{export-JQRMBJ7D.js.map → export-VGCFD7GL.js.map} +0 -0
  1221. /package/dist/{extract-7QKLME7Z.js.map → extract-32J7V2RX.js.map} +0 -0
  1222. /package/dist/{facets-F2H52MS4.js.map → facets-WVI6VBDC.js.map} +0 -0
  1223. /package/dist/{favorites-NSGF4OV5.js.map → favorites-WKV5H5OF.js.map} +0 -0
  1224. /package/dist/{feedback-IQKKT4MC.js.map → feedback-NMNKYEMU.js.map} +0 -0
  1225. /package/dist/{feedback-record-UZV4Y7UD.js.map → feedback-record-2VYBMWMO.js.map} +0 -0
  1226. /package/dist/{fetch-ZUAZPLAE.js.map → fetch-CENBDLT6.js.map} +0 -0
  1227. /package/dist/{fetch-XF76JABV.js.map → fetch-XQFPE3MI.js.map} +0 -0
  1228. /package/dist/{find-OTDIX6V4.js.map → find-PNDKEOXT.js.map} +0 -0
  1229. /package/dist/{fit-2CA4JH7N.js.map → fit-SEWGCEW5.js.map} +0 -0
  1230. /package/dist/{fonts-F2XUCIIW.js.map → fonts-KUCQAR7N.js.map} +0 -0
  1231. /package/dist/{forecast-IDKJYM2B.js.map → forecast-PI52G2GL.js.map} +0 -0
  1232. /package/dist/{funding-NYO65IMT.js.map → funding-ZRC25X5I.js.map} +0 -0
  1233. /package/dist/{ga4-UDQ2HA2J.js.map → ga4-YDKXVJOC.js.map} +0 -0
  1234. /package/dist/{generate-MMBYB44G.js.map → generate-BVMMX3SS.js.map} +0 -0
  1235. /package/dist/{get-3L6W3E3T.js.map → get-7MSF4RVQ.js.map} +0 -0
  1236. /package/dist/{get-XN5ZGDIK.js.map → get-KFVPIDIA.js.map} +0 -0
  1237. /package/dist/{get-6WEYKOY6.js.map → get-NHQ2XYKZ.js.map} +0 -0
  1238. /package/dist/{get-YIHTAMRT.js.map → get-UMMTY74K.js.map} +0 -0
  1239. /package/dist/{get-P743RPSI.js.map → get-YM77HCL5.js.map} +0 -0
  1240. /package/dist/{gif-53ULFVLR.js.map → gif-X323HXS2.js.map} +0 -0
  1241. /package/dist/{google-KTO3PLEU.js.map → google-76A4MHQH.js.map} +0 -0
  1242. /package/dist/{google-ads-Q37I2D5P.js.map → google-ads-S6O4MLKA.js.map} +0 -0
  1243. /package/dist/{group-GKWCCX66.js.map → group-CTIZVYX2.js.map} +0 -0
  1244. /package/dist/{group-EFZ3AJIE.js.map → group-HKWQ75CJ.js.map} +0 -0
  1245. /package/dist/{gsc-P3QYGDV2.js.map → gsc-CORRYJBJ.js.map} +0 -0
  1246. /package/dist/{history-4II5QA4B.js.map → history-4U7FJGEM.js.map} +0 -0
  1247. /package/dist/{history-DBIEYQHY.js.map → history-BXOMJ5PL.js.map} +0 -0
  1248. /package/dist/{hubspot-TTITJFBO.js.map → hubspot-I5MFAZ4G.js.map} +0 -0
  1249. /package/dist/{icon-I43F77FV.js.map → icon-6QW63AHG.js.map} +0 -0
  1250. /package/dist/{ideas-V4Q6JDKV.js.map → ideas-QDS5XA4S.js.map} +0 -0
  1251. /package/dist/{images-SP5REF6E.js.map → images-NVTA2OHD.js.map} +0 -0
  1252. /package/dist/{improve-BCCU5AS6.js.map → improve-WR23CHYH.js.map} +0 -0
  1253. /package/dist/{ingest-574GIFAR.js.map → ingest-QAVJ2J7F.js.map} +0 -0
  1254. /package/dist/{ingest-IC4T76W6.js.map → ingest-XJHV3GG6.js.map} +0 -0
  1255. /package/dist/{insights-ZIU6FJMS.js.map → insights-AW7SOGHI.js.map} +0 -0
  1256. /package/dist/{insights-NZWSJKU4.js.map → insights-IJEPLWQH.js.map} +0 -0
  1257. /package/dist/{inspect-ATHYY6A2.js.map → inspect-7I53PWCF.js.map} +0 -0
  1258. /package/dist/{inspiration-P265QJ2H.js.map → inspiration-TJJFUVY2.js.map} +0 -0
  1259. /package/dist/{intent-E3UIVZBN.js.map → intent-VEUQS34Z.js.map} +0 -0
  1260. /package/dist/{job-L7RJZMSG.js.map → job-K7LAIBYN.js.map} +0 -0
  1261. /package/dist/{job-create-JUDAN52O.js.map → job-create-DFZL4CGA.js.map} +0 -0
  1262. /package/dist/{job-status-U43WE3RJ.js.map → job-status-6Q2TVTEO.js.map} +0 -0
  1263. /package/dist/{keep-55CPC7DG.js.map → keep-XJFCLVCP.js.map} +0 -0
  1264. /package/dist/{keyword-gap-BG6M665A.js.map → keyword-gap-CUOGKUMM.js.map} +0 -0
  1265. /package/dist/{keyword-metrics-J4UPUDN7.js.map → keyword-metrics-LK7FME4N.js.map} +0 -0
  1266. /package/dist/{keywords-for-site-MWADFEO2.js.map → keywords-for-site-4E7UU44P.js.map} +0 -0
  1267. /package/dist/{landing-R6DN7XLK.js.map → landing-I65PFN7H.js.map} +0 -0
  1268. /package/dist/{languages-HORKPDNH.js.map → languages-KPPKX3E2.js.map} +0 -0
  1269. /package/dist/{languages-JSGWCC7Z.js.map → languages-MGEBLO64.js.map} +0 -0
  1270. /package/dist/{logo-2IP663QO.js.map → launches-E3Y6NCQE.js.map} +0 -0
  1271. /package/dist/{layerize-RPD6SNP6.js.map → layerize-N4IQ2KE7.js.map} +0 -0
  1272. /package/dist/{leads-7EVHMNUF.js.map → leads-PPMOBH7U.js.map} +0 -0
  1273. /package/dist/{leads-JM6HUERX.js.map → leads-TNEQUOUN.js.map} +0 -0
  1274. /package/dist/{learn-LGS2F5TR.js.map → learn-QQS323PS.js.map} +0 -0
  1275. /package/dist/{library-ARKRLCNJ.js.map → library-4QQAVB6X.js.map} +0 -0
  1276. /package/dist/{lighthouse-6ZC45E53.js.map → lighthouse-CD47CPJM.js.map} +0 -0
  1277. /package/dist/{line-item-writes-KUYEXSIH.js.map → line-item-writes-QJZQUQ4E.js.map} +0 -0
  1278. /package/dist/{line-items-GIWLP3FL.js.map → line-items-ESEAXGBV.js.map} +0 -0
  1279. /package/dist/{link-PVM7XJQI.js.map → link-DPJYS4WY.js.map} +0 -0
  1280. /package/dist/{linkedin-WX54EAX6.js.map → linkedin-EJPNC4VY.js.map} +0 -0
  1281. /package/dist/{list-P7NAFN6J.js.map → list-A45NTPSJ.js.map} +0 -0
  1282. /package/dist/{list-7MVBXOJT.js.map → list-GNP4GIV2.js.map} +0 -0
  1283. /package/dist/{list-LI4OGQFW.js.map → list-KQFLOVC4.js.map} +0 -0
  1284. /package/dist/{list-AL7N6X2P.js.map → list-MDHK3ENJ.js.map} +0 -0
  1285. /package/dist/{list-A5UCIR2J.js.map → list-PRUFXMXW.js.map} +0 -0
  1286. /package/dist/{list-WR7QYTON.js.map → list-S3BAQCTL.js.map} +0 -0
  1287. /package/dist/{list-4ZKQZBCL.js.map → list-UU5NPLJ7.js.map} +0 -0
  1288. /package/dist/{list-MCEFXC6L.js.map → list-V525A4Z4.js.map} +0 -0
  1289. /package/dist/{locations-74TPQWAT.js.map → locations-J2PVPDZU.js.map} +0 -0
  1290. /package/dist/{locations-J4G5RNPH.js.map → locations-TFOYESTF.js.map} +0 -0
  1291. /package/dist/{log-U6IWZGOF.js.map → log-XQBEJOOW.js.map} +0 -0
  1292. /package/dist/{lookup-XK45W2SH.js.map → logo-KQD5KUAH.js.map} +0 -0
  1293. /package/dist/{output-RAH3TSIL.js.map → lookup-QCREWUV4.js.map} +0 -0
  1294. /package/dist/{media-M7E6V2XU.js.map → media-2WENMOAA.js.map} +0 -0
  1295. /package/dist/{media-6CQYG4UY.js.map → media-N4C6Q4IV.js.map} +0 -0
  1296. /package/dist/{media-sources-JWGO23BZ.js.map → media-sources-BPOTW6IB.js.map} +0 -0
  1297. /package/dist/{members-5FAW4YE7.js.map → members-BOYZKLNK.js.map} +0 -0
  1298. /package/dist/{meta-EZ4SY25M.js.map → meta-PXYHWOOG.js.map} +0 -0
  1299. /package/dist/{metrics-SQDJ5NQO.js.map → metrics-FZANUN7E.js.map} +0 -0
  1300. /package/dist/{models-7U3GRYHF.js.map → models-W6EN3WB7.js.map} +0 -0
  1301. /package/dist/{normalize-ICQF2AST.js.map → normalize-LOMDPNFJ.js.map} +0 -0
  1302. /package/dist/{performance-FGCDWHMC.js.map → output-SR4DN3A4.js.map} +0 -0
  1303. /package/dist/{page-GS3WLT2C.js.map → page-FS76L5WU.js.map} +0 -0
  1304. /package/dist/{pages-FXYQLHSJ.js.map → pages-INMNJSX2.js.map} +0 -0
  1305. /package/dist/{reddit-TF6K37SB.js.map → performance-53D43XVZ.js.map} +0 -0
  1306. /package/dist/{pinterest-AUH7WBA7.js.map → pinterest-JMHFPNVW.js.map} +0 -0
  1307. /package/dist/{pixels-45A55MOP.js.map → pixels-K6ZD7SXV.js.map} +0 -0
  1308. /package/dist/{pixels-ZFF4BGUH.js.map → pixels-XPBBJYE3.js.map} +0 -0
  1309. /package/dist/{preview-AD4GKYIA.js.map → preview-KXSNG3BS.js.map} +0 -0
  1310. /package/dist/{promoted-tweet-writes-BPWTDESL.js.map → promoted-tweet-writes-I6HVQRDB.js.map} +0 -0
  1311. /package/dist/{promoted-tweets-OS3NHYVE.js.map → promoted-tweets-YAQ5ZUXI.js.map} +0 -0
  1312. /package/dist/{properties-L2XIYQDS.js.map → properties-NYNEONHI.js.map} +0 -0
  1313. /package/dist/{publish-SXZEWBVJ.js.map → publish-Z5DVKZSG.js.map} +0 -0
  1314. /package/dist/{run-TFLFBQU2.js.map → query-MSZPOHFL.js.map} +0 -0
  1315. /package/dist/{query-SGGBCHTF.js.map → query-RK2TFMBI.js.map} +0 -0
  1316. /package/dist/{query-VTGVZQIO.js.map → query-TWNH6GV7.js.map} +0 -0
  1317. /package/dist/{search-UO5KJTYS.js.map → reddit-6DQTBTO6.js.map} +0 -0
  1318. /package/dist/{refresh-APVDWXRZ.js.map → refresh-TP2TOGS6.js.map} +0 -0
  1319. /package/dist/{release-32SEJU4L.js.map → release-PHQEZ2ZX.js.map} +0 -0
  1320. /package/dist/{relevant-pages-OWMNUCP7.js.map → relevant-pages-ORVFFVAM.js.map} +0 -0
  1321. /package/dist/{remove-6LGGKMLJ.js.map → remove-ETLMMDEA.js.map} +0 -0
  1322. /package/dist/{remove-U64GTHLQ.js.map → remove-KTBM5YSH.js.map} +0 -0
  1323. /package/dist/{reopen-5VS233SF.js.map → reopen-OURQR6U7.js.map} +0 -0
  1324. /package/dist/{research-O7CJV5IS.js.map → research-P23YBKS3.js.map} +0 -0
  1325. /package/dist/{research-QYSQ6LW4.js.map → research-WCNWT5Y5.js.map} +0 -0
  1326. /package/dist/{reset-47B5VPT4.js.map → reset-2NCAWWN4.js.map} +0 -0
  1327. /package/dist/{reset-22FC7BXQ.js.map → reset-65R2CUB5.js.map} +0 -0
  1328. /package/dist/{resolve-7KQGVTQT.js.map → resolve-65FKZ23N.js.map} +0 -0
  1329. /package/dist/{retry-UJ5UF4BM.js.map → retry-P5K6LE6K.js.map} +0 -0
  1330. /package/dist/{retry-J5UVLS72.js.map → retry-UIPDQJ5F.js.map} +0 -0
  1331. /package/dist/{retry-failed-6HXPUVXJ.js.map → retry-failed-QMWQ6TRL.js.map} +0 -0
  1332. /package/dist/{shared-HJDFNID4.js.map → run-NDMEYUOI.js.map} +0 -0
  1333. /package/dist/{run-SI4FA32F.js.map → run-OP3T4TCF.js.map} +0 -0
  1334. /package/dist/{schedule-52ZM4KRQ.js.map → schedule-6D667AXB.js.map} +0 -0
  1335. /package/dist/{schedule-O2K6M43V.js.map → schedule-KXLQVCZW.js.map} +0 -0
  1336. /package/dist/{scheduled-agents-PCWCQAKP.js.map → scheduled-agents-LYWEX4PU.js.map} +0 -0
  1337. /package/dist/{schema-6GR77VJG.js.map → schema-CCFLFAOY.js.map} +0 -0
  1338. /package/dist/{scrape-ETAMW43A.js.map → scrape-DBZQFIW7.js.map} +0 -0
  1339. /package/dist/{screenshot-YCQF25ZB.js.map → screenshot-MPFANYIH.js.map} +0 -0
  1340. /package/dist/{search-OQNGSMUH.js.map → search-4AANIUUL.js.map} +0 -0
  1341. /package/dist/{search-742XSULP.js.map → search-EMJABZYF.js.map} +0 -0
  1342. /package/dist/{search-NS7XNRZC.js.map → search-HQDN7DOF.js.map} +0 -0
  1343. /package/dist/{sync-definition-BAJQUBE3.js.map → search-OVHC4CRQ.js.map} +0 -0
  1344. /package/dist/{search-MEEM4D3W.js.map → search-YSGZRANA.js.map} +0 -0
  1345. /package/dist/{select-4XCYVV2G.js.map → select-C6BKHB4B.js.map} +0 -0
  1346. /package/dist/{sends-WGJVQUMF.js.map → sends-HXN5HSF6.js.map} +0 -0
  1347. /package/dist/{sequences-OIPVR7JL.js.map → sequences-FRK76ZQV.js.map} +0 -0
  1348. /package/dist/{setup-links-V3URI7DL.js.map → setup-links-BM2GLSSO.js.map} +0 -0
  1349. /package/dist/{viewer-check-HFRUJ4ZU.js.map → shared-EH5ZTQXC.js.map} +0 -0
  1350. /package/dist/{site-WIQ7SSU3.js.map → site-3PEJYQJW.js.map} +0 -0
  1351. /package/dist/{sitemaps-POPZJTAX.js.map → sitemaps-7KHY2KXI.js.map} +0 -0
  1352. /package/dist/{sites-262H6LM4.js.map → sites-6B76JW6C.js.map} +0 -0
  1353. /package/dist/{skills-6TQZLIMP.js.map → skills-SCTT3LCM.js.map} +0 -0
  1354. /package/dist/{sources-L453U5MT.js.map → sources-ODJBHNGY.js.map} +0 -0
  1355. /package/dist/{stale-6OVG6VME.js.map → stale-2O54QXY2.js.map} +0 -0
  1356. /package/dist/{stats-NNXZMPZR.js.map → stats-4NBOAOR2.js.map} +0 -0
  1357. /package/dist/{status-WXWU54WR.js.map → status-NE5OBM4B.js.map} +0 -0
  1358. /package/dist/{sticker-4KMBSMP5.js.map → sticker-NLXBIOBO.js.map} +0 -0
  1359. /package/dist/{stock-2YCDN3N6.js.map → stock-F3SA4VHV.js.map} +0 -0
  1360. /package/dist/{studio-C5K3YX3P.js.map → studio-ZPDIOFKL.js.map} +0 -0
  1361. /package/dist/{sync-CDZUTGV3.js.map → sync-5GJNZDGZ.js.map} +0 -0
  1362. /package/dist/{sync-ZSNUBYPM.js.map → sync-FCNFXTFD.js.map} +0 -0
  1363. /package/dist/{sync-CF7FVUQJ.js.map → sync-YXCZ3DHY.js.map} +0 -0
  1364. /package/dist/{tag-manager-DYZUOIAS.js.map → tag-manager-YM4Q3CZT.js.map} +0 -0
  1365. /package/dist/{tags-SG3NVC3J.js.map → tags-456UOYJU.js.map} +0 -0
  1366. /package/dist/{tags-6RY23XOG.js.map → tags-5YPYHV5V.js.map} +0 -0
  1367. /package/dist/{tags-BHFQWNPL.js.map → tags-HXMHEHG2.js.map} +0 -0
  1368. /package/dist/{tags-WR6PDIDR.js.map → tags-K34666RY.js.map} +0 -0
  1369. /package/dist/{tags-VN5HTL35.js.map → tags-NB35ISO3.js.map} +0 -0
  1370. /package/dist/{targeting-constants-XJ2VOW7K.js.map → targeting-constants-3CMGPWRI.js.map} +0 -0
  1371. /package/dist/{targeting-criteria-5EXP2NXF.js.map → targeting-criteria-UKQ4WF5C.js.map} +0 -0
  1372. /package/dist/{targets-WUVEJPSD.js.map → targets-VQ4BQ657.js.map} +0 -0
  1373. /package/dist/{templates-LOJQX2NG.js.map → templates-PMUIOVDX.js.map} +0 -0
  1374. /package/dist/{testimonials-6M5DXORT.js.map → testimonials-XZCGVD6V.js.map} +0 -0
  1375. /package/dist/{top-companies-E2OMMPSV.js.map → top-companies-VMRIDOOH.js.map} +0 -0
  1376. /package/dist/{translate-AW4CUKDA.js.map → translate-F5KR62LF.js.map} +0 -0
  1377. /package/dist/{triggers-MRXIDCSN.js.map → triggers-2MZX7W6Y.js.map} +0 -0
  1378. /package/dist/{tweets-ATP3FQAC.js.map → tweets-XWE3VYQ4.js.map} +0 -0
  1379. /package/dist/{unfollow-CBVPGPF7.js.map → unfollow-7U4UBAJX.js.map} +0 -0
  1380. /package/dist/{unlink-HNL747YM.js.map → unlink-AWSNY3QS.js.map} +0 -0
  1381. /package/dist/{unstage-4ZEULXEQ.js.map → unstage-OGB43ZXO.js.map} +0 -0
  1382. /package/dist/{unstage-OL2JDCLK.js.map → unstage-RQBOQ4DY.js.map} +0 -0
  1383. /package/dist/{update-YNNRX5B2.js.map → update-4KWYHMLS.js.map} +0 -0
  1384. /package/dist/{update-4KGIT4BF.js.map → update-6DKEWM64.js.map} +0 -0
  1385. /package/dist/{update-RTTC3SAK.js.map → update-G6EKHPIF.js.map} +0 -0
  1386. /package/dist/{update-JPBUF7M2.js.map → update-OFV452AC.js.map} +0 -0
  1387. /package/dist/{upload-UIXPCSXJ.js.map → upload-6CJWMQ24.js.map} +0 -0
  1388. /package/dist/{upload-L5SYZB3X.js.map → upload-GUKMQ5MT.js.map} +0 -0
  1389. /package/dist/{upscale-YWRLFU22.js.map → upscale-A456MESF.js.map} +0 -0
  1390. /package/dist/{url-params-K47CE7Y5.js.map → url-params-OE3UMYMM.js.map} +0 -0
  1391. /package/dist/{use-UT2DIZOG.js.map → use-HBVKVT5S.js.map} +0 -0
  1392. /package/dist/{variant-FLZJYGYL.js.map → variant-HULP57YI.js.map} +0 -0
  1393. /package/dist/{videos-BP3BKNTY.js.map → videos-ION7UT3M.js.map} +0 -0
  1394. /package/dist/{view-NPAG66QK.js.map → view-GCDEJZII.js.map} +0 -0
  1395. /package/dist/{web-RPSGFN4U.js.map → web-CCVD6UZ4.js.map} +0 -0
  1396. /package/dist/{write-commands-WTRSOSO3.js.map → write-commands-47OP673X.js.map} +0 -0
  1397. /package/dist/{write-commands-TAYGTJEZ.js.map → write-commands-IJ5IFHS6.js.map} +0 -0
  1398. /package/dist/{write-commands-4WARNR2T.js.map → write-commands-NNVDWBLG.js.map} +0 -0
  1399. /package/dist/{write-commands-ERKVRHTC.js.map → write-commands-OBMIVFZJ.js.map} +0 -0
  1400. /package/dist/{x-VZCELH3P.js.map → x-U32DT24S.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/commands/canvas/viewer-check.ts","../src/commands/canvas/casting-check.ts","../src/commands/canvas/turn-renders.ts","../src/commands/creatives/company-offer.ts"],"sourcesContent":["/**\n * Would the person this ad reaches understand it?\n *\n * A static ad is judged by who sees it. A production Session shipped a whiteboard reading\n * \"Reasons I joined the Club®\" to a prospecting ad set: a stranger does not know there is a\n * club, what it is, or that it is about driving jobs. Every check the run had passed it,\n * because they asked whether the words were spelled right, not whether anyone could tell\n * what was on offer. The same words would have been fine for someone who had been to the\n * site.\n *\n * So before anything is rendered, a model plays the viewer the ad set reaches (what they\n * already know, where they scroll) and says, from the words and the picture alone, what is\n * offered, to whom, and what to do next. The decision model (Jev), not the viewer, compares that\n * with what the concept means to say, in whatever language each is written. The viewer decides:\n * there is no rule about temperature.\n */\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readdir, readFile, stat, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { VIEWER_CHECK_MODEL } from \"@baker/canvas-contract\";\nimport { defineCommand } from \"citty\";\nimport { parse as parseYaml } from \"yaml\";\nimport { z } from \"zod\";\nimport { askJev } from \"../../engine/nodes/local/lib/jev.ts\";\nimport { askAboutText, type ReviewUsage } from \"../../engine/nodes/local/lib/render-review.ts\";\nimport { readAdSpec } from \"../../engine/scaffold/static-ad-spec.ts\";\nimport { requireCredentialsFromEnv } from \"../../engine/client/env.ts\";\nimport { HttpClient } from \"../../engine/client/http.ts\";\nimport { optionalTurnId } from \"../../env.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport {\n AWARENESS_VALUES,\n type Awareness,\n describeMarket,\n marketFromCompanyDoc,\n type ViewerMarket,\n viewerFromKnowledge,\n VIEWER_KNOWS_VALUES,\n VIEWER_SOURCE_VALUES,\n VIEWER_TEMPERATURE_VALUES,\n type ViewerProfile,\n} from \"../../viewer-profile.ts\";\nimport { readAudienceNames } from \"../../audience-names.ts\";\nimport { rememberedJev } from \"../../engine/lib/remembered-nouls.ts\";\nimport { adSetViewerRows, audienceNamesOf } from \"../ads/meta/adset-viewers.ts\";\nimport { findWorkspaceRoot } from \"./normalize-paths.ts\";\nimport { holdUnbilledSpend } from \"./unbilled-spend.ts\";\nimport { type CastingOutcome, castingCheck, castingCheckFailure } from \"./casting-check.ts\";\nimport { readTurnRenders, recordViewerFail, updateTurnRenders, viewerChecksSpent } from \"./turn-renders.ts\";\nimport { marketQuery } from \"../creatives/company-offer.ts\";\n\nexport const VIEWER_QUESTIONS = [\"offer\", \"for_whom\", \"next_step\"] as const;\nexport type ViewerQuestion = (typeof VIEWER_QUESTIONS)[number];\n\nexport const VIEWER_CLARITY = [\"clear\", \"guess\", \"unclear\"] as const;\nexport type ViewerClarity = (typeof VIEWER_CLARITY)[number];\n\nconst ViewerReply = z.object({ answer: z.string().default(\"\"), clarity: z.enum(VIEWER_CLARITY) });\n\n/** What the viewer model answers: each question with how sure it is, and what it would need to be told. */\nexport const ViewerAnswerSchema = z.object({\n offer: ViewerReply,\n for_whom: ViewerReply,\n next_step: ViewerReply,\n /** The words that talk to the viewer as if they had already done something with the brand; \"\" when none. */\n presumes: z.string().default(\"\"),\n missing: z.string().default(\"\"),\n});\nexport type ViewerAnswer = z.infer<typeof ViewerAnswerSchema>;\n\n/** What the concept means the viewer to take away (`prompt.json` `message`, the persona it is written for). */\nexport type ViewerIntended = {\n offer?: string;\n persona?: string;\n /** What the company sells, in a few words (COMPANY.md's first line): a viewer sure of it read the offer. */\n sells?: string;\n};\n\nexport type ViewerMiss =\n | {\n question: ViewerQuestion;\n /** `unclear`: they could not tell. `guessed`: they had to infer it. `misread`: they were sure, and wrong. */\n reason: \"unclear\" | \"guessed\" | \"misread\";\n viewerSaid: string;\n intended?: string;\n }\n | {\n /** The ad talks to them as someone who already bought, signed up, tried or gave; they have not. */\n question: \"presumes\";\n reason: \"presumed\";\n /** The words that presume it. */\n viewerSaid: string;\n };\n\nexport type ViewerVerdict = { pass: boolean; missed: ViewerMiss[] };\n\n/**\n * The least each answer must reach. What is offered has to be said by the ad; what to do\n * next may be inferred (the platform's button carries it). Who it is for is asked, and goes\n * into the fix, but never fails an ad alone: on E8 (BENCH.md) it decided no ad that did not\n * work and failed ads that did, where the offer itself says who it is for (an Audi finance\n * deal). One table so the calibration set moves a threshold here, not in the judge.\n */\nexport const VIEWER_REQUIRED_CLARITY: Readonly<Record<ViewerQuestion, ViewerClarity>> = {\n offer: \"clear\",\n for_whom: \"unclear\",\n next_step: \"guess\",\n};\n\nconst RANK: Readonly<Record<ViewerClarity, number>> = { unclear: 0, guess: 1, clear: 2 };\n\n/** A reply at least as sure as `least`. Pure. */\nexport const sureEnough = (clarity: ViewerClarity, least: ViewerClarity): boolean => RANK[clarity] >= RANK[least];\n\n/**\n * At or above this, the decision model says the viewer read the offer the ad means. Measured on\n * 30 readings in 9 languages (scripts/viewer-read-evals): read 0.77–0.98, misread 0.26 or less.\n */\nexport const OFFER_READ = 0.5;\n\nconst READ_QUESTION =\n \"A viewer said an ad offers `viewer_said`; the ad means `meant`. Does `viewer_said` name the same thing on offer as `meant`, in other words or in another language? A general kind of thing that covers it counts (delivery driver jobs for van driving work).\";\nconst SELLS_QUESTION =\n \"A viewer said an ad offers `viewer_said`. Is `viewer_said` about what `company_sells` describes: the same product or service, a part of it, or a step toward buying it (a quote, a survey, a trial), in any language?\";\n\n/** For each reading, the probability it names what the ad means (or what the company sells); null when no judgment came back. */\nexport type ReadJudge = (\n pairs: ReadonlyArray<{ said: string; meant: string; sells?: string }>,\n) => Promise<number[] | null>;\n\n/**\n * The decision model as the judge, its spend reported to `onSpend`: one Noul against what the ad\n * means and one against what the company sells, the higher kept. A message written as a promise\n * or a belief names no product, and a viewer who named the product read it (Dev, Oct 2026).\n */\nexport function jevReadJudge(onSpend?: (usage: ReviewUsage) => void): ReadJudge {\n return async (pairs) => {\n const questions = pairs.flatMap((p): Array<{ instructions: Record<string, string> }> => [\n { instructions: { viewer_said: p.said, meant: p.meant, question: READ_QUESTION } },\n ...(p.sells ? [{ instructions: { viewer_said: p.said, company_sells: p.sells, question: SELLS_QUESTION } }] : []),\n ]);\n const answers = await askJev(questions, onSpend);\n if (answers === null) return null;\n let next = 0;\n return pairs.map((p) => {\n const meant = answers[next++] ?? 0;\n return p.sells ? Math.max(meant, answers[next++] ?? 0) : meant;\n });\n };\n}\n\n/**\n * Which of the viewer's readings name something other than what the ad means: the decision model\n * reads both in whatever language each is written (the viewer answers in English; the ad's message\n * is in the ad's). A pair with nothing to compare, or no judgment at all, is never a misreading: the\n * check does not refuse an ad on a guess. One request for every pair.\n */\nexport async function misreadings(\n pairs: ReadonlyArray<{ said: string; meant?: string | undefined; sells?: string | undefined }>,\n judge: ReadJudge,\n): Promise<boolean[]> {\n const asked = pairs.flatMap((p, i) =>\n p.said.trim() && p.meant?.trim()\n ? [{ i, pair: { said: p.said.trim(), meant: p.meant.trim(), ...(p.sells?.trim() ? { sells: p.sells.trim() } : {}) } }]\n : [],\n );\n const out = pairs.map(() => false);\n if (asked.length === 0) return out;\n const judged = await judge(asked.map((a) => a.pair)).catch(() => null);\n if (judged === null) return out;\n asked.forEach((a, k) => {\n const p = judged[k];\n out[a.i] = p !== undefined && p < OFFER_READ;\n });\n return out;\n}\n\n/** Whether the viewer understood the ad well enough, and what they missed. Pure. */\nexport function judgeViewerAnswer(\n answer: ViewerAnswer,\n intended: ViewerIntended,\n required: Readonly<Record<ViewerQuestion, ViewerClarity>> = VIEWER_REQUIRED_CLARITY,\n /** The decision model said the viewer, sure of the offer, named something else (`misreadings`). */\n offerMisread = false,\n): ViewerVerdict {\n const missed: ViewerMiss[] = [];\n for (const question of VIEWER_QUESTIONS) {\n const reply = answer[question];\n const meant = question === \"offer\" ? intended.offer : question === \"for_whom\" ? intended.persona : undefined;\n const withIntended = meant ? { intended: meant } : {};\n if (RANK[reply.clarity] < RANK[required[question]]) {\n missed.push({\n question,\n reason: reply.clarity === \"unclear\" ? \"unclear\" : \"guessed\",\n viewerSaid: reply.answer,\n ...withIntended,\n });\n } else if (question === \"offer\" && offerMisread) {\n // Only the offer is compared: who an ad is for is said in too many ways\n // (\"unemployed men 25-45\" vs \"people looking for driving work\") to hold against an ad.\n missed.push({ question, reason: \"misread\", viewerSaid: reply.answer, ...withIntended });\n }\n }\n if (answer.presumes.trim()) missed.push({ question: \"presumes\", reason: \"presumed\", viewerSaid: answer.presumes.trim() });\n return { pass: missed.length === 0, missed };\n}\n\n// --- The viewer's question ---\n\n/** One line of the ad's copy, the thing in the picture it is written on when lettered in the scene, and its role. */\nexport type ViewerCopyLine = { text: string; on?: string; role?: string };\n\n/** Roles a glance never reads: the small print. */\nconst SMALL_PRINT = /^(fine_print|legal|disclaimer|footnote)$/;\n\n/** Everything the viewer check reads: what is on the ad, who sees it, and what it means to say. */\nexport type ViewerCheckInput = {\n copy: ViewerCopyLine[];\n /** The picture, in words (`prompt.json` scene). */\n scene: string;\n /** The advertiser's name, which the platform prints above every ad. */\n brand?: string;\n viewer: ViewerProfile;\n intended: ViewerIntended;\n};\n\n/** Where the viewer meets the ad. Advantage+ (\"automatic\") includes Stories and Reels. */\nfunction wherePhrase(placements: readonly string[]): string {\n const fullScreen = placements.length === 0 || placements.some((p) => /automatic|stor|reel/i.test(p));\n return fullScreen\n ? \"full screen through Instagram or Facebook Stories and Reels, thumb ready to swipe\"\n : \"through your Instagram or Facebook feed\";\n}\n\n/**\n * What the viewer already knows, in their own terms. Only a viewer who knows the offer is told it.\n * The advertiser is never named: a stranger does not know whose ad it is, so the words must say it.\n */\nfunction knowledgePhrase(viewer: ViewerProfile, offer: string | undefined): string {\n const brand = \"the advertiser\";\n if (!viewer.knows.includes(\"brand\")) return `You have never heard of ${brand} and know nothing about what it sells.`;\n const offerPart = viewer.knows.includes(\"offer\")\n ? offer\n ? ` You know what they offer: ${offer}.`\n : \" You know what they offer.\"\n : \" You do not know what they are offering right now.\";\n const product = viewer.knows.includes(\"product\") ? \" You have used what they sell.\" : \"\";\n return `You have come across ${brand} before.${offerPart}${product}`;\n}\n\n/**\n * The viewer model's prompt. Written to the reader guidance for Gemini 3 text models\n * (`.context/prompting-google-gemini-image.md` §2, §7): short, the purpose stated, the data\n * first and the question last, the answer a fixed JSON the code grades — the model is never\n * asked whether the ad \"works\", only what it understood. Pure.\n */\nexport function buildViewerPrompt(input: ViewerCheckInput): string {\n const brand = \"the advertiser\";\n // Only a stranger can be talked to as a returning customer by mistake: retargeting copy\n // (\"still in your cart\", \"thanks for your donation last winter\") is right for the viewer who knows the brand.\n const stranger = !input.viewer.knows.includes(\"brand\");\n // A glance reads the big words and skips the small print.\n const read = input.copy.filter((line) => !SMALL_PRINT.test((line.role ?? \"\").trim().toLowerCase().replace(/[\\s-]+/g, \"_\")));\n const words =\n read.length > 0\n ? read.map((line) => `- \"${line.text}\"${line.on ? ` (written on the ${line.on})` : \"\"}`).join(\"\\n\")\n : \"- none: the picture is the whole ad\";\n return [\n `${input.viewer.market ? `You are ${describeMarket(input.viewer.market)}.` : \"You live where this ad runs and read its language natively.\"} You are scrolling ${wherePhrase(input.viewer.placements)}. ${knowledgePhrase(input.viewer, input.intended.offer)}`,\n `An ad from an advertiser whose name means nothing to you holds you for about three seconds: you take in the picture and read the biggest words, not every line. This is what you see, plus the platform's usual button under it (such as \"Learn more\"):`,\n \"\",\n `Picture: ${input.scene.trim()}`,\n \"Words on it:\",\n words,\n \"\",\n \"Answer as this person, from those words, that picture and what you already know. Do not fill gaps with what ads like this usually sell.\",\n 'For each question give your answer in English and how sure you are: \"clear\" when the words or the picture say it outright, or you already know it; \"guess\" when you are piecing it together from someone else\\'s story or review, a list of perks, a statistic or the advertiser\\'s name; \"unclear\" when you cannot tell.',\n \"offer: what is being offered?\",\n \"for_whom: who is it for?\",\n \"next_step: what would you do next if you wanted it?\",\n ...(stranger\n ? [\n `presumes: quote the words that say you have already done something with ${brand} (bought, signed up, started a trial, an order or a registration, donated, left something in a basket); words that only speak to you, or say what you would get, do not count; \"\" when none do.`,\n ]\n : []),\n 'missing: in one short sentence, what you would need to be told to get it; \"\" when nothing.',\n \"\",\n `Reply with only this JSON: {\"offer\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"for_whom\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},\"next_step\":{\"answer\":\"\",\"clarity\":\"clear|guess|unclear\"},${stranger ? '\"presumes\":\"\",' : \"\"}\"missing\":\"\"}`,\n ].join(\"\\n\");\n}\n\n/**\n * The cache key of one viewer check: the words, the picture, the viewer (what they know and\n * where they scroll, not how that was explained), what the ad means to say, the model, and\n * the prompt itself, so a rewritten prompt asks again. Pure.\n */\nexport function viewerCheckCacheKey(input: ViewerCheckInput, model: string): string {\n const { temperature, knows, placements, market } = input.viewer;\n const canonical = {\n prompt: buildViewerPrompt({ ...input, viewer: { ...input.viewer, reasons: [] } }),\n viewer: { temperature, knows: [...knows].sort(), placements: [...placements].sort(), ...(market ? { market } : {}) },\n intended: input.intended,\n model,\n };\n return createHash(\"sha256\").update(JSON.stringify(canonical)).digest(\"hex\");\n}\n\n/** The model boundary: the parsed JSON reply to one prompt, or null when no model answered. */\nexport type AskViewerModel = (prompt: string) => Promise<unknown>;\n\ntype JudgedViewerCheck = {\n input: ViewerCheckInput;\n answer: ViewerAnswer;\n verdict: ViewerVerdict;\n /** The answer came from the cache: nothing was asked or paid for. */\n cached: boolean;\n};\n\nexport type ViewerCheckOutcome =\n | (JudgedViewerCheck & { status: \"passed\" })\n | (JudgedViewerCheck & { status: \"failed\" })\n | { status: \"unavailable\"; input: ViewerCheckInput };\n\nasync function cachedAnswer(file: string): Promise<ViewerAnswer | null> {\n try {\n const parsed = ViewerAnswerSchema.safeParse(JSON.parse(await readFile(file, \"utf8\")));\n return parsed.success ? parsed.data : null;\n } catch {\n return null;\n }\n}\n\n/**\n * Ask the viewer, or read the answer this exact ad and viewer already got, and grade it.\n * The answer is what is cached, not the verdict, so a change to the judge re-grades for\n * free. A model that does not answer (twice) or answers out of shape is `unavailable`:\n * the caller lets the render through and says it was not checked.\n */\nexport async function checkViewer(\n input: ViewerCheckInput,\n opts: {\n cacheDir: string;\n model: string;\n ask: AskViewerModel;\n /** Whether the viewer read the offer the ad means (`misreadings`); the decision model unless given. */\n judge?: ReadJudge;\n },\n): Promise<ViewerCheckOutcome> {\n const file = path.join(opts.cacheDir, \"viewer-check\", `${viewerCheckCacheKey(input, opts.model)}.json`);\n let answer = await cachedAnswer(file);\n const cached = answer !== null;\n const prompt = buildViewerPrompt(input);\n for (let attempt = 0; answer === null && attempt < 2; attempt++) {\n const parsed = ViewerAnswerSchema.safeParse(await opts.ask(prompt));\n if (parsed.success) answer = parsed.data;\n }\n if (answer === null) return { status: \"unavailable\", input };\n if (!cached) {\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, `${JSON.stringify(answer, null, 2)}\\n`, \"utf8\");\n }\n // Only a viewer sure enough of the offer can have misread it.\n const sure = sureEnough(answer.offer.clarity, VIEWER_REQUIRED_CLARITY.offer);\n const [offerMisread = false] = sure\n ? await misreadings(\n [{ said: answer.offer.answer, meant: input.intended.offer, sells: input.intended.sells }],\n opts.judge ?? jevReadJudge(),\n )\n : [];\n const verdict = judgeViewerAnswer(answer, input.intended, VIEWER_REQUIRED_CLARITY, offerMisread);\n const judged = { input, answer, verdict, cached };\n return verdict.pass ? { ...judged, status: \"passed\" } : { ...judged, status: \"failed\" };\n}\n\n/** The viewer in one phrase, for the agent: \"a cold viewer who knows nothing about the brand yet, on automatic placements\". */\nexport function describeViewer(viewer: ViewerProfile): string {\n const known = viewer.knows.map((k) => `the ${k}`);\n const knows =\n known.length > 0\n ? `who knows ${known.length > 1 ? `${known.slice(0, -1).join(\", \")} and ${known.at(-1)}` : known[0]}`\n : \"who knows nothing about the brand yet\";\n return `a ${viewer.temperature} viewer ${knows}, on ${viewer.placements.join(\", \") || \"automatic\"} placements`;\n}\n\nconst QUESTION_WORDS: Readonly<Record<ViewerQuestion, string>> = {\n offer: \"what is offered\",\n for_whom: \"who it is for\",\n next_step: \"what to do next\",\n};\n\nfunction missLine(miss: ViewerMiss): string {\n if (miss.question === \"presumes\") {\n return `The words talk to them as if they had already done something with the brand: \"${miss.viewerSaid}\". They have not.`;\n }\n const said = miss.viewerSaid.trim() ? `\"${miss.viewerSaid.trim()}\"` : \"nothing\";\n const how =\n miss.reason === \"misread\"\n ? `was sure it is ${said}`\n : miss.reason === \"guessed\"\n ? `could only guess ${said}`\n : `could not tell (said ${said})`;\n const question = QUESTION_WORDS[miss.question];\n return `${question.charAt(0).toUpperCase()}${question.slice(1)}: they ${how}${miss.intended ? `; the ad means \"${miss.intended}\"` : \"\"}.`;\n}\n\n/** The `{ ok: false, error }` a failed check prints: what the viewer missed, and the rewrite that fixes it. Pure. */\nexport function viewerCheckFailure(\n outcome: Extract<ViewerCheckOutcome, { status: \"failed\" }>,\n slug: string,\n): { ok: false; error: { code: \"viewer_check_failed\"; message: string; fix: string; viewer: ViewerProfile; missed: ViewerMiss[] } } {\n const { viewer } = outcome.input;\n const who = describeViewer(viewer);\n const missing = outcome.answer.missing.trim();\n const unsaid = outcome.verdict.missed.flatMap((m) => (m.question === \"presumes\" ? [] : [QUESTION_WORDS[m.question]]));\n // The one rewrite that answers a missed offer, so it takes one edit, not seven (dev, Oct 2026).\n const offer = outcome.input.intended.offer?.trim();\n const rewrite =\n offer && outcome.verdict.missed.some((m) => m.question === \"offer\")\n ? [`Do this: make the biggest words say \"${offer}\", plainly, in the ad's language; keep the rest.`]\n : [];\n const fix = [\n ...rewrite,\n ...(unsaid.length > 0 ? [`Seen by ${who}, the words and picture alone do not say ${unsaid.join(\" or \")}.`] : [`Seen by ${who}:`]),\n ...outcome.verdict.missed.map(missLine),\n ...(missing ? [`They needed: ${missing}`] : []),\n \"Rewrite the copy in prompt.json so the words on the ad say it plainly (name the offer and who it is for; a stranger reads only what is printed), then re-run.\",\n // The run asks the viewer itself, from the same cache: a separate check is one more wait (dev, Oct 2026).\n `Then run the same \\`baker canvas run\\` again: it checks the new copy before it spends (or \\`baker canvas viewer-check ${slug}\\` alone).`,\n \"If this ad will run to people who already know the brand, record that viewer in _definition.md (`targetAdSet` and `viewer`, from `baker ads meta adsets --audience`) instead of rewriting.\",\n ].join(\" \");\n return {\n ok: false,\n error: {\n code: \"viewer_check_failed\",\n message: `Not rendered: ${who} would not understand this ad.`,\n fix,\n viewer,\n missed: outcome.verdict.missed,\n },\n };\n}\n\n// --- Who sees the ad ---\n\n/** The `viewer` a `_definition.md` records, as `baker ads meta adsets --audience` prints it. */\nconst RecordedViewer = z.object({\n temperature: z.enum(VIEWER_TEMPERATURE_VALUES),\n knows: z.array(z.enum(VIEWER_KNOWS_VALUES)).default([]),\n placements: z.array(z.string().min(1)).default([\"automatic\"]),\n source: z.enum(VIEWER_SOURCE_VALUES),\n reasons: z.array(z.string()).default([]),\n market: z\n .object({\n country: z.string().min(2),\n language: z.string().optional(),\n currency: z.string().optional(),\n address: z.string().optional(),\n })\n .optional(),\n});\n\n/** What a creative says about who will see it: `_definition.md`'s `viewer`, `targetAdSet`, `persona`, `awareness`. */\nexport type ViewerSources = { recorded?: unknown; targetAdSet?: string; persona?: string; awareness?: Awareness };\n\n/** One persona in the Knowledge (`src/content/personas/`): its file name, title and `segment`. */\nexport type PersonaEntry = { slug: string; title?: string; segment?: string };\n\n/** The reads resolving a viewer may need. Injected so the order is tested without an ad account. */\nexport type ViewerLookups = {\n /** The viewer the ad set reaches (`classifyAudience`), or null when no connected account holds it. */\n adSetViewer: (adSetId: string) => Promise<ViewerProfile | null>;\n personas: () => Promise<PersonaEntry[]>;\n /** The market COMPANY.md names (`marketFromCompanyDoc`), for a viewer read with none. */\n companyMarket?: () => Promise<ViewerMarket | undefined>;\n /** What the company sells, from COMPANY.md, for the casting check. */\n company?: () => Promise<string>;\n};\n\nexport type ResolvedViewer = {\n viewer: ViewerProfile;\n from: \"recorded\" | \"ad_set\" | \"knowledge\" | \"default\";\n /** What could not be read on the way, in the order it was tried. */\n notes: string[];\n};\n\n/** A name as it compares: accents and case off, words only (\"Pet-owners\" and \"pet owners\" alike). */\nconst nameKey = (text: string): string =>\n text\n .normalize(\"NFD\")\n .replace(/\\p{M}/gu, \"\")\n .toLowerCase()\n .split(/[^\\p{L}\\p{N}]+/u)\n .filter(Boolean)\n .join(\" \");\n\n/**\n * The segments the concept is written for: the persona the creative names, matched to its\n * entry in the Knowledge by file name, title or segment (or taken as written when none\n * matches); every persona on file when it names none. Pure.\n */\nexport function personaSegments(persona: string | undefined, entries: readonly PersonaEntry[]): string[] {\n const describe = (entry: PersonaEntry) => entry.segment ?? entry.title ?? entry.slug;\n if (!persona?.trim()) return entries.map(describe);\n const wanted = nameKey(persona);\n const match = entries.find((entry) =>\n [entry.slug.replace(/[-_]/g, \" \"), entry.title, entry.segment].some((name) => name && nameKey(name) === wanted),\n );\n return [match ? describe(match) : persona.trim()];\n}\n\n/**\n * The viewer an ad is checked against, in this order: the one recorded in `_definition.md`;\n * the one its `targetAdSet` reaches; the one the Knowledge describes (personas and the\n * concept's awareness); a cold stranger, saying so.\n */\nexport async function resolveViewer(sources: ViewerSources, lookups: ViewerLookups): Promise<ResolvedViewer> {\n const resolved = await resolveViewerAlone(sources, lookups);\n if (resolved.viewer.market || !lookups.companyMarket) return resolved;\n const market = await lookups.companyMarket().catch(() => undefined);\n return market ? { ...resolved, viewer: { ...resolved.viewer, market } } : resolved;\n}\n\nasync function resolveViewerAlone(sources: ViewerSources, lookups: ViewerLookups): Promise<ResolvedViewer> {\n const notes: string[] = [];\n if (sources.recorded !== undefined) {\n const recorded = RecordedViewer.safeParse(sources.recorded);\n if (recorded.success) return { viewer: recorded.data, from: \"recorded\", notes };\n notes.push(\"The viewer recorded in _definition.md is not in the shape `baker ads meta adsets --audience` prints; it was skipped.\");\n }\n if (sources.targetAdSet) {\n try {\n const fromAdSet = await lookups.adSetViewer(sources.targetAdSet);\n if (fromAdSet) return { viewer: fromAdSet, from: \"ad_set\", notes };\n notes.push(`Ad set ${sources.targetAdSet} is not in any connected Meta ad account.`);\n } catch (e) {\n notes.push(`Could not read ad set ${sources.targetAdSet} (${e instanceof Error ? e.message : String(e)}).`);\n }\n }\n let entries: PersonaEntry[] = [];\n try {\n entries = await lookups.personas();\n } catch (e) {\n notes.push(`Could not read the personas in the Knowledge (${e instanceof Error ? e.message : String(e)}).`);\n }\n const personas = personaSegments(sources.persona, entries);\n if (personas.length > 0 || sources.awareness) {\n return { viewer: viewerFromKnowledge({ personas, awareness: sources.awareness }), from: \"knowledge\", notes };\n }\n return {\n viewer: {\n temperature: \"cold\",\n knows: [],\n placements: [\"automatic\"],\n source: \"knowledge\",\n reasons: [\n \"Nothing says who will see this ad (no viewer or targetAdSet in _definition.md, no persona in the Knowledge), so it is checked against a cold stranger who has never heard of the brand.\",\n ],\n },\n from: \"default\",\n notes,\n };\n}\n\n// --- Reading a creative ---\n\n/** The ad as the viewer check reads it, before the viewer is known, and the people it casts (D2). */\nexport type CreativeAd = Omit<ViewerCheckInput, \"viewer\"> & { people?: string[] };\n\nconst Frontmatter = z.object({\n viewer: z.unknown().optional(),\n targetAdSet: z.union([z.string(), z.number()]).transform(String).optional(),\n persona: z.string().optional(),\n awareness: z.enum(AWARENESS_VALUES).optional().catch(undefined),\n angle: z.string().optional(),\n});\n\nfunction frontmatterOf(raw: string): z.infer<typeof Frontmatter> {\n const block = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/)?.[1];\n if (!block) return {};\n try {\n const parsed = Frontmatter.safeParse(parseYaml(block));\n return parsed.success ? parsed.data : {};\n } catch {\n return {};\n }\n}\n\n/**\n * A creative folder read for the viewer check: the words, the picture and the brand from\n * `prompt.json` (an ad spec or an older blueprint, through `readAdSpec`), what the ad means\n * to say (`message`, else the definition's `angle`; the spec's viewer, else the `persona`),\n * and what `_definition.md` says about who will see it. Throws when `prompt.json` cannot be\n * read: there is no ad to check.\n */\nexport async function readCreativeForViewerCheck(creativeDir: string): Promise<{ ad: CreativeAd; sources: ViewerSources }> {\n const spec = readAdSpec(JSON.parse(await readFile(path.join(creativeDir, \"prompt.json\"), \"utf8\")));\n const definition = frontmatterOf(await readFile(path.join(creativeDir, \"_definition.md\"), \"utf8\").catch(() => \"\"));\n const offer = spec.message?.trim() || definition.angle?.trim();\n const persona = spec.viewer?.who.trim() || definition.persona?.trim();\n const brand = spec.brand?.name?.trim();\n // src/creatives/<slug>/ → the workspace, whose COMPANY.md says what the company sells.\n const sells = marketQuery(await readFile(path.resolve(creativeDir, \"../../../COMPANY.md\"), \"utf8\").catch(() => \"\"));\n return {\n ad: {\n copy: spec.copy.map((line) => ({\n text: line.text,\n ...(line.lettering === \"in_scene\" && line.on ? { on: line.on } : {}),\n ...(line.role ? { role: line.role } : {}),\n })),\n scene: spec.scene.description,\n ...(brand ? { brand } : {}),\n intended: { ...(offer ? { offer } : {}), ...(persona ? { persona } : {}), ...(sells ? { sells } : {}) },\n ...castPeople(spec),\n },\n sources: {\n ...(definition.viewer !== undefined ? { recorded: definition.viewer } : {}),\n ...(definition.targetAdSet ? { targetAdSet: definition.targetAdSet } : {}),\n ...(definition.persona?.trim() ? { persona: definition.persona.trim() } : {}),\n ...(definition.awareness ? { awareness: definition.awareness } : {}),\n },\n };\n}\n\n/** The people a spec casts (from an avatar, or a picture of ours), in words, for the casting check. */\nfunction castPeople(spec: ReturnType<typeof readAdSpec>): { people?: string[] } {\n const people = spec.references\n .filter((r) => r.role === \"identity\" && (r.avatar || r.image) && !/^ANIMAL_/.test(r.id))\n .map((r) => r.what);\n return people.length > 0 ? { people } : {};\n}\n\n/** The personas in the Knowledge (`src/content/personas/**.md`), each with its `segment` and `# title`. */\nexport async function readPersonas(workspaceRoot: string): Promise<PersonaEntry[]> {\n const dir = path.join(workspaceRoot, \"src\", \"content\", \"personas\");\n let files: string[];\n try {\n files = (await readdir(dir, { recursive: true })).filter((f) => f.endsWith(\".md\"));\n } catch {\n return [];\n }\n return await Promise.all(\n files.map(async (file) => {\n const raw = await readFile(path.join(dir, file), \"utf8\");\n const block = raw.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/)?.[1];\n let segment: unknown;\n try {\n segment = block ? (parseYaml(block) as { segment?: unknown } | null)?.segment : undefined;\n } catch {\n segment = undefined;\n }\n const title = raw.match(/^#\\s+(.+)$/m)?.[1]?.trim();\n return {\n slug: path.basename(file, \".md\"),\n ...(title ? { title } : {}),\n ...(typeof segment === \"string\" && segment.trim() ? { segment: segment.trim() } : {}),\n };\n }),\n );\n}\n\n// --- Live reads ---\n\ntype MetaRow = Record<string, unknown>;\n\n/** One read of the Baker API, as the viewer lookups make it. */\ntype BakerRead = <T>(apiPath: string, params?: Record<string, string>) => Promise<T>;\n\n/**\n * Reads through the canvas engine's client, built from the connection alone: the CLI's\n * `apiGet` validates every optional override and ends the process on a malformed one, and\n * the render reads only the connection (`requireConnection`) so an unrelated override cannot\n * stop it. A missing connection throws here, and the lookup says so as a note.\n */\nfunction bakerRead(): BakerRead {\n const creds = requireCredentialsFromEnv();\n const http = new HttpClient({ baseUrl: creds.url, apiKey: creds.apiKey, timeoutMs: 60_000, maxRetries: 1 });\n return (apiPath, params) => http.getJson(params ? `${apiPath}?${new URLSearchParams(params)}` : apiPath);\n}\n\n/** The Meta ad accounts to look an ad set up in: the one the Runtime names, else the connected ones. */\nasync function metaAccountIds(read: BakerRead): Promise<string[]> {\n const named = process.env.BAKER_META_AD_ACCOUNT_ID;\n if (named) return [named];\n const accounts = await read<Array<{ externalId?: unknown; id?: unknown }>>(\"/api/ads/meta/accounts\");\n return accounts.flatMap((a) => {\n const id = a.externalId ?? a.id;\n return typeof id === \"string\" && id ? [id] : [];\n });\n}\n\n/** The viewer one Meta ad set reaches, read as `baker ads meta adsets --audience` reads it. */\nasync function metaAdSetViewer(adSetId: string, workspaceRoot: string): Promise<ViewerProfile | null> {\n const read = bakerRead();\n for (const account of (await metaAccountIds(read)).slice(0, 5)) {\n const params = { \"account-id\": account.startsWith(\"act_\") ? account : `act_${account}` };\n const adSet = (await read<MetaRow[]>(\"/api/ads/meta/adsets\", params)).find((row) => String(row.id) === adSetId);\n if (!adSet) continue;\n // The audience list and the objectives only sharpen the read, as in `adsets --audience`.\n const [audiences, campaigns] = await Promise.all([\n read<MetaRow[]>(\"/api/ads/meta/audiences\", params).catch(() => []),\n read<MetaRow[]>(\"/api/ads/meta/campaigns\", params).catch(() => []),\n ]);\n const cacheDir = path.join(workspaceRoot, \"canvas\", \".cache\");\n const spent: ReviewUsage[] = [];\n const readName = await readAudienceNames(\n audienceNamesOf([adSet], audiences),\n rememberedJev(path.join(cacheDir, \"audience-names.json\"), (u) => spent.push(u)),\n );\n await holdUnbilledSpend(cacheDir, spent).catch(() => undefined);\n return adSetViewerRows([adSet], audiences, campaigns, readName)[0]?.viewer ?? null;\n }\n return null;\n}\n\n/** The reads a real check makes: the Meta ad set through the API, the personas from the workspace. */\nexport function liveViewerLookups(workspaceRoot: string): ViewerLookups {\n return {\n adSetViewer: (adSetId) => metaAdSetViewer(adSetId, workspaceRoot),\n personas: () => readPersonas(workspaceRoot),\n companyMarket: async () =>\n marketFromCompanyDoc(await readFile(path.join(workspaceRoot, \"COMPANY.md\"), \"utf8\").catch(() => null)),\n company: async () => (await readFile(path.join(workspaceRoot, \"COMPANY.md\"), \"utf8\").catch(() => \"\")).slice(0, 800),\n };\n}\n\n/** The viewer model through the gateway, its spend reported to `onSpend`. */\nexport function gatewayViewerModel(model: string, onSpend?: (usage: ReviewUsage) => void): AskViewerModel {\n return (prompt) => askAboutText(model, prompt, onSpend);\n}\n\n// --- Before a render ---\n\n/** Why a render goes without asking the viewer: a correction or a resumed render of an ad already checked, or the person's own call. */\nexport type ViewerCheckSkip = \"fix\" | \"resume\" | \"asked\" | null;\n\nconst SKIP_WORDS: Readonly<Record<Exclude<ViewerCheckSkip, null>, string>> = {\n fix: \"a correction of a version already checked\",\n resume: \"a resumed render, checked when it started\",\n asked: \"--skip-viewer-check\",\n};\n\n/**\n * Why this render goes without asking the viewer, or null to ask: a correction (`--fix`, an autofix\n * round), a chosen option and a re-layout keep words already checked; an edit of the words is\n * asked about, since what it changed is what the viewer reads. Pure.\n */\nexport function viewerCheckSkip(run: {\n fix: boolean;\n useVariant: boolean;\n relaid: boolean;\n autoFixRound: number;\n resumed: boolean;\n asked: boolean;\n}): ViewerCheckSkip {\n if (run.fix || run.useVariant || run.relaid || run.autoFixRound > 0) return \"fix\";\n if (run.resumed) return \"resume\";\n return run.asked ? \"asked\" : null;\n}\n\nexport type PreRenderViewerCheck = {\n /** Who the ad is checked against, for the review after the render; null when the ad could not be read. */\n viewer: ViewerProfile | null;\n /** What to print on the run log. */\n lines: string[];\n /** Set when the viewer would not understand the ad, or its people would not pass: print it and exit 2, before anything is spent. */\n failure?: ReturnType<typeof viewerCheckFailure> | ReturnType<typeof castingCheckFailure>;\n};\n\n/**\n * The check `baker canvas run` makes on a static ad before it spends: resolve the viewer,\n * ask them (from the cache when this ad and viewer were asked before), and refuse the\n * render when they would not understand it. A correction, a resumed render and an explicit\n * skip still resolve the viewer (the review after the render reads it) but ask nothing. A\n * model that does not answer lets the render through, saying so.\n */\nexport async function viewerCheckBeforeRender(opts: {\n creativeDir: string;\n cacheDir: string;\n slug: string;\n skip: ViewerCheckSkip;\n /** This ad already failed the viewer twice in this turn (`viewerChecksSpent`): a miss is said, never held against the render. */\n spent?: boolean;\n lookups: ViewerLookups;\n model: string;\n ask: AskViewerModel;\n /** Whether the viewer read the offer (`misreadings`); the decision model unless given. */\n judge?: ReadJudge;\n}): Promise<PreRenderViewerCheck> {\n let creative: Awaited<ReturnType<typeof readCreativeForViewerCheck>>;\n try {\n creative = await readCreativeForViewerCheck(opts.creativeDir);\n } catch (e) {\n return {\n viewer: null,\n lines: [`[warn] viewer_check_skipped: prompt.json could not be read for the viewer check (${e instanceof Error ? e.message : String(e)}).`],\n };\n }\n const resolved = await resolveViewer(creative.sources, opts.lookups);\n const who = describeViewer(resolved.viewer);\n const lines = resolved.notes.map((note) => `[viewer] ${note}`);\n if (opts.skip) return { viewer: resolved.viewer, lines: [...lines, `[viewer] not asked: ${SKIP_WORDS[opts.skip]}.`] };\n // Who is cast, against who buys and where it runs (D2): asked alongside the viewer, never after it.\n const casting = (async () =>\n castingCheck(\n {\n people: creative.ad.people ?? [],\n company: (await opts.lookups.company?.().catch(() => \"\")) ?? \"\",\n ...(resolved.viewer.market ? { market: describeMarket(resolved.viewer.market) } : {}),\n ...(creative.ad.intended.persona ? { persona: creative.ad.intended.persona } : {}),\n },\n { cacheDir: opts.cacheDir, model: opts.model, ask: opts.ask },\n ))().catch((): CastingOutcome => ({ status: \"unavailable\" }));\n const outcome = await checkViewer({ ...creative.ad, viewer: resolved.viewer }, opts);\n if (outcome.status === \"unavailable\") {\n lines.push(\n `[warn] viewer_check_unavailable: the viewer model did not answer, so this ad renders without the viewer check. Read the copy as ${who} before showing it, or run \\`baker canvas viewer-check ${opts.slug}\\` again.`,\n );\n } else if (outcome.status === \"failed\" && !opts.spent) {\n return { viewer: resolved.viewer, lines, failure: viewerCheckFailure(outcome, opts.slug) };\n } else if (outcome.status === \"failed\") {\n lines.push(\n `[viewer] this ad failed the viewer check twice in this turn, so it renders as written. Tell the person what ${who} missed: ${outcome.verdict.missed.map(missLine).join(\" \")}`,\n );\n } else {\n lines.push(`[viewer] ${who} understood it: ${outcome.answer.offer.answer}${outcome.cached ? \" (cached)\" : \"\"}.`);\n }\n if (outcome.status === \"unavailable\") return { viewer: resolved.viewer, lines };\n const cast = await casting;\n if (cast.status === \"failed\") return { viewer: resolved.viewer, lines, failure: castingCheckFailure(cast.answer, opts.slug) };\n if (cast.status === \"passed\") lines.push(`[casting] the people cast pass as real customers${cast.cached ? \" (cached)\" : \"\"}.`);\n if (cast.status === \"unavailable\") {\n lines.push(\"[warn] casting_check_unavailable: the model did not answer; check yourself that the people cast look like this company's real customers.\");\n }\n return { viewer: resolved.viewer, lines };\n}\n\n// --- `baker canvas viewer-check <slug>` ---\n\nconst DESCRIPTION =\n \"Would the person this ad reaches understand it? A model plays the viewer the creative is for (the `viewer` in _definition.md, else the one its `targetAdSet` reaches, else the persona and awareness in the Knowledge, else a cold stranger) and says, from prompt.json's copy and scene alone, what is offered, to whom and what to do next; the answer is compared with prompt.json's `message`. Start here after writing the copy, before rendering: baker canvas viewer-check spring-offer. `baker canvas run` makes the same check before it spends, from the same cache, and refuses a static ad the viewer would not understand (exit 2, `viewer_check_failed`, `fix` saying what they missed). Output is compact; --full adds the viewer's whole answer and why that viewer was chosen.\";\n\nconst ARGS = {\n slug: {\n type: \"positional\",\n required: true,\n description: \"The creative: its slug (src/creatives/<slug>/), or the path to its folder, canvas or prompt.json.\",\n },\n full: {\n type: \"boolean\",\n required: false,\n default: false,\n description: \"Add the viewer's whole answer, what the ad means to say, and how the viewer was resolved.\",\n },\n} as const;\n\nregisterSchema({ command: \"canvas.viewer-check\", description: DESCRIPTION, args: ARGS });\n\n/** The creative folder an argument names: a path to it (or a file in it), else `src/creatives/<slug>/`. */\nasync function creativeDirOf(arg: string, workspaceRoot: string): Promise<string> {\n const direct = path.resolve(arg);\n try {\n return (await stat(direct)).isDirectory() ? direct : path.dirname(direct);\n } catch {\n return path.join(workspaceRoot, \"src\", \"creatives\", arg);\n }\n}\n\nexport const viewerCheckCommand = defineCommand({\n meta: { name: \"viewer-check\", description: DESCRIPTION },\n args: ARGS,\n async run({ args }) {\n const cwd = process.cwd();\n const workspaceRoot = findWorkspaceRoot(cwd) ?? cwd;\n const creativeDir = await creativeDirOf(String(args.slug), workspaceRoot);\n const slug = path.basename(creativeDir);\n let creative: Awaited<ReturnType<typeof readCreativeForViewerCheck>>;\n try {\n creative = await readCreativeForViewerCheck(creativeDir);\n } catch (e) {\n writeJson({\n ok: false,\n error: {\n code: \"NOT_FOUND\",\n message: `No readable prompt.json in ${creativeDir} (${e instanceof Error ? e.message : String(e)}).`,\n fix: \"Pass the creative's slug (src/creatives/<slug>/) or its folder; its prompt.json must parse.\",\n },\n });\n process.exit(1);\n }\n const resolved = await resolveViewer(creative.sources, liveViewerLookups(workspaceRoot));\n const input: ViewerCheckInput = { ...creative.ad, viewer: resolved.viewer };\n const cacheDir = path.join(workspaceRoot, \"canvas\", \".cache\");\n const spent: ReviewUsage[] = [];\n const outcome = await checkViewer(input, {\n cacheDir,\n model: VIEWER_CHECK_MODEL,\n ask: gatewayViewerModel(VIEWER_CHECK_MODEL, (usage) => spent.push(usage)),\n judge: jevReadJudge((usage) => spent.push(usage)),\n });\n // No run record carries this check: the next render of this workspace bills it.\n await holdUnbilledSpend(cacheDir, spent);\n const who = describeViewer(resolved.viewer);\n const detail = args.full\n ? {\n viewer_profile: resolved.viewer,\n viewer_from: resolved.from,\n intended: input.intended,\n ...(outcome.status !== \"unavailable\" ? { answer: outcome.answer } : {}),\n ...(resolved.notes.length > 0 ? { notes: resolved.notes } : {}),\n }\n : {};\n if (outcome.status === \"failed\") {\n const turnId = optionalTurnId();\n const ledger = await readTurnRenders(cacheDir);\n // Failed twice in this turn already: the render goes ahead, and the person hears what was missed.\n if (viewerChecksSpent(ledger, turnId, slug)) {\n writeJson({\n ok: true,\n data: { checked: true, understood: false, viewer: who, missed: outcome.verdict.missed, ...detail },\n hints: [\n `This ad failed the viewer check twice in this turn: render it as written (baker canvas run --slug ${slug}) and tell the person what ${who} missed: ${outcome.verdict.missed.map(missLine).join(\" \")}`,\n ],\n });\n return;\n }\n if (turnId) await updateTurnRenders(cacheDir, (current) => recordViewerFail(current, turnId, slug));\n const failure = viewerCheckFailure(outcome, slug);\n writeJson({ ...failure, error: { ...failure.error, ...detail } });\n process.exit(2);\n }\n if (outcome.status === \"unavailable\") {\n writeJson({\n ok: true,\n data: { checked: false, viewer: who, ...detail },\n hints: [\n \"The viewer model did not answer (no gateway key here, or it failed twice). Read the copy as this viewer yourself, or run the check again.\",\n ],\n });\n return;\n }\n writeJson({\n ok: true,\n data: {\n checked: true,\n understood: true,\n viewer: who,\n offer: outcome.answer.offer.answer,\n for_whom: outcome.answer.for_whom.answer,\n next_step: outcome.answer.next_step.answer,\n ...(outcome.cached ? { cached: true } : {}),\n ...detail,\n },\n hints: [\n resolved.from === \"default\"\n ? \"Checked against a cold stranger because nothing says who will see this ad: record `targetAdSet` and `viewer` in _definition.md (`baker ads meta adsets --audience`) when it will run in a known ad set.\"\n : `Checked against ${who}. Render it: baker canvas run --slug ${slug}`,\n ],\n });\n },\n});\n","/**\n * Would the people in this ad pass as real customers of this company, where it runs?\n *\n * Audited Sept 2026: casting came from the reference ad's stranger or from whichever avatar was\n * passed first: a 24-year-old model in a hoodie selling trade courses to unemployed adults\n * changing careers, a Spanish face on a Mexican ad. Before a static ad renders, a text model reads\n * who is cast (each person's description, from the avatar), what the company sells, who the ad\n * is for and where it runs, and says whether each would pass as a real customer, and who would\n * instead. Cached by the question, so asking again is free; a model that does not answer lets\n * the render through, saying so.\n */\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { z } from \"zod\";\n\nexport const CastingAnswerSchema = z.object({\n passes: z.boolean(),\n why: z.string().default(\"\"),\n instead: z.string().default(\"\"),\n});\nexport type CastingAnswer = z.infer<typeof CastingAnswerSchema>;\n\nexport type CastingInput = {\n /** Each person cast, in words (the avatar's own description). */\n people: string[];\n /** What the company sells, from COMPANY.md. */\n company: string;\n /** Where the ad runs, as the viewer would be (`describeMarket`). */\n market?: string;\n /** Who the ad is for. */\n persona?: string;\n};\n\n/** The casting question, the answer a fixed JSON the code reads. Pure. */\nexport function buildCastingPrompt(input: CastingInput): string {\n return [\n \"An ad is about to be made with these people in it:\",\n ...input.people.map((p) => `- ${p}`),\n \"\",\n `The company: ${input.company.trim() || \"(not written down)\"}`,\n ...(input.persona ? [`The ad is for: ${input.persona}`] : []),\n ...(input.market ? [`It runs for ${input.market}.`] : []),\n \"\",\n \"Would each of these people pass, to someone scrolling there, as a real customer of this company (or, for a testimonial, someone who really used it)? Judge age, look, setting and origin against who actually buys this, where the ad runs. A model-like face selling to people who are not models does not pass.\",\n 'Reply with only this JSON: {\"passes\":true|false,\"why\":\"<one sentence>\",\"instead\":\"<who would pass, in a few words, when one does not>\"}',\n ].join(\"\\n\");\n}\n\nexport type CastingOutcome =\n | { status: \"passed\" | \"failed\"; answer: CastingAnswer; cached: boolean }\n | { status: \"unavailable\" }\n | { status: \"skipped\" };\n\nfunction cacheKey(input: CastingInput, model: string): string {\n return createHash(\"sha256\").update(JSON.stringify({ prompt: buildCastingPrompt(input), model })).digest(\"hex\");\n}\n\nfunction parseOrNull(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch {\n return null;\n }\n}\n\n/** Ask, or read the answer this exact question already got. Nobody cast: nothing to check. */\nexport async function castingCheck(\n input: CastingInput,\n opts: { cacheDir: string; model: string; ask: (prompt: string) => Promise<unknown> },\n): Promise<CastingOutcome> {\n if (input.people.length === 0) return { status: \"skipped\" };\n const file = path.join(opts.cacheDir, \"casting-check\", `${cacheKey(input, opts.model)}.json`);\n const cachedRaw = await readFile(file, \"utf8\").catch(() => null);\n // A write cut short leaves half a file: that is a miss, never a failed run.\n const cachedParse = cachedRaw ? CastingAnswerSchema.safeParse(parseOrNull(cachedRaw)) : null;\n if (cachedParse?.success) return { status: cachedParse.data.passes ? \"passed\" : \"failed\", answer: cachedParse.data, cached: true };\n const prompt = buildCastingPrompt(input);\n for (let attempt = 0; attempt < 2; attempt++) {\n const parsed = CastingAnswerSchema.safeParse(await opts.ask(prompt));\n if (!parsed.success) continue;\n await mkdir(path.dirname(file), { recursive: true });\n await writeFile(file, `${JSON.stringify(parsed.data, null, 2)}\\n`, \"utf8\");\n return { status: parsed.data.passes ? \"passed\" : \"failed\", answer: parsed.data, cached: false };\n }\n return { status: \"unavailable\" };\n}\n\n/** The `{ ok: false, error }` a failed casting check prints. Pure. */\nexport function castingCheckFailure(answer: CastingAnswer, slug: string) {\n return {\n ok: false as const,\n error: {\n code: \"casting_check_failed\" as const,\n message: `Not rendered: the people cast would not pass as this company's real customers. ${answer.why}`.trim(),\n fix: [\n answer.instead ? `Cast ${answer.instead} instead:` : \"Cast someone who would:\",\n \"`baker avatars list` for the company's avatars (pass the one that fits with `--avatar` on the scaffold, or set its identity sheet URL from `baker avatars get <handle>` as the PERSON reference's `image` in prompt.json), or `baker avatars create` from the persona (age, origin, setting, accent for this market).\",\n `Then \\`baker canvas run --slug ${slug}\\` again.`,\n ].join(\" \"),\n },\n };\n}\n","/**\n * How many times each ad was rendered in this chat turn, and how the last one ended, so a turn\n * stops spending time on an ad that is done or cannot be finished. Dev, Oct 2026: a producer\n * re-rendered a `ready_with_notes` ad four more times to chase its notes, and another re-ran an ad\n * whose concept could not be kept truthfully until the turn ran out. The run's own autofix rounds\n * are one render here: only the commands an agent starts count.\n */\nimport { readFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { z } from \"zod\";\nimport { updateLockedFile } from \"../../engine/lib/file-lock.ts\";\nimport type { StaticVerdict } from \"../../engine/nodes/local/lib/static-review.ts\";\nimport type { AutoFixStep } from \"./static-autofix.ts\";\n\n/** Renders an agent may start for one ad in one turn, its autofix rounds included in each. */\nconst RUNS_PER_TURN = 2;\n\n/**\n * Viewer checks one ad may fail in one turn before it renders anyway, what the viewer missed said\n * with it. Dev, Oct 2026: a producer rewrote one ad's copy for seven checks, then sat blocked.\n */\nconst VIEWER_FAILS_PER_TURN = 2;\n\n/**\n * The time one ad may take in one turn, its renders and their correction rounds together. Past it the\n * ad is shown as it stands: the person's next message says what changes. Dev, Oct 2026: two autofix\n * rounds and a second render held one producer 21 minutes on one ad, the other two long finished.\n * 12, not 8: three rounds, each from the best attempt so far, finish what two left (prod, Oct 2026:\n * ads shown \"Needs fixes\" until the person asked again, twice).\n */\nconst AD_TURN_MS = 12 * 60_000;\n\n/** About how long each correction round takes, its review included (dev, Oct 2026 runs). */\nconst ROUND_MS: Record<AutoFixStep[\"kind\"], number> = {\n respec: 60_000,\n extend: 80_000,\n relayout: 100_000,\n fix: 150_000,\n regenerate: 220_000,\n};\n\n/** About how long a render an agent starts takes before its first review (dev, Oct 2026 runs). */\nconst RENDER_MS = 150_000;\n\nconst LedgerSchema = z.object({\n turnId: z.string(),\n creatives: z.record(\n z.string(),\n z.object({\n runs: z.number().default(0),\n verdict: z.string().optional(),\n viewerFails: z.number().optional(),\n spentMs: z.number().optional(),\n }),\n ),\n});\nexport type TurnRenders = z.infer<typeof LedgerSchema>;\n\nexport type TurnRenderRefusal = { code: \"CONFLICT\"; message: string; fix: string };\n\nconst SHOW_AS_IT_STANDS =\n \"Show the best version as a version (\\\"Version 3\\\"), never a file path or a run id, and say in one plain sentence what is left, in the person's words. End there: no question and no options; their next message says what changes.\";\n\n/** Why this ad gets no further render in this turn, or null. Pure. */\nexport function turnRenderRefusal(\n ledger: TurnRenders | undefined,\n turnId: string | undefined,\n slug: string,\n): TurnRenderRefusal | null {\n const entry = turnId !== undefined && ledger?.turnId === turnId ? ledger.creatives[slug] : undefined;\n if (!entry) return null;\n if (entry.verdict === \"ready\" || entry.verdict === \"ready_with_notes\") {\n return {\n code: \"CONFLICT\",\n message: `This ad is already ready in this turn (${entry.verdict}): its notes are not defects.`,\n fix: \"Show it now. A change the person asks for comes with their next message.\",\n };\n }\n if ((entry.spentMs ?? 0) + RENDER_MS > AD_TURN_MS) {\n return {\n code: \"CONFLICT\",\n message: `This ad has had its ${AD_TURN_MS / 60_000} minutes in this turn, its automatic corrections included, and is still not ready.`,\n fix: SHOW_AS_IT_STANDS,\n };\n }\n if (entry.runs >= RUNS_PER_TURN) {\n return {\n code: \"CONFLICT\",\n message: `This ad was rendered twice in this turn, its automatic corrections included, and is still not ready.`,\n fix: SHOW_AS_IT_STANDS,\n };\n }\n return null;\n}\n\n/** The ledger with one more render of `slug` that ended `verdict` after `tookMs`; a new turn starts it afresh. Pure. */\nexport function recordTurnRender(\n ledger: TurnRenders | undefined,\n turnId: string,\n slug: string,\n verdict: StaticVerdict,\n tookMs?: number,\n): TurnRenders {\n const creatives = ledger?.turnId === turnId ? ledger.creatives : {};\n const entry = creatives[slug];\n const spentMs = (entry?.spentMs ?? 0) + (tookMs ?? 0);\n return {\n turnId,\n creatives: {\n ...creatives,\n [slug]: { ...entry, runs: (entry?.runs ?? 0) + 1, verdict, ...(spentMs > 0 ? { spentMs } : {}) },\n },\n };\n}\n\n/**\n * Whether a correction round of `kind` still fits `slug`'s time in this turn, this render having\n * taken `renderMs` so far. Outside a chat turn only this render counts. Pure.\n */\nexport function roundFitsTurn(\n ledger: TurnRenders | undefined,\n turnId: string | undefined,\n slug: string | undefined,\n renderMs: number,\n kind: AutoFixStep[\"kind\"],\n): boolean {\n const entry = turnId !== undefined && slug !== undefined && ledger?.turnId === turnId ? ledger.creatives[slug] : undefined;\n return (entry?.spentMs ?? 0) + renderMs + ROUND_MS[kind] <= AD_TURN_MS;\n}\n\n/** The ledger with one more failed viewer check of `slug`; a new turn starts it afresh. Pure. */\nexport function recordViewerFail(ledger: TurnRenders | undefined, turnId: string, slug: string): TurnRenders {\n const creatives = ledger?.turnId === turnId ? ledger.creatives : {};\n const entry = creatives[slug] ?? { runs: 0 };\n return { turnId, creatives: { ...creatives, [slug]: { ...entry, viewerFails: (entry.viewerFails ?? 0) + 1 } } };\n}\n\n/** Whether `slug` failed the viewer check often enough in this turn to render without being held back again. Pure. */\nexport function viewerChecksSpent(ledger: TurnRenders | undefined, turnId: string | undefined, slug: string): boolean {\n const entry = turnId !== undefined && ledger?.turnId === turnId ? ledger.creatives[slug] : undefined;\n return (entry?.viewerFails ?? 0) >= VIEWER_FAILS_PER_TURN;\n}\n\nconst ledgerPath = (cacheDir: string) => path.join(cacheDir, \"turn-renders.json\");\n\nexport async function readTurnRenders(cacheDir: string): Promise<TurnRenders | undefined> {\n try {\n const parsed = LedgerSchema.safeParse(JSON.parse(await readFile(ledgerPath(cacheDir), \"utf8\")));\n return parsed.success ? parsed.data : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Change the record under a lock, written whole through a rename: `--series` runs every ad's render\n * as its own process at once, and a plain read-then-write let each one overwrite the others' entries.\n */\nexport async function updateTurnRenders(\n cacheDir: string,\n change: (ledger: TurnRenders | undefined) => TurnRenders,\n): Promise<void> {\n await updateLockedFile(ledgerPath(cacheDir), async () => JSON.stringify(change(await readTurnRenders(cacheDir))));\n}\n","/** The most words a market query keeps: the library's judge reads a long query for 45 s and more. */\nconst MARKET_QUERY_WORDS = 6;\n\n/**\n * What the company sells, in a few of its own words, as the market search's query: COMPANY.md's\n * first line, past the brand's name, up to whom it is for. Pure.\n */\nexport function marketQuery(companyDoc: string): string {\n const first = companyDoc.split(\"\\n\").find((line) => line.trim() && !line.trim().startsWith(\"#\")) ?? \"\";\n // The scaffold's own placeholder (\"TODO — Run /company-discovery…\"): nothing is said yet.\n if (/^\\s*TODO\\b/.test(first)) return \"\";\n const what = first\n .replace(/^\\s*[-*]\\s+/, \"\")\n .replace(/^\\*\\*[^*]+\\*\\*\\s*[—–:-]?\\s*/, \"\")\n .split(/\\s+for\\s+|[,.;:(]|\\s[—–-]\\s/)[0];\n return (what ?? \"\").trim().split(/\\s+/).filter(Boolean).slice(0, MARKET_QUERY_WORDS).join(\" \");\n}\n"],"mappings":"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","names":["createHash","mkdir","readFile","writeFile","path","z","readFile","path","z","z","path","readFile","z","createHash","readFile","path","mkdir","writeFile"]}
@@ -1,215 +0,0 @@
1
- import {
2
- debugLogSetting
3
- } from "./chunk-NAWWC5I3.js";
4
-
5
- // src/debugLog.ts
6
- import { appendFileSync, mkdirSync, renameSync, statSync } from "fs";
7
- import { dirname, isAbsolute, resolve } from "path";
8
- var DEFAULT_FILE = "baker-cli-debug.jsonl";
9
- var BOOLEAN_ON = /* @__PURE__ */ new Set(["1", "true", "on", "yes"]);
10
- var BOOLEAN_OFF = /* @__PURE__ */ new Set(["0", "false", "off", "no"]);
11
- var MAX_BYTES = 64 * 1024 * 1024;
12
- var REDACTIONS = [
13
- [/Bearer\s+[A-Za-z0-9._-]+/g, "Bearer [redacted]"],
14
- // Authorization headers
15
- // Both prefixes, captured rather than listed twice: `bkr_` does not contain
16
- // the literal `bk_`, so the company-key rule matched no part of the read-only
17
- // credential a Session review runs with.
18
- [/\b(bkr?)_[A-Za-z0-9]+/g, "$1_[redacted]"],
19
- // Baker API keys
20
- [/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g, "[redacted-jwt]"],
21
- // JWTs / id tokens
22
- [/ya29\.[A-Za-z0-9._-]+/g, "[redacted-google-token]"],
23
- // Google OAuth access tokens
24
- [/1\/\/[A-Za-z0-9._-]+/g, "[redacted-google-refresh]"],
25
- // Google refresh tokens
26
- [/EAA[A-Za-z0-9]{20,}/g, "[redacted-meta-token]"]
27
- // Meta/Facebook access tokens
28
- ];
29
- function redactSecrets(input) {
30
- let out = input;
31
- for (const [pattern, replacement] of REDACTIONS) {
32
- out = out.replace(pattern, replacement);
33
- }
34
- return out;
35
- }
36
- var CREDENTIAL_VALUE = "[credential value]";
37
- var CREDENTIAL_PUT_PATH = "/api/credentials/put";
38
- function withoutCredentialValue(url, body) {
39
- let path;
40
- try {
41
- path = new URL(url).pathname;
42
- } catch {
43
- path = url;
44
- }
45
- if (path !== CREDENTIAL_PUT_PATH || body === null || typeof body !== "object" || !("value" in body)) {
46
- return body;
47
- }
48
- return { ...body, value: CREDENTIAL_VALUE };
49
- }
50
- var PUT_FLAGS_WITH_VALUES = /* @__PURE__ */ new Set(["--host", "--label"]);
51
- function argvWithoutCredentialValue(argv) {
52
- if (argv[0] !== "credentials" || argv[1] !== "put") {
53
- return argv;
54
- }
55
- let nameSeen = false;
56
- let keepNext = false;
57
- let redactNext = false;
58
- return argv.map((arg, index) => {
59
- if (index < 2) return arg;
60
- if (keepNext || redactNext) {
61
- const kept = keepNext ? arg : CREDENTIAL_VALUE;
62
- keepNext = false;
63
- redactNext = false;
64
- return kept;
65
- }
66
- if (arg.startsWith("--value=")) return `--value=${CREDENTIAL_VALUE}`;
67
- redactNext = arg === "--value";
68
- keepNext = PUT_FLAGS_WITH_VALUES.has(arg);
69
- if (arg.startsWith("-")) return arg;
70
- const isName = !nameSeen;
71
- nameSeen = true;
72
- return isName ? arg : CREDENTIAL_VALUE;
73
- });
74
- }
75
- function resolveTarget() {
76
- const raw = debugLogSetting();
77
- if (!raw) {
78
- return void 0;
79
- }
80
- const lower = raw.toLowerCase();
81
- if (BOOLEAN_OFF.has(lower)) {
82
- return void 0;
83
- }
84
- const target = BOOLEAN_ON.has(lower) ? DEFAULT_FILE : raw;
85
- return isAbsolute(target) ? target : resolve(process.cwd(), target);
86
- }
87
- function isDebugLogEnabled() {
88
- return resolveTarget() !== void 0;
89
- }
90
- var sessionId;
91
- function getSessionId() {
92
- if (!sessionId) {
93
- sessionId = `${process.pid}-${Date.now()}`;
94
- }
95
- return sessionId;
96
- }
97
- var trackedPath;
98
- var bytesInFile = 0;
99
- function ensureReady(filePath) {
100
- if (trackedPath !== filePath) {
101
- trackedPath = filePath;
102
- mkdirSync(dirname(filePath), { recursive: true });
103
- try {
104
- bytesInFile = statSync(filePath).size;
105
- } catch {
106
- bytesInFile = 0;
107
- }
108
- }
109
- }
110
- function append(entry) {
111
- const filePath = resolveTarget();
112
- if (!filePath) {
113
- return;
114
- }
115
- try {
116
- const payload = { ts: (/* @__PURE__ */ new Date()).toISOString(), session: getSessionId(), ...entry };
117
- const line = `${redactSecrets(JSON.stringify(payload))}
118
- `;
119
- ensureReady(filePath);
120
- const size = Buffer.byteLength(line);
121
- if (bytesInFile + size > MAX_BYTES) {
122
- renameSync(filePath, `${filePath}.1`);
123
- bytesInFile = 0;
124
- }
125
- appendFileSync(filePath, line);
126
- bytesInFile += size;
127
- } catch {
128
- }
129
- }
130
- function errorToPlain(err) {
131
- if (err instanceof Error) {
132
- const code = err.code;
133
- return { name: err.name, message: err.message, ...typeof code === "string" ? { code } : {} };
134
- }
135
- return { message: String(err) };
136
- }
137
- var invocationStartedAt;
138
- function logInvocation(argv) {
139
- invocationStartedAt = Date.now();
140
- append({ kind: "invocation", argv: argvWithoutCredentialValue(argv), cwd: process.cwd() });
141
- }
142
- function logExit(code) {
143
- append({
144
- kind: "exit",
145
- code,
146
- ...invocationStartedAt === void 0 ? {} : { durationMs: Date.now() - invocationStartedAt }
147
- });
148
- }
149
- var exitHookInstalled = false;
150
- function installExitRecord() {
151
- if (exitHookInstalled || !isDebugLogEnabled()) {
152
- return;
153
- }
154
- exitHookInstalled = true;
155
- process.on("exit", (code) => {
156
- logExit(typeof code === "number" ? code : 0);
157
- });
158
- }
159
- function debugLogHttp(entry) {
160
- if (!isDebugLogEnabled()) {
161
- return;
162
- }
163
- append({
164
- kind: "http",
165
- source: entry.source,
166
- method: entry.method,
167
- url: entry.url,
168
- durationMs: entry.durationMs,
169
- request: withoutCredentialValue(entry.url, entry.requestBody),
170
- status: entry.status,
171
- ok: entry.ok,
172
- response: entry.responseBody,
173
- error: entry.error === void 0 ? void 0 : errorToPlain(entry.error)
174
- });
175
- }
176
- async function readBodyForLog(response) {
177
- if (!isDebugLogEnabled()) {
178
- return void 0;
179
- }
180
- try {
181
- return await response.clone().text();
182
- } catch {
183
- return void 0;
184
- }
185
- }
186
- function tapStream(name, stream) {
187
- const original = stream.write.bind(stream);
188
- const decoder = new TextDecoder("utf-8");
189
- stream.write = ((chunk, ...rest) => {
190
- try {
191
- const text = typeof chunk === "string" ? chunk : chunk instanceof Uint8Array ? decoder.decode(chunk, { stream: true }) : String(chunk);
192
- append({ kind: "output", stream: name, text });
193
- } catch {
194
- }
195
- return original(chunk, ...rest);
196
- });
197
- }
198
- var tapsInstalled = false;
199
- function installStreamTaps() {
200
- if (tapsInstalled || !isDebugLogEnabled()) {
201
- return;
202
- }
203
- tapsInstalled = true;
204
- tapStream("stdout", process.stdout);
205
- tapStream("stderr", process.stderr);
206
- }
207
-
208
- export {
209
- logInvocation,
210
- installExitRecord,
211
- debugLogHttp,
212
- readBodyForLog,
213
- installStreamTaps
214
- };
215
- //# sourceMappingURL=chunk-IFWP3ZDO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/debugLog.ts"],"sourcesContent":["// Full-fidelity debug capture for the whole CLI.\n//\n// Set BAKER_DEBUG_LOG to turn it on:\n// BAKER_DEBUG_LOG=1 -> appends to ./baker-cli-debug.jsonl\n// BAKER_DEBUG_LOG=/tmp/baker.jsonl -> appends to that file\n// BAKER_DEBUG_LOG=0|false|off|no -> disabled (same as unset)\n//\n// When enabled, every HTTP request/response (both the REST client and the\n// canvas engine client), every byte written to stdout/stderr, and the command\n// invocation are appended as JSONL entries. Known secret shapes are redacted\n// before anything is written (best-effort — see redactSecrets). Logging is\n// always fail-open: a logging error is swallowed so it can never break a\n// command. The file rotates once past MAX_BYTES so an always-on capture cannot\n// fill the disk.\n\nimport { appendFileSync, mkdirSync, renameSync, statSync } from \"node:fs\";\nimport { dirname, isAbsolute, resolve } from \"node:path\";\nimport { debugLogSetting } from \"./env.ts\";\n\nconst DEFAULT_FILE = \"baker-cli-debug.jsonl\";\nconst BOOLEAN_ON = new Set([\"1\", \"true\", \"on\", \"yes\"]);\nconst BOOLEAN_OFF = new Set([\"0\", \"false\", \"off\", \"no\"]);\n\n// Rotate once the active file passes this size (one older generation, `<file>.1`,\n// is kept). Bounds growth for the always-on sandbox capture without a per-write stat.\nconst MAX_BYTES = 64 * 1024 * 1024;\n\n// Best-effort redaction. Response/request bodies are stored as escaped strings, so\n// key/value matching is unreliable there; instead we scrub the token *values*\n// themselves (quote-agnostic) plus the auth header and Baker keys. This is not\n// exhaustive — a secret in an unrecognized shape can still be written. See README.\nconst REDACTIONS: ReadonlyArray<readonly [RegExp, string]> = [\n [/Bearer\\s+[A-Za-z0-9._-]+/g, \"Bearer [redacted]\"], // Authorization headers\n // Both prefixes, captured rather than listed twice: `bkr_` does not contain\n // the literal `bk_`, so the company-key rule matched no part of the read-only\n // credential a Session review runs with.\n [/\\b(bkr?)_[A-Za-z0-9]+/g, \"$1_[redacted]\"], // Baker API keys\n [/eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/g, \"[redacted-jwt]\"], // JWTs / id tokens\n [/ya29\\.[A-Za-z0-9._-]+/g, \"[redacted-google-token]\"], // Google OAuth access tokens\n [/1\\/\\/[A-Za-z0-9._-]+/g, \"[redacted-google-refresh]\"], // Google refresh tokens\n [/EAA[A-Za-z0-9]{20,}/g, \"[redacted-meta-token]\"], // Meta/Facebook access tokens\n];\n\nexport function redactSecrets(input: string): string {\n let out = input;\n for (const [pattern, replacement] of REDACTIONS) {\n out = out.replace(pattern, replacement);\n }\n return out;\n}\n\nconst CREDENTIAL_VALUE = \"[credential value]\";\nconst CREDENTIAL_PUT_PATH = \"/api/credentials/put\";\n\n/**\n * `baker credentials put` carries a credential's value, the one payload this\n * log must never hold whatever its shape: the Session review reads this file.\n * Keyed on the route, not on a secret pattern, so a value no rule recognises\n * is still dropped.\n */\nfunction withoutCredentialValue(url: string, body: unknown): unknown {\n let path: string;\n try {\n path = new URL(url).pathname;\n } catch {\n path = url;\n }\n if (path !== CREDENTIAL_PUT_PATH || body === null || typeof body !== \"object\" || !(\"value\" in body)) {\n return body;\n }\n return { ...body, value: CREDENTIAL_VALUE };\n}\n\nconst PUT_FLAGS_WITH_VALUES = new Set([\"--host\", \"--label\"]);\n\n/** A value typed after `credentials put` (refused by the command, but already in argv) never reaches the log. */\nfunction argvWithoutCredentialValue(argv: string[]): string[] {\n if (argv[0] !== \"credentials\" || argv[1] !== \"put\") {\n return argv;\n }\n let nameSeen = false;\n let keepNext = false;\n let redactNext = false;\n return argv.map((arg, index) => {\n if (index < 2) return arg;\n if (keepNext || redactNext) {\n const kept = keepNext ? arg : CREDENTIAL_VALUE;\n keepNext = false;\n redactNext = false;\n return kept;\n }\n if (arg.startsWith(\"--value=\")) return `--value=${CREDENTIAL_VALUE}`;\n redactNext = arg === \"--value\";\n keepNext = PUT_FLAGS_WITH_VALUES.has(arg);\n if (arg.startsWith(\"-\")) return arg;\n const isName = !nameSeen;\n nameSeen = true;\n return isName ? arg : CREDENTIAL_VALUE;\n });\n}\n\nfunction resolveTarget(): string | undefined {\n const raw = debugLogSetting();\n if (!raw) {\n return undefined;\n }\n const lower = raw.toLowerCase();\n if (BOOLEAN_OFF.has(lower)) {\n return undefined;\n }\n const target = BOOLEAN_ON.has(lower) ? DEFAULT_FILE : raw;\n return isAbsolute(target) ? target : resolve(process.cwd(), target);\n}\n\nexport function isDebugLogEnabled(): boolean {\n return resolveTarget() !== undefined;\n}\n\nlet sessionId: string | undefined;\nfunction getSessionId(): string {\n if (!sessionId) {\n sessionId = `${process.pid}-${Date.now()}`;\n }\n return sessionId;\n}\n\n// Per-resolved-path bookkeeping so the hot path skips redundant syscalls: the\n// directory is ensured once and the current size is read once (via statSync),\n// then tracked in-process. Resets when the resolved path changes.\nlet trackedPath: string | undefined;\nlet bytesInFile = 0;\n\nfunction ensureReady(filePath: string): void {\n if (trackedPath !== filePath) {\n trackedPath = filePath;\n mkdirSync(dirname(filePath), { recursive: true });\n try {\n bytesInFile = statSync(filePath).size;\n } catch {\n bytesInFile = 0;\n }\n }\n}\n\nfunction append(entry: Record<string, unknown>): void {\n const filePath = resolveTarget();\n if (!filePath) {\n return;\n }\n try {\n const payload = { ts: new Date().toISOString(), session: getSessionId(), ...entry };\n const line = `${redactSecrets(JSON.stringify(payload))}\\n`;\n ensureReady(filePath);\n const size = Buffer.byteLength(line);\n if (bytesInFile + size > MAX_BYTES) {\n renameSync(filePath, `${filePath}.1`);\n bytesInFile = 0;\n }\n appendFileSync(filePath, line);\n bytesInFile += size;\n } catch {\n // Fail-open: debug logging must never break a command.\n }\n}\n\nfunction errorToPlain(err: unknown): Record<string, unknown> {\n if (err instanceof Error) {\n const code = (err as { code?: unknown }).code;\n return { name: err.name, message: err.message, ...(typeof code === \"string\" ? { code } : {}) };\n }\n return { message: String(err) };\n}\n\nlet invocationStartedAt: number | undefined;\n\nexport function logInvocation(argv: string[]): void {\n invocationStartedAt = Date.now();\n append({ kind: \"invocation\", argv: argvWithoutCredentialValue(argv), cwd: process.cwd() });\n}\n\n/**\n * Close an invocation with its outcome and its wall time.\n *\n * Until this existed the log could say what was called and what every HTTP hop\n * cost, and nothing at all about whether the command succeeded or how long the\n * whole thing took — so \"this verb is slow\" and \"this verb fails half the time\"\n * were both unanswerable from the one record that sees every call. `durationMs`\n * is measured from `logInvocation`, which runs before any command does.\n */\nexport function logExit(code: number): void {\n append({\n kind: \"exit\",\n code,\n ...(invocationStartedAt === undefined ? {} : { durationMs: Date.now() - invocationStartedAt }),\n });\n}\n\nlet exitHookInstalled = false;\n\n/**\n * Write the exit record however the process ends.\n *\n * `process.on(\"exit\")` is the only hook that sees all of them — a clean return, a\n * `process.exit` from the error handler, an unhandled rejection — and it is\n * synchronous-only, which is exactly what `appendFileSync` needs. Installed once,\n * and only when logging is on, so the disabled path adds no listener at all.\n */\nexport function installExitRecord(): void {\n if (exitHookInstalled || !isDebugLogEnabled()) {\n return;\n }\n exitHookInstalled = true;\n process.on(\"exit\", (code) => {\n logExit(typeof code === \"number\" ? code : 0);\n });\n}\n\nexport type HttpLogEntry = {\n source: \"cli\" | \"canvas\";\n method: string;\n url: string;\n requestBody?: unknown;\n status?: number;\n ok?: boolean;\n responseBody?: string;\n durationMs?: number;\n error?: unknown;\n};\n\nexport function debugLogHttp(entry: HttpLogEntry): void {\n if (!isDebugLogEnabled()) {\n return;\n }\n append({\n kind: \"http\",\n source: entry.source,\n method: entry.method,\n url: entry.url,\n durationMs: entry.durationMs,\n request: withoutCredentialValue(entry.url, entry.requestBody),\n status: entry.status,\n ok: entry.ok,\n response: entry.responseBody,\n error: entry.error === undefined ? undefined : errorToPlain(entry.error),\n });\n}\n\n// Reads a response body for logging without consuming it for the real caller.\nexport async function readBodyForLog(response: Response): Promise<string | undefined> {\n if (!isDebugLogEnabled()) {\n return undefined;\n }\n try {\n return await response.clone().text();\n } catch {\n return undefined;\n }\n}\n\n// Method syntax (bivariant) so a real `process.stdout`/`stderr` and a plain\n// test double both satisfy it.\ntype Writable = { write(...args: unknown[]): boolean };\n\n// Wraps a stream's `write` so every chunk is mirrored into the debug log while\n// the original write semantics (args + return value) are preserved. A single\n// streaming TextDecoder per stream decodes byte chunks so a multi-byte character\n// split across two writes is reassembled instead of garbled.\nexport function tapStream(name: string, stream: Writable): void {\n const original = stream.write.bind(stream) as (...args: unknown[]) => boolean;\n const decoder = new TextDecoder(\"utf-8\");\n stream.write = ((chunk: unknown, ...rest: unknown[]): boolean => {\n try {\n const text =\n typeof chunk === \"string\"\n ? chunk\n : chunk instanceof Uint8Array\n ? decoder.decode(chunk, { stream: true })\n : String(chunk);\n append({ kind: \"output\", stream: name, text });\n } catch {\n // ignore capture failures\n }\n return original(chunk, ...rest);\n }) as typeof stream.write;\n}\n\nlet tapsInstalled = false;\n\n// Mirrors everything written to stdout/stderr into the debug log. Installed once,\n// only when enabled, so the common (disabled) path leaves the streams untouched.\nexport function installStreamTaps(): void {\n if (tapsInstalled || !isDebugLogEnabled()) {\n return;\n }\n tapsInstalled = true;\n tapStream(\"stdout\", process.stdout);\n tapStream(\"stderr\", process.stderr);\n}\n"],"mappings":"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","names":[]}