hyperframes 0.8.143 → 0.8.145

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 (202) hide show
  1. package/README.md +3 -2
  2. package/dist/{add-Q5EYDUAY.js → add-B6OUH46W.js} +12 -12
  3. package/dist/{animatedGifPrep-H2DUQEZ3.js → animatedGifPrep-MIWRDJIO.js} +7 -7
  4. package/dist/{asset-C7JBYYX4.js → asset-XJ2B2PU3.js} +2 -2
  5. package/dist/{assetCataloger-FRO4G6OU.js → assetCataloger-A5ZLSCMZ.js} +3 -3
  6. package/dist/{auth-FRWLCO36.js → auth-5HOVCZMV.js} +1 -1
  7. package/dist/{autoUpdate-E4OZXQK6.js → autoUpdate-WVNL5K3D.js} +2 -2
  8. package/dist/{backgroundChecks-FSUVHN5L.js → backgroundChecks-IGF54SFH.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-4U73BYTU.js → batchRender-T6JEGCQV.js} +4 -4
  11. package/dist/{beats-U6KJWF35.js → beats-37T6Y6QP.js} +13 -13
  12. package/dist/{benchmark-5ONT7V7B.js → benchmark-ZVVLOWPP.js} +9 -9
  13. package/dist/{browser-R4DU46IE.js → browser-4SSJOLH4.js} +39 -55
  14. package/dist/{bundleWithLocalizedFonts-VH55VOAL.js → bundleWithLocalizedFonts-XWK423QP.js} +2 -2
  15. package/dist/{capture-OGQAEYKO.js → capture-2SF7YP57.js} +2 -2
  16. package/dist/{capture-26G2DPSI.js → capture-KZXOPBMO.js} +18 -18
  17. package/dist/{catalog-RKORTIUE.js → catalog-NLD4A2C6.js} +12 -12
  18. package/dist/{catch-up-4OBERRQO.js → catch-up-4BSRN6IR.js} +4 -4
  19. package/dist/{check-P2XDN57S.js → check-IA44QQWM.js} +66 -55
  20. package/dist/{checkBrowser-NTGJGAEA.js → checkBrowser-VM35KZMW.js} +81 -30
  21. package/dist/{chunk-LVX6NK36.js → chunk-3IBMBNYY.js} +1 -1
  22. package/dist/{chunk-6XMFEICO.js → chunk-3KU3PFDW.js} +77 -92
  23. package/dist/{chunk-PJU63L6W.js → chunk-4ORLNTET.js} +1 -1
  24. package/dist/{chunk-DF2BHILQ.js → chunk-4QWD6JYN.js} +3 -3
  25. package/dist/{chunk-BT27OYYX.js → chunk-5NRXZGKK.js} +18 -12
  26. package/dist/{chunk-UM2GRYM3.js → chunk-5WVW7P23.js} +3 -3
  27. package/dist/{chunk-I7QGQAZM.js → chunk-6LGNTUZN.js} +7 -7
  28. package/dist/{chunk-LAOCA3MQ.js → chunk-A4Q7W4LV.js} +13 -8
  29. package/dist/{chunk-4PFZPP2N.js → chunk-A6S35NYA.js} +54 -16
  30. package/dist/{chunk-QRKLPWEX.js → chunk-ADF3X6GM.js} +11 -2
  31. package/dist/chunk-AUWHD7RA.js +3753 -0
  32. package/dist/{chunk-W35EKBS6.js → chunk-BFACGEII.js} +2 -2
  33. package/dist/{chunk-HW4AKJ5F.js → chunk-BIAC7IJT.js} +1 -1
  34. package/dist/{chunk-ZLW2V65P.js → chunk-BSQ7XANM.js} +3 -2
  35. package/dist/{chunk-LCSMOLGX.js → chunk-BYSBRF24.js} +69 -8
  36. package/dist/{chunk-2LBBHMKT.js → chunk-CFUXNBWH.js} +1 -1
  37. package/dist/{chunk-BFDJ63J5.js → chunk-DDIVWXN7.js} +1 -1
  38. package/dist/{chunk-KOEWEFHK.js → chunk-DIRJ322I.js} +10 -5
  39. package/dist/{chunk-FVYXDXEV.js → chunk-DWUKJQTO.js} +2 -2
  40. package/dist/{chunk-POLR33RB.js → chunk-EPE2HRJK.js} +15 -17
  41. package/dist/{chunk-UICWP23D.js → chunk-FBCULCAL.js} +3 -3
  42. package/dist/{chunk-F26LCYRY.js → chunk-FDT6KQV4.js} +142 -81
  43. package/dist/{chunk-P7THMINS.js → chunk-FXJJCPPB.js} +1 -1
  44. package/dist/{chunk-BYK73CR7.js → chunk-GBGJ7A3D.js} +5 -5
  45. package/dist/{sherpa-LVIUEAGF.js → chunk-GEMJYBRU.js} +11 -45
  46. package/dist/{chunk-KO5QBV73.js → chunk-GMAJB2P6.js} +1 -1
  47. package/dist/{chunk-KQLGTGE5.js → chunk-GRY3PN3K.js} +2 -2
  48. package/dist/{chunk-7UYBQ6NF.js → chunk-GXJEGZL2.js} +30 -20
  49. package/dist/{chunk-KJJLA674.js → chunk-GZVP4TWN.js} +1 -46
  50. package/dist/{chunk-QVYVUCWD.js → chunk-HB7FJOY4.js} +1 -1
  51. package/dist/{chunk-QFN7NVWM.js → chunk-ICKDMTLA.js} +1 -1
  52. package/dist/{chunk-XONFUK3M.js → chunk-IEIJRMLZ.js} +47 -35
  53. package/dist/{chunk-PAGIICKN.js → chunk-IHTRYDFN.js} +1 -1
  54. package/dist/chunk-IR35BCLK.js +13 -0
  55. package/dist/{chunk-KDPYVTEU.js → chunk-KBB4RG6F.js} +6 -1
  56. package/dist/{chunk-ZQQ3SEIE.js → chunk-KIFHYXPB.js} +99 -31
  57. package/dist/{chunk-TAMQYQGJ.js → chunk-LAFJSYDL.js} +1 -1
  58. package/dist/{chunk-U3X3TPBW.js → chunk-MAYCCGMQ.js} +11 -2
  59. package/dist/{chunk-HC7EVDEL.js → chunk-OB5MJR4W.js} +1 -1
  60. package/dist/{chunk-N3DQEVSI.js → chunk-OTHDVXOJ.js} +8 -5
  61. package/dist/{chunk-Y6QL2LGO.js → chunk-PLR7Z6TC.js} +1 -1
  62. package/dist/{chunk-OBXQRJWQ.js → chunk-QATWIE4K.js} +1 -1
  63. package/dist/{chunk-HLYOEIWM.js → chunk-QLSM7K5S.js} +2 -2
  64. package/dist/{chunk-LW6HO6U3.js → chunk-R42WWQVB.js} +1 -1
  65. package/dist/{chunk-HMT2RPZU.js → chunk-U5QY7KTN.js} +13 -9
  66. package/dist/chunk-UPFUC4DB.js +136 -0
  67. package/dist/{chunk-33RZPZ4K.js → chunk-UXO2L7HJ.js} +366 -156
  68. package/dist/{chunk-GNBGPUJ7.js → chunk-VHFEMFYL.js} +3 -3
  69. package/dist/{chunk-4M4EC7JX.js → chunk-VRW6EBHV.js} +12 -1
  70. package/dist/{chunk-VIVBA6E6.js → chunk-XBX4QJP7.js} +1 -1
  71. package/dist/{chunk-CLOH4LIB.js → chunk-XIHCMVMG.js} +2 -2
  72. package/dist/{chunk-TVCRUG2S.js → chunk-ZEUONDQG.js} +1 -1
  73. package/dist/{chunk-OSSHSIMD.js → chunk-ZF7SXQJ7.js} +1 -1
  74. package/dist/{chunk-5FISWJ37.js → chunk-ZIYZ77MR.js} +4 -4
  75. package/dist/{chunk-3NE7ZYU2.js → chunk-ZSVUAVMT.js} +3 -3
  76. package/dist/{clean-YHGPY33K.js → clean-RDKJB5FK.js} +18 -18
  77. package/dist/cli.js +68 -56
  78. package/dist/{cloud-DOFI5ISR.js → cloud-QVPVVNCW.js} +4 -4
  79. package/dist/{cloudrun-KTZ4XDHL.js → cloudrun-3RE2UCQG.js} +4 -4
  80. package/dist/{compare-SMMIZN2C.js → compare-LEDOY7MO.js} +25 -25
  81. package/dist/{compiler-TEXQWW6N.js → compiler-F54OZZPM.js} +10 -4
  82. package/dist/{component-B3GCNGSS.js → component-N42M67WY.js} +3 -3
  83. package/dist/{compositions-OQNZZTKF.js → compositions-VB2J2LZI.js} +11 -11
  84. package/dist/{delete-EL5LVSEP.js → delete-Q6RWMJ4Z.js} +2 -2
  85. package/dist/{dist-5UVIRMSM.js → dist-KDJTFJHA.js} +2 -2
  86. package/dist/{dist-XN234YFQ.js → dist-Q4BI5A73.js} +4 -4
  87. package/dist/{doctor-UOL3OI2A.js → doctor-JMMUHDRV.js} +13 -13
  88. package/dist/{events-K2DB2PBC.js → events-6ZBSIBE5.js} +2 -2
  89. package/dist/{events-NIZBS6S7.js → events-RGUAHIBW.js} +3 -3
  90. package/dist/{feedback-QMP4E6L7.js → feedback-FIID6MZW.js} +9 -9
  91. package/dist/{ffmpeg-QIUFEFTY.js → ffmpeg-T5SH2EFJ.js} +3 -2
  92. package/dist/{figma-2AUJRNVC.js → figma-BL3JJC36.js} +3 -3
  93. package/dist/fontLocalizeCli.js +9 -9
  94. package/dist/{get-P5NC7SRM.js → get-P46GS7S6.js} +2 -2
  95. package/dist/{gpuPolicy-7N5MCE2G.js → gpuPolicy-AQ2BPLBK.js} +11 -9
  96. package/dist/{grade-compare-HV5AFZ6P.js → grade-compare-GDCWU7ZZ.js} +27 -27
  97. package/dist/{help-3TSTXBLN.js → help-HJR3RWFG.js} +2 -2
  98. package/dist/{history-D65XFJ6D.js → history-GGO5AWJB.js} +5 -5
  99. package/dist/hyperframe-runtime.js +59 -59
  100. package/dist/hyperframe.manifest.json +1 -1
  101. package/dist/hyperframe.runtime.iife.js +59 -59
  102. package/dist/hyperframes-player.global.js +3 -3
  103. package/dist/{info-TXV7MLFO.js → info-3GFWUBJC.js} +8 -8
  104. package/dist/{init-OSDMJZJV.js → init-36OPU2ZG.js} +35 -36
  105. package/dist/{inspect-RQQSAYIJ.js → inspect-F2HEL5ON.js} +26 -26
  106. package/dist/{installer-CDOB32HE.js → installer-NI6P6GC4.js} +5 -5
  107. package/dist/{keyframes-V75Q6GRM.js → keyframes-7OY3LMAZ.js} +6 -6
  108. package/dist/{lambda-RODV4RCX.js → lambda-6GJIWNJ3.js} +5 -5
  109. package/dist/{layout-IZAI5SFC.js → layout-FTMLNL5A.js} +26 -26
  110. package/dist/{lint-PLXOXY5R.js → lint-U6POHUON.js} +8 -8
  111. package/dist/{lintProject-OQ6H6XBR.js → lintProject-UBZ3TDHU.js} +2 -2
  112. package/dist/{list-BQBPNKDZ.js → list-IP5KI5Q2.js} +2 -2
  113. package/dist/{login-NP6F4FHC.js → login-4VWTVPHG.js} +4 -4
  114. package/dist/{manager-CT3D67CG.js → manager-BPSR6D3V.js} +2 -2
  115. package/dist/{manager-GXYF4AVO.js → manager-YKMHR6LN.js} +8 -5
  116. package/dist/{media-treatment-PXGMZ4A4.js → media-treatment-XGV44AGV.js} +16 -13
  117. package/dist/{models-CEZM6XZ7.js → models-UCXB6UR5.js} +59 -19
  118. package/dist/{motionShot-R4GHYWYM.js → motionShot-WPVNBXKA.js} +21 -22
  119. package/dist/{normalize-H6KUHHEI.js → normalize-U3SL5VG3.js} +2 -2
  120. package/dist/{normalize-audio-MQ7NFCOV.js → normalize-audio-TYJ3UEHO.js} +6 -6
  121. package/dist/{open-AKQTGNXF.js → open-HENOLVB2.js} +4 -4
  122. package/dist/parakeetRunner-VFQ6WFTD.js +67 -0
  123. package/dist/{pipeline-SYJYP2RM.js → pipeline-6WPSC3H4.js} +10 -9
  124. package/dist/{play-NBH4B7PL.js → play-OI53WNUM.js} +19 -19
  125. package/dist/{preflight-Y5DN5D37.js → preflight-B4AFK3RG.js} +4 -4
  126. package/dist/{present-XAX55CFS.js → present-NGMEQ4NO.js} +15 -15
  127. package/dist/{preview-OLANKNFA.js → preview-VT2HWRWZ.js} +19 -19
  128. package/dist/{producer-Q6YNZZUJ.js → producer-7TYEAUF7.js} +1 -1
  129. package/dist/{projectConfig-EM26P45P.js → projectConfig-B2AF5DXY.js} +7 -7
  130. package/dist/{publication-OXWJZKSX.js → publication-2PANQVC6.js} +3 -3
  131. package/dist/{publish-4VBWP2UB.js → publish-O5OL42BG.js} +11 -11
  132. package/dist/{remove-background-REB7427G.js → remove-background-T2JM6UVP.js} +11 -10
  133. package/dist/{render-K25YOG3M.js → render-OLPKOJRU.js} +11 -11
  134. package/dist/{render-3CVZ2SZG.js → render-W7OFXDOJ.js} +4 -4
  135. package/dist/{render-TSE75QUL.js → render-Z253WHBK.js} +26 -26
  136. package/dist/{render-batch-GGUOK3DS.js → render-batch-46IIBFKL.js} +4 -4
  137. package/dist/{renderCancellation-PZRWB53I.js → renderCancellation-QTZOCDJ2.js} +10 -9
  138. package/dist/renderSetupWorker.js +32 -44
  139. package/dist/{resolver-S5VK6UCB.js → resolver-J2PL5FVJ.js} +5 -5
  140. package/dist/sherpa-ZF42V3RN.js +75 -0
  141. package/dist/sherpaWorker.js +2 -1
  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/hyperframes-cli/references/lint-validate-inspect.md +1 -1
  149. package/dist/skills/media-use/audio/scripts/heygen-voice.mjs +2 -2
  150. package/dist/skills/media-use/audio/scripts/lib/main-module.mjs +13 -0
  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-I65FU5HD.js → skills-ACDOO3PX.js} +7 -7
  154. package/dist/{skillsUpdateCheck-J57RNNIV.js → skillsUpdateCheck-L5OXVVPU.js} +3 -3
  155. package/dist/{snapshot-YROOGY22.js → snapshot-UUVNZOW5.js} +28 -28
  156. package/dist/{src-JO5JOV7Y.js → src-BSLKXEGX.js} +10 -6
  157. package/dist/{src-X426BZAG.js → src-KS3AWFGT.js} +8 -8
  158. package/dist/{staticProjectServer-5VMBS262.js → staticProjectServer-2TTVGPQH.js} +15 -15
  159. package/dist/studio/assets/{hyperframes-player-BXSuksFh.js → hyperframes-player-DZ5JrMDg.js} +3 -3
  160. package/dist/studio/assets/{index-FgyO_5Kv.js → index-BOs6C0aZ.js} +1 -1
  161. package/dist/studio/assets/{index-BgOVCqjo.js → index-BqFRhNZa.js} +1 -1
  162. package/dist/studio/assets/{index-J7jpL4pj.js → index-D8W0a0Z9.js} +149 -149
  163. package/dist/studio/{chunk-TFLU2MGI.js → chunk-6JY3MTIX.js} +108 -2
  164. package/dist/studio/{chunk-H2DUOXTF.js → chunk-NZPJUZKT.js} +100 -4
  165. package/dist/studio/{chunk-UYWON5AX.js → chunk-TP6D3U37.js} +7 -100
  166. package/dist/studio/{chunk-LOVBLSMR.js → chunk-Y2OHHNM2.js} +35 -19
  167. package/dist/studio/{domEditingLayers-KBTPQKGA.js → domEditingLayers-PTP2ICGM.js} +3 -3
  168. package/dist/studio/index.d.ts +8 -5
  169. package/dist/studio/index.html +1 -1
  170. package/dist/studio/index.js +545 -495
  171. package/dist/studio/player.js +3 -3
  172. package/dist/studio/ui.d.ts +4 -5
  173. package/dist/studio/ui.js +1 -1
  174. package/dist/{studio-api-VRBZUGAE.js → studio-api-WYWF7XRC.js} +9 -9
  175. package/dist/{studioServer-DBNKZ6I6.js → studioServer-3FG4YTP7.js} +72 -54
  176. package/dist/{telemetry-CXAX3TO3.js → telemetry-PAOOB4T4.js} +3 -3
  177. package/dist/{timeline-VQ34WH7J.js → timeline-JIIJKKPC.js} +69 -47
  178. package/dist/{tokens-62R7VFAZ.js → tokens-3QRAM75Z.js} +2 -2
  179. package/dist/{transcribe-XOHPPL2O.js → transcribe-QSBP5MUG.js} +115 -51
  180. package/dist/{transcribe-7KR7IPJA.js → transcribe-SZB6UMXE.js} +14 -12
  181. package/dist/{tts-MUV42JXT.js → tts-B6AHFQEO.js} +1 -1
  182. package/dist/{updateCheck-POYNH3B5.js → updateCheck-V3DSB26K.js} +2 -2
  183. package/dist/{upgrade-NBNOT7J2.js → upgrade-L5GISOEV.js} +2 -2
  184. package/dist/{urlDownloader-3NS63A7B.js → urlDownloader-52FERT4X.js} +6 -6
  185. package/dist/{validate-Y2QDHAEP.js → validate-HVVLX7KO.js} +20 -20
  186. package/dist/{video-SJDMTSTL.js → video-MEOWRMFG.js} +7 -7
  187. package/package.json +1 -1
  188. package/dist/chunk-6TPZSTCL.js +0 -3681
  189. package/dist/studio/chunk-EEXSYY5F.js.map +0 -1
  190. package/dist/studio/chunk-H2DUOXTF.js.map +0 -1
  191. package/dist/studio/chunk-LOVBLSMR.js.map +0 -1
  192. package/dist/studio/chunk-PZ5AY32C.js.map +0 -1
  193. package/dist/studio/chunk-TFLU2MGI.js.map +0 -1
  194. package/dist/studio/chunk-UYWON5AX.js.map +0 -1
  195. package/dist/studio/domEditingLayers-KBTPQKGA.js.map +0 -1
  196. package/dist/studio/index.css.map +0 -1
  197. package/dist/studio/index.js.map +0 -1
  198. package/dist/studio/player.js.map +0 -1
  199. package/dist/studio/styles/tailwind-preset.js.map +0 -1
  200. package/dist/studio/ui.js.map +0 -1
  201. package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
  202. package/dist/{synthesize-C3IWDAXF.js → synthesize-UCI4X5O7.js} +4 -4
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/version.ts
9
- var VERSION = true ? "0.8.143" : "0.0.0-dev";
10
- var PRODUCER_VERSION = true ? "0.8.143" : "0.0.0-dev";
9
+ var VERSION = true ? "0.8.145" : "0.0.0-dev";
10
+ var PRODUCER_VERSION = true ? "0.8.145" : "0.0.0-dev";
11
11
 
