hyperframes 0.8.149 → 0.8.151

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 (176) hide show
  1. package/dist/{add-MG53577L.js → add-QKZZG7A2.js} +12 -12
  2. package/dist/{animatedGifPrep-HV4ZFVPV.js → animatedGifPrep-YQDPYGOD.js} +7 -7
  3. package/dist/api.js +17 -17
  4. package/dist/{asset-3GIBXLLL.js → asset-3Q737Y4H.js} +2 -2
  5. package/dist/{assetCataloger-JJQ4JW2P.js → assetCataloger-BTHEBJJB.js} +3 -3
  6. package/dist/{auth-XQMT727H.js → auth-XL7EU3SO.js} +1 -1
  7. package/dist/{autoUpdate-CREZJGMU.js → autoUpdate-PJFLTQ3U.js} +2 -2
  8. package/dist/{backgroundChecks-K3S5QKR3.js → backgroundChecks-T5TIR5WK.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-42AKNX73.js → batchRender-NFLVIDB4.js} +4 -4
  11. package/dist/{beats-Y7IKETUS.js → beats-JU4GZ26R.js} +13 -13
  12. package/dist/{benchmark-22SAXSO5.js → benchmark-7U2YWLTW.js} +9 -9
  13. package/dist/{browser-ABNISCC3.js → browser-D57UPYDA.js} +5 -5
  14. package/dist/{bundleWithLocalizedFonts-OE5ZI4JE.js → bundleWithLocalizedFonts-26MXQOZG.js} +2 -2
  15. package/dist/{capture-DBNHO4WJ.js → capture-47BV25G3.js} +2 -2
  16. package/dist/{capture-HQG5W42I.js → capture-LT252COQ.js} +11 -11
  17. package/dist/{catalog-KICZFIDX.js → catalog-BEZXOV4O.js} +12 -12
  18. package/dist/{catch-up-ZCQUCI45.js → catch-up-KVV5X6BF.js} +4 -4
  19. package/dist/{check-TGXIICEF.js → check-6KQ433E6.js} +191 -55
  20. package/dist/{checkBrowser-3N23I56J.js → checkBrowser-PRDR6XBY.js} +172 -30
  21. package/dist/{chunk-GESJSXFH.js → chunk-35PWWBGZ.js} +1 -1
  22. package/dist/{chunk-62RUQJ5J.js → chunk-3SVC7SW4.js} +47 -21
  23. package/dist/{chunk-KMJLHHBF.js → chunk-3ZPFRDEJ.js} +1 -1
  24. package/dist/{chunk-XHBX7QN6.js → chunk-4LE27ST4.js} +1 -1
  25. package/dist/{chunk-DUUFDLC4.js → chunk-4MLYMDQ4.js} +1 -1
  26. package/dist/{chunk-WX7VCRM7.js → chunk-4PKQEKAI.js} +2 -2
  27. package/dist/{chunk-ZKDKFJCK.js → chunk-4YZYYP7V.js} +5 -5
  28. package/dist/{chunk-XPQSL5VS.js → chunk-54DMWFQZ.js} +8 -1
  29. package/dist/{chunk-NKM53WMI.js → chunk-BRF3O35X.js} +7 -7
  30. package/dist/chunk-DHPFXAUF.js +165 -0
  31. package/dist/{chunk-CT6ZQRLD.js → chunk-DIOBKUBV.js} +2 -2
  32. package/dist/{chunk-SP6XL3NP.js → chunk-FAIYEIZ4.js} +1 -1
  33. package/dist/{chunk-CYFFYK2F.js → chunk-FLVI7FHU.js} +1 -1
  34. package/dist/{chunk-JDB65PPT.js → chunk-GNTVYF7E.js} +8 -7
  35. package/dist/{chunk-KQHJKJ3V.js → chunk-HVXRYMGQ.js} +1 -1
  36. package/dist/{chunk-CNPJHUOX.js → chunk-IP73NMQT.js} +11 -11
  37. package/dist/{chunk-VX4AL2FQ.js → chunk-IPDS2SWI.js} +1 -1
  38. package/dist/{chunk-LACFOFWX.js → chunk-IZ7L6V76.js} +1 -1
  39. package/dist/{chunk-VC7JBNPS.js → chunk-IZPN423R.js} +481 -68
  40. package/dist/{chunk-P7NTODQE.js → chunk-KQGWP4KH.js} +2 -2
  41. package/dist/{chunk-SFUBSJFP.js → chunk-KXX6NLOT.js} +1 -1
  42. package/dist/{chunk-K44HCHZN.js → chunk-L3N7RJHS.js} +3 -3
  43. package/dist/{chunk-MI6U3OIN.js → chunk-L6RIMCMG.js} +3 -3
  44. package/dist/{chunk-7IEGPJ4P.js → chunk-LBT4AMSF.js} +1 -1
  45. package/dist/{chunk-AY2BONTF.js → chunk-LKQS72D5.js} +1 -1
  46. package/dist/{chunk-VXM4BH23.js → chunk-N3I6RAOR.js} +136 -54
  47. package/dist/{chunk-Q2Y5OZCY.js → chunk-N4IXP3MY.js} +2 -2
  48. package/dist/{chunk-LCILS4AF.js → chunk-O3DUX6P2.js} +5 -5
  49. package/dist/{chunk-MXB6CWVH.js → chunk-OSAH7S5M.js} +1 -1
  50. package/dist/{chunk-YDRX42P3.js → chunk-OZ4K46OV.js} +3 -3
  51. package/dist/{chunk-ZK3BQXHC.js → chunk-POEEDPJI.js} +1 -1
  52. package/dist/{chunk-LTJDUBSQ.js → chunk-PUIELIFA.js} +1 -1
  53. package/dist/chunk-QBYHNRHU.js +3795 -0
  54. package/dist/{chunk-KUTT3JXL.js → chunk-QF7AE3DB.js} +3 -3
  55. package/dist/{chunk-BNYRD7PQ.js → chunk-QLGBNGXC.js} +2 -2
  56. package/dist/{chunk-U7SASZC5.js → chunk-RJRGR5KF.js} +10 -10
  57. package/dist/{chunk-4S4VUXW3.js → chunk-RRBKEHST.js} +1 -1
  58. package/dist/{chunk-TPIG7ZBX.js → chunk-RYL6ZIJP.js} +6 -6
  59. package/dist/{chunk-L274XRWA.js → chunk-S22FKF6G.js} +6 -3
  60. package/dist/{chunk-OMBSUO4T.js → chunk-TCWMDCBX.js} +2 -2
  61. package/dist/{chunk-YA62XGXS.js → chunk-UJKQWGFF.js} +1 -1
  62. package/dist/{chunk-M5B42RL5.js → chunk-WUUOFMHU.js} +3 -3
  63. package/dist/{chunk-PR7QQBSC.js → chunk-XGLNQDLN.js} +1 -1
  64. package/dist/{chunk-VGCEMOQA.js → chunk-XKKBIFE5.js} +7 -7
  65. package/dist/{chunk-2HWB4TCI.js → chunk-XNDXENJQ.js} +27 -12
  66. package/dist/{chunk-AHBYQRGI.js → chunk-XQKVEQNY.js} +2 -2
  67. package/dist/{chunk-ZFN6GQU4.js → chunk-XXPYZBZ3.js} +1 -1
  68. package/dist/{chunk-K4RIT6PX.js → chunk-XYHBVSWD.js} +2 -2
  69. package/dist/{chunk-RMIFSBRV.js → chunk-YEBKEWKB.js} +1 -1
  70. package/dist/{chunk-CZQLCBWY.js → chunk-YG2Y55KF.js} +1 -1
  71. package/dist/{chunk-B3XLIBFL.js → chunk-YIJMVFEJ.js} +1 -1
  72. package/dist/{chunk-K35E45SI.js → chunk-YZTVHRJ2.js} +1 -1
  73. package/dist/{chunk-Y475GD4L.js → chunk-ZD3RDNZI.js} +1 -1
  74. package/dist/{chunk-QIJLIULK.js → chunk-ZGCRVM5M.js} +2 -2
  75. package/dist/{clean-6QP7VAV4.js → clean-RLTHFTQA.js} +18 -18
  76. package/dist/cli.js +52 -52
  77. package/dist/{cloud-5TME5ROM.js → cloud-Q5TGBTW3.js} +4 -4
  78. package/dist/{cloudrun-F5VVCVF5.js → cloudrun-4UZF74MV.js} +4 -4
  79. package/dist/{compare-XPY2EXX6.js → compare-Q5UNR2V4.js} +25 -25
  80. package/dist/{compiler-NPD3MYMO.js → compiler-ZXT27Z62.js} +4 -4
  81. package/dist/{component-OPVL3PUX.js → component-H734P32V.js} +3 -3
  82. package/dist/{compositions-WSEOI454.js → compositions-YEHDSTDR.js} +11 -11
  83. package/dist/{delete-SLMH57VH.js → delete-LDBMPWRT.js} +2 -2
  84. package/dist/{dist-CUIR3GFX.js → dist-7JXLFD6U.js} +3 -3
  85. package/dist/{dist-HUMFCJ6T.js → dist-RGE4QASU.js} +1 -1
  86. package/dist/{doctor-QZW3EKIH.js → doctor-XNJFIWJ7.js} +13 -13
  87. package/dist/{events-FIFWFRGC.js → events-G6UFLNXR.js} +2 -2
  88. package/dist/{events-6C3ZG7LS.js → events-UKCPUWMH.js} +3 -3
  89. package/dist/{feedback-VKXM7YJ5.js → feedback-CK3KZ7DE.js} +7 -7
  90. package/dist/{ffmpeg-TZB5WAYE.js → ffmpeg-MJFMBBSF.js} +2 -2
  91. package/dist/{figma-3UYNADNA.js → figma-3D5C737B.js} +3 -3
  92. package/dist/fontLocalizeCli.js +9 -9
  93. package/dist/{get-VH7VMRVX.js → get-QGTQUWFT.js} +2 -2
  94. package/dist/{gpuPolicy-M2JZGGVW.js → gpuPolicy-G5QAQDYF.js} +7 -7
  95. package/dist/{grade-compare-OSC2YQWN.js → grade-compare-XIHOM62P.js} +27 -27
  96. package/dist/{help-DCBFEZPT.js → help-U5UBXT52.js} +1 -1
  97. package/dist/{history-XYJMQE26.js → history-5J73QZSA.js} +5 -5
  98. package/dist/hyperframe-runtime.js +65 -58
  99. package/dist/hyperframe.manifest.json +1 -1
  100. package/dist/hyperframe.runtime.iife.js +65 -58
  101. package/dist/hyperframes-player.global.js +3 -3
  102. package/dist/{info-YEHGENAH.js → info-RJHQQQUP.js} +8 -8
  103. package/dist/{init-64SML7PY.js → init-M6UQOYYC.js} +29 -29
  104. package/dist/{inspect-GFOQKRJI.js → inspect-PRQWDBTP.js} +26 -26
  105. package/dist/{installer-Q4MMZKLA.js → installer-ZL7UKYK5.js} +5 -5
  106. package/dist/{keyframes-ORYFWKBZ.js → keyframes-VMUJYTCQ.js} +6 -6
  107. package/dist/{lambda-DRMOJGTC.js → lambda-ON42DRQD.js} +5 -5
  108. package/dist/{layout-ZEQBE6UQ.js → layout-QKBFVDVY.js} +26 -26
  109. package/dist/{lint-67KGFY63.js → lint-ZQHHL2SV.js} +7 -7
  110. package/dist/{lintProject-SSEXWCH6.js → lintProject-3Z6OJCSO.js} +1 -1
  111. package/dist/{list-T6OU5ARJ.js → list-YBRKIWGF.js} +2 -2
  112. package/dist/{login-2PXIGDP7.js → login-4B2YXGLB.js} +4 -4
  113. package/dist/{manager-ES2UFT4X.js → manager-X44GKUEL.js} +3 -3
  114. package/dist/{manager-GWU5J6RJ.js → manager-ZLJD3EAY.js} +2 -2
  115. package/dist/{media-treatment-NAAHID6M.js → media-treatment-5C5EJAAP.js} +12 -12
  116. package/dist/{models-P6XB6RWK.js → models-R7ZDWBJ6.js} +13 -13
  117. package/dist/{motionShot-7MHRIV6V.js → motionShot-ZHESZNUL.js} +14 -14
  118. package/dist/{normalize-audio-LWNFYR2F.js → normalize-audio-EVWZVTBM.js} +6 -6
  119. package/dist/{open-DAP5C7UD.js → open-TV6HT4UT.js} +4 -4
  120. package/dist/{parakeetRunner-3ZVFPOD4.js → parakeetRunner-YVVF4CG6.js} +14 -14
  121. package/dist/{pipeline-V4YJCPUX.js → pipeline-ETR5SEBS.js} +9 -9
  122. package/dist/{play-UDCESJO3.js → play-C6WONRZV.js} +19 -19
  123. package/dist/{preflight-JOD4OXGC.js → preflight-JYOX64YP.js} +4 -4
  124. package/dist/{present-DXTHBH3F.js → present-RANXTVPA.js} +15 -15
  125. package/dist/{preview-YHXKRXKB.js → preview-KF6UMBT2.js} +19 -19
  126. package/dist/{producer-343ENLAM.js → producer-CY2GXBWN.js} +1 -1
  127. package/dist/{projectConfig-YXKU3CTB.js → projectConfig-KPXCNMBM.js} +7 -7
  128. package/dist/{publication-ODXP3JI7.js → publication-Y36N4A7E.js} +3 -3
  129. package/dist/{publish-UEFBFGV3.js → publish-RCQJO35C.js} +9 -9
  130. package/dist/{remove-background-FMV6IDOH.js → remove-background-3ZMXVWLB.js} +10 -10
  131. package/dist/{render-ZTXNPRGF.js → render-FKVRCDT2.js} +58 -35
  132. package/dist/{render-N7QGX6RJ.js → render-PTNEFO5U.js} +9 -9
  133. package/dist/{render-SYC4RPGT.js → render-WUSTRMUD.js} +4 -4
  134. package/dist/{render-batch-SZRPCRUJ.js → render-batch-AQHU2JWZ.js} +4 -4
  135. package/dist/renderSetupWorker.js +4 -4
  136. package/dist/{resolver-7MYXNEAX.js → resolver-L5BDZJKU.js} +5 -5
  137. package/dist/{sherpa-M4Z2Q5Y2.js → sherpa-3S3ISG7G.js} +13 -13
  138. package/dist/skills/hyperframes/references/frame-worker-core.md +11 -9
  139. package/dist/skills/hyperframes/references/subagent-dispatch.md +1 -1
  140. package/dist/skills/media-use/audio/scripts/lib/tts.cleanup.test.mjs +175 -0
  141. package/dist/skills/media-use/audio/scripts/lib/tts.mjs +24 -19
  142. package/dist/skills/media-use/references/grading.md +1 -2
  143. package/dist/skills/media-use/references/meta.md +17 -17
  144. package/dist/skills/media-use/references/operations.md +6 -6
  145. package/dist/skills/media-use/references/setup-providers.md +3 -4
  146. package/dist/skills/media-use/scripts/lib/cutlist.mjs +9 -2
  147. package/dist/skills/media-use/scripts/lib/cutlist.test.mjs +12 -0
  148. package/dist/skills/media-use/scripts/lib/telemetry.mjs +4 -1
  149. package/dist/skills/media-use/scripts/lib/telemetry.test.mjs +20 -0
  150. package/dist/skills/media-use/scripts/transcript-cut.mjs +23 -4
  151. package/dist/skills/media-use/scripts/transcript-cut.test.mjs +224 -0
  152. package/dist/{skills-NEHNSHZK.js → skills-X4WQEKNF.js} +5 -5
  153. package/dist/{skillsUpdateCheck-O77QR72A.js → skillsUpdateCheck-UYCVHDZ6.js} +3 -3
  154. package/dist/{snapshot-GDVXFBVY.js → snapshot-YEYHQEZQ.js} +252 -141
  155. package/dist/{src-VMTHSARJ.js → src-2NN2WB6X.js} +10 -6
  156. package/dist/{src-PTIV7IVV.js → src-OLBDPEG6.js} +8 -8
  157. package/dist/{staticProjectServer-3D2NXQ6W.js → staticProjectServer-7H35NMWB.js} +15 -15
  158. package/dist/studio/assets/{hyperframes-player-C-2YwYre.js → hyperframes-player-DJt8E7k4.js} +1 -1
  159. package/dist/studio/assets/{index-ByJU5J6n.js → index-BGks9KLI.js} +131 -131
  160. package/dist/studio/assets/{index-BybGk67U.js → index-DWIHrAY2.js} +1 -1
  161. package/dist/studio/assets/{index-Cfs2r3fz.js → index-DgbLblGR.js} +1 -1
  162. package/dist/studio/index.html +1 -1
  163. package/dist/{studio-api-XIBDLRHB.js → studio-api-HGM2A5I3.js} +9 -9
  164. package/dist/{studioServer-QIQK47UN.js → studioServer-M6XFL7N6.js} +45 -45
  165. package/dist/{telemetry-565KDZUW.js → telemetry-KVCZKVTE.js} +3 -3
  166. package/dist/{timeline-E6XB7I6W.js → timeline-VYYKZR4V.js} +68 -15
  167. package/dist/{tokens-3ZAJENSE.js → tokens-B5NFFL55.js} +2 -2
  168. package/dist/{transcribe-XWQQCCBG.js → transcribe-SBETOIWI.js} +12 -12
  169. package/dist/{transcribe-WODP3T77.js → transcribe-WNFRYZAC.js} +18 -18
  170. package/dist/{updateCheck-QPYU4GRL.js → updateCheck-5MM2DFUC.js} +2 -2
  171. package/dist/{upgrade-2FJ5ZEN6.js → upgrade-LWID54R3.js} +2 -2
  172. package/dist/{urlDownloader-352AY25I.js → urlDownloader-CVLNXFDG.js} +6 -6
  173. package/dist/{validate-SP2VGNEI.js → validate-V4CGQ6OF.js} +20 -20
  174. package/dist/{video-RVNPFEA6.js → video-VJB2KRSS.js} +7 -7
  175. package/package.json +1 -1
  176. package/dist/chunk-3WD4JNMU.js +0 -3795
