hyperframes 0.8.144 → 0.8.146

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 (209) hide show
  1. package/README.md +3 -2
  2. package/dist/{add-CWRTVGDB.js → add-6J4TLUDW.js} +15 -15
  3. package/dist/{animatedGifPrep-JTOHIWI4.js → animatedGifPrep-TPYA45ZZ.js} +10 -10
  4. package/dist/{asset-KU2Z4UFM.js → asset-B4C6ZU4V.js} +2 -2
  5. package/dist/{assetCataloger-3CS2P7PA.js → assetCataloger-GX4B55VB.js} +4 -4
  6. package/dist/{auth-IDSOIQWG.js → auth-T2V3URGO.js} +2 -2
  7. package/dist/{autoUpdate-373B4BA2.js → autoUpdate-O4R7IOYP.js} +2 -2
  8. package/dist/{backgroundChecks-53Q3NAMG.js → backgroundChecks-SQHGZCSH.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-UKZA6BME.js → batchRender-T7S2CGJE.js} +5 -5
  11. package/dist/{beats-N5JGEOFR.js → beats-RNEXDM7U.js} +16 -16
  12. package/dist/{benchmark-CUN3LN4V.js → benchmark-IVK6FCEU.js} +12 -12
  13. package/dist/{browser-NCZT5AP6.js → browser-WUE6VK2N.js} +5 -5
  14. package/dist/{bundleWithLocalizedFonts-FWC7PE2D.js → bundleWithLocalizedFonts-EEIRL7FT.js} +2 -2
  15. package/dist/{capture-YLS32UHT.js → capture-K3EONGGU.js} +2 -2
  16. package/dist/{capture-QBLG3VJR.js → capture-LEKIGJ4G.js} +13 -13
  17. package/dist/{catalog-HIWNAFHW.js → catalog-IXYQ2KXW.js} +15 -15
  18. package/dist/{catch-up-HGS7KIAC.js → catch-up-IIF7HKR6.js} +6 -6
  19. package/dist/{check-FH6UYYLO.js → check-W7CDOXNP.js} +38 -38
  20. package/dist/{checkBrowser-RNWNOMCZ.js → checkBrowser-5VSXEHBZ.js} +118 -61
  21. package/dist/{chunk-XU5GGV6R.js → chunk-2NAUEDA6.js} +2 -2
  22. package/dist/{chunk-GZM2EFOE.js → chunk-3HSWLZ6S.js} +1 -1
  23. package/dist/{chunk-YUAXFWSQ.js → chunk-4RUILXS6.js} +5 -5
  24. package/dist/{chunk-MXNDKDFT.js → chunk-54UXJKFF.js} +1 -1
  25. package/dist/{chunk-DIRJ322I.js → chunk-66SAATRI.js} +3 -3
  26. package/dist/{chunk-RI53TS2Y.js → chunk-6TTAXMDG.js} +2 -2
  27. package/dist/{chunk-YJXHMIZA.js → chunk-A72OAGNB.js} +6 -6
  28. package/dist/{chunk-G75ENCEZ.js → chunk-AIJS74LG.js} +3 -3
  29. package/dist/{chunk-GEWKFRFI.js → chunk-AJ5R4GM6.js} +1 -1
  30. package/dist/{chunk-3VYNNWVA.js → chunk-BAKPN2D2.js} +101 -94
  31. package/dist/{chunk-3XTEXWNN.js → chunk-CVPWZ5LY.js} +3 -3
  32. package/dist/{chunk-AUBOF2PN.js → chunk-DDNS2674.js} +1 -1
  33. package/dist/{chunk-QFSCCQIR.js → chunk-DMKI64EZ.js} +1 -1
  34. package/dist/{chunk-NOPBBSLA.js → chunk-DUU77E2S.js} +69 -64
  35. package/dist/{chunk-RVFEDAUV.js → chunk-EGO6Z24R.js} +3 -3
  36. package/dist/{chunk-KC5XXX3X.js → chunk-EOOEC32M.js} +1 -1
  37. package/dist/{chunk-2DA2BBNY.js → chunk-ETNQF37F.js} +10 -10
  38. package/dist/{chunk-54QISXOC.js → chunk-FDL4HV44.js} +2 -2
  39. package/dist/{chunk-VYSUZEJG.js → chunk-FJLHVAPO.js} +6 -6
  40. package/dist/{chunk-QZ3AZTXI.js → chunk-FJWEYVEM.js} +42 -16
  41. package/dist/{chunk-EX6C672Y.js → chunk-FKLYMV3U.js} +1 -1
  42. package/dist/{chunk-PUGIRFPX.js → chunk-FMNVTKX2.js} +4 -4
  43. package/dist/{chunk-L5TUCXWR.js → chunk-HBGJYBGE.js} +2 -2
  44. package/dist/{chunk-SLCFKB3Y.js → chunk-HTM4CIFS.js} +11 -8
  45. package/dist/{chunk-T42U2W2R.js → chunk-IXLUTE6N.js} +1 -1
  46. package/dist/{chunk-OUSLVRO4.js → chunk-JBQJKC23.js} +76 -6
  47. package/dist/{chunk-IEIJRMLZ.js → chunk-JDB65PPT.js} +62 -63
  48. package/dist/{chunk-USDEMXXL.js → chunk-JYVGYKXG.js} +1 -1
  49. package/dist/{chunk-P6WH6QTV.js → chunk-K7ES5RSK.js} +1 -1
  50. package/dist/{chunk-LC3RQURJ.js → chunk-KFZUUXUN.js} +3 -3
  51. package/dist/{chunk-OIDN7G42.js → chunk-KG265HQ7.js} +2 -2
  52. package/dist/{chunk-7RAYSCYT.js → chunk-KPJMBC4K.js} +2 -2
  53. package/dist/{chunk-MAYCCGMQ.js → chunk-KVGDFUVO.js} +1 -1
  54. package/dist/{chunk-JEHFZQYT.js → chunk-LE7T4ML7.js} +1 -1
  55. package/dist/{chunk-MQZVBHEY.js → chunk-LFNQDTSH.js} +1 -1
  56. package/dist/{chunk-ZOA2SC4P.js → chunk-MOL32UKR.js} +45 -11
  57. package/dist/{chunk-RG3QWWIE.js → chunk-QSSPIATO.js} +2 -2
  58. package/dist/{chunk-F2SMS24Q.js → chunk-R6R74HNZ.js} +117 -139
  59. package/dist/{chunk-7SDCIWHQ.js → chunk-SYMSKGXI.js} +2 -2
  60. package/dist/{chunk-ZEUONDQG.js → chunk-SYUGVPYH.js} +1 -1
  61. package/dist/{chunk-4OC7MQNB.js → chunk-TBOMPYG6.js} +2 -2
  62. package/dist/{chunk-KFKZ3ISO.js → chunk-TH4OXAWY.js} +1 -1
  63. package/dist/{chunk-4LAR447G.js → chunk-UOBYRLDD.js} +1 -1
  64. package/dist/{chunk-NV4RXIQ7.js → chunk-UZUUVYAO.js} +3 -3
  65. package/dist/{chunk-PJ3HDUCY.js → chunk-VAS6HQX3.js} +39 -9
  66. package/dist/{chunk-LFX2HEYP.js → chunk-VT563F4O.js} +7 -7
  67. package/dist/{chunk-5VMR4WBS.js → chunk-WU2B74TL.js} +363 -103
  68. package/dist/{chunk-5HJ343GH.js → chunk-WUZ6TMAO.js} +1 -1
  69. package/dist/{chunk-GQJZORQP.js → chunk-XBSPQ52S.js} +1 -1
  70. package/dist/{chunk-5WADG7PR.js → chunk-XJUZEB44.js} +1 -1
  71. package/dist/{chunk-I5KY7EZP.js → chunk-XVIYZU3D.js} +1 -1
  72. package/dist/{chunk-XGFHYAYN.js → chunk-Z5C4LEAD.js} +33 -28
  73. package/dist/chunk-Z6FLHIDV.js +3795 -0
  74. package/dist/{chunk-DDIVWXN7.js → chunk-ZFN6GQU4.js} +4 -4
  75. package/dist/{chunk-Y6UPYWJS.js → chunk-ZVZSFDW3.js} +2 -2
  76. package/dist/{chunk-A53CBD24.js → chunk-ZZ7H4IJ6.js} +9 -9
  77. package/dist/{clean-KPX27IKJ.js → clean-2GDD2B4F.js} +23 -23
  78. package/dist/cli.js +52 -52
  79. package/dist/{cloud-P7DAOISN.js → cloud-LUKGDTTE.js} +4 -4
  80. package/dist/{cloudrun-XM56TBOH.js → cloudrun-NQF5KFQI.js} +6 -6
  81. package/dist/{compare-F6YAFZZM.js → compare-4P6O4ONG.js} +32 -32
  82. package/dist/{compiler-JZ4GNFMG.js → compiler-ACCPOZMQ.js} +10 -6
  83. package/dist/{component-3CFOGIQA.js → component-SDDOLNJD.js} +3 -3
  84. package/dist/{compositions-CPCMWF24.js → compositions-P2L6HUVQ.js} +15 -15
  85. package/dist/{delete-GYVKOKB6.js → delete-Q6S4BJ3F.js} +2 -2
  86. package/dist/{deterministicFonts-U2BIMGPG.js → deterministicFonts-C5JQLCTS.js} +2 -2
  87. package/dist/{dist-YPWQDWJ4.js → dist-GPDOV3IQ.js} +4 -4
  88. package/dist/{dist-KDJTFJHA.js → dist-HUMFCJ6T.js} +3 -3
  89. package/dist/{doctor-GWI3B6JT.js → doctor-NL73UKHV.js} +15 -15
  90. package/dist/{events-BRRUDPPT.js → events-AVOPOKO3.js} +5 -5
  91. package/dist/{events-V2QFN4YM.js → events-X7KPU7LG.js} +4 -4
  92. package/dist/{feedback-CXMD7FWL.js → feedback-GJZ5NXSH.js} +10 -10
  93. package/dist/{ffmpeg-T5SH2EFJ.js → ffmpeg-5V4FP3R6.js} +2 -2
  94. package/dist/{figma-YABDWD66.js → figma-V7SVQQI5.js} +3 -3
  95. package/dist/fontLocalizeCli.js +14 -14
  96. package/dist/{get-L2SOQKHX.js → get-FO3YZYEU.js} +2 -2
  97. package/dist/{gpuPolicy-NBJNWHYS.js → gpuPolicy-QGS4TFWP.js} +10 -10
  98. package/dist/{grade-compare-STXQPKYQ.js → grade-compare-7ICSN7KE.js} +33 -33
  99. package/dist/{help-4H6BSFLB.js → help-Y5LYZG7K.js} +2 -2
  100. package/dist/{history-4IQOLTHJ.js → history-RKGBRNLD.js} +49 -22
  101. package/dist/hyperframe-runtime.js +214 -68
  102. package/dist/hyperframe.manifest.json +1 -1
  103. package/dist/hyperframe.runtime.iife.js +214 -68
  104. package/dist/hyperframes-player.global.js +4 -5
  105. package/dist/hyperframes-slideshow.global.js +3 -4
  106. package/dist/{info-2CZOTNBC.js → info-GGUTL2NR.js} +11 -11
  107. package/dist/{init-6BXK42VS.js → init-PG7NA5SQ.js} +31 -31
  108. package/dist/{inspect-VKU47TBH.js → inspect-FCXUB6DE.js} +33 -33
  109. package/dist/{installer-T2BSSUDY.js → installer-LZ4X5TZZ.js} +6 -6
  110. package/dist/{keyframes-IEYVHRPI.js → keyframes-R3K6WJ3N.js} +8 -8
  111. package/dist/{lambda-TIKG25CK.js → lambda-3GAKHMC3.js} +7 -7
  112. package/dist/{layout-XOI4PT7A.js → layout-XNIZIGA2.js} +33 -33
  113. package/dist/{lint-DWCMVIX5.js → lint-4KDS2F4O.js} +11 -11
  114. package/dist/{lintProject-UBZ3TDHU.js → lintProject-SSEXWCH6.js} +3 -3
  115. package/dist/{list-7GXKG5QM.js → list-OVPURFPK.js} +2 -2
  116. package/dist/{login-BQ5L2UHX.js → login-EE2AX2PE.js} +4 -4
  117. package/dist/{manager-YKMHR6LN.js → manager-5ORDVWJB.js} +3 -3
  118. package/dist/{media-treatment-IFB7OSZ3.js → media-treatment-UDUEOP67.js} +86 -55
  119. package/dist/{models-TY4PJ545.js → models-LPK2O4B2.js} +14 -14
  120. package/dist/{motionShot-WXMFHICW.js → motionShot-G76XBOYI.js} +35 -29
  121. package/dist/{normalize-audio-RFD776HQ.js → normalize-audio-TUKWZ3OR.js} +10 -10
  122. package/dist/{open-7IXXGO2E.js → open-7XB2TGVB.js} +6 -6
  123. package/dist/{parakeetRunner-IHLYYMTZ.js → parakeetRunner-DL556HXL.js} +14 -14
  124. package/dist/{pipeline-TXKPLL2U.js → pipeline-34N5DLWU.js} +11 -11
  125. package/dist/{play-J2KP64UK.js → play-DDA2UUQF.js} +26 -26
  126. package/dist/{preflight-B4AFK3RG.js → preflight-ONF5AJNO.js} +5 -5
  127. package/dist/{present-MHHNRVRA.js → present-LLNRKXF5.js} +23 -23
  128. package/dist/{preview-CONUOFFQ.js → preview-H3ZZS46F.js} +57 -26
  129. package/dist/{producer-ZI46K7HH.js → producer-IFQOZK2G.js} +1 -1
  130. package/dist/{projectConfig-FGGVG5MV.js → projectConfig-SBRMQZGG.js} +8 -8
  131. package/dist/{publication-TXFBMW6B.js → publication-5BQICRZO.js} +4 -4
  132. package/dist/{publish-YZSPBFRD.js → publish-XDUZA3E3.js} +27 -26
  133. package/dist/{remove-background-4ATVLHLG.js → remove-background-GNKRMFQS.js} +12 -12
  134. package/dist/{render-MH4IUPWB.js → render-JM6KNRIA.js} +27 -27
  135. package/dist/{render-6FBYLYGJ.js → render-KTTC3EE5.js} +12 -12
  136. package/dist/{render-GFW5BPES.js → render-PCFO45RK.js} +5 -5
  137. package/dist/{render-batch-XUCZ2PUJ.js → render-batch-7R2NRNVJ.js} +5 -5
  138. package/dist/{renderCancellation-XF7M7IUP.js → renderCancellation-GP3XD2FS.js} +10 -10
  139. package/dist/renderSetupWorker.js +3 -3
  140. package/dist/{resolver-W7AYCQGS.js → resolver-C4FPX72I.js} +6 -6
  141. package/dist/{sherpa-LDUB5NLY.js → sherpa-MZP3MV2X.js} +14 -14
  142. package/dist/skills/hyperframes/scripts/lib/frame-packets-core.mjs +2 -20
  143. package/dist/skills/hyperframes/scripts/lib/main-module.mjs +13 -0
  144. package/dist/skills/hyperframes/scripts/lib/main-module.test.mjs +51 -0
  145. package/dist/skills/hyperframes/scripts/plugin-cli.mjs +4 -3
  146. package/dist/skills/hyperframes/scripts/plugin-cli.test.mjs +5 -1
  147. package/dist/skills/hyperframes-cli/SKILL.md +2 -0
  148. package/dist/skills/media-use/audio/scripts/heygen-voice.mjs +2 -2
  149. package/dist/skills/media-use/audio/scripts/lib/main-module.mjs +13 -0
  150. package/dist/skills/media-use/references/media-treatments.md +5 -1
  151. package/dist/skills/media-use/scripts/lib/cube-validate.mjs +2 -3
  152. package/dist/skills/media-use/scripts/lib/main-module.mjs +13 -0
  153. package/dist/{skills-VENERS5X.js → skills-OET4XSHR.js} +7 -7
  154. package/dist/{skillsUpdateCheck-UXFYTACG.js → skillsUpdateCheck-IPFSKKJD.js} +3 -3
  155. package/dist/{slideshow-4OJEPWNZ.js → slideshow-YTWATJRT.js} +1 -1
  156. package/dist/{snapshot-C6T74HTI.js → snapshot-EC4N75MS.js} +34 -34
  157. package/dist/{src-VUJ2FUFK.js → src-LIERUCFW.js} +13 -9
  158. package/dist/{src-FS5RSVEI.js → src-ZZQJOKO6.js} +13 -13
  159. package/dist/{staticProjectServer-V2RZ4DWD.js → staticProjectServer-YH2RHYKW.js} +20 -20
  160. package/dist/{status-LXPGSSKY.js → status-PTKNQD2E.js} +2 -2
  161. package/dist/studio/assets/{hyperframes-player-Bw_jIaSX.js → hyperframes-player-tkxyWf5H.js} +3 -3
  162. package/dist/studio/assets/{index-Cj7W_c7p.js → index-BrdqOkqP.js} +1 -1
  163. package/dist/studio/assets/{index-BVM9NuWl.js → index-Cg48BxAo.js} +145 -145
  164. package/dist/studio/assets/{index-DyH9dT7b.js → index-Dllxg4aU.js} +1 -1
  165. package/dist/studio/index.html +1 -1
  166. package/dist/{studio-api-TQE7KWKO.js → studio-api-T2TS2CHL.js} +16 -14
  167. package/dist/{studioServer-CYKSQK7L.js → studioServer-GJVVJUEL.js} +54 -52
  168. package/dist/{system-OQLOGGPJ.js → system-OXRG57F2.js} +2 -2
  169. package/dist/{telemetry-A23PPRD6.js → telemetry-ZQ5XVE6Z.js} +5 -5
  170. package/dist/{timeline-T3QSGT3A.js → timeline-I2T5WIPD.js} +34 -25
  171. package/dist/{tokens-RT5HWA6C.js → tokens-ONUWOXEX.js} +2 -2
  172. package/dist/{transcribe-FOLNOC5G.js → transcribe-BCQMA537.js} +12 -12
  173. package/dist/{transcribe-HCF64LQK.js → transcribe-ZLJF7V5Y.js} +13 -13
  174. package/dist/{updateCheck-27PIP3AA.js → updateCheck-ZWHDXF73.js} +2 -2
  175. package/dist/{upgrade-TVGXBUPJ.js → upgrade-32JGFZWS.js} +2 -2
  176. package/dist/{urlDownloader-KBLBJKRL.js → urlDownloader-EVDP43GM.js} +9 -9
  177. package/dist/{validate-ZMYGK4QI.js → validate-G4PUGQCI.js} +27 -27
  178. package/dist/{video-AVE5GIGM.js → video-TILEY3VJ.js} +10 -10
  179. package/package.json +3 -2
  180. package/dist/chunk-WJB7WI4J.js +0 -3753
  181. package/dist/studio/chunk-3GHTHPZD.js +0 -1105
  182. package/dist/studio/chunk-3GHTHPZD.js.map +0 -1
  183. package/dist/studio/chunk-EEXSYY5F.js +0 -190
  184. package/dist/studio/chunk-EEXSYY5F.js.map +0 -1
  185. package/dist/studio/chunk-G3EDKRZH.js +0 -1442
  186. package/dist/studio/chunk-G3EDKRZH.js.map +0 -1
  187. package/dist/studio/chunk-PEAKCOUW.js +0 -942
  188. package/dist/studio/chunk-PEAKCOUW.js.map +0 -1
  189. package/dist/studio/chunk-PZ5AY32C.js +0 -10
  190. package/dist/studio/chunk-PZ5AY32C.js.map +0 -1
  191. package/dist/studio/chunk-Y2OHHNM2.js +0 -970
  192. package/dist/studio/chunk-Y2OHHNM2.js.map +0 -1
  193. package/dist/studio/domEditingLayers-PYST4G45.js +0 -47
  194. package/dist/studio/domEditingLayers-PYST4G45.js.map +0 -1
  195. package/dist/studio/index.css +0 -165
  196. package/dist/studio/index.css.map +0 -1
  197. package/dist/studio/index.d.ts +0 -4315
  198. package/dist/studio/index.js +0 -100971
  199. package/dist/studio/index.js.map +0 -1
  200. package/dist/studio/player.d.ts +0 -30
  201. package/dist/studio/player.js +0 -10
  202. package/dist/studio/player.js.map +0 -1
  203. package/dist/studio/styles/tailwind-preset.d.ts +0 -39
  204. package/dist/studio/styles/tailwind-preset.js +0 -50
  205. package/dist/studio/styles/tailwind-preset.js.map +0 -1
  206. package/dist/studio/styles.css +0 -1
  207. package/dist/studio/ui.d.ts +0 -297
  208. package/dist/studio/ui.js +0 -66
  209. package/dist/studio/ui.js.map +0 -1
