hyperframes 0.8.136 → 0.8.138

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 (182) hide show
  1. package/dist/{add-MD4CNRQV.js → add-IZQPSHT5.js} +15 -15
  2. package/dist/{animatedGifPrep-3AKQSXPU.js → animatedGifPrep-MQF3GRFW.js} +6 -6
  3. package/dist/appHistory-TH3TL6N6.js +31 -0
  4. package/dist/{asset-UPNW7262.js → asset-RNZX4ISG.js} +2 -2
  5. package/dist/{assetCataloger-KBN5LNK4.js → assetCataloger-5YRUY3PJ.js} +2 -2
  6. package/dist/{auth-63PKUA76.js → auth-LUELYGJ4.js} +2 -2
  7. package/dist/{autoUpdate-CLB47L2W.js → autoUpdate-ECMQWUU5.js} +2 -2
  8. package/dist/{backgroundChecks-JW7XF7JA.js → backgroundChecks-PBEJMSA3.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-VFXGGGJG.js → batchRender-2GXKBPFQ.js} +3 -3
  11. package/dist/{beats-3CO6EGBG.js → beats-AAAZVDOY.js} +14 -14
  12. package/dist/{benchmark-CYTMATA7.js → benchmark-EI767IB4.js} +12 -12
  13. package/dist/{browser-QMLZJM2K.js → browser-KAA2VXYH.js} +9 -9
  14. package/dist/{bundleWithLocalizedFonts-5ATL25BF.js → bundleWithLocalizedFonts-MWDYAPGB.js} +2 -2
  15. package/dist/{capture-UEJG6BUX.js → capture-IRRHK6BT.js} +2 -2
  16. package/dist/{capture-DYBK5LGE.js → capture-VYT5NQQI.js} +13 -13
  17. package/dist/{catalog-G773J4K4.js → catalog-FYTZ2ET6.js} +22 -22
  18. package/dist/catch-up-XH3OAKQR.js +123 -0
  19. package/dist/{check-NCXITJWK.js → check-MUMIOK5K.js} +38 -38
  20. package/dist/{checkBrowser-IJQ2WCOB.js → checkBrowser-LKSZFOU6.js} +36 -36
  21. package/dist/{chunk-2EAXUCCE.js → chunk-2NCHQUPX.js} +1 -1
  22. package/dist/{chunk-XT5P4QMO.js → chunk-3DKN5WKL.js} +31 -11
  23. package/dist/{chunk-XLO327OK.js → chunk-3F6YLT72.js} +11 -11
  24. package/dist/{chunk-V2J2ZWPR.js → chunk-5K33TNUJ.js} +2 -2
  25. package/dist/{chunk-JBI43NRR.js → chunk-7OLMGFDN.js} +3 -3
  26. package/dist/{chunk-N3KRRPL7.js → chunk-7Y5SMPRV.js} +3 -3
  27. package/dist/{chunk-SXE656MT.js → chunk-APMG37MX.js} +1 -1
  28. package/dist/{chunk-37EDNWLQ.js → chunk-ASPTQ6DT.js} +1 -1
  29. package/dist/chunk-DCAI5DBR.js +218 -0
  30. package/dist/{chunk-KZJPREW7.js → chunk-DJMXTKKK.js} +1 -1
  31. package/dist/{chunk-YDBQRLRI.js → chunk-DXHYACUC.js} +3 -3
  32. package/dist/{chunk-GULOKZLI.js → chunk-EDUBJPGL.js} +14 -9
  33. package/dist/{chunk-527WRFUQ.js → chunk-FSSMOTMS.js} +1 -1
  34. package/dist/{chunk-FTR6KLIG.js → chunk-GJGVYREG.js} +59 -226
  35. package/dist/{chunk-V26IB6L2.js → chunk-GNHJ4ONK.js} +2 -2
  36. package/dist/{chunk-BQIFI4GV.js → chunk-HUZYBV2Z.js} +1 -1
  37. package/dist/{chunk-ECAXTQGU.js → chunk-HXXX6N2G.js} +2 -2
  38. package/dist/{chunk-2BJCQN7K.js → chunk-I3BRUEKD.js} +1 -1
  39. package/dist/{chunk-BSU7EOWJ.js → chunk-IC5L6L7K.js} +1 -1
  40. package/dist/{chunk-P3UNVJXX.js → chunk-IRYC5BRO.js} +4 -4
  41. package/dist/{chunk-V32SGDX7.js → chunk-JCRJBB4E.js} +10 -10
  42. package/dist/{chunk-H4UIYRZZ.js → chunk-JOUVZO7M.js} +1 -1
  43. package/dist/{chunk-XZABUQTX.js → chunk-JYYOAKHS.js} +1 -1
  44. package/dist/{chunk-Z3EFUXL5.js → chunk-KBUUCAIZ.js} +6 -6
  45. package/dist/{chunk-RTURM45Q.js → chunk-KRLYIT22.js} +1 -1
  46. package/dist/{chunk-5K573LFX.js → chunk-L5E5ZN6G.js} +1 -1
  47. package/dist/{chunk-4AXZWUQ6.js → chunk-MIOBYUXT.js} +1 -1
  48. package/dist/{chunk-ZBNFAZQB.js → chunk-MKVKVMUH.js} +7 -7
  49. package/dist/{chunk-XE6S5CE6.js → chunk-OBC75KXL.js} +1 -1
  50. package/dist/{chunk-PGFP4FLW.js → chunk-P5WDMFBB.js} +405 -205
  51. package/dist/{chunk-WFZEW4AC.js → chunk-P75OFLZN.js} +2 -2
  52. package/dist/{chunk-OSSVNAI5.js → chunk-PHRWQQOJ.js} +1 -1
  53. package/dist/{chunk-5ALWCRBU.js → chunk-PHXBLIKK.js} +10 -10
  54. package/dist/{chunk-OAF4XJOW.js → chunk-PXSM4HPB.js} +7 -2
  55. package/dist/{chunk-3E3WVNVP.js → chunk-QPOK6I32.js} +2 -2
  56. package/dist/{chunk-GK5W3SIJ.js → chunk-R6C6URKB.js} +3 -3
  57. package/dist/{chunk-EXNGSOQG.js → chunk-RH5VML6E.js} +12 -12
  58. package/dist/{chunk-BHOKLX4F.js → chunk-RLNB3JCY.js} +1 -1
  59. package/dist/{chunk-IQ3OUQ5Z.js → chunk-S3S2LSZX.js} +22 -2
  60. package/dist/{chunk-LO7L5PJ3.js → chunk-SDRKEYZV.js} +5 -5
  61. package/dist/{chunk-T5LPCY6I.js → chunk-SIMYRD5P.js} +27 -41
  62. package/dist/{chunk-VDQCNWQI.js → chunk-STA43FMY.js} +1 -1
  63. package/dist/{chunk-VNC6YQOC.js → chunk-SZITAGRK.js} +1 -1
  64. package/dist/chunk-UINDCCO7.js +3742 -0
  65. package/dist/{chunk-BWJ27MQP.js → chunk-UUMK6VME.js} +1 -1
  66. package/dist/{chunk-CG6OUDMX.js → chunk-VR5UQWGV.js} +3 -3
  67. package/dist/{chunk-RVG35AL2.js → chunk-W3KQCJVP.js} +217 -6
  68. package/dist/{chunk-X5HWXQPU.js → chunk-WCJGTLPF.js} +22 -10
  69. package/dist/{chunk-M5WGAAML.js → chunk-WH6PRFNX.js} +3 -3
  70. package/dist/{chunk-WTMA6JQD.js → chunk-XQODEVF3.js} +1 -1
  71. package/dist/{chunk-32QEFPDS.js → chunk-YGXLBX3N.js} +1 -1
  72. package/dist/{chunk-CYG3HXBE.js → chunk-YNBXJWSD.js} +1 -1
  73. package/dist/{clean-UCLCH4YA.js → clean-LZPDOAV4.js} +21 -21
  74. package/dist/cli.js +62 -52
  75. package/dist/{cloud-LVP33D4N.js → cloud-RVAH5NNL.js} +4 -4
  76. package/dist/{cloudrun-FA4XHPZS.js → cloudrun-NFGM6TRT.js} +3 -3
  77. package/dist/{compare-TOTN2CVX.js → compare-S3M5OAL2.js} +29 -29
  78. package/dist/{compiler-XZ654ZH2.js → compiler-SZ4GTYFB.js} +3 -3
  79. package/dist/{component-B5QZZJJA.js → component-PR2WZTQ4.js} +3 -3
  80. package/dist/{compositions-REMCVXXP.js → compositions-6RYXH2UA.js} +11 -11
  81. package/dist/{delete-H2P6PYT5.js → delete-EO7C3LQ6.js} +3 -3
  82. package/dist/{deterministicFonts-U2EXY2KQ.js → deterministicFonts-GTITFRSJ.js} +2 -2
  83. package/dist/{dist-QS5WEGBE.js → dist-OJTEVNJR.js} +1 -1
  84. package/dist/{dist-HVJAGLHF.js → dist-RVC3JTID.js} +2 -2
  85. package/dist/{doctor-HCGHEJDN.js → doctor-UTCCMN32.js} +12 -12
  86. package/dist/{events-2LS5WRYL.js → events-RCGWL4LI.js} +9 -9
  87. package/dist/{events-V5QLQAN4.js → events-RE3OR6KY.js} +8 -8
  88. package/dist/{feedback-WBOC7SAW.js → feedback-V7C64JIR.js} +12 -12
  89. package/dist/{figma-HRUWQ5FO.js → figma-26LOX5PV.js} +3 -3
  90. package/dist/fontLocalizeCli.js +10 -10
  91. package/dist/{get-FS5GMKBK.js → get-E2K2JRTV.js} +3 -3
  92. package/dist/{gpuPolicy-ON3RMSWD.js → gpuPolicy-Z3PQN6ZK.js} +6 -6
  93. package/dist/{grade-compare-G7Z5DWKW.js → grade-compare-OTZDU463.js} +26 -26
  94. package/dist/{help-27P7K7JZ.js → help-IRSQLNI5.js} +3 -2
  95. package/dist/{history-5E46VSDM.js → history-G44U6762.js} +18 -18
  96. package/dist/hyperframe-runtime.js +64 -182
  97. package/dist/hyperframe.manifest.json +1 -1
  98. package/dist/hyperframe.runtime.iife.js +64 -182
  99. package/dist/hyperframes-player.global.js +1 -1
  100. package/dist/{info-2ZYYJL3I.js → info-KXQ2TAHX.js} +11 -11
  101. package/dist/{init-ZI75FWLJ.js → init-7SXMLHJE.js} +27 -27
  102. package/dist/{inspect-YLQN7QL6.js → inspect-7JTINR25.js} +27 -27
  103. package/dist/{installer-DDJVY4TO.js → installer-RH4E6WXT.js} +4 -4
  104. package/dist/{keyframes-JONXVQWD.js → keyframes-PIV573S6.js} +12 -12
  105. package/dist/{lambda-LPLYOEYY.js → lambda-GO5HAA4S.js} +4 -4
  106. package/dist/{layout-ZP4WDRSA.js → layout-N2736OO3.js} +27 -27
  107. package/dist/{lint-XGMUBMLE.js → lint-WUXZ5WWZ.js} +14 -14
  108. package/dist/{lintProject-EPVG2EFE.js → lintProject-ANMPLBIT.js} +1 -1
  109. package/dist/{list-NBXJMDON.js → list-QF7AMX5F.js} +3 -3
  110. package/dist/{login-XIH4H4RH.js → login-6RGSXHQJ.js} +4 -4
  111. package/dist/{manager-GFN75DM4.js → manager-524RPYO7.js} +2 -2
  112. package/dist/{manager-67P2XFXQ.js → manager-DXB7JDHU.js} +2 -2
  113. package/dist/{media-treatment-QYKJDWHD.js → media-treatment-T4KDEDYW.js} +14 -14
  114. package/dist/{models-54NL5PRB.js → models-6JMNK3XI.js} +19 -12
  115. package/dist/{motionShot-Y4D7LHU4.js → motionShot-74WM7KF6.js} +12 -12
  116. package/dist/{normalize-audio-6RR6UGAJ.js → normalize-audio-ZZU36ZMD.js} +14 -14
  117. package/dist/{open-TYFT2DQC.js → open-G523K45B.js} +20 -13
  118. package/dist/{pipeline-P7QRGI5H.js → pipeline-AKDGCWRE.js} +10 -10
  119. package/dist/{play-IZXA4GO3.js → play-SHIGXVON.js} +30 -30
  120. package/dist/{preflight-X3XFRJPQ.js → preflight-6ERLORWK.js} +7 -7
  121. package/dist/{present-JS2KNZLT.js → present-QOYYNZCE.js} +19 -19
  122. package/dist/{preview-M6PED6DU.js → preview-KUXTDJL3.js} +26 -24
  123. package/dist/{producer-KQNJKM7F.js → producer-CH33JXHK.js} +1 -1
  124. package/dist/{projectConfig-EAAQYRMP.js → projectConfig-NKIPRWAE.js} +6 -6
  125. package/dist/{publication-H3G346EX.js → publication-4RBVVR5Z.js} +2 -2
  126. package/dist/{publish-NEGKIS35.js → publish-OLHR4Z4U.js} +12 -11
  127. package/dist/{remove-background-HU4S4HH5.js → remove-background-NPKZSIPY.js} +12 -12
  128. package/dist/{render-24OQFSYB.js → render-GYYGWYQC.js} +17 -17
  129. package/dist/{render-IZHBGVPP.js → render-P4NWFUS7.js} +29 -27
  130. package/dist/{render-F3CNO2IE.js → render-UOKPAJNH.js} +3 -3
  131. package/dist/{render-batch-63CBIJYR.js → render-batch-ZDG3EXSD.js} +3 -3
  132. package/dist/{renderCancellation-FT3JJ7GB.js → renderCancellation-QYQLWHZY.js} +6 -6
  133. package/dist/renderSetupWorker.js +1 -1
  134. package/dist/{resolver-YJJKOGQF.js → resolver-CWH3VVB7.js} +4 -4
  135. package/dist/{sherpa-3BQDMJPJ.js → sherpa-WEQE23S5.js} +130 -47
  136. package/dist/sherpaWorker.js +4 -8
  137. package/dist/skills/hyperframes/SKILL.md +2 -0
  138. package/dist/skills/hyperframes-cli/SKILL.md +1 -1
  139. package/dist/{skills-T2O7PD6Q.js → skills-BVONI6TC.js} +14 -14
  140. package/dist/{skillsUpdateCheck-VYEGOAEI.js → skillsUpdateCheck-KKDPTFM7.js} +3 -3
  141. package/dist/{snapshot-NLTL7ZOM.js → snapshot-PWZFJEDR.js} +36 -36
  142. package/dist/{src-ZPAJ44CP.js → src-HH4C5GZV.js} +9 -9
  143. package/dist/{src-CUR36DBE.js → src-YO7MAWGD.js} +5 -5
  144. package/dist/{staticProjectServer-WN4BSLI3.js → staticProjectServer-PR5INXSA.js} +14 -14
  145. package/dist/{status-6CGT2PJT.js → status-AK67DTED.js} +6 -6
  146. package/dist/studio/assets/{hyperframes-player-ukvUFqdg.js → hyperframes-player-B30apksz.js} +1 -1
  147. package/dist/studio/assets/{index-C-pD9_xY.js → index-BdjA0CLD.js} +147 -147
  148. package/dist/studio/assets/{index-syMK0_9C.css → index-CVd4O6eH.css} +1 -1
  149. package/dist/studio/assets/{index-CRRgIxsS.js → index-DIJuIBwI.js} +1 -1
  150. package/dist/studio/assets/{index-BY_myArg.js → index-DXVvWfQG.js} +1 -1
  151. package/dist/studio/{chunk-QRLKWENQ.js → chunk-4S3AYCOG.js} +2 -2
  152. package/dist/studio/{chunk-NM7BXNZ7.js → chunk-LOVBLSMR.js} +10 -4
  153. package/dist/studio/chunk-LOVBLSMR.js.map +1 -0
  154. package/dist/studio/index.html +2 -2
  155. package/dist/studio/index.js +2852 -2852
  156. package/dist/studio/index.js.map +1 -1
  157. package/dist/studio/player.js +2 -2
  158. package/dist/studio/styles.css +1 -1
  159. package/dist/studio/ui.d.ts +2 -1
  160. package/dist/studio/ui.js +1 -1
  161. package/dist/{studio-api-KTRRONOC.js → studio-api-NFJMFAB7.js} +13 -11
  162. package/dist/{studioServer-O6P3TBDJ.js → studioServer-TQZVCIEL.js} +51 -50
  163. package/dist/{synthesize-K62TIZWI.js → synthesize-77PTU6C5.js} +6 -6
  164. package/dist/{system-3BTZGJNK.js → system-ZWIBWWE6.js} +6 -6
  165. package/dist/{telemetry-G4QOG4OF.js → telemetry-63L2ORO3.js} +9 -9
  166. package/dist/templates/_shared/AGENTS.md +2 -0
  167. package/dist/templates/_shared/CLAUDE.md +2 -0
  168. package/dist/{timeline-JS5QNPLA.js → timeline-QKZQL5DJ.js} +18 -18
  169. package/dist/{tokens-JKLDRW7A.js → tokens-ELK62U4A.js} +2 -2
  170. package/dist/{transcribe-HC35FL6W.js → transcribe-OSK7HEOJ.js} +9 -9
  171. package/dist/{transcribe-CP6ZCDVR.js → transcribe-VKSXTM7K.js} +80 -24
  172. package/dist/{tts-P3LIPIL5.js → tts-FU35O6YB.js} +3 -3
  173. package/dist/{updateCheck-L2UJCCL4.js → updateCheck-PM4FEI7P.js} +2 -2
  174. package/dist/{upgrade-NW7YFVUM.js → upgrade-G635QCNO.js} +2 -2
  175. package/dist/{urlDownloader-A5TT3AFE.js → urlDownloader-MVYQTP73.js} +5 -5
  176. package/dist/{validate-D3ZH3JQ7.js → validate-AZTMI3HR.js} +16 -16
  177. package/dist/{video-USXMJDEZ.js → video-H56FK33V.js} +6 -6
  178. package/package.json +1 -1
  179. package/dist/chunk-SRXQEQWZ.js +0 -3742
  180. package/dist/studio/chunk-NM7BXNZ7.js.map +0 -1
  181. package/dist/{chunk-WJFCDDP7.js → chunk-R4QIE6UY.js} +3 -3
  182. /package/dist/studio/{chunk-QRLKWENQ.js.map → chunk-4S3AYCOG.js.map} +0 -0
