hyperframes 0.8.139 → 0.8.141

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 (200) hide show
  1. package/dist/{add-VYJQ4S3P.js → add-KH2CF4FD.js} +20 -22
  2. package/dist/{animatedGifPrep-IBMW6FZB.js → animatedGifPrep-QO4BSKR7.js} +15 -8
  3. package/dist/{asset-FLSUS73X.js → asset-4RDZILVJ.js} +3 -3
  4. package/dist/{assetCataloger-TGD7TRCR.js → assetCataloger-WGR4LYYN.js} +6 -3
  5. package/dist/{auth-EZXIN4M4.js → auth-WYQCOYE5.js} +7 -7
  6. package/dist/{autoUpdate-ZPMY5T3X.js → autoUpdate-PC5TN3NL.js} +2 -2
  7. package/dist/{backgroundChecks-JIDTAUFE.js → backgroundChecks-7M3T44EP.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-FNZ6TJYY.js → batchRender-GOLLOE4V.js} +11 -8
  10. package/dist/beat-analyzer.global.js +5 -2
  11. package/dist/{beats-EAA4U3YN.js → beats-XJ7WP6QS.js} +24 -17
  12. package/dist/{benchmark-KKZQVK2Y.js → benchmark-HCGFBEZJ.js} +20 -23
  13. package/dist/{browser-ZIVVJLJT.js → browser-VQKO2FKG.js} +14 -28
  14. package/dist/{bundleWithLocalizedFonts-2XWC3PEM.js → bundleWithLocalizedFonts-FH7PHTTX.js} +5 -5
  15. package/dist/{capture-EFYPXI42.js → capture-TFZZSF6F.js} +22 -15
  16. package/dist/{capture-MKJHABUL.js → capture-XD3P3YQR.js} +2 -2
  17. package/dist/{catalog-EWX4BBI2.js → catalog-4S33QWJJ.js} +28 -30
  18. package/dist/{catch-up-FJFH7T4W.js → catch-up-RW7YXXNT.js} +11 -25
  19. package/dist/{check-YJNVDCBP.js → check-XVTRRN4Y.js} +72 -54
  20. package/dist/{checkBrowser-I6SPPEGD.js → checkBrowser-HZXJ2EDU.js} +81 -36
  21. package/dist/chunk-24OWOBQH.js +3656 -0
  22. package/dist/{chunk-OENM2JVZ.js → chunk-34TXESM7.js} +3 -3
  23. package/dist/{chunk-GWV2Y36Q.js → chunk-35RSNI77.js} +5 -106
  24. package/dist/{chunk-BC3OY2ED.js → chunk-3A5AAPMP.js} +1 -1
  25. package/dist/{chunk-U3HX7WE6.js → chunk-3NBKW2QJ.js} +1 -1
  26. package/dist/{chunk-A4X2YWNQ.js → chunk-4BB7V6AI.js} +38 -301
  27. package/dist/{chunk-EJ7OWYF2.js → chunk-6E6CM7WS.js} +19 -163
  28. package/dist/{chunk-CDMB3PRC.js → chunk-6IFXWJDX.js} +7 -7
  29. package/dist/{chunk-Z67RZ4XO.js → chunk-6Q6FR4KH.js} +279 -1968
  30. package/dist/{chunk-R4QIE6UY.js → chunk-7M4KAPAA.js} +92 -31
  31. package/dist/{chunk-25DHUDOK.js → chunk-7XTZVLE6.js} +12 -3
  32. package/dist/chunk-A4KQZXZI.js +116 -0
  33. package/dist/{chunk-DUQJF7FK.js → chunk-A7YQNIQT.js} +8 -8
  34. package/dist/{chunk-XOZ3J3LB.js → chunk-AVWEIOEN.js} +1 -1
  35. package/dist/{chunk-UQXOHEQ7.js → chunk-BM5PX3DJ.js} +4 -4
  36. package/dist/{chunk-SHB5VDMH.js → chunk-BRITLL56.js} +1 -1
  37. package/dist/{chunk-JX7Y57YY.js → chunk-E4BSCXMU.js} +1 -1
  38. package/dist/{chunk-QXOFUKBF.js → chunk-E6SDW5FV.js} +168 -165
  39. package/dist/{chunk-JH556Q42.js → chunk-EDYBFSPE.js} +2 -2
  40. package/dist/{chunk-R7LWDIKB.js → chunk-EKA4ZZBI.js} +1 -1
  41. package/dist/chunk-FXMKHHPO.js +123 -0
  42. package/dist/chunk-G75ENCEZ.js +283 -0
  43. package/dist/{chunk-PLNWWGE7.js → chunk-GQJZORQP.js} +1 -1
  44. package/dist/{chunk-U3GEXWI5.js → chunk-GS6FE3IW.js} +1 -1
  45. package/dist/{chunk-Y6W4DVPS.js → chunk-HKCNZITN.js} +1 -1
  46. package/dist/{chunk-HOIHGPWO.js → chunk-IKVBTDLO.js} +1 -1
  47. package/dist/{chunk-YOL4QRSL.js → chunk-INI3TM6I.js} +2 -2
  48. package/dist/{chunk-SIKMUO45.js → chunk-IO7ZIDRP.js} +12 -12
  49. package/dist/{chunk-W7SAWBQC.js → chunk-IV7EI5E2.js} +1 -1
  50. package/dist/{chunk-TCWL4BKK.js → chunk-IYFKBFTW.js} +1 -1
  51. package/dist/{chunk-JIIIBTN2.js → chunk-J5IPIQU2.js} +1 -1
  52. package/dist/chunk-JFKL3WAE.js +161 -0
  53. package/dist/{chunk-IBRZUVTH.js → chunk-K2GOFLTX.js} +2 -2
  54. package/dist/{chunk-X3TMMIDP.js → chunk-KFH6UD26.js} +8 -8
  55. package/dist/{chunk-O6K5DWXM.js → chunk-KOEWEFHK.js} +1 -1
  56. package/dist/{chunk-VTVS4IIP.js → chunk-L3JSAB4L.js} +2 -2
  57. package/dist/{chunk-3RT6D4P6.js → chunk-N77KD7ZZ.js} +1 -1
  58. package/dist/{chunk-FLRCVYNE.js → chunk-NORZWWLK.js} +2 -2
  59. package/dist/{chunk-4VZBKOQJ.js → chunk-O3SKIXQK.js} +1 -1
  60. package/dist/{chunk-PFI3VD77.js → chunk-OLDDJS3S.js} +10 -10
  61. package/dist/{chunk-UGI77E35.js → chunk-P6E4HFFU.js} +167 -61
  62. package/dist/{chunk-GIDHR5OL.js → chunk-Q65ZQFF2.js} +1 -1
  63. package/dist/chunk-QZ3AZTXI.js +1740 -0
  64. package/dist/{chunk-NTIOLSFE.js → chunk-R7UDXKI3.js} +3 -3
  65. package/dist/{chunk-7SI7GCX6.js → chunk-RCFCZT5O.js} +6 -6
  66. package/dist/{chunk-DW32KBHN.js → chunk-RPYPW5NN.js} +13 -13
  67. package/dist/chunk-SYKKFAUW.js +3711 -0
  68. package/dist/chunk-T76PLPD6.js +57 -0
  69. package/dist/{chunk-JTAYFSLO.js → chunk-TC2FBZJZ.js} +1 -1
  70. package/dist/{chunk-Q73ISOVQ.js → chunk-U7E736AJ.js} +1 -1
  71. package/dist/chunk-USDEMXXL.js +110 -0
  72. package/dist/{chunk-UMWROSIP.js → chunk-W6HTOVHU.js} +2 -2
  73. package/dist/{chunk-STA43FMY.js → chunk-WY5OODN5.js} +71 -3855
  74. package/dist/{chunk-EZ2P7LAP.js → chunk-XDSOIJC3.js} +8 -8
  75. package/dist/{chunk-ZTZ7NCJT.js → chunk-XTFJOR3K.js} +1 -1
  76. package/dist/{chunk-CDJ7FPPJ.js → chunk-XWVGSEUT.js} +1 -1
  77. package/dist/chunk-YA62XGXS.js +45 -0
  78. package/dist/{chunk-EH4VUY27.js → chunk-YURXPGAM.js} +2 -2
  79. package/dist/{clean-P4KTCOUA.js → clean-L2E4VD57.js} +29 -20
  80. package/dist/cli.js +55 -55
  81. package/dist/{cloud-PDY7S4HU.js → cloud-IDUQRYLO.js} +7 -7
  82. package/dist/{cloudrun-54MA2W5H.js → cloudrun-R3JXWXGG.js} +11 -8
  83. package/dist/commands/layout-audit.browser.js +37 -8
  84. package/dist/commands/motion-signature.browser.js +51 -2
  85. package/dist/{compare-LDWVSPC5.js → compare-VYBWSP3Y.js} +40 -31
  86. package/dist/{compiler-CWSZ4W7J.js → compiler-ACHWOU5N.js} +7 -3
  87. package/dist/{component-FIEGC22U.js → component-PYYV2V3F.js} +4 -4
  88. package/dist/{compositions-JR7PX356.js → compositions-B5GQSXH7.js} +23 -16
  89. package/dist/{delete-FXA2IHOS.js → delete-EAX2U3WI.js} +8 -8
  90. package/dist/{deterministicFonts-GTITFRSJ.js → deterministicFonts-F6WIVL2W.js} +1 -1
  91. package/dist/{dist-OJTEVNJR.js → dist-NZSQCYOF.js} +3 -1
  92. package/dist/{dist-4JZWRWS6.js → dist-ROUDWGLO.js} +27 -15
  93. package/dist/{doctor-OTDHPM6K.js → doctor-PJX7MLFG.js} +20 -13
  94. package/dist/{events-UAFTI24U.js → events-SBC54MHO.js} +6 -22
  95. package/dist/{events-6T7M2VCO.js → events-YFFXKAQQ.js} +10 -23
  96. package/dist/{feedback-ZGZODHB6.js → feedback-UETLWREV.js} +67 -45
  97. package/dist/{figma-D26EJ7ZB.js → figma-QDSJPIRW.js} +6 -6
  98. package/dist/fontLocalizeCli.js +18 -11
  99. package/dist/{get-IAREU7IK.js → get-B5TS6C7H.js} +8 -8
  100. package/dist/{gpuPolicy-NS7WZRDJ.js → gpuPolicy-LYOVBAJP.js} +15 -8
  101. package/dist/{grade-compare-ZXHFHCD2.js → grade-compare-LBIHMAUN.js} +40 -31
  102. package/dist/{help-RVNYHW3N.js → help-XBP6A6LT.js} +4 -4
  103. package/dist/{history-THP4VNMF.js → history-2S42ZXKL.js} +12 -30
  104. package/dist/hyperframe-runtime.js +59 -59
  105. package/dist/hyperframe.manifest.json +1 -1
  106. package/dist/hyperframe.runtime.iife.js +59 -59
  107. package/dist/hyperframes-player.global.js +3 -3
  108. package/dist/{info-EOFRHN5A.js → info-I2VDAWT7.js} +17 -20
  109. package/dist/{init-YLIJE4CG.js → init-BGHSDODI.js} +48 -41
  110. package/dist/{inspect-3D56ONJD.js → inspect-MZK5B5RP.js} +39 -30
  111. package/dist/{installer-GRR2GDZK.js → installer-LL4QAKFW.js} +8 -5
  112. package/dist/{keyframes-NXNCTQPK.js → keyframes-2EBF7OSS.js} +14 -25
  113. package/dist/{lambda-VGRZD7TR.js → lambda-XKFPAOFE.js} +16 -13
  114. package/dist/{layout-Z5DOS6DU.js → layout-TP5ERKEF.js} +39 -30
  115. package/dist/{lint-YD6NJGR2.js → lint-FQ6CEI7E.js} +17 -23
  116. package/dist/{lintProject-ANMPLBIT.js → lintProject-LM3XZRPZ.js} +3 -1
  117. package/dist/{list-XGDKILYN.js → list-FRNUJXZ3.js} +8 -8
  118. package/dist/{login-GD5SA4RD.js → login-C25QU3BQ.js} +9 -9
  119. package/dist/{logout-Q654A3SI.js → logout-GJXZQKOA.js} +5 -5
  120. package/dist/{media-treatment-TY4X4GQQ.js → media-treatment-DCANGWSV.js} +21 -20
  121. package/dist/{models-MXRDH4WJ.js → models-GOD6ARB3.js} +19 -12
  122. package/dist/{motionShot-6LKR3C2E.js → motionShot-FSKETANX.js} +22 -15
  123. package/dist/{normalize-O76AC4HE.js → normalize-IGLHCWTF.js} +0 -4
  124. package/dist/{normalize-audio-5ADDZKPJ.js → normalize-audio-C2IM7OID.js} +13 -26
  125. package/dist/{open-JXAMO325.js → open-VVISXIII.js} +11 -25
  126. package/dist/{pipeline-Q5MOPIIX.js → pipeline-7YHZPYIS.js} +15 -8
  127. package/dist/{play-3SPH5GWZ.js → play-DSELK7G3.js} +38 -32
  128. package/dist/{preflight-2PWAPKWC.js → preflight-Y5DN5D37.js} +3 -18
  129. package/dist/{present-ZTJQDKXZ.js → present-N72YFDKP.js} +32 -26
  130. package/dist/{preview-4A3XZR6J.js → preview-XTYN4NJ2.js} +33 -26
  131. package/dist/{producer-5ZKKKQPB.js → producer-NDCU3MHK.js} +1 -1
  132. package/dist/{projectConfig-WA4CS4SN.js → projectConfig-MH4QU4AC.js} +10 -7
  133. package/dist/{publication-CLG2FRRI.js → publication-KUSHI5MG.js} +6 -3
  134. package/dist/{publish-YTT2WMXO.js → publish-3XEEFWMF.js} +27 -20
  135. package/dist/{refresh-K24ETHMA.js → refresh-MFITBIKV.js} +5 -5
  136. package/dist/{remove-background-W35INR3B.js → remove-background-2QKJ7XOD.js} +22 -15
  137. package/dist/{render-WUBFQMAH.js → render-2DVYTVLQ.js} +52 -32
  138. package/dist/{render-7A4P5WMU.js → render-75E342ZU.js} +10 -7
  139. package/dist/{render-KICXUPNR.js → render-S73DW4KK.js} +23 -26
  140. package/dist/{render-batch-N7EFGE6S.js → render-batch-YURBS54Q.js} +11 -8
  141. package/dist/{renderCancellation-LYQPPFAO.js → renderCancellation-373ASJTO.js} +15 -8
  142. package/dist/renderSetupWorker.js +4 -2
  143. package/dist/{resolver-YTT2NENF.js → resolver-FE3GBZ4T.js} +8 -5
  144. package/dist/{sherpa-353MW4UV.js → sherpa-B2D3AGP6.js} +16 -9
  145. package/dist/skills/hyperframes/references/capability-menu.md +1 -1
  146. package/dist/skills/hyperframes-cli/SKILL.md +5 -0
  147. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +1 -1
  148. package/dist/skills/hyperframes-cli/references/preview-render.md +1 -1
  149. package/dist/skills/media-use/SKILL.md +9 -5
  150. package/dist/skills/media-use/audio/scripts/lib/heygen.mjs +47 -4
  151. package/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +125 -18
  152. package/dist/skills/media-use/audio/scripts/lib/host-audio.mjs +28 -0
  153. package/dist/skills/media-use/audio/scripts/lib/host-audio.test.mjs +106 -0
  154. package/dist/skills/media-use/references/setup-providers.md +16 -2
  155. package/dist/skills/media-use/scripts/lib/heygen-cli.mjs +21 -1
  156. package/dist/skills/media-use/scripts/lib/heygen-cli.test.mjs +14 -0
  157. package/dist/skills/media-use/scripts/resolve.mjs +11 -6
  158. package/dist/{skills-2XJIOEBT.js → skills-ICJ22CZZ.js} +15 -30
  159. package/dist/{skillsUpdateCheck-LMCCWGNO.js → skillsUpdateCheck-GXZN56I5.js} +3 -3
  160. package/dist/{snapshot-WBRSTLJ2.js → snapshot-XHKOAWF4.js} +41 -32
  161. package/dist/{src-ZS3BLTZ5.js → src-74PFDTDX.js} +17 -10
  162. package/dist/{src-YWFJILQF.js → src-I7UC3JTL.js} +19 -11
  163. package/dist/{staticProjectServer-4VKVHPNG.js → staticProjectServer-2DGKD6TF.js} +24 -16
  164. package/dist/{status-73MBN37B.js → status-JA6SKQVH.js} +7 -24
  165. package/dist/studio/assets/hyperframes-player-5Vx2AiUz.js +473 -0
  166. package/dist/studio/assets/{index-DsEkE5_G.js → index-BAnh7cSQ.js} +1 -1
  167. package/dist/studio/assets/{index-Br1Whc0f.js → index-C0thd4eM.js} +204 -204
  168. package/dist/studio/assets/{index-BmIPrb8I.js → index-P8fgj_Xa.js} +1 -1
  169. package/dist/studio/{chunk-E422JDF5.js → chunk-H2DUOXTF.js} +2 -1
  170. package/dist/studio/index.d.ts +19 -3
  171. package/dist/studio/index.html +1 -1
  172. package/dist/studio/index.js +6518 -5813
  173. package/dist/studio/index.js.map +1 -1
  174. package/dist/studio/player.js +1 -1
  175. package/dist/{studio-api-5V4TVSQV.js → studio-api-PROBO7JG.js} +40 -28
  176. package/dist/{studioServer-M5XY3HYC.js → studioServer-ID6UV2NE.js} +100 -69
  177. package/dist/{system-RCRNX5VF.js → system-OQLOGGPJ.js} +2 -19
  178. package/dist/{telemetry-LOBRQGUD.js → telemetry-65LFHIWH.js} +8 -23
  179. package/dist/{timeline-3JCP6PXU.js → timeline-6UV3JJXD.js} +32 -22
  180. package/dist/{tokens-MLMIJBVF.js → tokens-HIL4TZXI.js} +3 -3
  181. package/dist/{transcribe-KNFXDEAX.js → transcribe-TIO6W3EQ.js} +16 -9
  182. package/dist/{transcribe-POH25ZPX.js → transcribe-V7F6QDSN.js} +20 -44
  183. package/dist/{updateCheck-5ITBSBST.js → updateCheck-GZELANMA.js} +2 -2
  184. package/dist/{upgrade-K6OK4FKT.js → upgrade-BX3KDDZJ.js} +5 -5
  185. package/dist/{urlDownloader-TJJQKADT.js → urlDownloader-R76OHFIE.js} +14 -7
  186. package/dist/{validate-PPPOBJHB.js → validate-7UX4I443.js} +26 -19
  187. package/dist/{video-OB22HWXZ.js → video-RVGYEFQU.js} +18 -11
  188. package/package.json +1 -1
  189. package/dist/chunk-HYYSJI5D.js +0 -3742
  190. package/dist/studio/assets/hyperframes-player-CckOoCJ8.js +0 -473
  191. package/dist/{chunk-I465DBM6.js → chunk-246MOR5U.js} +3 -3
  192. package/dist/{deploy-MX76RZ36.js → deploy-5G4Z6LPA.js} +1 -1
  193. package/dist/{destroy-H2TZBYHH.js → destroy-GFQLTIY3.js} +1 -1
  194. package/dist/{docs-QAPJEGLS.js → docs-MPOM3PHH.js} +3 -3
  195. package/dist/{policies-FSDZVS2E.js → policies-4FEXMXPK.js} +3 -3
  196. package/dist/{progress-FBIEEB7Y.js → progress-5AM2MZ7V.js} +3 -3
  197. package/dist/{sites-TNVKZS73.js → sites-HZMADOA3.js} +1 -1
  198. package/dist/studio/{chunk-E422JDF5.js.map → chunk-H2DUOXTF.js.map} +0 -0
  199. package/dist/{telemetry-2YC4SGQU.js → telemetry-W5AKPI4R.js} +3 -3
  200. package/dist/{tts-FU35O6YB.js → tts-TOHSPWEG.js} +4 -4
