hyperframes 0.8.191 → 0.8.192

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 (211) hide show
  1. package/dist/{add-S2ZQYG52.js → add-TZU2UW7A.js} +17 -17
  2. package/dist/{animatedGifPrep-3JA2CQ3U.js → animatedGifPrep-NLAXC3VV.js} +11 -10
  3. package/dist/api.js +24 -23
  4. package/dist/{appHistory-TH3TL6N6.js → appHistory-QVCSAOI4.js} +1 -1
  5. package/dist/{asset-2CNTAPOC.js → asset-JAJXA6LB.js} +2 -2
  6. package/dist/{assetCataloger-5HXLXL7C.js → assetCataloger-4WTX3J4I.js} +13 -12
  7. package/dist/{audio-DZTSYHXS.js → audio-XLWC7JKS.js} +22 -21
  8. package/dist/{auth-GX3M6TJ4.js → auth-5K6X3NPJ.js} +4 -4
  9. package/dist/{autoUpdate-EDIWE4Z5.js → autoUpdate-RNV7SKGB.js} +4 -4
  10. package/dist/{backgroundChecks-VPUPJ7UI.js → backgroundChecks-QXLVZVGX.js} +5 -5
  11. package/dist/backgroundChecksWorker.js +5 -5
  12. package/dist/{batchRender-JHIIDBJR.js → batchRender-THKSPDZR.js} +14 -7
  13. package/dist/{beats-PZRVTRYW.js → beats-K7CGCFVL.js} +53 -15
  14. package/dist/{benchmark-22UFDW2N.js → benchmark-PHRDIXNL.js} +18 -14
  15. package/dist/{browser-VRDWYIUM.js → browser-GN6R5ZSK.js} +7 -7
  16. package/dist/{bundleWithLocalizedFonts-23QDKFSN.js → bundleWithLocalizedFonts-C325UNR4.js} +3 -3
  17. package/dist/{capture-TOCLXYMJ.js → capture-6UBQFHZQ.js} +76 -68
  18. package/dist/{capture-NFCBXHDE.js → capture-BZ7APOGQ.js} +3 -3
  19. package/dist/{captureCompositionFrame-BEM6MF7F.js → captureCompositionFrame-VORSCTWC.js} +17 -16
  20. package/dist/{catalog-NXS35KM7.js → catalog-PHU2RUZ3.js} +18 -18
  21. package/dist/{catch-up-6WJBUI2C.js → catch-up-HCNRM46J.js} +7 -7
  22. package/dist/{check-WVEBMWN5.js → check-TJ5ZLB4I.js} +43 -42
  23. package/dist/{checkBrowser-RT45HJ36.js → checkBrowser-DWP7ZXJ7.js} +38 -37
  24. package/dist/{chunk-KAC2WR7P.js → chunk-2HP5GIQ3.js} +3 -3
  25. package/dist/{chunk-2WNVHZHA.js → chunk-2J3NA3OB.js} +13 -13
  26. package/dist/{chunk-B2A56S5C.js → chunk-2MCXIY4B.js} +13 -10
  27. package/dist/{chunk-DCAI5DBR.js → chunk-2ST4WAFY.js} +9 -1
  28. package/dist/{chunk-3NRB7YXW.js → chunk-2VXY3PEF.js} +96 -67
  29. package/dist/{chunk-LBNEH6IQ.js → chunk-32NB4VMH.js} +1 -1
  30. package/dist/{chunk-IXLUTE6N.js → chunk-3422KMTD.js} +5 -1
  31. package/dist/{chunk-JTPHFYZI.js → chunk-3CXIX6XS.js} +68 -7
  32. package/dist/{chunk-MSM6VRQ4.js → chunk-3FV5BVWS.js} +2 -2
  33. package/dist/{chunk-7ZJEQY7Q.js → chunk-4E75LHAL.js} +23 -3
  34. package/dist/{chunk-TMBUBLZB.js → chunk-4HCJOFMB.js} +166 -46
  35. package/dist/{chunk-JJJCFKMF.js → chunk-5IPKQHOL.js} +17 -6
  36. package/dist/{chunk-WQ3X5OH4.js → chunk-5TRFLZ5Z.js} +2 -2
  37. package/dist/{chunk-HRPWRZGF.js → chunk-6N65ZMC5.js} +1 -1
  38. package/dist/{chunk-XUXGIA7H.js → chunk-6NLPPKBO.js} +1 -2
  39. package/dist/{chunk-RE3EEBWC.js → chunk-6WNLQI63.js} +4 -4
  40. package/dist/{chunk-7FF36MAD.js → chunk-6XVKMBUA.js} +9 -6
  41. package/dist/{chunk-7NKJS5KM.js → chunk-7JJMT6LN.js} +1 -1
  42. package/dist/{chunk-JOLZ3BSL.js → chunk-7LLRMYP6.js} +2 -2
  43. package/dist/{chunk-COETAXRN.js → chunk-7RSY7SZN.js} +2 -2
  44. package/dist/{chunk-JGTRVG32.js → chunk-7UZC4N62.js} +1 -1
  45. package/dist/{chunk-XWOCXIKR.js → chunk-A4OI5ZNX.js} +1 -1
  46. package/dist/{chunk-VYQYVYQ5.js → chunk-AEXVVABM.js} +83 -45
  47. package/dist/{chunk-DOOSC34Z.js → chunk-AMZJFCOX.js} +8 -8
  48. package/dist/{chunk-OV6KHXLX.js → chunk-AR46ND2Q.js} +1 -1
  49. package/dist/chunk-B2XLXD7V.js +3897 -0
  50. package/dist/{chunk-XMSQRDAK.js → chunk-BEOK6F26.js} +2 -2
  51. package/dist/{chunk-U5GTDAQL.js → chunk-BPKLUHFT.js} +7 -7
  52. package/dist/{chunk-TFGO5YMI.js → chunk-BV6YE455.js} +2 -2
  53. package/dist/{chunk-XGHHVYC7.js → chunk-BY6OQ6XP.js} +2 -2
  54. package/dist/{chunk-JQYJXUJW.js → chunk-C6KE4AFW.js} +1 -1
  55. package/dist/{chunk-TMK4Q7JA.js → chunk-CFUCHO4T.js} +20 -5
  56. package/dist/{chunk-KV72BP7O.js → chunk-CXRZBWSH.js} +11 -11
  57. package/dist/chunk-CZGHFATT.js +31 -0
  58. package/dist/{chunk-CYBXXSC4.js → chunk-DIKAPMMF.js} +2 -2
  59. package/dist/{chunk-7L37AB57.js → chunk-E3P3LJG6.js} +9 -9
  60. package/dist/{chunk-JYSSPQDT.js → chunk-E5V6WEMK.js} +11 -11
  61. package/dist/{chunk-T5YF32WV.js → chunk-EKGGSAWR.js} +6 -5
  62. package/dist/{chunk-7KVVNF7B.js → chunk-ELP5QZWL.js} +1 -1
  63. package/dist/{chunk-QH3T4WI2.js → chunk-EXAX37XR.js} +8 -2
  64. package/dist/{chunk-EI7FP7F3.js → chunk-FBVUAH7N.js} +12 -2
  65. package/dist/{chunk-W3CS2KFV.js → chunk-GANST5K3.js} +2 -2
  66. package/dist/{chunk-3WJT2JCX.js → chunk-IMSI7IFW.js} +52 -23
  67. package/dist/{chunk-W64L7IFS.js → chunk-IW5G323T.js} +1 -1
  68. package/dist/{chunk-RWYUK7LM.js → chunk-J2ASTCU6.js} +2 -2
  69. package/dist/{chunk-3XI7MIZB.js → chunk-J2BSUF6X.js} +1 -1
  70. package/dist/{chunk-WY3TQ2PT.js → chunk-JCDYDF54.js} +2 -2
  71. package/dist/{chunk-ALEF2F5N.js → chunk-K2AKVYNR.js} +2 -2
  72. package/dist/{chunk-TADJOIFW.js → chunk-KZOZN4PI.js} +4 -4
  73. package/dist/{chunk-CINKQY6M.js → chunk-L2YGSAOL.js} +3 -3
  74. package/dist/{chunk-AQB5M53R.js → chunk-LOKCBZYF.js} +3 -3
  75. package/dist/{chunk-7A65UCMI.js → chunk-MEE4NTPZ.js} +2 -2
  76. package/dist/{chunk-GM3WIOO6.js → chunk-MGBUWPXX.js} +2 -2
  77. package/dist/{chunk-ZHKUIC7X.js → chunk-MVIJTXN5.js} +21 -14
  78. package/dist/{chunk-SMEF3TRJ.js → chunk-ODBYZIOH.js} +15 -15
  79. package/dist/{chunk-NJGTNWQY.js → chunk-OQL4AJ4X.js} +6 -6
  80. package/dist/{chunk-5C7R55BJ.js → chunk-P2I4RLJE.js} +1 -1
  81. package/dist/{chunk-7LUJE3II.js → chunk-PFRG5P32.js} +1 -1
  82. package/dist/{chunk-RUOG4VB7.js → chunk-PKZ7RK5N.js} +5 -4
  83. package/dist/{chunk-LLFQA7XF.js → chunk-QFPBRZJD.js} +1 -1
  84. package/dist/{chunk-TJKE4EYX.js → chunk-QWLES6YV.js} +3 -3
  85. package/dist/{chunk-NMDUSCCE.js → chunk-QX4TB4NH.js} +160 -56
  86. package/dist/{chunk-CXMXJEVY.js → chunk-R2U2G4OS.js} +1 -1
  87. package/dist/{chunk-46HEFGXJ.js → chunk-REUL2KH2.js} +1 -1
  88. package/dist/{chunk-KGMHMYWI.js → chunk-RHYOWDI6.js} +2 -2
  89. package/dist/{chunk-DYAPHNV6.js → chunk-RWGASWT7.js} +1 -1
  90. package/dist/chunk-RXATE6FZ.js +385 -0
  91. package/dist/{chunk-EFCKV7MY.js → chunk-SBBQFPCJ.js} +1 -1
  92. package/dist/{chunk-KHCTBZGJ.js → chunk-SK7TR7BL.js} +4 -4
  93. package/dist/{chunk-KNU5COPB.js → chunk-T2EUWCJE.js} +1 -1
  94. package/dist/{chunk-TRZVS6TL.js → chunk-T6O5OLN2.js} +3 -3
  95. package/dist/{chunk-TFMZ4RKM.js → chunk-ULTKB5FC.js} +23 -12
  96. package/dist/{chunk-UNR3P7IF.js → chunk-VNPADTDD.js} +3 -3
  97. package/dist/{chunk-BFFLKQVB.js → chunk-VOM2HLUI.js} +4 -4
  98. package/dist/{chunk-GLG5JWLI.js → chunk-VRAXIQ6I.js} +2 -2
  99. package/dist/{chunk-NAUKCKCJ.js → chunk-W24SZ5FL.js} +4 -4
  100. package/dist/{chunk-COWQITWP.js → chunk-WOKVXK4J.js} +1 -1
  101. package/dist/{chunk-WJEVUPVD.js → chunk-XF77MK3J.js} +1 -1
  102. package/dist/{chunk-HYW6HTAK.js → chunk-XX2PA4L3.js} +2 -2
  103. package/dist/{chunk-RQBB7PYT.js → chunk-YMQQXPD5.js} +2 -2
  104. package/dist/{chunk-WHAEJX26.js → chunk-YWRQHRDY.js} +17 -12
  105. package/dist/{chunk-FBDOHH3Q.js → chunk-ZEMDV6W2.js} +29 -59
  106. package/dist/{clean-3VIU2BSK.js → clean-2RNCTDBT.js} +40 -27
  107. package/dist/cli.js +69 -67
  108. package/dist/{cloud-NA3J4XW2.js → cloud-NFIKESNZ.js} +4 -4
  109. package/dist/{cloudrun-4MHOF7UT.js → cloudrun-7224BCX3.js} +9 -9
  110. package/dist/commands/contrast-audit.browser.js +1 -1
  111. package/dist/{compare-ZR7XRPPT.js → compare-HL44MXVX.js} +76 -47
  112. package/dist/{compiler-MA2ELZPG.js → compiler-WF5QTXV7.js} +8 -7
  113. package/dist/{component-ZJSOPUAM.js → component-ZBZXSJBR.js} +3 -3
  114. package/dist/{compositions-WA5V2SHF.js → compositions-76P7LDDX.js} +19 -17
  115. package/dist/{contactSheet-CAGMKI3E.js → contactSheet-43ISAESM.js} +2 -2
  116. package/dist/{delete-UC427UEA.js → delete-4YZBYOHJ.js} +7 -7
  117. package/dist/{deploy-B5UO4UIK.js → deploy-UGUUGYLF.js} +1 -1
  118. package/dist/{deterministicFonts-EGAAE7QL.js → deterministicFonts-RO2TCMLZ.js} +3 -3
  119. package/dist/{dist-BPK37SAB.js → dist-5KKCRFPT.js} +5 -5
  120. package/dist/{dist-XGPSPKKP.js → dist-QQ26RUDV.js} +5 -4
  121. package/dist/{doctor-ZERCTKEK.js → doctor-GGVUK4NB.js} +20 -19
  122. package/dist/{events-DCOZQERS.js → events-OXPTHVDB.js} +4 -4
  123. package/dist/{events-CNIXB2QK.js → events-V2VU4J3B.js} +5 -5
  124. package/dist/{feedback-YBD5ITTY.js → feedback-HFZ5SCUK.js} +16 -16
  125. package/dist/{ffmpeg-V4BBFDTG.js → ffmpeg-3VHY7GO3.js} +13 -12
  126. package/dist/{figma-Z45ZYVGE.js → figma-7SEZTLBJ.js} +3 -3
  127. package/dist/fontLocalizeCli.js +14 -13
  128. package/dist/{get-23NXQWCD.js → get-Y2S2PXCM.js} +7 -7
  129. package/dist/{gpuPolicy-H6ABHVEB.js → gpuPolicy-UHPOWRV5.js} +11 -10
  130. package/dist/{grade-compare-ZPX2G3UV.js → grade-compare-4VTXSQM5.js} +38 -37
  131. package/dist/{gsapParserAcorn-SKODXC2N.js → gsapParserAcorn-OOTY2MVN.js} +2 -2
  132. package/dist/{help-EP4CDPLO.js → help-HXNOACHI.js} +1 -1
  133. package/dist/{history-E5OSXO74.js → history-XDJUI4LC.js} +39 -16
  134. package/dist/hyperframe.manifest.json +1 -1
  135. package/dist/hyperframe.runtime.iife.js +59 -59
  136. package/dist/hyperframes-player.global.js +3 -3
  137. package/dist/hyperframes-slideshow.global.js +1 -1
  138. package/dist/{info-2HHGSW5H.js → info-KYRI3EZV.js} +56 -22
  139. package/dist/{init-ENEG6RZT.js → init-IL7EWMT5.js} +38 -45
  140. package/dist/{inspect-PVQK4E2A.js → inspect-TBNH23UC.js} +36 -35
  141. package/dist/{installer-YGGLEOSF.js → installer-O2YMFSI4.js} +8 -8
  142. package/dist/{keyframes-UWSYS2SL.js → keyframes-4GF62KAJ.js} +13 -14
  143. package/dist/{lambda-L3LPXC2M.js → lambda-JFL6M4XZ.js} +11 -11
  144. package/dist/{layout-JVL4QREC.js → layout-7MAEFR65.js} +36 -35
  145. package/dist/{lint-JXQ72DDB.js → lint-4AYHKYAM.js} +23 -16
  146. package/dist/{lintProject-F7IC7WY4.js → lintProject-52SLJPRC.js} +5 -4
  147. package/dist/{list-UFMLM3VV.js → list-3DP3D3MW.js} +7 -7
  148. package/dist/{login-CKGMWQJN.js → login-T54WQYRQ.js} +7 -7
  149. package/dist/{logout-DDC4QLVK.js → logout-JYFWWUGK.js} +3 -3
  150. package/dist/{manager-UHWEKPXC.js → manager-MZIJY73J.js} +3 -3
  151. package/dist/{manager-U6OP3EXB.js → manager-QROK2IH3.js} +14 -13
  152. package/dist/{media-treatment-MFMEWCDY.js → media-treatment-4CXF7MSG.js} +20 -19
  153. package/dist/{models-QA3TJ75Y.js → models-IS3I6JKU.js} +18 -17
  154. package/dist/{motionShot-NV2OPJHD.js → motionShot-DVYJZOTQ.js} +21 -20
  155. package/dist/{normalize-3AYFSN2F.js → normalize-FASIPBUM.js} +1 -1
  156. package/dist/{normalize-audio-JWJRUKK2.js → normalize-audio-4527JIK4.js} +12 -8
  157. package/dist/{open-PTJNDRER.js → open-5JE46SAX.js} +18 -18
  158. package/dist/{parakeetRunner-B5FCWWOO.js → parakeetRunner-7JIJGJJ7.js} +20 -19
  159. package/dist/{pipeline-N26NA6ZG.js → pipeline-YEN3WFD2.js} +15 -14
  160. package/dist/{play-45D6X6TV.js → play-WFX67I7M.js} +27 -26
  161. package/dist/{policies-MBWGLMWB.js → policies-GHVXA5PE.js} +1 -1
  162. package/dist/{preflight-MFOHPUOI.js → preflight-D377HVUZ.js} +15 -14
  163. package/dist/{present-IFBUDI4D.js → present-XTSEKAC7.js} +24 -23
  164. package/dist/{preview-MQRLXQOV.js → preview-5XH7EK6O.js} +27 -26
  165. package/dist/{producer-2QG7HLAW.js → producer-TFFYF4ZM.js} +1 -1
  166. package/dist/{projectConfig-I4FTZXHB.js → projectConfig-6YUJHMCL.js} +10 -10
  167. package/dist/{publication-3GOFXCGU.js → publication-JK33Y55E.js} +5 -5
  168. package/dist/{publish-3B2TZCFH.js → publish-JHDGXWXU.js} +18 -17
  169. package/dist/{refresh-RXTOPRBB.js → refresh-USSFPJAU.js} +3 -3
  170. package/dist/{remove-background-RK4BJDBF.js → remove-background-P44MYAPJ.js} +16 -15
  171. package/dist/{render-BV6FWFX3.js → render-HJ34EGMN.js} +8 -8
  172. package/dist/{render-PW3XGS7B.js → render-RBINWWP5.js} +42 -41
  173. package/dist/{render-SJ4HFPFU.js → render-RJ3I4E3A.js} +26 -25
  174. package/dist/{render-batch-GKX54O6N.js → render-batch-3D6XQYUC.js} +9 -9
  175. package/dist/renderSetupWorker.js +9 -8
  176. package/dist/{resolver-RQJ7CNXD.js → resolver-HCLTFZUW.js} +7 -7
  177. package/dist/{screenshotCapture-UBY6TT75.js → screenshotCapture-I5EDCITF.js} +6 -3
  178. package/dist/{sherpa-XZPG7QFF.js → sherpa-IPOUJM6Q.js} +19 -18
  179. package/dist/skills/hyperframes/references/skill-lifecycle.md +8 -4
  180. package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
  181. package/dist/{skills-EYLB2V6F.js → skills-P67QEERC.js} +13 -75
  182. package/dist/{skillsUpdateCheck-TE6K5ROM.js → skillsUpdateCheck-IFMLRVIF.js} +5 -5
  183. package/dist/{slideshow-YTWATJRT.js → slideshow-SJGK4RQS.js} +1 -1
  184. package/dist/{snapshot-FE4T3SCN.js → snapshot-4YM4NNWJ.js} +48 -45
  185. package/dist/{src-SEJ7LNNB.js → src-DCD3YMXX.js} +13 -12
  186. package/dist/{src-ZOXSEJCD.js → src-SSV66L3F.js} +14 -9
  187. package/dist/{staticProjectServer-LSVIRDRO.js → staticProjectServer-C7PPGLEQ.js} +22 -21
  188. package/dist/{status-CM7IQTU2.js → status-H5WLKQDS.js} +3 -3
  189. package/dist/studio/assets/{hyperframes-player-Bv9hQ3v7.js → hyperframes-player-ChN3cOr0.js} +3 -3
  190. package/dist/studio/assets/{index-Df14bh-L.js → index-BYbFcRR0.js} +1 -1
  191. package/dist/studio/assets/{index-D_QqfWhx.js → index-CHu83hHM.js} +122 -122
  192. package/dist/studio/assets/{index-CBO8uz7-.css → index-CYbvOVp-.css} +1 -1
  193. package/dist/studio/index.html +2 -2
  194. package/dist/{studio-api-SL2Z76NU.js → studio-api-6YZ7PIQR.js} +17 -14
  195. package/dist/{studioServer-BADWVIHU.js → studioServer-EWHSE4GC.js} +60 -59
  196. package/dist/{telemetry-QG5AANZ4.js → telemetry-4K6CPMNT.js} +2 -2
  197. package/dist/{telemetry-RN6VYEID.js → telemetry-GGLBHZRZ.js} +5 -5
  198. package/dist/{timeline-JBTCIPLU.js → timeline-NKHQJXJ2.js} +65 -43
  199. package/dist/{tokens-A7V7UHNK.js → tokens-FWNNDJ6R.js} +2 -2
  200. package/dist/{transcribe-NTUCJGFI.js → transcribe-TRPKXZ7L.js} +26 -25
  201. package/dist/{transcribe-E4BOSNM4.js → transcribe-VD2TMMC2.js} +17 -16
  202. package/dist/{tts-A2WILYGN.js → tts-5I2AJNLM.js} +1 -1
  203. package/dist/{updateCheck-M7UAYLUR.js → updateCheck-CUPS6LU3.js} +4 -4
  204. package/dist/{upgrade-A2COSIMB.js → upgrade-23XO6MEX.js} +4 -4
  205. package/dist/{urlDownloader-MBSQYART.js → urlDownloader-YOAOONCK.js} +10 -9
  206. package/dist/{validate-NODZYBHY.js → validate-BWIW24G5.js} +30 -29
  207. package/dist/{video-LBCUUYK7.js → video-XRXJS4GC.js} +12 -11
  208. package/dist/warmCheck.js +43 -42
  209. package/package.json +2 -1
  210. package/dist/chunk-I5JRXMCV.js +0 -6077
  211. package/dist/chunk-LM265QNK.js +0 -3896
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-MRF4AMKD.js";
10
10
  import {
11
11
  loadSharp
12
- } from "./chunk-QH3T4WI2.js";
12
+ } from "./chunk-EXAX37XR.js";
13
13
 