12
12
  export {
13
13
  VERSION,
@@ -8,7 +8,7 @@ import {
8
8
  DEFAULT_REGISTRY_URL,
9
9
  fetchItemManifest,
10
10
  fetchRegistryManifest
11
- } from "./chunk-TAMQYQGJ.js";
11
+ } from "./chunk-LAFJSYDL.js";
12
12
 
13
13
  // src/registry/resolver.ts
14
14
  function defaultWarn(message) {
@@ -144,8 +144,9 @@ function rewriteAssetPath(compSrcPath, relativePath, assetExists) {
144
144
  const compDir = dirname(compSrcPath);
145
145
  if (!compDir || compDir === ".") return relativePath;
146
146
  const { basePath, suffix } = splitUrlSuffix(relativePath);
147
- if (!basePath) return relativePath;
148
- const filePath = decodeWellFormedEscapes(basePath);
147
+ const slashed = basePath.replace(/\\/g, "/");
148
+ if (!slashed || slashed.startsWith("/")) return relativePath;
149
+ const filePath = decodeWellFormedEscapes(slashed);
149
150
  const sibling = resolve2("/", join(compDir, filePath)).slice(1);
150
151
  if (!needsRewrite(filePath) && (!assetExists || !assetExists(sibling))) return relativePath;
151
152
  return encodeUrlPath(sibling) + suffix;
@@ -4,6 +4,9 @@ import { dirname as __hf_dirname } from "node:path";
4
4
  var require = __hf_createRequire(import.meta.url);
5
5
  var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
+ import {
8
+ normalizeErrorMessage
9
+ } from "./chunk-KNU5COPB.js";
7
10
 
8
11
  // src/utils/processTree.ts
9
12
  import { execFileSync, spawn } from "child_process";
@@ -121,6 +124,57 @@ async function terminateProcessTree(pid, options = {}) {
121
124
  return options.processGroup ? terminateProcessGroup(pid, signal) : terminatePidTree(pid, signal);
122
125
  }
123
126
 
127
+ // src/renderSetupWorkerLifecycle.ts
128
+ var RENDER_SETUP_SIGNALS = ["SIGINT", "SIGTERM", "SIGHUP"];
129
+ var RENDER_SETUP_RESULT_PREFIX = "HYPERFRAMES_RENDER_SETUP_RESULT:";
130
+ var RENDER_SETUP_ERROR_PREFIX = "HYPERFRAMES_RENDER_SETUP_ERROR:";
131
+ function installRenderSetupSignalHandlers(signalTarget, releaseLock, resendSignal, handleHangup = true) {
132
+ const handlers = /* @__PURE__ */ new Map();
133
+ const handledSignals = handleHangup ? RENDER_SETUP_SIGNALS : RENDER_SETUP_SIGNALS.filter((signal) => signal !== "SIGHUP");
134
+ for (const signal of handledSignals) {
135
+ const handler = () => {
136
+ releaseLock();
137
+ signalTarget.off(signal, handler);
138
+ resendSignal(signal);
139
+ };
140
+ handlers.set(signal, handler);
141
+ signalTarget.on(signal, handler);
142
+ }
143
+ return () => {
144
+ for (const [signal, handler] of handlers) signalTarget.off(signal, handler);
145
+ };
146
+ }
147
+ function prefixedLine(prefix, value) {
148
+ return prefix + JSON.stringify(value) + "\n";
149
+ }
150
+ function parseJson(text) {
151
+ try {
152
+ return JSON.parse(text);
153
+ } catch {
154
+ return void 0;
155
+ }
156
+ }
157
+ function prefixedValue(output, prefix) {
158
+ const line = output.split(/\r?\n/).find((text) => text.startsWith(prefix));
159
+ return line === void 0 ? void 0 : parseJson(line.slice(prefix.length));
160
+ }
161
+ function renderSetupResultLine(result) {
162
+ return prefixedLine(RENDER_SETUP_RESULT_PREFIX, result);
163
+ }
164
+ function renderSetupResultFrom(stdout) {
165
+ return prefixedValue(stdout, RENDER_SETUP_RESULT_PREFIX);
166
+ }
167
+ function renderSetupErrorLine(error) {
168
+ return "\n" + prefixedLine(RENDER_SETUP_ERROR_PREFIX, normalizeErrorMessage(error));
169
+ }
170
+ function renderSetupFailureFrom(stderr) {
171
+ const lines = stderr.split(/\r?\n/);
172
+ const at = lines.findIndex((text) => text.startsWith(RENDER_SETUP_ERROR_PREFIX));
173
+ const reason = at === -1 ? void 0 : parseJson(lines[at].slice(RENDER_SETUP_ERROR_PREFIX.length));
174
+ if (typeof reason !== "string" || reason === "") return void 0;
175
+ return { reason, earlierOutput: lines.slice(0, at).join("\n") };
176
+ }
177
+
124
178
  // src/utils/cancellableProcess.ts
125
179
  import { spawn as spawn2 } from "child_process";
126
180
  import { fileURLToPath } from "url";
@@ -269,7 +323,14 @@ function runCancellableProcess(command, args, options = {}) {
269
323
  }
270
324
  });
