hyperframes 0.8.88 → 0.8.90

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 (100) hide show
  1. package/dist/{add-6EIX4VO2.js → add-QCKUCHLO.js} +5 -5
  2. package/dist/{asset-BYFQENI4.js → asset-X5G7FLIA.js} +2 -2
  3. package/dist/{auth-CNYWEFA6.js → auth-HUTOY6UC.js} +1 -1
  4. package/dist/{autoUpdate-FN4SJBTE.js → autoUpdate-GVXUAVME.js} +2 -2
  5. package/dist/{backgroundChecks-ODS4VEB5.js → backgroundChecks-DP64TQBS.js} +3 -3
  6. package/dist/backgroundChecksWorker.js +3 -3
  7. package/dist/{beats-RTVNXBLK.js → beats-2BAVXPN4.js} +4 -4
  8. package/dist/{benchmark-KKPDM7PU.js → benchmark-AXEIQN5S.js} +5 -5
  9. package/dist/{browser-ADH34IWX.js → browser-GOL5PWIJ.js} +3 -3
  10. package/dist/{catalog-5NIRSEF7.js → catalog-UDASP3IK.js} +5 -5
  11. package/dist/{check-PRVHJKEC.js → check-IMDTJ2RH.js} +12 -12
  12. package/dist/{checkBrowser-CY3FMWQV.js → checkBrowser-OCN4Z4FT.js} +10 -10
  13. package/dist/{chunk-UP5KFGFZ.js → chunk-4HDAVJMN.js} +2 -2
  14. package/dist/{chunk-ZDAF2XYX.js → chunk-6QBQPTRJ.js} +2 -2
  15. package/dist/{chunk-DDXTUSZ3.js → chunk-77SYQXQN.js} +2 -2
  16. package/dist/{chunk-XDDHE52R.js → chunk-AAW5AF54.js} +2 -2
  17. package/dist/{chunk-MIYTJ6RX.js → chunk-CYG65ZCX.js} +12 -4
  18. package/dist/{chunk-BM25TRQX.js → chunk-DGPMOHUO.js} +3 -3
  19. package/dist/{chunk-6BPWGLCF.js → chunk-FPWCGP7T.js} +1 -1
  20. package/dist/{chunk-UX3MPYCP.js → chunk-GK6OCEV7.js} +2 -2
  21. package/dist/{chunk-ICWOWWC6.js → chunk-GSWG25MG.js} +1 -1
  22. package/dist/{chunk-RXRF3N5D.js → chunk-GVHRNT6C.js} +1 -1
  23. package/dist/{chunk-AV7ASJOK.js → chunk-KGDCJK72.js} +1 -1
  24. package/dist/{chunk-F6D4LJQG.js → chunk-KRXGOOP3.js} +1 -1
  25. package/dist/{chunk-VGS3ZUDB.js → chunk-OV4CCBM3.js} +1 -1
  26. package/dist/{chunk-4ARA5OTM.js → chunk-PQ3I6CAC.js} +1 -1
  27. package/dist/{chunk-I7MD2PC7.js → chunk-TQGNT45W.js} +1 -1
  28. package/dist/{chunk-RIEQ7B3Q.js → chunk-U325D5ZG.js} +1 -1
  29. package/dist/{chunk-Q2FGKCVO.js → chunk-WRZG77MO.js} +3 -3
  30. package/dist/{chunk-2KCIKXV3.js → chunk-YQ5SWLDS.js} +2 -2
  31. package/dist/{clean-ILEUS4I4.js → clean-F7NNEFPY.js} +4 -4
  32. package/dist/cli.js +44 -44
  33. package/dist/{cloud-YKZ6FMFO.js → cloud-GSFIMHVY.js} +4 -4
  34. package/dist/{compare-A7HXMQA2.js → compare-26UBKHZI.js} +7 -7
  35. package/dist/{component-GSYJQJH2.js → component-5QG3ILQS.js} +3 -3
  36. package/dist/{compositions-4K3YFH25.js → compositions-IFRNCQ5G.js} +5 -5
  37. package/dist/{delete-5R7CYMLA.js → delete-Z2L6F346.js} +2 -2
  38. package/dist/{doctor-HGGU5EPV.js → doctor-WLSP4XWV.js} +3 -3
  39. package/dist/{events-CT5MGBWG.js → events-FERXZJ74.js} +3 -3
  40. package/dist/{events-RQHXK2BA.js → events-SFI5FAYU.js} +2 -2
  41. package/dist/{feedback-S5TP76SF.js → feedback-6ZIZEN2J.js} +4 -4
  42. package/dist/{figma-JVTSWBQC.js → figma-OKUQYGPU.js} +3 -3
  43. package/dist/fontLocalizeCli.js +1 -1
  44. package/dist/{get-B6QNBIOY.js → get-JFVMDJ4K.js} +2 -2
  45. package/dist/{grade-compare-53VJQ6AR.js → grade-compare-TGVT536U.js} +7 -7
  46. package/dist/{help-74I7OBNZ.js → help-JHJAEATI.js} +1 -1
  47. package/dist/{history-JAICBG5J.js → history-IKW2UMZJ.js} +6 -6
  48. package/dist/hyperframes-player.global.js +1 -1
  49. package/dist/{info-DPLY233F.js → info-GOMASHNG.js} +5 -5
  50. package/dist/{init-GH473WVQ.js → init-VHK4JK2I.js} +6 -6
  51. package/dist/{inspect-ALZBOAVC.js → inspect-NR4M3D3O.js} +9 -9
  52. package/dist/{keyframes-3IHD4566.js → keyframes-4Z6UHXTR.js} +6 -6
  53. package/dist/{layout-DIE6IDNL.js → layout-F5STB2UB.js} +9 -9
  54. package/dist/{lint-BK7RM2VI.js → lint-XIKDK5NE.js} +6 -6
  55. package/dist/{list-IETRGPUL.js → list-PV5AVDEA.js} +2 -2
  56. package/dist/{login-6MOHVUEO.js → login-4JVYU5EP.js} +4 -4
  57. package/dist/{media-treatment-GLTDA25U.js → media-treatment-DQWRIN3R.js} +5 -5
  58. package/dist/{motionShot-J2Q4CGMA.js → motionShot-F7PMQYSA.js} +1 -1
  59. package/dist/{normalize-audio-225AHD54.js → normalize-audio-AVLP7MKR.js} +4 -4
  60. package/dist/{play-N2G5Z7OL.js → play-4GAAK5T4.js} +7 -7
  61. package/dist/{present-TVY4QRSP.js → present-WIRBZKR2.js} +7 -7
  62. package/dist/{preview-H5D4G6V6.js → preview-NUQRYW6F.js} +5 -5
  63. package/dist/{render-LDKZKOVA.js → render-LUZG33CD.js} +5 -5
  64. package/dist/{render-JDBG7432.js → render-MDIGXG66.js} +5 -5
  65. package/dist/skills/media-use/audio/references/bgm.md +2 -0
  66. package/dist/skills/media-use/audio/references/sfx.md +2 -3
  67. package/dist/skills/media-use/audio/references/tts.md +1 -1
  68. package/dist/skills/media-use/audio/scripts/audio.mjs +5 -2
  69. package/dist/skills/media-use/audio/scripts/audio.test.mjs +61 -8
  70. package/dist/skills/media-use/audio/scripts/gemini-pipeline.test.mjs +14 -3
  71. package/dist/skills/media-use/audio/scripts/lib/bgm.mjs +8 -4
  72. package/dist/skills/media-use/audio/scripts/lib/bgm.test.mjs +45 -1
  73. package/dist/skills/media-use/audio/scripts/lib/media-record.mjs +43 -2
  74. package/dist/skills/media-use/audio/scripts/lib/media-record.test.mjs +54 -2
  75. package/dist/skills/media-use/audio/scripts/lib/sfx.mjs +36 -17
  76. package/dist/skills/media-use/audio/scripts/lib/sfx.test.mjs +53 -1
  77. package/dist/skills/media-use/scripts/lib/manifest.mjs +3 -0
  78. package/dist/skills/media-use/scripts/resolve.mjs +4 -4
  79. package/dist/{skills-QWPGK2MN.js → skills-YZOZUC2R.js} +5 -5
  80. package/dist/{skillsUpdateCheck-JY23Q7EF.js → skillsUpdateCheck-V2MIGABK.js} +3 -3
  81. package/dist/{snapshot-HCLMYOWI.js → snapshot-DEKOD4F6.js} +7 -7
  82. package/dist/{staticProjectServer-VPVGLNV2.js → staticProjectServer-JSX6RZC3.js} +3 -3
  83. package/dist/studio/assets/{hyperframes-player-w3Bbv0kd.js → hyperframes-player-DDjER_ii.js} +1 -1
  84. package/dist/studio/assets/{index-DldknZPp.js → index-5SFeUXP8.js} +1 -1
  85. package/dist/studio/assets/{index-DE6cZYR5.js → index-BKE3_N4v.js} +180 -180
  86. package/dist/studio/assets/{index-B6PGJTzp.js → index-CVsCxnlz.js} +1 -1
  87. package/dist/studio/index.d.ts +39 -5
  88. package/dist/studio/index.html +1 -1
  89. package/dist/studio/index.js +156 -65
  90. package/dist/studio/index.js.map +1 -1
  91. package/dist/{studio-api-6YLFY6OJ.js → studio-api-JLNPQ3TO.js} +1 -1
  92. package/dist/{studioServer-LZDGVKYT.js → studioServer-ZCL433KM.js} +8 -5
  93. package/dist/{telemetry-Z3RLGWGK.js → telemetry-RPKG2UZI.js} +3 -3
  94. package/dist/{timeline-WOKBCYLM.js → timeline-DUIEKLUY.js} +6 -6
  95. package/dist/{tokens-RTP2IROL.js → tokens-KPHKWWZ6.js} +2 -2
  96. package/dist/{transcribe-ASVWZ3GP.js → transcribe-TNYWMNAY.js} +3 -3
  97. package/dist/{updateCheck-5LM5GJCF.js → updateCheck-PBVAHMGC.js} +2 -2
  98. package/dist/{upgrade-YWWAFHLF.js → upgrade-CFBD6XYU.js} +2 -2
  99. package/dist/{validate-EWNJ4VOI.js → validate-INYRDUJN.js} +6 -6
  100. package/package.json +1 -1
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  gateRegistryItemsCompatibility
9
- } from "./chunk-F6D4LJQG.js";
9
+ } from "./chunk-KRXGOOP3.js";
10
10
  import {
11
11
  initialModelForLanguage
12
12
  } from "./chunk-MGUSGIWE.js";