14
14
  // src/capture/contactSheet.ts
15
15
  import { readdirSync, readFileSync, unlinkSync, existsSync } from "fs";
@@ -29,8 +29,8 @@ async function createContactSheet(imagePaths, outputPath, opts = {}) {
29
29
  if (files.length === 0) return null;
30
30
  const sharp = await loadSharp("contact sheets");
31
31
  const firstMeta = await sharp(files[0]).metadata();
32
- const srcW = firstMeta.width || 1920;
33
- const srcH = firstMeta.height || 1080;
32
+ const srcW = firstMeta.autoOrient.width || 1920;
33
+ const srcH = firstMeta.autoOrient.height || 1080;
34
34
  const scale = cellWidth / srcW;
35
35
  const cellW = cellWidth;
36
36
  const cellH = Math.round(srcH * scale);
@@ -44,7 +44,7 @@ async function createContactSheet(imagePaths, outputPath, opts = {}) {
44
44
  const row = Math.floor(i / cols);
45
45
  const x = padding + col * (cellW + padding);
46
46
  const y = padding + row * (cellH + labelH + padding);
47
- const resized = await sharp(files[i]).resize(cellW, cellH, { fit: "contain", background: { r: 26, g: 26, b: 26 } }).toBuffer();
47
+ const resized = await sharp(files[i]).autoOrient().resize(cellW, cellH, { fit: "contain", background: { r: 26, g: 26, b: 26 } }).toBuffer();
48
48
  overlays.push({ input: resized, left: x, top: y + labelH });
49
49
  let labelText = `${i + 1}`;
50
50
  if (labelMode === "filename") {
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-442JNXRM.js";
10
10
  import {
11
11
  quantizePreviewProxyBox
12
- } from "./chunk-GM3WIOO6.js";
12
+ } from "./chunk-MGBUWPXX.js";
13
13
 
14
14
  // src/utils/compositionViewport.ts
15
15
  var DEFAULT_VIEWPORT = { width: 1920, height: 1080 };
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  VERSION
9
- } from "./chunk-MSM6VRQ4.js";
9
+ } from "./chunk-3FV5BVWS.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";
@@ -10,14 +10,14 @@ import {
10
10
  } from "./chunk-MRF4AMKD.js";