271
325
  }
272
- var SETUP_RESULT_PREFIX = "HYPERFRAMES_RENDER_SETUP_RESULT:";
326
+ function renderSetupError(error) {
327
+ if (!(error instanceof CancellableProcessError)) return error;
328
+ const failure = renderSetupFailureFrom(error.stderr);
329
+ if (failure?.earlierOutput.trim()) process.stderr.write(`${failure.earlierOutput.trimEnd()}
330
+ `);
331
+ const reason = failure?.reason ?? error.stderr.trim();
332
+ return reason ? new Error(reason, { cause: error }) : error;
333
+ }
273
334
  async function runRenderSetupWorker(mode, input, options) {
274
335
  const sourceMode = import.meta.url.endsWith(".ts");
275
336
  const workerUrl = new URL(
@@ -293,20 +354,20 @@ async function runRenderSetupWorker(mode, input, options) {
293
354
  );
294
355
  } catch (error) {
295
356
  if (options.signal?.aborted) options.signal.throwIfAborted();
296
- if (error instanceof CancellableProcessError && error.stderr.trim()) {
297
- throw new Error(error.stderr.trim(), { cause: error });
298
- }
299
- throw error;
357
+ throw renderSetupError(error);
300
358
  }
301
359
  if (result.stderr) process.stderr.write(result.stderr);
302
- const encoded = result.stdout.split(/\r?\n/).find((line) => line.startsWith(SETUP_RESULT_PREFIX))?.slice(SETUP_RESULT_PREFIX.length);
303
- if (!encoded) throw new Error(`${mode} setup process exited without a result`);
304
- return JSON.parse(encoded);
360
+ const value = renderSetupResultFrom(result.stdout);
361
+ if (value === void 0) throw new Error(`${mode} setup process exited without a result`);
362
+ return value;
305
363
  }