@@ -21,20 +21,14 @@ import {
21
21
  splitElementInHtml,
22
22
  unwrapElementsFromHtml,
23
23
  wrapElementsInHtml
24
- } from "./chunk-GK5W3SIJ.js";
25
- import {
26
- atomicTempPath,
27
- createFileAtomically,
28
- isAtomicTempPath,
29
- replaceFileAtomically
30
- } from "./chunk-EOVYQ3IG.js";
24
+ } from "./chunk-R6C6URKB.js";
31
25
  import {
32
26
  DEFAULT_TARGET_LUFS,
33
27
  absoluteLoudnessPlan,
34
28
  measureAudio,
35
29
  requiredFfmpeg,
36
30
  resolveLocalAudioPath
37
- } from "./chunk-37EDNWLQ.js";
31
+ } from "./chunk-ASPTQ6DT.js";
38
32
  import {
39
33
  PROXY_PARAMS_VERSION,
40
34
  PROXY_PENDING_RETRY_AFTER_SECONDS,
@@ -42,9 +36,13 @@ import {
42
36
  ProxyCapacityError,
43
37
  ProxyTranscodeError,
44
38
  ProxyWaitTimeoutError,
39
+ STUDIO_MOTION_PATH,
45
40
  createMediaCodecProbeCache,
41
+ createStudioMotionRenderBodyScript,
46
42
  decideMediaProxyEligibility,
47
43
  isInHiddenOrVendorDir,
44
+ isPrivateProjectFile,
45
+ isPrivateProjectPath,
48
46
  isProxyVariantRequest,
49
47
  pinWithinProject,
50
48
  probeAssetCodec,
@@ -56,11 +54,18 @@ import {
56
54
  recordProxyRequest,
57
55
  resolveProxy,
58
56
  resolveProxyVariantRequest,
57
+ resolveWithinProject,
59
58
  scanProjectMediaCodecMap,
60
59
  shouldPrewarmProxy,
61
60
  waitForProxy,
62
61
  walkDir
63
- } from "./chunk-RVG35AL2.js";
62
+ } from "./chunk-W3KQCJVP.js";
63
+ import {
64
+ atomicTempPath,
65
+ createFileAtomically,
66
+ isAtomicTempPath,
67
+ replaceFileAtomically
68
+ } from "./chunk-EOVYQ3IG.js";
64
69
  import {
65
70
  findTimelineScript,
66
71
  parseGsapScriptAcorn
@@ -81,7 +86,7 @@ import {
81
86
  motionPathPluginUrl,
82
87
  parseFps,
83
88
  sameInstant
84
- } from "./chunk-BHOKLX4F.js";
89
+ } from "./chunk-RLNB3JCY.js";
85
90
  import {
86
91
  MagicString,
87
92
  VALID_CANVAS_RESOLUTIONS,
@@ -90,7 +95,7 @@ import {
90
95
  import {
91
96
  addScenePartsManifest,
92
97
  ensureHfIds
93
- } from "./chunk-PGFP4FLW.js";
98
+ } from "./chunk-P5WDMFBB.js";
94
99
  import {
95
100
  AFTER_FONTS_SCRIPT_TYPE,
96
101
  RUNTIME_BOOTSTRAP_ATTR,
@@ -104,20 +109,19 @@ import {
104
109
  resolveRateSpec,
105
110
  sourceTimeAt,
106
111
  stripEmbeddedRuntimeScripts
107
- } from "./chunk-SRXQEQWZ.js";
112
+ } from "./chunk-UINDCCO7.js";
108
113
  import {
109
114
  ProjectRootMissingError,
110
115
  folderGone,
111
116
  isProjectRootMissing,
112
117
  isSafePath,
113
118
  mkdirWithinProject,
114
- realpath,
115
- resolveWithinProject
119
+ realpath
116
120
  } from "./chunk-OFQWTKPW.js";
117
121
  import {
118
122
  isWithinProjectRoot,
119
123
  readProjectFile
120
- } from "./chunk-VDQCNWQI.js";
124
+ } from "./chunk-STA43FMY.js";
121
125
  import {
122
126
  FFPROBE_PATH_ENV,
123
127
  findFfBinary
@@ -138,7 +142,7 @@ import {
138
142
  simple
139
143
  } from "./chunk-2PSPARWP.js";
140
144
 
141
- // ../studio-server/dist/chunk-7ON477WG.js
145
+ // ../studio-server/dist/chunk-DG2VOIGR.js
142
146
  import { createHash } from "crypto";
143
147
  import { closeSync, constants, fstatSync, openSync, readFileSync, writeFileSync } from "fs";
144
148
  import { dirname, join } from "path";
@@ -222,7 +226,7 @@ function stampFileHfIds(filePath) {
222
226
  }
223
227
  }
224
228
 
225
- // ../studio-server/dist/chunk-36F5I56K.js
229
+ // ../studio-server/dist/chunk-K3H6HTVC.js
226
230
  import { randomUUID as randomUUID6 } from "crypto";
227
231
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
228
232
  import {
@@ -1963,7 +1967,7 @@ function clearElementScreenshotIsolation() {
1963
1967
  page.__hfThumbnailFaded = [];
1964
1968
  }
1965
1969
 
1966
- // ../studio-server/dist/chunk-WK3ZL3SN.js
1970
+ // ../studio-server/dist/chunk-G7FEKQ32.js
1967
1971
  import { resolve as resolve4 } from "path";
1968
1972
  function isAutoProxyEnabled(adapter) {
1969
1973
  return adapter.autoProxy !== false;
@@ -2008,193 +2012,6 @@ async function injectMediaCodecMap(html, adapter, projectDir, compSrcPath, probe
2008
2012
  return injectMediaCodecMapIntoHtml(html, projectDir, [{ html, compSrcPath }], probeCache);
2009
2013
  }
2010
2014
 
2011
- // ../studio-server/dist/chunk-4ETS2LXI.js
2012
- var STUDIO_MOTION_PATH = ".hyperframes/studio-motion.json";
2013
- function hasStudioMotionEntries(manifestContent) {
2014
- try {
2015
- const parsed = JSON.parse(manifestContent);
2016
- return Array.isArray(parsed.motions) && parsed.motions.length > 0;
2017
- } catch {
2018
- return false;
2019
- }
2020
- }
2021
- function createStudioMotionRenderBodyScript(manifestContent, options = {}) {
2022
- if (!manifestContent.trim() || !hasStudioMotionEntries(manifestContent)) return null;
2023
- return `(${studioMotionRenderRuntime.toString()})(${JSON.stringify(manifestContent)}, ${JSON.stringify(options.activeCompositionPath ?? null)});`;
2024
- }
2025
- function studioMotionRenderRuntime(manifestContent, activeCompositionPath) {
2026
- const STUDIO_MOTION_TIMELINE_ID = "studio-motion";
2027
- const STUDIO_MOTION_ATTR = "data-hf-studio-motion";
2028
- const ORIGINAL_TRANSFORM_ATTR = "data-hf-studio-motion-original-transform";
2029
- const ORIGINAL_OPACITY_ATTR = "data-hf-studio-motion-original-opacity";
2030
- const ORIGINAL_VISIBILITY_ATTR = "data-hf-studio-motion-original-visibility";
2031
- const objectRecord = (value) => value && typeof value === "object" ? value : null;
2032
- const finiteNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : null;
2033
- const runtimeWindow = window;
2034
- const parseMotionValues = (value) => {
2035
- const record = objectRecord(value);
2036
- if (!record) return null;
2037
- const parsed = {};
2038
- for (const key of ["x", "y", "scale", "rotation", "opacity", "autoAlpha"]) {
2039
- const next = finiteNumber(record[key]);
2040
- if (next != null) parsed[key] = next;
2041
- }
2042
- return Object.keys(parsed).length > 0 ? parsed : null;
2043
- };
2044
- const parseCustomEase = (value) => {
2045
- const record = objectRecord(value);
2046
- if (!record) return null;
2047
- const id = typeof record.id === "string" ? record.id.trim() : "";
2048
- const data = typeof record.data === "string" ? record.data.trim() : "";
2049
- if (!id || !data) return null;
2050
- return { id, data };
2051
- };
2052
- const parsedManifest = (() => {
2053
- try {
2054
- return objectRecord(JSON.parse(manifestContent));
2055
- } catch {
2056
- return null;
2057
- }
2058
- })();
2059
- const manifestMotions = Array.isArray(parsedManifest?.motions) ? parsedManifest.motions : [];
2060
- const sourceFileForElement = (element) => {
2061
- let current = element;
2062
- while (current) {
2063
- const sourceFile = current.getAttribute("data-composition-file") ?? current.getAttribute("data-composition-src");
2064
- if (sourceFile) return sourceFile;
2065
- current = current.parentElement;
2066
- }
2067
- return activeCompositionPath ?? "index.html";
2068
- };
2069
- const elementMatchesSourceFile = (element, sourceFile) => sourceFileForElement(element) === sourceFile;
2070
- const isHTMLElement2 = (element) => element instanceof HTMLElement;
2071
- const querySelectorCandidates = (selector) => {
2072
- const className = selector.match(/^\.([A-Za-z0-9_-]+)$/)?.[1];
2073
- if (className) {
2074
- return Array.from(document.getElementsByTagName("*")).filter(
2075
- (element) => isHTMLElement2(element) && element.classList.contains(className)
2076
- );
2077
- }
2078
- if (/^[A-Za-z][A-Za-z0-9-]*$/.test(selector)) {
2079
- return Array.from(document.getElementsByTagName(selector)).filter(isHTMLElement2);
2080
- }
2081
- return Array.from(document.querySelectorAll(selector)).filter(isHTMLElement2);
2082
- };
2083
- const resolveTarget = (targetRecord) => {
2084
- const sourceFile = typeof targetRecord.sourceFile === "string" ? targetRecord.sourceFile : "";
2085
- if (!sourceFile) return null;
2086
- const id = typeof targetRecord.id === "string" ? targetRecord.id : "";
2087
- if (id) {
2088
- const byId = document.getElementById(id);
2089
- if (isHTMLElement2(byId) && elementMatchesSourceFile(byId, sourceFile)) return byId;
2090
- }
2091
- const selector = typeof targetRecord.selector === "string" ? targetRecord.selector : "";
2092
- if (!selector) return null;
2093
- try {
2094
- const selectorIndex = Math.max(0, Math.floor(finiteNumber(targetRecord.selectorIndex) ?? 0));
2095
- return querySelectorCandidates(selector).filter(
2096
- (element) => elementMatchesSourceFile(element, sourceFile)
2097
- )[selectorIndex] ?? null;
2098
- } catch {
2099
- return null;
2100
- }
2101
- };
2102
- const restoreElement = (element) => {
2103
- runtimeWindow.gsap?.set?.(element, { clearProps: "transform,opacity,visibility" });
2104
- element.style.transform = element.getAttribute(ORIGINAL_TRANSFORM_ATTR) ?? "";
2105
- element.style.opacity = element.getAttribute(ORIGINAL_OPACITY_ATTR) ?? "";
2106
- element.style.visibility = element.getAttribute(ORIGINAL_VISIBILITY_ATTR) ?? "";
2107
- element.removeAttribute(STUDIO_MOTION_ATTR);
2108
- element.removeAttribute(ORIGINAL_TRANSFORM_ATTR);
2109
- element.removeAttribute(ORIGINAL_OPACITY_ATTR);
2110
- element.removeAttribute(ORIGINAL_VISIBILITY_ATTR);
2111
- };
2112
- const restoreStudioMotionElements = () => {
2113
- for (const element of Array.from(document.querySelectorAll(`[${STUDIO_MOTION_ATTR}]`))) {
2114
- if (isHTMLElement2(element)) restoreElement(element);
2115
- }
2116
- };
2117
- const readCurrentTime = () => {
2118
- try {
2119
- const playerTime = runtimeWindow.__player?.getTime?.();
2120
- if (typeof playerTime === "number" && Number.isFinite(playerTime)) {
2121
- return Math.max(0, playerTime);
2122
- }
2123
- } catch {
2124
- }
2125
- try {
2126
- const timelineTime = runtimeWindow.__timeline?.time?.();
2127
- if (typeof timelineTime === "number" && Number.isFinite(timelineTime)) {
2128
- return Math.max(0, timelineTime);
2129
- }
2130
- } catch {
2131
- }
2132
- return 0;
2133
- };
2134
- const resolveEase = (motion) => {
2135
- const fallback = typeof motion.ease === "string" && motion.ease.trim() ? motion.ease.trim() : "none";
2136
- const customEase = parseCustomEase(motion.customEase);
2137
- const customEasePlugin = runtimeWindow.CustomEase;
2138
- if (!customEase || typeof customEasePlugin?.create !== "function") return fallback;
2139
- try {
2140
- runtimeWindow.gsap?.registerPlugin?.(customEasePlugin);
2141
- customEasePlugin.create(customEase.id, customEase.data);
2142
- return customEase.id;
2143
- } catch {
2144
- return fallback;
2145
- }
2146
- };
2147
- const applyManifest = () => {
2148
- runtimeWindow.__timelines = runtimeWindow.__timelines ?? {};
2149
- runtimeWindow.__timelines[STUDIO_MOTION_TIMELINE_ID]?.kill?.();
2150
- delete runtimeWindow.__timelines[STUDIO_MOTION_TIMELINE_ID];
2151
- restoreStudioMotionElements();
2152
- const gsap = runtimeWindow.gsap;
2153
- if (!gsap?.timeline || manifestMotions.length === 0) return 0;
2154
- const timeline = gsap.timeline({ paused: true, defaults: { overwrite: "auto" } });
2155
- let applied = 0;
2156
- for (const motionValue of manifestMotions) {
2157
- const motion = objectRecord(motionValue);
2158
- if (!motion || motion.kind !== "gsap-motion") continue;
2159
- const targetRecord = objectRecord(motion.target);
2160
- if (!targetRecord) continue;
2161
- const target = resolveTarget(targetRecord);
2162
- if (!target || typeof timeline.fromTo !== "function") continue;
2163
- const start = finiteNumber(motion.start);
2164
- const duration = finiteNumber(motion.duration);
2165
- if (start == null || duration == null || start < 0 || duration <= 0) continue;
2166
- const from = parseMotionValues(motion.from);
2167
- const to = parseMotionValues(motion.to);
2168
- if (!from || !to) continue;
2169
- if (!target.hasAttribute(STUDIO_MOTION_ATTR)) {
2170
- target.setAttribute(ORIGINAL_TRANSFORM_ATTR, target.style.transform);
2171
- target.setAttribute(ORIGINAL_OPACITY_ATTR, target.style.opacity);
2172
- target.setAttribute(ORIGINAL_VISIBILITY_ATTR, target.style.visibility);
2173
- }
2174
- target.setAttribute(STUDIO_MOTION_ATTR, "true");
2175
- timeline.fromTo(
2176
- target,
2177
- from,
2178
- { ...to, duration, ease: resolveEase(motion), overwrite: "auto", immediateRender: false },
2179
- start
2180
- );
2181
- applied += 1;
2182
- }
2183
- if (applied === 0) {
2184
- timeline.kill?.();
2185
- return 0;
2186
- }
2187
- runtimeWindow.__timelines[STUDIO_MOTION_TIMELINE_ID] = timeline;
2188
- timeline.pause?.();
2189
- const currentTime = readCurrentTime();
2190
- if (typeof timeline.totalTime === "function") timeline.totalTime(currentTime, false);
2191
- else timeline.time?.(currentTime);
2192
- return applied;
2193
- };
2194
- runtimeWindow.__hfStudioMotionApply = applyManifest;
2195
- applyManifest();
2196
- }
2197
-
2198
2015
  // ../studio-server/dist/chunk-X62ASOGO.js
2199
2016
  function findUnsafeMutationValues(value, path = "body", options = {}) {
2200
2017
  if (value === null) {
@@ -5439,6 +5256,7 @@ import { createHash as createHash23 } from "crypto";
5439
5256
  // ../core/dist/studioPreviewMark.js
5440
5257
  var STUDIO_PREVIEW_MARK_META = "hyperframes-studio-preview";
5441
5258
  var STUDIO_PREVIEW_LAZY_ATTR = "data-hf-preview-lazy";
5259
+ var STUDIO_PREVIEW_ERRORS = "__hfPreviewErrors";
5442
5260
 
5443
5261
  // ../studio-server/dist/index.js
5444
5262
  import { readlinkSync as readlinkSync2 } from "fs";
@@ -5446,7 +5264,7 @@ import { dirname as dirname42, join as join7, parse as parse2, relative as relat
5446
5264
  import { readFileSync as readFileSync72 } from "fs";
5447
5265
  import { join as join9 } from "path";
5448
5266
  import { streamSSE } from "hono/streaming";
5449
- import { existsSync as existsSync6, readFileSync as readFileSync8, unlinkSync as unlinkSync3, readdirSync as readdirSync32, statSync as statSync5 } from "fs";
5267
+ import { existsSync as existsSync6, lstatSync as lstatSync32, readFileSync as readFileSync8, unlinkSync as unlinkSync3, readdirSync as readdirSync32, statSync as statSync5 } from "fs";
5450
5268
  import { join as join10 } from "path";
5451
5269
  import { HTTPException } from "hono/http-exception";
5452
5270
  import { open, stat as stat2 } from "fs/promises";
@@ -5522,7 +5340,7 @@ function registerProjectRoutes(api, adapter) {
5522
5340
  api.get("/projects/:id", async (c) => {
5523
5341
  const project = await adapter.resolveProject(c.req.param("id"));
5524
5342
  if (!project) return c.json({ error: "not found" }, 404);
5525
- const files = walkDir(project.dir);
5343
+ const files = walkDir(project.dir).filter((file) => !isPrivateProjectPath(file));
5526
5344
  const compositions = await filterCompositionFiles(project.dir, files);
5527
5345
  return c.json({ id: project.id, dir: project.dir, title: project.title, files, compositions });
5528
5346
  });
@@ -6805,7 +6623,7 @@ function updateReferences(projectDir, oldPath, newPath, isDirectory) {
6805
6623
  const rewrite = referenceRewriter(oldPath, newPath, isDirectory, projectPaths(projectDir));
6806
6624
  let updatedCount = 0;
6807
6625
  for (const file of textFiles) {
6808
- if (!isSafePath(projectDir, file)) continue;
6626
+ if (!isSafePath(projectDir, file) || isPrivateProjectFile(projectDir, file)) continue;
6809
6627
  const content = readableText(file);
6810
6628
  if (content === null) continue;
6811
6629
  const updated = rewrite(content);
@@ -7097,7 +6915,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
7097
6915
  let block = extractGsapScriptBlock(html);
7098
6916
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
7099
6917
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
7100
- const { GSAP_CDN } = await import("./dist-HVJAGLHF.js");
6918
+ const { GSAP_CDN } = await import("./dist-RVC3JTID.js");
7101
6919
  const bootstrap = [
7102
6920
  `<script src="${GSAP_CDN}"></script>`,
7103
6921
  "<script>",
@@ -7914,8 +7732,8 @@ async function foldAtomicCutFile(c, file, absPath, before, writer) {
7914
7732
  skippedSelectors: [...skippedSelectors]
7915
7733
  };
7916
7734
  }
7735
+ var MAX_UPLOAD_BYTES = 500 * 1024 * 1024;
7917
7736
  async function processUploadedFiles(formData, targetDir, projectDir) {
7918
- const MAX_UPLOAD_BYTES = 500 * 1024 * 1024;
7919
7737
  const uploaded = [];
7920
7738
  const skipped = [];
7921
7739
  const invalid = [];
@@ -7949,7 +7767,7 @@ async function processUploadedFiles(formData, targetDir, projectDir) {
7949
7767
  finalName = `${base} (${n})${ext}`;
7950
7768
  finalPath = resolve22(targetDir, finalName);
7951
7769
  }
7952
- if (!isSafePath(projectDir, finalPath)) continue;
7770
+ if (!isSafePath(projectDir, finalPath) || isPrivateProjectFile(projectDir, finalPath)) continue;
7953
7771
  const buffer = Buffer.from(await value.arrayBuffer());
7954
7772
  const validation = validateUploadedMediaBuffer(finalName, buffer);
7955
7773
  if (!validation.ok) {
@@ -8728,7 +8546,6 @@ function registerFileRoutes(api, adapter) {
8728
8546
  }
8729
8547
  return c.json({ ok: true, path: copyPath }, 201);
8730
8548
  });
8731
- const MAX_UPLOAD_BYTES = 500 * 1024 * 1024;
8732
8549
  api.post(
8733
8550
  "/projects/:id/upload",
8734
8551
  bodyLimit({
@@ -9102,15 +8919,17 @@ var GSAP_CDN_FALLBACK_SCRIPT = `<script ${GSAP_FALLBACK_ATTR}>
9102
8919
  if(loaded[file])return loaded[file];
9103
8920
  return loaded[file]=new Promise(function(ok,fail){
9104
8921
  var s=document.createElement("script");
9105
- s.src=cdnBase+file;s.onload=ok;s.onerror=fail;
8922
+ s.src=cdnBase+file;s.hfGsapFallback=true;s.onload=ok;s.onerror=fail;
9106
8923
  document.head.appendChild(s);
9107
8924
  });
9108
8925
  }
9109
8926
  document.addEventListener("error",function(e){
9110
8927
  var t=e.target;
9111
- if(!t||t.tagName!=="SCRIPT"||!t.src)return;
8928
+ if(!t||t.tagName!=="SCRIPT"||!t.src||t.hfGsapFallback)return;
9112
8929
  var m=t.src.match(/gsap[^/]*\\/dist\\/(.+\\.js)/);
9113
- if(m)loadFallback(m[1]);
8930
+ if(m)loadFallback(m[1]).catch(function(){
8931
+ reportError(new Error("GSAP could not load from "+t.src+" or "+cdnBase+m[1]+", so this preview's animations will not play."));
8932
+ });
9114
8933
  },true);
9115
8934
  })();
9116
8935
  </script>`;
@@ -9142,8 +8961,13 @@ function previewVariablesFromRequest(rawVariables) {
9142
8961
  return { raw: rawVariables, values: parse22.values };
9143
8962
  }
9144
8963
  var PREVIEW_CAPTURE_PARAM = "hf-capture";
8964
+ var EARLY_ERRORS_SCRIPT = `<script>(function(){var seen=window.${STUDIO_PREVIEW_ERRORS}=[];
8965
+ addEventListener("error",function(e){seen.push(e.message||String(e))});})();</script>`;
9145
8966
  function injectStudioPreviewAugmentations(html, adapter, projectDir, activeCompositionPath, capture) {
9146
- const marked = capture ? html : injectTagsAtHeadStart(lazyPreviewImages(html), `<meta name="${STUDIO_PREVIEW_MARK_META}">`);
8967
+ const marked = capture ? html : injectTagsAtHeadStart(
8968
+ lazyPreviewImages(html),
8969
+ `<meta name="${STUDIO_PREVIEW_MARK_META}">${EARLY_ERRORS_SCRIPT}`
8970
+ );
9147
8971
  return injectStudioMotionScript(
9148
8972
  injectMotionPathPluginIfNeeded(
9149
8973
  injectGsapCdnFallback(
@@ -9364,7 +9188,7 @@ ${etag}`;
9364
9188
  const subPath = requestSubPath(c.req.url, "projects/:id/preview");
9365
9189
  const candidate = resolve42(project.dir, subPath);
9366
9190
  const file = isWithinProjectRoot(project.dir, candidate) ? candidate : null;
9367
- if (!file) {
9191
+ if (!file || isPrivateProjectFile(project.dir, file)) {
9368
9192
  return c.text("not found", 404);
9369
9193
  }
9370
9194
  recordPreviewRead(project.dir, file);
@@ -9635,6 +9459,13 @@ function registerRenderRoutes(api, adapter) {
9635
9459
  ".mov": "video/quicktime"
9636
9460
  };
9637
9461
  const RENDER_EXTENSIONS = Object.keys(RENDER_MIME);
9462
+ const isPlainFile = (path) => {
9463
+ try {
9464
+ return lstatSync32(path).isFile();
9465
+ } catch {
9466
+ return false;
9467
+ }
9468
+ };
9638
9469
  function renderContentType(filePath) {
9639
9470
  const ext = RENDER_EXTENSIONS.find((e) => filePath.endsWith(e));
9640
9471
  return (ext && RENDER_MIME[ext]) ?? "video/mp4";
@@ -9642,7 +9473,7 @@ function registerRenderRoutes(api, adapter) {
9642
9473
  api.get("/render/:jobId/view", (c) => {
9643
9474
  const { jobId } = c.req.param();
9644
9475
  const job = renderJobs.get(jobId);
9645
- if (!job?.outputPath || !existsSync6(job.outputPath)) {
9476
+ if (!job?.outputPath || !isPlainFile(job.outputPath)) {
9646
9477
  return c.json({ error: "not found" }, 404);
9647
9478
  }
9648
9479
  const contentType = renderContentType(job.outputPath);
@@ -9660,7 +9491,7 @@ function registerRenderRoutes(api, adapter) {
9660
9491
  api.get("/render/:jobId/download", (c) => {
9661
9492
  const { jobId } = c.req.param();
9662
9493
  const job = renderJobs.get(jobId);
9663
- if (!job?.outputPath || !existsSync6(job.outputPath)) {
9494
+ if (!job?.outputPath || !isPlainFile(job.outputPath)) {
9664
9495
  return c.json({ error: "not found" }, 404);
9665
9496
  }
9666
9497
  const contentType = renderContentType(job.outputPath);
@@ -9695,7 +9526,7 @@ function registerRenderRoutes(api, adapter) {
9695
9526
  if (!filename) return c.json({ error: "missing filename" }, 400);
9696
9527
  const rendersDir = adapter.rendersDir(project);
9697
9528
  const fp = resolveWithinProject(rendersDir, filename);
9698
- if (!fp) return c.json({ error: "forbidden" }, 403);
9529
+ if (!fp || isPrivateProjectFile(project.dir, fp)) return c.json({ error: "forbidden" }, 403);
9699
9530
  if (!existsSync6(fp)) return c.json({ error: "not found" }, 404);
9700
9531
  const contentType = renderContentType(fp);
9701
9532
  const content = readFileSync8(fp);
@@ -9713,8 +9544,10 @@ function registerRenderRoutes(api, adapter) {
9713
9544
  if (!project) return c.json({ error: "not found" }, 404);
9714
9545
  const rendersDir = adapter.rendersDir(project);
9715
9546
  if (!existsSync6(rendersDir)) return c.json({ renders: [] });
9716
- const files = readdirSync32(rendersDir).filter((f) => f.endsWith(".mp4") || f.endsWith(".webm") || f.endsWith(".mov")).map((f) => {
9717
- const fp = join10(rendersDir, f);
9547
+ const files = readdirSync32(rendersDir).filter((f) => f.endsWith(".mp4") || f.endsWith(".webm") || f.endsWith(".mov")).flatMap((f) => {
9548
+ const fp = resolveWithinProject(rendersDir, f);
9549
+ return fp && !isPrivateProjectFile(project.dir, fp) ? [{ f, fp }] : [];
9550
+ }).map(({ f, fp }) => {
9718
9551
  const stat22 = statSync5(fp);
9719
9552
  const rid = f.replace(/\.(mp4|webm|mov)$/, "");
9720
9553
  const metaPath = join10(rendersDir, `${rid}.meta.json`);
@@ -9733,6 +9566,7 @@ function registerRenderRoutes(api, adapter) {
9733
9566
  return {
9734
9567
  id: rid,
9735
9568
  filename: f,
9569
+ path: fp,
9736
9570
  size: stat22.size,
9737
9571
  createdAt: stat22.mtimeMs,
9738
9572
  status,
@@ -9746,12 +9580,12 @@ function registerRenderRoutes(api, adapter) {
9746
9580
  id: file.id,
9747
9581
  status: file.status,
9748
9582
  progress: 100,
9749
- outputPath: join10(rendersDir, file.filename),
9583
+ outputPath: file.path,
9750
9584
  createdAt: file.createdAt
9751
9585
  });
9752
9586
  }
9753
9587
  }
9754
- return c.json({ renders: files });
9588
+ return c.json({ renders: files.map(({ path: _path, ...render }) => render) });
9755
9589
  });
9756
9590
  }
9757
9591
  var ThumbnailGenerationCoordinator = class {
@@ -11528,14 +11362,13 @@ export {
11528
11362
  getElementScreenshotClip,
11529
11363
  clearElementScreenshotIsolation,
11530
11364
  injectMediaCodecMapIntoHtml,
11531
- STUDIO_MOTION_PATH,
11532
- createStudioMotionRenderBodyScript,
11533
11365
  MIME_TYPES,
11534
11366
  getMimeType,
11535
11367
  buildSubCompositionHtml,
11536
11368
  compositionsAffectedBy,
11537
11369
  applyFileMutations,
11538
11370
  requestSubPath,
11371
+ MAX_UPLOAD_BYTES,
11539
11372
  affectsPreview,
11540
11373
  PREVIEW_BUNDLE_OPTIONS,
11541
11374
  createStudioApi,
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-N3KRRPL7.js";
11
+ } from "./chunk-7Y5SMPRV.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-BHOKLX4F.js";
14
+ } from "./chunk-RLNB3JCY.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-GK4AIFIH.js";
@@ -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-WFZEW4AC.js";
9
+ } from "./chunk-P75OFLZN.js";
10
10
 
11
11
  // src/registry/compatibility.ts
12
12
  import { compareVersions } from "compare-versions";
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-WTMA6JQD.js";
23
+ } from "./chunk-XQODEVF3.js";
24
24
  import {
25
25
  defineCommand
26
26
  } from "./chunk-S3S4TGEH.js";
@@ -221,7 +221,7 @@ var asset_default = defineCommand({
221
221
  rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
222
222
  );
223
223
  }
224
- const { trackFigmaImport } = await import("./telemetry-G4QOG4OF.js");
224
+ const { trackFigmaImport } = await import("./telemetry-63L2ORO3.js");
225
225
  trackFigmaImport({
226
226
  phase: "asset",
227
227
  reused: results.every((r) => r.reused),
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-AWDFDFI3.js";
15
15
  import {
16
16
  isBlockedNetworkHost
17
- } from "./chunk-N3KRRPL7.js";
17
+ } from "./chunk-7Y5SMPRV.js";
18
18
  import {
19
19
  DOMParser,
20
20
  parseHTML
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-PBN6GBJE.js";
16
16
  import {
17
17
  parseFps
18
- } from "./chunk-BHOKLX4F.js";
18
+ } from "./chunk-RLNB3JCY.js";
19
19
 
20
20
  // src/browser/windowsCrash.ts
21
21
  var STATUS_STACK_BUFFER_OVERRUN_DEC = "3221225595";
@@ -7,16 +7,16 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseFeedbackRating,
9
9
  trackRenderFeedback
10
- } from "./chunk-M5WGAAML.js";
10
+ } from "./chunk-WH6PRFNX.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-CG6OUDMX.js";
13
+ } from "./chunk-VR5UQWGV.js";
14
14
  import {
15
15
  c
16
16
  } from "./chunk-ZTZA4UWZ.js";
17
17
  import {
18
18
  detectAgentRuntime
19
- } from "./chunk-4AXZWUQ6.js";
19
+ } from "./chunk-MIOBYUXT.js";
20
20
  import {
21
21
  readConfig,
22
22
  writeConfig
@@ -83,7 +83,7 @@ async function maybePromptRenderFeedback(opts) {
83
83
  async function getDoctorSummary() {
84
84
  try {
85
85
  const [{ getSystemMeta }, { findFFmpeg }] = await Promise.all([
86
- import("./system-3BTZGJNK.js"),
86
+ import("./system-ZWIBWWE6.js"),
87
87
  import("./ffmpeg-QIUFEFTY.js")
88
88
  ]);
89
89
  const sys = getSystemMeta();
@@ -14,9 +14,13 @@ import {
14
14
  describeRejectedPythonOverride,
15
15
  hasPythonModules
16
16
  } from "./chunk-5ETJX6WM.js";
17
+ import {
18
+ OPTIONAL_PACKAGES,
19
+ installedOptionalPackageVersion
20
+ } from "./chunk-3DKN5WKL.js";
17
21
  import {
18
22
  runEnvironmentChecks
19
- } from "./chunk-BWJ27MQP.js";
23
+ } from "./chunk-UUMK6VME.js";
20
24
  import {
21
25
  c
22
26
  } from "./chunk-ZTZA4UWZ.js";
@@ -25,31 +29,27 @@ import {
25
29
  getFreeDiskMb,
26
30
  getShmSizeMb,
27
31
  getSystemMeta
28
- } from "./chunk-4AXZWUQ6.js";
32
+ } from "./chunk-MIOBYUXT.js";
29
33
  import {
30
34
  defineCommand
31
35
  } from "./chunk-S3S4TGEH.js";
32
36
  import {
33
37
  resolveExtractCacheDir
34
- } from "./chunk-N3KRRPL7.js";
38
+ } from "./chunk-7Y5SMPRV.js";
35
39
  import {
36
40
  getUpdateMeta,
37
41
  withMeta
38
- } from "./chunk-CYG3HXBE.js";
42
+ } from "./chunk-YNBXJWSD.js";
39
43
  import {
40
44
  CONFIG_PATH,
41
45
  withFileLock
42
46
  } from "./chunk-XUXGIA7H.js";
43
47
  import {
44
48
  VERSION
45
- } from "./chunk-WFZEW4AC.js";
49
+ } from "./chunk-P75OFLZN.js";
46
50
  import {
47
51
  normalizeErrorMessage
48
52
  } from "./chunk-KNU5COPB.js";
49
- import {
50
- OPTIONAL_PACKAGES,
51
- installedOptionalPackageVersion
52
- } from "./chunk-XT5P4QMO.js";
53
53
 
54
54
  // src/commands/doctor.ts
55
55
  import { execFileSync, execSync } from "child_process";
@@ -232,7 +232,7 @@ function checkEnvironment() {
232
232
  return { ok: true, detail: parts.join(" \xB7 ") };
233
233
  }
234
234
  async function checkWhisper() {
235
- const { findWhisper, getInstallInstructions } = await import("./manager-67P2XFXQ.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-DXB7JDHU.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-BHOKLX4F.js";
22
+ } from "./chunk-RLNB3JCY.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-OZUQF4NB.js";