11
11
  import {
12
12
  loadSharp
13
- } from "./chunk-QH3T4WI2.js";
13
+ } from "./chunk-EXAX37XR.js";
14
14
  import {
15
15
  createCaptureDownloadBudget,
16
16
  readBoundedResponse
17
17
  } from "./chunk-AWDFDFI3.js";
18
18
  import {
19
19
  isBlockedNetworkHost
20
- } from "./chunk-NMDUSCCE.js";
20
+ } from "./chunk-QX4TB4NH.js";
21
21
  import {
22
22
  DOMParser,
23
23
  parseHTML
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-NMDUSCCE.js";
11
+ } from "./chunk-QX4TB4NH.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-GM3WIOO6.js";
14
+ } from "./chunk-MGBUWPXX.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-SDYDNHEE.js";
@@ -7,29 +7,29 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  RegistryCompatibilityError,
9
9
  gateRegistryItemsCompatibility
10
- } from "./chunk-WJEVUPVD.js";
10
+ } from "./chunk-XF77MK3J.js";
11
11
  import {
12
12
  DEFAULT_PROJECT_CONFIG,
13
13
  createProjectConfig,
14
14
  loadProjectConfig,
15
15
  projectConfigPath,
16
16
  recordProjectRegistryItems
17
- } from "./chunk-JJJCFKMF.js";
17
+ } from "./chunk-5IPKQHOL.js";
18
18
  import {
19
19
  resolveItemWithDependencies,
20
20
  resolveItemsByTag
21
- } from "./chunk-3XI7MIZB.js";
21
+ } from "./chunk-J2BSUF6X.js";
22
22
  import {
23
23
  InvalidVariableValuesError,
24
24
  prepareItem,
25
25
  publishItem
26
- } from "./chunk-TRZVS6TL.js";
26
+ } from "./chunk-T6O5OLN2.js";
27
27
  import {
28
28
  DEFAULT_REGISTRY_URL
29
- } from "./chunk-LBNEH6IQ.js";
29
+ } from "./chunk-32NB4VMH.js";
30
30
  import {
31
31
  trackRegistryItemAdded
32
- } from "./chunk-TFGO5YMI.js";
32
+ } from "./chunk-BV6YE455.js";
33
33
  import {
34
34
  defineCommand
35
35
  } from "./chunk-S3S4TGEH.js";