306
364
 
307
365
  export {
308
366
  processIsAlive,
309
367
  terminateProcessTree,
368
+ installRenderSetupSignalHandlers,
369
+ renderSetupResultLine,
370
+ renderSetupErrorLine,
310
371
  runCancellableProcess,
311
372
  runRenderSetupWorker
312
373
  };
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-HVW7ABXD.js";
13
13
  import {
14
14
  DEFAULT_REGISTRY_URL
15
- } from "./chunk-TAMQYQGJ.js";
15
+ } from "./chunk-LAFJSYDL.js";
16
16
 
17
17
  // src/utils/projectConfig.ts
18
18
  import { readFileSync, writeFileSync } from "fs";
@@ -19,7 +19,7 @@ import {
19
19
  decodeWellFormedEscapes,
20
20
  decodedUrlPath,
21
21
  readMediaOffsetSeconds
22
- } from "./chunk-ZLW2V65P.js";
22
+ } from "./chunk-BSQ7XANM.js";
23
23
 
24
24
  // ../studio-server/dist/chunk-32IH7WBY.js
25
25
  import { execFile } from "child_process";
@@ -10,22 +10,25 @@ import {
10
10
  distroLabel,
11
11
  getFFmpegInstallHint,
12
12
  parseLddMissingLibs
13
- } from "./chunk-TVCRUG2S.js";
13
+ } from "./chunk-ZEUONDQG.js";
14
14
  import {
15
15
  getFreeDiskMb
16
16
  } from "./chunk-GQJZORQP.js";
