@koda-sl/baker-cli 0.554.0 → 0.555.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (552) hide show
  1. package/README.md +5 -3
  2. package/dist/{account-XIC5TTV3.js → account-H5CL6KUY.js} +4 -4
  3. package/dist/{account-assets-V7KSSTVP.js → account-assets-QMKT5AT7.js} +6 -6
  4. package/dist/{account-level-2KLG6HTG.js → account-level-BELF6JHB.js} +8 -8
  5. package/dist/{account-reads-ZPZUCB3P.js → account-reads-T6GTSAXE.js} +7 -7
  6. package/dist/{account-users-XTUKRDWK.js → account-users-ZGJCVGX4.js} +9 -9
  7. package/dist/{accounts-25JL77F7.js → accounts-EXQNPSYH.js} +5 -5
  8. package/dist/{accounts-AF72N4NV.js → accounts-GNVLFZ3X.js} +3 -3
  9. package/dist/{actions-IJO4JW7J.js → actions-Q2BMP27K.js} +18 -18
  10. package/dist/{activecampaign-PBTUMTO5.js → activecampaign-SJO2YK6M.js} +3 -3
  11. package/dist/{add-YQPFRDVM.js → add-Q3FGYX5Q.js} +3 -3
  12. package/dist/{add-KHQXXHC5.js → add-YGQBSEVK.js} +2 -2
  13. package/dist/{ads-5YCCRXEU.js → ads-7QKQEHKT.js} +6 -6
  14. package/dist/{ads-EVQ37EV3.js → ads-H5AEYIY3.js} +10 -10
  15. package/dist/{adsets-4IW5TRAK.js → adsets-BUIT7HF2.js} +13 -13
  16. package/dist/{advertisers-JNOWSZZC.js → advertisers-ZAHXMIAT.js} +3 -3
  17. package/dist/{analytics-CZMCM7XC.js → analytics-B6ER4TQ7.js} +6 -6
  18. package/dist/{analytics-K5FCQLI5.js → analytics-QW5ZXDJR.js} +3 -3
  19. package/dist/{animate-C6BRMRRD.js → animate-Q43SOWB4.js} +4 -4
  20. package/dist/{asset-writes-RF6XTWLY.js → asset-writes-JVFE457M.js} +8 -8
  21. package/dist/{assign-WXZNXVJH.js → assign-HJ2NXW4W.js} +3 -3
  22. package/dist/{audience-size-ZCWH4CFC.js → audience-size-IM3N6W7C.js} +3 -3
  23. package/dist/{audience-writes-5KT6FHUY.js → audience-writes-DWSCHYQF.js} +7 -7
  24. package/dist/{audiences-ZDOK3OYC.js → audiences-PYBJU2GV.js} +6 -6
  25. package/dist/{audit-RBRXPPKK.js → audit-N3LAQMD4.js} +3 -3
  26. package/dist/{autocomplete-P5OU7QVL.js → autocomplete-FBTPT5MA.js} +3 -3
  27. package/dist/{avatars-UHBA2BQ3.js → avatars-Y3DALQIU.js} +4 -4
  28. package/dist/{bid-pricing-LHNYSDG4.js → bid-pricing-UUAC4GTQ.js} +4 -4
  29. package/dist/{brand-7WL3O74X.js → brand-IZYD5SBJ.js} +2 -2
  30. package/dist/{brief-HWZU75WP.js → brief-NA3E2W4P.js} +18 -18
  31. package/dist/{campaign-groups-BYS3GNEP.js → campaign-groups-3IUOLEK2.js} +9 -9
  32. package/dist/{campaign-writes-N6OHAK6V.js → campaign-writes-Y7QNFOE7.js} +3 -3
  33. package/dist/{campaigns-3U5IRXSV.js → campaigns-2Z6WXIVA.js} +9 -9
  34. package/dist/{campaigns-QLKGN4FB.js → campaigns-B2AUW4TV.js} +5 -5
  35. package/dist/{campaigns-2E4AQBFB.js → campaigns-IDEA3LOK.js} +12 -12
  36. package/dist/{canvas-GGHJ26ZM.js → canvas-WHFDCHUP.js} +14 -14
  37. package/dist/{capabilities-TKEEHR7K.js → capabilities-FVMMLKPY.js} +3 -3
  38. package/dist/{catalog-7KQN43HS.js → catalog-URTZYAPU.js} +6 -6
  39. package/dist/{catalogs-5CHPI4H6.js → catalogs-OEUNVE4N.js} +7 -7
  40. package/dist/{chats-PBXYH2LT.js → chats-EENMDXWZ.js} +3 -3
  41. package/dist/{check-SVYI72DF.js → check-7735BPTR.js} +10 -10
  42. package/dist/{chunk-5AOTCCTT.js → chunk-2QGGI7MF.js} +6 -6
  43. package/dist/{chunk-4XMPL3RU.js → chunk-3HKZU3Y5.js} +3 -3
  44. package/dist/{chunk-B5UVOCYA.js → chunk-3OMFSYQ3.js} +4 -4
  45. package/dist/chunk-4N3Y5QWW.js +29 -0
  46. package/dist/chunk-4N3Y5QWW.js.map +1 -0
  47. package/dist/{chunk-LMOZWB4G.js → chunk-65CQYRMK.js} +2 -2
  48. package/dist/{chunk-I4BQTVMY.js → chunk-6MZFOMLU.js} +3 -3
  49. package/dist/{chunk-IBBGABK2.js → chunk-6PT22YSR.js} +3 -3
  50. package/dist/{chunk-QFVZIQRQ.js → chunk-6WVYBY2G.js} +11 -11
  51. package/dist/{chunk-VX6GTRT3.js → chunk-757ZFIL4.js} +2 -2
  52. package/dist/{chunk-IJ6NQKAT.js → chunk-75HAGIH6.js} +2 -2
  53. package/dist/{chunk-XSBX3LJP.js → chunk-7BVRFQN4.js} +2 -2
  54. package/dist/{chunk-7OVPQX4X.js → chunk-7TDJCDKT.js} +3 -3
  55. package/dist/{chunk-ZMTWQDFC.js → chunk-AL4MRNYI.js} +2 -2
  56. package/dist/{chunk-NO52OH3Y.js → chunk-BMNOMOWP.js} +3 -3
  57. package/dist/{chunk-4AEAL63J.js → chunk-BS2MC62Y.js} +2 -2
  58. package/dist/{chunk-DWSSQBLO.js → chunk-C6PWVZQE.js} +2 -2
  59. package/dist/{chunk-P4MXGSSJ.js → chunk-CDTAKCJR.js} +3 -3
  60. package/dist/{chunk-2RL2T5JO.js → chunk-CH44XVPE.js} +4 -4
  61. package/dist/{chunk-RHNNFCRY.js → chunk-CJWLDKFO.js} +2 -2
  62. package/dist/{chunk-YCAJCVW4.js → chunk-DAMC4FKK.js} +7 -7
  63. package/dist/{chunk-D6VQPBVM.js → chunk-DWPOAU4Z.js} +5 -5
  64. package/dist/{chunk-6MXM6DA6.js → chunk-EENYLJUN.js} +2 -2
  65. package/dist/{chunk-IZROFBH7.js → chunk-EJBLF2LI.js} +3 -3
  66. package/dist/{chunk-DNH2ZPZP.js → chunk-EJMPKO6V.js} +2 -2
  67. package/dist/{chunk-RMZLB4AH.js → chunk-EKXLJRO3.js} +2 -2
  68. package/dist/{chunk-ZANXEMON.js → chunk-EL3TDR5S.js} +2 -2
  69. package/dist/{chunk-LFELUKCA.js → chunk-GRDZWZKQ.js} +3 -3
  70. package/dist/{chunk-S4NMWYHW.js → chunk-GVUBRSD3.js} +3 -3
  71. package/dist/{chunk-LVLTWPRR.js → chunk-GYREQDTJ.js} +2 -2
  72. package/dist/{chunk-J5UTL4HE.js → chunk-HBRXFQQV.js} +3 -3
  73. package/dist/{chunk-NE3OMP7R.js → chunk-HLHR3EK2.js} +2 -2
  74. package/dist/{chunk-RJQT7QXX.js → chunk-IMFIRELA.js} +5 -5
  75. package/dist/{chunk-SP3MHBME.js → chunk-IOKD77L2.js} +2 -2
  76. package/dist/{chunk-TGT4XHLX.js → chunk-KDAINT54.js} +2 -2
  77. package/dist/{chunk-QI5UKQX3.js → chunk-KKKZRQFY.js} +3 -3
  78. package/dist/{chunk-N5AIO23H.js → chunk-KOEXPN3G.js} +15 -15
  79. package/dist/{chunk-JBMZVC5D.js → chunk-KT5JVIPZ.js} +2 -2
  80. package/dist/{chunk-NZYWKZ3Q.js → chunk-LC6PVPJX.js} +2 -2
  81. package/dist/{chunk-DK66PUXL.js → chunk-LETR3RQE.js} +2 -2
  82. package/dist/{chunk-RCNAKWK7.js → chunk-MKLAZD23.js} +7 -2
  83. package/dist/{chunk-RCNAKWK7.js.map → chunk-MKLAZD23.js.map} +1 -1
  84. package/dist/{chunk-XB4NKZAQ.js → chunk-N3PASNUA.js} +2 -2
  85. package/dist/{chunk-SFQFUQDW.js → chunk-NL77JRKE.js} +4 -4
  86. package/dist/{chunk-OIORUNKH.js → chunk-OBQ5YUOZ.js} +10 -10
  87. package/dist/{chunk-42JTSTQ3.js → chunk-OTFHIGEO.js} +2 -2
  88. package/dist/{chunk-ESXUIV6V.js → chunk-PCUWBZM3.js} +2 -2
  89. package/dist/{chunk-OKXLOLEV.js → chunk-PNWXTOQ4.js} +2 -2
  90. package/dist/{chunk-PYAR343F.js → chunk-PQFTKHDA.js} +2 -2
  91. package/dist/{chunk-XXBP73RV.js → chunk-Q5DFEVLE.js} +2 -2
  92. package/dist/{chunk-NRIKX35V.js → chunk-QXCGWAC6.js} +4 -4
  93. package/dist/{chunk-CJFCQMUY.js → chunk-RKDMYL4A.js} +2 -2
  94. package/dist/{chunk-S6XZIBWV.js → chunk-SCBSAIVV.js} +2 -2
  95. package/dist/{chunk-3HLQZTQ3.js → chunk-SPBUE7R4.js} +4 -4
  96. package/dist/{chunk-IC4MREQH.js → chunk-TWFZIHKK.js} +2 -2
  97. package/dist/{chunk-73MLPGI2.js → chunk-U6G6ALXP.js} +4 -4
  98. package/dist/{chunk-WGJ2QEW4.js → chunk-UCJAPB5Y.js} +2 -2
  99. package/dist/{chunk-4PM32OS3.js → chunk-VFDWUIGR.js} +2 -2
  100. package/dist/{chunk-BRNZMKO4.js → chunk-WC3YSN7L.js} +5 -5
  101. package/dist/{chunk-FSEFZZ2T.js → chunk-WIOPEK7K.js} +8 -8
  102. package/dist/{chunk-5NLUTJCQ.js → chunk-X3GWGFZP.js} +2 -2
  103. package/dist/{chunk-4ULGRGBG.js → chunk-X6U3B6YK.js} +19 -9
  104. package/dist/{chunk-4ULGRGBG.js.map → chunk-X6U3B6YK.js.map} +1 -1
  105. package/dist/{chunk-Y4ZBNZBU.js → chunk-XYKODRQR.js} +5 -5
  106. package/dist/{chunk-6FWVRXDW.js → chunk-XZAVBONI.js} +2 -2
  107. package/dist/{chunk-Y3SK6EMU.js → chunk-Y5PNLB24.js} +2 -2
  108. package/dist/{claim-Q76T3MYA.js → claim-PGDIRXIC.js} +3 -3
  109. package/dist/cli.js +32 -32
  110. package/dist/{companies-MLWRWQ73.js → companies-WTPKGEB3.js} +3 -3
  111. package/dist/{company-X5Z67PMK.js → company-6H2H73YP.js} +3 -3
  112. package/dist/{complete-3CFP6XVY.js → complete-2QBC3POO.js} +3 -3
  113. package/dist/{connect-QXFAB4RJ.js → connect-35YPFAUL.js} +6 -6
  114. package/dist/{conversation-C6K6IZTH.js → conversation-YZFNEWDV.js} +3 -3
  115. package/dist/{conversion-upload-command-D7S5HF22.js → conversion-upload-command-J2FIO74Y.js} +7 -7
  116. package/dist/{conversions-4ILDIG3K.js → conversions-ZFDBD3OU.js} +8 -8
  117. package/dist/{copy-writes-FYXKHJDB.js → copy-writes-2B36QJUY.js} +8 -8
  118. package/dist/{create-LDQ3YHET.js → create-3H67EUTO.js} +3 -3
  119. package/dist/{create-WQNT345R.js → create-ALTOBDP4.js} +7 -7
  120. package/dist/{create-TKOG7DNJ.js → create-C3MWUYX2.js} +2 -2
  121. package/dist/{create-WFMJOZLO.js → create-WHTT6IXY.js} +3 -3
  122. package/dist/{creatives-45SJAD3G.js → creatives-22BYP5VN.js} +4 -4
  123. package/dist/{creatives-Q4OXNCTT.js → creatives-LTIV3XPT.js} +12 -12
  124. package/dist/{creatives-E4CTMZJJ.js → creatives-Y2WLGDJW.js} +9 -9
  125. package/dist/{credentials-E2AIMWKX.js → credentials-J5DMQJWN.js} +3 -3
  126. package/dist/{critique-JVT6X2T3.js → critique-RFTS2I46.js} +15 -15
  127. package/dist/{critique-EWV3O3TD.js → critique-X6XVPIUG.js} +8 -8
  128. package/dist/{crm-NQH5FTK6.js → crm-LWRGJYHW.js} +4 -4
  129. package/dist/{crm-YGQKK76D.js → crm-RUNEJY2R.js} +8 -8
  130. package/dist/{crop-KV24WHOR.js → crop-4V4P3SKI.js} +3 -3
  131. package/dist/{custom-conversions-EJNX4MCK.js → custom-conversions-V7QPZIB4.js} +4 -4
  132. package/dist/{customers-YFEPJF4G.js → customers-IDB6NLQ6.js} +9 -9
  133. package/dist/{delete-2UJVTHRE.js → delete-2QKVUKKB.js} +3 -3
  134. package/dist/{delete-O4RO2HMR.js → delete-B7BKF24X.js} +3 -3
  135. package/dist/{delete-7QAJSOCO.js → delete-HBRYUWAA.js} +2 -2
  136. package/dist/{demographics-YWBHAMZ5.js → demographics-JHB3NFLU.js} +3 -3
  137. package/dist/{dimensions-YXOXHOXW.js → dimensions-KI3OENZD.js} +3 -3
  138. package/dist/{discard-YX4XUXG3.js → discard-FEJ6YL22.js} +3 -3
  139. package/dist/{domain-5R6CYVFY.js → domain-JYWNXBKS.js} +3 -3
  140. package/dist/{download-SYWQXF57.js → download-H3ZDQTFG.js} +50 -12
  141. package/dist/download-H3ZDQTFG.js.map +1 -0
  142. package/dist/{download-D2O4RYJ3.js → download-LOBPOIU5.js} +2 -2
  143. package/dist/{draft-SGNQOUYH.js → draft-EB5ZFDVN.js} +7 -7
  144. package/dist/{draft-3MPADYS4.js → draft-I2FLECEX.js} +3 -3
  145. package/dist/{draft-L56EMJQT.js → draft-N56HPS36.js} +3 -3
  146. package/dist/{draft-NLSQDRVQ.js → draft-ZLZRTPY6.js} +9 -9
  147. package/dist/engine/index.js +5 -5
  148. package/dist/{experiments-DYNNWQRB.js → experiments-WVTBHD6G.js} +9 -9
  149. package/dist/{extract-DWDZI35Y.js → extract-UELZV3NI.js} +31 -10
  150. package/dist/extract-UELZV3NI.js.map +1 -0
  151. package/dist/{facets-Y2IEM37E.js → facets-V2ITIUKD.js} +3 -3
  152. package/dist/{feedback-IVSLM5PN.js → feedback-PXWPR3NZ.js} +3 -3
  153. package/dist/{feedback-HJRVTU6C.js → feedback-QSIPSNAL.js} +21 -21
  154. package/dist/{feedback-record-P7CO3IGE.js → feedback-record-DJHJWJAF.js} +22 -22
  155. package/dist/{fetch-V2U5VUQZ.js → fetch-QVOOC3FA.js} +3 -3
  156. package/dist/{fit-JDG6E46O.js → fit-REGMM46H.js} +10 -10
  157. package/dist/{flows-DP574PEX.js → flows-EZV3KCV6.js} +10 -10
  158. package/dist/{fonts-RMROS3LX.js → fonts-NUX66HEI.js} +10 -10
  159. package/dist/{forecast-BRXNGMGD.js → forecast-W6HKYVX5.js} +4 -4
  160. package/dist/{forecast-AAHHVTBK.js → forecast-XDRKCR65.js} +7 -7
  161. package/dist/{funnel-FQX3DOE7.js → funnel-3YABA3G2.js} +4 -4
  162. package/dist/{generate-SYOQE3F7.js → generate-22HT24SA.js} +4 -4
  163. package/dist/{get-HMTI2IR6.js → get-GQQLBE5C.js} +3 -3
  164. package/dist/{get-VFDNTZ54.js → get-NL3YZFUJ.js} +3 -3
  165. package/dist/{google-HWEDJ4YS.js → google-BPB5JLJG.js} +20 -2
  166. package/dist/google-BPB5JLJG.js.map +1 -0
  167. package/dist/{google-4FP6AHBL.js → google-UJ4YJGTJ.js} +15 -15
  168. package/dist/{google-ads-4DLYASRC.js → google-ads-RRKKSKDD.js} +3 -3
  169. package/dist/{history-6B6RXNV3.js → history-2UANIBRN.js} +3 -3
  170. package/dist/{history-NLZSX4BK.js → history-YZ727ZRG.js} +3 -3
  171. package/dist/{hubspot-LABBRJ44.js → hubspot-KWLXJ6QD.js} +7 -7
  172. package/dist/{ideas-A4ELJN23.js → ideas-ZO533P5Y.js} +10 -10
  173. package/dist/{images-JVNT7KYM.js → images-VUWUKGD6.js} +11 -11
  174. package/dist/{ingest-GQWR3RHR.js → ingest-C2HJ5LUY.js} +3 -3
  175. package/dist/{ingest-JYN2IDKV.js → ingest-H53JR4GK.js} +2 -2
  176. package/dist/{inspect-72DY33YD.js → inspect-BM6GJHQV.js} +6 -6
  177. package/dist/{instant-experiences-6NTBX4SL.js → instant-experiences-U6U3FYIH.js} +7 -7
  178. package/dist/{keyword-metrics-GP7L2MQE.js → keyword-metrics-R2QCEDYW.js} +3 -3
  179. package/dist/{keywords-for-site-6YWAUOKJ.js → keywords-for-site-NBV72C3W.js} +3 -3
  180. package/dist/{landing-EKHAZS5P.js → landing-L3WDTW4D.js} +2 -2
  181. package/dist/{leads-UCXIIA5K.js → leads-6PF7ZWCH.js} +3 -3
  182. package/dist/{leads-RN6RYOMU.js → leads-IG3IIHXG.js} +7 -7
  183. package/dist/{learn-EJEFERQZ.js → learn-V2LIBEEY.js} +9 -9
  184. package/dist/{line-item-writes-IMCE2FDW.js → line-item-writes-GMNWL4DI.js} +3 -3
  185. package/dist/{line-items-ISUC3WDO.js → line-items-KPIKXLG4.js} +5 -5
  186. package/dist/{link-6QL4ZVSU.js → link-X7IYKR5V.js} +3 -3
  187. package/dist/{linkedin-OFL77SUR.js → linkedin-RONIUYLJ.js} +34 -34
  188. package/dist/{linkedin-person-C24CBKCH.js → linkedin-person-47XFTBIN.js} +3 -3
  189. package/dist/{list-2VNI3U7I.js → list-PHNA7QIF.js} +2 -2
  190. package/dist/{list-SUXUMXPJ.js → list-QF3BANBM.js} +3 -3
  191. package/dist/{list-PZD2QOZL.js → list-SB3SUTH6.js} +3 -3
  192. package/dist/{log-VLI7KQF2.js → log-JFLSSUJ6.js} +3 -3
  193. package/dist/{make-365ZJ25L.js → make-ZIJQZD5K.js} +24 -24
  194. package/dist/{map-OEFL45WA.js → map-NYJT2MGI.js} +4 -4
  195. package/dist/{mcp-NCZYQXQL.js → mcp-ABQEICYR.js} +2 -2
  196. package/dist/{media-WASM45QW.js → media-AT3VV3PU.js} +3 -3
  197. package/dist/{media-sources-CZDK4W5Q.js → media-sources-L4BI7HFL.js} +2 -2
  198. package/dist/{members-N3PQSVQC.js → members-BX37KHKO.js} +3 -3
  199. package/dist/{meta-QFLNABF5.js → meta-2GJZPVKM.js} +29 -29
  200. package/dist/{normalize-4OKUF5BJ.js → normalize-M3VMWF4W.js} +3 -3
  201. package/dist/{normalize-6DEJPTBF.js → normalize-MA2FBBIV.js} +3 -3
  202. package/dist/{options-OJX77MYT.js → options-NMWWF2HN.js} +6 -6
  203. package/dist/{organization-URQGKFEC.js → organization-GRAA6ZXU.js} +3 -3
  204. package/dist/{page-photos-N4S7U7FR.js → page-photos-ABK4CJME.js} +7 -7
  205. package/dist/{performance-SIWBDORI.js → performance-MQLRSH44.js} +3 -3
  206. package/dist/{performance-P5T4LJRG.js → performance-RUBIGEAQ.js} +4 -4
  207. package/dist/{promoted-tweet-writes-S2HP5DEI.js → promoted-tweet-writes-3P6QFGLN.js} +3 -3
  208. package/dist/{promoted-tweets-WZT4N5IR.js → promoted-tweets-TGFPH7UI.js} +3 -3
  209. package/dist/{publish-EDYBQHGJ.js → publish-OUVO65Z5.js} +6 -6
  210. package/dist/{reddit-DEGGHR4M.js → reddit-HWQCUSEM.js} +4 -4
  211. package/dist/{refresh-HPNJGI2U.js → refresh-ENQDQGTK.js} +2 -2
  212. package/dist/{release-H7M37CEO.js → release-ZTVXLUQS.js} +3 -3
  213. package/dist/{remove-MV4YS72N.js → remove-XAFRT7O7.js} +2 -2
  214. package/dist/{reopen-EFW2SKOY.js → reopen-SWSZHXJZ.js} +3 -3
  215. package/dist/{rerun-OM4N74YK.js → rerun-MA2GB6WL.js} +25 -25
  216. package/dist/{research-7YDQOKA6.js → research-TDH4OBX6.js} +2 -2
  217. package/dist/{research-MHXKAQW4.js → research-WWJUNYSJ.js} +13 -13
  218. package/dist/{reset-HT4AGJPR.js → reset-34HTKUBQ.js} +2 -2
  219. package/dist/{reset-XPZQ5F4D.js → reset-KMMGLM7W.js} +2 -2
  220. package/dist/{resolve-RTTXEN2B.js → resolve-2CIIKADD.js} +3 -3
  221. package/dist/{retry-DVLVWHEK.js → retry-V7KZIZKR.js} +2 -2
  222. package/dist/{retry-SBGWOUQO.js → retry-YXM23NSB.js} +2 -2
  223. package/dist/{revenue-KJLJ53XY.js → revenue-D4L6U2CW.js} +9 -9
  224. package/dist/{rule-writes-DNXELESR.js → rule-writes-HUBHHYEO.js} +7 -7
  225. package/dist/{rules-KCSET46P.js → rules-47LFGCPW.js} +7 -7
  226. package/dist/{rules-NVKU732Z.js → rules-F6RNUOXP.js} +10 -10
  227. package/dist/{rules-add-KY42EHJE.js → rules-add-SAQRESVK.js} +10 -10
  228. package/dist/{run-2LQ7XJEO.js → run-FRPO2WNQ.js} +3 -3
  229. package/dist/{run-M7YU6KCV.js → run-HENSSAQW.js} +25 -25
  230. package/dist/{scaffold-ad-6YPZ75YJ.js → scaffold-ad-QQBCUYUO.js} +22 -22
  231. package/dist/{scaffold-static-ad-UJEWTDU5.js → scaffold-static-ad-WUOAQEXS.js} +30 -30
  232. package/dist/{scaffold-video-M4VWSVJ6.js → scaffold-video-KFQAKQUO.js} +20 -20
  233. package/dist/{schedule-J7HZQ2EL.js → schedule-S4XAVVEI.js} +2 -2
  234. package/dist/{scheduled-agents-IVUQUKF4.js → scheduled-agents-ZWAP6QLC.js} +11 -11
  235. package/dist/{schema-LHBKBUV7.js → schema-EJ2XPUN6.js} +4 -4
  236. package/dist/{search-3AW52FO6.js → search-2BAY3KKX.js} +2 -2
  237. package/dist/{select-STIWQ36I.js → select-K2SXPDDJ.js} +20 -20
  238. package/dist/{set-prompt-TODWV2F4.js → set-prompt-BZFOV3EB.js} +17 -17
  239. package/dist/{setup-links-MNBD3UMH.js → setup-links-QT63UZBR.js} +3 -3
  240. package/dist/{shopify-RJWLTNPQ.js → shopify-Q7TQIQ6N.js} +3 -3
  241. package/dist/{site-ZZUKS6MQ.js → site-S6QVMP7W.js} +4 -4
  242. package/dist/{sources-36MJ6T4V.js → sources-DTQ4NQAM.js} +6 -6
  243. package/dist/{sources-GNLQHTSJ.js → sources-ORG5KQSW.js} +6 -6
  244. package/dist/{stale-GJN7UO3D.js → stale-5O7BQVTN.js} +19 -19
  245. package/dist/{status-6EGB6ORB.js → status-4G2YUCZR.js} +3 -3
  246. package/dist/{stock-DJ6I3CTO.js → stock-5SQ2PGEC.js} +26 -2
  247. package/dist/stock-5SQ2PGEC.js.map +1 -0
  248. package/dist/{studies-4XXCEAHH.js → studies-QLSKON6M.js} +5 -5
  249. package/dist/{studio-OARORMDJ.js → studio-IDXFTGHP.js} +3 -3
  250. package/dist/{study-writes-J56UIIE3.js → study-writes-GBUUKX4O.js} +7 -7
  251. package/dist/{sync-QHM3LMAX.js → sync-7LJZPHM3.js} +2 -2
  252. package/dist/{sync-definition-YXGN6PIQ.js → sync-definition-Q3XUSEZJ.js} +20 -20
  253. package/dist/{tags-MQYF2JHQ.js → tags-2ARVNEYS.js} +3 -3
  254. package/dist/{tags-ZGXJHATH.js → tags-F4IT7RQR.js} +3 -3
  255. package/dist/{tags-MBBRBZJH.js → tags-F7ZO52EM.js} +3 -3
  256. package/dist/{tags-IDWUV2FY.js → tags-NBGGBHXR.js} +2 -2
  257. package/dist/{tags-GHV5R7NI.js → tags-TCSGQYDR.js} +4 -4
  258. package/dist/{targeting-KJ4DI56R.js → targeting-DAUTJDUB.js} +7 -7
  259. package/dist/{targeting-criteria-GDCXOAUD.js → targeting-criteria-H42LRULY.js} +3 -3
  260. package/dist/{targets-MYHOPAYY.js → targets-WB4E5XL2.js} +3 -3
  261. package/dist/{testimonials-R6RFGAKP.js → testimonials-KLF3Y4QO.js} +6 -6
  262. package/dist/{themes-LHVXXVTX.js → themes-BGBDYQQK.js} +7 -7
  263. package/dist/{top-companies-POTV3Y2A.js → top-companies-C2W5TJ7G.js} +3 -3
  264. package/dist/{transcript-4RVYKDVZ.js → transcript-S7VR2GJE.js} +3 -3
  265. package/dist/{translate-UCASCVMN.js → translate-CBITGC7C.js} +22 -22
  266. package/dist/{triggers-XHMMOZJK.js → triggers-EOKMR74O.js} +3 -3
  267. package/dist/{unlink-3IW3EORE.js → unlink-PC3TMWUT.js} +3 -3
  268. package/dist/{unstage-APVF6KHB.js → unstage-SU2ATDSZ.js} +3 -3
  269. package/dist/{update-V7SRDGHN.js → update-DKX3EEES.js} +3 -3
  270. package/dist/{update-2VSJH4LQ.js → update-JYZ45YJG.js} +3 -3
  271. package/dist/{update-ESK6PSME.js → update-TAZSUOAS.js} +2 -2
  272. package/dist/{update-42QYBUE3.js → update-WRJUH2NM.js} +3 -3
  273. package/dist/{upload-42IR5RIL.js → upload-BLXTMK5Q.js} +3 -3
  274. package/dist/{url-params-GEESXN57.js → url-params-YVOFU6MK.js} +3 -3
  275. package/dist/{validate-Z5SSEUES.js → validate-SAQEORZY.js} +21 -21
  276. package/dist/{videos-PJAPZPOT.js → videos-GOIDZVVD.js} +6 -6
  277. package/dist/{viewer-check-6M34VY7K.js → viewer-check-KTRRUVZN.js} +11 -11
  278. package/dist/{web-PUVVFMV3.js → web-6KUM7Q7S.js} +3 -3
  279. package/dist/{winning-ads-ZCP4MIEQ.js → winning-ads-LOMI72Q2.js} +3 -3
  280. package/dist/{write-commands-ZS4O4DSV.js → write-commands-3U5ZMIHH.js} +9 -9
  281. package/dist/{write-commands-5LEEPKA7.js → write-commands-F5XPPLOO.js} +9 -9
  282. package/dist/{x-ZKCLP23S.js → x-APVY4YHX.js} +6 -6
  283. package/package.json +1 -1
  284. package/dist/download-SYWQXF57.js.map +0 -1
  285. package/dist/extract-DWDZI35Y.js.map +0 -1
  286. package/dist/google-HWEDJ4YS.js.map +0 -1
  287. package/dist/stock-DJ6I3CTO.js.map +0 -1
  288. /package/dist/{account-XIC5TTV3.js.map → account-H5CL6KUY.js.map} +0 -0
  289. /package/dist/{account-assets-V7KSSTVP.js.map → account-assets-QMKT5AT7.js.map} +0 -0
  290. /package/dist/{account-level-2KLG6HTG.js.map → account-level-BELF6JHB.js.map} +0 -0
  291. /package/dist/{account-reads-ZPZUCB3P.js.map → account-reads-T6GTSAXE.js.map} +0 -0
  292. /package/dist/{account-users-XTUKRDWK.js.map → account-users-ZGJCVGX4.js.map} +0 -0
  293. /package/dist/{accounts-25JL77F7.js.map → accounts-EXQNPSYH.js.map} +0 -0
  294. /package/dist/{accounts-AF72N4NV.js.map → accounts-GNVLFZ3X.js.map} +0 -0
  295. /package/dist/{actions-IJO4JW7J.js.map → actions-Q2BMP27K.js.map} +0 -0
  296. /package/dist/{activecampaign-PBTUMTO5.js.map → activecampaign-SJO2YK6M.js.map} +0 -0
  297. /package/dist/{add-YQPFRDVM.js.map → add-Q3FGYX5Q.js.map} +0 -0
  298. /package/dist/{add-KHQXXHC5.js.map → add-YGQBSEVK.js.map} +0 -0
  299. /package/dist/{ads-5YCCRXEU.js.map → ads-7QKQEHKT.js.map} +0 -0
  300. /package/dist/{ads-EVQ37EV3.js.map → ads-H5AEYIY3.js.map} +0 -0
  301. /package/dist/{adsets-4IW5TRAK.js.map → adsets-BUIT7HF2.js.map} +0 -0
  302. /package/dist/{advertisers-JNOWSZZC.js.map → advertisers-ZAHXMIAT.js.map} +0 -0
  303. /package/dist/{analytics-CZMCM7XC.js.map → analytics-B6ER4TQ7.js.map} +0 -0
  304. /package/dist/{analytics-K5FCQLI5.js.map → analytics-QW5ZXDJR.js.map} +0 -0
  305. /package/dist/{animate-C6BRMRRD.js.map → animate-Q43SOWB4.js.map} +0 -0
  306. /package/dist/{asset-writes-RF6XTWLY.js.map → asset-writes-JVFE457M.js.map} +0 -0
  307. /package/dist/{assign-WXZNXVJH.js.map → assign-HJ2NXW4W.js.map} +0 -0
  308. /package/dist/{audience-size-ZCWH4CFC.js.map → audience-size-IM3N6W7C.js.map} +0 -0
  309. /package/dist/{audience-writes-5KT6FHUY.js.map → audience-writes-DWSCHYQF.js.map} +0 -0
  310. /package/dist/{audiences-ZDOK3OYC.js.map → audiences-PYBJU2GV.js.map} +0 -0
  311. /package/dist/{audit-RBRXPPKK.js.map → audit-N3LAQMD4.js.map} +0 -0
  312. /package/dist/{autocomplete-P5OU7QVL.js.map → autocomplete-FBTPT5MA.js.map} +0 -0
  313. /package/dist/{avatars-UHBA2BQ3.js.map → avatars-Y3DALQIU.js.map} +0 -0
  314. /package/dist/{bid-pricing-LHNYSDG4.js.map → bid-pricing-UUAC4GTQ.js.map} +0 -0
  315. /package/dist/{brand-7WL3O74X.js.map → brand-IZYD5SBJ.js.map} +0 -0
  316. /package/dist/{brief-HWZU75WP.js.map → brief-NA3E2W4P.js.map} +0 -0
  317. /package/dist/{campaign-groups-BYS3GNEP.js.map → campaign-groups-3IUOLEK2.js.map} +0 -0
  318. /package/dist/{campaign-writes-N6OHAK6V.js.map → campaign-writes-Y7QNFOE7.js.map} +0 -0
  319. /package/dist/{campaigns-3U5IRXSV.js.map → campaigns-2Z6WXIVA.js.map} +0 -0
  320. /package/dist/{campaigns-QLKGN4FB.js.map → campaigns-B2AUW4TV.js.map} +0 -0
  321. /package/dist/{campaigns-2E4AQBFB.js.map → campaigns-IDEA3LOK.js.map} +0 -0
  322. /package/dist/{canvas-GGHJ26ZM.js.map → canvas-WHFDCHUP.js.map} +0 -0
  323. /package/dist/{capabilities-TKEEHR7K.js.map → capabilities-FVMMLKPY.js.map} +0 -0
  324. /package/dist/{catalog-7KQN43HS.js.map → catalog-URTZYAPU.js.map} +0 -0
  325. /package/dist/{catalogs-5CHPI4H6.js.map → catalogs-OEUNVE4N.js.map} +0 -0
  326. /package/dist/{chats-PBXYH2LT.js.map → chats-EENMDXWZ.js.map} +0 -0
  327. /package/dist/{check-SVYI72DF.js.map → check-7735BPTR.js.map} +0 -0
  328. /package/dist/{chunk-5AOTCCTT.js.map → chunk-2QGGI7MF.js.map} +0 -0
  329. /package/dist/{chunk-4XMPL3RU.js.map → chunk-3HKZU3Y5.js.map} +0 -0
  330. /package/dist/{chunk-B5UVOCYA.js.map → chunk-3OMFSYQ3.js.map} +0 -0
  331. /package/dist/{chunk-LMOZWB4G.js.map → chunk-65CQYRMK.js.map} +0 -0
  332. /package/dist/{chunk-I4BQTVMY.js.map → chunk-6MZFOMLU.js.map} +0 -0
  333. /package/dist/{chunk-IBBGABK2.js.map → chunk-6PT22YSR.js.map} +0 -0
  334. /package/dist/{chunk-QFVZIQRQ.js.map → chunk-6WVYBY2G.js.map} +0 -0
  335. /package/dist/{chunk-VX6GTRT3.js.map → chunk-757ZFIL4.js.map} +0 -0
  336. /package/dist/{chunk-IJ6NQKAT.js.map → chunk-75HAGIH6.js.map} +0 -0
  337. /package/dist/{chunk-XSBX3LJP.js.map → chunk-7BVRFQN4.js.map} +0 -0
  338. /package/dist/{chunk-7OVPQX4X.js.map → chunk-7TDJCDKT.js.map} +0 -0
  339. /package/dist/{chunk-ZMTWQDFC.js.map → chunk-AL4MRNYI.js.map} +0 -0
  340. /package/dist/{chunk-NO52OH3Y.js.map → chunk-BMNOMOWP.js.map} +0 -0
  341. /package/dist/{chunk-4AEAL63J.js.map → chunk-BS2MC62Y.js.map} +0 -0
  342. /package/dist/{chunk-DWSSQBLO.js.map → chunk-C6PWVZQE.js.map} +0 -0
  343. /package/dist/{chunk-P4MXGSSJ.js.map → chunk-CDTAKCJR.js.map} +0 -0
  344. /package/dist/{chunk-2RL2T5JO.js.map → chunk-CH44XVPE.js.map} +0 -0
  345. /package/dist/{chunk-RHNNFCRY.js.map → chunk-CJWLDKFO.js.map} +0 -0
  346. /package/dist/{chunk-YCAJCVW4.js.map → chunk-DAMC4FKK.js.map} +0 -0
  347. /package/dist/{chunk-D6VQPBVM.js.map → chunk-DWPOAU4Z.js.map} +0 -0
  348. /package/dist/{chunk-6MXM6DA6.js.map → chunk-EENYLJUN.js.map} +0 -0
  349. /package/dist/{chunk-IZROFBH7.js.map → chunk-EJBLF2LI.js.map} +0 -0
  350. /package/dist/{chunk-DNH2ZPZP.js.map → chunk-EJMPKO6V.js.map} +0 -0
  351. /package/dist/{chunk-RMZLB4AH.js.map → chunk-EKXLJRO3.js.map} +0 -0
  352. /package/dist/{chunk-ZANXEMON.js.map → chunk-EL3TDR5S.js.map} +0 -0
  353. /package/dist/{chunk-LFELUKCA.js.map → chunk-GRDZWZKQ.js.map} +0 -0
  354. /package/dist/{chunk-S4NMWYHW.js.map → chunk-GVUBRSD3.js.map} +0 -0
  355. /package/dist/{chunk-LVLTWPRR.js.map → chunk-GYREQDTJ.js.map} +0 -0
  356. /package/dist/{chunk-J5UTL4HE.js.map → chunk-HBRXFQQV.js.map} +0 -0
  357. /package/dist/{chunk-NE3OMP7R.js.map → chunk-HLHR3EK2.js.map} +0 -0
  358. /package/dist/{chunk-RJQT7QXX.js.map → chunk-IMFIRELA.js.map} +0 -0
  359. /package/dist/{chunk-SP3MHBME.js.map → chunk-IOKD77L2.js.map} +0 -0
  360. /package/dist/{chunk-TGT4XHLX.js.map → chunk-KDAINT54.js.map} +0 -0
  361. /package/dist/{chunk-QI5UKQX3.js.map → chunk-KKKZRQFY.js.map} +0 -0
  362. /package/dist/{chunk-N5AIO23H.js.map → chunk-KOEXPN3G.js.map} +0 -0
  363. /package/dist/{chunk-JBMZVC5D.js.map → chunk-KT5JVIPZ.js.map} +0 -0
  364. /package/dist/{chunk-NZYWKZ3Q.js.map → chunk-LC6PVPJX.js.map} +0 -0
  365. /package/dist/{chunk-DK66PUXL.js.map → chunk-LETR3RQE.js.map} +0 -0
  366. /package/dist/{chunk-XB4NKZAQ.js.map → chunk-N3PASNUA.js.map} +0 -0
  367. /package/dist/{chunk-SFQFUQDW.js.map → chunk-NL77JRKE.js.map} +0 -0
  368. /package/dist/{chunk-OIORUNKH.js.map → chunk-OBQ5YUOZ.js.map} +0 -0
  369. /package/dist/{chunk-42JTSTQ3.js.map → chunk-OTFHIGEO.js.map} +0 -0
  370. /package/dist/{chunk-ESXUIV6V.js.map → chunk-PCUWBZM3.js.map} +0 -0
  371. /package/dist/{chunk-OKXLOLEV.js.map → chunk-PNWXTOQ4.js.map} +0 -0
  372. /package/dist/{chunk-PYAR343F.js.map → chunk-PQFTKHDA.js.map} +0 -0
  373. /package/dist/{chunk-XXBP73RV.js.map → chunk-Q5DFEVLE.js.map} +0 -0
  374. /package/dist/{chunk-NRIKX35V.js.map → chunk-QXCGWAC6.js.map} +0 -0
  375. /package/dist/{chunk-CJFCQMUY.js.map → chunk-RKDMYL4A.js.map} +0 -0
  376. /package/dist/{chunk-S6XZIBWV.js.map → chunk-SCBSAIVV.js.map} +0 -0
  377. /package/dist/{chunk-3HLQZTQ3.js.map → chunk-SPBUE7R4.js.map} +0 -0
  378. /package/dist/{chunk-IC4MREQH.js.map → chunk-TWFZIHKK.js.map} +0 -0
  379. /package/dist/{chunk-73MLPGI2.js.map → chunk-U6G6ALXP.js.map} +0 -0
  380. /package/dist/{chunk-WGJ2QEW4.js.map → chunk-UCJAPB5Y.js.map} +0 -0
  381. /package/dist/{chunk-4PM32OS3.js.map → chunk-VFDWUIGR.js.map} +0 -0
  382. /package/dist/{chunk-BRNZMKO4.js.map → chunk-WC3YSN7L.js.map} +0 -0
  383. /package/dist/{chunk-FSEFZZ2T.js.map → chunk-WIOPEK7K.js.map} +0 -0
  384. /package/dist/{chunk-5NLUTJCQ.js.map → chunk-X3GWGFZP.js.map} +0 -0
  385. /package/dist/{chunk-Y4ZBNZBU.js.map → chunk-XYKODRQR.js.map} +0 -0
  386. /package/dist/{chunk-6FWVRXDW.js.map → chunk-XZAVBONI.js.map} +0 -0
  387. /package/dist/{chunk-Y3SK6EMU.js.map → chunk-Y5PNLB24.js.map} +0 -0
  388. /package/dist/{claim-Q76T3MYA.js.map → claim-PGDIRXIC.js.map} +0 -0
  389. /package/dist/{companies-MLWRWQ73.js.map → companies-WTPKGEB3.js.map} +0 -0
  390. /package/dist/{company-X5Z67PMK.js.map → company-6H2H73YP.js.map} +0 -0
  391. /package/dist/{complete-3CFP6XVY.js.map → complete-2QBC3POO.js.map} +0 -0
  392. /package/dist/{connect-QXFAB4RJ.js.map → connect-35YPFAUL.js.map} +0 -0
  393. /package/dist/{conversation-C6K6IZTH.js.map → conversation-YZFNEWDV.js.map} +0 -0
  394. /package/dist/{conversion-upload-command-D7S5HF22.js.map → conversion-upload-command-J2FIO74Y.js.map} +0 -0
  395. /package/dist/{conversions-4ILDIG3K.js.map → conversions-ZFDBD3OU.js.map} +0 -0
  396. /package/dist/{copy-writes-FYXKHJDB.js.map → copy-writes-2B36QJUY.js.map} +0 -0
  397. /package/dist/{create-LDQ3YHET.js.map → create-3H67EUTO.js.map} +0 -0
  398. /package/dist/{create-WQNT345R.js.map → create-ALTOBDP4.js.map} +0 -0
  399. /package/dist/{create-TKOG7DNJ.js.map → create-C3MWUYX2.js.map} +0 -0
  400. /package/dist/{create-WFMJOZLO.js.map → create-WHTT6IXY.js.map} +0 -0
  401. /package/dist/{creatives-45SJAD3G.js.map → creatives-22BYP5VN.js.map} +0 -0
  402. /package/dist/{creatives-Q4OXNCTT.js.map → creatives-LTIV3XPT.js.map} +0 -0
  403. /package/dist/{creatives-E4CTMZJJ.js.map → creatives-Y2WLGDJW.js.map} +0 -0
  404. /package/dist/{credentials-E2AIMWKX.js.map → credentials-J5DMQJWN.js.map} +0 -0
  405. /package/dist/{critique-JVT6X2T3.js.map → critique-RFTS2I46.js.map} +0 -0
  406. /package/dist/{critique-EWV3O3TD.js.map → critique-X6XVPIUG.js.map} +0 -0
  407. /package/dist/{crm-NQH5FTK6.js.map → crm-LWRGJYHW.js.map} +0 -0
  408. /package/dist/{crm-YGQKK76D.js.map → crm-RUNEJY2R.js.map} +0 -0
  409. /package/dist/{crop-KV24WHOR.js.map → crop-4V4P3SKI.js.map} +0 -0
  410. /package/dist/{custom-conversions-EJNX4MCK.js.map → custom-conversions-V7QPZIB4.js.map} +0 -0
  411. /package/dist/{customers-YFEPJF4G.js.map → customers-IDB6NLQ6.js.map} +0 -0
  412. /package/dist/{delete-2UJVTHRE.js.map → delete-2QKVUKKB.js.map} +0 -0
  413. /package/dist/{delete-O4RO2HMR.js.map → delete-B7BKF24X.js.map} +0 -0
  414. /package/dist/{delete-7QAJSOCO.js.map → delete-HBRYUWAA.js.map} +0 -0
  415. /package/dist/{demographics-YWBHAMZ5.js.map → demographics-JHB3NFLU.js.map} +0 -0
  416. /package/dist/{dimensions-YXOXHOXW.js.map → dimensions-KI3OENZD.js.map} +0 -0
  417. /package/dist/{discard-YX4XUXG3.js.map → discard-FEJ6YL22.js.map} +0 -0
  418. /package/dist/{domain-5R6CYVFY.js.map → domain-JYWNXBKS.js.map} +0 -0
  419. /package/dist/{download-D2O4RYJ3.js.map → download-LOBPOIU5.js.map} +0 -0
  420. /package/dist/{draft-SGNQOUYH.js.map → draft-EB5ZFDVN.js.map} +0 -0
  421. /package/dist/{draft-3MPADYS4.js.map → draft-I2FLECEX.js.map} +0 -0
  422. /package/dist/{draft-L56EMJQT.js.map → draft-N56HPS36.js.map} +0 -0
  423. /package/dist/{draft-NLSQDRVQ.js.map → draft-ZLZRTPY6.js.map} +0 -0
  424. /package/dist/{experiments-DYNNWQRB.js.map → experiments-WVTBHD6G.js.map} +0 -0
  425. /package/dist/{facets-Y2IEM37E.js.map → facets-V2ITIUKD.js.map} +0 -0
  426. /package/dist/{feedback-IVSLM5PN.js.map → feedback-PXWPR3NZ.js.map} +0 -0
  427. /package/dist/{feedback-HJRVTU6C.js.map → feedback-QSIPSNAL.js.map} +0 -0
  428. /package/dist/{feedback-record-P7CO3IGE.js.map → feedback-record-DJHJWJAF.js.map} +0 -0
  429. /package/dist/{fetch-V2U5VUQZ.js.map → fetch-QVOOC3FA.js.map} +0 -0
  430. /package/dist/{fit-JDG6E46O.js.map → fit-REGMM46H.js.map} +0 -0
  431. /package/dist/{flows-DP574PEX.js.map → flows-EZV3KCV6.js.map} +0 -0
  432. /package/dist/{fonts-RMROS3LX.js.map → fonts-NUX66HEI.js.map} +0 -0
  433. /package/dist/{forecast-BRXNGMGD.js.map → forecast-W6HKYVX5.js.map} +0 -0
  434. /package/dist/{forecast-AAHHVTBK.js.map → forecast-XDRKCR65.js.map} +0 -0
  435. /package/dist/{funnel-FQX3DOE7.js.map → funnel-3YABA3G2.js.map} +0 -0
  436. /package/dist/{generate-SYOQE3F7.js.map → generate-22HT24SA.js.map} +0 -0
  437. /package/dist/{get-HMTI2IR6.js.map → get-GQQLBE5C.js.map} +0 -0
  438. /package/dist/{get-VFDNTZ54.js.map → get-NL3YZFUJ.js.map} +0 -0
  439. /package/dist/{google-4FP6AHBL.js.map → google-UJ4YJGTJ.js.map} +0 -0
  440. /package/dist/{google-ads-4DLYASRC.js.map → google-ads-RRKKSKDD.js.map} +0 -0
  441. /package/dist/{history-6B6RXNV3.js.map → history-2UANIBRN.js.map} +0 -0
  442. /package/dist/{history-NLZSX4BK.js.map → history-YZ727ZRG.js.map} +0 -0
  443. /package/dist/{hubspot-LABBRJ44.js.map → hubspot-KWLXJ6QD.js.map} +0 -0
  444. /package/dist/{ideas-A4ELJN23.js.map → ideas-ZO533P5Y.js.map} +0 -0
  445. /package/dist/{images-JVNT7KYM.js.map → images-VUWUKGD6.js.map} +0 -0
  446. /package/dist/{ingest-GQWR3RHR.js.map → ingest-C2HJ5LUY.js.map} +0 -0
  447. /package/dist/{ingest-JYN2IDKV.js.map → ingest-H53JR4GK.js.map} +0 -0
  448. /package/dist/{inspect-72DY33YD.js.map → inspect-BM6GJHQV.js.map} +0 -0
  449. /package/dist/{instant-experiences-6NTBX4SL.js.map → instant-experiences-U6U3FYIH.js.map} +0 -0
  450. /package/dist/{keyword-metrics-GP7L2MQE.js.map → keyword-metrics-R2QCEDYW.js.map} +0 -0
  451. /package/dist/{keywords-for-site-6YWAUOKJ.js.map → keywords-for-site-NBV72C3W.js.map} +0 -0
  452. /package/dist/{landing-EKHAZS5P.js.map → landing-L3WDTW4D.js.map} +0 -0
  453. /package/dist/{leads-UCXIIA5K.js.map → leads-6PF7ZWCH.js.map} +0 -0
  454. /package/dist/{leads-RN6RYOMU.js.map → leads-IG3IIHXG.js.map} +0 -0
  455. /package/dist/{learn-EJEFERQZ.js.map → learn-V2LIBEEY.js.map} +0 -0
  456. /package/dist/{line-item-writes-IMCE2FDW.js.map → line-item-writes-GMNWL4DI.js.map} +0 -0
  457. /package/dist/{line-items-ISUC3WDO.js.map → line-items-KPIKXLG4.js.map} +0 -0
  458. /package/dist/{link-6QL4ZVSU.js.map → link-X7IYKR5V.js.map} +0 -0
  459. /package/dist/{linkedin-OFL77SUR.js.map → linkedin-RONIUYLJ.js.map} +0 -0
  460. /package/dist/{linkedin-person-C24CBKCH.js.map → linkedin-person-47XFTBIN.js.map} +0 -0
  461. /package/dist/{list-2VNI3U7I.js.map → list-PHNA7QIF.js.map} +0 -0
  462. /package/dist/{list-SUXUMXPJ.js.map → list-QF3BANBM.js.map} +0 -0
  463. /package/dist/{list-PZD2QOZL.js.map → list-SB3SUTH6.js.map} +0 -0
  464. /package/dist/{log-VLI7KQF2.js.map → log-JFLSSUJ6.js.map} +0 -0
  465. /package/dist/{make-365ZJ25L.js.map → make-ZIJQZD5K.js.map} +0 -0
  466. /package/dist/{map-OEFL45WA.js.map → map-NYJT2MGI.js.map} +0 -0
  467. /package/dist/{mcp-NCZYQXQL.js.map → mcp-ABQEICYR.js.map} +0 -0
  468. /package/dist/{media-WASM45QW.js.map → media-AT3VV3PU.js.map} +0 -0
  469. /package/dist/{media-sources-CZDK4W5Q.js.map → media-sources-L4BI7HFL.js.map} +0 -0
  470. /package/dist/{members-N3PQSVQC.js.map → members-BX37KHKO.js.map} +0 -0
  471. /package/dist/{meta-QFLNABF5.js.map → meta-2GJZPVKM.js.map} +0 -0
  472. /package/dist/{normalize-4OKUF5BJ.js.map → normalize-M3VMWF4W.js.map} +0 -0
  473. /package/dist/{normalize-6DEJPTBF.js.map → normalize-MA2FBBIV.js.map} +0 -0
  474. /package/dist/{options-OJX77MYT.js.map → options-NMWWF2HN.js.map} +0 -0
  475. /package/dist/{organization-URQGKFEC.js.map → organization-GRAA6ZXU.js.map} +0 -0
  476. /package/dist/{page-photos-N4S7U7FR.js.map → page-photos-ABK4CJME.js.map} +0 -0
  477. /package/dist/{performance-SIWBDORI.js.map → performance-MQLRSH44.js.map} +0 -0
  478. /package/dist/{performance-P5T4LJRG.js.map → performance-RUBIGEAQ.js.map} +0 -0
  479. /package/dist/{promoted-tweet-writes-S2HP5DEI.js.map → promoted-tweet-writes-3P6QFGLN.js.map} +0 -0
  480. /package/dist/{promoted-tweets-WZT4N5IR.js.map → promoted-tweets-TGFPH7UI.js.map} +0 -0
  481. /package/dist/{publish-EDYBQHGJ.js.map → publish-OUVO65Z5.js.map} +0 -0
  482. /package/dist/{reddit-DEGGHR4M.js.map → reddit-HWQCUSEM.js.map} +0 -0
  483. /package/dist/{refresh-HPNJGI2U.js.map → refresh-ENQDQGTK.js.map} +0 -0
  484. /package/dist/{release-H7M37CEO.js.map → release-ZTVXLUQS.js.map} +0 -0
  485. /package/dist/{remove-MV4YS72N.js.map → remove-XAFRT7O7.js.map} +0 -0
  486. /package/dist/{reopen-EFW2SKOY.js.map → reopen-SWSZHXJZ.js.map} +0 -0
  487. /package/dist/{rerun-OM4N74YK.js.map → rerun-MA2GB6WL.js.map} +0 -0
  488. /package/dist/{research-7YDQOKA6.js.map → research-TDH4OBX6.js.map} +0 -0
  489. /package/dist/{research-MHXKAQW4.js.map → research-WWJUNYSJ.js.map} +0 -0
  490. /package/dist/{reset-HT4AGJPR.js.map → reset-34HTKUBQ.js.map} +0 -0
  491. /package/dist/{reset-XPZQ5F4D.js.map → reset-KMMGLM7W.js.map} +0 -0
  492. /package/dist/{resolve-RTTXEN2B.js.map → resolve-2CIIKADD.js.map} +0 -0
  493. /package/dist/{retry-DVLVWHEK.js.map → retry-V7KZIZKR.js.map} +0 -0
  494. /package/dist/{retry-SBGWOUQO.js.map → retry-YXM23NSB.js.map} +0 -0
  495. /package/dist/{revenue-KJLJ53XY.js.map → revenue-D4L6U2CW.js.map} +0 -0
  496. /package/dist/{rule-writes-DNXELESR.js.map → rule-writes-HUBHHYEO.js.map} +0 -0
  497. /package/dist/{rules-KCSET46P.js.map → rules-47LFGCPW.js.map} +0 -0
  498. /package/dist/{rules-NVKU732Z.js.map → rules-F6RNUOXP.js.map} +0 -0
  499. /package/dist/{rules-add-KY42EHJE.js.map → rules-add-SAQRESVK.js.map} +0 -0
  500. /package/dist/{run-2LQ7XJEO.js.map → run-FRPO2WNQ.js.map} +0 -0
  501. /package/dist/{run-M7YU6KCV.js.map → run-HENSSAQW.js.map} +0 -0
  502. /package/dist/{scaffold-ad-6YPZ75YJ.js.map → scaffold-ad-QQBCUYUO.js.map} +0 -0
  503. /package/dist/{scaffold-static-ad-UJEWTDU5.js.map → scaffold-static-ad-WUOAQEXS.js.map} +0 -0
  504. /package/dist/{scaffold-video-M4VWSVJ6.js.map → scaffold-video-KFQAKQUO.js.map} +0 -0
  505. /package/dist/{schedule-J7HZQ2EL.js.map → schedule-S4XAVVEI.js.map} +0 -0
  506. /package/dist/{scheduled-agents-IVUQUKF4.js.map → scheduled-agents-ZWAP6QLC.js.map} +0 -0
  507. /package/dist/{schema-LHBKBUV7.js.map → schema-EJ2XPUN6.js.map} +0 -0
  508. /package/dist/{search-3AW52FO6.js.map → search-2BAY3KKX.js.map} +0 -0
  509. /package/dist/{select-STIWQ36I.js.map → select-K2SXPDDJ.js.map} +0 -0
  510. /package/dist/{set-prompt-TODWV2F4.js.map → set-prompt-BZFOV3EB.js.map} +0 -0
  511. /package/dist/{setup-links-MNBD3UMH.js.map → setup-links-QT63UZBR.js.map} +0 -0
  512. /package/dist/{shopify-RJWLTNPQ.js.map → shopify-Q7TQIQ6N.js.map} +0 -0
  513. /package/dist/{site-ZZUKS6MQ.js.map → site-S6QVMP7W.js.map} +0 -0
  514. /package/dist/{sources-36MJ6T4V.js.map → sources-DTQ4NQAM.js.map} +0 -0
  515. /package/dist/{sources-GNLQHTSJ.js.map → sources-ORG5KQSW.js.map} +0 -0
  516. /package/dist/{stale-GJN7UO3D.js.map → stale-5O7BQVTN.js.map} +0 -0
  517. /package/dist/{status-6EGB6ORB.js.map → status-4G2YUCZR.js.map} +0 -0
  518. /package/dist/{studies-4XXCEAHH.js.map → studies-QLSKON6M.js.map} +0 -0
  519. /package/dist/{studio-OARORMDJ.js.map → studio-IDXFTGHP.js.map} +0 -0
  520. /package/dist/{study-writes-J56UIIE3.js.map → study-writes-GBUUKX4O.js.map} +0 -0
  521. /package/dist/{sync-QHM3LMAX.js.map → sync-7LJZPHM3.js.map} +0 -0
  522. /package/dist/{sync-definition-YXGN6PIQ.js.map → sync-definition-Q3XUSEZJ.js.map} +0 -0
  523. /package/dist/{tags-MQYF2JHQ.js.map → tags-2ARVNEYS.js.map} +0 -0
  524. /package/dist/{tags-ZGXJHATH.js.map → tags-F4IT7RQR.js.map} +0 -0
  525. /package/dist/{tags-MBBRBZJH.js.map → tags-F7ZO52EM.js.map} +0 -0
  526. /package/dist/{tags-IDWUV2FY.js.map → tags-NBGGBHXR.js.map} +0 -0
  527. /package/dist/{tags-GHV5R7NI.js.map → tags-TCSGQYDR.js.map} +0 -0
  528. /package/dist/{targeting-KJ4DI56R.js.map → targeting-DAUTJDUB.js.map} +0 -0
  529. /package/dist/{targeting-criteria-GDCXOAUD.js.map → targeting-criteria-H42LRULY.js.map} +0 -0
  530. /package/dist/{targets-MYHOPAYY.js.map → targets-WB4E5XL2.js.map} +0 -0
  531. /package/dist/{testimonials-R6RFGAKP.js.map → testimonials-KLF3Y4QO.js.map} +0 -0
  532. /package/dist/{themes-LHVXXVTX.js.map → themes-BGBDYQQK.js.map} +0 -0
  533. /package/dist/{top-companies-POTV3Y2A.js.map → top-companies-C2W5TJ7G.js.map} +0 -0
  534. /package/dist/{transcript-4RVYKDVZ.js.map → transcript-S7VR2GJE.js.map} +0 -0
  535. /package/dist/{translate-UCASCVMN.js.map → translate-CBITGC7C.js.map} +0 -0
  536. /package/dist/{triggers-XHMMOZJK.js.map → triggers-EOKMR74O.js.map} +0 -0
  537. /package/dist/{unlink-3IW3EORE.js.map → unlink-PC3TMWUT.js.map} +0 -0
  538. /package/dist/{unstage-APVF6KHB.js.map → unstage-SU2ATDSZ.js.map} +0 -0
  539. /package/dist/{update-V7SRDGHN.js.map → update-DKX3EEES.js.map} +0 -0
  540. /package/dist/{update-2VSJH4LQ.js.map → update-JYZ45YJG.js.map} +0 -0
  541. /package/dist/{update-ESK6PSME.js.map → update-TAZSUOAS.js.map} +0 -0
  542. /package/dist/{update-42QYBUE3.js.map → update-WRJUH2NM.js.map} +0 -0
  543. /package/dist/{upload-42IR5RIL.js.map → upload-BLXTMK5Q.js.map} +0 -0
  544. /package/dist/{url-params-GEESXN57.js.map → url-params-YVOFU6MK.js.map} +0 -0
  545. /package/dist/{validate-Z5SSEUES.js.map → validate-SAQEORZY.js.map} +0 -0
  546. /package/dist/{videos-PJAPZPOT.js.map → videos-GOIDZVVD.js.map} +0 -0
  547. /package/dist/{viewer-check-6M34VY7K.js.map → viewer-check-KTRRUVZN.js.map} +0 -0
  548. /package/dist/{web-PUVVFMV3.js.map → web-6KUM7Q7S.js.map} +0 -0
  549. /package/dist/{winning-ads-ZCP4MIEQ.js.map → winning-ads-LOMI72Q2.js.map} +0 -0
  550. /package/dist/{write-commands-ZS4O4DSV.js.map → write-commands-3U5ZMIHH.js.map} +0 -0
  551. /package/dist/{write-commands-5LEEPKA7.js.map → write-commands-F5XPPLOO.js.map} +0 -0
  552. /package/dist/{x-ZKCLP23S.js.map → x-APVY4YHX.js.map} +0 -0