@@ -41,7 +41,7 @@ import {
41
41
  } from "./chunk-ZTZA4UWZ.js";
42
42
  import {
43
43
  ITEM_TYPE_DIRS
44
- } from "./chunk-GM3WIOO6.js";
44
+ } from "./chunk-MGBUWPXX.js";
45
45
  import {
46
46
  isProjectRootMissing,
47
47
  realpath
@@ -143,12 +143,13 @@ function buildSnippet(item, relativeTarget, values = null, compositionId) {
143
143
  }
144
144
  return "";
145
145
  }
146
- function tagAddJson(tag, results) {
146
+ function tagAddJson(tag, results, errors = []) {
147
147
  return {
148
- ok: true,
148
+ ok: errors.length === 0,
149
149
  tag,
150
150
  installed: results.map((r) => r.name),
151
- warnings: results.flatMap((r) => r.warnings.map((w) => `${r.name}: ${w}`))
151
+ warnings: results.flatMap((r) => r.warnings.map((w) => `${r.name}: ${w}`)),
152
+ errors
152
153
  };
153
154
  }
154
155
  function parseVariableValues(raw) {
@@ -434,6 +435,7 @@ var add_default = defineCommand({
434
435
  );
435
436
  }
436
437
  const results = [];
438
+ const errors = [];
437
439
  for (const item of items) {
438
440
  try {
439
441
  const result = await runAdd({
@@ -450,15 +452,18 @@ var add_default = defineCommand({
450
452
  if (!json) console.log(` ${c.success("\u2713")} ${result.name}`);
451
453
  } catch (err) {
452
454
  const reason = err instanceof Error ? err.message : String(err);
455
+ errors.push({ name: item.name, error: reason });
453
456
  if (!json) console.log(` ${c.error("\u2717")} ${item.name} (skipped: ${reason})`);
454
457
  }
455
458
  }
456
459
  if (json) {
457
- console.log(JSON.stringify(tagAddJson(args.name, results)));
460
+ console.log(JSON.stringify(tagAddJson(args.name, results, errors)));
458
461
  } else {
459
462
  console.log("");
460
- console.log(`${c.success("\u2713")} Installed ${results.length}/${items.length} blocks`);
463
+ const summary = `Installed ${results.length}/${items.length} blocks`;
464
+ console.log(`${errors.length > 0 ? c.error("\u2717") : c.success("\u2713")} ${summary}`);
461
465
  }
466
+ if (errors.length > 0) failCommand();
462
467
  }
463
468
  }
464
469
  });
@@ -5,8 +5,8 @@ var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
- updateNoticesSuppressed
9
- } from "./chunk-KAC2WR7P.js";
8
+ updateCheckDisabled
9
+ } from "./chunk-2HP5GIQ3.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -14,19 +14,12 @@ import {
14
14
  readConfig,