17
17
  import {
18
18
  ensureBrowser,
19
19
  findBrowser
20
- } from "./chunk-4PFZPP2N.js";
20
+ } from "./chunk-A6S35NYA.js";
21
21
  import {
22
22
  runCancellableProcess
23
- } from "./chunk-LCSMOLGX.js";
23
+ } from "./chunk-BYSBRF24.js";
24
24
  import {
25
25
  FFMPEG_PATH_ENV,
26
26
  FFPROBE_PATH_ENV,
27
27
  findFfBinary
28
28
  } from "./chunk-PJ3HDUCY.js";
29
+ import {
30
+ normalizeErrorMessage
31
+ } from "./chunk-KNU5COPB.js";
29
32
 
30
33
  // src/browser/preflight.ts
31
34
  import { existsSync } from "fs";
@@ -254,11 +257,13 @@ async function checkChrome(browserPath, signal) {
254
257
  };
255
258
  }
256
259
  let info;
260
+ let failure;
257
261
  try {
258
262
  info = signal ? await ensureBrowser({ preferManagedChrome: true, signal }) : await findBrowser();
259
- } catch {
263
+ } catch (error) {
260
264
  if (signal?.aborted) signal.throwIfAborted();
261
265
  info = void 0;
266
+ failure = normalizeErrorMessage(error);
262
267
  }