@@ -2,11 +2,14 @@ import {
2
2
  atomicWrite,
3
3
  isDirectory,
4
4
  isRemoteUrl
5
- } from "./chunk-NZYWKZ3Q.js";
5
+ } from "./chunk-LC6PVPJX.js";
6
6
  import {
7
+ ExternalFetchError,
7
8
  MAX_REMOTE_IMAGE_BYTES,
9
+ NO_ANSWER_MESSAGE,
10
+ OversizeFetchError,
8
11
  fetchExternalBytes
9
- } from "./chunk-4ULGRGBG.js";
12
+ } from "./chunk-X6U3B6YK.js";
10
13
  import {
11
14
  ApiError,
12
15
  apiGet,
@@ -21,6 +24,8 @@ import {
21
24
  import "./chunk-YQSBHWOI.js";
22
25
 
23
26
  // src/commands/images/download.ts
27
+ import { mkdir } from "fs/promises";
28
+ import { dirname } from "path";
24
29
  import { defineCommand } from "citty";
25
30
 
26
31
  // src/commands/images/downloadPaths.ts
@@ -121,7 +126,7 @@ registerSchema({
121
126
  },
122
127
  out: {
123
128
  type: "string",
124
- description: "Output directory (must exist) or, with a single target, an exact file path. Default: the working directory.",
129
+ description: "Output directory (created if missing; end it with `/`) or, with a single target, an exact file path. Default: the working directory.",
125
130
  required: false
126
131
  }
127
132
  }
@@ -175,10 +180,35 @@ async function fetchBytes(url) {
175
180
  }
176
181
  var NEXT_STEP_HINT = "Downloaded files are local paths \u2014 the local transforms take them directly: `baker images normalize <file> --color '#FFFFFF' --height 40`, `baker images crop <file> --x \u2026 --y \u2026 --width \u2026 --height \u2026`, `baker images dimensions <file>`. For a landing, page-scoped images belong in `src/pages/{landing}/_images/`.";
177
182
  var PARTIAL_FAILURE_HINT = "Some targets did not download. Carry on with the ones that did \u2014 a missing asset never blocks the rest of the job. Retry a failed URL only if it was a transient 5xx; a 403 means the host will not serve these bytes to anyone but a browser, so re-source it (`baker images extract <page>`) instead.";
178
- var ALL_FAILED_FIX = {
179
- action: "use_different_resource",
180
- explanation: "None of the targets could be downloaded. A 403/404 means the host will not serve these bytes \u2014 re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`) or, for a library image, check the row is `ready` with `baker images get <id>`. Do not retry the same URLs in a loop, and do not fall back to `curl` \u2014 continue the job with a placeholder if nothing can be fetched."
183
+ var CAUSE_ADVICE = {
184
+ write: () => "Writing the file failed on this machine (the error names the path) \u2014 point `--out` at a writable folder and re-run; the host is not the problem.",
185
+ too_large: (failed) => `${failed.find((f) => f.cause === "too_large")?.error ?? "A file is over the download limit."} Pick a smaller version of that asset (another hit, a smaller size) rather than retrying it.`,
186
+ library: () => "For a library image, check the id and that the row is `ready` with `baker images get <id>`.",
187
+ refused: () => "A 403/404 (or another refusal: a security check, an address not on the public web) means these bytes will not be served \u2014 re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`).",
188
+ unavailable: () => "The host failed on its side or did not answer (a 5xx or a timeout) \u2014 retry that URL once; if it fails again, re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`)."
181
189
  };
190
+ function fetchFailureCause(err, target) {
191
+ if (err instanceof OversizeFetchError) return "too_large";
192
+ if (err instanceof ApiError || target.kind === "imageId") return "library";
193
+ return err instanceof ExternalFetchError && isTransient(err) ? "unavailable" : "refused";
194
+ }
195
+ function isTransient(err) {
196
+ if (err.status !== null) return err.status >= 500;
197
+ return err.ourFault || err.message === NO_ANSWER_MESSAGE;
198
+ }
199
+ function allFailedAction(causes) {
200
+ if (causes.every((cause) => cause === "write")) return "retry_with_changes";
201
+ if (causes.every((cause) => cause === "unavailable")) return "retry_once";
202
+ return "use_different_resource";
203
+ }
204
+ function allFailedFix(failed) {
205
+ const causes = [...new Set(failed.map((f) => f.cause))];
206
+ const advice = causes.map((cause) => CAUSE_ADVICE[cause](failed)).join(" ");
207
+ return {
208
+ action: allFailedAction(causes),
209
+ explanation: `None of the targets could be downloaded. ${advice} Do not retry the same URLs in a loop, and do not fall back to \`curl\` \u2014 continue the job with a placeholder if nothing can be fetched.`
210
+ };
211
+ }
182
212
  async function outIsDirectory(out) {
183
213
  if (!out) return false;
184
214
  return out.endsWith("/") || await isDirectory(out);
@@ -193,7 +223,7 @@ async function buildPlan(args) {
193
223
  const outIsDir = await outIsDirectory(out);
194
224
  if (out && !outIsDir && targets.length > 1) {
195
225
  throw new ValidationError(
196
- `--out must be an existing directory when downloading more than one image (got "${out}").`
226
+ `--out must be a directory when downloading more than one image (got "${out}"); end it with \`/\` to have it created.`
197
227
  );
198
228
  }
199
229
  return { targets, out, outIsDir };
@@ -220,7 +250,11 @@ async function runDownloads(plan) {
220
250
  })
221
251
  });
222
252
  } catch (err) {
223
- failed.push({ input: target.raw, error: failureMessage(err, "Download failed") });
253
+ failed.push({
254
+ input: target.raw,
255
+ error: failureMessage(err, "Download failed"),
256
+ cause: fetchFailureCause(err, target)
257
+ });
224
258
  }
225
259
  }