15
15
  readConfigFresh,
16
16
  writeConfig
17
- } from "./chunk-XUXGIA7H.js";
17
+ } from "./chunk-6NLPPKBO.js";
18
18
 
19
19
  // src/utils/skillsManifest.ts
20
20
  import { execFile } from "child_process";
21
21
  import { createHash } from "crypto";
22
- import {
23
- existsSync,
24
- readdirSync,
25
- readFileSync,
26
- renameSync,
27
- statSync,
28
- writeFileSync
29
- } from "fs";
22
+ import { existsSync, readdirSync, readFileSync, statSync } from "fs";
30
23
  import { homedir } from "os";
31
24
  import { isAbsolute, join, relative, resolve, sep } from "path";
32
25
  import { promisify } from "util";
@@ -253,7 +246,10 @@ function skillsAttributedToSource(lock, source) {
253
246
  if (!want || !lock?.skills) return [];
254
247
  return Object.entries(lock.skills).filter(([, e]) => repoSlug(e.source) === want || repoSlug(e.sourceUrl) === want).map(([name]) => name);
255
248
  }
256
- var SKILLS_CLI_LOCK_PATHS_VERIFIED_AT = "vercel-labs/skills@v1.5.13";
249
+ function isFromOtherSource(entry, source) {
250
+ const recorded = [repoSlug(entry?.source), repoSlug(entry?.sourceUrl)].filter(Boolean);
251
+ return recorded.length > 0 && !recorded.includes(repoSlug(source));
252
+ }
257
253
  function lockPathForScope(scope, opts) {
258
254
  if (scope === "project") return join(opts.cwd ?? process.cwd(), "skills-lock.json");
259
255
  const xdgStateHome = process.env.XDG_STATE_HOME;
@@ -271,34 +267,6 @@ function hyperframesSkillNames(opts) {
271
267
  const lockPath = lockPathForScope(opts.scope, { cwd: opts.cwd, home: opts.home });
272
268
  return skillsAttributedToSource(readSkillLock(lockPath), DEFAULT_REPO_SLUG);
273
269
  }
274
- var MANIFEST_COVERAGE_ROOT = "skills/";
275
- function manifestCoversSkill(entry) {
276
- const path = entry?.skillPath;
277
- return typeof path === "string" && path.startsWith(MANIFEST_COVERAGE_ROOT);
278
- }
279
- function detectRemoved(root, latest, opts) {
280
- const lock = readSkillLock(lockPathForScope(root.scope, opts));
281
- const attributed = skillsAttributedToSource(lock, latest.source);
282
- const dropped = attributed.filter((name) => manifestCoversSkill(lock?.skills?.[name]));
283
- const retired = RETIRED_SKILLS.filter(
284
- (name) => attributed.includes(name) || RETIRED_DOMAIN_SKILLS.includes(name) && existsSync(join(root.dir, name, "SKILL.md"))
285
- );
286
- const removed = [.../* @__PURE__ */ new Set([...dropped, ...retired])].filter((name) => !(name in latest.skills)).sort().map((name) => ({ name, status: "removed" }));
287
- return { removed, lockMissing: lock === null };
288
- }
289
- function pruneOrphanedLockEntries(names, scope, opts = {}) {
290
- const path = lockPathForScope(scope, opts);
291
- const lock = readSkillLock(path);
292
- if (!lock?.skills) return [];
293
- const pruned = names.filter((name) => name in lock.skills);
294
- if (pruned.length === 0) return [];
295
- for (const name of pruned) delete lock.skills[name];
296
- const mode = statSync(path).mode & 511;
297
- const tmp = `${path}.tmp`;
298
- writeFileSync(tmp, JSON.stringify(lock, null, 2), { mode });
299
- renameSync(tmp, path);
300
- return pruned;
301
- }
302
270
  function findRepoManifest(cwd = process.cwd()) {
303
271
  let dir = cwd;
304
272
  for (let i = 0; i < 16; i++) {
@@ -380,20 +348,24 @@ async function checkSkills(opts = {}) {
380
348
  const latest = await resolveLatestManifest(opts.source, opts.cwd, { canonical: opts.canonical });
381
349
  const skillNames = Object.keys(latest.skills);
382
350
  const root = locateInstall(skillNames, { dir: opts.dir, cwd: opts.cwd, home: opts.home });
383
- const installed = root ? hashInstalled(root, skillNames) : {};
384
- const diff = diffSkills(installed, latest);
385
- const removedResult = root ? detectRemoved(root, latest, { cwd: opts.cwd, home: opts.home }) : { removed: [], lockMissing: false };
386
- const { removed, lockMissing } = removedResult;
351
+ const lock = root ? readSkillLock(lockPathForScope(root.scope, opts)) : null;
352
+ const foreign = root ? skillNames.filter(
353
+ (name) => existsSync(join(root.dir, name, "SKILL.md")) && isFromOtherSource(lock?.skills?.[name], latest.source)
354
+ ) : [];
355
+ const ours = skillNames.filter((name) => !foreign.includes(name));
356
+ const installed = root ? hashInstalled(root, ours) : {};
357
+ const diff = diffSkills(installed, {
358
+ ...latest,
359
+ skills: Object.fromEntries(ours.map((name) => [name, latest.skills[name]]))
360
+ });
387
361
  return {
388
362
  location: root?.dir ?? null,
389
363
  agent: root?.agent ?? null,
390
364
  scope: root?.scope ?? null,
391
- // Removed skills also mean the install isn't reconciled with the manifest —
392
- // `skills update` now prunes them, so they count toward "update available".
393
- updateAvailable: diff.updateAvailable || removed.length > 0,
394
- summary: { ...diff.summary, removed: removed.length },
395
- skills: [...diff.skills, ...removed],
396
- lockMissing
365
+ updateAvailable: diff.updateAvailable,
366
+ summary: diff.summary,
367
+ skills: diff.skills,
368
+ foreign
397
369
  };
398
370
  }
399
371
 
@@ -404,8 +376,7 @@ function getSkillsUpdateMeta() {
404
376
  return {
405
377
  updateAvailable: config.skillsUpdateAvailable ?? false,
406
378
  outdated: config.skillsOutdatedCount ?? 0,
407
- missing: config.skillsMissingCount ?? 0,
408
- removed: config.skillsRemovedCount ?? 0
379
+ missing: config.skillsMissingCount ?? 0
409
380
  };
410
381
  }
411
382
  function cacheFresh(lastSkillsCheck, now) {
@@ -421,7 +392,6 @@ async function refreshSkillsCache() {
421
392
  config.skillsUpdateAvailable = result.updateAvailable;
422
393
  config.skillsOutdatedCount = result.summary.outdated;
423
394
  config.skillsMissingCount = result.summary.coreMissing;
424
- config.skillsRemovedCount = result.summary.removed;
425
395
  writeConfig(config);
426
396
  }
427
397
  }
@@ -432,17 +402,19 @@ function invalidateSkillsCache() {
432
402
  delete config.skillsUpdateAvailable;
433
403
  delete config.skillsOutdatedCount;
434
404
  delete config.skillsMissingCount;
435
- delete config.skillsRemovedCount;
436
405
  writeConfig(config);
437
406
  } catch {
438
407
  }
439
408
  }
409
+ function skillsNoticeOff() {
410
+ return process.env["HYPERFRAMES_SKIP_SKILLS"] === "1" || updateCheckDisabled();
411
+ }
440
412
  function skillsCheckDue() {
441
- if (process.env["HYPERFRAMES_SKIP_SKILLS"] === "1" || updateNoticesSuppressed()) return false;
413
+ if (skillsNoticeOff()) return false;
442
414
  return !cacheFresh(readConfig().lastSkillsCheck, Date.now());
443
415
  }
444
416
  function skillsNoticeText(meta) {
445
- const total = meta.outdated + meta.missing + meta.removed;
417
+ const total = meta.outdated + meta.missing;
446
418
  if (total < 1) return null;
447
419
  const noun = total === 1 ? "skill" : "skills";
448
420
  return `
@@ -452,7 +424,7 @@ function skillsNoticeText(meta) {
452
424
  `;
453
425
  }
454
426
  function printSkillsUpdateNotice() {
455
- if (process.env["HYPERFRAMES_SKIP_SKILLS"] === "1" || updateNoticesSuppressed()) return;
427
+ if (skillsNoticeOff()) return;
456
428
  const text = skillsNoticeText(getSkillsUpdateMeta());
457
429
  if (text) process.stderr.write(text);
458
430
  }
@@ -463,9 +435,7 @@ export {
463
435
  RETIRED_SKILLS,
464
436
  retiredSkillNotice,
465
437
  presentSkills,
466
- SKILLS_CLI_LOCK_PATHS_VERIFIED_AT,
467
438
  hyperframesSkillNames,
468
- pruneOrphanedLockEntries,
469
439
  checkSkills,
470
440
  refreshSkillsCache,
471
441
  invalidateSkillsCache,
@@ -6,34 +6,35 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  redactHome
9
- } from "./chunk-DOOSC34Z.js";
9
+ } from "./chunk-AMZJFCOX.js";
10
10
  import "./chunk-Z27A7NUB.js";
11
11
  import "./chunk-5ETJX6WM.js";
12
- import "./chunk-TADJOIFW.js";
13
- import "./chunk-QH3T4WI2.js";
12
+ import "./chunk-KZOZN4PI.js";
13
+ import "./chunk-EXAX37XR.js";
14
14
  import "./chunk-6BEFEWFB.js";
15
- import "./chunk-GLG5JWLI.js";
15
+ import "./chunk-VRAXIQ6I.js";
16
16
  import {
17
17
  loadProducer
18
- } from "./chunk-JGTRVG32.js";
19
- import "./chunk-2WNVHZHA.js";
20
- import "./chunk-KHCTBZGJ.js";
18
+ } from "./chunk-7UZC4N62.js";
19
+ import "./chunk-2J3NA3OB.js";
20
+ import "./chunk-SK7TR7BL.js";
21
21
  import "./chunk-6JR2XUEE.js";