@@ -17,7 +17,7 @@ import {
17
17
  parseStrictFiniteTimingNumber,
18
18
  resolveNaturalMediaTimelineDuration,
19
19
  resolveTimedImageDurationSeconds
20
- } from "./chunk-HYYSJI5D.js";
20
+ } from "./chunk-SYKKFAUW.js";
21
21
  import {
22
22
  COMPOSITION_ATTRIBUTES,
23
23
  parseStartExpression
@@ -1158,6 +1158,21 @@ function parseFirstFrameColour(stderr) {
1158
1158
  return tags ? { colorSpace: tags[1], colorPrimaries: tags[2], colorTransfer: tags[3] } : {};
1159
1159
  }
1160
1160
 
1161
+ // ../core/dist/previewProxyBox.js
1162
+ var PREVIEW_PROXY_BOX_PARAM = "hf-proxy-box";
1163
+ var RUNGS = [256, 362, 512, 724, 1024, 1448, 2048, 2896, 4096, 5792, 8192];
1164
+ function formatPreviewProxyBox(box) {
1165
+ return `${box.width}x${box.height}`;
1166
+ }
1167
+ function parsePreviewProxyBox(raw) {
1168
+ const match = /^(\d{3,4})x(\d{3,4})$/.exec(raw);
1169
+ if (!match)
1170
+ return null;
1171
+ const width = Number(match[1]);
1172
+ const height = Number(match[2]);
1173
+ return RUNGS.includes(width) && RUNGS.includes(height) ? { width, height } : null;
1174
+ }
1175
+
1161
1176
  // ../core/dist/inline-scripts/hyperframesRuntime.engine.js
1162
1177
  import { buildSync } from "esbuild";
1163
1178
  import { existsSync } from "fs";
@@ -1305,52 +1320,6 @@ function copyMediaVisualStyles(targetStyle, sourceStyle, properties = MEDIA_VISU
1305
1320
  }
1306
1321
  }