226
260
  const paths = disambiguate(fetched.map((item) => item.path));
@@ -228,10 +262,11 @@ async function runDownloads(plan) {
228
262
  for (const [index, item] of fetched.entries()) {
229
263
  const path = paths[index] ?? item.path;
230
264
  try {
265
+ await mkdir(dirname(path), { recursive: true });
231
266
  await atomicWrite(path, item.buffer);
232
267
  downloaded.push({ input: item.input, output: path, bytes: item.buffer.length, contentType: item.contentType });
233
268
  } catch (err) {
234
- failed.push({ input: item.input, error: failureMessage(err, "Write failed") });
269
+ failed.push({ input: item.input, error: failureMessage(err, "Write failed"), cause: "write" });
235
270
  }
236
271
  }
237
272
  return { downloaded, failed };
@@ -269,7 +304,10 @@ var downloadCommand = defineCommand({
269
304
  },
270
305
  args: {
271
306
  targets: { type: "positional", description: "Image URLs and/or library image ids", required: false },
272
- out: { type: "string", description: "Output directory (must exist), or exact file path for a single target" }
307
+ out: {
308
+ type: "string",
309
+ description: "Output directory (created if missing; end it with /), or exact file path for a single target"
310
+ }
273
311
  },
274
312
  run: async ({ args }) => {
275
313
  try {
@@ -281,7 +319,7 @@ var downloadCommand = defineCommand({
281
319
  error: {
282
320
  code: "DOWNLOAD_FAILED",
283
321
  message: `None of the ${plan.targets.length} target(s) could be downloaded: ${failed.map((f) => `${f.input} (${f.error})`).join("; ")}`,
284
- fix: ALL_FAILED_FIX
322
+ fix: allFailedFix(failed)
285
323
  }
286
324
  });
287
325
  process.exit(1);
@@ -296,4 +334,4 @@ var downloadCommand = defineCommand({
296
334
  export {
297
335
  downloadCommand
298
336
  };
299
- //# sourceMappingURL=download-SYWQXF57.js.map
337
+ //# sourceMappingURL=download-H3ZDQTFG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/images/download.ts","../src/commands/images/downloadPaths.ts"],"sourcesContent":["import { mkdir } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\nimport type { ImagesGetResponse } from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiGet, validateConvexId } from \"../../client.ts\";\nimport {\n ExternalFetchError,\n fetchExternalBytes,\n MAX_REMOTE_IMAGE_BYTES,\n NO_ANSWER_MESSAGE,\n OversizeFetchError,\n} from \"../../lib/externalFetch.ts\";\nimport { atomicWrite, isDirectory, isRemoteUrl } from \"../../lib/image/io.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport {\n baseNameFromUrl,\n deriveExtension,\n disambiguate,\n resolveDownloadPath,\n sanitizeBaseName,\n} from \"./downloadPaths.ts\";\n\n/**\n * Remote asset → local file.\n *\n * The docs have always described the pipeline as `source → download → normalize\n * → place` and told the agent \"local files only — download remote assets\n * first\", while no download command existed: `normalize` refuses URLs and takes\n * no library ids, and the only URL→disk writer was `crop`, which demands\n * rectangle coordinates. Agents filled the hole with `curl`, hand-assembling\n * media URLs out of JSON responses.\n *\n * Local-only by design, like `normalize` / `crop` / `dimensions` — the bytes go\n * to the sandbox, not through the backend. Library ids resolve through the\n * existing `GET /api/images/get` route, so no new backend surface is needed.\n */\n\nregisterSchema({\n command: \"images.download\",\n description:\n \"Download remote images or library images to local files, so the local transforms (normalize, crop, dimensions) can read them.\",\n args: {\n targets: {\n type: \"string\",\n description:\n \"One or more image URLs and/or library image ids, space- or comma-separated (e.g. 'https://…/logo.webp j57abc123').\",\n required: true,\n },\n out: {\n type: \"string\",\n description:\n \"Output directory (created if missing; end it with `/`) or, with a single target, an exact file path. Default: the working directory.\",\n required: false,\n },\n },\n});\n\ninterface Target {\n raw: string;\n kind: \"url\" | \"imageId\";\n}\n\ninterface Downloaded {\n input: string;\n output: string;\n bytes: number;\n contentType: string | null;\n}\n\n/**\n * Why a target failed, which decides what the agent should do about it:\n * `refused` is anything that will answer the same way again (a 403/404 or other\n * refusing status, a security check, an address off the public web),\n * `unavailable` a host that failed on its side or never answered (a 5xx, a\n * timeout, a dead route).\n */\ntype FailureCause = \"write\" | \"too_large\" | \"library\" | \"refused\" | \"unavailable\";\n\ninterface FailedDownload {\n input: string;\n error: string;\n cause: FailureCause;\n}\n\nclass ValidationError extends Error {}\n\n/** A target that is neither a URL nor a library id — usually a local path,\n * which needs no download at all. */\nclass UnusableTargetError extends Error {\n constructor(readonly target: string) {\n super(`\"${target}\" is neither an image URL nor a library image id.`);\n }\n}\n\n/** Every positional, each of which may itself be a comma-separated list. */\nfunction readTargets(args: Record<string, unknown>): string[] {\n const positionals = Array.isArray(args._) ? args._ : [];\n const named = typeof args.targets === \"string\" ? [args.targets] : [];\n const all = positionals.length > 0 ? positionals : named;\n const seen = new Set<string>();\n const out: string[] = [];\n for (const value of all) {\n if (typeof value !== \"string\") continue;\n for (const part of value.split(\",\").map((p) => p.trim())) {\n if (part.length > 0 && !seen.has(part)) {\n seen.add(part);\n out.push(part);\n }\n }\n }\n return out;\n}\n\n/** A target is a URL or a library id — nothing else resolves to bytes. */\nfunction classify(raw: string): Target {\n if (isRemoteUrl(raw)) {\n return { raw, kind: \"url\" };\n }\n try {\n validateConvexId(raw);\n } catch {\n throw new UnusableTargetError(raw);\n }\n return { raw, kind: \"imageId\" };\n}\n\ninterface Resolved {\n input: string;\n url: string;\n baseName: string;\n}\n\n/** Turn a target into a fetchable URL plus the stem to name its file after. */\nasync function resolveTarget(target: Target): Promise<Resolved> {\n if (target.kind === \"url\") {\n return { input: target.raw, url: target.raw, baseName: baseNameFromUrl(target.raw) };\n }\n const doc = await apiGet<ImagesGetResponse>(\"/api/images/get\", { id: target.raw });\n // The library row's own name is what the agent searched for; fall back to the\n // id so a nameless row still writes a file it can find again.\n const stem = sanitizeBaseName(doc.name.length > 0 ? doc.name : target.raw);\n return { input: target.raw, url: doc.imageUrl, baseName: stem };\n}\n\nasync function fetchBytes(url: string): Promise<{ buffer: Buffer; contentType: string | null }> {\n // These URLs come straight from agent argv, so the ceiling is not a formality:\n // nothing upstream has looked at where they point or how big they are.\n return await fetchExternalBytes(url, { maxBytes: MAX_REMOTE_IMAGE_BYTES });\n}\n\nconst NEXT_STEP_HINT =\n \"Downloaded files are local paths — the local transforms take them directly: `baker images normalize <file> --color '#FFFFFF' --height 40`, `baker images crop <file> --x … --y … --width … --height …`, `baker images dimensions <file>`. For a landing, page-scoped images belong in `src/pages/{landing}/_images/`.\";\n\n// These two used to explain a 403 as \"the host refuses datacenter IPs, so\n// re-source it\". That was an accurate diagnosis and is now a stale instruction:\n// a refusal is retried from a different exit before this command ever reports\n// one, so a 403 that survives to here has already been answered from more than\n// one address and will not yield to another attempt. The advice is unchanged —\n// move on — but the reason is now \"this host will not serve us\", not \"try\n// somewhere our address is welcome\". Neither string may mention how that was\n// established; the agent has no proxy to reason about and no decision to make\n// about one.\nconst PARTIAL_FAILURE_HINT =\n \"Some targets did not download. Carry on with the ones that did — a missing asset never blocks the rest of the job. Retry a failed URL only if it was a transient 5xx; a 403 means the host will not serve these bytes to anyone but a browser, so re-source it (`baker images extract <page>`) instead.\";\n\n/** One sentence per cause: a local write error or a size cap is not a host refusing. */\nconst CAUSE_ADVICE: Record<FailureCause, (failed: FailedDownload[]) => string> = {\n write: () =>\n \"Writing the file failed on this machine (the error names the path) — point `--out` at a writable folder and re-run; the host is not the problem.\",\n too_large: (failed) =>\n `${failed.find((f) => f.cause === \"too_large\")?.error ?? \"A file is over the download limit.\"} Pick a smaller version of that asset (another hit, a smaller size) rather than retrying it.`,\n library: () => \"For a library image, check the id and that the row is `ready` with `baker images get <id>`.\",\n refused: () =>\n \"A 403/404 (or another refusal: a security check, an address not on the public web) means these bytes will not be served — re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`).\",\n unavailable: () =>\n \"The host failed on its side or did not answer (a 5xx or a timeout) — retry that URL once; if it fails again, re-source the asset (`baker images extract <page-url>`, `baker images stock <query>`).\",\n};\n\n/** A library id is the row's problem whatever its file fetch said; a URL is the host's. */\nfunction fetchFailureCause(err: unknown, target: Target): FailureCause {\n if (err instanceof OversizeFetchError) return \"too_large\";\n if (err instanceof ApiError || target.kind === \"imageId\") return \"library\";\n return err instanceof ExternalFetchError && isTransient(err) ? \"unavailable\" : \"refused\";\n}\n\n/**\n * Only a 5xx, a host that did not answer, or a route we could not open is worth\n * a retry. Everything else — a 403/404/401/410/429, a security check, an address\n * that is not on the public web — answers the same way next time.\n */\nfunction isTransient(err: ExternalFetchError): boolean {\n if (err.status !== null) return err.status >= 500;\n return err.ourFault || err.message === NO_ANSWER_MESSAGE;\n}\n\nfunction allFailedAction(causes: FailureCause[]): string {\n if (causes.every((cause) => cause === \"write\")) return \"retry_with_changes\";\n if (causes.every((cause) => cause === \"unavailable\")) return \"retry_once\";\n return \"use_different_resource\";\n}\n\n/** The fix for a download where nothing landed, built from why each target failed. */\nfunction allFailedFix(failed: FailedDownload[]): { action: string; explanation: string } {\n const causes = [...new Set(failed.map((f) => f.cause))];\n const advice = causes.map((cause) => CAUSE_ADVICE[cause](failed)).join(\" \");\n return {\n action: allFailedAction(causes),\n explanation: `None of the targets could be downloaded. ${advice} Do not retry the same URLs in a loop, and do not fall back to \\`curl\\` — continue the job with a placeholder if nothing can be fetched.`,\n };\n}\n\n/** Resolve `--out` once: an existing directory, or a trailing slash meaning one. */\nasync function outIsDirectory(out: string | undefined): Promise<boolean> {\n if (!out) return false;\n return out.endsWith(\"/\") || (await isDirectory(out));\n}\n\ninterface DownloadPlan {\n targets: Target[];\n out: string | undefined;\n outIsDir: boolean;\n}\n\nasync function buildPlan(args: Record<string, unknown>): Promise<DownloadPlan> {\n const raw = readTargets(args);\n if (raw.length === 0) {\n throw new ValidationError(\"At least one image URL or library image id is required.\");\n }\n const targets = raw.map(classify);\n const out = typeof args.out === \"string\" && args.out.length > 0 ? args.out : undefined;\n const outIsDir = await outIsDirectory(out);\n if (out && !outIsDir && targets.length > 1) {\n throw new ValidationError(\n `--out must be a directory when downloading more than one image (got \"${out}\"); end it with \\`/\\` to have it created.`,\n );\n }\n return { targets, out, outIsDir };\n}\n\ninterface FetchedTarget {\n input: string;\n buffer: Buffer;\n contentType: string | null;\n path: string;\n}\n\nfunction failureMessage(err: unknown, fallback: string): string {\n return err instanceof Error ? err.message : fallback;\n}\n\n/**\n * Fetch every target, keeping going past a failure: one unreachable host must\n * not cost the agent the other five assets. Paths are resolved for the whole\n * batch before any write, so collisions can be renamed rather than overwritten.\n */\nasync function runDownloads(plan: DownloadPlan): Promise<{ downloaded: Downloaded[]; failed: FailedDownload[] }> {\n const failed: FailedDownload[] = [];\n const fetched: FetchedTarget[] = [];\n\n for (const target of plan.targets) {\n try {\n const resolved = await resolveTarget(target);\n const { buffer, contentType } = await fetchBytes(resolved.url);\n fetched.push({\n input: resolved.input,\n buffer,\n contentType,\n path: resolveDownloadPath({\n baseName: resolved.baseName,\n extension: deriveExtension(contentType, resolved.url),\n out: plan.out,\n outIsDirectory: plan.outIsDir,\n }),\n });\n } catch (err) {\n failed.push({\n input: target.raw,\n error: failureMessage(err, \"Download failed\"),\n cause: fetchFailureCause(err, target),\n });\n }\n }\n\n const paths = disambiguate(fetched.map((item) => item.path));\n const downloaded: Downloaded[] = [];\n for (const [index, item] of fetched.entries()) {\n const path = paths[index] ?? item.path;\n try {\n await mkdir(dirname(path), { recursive: true });\n await atomicWrite(path, item.buffer);\n downloaded.push({ input: item.input, output: path, bytes: item.buffer.length, contentType: item.contentType });\n } catch (err) {\n failed.push({ input: item.input, error: failureMessage(err, \"Write failed\"), cause: \"write\" });\n }\n }\n return { downloaded, failed };\n}\n\nfunction emitError(err: unknown): never {\n if (err instanceof UnusableTargetError) {\n writeJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: err.message,\n fix: {\n action: \"retry_with_changes\",\n explanation:\n \"`download` takes remote image URLs (https://…) and library image ids. A path that is already on disk needs no download — pass it straight to `baker images normalize` / `crop` / `dimensions`. To get a library id, run `baker images library <query>` and read `_id`.\",\n },\n },\n });\n process.exit(1);\n }\n if (err instanceof ValidationError) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: err.message } });\n process.exit(1);\n }\n if (err instanceof ApiError) {\n writeJson({ ok: false, error: { code: err.code, message: err.message } });\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n}\n\nexport const downloadCommand = defineCommand({\n meta: {\n name: \"download\",\n description:\n \"Download image URLs and/or library images to local files — the missing first half of `source → download → normalize → place`. Never use `curl` for this.\\n\\nExamples:\\n baker images download https://media.withbaker.com/…/logo.webp\\n baker images download j57abc123 j57def456 --out src/pages/pricing/_images/\\n baker images download https://…/hero.png --out ./hero.png\",\n },\n args: {\n targets: { type: \"positional\", description: \"Image URLs and/or library image ids\", required: false },\n out: {\n type: \"string\",\n description: \"Output directory (created if missing; end it with /), or exact file path for a single target\",\n },\n },\n run: async ({ args }) => {\n try {\n const plan = await buildPlan(args as Record<string, unknown>);\n const { downloaded, failed } = await runDownloads(plan);\n\n if (downloaded.length === 0) {\n writeJson({\n ok: false,\n error: {\n code: \"DOWNLOAD_FAILED\",\n message: `None of the ${plan.targets.length} target(s) could be downloaded: ${failed\n .map((f) => `${f.input} (${f.error})`)\n .join(\"; \")}`,\n fix: allFailedFix(failed),\n },\n });\n process.exit(1);\n }\n\n const hints = [NEXT_STEP_HINT, ...(failed.length > 0 ? [PARTIAL_FAILURE_HINT] : [])];\n writeJson({ ok: true, data: { downloaded, failed }, hints });\n } catch (err) {\n emitError(err);\n }\n },\n});\n","/**\n * Where a downloaded asset lands, and what it is called.\n *\n * Split out from the command so the naming rules are testable without a\n * network or a filesystem — the part that decides whether `normalize` can read\n * the file back is the extension, and deriving it from the URL alone is how\n * a `.png` URL serving webp bytes ends up misnamed.\n */\n\nimport { basename, extname, join } from \"node:path\";\n\nconst CONTENT_TYPE_EXTENSIONS: Record<string, string> = {\n \"image/webp\": \".webp\",\n \"image/png\": \".png\",\n \"image/jpeg\": \".jpg\",\n \"image/jpg\": \".jpg\",\n \"image/gif\": \".gif\",\n \"image/svg+xml\": \".svg\",\n \"image/avif\": \".avif\",\n \"image/bmp\": \".bmp\",\n \"image/tiff\": \".tiff\",\n \"image/x-icon\": \".ico\",\n \"image/vnd.microsoft.icon\": \".ico\",\n};\n\nconst KNOWN_EXTENSIONS = new Set([\".webp\", \".png\", \".jpg\", \".jpeg\", \".gif\", \".svg\", \".avif\", \".bmp\", \".tiff\", \".ico\"]);\n\n/** The path portion of a URL, with the host and query removed. A bare host must\n * not leak into a filename — `https://media.withbaker.com/` names no file. */\nfunction urlPath(sourceUrl: string): string {\n try {\n return new URL(sourceUrl).pathname;\n } catch {\n return sourceUrl.split(/[?#]/)[0] ?? \"\";\n }\n}\n\n/** The URL's own path extension, when it names an image format we recognise. */\nfunction extensionFromUrl(sourceUrl: string): string | null {\n const ext = extname(urlPath(sourceUrl)).toLowerCase();\n return KNOWN_EXTENSIONS.has(ext) ? ext : null;\n}\n\n/**\n * The extension to write under. The served `Content-Type` wins: Baker's media\n * host routinely serves webp from a `.png` URL, and a file named for the URL\n * would then lie to every local tool that reads it back.\n */\nexport function deriveExtension(contentType: string | null | undefined, sourceUrl: string): string {\n const normalized = (contentType ?? \"\").split(\";\")[0]?.trim().toLowerCase() ?? \"\";\n const fromType = CONTENT_TYPE_EXTENSIONS[normalized];\n if (fromType) {\n return fromType;\n }\n return extensionFromUrl(sourceUrl) ?? \".bin\";\n}\n\n/**\n * A stem long enough and featureless enough to be a CDN hash rather than a name.\n *\n * Pixabay serves every file under one — an 80-character token with no word\n * breaks — so a downloaded illustration landed in a client's `_images/` as\n * `g030ff139944c078854d52b34eb635c9f5...png`, and that name then goes in the\n * page's `src` and into their repo. Pexels' `pexels-photo-11982694` has word\n * breaks and is left alone.\n */\nfunction looksLikeCdnHash(stem: string): boolean {\n return stem.length >= 32 && !/[-_.]/.test(stem);\n}\n\n/** The site a URL belongs to, as a short word usable in a filename. */\nfunction hostLabel(sourceUrl: string): string | null {\n try {\n const host = new URL(sourceUrl).hostname.replace(/^www\\./, \"\");\n const label = host.split(\".\").filter((part) => part !== \"cdn\" && part !== \"images\")[0];\n return label && /^[a-z0-9-]+$/.test(label) ? label : null;\n } catch {\n return null;\n }\n}\n\n/** A filesystem-safe stem, with no extension. */\nexport function sanitizeBaseName(raw: string): string {\n const stem = raw\n .trim()\n .toLowerCase()\n .replace(/\\.[a-z0-9]{1,5}$/i, \"\")\n .replace(/[^a-z0-9._-]+/g, \"-\")\n .replace(/^[-.]+|[-.]+$/g, \"\")\n .slice(0, 80);\n return stem.length > 0 ? stem : \"image\";\n}\n\n/**\n * The stem for a remote URL: its last path segment, or `image`. A segment that\n * is only a CDN hash is replaced by the site it came from plus a short prefix of\n * the hash, which stays unique between two files from the same site while being\n * readable in a page's markup.\n */\nexport function baseNameFromUrl(sourceUrl: string): string {\n const stem = sanitizeBaseName(basename(urlPath(sourceUrl)));\n if (looksLikeCdnHash(stem)) {\n const label = hostLabel(sourceUrl);\n if (label) return `${label}-${stem.slice(0, 8)}`;\n }\n return stem;\n}\n\ninterface DownloadPathInput {\n baseName: string;\n extension: string;\n /** `--out`, as given. */\n out?: string;\n /** Whether `--out` resolved to an existing directory (or is written as one). */\n outIsDirectory: boolean;\n}\n\n/**\n * `--out` naming a directory keeps the derived filename; `--out` naming a file\n * is taken literally, extension included — the caller asked for that path.\n */\nexport function resolveDownloadPath({ baseName, extension, out, outIsDirectory }: DownloadPathInput): string {\n const filename = `${baseName}${extension}`;\n if (!out) {\n return filename;\n }\n if (outIsDirectory) {\n return join(out, filename);\n }\n return out;\n}\n\n/**\n * Make a batch of resolved paths collision-free.\n *\n * Two hits from different hosts routinely end in the same segment (`/a/logo.png`\n * and `/b/logo.png`), and writing both would leave one file where the agent\n * asked for two — silently, since each write succeeds.\n *\n * The names this mints are claimed too, which is the whole difference between\n * this and a per-name counter. `[\"logo.png\", \"logo.png\", \"logo-2.png\"]` used to\n * produce `logo-2.png` twice: the third entry was its own first sighting, so it\n * passed through untouched and collided with the name invented for the second.\n * That reproduced the exact failure the function exists to prevent, one step\n * further along.\n */\nexport function disambiguate(paths: string[]): string[] {\n const taken = new Set<string>();\n return paths.map((path) => {\n if (!taken.has(path)) {\n taken.add(path);\n return path;\n }\n const ext = extname(path);\n const stem = path.slice(0, path.length - ext.length);\n // Step until free rather than trusting a count: the candidate can collide\n // with a name that arrived on its own, not only with an earlier duplicate.\n let n = 2;\n while (taken.has(`${stem}-${n}${ext}`)) n += 1;\n const unique = `${stem}-${n}${ext}`;\n taken.add(unique);\n return unique;\n });\n}\n"],"mappings":"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","names":["outIsDirectory"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  videosDownloadResponseSchema
3
- } from "./chunk-RCNAKWK7.js";
3
+ } from "./chunk-MKLAZD23.js";
4
4
  import "./chunk-QV6AST5T.js";
5
5
  import "./chunk-WCU362Z6.js";
6
6
  import "./chunk-GIWHHCD6.js";
@@ -169,4 +169,4 @@ export {
169
169
  downloadLibraryVideo,
170
170
  saveVideoFile
171
171
  };
172
- //# sourceMappingURL=download-D2O4RYJ3.js.map
172
+ //# sourceMappingURL=download-LOBPOIU5.js.map
@@ -11,9 +11,9 @@ import {
11
11
  loadPatchArg,
12
12
  requireTarget,
13
13
  stageGoogleOps
14
- } from "./chunk-ZMTWQDFC.js";
14
+ } from "./chunk-AL4MRNYI.js";
15
15
  import "./chunk-ERSX3MKH.js";
16
- import "./chunk-P4MXGSSJ.js";
16
+ import "./chunk-CDTAKCJR.js";
17
17
  import "./chunk-4NZ47VXO.js";
18
18
  import "./chunk-D5FY4FAK.js";
19
19
  import "./chunk-4H6XLX7E.js";
@@ -22,12 +22,12 @@ import "./chunk-SNWFM2DB.js";
22
22
  import {
23
23
  writeJsonEnvelope
24
24
  } from "./chunk-QYH2UZAK.js";
25
- import "./chunk-Y3SK6EMU.js";
26
- import "./chunk-XB4NKZAQ.js";
25
+ import "./chunk-Y5PNLB24.js";
26
+ import "./chunk-N3PASNUA.js";
27
27
  import "./chunk-E56V3RFO.js";
28
- import "./chunk-ZANXEMON.js";
28
+ import "./chunk-EL3TDR5S.js";
29
29
  import "./chunk-G6U45QD3.js";
30
- import "./chunk-4ULGRGBG.js";
30
+ import "./chunk-X6U3B6YK.js";
31
31
  import {
32
32
  CHAT_READ_ARG,
33
33
  DRAFT_FULL_ARG
@@ -554,4 +554,4 @@ export {
554
554
  draftCommand,
555
555
  importHints
556
556
  };
557
- //# sourceMappingURL=draft-SGNQOUYH.js.map
557
+ //# sourceMappingURL=draft-EB5ZFDVN.js.map
@@ -5,10 +5,10 @@ import {
5
5
  failApi,
6
6
  failValidation,
7
7
  isTempId
8
- } from "./chunk-4AEAL63J.js";
8
+ } from "./chunk-BS2MC62Y.js";
9
9
  import {
10
10
  REMOVABLE_DRAFT_OP_KINDS
11
- } from "./chunk-RCNAKWK7.js";
11
+ } from "./chunk-MKLAZD23.js";
12
12
  import "./chunk-QV6AST5T.js";
13
13
  import "./chunk-WCU362Z6.js";
14
14
  import "./chunk-GIWHHCD6.js";
@@ -217,4 +217,4 @@ export {
217
217
  draftCommand,
218
218
  draftOpNormalizer
219
219
  };
220
- //# sourceMappingURL=draft-3MPADYS4.js.map
220
+ //# sourceMappingURL=draft-I2FLECEX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  failWriteValidation
3
- } from "./chunk-ESXUIV6V.js";
3
+ } from "./chunk-PCUWBZM3.js";
4
4
  import {
5
5
  parseXApiError
6
6
  } from "./chunk-FIN4ZXGJ.js";
