hyperframes 0.8.157 → 0.8.159
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/README.md +14 -0
- package/dist/{add-XKIJJAC6.js → add-7UMRT6IJ.js} +11 -11
- package/dist/{animatedGifPrep-MTJRHJ5G.js → animatedGifPrep-COFZMEVD.js} +5 -5
- package/dist/api.js +11 -11
- package/dist/{asset-TEWIJMG5.js → asset-N37XIJTB.js} +2 -2
- package/dist/{assetCataloger-DI7FC5KZ.js → assetCataloger-ZOQ67MGR.js} +2 -2
- package/dist/{auth-ERW6EOVW.js → auth-GKFS2PL6.js} +1 -1
- package/dist/{autoUpdate-IHYT5BQF.js → autoUpdate-V4PLREDQ.js} +2 -2
- package/dist/{backgroundChecks-DTKZTDHN.js → backgroundChecks-TVOKARY2.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-FTZ67377.js → batchRender-IARQXQHN.js} +3 -3
- package/dist/{beats-AE4ZKJ3I.js → beats-FY4UDXBL.js} +11 -10
- package/dist/{benchmark-Q3YSQVWW.js → benchmark-ZJYFRFYF.js} +8 -8
- package/dist/{browser-IRRLG5FG.js → browser-WRZOH4PD.js} +3 -3
- package/dist/{bundleWithLocalizedFonts-IVO43QBQ.js → bundleWithLocalizedFonts-SFHKZZAX.js} +2 -2
- package/dist/{capture-ANATPLOS.js → capture-KFYPMVTT.js} +18 -8
- package/dist/{capture-MVH3XNAE.js → capture-LLLIHYEF.js} +2 -2
- package/dist/{catalog-5BJJW3G4.js → catalog-QO762U7V.js} +11 -11
- package/dist/{catch-up-DU2O72RS.js → catch-up-MELHNTGB.js} +4 -4
- package/dist/{check-P5D3YU2H.js → check-RX3LTKYB.js} +38 -37
- package/dist/{checkBrowser-RNIDFQZZ.js → checkBrowser-EUUMEILI.js} +35 -34
- package/dist/{chunk-YBKIAQNU.js → chunk-24N3BB5M.js} +3 -3
- package/dist/{chunk-IRRRH66M.js → chunk-2CEH75X3.js} +115 -13
- package/dist/{chunk-LQXHRO6F.js → chunk-3W3MOLRL.js} +2 -2
- package/dist/{chunk-EYNN5DJG.js → chunk-4D5RBIX6.js} +30 -10
- package/dist/{chunk-4YDQQQY6.js → chunk-4DEBDQD4.js} +2 -2
- package/dist/{chunk-6B6G3QMQ.js → chunk-4IKI2RYR.js} +11 -11
- package/dist/{chunk-QAWCWGQG.js → chunk-5GPX4X4L.js} +2 -2
- package/dist/{chunk-WZBGU46C.js → chunk-5HNZQSO4.js} +1 -1
- package/dist/{chunk-OTG5H2VM.js → chunk-5O6I5ZV7.js} +2 -2
- package/dist/{chunk-ZFZNPLRJ.js → chunk-5RSV6DWB.js} +4 -3
- package/dist/{chunk-WK375PPO.js → chunk-5YCFHCD4.js} +2 -2
- package/dist/{chunk-SMPG26EL.js → chunk-6TDZJ43G.js} +1 -1
- package/dist/{chunk-7ZWOLEGS.js → chunk-76NO4ZRM.js} +1 -1
- package/dist/{chunk-3FRK53UC.js → chunk-7RTTPSXG.js} +1 -1
- package/dist/{chunk-ZY4A2R7C.js → chunk-7XEVZDKU.js} +7 -7
- package/dist/{chunk-56QTFOWH.js → chunk-A5RDOXZE.js} +1 -1
- package/dist/{chunk-GPUVPZRK.js → chunk-AEQWF7PE.js} +1 -1
- package/dist/{chunk-DRT6ZQI2.js → chunk-AFYZWHR7.js} +7 -7
- package/dist/{chunk-EGKIQS5J.js → chunk-AQXJC64X.js} +1 -1
- package/dist/{chunk-BPTKOTF2.js → chunk-BEW7RCCW.js} +1 -1
- package/dist/{chunk-O4ZB2LUC.js → chunk-DLQQA25O.js} +1 -1
- package/dist/{chunk-23VDPRQ3.js → chunk-DVAEX52Q.js} +1 -1
- package/dist/{chunk-J7WFHOCW.js → chunk-EGJVFPUX.js} +1 -1
- package/dist/{chunk-T76NSAXO.js → chunk-ESOAYGIT.js} +6 -4
- package/dist/{chunk-OGJFYVRC.js → chunk-EWAAH7AU.js} +1 -1
- package/dist/{chunk-QRPYTJBW.js → chunk-FEKRMXT6.js} +1 -1
- package/dist/{chunk-J6SJCYAQ.js → chunk-GGDCBVXK.js} +4 -4
- package/dist/{chunk-YB26LWR2.js → chunk-H6BKVVU4.js} +2 -2
- package/dist/{chunk-EEEUI3ON.js → chunk-HEEN6X6O.js} +15 -8
- package/dist/{chunk-HQG7B5ZE.js → chunk-HO3SITVT.js} +1 -1
- package/dist/{chunk-25IXEZXH.js → chunk-IJ7JPX4W.js} +2 -2
- package/dist/{chunk-UGIIDY6C.js → chunk-IKDBT5WT.js} +79 -4
- package/dist/{chunk-FJT35XBA.js → chunk-INNBWSZK.js} +1 -1
- package/dist/{chunk-SLUFA6UM.js → chunk-IWOEAWIP.js} +1 -1
- package/dist/{chunk-LZ7C6CXD.js → chunk-JZLFHF2M.js} +2 -2
- package/dist/{chunk-NIT2ZCNI.js → chunk-K5BMHQOU.js} +9 -9
- package/dist/{chunk-CA7IDB4Z.js → chunk-MMYY4KV3.js} +18 -3
- package/dist/{chunk-ZTUZDPHE.js → chunk-MTUC2Z32.js} +2 -2
- package/dist/{chunk-XRRZZFGI.js → chunk-NCVGBBWC.js} +1 -1
- package/dist/{chunk-NFX4K6OW.js → chunk-NIGOOCVS.js} +1 -1
- package/dist/{chunk-TQ62EMUI.js → chunk-ODE7HHNN.js} +20 -20
- package/dist/chunk-TWBTXEDZ.js +3795 -0
- package/dist/{chunk-T243WV6D.js → chunk-UK4KRTIX.js} +1 -1
- package/dist/{chunk-SGIZMTWO.js → chunk-V5J4XEBG.js} +1 -1
- package/dist/{chunk-ZZ3ZWTOI.js → chunk-WWMFR4SH.js} +1 -1
- package/dist/{chunk-SWRIMG46.js → chunk-YITZFHRJ.js} +1 -1
- package/dist/{clean-4WDZ3TFN.js → clean-RW7Z4XM6.js} +18 -18
- package/dist/cli.js +52 -52
- package/dist/{cloud-FL6VP6IU.js → cloud-EEOV7JKB.js} +4 -4
- package/dist/{cloudrun-STLNWUBW.js → cloudrun-EZAXYVXG.js} +3 -3
- package/dist/{compare-MXZ7QKBN.js → compare-5UARQFXX.js} +29 -28
- package/dist/{compiler-VFJVUZWR.js → compiler-THI7BXZU.js} +2 -2
- package/dist/{component-XKBA5ON2.js → component-AYOFPL33.js} +3 -3
- package/dist/{compositions-2LUY6RQW.js → compositions-XJNJBOMG.js} +9 -9
- package/dist/{delete-OBAOZCXI.js → delete-653AOR25.js} +2 -2
- package/dist/{dist-SVTSOG4Q.js → dist-DLR4X3KN.js} +2 -2
- package/dist/{doctor-BLXWRHAE.js → doctor-WA6VRRE7.js} +7 -7
- package/dist/{events-V4LYF3MW.js → events-U5COLUWT.js} +2 -2
- package/dist/{events-LSJDXTXK.js → events-XXBCP2I4.js} +3 -3
- package/dist/{feedback-LMDNGTYB.js → feedback-DX6Q3LN7.js} +8 -8
- package/dist/{figma-BXHFTYCT.js → figma-LCQVLBXF.js} +3 -3
- package/dist/fontLocalizeCli.js +8 -8
- package/dist/{get-2ZKWMYCG.js → get-UYNPFMHX.js} +2 -2
- package/dist/{gpuPolicy-VXNJ4UBN.js → gpuPolicy-YIW3HL3B.js} +5 -5
- package/dist/{grade-compare-F7JNDXGF.js → grade-compare-YQEYATJV.js} +28 -28
- package/dist/{help-WGANCPIE.js → help-FDURC7WR.js} +1 -1
- package/dist/{history-FILLGPWB.js → history-EU5UZLHT.js} +10 -10
- package/dist/hyperframe-runtime.js +55 -55
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +55 -55
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-QQJ7C6SO.js → info-7T6CK6CL.js} +7 -7
- package/dist/{init-BQYTOLTG.js → init-KQYSKFVU.js} +31 -26
- package/dist/{inspect-BTBKTW5W.js → inspect-HQBV7VHS.js} +28 -27
- package/dist/{installer-HF5BXXXM.js → installer-OKKPQNKS.js} +4 -4
- package/dist/{keyframes-Y5QDNXST.js → keyframes-SK74JHOA.js} +6 -6
- package/dist/{lambda-ZCX7KGTY.js → lambda-S2N4VTRO.js} +4 -4
- package/dist/{layout-HITFK2H5.js → layout-MTE5Y6DE.js} +28 -27
- package/dist/{lint-6HH5X4NJ.js → lint-FJGGJYB7.js} +8 -8
- package/dist/{list-KBERMLPP.js → list-MBPALK5U.js} +2 -2
- package/dist/{login-MZNDV73I.js → login-HDN4T5E4.js} +4 -4
- package/dist/{media-treatment-YACCPVXX.js → media-treatment-IP34DXWN.js} +11 -11
- package/dist/{models-WHDUQZQZ.js → models-W5TASRHD.js} +8 -8
- package/dist/{motionShot-CRQTWUJB.js → motionShot-2WYEMOPJ.js} +12 -11
- package/dist/{normalize-audio-Z7UQTZ5J.js → normalize-audio-F4NQPXII.js} +7 -7
- package/dist/{open-GM2J5QEA.js → open-DRXNALDE.js} +7 -7
- package/dist/{parakeetRunner-5PNBGCGH.js → parakeetRunner-VISBF2EA.js} +8 -8
- package/dist/{pipeline-QA2422UI.js → pipeline-A2XOVZOM.js} +5 -5
- package/dist/{play-JGMRZO6G.js → play-W2QELQX7.js} +26 -26
- package/dist/{present-SI7ZE6IB.js → present-NHYRS4F4.js} +20 -20
- package/dist/{preview-PZOQHOIO.js → preview-SMJVUPXE.js} +21 -21
- package/dist/{producer-PQMZ7OYH.js → producer-276O3CKW.js} +1 -1
- package/dist/{projectConfig-EYYDESVO.js → projectConfig-FXFUHFPZ.js} +6 -6
- package/dist/{publication-MJY3XYYV.js → publication-SSQO6ECV.js} +2 -2
- package/dist/{publish-UT3L777Q.js → publish-UHDKDXZI.js} +10 -10
- package/dist/{remove-background-HT73ZUIG.js → remove-background-IG6U56HC.js} +6 -6
- package/dist/{render-6CJXA7UA.js → render-6P5RSFS3.js} +12 -12
- package/dist/{render-YTJ3SMCD.js → render-XQONIJEJ.js} +3 -3
- package/dist/{render-SFIX3O3B.js → render-ZJPSLTKV.js} +49 -28
- package/dist/{render-batch-AFB2XK3I.js → render-batch-MH3Z6IPT.js} +3 -3
- package/dist/{resolver-F2D2YCSQ.js → resolver-JMSGO2JF.js} +4 -4
- package/dist/{sherpa-IBKSF6GX.js → sherpa-64JLV4YM.js} +7 -7
- package/dist/skills/hyperframes/SKILL.md +1 -1
- package/dist/skills/hyperframes/references/frame-worker-core.md +1 -1
- package/dist/skills/hyperframes/references/intent-interview.md +2 -2
- package/dist/skills/hyperframes/references/production-loop.md +11 -11
- package/dist/skills/hyperframes/references/review-loop.md +6 -6
- package/dist/skills/hyperframes/references/storyboard-format.md +1 -1
- package/dist/skills/hyperframes-cli/SKILL.md +1 -1
- package/dist/{skills-G26XO2BY.js → skills-UXOL62PY.js} +5 -5
- package/dist/{skillsUpdateCheck-ZNDQSDB4.js → skillsUpdateCheck-5Y6676K6.js} +3 -3
- package/dist/{snapshot-SN7I7O7I.js → snapshot-SQBPCXOV.js} +74 -48
- package/dist/{src-NDI4KNT3.js → src-N42CT3YR.js} +6 -4
- package/dist/{src-4GCHM2LX.js → src-RQMK5INS.js} +7 -7
- package/dist/{staticProjectServer-TTC3LYHO.js → staticProjectServer-AQXVWMLU.js} +15 -13
- package/dist/studio/assets/{hyperframes-player-D3ufdOJ_.js → hyperframes-player-kqB1psAJ.js} +1 -1
- package/dist/studio/assets/{index-7oKTFwYd.js → index-BrViH8hj.js} +1 -1
- package/dist/studio/assets/{index-CALVHgsJ.js → index-C3AZLr-0.js} +1 -1
- package/dist/studio/assets/{index-DYk4U8BS.js → index-X_d1b5vz.js} +4 -4
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-TVIDDUZG.js → studio-api-GY5D7RAP.js} +9 -9
- package/dist/{studioServer-WBV2Q3SH.js → studioServer-O3VONODG.js} +49 -49
- package/dist/{telemetry-RVFKZEOH.js → telemetry-V2K5P7CI.js} +3 -3
- package/dist/{timeline-BUYUBI5X.js → timeline-YU3YPLKB.js} +18 -18
- package/dist/{tokens-PUA5FQKP.js → tokens-NPSSSG2A.js} +2 -2
- package/dist/{transcribe-DZ6O6EG5.js → transcribe-BXJNS3RZ.js} +6 -6
- package/dist/{transcribe-L2QHSNHO.js → transcribe-FNBDG24U.js} +12 -12
- package/dist/{updateCheck-PULEO7CW.js → updateCheck-MB3RHSVK.js} +2 -2
- package/dist/{upgrade-UJJIVNHJ.js → upgrade-5VNRUR37.js} +2 -2
- package/dist/{urlDownloader-INLS5A6I.js → urlDownloader-WCT7FMLA.js} +4 -4
- package/dist/{validate-DJAZMEQB.js → validate-UXSXRCE6.js} +20 -19
- package/dist/{video-3GLT6U6Z.js → video-NRNQBZMV.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-LPOTN5GW.js +0 -3795
|
@@ -4,17 +4,17 @@ The stages between a plan the user has agreed to and a video in their hands, wri
|
|
|
4
4
|
|
|
5
5
|
The shipped narrative workflows implement these stages with their own scripts; a freeform build follows this file directly, borrowing tools where the capability menu says they live (`hyperframes/references/capability-menu.md`).
|
|
6
6
|
|
|
7
|
-
| Stage | Needs
|
|
8
|
-
| ------------------- |
|
|
9
|
-
| **Blocks & assets** | the approved plan
|
|
10
|
-
| **Audio** | narration text (when narrated); the storyboard's `music:` mood
|
|
11
|
-
| **Frames** | design spec + the plan (+ a confirmed
|
|
12
|
-
| **Duration sync** | word timings + frames
|
|
13
|
-
| **Assembly** | frames
|
|
14
|
-
| **Transitions** | the assembled index
|
|
15
|
-
| **Captions** | word timings + the index
|
|
16
|
-
| **Verify** | the index (+ captions / transitions when present)
|
|
17
|
-
| **Deliver** | verify passing
|
|
7
|
+
| Stage | Needs | Produces | Where the capability lives |
|
|
8
|
+
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| **Blocks & assets** | the approved plan | registry blocks installed **once, before any parallel work** (parallel workers race the registry); user assets staged; logos / images / grades resolved | `npx hyperframes add <block>` per block the plan names; staging, adoption, and `resolve` via the menu's media rows |
|
|
10
|
+
| **Audio** | narration text (when narrated); the storyboard's `music:` mood | voice files + **word timings** + BGM + SFX → `audio_meta.json`; **when BGM plays under a voice, the bed is carved** (`hyperframes-audio/scripts/carve.mjs`) before Verify — a duck alone is not a finished mix | the one engine — `media-use/audio/scripts/audio.mjs`, run in the background; `wait-bgm.mjs` before render when BGM generates |
|
|
11
|
+
| **Frames** | design spec + the plan (+ a confirmed still on the board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) when one exists — dress that layout, never redraw it: `review-loop.md` § 3) | each scene at `compositions/frames/NN-*.html`, marked `animated` in the storyboard as it lands | `frame.md` + `hyperframes-animation` blueprints / rules (+ the genre lens, menu § Genre lenses); parallel dispatch per `subagent-dispatch.md` |
|
|
12
|
+
| **Duration sync** | word timings + frames | scene durations trued to real voice length — real duration wins, silent scenes keep estimates, synced values are never hand-edited | a mechanical rule; the narrative workflows' audio scripts apply it, a freeform build applies it by hand |
|
|
13
|
+
| **Assembly** | frames | the index composition — scenes as sub-compositions on tracks | `sub-compositions.md` + `tracks-and-clips.md`; borrowable `assemble-index.mjs` (menu) |
|
|
14
|
+
| **Transitions** | the assembled index | scene handoffs injected | `hyperframes-animation/transitions/overview.md` → `catalog.md`; borrowable `transitions.mjs` (menu) |
|
|
15
|
+
| **Captions** | word timings + the index | the caption track | borrowable `captions.mjs` (menu); no script to time against → `media-use` `scripts/transcribe.mjs` first |
|
|
16
|
+
| **Verify** | the index (+ captions / transitions when present) | `npx hyperframes lint` and `npx hyperframes check` **passing**; a contact-sheet glance (`snapshot --at <frame-midpoints>`) | `hyperframes-cli` |
|
|
17
|
+
| **Deliver** | verify passing | the final-look pause → on approval `render` → optionally `publish` (a stable hosted link, private by default) → the recipe offer | final approval and recipe offer: `review-loop.md` § 4; render / publish: `hyperframes-cli` |
|
|
18
18
|
|
|
19
19
|
The Frames stage follows the plan's citations: a scene planned on a blueprint or on named rules is built by reading that recipe's body (`hyperframes-animation/blueprints/<id>.md`, `rules/<id>.md`) before its motion is written — names come from the indexes, never invented, and a scene the plan left uncited gets its citation at build time, not improvised motion.
|
|
20
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# The review loop — plan, sketch, build
|
|
2
2
|
|
|
3
|
-
How a `storyboard: yes` run earns fidelity one pass at a time: the plan is reviewed as text in chat, the layouts as
|
|
3
|
+
How a `storyboard: yes` run earns fidelity one pass at a time: the plan is reviewed as text in chat, the layouts as stills on the board (`boards/storyboard.html`), and the finished piece as the assembled video. Collaborative mode waits at each checkpoint. Autonomous mode posts the same checkpoint summaries and continues, keeping exactly one question before render.
|
|
4
4
|
|
|
5
5
|
This is the shared process for any workflow that plans on a storyboard. The contracts it leans on live next door: interaction mode and gate types in `brief-contract.md`; the `STORYBOARD.md` format and the `outline → built → animated` statuses in `storyboard-format.md`. How to make the storyboard itself, and the page it is reviewed on, is `hyperframes-creative/references/storyboard-recipe.md`. A workflow's SKILL.md says **when** its steps hit each pass and supplies its **sketch stand-ins** (what the plain blocks represent); how the loop runs is defined here, once. The stage mechanics between the passes — audio, frames, assembly, transitions, captions, verify — live in `production-loop.md`; this file owns only the user-facing pauses.
|
|
6
6
|
|
|
@@ -16,19 +16,19 @@ This is a **checkpoint gate** (`brief-contract.md` § 1). A run that starts auto
|
|
|
16
16
|
|
|
17
17
|
The moment the plan is approved, sketch every frame yourself — no sub-agents, no waiting on other steps (sketches don't use timings), straight from the approved frame table.
|
|
18
18
|
|
|
19
|
-
A sketch is a **static frame, not an unstyled one**: the frame's layout at its key moment,
|
|
19
|
+
A sketch is a **static frame, not an unstyled one**: the frame's layout at its key moment, posed in the composition with the full `frame.md` treatment (real fonts, real colors, the actual headline / stat / label text placed where it will live) as `storyboard-recipe.md` § 1 describes, using plain blocks only for panels, charts, diagrams, and media the workflow hasn't produced yet (the workflow says what its blocks stand in for). **No motion** — that arrives with the build pass; the layout, copy and brand treatment are already locked here.
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
Mount the posed frames in `index.html`, snapshot every still in one run into `boards/stills/` and write the board, `boards/storyboard.html` (`storyboard-recipe.md` § 1–2), then hand the user the board. Mark each frame `built` in `STORYBOARD.md` as its still lands. `snapshot` is the only CLI here — no `lint` / `check`, no rendering. When every frame is `built`, pause and ask one thing: does the board look right, or which frames change? This is a **checkpoint gate**; feedback arrives in chat: re-pose **only the frames named** and replace only their stills (`storyboard-recipe.md` § 1 step 4), rewrite the page, re-present, and loop until the layout is confirmed. Only then does the workflow's visual design get written onto the confirmed layouts.
|
|
22
22
|
|
|
23
|
-
A confirmed
|
|
23
|
+
A confirmed board is also a valid place to **stop**. When the user asked for a storyboard rather than a finished video — a plan to pitch, review, or hand off — `boards/storyboard.html` is the deliverable: confirm it, hand over the path, and go no further unless asked to build.
|
|
24
24
|
|
|
25
25
|
In autonomous mode, or when the user chose to skip sketches at § 1, skip this pass — frames go straight from `outline` to `animated` in the build.
|
|
26
26
|
|
|
27
27
|
## § 3 — Building on confirmed layouts
|
|
28
28
|
|
|
29
|
-
However the workflow builds — sub-agent workers per frame, or inline scene by scene — a confirmed sketch's **composition is settled**: placement, hierarchy, and copy were approved on the
|
|
29
|
+
However the workflow builds — sub-agent workers per frame, or inline scene by scene — a confirmed sketch's **composition is settled**: placement, hierarchy, and copy were approved on the board, so building means dressing that layout (full design treatment, real assets, motion), never redrawing it. Workflows that dispatch workers put "this frame has a **confirmed sketch** (its posed composition, still in `boards/stills/`)" in the worker's context and carry the keep-the-layout rule in their worker prompt; a landed frame must still read as the approved wireframe, fully dressed.
|
|
30
30
|
|
|
31
|
-
Mark each frame `animated` as it lands. The build gate carries the loop's condition: in collaborative mode, the
|
|
31
|
+
Mark each frame `animated` as it lands. The build gate carries the loop's condition: in collaborative mode, the board was confirmed at § 2.
|
|
32
32
|
|
|
33
33
|
## § 4 — The final look
|
|
34
34
|
|
|
@@ -95,5 +95,5 @@ The old way: prompt, wait, get something that misses. Establish the pain we remo
|
|
|
95
95
|
|
|
96
96
|
- A frame with `status: outline` and no built `src` renders as an outline placeholder.
|
|
97
97
|
- `built` is the middle rung: the frame's HTML exists and its **layout is confirmed** (a wireframe sketch or better) — motion not yet added. Nothing is drawn yet beyond the approved layout.
|
|
98
|
-
- The process that walks these statuses — plan, sketch, build, each pass reviewed in chat and
|
|
98
|
+
- The process that walks these statuses — plan, sketch, build, each pass reviewed in chat and on the board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) — is `review-loop.md`.
|
|
99
99
|
- Multi-line `voiceover` values collapse to one line on save.
|
|
@@ -71,7 +71,7 @@ ffprobe -v error -show_format -show_streams out.mp4
|
|
|
71
71
|
|
|
72
72
|
## Preview before render
|
|
73
73
|
|
|
74
|
-
Open the final composition preview (`#project/<name>`) only after `check` passes, to review the assembled timeline. The plan in chat and the `storyboard.html
|
|
74
|
+
Open the final composition preview (`#project/<name>`) only after `check` passes, to review the assembled timeline. The plan in chat and the storyboard board (`boards/storyboard.html`, format in `hyperframes-creative/references/storyboard-recipe.md`) are not approval of the final video. Rendering always requires the final approval defined by `hyperframes/references/review-loop.md`.
|
|
75
75
|
|
|
76
76
|
## Sub-composition smoke test
|
|
77
77
|
|
|
@@ -6,8 +6,8 @@ var __filename = __hf_fileURLToPath(import.meta.url);
|
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
8
|
trackSkillsInstallSkipped
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-NCVGBBWC.js";
|
|
10
|
+
import "./chunk-HO3SITVT.js";
|
|
11
11
|
import {
|
|
12
12
|
diag
|
|
13
13
|
} from "./chunk-VWG7OQKU.js";
|
|
@@ -35,15 +35,15 @@ import {
|
|
|
35
35
|
isCoreSkill,
|
|
36
36
|
presentSkills,
|
|
37
37
|
pruneOrphanedLockEntries
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-EWAAH7AU.js";
|
|
39
39
|
import {
|
|
40
40
|
withMeta
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-DLQQA25O.js";
|
|
42
42
|
import "./chunk-K4WIOZFP.js";
|
|
43
43
|
import "./chunk-XUXGIA7H.js";
|
|
44
44
|
import "./chunk-WERLJGIC.js";
|
|
45
45
|
import "./chunk-ISN5GRYI.js";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-MTUC2Z32.js";
|
|
47
47
|
import {
|
|
48
48
|
buildNpxCommand
|
|
49
49
|
} from "./chunk-6BEFEWFB.js";
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
printSkillsUpdateNotice,
|
|
10
10
|
refreshSkillsCache,
|
|
11
11
|
skillsCheckDue
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-EWAAH7AU.js";
|
|
13
|
+
import "./chunk-DLQQA25O.js";
|
|
14
14
|
import "./chunk-K4WIOZFP.js";
|
|
15
15
|
import "./chunk-XUXGIA7H.js";
|
|
16
16
|
import "./chunk-WERLJGIC.js";
|
|
17
17
|
import "./chunk-ISN5GRYI.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-MTUC2Z32.js";
|
|
19
19
|
import "./chunk-KNU5COPB.js";
|
|
20
20
|
import "./chunk-M2WBOQ2Q.js";
|
|
21
21
|
export {
|
|
@@ -4,6 +4,9 @@ import { dirname as __hf_dirname } from "node:path";
|
|
|
4
4
|
var require = __hf_createRequire(import.meta.url);
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
import {
|
|
8
|
+
writeCaptureFileSync
|
|
9
|
+
} from "./chunk-MRF4AMKD.js";
|
|
7
10
|
import {
|
|
8
11
|
parseAngle
|
|
9
12
|
} from "./chunk-KZI44OPA.js";
|
|
@@ -14,14 +17,8 @@ import {
|
|
|
14
17
|
} from "./chunk-57GN6KWT.js";
|
|
15
18
|
import {
|
|
16
19
|
captureArtifactRevision
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import {
|
|
20
|
-
serveStaticProjectHtml
|
|
21
|
-
} from "./chunk-UGIIDY6C.js";
|
|
22
|
-
import "./chunk-XUHOIDKG.js";
|
|
23
|
-
import "./chunk-WK375PPO.js";
|
|
24
|
-
import "./chunk-X7MTZ4T2.js";
|
|
20
|
+
} from "./chunk-BEW7RCCW.js";
|
|
21
|
+
import "./chunk-AFYZWHR7.js";
|
|
25
22
|
import {
|
|
26
23
|
DEFAULT_ZOOM_SCALE,
|
|
27
24
|
captureRegionCrop,
|
|
@@ -30,46 +27,52 @@ import {
|
|
|
30
27
|
resolveCropRegion,
|
|
31
28
|
runFfmpegOnce,
|
|
32
29
|
seekCompositionTimeline
|
|
33
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-4D5RBIX6.js";
|
|
34
31
|
import "./chunk-FH7WODJH.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-MMYY4KV3.js";
|
|
33
|
+
import "./chunk-EGJVFPUX.js";
|
|
37
34
|
import "./chunk-WPNE5NEP.js";
|
|
38
|
-
import "./chunk-TQ62EMUI.js";
|
|
39
|
-
import "./chunk-56QTFOWH.js";
|
|
40
|
-
import "./chunk-C6TPGUWD.js";
|
|
41
|
-
import {
|
|
42
|
-
artifactDirectory,
|
|
43
|
-
forgetRecordedArtifacts,
|
|
44
|
-
recordArtifacts
|
|
45
|
-
} from "./chunk-6PIGOKTE.js";
|
|
46
|
-
import "./chunk-ZFZNPLRJ.js";
|
|
47
|
-
import "./chunk-FFDC5OWV.js";
|
|
48
|
-
import {
|
|
49
|
-
resolveProject
|
|
50
|
-
} from "./chunk-WZBGU46C.js";
|
|
51
35
|
import {
|
|
52
36
|
formatLintFindings
|
|
53
37
|
} from "./chunk-6CSYCFQV.js";
|
|
38
|
+
import {
|
|
39
|
+
resolveProject
|
|
40
|
+
} from "./chunk-5HNZQSO4.js";
|
|
54
41
|
import "./chunk-K2FLNJVB.js";
|
|
42
|
+
import {
|
|
43
|
+
serveStaticProjectHtml
|
|
44
|
+
} from "./chunk-IKDBT5WT.js";
|
|
45
|
+
import "./chunk-X7MTZ4T2.js";
|
|
46
|
+
import "./chunk-5YCFHCD4.js";
|
|
55
47
|
import "./chunk-DQBY7FRR.js";
|
|
56
48
|
import {
|
|
57
49
|
resolveLocalBrowserGpuMode
|
|
58
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-H6BKVVU4.js";
|
|
59
51
|
import "./chunk-442JNXRM.js";
|
|
60
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-XUHOIDKG.js";
|
|
53
|
+
import "./chunk-ODE7HHNN.js";
|
|
54
|
+
import "./chunk-A5RDOXZE.js";
|
|
55
|
+
import "./chunk-C6TPGUWD.js";
|
|
56
|
+
import "./chunk-5RSV6DWB.js";
|
|
57
|
+
import {
|
|
58
|
+
artifactDirectory,
|
|
59
|
+
forgetRecordedArtifacts,
|
|
60
|
+
recordArtifacts
|
|
61
|
+
} from "./chunk-6PIGOKTE.js";
|
|
62
|
+
import "./chunk-FFDC5OWV.js";
|
|
63
|
+
import "./chunk-AEQWF7PE.js";
|
|
61
64
|
import "./chunk-XT7X6QCP.js";
|
|
62
65
|
import "./chunk-4YYJOFKS.js";
|
|
63
66
|
import "./chunk-HVW7ABXD.js";
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
66
|
-
import "./chunk-
|
|
67
|
+
import "./chunk-7RTTPSXG.js";
|
|
68
|
+
import "./chunk-3W3MOLRL.js";
|
|
69
|
+
import "./chunk-FEKRMXT6.js";
|
|
67
70
|
import "./chunk-AWDFDFI3.js";
|
|
68
71
|
import "./chunk-P6LJ4Y32.js";
|
|
69
72
|
import "./chunk-GMECXFAN.js";
|
|
70
73
|
import "./chunk-5CS4T6C6.js";
|
|
71
|
-
import "./chunk-
|
|
72
|
-
import "./chunk-
|
|
74
|
+
import "./chunk-NCVGBBWC.js";
|
|
75
|
+
import "./chunk-HO3SITVT.js";
|
|
73
76
|
import "./chunk-VWG7OQKU.js";
|
|
74
77
|
import "./chunk-QWQ6GQTI.js";
|
|
75
78
|
import {
|
|
@@ -93,7 +96,7 @@ import "./chunk-K4WIOZFP.js";
|
|
|
93
96
|
import "./chunk-XUXGIA7H.js";
|
|
94
97
|
import "./chunk-WERLJGIC.js";
|
|
95
98
|
import "./chunk-ISN5GRYI.js";
|
|
96
|
-
import "./chunk-
|
|
99
|
+
import "./chunk-MTUC2Z32.js";
|
|
97
100
|
import {
|
|
98
101
|
loadOptionalPackage
|
|
99
102
|
} from "./chunk-3DKN5WKL.js";
|
|
@@ -105,8 +108,8 @@ import {
|
|
|
105
108
|
getFFmpegInstallHint
|
|
106
109
|
} from "./chunk-KEGTYA7V.js";
|
|
107
110
|
import "./chunk-XT6MXC7A.js";
|
|
108
|
-
import "./chunk-
|
|
109
|
-
import "./chunk-
|
|
111
|
+
import "./chunk-2CEH75X3.js";
|
|
112
|
+
import "./chunk-INNBWSZK.js";
|
|
110
113
|
import "./chunk-KCF6GHJP.js";
|
|
111
114
|
import "./chunk-JYVGYKXG.js";
|
|
112
115
|
import "./chunk-7KDQAD2W.js";
|
|
@@ -114,12 +117,12 @@ import {
|
|
|
114
117
|
createRuntimeStartTimeResolver,
|
|
115
118
|
isClipVisibleAt,
|
|
116
119
|
isInClipWindow
|
|
117
|
-
} from "./chunk-
|
|
120
|
+
} from "./chunk-V5J4XEBG.js";
|
|
118
121
|
import {
|
|
119
122
|
readElementRateSpec,
|
|
120
123
|
sourceTimeAt,
|
|
121
124
|
timeAtSourceTime
|
|
122
|
-
} from "./chunk-
|
|
125
|
+
} from "./chunk-TWBTXEDZ.js";
|
|
123
126
|
import "./chunk-VC76R6W2.js";
|
|
124
127
|
import "./chunk-UJKQWGFF.js";
|
|
125
128
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -231,6 +234,19 @@ var FFMPEG_EXTRACT_TIMEOUT_MS = 3e4;
|
|
|
231
234
|
function formatSnapshotTimestamp(time) {
|
|
232
235
|
return `${Number(time.toFixed(3))}s`;
|
|
233
236
|
}
|
|
237
|
+
function assertDistinctKeepNames(times) {
|
|
238
|
+
const timeByLabel = /* @__PURE__ */ new Map();
|
|
239
|
+
for (const time of times) {
|
|
240
|
+
const label = formatSnapshotTimestamp(time);
|
|
241
|
+
const other = timeByLabel.get(label);
|
|
242
|
+
if (other !== void 0 && other !== time) {
|
|
243
|
+
throw new Error(
|
|
244
|
+
`--keep would name both ${other} and ${time} at-${label}.png; pass times at least 1 ms apart`
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
timeByLabel.set(label, time);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
234
250
|
function resolveSnapshotVideoFrameTime(input) {
|
|
235
251
|
const { globalTime, clipStart, clipDuration, sourceDuration, compositionDuration } = input;
|
|
236
252
|
const clipEnd = clipStart + clipDuration;
|
|
@@ -442,7 +458,7 @@ function computeSnapshotTimes(duration, opts) {
|
|
|
442
458
|
return { times: times.map(round), appendedTail: false };
|
|
443
459
|
}
|
|
444
460
|
async function captureSnapshots(projectDir, opts) {
|
|
445
|
-
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-
|
|
461
|
+
const { bundleWithLocalizedFonts } = await import("./bundleWithLocalizedFonts-SFHKZZAX.js");
|
|
446
462
|
const capture = await captureArtifactRevision(projectDir).catch(warnSnapshotsNotRecorded);
|
|
447
463
|
const invocation = randomUUID();
|
|
448
464
|
const artifacts = [];
|
|
@@ -542,7 +558,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
542
558
|
mkdirSync(snapshotDir, { recursive: true });
|
|
543
559
|
try {
|
|
544
560
|
const { readdirSync } = await import("fs");
|
|
545
|
-
for (const file of readdirSync(snapshotDir)) {
|
|
561
|
+
for (const file of opts.keep ? [] : readdirSync(snapshotDir)) {
|
|
546
562
|
if (/\.(png|jpg|jpeg)$/i.test(file)) {
|
|
547
563
|
const path = resolve(snapshotDir, file);
|
|
548
564
|
replaced.push(path);
|
|
@@ -555,7 +571,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
555
571
|
let syncVideoFrameVisibility = null;
|
|
556
572
|
let extractMediaMetadata = null;
|
|
557
573
|
try {
|
|
558
|
-
const engine = await import("./src-
|
|
574
|
+
const engine = await import("./src-N42CT3YR.js");
|
|
559
575
|
injectVideoFramesBatch = engine.injectVideoFramesBatch;
|
|
560
576
|
syncVideoFrameVisibility = engine.syncVideoFrameVisibility;
|
|
561
577
|
extractMediaMetadata = engine.extractMediaMetadata;
|
|
@@ -685,8 +701,8 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
685
701
|
}
|
|
686
702
|
await recaptureSnapshotComposite(page);
|
|
687
703
|
const timeLabel = formatSnapshotTimestamp(time);
|
|
688
|
-
const
|
|
689
|
-
const filename = `frame-${
|
|
704
|
+
const slot = opts.keep ? `at-${timeLabel}` : `${String(i).padStart(2, "0")}-at-${timeLabel}`;
|
|
705
|
+
const filename = opts.keep ? `${slot}.png` : `frame-${slot}.png`;
|
|
690
706
|
const framePath = join(snapshotDir, filename);
|
|
691
707
|
let crop;
|
|
692
708
|
if (opts.zoom) {
|
|
@@ -708,9 +724,12 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
708
724
|
region,
|
|
709
725
|
opts.zoomScale ?? DEFAULT_ZOOM_SCALE
|
|
710
726
|
);
|
|
711
|
-
|
|
727
|
+
writeCaptureFileSync(framePath, buffer);
|
|
712
728
|
} else {
|
|
713
|
-
|
|
729
|
+
writeCaptureFileSync(
|
|
730
|
+
framePath,
|
|
731
|
+
await page.screenshot({ type: "png", omitBackground: true })
|
|
732
|
+
);
|
|
714
733
|
}
|
|
715
734
|
artifacts.push({
|
|
716
735
|
id: `${invocation}-${i}`,
|
|
@@ -732,9 +751,9 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
732
751
|
` ${c.warn("\u26A0")} --against has no frame at ${timeLabel} \u2014 reference pair skipped`
|
|
733
752
|
);
|
|
734
753
|
} else {
|
|
735
|
-
const refPath = join(snapshotDir, `ref-${
|
|
736
|
-
|
|
737
|
-
const pairPath = join(snapshotDir, `pair-${
|
|
754
|
+
const refPath = join(snapshotDir, `ref-${slot}.png`);
|
|
755
|
+
writeCaptureFileSync(refPath, refPng);
|
|
756
|
+
const pairPath = join(snapshotDir, `pair-${slot}.jpg`);
|
|
738
757
|
const { createContactSheet } = await import("./contactSheet-27SRU7A4.js");
|
|
739
758
|
await createContactSheet([framePath, refPath], pairPath, {
|
|
740
759
|
cols: 2,
|
|
@@ -837,6 +856,11 @@ var snapshot_default = defineCommand({
|
|
|
837
856
|
description: "Always include a readable end-of-timeline frame (default: true). Pass --no-end to capture only your exact --at times.",
|
|
838
857
|
default: true
|
|
839
858
|
},
|
|
859
|
+
keep: {
|
|
860
|
+
type: "boolean",
|
|
861
|
+
description: "Add to --output instead of clearing it, naming each still at-<seconds>s.png (at-0s, at-1.5s, at-12.25s: no trailing zeros), so snapshotting one moment again replaces only that still. Times less than 1 ms apart share a name, so one run may not pass two of them. No contact sheet.",
|
|
862
|
+
default: false
|
|
863
|
+
},
|
|
840
864
|
zoom: {
|
|
841
865
|
type: "string",
|
|
842
866
|
description: "Zoom into a CSS selector or an exact pixel region 'x,y,w,h'. Crops a high-density screenshot instead of the full frame \u2014 a raised deviceScaleFactor, never CSS zoom or viewport resizing, so layout stays identical. A selector matching nothing is an error, not a silent full-frame shot."
|
|
@@ -902,6 +926,7 @@ var snapshot_default = defineCommand({
|
|
|
902
926
|
}
|
|
903
927
|
const timeout = parseInt(args.timeout, 10) || 5e3;
|
|
904
928
|
const atTimestamps = args.at ? String(args.at).split(",").map((s) => parseFloat(s.trim())).filter((n) => !isNaN(n)) : void 0;
|
|
929
|
+
if (args.keep === true && atTimestamps) assertDistinctKeepNames(atTimestamps);
|
|
905
930
|
const describeArg = args.describe === void 0 ? "true" : String(args.describe) === "false" ? null : String(args.describe);
|
|
906
931
|
const camera = args.angle ? parseAngle(String(args.angle)) : void 0;
|
|
907
932
|
const zoomTarget = args.zoom ? parseZoomTarget(String(args.zoom)) : void 0;
|
|
@@ -930,7 +955,8 @@ var snapshot_default = defineCommand({
|
|
|
930
955
|
zoomScale,
|
|
931
956
|
autoProxy: args.proxy,
|
|
932
957
|
browserGpuMode: resolveLocalBrowserGpuMode(args["browser-gpu"]),
|
|
933
|
-
against
|
|
958
|
+
against,
|
|
959
|
+
keep: args.keep === true
|
|
934
960
|
});
|
|
935
961
|
reportArtifacts(
|
|
936
962
|
"snapshot",
|
|
@@ -956,7 +982,7 @@ ${c.success("\u25C7")} ${paths.length} snapshots saved to ${snapshotDir}`);
|
|
|
956
982
|
}
|
|
957
983
|
try {
|
|
958
984
|
const { createSnapshotContactSheet } = await import("./contactSheet-27SRU7A4.js");
|
|
959
|
-
const sheets = await createSnapshotContactSheet(
|
|
985
|
+
const sheets = args.keep === true ? [] : await createSnapshotContactSheet(
|
|
960
986
|
snapshotDir,
|
|
961
987
|
join(snapshotDir, "contact-sheet.jpg")
|
|
962
988
|
);
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
assertPublicHttpsUrl,
|
|
54
54
|
assertSwiftShader,
|
|
55
55
|
assertWebGpuAdapterAvailable,
|
|
56
|
+
audioFailureDiagnostics,
|
|
56
57
|
augmentPageNavigationTimeoutError,
|
|
57
58
|
augmentProtocolTimeoutError,
|
|
58
59
|
beginFrameCapture,
|
|
@@ -216,8 +217,8 @@ import {
|
|
|
216
217
|
verifyGpuParity,
|
|
217
218
|
writeCapturedFrame,
|
|
218
219
|
writeUrlDownloadTelemetry
|
|
219
|
-
} from "./chunk-
|
|
220
|
-
import "./chunk-
|
|
220
|
+
} from "./chunk-2CEH75X3.js";
|
|
221
|
+
import "./chunk-INNBWSZK.js";
|
|
221
222
|
import "./chunk-KCF6GHJP.js";
|
|
222
223
|
import {
|
|
223
224
|
LOW_MEMORY_TOTAL_MB_THRESHOLD,
|
|
@@ -229,8 +230,8 @@ import "./chunk-7KDQAD2W.js";
|
|
|
229
230
|
import {
|
|
230
231
|
MEDIA_VISUAL_STYLE_PROPERTIES,
|
|
231
232
|
quantizeTimeToFrame
|
|
232
|
-
} from "./chunk-
|
|
233
|
-
import "./chunk-
|
|
233
|
+
} from "./chunk-V5J4XEBG.js";
|
|
234
|
+
import "./chunk-TWBTXEDZ.js";
|
|
234
235
|
import "./chunk-VC76R6W2.js";
|
|
235
236
|
import "./chunk-UJKQWGFF.js";
|
|
236
237
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -319,6 +320,7 @@ export {
|
|
|
319
320
|
assertPublicHttpsUrl,
|
|
320
321
|
assertSwiftShader,
|
|
321
322
|
assertWebGpuAdapterAvailable,
|
|
323
|
+
audioFailureDiagnostics,
|
|
322
324
|
augmentPageNavigationTimeoutError,
|
|
323
325
|
augmentProtocolTimeoutError,
|
|
324
326
|
beginFrameCapture,
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
serializeRenderRequest,
|
|
70
70
|
startServer,
|
|
71
71
|
validatePlanV2MaterializedTarget
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-HEEN6X6O.js";
|
|
73
73
|
import {
|
|
74
74
|
FONT_FETCH_FAILED,
|
|
75
75
|
FONT_FETCH_UNAVAILABLE,
|
|
@@ -78,11 +78,11 @@ import {
|
|
|
78
78
|
injectDeterministicFontFaces
|
|
79
79
|
} from "./chunk-3QATT3QF.js";
|
|
80
80
|
import "./chunk-FI4I7CME.js";
|
|
81
|
-
import "./chunk-
|
|
81
|
+
import "./chunk-ESOAYGIT.js";
|
|
82
|
+
import "./chunk-BZ56MTDX.js";
|
|
82
83
|
import "./chunk-KLIKCX6Q.js";
|
|
83
84
|
import "./chunk-EOOEC32M.js";
|
|
84
85
|
import "./chunk-TJSTGSAW.js";
|
|
85
|
-
import "./chunk-BZ56MTDX.js";
|
|
86
86
|
import {
|
|
87
87
|
DEFAULT_CONFIG,
|
|
88
88
|
captureFrame,
|
|
@@ -96,15 +96,15 @@ import {
|
|
|
96
96
|
isTransientBrowserError,
|
|
97
97
|
prepareCaptureSessionForReuse,
|
|
98
98
|
resolveConfig
|
|
99
|
-
} from "./chunk-
|
|
100
|
-
import "./chunk-
|
|
99
|
+
} from "./chunk-2CEH75X3.js";
|
|
100
|
+
import "./chunk-INNBWSZK.js";
|
|
101
101
|
import "./chunk-KCF6GHJP.js";
|
|
102
102
|
import "./chunk-JYVGYKXG.js";
|
|
103
103
|
import "./chunk-7KDQAD2W.js";
|
|
104
104
|
import {
|
|
105
105
|
quantizeTimeToFrame
|
|
106
|
-
} from "./chunk-
|
|
107
|
-
import "./chunk-
|
|
106
|
+
} from "./chunk-V5J4XEBG.js";
|
|
107
|
+
import "./chunk-TWBTXEDZ.js";
|
|
108
108
|
import "./chunk-VC76R6W2.js";
|
|
109
109
|
import "./chunk-UJKQWGFF.js";
|
|
110
110
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -5,24 +5,25 @@ var require = __hf_createRequire(import.meta.url);
|
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
|
+
inProcessAnswer,
|
|
8
9
|
serveStaticProjectHtml
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-XUHOIDKG.js";
|
|
11
|
-
import "./chunk-WK375PPO.js";
|
|
10
|
+
} from "./chunk-IKDBT5WT.js";
|
|
12
11
|
import "./chunk-X7MTZ4T2.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-5YCFHCD4.js";
|
|
13
|
+
import "./chunk-XUHOIDKG.js";
|
|
14
|
+
import "./chunk-ODE7HHNN.js";
|
|
15
|
+
import "./chunk-A5RDOXZE.js";
|
|
15
16
|
import "./chunk-C6TPGUWD.js";
|
|
17
|
+
import "./chunk-5RSV6DWB.js";
|
|
16
18
|
import "./chunk-6PIGOKTE.js";
|
|
17
|
-
import "./chunk-ZFZNPLRJ.js";
|
|
18
19
|
import "./chunk-FFDC5OWV.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-AEQWF7PE.js";
|
|
20
21
|
import "./chunk-XT7X6QCP.js";
|
|
21
22
|
import "./chunk-4YYJOFKS.js";
|
|
22
23
|
import "./chunk-HVW7ABXD.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-7RTTPSXG.js";
|
|
25
|
+
import "./chunk-3W3MOLRL.js";
|
|
26
|
+
import "./chunk-FEKRMXT6.js";
|
|
26
27
|
import "./chunk-AWDFDFI3.js";
|
|
27
28
|
import "./chunk-P6LJ4Y32.js";
|
|
28
29
|
import "./chunk-GMECXFAN.js";
|
|
@@ -31,10 +32,10 @@ import "./chunk-KLIKCX6Q.js";
|
|
|
31
32
|
import "./chunk-EOOEC32M.js";
|
|
32
33
|
import "./chunk-TJSTGSAW.js";
|
|
33
34
|
import "./chunk-EOVYQ3IG.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-INNBWSZK.js";
|
|
35
36
|
import "./chunk-KCF6GHJP.js";
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-V5J4XEBG.js";
|
|
38
|
+
import "./chunk-TWBTXEDZ.js";
|
|
38
39
|
import "./chunk-VC76R6W2.js";
|
|
39
40
|
import "./chunk-UJKQWGFF.js";
|
|
40
41
|
import "./chunk-ALLKNYC3.js";
|
|
@@ -54,5 +55,6 @@ import "./chunk-TYXH3EKP.js";
|
|
|
54
55
|
import "./chunk-IXLUTE6N.js";
|
|
55
56
|
import "./chunk-M2WBOQ2Q.js";
|
|
56
57
|
export {
|
|
58
|
+
inProcessAnswer,
|
|
57
59
|
serveStaticProjectHtml
|
|
58
60
|
};
|
package/dist/studio/assets/{hyperframes-player-D3ufdOJ_.js → hyperframes-player-kqB1psAJ.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var xe=Object.defineProperty;var Ie=(r,i,e)=>i in r?xe(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var l=(r,i,e)=>Ie(r,typeof i!="symbol"?i+"":i,e);import{S as Oe,r as Ne,a as fe,i as Fe,b as w,c as _e,p as Ve,d as Ue,e as He,f as We,s as ze,g as ge,F as ye}from"./index-
|
|
1
|
+
var xe=Object.defineProperty;var Ie=(r,i,e)=>i in r?xe(r,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[i]=e;var l=(r,i,e)=>Ie(r,typeof i!="symbol"?i+"":i,e);import{S as Oe,r as Ne,a as fe,i as Fe,b as w,c as _e,p as Ve,d as Ue,e as He,f as We,s as ze,g as ge,F as ye}from"./index-X_d1b5vz.js";function $e(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function x(r){return typeof r=="object"&&r!==null}function je(r){return x(r)&&typeof r.getDuration=="function"}function Be(r){return x(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}function qe(r){if(!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(r))throw new Error(`Invalid HyperFrames runtime version: ${r}`);return`https://cdn.jsdelivr.net/npm/@hyperframes/core@${r}/dist/hyperframe.runtime.iife.js`}const W=typeof __HYPERFRAMES_RUNTIME_CDN_URL__=="string"?__HYPERFRAMES_RUNTIME_CDN_URL__:qe("0.0.0-dev");function $(r){if(r===null)return null;const i=Number.parseInt(r,10);return Number.isFinite(i)&&i>0?i:null}function Ge(r){const i=(r==null?void 0:r.querySelector("[data-composition-id][data-width][data-height]"))??(r==null?void 0:r.querySelector("[data-width][data-height]"));if(!i)return null;const e=$(i.getAttribute("data-width")),t=$(i.getAttribute("data-height"));return e!==null&&t!==null?{width:e,height:t}:null}function Ye(r){return Array.isArray(r)?r.find(i=>typeof i=="string"&&i.trim()!==""&&i!=="[object Event]")??null:null}class Xe{constructor(i,e){l(this,"_interval",null);l(this,"_runtimeInjected",!1);l(this,"_runtimeScript",null);l(this,"_failure",null);this._iframe=i,this._callbacks=e}get failed(){return this._failure!==null&&this._failure.document===this._iframe.contentDocument}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._failure=null,this._runtimeInjected=!1;let i=0;this._interval=setInterval(()=>{i++;let e=null;try{e=this._poll(i)}catch(t){t instanceof DOMException&&t.name==="SecurityError"||(e={kind:"error",message:t instanceof Error?t.message:String(t)})}if(e){this.stop(),e.kind==="error"?(this._failure={document:this._iframe.contentDocument},this._callbacks.onError(e.message)):this._callbacks.onReady(e.result);return}i>=40&&(this.stop(),this._failure={document:this._iframe.contentDocument},this._callbacks.onError("Composition timeline not found after 8s"))},200)}_poll(i){const e=this._iframe.contentWindow;if(!e)return null;const t=Ye(Reflect.get(e,Oe));if(t!==null)return{kind:"error",message:t};const s=this._iframe.contentDocument,n=Reflect.get(e,"__timelines"),o=this.hasRuntimeBridge(e);if($e({hasRuntime:o,hasTimelines:x(n)&&Object.keys(n).length>0,hasNestedCompositions:!!(s!=null&&s.querySelector("[data-composition-src]")),runtimeInjected:this._runtimeInjected,attempts:i}))return this._injectRuntime(),null;if(this._runtimeInjected&&!o)return null;const a=this._resolveReadyResult(e,s);return a?{kind:"ready",result:a}:null}_resolveReadyResult(i,e){var n;const t=this._resolvePlaybackDurationAdapter(i)??{kind:"document",getDuration:()=>0};let s=t.getDuration();if(!Number.isFinite(s)||s<=0){if(t.kind==="direct-timeline")return null;s=e?((n=Ne(e))==null?void 0:n.durationSeconds)??0:0}return s<=0?null:{duration:s,adapter:{...t,getDuration:()=>s},compositionSize:Ge(e)}}stop(){this._runtimeScript&&(this._runtimeScript.onerror=null,this._runtimeScript=null),this.failed||(this._failure=null),this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{const i=this._iframe.contentWindow;return i?this._resolveDirectTimelineAdapterFromWindow(i):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(i){return this._resolveDirectTimelineAdapterFromWindow(i)}hasRuntimeBridge(i){return x(Reflect.get(i,"__player"))}_injectRuntime(){var i,e,t,s;this._runtimeInjected=!0;try{const n=this._iframe.contentDocument;if(!n)return;const o=n.createElement("script");o.src=((e=(i=this._callbacks).resolveRuntimeUrl)==null?void 0:e.call(i))??W,this._runtimeScript=o,o.onerror=()=>{this._runtimeScript!==o||this._iframe.contentDocument!==n||(this.stop(),this._failure={document:n},this._callbacks.onError("HyperFrames runtime failed to load from "+o.src))},(n.head||n.documentElement).appendChild(o),(s=(t=this._callbacks).onRuntimeInjected)==null||s.call(t)}catch{}}_resolveDirectTimelineAdapterFromWindow(i){var a,c;if(this.hasRuntimeBridge(i))return null;const e=Reflect.get(i,"__timelines");if(!x(e))return null;const t=Object.keys(e);if(t.length===0)return null;const s=(c=(a=this._iframe.contentDocument)==null?void 0:a.querySelector("[data-composition-id]"))==null?void 0:c.getAttribute("data-composition-id"),n=s&&s in e?s:t[t.length-1],o=e[n];return Be(o)?o:null}_resolvePlaybackDurationAdapter(i){const e=Reflect.get(i,"__player");if(je(e))return{kind:"runtime",getDuration:()=>e.getDuration()};const t=this._resolveDirectTimelineAdapterFromWindow(i);return t?{kind:"direct-timeline",timeline:t,getDuration:()=>t.duration()}:null}}const Ze=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as P}from"./index-
|
|
1
|
+
import{h as P}from"./index-X_d1b5vz.js";function j(c,d){for(var s=0;s<d.length;s++){const a=d[s];if(typeof a!="string"&&!Array.isArray(a)){for(const i in a)if(i!=="default"&&!(i in c)){const l=Object.getOwnPropertyDescriptor(a,i);l&&Object.defineProperty(c,i,l.get?l:{enumerable:!0,get:()=>a[i]})}}}return Object.freeze(Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}))}var v={},w;function k(){if(w)return v;w=1,Object.defineProperty(v,"__esModule",{value:!0}),v.default=d;var c=window.OfflineAudioContext||window.webkitOfflineAudioContext;function d(e){var r=a(e);return r.start(0),[i,y,O(e.sampleRate),s].reduce(function(t,o){return o(t)},r.buffer.getChannelData(0))}function s(e){return e.sort(function(r,t){return t.count-r.count}).splice(0,5)[0].tempo}function a(e){var r=e.length,t=e.numberOfChannels,o=e.sampleRate,n=new c(t,r,o),u=n.createBufferSource();u.buffer=e;var f=n.createBiquadFilter();return f.type="lowpass",u.connect(f),f.connect(n.destination),u}function i(e){for(var r=[],t=.9,o=.3,n=15;r.length<n&&t>=o;)r=l(e,t),t-=.05;if(r.length<n)throw new Error("Could not find enough samples for a reliable detection.");return r}function l(e,r){for(var t=[],o=0,n=e.length;o<n;o+=1)e[o]>r&&(t.push(o),o+=1e4);return t}function y(e){var r=[];return e.forEach(function(t,o){for(var n=function(x){var h=e[o+x]-t,_=r.some(function(g){if(g.interval===h)return g.count+=1});_||r.push({interval:h,count:1})},u=0;u<10;u+=1)n(u)}),r}function O(e){return function(r){var t=[];return r.forEach(function(o){if(o.interval!==0){for(var n=60/(o.interval/e);n<90;)n*=2;for(;n>180;)n/=2;n=Math.round(n);var u=t.some(function(f){if(f.tempo===n)return f.count+=o.count});u||t.push({tempo:n,count:o.count})}}),t}}return v}var p,b;function q(){return b||(b=1,p=k().default),p}var m=q();const A=P(m),D=j({__proto__:null,default:A},[m]);export{D as i};
|