@@ -20,30 +20,30 @@ import {
20
20
  } from "./chunk-3DKN5WKL.js";
21
21
  import {
22
22
  runEnvironmentChecks
23
- } from "./chunk-DIRJ322I.js";
23
+ } from "./chunk-66SAATRI.js";
24
24
  import {
25
25
  getAvailableMemoryMb,
26
26
  getFreeDiskMb,
27
27
  getShmSizeMb,
28
28
  getSystemMeta
29
- } from "./chunk-GQJZORQP.js";
29
+ } from "./chunk-XBSPQ52S.js";
30
30
  import {
31
31
  defineCommand
32
32
  } from "./chunk-S3S4TGEH.js";
33
33
  import {
34
34
  resolveExtractCacheDir
35
- } from "./chunk-5VMR4WBS.js";
35
+ } from "./chunk-WU2B74TL.js";
36
36
  import {
37
37
  getUpdateMeta,
38
38
  withMeta
39
- } from "./chunk-P6WH6QTV.js";
39
+ } from "./chunk-K7ES5RSK.js";
40
40
  import {
41
41
  CONFIG_PATH,
42
42
  withFileLock
43
43
  } from "./chunk-XUXGIA7H.js";
44
44
  import {
45
45
  VERSION
46
- } from "./chunk-4OC7MQNB.js";
46
+ } from "./chunk-TBOMPYG6.js";
47
47
  import {
48
48
  normalizeErrorMessage
49
49
  } from "./chunk-KNU5COPB.js";