22
- import "./chunk-EI7FP7F3.js";
22
+ import "./chunk-FBVUAH7N.js";
23
23
  import {
24
24
  DEFAULT_HISTORY_ROOT,
25
25
  listProjectHistories,
26
- pruneGoneProjectHistories
27
- } from "./chunk-TMBUBLZB.js";
26
+ pruneGoneProjectHistories,
27
+ reclaimUncopiedBlobs
28
+ } from "./chunk-4HCJOFMB.js";
28
29
  import {
29
30
  CACHE_DIR_NAME,
30
31
  cleanupProxyCache
31
- } from "./chunk-COETAXRN.js";
32
+ } from "./chunk-7RSY7SZN.js";
32
33
  import "./chunk-ALVXFXUG.js";
33
34
  import {
34
35
  formatBytes
35
36
  } from "./chunk-K2FLNJVB.js";
36
- import "./chunk-7L37AB57.js";
37
+ import "./chunk-E3P3LJG6.js";
37
38
  import "./chunk-EOVYQ3IG.js";
38
39
  import {
39
40
  defineCommand
@@ -52,44 +53,45 @@ import {
52
53
  directorySizeBytes,
53
54
  gcExtractionCache,
54
55
  resolveExtractCacheDir
55
- } from "./chunk-NMDUSCCE.js";
56
+ } from "./chunk-QX4TB4NH.js";
56
57
  import "./chunk-IZCW2NKT.js";