@@ -7,11 +7,15 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseAngle
9
9
  } from "./chunk-KZI44OPA.js";
10
+ import {
11
+ reportArtifacts,
12
+ withProjectLock
13
+ } from "./chunk-DHPFXAUF.js";
10
14
  import {
11
15
  serveStaticProjectHtml
12
- } from "./chunk-K44HCHZN.js";
16
+ } from "./chunk-L3N7RJHS.js";
13
17
  import "./chunk-XUHOIDKG.js";
14
- import "./chunk-BNYRD7PQ.js";
18
+ import "./chunk-QLGBNGXC.js";
15
19
  import "./chunk-X7MTZ4T2.js";
16
20
  import {
17
21
  DEFAULT_ZOOM_SCALE,
@@ -21,41 +25,41 @@ import {
21
25
  resolveCropRegion,
22
26
  runFfmpegOnce,
23
27
  seekCompositionTimeline
24
- } from "./chunk-TPIG7ZBX.js";
28
+ } from "./chunk-RYL6ZIJP.js";
25
29
  import "./chunk-FH7WODJH.js";
26
- import "./chunk-4S4VUXW3.js";
27
- import "./chunk-KQHJKJ3V.js";
30
+ import "./chunk-RRBKEHST.js";
31
+ import "./chunk-HVXRYMGQ.js";
28
32
  import "./chunk-WPNE5NEP.js";