@@ -18,7 +18,7 @@ import {
18
18
  CHAT_READ_ARG,
19
19
  DRAFT_FULL_ARG
20
20
  } from "./chunk-X32MFGWW.js";
21
- import "./chunk-RCNAKWK7.js";
21
+ import "./chunk-MKLAZD23.js";
22
22
  import "./chunk-QV6AST5T.js";
23
23
  import "./chunk-WCU362Z6.js";
24
24
  import "./chunk-GIWHHCD6.js";
@@ -371,4 +371,4 @@ Examples:
371
371
  export {
372
372
  draftCommand
373
373
  };
374
- //# sourceMappingURL=draft-L56EMJQT.js.map
374
+ //# sourceMappingURL=draft-N56HPS36.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  loadPatchArg,
3
3
  requireTarget
4
- } from "./chunk-NRIKX35V.js";
4
+ } from "./chunk-QXCGWAC6.js";
5
5
  import {
6
6
  handleLinkedinError
7
- } from "./chunk-42JTSTQ3.js";
7
+ } from "./chunk-OTFHIGEO.js";
8
8
  import {
9
9
  amendDraftRefs,
10
10
  draftRefs,
11
11
  removeDraftRefs
12
12
  } from "./chunk-DSDI5DY3.js";
13
- import "./chunk-P4MXGSSJ.js";
13
+ import "./chunk-CDTAKCJR.js";
14
14
  import "./chunk-4NZ47VXO.js";
