hyperframes 0.8.123 → 0.8.124

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 (161) hide show
  1. package/dist/{add-CJXLRVWK.js → add-KDN5JOAP.js} +14 -14
  2. package/dist/{animatedGifPrep-VHXPTSJL.js → animatedGifPrep-H6ZIMS3L.js} +5 -5
  3. package/dist/{asset-KTRZSJ5R.js → asset-EJFBLFOA.js} +2 -2
  4. package/dist/{assetCataloger-NH6UQG4Y.js → assetCataloger-3Z4RUM5K.js} +2 -2
  5. package/dist/{auth-T52MOHC7.js → auth-QUOT4AVB.js} +2 -2
  6. package/dist/{autoUpdate-EI6JX53V.js → autoUpdate-LM6YIFM4.js} +2 -2
  7. package/dist/{backgroundChecks-7N3FFYIV.js → backgroundChecks-PZEX77KC.js} +3 -3
  8. package/dist/backgroundChecksWorker.js +3 -3
  9. package/dist/{batchRender-JDH4PXPD.js → batchRender-SYREZLNM.js} +3 -3
  10. package/dist/{beats-TG2TOST6.js → beats-GAROPWZX.js} +11 -11
  11. package/dist/{benchmark-WGXMGPUI.js → benchmark-R27INLK2.js} +11 -11
  12. package/dist/{browser-VMEADLNK.js → browser-UAMARUY3.js} +8 -8
  13. package/dist/{bundleWithLocalizedFonts-EDBQ5EME.js → bundleWithLocalizedFonts-SJFCS4WH.js} +2 -2
  14. package/dist/{capture-UZFI2G65.js → capture-42GHDJSH.js} +13 -18
  15. package/dist/{capture-22IWCYV2.js → capture-NT33PXQT.js} +2 -2
  16. package/dist/{catalog-3V4SSSYE.js → catalog-DDLMJXPU.js} +14 -14
  17. package/dist/{check-LTKOTPFI.js → check-IQJEGVTI.js} +30 -30
  18. package/dist/{checkBrowser-LTZPCRBO.js → checkBrowser-QDTOZNUM.js} +29 -29
  19. package/dist/{chunk-BET5FXMM.js → chunk-2C5KGTYX.js} +1 -1
  20. package/dist/{chunk-Z3SUEG2T.js → chunk-2X6IXODS.js} +5 -5
  21. package/dist/{chunk-KQ7BAEVP.js → chunk-4HC572SI.js} +2 -2
  22. package/dist/{chunk-MBSCHJQZ.js → chunk-5JLKZMCL.js} +1 -1
  23. package/dist/{chunk-MUAFAG77.js → chunk-5UQEHMDX.js} +4 -4
  24. package/dist/{chunk-UI2I6ZQE.js → chunk-5WAPJM7Q.js} +1 -1
  25. package/dist/{chunk-7NWNDQID.js → chunk-72BGWI35.js} +3 -3
  26. package/dist/{chunk-GPUM6BRL.js → chunk-73KQTPK5.js} +1 -1
  27. package/dist/{chunk-QLKCB3NY.js → chunk-AIAHR2KP.js} +7 -7
  28. package/dist/{chunk-EJF6CESB.js → chunk-AOJIC4Z6.js} +1 -1
  29. package/dist/{chunk-E26WHQFM.js → chunk-BDERXFDQ.js} +2 -2
  30. package/dist/{chunk-UMMVYWDI.js → chunk-BTJLBKJM.js} +5 -5
  31. package/dist/{chunk-WAD4ACBZ.js → chunk-CMH5CSTH.js} +2 -2
  32. package/dist/{chunk-EYNWMEWX.js → chunk-CQMEZZGB.js} +9 -9
  33. package/dist/{chunk-DR7F77AN.js → chunk-CSACVU42.js} +1 -1
  34. package/dist/{chunk-ILOJE2TE.js → chunk-E5BAQVYP.js} +1 -1
  35. package/dist/{chunk-53IO4HLZ.js → chunk-F6QGSVUR.js} +30 -0
  36. package/dist/{chunk-24AS45UQ.js → chunk-FFRD7C5Y.js} +71 -22
  37. package/dist/chunk-GULOKZLI.js +155 -0
  38. package/dist/{chunk-PQQZNS5K.js → chunk-HHUXXGXS.js} +1 -1
  39. package/dist/{chunk-CZRQH5SP.js → chunk-HQWCFX5E.js} +1 -1
  40. package/dist/{chunk-4EZKLNMD.js → chunk-JTOXXJ2V.js} +1 -1
  41. package/dist/{chunk-RYP46ARK.js → chunk-KAG5RIH3.js} +1 -1
  42. package/dist/{chunk-2QAAOW5T.js → chunk-LHUITV7D.js} +1 -1
  43. package/dist/{chunk-TLA5RBEB.js → chunk-LVXNXV7G.js} +1 -1
  44. package/dist/{chunk-XIJTGR4O.js → chunk-M73S37KU.js} +1 -1
  45. package/dist/{chunk-3SHYUYXR.js → chunk-N2NKZH5T.js} +9 -9
  46. package/dist/{dotEnv-AI4SYVTX.js → chunk-NGKM64BP.js} +2 -2
  47. package/dist/{chunk-S3JOM6L4.js → chunk-O2UUDQIA.js} +3 -3
  48. package/dist/{chunk-3V6V66SZ.js → chunk-ONB7D3WM.js} +2 -2
  49. package/dist/{chunk-PUFPAYTJ.js → chunk-ORICANJF.js} +1 -1
  50. package/dist/{chunk-SKZ6H3JT.js → chunk-PLQ4HJOO.js} +1 -1
  51. package/dist/{chunk-AICUP6TU.js → chunk-PSUC7UH5.js} +1 -1
  52. package/dist/{chunk-IOMMM4AX.js → chunk-RG4XNPAS.js} +1 -1
  53. package/dist/{chunk-2FH6HOQ2.js → chunk-RGAOEDD7.js} +1 -1
  54. package/dist/{chunk-4TIUZ6Z7.js → chunk-RPVBIUYA.js} +2 -2
  55. package/dist/{chunk-XQSMY5HF.js → chunk-SR2PZ7YB.js} +2 -2
  56. package/dist/{chunk-ELHC6CLH.js → chunk-TAVCXJDZ.js} +3 -3
  57. package/dist/{chunk-RTINVJNS.js → chunk-UB7TKYHI.js} +1 -1
  58. package/dist/{chunk-HISVSZH7.js → chunk-UZKSKWYC.js} +2 -2
  59. package/dist/{chunk-IML47HIH.js → chunk-VFCR64GO.js} +7 -7
  60. package/dist/{chunk-73KPBRCO.js → chunk-W777U57N.js} +1 -1
  61. package/dist/{chunk-OCH6V4FB.js → chunk-W7MBO3OA.js} +2 -2
  62. package/dist/{chunk-VEGNMQZI.js → chunk-WCO25Y7W.js} +2 -2
  63. package/dist/{chunk-4XAAOWFC.js → chunk-ZXKQI3CL.js} +1 -1
  64. package/dist/{clean-YZQXCSXZ.js → clean-JUJTGQLY.js} +14 -14
  65. package/dist/cli.js +52 -52
  66. package/dist/{cloud-TYUXSEGA.js → cloud-OTGRJ55X.js} +4 -4
  67. package/dist/{cloudrun-MA2JVRHV.js → cloudrun-MR2BDNIE.js} +3 -3
  68. package/dist/{compare-6DSDY2IF.js → compare-PI2BE6XG.js} +24 -24
  69. package/dist/{compiler-4FHYKPNR.js → compiler-534QUPGQ.js} +2 -2
  70. package/dist/{component-NY4JERQ5.js → component-23F5FX7F.js} +3 -3
  71. package/dist/{compositions-SI2SKZAF.js → compositions-QBMBMSWK.js} +10 -10
  72. package/dist/{delete-YU7XRF6M.js → delete-OWPF7ECQ.js} +2 -2
  73. package/dist/{dist-AMQZTIJP.js → dist-UBW5W3J6.js} +2 -2
  74. package/dist/{doctor-MXX7AHXT.js → doctor-ET66NXTR.js} +9 -9
  75. package/dist/dotEnv-AECLXQSO.js +14 -0
  76. package/dist/{events-R5N3EVAF.js → events-IF4ANAI4.js} +7 -7
  77. package/dist/{events-LLCZN2LK.js → events-YB7V7HKA.js} +8 -8
  78. package/dist/{feedback-MIZ3HJT4.js → feedback-BXKESP4T.js} +9 -9
  79. package/dist/{figma-4ESVBLHH.js → figma-HNCCW27E.js} +3 -3
  80. package/dist/fontLocalizeCli.js +7 -7
  81. package/dist/{get-OF3I77OW.js → get-BFS6LW4G.js} +2 -2
  82. package/dist/{gpuPolicy-KDI7HVOA.js → gpuPolicy-NTPPP3CY.js} +5 -5
  83. package/dist/{grade-compare-QXE4ZEZU.js → grade-compare-ZODD5CA2.js} +24 -24
  84. package/dist/{help-NFHZFSQN.js → help-PDKEUTLM.js} +2 -2
  85. package/dist/{history-DTRCFREW.js → history-DPCZXCFM.js} +14 -14
  86. package/dist/hyperframes-player.global.js +1 -1
  87. package/dist/{info-KRDLMYKB.js → info-BZBRLNDJ.js} +10 -10
  88. package/dist/{init-XTXSP6IU.js → init-24RQT53L.js} +21 -21
  89. package/dist/{inspect-KH3CTX62.js → inspect-UUJSVALX.js} +25 -25
  90. package/dist/{installer-M5OHZ3QU.js → installer-3MYH2BBT.js} +4 -4
  91. package/dist/{keyframes-K5UWQDSW.js → keyframes-ZBT47ZXP.js} +11 -11
  92. package/dist/{lambda-PXGK25LH.js → lambda-254KZLDB.js} +4 -4
  93. package/dist/{layout-SYWCNF2S.js → layout-D7VXT7ZZ.js} +25 -25
  94. package/dist/{lint-A5W6BCKC.js → lint-CIMEKZSB.js} +11 -11
  95. package/dist/{list-CXWE53HJ.js → list-WBRIEQZM.js} +2 -2
  96. package/dist/{login-WUPTUIG2.js → login-PBKOV6TK.js} +4 -4
  97. package/dist/{media-treatment-INJWEP6H.js → media-treatment-XIBOCHGF.js} +11 -11
  98. package/dist/{models-D5CMY6VB.js → models-7UT4RZUL.js} +6 -6
  99. package/dist/{motionShot-HS4M4WOQ.js → motionShot-WB7E5FU7.js} +11 -11
  100. package/dist/{normalize-audio-ILF3IDZC.js → normalize-audio-PMU2FXZA.js} +10 -10
  101. package/dist/{open-4V3RXCR6.js → open-AVSLHVOE.js} +18 -18
  102. package/dist/{pipeline-CPGRA375.js → pipeline-5E76S72B.js} +5 -5
  103. package/dist/{play-IFATKPFL.js → play-SVTXUB2Z.js} +19 -19
  104. package/dist/{preflight-IQEYFD33.js → preflight-LGJKUHUZ.js} +6 -6
  105. package/dist/{present-A3EXMPEB.js → present-NE6EYZY2.js} +15 -15
  106. package/dist/{preview-6OFPNSRQ.js → preview-4EGR22E3.js} +17 -17
  107. package/dist/{producer-T4HGO327.js → producer-2ZWSHMK3.js} +1 -1
  108. package/dist/{projectConfig-VKUAJTKN.js → projectConfig-VC5MAYSS.js} +6 -6
  109. package/dist/{publication-EYW5DW5Q.js → publication-YXOCJQ7B.js} +2 -2
  110. package/dist/{publish-7N3KAN23.js → publish-GTXVX6O4.js} +7 -7
  111. package/dist/{remove-background-76NDLWX2.js → remove-background-VOBXCXXJ.js} +6 -6
  112. package/dist/{render-SGKRP4OI.js → render-4PBKSNC3.js} +22 -22
  113. package/dist/{render-WWSM5VDX.js → render-BNUTBDFX.js} +3 -3
  114. package/dist/{render-FVVTP6IC.js → render-M446K7E4.js} +11 -11
  115. package/dist/{render-batch-UHVLIDQ6.js → render-batch-WJKUYKUZ.js} +3 -3
  116. package/dist/{renderCancellation-TZ2YQXLI.js → renderCancellation-QUEUCG6R.js} +5 -5
  117. package/dist/{resolver-BERTN5TY.js → resolver-3QPZA2X6.js} +4 -4
  118. package/dist/{sherpa-WAI3BU35.js → sherpa-LQHE6MT7.js} +6 -6
  119. package/dist/skills/hyperframes/SKILL.md +9 -0
  120. package/dist/skills/hyperframes/references/brief-contract.md +1 -1
  121. package/dist/skills/hyperframes/references/review-loop.md +1 -1
  122. package/dist/skills/hyperframes-cli/SKILL.md +2 -1
  123. package/dist/skills/media-use/audio/references/tts.md +24 -7
  124. package/dist/skills/media-use/audio/scripts/heygen-tts.mjs +3 -2
  125. package/dist/skills/media-use/audio/scripts/heygen-tts.test.mjs +38 -0
  126. package/dist/skills/media-use/audio/scripts/heygen-voice.mjs +98 -0
  127. package/dist/skills/media-use/audio/scripts/heygen-voice.test.mjs +233 -0
  128. package/dist/skills/media-use/audio/scripts/lib/heygen.mjs +19 -5
  129. package/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +17 -0
  130. package/dist/skills/media-use/audio/scripts/lib/tts.mjs +2 -2
  131. package/dist/{skills-4J56N4BF.js → skills-C6C23Z7M.js} +10 -10
  132. package/dist/{skillsUpdateCheck-GPLLGZTN.js → skillsUpdateCheck-MR5TXEAX.js} +3 -3
  133. package/dist/{snapshot-XPPNHMIG.js → snapshot-F5ZSC5FM.js} +25 -25
  134. package/dist/{src-6ZDBAHYH.js → src-HP5DTGMY.js} +6 -6
  135. package/dist/{src-K6L2URKG.js → src-WEETQ4CZ.js} +4 -4
  136. package/dist/{staticProjectServer-ETIXS3GJ.js → staticProjectServer-REKZ3KBB.js} +13 -13
  137. package/dist/{status-P2I66DU7.js → status-DKHWOUB4.js} +5 -5
  138. package/dist/studio/assets/{hyperframes-player-yABdb6yk.js → hyperframes-player-ColOZ_78.js} +1 -1
  139. package/dist/studio/assets/{index-Dt7lWtY7.js → index-BuSTrK-Z.js} +112 -112
  140. package/dist/studio/assets/{index-DWjF2Kxw.js → index-CVuUfURE.js} +1 -1
  141. package/dist/studio/assets/{index-LrNlT5Tg.css → index-D11atkBt.css} +1 -1
  142. package/dist/studio/assets/{index-D77MIjSJ.js → index-jQEqFKMk.js} +1 -1
  143. package/dist/studio/index.html +2 -2
  144. package/dist/studio/index.js +70 -49
  145. package/dist/studio/index.js.map +1 -1
  146. package/dist/studio/styles.css +1 -1
  147. package/dist/{studio-api-PTVN2GZ5.js → studio-api-SY5SFHZD.js} +7 -7
  148. package/dist/{studioServer-55366NG4.js → studioServer-2ZWULGC5.js} +49 -42
  149. package/dist/{system-M44QRAAZ.js → system-L7VMXFIG.js} +5 -5
  150. package/dist/{telemetry-6GQL3BIP.js → telemetry-XYNKPYSU.js} +8 -8
  151. package/dist/{timeline-NMG3JG3V.js → timeline-MYGD5OEC.js} +14 -14
  152. package/dist/{tokens-5LYIBBEF.js → tokens-6DZ73AXR.js} +2 -2
  153. package/dist/{transcribe-4DGPFZTU.js → transcribe-3BUOOE6P.js} +11 -11
  154. package/dist/{transcribe-3SONDYLT.js → transcribe-F4DDIZJO.js} +6 -6
  155. package/dist/{updateCheck-CXNND3CL.js → updateCheck-VH46SJ2X.js} +2 -2
  156. package/dist/{upgrade-RFTKDIVZ.js → upgrade-J4MZ4MLN.js} +2 -2
  157. package/dist/{urlDownloader-VRZX26OK.js → urlDownloader-PCRAON2D.js} +4 -4
  158. package/dist/{validate-3BFHVVZH.js → validate-BOYSXZFW.js} +15 -15
  159. package/dist/{video-ECPRKRRP.js → video-GL7ZDEFL.js} +5 -5
  160. package/package.json +1 -1
  161. package/dist/chunk-AMV2OPXR.js +0 -82
