hyperframes 0.8.110 → 0.8.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/dist/{add-D7AY7MSS.js → add-NIVC2YMT.js} +15 -15
  2. package/dist/{agentPromptGenerator-QL2KAWEP.js → agentPromptGenerator-VIIPZCJ3.js} +1 -1
  3. package/dist/{animatedGifPrep-NMGFOSIL.js → animatedGifPrep-NWAJKCHG.js} +6 -6
  4. package/dist/{asset-63Q4ARX7.js → asset-O6JJKF3Z.js} +2 -2
  5. package/dist/{assetCataloger-FXEHOUA3.js → assetCataloger-DJSPW3RL.js} +2 -2
  6. package/dist/{auth-D5QNNEKM.js → auth-6XRZQQQS.js} +2 -2
  7. package/dist/{autoUpdate-25QUBTDS.js → autoUpdate-GZHLQBLS.js} +2 -2
  8. package/dist/{backgroundChecks-G2AHVDCY.js → backgroundChecks-4QQRGJ5S.js} +3 -3
  9. package/dist/backgroundChecksWorker.js +3 -3
  10. package/dist/{batchRender-ZTHFMHZY.js → batchRender-PJGNXN7F.js} +3 -3
  11. package/dist/{beats-43LEYJ76.js → beats-VYR6B4UB.js} +10 -10
  12. package/dist/{benchmark-JQ5LYY6Z.js → benchmark-CGP2NKIP.js} +12 -12
  13. package/dist/{browser-KQLNYNOH.js → browser-ZWD4ETXK.js} +9 -9
  14. package/dist/{bundleWithLocalizedFonts-4Q3ETTHW.js → bundleWithLocalizedFonts-JWHKLSZM.js} +2 -2
  15. package/dist/{capture-4OPH4PMK.js → capture-C4MPRLJV.js} +40 -42
  16. package/dist/{capture-OG6532RA.js → capture-IQ7AUK6M.js} +3 -3
  17. package/dist/{captureFile-JOPOCRU7.js → captureFile-LYOJOUIE.js} +3 -1
  18. package/dist/{catalog-EAFDIYFH.js → catalog-RZ7PWQMS.js} +15 -15
  19. package/dist/{check-VAJ6G3RU.js → check-7UU4SSO6.js} +50 -38
  20. package/dist/{checkBrowser-GUWLYPVJ.js → checkBrowser-6KYNYIU7.js} +32 -31
  21. package/dist/{chunk-CFC3EEDQ.js → chunk-2BEOCUAG.js} +1 -1
  22. package/dist/{chunk-E5OSOQKO.js → chunk-2GXKCB7J.js} +1 -1
  23. package/dist/{chunk-HQGJLZB6.js → chunk-36XLW2TP.js} +2 -2
  24. package/dist/{chunk-NH75EKOP.js → chunk-3Q7HXIXZ.js} +1 -1
  25. package/dist/{chunk-2JXJ5SGK.js → chunk-4BXTKKRD.js} +6 -6
  26. package/dist/{chunk-XYVFPDNU.js → chunk-5SDXALUQ.js} +1 -1
  27. package/dist/{chunk-ITBEN3QD.js → chunk-7G25WGTA.js} +2 -2
  28. package/dist/{chunk-YIXEH4TF.js → chunk-7OJSZTJK.js} +2 -2
  29. package/dist/{chunk-5ER3PYYP.js → chunk-7VIXEM6Q.js} +1 -1
  30. package/dist/{chunk-U4U5YVVX.js → chunk-A6GVXZZ3.js} +1 -1
  31. package/dist/{chunk-ULNKBH6B.js → chunk-BD3MHTSR.js} +2 -2
  32. package/dist/{chunk-TU7KYFS3.js → chunk-BLI5XATY.js} +1 -1
  33. package/dist/{chunk-N32ITJ7L.js → chunk-BSBIG74E.js} +15 -12
  34. package/dist/{chunk-ZU54D6MI.js → chunk-BZGWHPRW.js} +3 -3
  35. package/dist/{chunk-B25H4M4V.js → chunk-C4JINRJK.js} +1 -1
  36. package/dist/{chunk-5ON5GH3X.js → chunk-CS4IE5G7.js} +1 -1
  37. package/dist/{chunk-47TRZ6A3.js → chunk-E664L6K3.js} +3 -3
  38. package/dist/{chunk-J4RPT4QW.js → chunk-E6RPWJVC.js} +1 -1
  39. package/dist/{chunk-GLSGKTFO.js → chunk-EA4LCCJI.js} +5 -5
  40. package/dist/{chunk-E67OVYX3.js → chunk-GODQ5XA4.js} +16 -8
  41. package/dist/{chunk-LAQEZHOH.js → chunk-H3WFEPV2.js} +1 -1
  42. package/dist/{chunk-U4TDAJZE.js → chunk-J2S4MY2M.js} +2 -2
  43. package/dist/{chunk-CQRF7VU3.js → chunk-JRULOVZK.js} +1 -1
  44. package/dist/{chunk-C4TZBEHY.js → chunk-KIIKVKHB.js} +2 -2
  45. package/dist/{chunk-M224DAMG.js → chunk-KPSRL2NB.js} +1 -1
  46. package/dist/{chunk-JTTAS7N6.js → chunk-KQ3VNA6R.js} +1 -1
  47. package/dist/{chunk-MPSW7EA2.js → chunk-KS5HFREQ.js} +4 -4
  48. package/dist/{chunk-L37M3PV5.js → chunk-LYBFDHXD.js} +3 -3
  49. package/dist/{chunk-AWUZ3AUD.js → chunk-M4RYK5OF.js} +1 -1
  50. package/dist/chunk-MRF4AMKD.js +104 -0
  51. package/dist/{chunk-JWPSBANO.js → chunk-NOOBRCMC.js} +3 -3
  52. package/dist/{chunk-TIZQC44K.js → chunk-OWN3ZIIK.js} +1 -1
  53. package/dist/{chunk-WTMGUNZZ.js → chunk-OXZO4WQI.js} +9 -8
  54. package/dist/{chunk-PZXUDWPP.js → chunk-P3AQVFY2.js} +3 -3
  55. package/dist/{chunk-OF3RKOPU.js → chunk-P74PW7KR.js} +189 -111
  56. package/dist/{chunk-TQP42SFX.js → chunk-POEGJGEA.js} +1 -1
  57. package/dist/{chunk-X4FEFEP4.js → chunk-PRETPA7Z.js} +1 -1
  58. package/dist/{chunk-QJUKISYK.js → chunk-Q7U7QRC7.js} +2 -2
  59. package/dist/chunk-S6TH5G6Z.js +3541 -0
  60. package/dist/{chunk-MGFVNTIB.js → chunk-TSZU5JMC.js} +2 -2
  61. package/dist/{chunk-MR2LOG32.js → chunk-TXVN43SX.js} +8 -8
  62. package/dist/{chunk-T3HJWJGC.js → chunk-UTXMQVB2.js} +9 -9
  63. package/dist/{chunk-I5WWEBDG.js → chunk-VHRHI3CU.js} +1 -1
  64. package/dist/{chunk-E4AYSXMS.js → chunk-VW6CVKVA.js} +2 -2
  65. package/dist/{chunk-BAVM2XBR.js → chunk-YAFO7V4A.js} +209 -33
  66. package/dist/{chunk-32P7FTFC.js → chunk-YQ5MFXWG.js} +8 -7
  67. package/dist/{clean-CXX7YDBQ.js → clean-263PH5CR.js} +15 -15
  68. package/dist/cli.js +50 -50
  69. package/dist/{cloud-KRQQC5AH.js → cloud-STLYEQNN.js} +4 -4
  70. package/dist/{cloudrun-LVZ4OPPC.js → cloudrun-7ZVNB6FY.js} +3 -3
  71. package/dist/commands/layout-audit.browser.js +178 -202
  72. package/dist/commands/motion-sample.browser.js +24 -71
  73. package/dist/commands/motion-signature.browser.js +374 -0
  74. package/dist/{compare-7MMDDERQ.js → compare-33JLJ52D.js} +26 -26
  75. package/dist/{compiler-C32VXLE2.js → compiler-H3QAMMC2.js} +3 -3
  76. package/dist/{component-U57T4J2P.js → component-O5JLM26B.js} +3 -3
  77. package/dist/{compositions-HG7JA7I4.js → compositions-CN4ZVT5G.js} +11 -11
  78. package/dist/{contactSheet-54AJDSR5.js → contactSheet-27SRU7A4.js} +2 -2
  79. package/dist/{delete-HXXHYTH2.js → delete-Z23A45R3.js} +2 -2
  80. package/dist/{deploy-4T3RMA5G.js → deploy-PJLSZMUH.js} +1 -1
  81. package/dist/{destroy-EYDBVHGF.js → destroy-IPUDK6YN.js} +1 -1
  82. package/dist/{dist-YUIPB7OX.js → dist-7VEVT4NT.js} +2 -2
  83. package/dist/{dist-FMHQMEMX.js → dist-ICXYT7XK.js} +1 -1
  84. package/dist/docker/Dockerfile.render +1 -1
  85. package/dist/{doctor-GKF42LFK.js → doctor-6QLXSGPK.js} +10 -10
  86. package/dist/{events-5E4LWTM3.js → events-EAAIWITP.js} +8 -8
  87. package/dist/{events-LGPPK5FN.js → events-UA4DJUO2.js} +9 -9
  88. package/dist/{feedback-53ZU2MPJ.js → feedback-2CIRCBHY.js} +10 -10
  89. package/dist/{figma-S4LBKUIF.js → figma-DFCCII66.js} +3 -3
  90. package/dist/fontLocalizeCli.js +8 -8
  91. package/dist/{get-ELQOB66I.js → get-UQ2AAXWM.js} +2 -2
  92. package/dist/{gpuPolicy-CA6KRFQQ.js → gpuPolicy-CPCLBMS5.js} +6 -6
  93. package/dist/{grade-compare-6BDBN6IQ.js → grade-compare-THUUFHO3.js} +24 -24
  94. package/dist/{help-JNBSADTC.js → help-SR2MRL3U.js} +1 -1
  95. package/dist/{history-TY3SEJWV.js → history-WLI7KFXB.js} +15 -15
  96. package/dist/hyperframe-runtime.js +49 -49
  97. package/dist/hyperframe.manifest.json +1 -1
  98. package/dist/hyperframe.runtime.iife.js +49 -49
  99. package/dist/hyperframes-player.global.js +1 -1
  100. package/dist/{info-QG6XUPA4.js → info-DFJM3YRJ.js} +11 -11
  101. package/dist/{init-RZF2YCRD.js → init-HEAMOTGH.js} +22 -22
  102. package/dist/{inspect-HYINM6BQ.js → inspect-TO2EXJNK.js} +25 -25
  103. package/dist/{installer-NBEN3ZIP.js → installer-REA7ZASD.js} +4 -4
  104. package/dist/{keyframes-VCVFJTYP.js → keyframes-XHEBAJY7.js} +12 -12
  105. package/dist/{lambda-BFHJMMCG.js → lambda-MSWYKDNT.js} +6 -6
  106. package/dist/{layout-GGRQADMQ.js → layout-UQXCTFFV.js} +25 -25
  107. package/dist/{lint-ZBMSFLOK.js → lint-BSMZ526C.js} +12 -12
  108. package/dist/{lintProject-X7L7EZWZ.js → lintProject-VNE322A7.js} +1 -1
  109. package/dist/{list-ZKWCM7JT.js → list-RNP5EMTX.js} +2 -2
  110. package/dist/{login-CZ4DAMX2.js → login-S6V75HG5.js} +4 -4
  111. package/dist/{media-treatment-65KBTTDZ.js → media-treatment-IHEEEDUQ.js} +15 -14
  112. package/dist/{models-RILNQV3Z.js → models-OQEBKNJI.js} +7 -7
  113. package/dist/{motionShot-5F4DCMWC.js → motionShot-EAIFVJ2I.js} +10 -10
  114. package/dist/{normalize-audio-SEAAEJRQ.js → normalize-audio-4ACUR6W6.js} +11 -11
  115. package/dist/{pipeline-5UY45ELH.js → pipeline-SOQHD5YN.js} +6 -6
  116. package/dist/{play-BIKUK4NL.js → play-3WJPS3FE.js} +20 -20
  117. package/dist/{preflight-3V5IHGWQ.js → preflight-ZUADCOLZ.js} +7 -7
  118. package/dist/{present-UAM37S3Z.js → present-MU23WZZA.js} +16 -16
  119. package/dist/{preview-TVU4J6VE.js → preview-VOTNRX67.js} +17 -17
  120. package/dist/{producer-7JGAPEAF.js → producer-HKRMTCPU.js} +1 -1
  121. package/dist/{projectConfig-JHEWPAA5.js → projectConfig-H37MQGE6.js} +6 -6
  122. package/dist/{publication-7XA2H7UB.js → publication-QVDKMAKD.js} +2 -2
  123. package/dist/{publish-257VZMWI.js → publish-54IPKU5O.js} +8 -8
  124. package/dist/{remove-background-EV6XVADN.js → remove-background-KQQ2WPKP.js} +7 -7
  125. package/dist/{render-QZD733OT.js → render-HJQ44SEI.js} +12 -12
  126. package/dist/{render-B66XOY6B.js → render-P7727PLY.js} +21 -21
  127. package/dist/{render-4C3YKVZI.js → render-S2T3SLI4.js} +3 -3
  128. package/dist/{render-batch-AFDBPDMM.js → render-batch-DUFAHD6F.js} +3 -3
  129. package/dist/{renderCancellation-VIZELWDD.js → renderCancellation-BSVXXGZM.js} +6 -6
  130. package/dist/renderSetupWorker.js +1 -1
  131. package/dist/{resolver-S72XBTEQ.js → resolver-PHWKDEH2.js} +4 -4
  132. package/dist/{screenshotCapture-FA5HPN7Q.js → screenshotCapture-ECBTLCU6.js} +3 -3
  133. package/dist/{sherpa-BAADWCHB.js → sherpa-GHQOWXFV.js} +7 -7
  134. package/dist/skills/hyperframes/references/frame-worker-core.md +2 -2
  135. package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +2 -2
  136. package/dist/skills/media-use/audio/references/bgm.md +1 -1
  137. package/dist/skills/media-use/audio/references/tts.md +1 -1
  138. package/dist/skills/media-use/audio/scripts/lib/python.mjs +19 -5
  139. package/dist/skills/media-use/audio/scripts/lib/python.test.mjs +69 -1
  140. package/dist/{skills-AB55WOXL.js → skills-SOCMD66Y.js} +40 -14
  141. package/dist/{skillsUpdateCheck-VRABW6UL.js → skillsUpdateCheck-PONPICQM.js} +3 -3
  142. package/dist/{snapshot-STEHSXMQ.js → snapshot-ECXEZ4TY.js} +50 -29
  143. package/dist/{src-GD7RGV5U.js → src-LVBNYMJW.js} +5 -5
  144. package/dist/{src-GRC63B6L.js → src-RQE5HXZK.js} +7 -7
  145. package/dist/{staticProjectServer-SFINO3DE.js → staticProjectServer-TQYP44CW.js} +14 -14
  146. package/dist/{status-LXQL3L3H.js → status-HVI7QZHE.js} +6 -6
  147. package/dist/studio/assets/{hyperframes-player-c6WR3RsF.js → hyperframes-player-CBpg41JM.js} +1 -1
  148. package/dist/studio/assets/{index-BJpQzV6h.js → index-BFitquwi.js} +1 -1
  149. package/dist/studio/assets/{index-Co6W8IVk.js → index-BKy_birQ.js} +194 -194
  150. package/dist/studio/assets/{index-C0KfbPAo.js → index-CZfrSyU9.js} +1 -1
  151. package/dist/studio/assets/{index-C7apTvpr.css → index-DbfKVTId.css} +1 -1
  152. package/dist/studio/{chunk-PQFEBX32.js → chunk-BIUXP3PG.js} +2 -2
  153. package/dist/studio/{chunk-6LUNLTHR.js → chunk-K47E2ZJA.js} +13 -8
  154. package/dist/studio/chunk-K47E2ZJA.js.map +1 -0
  155. package/dist/studio/{chunk-QUXZVHOJ.js → chunk-VWT7STY3.js} +2 -2
  156. package/dist/studio/{domEditingLayers-JQPQGGT7.js → domEditingLayers-V67MS4WP.js} +3 -3
  157. package/dist/studio/index.d.ts +81 -46
  158. package/dist/studio/index.html +2 -2
  159. package/dist/studio/index.js +7295 -6844
  160. package/dist/studio/index.js.map +1 -1
  161. package/dist/studio/player.js +2 -2
  162. package/dist/studio/styles.css +1 -1
  163. package/dist/{studio-api-WRSCXPWS.js → studio-api-EKF6TFDB.js} +8 -8
  164. package/dist/{studioServer-SMBPWSNR.js → studioServer-BSNDGK63.js} +38 -38
  165. package/dist/{system-EEWYEHYX.js → system-NLNIE7PO.js} +6 -6
  166. package/dist/{telemetry-VMNHQBUG.js → telemetry-XNDAM6JU.js} +9 -9
  167. package/dist/{timeline-JWJDKHRD.js → timeline-IKWTTCNY.js} +15 -15
  168. package/dist/{tokens-DETZVKSO.js → tokens-KOTFKBAK.js} +2 -2
  169. package/dist/{transcribe-GCKJF5A6.js → transcribe-ELJHKA5B.js} +7 -7
  170. package/dist/{transcribe-E5VBY6CU.js → transcribe-STEYOXIO.js} +12 -12
  171. package/dist/{updateCheck-PAC2DBB6.js → updateCheck-OJMEQUST.js} +2 -2
  172. package/dist/{upgrade-OYMNUBW2.js → upgrade-NIS32YR6.js} +2 -2
  173. package/dist/{urlDownloader-NYXPEBUN.js → urlDownloader-KJSQAFN7.js} +5 -5
  174. package/dist/{validate-KBPMDKZO.js → validate-7MCKNH5K.js} +15 -15
  175. package/dist/{video-KWQ5TSVD.js → video-TUXP3VGQ.js} +17 -9
  176. package/package.json +1 -1
  177. package/dist/chunk-5GQAJ43Q.js +0 -31
  178. package/dist/chunk-YLVI7VL5.js +0 -3541
  179. package/dist/studio/chunk-6LUNLTHR.js.map +0 -1
  180. /package/dist/studio/{chunk-PQFEBX32.js.map → chunk-BIUXP3PG.js.map} +0 -0
  181. /package/dist/studio/{chunk-QUXZVHOJ.js.map → chunk-VWT7STY3.js.map} +0 -0
  182. /package/dist/studio/{domEditingLayers-JQPQGGT7.js.map → domEditingLayers-V67MS4WP.js.map} +0 -0