15
15
  import {
16
16
  hintLines
@@ -19,17 +19,17 @@ import "./chunk-4H6XLX7E.js";
19
19
  import {
20
20
  writeJsonEnvelope
21
21
  } from "./chunk-QYH2UZAK.js";
22
- import "./chunk-Y3SK6EMU.js";
23
- import "./chunk-XB4NKZAQ.js";
22
+ import "./chunk-Y5PNLB24.js";
23
+ import "./chunk-N3PASNUA.js";
24
24
  import "./chunk-E56V3RFO.js";
25
- import "./chunk-ZANXEMON.js";
25
+ import "./chunk-EL3TDR5S.js";
26
26
  import "./chunk-G6U45QD3.js";
27
- import "./chunk-4ULGRGBG.js";
27
+ import "./chunk-X6U3B6YK.js";
28
28
  import {
29
29
  CHAT_READ_ARG,
30
30
  DRAFT_FULL_ARG
31
31
  } from "./chunk-X32MFGWW.js";
32
- import "./chunk-RCNAKWK7.js";
32
+ import "./chunk-MKLAZD23.js";
33
33
  import "./chunk-QV6AST5T.js";
34
34
  import "./chunk-WCU362Z6.js";
35
35
  import "./chunk-GIWHHCD6.js";
@@ -329,4 +329,4 @@ var linkedinDraftCommand = defineCommand({
329
329
  export {
330
330
  linkedinDraftCommand
331
331
  };
332
- //# sourceMappingURL=draft-NLSQDRVQ.js.map
332
+ //# sourceMappingURL=draft-ZLZRTPY6.js.map
@@ -8,9 +8,9 @@ import {
8
8
  defaultRegistry,
9
9
  generateCatalog,
10
10
  validateCanvasDeep
11
- } from "../chunk-D6VQPBVM.js";
12
- import "../chunk-J5UTL4HE.js";
13
- import "../chunk-5NLUTJCQ.js";
11
+ } from "../chunk-DWPOAU4Z.js";
12
+ import "../chunk-HBRXFQQV.js";
13
+ import "../chunk-X3GWGFZP.js";
14
14
  import "../chunk-GWLP45WQ.js";
15
15
  import "../chunk-DGCUPJZD.js";
16
16
  import "../chunk-6QINKM6T.js";
@@ -20,9 +20,9 @@ import "../chunk-MCJ5I5LR.js";
20
20
  import "../chunk-2WZI36D3.js";
21
21
  import "../chunk-65Y3RCWP.js";
22
22
  import "../chunk-E56V3RFO.js";
23
- import "../chunk-ZANXEMON.js";
23
+ import "../chunk-EL3TDR5S.js";
24
24
  import "../chunk-G6U45QD3.js";
25
- import "../chunk-4ULGRGBG.js";
25
+ import "../chunk-X6U3B6YK.js";
26
26
  import "../chunk-JXTNP3B5.js";
27
27
  import "../chunk-45D6WRCJ.js";
28
28
  import "../chunk-CCYZJMZ7.js";
@@ -4,24 +4,24 @@ import {
4
4
  parseDateFlag,
5
5
  requireTarget,
6
6
  stageOp
7
- } from "./chunk-NRIKX35V.js";
7
+ } from "./chunk-QXCGWAC6.js";
8
8
  import {
9
9
  handleLinkedinError
10
- } from "./chunk-42JTSTQ3.js";
11
- import "./chunk-P4MXGSSJ.js";
10
+ } from "./chunk-OTFHIGEO.js";
11
+ import "./chunk-CDTAKCJR.js";
12
12
  import "./chunk-4NZ47VXO.js";