1307
1322
 
1308
- // ../core/dist/telemetryRedaction.js
1309
- var MAX_TELEMETRY_STRING_LENGTH = 240;
1310
- function truncateTelemetryString(value, maxLength) {
1311
- if (value.length <= maxLength)
1312
- return value;
1313
- return `${value.slice(0, maxLength - 1)}\u2026`;
1314
- }
1315
- function redactUrlQueryStrings(value) {
1316
- return value.replace(/\b(https?:\/\/[^\s?]+)\?[^\s]*/g, "$1?\u2026");
1317
- }
1318
- var SEGMENT = String.raw`[^\s/\\'"]+`;
1319
- var SEGMENT_NODOT = String.raw`[^\s/\\'".]+`;
1320
- var TOKEN_TAIL = String.raw`[^\s'")]*`;
1321
- var ABSOLUTE_PATH = new RegExp(String.raw`(?<![:\w/\\])(?:[A-Za-z]:)?(?:[\\/]${SEGMENT}){2,}${TOKEN_TAIL}`, "g");
1322
- var RELATIVE_PATH = new RegExp(String.raw`(?<![\w/\\.])\.{1,2}(?:[\\/]${SEGMENT})+${TOKEN_TAIL}`, "g");
1323
- var ASSET_BASENAME = /(?<![\w/\\])[^\s/\\'"]+\.(?:mp4|mov|mkv|webm|avi|m4v|mpe?g|ts|mp3|wav|aac|m4a|flac|ogg|opus|png|jpe?g|gif|webp|svg|html?|json|srt|vtt|ass)\b/gi;
1324
- var BARE_RELATIVE_PATH = new RegExp([
1325
- // Two or more separators: `customer/acme/video.mp4`. No extension needed —
1326
- // that much structure is already a path.
1327
- String.raw`(?<![^\s'\"(=,\[])(?:${SEGMENT}[\\/]){2,}${SEGMENT}${TOKEN_TAIL}`,
1328
- // One separator, but the last segment carries a file extension:
1329
- // `assets/bgm.mp3`. That segment is dot-free on purpose — SEGMENT includes
1330
- // `.`, so a greedy one swallows the extension this rule needs.
1331
- String.raw`(?<![^\s'\"(=,\[])${SEGMENT}[\\/]${SEGMENT_NODOT}\.\w{1,8}\b${TOKEN_TAIL}`
1332
- ].join("|"), "g");
1333
- function redactKnownPaths(value, paths) {
1334
- if (typeof value !== "string")
1335
- return "";
1336
- let out = value;
1337
- for (const path of paths) {
1338
- if (typeof path !== "string" || path.length === 0)
1339
- continue;
1340
- const basename = path.split(/[\\/]/).pop() ?? "";
1341
- for (const literal of [path, basename].filter((v) => v.length > 2)) {
1342
- out = out.split(literal).join("[path]");
1343
- }
1344
- }
1345
- return out;
1346
- }
1347
- function redactFilePaths(value) {
1348
- return value.replace(/file:\/\/[^\s'")]+/g, "[file-url]").replace(RELATIVE_PATH, "[path]").replace(BARE_RELATIVE_PATH, "[path]").replace(ABSOLUTE_PATH, "[path]").replace(ASSET_BASENAME, "[file]");
1349
- }
1350
- function redactTelemetryString(value, maxLength = MAX_TELEMETRY_STRING_LENGTH) {
1351
- return truncateTelemetryString(redactFilePaths(redactUrlQueryStrings(value)), maxLength);
1352
- }
1353
-
1354
1323
  // ../core/dist/projectRule.js
1355
1324
  var PROJECT_MARKER_FILES = ["hyperframes.json", "meta.json", "project.json"];
1356
1325
  function isHyperframesProject(fileNames) {
@@ -4761,112 +4730,6 @@ function isComponentItem(item) {
4761
4730
  return item.type === "hyperframes:component";
4762
4731
  }
4763
4732
 
4764
- // ../core/dist/canary.js
4765
- function fnv1a32(input) {
4766
- let hash = 2166136261;
4767
- for (let i = 0; i < input.length; i++) {
4768
- hash ^= input.charCodeAt(i);
4769
- hash = hash + ((hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24)) >>> 0;
4770
- }
4771
- return hash >>> 0;
4772
- }
4773
- function canaryBucket(feature, unitId) {
4774
- return fnv1a32(`${feature}:${unitId}`) % 100;
4775
- }
4776
- function evaluateCanary(input) {
4777
- if (input.override === true)
4778
- return { enabled: true, reason: "forced_on" };
4779
- if (input.override === false)
4780
- return { enabled: false, reason: "forced_off" };
4781
- const pct = Math.max(0, Math.min(100, Math.trunc(input.percentage)));
4782
- if (pct <= 0)
4783
- return { enabled: false, reason: "out_of_cohort" };
4784
- if (pct >= 100)
4785
- return { enabled: true, reason: "in_cohort" };
4786
- if (input.exclude)
4787
- return { enabled: false, reason: "excluded" };
4788
- const unitId = input.unitId?.trim();
4789
- if (!unitId)
4790
- return { enabled: false, reason: "no_unit_id" };
4791
- const bucket = canaryBucket(input.feature, unitId);
4792
- return bucket < pct ? { enabled: true, reason: "in_cohort", bucket } : { enabled: false, reason: "out_of_cohort", bucket };
4793
- }
4794
- function parseCanaryOverride(raw) {
4795
- const v = raw?.trim().toLowerCase();
4796
- if (v === void 0 || v === "")
4797
- return void 0;
4798
- if (v === "1" || v === "true" || v === "on" || v === "yes")
4799
- return true;
4800
- if (v === "0" || v === "false" || v === "off" || v === "no")
4801
- return false;
4802
- return void 0;
4803
- }
4804
- var CANARY_FEATURE_PREFIX = "$feature/canary-";
4805
- function canaryFeatureKey(name) {
4806
- return `${CANARY_FEATURE_PREFIX}${name}`;
4807
- }
4808
- function canaryReasonKey(name) {
4809
- return `canary_reason_${name.replace(/[^A-Za-z0-9]+/g, "_")}`;
4810
- }
4811
- function canaryFeatureProperties(entries) {
4812
- const props = {};
4813
- for (const entry of entries) {
4814
- props[canaryFeatureKey(entry.name)] = entry.enabled ? "true" : "false";
4815
- if (entry.reason !== void 0)
4816
- props[canaryReasonKey(entry.name)] = entry.reason;
4817
- }
4818
- return props;
4819
- }
4820
-
4821
- // ../core/dist/canaryRegistry.js
4822
- var CANARIES = [
4823
- // ── Calibration ──────────────────────────────────────────────────────────
4824
- // Two INERT canaries that gate nothing. They exist to validate the rollout
4825
- // mechanism against real traffic before anything real depends on it, and
4826
- // they answer questions the synthetic tests cannot:
4827
- //
4828
- // 1. Does a requested percentage land on target in the wild? The unit
4829
- // tests use generated UUIDs and weight every install equally; real
4830
- // render volume is heavily skewed toward a few heavy installs, so the
4831
- // render-weighted share could differ from the install-weighted one.
4832
- // 2. How fast does CUMULATIVE exposure drift above the target? Install
4833
- // ids churn (measured: 24.7x more distinct ids over 30 days than in
4834
- // any single day), so the set of installs enrolled AT SOME POINT grows
4835
- // even though the instantaneous share stays flat. That drift is the
4836
- // real limit on a canary's blast-radius guarantee.
4837
- // 3. Are two canaries actually independent on real ids, not just on
4838
- // generated ones? Overlap should be ~p1*p2, not ~min(p1,p2).
4839
- //
4840
- // Two different percentages so the answer is a line, not a point.
4841
- // Delete both once the calibration window is read.
4842
- {
4843
- name: "calibration-10",
4844
- percentage: 10,
4845
- description: "Inert. Validates rollout accuracy and cumulative-exposure drift at 10%.",
4846
- owner: "vance",
4847
- sunsetAfter: "2026-09-15"
4848
- },
4849
- {
4850
- name: "calibration-50",
4851
- percentage: 50,
4852
- description: "Inert. Second calibration point, and an independence check against calibration-10.",
4853
- owner: "vance",
4854
- sunsetAfter: "2026-09-15"
4855
- }
4856
- ];
4857
- function findCanary(name) {
4858
- return CANARIES.find((c) => c.name === name);
4859
- }
4860
- function canaryEnvVar(name) {
4861
- return `HF_CANARY_${name.toUpperCase().replace(/[^A-Z0-9]+/g, "_")}`;
4862
- }
4863
- function overdueCanaries(now = /* @__PURE__ */ new Date()) {
4864
- return CANARIES.filter((c) => {
4865
- const sunsetEnd = Date.parse(`${c.sunsetAfter}T23:59:59.999Z`);
4866
- return Number.isFinite(sunsetEnd) && now.getTime() > sunsetEnd;
4867
- }).map((c) => c.name);
4868
- }
4869
-
4870
4733
  // ../core/dist/vfx/fractalNoise.frag.js
4871
4734
  var HASH_CONSTANTS = {
4872
4735
  /** Odd 32-bit multipliers, one per lattice axis plus one for the seed. */
@@ -5689,6 +5552,9 @@ export {
5689
5552
  hdrToSdrToneMapFilter,
5690
5553
  firstFrameColourArgs,
5691
5554
  parseFirstFrameColour,
5555
+ PREVIEW_PROXY_BOX_PARAM,
5556
+ formatPreviewProxyBox,
5557
+ parsePreviewProxyBox,
5692
5558
  buildHyperframesRuntimeScript,
5693
5559
  HYPERFRAME_RUNTIME_GLOBALS,
5694
5560
  HYPERFRAME_BRIDGE_SOURCES,
@@ -5701,8 +5567,6 @@ export {
5701
5567
  quantizeSeekTime,
5702
5568
  exportClipWindow,
5703
5569
  copyMediaVisualStyles,
5704
- redactKnownPaths,
5705
- redactTelemetryString,
5706
5570
  PROJECT_MARKER_FILES,
5707
5571
  isHyperframesProject,
5708
5572
  createGSAPFrameAdapter,
@@ -5728,14 +5592,6 @@ export {
5728
5592
  isExampleItem,
5729
5593
  isBlockItem,
5730
5594
  isComponentItem,
5731
- canaryBucket,
5732
- evaluateCanary,
5733
- parseCanaryOverride,
5734
- canaryFeatureProperties,
5735
- CANARIES,
5736
- findCanary,
5737
- canaryEnvVar,
5738
- overdueCanaries,
5739
5595
  HF_VFX_ATTR,
5740
5596
  HF_VFX_CHAIN_VERSION,
5741
5597
  HF_VFX,
@@ -7,20 +7,20 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  parseFeedbackRating,
9
9
  trackRenderFeedback
10
- } from "./chunk-25DHUDOK.js";
10
+ } from "./chunk-7XTZVLE6.js";
11
11
  import {
12
12
  shouldTrack
13
- } from "./chunk-7SI7GCX6.js";
14
- import {
15
- c
16
- } from "./chunk-ZTZA4UWZ.js";
13
+ } from "./chunk-RCFCZT5O.js";
17
14
  import {
18
15
  detectAgentRuntime
19
- } from "./chunk-PLNWWGE7.js";
16
+ } from "./chunk-GQJZORQP.js";
20
17
  import {
21
18
  readConfig,
22
19
  writeConfig
23
20
  } from "./chunk-XUXGIA7H.js";
21
+ import {
22
+ c
23
+ } from "./chunk-ZTZA4UWZ.js";
24
24
 
25
25
  // src/telemetry/feedback.ts
26
26
  import * as readline from "readline";
@@ -83,7 +83,7 @@ async function maybePromptRenderFeedback(opts) {
83
83
  async function getDoctorSummary() {
84
84
  try {
85
85
  const [{ getSystemMeta }, { findFFmpeg }] = await Promise.all([
86
- import("./system-RCRNX5VF.js"),
86
+ import("./system-OQLOGGPJ.js"),
87
87
  import("./ffmpeg-QIUFEFTY.js")
88
88
  ]);
89
89
  const sys = getSystemMeta();