29
- import "./chunk-NKM53WMI.js";
30
- import "./chunk-2HWB4TCI.js";
33
+ import "./chunk-BRF3O35X.js";
34
+ import "./chunk-XNDXENJQ.js";
31
35
  import "./chunk-FJWEYVEM.js";
32
- import "./chunk-ZFN6GQU4.js";
33
- import "./chunk-KMJLHHBF.js";
36
+ import "./chunk-XXPYZBZ3.js";
37
+ import "./chunk-3ZPFRDEJ.js";
34
38
  import "./chunk-AIJS74LG.js";
35
39
  import {
36
40
  resolveProject
37
- } from "./chunk-SFUBSJFP.js";
41
+ } from "./chunk-KXX6NLOT.js";
38
42
  import {
39
43
  formatLintFindings
40
44
  } from "./chunk-6CSYCFQV.js";
41
45
  import "./chunk-K2FLNJVB.js";
42
46
  import {
43
47
  resolveLocalBrowserGpuMode
44
- } from "./chunk-QIJLIULK.js";
48
+ } from "./chunk-ZGCRVM5M.js";
45
49
  import "./chunk-442JNXRM.js";
46
- import "./chunk-SP6XL3NP.js";
50
+ import "./chunk-FAIYEIZ4.js";
47
51
  import "./chunk-XT7X6QCP.js";