13
13
  import "./chunk-D5FY4FAK.js";
14
14
  import "./chunk-4H6XLX7E.js";
15
15
  import {
16
16
  writeJsonEnvelope
17
17
  } from "./chunk-QYH2UZAK.js";
18
- import "./chunk-Y3SK6EMU.js";
19
- import "./chunk-XB4NKZAQ.js";
18
+ import "./chunk-Y5PNLB24.js";
19
+ import "./chunk-N3PASNUA.js";
20
20
  import "./chunk-E56V3RFO.js";
21
- import "./chunk-ZANXEMON.js";
21
+ import "./chunk-EL3TDR5S.js";
22
22
  import "./chunk-G6U45QD3.js";
23
- import "./chunk-4ULGRGBG.js";
24
- import "./chunk-RCNAKWK7.js";
23
+ import "./chunk-X6U3B6YK.js";
24
+ import "./chunk-MKLAZD23.js";
25
25
  import "./chunk-QV6AST5T.js";
26
26
  import "./chunk-WCU362Z6.js";
27
27
  import "./chunk-GIWHHCD6.js";
@@ -233,4 +233,4 @@ Examples:
233
233
  export {
234
234
  experimentsCommand
235
235
  };
236
- //# sourceMappingURL=experiments-DYNNWQRB.js.map
236
+ //# sourceMappingURL=experiments-WVTBHD6G.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ parseRequestFlags
3
+ } from "./chunk-4N3Y5QWW.js";
1
4
  import {
2
5
  AUTO_INGEST_MAX,
3
6
  parseAutoIngest
@@ -6,6 +9,17 @@ import {
6
9
  OUTPUT_ARGS,
7
10
  writeProviderHits
8
11
  } from "./chunk-IAZKXDWV.js";
12
+ import {
13
+ IMAGES_EXTRACT_LIMIT_MAX,
14
+ imagesExtractRequestSchema
15
+ } from "./chunk-MKLAZD23.js";
16
+ import "./chunk-QV6AST5T.js";
17
+ import "./chunk-WCU362Z6.js";
18
+ import "./chunk-GIWHHCD6.js";
19
+ import "./chunk-SOPVIIUW.js";
20
+ import "./chunk-G4FG5EQO.js";
21
+ import "./chunk-R7XDGNZD.js";
22
+ import "./chunk-MSMTG6OC.js";
9
23
  import {
10
24
  ApiError,
11
25
  apiPost
@@ -23,17 +37,14 @@ import { defineCommand } from "citty";
23
37
 
24
38
  // src/commands/images/extractErrors.ts
25
39
  var RETRYABLE = /* @__PURE__ */ new Set(["UNAVAILABLE", "RATE_LIMITED", "TIMEOUT", "NETWORK_ERROR"]);
40
+ var PAGE_FAILURES = /* @__PURE__ */ new Set(["VALIDATION_ERROR", "INTERNAL_ERROR"]);
26
41
  function extractErrorEnvelope(err, url) {
27
42
  const retryable = RETRYABLE.has(err.code);
28
43
  const fallback = `use \`baker images screenshot ${url}\` to capture the page as one image, or \`baker images logo <domain>\` for the brand's mark, and carry on with the rest of the job.`;
44
+ const fix = retryable ? { action: "retry_once", explanation: `Run the same command once more. If it fails again, ${fallback}` } : PAGE_FAILURES.has(err.code) ? { action: "use_fallback", explanation: `Retrying the same address will fail the same way \u2014 ${fallback}` } : err.fix;
29
45
  return {
30
46
  ok: false,
31
- error: {
32
- code: err.code,
33
- message: err.message,
34
- retryable,
35
- fix: retryable ? { action: "retry_once", explanation: `Run the same command once more. If it fails again, ${fallback}` } : { action: "use_fallback", explanation: `Retrying the same address will fail the same way \u2014 ${fallback}` }
36
- }
47
+ error: { code: err.code, message: err.message, retryable, ...fix ? { fix } : {} }
37
48
  };
38
49
  }
39
50
 
@@ -44,7 +55,12 @@ registerSchema({
44
55
  args: {
45
56
  url: { type: "string", description: "URL to scrape", required: true },
46
57
  "wait-for": { type: "number", description: "JS render wait ms", required: false },
47
- limit: { type: "number", description: "Limit returned images", required: false, default: 50 },
58
+ limit: {
59
+ type: "number",
60
+ description: `Most images to return (1-${IMAGES_EXTRACT_LIMIT_MAX}, default ${IMAGES_EXTRACT_LIMIT_MAX})`,
61
+ required: false,
62
+ default: IMAGES_EXTRACT_LIMIT_MAX
63
+ },
48
64
  "auto-ingest": {
49
65
  type: "number",
50
66
  description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract}, default 0)`,
@@ -69,7 +85,7 @@ var extractCommand = defineCommand({
69
85
  args: {
70
86
  url: { type: "positional", description: "URL to scrape", required: false },
71
87
  "wait-for": { type: "string", description: "JS render wait ms", required: false },
72
- limit: { type: "string", description: "Max returned images", required: false },
88
+ limit: { type: "string", description: `Most images to return (1-${IMAGES_EXTRACT_LIMIT_MAX})`, required: false },
73
89
  "auto-ingest": { type: "string", description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract})`, required: false },
74
90
  context: { type: "string", description: "Description context hint applied to auto-ingested hits", required: false },
75
91
  ...OUTPUT_ARGS
@@ -103,7 +119,12 @@ var extractCommand = defineCommand({
103
119
  body.autoIngest = parsed.value;
104
120
  }
105
121
  if (args.context) body.descriptionContext = args.context;
106
- const data = await apiPost("/api/images/extract", body);
122
+ const request = parseRequestFlags(imagesExtractRequestSchema, body, { limit: "--limit", waitFor: "--wait-for" });
123
+ if (!request.ok) {
124
+ writeJson(request.envelope);
125
+ process.exit(1);
126
+ }
127
+ const data = await apiPost("/api/images/extract", request.data);
107
128
  writeProviderHits(data, data.hits, args, []);
108
129
  } catch (err) {
109
130
  if (err instanceof ApiError) {
@@ -118,4 +139,4 @@ var extractCommand = defineCommand({
118
139
  export {
119
140
  extractCommand
120
141
  };
121
- //# sourceMappingURL=extract-DWDZI35Y.js.map
142
+ //# sourceMappingURL=extract-UELZV3NI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/images/extract.ts","../src/commands/images/extractErrors.ts"],"sourcesContent":["import {\n IMAGES_EXTRACT_LIMIT_MAX,\n type ImagesExtractRequest,\n type ImagesExtractResponse,\n imagesExtractRequestSchema,\n} from \"@baker/api\";\nimport { defineCommand } from \"citty\";\nimport { ApiError, apiPost } from \"../../client.ts\";\nimport { writeJson } from \"../../output.ts\";\nimport { registerSchema } from \"../../schemas.ts\";\nimport { AUTO_INGEST_MAX, parseAutoIngest } from \"./autoIngest.ts\";\nimport { extractErrorEnvelope } from \"./extractErrors.ts\";\nimport { OUTPUT_ARGS, writeProviderHits } from \"./providerHits.ts\";\nimport { parseRequestFlags } from \"./requestFlags.ts\";\n\nregisterSchema({\n command: \"images.extract\",\n description: \"Extract images from a URL via Firecrawl (formats: images).\",\n args: {\n url: { type: \"string\", description: \"URL to scrape\", required: true },\n \"wait-for\": { type: \"number\", description: \"JS render wait ms\", required: false },\n limit: {\n type: \"number\",\n description: `Most images to return (1-${IMAGES_EXTRACT_LIMIT_MAX}, default ${IMAGES_EXTRACT_LIMIT_MAX})`,\n required: false,\n default: IMAGES_EXTRACT_LIMIT_MAX,\n },\n \"auto-ingest\": {\n type: \"number\",\n description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract}, default 0)`,\n required: false,\n default: 0,\n },\n context: {\n type: \"string\",\n description: \"Free-text hint applied to every auto-ingested hit (overrides provider-derived context)\",\n required: false,\n },\n output: { type: \"string\", description: \"Output format: json|files|md\", required: false, default: \"json\" },\n fields: { type: \"string\", description: \"Comma-separated field names to include\", required: false },\n full: { type: \"boolean\", description: \"Include full metadata\", required: false, default: false },\n },\n});\n\nexport const extractCommand = defineCommand({\n meta: {\n name: \"extract\",\n description:\n \"Pull every image from a single URL via Firecrawl. ~$0.001/scrape. Cap auto-ingest at 20.\\n\\nExample: baker images extract https://stripe.com --auto-ingest 5\",\n },\n args: {\n url: { type: \"positional\", description: \"URL to scrape\", required: false },\n \"wait-for\": { type: \"string\", description: \"JS render wait ms\", required: false },\n limit: { type: \"string\", description: `Most images to return (1-${IMAGES_EXTRACT_LIMIT_MAX})`, required: false },\n \"auto-ingest\": { type: \"string\", description: `Auto-ingest top N (0-${AUTO_INGEST_MAX.extract})`, required: false },\n context: { type: \"string\", description: \"Description context hint applied to auto-ingested hits\", required: false },\n ...OUTPUT_ARGS,\n },\n run: async ({ args }) => {\n try {\n const url = args.url as string | undefined;\n if (!url) {\n writeJson({ ok: false, error: { code: \"VALIDATION_ERROR\", message: \"URL is required\" } });\n process.exit(1);\n }\n const body: ImagesExtractRequest = { url };\n if (args[\"wait-for\"]) body.waitFor = Number(args[\"wait-for\"]);\n if (args.limit) body.limit = Number(args.limit);\n if (args[\"auto-ingest\"] !== undefined) {\n const parsed = parseAutoIngest(args[\"auto-ingest\"], AUTO_INGEST_MAX.extract);\n if (!parsed.ok) {\n writeJson({\n ok: false,\n error: {\n code: \"VALIDATION_ERROR\",\n message: parsed.message,\n fix: {\n action: \"retry_with_changes\",\n explanation: `Re-run with --auto-ingest in 0-${AUTO_INGEST_MAX.extract}.`,\n },\n },\n });\n process.exit(1);\n }\n body.autoIngest = parsed.value;\n }\n if (args.context) body.descriptionContext = args.context as string;\n\n const request = parseRequestFlags(imagesExtractRequestSchema, body, { limit: \"--limit\", waitFor: \"--wait-for\" });\n if (!request.ok) {\n writeJson(request.envelope);\n process.exit(1);\n }\n const data = await apiPost<ImagesExtractResponse>(\"/api/images/extract\", request.data);\n writeProviderHits(data, data.hits, args as Record<string, unknown>, []);\n } catch (err) {\n if (err instanceof ApiError) {\n writeJson(extractErrorEnvelope(err, String(args.url)));\n process.exit(1);\n }\n writeJson({ ok: false, error: { code: \"INTERNAL_ERROR\", message: \"Unexpected error\" } });\n process.exit(1);\n }\n },\n});\n","import type { ApiError } from \"../../client.ts\";\n\n/** Failures a second attempt can change: the reader or the connection had a bad moment. */\nconst RETRYABLE = new Set([\"UNAVAILABLE\", \"RATE_LIMITED\", \"TIMEOUT\", \"NETWORK_ERROR\"]);\n\n/**\n * Failures that are about the page, so another address or another capture of it\n * is the way on. Once the request has passed `parseRequestFlags`, a 400 can only\n * be the page refusing or being unreadable, and an internal error our own reader\n * account. Anything else — a refused key, a missing permission — is not about the\n * page, and a screenshot of it would be refused the same way.\n */\nconst PAGE_FAILURES = new Set([\"VALIDATION_ERROR\", \"INTERNAL_ERROR\"]);\n\ninterface ExtractErrorEnvelope {\n ok: false;\n error: {\n code: string;\n message: string;\n retryable: boolean;\n fix?: { action: string; explanation: string };\n };\n}\n\n/**\n * The envelope for a failed `baker images extract`. Without `retryable` an\n * agent cannot tell a reader that hiccupped from a page nobody can read, and it\n * abandons the page for an image search. Either way the job carries on: the\n * page can still be captured whole, and the brand's mark fetched on its own.\n */\nexport function extractErrorEnvelope(err: ApiError, url: string): ExtractErrorEnvelope {\n const retryable = RETRYABLE.has(err.code);\n const fallback = `use \\`baker images screenshot ${url}\\` to capture the page as one image, or \\`baker images logo <domain>\\` for the brand's mark, and carry on with the rest of the job.`;\n const fix = retryable\n ? { action: \"retry_once\", explanation: `Run the same command once more. If it fails again, ${fallback}` }\n : PAGE_FAILURES.has(err.code)\n ? { action: \"use_fallback\", explanation: `Retrying the same address will fail the same way — ${fallback}` }\n : err.fix;\n return {\n ok: false,\n error: { code: err.code, message: err.message, retryable, ...(fix ? { fix } : {}) },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,SAAS,qBAAqB;;;ACH9B,IAAM,YAAY,oBAAI,IAAI,CAAC,eAAe,gBAAgB,WAAW,eAAe,CAAC;AASrF,IAAM,gBAAgB,oBAAI,IAAI,CAAC,oBAAoB,gBAAgB,CAAC;AAkB7D,SAAS,qBAAqB,KAAe,KAAmC;AACrF,QAAM,YAAY,UAAU,IAAI,IAAI,IAAI;AACxC,QAAM,WAAW,iCAAiC,GAAG;AACrD,QAAM,MAAM,YACR,EAAE,QAAQ,cAAc,aAAa,sDAAsD,QAAQ,GAAG,IACtG,cAAc,IAAI,IAAI,IAAI,IACxB,EAAE,QAAQ,gBAAgB,aAAa,2DAAsD,QAAQ,GAAG,IACxG,IAAI;AACV,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO,EAAE,MAAM,IAAI,MAAM,SAAS,IAAI,SAAS,WAAW,GAAI,MAAM,EAAE,IAAI,IAAI,CAAC,EAAG;AAAA,EACpF;AACF;;;AD3BA,eAAe;AAAA,EACb,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,IACJ,KAAK,EAAE,MAAM,UAAU,aAAa,iBAAiB,UAAU,KAAK;AAAA,IACpE,YAAY,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,MAAM;AAAA,IAChF,OAAO;AAAA,MACL,MAAM;AAAA,MACN,aAAa,4BAA4B,wBAAwB,aAAa,wBAAwB;AAAA,MACtG,UAAU;AAAA,MACV,SAAS;AAAA,IACX;AAAA,IACA,eAAe;AAAA,MACb,MAAM;AAAA,MACN,aAAa,wBAAwB,gBAAgB,OAAO;AAAA,MAC5D,UAAU;AAAA,MACV,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,aAAa;AAAA,MACb,UAAU;AAAA,IACZ;AAAA,IACA,QAAQ,EAAE,MAAM,UAAU,aAAa,gCAAgC,UAAU,OAAO,SAAS,OAAO;AAAA,IACxG,QAAQ,EAAE,MAAM,UAAU,aAAa,0CAA0C,UAAU,MAAM;AAAA,IACjG,MAAM,EAAE,MAAM,WAAW,aAAa,yBAAyB,UAAU,OAAO,SAAS,MAAM;AAAA,EACjG;AACF,CAAC;AAEM,IAAM,iBAAiB,cAAc;AAAA,EAC1C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,aACE;AAAA,EACJ;AAAA,EACA,MAAM;AAAA,IACJ,KAAK,EAAE,MAAM,cAAc,aAAa,iBAAiB,UAAU,MAAM;AAAA,IACzE,YAAY,EAAE,MAAM,UAAU,aAAa,qBAAqB,UAAU,MAAM;AAAA,IAChF,OAAO,EAAE,MAAM,UAAU,aAAa,4BAA4B,wBAAwB,KAAK,UAAU,MAAM;AAAA,IAC/G,eAAe,EAAE,MAAM,UAAU,aAAa,wBAAwB,gBAAgB,OAAO,KAAK,UAAU,MAAM;AAAA,IAClH,SAAS,EAAE,MAAM,UAAU,aAAa,0DAA0D,UAAU,MAAM;AAAA,IAClH,GAAG;AAAA,EACL;AAAA,EACA,KAAK,OAAO,EAAE,KAAK,MAAM;AACvB,QAAI;AACF,YAAM,MAAM,KAAK;AACjB,UAAI,CAAC,KAAK;AACR,kBAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,oBAAoB,SAAS,kBAAkB,EAAE,CAAC;AACxF,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,YAAM,OAA6B,EAAE,IAAI;AACzC,UAAI,KAAK,UAAU,EAAG,MAAK,UAAU,OAAO,KAAK,UAAU,CAAC;AAC5D,UAAI,KAAK,MAAO,MAAK,QAAQ,OAAO,KAAK,KAAK;AAC9C,UAAI,KAAK,aAAa,MAAM,QAAW;AACrC,cAAM,SAAS,gBAAgB,KAAK,aAAa,GAAG,gBAAgB,OAAO;AAC3E,YAAI,CAAC,OAAO,IAAI;AACd,oBAAU;AAAA,YACR,IAAI;AAAA,YACJ,OAAO;AAAA,cACL,MAAM;AAAA,cACN,SAAS,OAAO;AAAA,cAChB,KAAK;AAAA,gBACH,QAAQ;AAAA,gBACR,aAAa,kCAAkC,gBAAgB,OAAO;AAAA,cACxE;AAAA,YACF;AAAA,UACF,CAAC;AACD,kBAAQ,KAAK,CAAC;AAAA,QAChB;AACA,aAAK,aAAa,OAAO;AAAA,MAC3B;AACA,UAAI,KAAK,QAAS,MAAK,qBAAqB,KAAK;AAEjD,YAAM,UAAU,kBAAkB,4BAA4B,MAAM,EAAE,OAAO,WAAW,SAAS,aAAa,CAAC;AAC/G,UAAI,CAAC,QAAQ,IAAI;AACf,kBAAU,QAAQ,QAAQ;AAC1B,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,YAAM,OAAO,MAAM,QAA+B,uBAAuB,QAAQ,IAAI;AACrF,wBAAkB,MAAM,KAAK,MAAM,MAAiC,CAAC,CAAC;AAAA,IACxE,SAAS,KAAK;AACZ,UAAI,eAAe,UAAU;AAC3B,kBAAU,qBAAqB,KAAK,OAAO,KAAK,GAAG,CAAC,CAAC;AACrD,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,gBAAU,EAAE,IAAI,OAAO,OAAO,EAAE,MAAM,kBAAkB,SAAS,mBAAmB,EAAE,CAAC;AACvF,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  csvOrJson,
3
3
  handleLinkedinError
4
- } from "./chunk-42JTSTQ3.js";
4
+ } from "./chunk-OTFHIGEO.js";
5
5
  import {
6
6
  writeAdsJson,
7
7
  writeAdsOutput
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  NO_CACHE_ARG
11
11
  } from "./chunk-GO6ISZUZ.js";
12
- import "./chunk-RCNAKWK7.js";
12
+ import "./chunk-MKLAZD23.js";
13
13
  import "./chunk-QV6AST5T.js";
14
14
  import "./chunk-WCU362Z6.js";
15
15
  import "./chunk-GIWHHCD6.js";
@@ -114,4 +114,4 @@ Subcommands:
114
114
  export {
115
115
  facetsCommand
116
116
  };
117
- //# sourceMappingURL=facets-Y2IEM37E.js.map
117
+ //# sourceMappingURL=facets-V2ITIUKD.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  failApi,
3
3
  failValidation
4
- } from "./chunk-4AEAL63J.js";
4
+ } from "./chunk-BS2MC62Y.js";
5
5
  import {
6
6
  PLATFORM_REPORT_KINDS,
7
7
  feedbackReportRequestSchema
8
- } from "./chunk-RCNAKWK7.js";
8
+ } from "./chunk-MKLAZD23.js";
9
9
  import "./chunk-QV6AST5T.js";
10
10
  import "./chunk-WCU362Z6.js";
11
11
  import "./chunk-GIWHHCD6.js";
@@ -133,4 +133,4 @@ export {
133
133
  reportBody,
134
134
  waitForIssue
135
135
  };
136
- //# sourceMappingURL=feedback-IVSLM5PN.js.map
136
+ //# sourceMappingURL=feedback-PXWPR3NZ.js.map
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  readCreativeIdea,
3
3
  withAnchor
4
- } from "./chunk-73MLPGI2.js";
5
- import "./chunk-OIORUNKH.js";
6
- import "./chunk-IZROFBH7.js";
7
- import "./chunk-QFVZIQRQ.js";
4
+ } from "./chunk-U6G6ALXP.js";
5
+ import "./chunk-OBQ5YUOZ.js";
6
+ import "./chunk-EJBLF2LI.js";
7
+ import "./chunk-6WVYBY2G.js";
8
8
  import "./chunk-QFODAMYR.js";
