@ignix-social/editor 0.1.0
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/LICENSE +190 -0
- package/NOTICE +54 -0
- package/README.md +23 -0
- package/bin/ignix-editor.mjs +8 -0
- package/package.json +53 -0
- package/patches/index.mjs +53 -0
- package/scripts/build-ffmpeg-macos.sh +35 -0
- package/scripts/build-whisper-macos.sh +21 -0
- package/scripts/vendor.mjs +41 -0
- package/skills/ignix-editor/SKILL.md +132 -0
- package/src/audio.mjs +31 -0
- package/src/binaries.json +46 -0
- package/src/binaries.mjs +83 -0
- package/src/cli.mjs +254 -0
- package/src/prepare.mjs +74 -0
- package/src/runtime/ignix-frame.js +92 -0
- package/src/transcribe.mjs +71 -0
- package/src/validate.mjs +71 -0
- package/templates/blank/index.html +41 -0
- package/vendor/hyperframes/README.md +181 -0
- package/vendor/hyperframes/UPSTREAM.json +12 -0
- package/vendor/hyperframes/bin/hyperframes-localize-fonts.mjs +12 -0
- package/vendor/hyperframes/bin/hyperframes.mjs +11 -0
- package/vendor/hyperframes/dist/add-LR3ZR2A5.js +79 -0
- package/vendor/hyperframes/dist/agentPromptGenerator-VIIPZCJ3.js +143 -0
- package/vendor/hyperframes/dist/animatedGifPrep-P2T6YM7Z.js +34 -0
- package/vendor/hyperframes/dist/asset-BE2DOV72.js +26 -0
- package/vendor/hyperframes/dist/assetCataloger-VBLPHX24.js +340 -0
- package/vendor/hyperframes/dist/auth-RCQB2ZT7.js +60 -0
- package/vendor/hyperframes/dist/autoUpdate-RJAX3DAZ.js +268 -0
- package/vendor/hyperframes/dist/backgroundChecks-H2LCUIMJ.js +61 -0
- package/vendor/hyperframes/dist/backgroundChecksWorker.js +26 -0
- package/vendor/hyperframes/dist/batchRender-FT7AP7XH.js +355 -0
- package/vendor/hyperframes/dist/beat-analyzer.global.js +338 -0
- package/vendor/hyperframes/dist/beats-Y2EOP72P.js +309 -0
- package/vendor/hyperframes/dist/benchmark-MZ7GY3JW.js +231 -0
- package/vendor/hyperframes/dist/browser-HUTAMRQE.js +237 -0
- package/vendor/hyperframes/dist/bundleWithLocalizedFonts-5QOPOB5D.js +52 -0
- package/vendor/hyperframes/dist/capture-RLZA6EMR.js +4079 -0
- package/vendor/hyperframes/dist/capture-SZZ4IYJK.js +290 -0
- package/vendor/hyperframes/dist/captureFile-LYOJOUIE.js +15 -0
- package/vendor/hyperframes/dist/captureTimeout-PA4FYWT5.js +27 -0
- package/vendor/hyperframes/dist/catalog-KYU55EWR.js +1001 -0
- package/vendor/hyperframes/dist/check-TCG4PXLR.js +1697 -0
- package/vendor/hyperframes/dist/checkBrowser-RPMO4OW5.js +1032 -0
- package/vendor/hyperframes/dist/chunk-2EAXUCCE.js +88 -0
- package/vendor/hyperframes/dist/chunk-2EGFTPWD.js +1077 -0
- package/vendor/hyperframes/dist/chunk-2PSPARWP.js +6058 -0
- package/vendor/hyperframes/dist/chunk-2YN64IN5.js +5747 -0
- package/vendor/hyperframes/dist/chunk-3GXQPCJC.js +682 -0
- package/vendor/hyperframes/dist/chunk-3ZP5DXE7.js +15 -0
- package/vendor/hyperframes/dist/chunk-4NWOGZZS.js +1990 -0
- package/vendor/hyperframes/dist/chunk-4PFZPP2N.js +587 -0
- package/vendor/hyperframes/dist/chunk-4THIAPBL.js +128 -0
- package/vendor/hyperframes/dist/chunk-4YYJOFKS.js +28 -0
- package/vendor/hyperframes/dist/chunk-54HJ63Q2.js +29 -0
- package/vendor/hyperframes/dist/chunk-5ETJX6WM.js +89 -0
- package/vendor/hyperframes/dist/chunk-5IAKAQA7.js +389 -0
- package/vendor/hyperframes/dist/chunk-5Z63TBTX.js +37 -0
- package/vendor/hyperframes/dist/chunk-6BEFEWFB.js +25 -0
- package/vendor/hyperframes/dist/chunk-6CSYCFQV.js +68 -0
- package/vendor/hyperframes/dist/chunk-6CTIGJY7.js +154 -0
- package/vendor/hyperframes/dist/chunk-7HG4BFIN.js +93 -0
- package/vendor/hyperframes/dist/chunk-7JZ4FXP2.js +118 -0
- package/vendor/hyperframes/dist/chunk-A2Z4Z4VL.js +2961 -0
- package/vendor/hyperframes/dist/chunk-AMKC3AXA.js +25 -0
- package/vendor/hyperframes/dist/chunk-AVUUN2XD.js +4847 -0
- package/vendor/hyperframes/dist/chunk-AWDFDFI3.js +46 -0
- package/vendor/hyperframes/dist/chunk-AWNBM3MZ.js +94 -0
- package/vendor/hyperframes/dist/chunk-BXCMXMJQ.js +73 -0
- package/vendor/hyperframes/dist/chunk-BZ56MTDX.js +6 -0
- package/vendor/hyperframes/dist/chunk-CFKU7HTK.js +171 -0
- package/vendor/hyperframes/dist/chunk-CWPVM2QV.js +308 -0
- package/vendor/hyperframes/dist/chunk-DPVXBVLL.js +31292 -0
- package/vendor/hyperframes/dist/chunk-DQBY7FRR.js +397 -0
- package/vendor/hyperframes/dist/chunk-E6RPWJVC.js +213 -0
- package/vendor/hyperframes/dist/chunk-EISRN4E6.js +294 -0
- package/vendor/hyperframes/dist/chunk-EOVYQ3IG.js +143 -0
- package/vendor/hyperframes/dist/chunk-F3WZGU7C.js +479 -0
- package/vendor/hyperframes/dist/chunk-FCSIGXXP.js +366 -0
- package/vendor/hyperframes/dist/chunk-FI4I7CME.js +56 -0
- package/vendor/hyperframes/dist/chunk-FLWXXDNS.js +15 -0
- package/vendor/hyperframes/dist/chunk-GK4AIFIH.js +11171 -0
- package/vendor/hyperframes/dist/chunk-GMECXFAN.js +57 -0
- package/vendor/hyperframes/dist/chunk-GULOKZLI.js +155 -0
- package/vendor/hyperframes/dist/chunk-H4YZZ2VQ.js +68 -0
- package/vendor/hyperframes/dist/chunk-H6QMKUYA.js +477 -0
- package/vendor/hyperframes/dist/chunk-HBBJFK6I.js +273 -0
- package/vendor/hyperframes/dist/chunk-HRUGC23L.js +212 -0
- package/vendor/hyperframes/dist/chunk-HVW7ABXD.js +19 -0
- package/vendor/hyperframes/dist/chunk-HW6OYASV.js +344 -0
- package/vendor/hyperframes/dist/chunk-HWKCIWQT.js +3578 -0
- package/vendor/hyperframes/dist/chunk-I465DBM6.js +1214 -0
- package/vendor/hyperframes/dist/chunk-IGLEPPTN.js +24 -0
- package/vendor/hyperframes/dist/chunk-IGNAAHS3.js +433 -0
- package/vendor/hyperframes/dist/chunk-IHFUKJOR.js +85 -0
- package/vendor/hyperframes/dist/chunk-IQ3OUQ5Z.js +213 -0
- package/vendor/hyperframes/dist/chunk-ISN5GRYI.js +20 -0
- package/vendor/hyperframes/dist/chunk-IUZFXWSV.js +446 -0
- package/vendor/hyperframes/dist/chunk-JH556Q42.js +647 -0
- package/vendor/hyperframes/dist/chunk-JTHMTOMQ.js +601 -0
- package/vendor/hyperframes/dist/chunk-K2EQN4VU.js +405 -0
- package/vendor/hyperframes/dist/chunk-K2FTXJYH.js +16044 -0
- package/vendor/hyperframes/dist/chunk-K4WIOZFP.js +32 -0
- package/vendor/hyperframes/dist/chunk-K4WKGXRC.js +18 -0
- package/vendor/hyperframes/dist/chunk-KBJUXVOJ.js +172 -0
- package/vendor/hyperframes/dist/chunk-KC5XXX3X.js +590 -0
- package/vendor/hyperframes/dist/chunk-KNU5COPB.js +29 -0
- package/vendor/hyperframes/dist/chunk-KZI44OPA.js +185 -0
- package/vendor/hyperframes/dist/chunk-L3YOGIPG.js +48 -0
- package/vendor/hyperframes/dist/chunk-LAOCA3MQ.js +189 -0
- package/vendor/hyperframes/dist/chunk-LCSMOLGX.js +312 -0
- package/vendor/hyperframes/dist/chunk-LFGJWOVA.js +61 -0
- package/vendor/hyperframes/dist/chunk-LHSR3M4M.js +498 -0
- package/vendor/hyperframes/dist/chunk-LYNI3FOL.js +123 -0
- package/vendor/hyperframes/dist/chunk-M2WBOQ2Q.js +54 -0
- package/vendor/hyperframes/dist/chunk-MRF4AMKD.js +104 -0
- package/vendor/hyperframes/dist/chunk-MWB3ZIFM.js +852 -0
- package/vendor/hyperframes/dist/chunk-NGKM64BP.js +39 -0
- package/vendor/hyperframes/dist/chunk-NXMYHJAL.js +43 -0
- package/vendor/hyperframes/dist/chunk-OAF4XJOW.js +192 -0
- package/vendor/hyperframes/dist/chunk-OFQWTKPW.js +117 -0
- package/vendor/hyperframes/dist/chunk-P6LJ4Y32.js +4662 -0
- package/vendor/hyperframes/dist/chunk-PBN6GBJE.js +108 -0
- package/vendor/hyperframes/dist/chunk-PDAMK4Q5.js +28 -0
- package/vendor/hyperframes/dist/chunk-PFCFR3KZ.js +20 -0
- package/vendor/hyperframes/dist/chunk-PJ3HDUCY.js +108 -0
- package/vendor/hyperframes/dist/chunk-PMRBLBUP.js +152 -0
- package/vendor/hyperframes/dist/chunk-PPQUYWTW.js +240 -0
- package/vendor/hyperframes/dist/chunk-Q5X2B5WT.js +29 -0
- package/vendor/hyperframes/dist/chunk-Q7IU7MOR.js +351 -0
- package/vendor/hyperframes/dist/chunk-QC4FJVLM.js +371 -0
- package/vendor/hyperframes/dist/chunk-QNYYOUU3.js +1318 -0
- package/vendor/hyperframes/dist/chunk-RDNNAKEP.js +161 -0
- package/vendor/hyperframes/dist/chunk-RMHUQGRK.js +657 -0
- package/vendor/hyperframes/dist/chunk-RQVDTPGD.js +6 -0
- package/vendor/hyperframes/dist/chunk-RVCWIIZ7.js +68 -0
- package/vendor/hyperframes/dist/chunk-S3D6GE5W.js +72 -0
- package/vendor/hyperframes/dist/chunk-S3S4TGEH.js +424 -0
- package/vendor/hyperframes/dist/chunk-S7NPLFWV.js +11395 -0
- package/vendor/hyperframes/dist/chunk-SHB5VDMH.js +51 -0
- package/vendor/hyperframes/dist/chunk-TCLGPL65.js +860 -0
- package/vendor/hyperframes/dist/chunk-THXFSPLV.js +40 -0
- package/vendor/hyperframes/dist/chunk-TJSTGSAW.js +354 -0
- package/vendor/hyperframes/dist/chunk-TQFG7HTI.js +1024 -0
- package/vendor/hyperframes/dist/chunk-TVCRUG2S.js +265 -0
- package/vendor/hyperframes/dist/chunk-TWWSYAKJ.js +24 -0
- package/vendor/hyperframes/dist/chunk-U7CZBDMV.js +27 -0
- package/vendor/hyperframes/dist/chunk-UEZXMWG3.js +139 -0
- package/vendor/hyperframes/dist/chunk-UYEZTK4U.js +61 -0
- package/vendor/hyperframes/dist/chunk-VC76R6W2.js +27 -0
- package/vendor/hyperframes/dist/chunk-VFCKXTBB.js +159 -0
- package/vendor/hyperframes/dist/chunk-VWG7OQKU.js +22 -0
- package/vendor/hyperframes/dist/chunk-VXVRPIJA.js +105 -0
- package/vendor/hyperframes/dist/chunk-WBLXWOYK.js +15 -0
- package/vendor/hyperframes/dist/chunk-WERLJGIC.js +20 -0
- package/vendor/hyperframes/dist/chunk-WMQNIQDJ.js +2057 -0
- package/vendor/hyperframes/dist/chunk-WPHMNO44.js +4528 -0
- package/vendor/hyperframes/dist/chunk-X5HWXQPU.js +113 -0
- package/vendor/hyperframes/dist/chunk-X7MTZ4T2.js +6 -0
- package/vendor/hyperframes/dist/chunk-XH4DSOS5.js +59 -0
- package/vendor/hyperframes/dist/chunk-XS4EJSKU.js +23 -0
- package/vendor/hyperframes/dist/chunk-XT5P4QMO.js +181 -0
- package/vendor/hyperframes/dist/chunk-XT7X6QCP.js +6 -0
- package/vendor/hyperframes/dist/chunk-XUHOIDKG.js +6 -0
- package/vendor/hyperframes/dist/chunk-XUXGIA7H.js +485 -0
- package/vendor/hyperframes/dist/chunk-XZABUQTX.js +113 -0
- package/vendor/hyperframes/dist/chunk-Y6W4DVPS.js +356 -0
- package/vendor/hyperframes/dist/chunk-YEIFI443.js +44 -0
- package/vendor/hyperframes/dist/chunk-YQZNILVH.js +375 -0
- package/vendor/hyperframes/dist/chunk-Z27A7NUB.js +65 -0
- package/vendor/hyperframes/dist/chunk-Z6B37SNM.js +3081 -0
- package/vendor/hyperframes/dist/chunk-ZJUKFZ2P.js +10954 -0
- package/vendor/hyperframes/dist/chunk-ZKDMAOFU.js +32 -0
- package/vendor/hyperframes/dist/chunk-ZMXUQLI2.js +17219 -0
- package/vendor/hyperframes/dist/chunk-ZTZ7NCJT.js +58 -0
- package/vendor/hyperframes/dist/chunk-ZTZA4UWZ.js +108 -0
- package/vendor/hyperframes/dist/clean-W57E5YQ3.js +293 -0
- package/vendor/hyperframes/dist/cli.js +495 -0
- package/vendor/hyperframes/dist/cloud-FFTJGZ24.js +70 -0
- package/vendor/hyperframes/dist/cloudrun-AJUTHUEA.js +763 -0
- package/vendor/hyperframes/dist/colors-HKWSZCGK.js +15 -0
- package/vendor/hyperframes/dist/commands/contrast-audit.browser.js +459 -0
- package/vendor/hyperframes/dist/commands/layout-audit.browser.js +2102 -0
- package/vendor/hyperframes/dist/commands/motion-sample.browser.js +74 -0
- package/vendor/hyperframes/dist/commands/motion-signature.browser.js +374 -0
- package/vendor/hyperframes/dist/compare-AYCTT55F.js +421 -0
- package/vendor/hyperframes/dist/compiler-QO36EXLS.js +121 -0
- package/vendor/hyperframes/dist/component-VFFR2O7T.js +176 -0
- package/vendor/hyperframes/dist/compositions-QTVN3U2A.js +228 -0
- package/vendor/hyperframes/dist/contactSheet-27SRU7A4.js +22 -0
- package/vendor/hyperframes/dist/delete-ZAKYCB7I.js +114 -0
- package/vendor/hyperframes/dist/deploy-MX76RZ36.js +101 -0
- package/vendor/hyperframes/dist/destroy-H2TZBYHH.js +42 -0
- package/vendor/hyperframes/dist/deterministicFonts-HAEMV4TM.js +50 -0
- package/vendor/hyperframes/dist/dist-EWXJGN63.js +129 -0
- package/vendor/hyperframes/dist/dist-FNNGCKFS.js +29 -0
- package/vendor/hyperframes/dist/dist-S3PJNPXQ.js +392 -0
- package/vendor/hyperframes/dist/docker/Dockerfile.render +65 -0
- package/vendor/hyperframes/dist/docs/compositions.md +67 -0
- package/vendor/hyperframes/dist/docs/data-attributes.md +27 -0
- package/vendor/hyperframes/dist/docs/examples.md +19 -0
- package/vendor/hyperframes/dist/docs/gsap.md +26 -0
- package/vendor/hyperframes/dist/docs/rendering.md +35 -0
- package/vendor/hyperframes/dist/docs/troubleshooting.md +29 -0
- package/vendor/hyperframes/dist/docs-QAPJEGLS.js +131 -0
- package/vendor/hyperframes/dist/doctor-AI7C3FON.js +67 -0
- package/vendor/hyperframes/dist/dom-IROKGVJI.js +14 -0
- package/vendor/hyperframes/dist/dotEnv-AECLXQSO.js +14 -0
- package/vendor/hyperframes/dist/events-7LALYNKZ.js +92 -0
- package/vendor/hyperframes/dist/events-FQY3HGKZ.js +88 -0
- package/vendor/hyperframes/dist/feedback-WCMDMSTK.js +472 -0
- package/vendor/hyperframes/dist/ffmpeg-QIUFEFTY.js +35 -0
- package/vendor/hyperframes/dist/figma-64WY462P.js +63 -0
- package/vendor/hyperframes/dist/fontData.generated-NXAOI4GH.js +13 -0
- package/vendor/hyperframes/dist/fontLocalizeCli.js +132 -0
- package/vendor/hyperframes/dist/get-FPOMJMZB.js +103 -0
- package/vendor/hyperframes/dist/gpuPolicy-2ZUZE5D6.js +38 -0
- package/vendor/hyperframes/dist/grade-compare-E2CKPST4.js +647 -0
- package/vendor/hyperframes/dist/gsapParser-DIYYX6JT.js +2846 -0
- package/vendor/hyperframes/dist/gsapParserAcorn-E3GEIRZB.js +28 -0
- package/vendor/hyperframes/dist/help-YRQIDDML.js +197 -0
- package/vendor/hyperframes/dist/history-PP5NDRV3.js +571 -0
- package/vendor/hyperframes/dist/hyperframe-runtime.js +1081 -0
- package/vendor/hyperframes/dist/hyperframe.manifest.json +22 -0
- package/vendor/hyperframes/dist/hyperframe.runtime.iife.js +1081 -0
- package/vendor/hyperframes/dist/hyperframes-player.global.js +474 -0
- package/vendor/hyperframes/dist/hyperframes-slideshow.global.js +149 -0
- package/vendor/hyperframes/dist/info-SEX3B7JL.js +153 -0
- package/vendor/hyperframes/dist/init-U3AKHO5B.js +1147 -0
- package/vendor/hyperframes/dist/inspect-Q3K6EDEK.js +97 -0
- package/vendor/hyperframes/dist/installer-K6O5WF44.js +37 -0
- package/vendor/hyperframes/dist/keyframes-DC64JCI3.js +2602 -0
- package/vendor/hyperframes/dist/lambda-D7UMN4DJ.js +451 -0
- package/vendor/hyperframes/dist/layout-XSPPDHOO.js +86 -0
- package/vendor/hyperframes/dist/lib-TPG2ZMAX.js +128 -0
- package/vendor/hyperframes/dist/lint-7DQZE7L3.js +164 -0
- package/vendor/hyperframes/dist/lintProject-OHBBM3DJ.js +27 -0
- package/vendor/hyperframes/dist/list-4K5MVDQX.js +162 -0
- package/vendor/hyperframes/dist/login-NTX4OWXL.js +377 -0
- package/vendor/hyperframes/dist/logout-Q654A3SI.js +100 -0
- package/vendor/hyperframes/dist/manager-67P2XFXQ.js +34 -0
- package/vendor/hyperframes/dist/manager-CT3D67CG.js +38 -0
- package/vendor/hyperframes/dist/manager-GFN75DM4.js +30 -0
- package/vendor/hyperframes/dist/media-treatment-5FYAOPNL.js +972 -0
- package/vendor/hyperframes/dist/media-use-4XXGABIL.js +113 -0
- package/vendor/hyperframes/dist/models-C4E4IWJD.js +137 -0
- package/vendor/hyperframes/dist/motionShot-S4MIGMT5.js +614 -0
- package/vendor/hyperframes/dist/normalize-O76AC4HE.js +333 -0
- package/vendor/hyperframes/dist/normalize-audio-CSFTXLXD.js +276 -0
- package/vendor/hyperframes/dist/open-2ZD6BHZG.js +115 -0
- package/vendor/hyperframes/dist/pipeline-TNGWUZQC.js +54 -0
- package/vendor/hyperframes/dist/play-CTMUXX6E.js +349 -0
- package/vendor/hyperframes/dist/policies-FSDZVS2E.js +292 -0
- package/vendor/hyperframes/dist/preflight-SMNV6RW2.js +45 -0
- package/vendor/hyperframes/dist/present-WQVHV5CR.js +350 -0
- package/vendor/hyperframes/dist/preview-JOJXTH75.js +1820 -0
- package/vendor/hyperframes/dist/producer-ECLEN5RP.js +13 -0
- package/vendor/hyperframes/dist/progress-FBIEEB7Y.js +73 -0
- package/vendor/hyperframes/dist/projectConfig-HYJMJ5BY.js +56 -0
- package/vendor/hyperframes/dist/publication-HQ5Y3KBM.js +29 -0
- package/vendor/hyperframes/dist/publish-VHDYQASC.js +430 -0
- package/vendor/hyperframes/dist/refresh-K24ETHMA.js +53 -0
- package/vendor/hyperframes/dist/remove-background-W2YX2NVH.js +253 -0
- package/vendor/hyperframes/dist/render-AO5VX3YI.js +177 -0
- package/vendor/hyperframes/dist/render-LNO62LEL.js +2367 -0
- package/vendor/hyperframes/dist/render-TTQI7TGN.js +796 -0
- package/vendor/hyperframes/dist/render-batch-YH7CTWNY.js +284 -0
- package/vendor/hyperframes/dist/renderCancellation-JPIHE47X.js +35 -0
- package/vendor/hyperframes/dist/renderSetupWorker.js +79 -0
- package/vendor/hyperframes/dist/resolver-IZ647GBZ.js +38 -0
- package/vendor/hyperframes/dist/runtimeVersion.js +18 -0
- package/vendor/hyperframes/dist/screenshotCapture-ECBTLCU6.js +179 -0
- package/vendor/hyperframes/dist/shaderTransitionWorker.js +44 -0
- package/vendor/hyperframes/dist/sherpa-KKLNW6U2.js +314 -0
- package/vendor/hyperframes/dist/sherpaWorker.js +77 -0
- package/vendor/hyperframes/dist/sites-TNVKZS73.js +52 -0
- package/vendor/hyperframes/dist/skill-ZHVLH7KX.js +15 -0
- package/vendor/hyperframes/dist/skills/hyperframes/SKILL.md +152 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/brief-contract.md +108 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/brief-format.md +72 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/capability-menu.md +47 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/frame-worker-core.md +80 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/intent-interview.md +73 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/pitch-round.md +40 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/plugin-installation.md +43 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/production-loop.md +26 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/review-loop.md +37 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/route-briefs.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/embedded-captions.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/general-video.md +12 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/motion-graphics.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/music-to-video.md +12 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/pr-to-video.md +28 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/product-launch-video.md +13 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/slideshow.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/script-format.md +52 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/skill-lifecycle.md +35 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/storyboard-format.md +99 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/subagent-dispatch.md +35 -0
- package/vendor/hyperframes/dist/skills/hyperframes/references/workflow-catalog.md +10 -0
- package/vendor/hyperframes/dist/skills/hyperframes/scripts/lib/frame-packets-core.mjs +194 -0
- package/vendor/hyperframes/dist/skills/hyperframes/scripts/plugin-cli.mjs +88 -0
- package/vendor/hyperframes/dist/skills/hyperframes/scripts/plugin-cli.test.mjs +117 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/SKILL.md +189 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/beats.md +19 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/cloud.md +163 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/cloudrun.md +62 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/compare-and-batch.md +105 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/doctor-browser.md +57 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/init-and-scaffold.md +74 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/lambda.md +185 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +132 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/preview-render.md +193 -0
- package/vendor/hyperframes/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +134 -0
- package/vendor/hyperframes/dist/skills/media-use/SKILL.md +100 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/CREDITS.md +35 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/chime.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/click-soft.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/click.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/error.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-1.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-2.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/glitch-3.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/impact-bass-1.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/impact-bass-2.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/key-press.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/manifest.json +97 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/notification.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/ping.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/pop.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/riser.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/sparkle.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/typing.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh-cinematic.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh-short.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/assets/sfx/whoosh.mp3 +0 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/bgm.md +76 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/authoring.md +163 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/motion.md +87 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/captions/transcript-handling.md +97 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/remove-background.md +143 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/requirements.md +29 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/sfx.md +42 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/transcribe.md +52 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/tts-to-captions.md +35 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/references/tts.md +260 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/audio.mjs +311 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/audio.test.mjs +159 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/gemini-pipeline.test.mjs +131 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-tts.mjs +122 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-tts.test.mjs +38 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-voice.mjs +98 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/heygen-voice.test.mjs +233 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/audio-meta.mjs +39 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/audio-meta.test.mjs +136 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm-volume.mjs +4 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm.mjs +257 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/bgm.test.mjs +74 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/concurrency.mjs +14 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/concurrency.test.mjs +41 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.mjs +43 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.py +52 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth.test.mjs +86 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-auth_test.py +90 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-tts.mjs +122 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/gemini-tts.test.mjs +243 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/heygen.mjs +197 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/heygen.test.mjs +185 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/media-record.mjs +114 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/media-record.test.mjs +205 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/python.mjs +77 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/python.test.mjs +136 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/sfx.mjs +165 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/sfx.test.mjs +121 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.mjs +389 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.spawn.test.mjs +158 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lib/tts.test.mjs +230 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/lyria-recipe.py +136 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/wait-bgm.mjs +175 -0
- package/vendor/hyperframes/dist/skills/media-use/audio/scripts/wait-bgm.test.mjs +108 -0
- package/vendor/hyperframes/dist/skills/media-use/luts/README.md +28 -0
- package/vendor/hyperframes/dist/skills/media-use/luts/index.json +57 -0
- package/vendor/hyperframes/dist/skills/media-use/references/audio.md +20 -0
- package/vendor/hyperframes/dist/skills/media-use/references/grading.md +160 -0
- package/vendor/hyperframes/dist/skills/media-use/references/media-treatment-recipes.md +929 -0
- package/vendor/hyperframes/dist/skills/media-use/references/media-treatments.md +202 -0
- package/vendor/hyperframes/dist/skills/media-use/references/memory.md +37 -0
- package/vendor/hyperframes/dist/skills/media-use/references/meta.md +61 -0
- package/vendor/hyperframes/dist/skills/media-use/references/operations.md +327 -0
- package/vendor/hyperframes/dist/skills/media-use/references/resolve.md +150 -0
- package/vendor/hyperframes/dist/skills/media-use/references/setup-providers.md +80 -0
- package/vendor/hyperframes/dist/skills/media-use/references/telemetry-dashboard.md +49 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/audio-duck.mjs +113 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/compatibility.test.mjs +96 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/dither.mjs +328 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/dither.test.mjs +176 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/eval.mjs +369 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/adopt.mjs +128 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/adopt.test.mjs +95 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bgm-provider.mjs +20 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/brand-provider.mjs +59 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bundled-sfx-provider.mjs +119 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/bundled-sfx-provider.test.mjs +139 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cache.mjs +148 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/candidates.mjs +91 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/candidates.test.mjs +155 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/codex-provider.mjs +161 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/codex-provider.test.mjs +34 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.d.mts +3 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.mjs +45 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/config-lock.test.mjs +79 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/coverage.test.mjs +136 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-build.mjs +181 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-build.test.mjs +80 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-validate.mjs +198 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cube-validate.test.mjs +125 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cutlist.mjs +184 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/cutlist.test.mjs +162 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/duck.mjs +95 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/duck.test.mjs +153 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/error-diffusion.mjs +230 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/error-diffusion.test.mjs +102 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ff-binaries.mjs +37 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/freeze.mjs +72 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/freeze.test.mjs +138 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/grade-analyzer.mjs +265 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/grade-analyzer.test.mjs +285 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-cli.mjs +191 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-cli.test.mjs +301 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-search.mjs +45 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-search.test.mjs +49 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-video-provider.mjs +138 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/heygen-video-provider.test.mjs +435 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/image-provider.mjs +44 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/index-gen.mjs +63 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-media-search.mjs +32 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-models.mjs +318 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-models.test.mjs +220 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-run.mjs +78 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/local-run.test.mjs +121 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/logo-provider.mjs +244 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/logo-provider.test.mjs +298 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ltx-video-provider.mjs +94 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/ltx-video-provider.test.mjs +316 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/lut-preset-provider.mjs +271 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/lut-preset-provider.test.mjs +199 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.d.mts +19 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.mjs +279 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/manifest.test.mjs +397 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/match.mjs +47 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-fetch.mjs +85 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-fetch.test.mjs +197 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-home.mjs +20 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-home.test.mjs +61 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-search.d.mts +9 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/media-search.mjs +107 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/mflux-provider.mjs +128 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/mflux-provider.test.mjs +174 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/misses.mjs +49 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/misses.test.mjs +89 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/npx-sync.mjs +31 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/npx-sync.test.mjs +50 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/parakeet-words.mjs +27 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/parakeet-words.test.mjs +44 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/prefs-store.mjs +180 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/prefs-store.test.mjs +189 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/probe.mjs +41 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/probe.test.mjs +148 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/providers.mjs +5 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/recipe-store.mjs +367 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/recipe-store.test.mjs +367 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/registry.mjs +212 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/registry.test.mjs +262 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/search.mjs +24 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/search.test.mjs +32 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/sfx-provider.mjs +23 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/specs.mjs +132 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/specs.test.mjs +157 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/stats.mjs +117 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/stats.test.mjs +165 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/svg-sanitize.mjs +21 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/telemetry.mjs +210 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/telemetry.test.mjs +437 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/test-home.test.mjs +10 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/transcriptCutFade.mjs +21 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/transcriptCutFade.test.mjs +33 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/tts-local-provider.mjs +94 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/tts-local-provider.test.mjs +72 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/usage.mjs +57 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/usage.test.mjs +54 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/voice-provider.mjs +57 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/voice-provider.test.mjs +46 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/lib/words.mjs +18 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/prefs.mjs +70 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/recipe.mjs +103 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/resolve-plugin.test.mjs +62 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/resolve.mjs +1369 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcribe.mjs +194 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcribe.test.mjs +112 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcript-cut.mjs +270 -0
- package/vendor/hyperframes/dist/skills/media-use/scripts/transcript-cut.test.mjs +117 -0
- package/vendor/hyperframes/dist/skills-MJ2J4GEM.js +808 -0
- package/vendor/hyperframes/dist/skillsUpdateCheck-TKTYQN5R.js +26 -0
- package/vendor/hyperframes/dist/slideshow-EJ4IMY6P.js +24 -0
- package/vendor/hyperframes/dist/snapshot-KIVDUUMN.js +875 -0
- package/vendor/hyperframes/dist/src-6YQBJGWR.js +202 -0
- package/vendor/hyperframes/dist/src-PVYUYV3M.js +471 -0
- package/vendor/hyperframes/dist/state-KAXGHF77.js +26 -0
- package/vendor/hyperframes/dist/staticProjectServer-7EU666GS.js +49 -0
- package/vendor/hyperframes/dist/status-YM52BQ6S.js +311 -0
- package/vendor/hyperframes/dist/studio/assets/hyperframes-player-Cp8e_Zst.js +473 -0
- package/vendor/hyperframes/dist/studio/assets/index-BX3KHhGX.js +71 -0
- package/vendor/hyperframes/dist/studio/assets/index-CASEBNy2.js +1 -0
- package/vendor/hyperframes/dist/studio/assets/index-D11atkBt.css +1 -0
- package/vendor/hyperframes/dist/studio/assets/index-DMTt9nTf.js +531 -0
- package/vendor/hyperframes/dist/studio/assets/index-oE1pOdAy.js +399 -0
- package/vendor/hyperframes/dist/studio/chunk-5VSXRGIX.js +948 -0
- package/vendor/hyperframes/dist/studio/chunk-5VSXRGIX.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-7UQWVN52.js +938 -0
- package/vendor/hyperframes/dist/studio/chunk-7UQWVN52.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-EEXSYY5F.js +190 -0
- package/vendor/hyperframes/dist/studio/chunk-EEXSYY5F.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-FOEID72M.js +1441 -0
- package/vendor/hyperframes/dist/studio/chunk-FOEID72M.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-PZ5AY32C.js +10 -0
- package/vendor/hyperframes/dist/studio/chunk-PZ5AY32C.js.map +1 -0
- package/vendor/hyperframes/dist/studio/chunk-TDWGXBUT.js +1103 -0
- package/vendor/hyperframes/dist/studio/chunk-TDWGXBUT.js.map +1 -0
- package/vendor/hyperframes/dist/studio/domEditingLayers-IEVLO54Z.js +47 -0
- package/vendor/hyperframes/dist/studio/domEditingLayers-IEVLO54Z.js.map +1 -0
- package/vendor/hyperframes/dist/studio/favicon.svg +14 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/audio.svg +7 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/captions.svg +5 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/composition.svg +12 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/image.svg +18 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/music.svg +10 -0
- package/vendor/hyperframes/dist/studio/icons/timeline/text.svg +3 -0
- package/vendor/hyperframes/dist/studio/index.css +165 -0
- package/vendor/hyperframes/dist/studio/index.css.map +1 -0
- package/vendor/hyperframes/dist/studio/index.d.ts +4296 -0
- package/vendor/hyperframes/dist/studio/index.html +23 -0
- package/vendor/hyperframes/dist/studio/index.js +99693 -0
- package/vendor/hyperframes/dist/studio/index.js.map +1 -0
- package/vendor/hyperframes/dist/studio/player.d.ts +30 -0
- package/vendor/hyperframes/dist/studio/player.js +10 -0
- package/vendor/hyperframes/dist/studio/player.js.map +1 -0
- package/vendor/hyperframes/dist/studio/styles/tailwind-preset.d.ts +39 -0
- package/vendor/hyperframes/dist/studio/styles/tailwind-preset.js +50 -0
- package/vendor/hyperframes/dist/studio/styles/tailwind-preset.js.map +1 -0
- package/vendor/hyperframes/dist/studio/styles.css +1 -0
- package/vendor/hyperframes/dist/studio/ui.d.ts +296 -0
- package/vendor/hyperframes/dist/studio/ui.js +66 -0
- package/vendor/hyperframes/dist/studio/ui.js.map +1 -0
- package/vendor/hyperframes/dist/studio-api-PNQZRPX5.js +136 -0
- package/vendor/hyperframes/dist/studioSelectionClient-IUUPKUHZ.js +25 -0
- package/vendor/hyperframes/dist/studioServer-UWRBPIOJ.js +1457 -0
- package/vendor/hyperframes/dist/synthesize-K62TIZWI.js +182 -0
- package/vendor/hyperframes/dist/system-EZYZNUFD.js +44 -0
- package/vendor/hyperframes/dist/telemetry-2YC4SGQU.js +144 -0
- package/vendor/hyperframes/dist/telemetry-QMYM4WME.js +95 -0
- package/vendor/hyperframes/dist/templates/_shared/AGENTS.md +107 -0
- package/vendor/hyperframes/dist/templates/_shared/CLAUDE.md +107 -0
- package/vendor/hyperframes/dist/templates/blank/index.html +55 -0
- package/vendor/hyperframes/dist/templates/from-file/index.html +75 -0
- package/vendor/hyperframes/dist/templates/warm-grain/compositions/captions.html +154 -0
- package/vendor/hyperframes/dist/templates/warm-grain/compositions/graphics.html +162 -0
- package/vendor/hyperframes/dist/templates/warm-grain/compositions/intro.html +87 -0
- package/vendor/hyperframes/dist/templates/warm-grain/index.html +264 -0
- package/vendor/hyperframes/dist/templates/warm-grain/registry-item.json +34 -0
- package/vendor/hyperframes/dist/timeline-77Z3BBQM.js +1377 -0
- package/vendor/hyperframes/dist/tokens-OBGTYE4Z.js +92 -0
- package/vendor/hyperframes/dist/transcribe-7NVFHCGA.js +387 -0
- package/vendor/hyperframes/dist/transcribe-BNSJRR4M.js +62 -0
- package/vendor/hyperframes/dist/tts-P3LIPIL5.js +234 -0
- package/vendor/hyperframes/dist/updateCheck-UDWIJ4ZQ.js +39 -0
- package/vendor/hyperframes/dist/upgrade-CT3CPO3E.js +231 -0
- package/vendor/hyperframes/dist/urlDownloader-H6WRI2UE.js +39 -0
- package/vendor/hyperframes/dist/usage-EC3KFUIJ.js +2139 -0
- package/vendor/hyperframes/dist/validate-65QDZJWZ.js +70 -0
- package/vendor/hyperframes/dist/video-FGSGKRSV.js +261 -0
- package/vendor/hyperframes/dist/workspaceBuildCheck-TOLGAI4T.js +133 -0
- package/vendor/hyperframes/package.json +80 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
# Media treatments
|
|
2
|
+
|
|
3
|
+
A media treatment is a source-aware plan that composes existing HyperFrames
|
|
4
|
+
color, effect, timeline, and Registry primitives. It is not a second runtime
|
|
5
|
+
schema. Use this file to choose a primary direction. A matching recipe is an
|
|
6
|
+
optional tested seed; bespoke requests may assemble a validated treatment from
|
|
7
|
+
the canonical capability catalog.
|
|
8
|
+
|
|
9
|
+
## Permission and scope
|
|
10
|
+
|
|
11
|
+
- An explicit request such as "polish this", "make it look better", or "make it
|
|
12
|
+
fit the topic" delegates a conservative treatment. Apply it, verify it, and
|
|
13
|
+
report what changed.
|
|
14
|
+
- During an unsolicited opportunity scan, show or suggest the treatment first.
|
|
15
|
+
- Target meaningful photographic media. Skip text, SVG, logos, icons, UI
|
|
16
|
+
chrome, and intentionally stylized footage unless the user asks.
|
|
17
|
+
- Realtime grading and effects apply to the entire selected real `<img>` or
|
|
18
|
+
`<video>`. They do not isolate or track a face, plate, address, or other
|
|
19
|
+
region. For region-only work, first create a separate cropped/masked media
|
|
20
|
+
layer or use an external segmentation/tracking tool; never imply that a
|
|
21
|
+
whole-media Blur or Pixelate performed region isolation.
|
|
22
|
+
- The realtime treatment path is Rec.709/SDR. Do not silently process HDR, HLG,
|
|
23
|
+
PQ, or camera LOG sources through it.
|
|
24
|
+
|
|
25
|
+
## Classify the request
|
|
26
|
+
|
|
27
|
+
Choose the smallest lane that satisfies the request before choosing a recipe
|
|
28
|
+
or assembling a custom treatment:
|
|
29
|
+
|
|
30
|
+
| User intent | Lane |
|
|
31
|
+
| --------------------------------------------------- | ------------------------------------------ |
|
|
32
|
+
| too dark, flat, too warm, too many shadows | correction |
|
|
33
|
+
| shape shadows/highlights or selected colors | wheels, curves, or HSL secondary |
|
|
34
|
+
| polished, premium, warm, cinematic, fit the topic | preset or custom treatment |
|
|
35
|
+
| retro, print, ASCII, glitch, camcorder | shader effect or effect-bearing preset |
|
|
36
|
+
| obscure the whole selected media | privacy Blur or Pixelate |
|
|
37
|
+
| hide one face, plate, address, or screen region | separate crop/mask/asset or external tool |
|
|
38
|
+
| draw attention to media without changing its pixels | framing, motion, or optional overlay |
|
|
39
|
+
| reveal, focus, depixelate, fade the treatment | finite seek-safe treatment keyframes |
|
|
40
|
+
| REC HUD, light leak, flash, freeze-frame cutout | Registry overlay plus any justified pixels |
|
|
41
|
+
|
|
42
|
+
The lane identifies the primary reason for the change; it is not a one-feature
|
|
43
|
+
limit. A final treatment may combine correction, a preset, finishing, multiple
|
|
44
|
+
compatible shader effects, finite keyframed values, and optional overlays when
|
|
45
|
+
the inspected media and user intent justify the complete combination. Keep one
|
|
46
|
+
primary intent as the creative anchor so the result remains coherent and
|
|
47
|
+
deterministic.
|
|
48
|
+
|
|
49
|
+
Do not add a stylized Effect when correction solves the complaint. Do not
|
|
50
|
+
change color when the request is only temporal, and do not install an overlay
|
|
51
|
+
when the selected media alone communicates the result.
|
|
52
|
+
|
|
53
|
+
Match strength to intent. When the user explicitly names a bold look such as
|
|
54
|
+
VHS, glitch, ASCII, halftone, camcorder, print, or engraving, apply its
|
|
55
|
+
signature effects strongly enough to read unmistakably. The guard against
|
|
56
|
+
unrequested additions does not mean under-delivering an effect the user asked
|
|
57
|
+
for. Correction and polish stay restrained; named stylization must be obvious
|
|
58
|
+
in the after-frame.
|
|
59
|
+
|
|
60
|
+
### Translate vague feedback conservatively
|
|
61
|
+
|
|
62
|
+
| User feedback | First action | Add only when the frames justify it | Never infer |
|
|
63
|
+
| ------------------------------------- | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------------- |
|
|
64
|
+
| too many shadows and a bit boring | lift shadows/protect highlights, then compare one restrained source-appropriate preset | mild contrast or vibrance | retro texture, HUD, or palette effect |
|
|
65
|
+
| make the product footage feel premium | protect product color and labels, compare Product Polish | restrained vignette on lifestyle footage | a cinematic LUT or crushed blacks |
|
|
66
|
+
| make this reveal cooler | preserve color and animate one supported effect or treatment value | a short owned overlay block | unrelated whole-clip styling |
|
|
67
|
+
| make it feel like an old home video | compare 8mm and VHS language against the source | finite weave/flicker or justified HUD | that every old-video request means VHS |
|
|
68
|
+
| hide this face | explain that realtime effects are whole-media; isolate the region first or use an external tool | whole-media Blur/Pixelate only when the user accepts that scope | face tracking or masking that was not performed |
|
|
69
|
+
| keep the brand colors exact | leave UI/logo pixels unchanged; use framing and motion | demonstrated exposure-only correction | stylized preset, palette, or LUT |
|
|
70
|
+
|
|
71
|
+
When more than one lane could fit, generate at most two candidates and choose
|
|
72
|
+
from inspected before/after evidence. Ordinary correction or polish starts with
|
|
73
|
+
one candidate; a second candidate is an escalation, not the default. Do not
|
|
74
|
+
stack effects merely to make the answer look more sophisticated.
|
|
75
|
+
|
|
76
|
+
## Seed or assemble
|
|
77
|
+
|
|
78
|
+
Use the table when a tested recipe directly fits. Read only that recipe
|
|
79
|
+
section. Recipes are optional macros, not a closed list of allowed results.
|
|
80
|
+
|
|
81
|
+
| Intent or source | Recipe heading to read |
|
|
82
|
+
| -------------------------------------------------------- | ------------------------------------------------- |
|
|
83
|
+
| Talking head, interview, presenter, people-focused photo | `Natural Portrait` |
|
|
84
|
+
| Product footage, lifestyle footage, clean social polish | `Product Polish` |
|
|
85
|
+
| Screen capture, dashboard, website, app UI | `UI Fidelity` |
|
|
86
|
+
| Warm memory, restrained nostalgia | `Film Memory` |
|
|
87
|
+
| Creator/UGC handheld camera character | `Creator Camcorder` |
|
|
88
|
+
| Analog tape playback | `VHS Playback` |
|
|
89
|
+
| Small-gauge home-movie character | `8mm Home Movie` |
|
|
90
|
+
| Editorial dots or ink print | `Editorial Halftone` or `Two-Ink Editorial Print` |
|
|
91
|
+
| Monochrome dot/line screen print | `Monochrome Screen Print` |
|
|
92
|
+
| Engraved or hand-hatched illustration | `Engraved Illustration` or `Crosshatched Sketch` |
|
|
93
|
+
| Curved scanlined display | `CRT Display` |
|
|
94
|
+
| Glyph-based art | `Procedural ASCII` |
|
|
95
|
+
| Realtime palette quantization | `Ordered Palette Dither` |
|
|
96
|
+
| Exact historical error diffusion | `Cached Error Diffusion` |
|
|
97
|
+
| Finite warm flare layer | `Organic Light Leak` |
|
|
98
|
+
| Held-frame graphic interruption | `Freeze-Frame Cutout` |
|
|
99
|
+
| Short exposure-flash transition | `Social Flash / Editorial Reveal` |
|
|
100
|
+
|
|
101
|
+
Use `rg -n '^## <heading>$' <SKILL_DIR>/references/media-treatment-recipes.md`,
|
|
102
|
+
then read only from that heading to the next `##`. Do not load the entire
|
|
103
|
+
cookbook for one request.
|
|
104
|
+
|
|
105
|
+
When source intent is unclear, inspect the concise capability overview:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
hyperframes media-treatment --capabilities --json
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
It lists the complete surface by family with one-line descriptions. Then load
|
|
112
|
+
only the family, effect, preset, or palette relevant to the inspected source:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
hyperframes media-treatment --capability <id> --json
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The focused result provides legal controls, recommended apply values, render
|
|
119
|
+
cost, palette support, and the exact animation contract when supported. Use
|
|
120
|
+
`--all` only for tooling/tests or a genuinely exhaustive audit. Compose one
|
|
121
|
+
nested payload from these existing parts. Recipes and catalog-built payloads
|
|
122
|
+
use the same renderer and persistence contract.
|
|
123
|
+
|
|
124
|
+
Treat `renderLane: "multipass"` as a cost signal. Blur, Bloom, and Kuwahara are
|
|
125
|
+
bounded but more expensive than single-pass effects; avoid stacking several of
|
|
126
|
+
them across many simultaneous media elements unless the composition needs it,
|
|
127
|
+
then verify playback and a draft render.
|
|
128
|
+
Cost follows treated pixel area as well as element count. More than two
|
|
129
|
+
simultaneously visible full-frame multipass media layers requires a continuous
|
|
130
|
+
playback check on the target machine; simplify or pre-render the stack if it
|
|
131
|
+
drops frames. Do not impose or claim a universal hard cap from one machine.
|
|
132
|
+
|
|
133
|
+
## Common workflow
|
|
134
|
+
|
|
135
|
+
1. Confirm the target is a real `<img>` or `<video>` and inspect source color
|
|
136
|
+
metadata.
|
|
137
|
+
2. For an image, read it once. For video, capture early/middle/late output as
|
|
138
|
+
one labeled sheet and read that one image:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
hyperframes snapshot <project> --frames 3 --no-end --describe false \
|
|
142
|
+
--output snapshots/treatment-before
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Read `snapshots/treatment-before/contact-sheet.jpg`; do not spend separate
|
|
146
|
+
model turns reading each frame unless the sheet exposes a specific problem.
|
|
147
|
+
Do not infer semantics from signal statistics alone.
|
|
148
|
+
|
|
149
|
+
3. Choose one primary lane. Use one matching recipe as a tested seed, or read
|
|
150
|
+
the overview and one focused capability detail when the request is bespoke.
|
|
151
|
+
A seed may be changed or combined with compatible catalog controls when the
|
|
152
|
+
contact sheet justifies it. Do not invent keys, exceed reported ranges, or
|
|
153
|
+
stack effects without a visual reason. Do not run the generic grade/LUT
|
|
154
|
+
resolver first; it adds irrelevant candidates and may download an unused
|
|
155
|
+
LUT. Use `media-treatment --selector "#hero" --analyze --json` only when
|
|
156
|
+
correction needs measured signal evidence.
|
|
157
|
+
4. Persist pixel settings with `hyperframes media-treatment`; it validates and
|
|
158
|
+
merges a patch into the existing nested `data-color-grading` contract. Use registered
|
|
159
|
+
GSAP only for supported animated values and Registry overlay blocks only
|
|
160
|
+
for authored dressing.
|
|
161
|
+
```bash
|
|
162
|
+
hyperframes media-treatment --selector "<unique selector>" \
|
|
163
|
+
--grading '<nested JSON patch>' --apply --json
|
|
164
|
+
```
|
|
165
|
+
For a temporal reveal, use the focused capability result's `animation`
|
|
166
|
+
contract. If it is `null`, the capability is static. Author the starting CSS
|
|
167
|
+
property inline on the real media element and return temporary treatment
|
|
168
|
+
values to neutral so the finished shot preserves its existing pixels.
|
|
169
|
+
Prefer that bounded media animation first; if an overlay is justified,
|
|
170
|
+
install the owned Registry block instead of recreating it with bespoke
|
|
171
|
+
overlay markup.
|
|
172
|
+
For correction and ordinary polish, keep those values as editable
|
|
173
|
+
preset/adjustment JSON; do not generate a LUT for controls the realtime shader
|
|
174
|
+
already owns.
|
|
175
|
+
Use the canonical `details`/`effects` fields for vignette, grain, blur,
|
|
176
|
+
pixelate, and related primitives. Do not duplicate them with CSS filters,
|
|
177
|
+
SVG turbulence, opacity, or decorative DOM overlays.
|
|
178
|
+
5. When the treatment calls for an overlay, install that named block with
|
|
179
|
+
`hyperframes add <name> --dir <project> --no-clipboard --json`, inspect its
|
|
180
|
+
returned `data-composition-src` host, and place it once using the block's
|
|
181
|
+
timing contract. Check for the installed file and host element
|
|
182
|
+
ID before insertion; never duplicate an existing overlay block. This is one
|
|
183
|
+
treatment workflow: do not make the user discover Catalog or separately ask
|
|
184
|
+
for the recipe's justified overlay.
|
|
185
|
+
6. For ordinary correction/polish, capture one after-sheet with the same three
|
|
186
|
+
timestamps under `snapshots/treatment-after`, compare it to the before-sheet,
|
|
187
|
+
and stop when the result is clearly better. Run the normal project check;
|
|
188
|
+
do not encode a draft solely to prove a static correction.
|
|
189
|
+
7. Escalate only when evidence requires it. Read individual frames to diagnose a
|
|
190
|
+
specific visual problem. Preview and render moving evidence when judging
|
|
191
|
+
treatment keyframes, glitch/tape motion, overlays, playback smoothness, LUT
|
|
192
|
+
timing, or any other temporal behavior. HDR/LOG, privacy, and brand-sensitive
|
|
193
|
+
work also require the existing explicit caveats and stronger verification.
|
|
194
|
+
If the treatment is not clearly better, keep the source unchanged.
|
|
195
|
+
8. Report the selected media, primary intent, recipe seed if used, final
|
|
196
|
+
composed controls, optional overlays, and the frames/render that were
|
|
197
|
+
actually checked. Do not report visual quality from command success alone.
|
|
198
|
+
|
|
199
|
+
`media-treatment --analyze` provides deterministic clipping and signal
|
|
200
|
+
evidence for local composition media, not subject recognition or automatic
|
|
201
|
+
taste. It reports HDR/metadata caveats and a bounded primary-correction patch;
|
|
202
|
+
it does not invent wheels, curves, or HSL selections from statistics.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# User memory — preferences and recipes
|
|
2
|
+
|
|
3
|
+
## Preferences — remembered defaults
|
|
4
|
+
|
|
5
|
+
The lightweight tier of user memory: confirmed brief answers (destination, aspect, language, flow, storyboard, voice, style preset) persisted on the same two-tier split as assets — project `.media/preferences.json` (committed, the team inherits it) and personal `~/.media/preferences.json`. A value earns the personal tier by being confirmed in **two different projects**, so a one-off choice never pollutes the global defaults.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node <SKILL_DIR>/scripts/prefs.mjs get --hyperframes . --json # merged view (project overrides user)
|
|
9
|
+
node <SKILL_DIR>/scripts/prefs.mjs record --hyperframes . --key destination --value x-feed
|
|
10
|
+
node <SKILL_DIR>/scripts/prefs.mjs record --hyperframes . --key style_preset --value pin-and-paper --workflow faceless-explainer
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Only what the user actually confirmed gets recorded — never an inferred or defaulted value. How workflows consume these (a remembered value becomes the recommended default with a receipt, and never skips a question) is the brief contract's rule: `hyperframes/references/brief-contract.md` § 2, Remembered defaults.
|
|
14
|
+
|
|
15
|
+
## Recipes — frozen video bundles
|
|
16
|
+
|
|
17
|
+
The heavyweight tier of user memory: one approved run frozen as a named, versioned bundle — `frame.md`, the storyboard skeleton (structure kept, content blanked to per-frame fill-ins), the brief skeleton (from `BRIEF.md` when the project has one — reusable frontmatter kept, run-shape and prose blanked), and the confirmed brief values. Same two tiers: project `.media/recipes/<name>/` (committed) and `~/.media/recipes/<name>/` (a freeze is already a confirmed bundle, so it promotes immediately — no two-project rule). Re-freezing a name bumps `version` and archives the old folder as `<name>@v<N>`.
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
node <SKILL_DIR>/scripts/recipe.mjs freeze --hyperframes . --name weekly-promo # workflow read from BRIEF.md (--workflow only for briefless projects)
|
|
21
|
+
node <SKILL_DIR>/scripts/recipe.mjs list --hyperframes . --workflow product-launch-video
|
|
22
|
+
node <SKILL_DIR>/scripts/recipe.mjs use --hyperframes . --name weekly-promo # also: resolve.mjs --type recipe --entity weekly-promo
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The freeze is offered once after the final approval (`hyperframes/references/review-loop.md` § 4), and the intent layer (`/hyperframes` → `references/intent-interview.md`, step 1) checks for a match before its first question. Adopting a recipe fills the brief, the design spec, and the storyboard skeleton — and unlike preferences it may skip the questions it answers: the bundle was approved as a whole, and adoption itself is the question.
|
|
26
|
+
|
|
27
|
+
## Files
|
|
28
|
+
|
|
29
|
+
- `.media/manifest.jsonl`: machine SSOT, one JSON record per line. Records are keyed by path and only appended, so
|
|
30
|
+
the last record for a path is the file's record; a file moved or replaced by hand keeps (or loses) its record by path.
|
|
31
|
+
- `.media/index.md`: agent-readable table (id, type, dur, dims, path, description)
|
|
32
|
+
- `.media/preferences.json`: the project's remembered defaults (committed)
|
|
33
|
+
- `~/.media/`: global cross-project reuse cache (content-addressed, SHA-256)
|
|
34
|
+
- `~/.media/preferences.json`: personal remembered defaults (promoted after two projects)
|
|
35
|
+
- `.media/recipes/<name>/`: frozen video bundles — recipe.json + frame.md + storyboard skeleton (committed)
|
|
36
|
+
- `~/.media/recipes/<name>/`: personal recipe tier (promoted on freeze)
|
|
37
|
+
- `~/.media/misses.jsonl`: local-only resolve misses, including intent text for `--stats`
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Ownership matrix, usage stats, telemetry, privacy
|
|
2
|
+
|
|
3
|
+
Maintainer-facing reference. Nothing here changes how you resolve or operate on media.
|
|
4
|
+
|
|
5
|
+
## What it owns (the gaps HyperFrames leaves)
|
|
6
|
+
|
|
7
|
+
HyperFrames owns media _playback_; media-use owns everything else. Each row is enforced by `scripts/lib/coverage.test.mjs` so the claim can't rot.
|
|
8
|
+
|
|
9
|
+
| HyperFrames gap | media-use owns it via |
|
|
10
|
+
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| Audio-only, no image/icon | `resolve --type image\|icon` (heygen asset search) |
|
|
12
|
+
| No third-party brand logos | `resolve --type logo` (theSVG → GitHub org avatar → domain favicon) |
|
|
13
|
+
| No voice / audio generation | `resolve --type voice` (HeyGen TTS free-usage path; optional local Kokoro) + the audio engine (`audio/scripts/audio.mjs`) |
|
|
14
|
+
| Scattered/duplicated audio engine | one consolidated engine under `audio/` (hyperframes-media retired) |
|
|
15
|
+
| No agent media-ops (cut/reframe/transform) | `references/operations.md` + `resolve --from` to register outputs |
|
|
16
|
+
| No transcript-driven cutting | `scripts/transcript-cut.mjs` compiles word-timestamp edits into cut lists |
|
|
17
|
+
| No auto-duck / publish loudness | `scripts/audio-duck.mjs` + `references/operations.md` loudnorm/sidechain recipes |
|
|
18
|
+
| No cross-project memory | global content-addressed cache + auto-promote (`~/.media`) |
|
|
19
|
+
| Grade recipes and LUT freezing | `resolve --type grade` emits a paste-ready recipe and `resolve --type lut` freezes validated `.cube` files; direct element analysis/authoring lives in `hyperframes media-treatment` |
|
|
20
|
+
| No image generation | RAM-graded local mflux (FLUX) via `scripts/lib/mflux-provider.mjs`, codex `image_gen` upsell (`scripts/lib/codex-provider.mjs`) |
|
|
21
|
+
| No video generation | `resolve --type video` — HeyGen avatar video first (free-usage path, sign-in nudge on auth failure), local LTX fallback (`videogen` in `scripts/lib/local-models.mjs`); image-to-video, photo-avatar, dub/translate remain manual `heygen` CLI recipes (`references/operations.md`) |
|
|
22
|
+
| Weak local-model defaults | HeyGen free-usage path via the `heygen` CLI; local open-source tools only as opt-in alternatives (`scripts/lib/local-run.mjs`) |
|
|
23
|
+
|
|
24
|
+
## Usage stats
|
|
25
|
+
|
|
26
|
+
Use `resolve --stats` for a local, shareable report over the current project's `.media/` manifest, the global `~/.media/` cache, and local resolve misses. Human output is compact; add `--json` for a single machine-readable object, and `--days N` to window timestamped records.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx hyperframes media-use resolve --stats --project . --days 7
|
|
30
|
+
# media-use stats
|
|
31
|
+
# total resolves: 12
|
|
32
|
+
# misses: 2
|
|
33
|
+
# hit rate: 86%
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Telemetry
|
|
37
|
+
|
|
38
|
+
`resolve` and the edit tools (transcribe / transcript-cut / audio-duck) send an
|
|
39
|
+
anonymous usage event to PostHog (`scripts/lib/telemetry.mjs`), so we can see
|
|
40
|
+
which capabilities are actually used. It records only the media TYPE, the
|
|
41
|
+
resolution SOURCE, and the winning PROVIDER: never the intent text, file names,
|
|
42
|
+
or paths, and `$ip:null` so no IP is stored. Best-effort and non-blocking (a
|
|
43
|
+
resolve never waits on or fails from telemetry).
|
|
44
|
+
|
|
45
|
+
Opt out with `DO_NOT_TRACK=1` or `HYPERFRAMES_NO_TELEMETRY=1` (also off in CI and
|
|
46
|
+
dev). Same public PostHog project key and opt-outs as the `hyperframes` CLI.
|
|
47
|
+
|
|
48
|
+
HeyGen request tagging: every generating `heygen` call (TTS, avatar video, catalog
|
|
49
|
+
search) carries the allowlisted `X-HeyGen-Client-Source: media-use` header, sourced
|
|
50
|
+
from one shared constant (`HEYGEN_CLIENT_SOURCE_ARGV` in `scripts/lib/heygen-cli.mjs`)
|
|
51
|
+
so a future call site can't silently ship untagged. Read-only discovery calls
|
|
52
|
+
(`voice list`, `avatar list`) are intentionally left untagged.
|
|
53
|
+
|
|
54
|
+
## Privacy
|
|
55
|
+
|
|
56
|
+
media-use uses the same shared install id as the `hyperframes` CLI/studio
|
|
57
|
+
(`~/.hyperframes/config.json`). When you are signed in to HeyGen, usage is
|
|
58
|
+
linked to your account email, or username when email is unavailable, matching
|
|
59
|
+
the CLI behavior. The events stay coarse: media type, source, provider, and
|
|
60
|
+
small counts only; intent text and paths stay local. Disable telemetry with
|
|
61
|
+
`HYPERFRAMES_NO_TELEMETRY=1` or `DO_NOT_TRACK=1`.
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# Media operations: agent guidance
|
|
2
|
+
|
|
3
|
+
media-use resolves and remembers assets. For **operating** on them: cutting,
|
|
4
|
+
reframing, stitching, transforming, it does not wrap every action as a bespoke
|
|
5
|
+
command. Instead it points you at the right local tool (decision OP1). Run the
|
|
6
|
+
tool, then register the output with `resolve --from <output> --type <type>` so the
|
|
7
|
+
result lands in the ledger and the global cache like any other asset.
|
|
8
|
+
|
|
9
|
+
All tools below are local and free. ffmpeg is assumed present (it backs the
|
|
10
|
+
engine already).
|
|
11
|
+
|
|
12
|
+
## Cut / trim: keep a slice
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
ffmpeg -i in.mp4 -ss 00:00:12 -to 00:00:20 -c copy out.mp4 # 0:12–0:20, no re-encode
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
In-composition trimming usually needs **no new file**: a clip plays a sub-window
|
|
19
|
+
via `data-media-start` + `data-duration` (see hyperframes-core). Only cut a
|
|
20
|
+
physical file when exporting/assembling outside the composition.
|
|
21
|
+
|
|
22
|
+
## Reframe / crop: change aspect ratio
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 16:9 -> 9:16, crop centered
|
|
26
|
+
ffmpeg -i in.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" out.mp4
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For a non-destructive crop, set a `clip-path` on the element in the composition
|
|
30
|
+
itself (render-time, source file untouched) instead of re-encoding with ffmpeg.
|
|
31
|
+
|
|
32
|
+
## Montage / stitch: join clips
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
printf "file '%s'\n" a.mp4 b.mp4 c.mp4 > list.txt
|
|
36
|
+
ffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Silence-cut / highlight: trim dead air, grab the best moment
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
auto-editor in.mp4 --edit audio:threshold=4% -o tight.mp4 # pip install auto-editor
|
|
43
|
+
scenedetect -i in.mp4 detect-adaptive list-scenes # pip install scenedetect
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Transforms with a quality choice (process)
|
|
47
|
+
|
|
48
|
+
These have a local option AND a higher-quality HeyGen-CLI option. Run the local
|
|
49
|
+
one for free/offline; use the HeyGen CLI when quality matters. Showing the user
|
|
50
|
+
a **side-by-side** (local vs HeyGen) is the honest way to let them choose.
|
|
51
|
+
|
|
52
|
+
| Op | Local (free) | HeyGen CLI (quality) |
|
|
53
|
+
| ------------------ | -------------------------------------------------- | --------------------------- |
|
|
54
|
+
| Background removal | `hyperframes remove-background in.png` (u2net) | `heygen background-removal` |
|
|
55
|
+
| Upscale | `realesrgan-ncnn-vulkan -i in.png -o out.png -s 4` | n/a |
|
|
56
|
+
| Lipsync (dub) | n/a | `heygen lipsync` |
|
|
57
|
+
| Translate | n/a | `heygen video-translate` |
|
|
58
|
+
|
|
59
|
+
After any op: `resolve --from out.ext --type <type>` to register the derived
|
|
60
|
+
asset (it records provenance and auto-promotes to the global cache).
|
|
61
|
+
|
|
62
|
+
> ponytail: media-use doesn't re-wrap ffmpeg/heygen here, that's deliberate
|
|
63
|
+
> (OP1). The value it adds is the ledger + global reuse on the _output_, via
|
|
64
|
+
> `--from`. Add a thin `process` verb only if agents repeatedly fumble these
|
|
65
|
+
> recipes.
|
|
66
|
+
|
|
67
|
+
## Exact error-diffusion dither
|
|
68
|
+
|
|
69
|
+
Use the local processor when the requested look specifically calls for
|
|
70
|
+
Floyd-Steinberg, Atkinson/Macintosh, Jarvis-Judice-Ninke, Stucki, Burkes, or a
|
|
71
|
+
Sierra variant. These are sequential error-diffusion algorithms, not the
|
|
72
|
+
realtime Bayer `effects.dither` shader.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
node <SKILL_DIR>/scripts/dither.mjs \
|
|
76
|
+
--input source.mp4 \
|
|
77
|
+
--out source.atkinson.mp4 \
|
|
78
|
+
--algorithm atkinson \
|
|
79
|
+
--palette '#0f380f,#306230,#8bac0f,#9bbc0f' \
|
|
80
|
+
--point-size 3
|
|
81
|
+
|
|
82
|
+
npx hyperframes media-use resolve \
|
|
83
|
+
--from source.atkinson.mp4 --type video --project .
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Available algorithms: `floyd-steinberg`, `atkinson`,
|
|
87
|
+
`jarvis-judice-ninke`, `stucki`, `burkes`, `sierra`, `sierra-lite`, and
|
|
88
|
+
`two-row-sierra`. The default is balanced Floyd-Steinberg with a black/white
|
|
89
|
+
palette. Palettes contain 2-6 `#rrggbb` colors in authored dark-to-light order;
|
|
90
|
+
reversing the order intentionally inverts the mapping. `--point-size` controls
|
|
91
|
+
1-20px blocks; `--brightness` and `--contrast` accept 0.5-2; `--detail` accepts
|
|
92
|
+
0.1-1.
|
|
93
|
+
|
|
94
|
+
The processor supports ordinary SDR images and MP4 video, preserves video
|
|
95
|
+
audio, and emits BT.709 MP4. It rejects tagged PQ/HLG input rather than silently
|
|
96
|
+
tone-mapping it. To animate the transformation, keep the original and processed
|
|
97
|
+
files as two real media layers and use the seek-safe GSAP timeline to reveal or
|
|
98
|
+
crossfade between them. Use the realtime Bayer shader instead when the dither
|
|
99
|
+
amount itself must animate continuously.
|
|
100
|
+
|
|
101
|
+
## Transcription (default: Parakeet, better than whisper.cpp)
|
|
102
|
+
|
|
103
|
+
`transcribe.mjs` is the default local transcription path. It runs **NVIDIA
|
|
104
|
+
Parakeet-TDT via parakeet-mlx**, which beats whisper.cpp on the Open ASR
|
|
105
|
+
Leaderboard (avg WER ~6.05% vs 7.44%; on NOISY audio 4.73% vs 5.96%, where
|
|
106
|
+
whisper-large-v3 hallucinated to 308% WER on meetings) and is 5-10x faster.
|
|
107
|
+
It emits `{ text, words:[{text,start,end}] }` with word timestamps (merged from
|
|
108
|
+
Parakeet's sub-word tokens), feeding transcript-cut, captions, and the audio
|
|
109
|
+
engine directly.
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# install once: uv venv ~/.venvs/parakeet && VIRTUAL_ENV=~/.venvs/parakeet uv pip install parakeet-mlx
|
|
113
|
+
node <SKILL_DIR>/scripts/transcribe.mjs --input talk.mp4 --out talk.transcribe.json
|
|
114
|
+
|
|
115
|
+
# the hyperframes CLI runs Parakeet on macOS, Linux and Windows once it is installed:
|
|
116
|
+
npx hyperframes models install parakeet # once, ~640 MB, ask the user first
|
|
117
|
+
npx hyperframes transcribe talk.mp4 --engine parakeet # or --engine auto (default)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
VERIFIED on 24GB: accurate, ~3s (cached) for 8s audio. Parakeet covers 25
|
|
121
|
+
European languages, English included. For other languages, or when parakeet-mlx is not
|
|
122
|
+
installed, transcribe.mjs falls back to `hyperframes transcribe`, which uses the
|
|
123
|
+
CLI's Parakeet when `models install parakeet` has run and whisper.cpp (99
|
|
124
|
+
languages) otherwise. `--engine parakeet|whisper` forces one. (Cohere
|
|
125
|
+
Transcribe tops the leaderboard on paper but its mlx-audio quants produced
|
|
126
|
+
garbage and ran 40-70x slower on a Mac in testing, so it is not wired in.)
|
|
127
|
+
|
|
128
|
+
## Text-based editing (transcript cut)
|
|
129
|
+
|
|
130
|
+
`transcript-cut.mjs` is a compiler, not a wrapper: it turns word timestamps and
|
|
131
|
+
agent cut decisions into exact kept segments. It is provided even though the rest
|
|
132
|
+
of this file is guidance-only.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
node <SKILL_DIR>/scripts/transcript-cut.mjs \
|
|
136
|
+
--input talk.mp4 \
|
|
137
|
+
--transcript talk.transcribe.json \
|
|
138
|
+
--remove "12.41-15.02,88.3-91.7" \
|
|
139
|
+
--remove-fillers "um,uh,like" \
|
|
140
|
+
--cut-silence 0.8 \
|
|
141
|
+
--out talk.cut.mp4
|
|
142
|
+
|
|
143
|
+
resolve --from talk.cut.mp4 --type video
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Use `--plan` first when you want to inspect the kept segment JSON before encoding.
|
|
147
|
+
|
|
148
|
+
## Ducking (declare in-composition / bake for export)
|
|
149
|
+
|
|
150
|
+
B1, declare ducking in the composition. `audio-duck.mjs` emits a volume lane
|
|
151
|
+
as a `data-automation` attribute. Add it to the background `<audio>` element;
|
|
152
|
+
the source file stays untouched. Lane times are clip-local, so pass
|
|
153
|
+
`--composition` to let the script subtract the element's `data-start`.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
node <SKILL_DIR>/scripts/audio-duck.mjs \
|
|
157
|
+
--meta audio_meta.json \
|
|
158
|
+
--target "#bgm" \
|
|
159
|
+
--composition index.html
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
```html
|
|
163
|
+
<!-- auto-duck: #bgm under narration; add to its <audio> element -->
|
|
164
|
+
data-automation='{"version":1,"lanes":[{"target":"volume","points":[{"t":0,"v":0.6},{"t":3.42,"v":0.6},{"t":3.57,"v":0.15},{"t":9.87,"v":0.15},{"t":10.27,"v":0.6}]}]}'
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
B2, bake ducking only for exported or standalone files.
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
ffmpeg -i bgm.mp3 -i voice.wav \
|
|
171
|
+
-filter_complex "[0][1]sidechaincompress=threshold=0.03:ratio=8:attack=200:release=400[ducked]" \
|
|
172
|
+
-map "[ducked]" bgm.ducked.wav
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Declare inside compositions. Bake only for assets leaving the hyperframes
|
|
176
|
+
pipeline.
|
|
177
|
+
|
|
178
|
+
## Publish loudness
|
|
179
|
+
|
|
180
|
+
Two-pass `loudnorm` measures first, then applies the measured values with the
|
|
181
|
+
target LUFS baked in.
|
|
182
|
+
|
|
183
|
+
Socials target, -14 LUFS:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
ffmpeg -i mix.wav \
|
|
187
|
+
-af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json \
|
|
188
|
+
-f null -
|
|
189
|
+
|
|
190
|
+
ffmpeg -i mix.wav \
|
|
191
|
+
-af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:offset=<target_offset>:linear=true:print_format=summary \
|
|
192
|
+
mix.social.wav
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Podcast target, -16 LUFS:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
ffmpeg -i mix.wav \
|
|
199
|
+
-af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json \
|
|
200
|
+
-f null -
|
|
201
|
+
|
|
202
|
+
ffmpeg -i mix.wav \
|
|
203
|
+
-af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=<input_i>:measured_TP=<input_tp>:measured_LRA=<input_lra>:measured_thresh=<input_thresh>:offset=<target_offset>:linear=true:print_format=summary \
|
|
204
|
+
mix.podcast.wav
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Generate: images (local first, cloud upsell)
|
|
208
|
+
|
|
209
|
+
`resolve --type image` retrieves from the HeyGen catalog first; on a miss it
|
|
210
|
+
GENERATES. Two paths, best-for-the-machine picked automatically:
|
|
211
|
+
|
|
212
|
+
1. **Local (default, free, private): mflux** (FLUX-on-MLX). `resolve` spec-checks
|
|
213
|
+
AVAILABLE RAM and runs the best FLUX-class model that fits, via
|
|
214
|
+
`scripts/lib/local-models.mjs` (`imagegen` ladder) + `mflux-provider.mjs`.
|
|
215
|
+
The RAM ladder (agent sees it via `describeModelLadder("imagegen", specs)`):
|
|
216
|
+
|
|
217
|
+
| Tier | Model | Needs (available RAM) | Notes |
|
|
218
|
+
| ------ | -------------------- | --------------------- | ----------------------------------- |
|
|
219
|
+
| medium | FLUX.1 schnell int4 | ~8GB (`--low-ram`) | ~20s/512px on 24GB. VERIFIED. Fast. |
|
|
220
|
+
| large | FLUX.2 Klein 4B int4 | ~32GB | higher quality, full-resident |
|
|
221
|
+
| xlarge | Qwen-Image | ~64GB | top quality, 64GB+ Macs only |
|
|
222
|
+
|
|
223
|
+
Gotchas baked into the table: the official FLUX repos are HF-gated, so it
|
|
224
|
+
points at non-gated community 4-bit re-uploads; and `--low-ram` is MANDATORY
|
|
225
|
+
at the medium tier (without it a 768x512 run swap-thrashed to 90 minutes on
|
|
226
|
+
24GB; with it, 20 seconds).
|
|
227
|
+
|
|
228
|
+
2. **Cloud upsell (better quality): the `codex` CLI** `image_gen` tool, on the
|
|
229
|
+
user's ChatGPT subscription (codex owns auth, no key here, no per-call
|
|
230
|
+
charge). It is the automatic fallback when no local model fits AND the
|
|
231
|
+
explicit "make it better" choice on any machine. Users who just want codex
|
|
232
|
+
can ask for it directly. Verified: prompt -> raster -> frozen + ledgered.
|
|
233
|
+
|
|
234
|
+
`--local-only` keeps mflux (once cached) and skips codex (network).
|
|
235
|
+
|
|
236
|
+
## Generate: video (`resolve --type video`, HeyGen avatar first)
|
|
237
|
+
|
|
238
|
+
`resolve --type video "<intent>"` is the default path. It generates a
|
|
239
|
+
script-driven HeyGen avatar video first (the free-usage allowance — OAuth
|
|
240
|
+
sessions ride the web-plan free avatar-video quota where eligible, API keys
|
|
241
|
+
follow normal API billing), falling back to local generative LTX only when
|
|
242
|
+
HeyGen is unavailable, uncredentialed, or `--local-only` is passed. The two
|
|
243
|
+
are non-substitutable outputs (a real presenter vs. a generic generative
|
|
244
|
+
clip), so treat the fallback as "HeyGen wasn't reachable," not "upgrade the
|
|
245
|
+
quality":
|
|
246
|
+
|
|
247
|
+
- **HeyGen avatar video (default, free for new API users):**
|
|
248
|
+
`heygenVideoGenerate` (`scripts/lib/heygen-video-provider.mjs`) shells the
|
|
249
|
+
`heygen` CLI — never the raw API — auto-picking a public avatar and a
|
|
250
|
+
starfish voice (override with `--avatar-id`/`--voice-id`, threaded through
|
|
251
|
+
as `ctx.avatarId`/`ctx.voiceId`). If the CLI reports `not_authenticated`,
|
|
252
|
+
the provider prints an onboarding recommendation (avatar video is free for
|
|
253
|
+
new API users — sign in) to stderr and falls through to LTX instead of
|
|
254
|
+
hard-failing.
|
|
255
|
+
- **Local fallback: LTX 2.3 on MLX** via `dgrauet/ltx-2-mlx`, the `videogen`
|
|
256
|
+
ladder in `local-models.mjs` (`ltx-video-provider.mjs`). Generative clips
|
|
257
|
+
(t2v), spec-gated to RAM. Verified on 24GB: 512x320 x 33f with audio.
|
|
258
|
+
|
|
259
|
+
Every generating `heygen` call from media-use — TTS, avatar video, and
|
|
260
|
+
catalog search — sends the allowlisted `X-HeyGen-Client-Source: media-use`
|
|
261
|
+
header (persistent flag, works on every subcommand) via the shared
|
|
262
|
+
`HEYGEN_CLIENT_SOURCE_ARGV` constant (`scripts/lib/heygen-cli.mjs`), so usage
|
|
263
|
+
tags correctly in billing/resource meta and shows up in the API dashboards.
|
|
264
|
+
Read-only discovery (`avatar list`, `voice list`) doesn't need it.
|
|
265
|
+
|
|
266
|
+
For structured bodies `resolve --type video` doesn't expose yet (a specific
|
|
267
|
+
`avatar_id`/`voice_id` combination beyond the ctx overrides, or a
|
|
268
|
+
pre-recorded `audio_url` instead of a script), the raw `heygen video create`
|
|
269
|
+
recipe below remains the escape hatch:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
# discover an avatar + a starfish voice, then create + wait
|
|
273
|
+
heygen avatar list --ownership public --limit 5
|
|
274
|
+
heygen voice list --engine starfish --limit 5
|
|
275
|
+
heygen video create --headers "X-HeyGen-Client-Source: media-use" --wait -d '{
|
|
276
|
+
"type": "avatar",
|
|
277
|
+
"avatar_id": "<avatar-id>",
|
|
278
|
+
"script": "Your narration here.",
|
|
279
|
+
"voice_id": "<voice-id>"
|
|
280
|
+
}'
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Avatar videos are deterministic + script-driven (lip-sync from a script or a
|
|
284
|
+
pre-recorded `audio_url`), distinct from the generative LTX clips. After a
|
|
285
|
+
manual recipe renders, `resolve --from <downloaded.mp4> --type video` to
|
|
286
|
+
ledger it (not needed when generating via `resolve --type video` directly —
|
|
287
|
+
that already ledgers the result).
|
|
288
|
+
|
|
289
|
+
### Image-to-video (animate any still into a talking clip)
|
|
290
|
+
|
|
291
|
+
Not wired into `resolve --type video` (deferred — the `avatar` type covers
|
|
292
|
+
the default script-driven case). `heygen video create` takes the raw
|
|
293
|
+
`POST /v3/videos` body, so switching `type`
|
|
294
|
+
from `avatar` to `image` animates **any image of a person** into a lip-synced
|
|
295
|
+
talking video, with no avatar/photo-avatar creation step first. Point `image` at a
|
|
296
|
+
public URL or an uploaded `asset_id`, and drive speech with a `script`+`voice_id`
|
|
297
|
+
or a pre-recorded `audio_url`:
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
heygen video create --headers "X-HeyGen-Client-Source: media-use" --wait -d '{
|
|
301
|
+
"type": "image",
|
|
302
|
+
"image": { "type": "url", "url": "https://example.com/person.jpg" },
|
|
303
|
+
"script": "Your narration here.",
|
|
304
|
+
"voice_id": "<voice-id>"
|
|
305
|
+
}'
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Common optional fields: `title`, `resolution` (`4k`/`1080p`/`720p`),
|
|
309
|
+
`aspect_ratio`, `remove_background`, `background`, `voice_settings`,
|
|
310
|
+
`motion_prompt` + `expressiveness` (photo-avatar animation), and
|
|
311
|
+
`callback_url`/`callback_id` for webhooks. Don't hardcode these from memory: the
|
|
312
|
+
CLI self-documents the full, current body with
|
|
313
|
+
`heygen video create --request-schema` (a discriminated union keyed on `type`),
|
|
314
|
+
so read the schema rather than trusting a stale field list. For a still you'll
|
|
315
|
+
reuse across many scripts, create a reusable **Photo Avatar** once instead
|
|
316
|
+
(`heygen avatar create`). Ledger the result with
|
|
317
|
+
`resolve --from <downloaded.mp4> --type video`. Docs:
|
|
318
|
+
<https://developers.heygen.com/image-to-video>.
|
|
319
|
+
|
|
320
|
+
## HEVC / H.265 sources
|
|
321
|
+
|
|
322
|
+
HEVC/H.265 sources need no conversion for **render** (FFmpeg pre-decodes all
|
|
323
|
+
input video) or for **preview** (auto-proxy transcodes and caches an H.264
|
|
324
|
+
copy on first use, disable with `--no-proxy` or `media.autoProxy: false` in
|
|
325
|
+
hyperframes.json). A manual H.264 proxy via `ffmpeg -i in.mp4 -c:v libx264
|
|
326
|
+
-crf 18 proxy.mp4`, registered with `resolve --from`, remains available for
|
|
327
|
+
edge cases (e.g. auto-proxy disabled, or ffmpeg unavailable at preview time).
|