@@ -2027,6 +2027,35 @@ function findOuterTemplateClose(html) {
2027
2027
  }
2028
2028
  return -1;
2029
2029
  }
2030
+ var COMPOSITION_ID_ATTR = /\sdata-composition-id\s*=/;
2031
+ var isDocumentWrapper = (lowered, open) => isTagAt(lowered, open, "<html") || isTagAt(lowered, open, "<body");
2032
+ function carriesCompositionId(lowered, open) {
2033
+ const end = findTagEnd(lowered, open + 1);
2034
+ return end !== -1 && COMPOSITION_ID_ATTR.test(lowered.slice(open, end));
2035
+ }
2036
+ function hasCompositionOutsideTemplates(html) {
2037
+ const lowered = lowerAscii(html);
2038
+ let depth = 0;
2039
+ let idOnWrapper = false;
2040
+ let idInTemplate = false;
2041
+ for (const open of markupStarts(lowered)) {
2042
+ if (isTagAt(lowered, open, "<template")) {
2043
+ depth++;
2044
+ if (carriesCompositionId(lowered, open))
2045
+ idInTemplate = true;
2046
+ } else if (isTagAt(lowered, open, "</template"))
2047
+ depth = Math.max(0, depth - 1);
2048
+ else if (/[a-z]/.test(lowered.charAt(open + 1)) && carriesCompositionId(lowered, open)) {
2049
+ if (depth > 0)
2050
+ idInTemplate = true;
2051
+ else if (isDocumentWrapper(lowered, open))
2052
+ idOnWrapper = true;
2053
+ else
2054
+ return true;
2055
+ }
2056
+ }
2057
+ return idOnWrapper && !idInTemplate;
2058
+ }
2030
2059
  function insertBeforeDocumentTag(html, tag, markup) {
2031
2060
  const at = tag === "</template" ? findOuterTemplateClose(html) : findDocumentTag(html, tag);
2032
2061
  return at === -1 ? null : html.slice(0, at) + markup + html.slice(at);
@@ -3500,6 +3529,7 @@ export {
3500
3529
  parseHTMLContent,
3501
3530
  stripEmbeddedRuntimeScripts,
3502
3531
  findStartTags,
3532
+ hasCompositionOutsideTemplates,
3503
3533
  insertBeforeCloseTag,
3504
3534
  injectTagsAtHeadStart,
3505
3535
  injectScriptsAtHeadStart,
@@ -21,7 +21,7 @@ import {
21
21
  splitElementInHtml,
22
22
  unwrapElementsFromHtml,
23
23
  wrapElementsInHtml
24
- } from "./chunk-OCH6V4FB.js";
24
+ } from "./chunk-W7MBO3OA.js";
25
25
  import {
26
26
  atomicTempPath,
27
27
  createFileAtomically,
@@ -34,7 +34,7 @@ import {
34
34
  measureAudio,
35
35
  requiredFfmpeg,
36
36
  resolveLocalAudioPath
37
- } from "./chunk-IOMMM4AX.js";
37
+ } from "./chunk-RG4XNPAS.js";
38
38
  import {
39
39
  PROXY_PARAMS_VERSION,
40
40
  PROXY_PENDING_RETRY_AFTER_SECONDS,
@@ -60,7 +60,7 @@ import {
60
60
  shouldPrewarmProxy,
61
61
  waitForProxy,
62
62
  walkDir
63
- } from "./chunk-GPUM6BRL.js";
63
+ } from "./chunk-73KQTPK5.js";
64
64
  import {
65
65
  findTimelineScript,
66
66
  parseGsapScriptAcorn
@@ -81,7 +81,7 @@ import {
81
81
  motionPathPluginUrl,
82
82
  parseFps,
83
83
  sameInstant
84
- } from "./chunk-TLA5RBEB.js";
84
+ } from "./chunk-LVXNXV7G.js";
85
85
  import {
86
86
  MagicString,
87
87
  VALID_CANVAS_RESOLUTIONS,
@@ -92,16 +92,17 @@ import {
92
92
  addScenePartsManifest,
93
93
  deferScriptsUntilFonts,
94
94
  ensureHfIds
95
- } from "./chunk-RYP46ARK.js";
95
+ } from "./chunk-KAG5RIH3.js";
96
96
  import {
97
97
  findStartTags,
98
+ hasCompositionOutsideTemplates,
98
99
  injectTagsAtHeadStart,
99
100
  insertBeforeCloseTag,
100
101
  isFullHtmlDocument,
101
102
  resolveRateSpec,
102
103
  sourceTimeAt,
103
104
  stripEmbeddedRuntimeScripts
104
- } from "./chunk-53IO4HLZ.js";
105
+ } from "./chunk-F6QGSVUR.js";
105
106
  import {
106
107
  ProjectRootMissingError,
107
108
  folderGone,
@@ -219,7 +220,7 @@ function stampFileHfIds(filePath) {
219
220
  }
220
221
  }