9
9
  import "./chunk-EKX37C3T.js";
10
- import "./chunk-XXBP73RV.js";
11
- import "./chunk-5AOTCCTT.js";
12
- import "./chunk-2RL2T5JO.js";
13
- import "./chunk-SP3MHBME.js";
10
+ import "./chunk-Q5DFEVLE.js";
11
+ import "./chunk-2QGGI7MF.js";
12
+ import "./chunk-CH44XVPE.js";
13
+ import "./chunk-IOKD77L2.js";
14
14
  import "./chunk-PGAYESXE.js";
15
- import "./chunk-B5UVOCYA.js";
15
+ import "./chunk-3OMFSYQ3.js";
16
16
  import "./chunk-UKZKLXTE.js";
17
- import "./chunk-OKXLOLEV.js";
18
- import "./chunk-LFELUKCA.js";
19
- import "./chunk-TGT4XHLX.js";
17
+ import "./chunk-PNWXTOQ4.js";
18
+ import "./chunk-GRDZWZKQ.js";
19
+ import "./chunk-KDAINT54.js";
20
20
  import "./chunk-G6XKD7QE.js";
21
21
  import "./chunk-4H6XLX7E.js";
22
- import "./chunk-Y3SK6EMU.js";
23
- import "./chunk-XB4NKZAQ.js";
24
- import "./chunk-J5UTL4HE.js";
25
- import "./chunk-5NLUTJCQ.js";
22
+ import "./chunk-Y5PNLB24.js";
23
+ import "./chunk-N3PASNUA.js";
24
+ import "./chunk-HBRXFQQV.js";
25
+ import "./chunk-X3GWGFZP.js";
26
26
  import "./chunk-GWLP45WQ.js";