48
52
  import "./chunk-4YYJOFKS.js";
49
53
  import "./chunk-HVW7ABXD.js";
50
- import "./chunk-PR7QQBSC.js";
51
- import "./chunk-Q2Y5OZCY.js";
52
- import "./chunk-K35E45SI.js";
54
+ import "./chunk-XGLNQDLN.js";
55
+ import "./chunk-N4IXP3MY.js";
56
+ import "./chunk-YZTVHRJ2.js";
53
57
  import "./chunk-AWDFDFI3.js";
54
58
  import "./chunk-P6LJ4Y32.js";
55
59
  import "./chunk-GMECXFAN.js";
56
60
  import "./chunk-374QQGBQ.js";
57
- import "./chunk-Y475GD4L.js";
58
- import "./chunk-LACFOFWX.js";
61
+ import "./chunk-ZD3RDNZI.js";
62
+ import "./chunk-IZ7L6V76.js";
59
63
  import "./chunk-VWG7OQKU.js";
60
64
  import "./chunk-XBSPQ52S.js";
61
65
  import {
@@ -78,7 +82,7 @@ import "./chunk-K4WIOZFP.js";
78
82
  import "./chunk-XUXGIA7H.js";
79
83
  import "./chunk-WERLJGIC.js";
80
84
  import "./chunk-ISN5GRYI.js";
81
- import "./chunk-OMBSUO4T.js";
85
+ import "./chunk-TCWMDCBX.js";
82
86
  import {
83
87
  loadOptionalPackage
84
88
  } from "./chunk-3DKN5WKL.js";
@@ -88,23 +92,24 @@ import {
88
92
  findFFmpeg,
89
93
  findFFprobe,
90
94
  getFFmpegInstallHint
91
- } from "./chunk-DUUFDLC4.js";
95
+ } from "./chunk-4MLYMDQ4.js";
92
96
  import "./chunk-AMKC3AXA.js";
93
- import "./chunk-VC7JBNPS.js";
94
- import "./chunk-62RUQJ5J.js";
97
+ import "./chunk-IZPN423R.js";
98
+ import "./chunk-3SVC7SW4.js";
95
99
  import "./chunk-NE55C6S5.js";
96
100
  import "./chunk-JYVGYKXG.js";
97
101
  import {
102
+ createRuntimeStartTimeResolver,
98
103
  isClipVisibleAt,
99
104
  isInClipWindow
100
- } from "./chunk-AHBYQRGI.js";
105
+ } from "./chunk-XQKVEQNY.js";
101
106
  import {
102
107
  readElementRateSpec,
103
108
  sourceTimeAt,
104
109
  timeAtSourceTime
105
- } from "./chunk-3WD4JNMU.js";
110
+ } from "./chunk-QBYHNRHU.js";
106
111
  import "./chunk-VC76R6W2.js";
107
- import "./chunk-YA62XGXS.js";
112
+ import "./chunk-UJKQWGFF.js";
108
113
  import "./chunk-LFNQDTSH.js";
109
114
  import "./chunk-OFQWTKPW.js";
110
115
  import "./chunk-DPVXBVLL.js";
@@ -113,17 +118,19 @@ import "./chunk-FXMKHHPO.js";
113
118
  import "./chunk-RQVDTPGD.js";
114
119
  import {
115
120
  runCancellableProcess
116
- } from "./chunk-XPQSL5VS.js";
121
+ } from "./chunk-54DMWFQZ.js";
117
122
  import "./chunk-TWWSYAKJ.js";
118
123
  import {
119
124
  lintProject
120
- } from "./chunk-JDB65PPT.js";
125
+ } from "./chunk-GNTVYF7E.js";
121
126
  import "./chunk-IWFLMU2N.js";
122
127
  import "./chunk-APDLWWFG.js";
123
128
  import "./chunk-VAS6HQX3.js";
124
129
  import "./chunk-3RM2ETQT.js";
125
130
  import "./chunk-BSQ7XANM.js";
126
- import "./chunk-SDYDNHEE.js";
131
+ import {
132
+ parseHTML
133
+ } from "./chunk-SDYDNHEE.js";
127
134
  import "./chunk-2PSPARWP.js";
