hyperframes 0.8.87 → 0.8.89
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.
- package/dist/{add-U6IYWNEI.js → add-JDX7VHMM.js} +5 -5
- package/dist/{asset-IVVTJRJ3.js → asset-ZQU3ZAHZ.js} +2 -2
- package/dist/{auth-B52RVHDK.js → auth-ZI5X6SXG.js} +1 -1
- package/dist/{autoUpdate-JE4IONTI.js → autoUpdate-BDREI4XN.js} +2 -2
- package/dist/{backgroundChecks-CGYRZGOR.js → backgroundChecks-52MY7SIC.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{beats-E5V4HEFQ.js → beats-77Z6UPMB.js} +4 -4
- package/dist/{benchmark-5OYJMUXY.js → benchmark-HR242B6Q.js} +5 -5
- package/dist/{browser-ZCYC2U3H.js → browser-CLQNZB5J.js} +3 -3
- package/dist/{catalog-Q4L4P7VV.js → catalog-OAJVYTXP.js} +5 -5
- package/dist/{check-HM46YAG7.js → check-AJB25CBI.js} +9 -9
- package/dist/{checkBrowser-GMHXULQC.js → checkBrowser-RTZFBO62.js} +7 -7
- package/dist/{chunk-UUMXWC2H.js → chunk-BEZ5LKUM.js} +2 -2
- package/dist/{chunk-BQ4N7ECC.js → chunk-C22UJWNH.js} +1 -1
- package/dist/{chunk-NETMPMSJ.js → chunk-CZXT2DRB.js} +2 -2
- package/dist/{chunk-V3RCZR7L.js → chunk-EAJNP7C7.js} +1 -1
- package/dist/{chunk-VP53XFPD.js → chunk-ELQAAO4F.js} +1 -1
- package/dist/{chunk-KGEVE5JJ.js → chunk-J4ZDN5N7.js} +2 -2
- package/dist/{chunk-GMEL3UDG.js → chunk-LTCGOUKZ.js} +2 -2
- package/dist/{chunk-4MLISXWH.js → chunk-PKK6QWAQ.js} +1 -1
- package/dist/{chunk-C4LRCQ7O.js → chunk-RLKPZQKI.js} +2 -2
- package/dist/{chunk-V5643PWM.js → chunk-ROFOQAPQ.js} +2 -2
- package/dist/{chunk-O24S2D45.js → chunk-S2F6QM6J.js} +1 -1
- package/dist/{chunk-RXHJRTDQ.js → chunk-SAYNFMCN.js} +1 -1
- package/dist/{chunk-4GPB7TYV.js → chunk-TQNLHVZB.js} +2 -2
- package/dist/{chunk-S4NITUIE.js → chunk-XMDQQAIB.js} +1 -1
- package/dist/{chunk-OAT3NROY.js → chunk-Z4LBLZ3I.js} +2 -2
- package/dist/{clean-LG7EU4Z6.js → clean-YNSDX62K.js} +3 -3
- package/dist/cli.js +44 -44
- package/dist/{cloud-DQSKLPJH.js → cloud-O6C6D2CC.js} +4 -4
- package/dist/{compare-QOEPDS3E.js → compare-32ZYX7EU.js} +4 -4
- package/dist/{component-ZVGX6SCH.js → component-OX6ODG5G.js} +3 -3
- package/dist/{compositions-JVJO7CKJ.js → compositions-IAWH2EMO.js} +5 -5
- package/dist/{delete-573HEO7D.js → delete-4AGDWC2T.js} +2 -2
- package/dist/{doctor-MB6A7TN7.js → doctor-AH7IX5Z6.js} +3 -3
- package/dist/{events-Z6DV7LT7.js → events-6M6FDQZZ.js} +3 -3
- package/dist/{events-7F6C7O2R.js → events-CJRCDPWV.js} +2 -2
- package/dist/{feedback-ELSUXCWM.js → feedback-C6DJ6XKA.js} +4 -4
- package/dist/{figma-4NL4EZCF.js → figma-L5RHNGY7.js} +3 -3
- package/dist/fontLocalizeCli.js +1 -1
- package/dist/{get-4W2IN7H3.js → get-TBBCYF5B.js} +2 -2
- package/dist/{grade-compare-744LENMN.js → grade-compare-FNPPD6UE.js} +4 -4
- package/dist/{help-VET2A2JX.js → help-L4V4PV7C.js} +1 -1
- package/dist/{history-BWJH4567.js → history-EEWE52BC.js} +5 -5
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-TZZU5K44.js → info-VQYR7VW6.js} +5 -5
- package/dist/{init-5QPBGFAP.js → init-L5BK5HGZ.js} +6 -6
- package/dist/{inspect-ZKM46DT2.js → inspect-4DSMPUHN.js} +6 -6
- package/dist/{keyframes-L4PTFVRB.js → keyframes-AXHMLOSU.js} +5 -5
- package/dist/{layout-RCQKNYDP.js → layout-ZV23GQU6.js} +6 -6
- package/dist/{lint-FDUB6APN.js → lint-HZIRYUSA.js} +6 -6
- package/dist/{list-D6NIQOEY.js → list-DLBDHWZ2.js} +2 -2
- package/dist/{login-M6AWHM6U.js → login-3PLQRQEP.js} +4 -4
- package/dist/{media-treatment-MRNN2DOS.js → media-treatment-7TZ7L7NU.js} +5 -5
- package/dist/{normalize-audio-WB76C7OQ.js → normalize-audio-SX64JNLW.js} +4 -4
- package/dist/{play-N5FZSNGF.js → play-VX2LSHXR.js} +4 -4
- package/dist/{present-N24VMIWP.js → present-F2DPEKZU.js} +4 -4
- package/dist/{preview-RO3INI3V.js → preview-ARITZNNL.js} +5 -5
- package/dist/{render-FQ7VV2TU.js → render-2VWTXUCT.js} +5 -5
- package/dist/{render-FULEBKUN.js → render-FT4NTFKZ.js} +5 -5
- package/dist/skills/media-use/audio/references/bgm.md +2 -0
- package/dist/skills/media-use/audio/references/sfx.md +2 -3
- package/dist/skills/media-use/audio/references/tts.md +1 -1
- package/dist/skills/media-use/audio/scripts/audio.mjs +5 -2
- package/dist/skills/media-use/audio/scripts/audio.test.mjs +61 -8
- package/dist/skills/media-use/audio/scripts/gemini-pipeline.test.mjs +14 -3
- package/dist/skills/media-use/audio/scripts/lib/bgm.mjs +8 -4
- package/dist/skills/media-use/audio/scripts/lib/bgm.test.mjs +45 -1
- package/dist/skills/media-use/audio/scripts/lib/media-record.mjs +43 -2
- package/dist/skills/media-use/audio/scripts/lib/media-record.test.mjs +54 -2
- package/dist/skills/media-use/audio/scripts/lib/sfx.mjs +36 -17
- package/dist/skills/media-use/audio/scripts/lib/sfx.test.mjs +53 -1
- package/dist/skills/media-use/scripts/lib/manifest.mjs +3 -0
- package/dist/skills/media-use/scripts/resolve.mjs +4 -4
- package/dist/{skills-JPRPPT3N.js → skills-KDD7E5CB.js} +5 -5
- package/dist/{skillsUpdateCheck-PPLBLSII.js → skillsUpdateCheck-DXGEK4AH.js} +3 -3
- package/dist/{snapshot-HBS2KVJV.js → snapshot-BSOD5KKR.js} +4 -4
- package/dist/studio/assets/{hyperframes-player-CtNVImMi.js → hyperframes-player-CVoS7kv8.js} +1 -1
- package/dist/studio/assets/{index-DZKcDAtf.js → index-BM8PwYby.js} +187 -187
- package/dist/studio/assets/{index-DJ-Ol7YS.js → index-D35-L_yn.js} +1 -1
- package/dist/studio/assets/{index-B_MF86RE.js → index-DBub9qQY.js} +1 -1
- package/dist/studio/{chunk-7PLTC6SV.js → chunk-KU4F7QZ3.js} +9 -1
- package/dist/studio/chunk-KU4F7QZ3.js.map +1 -0
- package/dist/studio/index.d.ts +42 -5
- package/dist/studio/index.html +1 -1
- package/dist/studio/index.js +269 -94
- package/dist/studio/index.js.map +1 -1
- package/dist/studio/player.js +1 -1
- package/dist/{studioServer-HIKBLJCQ.js → studioServer-2IK5LLRR.js} +4 -4
- package/dist/{telemetry-ZJ6VMRWN.js → telemetry-6P5WHWYI.js} +3 -3
- package/dist/{timeline-NMCFP4IO.js → timeline-QZ4Q2LED.js} +5 -5
- package/dist/{tokens-ILHCMG2C.js → tokens-VXZYKHFV.js} +2 -2
- package/dist/{transcribe-TC7XR5IS.js → transcribe-RQ6RHU2V.js} +3 -3
- package/dist/{updateCheck-D7C3KAJT.js → updateCheck-RRWEIZY7.js} +2 -2
- package/dist/{upgrade-ZGAFWJLS.js → upgrade-LI5TVSQQ.js} +2 -2
- package/dist/{validate-T243OVX2.js → validate-I56RAOC6.js} +6 -6
- package/package.json +1 -1
- package/dist/studio/chunk-7PLTC6SV.js.map +0 -1
|
@@ -6,13 +6,13 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
resolveProject
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-C22UJWNH.js";
|
|
10
10
|
import "./chunk-IHFUKJOR.js";
|
|
11
11
|
import {
|
|
12
12
|
ensureDOMParser
|
|
13
13
|
} from "./chunk-PFCFR3KZ.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-S2F6QM6J.js";
|
|
15
|
+
import "./chunk-EAJNP7C7.js";
|
|
16
16
|
import "./chunk-VWG7OQKU.js";
|
|
17
17
|
import {
|
|
18
18
|
c
|
|
@@ -47,12 +47,12 @@ import {
|
|
|
47
47
|
} from "./chunk-2PSPARWP.js";
|
|
48
48
|
import {
|
|
49
49
|
withMeta
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-SAYNFMCN.js";
|
|
51
51
|
import "./chunk-K4WIOZFP.js";
|
|
52
52
|
import "./chunk-XUXGIA7H.js";
|
|
53
53
|
import "./chunk-WERLJGIC.js";
|
|
54
54
|
import "./chunk-ISN5GRYI.js";
|
|
55
|
-
import "./chunk-
|
|
55
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
56
56
|
import "./chunk-KNU5COPB.js";
|
|
57
57
|
import "./chunk-3GXQPCJC.js";
|
|
58
58
|
import "./chunk-RQVDTPGD.js";
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
layout_default,
|
|
11
11
|
loadBrowserScript,
|
|
12
12
|
parseAt
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-ROFOQAPQ.js";
|
|
14
14
|
import "./chunk-6BPWGLCF.js";
|
|
15
15
|
import "./chunk-XUHOIDKG.js";
|
|
16
16
|
import "./chunk-I7MD2PC7.js";
|
|
@@ -23,7 +23,7 @@ import "./chunk-YEIFI443.js";
|
|
|
23
23
|
import "./chunk-MIYTJ6RX.js";
|
|
24
24
|
import "./chunk-HMQ27CEJ.js";
|
|
25
25
|
import "./chunk-JVYVKXTA.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-C22UJWNH.js";
|
|
27
27
|
import "./chunk-IHFUKJOR.js";
|
|
28
28
|
import "./chunk-PFCFR3KZ.js";
|
|
29
29
|
import "./chunk-MEIIOQNR.js";
|
|
@@ -37,8 +37,8 @@ import "./chunk-PWAWHXTQ.js";
|
|
|
37
37
|
import "./chunk-AWDFDFI3.js";
|
|
38
38
|
import "./chunk-VBXD76KN.js";
|
|
39
39
|
import "./chunk-XMNWWURD.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
40
|
+
import "./chunk-S2F6QM6J.js";
|
|
41
|
+
import "./chunk-EAJNP7C7.js";
|
|
42
42
|
import "./chunk-VWG7OQKU.js";
|
|
43
43
|
import "./chunk-ZTZA4UWZ.js";
|
|
44
44
|
import "./chunk-AP2WIRY6.js";
|
|
@@ -62,12 +62,12 @@ import "./chunk-PJ3HDUCY.js";
|
|
|
62
62
|
import "./chunk-TQFG7HTI.js";
|
|
63
63
|
import "./chunk-GK4AIFIH.js";
|
|
64
64
|
import "./chunk-2PSPARWP.js";
|
|
65
|
-
import "./chunk-
|
|
65
|
+
import "./chunk-SAYNFMCN.js";
|
|
66
66
|
import "./chunk-K4WIOZFP.js";
|
|
67
67
|
import "./chunk-XUXGIA7H.js";
|
|
68
68
|
import "./chunk-WERLJGIC.js";
|
|
69
69
|
import "./chunk-ISN5GRYI.js";
|
|
70
|
-
import "./chunk-
|
|
70
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
71
71
|
import "./chunk-KNU5COPB.js";
|
|
72
72
|
import "./chunk-3GXQPCJC.js";
|
|
73
73
|
import "./chunk-RQVDTPGD.js";
|
|
@@ -6,16 +6,16 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
trackLintRun
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-TQNLHVZB.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveProject
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-C22UJWNH.js";
|
|
13
13
|
import {
|
|
14
14
|
formatLintFindings
|
|
15
15
|
} from "./chunk-6CSYCFQV.js";
|
|
16
16
|
import "./chunk-IHFUKJOR.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-S2F6QM6J.js";
|
|
18
|
+
import "./chunk-EAJNP7C7.js";
|
|
19
19
|
import "./chunk-VWG7OQKU.js";
|
|
20
20
|
import {
|
|
21
21
|
c
|
|
@@ -50,12 +50,12 @@ import "./chunk-GK4AIFIH.js";
|
|
|
50
50
|
import "./chunk-2PSPARWP.js";
|
|
51
51
|
import {
|
|
52
52
|
withMeta
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-SAYNFMCN.js";
|
|
54
54
|
import "./chunk-K4WIOZFP.js";
|
|
55
55
|
import "./chunk-XUXGIA7H.js";
|
|
56
56
|
import "./chunk-WERLJGIC.js";
|
|
57
57
|
import "./chunk-ISN5GRYI.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
59
59
|
import "./chunk-KNU5COPB.js";
|
|
60
60
|
import "./chunk-3GXQPCJC.js";
|
|
61
61
|
import "./chunk-RQVDTPGD.js";
|
|
@@ -30,12 +30,12 @@ import {
|
|
|
30
30
|
} from "./chunk-PBN6GBJE.js";
|
|
31
31
|
import {
|
|
32
32
|
withMeta
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-SAYNFMCN.js";
|
|
34
34
|
import "./chunk-K4WIOZFP.js";
|
|
35
35
|
import "./chunk-XUXGIA7H.js";
|
|
36
36
|
import "./chunk-WERLJGIC.js";
|
|
37
37
|
import "./chunk-ISN5GRYI.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
39
39
|
import "./chunk-KNU5COPB.js";
|
|
40
40
|
import "./chunk-M2WBOQ2Q.js";
|
|
41
41
|
|
|
@@ -113,7 +113,7 @@ function assertAttendedDeviceFlow() {
|
|
|
113
113
|
async function runDeviceLogin() {
|
|
114
114
|
assertAttendedDeviceFlow();
|
|
115
115
|
assertOAuthConfiguredOrExit();
|
|
116
|
-
const { trackAuthLoginStarted, trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-
|
|
116
|
+
const { trackAuthLoginStarted, trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-6P5WHWYI.js");
|
|
117
117
|
trackAuthLoginStarted("device");
|
|
118
118
|
let tokens;
|
|
119
119
|
try {
|
|
@@ -178,7 +178,7 @@ async function revokeDeviceTokens(tokens) {
|
|
|
178
178
|
}
|
|
179
179
|
async function runOAuthLogin() {
|
|
180
180
|
assertOAuthConfiguredOrExit();
|
|
181
|
-
const { trackAuthLoginStarted, trackAuthLoginFailed } = await import("./telemetry-
|
|
181
|
+
const { trackAuthLoginStarted, trackAuthLoginFailed } = await import("./telemetry-6P5WHWYI.js");
|
|
182
182
|
trackAuthLoginStarted("oauth");
|
|
183
183
|
try {
|
|
184
184
|
await startAuthorizationCodeFlow();
|
|
@@ -191,7 +191,7 @@ async function runOAuthLogin() {
|
|
|
191
191
|
await reportIdentity();
|
|
192
192
|
}
|
|
193
193
|
async function reportIdentity() {
|
|
194
|
-
const { trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-
|
|
194
|
+
const { trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-6P5WHWYI.js");
|
|
195
195
|
const credential = await tryResolveCredential();
|
|
196
196
|
if (!credential) {
|
|
197
197
|
trackAuthLoginFailed("oauth", "no_credential");
|
|
@@ -248,7 +248,7 @@ async function clearUserInfoBestEffort() {
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
async function runApiKeyLogin(inlineKey) {
|
|
251
|
-
const { trackAuthLoginStarted, trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-
|
|
251
|
+
const { trackAuthLoginStarted, trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-6P5WHWYI.js");
|
|
252
252
|
trackAuthLoginStarted("api_key");
|
|
253
253
|
let key;
|
|
254
254
|
try {
|
|
@@ -12,15 +12,15 @@ import {
|
|
|
12
12
|
} from "./chunk-HMQ27CEJ.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveProject
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-C22UJWNH.js";
|
|
16
16
|
import "./chunk-IHFUKJOR.js";
|
|
17
17
|
import {
|
|
18
18
|
findFFmpeg,
|
|
19
19
|
findFFprobe,
|
|
20
20
|
getFFmpegInstallHint
|
|
21
21
|
} from "./chunk-TVCRUG2S.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-S2F6QM6J.js";
|
|
23
|
+
import "./chunk-EAJNP7C7.js";
|
|
24
24
|
import "./chunk-VWG7OQKU.js";
|
|
25
25
|
import {
|
|
26
26
|
c
|
|
@@ -68,12 +68,12 @@ import {
|
|
|
68
68
|
import "./chunk-2PSPARWP.js";
|
|
69
69
|
import {
|
|
70
70
|
withMeta
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-SAYNFMCN.js";
|
|
72
72
|
import "./chunk-K4WIOZFP.js";
|
|
73
73
|
import "./chunk-XUXGIA7H.js";
|
|
74
74
|
import "./chunk-WERLJGIC.js";
|
|
75
75
|
import "./chunk-ISN5GRYI.js";
|
|
76
|
-
import "./chunk-
|
|
76
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
77
77
|
import {
|
|
78
78
|
normalizeErrorMessage
|
|
79
79
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -6,10 +6,10 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
resolveProject
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-C22UJWNH.js";
|
|
10
10
|
import "./chunk-IHFUKJOR.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-S2F6QM6J.js";
|
|
12
|
+
import "./chunk-EAJNP7C7.js";
|
|
13
13
|
import "./chunk-VWG7OQKU.js";
|
|
14
14
|
import {
|
|
15
15
|
c
|
|
@@ -46,7 +46,7 @@ import "./chunk-K4WIOZFP.js";
|
|
|
46
46
|
import "./chunk-XUXGIA7H.js";
|
|
47
47
|
import "./chunk-WERLJGIC.js";
|
|
48
48
|
import "./chunk-ISN5GRYI.js";
|
|
49
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
50
50
|
import "./chunk-KNU5COPB.js";
|
|
51
51
|
import "./chunk-3GXQPCJC.js";
|
|
52
52
|
import "./chunk-RQVDTPGD.js";
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
} from "./chunk-LFGJWOVA.js";
|
|
38
38
|
import {
|
|
39
39
|
resolveProject
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-C22UJWNH.js";
|
|
41
41
|
import "./chunk-IHFUKJOR.js";
|
|
42
42
|
import {
|
|
43
43
|
resolveAutoProxy
|
|
@@ -56,8 +56,8 @@ import "./chunk-PWAWHXTQ.js";
|
|
|
56
56
|
import "./chunk-AWDFDFI3.js";
|
|
57
57
|
import "./chunk-VBXD76KN.js";
|
|
58
58
|
import "./chunk-XMNWWURD.js";
|
|
59
|
-
import "./chunk-
|
|
60
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-S2F6QM6J.js";
|
|
60
|
+
import "./chunk-EAJNP7C7.js";
|
|
61
61
|
import "./chunk-VWG7OQKU.js";
|
|
62
62
|
import {
|
|
63
63
|
c
|
|
@@ -91,7 +91,7 @@ import "./chunk-K4WIOZFP.js";
|
|
|
91
91
|
import "./chunk-XUXGIA7H.js";
|
|
92
92
|
import "./chunk-WERLJGIC.js";
|
|
93
93
|
import "./chunk-ISN5GRYI.js";
|
|
94
|
-
import "./chunk-
|
|
94
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
95
95
|
import "./chunk-KNU5COPB.js";
|
|
96
96
|
import "./chunk-3GXQPCJC.js";
|
|
97
97
|
import "./chunk-RQVDTPGD.js";
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
} from "./chunk-LFGJWOVA.js";
|
|
23
23
|
import {
|
|
24
24
|
resolveProject
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-C22UJWNH.js";
|
|
26
26
|
import "./chunk-IHFUKJOR.js";
|
|
27
27
|
import {
|
|
28
28
|
R,
|
|
@@ -30,8 +30,8 @@ import {
|
|
|
30
30
|
ge
|
|
31
31
|
} from "./chunk-WMQNIQDJ.js";
|
|
32
32
|
import "./chunk-XMNWWURD.js";
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-S2F6QM6J.js";
|
|
34
|
+
import "./chunk-EAJNP7C7.js";
|
|
35
35
|
import "./chunk-VWG7OQKU.js";
|
|
36
36
|
import {
|
|
37
37
|
c
|
|
@@ -65,7 +65,7 @@ import "./chunk-K4WIOZFP.js";
|
|
|
65
65
|
import "./chunk-XUXGIA7H.js";
|
|
66
66
|
import "./chunk-WERLJGIC.js";
|
|
67
67
|
import "./chunk-ISN5GRYI.js";
|
|
68
|
-
import "./chunk-
|
|
68
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
69
69
|
import "./chunk-KNU5COPB.js";
|
|
70
70
|
import "./chunk-3GXQPCJC.js";
|
|
71
71
|
import "./chunk-RQVDTPGD.js";
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
resolveProject,
|
|
14
14
|
resolveProjectOrThrow
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-C22UJWNH.js";
|
|
16
16
|
import {
|
|
17
17
|
formatLintStartupMessage
|
|
18
18
|
} from "./chunk-6CSYCFQV.js";
|
|
@@ -42,8 +42,8 @@ import "./chunk-FWDM3N34.js";
|
|
|
42
42
|
import "./chunk-PWAWHXTQ.js";
|
|
43
43
|
import "./chunk-AWDFDFI3.js";
|
|
44
44
|
import "./chunk-VBXD76KN.js";
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-
|
|
45
|
+
import "./chunk-S2F6QM6J.js";
|
|
46
|
+
import "./chunk-EAJNP7C7.js";
|
|
47
47
|
import "./chunk-VWG7OQKU.js";
|
|
48
48
|
import {
|
|
49
49
|
c
|
|
@@ -88,7 +88,7 @@ import "./chunk-WERLJGIC.js";
|
|
|
88
88
|
import {
|
|
89
89
|
isDevMode
|
|
90
90
|
} from "./chunk-ISN5GRYI.js";
|
|
91
|
-
import "./chunk-
|
|
91
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
92
92
|
import {
|
|
93
93
|
normalizeErrorMessage
|
|
94
94
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -1578,7 +1578,7 @@ async function runLocalStudioMode(dir, options) {
|
|
|
1578
1578
|
return waitForStudioChildClose(child);
|
|
1579
1579
|
}
|
|
1580
1580
|
async function runEmbeddedMode(dir, startPort, options) {
|
|
1581
|
-
const { createStudioServer, loadPreviewServerBuildSignature, resolveStudioBundle } = await import("./studioServer-
|
|
1581
|
+
const { createStudioServer, loadPreviewServerBuildSignature, resolveStudioBundle } = await import("./studioServer-2IK5LLRR.js");
|
|
1582
1582
|
const pName = options?.projectName ?? basename(dir);
|
|
1583
1583
|
const studioBundle = resolveStudioBundle();
|
|
1584
1584
|
if (!options?.json) ge(c.bold("hyperframes preview"));
|
|
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
maybePromptRenderFeedback
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RLKPZQKI.js";
|
|
10
10
|
import {
|
|
11
11
|
reportVariableIssues,
|
|
12
12
|
resolveVariablesArg,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
import "./chunk-YEIFI443.js";
|
|
33
33
|
import {
|
|
34
34
|
resolveProject
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-C22UJWNH.js";
|
|
36
36
|
import {
|
|
37
37
|
formatLintStartupMessage
|
|
38
38
|
} from "./chunk-6CSYCFQV.js";
|
|
@@ -79,8 +79,8 @@ import {
|
|
|
79
79
|
trackRenderError,
|
|
80
80
|
trackRenderObservation,
|
|
81
81
|
trackRenderPreflightRejected
|
|
82
|
-
} from "./chunk-
|
|
83
|
-
import "./chunk-
|
|
82
|
+
} from "./chunk-S2F6QM6J.js";
|
|
83
|
+
import "./chunk-EAJNP7C7.js";
|
|
84
84
|
import "./chunk-VWG7OQKU.js";
|
|
85
85
|
import {
|
|
86
86
|
c
|
|
@@ -160,7 +160,7 @@ import {
|
|
|
160
160
|
} from "./chunk-ISN5GRYI.js";
|
|
161
161
|
import {
|
|
162
162
|
VERSION
|
|
163
|
-
} from "./chunk-
|
|
163
|
+
} from "./chunk-Z4LBLZ3I.js";
|
|
164
164
|
import {
|
|
165
165
|
normalizeErrorMessage
|
|
166
166
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -37,15 +37,15 @@ import "./chunk-RZAXPDIT.js";
|
|
|
37
37
|
import "./chunk-DNXD7TOA.js";
|
|
38
38
|
import {
|
|
39
39
|
resolveProject
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-C22UJWNH.js";
|
|
41
41
|
import {
|
|
42
42
|
errorBox,
|
|
43
43
|
formatBytes,
|
|
44
44
|
formatDuration
|
|
45
45
|
} from "./chunk-IHFUKJOR.js";
|
|
46
46
|
import "./chunk-PFCFR3KZ.js";
|
|
47
|
-
import "./chunk-
|
|
48
|
-
import "./chunk-
|
|
47
|
+
import "./chunk-S2F6QM6J.js";
|
|
48
|
+
import "./chunk-EAJNP7C7.js";
|
|
49
49
|
import "./chunk-VWG7OQKU.js";
|
|
50
50
|
import {
|
|
51
51
|
c
|
|
@@ -75,12 +75,12 @@ import "./chunk-GK4AIFIH.js";
|
|
|
75
75
|
import "./chunk-2PSPARWP.js";
|
|
76
76
|
import {
|
|
77
77
|
withMeta
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-SAYNFMCN.js";
|
|
79
79
|
import "./chunk-K4WIOZFP.js";
|
|
80
80
|
import "./chunk-XUXGIA7H.js";
|
|
81
81
|
import "./chunk-WERLJGIC.js";
|
|
82
82
|
import "./chunk-ISN5GRYI.js";
|
|
83
|
-
import "./chunk-
|
|
83
|
+
import "./chunk-Z4LBLZ3I.js";
|
|
84
84
|
import {
|
|
85
85
|
normalizeErrorMessage
|
|
86
86
|
} from "./chunk-KNU5COPB.js";
|
|
@@ -15,6 +15,8 @@ One music bed per composition, produced by the shared audio engine (`scripts/aud
|
|
|
15
15
|
- **`query`** — the mood, used for retrieval and as a fallback prompt seed (e.g. a storyboard's `music:` field, falling back to `message` → `arc` → `"calm cinematic underscore"`).
|
|
16
16
|
- **`prompt`** — an explicit full prompt for generation; omit and the engine infers one (see Mood inference). Optional `blob` / `archetype` / `arc` feed that inference.
|
|
17
17
|
|
|
18
|
+
Both routes keep a file of yours already at the output name: the engine writes the next free name (`track-2.mp3`), reports it as an anomaly, and `bgm.path` carries the real path.
|
|
19
|
+
|
|
18
20
|
## HeyGen retrieval (default)
|
|
19
21
|
|
|
20
22
|
`searchSounds(query, "music", { limit: 5 })` → `GET /audio/sounds?query=<mood>&type=music&limit=5`. Take the top result (ranked by `score`), download its presigned `audio_url` → `assets/bgm/track.mp3`. Synchronous. No match → skip (BGM is optional; never fail the render over it). Cue written to `audio_meta.json`:
|
|
@@ -16,15 +16,14 @@ Each line names the effects it wants: `lines[].sfx: ["whoosh", "ui click"]`. The
|
|
|
16
16
|
"id": "3", // joins the cue to the caller's model (frame / scene / segment)
|
|
17
17
|
"name": "whoosh",
|
|
18
18
|
"file": "assets/sfx/whoosh.mp3", // downloaded or copied, relative to project root
|
|
19
|
-
"source": "heygen" | "local"
|
|
20
|
-
// in assets/sfx under that name that is not the library's copy
|
|
19
|
+
"source": "heygen" | "local", // which route resolved it
|
|
21
20
|
"offset_s": 0, // delay from the line's start
|
|
22
21
|
"duration_s": 0.57,
|
|
23
22
|
"volume": 0.35 // SFX sit UNDER voice + BGM
|
|
24
23
|
}
|
|
25
24
|
```
|
|
26
25
|
|
|
27
|
-
A cue that matches nothing is **skipped** (recorded as an anomaly); SFX never blocks a render.
|
|
26
|
+
A cue that matches nothing is **skipped** (recorded as an anomaly); SFX never blocks a render. Neither route replaces a file of yours already at the output name: the cue gets the next free name (`whoosh-2.mp3`), reported as an anomaly, and `file` carries the real path.
|
|
28
27
|
|
|
29
28
|
## HeyGen retrieval (credentialed)
|
|
30
29
|
|
|
@@ -135,7 +135,7 @@ node <SKILL_DIR>/audio/scripts/audio.mjs \
|
|
|
135
135
|
--request ./audio_request.json --hyperframes . --out ./audio_meta.json --only tts
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
The engine saves `assets/voice/intro.wav
|
|
138
|
+
The engine saves `assets/voice/intro.wav` (or `intro-2.wav` when a file of yours already has that name; `voices[].path` says which), measures its duration, and transcribes
|
|
139
139
|
it into `voices[].words` in `audio_meta.json`. Check that every requested line
|
|
140
140
|
has audio and nonempty word timings before building a captioned video. Review
|
|
141
141
|
the timings against the actual audio; transcription is estimated alignment,
|
|
@@ -55,7 +55,7 @@ import { generateBgmDetached, inferBgmPrompt, retrieveBgm } from "./lib/bgm.mjs"
|
|
|
55
55
|
import { resolveSfx } from "./lib/sfx.mjs";
|
|
56
56
|
import { mapWithConcurrency } from "./lib/concurrency.mjs";
|
|
57
57
|
import { openAudioMeta } from "./lib/audio-meta.mjs";
|
|
58
|
-
import { recordInManifest, writtenAssets } from "./lib/media-record.mjs";
|
|
58
|
+
import { recordInManifest, voicePaths, writtenAssets } from "./lib/media-record.mjs";
|
|
59
59
|
|
|
60
60
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
61
61
|
const argv = process.argv.slice(2);
|
|
@@ -138,6 +138,7 @@ if (only.has("tts") && lines.length) {
|
|
|
138
138
|
lang,
|
|
139
139
|
});
|
|
140
140
|
console.error(`· tts: ${ttsProvider} · voice ${voiceId} · ${lines.length} line(s)`);
|
|
141
|
+
const paths = voicePaths(hyperframesDir, lines, anomalies);
|
|
141
142
|
const synthLine = async (line) => {
|
|
142
143
|
const id = String(line.id);
|
|
143
144
|
const text = String(line.text ?? "").trim();
|
|
@@ -145,7 +146,7 @@ if (only.has("tts") && lines.length) {
|
|
|
145
146
|
anomalies.push(`line ${id}: empty text — skipped`);
|
|
146
147
|
return null;
|
|
147
148
|
}
|
|
148
|
-
const rel =
|
|
149
|
+
const rel = paths.get(id);
|
|
149
150
|
const abs = join(hyperframesDir, rel);
|
|
150
151
|
const { ok, words, error } = await synthesizeOne({
|
|
151
152
|
provider: ttsProvider,
|
|
@@ -217,6 +218,7 @@ if (only.has("bgm")) {
|
|
|
217
218
|
headers: heygenAuthHeaders(),
|
|
218
219
|
hyperframesDir,
|
|
219
220
|
hasVoice,
|
|
221
|
+
anomalies,
|
|
220
222
|
});
|
|
221
223
|
if (bgm) {
|
|
222
224
|
bgmFields.bgm_provider = "heygen";
|
|
@@ -243,6 +245,7 @@ if (only.has("bgm")) {
|
|
|
243
245
|
lyriaRecipe: existsSync(lyriaRecipe) ? lyriaRecipe : null,
|
|
244
246
|
seedSeconds,
|
|
245
247
|
hasVoice,
|
|
248
|
+
anomalies,
|
|
246
249
|
});
|
|
247
250
|
if (gen.disabled) {
|
|
248
251
|
anomalies.push(`bgm: ${gen.reason}`);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { strict as assert } from "node:assert";
|
|
2
2
|
import { test } from "node:test";
|
|
3
|
-
import { mkdtempSync, rmSync, existsSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { mkdtempSync, mkdirSync, readFileSync, rmSync, existsSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { join, dirname } from "node:path";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
6
|
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { recordInManifest } from "./lib/media-record.mjs";
|
|
7
8
|
import { resolveSfx } from "./lib/sfx.mjs";
|
|
8
9
|
|
|
9
10
|
// Proves the relocated engine (skills/media-use/audio/) still resolves its
|
|
@@ -48,9 +49,12 @@ test("an unknown cue is reported, not fatal", async () => {
|
|
|
48
49
|
}
|
|
49
50
|
});
|
|
50
51
|
|
|
51
|
-
test("a person's own file under a bundled name
|
|
52
|
+
test("a person's own file under a bundled name survives, and the cue gets the next free name", async () => {
|
|
52
53
|
const dir = mkdtempSync(join(tmpdir(), "mu-audio-"));
|
|
53
54
|
try {
|
|
55
|
+
const own = join(dir, "assets", "sfx", "whoosh.mp3");
|
|
56
|
+
mkdirSync(dirname(own), { recursive: true });
|
|
57
|
+
writeFileSync(own, "the person's own whoosh");
|
|
54
58
|
const resolve = () =>
|
|
55
59
|
resolveSfx({
|
|
56
60
|
cues: [{ id: "1", name: "whoosh" }],
|
|
@@ -58,16 +62,65 @@ test("a person's own file under a bundled name is not labelled as the library's"
|
|
|
58
62
|
hyperframesDir: dir,
|
|
59
63
|
sfxLibDir,
|
|
60
64
|
});
|
|
61
|
-
const copied = await resolve();
|
|
62
|
-
const reused = await resolve();
|
|
63
|
-
writeFileSync(join(dir, copied.sfx[0].file), "the person's own whoosh");
|
|
64
|
-
const own = await resolve();
|
|
65
65
|
|
|
66
|
+
const first = await resolve();
|
|
67
|
+
const second = await resolve();
|
|
68
|
+
|
|
69
|
+
assert.equal(readFileSync(own, "utf8"), "the person's own whoosh");
|
|
70
|
+
assert.deepEqual(
|
|
71
|
+
[first, second].map(({ sfx }) => [sfx[0].file, sfx[0].source]),
|
|
72
|
+
[
|
|
73
|
+
["assets/sfx/whoosh-2.mp3", "local"],
|
|
74
|
+
["assets/sfx/whoosh-2.mp3", "local"],
|
|
75
|
+
],
|
|
76
|
+
);
|
|
66
77
|
assert.deepEqual(
|
|
67
|
-
|
|
68
|
-
|
|
78
|
+
readFileSync(join(dir, "assets/sfx/whoosh-2.mp3")),
|
|
79
|
+
readFileSync(join(sfxLibDir, "whoosh.mp3")),
|
|
69
80
|
);
|
|
70
81
|
} finally {
|
|
71
82
|
rmSync(dir, { recursive: true, force: true });
|
|
72
83
|
}
|
|
73
84
|
});
|
|
85
|
+
|
|
86
|
+
test("two effects never share a file when one's name is taken by the person, run after run", async () => {
|
|
87
|
+
const dir = mkdtempSync(join(tmpdir(), "mu-audio-"));
|
|
88
|
+
try {
|
|
89
|
+
mkdirSync(join(dir, "assets", "sfx"), { recursive: true });
|
|
90
|
+
writeFileSync(join(dir, "assets", "sfx", "glitch.mp3"), "the person's own glitch");
|
|
91
|
+
const realFetch = globalThis.fetch;
|
|
92
|
+
globalThis.fetch = async (url) => {
|
|
93
|
+
const query = new URL(url).searchParams.get("query");
|
|
94
|
+
if (query)
|
|
95
|
+
return Response.json({ data: [{ audio_url: `https://sound.test/${query}`, score: 0.6 }] });
|
|
96
|
+
return new Response(`bytes of ${new URL(url).pathname}`);
|
|
97
|
+
};
|
|
98
|
+
const run = async (names) => {
|
|
99
|
+
const { sfx } = await resolveSfx({
|
|
100
|
+
cues: names.map((name, index) => ({ id: String(index), name })),
|
|
101
|
+
heygenOK: true,
|
|
102
|
+
headers: {},
|
|
103
|
+
hyperframesDir: dir,
|
|
104
|
+
sfxLibDir,
|
|
105
|
+
});
|
|
106
|
+
const files = sfx.map(({ file }) => file);
|
|
107
|
+
recordInManifest(
|
|
108
|
+
dir,
|
|
109
|
+
[...new Set(files)].map((path) => ({ path, type: "sfx", source: "search" })),
|
|
110
|
+
);
|
|
111
|
+
return files;
|
|
112
|
+
};
|
|
113
|
+
try {
|
|
114
|
+
assert.deepEqual(await run(["glitch"]), ["assets/sfx/glitch-2.mp3"]);
|
|
115
|
+
assert.deepEqual(await run(["glitch", "glitch 2", "glitch"]), [
|
|
116
|
+
"assets/sfx/glitch-2.mp3",
|
|
117
|
+
"assets/sfx/glitch-2-2.mp3",
|
|
118
|
+
"assets/sfx/glitch-2.mp3",
|
|
119
|
+
]);
|
|
120
|
+
} finally {
|
|
121
|
+
globalThis.fetch = realFetch;
|
|
122
|
+
}
|
|
123
|
+
} finally {
|
|
124
|
+
rmSync(dir, { recursive: true, force: true });
|
|
125
|
+
}
|
|
126
|
+
});
|
|
@@ -9,9 +9,15 @@ import { spawnSync } from "node:child_process";
|
|
|
9
9
|
// external audio tools are fixtures. This is not a live synthesis/render test.
|
|
10
10
|
for (const expired of [false, true]) {
|
|
11
11
|
for (const only of ["tts", "tts,bgm,sfx"]) {
|
|
12
|
+
// With expired credentials the person already has an assets/voice/intro.wav, which the engine must keep.
|
|
13
|
+
const voicePath = expired ? "assets/voice/intro-2.wav" : "assets/voice/intro.wav";
|
|
12
14
|
test(`Gemini engine returns caption metadata with ${expired ? "expired" : "absent"} HeyGen credentials (${only})`, (t) => {
|
|
13
15
|
const dir = mkdtempSync(join(tmpdir(), "hf-gemini-pipeline-"));
|
|
14
16
|
t.after(() => rmSync(dir, { recursive: true, force: true }));
|
|
17
|
+
if (expired) {
|
|
18
|
+
mkdirSync(join(dir, "assets/voice"), { recursive: true });
|
|
19
|
+
writeFileSync(join(dir, "assets/voice/intro.wav"), "the person's own intro");
|
|
20
|
+
}
|
|
15
21
|
const config = join(dir, "heygen");
|
|
16
22
|
mkdirSync(config);
|
|
17
23
|
if (expired)
|
|
@@ -48,7 +54,7 @@ const assert = require('node:assert/strict');
|
|
|
48
54
|
const fs = require('node:fs');
|
|
49
55
|
const path = require('node:path');
|
|
50
56
|
const args = process.argv.slice(2);
|
|
51
|
-
assert.deepEqual(args.slice(0, 3), ['hyperframes', 'transcribe', '
|
|
57
|
+
assert.deepEqual(args.slice(0, 3), ['hyperframes', 'transcribe', '${voicePath}']);
|
|
52
58
|
assert.ok(fs.existsSync(args[2]));
|
|
53
59
|
assert.equal(args[args.indexOf('--model')+1], 'small.en');
|
|
54
60
|
fs.writeFileSync(path.join(args[args.indexOf('--dir')+1], 'transcript.json'), JSON.stringify([
|
|
@@ -99,7 +105,7 @@ fs.writeFileSync(path.join(args[args.indexOf('--dir')+1], 'transcript.json'), JS
|
|
|
99
105
|
assert.deepEqual(meta.voices, [
|
|
100
106
|
{
|
|
101
107
|
id: "intro",
|
|
102
|
-
path:
|
|
108
|
+
path: voicePath,
|
|
103
109
|
duration_s: 1.25,
|
|
104
110
|
words: [
|
|
105
111
|
{ id: "w0", text: "Hello", start: 0.1, end: 0.4 },
|
|
@@ -113,8 +119,13 @@ fs.writeFileSync(path.join(args[args.indexOf('--dir')+1], 'transcript.json'), JS
|
|
|
113
119
|
manifest
|
|
114
120
|
.map((line) => JSON.parse(line))
|
|
115
121
|
.map(({ path, type, source }) => [path, type, source]),
|
|
116
|
-
[[
|
|
122
|
+
[[voicePath, "voice", "generated"]],
|
|
117
123
|
);
|
|
124
|
+
if (expired)
|
|
125
|
+
assert.equal(
|
|
126
|
+
readFileSync(join(dir, "assets/voice/intro.wav"), "utf8"),
|
|
127
|
+
"the person's own intro",
|
|
128
|
+
);
|
|
118
129
|
});
|
|
119
130
|
}
|
|
120
131
|
}
|