221
222
 
222
- // ../studio-server/dist/chunk-VT433QV2.js
223
+ // ../studio-server/dist/chunk-HY2KCPIA.js
223
224
  import { randomUUID as randomUUID6 } from "crypto";
224
225
  import { mkdir as mkdir2, readdir as readdir3, rm as rm3, rmdir, writeFile } from "fs/promises";
225
226
  import {
@@ -881,8 +882,10 @@ function readLog(file, onUnreadable) {
881
882
  return log;
882
883
  }
883
884
  function applyRecord(log, record) {
884
- if (record.type === "baseline") log.baseline = new Map(Object.entries(record.files));
885
- else if (record.type === "entry") log.entries.push(record.entry);
885
+ if (record.type === "baseline") {
886
+ log.baseline = new Map(Object.entries(record.files));
887
+ log.keepsLedger = record.keepsLedger === true;
888
+ } else if (record.type === "entry") log.entries.push(record.entry);
886
889
  else if (record.pinned) log.pins.add(record.id);
887
890
  else log.pins.delete(record.id);
888
891
  }
@@ -903,7 +906,11 @@ function saveRecord(file, log, record) {
903
906
  }
904
907
  function writeLog(file, log) {
905
908
  const records = [
906
- { type: "baseline", files: Object.fromEntries(log.baseline) },
909
+ {
910
+ type: "baseline",
911
+ files: Object.fromEntries(log.baseline),
912
+ ...log.keepsLedger && { keepsLedger: true }
913
+ },
907
914
  ...log.entries.map((entry) => ({ type: "entry", entry })),
908
915
  ...[...log.pins].map((id) => ({ type: "pin", id, pinned: true }))
909
916
  ];
@@ -985,8 +992,10 @@ var OUTSIDE = { kind: "outside", name: "Outside" };
985
992
  var OUTSIDE_LABEL = "Changed outside the app";
986
993
  var RACY_MS = 2e3;
987
994
  var statKey = (file, sweptAt) => sweptAt - Math.max(file.mtimeMs, file.ctimeMs) < RACY_MS ? "" : `${file.size}:${file.mtimeMs}:${file.ctimeMs}`;
995
+ var MEDIA_LEDGER = ".media/manifest.jsonl";
996
+ var KEPT_HIDDEN_PATHS = /* @__PURE__ */ new Set([...STUDIO_SIGNATURE_MANIFEST_PATHS, MEDIA_LEDGER]);
988
997
  function isHistoryPath(path) {
989
- if (STUDIO_SIGNATURE_MANIFEST_PATHS.includes(path)) return true;
998
+ if (KEPT_HIDDEN_PATHS.has(path)) return true;
990
999
  return !path.split("/").some((segment) => segment.startsWith("."));
991
1000
  }
992
1001
  function withoutHiddenPaths(log) {
@@ -1140,6 +1149,7 @@ var Engine = class {
1140
1149
  );
1141
1150
  if (!log) return this.firstOpen();
1142
1151
  this.log = withoutHiddenPaths(log);
1152
+ if (!this.log.keepsLedger) await this.takeInUnnamedLedger();
1143
1153
  const cache = this.readStatCache();
1144
1154
  const last = this.log.entries.at(-1)?.id ?? START;
1145
1155
  for (const [path, hash] of manifestAt(this.log, last) ?? []) {
@@ -1188,6 +1198,14 @@ var Engine = class {
1188
1198
  const { id, who, label, startedAt, lastWriteAt, idleMs } = closed;
1189
1199
  this.windows.push({ id, who, label, startedAt, lastWriteAt, idleMs, changes: /* @__PURE__ */ new Map() });
1190
1200
  }
1201
+ async takeInUnnamedLedger() {
1202
+ const named = (path) => this.log.entries.some((entry) => entry.files.some((file) => file.path === path));
1203
+ const listed = () => historyFiles(this.dir).some((file) => file.path === MEDIA_LEDGER);
1204
+ const hash = this.log.baseline.has(MEDIA_LEDGER) || named(MEDIA_LEDGER) || !listed() ? null : await this.storeIfPresent(MEDIA_LEDGER);
1205
+ if (hash !== null) this.log.baseline.set(MEDIA_LEDGER, hash);
1206
+ this.log.keepsLedger = true;
1207
+ this.persistLog();
1208
+ }
1191
1209
  async firstOpen() {
1192
1210
  const sweptAt = this.now();
1193
1211
  for (const file of historyFiles(this.dir)) {
@@ -1196,6 +1214,7 @@ var Engine = class {
1196
1214
  if (hash !== null) this.tracked.set(file.path, { hash, stat: statKey(file, sweptAt) });
1197
1215
  }
1198
1216
  this.log.baseline = this.manifest();
1217
+ this.log.keepsLedger = true;
1199
1218
  this.persistLog();
1200
1219
  this.saveStatCache();
1201
1220
  }
@@ -6601,7 +6620,7 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
6601
6620
  let block = extractGsapScriptBlock(html);
6602
6621
  if (!block && (firstMutation.type === "add" || firstMutation.type === "add-with-keyframes")) {
6603
6622
  const compId = html.match(/data-composition-id="([^"]+)"/)?.[1] ?? "main";
6604
- const { GSAP_CDN } = await import("./dist-AMQZTIJP.js");
6623
+ const { GSAP_CDN } = await import("./dist-UBW5W3J6.js");
6605
6624
  const bootstrap = [
6606
6625
  `<script src="${GSAP_CDN}"></script>`,
6607
6626
  "<script>",
@@ -6610,8 +6629,9 @@ async function prepareGsapMutationScript(c, res, firstMutation) {
6610
6629
  `window.__timelines["${compId}"] = tl;`,
6611
6630
  "</script>"
6612
6631
  ].join("\n");
6613
- html = insertBeforeCloseTag(html, "body", `${bootstrap}
6614
- `) ?? insertBeforeCloseTag(html, "template", `${bootstrap}
6632
+ const [first, second] = hasCompositionOutsideTemplates(html) ? ["body", "template"] : ["template", "body"];
6633
+ html = insertBeforeCloseTag(html, first, `${bootstrap}
6634
+ `) ?? insertBeforeCloseTag(html, second, `${bootstrap}
6615
6635
  `) ?? `${html}
6616
6636
  ${bootstrap}`;
6617
6637
  block = extractGsapScriptBlock(html);
@@ -8648,17 +8668,46 @@ function htmlHasMotionPathPlugin(html) {
8648
8668
  }
8649
8669
  function injectMotionPathPluginIfNeeded(html) {
8650
8670
  if (!htmlUsesMotionPath(html) || htmlHasMotionPathPlugin(html)) return html;
8651
- const gsapScript = /<script\b[^>]*\bsrc=["'][^"']*\/gsap(\.min)?\.js["'][^>]*>\s*<\/script>/i;
8652
- const match = html.match(gsapScript);
8653
- if (match) {
8654
- const version = match[0].match(/gsap@([\d.]+)/)?.[1];
8655
- const gsapTagType = match[0].match(/\stype=("[^"]*"|'[^']*')/i)?.[0] ?? "";
8656
- const pluginTag = `<script${gsapTagType} src="${motionPathPluginUrl(version)}"></script>`;
8657
- const end = html.indexOf(match[0]) + match[0].length;
8658
- return html.slice(0, end) + "\n" + pluginTag + html.slice(end);
8671
+ const gsap = findGsapCoreScript(html);
8672
+ if (gsap) {
8673
+ const version = gsap.src.match(/gsap@([\d.]+)/)?.[1];
8674
+ const ordering = `${gsap.type ? ` type="${gsap.type}"` : ""}${gsap.defer ? " defer" : ""}`;
8675
+ const pluginTag = `<script${ordering} src="${motionPathPluginUrl(version)}"></script>`;
8676
+ return html.slice(0, gsap.end) + "\n" + pluginTag + html.slice(gsap.end);
8659
8677
  }
8660
8678
  return injectScriptTagIntoHead(html, GSAP_MOTION_PATH_CDN_SCRIPT);
8661
8679
  }
8680
+ function isGsapCoreUrl(src) {
8681
+ const base = "http://localhost/";
8682
+ return URL.canParse(src, base) && /\/gsap(\.min)?\.js$/i.test(new URL(src, base).pathname);
8683
+ }
8684
+ function findGsapCoreScript(html) {
8685
+ const scripts = [...parseHTML(html).document.querySelectorAll("script")];
8686
+ const starts = findStartTags(html, "script");
8687
+ if (starts.length !== scripts.length) return null;
8688
+ const at = scripts.findIndex(
8689
+ (script) => isGsapCoreUrl(lowerCaseAttributes(script).get("src") ?? "")
8690
+ );
8691
+ if (at === -1) return null;
8692
+ const attributes = lowerCaseAttributes(scripts[at]);
8693
+ const end = scriptCloseEnd(html, starts[at]);
8694
+ if (end === 0) return null;
8695
+ return {
8696
+ src: attributes.get("src"),
8697
+ type: attributes.get("type") ?? null,
8698
+ defer: attributes.has("defer"),
8699
+ end
8700
+ };
8701
+ }
8702
+ function lowerCaseAttributes(el) {
8703
+ return new Map([...el.attributes].map((a) => [a.name.toLowerCase(), a.value]));
8704
+ }
8705
+ function scriptCloseEnd(html, start) {
8706
+ const close = /<\/script/gi;
8707
+ close.lastIndex = start;
8708
+ const closeAt = close.exec(html)?.index;
8709
+ return closeAt === void 0 ? 0 : html.indexOf(">", closeAt) + 1;
8710
+ }
8662
8711
  function injectStudioMotionDependencies(html, manifestContent) {
8663
8712
  const manifest = parseStudioMotionManifestContent(manifestContent);
8664
8713
  if (!manifest.hasMotion) return html;
@@ -0,0 +1,155 @@
1
+ import { createRequire as __hf_createRequire } from "node:module";
2
+ import { fileURLToPath as __hf_fileURLToPath } from "node:url";
3
+ import { dirname as __hf_dirname } from "node:path";
4
+ var require = __hf_createRequire(import.meta.url);
5
+ var __filename = __hf_fileURLToPath(import.meta.url);
6
+ var __dirname = __hf_dirname(__filename);
7
+
8
+ // src/utils/desktopApp.ts
9
+ import { spawn, spawnSync } from "child_process";
10
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
11
+ import { homedir } from "os";
12
+ import { basename, isAbsolute, join, relative, win32 } from "path";
13
+ var DESKTOP_BUNDLE_IDS = ["dev.hyperframes.desktop", "dev.hyperframes.desktop.canary"];
14
+ var DESKTOP_APP_NAMES = ["HyperFrames.app", "HyperFrames Canary.app"];
15
+ var APP_NAMES = ["HyperFrames", "HyperFrames Canary"];
16
+ var STUDIO_PAGE = "https://hyperframes.dev/studio";
17
+ var DOWNLOADS = {
18
+ darwin: `${STUDIO_PAGE}/download`,
19
+ linux: `${STUDIO_PAGE}/download?os=linux`
20
+ };
21
+ var desktopDownloadUrl = (platform = process.platform) => DOWNLOADS[platform] ?? null;
22
+ var downloadHint = (url) => `Keep editing by chatting with Framey in the HyperFrames desktop app \u2192 ${url}`;
23
+ var HANDOFF_READY = process.platform === "darwin";
24
+ var AGENT_HANDOFF_FILE = join(".hyperframes", "agent-handoff.json");
25
+ function agentSession(env = process.env) {
26
+ if (env.CLAUDE_CODE_SESSION_ID)
27
+ return { engine: "claude", sessionId: env.CLAUDE_CODE_SESSION_ID };
28
+ if (env.CODEX_THREAD_ID) return { engine: "codex", sessionId: env.CODEX_THREAD_ID };
29
+ return null;
30
+ }
31
+ var openWithBundle = (bundleId, dir) => spawnSync("open", ["-b", bundleId, dir], { stdio: "ignore" }).status === 0;
32
+ function launchApp(executable, dir) {
33
+ try {
34
+ const child = spawn(executable, [dir], { detached: true, stdio: "ignore" });
35
+ child.on("error", () => {
36
+ });
37
+ child.unref();
38
+ return true;
39
+ } catch {
40
+ return false;
41
+ }
42
+ }
43
+ var readText = (path) => {
44
+ try {
45
+ return readFileSync(path, "utf8");
46
+ } catch {
47
+ return null;
48
+ }
49
+ };
50
+ function launcherAppImage(text) {
51
+ try {
52
+ const launcher = JSON.parse(text ?? "null");
53
+ return typeof launcher === "object" && launcher !== null && "appImage" in launcher && typeof launcher.appImage === "string" ? launcher.appImage : null;
54
+ } catch {
55
+ return null;
56
+ }
57
+ }
58
+ function desktopApps({
59
+ platform = process.platform,
60
+ env = process.env,
61
+ home = homedir(),
62
+ exists = existsSync,
63
+ read = readText
64
+ } = {}) {
65
+ if (platform !== "win32" && platform !== "linux") return null;
66
+ const config = env.XDG_CONFIG_HOME || join(home, ".config");
67
+ const where = (name) => {
68
+ if (platform === "win32")
69
+ return env.LOCALAPPDATA ? win32.join(env.LOCALAPPDATA, "Programs", name, `${name}.exe`) : null;
70
+ const appImage = launcherAppImage(read(join(config, name, "launcher.json")));
71
+ return appImage && isAbsolute(appImage) ? appImage : null;
72
+ };
73
+ return APP_NAMES.flatMap((name, i) => {
74
+ const executable = where(name);
75
+ return executable && exists(executable) ? [{ executable, canary: i === 1 }] : [];
76
+ });
77
+ }
78
+ function leaveHandoff(dir, session) {
79
+ if (!session) return null;
80
+ try {
81
+ mkdirSync(join(dir, ".hyperframes"), { recursive: true });
82
+ writeFileSync(join(dir, AGENT_HANDOFF_FILE), JSON.stringify(session));
83
+ return session;
84
+ } catch {
85
+ return null;
86
+ }
87
+ }
88
+ function openInDesktop(dir, {
89
+ ready = HANDOFF_READY,
90
+ platform = process.platform,
91
+ open = openWithBundle,
92
+ launch = launchApp,
93
+ installed = () => desktopInstalled({ platform }),
94
+ env = process.env,
95
+ ...where
96
+ } = {}) {
97
+ const notOpened = (reason) => ({
98
+ opened: false,
99
+ reason,
100
+ downloadUrl: desktopDownloadUrl(platform) ?? STUDIO_PAGE
101
+ });
102
+ const opened = (canary) => ({
103
+ opened: true,
104
+ app: canary ? "HyperFrames Canary" : "the HyperFrames desktop app",
105
+ handedOver: leaveHandoff(dir, agentSession(env))
106
+ });
107
+ if (!ready) return notOpened("handoff-unavailable");
108
+ if (platform === "darwin") {
109
+ const bundleId = DESKTOP_BUNDLE_IDS.find((id) => open(id, dir));
110
+ if (!bundleId) return notOpened(installed() ? "open-failed" : "not-installed");
111
+ return opened(bundleId.endsWith(".canary"));
112
+ }
113
+ const apps = desktopApps({ platform, env, ...where });
114
+ if (!apps) return notOpened("unsupported-platform");
115
+ if (!apps.length) return notOpened("not-installed");
116
+ const app = apps.find(({ executable }) => launch(executable, dir));
117
+ return app ? opened(app.canary) : notOpened("open-failed");
118
+ }
119
+ function openCommandFor(dir, cwd = process.cwd()) {
120
+ const shown = relative(cwd, dir) || ".";
121
+ return `hyperframes open ${/\s/.test(shown) ? JSON.stringify(shown) : shown}`;
122
+ }
123
+ var spotlightFinds = (bundleId) => spawnSync("mdfind", [`kMDItemCFBundleIdentifier == '${bundleId}'`], { encoding: "utf8" }).stdout?.split("\n").some((path) => path.endsWith(".app") && !basename(path).startsWith(".")) ?? false;
124
+ function desktopInstalled({
125
+ spotlight = spotlightFinds,
126
+ ...where
127
+ } = {}) {
128
+ const { platform = process.platform, home = homedir(), exists = existsSync } = where;
129
+ if (platform !== "darwin") return (desktopApps(where)?.length ?? 0) > 0;
130
+ const folders = ["/Applications", join(home, "Applications")];
131
+ if (folders.some((folder) => DESKTOP_APP_NAMES.some((name) => exists(join(folder, name)))))
132
+ return true;
133
+ return DESKTOP_BUNDLE_IDS.some(spotlight);
134
+ }
135
+ function desktopHint(dir, {
136
+ env = process.env,
137
+ ready = HANDOFF_READY,
138
+ installed,
139
+ platform = process.platform
140
+ } = {}) {
141
+ if (env.HYPERFRAMES_DESKTOP_PROJECT) return null;
142
+ if (ready && (installed ?? desktopInstalled({ platform, env })))
143
+ return `Keep editing by chatting with Framey in the desktop app: ${openCommandFor(dir)}`;
144
+ const url = desktopDownloadUrl(platform);
145
+ return url ? downloadHint(url) : null;
146
+ }
147
+
148
+ export {
149
+ desktopDownloadUrl,
150
+ downloadHint,
151
+ HANDOFF_READY,
152
+ openInDesktop,
153
+ desktopInstalled,
154
+ desktopHint
155
+ };
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-AWDFDFI3.js";
15
15
  import {
16
16
  isBlockedNetworkHost
17
- } from "./chunk-WAD4ACBZ.js";
17
+ } from "./chunk-CMH5CSTH.js";
18
18
  import {
19
19
  DOMParser,
20
20
  parseHTML
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-ISN5GRYI.js";
18
18
  import {
19
19
  VERSION
20
- } from "./chunk-XQSMY5HF.js";
20
+ } from "./chunk-SR2PZ7YB.js";
21
21
 
22
22
  // src/utils/updateCheck.ts
23
23
  import { existsSync, readFileSync } from "fs";
@@ -7,7 +7,7 @@ var __dirname = __hf_dirname(__filename);
7
7
 
8
8
  // src/utils/producer.ts
9
9
  async function loadProducer() {
10
- return await import("./src-6ZDBAHYH.js");
10
+ return await import("./src-HP5DTGMY.js");
11
11
  }
12
12
 
13
13
  export {
@@ -21,7 +21,7 @@ import {
21
21
  shouldClampResolvedMediaDuration,
22
22
  stripEmbeddedRuntimeScripts,
23
23
  warnUnknownEnumValues
24
- } from "./chunk-53IO4HLZ.js";
24
+ } from "./chunk-F6QGSVUR.js";
25
25
  import {
26
26
  cssVariableName
27
27
  } from "./chunk-VC76R6W2.js";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-PBN6GBJE.js";
16
16
  import {
17
17
  parseFps
18
- } from "./chunk-TLA5RBEB.js";
18
+ } from "./chunk-LVXNXV7G.js";
19
19
 
20
20
  // src/browser/windowsCrash.ts
21
21
  var STATUS_STACK_BUFFER_OVERRUN_DEC = "3221225595";
@@ -17,7 +17,7 @@ import {
17
17
  parseStrictFiniteTimingNumber,
18
18
  resolveNaturalMediaTimelineDuration,
19
19
  resolveTimedImageDurationSeconds
20
- } from "./chunk-53IO4HLZ.js";
20
+ } from "./chunk-F6QGSVUR.js";
21
21
  import {
22
22
  COMPOSITION_ATTRIBUTES,
23
23
  parseStartExpression
@@ -27,7 +27,7 @@ import {
27
27
  } from "./chunk-GMECXFAN.js";
28
28
  import {
29
29
  ITEM_TYPE_DIRS
30
- } from "./chunk-TLA5RBEB.js";
30
+ } from "./chunk-LVXNXV7G.js";
31
31
  import {
32
32
  realProjectRoot
33
33
  } from "./chunk-OFQWTKPW.js";
@@ -6,24 +6,24 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  serveStaticProjectHtml
9
- } from "./chunk-ELHC6CLH.js";
9
+ } from "./chunk-TAVCXJDZ.js";
10
10
  import {
11
11
  resolveProject
12
- } from "./chunk-UI2I6ZQE.js";
12
+ } from "./chunk-5WAPJM7Q.js";
13
13
  import {
14
14
  AUDIT_SEEK_OPTIONS,
15
15
  installPageFunctionGuard,
16
16
  seekCompositionTimeline,
17
17
  waitForCompositionFonts,
18
18
  waitForRuntimeReady
19
- } from "./chunk-Z3SUEG2T.js";
19
+ } from "./chunk-2X6IXODS.js";
20
20
  import {
21
21
  launchManagedBrowser,
22
22
  resolveManagedGpuMode
23
- } from "./chunk-SKZ6H3JT.js";
23
+ } from "./chunk-PLQ4HJOO.js";
24
24
  import {
25
25
  resolveDiagnosticNavigationTimeoutMs
26
- } from "./chunk-2QAAOW5T.js";
26
+ } from "./chunk-LHUITV7D.js";
27
27
  import {
28
28
  c
29
29
  } from "./chunk-ZTZA4UWZ.js";
@@ -37,7 +37,7 @@ import {
37
37
  import {
38
38
  printDeprecationNotice,
39
39
  withMeta
40
- } from "./chunk-CZRQH5SP.js";
40
+ } from "./chunk-HQWCFX5E.js";
41
41
  import {
42
42
  normalizeErrorMessage
43
43
  } from "./chunk-KNU5COPB.js";
@@ -670,7 +670,7 @@ async function collectTweenBoundaries(page) {
670
670
  });
671
671
  }
672
672
  async function bundleProjectHtml(projectDir) {
673
- const { bundleToSingleHtml } = await import("./compiler-4FHYKPNR.js");
673
+ const { bundleToSingleHtml } = await import("./compiler-534QUPGQ.js");
674
674
  return bundleToSingleHtml(projectDir);
675
675
  }
676
676
  async function alignViewportToComposition(page, url) {
@@ -692,8 +692,8 @@ async function alignViewportToComposition(page, url) {
692
692
  async function runLayoutAudit(projectDir, opts) {
693
693
  const { ensureBrowser } = await import("./manager-CT3D67CG.js");
694
694
  const puppeteer = await import("puppeteer-core");
695
- const { buildChromeArgs } = await import("./src-K6L2URKG.js");
696
- const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalBrowserGpuMode } = await import("./gpuPolicy-KDI7HVOA.js");
695
+ const { buildChromeArgs } = await import("./src-WEETQ4CZ.js");
696
+ const { assertWebGpuAdapterAvailable, compositionRequiresWebGpu, resolveLocalBrowserGpuMode } = await import("./gpuPolicy-NTPPP3CY.js");
697
697
  const html = await bundleProjectHtml(projectDir);
698
698
  const server = await serveStaticProjectHtml(
699
699
  projectDir,
@@ -7,7 +7,6 @@ var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  FEEDBACK_EMAIL_ENV
9
9
  } from "./chunk-IGLEPPTN.js";
10
- import "./chunk-M2WBOQ2Q.js";
11
10
 
12
11
  // src/utils/dotEnv.ts
13
12
  function valueOf(raw) {
@@ -31,9 +30,10 @@ function applyDotEnv(content, env) {
31
30
  for (const entry of content.split("\n").map(entryOf)) {
32
31
  if (!entry) continue;
33
32
  const [key, value] = entry;
34
- if (key && key !== FEEDBACK_EMAIL_ENV && !(key in env)) env[key] = value;
33
+ if (key && key.toUpperCase() !== FEEDBACK_EMAIL_ENV && !(key in env)) env[key] = value;
35
34
  }
36
35
  }
36
+
37
37
  export {
38
38
  applyDotEnv
39
39
  };
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-ZTZA4UWZ.js";
13
13
  import {
14
14
  getSystemMeta
15
- } from "./chunk-ILOJE2TE.js";
15
+ } from "./chunk-E5BAQVYP.js";
16
16
  import {
17
17
  getInvocationId
18
18
  } from "./chunk-54HJ63Q2.js";
@@ -23,7 +23,7 @@ import {
23
23
  evaluateCanary,
24
24
  findCanary,
25
25
  parseCanaryOverride
26
- } from "./chunk-TLA5RBEB.js";
26
+ } from "./chunk-LVXNXV7G.js";
27
27
  import {
28
28
  hostAnswers
29
29
  } from "./chunk-K4WIOZFP.js";
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-XUXGIA7H.js";
38
38
  import {
39
39
  VERSION
40
- } from "./chunk-XQSMY5HF.js";
40
+ } from "./chunk-SR2PZ7YB.js";
41
41
 
42
42
  // src/telemetry/transport.ts
43
43
  import { spawn } from "child_process";
@@ -20,7 +20,7 @@ import {
20
20
  typeDirPath,
21
21
  updateRecord,
22
22
  withFigmaErrors
23
- } from "./chunk-DR7F77AN.js";
23
+ } from "./chunk-CSACVU42.js";
24
24
  import {
25
25
  defineCommand
26
26
  } from "./chunk-S3S4TGEH.js";
@@ -221,7 +221,7 @@ var asset_default = defineCommand({
221
221
  rendered > 0 ? `(${results.length} nodes, ${rendered} rendered in 1 figma request)` : `(${results.length} nodes, all reused from cache \u2014 no figma request)`
222
222
  );
223
223
  }
224
- const { trackFigmaImport } = await import("./telemetry-6GQL3BIP.js");
224
+ const { trackFigmaImport } = await import("./telemetry-XYNKPYSU.js");
225
225
  trackFigmaImport({
226
226
  phase: "asset",
227
227
  reused: results.every((r) => r.reused),
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-TVCRUG2S.js";
14
14
  import {
15
15
  getFreeDiskMb
16
- } from "./chunk-ILOJE2TE.js";
16
+ } from "./chunk-E5BAQVYP.js";
17
17
  import {
18
18
  ensureBrowser,
19
19
  findBrowser
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  resolveCaptureBrowserGpuMode
9
- } from "./chunk-4XAAOWFC.js";
9
+ } from "./chunk-ZXKQI3CL.js";
10
10
  import {
11
11
  requestCliExit
12
12
  } from "./chunk-PBN6GBJE.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  formatVariableValidationIssue,
21
21
  validateVariables
22
- } from "./chunk-TLA5RBEB.js";
22
+ } from "./chunk-LVXNXV7G.js";
23
23
  import {
24
24
  extractCompositionMetadata
25
25
  } from "./chunk-F7MXHGU3.js";
@@ -8,7 +8,7 @@ import {
8
8
  MAX_AUDIO_GAIN_DB,
9
9
  formatAudioGain,
10
10
  isAudibleVideoElement
11
- } from "./chunk-53IO4HLZ.js";
11
+ } from "./chunk-F6QGSVUR.js";
12
12
  import {
13
13
  findFfBinary
14
14
  } from "./chunk-PJ3HDUCY.js";
@@ -6,7 +6,7 @@ var __filename = __hf_fileURLToPath(import.meta.url);
6
6
  var __dirname = __hf_dirname(__filename);
7
7
  import {
8
8
  updateNoticesSuppressed
9
- } from "./chunk-CZRQH5SP.js";
9
+ } from "./chunk-HQWCFX5E.js";
10
10
  import {
11
11
  hostAnswers
12
12
  } from "./chunk-K4WIOZFP.js";
@@ -8,10 +8,10 @@ import {
8
8
  DEFAULT_VP9_CPU_USED,
9
9
  isHttpUrl,
10
10
  runFfmpeg
11
- } from "./chunk-WAD4ACBZ.js";
11
+ } from "./chunk-CMH5CSTH.js";
12
12
  import {
13
13
  parseAnimatedGifMetadata
14
- } from "./chunk-TLA5RBEB.js";
14
+ } from "./chunk-LVXNXV7G.js";
15
15
  import {
16
16
  parseHTML
17
17
  } from "./chunk-GK4AIFIH.js";