57
- import "./chunk-GM3WIOO6.js";
58
+ import "./chunk-MGBUWPXX.js";
58
59
  import "./chunk-RQVDTPGD.js";
59
- import "./chunk-VYQYVYQ5.js";
60
- import "./chunk-LM265QNK.js";
60
+ import "./chunk-AEXVVABM.js";
61
+ import "./chunk-B2XLXD7V.js";
61
62
  import "./chunk-VC76R6W2.js";
62
63
  import "./chunk-X7HBSTCZ.js";
63
- import "./chunk-B2A56S5C.js";
64
+ import "./chunk-2MCXIY4B.js";
64
65
  import "./chunk-OFQWTKPW.js";
65
66
  import "./chunk-DPVXBVLL.js";
66
67
  import "./chunk-3GXQPCJC.js";
67
68
  import "./chunk-634HSJ3J.js";
68
69
  import "./chunk-FXMKHHPO.js";
69
- import "./chunk-CYBXXSC4.js";
70
- import "./chunk-DYAPHNV6.js";
70
+ import "./chunk-DIKAPMMF.js";
71
+ import "./chunk-RWGASWT7.js";
71
72
  import "./chunk-T6AGUTZJ.js";
72
73
  import "./chunk-XT6MXC7A.js";
73
74
  import "./chunk-4UMPIPCQ.js";