@@ -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-YKMHR6LN.js");
235
+ const { findWhisper, getInstallInstructions } = await import("./manager-5ORDVWJB.js");
236
236
  const result = findWhisper();
237
237
  if (result) {
238
238
  return { ok: true, detail: result.executablePath };
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  realFilePath
9
- } from "./chunk-G75ENCEZ.js";
9
+ } from "./chunk-AIJS74LG.js";
10
10
  import {
11
11
  atomicTempPath,
12
12
  isAtomicTempPath,
@@ -17,7 +17,7 @@ import {
17
17
  mkdirWithinProject
18
18
  } from "./chunk-OFQWTKPW.js";
19
19
 
20
- // ../studio-server/dist/chunk-K3H6HTVC.js
20
+ // ../studio-server/dist/chunk-Y7V6FJHS.js
21
21
  import { randomUUID as randomUUID6 } from "crypto";
22
22
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
23
23
  import {
@@ -310,6 +310,11 @@ function createProjectSignature(projectDir, excluding = /* @__PURE__ */ new Set(
310
310
  return signature;
311
311
  }
312
312
  var BLOB_HASH = /^[0-9a-f]{64}$/;
313
+ function blobPath(dir, hash) {
314
+ if (!BLOB_HASH.test(hash)) throw new Error("That is not a history blob.");
315
+ return join(dir, hash.slice(0, 2), hash);
316
+ }
317
+ var readBlob = (dir, hash) => readFile(blobPath(dir, hash));
313
318
  async function hashFile(path) {
314
319
  const hash = createHash3("sha256");
315
320
  for await (const chunk of createReadStream(path)) hash.update(chunk);
@@ -333,10 +338,7 @@ async function openBlobStore(dir) {
333
338
  for (const shard of await readdir(dir))
334
339
  for (const hash of await readdir(join(dir, shard)).catch(() => []))
335
340
  sizes.set(hash, (await stat(join(dir, shard, hash))).size);
336
- const pathOf = (hash) => {
337
- if (!BLOB_HASH.test(hash)) throw new Error("That is not a history blob.");
338
- return join(dir, hash.slice(0, 2), hash);
339
- };
341
+ const pathOf = (hash) => blobPath(dir, hash);
340
342
  let total = [...sizes.values()].reduce((sum, size) => sum + size, 0);
341
343
  return {
342
344
  async put(absPath) {
@@ -356,7 +358,7 @@ async function openBlobStore(dir) {
356
358
  return hash;
357
359
  },
358
360
  has: (hash) => sizes.has(hash),
359
- read: async (hash) => readFile(pathOf(hash)),
361
+ read: async (hash) => readBlob(dir, hash),
360
362
  writeTo: async (hash, absPath, beforeReplace) => cloneOrCopy(pathOf(hash), absPath, beforeReplace),
361
363
  bytes: () => total,
362
364
  size: (hash) => sizes.get(hash) ?? 0,
@@ -798,6 +800,19 @@ function isHistoryPath(path) {
798
800
  if (KEPT_HIDDEN_PATHS.has(path)) return true;
799
801
  return !path.split("/").some((segment) => segment.startsWith("."));
800
802
  }
803
+ var logFileIn = (home) => join5(home, "log.jsonl");
804
+ function listOf(log) {
805
+ const undone = undoneIds(log.entries);
806
+ return log.entries.map((entry) => ({
807
+ ...entry,
808
+ pinned: log.pins.has(entry.id),
809
+ undone: undone.has(entry.id)
810
+ }));
811
+ }
812
+ function peekOf(log, point) {
813
+ const files = manifestAt(log, point);
814
+ return files && Object.fromEntries(files);
815
+ }
801
816
  function withoutHiddenPaths(log) {
802
817
  for (const path of log.baseline.keys()) if (!isHistoryPath(path)) log.baseline.delete(path);
803
818
  for (const entry of log.entries)
@@ -904,7 +919,7 @@ var Engine = class {
904
919
  return this.foldsCase ? path.toLowerCase() : path;
905
920
  }
906
921
  get logFile() {
907
- return join5(this.home, "log.jsonl");
922
+ return logFileIn(this.home);
908
923
  }
909
924
  now() {
910
925
  return (this.options.now ?? Date.now)();
@@ -1574,12 +1589,7 @@ var Engine = class {
1574
1589
  },
1575
1590
  list: () => {
1576
1591
  this.assertOpen();
1577
- const undone = undoneIds(this.log.entries);
1578
- return this.log.entries.map((entry) => ({
1579
- ...entry,
1580
- pinned: this.log.pins.has(entry.id),
1581
- undone: undone.has(entry.id)
1582
- }));
1592
+ return listOf(this.log);
1583
1593
  },
1584
1594
  step: (direction, who, { writeToken } = {}) => this.operation(writeToken, async () => {
1585
1595
  const target = this.next(direction, who);
@@ -1592,8 +1602,7 @@ var Engine = class {
1592
1602
  ),
1593
1603
  peek: (point) => {
1594
1604
  this.assertOpen();
1595
- const files = manifestAt(this.log, point);
1596
- return files && Object.fromEntries(files);
1605
+ return peekOf(this.log, point);
1597
1606
  },
1598
1607
  checkout: (entryId, side, emptyDir) => this.queue(async () => {
1599
1608
  this.entry(entryId);
@@ -1689,6 +1698,22 @@ async function openProjectHistory(options) {
1689
1698
  throw error;
1690
1699
  }
1691
1700
  }
1701
+ function readProjectHistory(options) {
1702
+ const dir = resolve3(options.projectDir);
1703
+ const id = readId(dir);
1704
+ const home = id && isRecordedFolder(join5(options.historyRoot, id), statSync3(dir)) ? join5(options.historyRoot, id) : null;
1705
+ const read = home && readLog(logFileIn(home), () => {
1706
+ });
1707
+ const log = withoutHiddenPaths(read || { baseline: /* @__PURE__ */ new Map(), entries: [], pins: /* @__PURE__ */ new Set() });
1708
+ return {
1709
+ list: () => listOf(log),
1710
+ peek: (point) => peekOf(log, point),
1711
+ readBlob: async (hash) => {
1712
+ if (!home) throw new Error("That is not a history blob.");
1713
+ return readBlob(join5(home, "blobs"), hash);
1714
+ }
1715
+ };
1716
+ }
1692
1717
  function historyCache(open) {
1693
1718
  const histories = /* @__PURE__ */ new Map();
1694
1719
  const get = async (projectDir) => {
@@ -1736,5 +1761,6 @@ export {
1736
1761
  UNDO_MODES,
1737
1762
  HistoryClosedError,
1738
1763
  openProjectHistory,
1764
+ readProjectHistory,
1739
1765
  historyCache
1740
1766
  };
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-AWDFDFI3.js";
15
15
  import {
16
16
  isBlockedNetworkHost
17
- } from "./chunk-5VMR4WBS.js";
17
+ } from "./chunk-WU2B74TL.js";
18
18
  import {
19
19
  DOMParser,
20
20
  parseHTML
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  FONT_ALIAS_MAP,
16
16
  resolveAliasDisplayName
17
- } from "./chunk-MQZVBHEY.js";
17
+ } from "./chunk-LFNQDTSH.js";
18
18
  import {
19
19
  parseHTML
20
20
  } from "./chunk-SDYDNHEE.js";
@@ -3848,9 +3848,9 @@ async function systemFamilyFaceRules(lookupFamily, emitFamily, log) {
3848
3848
  rules.push(buildFontFaceRule(emitFamily, dataUri, variant.weight, variant.style));
3849
3849
  }
3850
3850
  if (totalBytes > SYSTEM_FONT_SIZE_LIMIT) {
3851
- log.warn(`[Compiler] System font "${lookupFamily}" is large (${(totalBytes / 1024 / 1024).toFixed(1)} MB total across ${variants.length} variant(s)) \u2014 embedding anyway. Consider font subsetting for production.`);
3851
+ log.warn(`[Compiler] System font "${lookupFamily}" is large (${(totalBytes / 1024 / 1024).toFixed(1)} MB total across ${variants.length} variant(s)), embedding anyway. Consider font subsetting for production.`);
3852
3852
  }
3853
- log.info(`[Compiler] Embedded system font "${lookupFamily}" \u2014 ${variants.length} variant(s), ${(totalBytes / 1024).toFixed(0)} KB total`);
3853
+ log.info(`[Compiler] Embedded system font "${lookupFamily}": ${variants.length} variant(s), ${(totalBytes / 1024).toFixed(0)} KB total`);
3854
3854
  return rules;
3855
3855
  }
3856
3856
  async function resolveFamilyFaceRules(normalizedFamily, lookupFamily, emitFamily, optional, options, fontText) {
@@ -4064,7 +4064,7 @@ function fontCacheDir(slug) {
4064
4064
  const fallback = join2(ephemeralFontCacheRoot, slug);
4065
4065
  mkdirSync2(fallback, { recursive: true });
4066
4066
  if (firstFallback) {
4067
- STDERR_LOGGER.warn(`Font cache directory is unwritable (${dir}). Using temporary fallback \u2014 fonts will re-download each run. Fix with: chmod 755 ${resolveFontCacheRoot()}`);
4067
+ STDERR_LOGGER.warn(`Font cache directory is unwritable (${dir}). Using temporary fallback, so fonts will re-download each run. Fix with: chmod 755 ${resolveFontCacheRoot()}`);
4068
4068
  }
4069
4069
  return fallback;
4070
4070
  }
@@ -20,13 +20,13 @@ import {
20
20
  import {
21
21
  getPreparedWavDurationSeconds,
22
22
  prepareWav
23
- } from "./chunk-3XTEXWNN.js";
23
+ } from "./chunk-CVPWZ5LY.js";
24
24
  import {
25
25
  emitWords
26
26
  } from "./chunk-6IHWCZ3W.js";
27
27
  import {
28
28
  stoppedByCancelSignal
29
- } from "./chunk-MXNDKDFT.js";
29
+ } from "./chunk-54UXJKFF.js";
30
30
  import {
31
31
  PARAKEET_MODEL_LABEL,
32
32
  SHERPA_ERROR_PREFIX,
@@ -10,19 +10,19 @@ import {
10
10
  import {
11
11
  launchManagedBrowser,
12
12
  resolveManagedGpuMode
13
- } from "./chunk-5WADG7PR.js";
13
+ } from "./chunk-XJUZEB44.js";
14
14
  import {
15
15
  resolveDiagnosticNavigationTimeoutMs,
16
16
  windowsChromeCrashRemediation
17
- } from "./chunk-GZM2EFOE.js";
17
+ } from "./chunk-3HSWLZ6S.js";
18
18
  import {
19
19
  resolveLocalBrowserGpuMode,
20
20
  resolveLocalWebGpu
21
- } from "./chunk-7SDCIWHQ.js";
21
+ } from "./chunk-SYMSKGXI.js";
22
22
  import {
23
23
  assertWebGpuAdapterAvailable,
24
24
  compositionRequiresWebGpu
25
- } from "./chunk-5VMR4WBS.js";
25
+ } from "./chunk-WU2B74TL.js";
26
26
  import {
27
27
  normalizeErrorMessage
28
28
  } from "./chunk-KNU5COPB.js";
@@ -52,7 +52,7 @@ function resolveCliChromeGpuMode(envMode = process.env.PRODUCER_BROWSER_GPU_MODE
52
52
  return resolveLocalBrowserGpuMode(void 0, envMode);
53
53
  }
54
54
  function compositionRuntimeReadyInBrowser() {
55
- return Boolean(Reflect.get(window, "__renderReady"));
55
+ return Boolean(Reflect.get(window, "__renderReady")) || typeof Reflect.get(window, "__hfStartupError") === "string";
56
56
  }
57
57
  function shaderTransitionsReadyInBrowser() {
58
58
  function shaderTransitionRegistryReady() {
@@ -75,8 +75,11 @@ function shaderTransitionsReadyInBrowser() {
75
75
  }
76
76
  return shaderTransitionRegistryReady() ?? shaderLoadingOverlayReady();
77
77
  }
78
- function waitForRuntimeReady(page, timeoutMs) {
79
- return page.waitForFunction(compositionRuntimeReadyInBrowser, { timeout: timeoutMs }).then(() => true).catch(() => false);
78
+ async function waitForRuntimeReady(page, timeoutMs) {
79
+ const settled = await page.waitForFunction(compositionRuntimeReadyInBrowser, { timeout: timeoutMs }).then(() => true).catch(() => false);
80
+ const startupError = await page.evaluate(() => Reflect.get(window, "__hfStartupError")).catch(() => void 0);
81
+ if (typeof startupError === "string") throw new Error(startupError);
82
+ return settled;
80
83
  }
81
84
  async function waitForCompositionSettle(page, options) {
82
85
  const runtimeReady = await waitForRuntimeReady(page, options.renderReadyTimeoutMs);
@@ -104,7 +107,7 @@ async function openSettledCompositionPage(html, url, options) {
104
107
  const { ensureBrowser, findSystemBrowser } = await import("./manager-BPSR6D3V.js");
105
108
  const browser = await ensureBrowser();
106
109
  const puppeteer = await import("puppeteer-core");
107
- const { buildChromeArgs } = await import("./src-VUJ2FUFK.js");
110
+ const { buildChromeArgs } = await import("./src-LIERUCFW.js");
108
111
  const requestedGpuMode = options.browserGpuMode ?? resolveCliChromeGpuMode();
109
112
  const requiresWebGpu = compositionRequiresWebGpu(html);
110
113
  let softwareWebGpu = false;
@@ -116,7 +116,7 @@ function resolveSlideshow(manifest, scenes) {
116
116
  const sequences = {};
117
117
  for (const seq of manifest.slideSequences ?? []) {
118
118
  if (Object.prototype.hasOwnProperty.call(sequences, seq.id)) {
119
- errors.push(`duplicate slideSequence id "${seq.id}" \u2014 only the last definition is kept`);
119
+ errors.push(`duplicate slideSequence id "${seq.id}": only the last definition is kept`);
120
120
  }
121
121
  sequences[seq.id] = {
122
122
  id: seq.id,
@@ -38,7 +38,7 @@ import {
38
38
  stripEmbeddedRuntimeScripts,
39
39
  styleElementsFor,
40
40
  warnUnknownEnumValues
41
- } from "./chunk-WJB7WI4J.js";
41
+ } from "./chunk-Z6FLHIDV.js";
42
42
  import {
43
43
  cssVariableName
44
44
  } from "./chunk-VC76R6W2.js";
@@ -48,7 +48,7 @@ import {
48
48
  } from "./chunk-OFQWTKPW.js";
49
49
  import {
50
50
  lintHyperframeHtml
51
- } from "./chunk-IEIJRMLZ.js";
51
+ } from "./chunk-JDB65PPT.js";
52
52
  import {
53
53
  checkSubCompositionUsability,
54
54
  resolveSubCompositionContent
@@ -267,6 +267,66 @@ function sanitizeCssValue(value) {
267
267
  import { AsyncLocalStorage } from "async_hooks";
268
268
  import { readFileSync, existsSync, statSync } from "fs";
269
269
  import { resolve as resolve2, relative, dirname, isAbsolute, sep } from "path";
270
+
271
+ // ../core/dist/compiler/standaloneEntry.js
272
+ function isTemplateEntry(html) {
273
+ return html.trimStart().startsWith("<template");
274
+ }
275
+ function normalizeCompositionSrcPath(srcPath) {
276
+ return srcPath.replace(/\\/g, "/").replace(/^\.\//, "");
277
+ }
278
+ function readSceneRootDuration(entryHtml) {
279
+ if (!entryHtml)
280
+ return null;
281
+ const { document } = parseHTML(entryHtml);
282
+ const template = document.querySelector("template");
283
+ const scope = template ? parseHTML(template.innerHTML).document : document;
284
+ const root = scope.querySelector("[data-composition-id]");
285
+ return root?.getAttribute("data-duration") ?? null;
286
+ }
287
+ function createStandaloneEntryRenderClone(root, host, sceneDuration) {
288
+ const hostClone = host.cloneNode(true);
289
+ hostClone.setAttribute("data-start", "0");
290
+ if (root === host)
291
+ return hostClone;
292
+ const rootClone = root.cloneNode(false);
293
+ if (sceneDuration != null) {
294
+ rootClone.setAttribute("data-duration", sceneDuration);
295
+ } else {
296
+ rootClone.removeAttribute("data-duration");
297
+ }
298
+ rootClone.appendChild(hostClone);
299
+ return rootClone;
300
+ }
301
+ function replaceBodyWithRenderClone(body, renderClone) {
302
+ const libraries = Array.from(body.children).filter((child) => child.tagName === "SCRIPT" && child.hasAttribute("src"));
303
+ while (body.firstChild) {
304
+ body.removeChild(body.firstChild);
305
+ }
306
+ for (const library of libraries)
307
+ body.appendChild(library);
308
+ body.appendChild(renderClone);
309
+ }
310
+ function extractStandaloneEntryFromIndex(indexHtml, entryFile, entryHtml) {
311
+ const normalizedEntryFile = normalizeCompositionSrcPath(entryFile);
312
+ const { document } = parseHTML(indexHtml);
313
+ const body = document.querySelector("body");
314
+ if (!body)
315
+ return null;
316
+ const hosts = Array.from(document.querySelectorAll("[data-composition-src]"));
317
+ const host = hosts.find((candidate) => normalizeCompositionSrcPath(candidate.getAttribute("data-composition-src") || "") === normalizedEntryFile);
318
+ if (!host)
319
+ return null;
320
+ const root = Array.from(body.children).find((candidate) => candidate.hasAttribute("data-composition-id")) ?? null;
321
+ if (!root)
322
+ return null;
323
+ const sceneDuration = readSceneRootDuration(entryHtml) ?? host.getAttribute("data-duration");
324
+ const renderClone = createStandaloneEntryRenderClone(root, host, sceneDuration);
325
+ replaceBodyWithRenderClone(body, renderClone);
326
+ return document.toString();
327
+ }
328
+
329
+ // ../core/dist/compiler/htmlBundler.js
270
330
  import { transformSync } from "esbuild";
271
331
 
272
332
  // ../core/dist/generated/svg-selector-aliases-inline.js
@@ -2460,23 +2520,31 @@ function bundleToSingleHtml(projectDir, options) {
2460
2520
  const bundle = () => bundleProject(projectDir, options);
2461
2521
  return options?.onRead ? bundleReads.run(options.onRead, bundle) : bundle();
2462
2522
  }
2523
+ function readMountedSceneShell(projectDir, entryFile, entryHtml) {
2524
+ if (!isTemplateEntry(entryHtml))
2525
+ return null;
2526
+ const indexHtml = safeReadFile(resolve2(projectDir, "index.html"));
2527
+ return indexHtml === null ? null : extractStandaloneEntryFromIndex(indexHtml, entryFile, entryHtml);
2528
+ }
2463
2529
  async function bundleProject(projectDir, options) {
2464
2530
  const entryFile = options?.entryFile ?? "index.html";
2465
2531
  const indexPath = resolveWithinProject(projectDir, entryFile);
2466
2532
  if (!indexPath || !existsSync(indexPath)) {
2467
2533
  throw new Error(`${entryFile} not found in project directory`);
2468
2534
  }
2469
- const sourceDir = dirname(indexPath);
2535
+ noteRead(indexPath);
2536
+ const entryHtml = readFileSync(indexPath, "utf-8");
2537
+ const mountedShell = readMountedSceneShell(projectDir, entryFile, entryHtml);
2538
+ const sourceDir = mountedShell ? projectDir : dirname(indexPath);
2470
2539
  const resolveEntryPath = (relativePath) => {
2471
2540
  const resolved = resolve2(sourceDir, relativePath);
2472
2541
  return isSafePath(projectDir, resolved) ? resolved : null;
2473
2542
  };
2474
2543
  const resolveEntryUrl = (url) => resolveEntryPath(decodedUrlPath(url));
2475
2544
  const readSource = options?.stampHfIds ? ensureHfIds : (html) => html;
2476
- noteRead(indexPath);
2477
- const rawHtml = readSource(readFileSync(indexPath, "utf-8"));
2545
+ const rawHtml = readSource(mountedShell ?? entryHtml);
2478
2546
  const compiled = await compileHtml(rawHtml, sourceDir, options?.probeMediaDuration);
2479
- if (options?.staticGuard !== false) {
2547
+ if (options?.staticGuard !== false && !mountedShell) {
2480
2548
  const staticGuard = await validateHyperframeHtmlContract(compiled);
2481
2549
  if (!staticGuard.isValid) {
2482
2550
  console.warn(`[StaticGuard] Invalid HyperFrame contract: ${staticGuard.missingKeys.join("; ")}`);
@@ -3017,6 +3085,8 @@ export {
3017
3085
  ensureExternalScriptTag,
3018
3086
  emitMountedModuleScripts,
3019
3087
  FLATTENED_INNER_ROOT_STRIP_ATTRS,
3088
+ isTemplateEntry,
3089
+ extractStandaloneEntryFromIndex,
3020
3090
  scopeCssToComposition,
3021
3091
  wrapScopedCompositionScript,
3022
3092
  buildVariablesByCompScript,