27
27
  import "./chunk-DGCUPJZD.js";
28
28
  import "./chunk-6QINKM6T.js";
@@ -32,10 +32,10 @@ import "./chunk-MCJ5I5LR.js";
32
32
  import "./chunk-2WZI36D3.js";
33
33
  import "./chunk-65Y3RCWP.js";
34
34
  import "./chunk-E56V3RFO.js";
35
- import "./chunk-ZANXEMON.js";
35
+ import "./chunk-EL3TDR5S.js";
36
36
  import "./chunk-G6U45QD3.js";
37
- import "./chunk-4ULGRGBG.js";
38
- import "./chunk-RCNAKWK7.js";
37
+ import "./chunk-X6U3B6YK.js";
38
+ import "./chunk-MKLAZD23.js";
39
39
  import "./chunk-QV6AST5T.js";
40
40
  import "./chunk-WCU362Z6.js";
41
41
  import "./chunk-GIWHHCD6.js";
@@ -100,7 +100,7 @@ var feedbackCommand = defineCommand({
100
100
  meta: { name: "feedback", description: DESCRIPTION },
101
101
  subCommands: {
102
102
  read: feedbackReadCommand,
103
- record: () => import("./feedback-record-P7CO3IGE.js").then((m) => m.feedbackRecordCommand)
103
+ record: () => import("./feedback-record-DJHJWJAF.js").then((m) => m.feedbackRecordCommand)
104
104
  },
105
105
  // `args` stays although the parent has no `run`: citty finds the subcommand
106
106
  // name with THIS command's arg defs, so without them `--slug spring-offer`
@@ -112,4 +112,4 @@ var feedbackCommand = defineCommand({
112
112
  export {
113
113
  feedbackCommand
114
114
  };
115
- //# sourceMappingURL=feedback-HJRVTU6C.js.map
115
+ //# sourceMappingURL=feedback-QSIPSNAL.js.map