263
268
  if (info) {
264
269
  return chromeLaunchOutcome(
@@ -278,7 +283,7 @@ async function checkChrome(browserPath, signal) {
278
283
  ok: false,
279
284
  level: "error",
280
285
  title: "Chrome not found",
281
- detail: "Chrome Headless Shell is required for local rendering.",
286
+ detail: failure ?? "Chrome Headless Shell is required for local rendering.",
282
287
  hint: "Run: npx hyperframes browser ensure"
283
288
  };
284
289
  }
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  getMimeType
9
- } from "./chunk-7UYBQ6NF.js";
9
+ } from "./chunk-GXJEGZL2.js";
10
10
  import {
11
11
  injectTagsAtHeadStart
12
- } from "./chunk-6TPZSTCL.js";
12
+ } from "./chunk-AUWHD7RA.js";
13
13
 
14
14
  // src/utils/compositionServer.ts
15
15
  import { createHash } from "crypto";
@@ -6,20 +6,20 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveProject
9
- } from "./chunk-VIVBA6E6.js";
9
+ } from "./chunk-XBX4QJP7.js";
10
10
  import {
11
11
  installPageFunctionGuard,
12
12
  resolveCliChromeGpuMode,
13
13
  seekCompositionTimeline,
14
14
  waitForRuntimeReady
15
- } from "./chunk-HMT2RPZU.js";
15
+ } from "./chunk-U5QY7KTN.js";
16
16
  import {
17
17
  resolveCompositionViewportFromHtml
18
18
  } from "./chunk-FH7WODJH.js";