74
- import "./chunk-3NRB7YXW.js";
75
+ import "./chunk-2VXY3PEF.js";
75
76
  import "./chunk-VAS6HQX3.js";
76
77
  import "./chunk-6BNTGNGD.js";
77
- import "./chunk-RUOG4VB7.js";
78
+ import "./chunk-CZGHFATT.js";
79
+ import "./chunk-PKZ7RK5N.js";
78
80
  import "./chunk-MMQ52NIZ.js";
79
81
  import "./chunk-BSQ7XANM.js";
80
82
  import "./chunk-SDYDNHEE.js";
81
- import "./chunk-IXLUTE6N.js";
82
- import "./chunk-I5JRXMCV.js";
83
+ import "./chunk-3422KMTD.js";
84
+ import "./chunk-RXATE6FZ.js";
83
85
  import "./chunk-W2LGJSEN.js";
84
86
  import {
85
87
  withMeta
86
- } from "./chunk-KAC2WR7P.js";
88
+ } from "./chunk-2HP5GIQ3.js";
87
89
  import "./chunk-K4WIOZFP.js";
88
- import "./chunk-XUXGIA7H.js";
90
+ import "./chunk-6NLPPKBO.js";
89
91
  import "./chunk-WERLJGIC.js";
90
92
  import "./chunk-ISN5GRYI.js";
91
- import "./chunk-MSM6VRQ4.js";
92
- import "./chunk-KNU5COPB.js";
93
+ import "./chunk-3FV5BVWS.js";
94
+ import "./chunk-T2EUWCJE.js";
93
95
  import "./chunk-KGPLIH7B.js";
94
96
  import "./chunk-M2WBOQ2Q.js";
95
97
 
@@ -203,6 +205,17 @@ async function sweepHistories(sweep, historyRoot, tempDir) {
203
205
  bytes: history.bytes
204
206
  });
205
207
  }
208
+ const reclaimed = await reclaimUncopiedBlobs(historyRoot, {
209
+ dryRun: sweep.dryRun,
210
+ onError: (error) => recordError(sweep, error)
211
+ });
212
+ for (const history of reclaimed) {
213
+ sweep.result.removed.push({
214
+ what: "Video and audio copies in project history",
215
+ path: join(historyRoot, history.id, "blobs"),
216
+ bytes: history.bytes
217
+ });
218
+ }
206
219
  }
207
220
  function sweepExtractCache(sweep) {
208
221
  const extractCache = resolveExtractCacheDir().dir;