@@ -1,6 +1,9 @@
1
1
  import { test } from "node:test";
2
2
  import assert from "node:assert/strict";
3
- import { resolvePythonCommand, pythonInvocation } from "./python.mjs";
3
+ import { chmodSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { defaultProbe, resolvePythonCommand, pythonInvocation } from "./python.mjs";
4
7
 
5
8
  // Regression: on Windows a standard python.org install has no `python3.exe`
6
9
  // (only `python.exe` + the `py` launcher), so `spawn("python3", …)` ENOENTs and
@@ -55,6 +58,71 @@ test("falls back to the canonical name (loud failure, unchanged) when nothing ru
55
58
  );
56
59
  });
57
60
 
61
+ // Regression (#4614): on PEP 668 systems the documented setup is a venv named
62
+ // by HYPERFRAMES_PYTHON; the audio engine ignored it and probed the bare
63
+ // system python3, so MusicGen BGM was skipped while `doctor` said installed.
64
+ const VENV = "/home/u/.venvs/hf/bin/python";
65
+
66
+ test("HYPERFRAMES_PYTHON wins over python3 on PATH when it runs", () => {
67
+ const env = { HYPERFRAMES_PYTHON: VENV };
68
+ assert.deepEqual(resolvePythonCommand("darwin", probeFor(VENV, "python3"), env), [VENV]);
69
+ assert.deepEqual(resolvePythonCommand("win32", probeFor(VENV, "python", "py"), env), [VENV]);
70
+ });
71
+
72
+ test("a HYPERFRAMES_PYTHON that doesn't run falls through to the PATH probe", () => {
73
+ const env = { HYPERFRAMES_PYTHON: "/nope/python" };
74
+ assert.deepEqual(resolvePythonCommand("linux", probeFor("python3"), env), ["python3"]);
75
+ });
76
+
77
+ test("an empty HYPERFRAMES_PYTHON is ignored without being probed", () => {
78
+ const seen = [];
79
+ const probe = (cmd) => {
80
+ seen.push(cmd);
81
+ return cmd === "python3";
82
+ };
83
+ assert.deepEqual(resolvePythonCommand("linux", probe, { HYPERFRAMES_PYTHON: "" }), ["python3"]);
84
+ assert.deepEqual(seen, ["python3"]);
85
+ });
86
+
87
+ // defaultProbe must match the CLI's validatePythonOverride(): exiting 0 is not
88
+ // enough, `--version` has to report Python 3. Stubs are shell scripts, so
89
+ // these run on POSIX only.
90
+ function withStub(script, fn) {
91
+ const dir = mkdtempSync(join(tmpdir(), "hf-python-probe-"));
92
+ try {
93
+ const stub = join(dir, "python");
94
+ writeFileSync(stub, `#!/bin/sh\n${script}\n`);
95
+ chmodSync(stub, 0o755);
96
+ fn(stub);
97
+ } finally {
98
+ rmSync(dir, { recursive: true, force: true });
99
+ }
100
+ }
101
+
102
+ const posixOnly = { skip: process.platform === "win32" && "stub scripts need a POSIX shell" };
103
+
104
+ test("defaultProbe accepts an interpreter reporting Python 3", posixOnly, () => {
105
+ withStub('echo "Python 3.12.4"', (stub) => assert.equal(defaultProbe(stub, ["--version"]), true));
106
+ });
107
+
108
+ test("defaultProbe rejects Python 2, which prints its version to stderr", posixOnly, () => {
109
+ withStub('echo "Python 2.7.18" >&2', (stub) =>
110
+ assert.equal(defaultProbe(stub, ["--version"]), false),
111
+ );
112
+ });
113
+
114
+ test(
115
+ "defaultProbe rejects an executable that exits 0 without a Python 3 version",
116
+ posixOnly,
117
+ () => {
118
+ withStub("exit 0", (stub) => assert.equal(defaultProbe(stub, ["--version"]), false));
119
+ },
120
+ );
121
+
122
+ test("defaultProbe rejects a command that doesn't exist", () => {
123
+ assert.equal(defaultProbe("/nonexistent/hf-python", ["--version"]), false);
124
+ });
125
+
58
126
  test("pythonInvocation prepends the resolved prefix ahead of caller args", () => {
59
127
  assert.deepEqual(pythonInvocation(["-c", "import x"], ["python"]), {
60
128
  cmd: "python",
@@ -9,15 +9,15 @@ import {
9
9
  } from "./chunk-WMQNIQDJ.js";
10
10
  import {
11
11
  trackSkillsInstallSkipped
12
- } from "./chunk-L37M3PV5.js";
13
- import "./chunk-47TRZ6A3.js";
12
+ } from "./chunk-LYBFDHXD.js";
13
+ import "./chunk-E664L6K3.js";
14
14
  import {
15
15
  diag
16
16
  } from "./chunk-VWG7OQKU.js";
17
17
  import {
18
18
  c
19
19
  } from "./chunk-ZTZA4UWZ.js";
20
- import "./chunk-CQRF7VU3.js";
20
+ import "./chunk-JRULOVZK.js";
21
21
  import "./chunk-AMKC3AXA.js";
22
22
  import {
23
23
  defineCommand
@@ -27,16 +27,16 @@ import {
27
27
  CliResultSignal,
28
28
  setCommandExitCode
29
29
  } from "./chunk-PBN6GBJE.js";
30
- import "./chunk-OF3RKOPU.js";
31
- import "./chunk-B25H4M4V.js";
30
+ import "./chunk-P74PW7KR.js";
31
+ import "./chunk-C4JINRJK.js";
32
32
  import "./chunk-UUDQD62L.js";
33
33
  import "./chunk-DPVXBVLL.js";
34
- import "./chunk-U4TDAJZE.js";
35
- import "./chunk-YLVI7VL5.js";
34
+ import "./chunk-J2S4MY2M.js";
35
+ import "./chunk-S6TH5G6Z.js";
36
36
  import "./chunk-VC76R6W2.js";
37
37
  import "./chunk-OFQWTKPW.js";
38
38
  import "./chunk-TWWSYAKJ.js";
39
- import "./chunk-BAVM2XBR.js";
39
+ import "./chunk-YAFO7V4A.js";
40
40
  import "./chunk-HBBJFK6I.js";
41
41
  import "./chunk-PJ3HDUCY.js";
42
42
  import "./chunk-TQFG7HTI.js";
@@ -51,15 +51,15 @@ import {
51
51
  isCoreSkill,
52
52
  presentSkills,
53
53
  pruneOrphanedLockEntries
54
- } from "./chunk-E5OSOQKO.js";
54
+ } from "./chunk-2GXKCB7J.js";
55
55
  import {
56
56
  withMeta
57
- } from "./chunk-TU7KYFS3.js";
57
+ } from "./chunk-BLI5XATY.js";
58
58
  import "./chunk-K4WIOZFP.js";
59
59
  import "./chunk-XUXGIA7H.js";
60
60
  import "./chunk-WERLJGIC.js";
61
61
  import "./chunk-ISN5GRYI.js";
62
- import "./chunk-ULNKBH6B.js";
62
+ import "./chunk-BD3MHTSR.js";
63
63
  import "./chunk-KNU5COPB.js";
64
64
  import {
65
65
  buildNpxCommand
@@ -82,7 +82,8 @@ import {
82
82
  realpathSync,
83
83
  rmSync,
84
84
  statSync,
85
- symlinkSync
85
+ symlinkSync,
86
+ unlinkSync
86
87
  } from "fs";
87
88
  import { homedir } from "os";
88
89
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "path";
@@ -162,7 +163,7 @@ var AGENT_GLOBAL_DIRS = [
162
163
  ];
163
164
 
164
165
  // src/utils/skillsMirror.ts
165
- var UNIVERSAL_STORE_READERS = /* @__PURE__ */ new Set(["pi"]);
166
+ var UNIVERSAL_STORE_READERS = /* @__PURE__ */ new Set(["pi", "codex"]);
166
167
  function canonicalCandidate(input) {
167
168
  let current = resolve(input);
168
169
  const missing = [];
@@ -281,6 +282,21 @@ function mirrorInto(targetDir, source, skills, platform, safety) {
281
282
  }
282
283
  return { mirrored: true };
283
284
  }
285
+ function removeMirrorLinks(targetDir, source, universalStore, skills, safety) {
286
+ const unsafe = safety();
287
+ if (unsafe) return unsafe;
288
+ for (const skill of skills) {
289
+ const targetSkill = join(targetDir, skill);
290
+ try {
291
+ if (!existsSync(join(universalStore, skill, "SKILL.md"))) continue;
292
+ if (!lstatSync(targetSkill).isSymbolicLink()) continue;
293
+ if (realpathSync(targetSkill) !== realpathSync(join(source, skill))) continue;
294
+ unlinkSync(targetSkill);
295
+ } catch {
296
+ }
297
+ }
298
+ return null;
299
+ }
284
300
  function mirrorGlobalSkills(opts) {
285
301
  const home = opts.home ?? homedir();
286
302
  const platform = opts.platform ?? process.platform;
@@ -306,7 +322,17 @@ function mirrorGlobalSkills(opts) {
306
322
  for (const { agent, base, sub } of AGENT_GLOBAL_DIRS) {
307
323
  const targetDir = join(bases[base], ...sub.split("/").filter(Boolean));
308
324
  if (targetDir === source || targetDir === universalStore) continue;
309
- if (UNIVERSAL_STORE_READERS.has(agent)) continue;
325
+ if (UNIVERSAL_STORE_READERS.has(agent)) {
326
+ const skipReason = removeMirrorLinks(
327
+ targetDir,
328
+ source,
329
+ universalStore,
330
+ skills,
331
+ () => targetSafety(targetDir, resolvedProtectedPaths)
332
+ );
333
+ if (skipReason) skipped.push({ agent, dir: targetDir, reason: skipReason });
334
+ continue;
335
+ }
310
336
  if (!existsSync(dirname(targetDir))) continue;
311
337
  const attempt = mirrorInto(
312
338
  targetDir,
@@ -9,13 +9,13 @@ import {
9
9
  printSkillsUpdateNotice,
10
10
  refreshSkillsCache,
11
11
  skillsCheckDue
12
- } from "./chunk-E5OSOQKO.js";
13
- import "./chunk-TU7KYFS3.js";
12
+ } from "./chunk-2GXKCB7J.js";
13
+ import "./chunk-BLI5XATY.js";
14
14
  import "./chunk-K4WIOZFP.js";
15
15
  import "./chunk-XUXGIA7H.js";
16
16
  import "./chunk-WERLJGIC.js";
17
17
  import "./chunk-ISN5GRYI.js";
18
- import "./chunk-ULNKBH6B.js";
18
+ import "./chunk-BD3MHTSR.js";
19
19
  import "./chunk-KNU5COPB.js";
20
20
  import "./chunk-M2WBOQ2Q.js";
21
21
  export {
@@ -9,9 +9,9 @@ import {
9
9
  } from "./chunk-KZI44OPA.js";
10
10
  import {
11
11
  serveStaticProjectHtml
12
- } from "./chunk-JWPSBANO.js";
12
+ } from "./chunk-NOOBRCMC.js";
13
13
  import "./chunk-XUHOIDKG.js";
14
- import "./chunk-ITBEN3QD.js";
14
+ import "./chunk-7G25WGTA.js";
15
15
  import "./chunk-X7MTZ4T2.js";
16
16
  import {
17
17
  DEFAULT_ZOOM_SCALE,
@@ -21,34 +21,34 @@ import {
21
21
  resolveCropRegion,
22
22
  runFfmpegOnce,
23
23
  seekCompositionTimeline
24
- } from "./chunk-32P7FTFC.js";
24
+ } from "./chunk-YQ5MFXWG.js";
25
25
  import "./chunk-5Z63TBTX.js";
26
26
  import "./chunk-262C25DQ.js";
27
- import "./chunk-TIZQC44K.js";
27
+ import "./chunk-OWN3ZIIK.js";
28
28
  import "./chunk-YEIFI443.js";
29
- import "./chunk-MR2LOG32.js";
30
- import "./chunk-ZU54D6MI.js";
29
+ import "./chunk-TXVN43SX.js";
30
+ import "./chunk-BZGWHPRW.js";
31
31
  import "./chunk-WEATBQTR.js";
32
- import "./chunk-5ON5GH3X.js";
33
- import "./chunk-MGFVNTIB.js";
32
+ import "./chunk-CS4IE5G7.js";
33
+ import "./chunk-TSZU5JMC.js";
34
34
  import {
35
35
  resolveProject
36
- } from "./chunk-U4U5YVVX.js";
36
+ } from "./chunk-A6GVXZZ3.js";
37
37
  import {
38
38
  formatLintFindings
39
39
  } from "./chunk-6CSYCFQV.js";
40
40
  import "./chunk-IHFUKJOR.js";
41
41
  import "./chunk-PFCFR3KZ.js";
42
- import "./chunk-LAQEZHOH.js";
42
+ import "./chunk-H3WFEPV2.js";
43
43
  import "./chunk-XT7X6QCP.js";
44
44
  import "./chunk-4YYJOFKS.js";
45
45
  import "./chunk-HVW7ABXD.js";
46
46
  import {
47
47
  resolveLocalBrowserGpuMode
48
- } from "./chunk-M224DAMG.js";
49
- import "./chunk-XYVFPDNU.js";
50
- import "./chunk-HQGJLZB6.js";
51
- import "./chunk-AWUZ3AUD.js";
48
+ } from "./chunk-KPSRL2NB.js";
49
+ import "./chunk-5SDXALUQ.js";
50
+ import "./chunk-36XLW2TP.js";
51
+ import "./chunk-M4RYK5OF.js";
52
52
  import "./chunk-AWDFDFI3.js";
53
53
  import "./chunk-GMECXFAN.js";
54
54
  import {
@@ -56,13 +56,13 @@ import {
56
56
  getFFmpegInstallHint
57
57
  } from "./chunk-TVCRUG2S.js";
58
58
  import "./chunk-RDMAU7AJ.js";
59
- import "./chunk-L37M3PV5.js";
60
- import "./chunk-47TRZ6A3.js";
59
+ import "./chunk-LYBFDHXD.js";
60
+ import "./chunk-E664L6K3.js";
61
61
  import "./chunk-VWG7OQKU.js";
62
62
  import {
63
63
  c
64
64
  } from "./chunk-ZTZA4UWZ.js";
65
- import "./chunk-CQRF7VU3.js";
65
+ import "./chunk-JRULOVZK.js";
66
66
  import "./chunk-AMKC3AXA.js";
67
67
  import {
68
68
  defineCommand
@@ -73,19 +73,19 @@ import {
73
73
  } from "./chunk-PBN6GBJE.js";
74
74
  import "./chunk-KC5XXX3X.js";
75
75
  import "./chunk-TJSTGSAW.js";
76
- import "./chunk-OF3RKOPU.js";
76
+ import "./chunk-P74PW7KR.js";
77
77
  import {
78
78
  isClipVisibleAt,
79
79
  isInClipWindow
80
- } from "./chunk-B25H4M4V.js";
80
+ } from "./chunk-C4JINRJK.js";
81
81
  import "./chunk-UUDQD62L.js";
82
82
  import "./chunk-DPVXBVLL.js";
83
- import "./chunk-U4TDAJZE.js";
83
+ import "./chunk-J2S4MY2M.js";
84
84
  import {
85
85
  readElementRateSpec,
86
86
  sourceTimeAt,
87
87
  timeAtSourceTime
88
- } from "./chunk-YLVI7VL5.js";
88
+ } from "./chunk-S6TH5G6Z.js";
89
89
  import "./chunk-VC76R6W2.js";
90
90
  import "./chunk-OFQWTKPW.js";
91
91
  import {
@@ -96,7 +96,7 @@ import "./chunk-LCSMOLGX.js";
96
96
  import "./chunk-TWWSYAKJ.js";
97
97
  import {
98
98
  lintProject
99
- } from "./chunk-BAVM2XBR.js";
99
+ } from "./chunk-YAFO7V4A.js";
100
100
  import "./chunk-HBBJFK6I.js";
101
101
  import "./chunk-PJ3HDUCY.js";
102
102
  import "./chunk-TQFG7HTI.js";
@@ -106,7 +106,7 @@ import "./chunk-K4WIOZFP.js";
106
106
  import "./chunk-XUXGIA7H.js";
107
107
  import "./chunk-WERLJGIC.js";
108
108
  import "./chunk-ISN5GRYI.js";
109
- import "./chunk-ULNKBH6B.js";
109
+ import "./chunk-BD3MHTSR.js";
110
110
  import {
111
111
  normalizeErrorMessage
112
112
  } from "./chunk-KNU5COPB.js";
@@ -176,6 +176,25 @@ function requireSnapshotFfmpeg(ffmpegPath) {
176
176
  `FFmpeg is required to extract video frames for snapshots. ${getFFmpegInstallHint()}`
177
177
  );
178
178
  }
179
+ async function recaptureSnapshotComposite(page) {
180
+ const hasPageComposite = await page.evaluate(async () => {
181
+ const runtimeWindow = window;
182
+ if (typeof runtimeWindow.__hf_page_composite_resolve !== "function") return false;
183
+ await runtimeWindow.__hf_page_composite_prepare?.();
184
+ return true;
185
+ });
186
+ if (hasPageComposite) {
187
+ await page.screenshot({
188
+ type: "jpeg",
189
+ quality: 1,
190
+ clip: { x: 0, y: 0, width: 1, height: 1 }
191
+ });
192
+ await page.evaluate(() => {
193
+ const runtimeWindow = window;
194
+ runtimeWindow.__hf_page_composite_resolve?.();
195
+ });
196
+ }
197
+ }
179
198
  async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDecoder = false, accurateSeek = false, holdLastFrame = false) {
180
199
  const tmp = mkdtempSync(join(tmpdir(), "hf-snapshot-frame-"));
181
200
  const outPath = join(tmp, "frame.png");
@@ -254,7 +273,7 @@ function computeSnapshotTimes(duration, opts) {
254
273
  return { times: times.map(round), appendedTail: false };
255
274
  }
256
275
  async function captureSnapshots(projectDir, opts) {
257
- const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-4Q3ETTHW.js");
276
+ const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-JWHKLSZM.js");
258
277
  const numFrames = opts.frames ?? 5;
259
278
  const html = await bundleWithLocalizedFonts(projectDir);
260
279
  const server = await serveStaticProjectHtml(projectDir, html, void 0, [], opts.autoProxy);
@@ -327,7 +346,7 @@ async function captureSnapshots(projectDir, opts) {
327
346
  let syncVideoFrameVisibility = null;
328
347
  let extractMediaMetadata = null;
329
348
  try {
330
- const engine = await import("./src-GD7RGV5U.js");
349
+ const engine = await import("./src-LVBNYMJW.js");
331
350
  injectVideoFramesBatch = engine.injectVideoFramesBatch;
332
351
  syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
333
352
  extractMediaMetadata = engine.extractMediaMetadata;
@@ -351,7 +370,7 @@ async function captureSnapshots(projectDir, opts) {
351
370
  }
352
371
  for (let i = 0; i < positions.length; i++) {
353
372
  const time = positions[i];
354
- await seekCompositionTimeline(page, time);
373
+ await seekCompositionTimeline(page, time, { exactTime: true });
355
374
  if (cameraExpr) await page.evaluate(cameraExpr);
356
375
  if (injectVideoFramesBatch && syncVideoFrameVisibility) {
357
376
  const candidates = await page.evaluate(() => {
@@ -453,6 +472,7 @@ async function captureSnapshots(projectDir, opts) {
453
472
  );
454
473
  }
455
474
  }
475
+ await recaptureSnapshotComposite(page);
456
476
  const timeLabel = formatSnapshotTimestamp(time);
457
477
  const index = String(i).padStart(2, "0");
458
478
  const filename = `frame-${index}-at-${timeLabel}.png`;
@@ -488,7 +508,7 @@ async function captureSnapshots(projectDir, opts) {
488
508
  const refPath = join(snapshotDir, `ref-${index}-at-${timeLabel}.png`);
489
509
  writeFileSync(refPath, refPng);
490
510
  const pairPath = join(snapshotDir, `pair-${index}-at-${timeLabel}.jpg`);
491
- const { createContactSheet } = await import("./contactSheet-54AJDSR5.js");
511
+ const { createContactSheet } = await import("./contactSheet-27SRU7A4.js");
492
512
  await createContactSheet([framePath, refPath], pairPath, {
493
513
  cols: 2,
494
514
  maxImages: 2,
@@ -532,7 +552,7 @@ var snapshot_default = defineCommand({
532
552
  },
533
553
  at: {
534
554
  type: "string",
535
- description: "Comma-separated timestamps in seconds (e.g., --at 3.0,10.5,18.0)"
555
+ 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."
536
556
  },
537
557
  timeout: {
538
558
  type: "string",
@@ -655,7 +675,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${args.output ? snaps
655
675
  );
656
676
  }
657
677
  try {
658
- const { createSnapshotContactSheet } = await import("./contactSheet-54AJDSR5.js");
678
+ const { createSnapshotContactSheet } = await import("./contactSheet-27SRU7A4.js");
659
679
  const sheets = await createSnapshotContactSheet(
660
680
  snapshotDir,
661
681
  join(snapshotDir, "contact-sheet.jpg")
@@ -756,6 +776,7 @@ export {
756
776
  extractVideoFrameToBuffer,
757
777
  formatSnapshotTimestamp,
758
778
  parseZoomScale,
779
+ recaptureSnapshotComposite,
759
780
  requireSnapshotFfmpeg,
760
781
  resolveSnapshotVideoClipStart,
761
782
  resolveSnapshotVideoFrameTime,
@@ -212,15 +212,15 @@ import {
212
212
  verifyGpuParity,
213
213
  writeCapturedFrame,
214
214
  writeUrlDownloadTelemetry
215
- } from "./chunk-OF3RKOPU.js";
215
+ } from "./chunk-P74PW7KR.js";
216
216
  import {
217
217
  MEDIA_VISUAL_STYLE_PROPERTIES,
218
218
  quantizeTimeToFrame
219
- } from "./chunk-B25H4M4V.js";
219
+ } from "./chunk-C4JINRJK.js";
220
220
  import "./chunk-UUDQD62L.js";
221
221
  import "./chunk-DPVXBVLL.js";
222
- import "./chunk-U4TDAJZE.js";
223
- import "./chunk-YLVI7VL5.js";
222
+ import "./chunk-J2S4MY2M.js";
223
+ import "./chunk-S6TH5G6Z.js";
224
224
  import "./chunk-VC76R6W2.js";
225
225
  import "./chunk-OFQWTKPW.js";
226
226
  import {
@@ -228,7 +228,7 @@ import {
228
228
  } from "./chunk-TWWSYAKJ.js";
229
229
  import {
230
230
  resolveProjectRelativeSrc
231
- } from "./chunk-BAVM2XBR.js";
231
+ } from "./chunk-YAFO7V4A.js";
232
232
  import "./chunk-HBBJFK6I.js";
233
233
  import {
234
234
  FFMPEG_PATH_ENV,
@@ -67,7 +67,7 @@ import {
67
67
  serializeRenderRequest,
68
68
  startServer,
69
69
  validatePlanV2MaterializedTarget
70
- } from "./chunk-N32ITJ7L.js";
70
+ } from "./chunk-BSBIG74E.js";
71
71
  import {
72
72
  FONT_FETCH_FAILED,
73
73
  FONT_FETCH_UNAVAILABLE,
@@ -77,7 +77,7 @@ import {
77
77
  defaultLogger,
78
78
  injectDeterministicFontFaces
79
79
  } from "./chunk-XMAL2A7Y.js";
80
- import "./chunk-YIXEH4TF.js";
80
+ import "./chunk-7OJSZTJK.js";
81
81
  import "./chunk-KC5XXX3X.js";
82
82
  import "./chunk-TJSTGSAW.js";
83
83
  import "./chunk-BZ56MTDX.js";
@@ -96,18 +96,18 @@ import {
96
96
  isTransientBrowserError,
97
97
  prepareCaptureSessionForReuse,
98
98
  resolveConfig
99
- } from "./chunk-OF3RKOPU.js";
99
+ } from "./chunk-P74PW7KR.js";
100
100
  import {
101
101
  quantizeTimeToFrame
102
- } from "./chunk-B25H4M4V.js";
102
+ } from "./chunk-C4JINRJK.js";
103
103
  import "./chunk-UUDQD62L.js";
104
104
  import "./chunk-DPVXBVLL.js";
105
- import "./chunk-U4TDAJZE.js";
106
- import "./chunk-YLVI7VL5.js";
105
+ import "./chunk-J2S4MY2M.js";
106
+ import "./chunk-S6TH5G6Z.js";
107
107
  import "./chunk-VC76R6W2.js";
108
108
  import "./chunk-OFQWTKPW.js";
109
109
  import "./chunk-TWWSYAKJ.js";
110
- import "./chunk-BAVM2XBR.js";
110
+ import "./chunk-YAFO7V4A.js";
111
111
  import "./chunk-HBBJFK6I.js";
112
112
  import "./chunk-PJ3HDUCY.js";
113
113
  import "./chunk-TQFG7HTI.js";
@@ -6,35 +6,35 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  serveStaticProjectHtml
9
- } from "./chunk-JWPSBANO.js";
9
+ } from "./chunk-NOOBRCMC.js";
10
10
  import "./chunk-XUHOIDKG.js";
11
- import "./chunk-ITBEN3QD.js";
11
+ import "./chunk-7G25WGTA.js";
12
12
  import "./chunk-X7MTZ4T2.js";
13
- import "./chunk-MR2LOG32.js";
14
- import "./chunk-ZU54D6MI.js";
13
+ import "./chunk-TXVN43SX.js";
14
+ import "./chunk-BZGWHPRW.js";
15
15
  import "./chunk-WEATBQTR.js";
16
- import "./chunk-5ON5GH3X.js";
17
- import "./chunk-MGFVNTIB.js";
18
- import "./chunk-LAQEZHOH.js";
16
+ import "./chunk-CS4IE5G7.js";
17
+ import "./chunk-TSZU5JMC.js";
18
+ import "./chunk-H3WFEPV2.js";
19
19
  import "./chunk-XT7X6QCP.js";
20
20
  import "./chunk-4YYJOFKS.js";
21
21
  import "./chunk-HVW7ABXD.js";
22
- import "./chunk-XYVFPDNU.js";
23
- import "./chunk-HQGJLZB6.js";
24
- import "./chunk-AWUZ3AUD.js";
22
+ import "./chunk-5SDXALUQ.js";
23
+ import "./chunk-36XLW2TP.js";
24
+ import "./chunk-M4RYK5OF.js";
25
25
  import "./chunk-AWDFDFI3.js";
26
26
  import "./chunk-GMECXFAN.js";
27
27
  import "./chunk-RDMAU7AJ.js";
28
28
  import "./chunk-KC5XXX3X.js";
29
29
  import "./chunk-TJSTGSAW.js";
30
- import "./chunk-B25H4M4V.js";
30
+ import "./chunk-C4JINRJK.js";
31
31
  import "./chunk-UUDQD62L.js";
32
32
  import "./chunk-DPVXBVLL.js";
33
- import "./chunk-U4TDAJZE.js";
34
- import "./chunk-YLVI7VL5.js";
33
+ import "./chunk-J2S4MY2M.js";
34
+ import "./chunk-S6TH5G6Z.js";
35
35
  import "./chunk-VC76R6W2.js";
36
36
  import "./chunk-OFQWTKPW.js";
37
- import "./chunk-BAVM2XBR.js";
37
+ import "./chunk-YAFO7V4A.js";
38
38
  import "./chunk-HBBJFK6I.js";
39
39
  import "./chunk-PJ3HDUCY.js";
40
40
  import "./chunk-TQFG7HTI.js";
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-ZTZA4UWZ.js";
25
25
  import {
26
26
  getSystemMeta
27
- } from "./chunk-CQRF7VU3.js";
27
+ } from "./chunk-JRULOVZK.js";
28
28
  import "./chunk-AMKC3AXA.js";
29
29
  import {
30
30
  defineCommand
@@ -33,16 +33,16 @@ import {
33
33
  failCommand,
34
34
  setCommandExitCode
35
35
  } from "./chunk-PBN6GBJE.js";
36
- import "./chunk-OF3RKOPU.js";
37
- import "./chunk-B25H4M4V.js";
36
+ import "./chunk-P74PW7KR.js";
37
+ import "./chunk-C4JINRJK.js";
38
38
  import "./chunk-UUDQD62L.js";
39
39
  import "./chunk-DPVXBVLL.js";
40
- import "./chunk-U4TDAJZE.js";
41
- import "./chunk-YLVI7VL5.js";
40
+ import "./chunk-J2S4MY2M.js";
41
+ import "./chunk-S6TH5G6Z.js";
42
42
  import "./chunk-VC76R6W2.js";
43
43
  import "./chunk-OFQWTKPW.js";
44
44
  import "./chunk-TWWSYAKJ.js";
45
- import "./chunk-BAVM2XBR.js";
45
+ import "./chunk-YAFO7V4A.js";
46
46
  import "./chunk-HBBJFK6I.js";
47
47
  import "./chunk-PJ3HDUCY.js";
48
48
  import "./chunk-TQFG7HTI.js";
@@ -1,4 +1,4 @@
1
- var xe=Object.defineProperty;var ke=(r,i,e)=>i in r?xe(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var h=(r,i,e)=>ke(r,typeof i!="symbol"?i+"":i,e);import{r as fe,i as Ie,a as w,b as _e,p as Oe,c as Ne,d as Fe,s as Ve,e as ge,F as ye}from"./index-Co6W8IVk.js";function He(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function z(r){return typeof r=="object"&&r!==null}function Ue(r){return z(r)&&typeof r.getDuration=="function"}function We(r){return z(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}function ze(r){if(!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(r))throw new Error(`Invalid HyperFrames runtime version: ${r}`);return`https://cdn.jsdelivr.net/npm/@hyperframes/core@${r}/dist/hyperframe.runtime.iife.js`}const U=typeof __HYPERFRAMES_RUNTIME_CDN_URL__=="string"?__HYPERFRAMES_RUNTIME_CDN_URL__:ze("0.0.0-dev");function $(r){if(r===null)return null;const i=Number.parseInt(r,10);return Number.isFinite(i)&&i>0?i:null}function $e(r){const i=(r==null?void 0:r.querySelector("[data-composition-id][data-width][data-height]"))??(r==null?void 0:r.querySelector("[data-width][data-height]"));if(!i)return null;const e=$(i.getAttribute("data-width")),t=$(i.getAttribute("data-height"));return e!==null&&t!==null?{width:e,height:t}:null}class je{constructor(i,e){h(this,"_interval",null);h(this,"_runtimeInjected",!1);this._iframe=i,this._callbacks=e}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let i=0;this._interval=setInterval(()=>{var e;i++;try{const t=this._iframe.contentWindow;if(!t)return;const s=!!(t.__hf||t.__player),n=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!((e=this._iframe.contentDocument)!=null&&e.querySelector("[data-composition-src]"));if(He({hasRuntime:s,hasTimelines:n,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:i})){this._injectRuntime();return}if(this._runtimeInjected&&!s)return;const a=this._resolvePlaybackDurationAdapter(t);if(a&&a.getDuration()>0){this.stop();const c=$e(this._iframe.contentDocument);this._callbacks.onReady({duration:a.getDuration(),adapter:a,compositionSize:c});return}}catch{}i>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{const i=this._iframe.contentWindow;return i?this._resolveDirectTimelineAdapterFromWindow(i):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(i){return this._resolveDirectTimelineAdapterFromWindow(i)}hasRuntimeBridge(i){return Reflect.get(i,"__hf")!==void 0||z(Reflect.get(i,"__player"))}_injectRuntime(){var i,e;this._runtimeInjected=!0;try{const t=this._iframe.contentDocument;if(!t)return;const s=t.createElement("script");s.src=U,(t.head||t.documentElement).appendChild(s),(e=(i=this._callbacks).onRuntimeInjected)==null||e.call(i)}catch{}}_resolveDirectTimelineAdapterFromWindow(i){var a,c;if(this.hasRuntimeBridge(i))return null;const e=Reflect.get(i,"__timelines");if(!z(e))return null;const t=Object.keys(e);if(t.length===0)return null;const s=(c=(a=this._iframe.contentDocument)==null?void 0:a.querySelector("[data-composition-id]"))==null?void 0:c.getAttribute("data-composition-id"),n=s&&s in e?s:t[t.length-1],o=e[n];return We(o)?o:null}_resolvePlaybackDurationAdapter(i){const e=Reflect.get(i,"__player");if(Ue(e))return{kind:"runtime",getDuration:()=>e.getDuration()};const t=this._resolveDirectTimelineAdapterFromWindow(i);return t?{kind:"direct-timeline",timeline:t,getDuration:()=>t.duration()}:null}}const Be=`
1
+ var xe=Object.defineProperty;var ke=(r,i,e)=>i in r?xe(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var h=(r,i,e)=>ke(r,typeof i!="symbol"?i+"":i,e);import{r as fe,i as Ie,a as w,b as _e,p as Oe,c as Ne,d as Fe,s as Ve,e as ge,F as ye}from"./index-BKy_birQ.js";function He(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function z(r){return typeof r=="object"&&r!==null}function Ue(r){return z(r)&&typeof r.getDuration=="function"}function We(r){return z(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}function ze(r){if(!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(r))throw new Error(`Invalid HyperFrames runtime version: ${r}`);return`https://cdn.jsdelivr.net/npm/@hyperframes/core@${r}/dist/hyperframe.runtime.iife.js`}const U=typeof __HYPERFRAMES_RUNTIME_CDN_URL__=="string"?__HYPERFRAMES_RUNTIME_CDN_URL__:ze("0.0.0-dev");function $(r){if(r===null)return null;const i=Number.parseInt(r,10);return Number.isFinite(i)&&i>0?i:null}function $e(r){const i=(r==null?void 0:r.querySelector("[data-composition-id][data-width][data-height]"))??(r==null?void 0:r.querySelector("[data-width][data-height]"));if(!i)return null;const e=$(i.getAttribute("data-width")),t=$(i.getAttribute("data-height"));return e!==null&&t!==null?{width:e,height:t}:null}class je{constructor(i,e){h(this,"_interval",null);h(this,"_runtimeInjected",!1);this._iframe=i,this._callbacks=e}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let i=0;this._interval=setInterval(()=>{var e;i++;try{const t=this._iframe.contentWindow;if(!t)return;const s=!!(t.__hf||t.__player),n=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!((e=this._iframe.contentDocument)!=null&&e.querySelector("[data-composition-src]"));if(He({hasRuntime:s,hasTimelines:n,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:i})){this._injectRuntime();return}if(this._runtimeInjected&&!s)return;const a=this._resolvePlaybackDurationAdapter(t);if(a&&a.getDuration()>0){this.stop();const c=$e(this._iframe.contentDocument);this._callbacks.onReady({duration:a.getDuration(),adapter:a,compositionSize:c});return}}catch{}i>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{const i=this._iframe.contentWindow;return i?this._resolveDirectTimelineAdapterFromWindow(i):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(i){return this._resolveDirectTimelineAdapterFromWindow(i)}hasRuntimeBridge(i){return Reflect.get(i,"__hf")!==void 0||z(Reflect.get(i,"__player"))}_injectRuntime(){var i,e;this._runtimeInjected=!0;try{const t=this._iframe.contentDocument;if(!t)return;const s=t.createElement("script");s.src=U,(t.head||t.documentElement).appendChild(s),(e=(i=this._callbacks).onRuntimeInjected)==null||e.call(i)}catch{}}_resolveDirectTimelineAdapterFromWindow(i){var a,c;if(this.hasRuntimeBridge(i))return null;const e=Reflect.get(i,"__timelines");if(!z(e))return null;const t=Object.keys(e);if(t.length===0)return null;const s=(c=(a=this._iframe.contentDocument)==null?void 0:a.querySelector("[data-composition-id]"))==null?void 0:c.getAttribute("data-composition-id"),n=s&&s in e?s:t[t.length-1],o=e[n];return We(o)?o:null}_resolvePlaybackDurationAdapter(i){const e=Reflect.get(i,"__player");if(Ue(e))return{kind:"runtime",getDuration:()=>e.getDuration()};const t=this._resolveDirectTimelineAdapterFromWindow(i);return t?{kind:"direct-timeline",timeline:t,getDuration:()=>t.duration()}:null}}const Be=`
2
2
  :host {
3
3
  display: block;
4
4
  position: relative;
@@ -1 +1 @@
1
- import{g as P}from"./index-Co6W8IVk.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var g=e[o+x]-t,_=r.some(function(h){if(h.interval===g)return h.count+=1});_||r.push({interval:g,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
1
+ import{g as P}from"./index-BKy_birQ.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var g=e[o+x]-t,_=r.some(function(h){if(h.interval===g)return h.count+=1});_||r.push({interval:g,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};