19
19
  import {
20
20
  launchManagedBrowser,
21
21
  resolveManagedGpuMode
22
- } from "./chunk-PJU63L6W.js";
22
+ } from "./chunk-4ORLNTET.js";
23
23
  import {
24
24
  defineCommand
25
25
  } from "./chunk-S3S4TGEH.js";
@@ -29,11 +29,11 @@ import {
29
29
  } from "./chunk-PBN6GBJE.js";
30
30
  import {
31
31
  decodeWellFormedEscapes
32
- } from "./chunk-ZLW2V65P.js";
32
+ } from "./chunk-BSQ7XANM.js";
33
33
  import {
34
34
  printDeprecationNotice,
35
35
  withMeta
36
- } from "./chunk-Y6QL2LGO.js";
36
+ } from "./chunk-PLR7Z6TC.js";
37
37
  import {
38
38
  normalizeErrorMessage
39
39
  } from "./chunk-KNU5COPB.js";
@@ -228,7 +228,7 @@ function extractCompositionErrorsFromLint(lintResult) {
228
228
  async function localizeRemoteAssets(html) {
229
229
  let dir;
230
230
  try {
231
- const { loadProducer } = await import("./producer-Q6YNZZUJ.js");
231
+ const { loadProducer } = await import("./producer-7TYEAUF7.js");
232
232
  const { localizeRemoteMediaSources, localizeRemoteImageSources, localizeRemoteFontFaces } = await loadProducer();
233
233
  dir = mkdtempSync(join(tmpdir(), "hf-validate-assets-"));
234
234
  const assetDir = dir;
@@ -249,10 +249,10 @@ async function localizeRemoteAssets(html) {
249
249
  }
250
250
  async function validateInBrowser(project, opts) {
251
251
  const projectDir = project.dir;
252
- const { bundleToSingleHtml } = await import("./compiler-TEXQWW6N.js");
253
- const { ensureBrowser } = await import("./manager-CT3D67CG.js");
254
- const { serveStaticProjectHtml } = await import("./staticProjectServer-5VMBS262.js");
255
- const { lintProject } = await import("./lintProject-OQ6H6XBR.js");
252
+ const { bundleToSingleHtml } = await import("./compiler-F54OZZPM.js");
253
+ const { ensureBrowser } = await import("./manager-BPSR6D3V.js");
254
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-2TTVGPQH.js");
255
+ const { lintProject } = await import("./lintProject-UBZ3TDHU.js");
256
256
  const lintResult = await lintProject(projectDir);
257
257
  const compositionErrors = extractCompositionErrorsFromLint(lintResult);
258
258
  const html = await bundleToSingleHtml(projectDir);
@@ -273,18 +273,16 @@ async function validateInBrowser(project, opts) {
273
273
  try {
274
274
  const browser = await ensureBrowser();
275
275
  const puppeteer = await import("puppeteer-core");
276
- const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-JO5JOV7Y.js");
276
+ const { buildChromeArgs, analyzeClipMediaFit } = await import("./src-BSLKXEGX.js");
277
277
  const requestedGpuMode = resolveCliChromeGpuMode();
278
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu } = await import("./gpuPolicy-7N5MCE2G.js");
278
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalWebGpu } = await import("./gpuPolicy-AQ2BPLBK.js");
279
279
  const resolvedGpuMode = await resolveManagedGpuMode(requestedGpuMode, browser.executablePath);
280
280
  const requiresWebGpu = compositionRequiresWebGpu(html);
281
+ const { gpuConfig, softwareWebGpu } = resolveLocalWebGpu(resolvedGpuMode, requiresWebGpu);
281
282
  const chromeBrowser = await launchManagedBrowser(puppeteer.default, {
282
283
  headless: true,
283
284
  executablePath: browser.executablePath,
284
- args: buildChromeArgs(
285
- { ...viewport, captureMode: "screenshot", requiresWebGpu },
286
- { browserGpuMode: resolvedGpuMode }
287
- )
285
+ args: buildChromeArgs({ ...viewport, captureMode: "screenshot", requiresWebGpu }, gpuConfig)
288
286
  });
289
287
  const page = await chromeBrowser.newPage();
290
288
  await installPageFunctionGuard(page);
@@ -334,7 +332,7 @@ async function validateInBrowser(project, opts) {
334
332
  if (hinted) throw hinted;
335
333
  throw err;
336
334
  }
337
- await assertWebGpuAdapterAvailable(page, requiresWebGpu);
335
+ await assertWebGpuAdapterAvailable(page, requiresWebGpu, softwareWebGpu);
338
336
  await waitForRuntimeReady(page, opts.timeout ?? 3e3);
339
337
  await new Promise((r) => setTimeout(r, opts.timeout ?? 3e3));
340
338
  for (const w of await auditClipDurations(page, analyzeClipMediaFit, opts.timeout ?? 3e3)) {
@@ -6,15 +6,15 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  setHostHandlesSigint
9
- } from "./chunk-33RZPZ4K.js";
9
+ } from "./chunk-UXO2L7HJ.js";
10
10
  import {
11
11
  processAncestorSnapshot,
12
12
  processIdentity,
13
13
  processParentPid
14
- } from "./chunk-LAOCA3MQ.js";
14
+ } from "./chunk-A4Q7W4LV.js";
15
15
  import {
16
16
  processIsAlive
17
- } from "./chunk-LCSMOLGX.js";
17
+ } from "./chunk-BYSBRF24.js";
18
18
 
19
19
  // src/utils/renderCancellation.ts
20
20
  var RENDER_CANCELLATION_SIGNALS = [