@@ -49,8 +49,8 @@ import {
49
49
  import "./chunk-XLJXHNXC.js";
50
50
  import {
51
51
  trackInitTemplate
52
- } from "./chunk-AV7ASJOK.js";
53
- import "./chunk-4ARA5OTM.js";
52
+ } from "./chunk-KGDCJK72.js";
53
+ import "./chunk-PQ3I6CAC.js";
54
54
  import "./chunk-VWG7OQKU.js";
55
55
  import {
56
56
  c,
@@ -95,7 +95,7 @@ import "./chunk-WERLJGIC.js";
95
95
  import "./chunk-ISN5GRYI.js";
96
96
  import {
97
97
  VERSION
98
- } from "./chunk-DDXTUSZ3.js";
98
+ } from "./chunk-77SYQXQN.js";
99
99
  import "./chunk-KNU5COPB.js";
100
100
  import "./chunk-3GXQPCJC.js";
101
101
  import "./chunk-RQVDTPGD.js";
@@ -631,7 +631,7 @@ async function scaffoldProject(destDir, name, templateId, localVideoName, durati
631
631
  }
632
632
  }
633
633
  async function keepSkillsCurrent(destDir) {
634
- const { updateSkills } = await import("./skills-QWPGK2MN.js");
634
+ const { updateSkills } = await import("./skills-YZOZUC2R.js");
635
635
  console.log();
636
636
  console.log(c.bold("Checking AI coding skills against GitHub..."));
637
637
  try {
@@ -1073,7 +1073,7 @@ ${c.dim("Use --example blank for offline use.")}`
1073
1073
  }
1074
1074
  R.info("Opening studio preview...");
1075
1075
  try {
1076
- const previewCmd = await import("./preview-H5D4G6V6.js").then((m) => m.default);
1076
+ const previewCmd = await import("./preview-NUQRYW6F.js").then((m) => m.default);
1077
1077
  await runCommand(previewCmd, { rawArgs: [destDir] });
1078
1078
  } catch {
1079
1079
  }
@@ -6,20 +6,20 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  createInspectCommand
9
- } from "./chunk-Q2FGKCVO.js";
10
- import "./chunk-6BPWGLCF.js";
9
+ } from "./chunk-WRZG77MO.js";
10
+ import "./chunk-FPWCGP7T.js";
11
11
  import "./chunk-XUHOIDKG.js";
12
- import "./chunk-I7MD2PC7.js";
12
+ import "./chunk-TQGNT45W.js";
13
13
  import "./chunk-X7MTZ4T2.js";
14
14
  import "./chunk-NL6WSNWA.js";
15
15
  import "./chunk-5Z63TBTX.js";
16
16
  import "./chunk-262C25DQ.js";
17
17
  import "./chunk-WJ4NAOYT.js";
18
18
  import "./chunk-YEIFI443.js";
19
- import "./chunk-MIYTJ6RX.js";
19
+ import "./chunk-CYG65ZCX.js";
20
20
  import "./chunk-HMQ27CEJ.js";
21
21
  import "./chunk-JVYVKXTA.js";
22
- import "./chunk-ICWOWWC6.js";
22
+ import "./chunk-GSWG25MG.js";
23
23
  import "./chunk-IHFUKJOR.js";
24
24
  import "./chunk-PFCFR3KZ.js";
25
25
  import "./chunk-MEIIOQNR.js";
@@ -33,8 +33,8 @@ import "./chunk-PWAWHXTQ.js";
33
33
  import "./chunk-AWDFDFI3.js";
34
34
  import "./chunk-VBXD76KN.js";
35
35
  import "./chunk-XMNWWURD.js";
36
- import "./chunk-AV7ASJOK.js";
37
- import "./chunk-4ARA5OTM.js";
36
+ import "./chunk-KGDCJK72.js";
37
+ import "./chunk-PQ3I6CAC.js";
38
38
  import "./chunk-VWG7OQKU.js";
39
39
  import "./chunk-ZTZA4UWZ.js";
40
40
  import "./chunk-AP2WIRY6.js";
@@ -58,12 +58,12 @@ import "./chunk-PJ3HDUCY.js";
58
58
  import "./chunk-TQFG7HTI.js";
59
59
  import "./chunk-GK4AIFIH.js";
60
60
  import "./chunk-2PSPARWP.js";
61
- import "./chunk-RIEQ7B3Q.js";
61
+ import "./chunk-U325D5ZG.js";
62
62
  import "./chunk-K4WIOZFP.js";
63
63
  import "./chunk-XUXGIA7H.js";
64
64
  import "./chunk-WERLJGIC.js";
65
65
  import "./chunk-ISN5GRYI.js";
66
- import "./chunk-DDXTUSZ3.js";
66
+ import "./chunk-77SYQXQN.js";
67
67
  import "./chunk-KNU5COPB.js";
68
68
  import "./chunk-3GXQPCJC.js";
69
69
  import "./chunk-RQVDTPGD.js";
@@ -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-ICWOWWC6.js";
9
+ } from "./chunk-GSWG25MG.js";
10
10
  import "./chunk-IHFUKJOR.js";
11
11
  import {
12
12
  ensureDOMParser
13
13
  } from "./chunk-PFCFR3KZ.js";
14
- import "./chunk-AV7ASJOK.js";
15
- import "./chunk-4ARA5OTM.js";
14
+ import "./chunk-KGDCJK72.js";
15
+ import "./chunk-PQ3I6CAC.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-RIEQ7B3Q.js";
50
+ } from "./chunk-U325D5ZG.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-DDXTUSZ3.js";
55
+ import "./chunk-77SYQXQN.js";
56
56
  import "./chunk-KNU5COPB.js";
57
57
  import "./chunk-3GXQPCJC.js";
58
58
  import "./chunk-RQVDTPGD.js";
@@ -2359,7 +2359,7 @@ function printOnionShotSaved(saved, elementCount) {
2359
2359
  console.log();
2360
2360
  }
2361
2361
  async function runOnionShot(comps, allComps, projectDir, entryFile, args) {
2362
- const { captureMotionPathShot } = await import("./motionShot-J2Q4CGMA.js");
2362
+ const { captureMotionPathShot } = await import("./motionShot-F7PMQYSA.js");
2363
2363
  const requests = collectShotSelectors(args.selector ? allComps : comps);
2364
2364
  const guardError = onionShotGuardError(projectDir, requests, args.ghost ?? false);
2365
2365
  if (guardError) {
@@ -10,20 +10,20 @@ import {
10
10
  layout_default,
11
11
  loadBrowserScript,
12
12
  parseAt
13
- } from "./chunk-Q2FGKCVO.js";
14
- import "./chunk-6BPWGLCF.js";
13
+ } from "./chunk-WRZG77MO.js";
14
+ import "./chunk-FPWCGP7T.js";
15
15
  import "./chunk-XUHOIDKG.js";
16
- import "./chunk-I7MD2PC7.js";
16
+ import "./chunk-TQGNT45W.js";
17
17
  import "./chunk-X7MTZ4T2.js";
18
18
  import "./chunk-NL6WSNWA.js";
19
19
  import "./chunk-5Z63TBTX.js";
20
20
  import "./chunk-262C25DQ.js";
21
21
  import "./chunk-WJ4NAOYT.js";
22
22
  import "./chunk-YEIFI443.js";
23
- import "./chunk-MIYTJ6RX.js";
23
+ import "./chunk-CYG65ZCX.js";
24
24
  import "./chunk-HMQ27CEJ.js";
25
25
  import "./chunk-JVYVKXTA.js";
26
- import "./chunk-ICWOWWC6.js";
26
+ import "./chunk-GSWG25MG.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-AV7ASJOK.js";
41
- import "./chunk-4ARA5OTM.js";
40
+ import "./chunk-KGDCJK72.js";
41
+ import "./chunk-PQ3I6CAC.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-RIEQ7B3Q.js";
65
+ import "./chunk-U325D5ZG.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-DDXTUSZ3.js";
70
+ import "./chunk-77SYQXQN.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-UX3MPYCP.js";
9
+ } from "./chunk-GK6OCEV7.js";
10
10
  import {
11
11
  resolveProject
12
- } from "./chunk-ICWOWWC6.js";
12
+ } from "./chunk-GSWG25MG.js";
13
13
  import {
14
14
  formatLintFindings
15
15
  } from "./chunk-6CSYCFQV.js";
16
16
  import "./chunk-IHFUKJOR.js";
17
- import "./chunk-AV7ASJOK.js";
18
- import "./chunk-4ARA5OTM.js";
17
+ import "./chunk-KGDCJK72.js";
18
+ import "./chunk-PQ3I6CAC.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-RIEQ7B3Q.js";
53
+ } from "./chunk-U325D5ZG.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-DDXTUSZ3.js";
58
+ import "./chunk-77SYQXQN.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-RIEQ7B3Q.js";
33
+ } from "./chunk-U325D5ZG.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-DDXTUSZ3.js";
38
+ import "./chunk-77SYQXQN.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-Z3RLGWGK.js");
116
+ const { trackAuthLoginStarted, trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-RPKG2UZI.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-Z3RLGWGK.js");
181
+ const { trackAuthLoginStarted, trackAuthLoginFailed } = await import("./telemetry-RPKG2UZI.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-Z3RLGWGK.js");
194
+ const { trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-RPKG2UZI.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-Z3RLGWGK.js");
251
+ const { trackAuthLoginStarted, trackAuthLoginCompleted, trackAuthLoginFailed, identifyUser } = await import("./telemetry-RPKG2UZI.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-ICWOWWC6.js";
15
+ } from "./chunk-GSWG25MG.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-AV7ASJOK.js";
23
- import "./chunk-4ARA5OTM.js";
22
+ import "./chunk-KGDCJK72.js";
23
+ import "./chunk-PQ3I6CAC.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-RIEQ7B3Q.js";
71
+ } from "./chunk-U325D5ZG.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-DDXTUSZ3.js";
76
+ import "./chunk-77SYQXQN.js";
77
77
  import {
78
78
  normalizeErrorMessage
79
79
  } from "./chunk-KNU5COPB.js";
@@ -543,7 +543,7 @@ async function captureMotionPathShot(projectDir, requestsIn, outPath, opts = {})
543
543
  const fit = opts.fit ?? true;
544
544
  const camera = parseAngle(opts.angle);
545
545
  const { ensureBrowser } = await import("./manager-NEVLEZK3.js");
546
- const { serveStaticProjectHtml } = await import("./staticProjectServer-VPVGLNV2.js");
546
+ const { serveStaticProjectHtml } = await import("./staticProjectServer-JSX6RZC3.js");
547
547
  const { bundleToSingleHtml } = await import("./compiler-XICNIB6E.js");
548
548
  const html = await bundleToSingleHtml(projectDir, { entryFile: opts.entryFile });
549
549
  const server = await serveStaticProjectHtml(
@@ -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-ICWOWWC6.js";
9
+ } from "./chunk-GSWG25MG.js";
10
10
  import "./chunk-IHFUKJOR.js";
11
- import "./chunk-AV7ASJOK.js";
12
- import "./chunk-4ARA5OTM.js";
11
+ import "./chunk-KGDCJK72.js";
12
+ import "./chunk-PQ3I6CAC.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-DDXTUSZ3.js";
49
+ import "./chunk-77SYQXQN.js";
50
50
  import "./chunk-KNU5COPB.js";
51
51
  import "./chunk-3GXQPCJC.js";
52
52
  import "./chunk-RQVDTPGD.js";
@@ -12,12 +12,12 @@ import {
12
12
  resolvePlayerPath,
13
13
  resolveRuntimePath,
14
14
  revalidatedResponse
15
- } from "./chunk-I7MD2PC7.js";
15
+ } from "./chunk-TQGNT45W.js";
16
16
  import "./chunk-X7MTZ4T2.js";
17
17
  import {
18
18
  injectMediaCodecMapIntoHtml,
19
19
  requestSubPath
20
- } from "./chunk-MIYTJ6RX.js";
20
+ } from "./chunk-CYG65ZCX.js";
21
21
  import "./chunk-HMQ27CEJ.js";
22
22
  import {
23
23
  PROXY_VARIANT_CONFIG,
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-LFGJWOVA.js";
38
38
  import {
39
39
  resolveProject
40
- } from "./chunk-ICWOWWC6.js";
40
+ } from "./chunk-GSWG25MG.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-AV7ASJOK.js";
60
- import "./chunk-4ARA5OTM.js";
59
+ import "./chunk-KGDCJK72.js";
60
+ import "./chunk-PQ3I6CAC.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-DDXTUSZ3.js";
94
+ import "./chunk-77SYQXQN.js";
95
95
  import "./chunk-KNU5COPB.js";
96
96
  import "./chunk-3GXQPCJC.js";
97
97
  import "./chunk-RQVDTPGD.js";
@@ -238,7 +238,7 @@ var play_default = defineCommand({
238
238
  }
239
239
  });
240
240
  async function registerCompositionRoute(app, project, autoProxy) {
241
- const { isSafePath } = await import("./studio-api-6YLFY6OJ.js");
241
+ const { isSafePath } = await import("./studio-api-JLNPQ3TO.js");
242
242
  app.get("/composition/*", async (ctx) => {
243
243
  const reqPath = requestSubPath(ctx.req.url, "composition");
244
244
  const filePath = resolve(project.dir, reqPath);
@@ -9,10 +9,10 @@ import {
9
9
  listenOnFreePort,
10
10
  resolvePlayerPath,
11
11
  resolveSlideshowPath
12
- } from "./chunk-I7MD2PC7.js";
12
+ } from "./chunk-TQGNT45W.js";
13
13
  import {
14
14
  requestSubPath
15
- } from "./chunk-MIYTJ6RX.js";
15
+ } from "./chunk-CYG65ZCX.js";
16
16
  import "./chunk-HMQ27CEJ.js";
17
17
  import "./chunk-JVYVKXTA.js";
18
18
  import {
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-LFGJWOVA.js";
23
23
  import {
24
24
  resolveProject
25
- } from "./chunk-ICWOWWC6.js";
25
+ } from "./chunk-GSWG25MG.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-AV7ASJOK.js";
34
- import "./chunk-4ARA5OTM.js";
33
+ import "./chunk-KGDCJK72.js";
34
+ import "./chunk-PQ3I6CAC.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-DDXTUSZ3.js";
68
+ import "./chunk-77SYQXQN.js";
69
69
  import "./chunk-KNU5COPB.js";
70
70
  import "./chunk-3GXQPCJC.js";
71
71
  import "./chunk-RQVDTPGD.js";
@@ -330,7 +330,7 @@ function escHtml(value) {
330
330
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
331
331
  }
332
332
  async function registerPresentCompositionRoute(app, project) {
333
- const { isSafePath } = await import("./studio-api-6YLFY6OJ.js");
333
+ const { isSafePath } = await import("./studio-api-JLNPQ3TO.js");
334
334
  app.get("/composition/*", (ctx) => {
335
335
  const reqPath = requestSubPath(ctx.req.url, "composition");
336
336
  const filePath = resolve(project.dir, reqPath);
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  resolveProject,
14
14
  resolveProjectOrThrow
15
- } from "./chunk-ICWOWWC6.js";
15
+ } from "./chunk-GSWG25MG.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-AV7ASJOK.js";
46
- import "./chunk-4ARA5OTM.js";
45
+ import "./chunk-KGDCJK72.js";
46
+ import "./chunk-PQ3I6CAC.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-DDXTUSZ3.js";
91
+ import "./chunk-77SYQXQN.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-LZDGVKYT.js");
1581
+ const { createStudioServer, loadPreviewServerBuildSignature, resolveStudioBundle } = await import("./studioServer-ZCL433KM.js");
1582
1582
  const pName = options?.projectName ?? basename(dir);
1583
1583
  const studioBundle = resolveStudioBundle();
1584
1584
  if (!options?.json) ge(c.bold("hyperframes preview"));
@@ -37,15 +37,15 @@ import "./chunk-RZAXPDIT.js";
37
37
  import "./chunk-DNXD7TOA.js";
38
38
  import {
39
39
  resolveProject
40
- } from "./chunk-ICWOWWC6.js";
40
+ } from "./chunk-GSWG25MG.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-AV7ASJOK.js";
48
- import "./chunk-4ARA5OTM.js";
47
+ import "./chunk-KGDCJK72.js";
48
+ import "./chunk-PQ3I6CAC.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-RIEQ7B3Q.js";
78
+ } from "./chunk-U325D5ZG.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-DDXTUSZ3.js";
83
+ import "./chunk-77SYQXQN.js";
84
84
  import {
85
85
  normalizeErrorMessage
86
86
  } from "./chunk-KNU5COPB.js";
@@ -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-XDDHE52R.js";
9
+ } from "./chunk-AAW5AF54.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-ICWOWWC6.js";
35
+ } from "./chunk-GSWG25MG.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-AV7ASJOK.js";
83
- import "./chunk-4ARA5OTM.js";
82
+ } from "./chunk-KGDCJK72.js";
83
+ import "./chunk-PQ3I6CAC.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-DDXTUSZ3.js";
163
+ } from "./chunk-77SYQXQN.js";
164
164
  import {
165
165
  normalizeErrorMessage
166
166
  } 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" | "project", // which route resolved it; "project": a file already
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`, measures its duration, and transcribes
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 = `assets/voice/${id}.wav`;
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}`);