128
135
  import "./chunk-IXLUTE6N.js";
129
136
  import {
@@ -133,6 +140,55 @@ import "./chunk-KGPLIH7B.js";
133
140
  import "./chunk-3GXQPCJC.js";
134
141
  import "./chunk-M2WBOQ2Q.js";
135
142
 
143
+ // src/commands/snapshotSampling.ts
144
+ function parseSnapshotRange(value) {
145
+ const parts = value.split(/[,:]/);
146
+ const range = parts.map((part) => part.trim() === "" ? NaN : Number(part));
147
+ if (parts.length !== 2 || !range.every(Number.isFinite) || range[0] < 0 || range[1] <= range[0])
148
+ throw new Error("--range must be START,END in seconds, with 0 <= START < END");
149
+ return [range[0], range[1]];
150
+ }
151
+ function sampleSnapshotRange([start, end], frames, duration, exclusiveEnd = false) {
152
+ if (!Number.isInteger(frames) || frames < 1)
153
+ throw new Error("--frames must be a positive integer");
154
+ if (!Number.isFinite(duration) || duration <= 0 || !Number.isFinite(start) || !Number.isFinite(end) || start < 0 || end <= start || end > duration)
155
+ throw new Error(`Snapshot range must satisfy 0 <= START < END <= ${duration}s`);
156
+ if (frames === 1) return [(start + end) / 2];
157
+ const last = exclusiveEnd || end === duration ? end - Math.min(1e-3, (end - start) / (frames * 2)) : end;
158
+ return Array.from({ length: frames }, (_, i) => start + (last - start) * i / (frames - 1));
159
+ }
160
+ function resolveSnapshotCompositionRange(html, durations, id, duration) {
161
+ const { document: document2 } = parseHTML(html);
162
+ const matches = Array.from(document2.querySelectorAll("[data-composition-id]")).filter(
163
+ (el) => el.getAttribute("data-composition-id") === id
164
+ );
165
+ if (matches.length !== 1)
166
+ throw new Error(
167
+ `Composition ID ${JSON.stringify(id)} matched ${matches.length} elements; expected exactly one`
168
+ );
169
+ const registry = Object.fromEntries(
170
+ Object.entries(durations).map(([key, value]) => [key, { duration: () => value }])
171
+ );
172
+ const resolver = createRuntimeStartTimeResolver({
173
+ documentRef: document2,
174
+ timelineRegistry: registry,
175
+ includeAuthoredTimingAttrs: true
176
+ });
177
+ let start = 0, end = duration;
178
+ for (let el = matches[0]; el; el = el.parentElement) {
179
+ if (!el.hasAttribute("data-composition-id") && !el.hasAttribute("data-start")) continue;
180
+ const localStart = resolver.resolveStartForElement(el, 0);
181
+ const length = resolver.resolveDurationForElement(el);
182
+ if (!Number.isFinite(localStart))
183
+ throw new Error(`Cannot resolve start of composition ${JSON.stringify(id)}`);
184
+ start = Math.max(start, localStart);
185
+ if (length != null) end = Math.min(end, localStart + length);
186
+ }
187
+ if (end <= start)
188
+ throw new Error(`Composition ${JSON.stringify(id)} has no visible time interval`);
189
+ return [start, end];
190
+ }
191
+
136
192
  // src/commands/snapshot.ts
137
193
  import { existsSync, mkdtempSync, readFileSync, mkdirSync, rmSync, writeFileSync } from "fs";
138
194
  import { tmpdir } from "os";
@@ -373,7 +429,7 @@ function computeSnapshotTimes(duration, opts) {
373
429
  return { times: times.map(round), appendedTail: false };
374
430
  }
375
431
  async function captureSnapshots(projectDir, opts) {
376
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-OE5ZI4JE.js");
432
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-26MXQOZG.js");
377
433
  const numFrames = opts.frames ?? 5;
378
434
  const html = await bundleWithLocalizedFonts(projectDir);
379
435
  const server = await serveStaticProjectHtml(projectDir, html, void 0, [], opts.autoProxy);
@@ -420,11 +476,36 @@ async function captureSnapshots(projectDir, opts) {
420
476
  if (duration <= 0 && !opts.at?.length) {
421
477
  return [];
422
478
  }
423
- const { times: positions, appendedTail } = computeSnapshotTimes(duration, {
479
+ let range = opts.range;
480
+ if (opts.composition) {
481
+ const timing = await page.evaluate(() => ({
482
+ html: document.documentElement.outerHTML,
483
+ durations: Object.fromEntries(
484
+ Object.entries(window.__timelines ?? {}).map(([id, timeline]) => [
485
+ id,
486
+ Number(timeline.duration?.())
487
+ ])
488
+ )
489
+ }));
490
+ range = resolveSnapshotCompositionRange(
491
+ timing.html,
492
+ timing.durations,
493
+ opts.composition,
494
+ duration
495
+ );
496
+ }
497
+ const { times: positions, appendedTail } = range ? {
498
+ times: sampleSnapshotRange(range, numFrames, duration, !!opts.composition),
499
+ appendedTail: false
500
+ } : computeSnapshotTimes(duration, {
424
501
  frames: numFrames,
425
502
  at: opts.at,
426
503
  includeEnd: opts.includeEnd
427
504
  });
505
+ if (range)
506
+ console.log(
507
+ ` Sampling ${positions.length} frames within ${range[0]}\u2013${range[1]}s${opts.composition ? ` (composition ${opts.composition})` : ""}`
508
+ );
428
509
  if (appendedTail) {
429
510
  console.log(
430
511
  ` ${c.dim(`Note: added an end-of-timeline frame at ${positions[positions.length - 1].toFixed(2)}s. Short beats between your --at times may still be skipped \u2014 pass them explicitly.`)}`
@@ -446,7 +527,7 @@ async function captureSnapshots(projectDir, opts) {
446
527
  let syncVideoFrameVisibility = null;
447
528
  let extractMediaMetadata = null;
448
529
  try {
449
- const engine = await import("./src-VMTHSARJ.js");
530
+ const engine = await import("./src-2NN2WB6X.js");
450
531
  injectVideoFramesBatch = engine.injectVideoFramesBatch;
451
532
  syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
452
533
  extractMediaMetadata = engine.extractMediaMetadata;
@@ -653,6 +734,14 @@ var snapshot_default = defineCommand({
653
734
  type: "string",
654
735
  description: "Comma-separated timestamps in seconds (e.g., --at 3.0,10.5,18.0). Each is captured at that exact instant, not snapped to a frame."
655
736
  },
737
+ range: {
738
+ type: "string",
739
+ description: "Root-timeline range START,END in seconds; sample --frames evenly within it, without adding the full-video tail"
740
+ },
741
+ composition: {
742
+ type: "string",
743
+ description: "data-composition-id to sample; take --frames within its effective root-timeline interval, without adding the full-video tail"
744
+ },
656
745
  timeout: {
657
746
  type: "string",
658
747
  description: "Ms to wait for runtime to initialize (default: 5000)",
@@ -696,6 +785,12 @@ var snapshot_default = defineCommand({
696
785
  }
697
786
  },
698
787
  async run({ args }) {
788
+ if ([args.at, args.range, args.composition].filter((value) => value !== void 0).length > 1)
789
+ throw new Error("Use only one of --at, --range, or --composition");
790
+ const frames = parseInt(args.frames, 10) || 5;
791
+ const range = args.range === void 0 ? void 0 : parseSnapshotRange(String(args.range));
792
+ const composition = args.composition === void 0 ? void 0 : String(args.composition).trim();
793
+ if (composition === "") throw new Error("--composition requires a composition ID");
699
794
  const project = resolveProject(args.dir);
700
795
  const lintResult = await lintProject(project.dir);
701
796
  if (hasDefinitiveEntryMismatch(lintResult)) {
@@ -724,7 +819,6 @@ var snapshot_default = defineCommand({
724
819
  console.log("");
725
820
  failCommand();
726
821
  }
727
- const frames = parseInt(args.frames, 10) || 5;
728
822
  const timeout = parseInt(args.timeout, 10) || 5e3;
729
823
  const atTimestamps = args.at ? String(args.at).split(",").map((s) => parseFloat(s.trim())).filter((n) => !isNaN(n)) : void 0;
730
824
  const describeArg = args.describe === void 0 ? "true" : String(args.describe) === "false" ? null : String(args.describe);
@@ -741,128 +835,145 @@ var snapshot_default = defineCommand({
741
835
  console.log(`${c.accent("\u25C6")} Capturing ${label} from ${c.accent(project.name)}${angleLabel}`);
742
836
  try {
743
837
  const snapshotDir = args.output ? resolve(String(args.output)) : join(project.dir, "snapshots");
744
- const paths = await captureSnapshots(project.dir, {
745
- frames,
746
- timeout,
747
- at: atTimestamps,
748
- outputDir: snapshotDir,
749
- angle: camera,
750
- includeEnd: args.end !== false,
751
- zoom: zoomTarget,
752
- zoomScale,
753
- autoProxy: args.proxy,
754
- browserGpuMode: resolveLocalBrowserGpuMode(args["browser-gpu"]),
755
- against
756
- });
757
- if (paths.length === 0) {
838
+ await withProjectLock(project.dir, "snapshot", async () => {
839
+ const paths = await captureSnapshots(project.dir, {
840
+ frames,
841
+ range,
842
+ composition,
843
+ timeout,
844
+ at: atTimestamps,
845
+ outputDir: snapshotDir,
846
+ angle: camera,
847
+ includeEnd: args.end !== false,
848
+ zoom: zoomTarget,
849
+ zoomScale,
850
+ autoProxy: args.proxy,
851
+ browserGpuMode: resolveLocalBrowserGpuMode(args["browser-gpu"]),
852
+ against
853
+ });
854
+ reportArtifacts(
855
+ "snapshot",
856
+ "frame",
857
+ paths.map((path) => resolve(project.dir, path))
858
+ );
859
+ if (paths.length === 0) {
860
+ console.log(
861
+ `
862
+ ${c.error("\u2717")} Could not determine composition duration \u2014 no frames captured`
863
+ );
864
+ failCommand();
865
+ }
758
866
  console.log(
759
867
  `
760
- ${c.error("\u2717")} Could not determine composition duration \u2014 no frames captured`
761
- );
762
- failCommand();
763
- }
764
- console.log(
765
- `
766
868
  ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snapshotDir : "snapshots/"}`
767
- );
768
- for (const p of paths) {
769
- console.log(` ${p}`);
770
- }
771
- if (against) {
772
- console.log(
773
- ` ${c.dim("ref-*.png + pair-*.jpg")} beside each frame (reference frame, render | reference sheet)`
774
869
  );
775
- }
776
- try {
777
- const { createSnapshotContactSheet } = await import("./contactSheet-27SRU7A4.js");
778
- const sheets = await createSnapshotContactSheet(
779
- snapshotDir,
780
- join(snapshotDir, "contact-sheet.jpg")
781
- );
782
- if (sheets.length > 0) {
783
- const label2 = sheets.length === 1 ? "contact-sheet.jpg" : `contact-sheet-1..${sheets.length}.jpg`;
784
- console.log(` ${c.dim(label2)} (grid view for AI review)`);
870
+ for (const p of paths) {
871
+ console.log(` ${p}`);
872
+ }
873
+ if (against) {
874
+ console.log(
875
+ ` ${c.dim("ref-*.png + pair-*.jpg")} beside each frame (reference frame, render | reference sheet)`
876
+ );
785
877
  }
786
- } catch (err) {
787
- console.warn(
788
- ` ${c.warn("\u26A0")} Contact sheet skipped: ${normalizeErrorMessage(err)}. Individual snapshot PNGs are still available.`
789
- );
790
- }
791
- if (describeArg !== null) {
792
878
  try {
793
- const geminiKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY;
794
- if (!geminiKey) {
795
- console.log(` ${c.dim("--describe: GEMINI_API_KEY not set, skipping")}`);
796
- } else if (paths.length > 0) {
797
- console.log(` ${c.dim("Describing frames with Gemini vision...")}`);
798
- const { GoogleGenAI } = await loadOptionalPackage("@google/genai", "--describe");
799
- const ai = new GoogleGenAI({ apiKey: geminiKey });
800
- const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
801
- const customQuestion = describeArg === "true" ? "Describe this video composition frame in 1-2 sentences. Be specific and factual: what elements are visible, what text appears, is the frame blank/black/loading, what is the composition. Flag any obvious problems." : describeArg;
802
- const descriptions = [
803
- `# Snapshot Frame Descriptions`,
804
- ``,
805
- `**Question asked:** ${customQuestion}`,
806
- ``,
807
- `Compare each description against your storyboard spec. A "black frame" or "loading screen" for a content beat is a bug.`,
808
- ``
809
- ];
810
- let sharpFn = null;
811
- try {
812
- const s = await import("sharp");
813
- sharpFn = s.default ?? s;
814
- } catch {
815
- }
816
- const results = await Promise.allSettled(
817
- paths.map(async (p) => {
818
- const filename = basename(p);
819
- const filePath = join(snapshotDir, filename);
820
- if (!existsSync(filePath)) return { filename, desc: "file not found" };
821
- const raw = readFileSync(filePath);
822
- let imageData;
823
- let mimeType = "image/png";
824
- if (sharpFn) {
825
- imageData = await sharpFn(raw).resize(960).jpeg().toBuffer();
826
- mimeType = "image/jpeg";
879
+ const { createSnapshotContactSheet } = await import("./contactSheet-27SRU7A4.js");
880
+ const sheets = await createSnapshotContactSheet(
881
+ snapshotDir,
882
+ join(snapshotDir, "contact-sheet.jpg")
883
+ );
884
+ reportArtifacts("snapshot", "contact-sheet", sheets);
885
+ for (const sheet of sheets) {
886
+ console.log(` ${resolve(sheet)} (grid view for AI review)`);
887
+ }
888
+ } catch (err) {
889
+ console.warn(
890
+ ` ${c.warn("\u26A0")} Contact sheet skipped: ${normalizeErrorMessage(err)}. Individual snapshot PNGs are still available.`
891
+ );
892
+ }
893
+ if (describeArg !== null) {
894
+ try {
895
+ const geminiKey = process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY;
896
+ if (!geminiKey) {
897
+ if (args.describe !== void 0)
898
+ console.log(` ${c.dim("--describe: GEMINI_API_KEY not set, skipping")}`);
899
+ } else if (paths.length > 0) {
900
+ console.log(` ${c.dim("Describing frames with Gemini vision...")}`);
901
+ const { GoogleGenAI } = await loadOptionalPackage("@google/genai", "--describe");
902
+ const ai = new GoogleGenAI({ apiKey: geminiKey });
903
+ const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
904
+ const customQuestion = describeArg === "true" ? "Describe this video composition frame in 1-2 sentences. Be specific and factual: what elements are visible, what text appears, is the frame blank/black/loading, what is the composition. Flag any obvious problems." : describeArg;
905
+ const descriptions = [
906
+ `# Snapshot Frame Descriptions`,
907
+ ``,
908
+ `**Question asked:** ${customQuestion}`,
909
+ ``,
910
+ `Compare each description against your storyboard spec. A "black frame" or "loading screen" for a content beat is a bug.`,
911
+ ``
912
+ ];
913
+ let sharpFn = null;
914
+ try {
915
+ const s = await import("sharp");
916
+ sharpFn = s.default ?? s;
917
+ } catch {
918
+ }
919
+ const results = await Promise.allSettled(
920
+ paths.map(async (p) => {
921
+ const filename = basename(p);
922
+ const filePath = join(snapshotDir, filename);
923
+ if (!existsSync(filePath)) return { filename, desc: "file not found" };
924
+ const raw = readFileSync(filePath);
925
+ let imageData;
926
+ let mimeType = "image/png";
927
+ if (sharpFn) {
928
+ imageData = await sharpFn(raw).resize(960).jpeg().toBuffer();
929
+ mimeType = "image/jpeg";
930
+ } else {
931
+ if (raw.length > 38e5)
932
+ return {
933
+ filename,
934
+ desc: "file too large for Gemini \u2014 install sharp to enable auto-resize"
935
+ };
936
+ imageData = raw;
937
+ }
938
+ const base64 = imageData.toString("base64");
939
+ const response = await ai.models.generateContent({
940
+ model,
941
+ contents: [
942
+ {
943
+ role: "user",
944
+ parts: [
945
+ { inlineData: { mimeType, data: base64 } },
946
+ { text: customQuestion }
947
+ ]
948
+ }
949
+ ],
950
+ config: { maxOutputTokens: 250 }
951
+ });
952
+ return { filename, desc: response.text?.trim() || "no description" };
953
+ })
954
+ );
955
+ for (const result of results) {
956
+ if (result.status === "fulfilled") {
957
+ descriptions.push(`## ${result.value.filename}`, `${result.value.desc}`, ``);
827
958
  } else {
828
- if (raw.length > 38e5)
829
- return {
830
- filename,
831
- desc: "file too large for Gemini \u2014 install sharp to enable auto-resize"
832
- };
833
- imageData = raw;
959
+ const errMsg = normalizeErrorMessage(result.reason);
960
+ descriptions.push(
961
+ `## (error)`,
962
+ `Gemini call failed: ${errMsg.slice(0, 120)}`,
963
+ ``
964
+ );
834
965
  }
835
- const base64 = imageData.toString("base64");
836
- const response = await ai.models.generateContent({
837
- model,
838
- contents: [
839
- {
840
- role: "user",
841
- parts: [{ inlineData: { mimeType, data: base64 } }, { text: customQuestion }]
842
- }
843
- ],
844
- config: { maxOutputTokens: 250 }
845
- });
846
- return { filename, desc: response.text?.trim() || "no description" };
847
- })
848
- );
849
- for (const result of results) {
850
- if (result.status === "fulfilled") {
851
- descriptions.push(`## ${result.value.filename}`, `${result.value.desc}`, ``);
852
- } else {
853
- const errMsg = normalizeErrorMessage(result.reason);
854
- descriptions.push(`## (error)`, `Gemini call failed: ${errMsg.slice(0, 120)}`, ``);
855
966
  }
967
+ const descPath = join(snapshotDir, "descriptions.md");
968
+ writeFileSync(descPath, descriptions.join("\n"));
969
+ console.log(` ${c.dim("descriptions.md")} (Gemini frame analysis)`);
856
970
  }
857
- const descPath = join(snapshotDir, "descriptions.md");
858
- writeFileSync(descPath, descriptions.join("\n"));
859
- console.log(` ${c.dim("descriptions.md")} (Gemini frame analysis)`);
971
+ } catch (descErr) {
972
+ const msg = normalizeErrorMessage(descErr);
973
+ console.log(` ${c.dim(`--describe failed: ${msg}`)}`);
860
974
  }
861
- } catch (descErr) {
862
- const msg = normalizeErrorMessage(descErr);
863
- console.log(` ${c.dim(`--describe failed: ${msg}`)}`);
864
975
  }
865
- }
976
+ });
866
977
  } catch (err) {
867
978
  const msg = normalizeErrorMessage(err);
868
979
  console.error(`
@@ -34,6 +34,7 @@ import {
34
34
  PROVENANCE_VERSION,
35
35
  PROVENANCE_VERSION_TAG,
36
36
  SDR_RGB_TO_BT709_FILTER,
37
+ SDR_RGB_TO_TAGGED_BT709_FILTER,
37
38
  SwiftShaderAssertionError,
38
39
  VIDEO_FRAME_FORMATS,
39
40
  VfxFailureError,
@@ -162,6 +163,7 @@ import {
162
163
  pageScreenshotCapture,
163
164
  parseAudioElements,
164
165
  parseImageElements,
166
+ parseMasterFxChain,
165
167
  parseTransformMatrix,
166
168
  parseVideoElements,
167
169
  percentileOf,
@@ -214,8 +216,8 @@ import {
214
216
  verifyGpuParity,
215
217
  writeCapturedFrame,
216
218
  writeUrlDownloadTelemetry
217
- } from "./chunk-VC7JBNPS.js";
218
- import "./chunk-62RUQJ5J.js";
219
+ } from "./chunk-IZPN423R.js";
220
+ import "./chunk-3SVC7SW4.js";
219
221
  import "./chunk-NE55C6S5.js";
220
222
  import {
221
223
  LOW_MEMORY_TOTAL_MB_THRESHOLD,
@@ -226,10 +228,10 @@ import {
226
228
  import {
227
229
  MEDIA_VISUAL_STYLE_PROPERTIES,
228
230
  quantizeTimeToFrame
229
- } from "./chunk-AHBYQRGI.js";
230
- import "./chunk-3WD4JNMU.js";
231
+ } from "./chunk-XQKVEQNY.js";
232
+ import "./chunk-QBYHNRHU.js";
231
233
  import "./chunk-VC76R6W2.js";
232
- import "./chunk-YA62XGXS.js";
234
+ import "./chunk-UJKQWGFF.js";
233
235
  import "./chunk-LFNQDTSH.js";
234
236
  import "./chunk-OFQWTKPW.js";
235
237
  import "./chunk-DPVXBVLL.js";
@@ -239,7 +241,7 @@ import "./chunk-RQVDTPGD.js";
239
241
  import {
240
242
  chromeMajorCeiling
241
243
  } from "./chunk-TWWSYAKJ.js";
242
- import "./chunk-JDB65PPT.js";
244
+ import "./chunk-GNTVYF7E.js";
243
245
  import {
244
246
  resolveProjectRelativeSrc
245
247
  } from "./chunk-IWFLMU2N.js";
@@ -296,6 +298,7 @@ export {
296
298
  PROVENANCE_VERSION,
297
299
  PROVENANCE_VERSION_TAG,
298
300
  SDR_RGB_TO_BT709_FILTER,
301
+ SDR_RGB_TO_TAGGED_BT709_FILTER,
299
302
  SwiftShaderAssertionError,
300
303
  TRANSITIONS,
301
304
  VIDEO_FRAME_FORMATS,
@@ -433,6 +436,7 @@ export {
433
436
  pageScreenshotCapture,
434
437
  parseAudioElements,
435
438
  parseImageElements,
439
+ parseMasterFxChain,
436
440
  parseTransformMatrix,
437
441
  parseVideoElements,
438
442
  percentileOf,
@@ -69,7 +69,7 @@ import {
69
69
  serializeRenderRequest,
70
70
  startServer,
71
71
  validatePlanV2MaterializedTarget
72
- } from "./chunk-VXM4BH23.js";
72
+ } from "./chunk-N3I6RAOR.js";
73
73
  import {
74
74
  FONT_FETCH_FAILED,
75
75
  FONT_FETCH_UNAVAILABLE,
@@ -78,7 +78,7 @@ import {
78
78
  injectDeterministicFontFaces
79
79
  } from "./chunk-FMNVTKX2.js";
80
80
  import "./chunk-FI4I7CME.js";
81
- import "./chunk-K4RIT6PX.js";
81
+ import "./chunk-XYHBVSWD.js";
82
82
  import "./chunk-EOOEC32M.js";
83
83
  import "./chunk-TJSTGSAW.js";
84
84
  import "./chunk-BZ56MTDX.js";
@@ -95,16 +95,16 @@ import {
95
95
  isTransientBrowserError,
96
96
  prepareCaptureSessionForReuse,
97
97
  resolveConfig
98
- } from "./chunk-VC7JBNPS.js";
99
- import "./chunk-62RUQJ5J.js";
98
+ } from "./chunk-IZPN423R.js";
99
+ import "./chunk-3SVC7SW4.js";
100
100
  import "./chunk-NE55C6S5.js";
101
101
  import "./chunk-JYVGYKXG.js";
102
102
  import {
103
103
  quantizeTimeToFrame
104
- } from "./chunk-AHBYQRGI.js";
105
- import "./chunk-3WD4JNMU.js";
104
+ } from "./chunk-XQKVEQNY.js";
105
+ import "./chunk-QBYHNRHU.js";
106
106
  import "./chunk-VC76R6W2.js";
107
- import "./chunk-YA62XGXS.js";
107
+ import "./chunk-UJKQWGFF.js";
108
108
  import "./chunk-LFNQDTSH.js";
109
109
  import "./chunk-OFQWTKPW.js";
110
110
  import "./chunk-DPVXBVLL.js";
@@ -112,7 +112,7 @@ import "./chunk-T76PLPD6.js";
112
112
  import "./chunk-FXMKHHPO.js";
113
113
  import "./chunk-RQVDTPGD.js";
114
114
  import "./chunk-TWWSYAKJ.js";
115
- import "./chunk-JDB65PPT.js";
115
+ import "./chunk-GNTVYF7E.js";
116
116
  import "./chunk-IWFLMU2N.js";
117
117
  import "./chunk-APDLWWFG.js";
118
118
  import "./chunk-VAS6HQX3.js";