hyperframes 0.8.190 → 0.8.192
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-DBKN5H7H.js → add-TZU2UW7A.js} +17 -17
- package/dist/{animatedGifPrep-YVBKKLQY.js → animatedGifPrep-NLAXC3VV.js} +11 -10
- package/dist/api.js +24 -23
- package/dist/{appHistory-TH3TL6N6.js → appHistory-QVCSAOI4.js} +1 -1
- package/dist/{asset-2OHQKUMQ.js → asset-JAJXA6LB.js} +2 -2
- package/dist/{assetCataloger-O3QAUWIK.js → assetCataloger-4WTX3J4I.js} +13 -12
- package/dist/{audio-IR3JGCMM.js → audio-XLWC7JKS.js} +22 -21
- package/dist/{auth-J6TAJLGD.js → auth-5K6X3NPJ.js} +4 -4
- package/dist/{autoUpdate-D7BJJUT2.js → autoUpdate-RNV7SKGB.js} +4 -4
- package/dist/{backgroundChecks-AILHY2YZ.js → backgroundChecks-QXLVZVGX.js} +5 -5
- package/dist/backgroundChecksWorker.js +5 -5
- package/dist/{batchRender-QZKFVWEI.js → batchRender-THKSPDZR.js} +14 -7
- package/dist/{beats-6LOEKZPB.js → beats-K7CGCFVL.js} +53 -15
- package/dist/{benchmark-RJMHI3YW.js → benchmark-PHRDIXNL.js} +18 -14
- package/dist/{browser-Q3Q36FE3.js → browser-GN6R5ZSK.js} +7 -7
- package/dist/{bundleWithLocalizedFonts-RWHFMSFL.js → bundleWithLocalizedFonts-C325UNR4.js} +3 -3
- package/dist/{capture-2PNTGVYV.js → capture-6UBQFHZQ.js} +76 -68
- package/dist/{capture-FO3ZZCT4.js → capture-BZ7APOGQ.js} +3 -3
- package/dist/{captureCompositionFrame-WTMLWVEJ.js → captureCompositionFrame-VORSCTWC.js} +19 -16
- package/dist/{catalog-LUZYPUYT.js → catalog-PHU2RUZ3.js} +18 -18
- package/dist/{catch-up-TUTLUTFP.js → catch-up-HCNRM46J.js} +7 -7
- package/dist/{check-K2TBTJZS.js → check-TJ5ZLB4I.js} +43 -42
- package/dist/{checkBrowser-JT7CXDT6.js → checkBrowser-DWP7ZXJ7.js} +38 -37
- package/dist/{chunk-STJ2ANMF.js → chunk-2HP5GIQ3.js} +3 -3
- package/dist/{chunk-L34DPWY4.js → chunk-2J3NA3OB.js} +13 -13
- package/dist/{chunk-B2A56S5C.js → chunk-2MCXIY4B.js} +13 -10
- package/dist/{chunk-DCAI5DBR.js → chunk-2ST4WAFY.js} +9 -1
- package/dist/{chunk-TSFA2Y5C.js → chunk-2VXY3PEF.js} +99 -69
- package/dist/{chunk-AYFF3GX6.js → chunk-32NB4VMH.js} +1 -1
- package/dist/{chunk-IXLUTE6N.js → chunk-3422KMTD.js} +5 -1
- package/dist/{chunk-JB7LML5B.js → chunk-3CXIX6XS.js} +68 -7
- package/dist/{chunk-F6DNM676.js → chunk-3FV5BVWS.js} +2 -2
- package/dist/{chunk-OTQXYTQZ.js → chunk-4E75LHAL.js} +23 -3
- package/dist/{chunk-TMBUBLZB.js → chunk-4HCJOFMB.js} +166 -46
- package/dist/{chunk-UZ7RJDEC.js → chunk-5IPKQHOL.js} +17 -6
- package/dist/{chunk-WBUO6WH6.js → chunk-5TRFLZ5Z.js} +2 -2
- package/dist/{chunk-HRPWRZGF.js → chunk-6N65ZMC5.js} +1 -1
- package/dist/{chunk-XUXGIA7H.js → chunk-6NLPPKBO.js} +1 -2
- package/dist/{chunk-3QLT727N.js → chunk-6WNLQI63.js} +4 -4
- package/dist/{chunk-XNLYMHX2.js → chunk-6XVKMBUA.js} +9 -6
- package/dist/{chunk-JLSXXMRU.js → chunk-7JJMT6LN.js} +1 -1
- package/dist/{chunk-7JHTNUF2.js → chunk-7LLRMYP6.js} +2 -2
- package/dist/{chunk-BT64TTSE.js → chunk-7RSY7SZN.js} +2 -2
- package/dist/{chunk-DX7VEUBO.js → chunk-7UZC4N62.js} +1 -1
- package/dist/{chunk-YT5VLUHM.js → chunk-A4OI5ZNX.js} +1 -1
- package/dist/{chunk-TSQAPPRS.js → chunk-AEXVVABM.js} +83 -45
- package/dist/{chunk-Y5L5I4US.js → chunk-AMZJFCOX.js} +8 -8
- package/dist/{chunk-WCT6KGGT.js → chunk-AR46ND2Q.js} +1 -1
- package/dist/chunk-B2XLXD7V.js +3897 -0
- package/dist/{chunk-KNQQZRB2.js → chunk-BEOK6F26.js} +2 -2
- package/dist/{chunk-76ITJYXX.js → chunk-BPKLUHFT.js} +7 -7
- package/dist/{chunk-OOAVKK2W.js → chunk-BV6YE455.js} +2 -2
- package/dist/{chunk-XGHHVYC7.js → chunk-BY6OQ6XP.js} +2 -2
- package/dist/{chunk-JQYJXUJW.js → chunk-C6KE4AFW.js} +1 -1
- package/dist/{chunk-TMK4Q7JA.js → chunk-CFUCHO4T.js} +20 -5
- package/dist/{chunk-FANFO5HI.js → chunk-CXRZBWSH.js} +11 -11
- package/dist/chunk-CZGHFATT.js +31 -0
- package/dist/{chunk-CYBXXSC4.js → chunk-DIKAPMMF.js} +2 -2
- package/dist/{chunk-7L37AB57.js → chunk-E3P3LJG6.js} +9 -9
- package/dist/{chunk-EU5HTY3E.js → chunk-E5V6WEMK.js} +58 -23
- package/dist/{chunk-HJZ5CPZA.js → chunk-EKGGSAWR.js} +6 -5
- package/dist/{chunk-7KVVNF7B.js → chunk-ELP5QZWL.js} +1 -1
- package/dist/{chunk-QH3T4WI2.js → chunk-EXAX37XR.js} +8 -2
- package/dist/{chunk-EI7FP7F3.js → chunk-FBVUAH7N.js} +12 -2
- package/dist/{chunk-TTZTGXKG.js → chunk-GANST5K3.js} +2 -2
- package/dist/{chunk-EQF6TVWB.js → chunk-IMSI7IFW.js} +65 -29
- package/dist/{chunk-W64L7IFS.js → chunk-IW5G323T.js} +1 -1
- package/dist/{chunk-RBGNU7VD.js → chunk-J2ASTCU6.js} +2 -2
- package/dist/{chunk-SUSSMCWL.js → chunk-J2BSUF6X.js} +1 -1
- package/dist/{chunk-GGVGOY6M.js → chunk-JCDYDF54.js} +2 -2
- package/dist/{chunk-EPOYPP36.js → chunk-K2AKVYNR.js} +2 -2
- package/dist/{chunk-XBGEWNGQ.js → chunk-KZOZN4PI.js} +4 -4
- package/dist/{chunk-E7DXKMKU.js → chunk-L2YGSAOL.js} +3 -3
- package/dist/{chunk-2FFOLLU2.js → chunk-LOKCBZYF.js} +3 -3
- package/dist/{chunk-56IDMP37.js → chunk-MEE4NTPZ.js} +2 -2
- package/dist/{chunk-56IOFIYB.js → chunk-MGBUWPXX.js} +2 -2
- package/dist/{chunk-K4664CDS.js → chunk-MVIJTXN5.js} +35 -14
- package/dist/{chunk-S2IEO6TH.js → chunk-ODBYZIOH.js} +28 -16
- package/dist/{chunk-45U3KY7Z.js → chunk-OQL4AJ4X.js} +6 -6
- package/dist/{chunk-5C7R55BJ.js → chunk-P2I4RLJE.js} +1 -1
- package/dist/{chunk-S7C6EM7N.js → chunk-PFRG5P32.js} +1 -1
- package/dist/{chunk-RUOG4VB7.js → chunk-PKZ7RK5N.js} +5 -4
- package/dist/{chunk-LLFQA7XF.js → chunk-QFPBRZJD.js} +1 -1
- package/dist/{chunk-CWVSJA52.js → chunk-QWLES6YV.js} +3 -3
- package/dist/{chunk-OAPYPSEB.js → chunk-QX4TB4NH.js} +292 -79
- package/dist/{chunk-BWPY64WA.js → chunk-R2U2G4OS.js} +1 -1
- package/dist/{chunk-46HEFGXJ.js → chunk-REUL2KH2.js} +1 -1
- package/dist/{chunk-R4QASDTN.js → chunk-RHYOWDI6.js} +2 -2
- package/dist/{chunk-DYAPHNV6.js → chunk-RWGASWT7.js} +1 -1
- package/dist/chunk-RXATE6FZ.js +385 -0
- package/dist/{chunk-CWYS2UNQ.js → chunk-SBBQFPCJ.js} +1 -1
- package/dist/{chunk-RDHEG7RX.js → chunk-SK7TR7BL.js} +4 -4
- package/dist/{chunk-KNU5COPB.js → chunk-T2EUWCJE.js} +1 -1
- package/dist/{chunk-6HYHHMX3.js → chunk-T6O5OLN2.js} +3 -3
- package/dist/{chunk-FVD44EQX.js → chunk-ULTKB5FC.js} +65 -23
- package/dist/{chunk-B7JFAXDP.js → chunk-VNPADTDD.js} +3 -3
- package/dist/{chunk-FUHI34T4.js → chunk-VOM2HLUI.js} +4 -4
- package/dist/{chunk-IARWN467.js → chunk-VRAXIQ6I.js} +2 -2
- package/dist/{chunk-NAUKCKCJ.js → chunk-W24SZ5FL.js} +4 -4
- package/dist/{chunk-ZFFKWHXN.js → chunk-WOKVXK4J.js} +1 -1
- package/dist/{chunk-WLG4OYH7.js → chunk-XF77MK3J.js} +1 -1
- package/dist/{chunk-DRTIIAIZ.js → chunk-XX2PA4L3.js} +2 -2
- package/dist/{chunk-A5YHWTSP.js → chunk-YMQQXPD5.js} +2 -2
- package/dist/{chunk-KUMUK6QS.js → chunk-YWRQHRDY.js} +17 -12
- package/dist/{chunk-EUUHVDMN.js → chunk-ZEMDV6W2.js} +29 -59
- package/dist/{clean-UVTWBPXK.js → clean-2RNCTDBT.js} +40 -27
- package/dist/cli.js +69 -67
- package/dist/{cloud-M42IPKFD.js → cloud-NFIKESNZ.js} +4 -4
- package/dist/{cloudrun-CTNX64R6.js → cloudrun-7224BCX3.js} +9 -9
- package/dist/commands/contrast-audit.browser.js +1 -1
- package/dist/commands/layout-audit.browser.js +64 -3
- package/dist/{compare-MQI7TG5M.js → compare-HL44MXVX.js} +80 -48
- package/dist/{compiler-EJE3HLCS.js → compiler-WF5QTXV7.js} +8 -7
- package/dist/{component-QSYOSFVV.js → component-ZBZXSJBR.js} +3 -3
- package/dist/{compositions-ITDFE7K4.js → compositions-76P7LDDX.js} +19 -17
- package/dist/{contactSheet-CAGMKI3E.js → contactSheet-43ISAESM.js} +2 -2
- package/dist/{delete-NTGTENKJ.js → delete-4YZBYOHJ.js} +7 -7
- package/dist/{deploy-AOJOXEYX.js → deploy-UGUUGYLF.js} +1 -1
- package/dist/{deterministicFonts-EGAAE7QL.js → deterministicFonts-RO2TCMLZ.js} +3 -3
- package/dist/{dist-NHW2JQCA.js → dist-5KKCRFPT.js} +5 -5
- package/dist/{dist-JH32CBQL.js → dist-QQ26RUDV.js} +5 -4
- package/dist/docs/rendering.md +2 -2
- package/dist/{doctor-Q6DAYVSQ.js → doctor-GGVUK4NB.js} +20 -19
- package/dist/{events-BQIBYPCF.js → events-OXPTHVDB.js} +4 -4
- package/dist/{events-PV3CDO4A.js → events-V2VU4J3B.js} +5 -5
- package/dist/{feedback-BZH26JQE.js → feedback-HFZ5SCUK.js} +16 -16
- package/dist/{ffmpeg-KU7RNT3U.js → ffmpeg-3VHY7GO3.js} +13 -12
- package/dist/{figma-PBGZUEIL.js → figma-7SEZTLBJ.js} +3 -3
- package/dist/fontLocalizeCli.js +14 -13
- package/dist/{get-MM2JZ5ET.js → get-Y2S2PXCM.js} +7 -7
- package/dist/{gpuPolicy-DQE2CD5T.js → gpuPolicy-UHPOWRV5.js} +11 -10
- package/dist/{grade-compare-YTDQ7YXW.js → grade-compare-4VTXSQM5.js} +38 -37
- package/dist/{gsapParserAcorn-SKODXC2N.js → gsapParserAcorn-OOTY2MVN.js} +2 -2
- package/dist/{help-M4B2DN7E.js → help-HXNOACHI.js} +1 -1
- package/dist/{history-ZW4UYKAJ.js → history-XDJUI4LC.js} +39 -16
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +64 -64
- package/dist/hyperframes-player.global.js +3 -3
- package/dist/hyperframes-slideshow.global.js +1 -1
- package/dist/{info-L7LQAXLK.js → info-KYRI3EZV.js} +56 -22
- package/dist/{init-HTSQ535A.js → init-IL7EWMT5.js} +38 -45
- package/dist/{inspect-EWF2THRR.js → inspect-TBNH23UC.js} +36 -35
- package/dist/{installer-PQKH2S7C.js → installer-O2YMFSI4.js} +8 -8
- package/dist/{keyframes-X2QKJ4DP.js → keyframes-4GF62KAJ.js} +13 -14
- package/dist/{lambda-BURM66GP.js → lambda-JFL6M4XZ.js} +12 -12
- package/dist/{layout-3Z3SJGZZ.js → layout-7MAEFR65.js} +36 -35
- package/dist/{lint-OMNZ2K5J.js → lint-4AYHKYAM.js} +23 -16
- package/dist/{lintProject-XM3DLUKG.js → lintProject-52SLJPRC.js} +5 -4
- package/dist/{list-5ZSQEH6N.js → list-3DP3D3MW.js} +7 -7
- package/dist/{login-YNCQPHLA.js → login-T54WQYRQ.js} +7 -7
- package/dist/{logout-DDC4QLVK.js → logout-JYFWWUGK.js} +3 -3
- package/dist/{manager-UHWEKPXC.js → manager-MZIJY73J.js} +3 -3
- package/dist/{manager-N6XXRQN3.js → manager-QROK2IH3.js} +14 -13
- package/dist/{media-treatment-EOKBRJPY.js → media-treatment-4CXF7MSG.js} +20 -19
- package/dist/{models-6T4CCKUV.js → models-IS3I6JKU.js} +18 -17
- package/dist/{motionShot-KXKMYZ3A.js → motionShot-DVYJZOTQ.js} +21 -20
- package/dist/{normalize-3AYFSN2F.js → normalize-FASIPBUM.js} +1 -1
- package/dist/{normalize-audio-VWB7RHHA.js → normalize-audio-4527JIK4.js} +12 -8
- package/dist/{open-32SQCNUP.js → open-5JE46SAX.js} +18 -18
- package/dist/{parakeetRunner-BXW2WX6Q.js → parakeetRunner-7JIJGJJ7.js} +20 -19
- package/dist/{pipeline-V5ONFRCY.js → pipeline-YEN3WFD2.js} +15 -14
- package/dist/{play-BBL262JE.js → play-WFX67I7M.js} +27 -26
- package/dist/{policies-MBWGLMWB.js → policies-GHVXA5PE.js} +1 -1
- package/dist/{preflight-LCNGQFNY.js → preflight-D377HVUZ.js} +15 -14
- package/dist/{present-RY4HO4ZQ.js → present-XTSEKAC7.js} +24 -23
- package/dist/{preview-BLLPCCLG.js → preview-5XH7EK6O.js} +28 -26
- package/dist/{producer-QG4AQ35S.js → producer-TFFYF4ZM.js} +1 -1
- package/dist/{projectConfig-LN3NR5OM.js → projectConfig-6YUJHMCL.js} +10 -10
- package/dist/{publication-TXMCS4KM.js → publication-JK33Y55E.js} +5 -5
- package/dist/{publish-57VURD7Z.js → publish-JHDGXWXU.js} +18 -17
- package/dist/{refresh-RXTOPRBB.js → refresh-USSFPJAU.js} +3 -3
- package/dist/{remove-background-VEWVIO3A.js → remove-background-P44MYAPJ.js} +16 -15
- package/dist/{render-SP7WAUB4.js → render-HJ34EGMN.js} +10 -9
- package/dist/{render-XMN3NJIQ.js → render-RBINWWP5.js} +43 -42
- package/dist/{render-4E7QDVOI.js → render-RJ3I4E3A.js} +26 -25
- package/dist/{render-batch-7ULP5RIJ.js → render-batch-3D6XQYUC.js} +11 -10
- package/dist/renderSetupWorker.js +9 -8
- package/dist/{resolver-D3XERO6U.js → resolver-HCLTFZUW.js} +7 -7
- package/dist/{screenshotCapture-UBY6TT75.js → screenshotCapture-I5EDCITF.js} +6 -3
- package/dist/{sherpa-5B5G426W.js → sherpa-IPOUJM6Q.js} +19 -18
- package/dist/{sites-5PWHAMEG.js → sites-Q2S3DZY4.js} +2 -1
- package/dist/skills/hyperframes/references/captions.md +1 -1
- package/dist/skills/hyperframes/references/skill-lifecycle.md +8 -4
- package/dist/skills/hyperframes-cli/references/cloudrun.md +1 -1
- package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
- package/dist/skills/hyperframes-cli/references/lambda.md +1 -1
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +2 -2
- package/dist/skills/hyperframes-cli/references/preview-render.md +1 -1
- package/dist/skills/hyperframes-cli/references/upgrade-info-misc.md +0 -8
- package/dist/skills/media-use/audio/references/transcribe.md +2 -2
- package/dist/skills/media-use/references/audio.md +1 -1
- package/dist/{skills-RXHRF7O7.js → skills-P67QEERC.js} +13 -75
- package/dist/{skillsUpdateCheck-JOTDZJAE.js → skillsUpdateCheck-IFMLRVIF.js} +5 -5
- package/dist/{slideshow-YTWATJRT.js → slideshow-SJGK4RQS.js} +1 -1
- package/dist/{snapshot-DN4MP4VN.js → snapshot-4YM4NNWJ.js} +66 -48
- package/dist/{src-W6Y5ZYRQ.js → src-DCD3YMXX.js} +13 -12
- package/dist/{src-XSDYRKLG.js → src-SSV66L3F.js} +14 -9
- package/dist/{staticProjectServer-JMFGTPMX.js → staticProjectServer-C7PPGLEQ.js} +22 -21
- package/dist/{status-CM7IQTU2.js → status-H5WLKQDS.js} +3 -3
- package/dist/studio/assets/{hyperframes-player-0HXJPmYC.js → hyperframes-player-ChN3cOr0.js} +3 -3
- package/dist/studio/assets/{index-DsSfhjUS.js → index-BYbFcRR0.js} +1 -1
- package/dist/studio/assets/{index-BYw97F07.js → index-CHu83hHM.js} +126 -125
- package/dist/studio/assets/{index-B3vk3hfU.css → index-CYbvOVp-.css} +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/{studio-api-SZ4OMFPN.js → studio-api-6YZ7PIQR.js} +17 -14
- package/dist/{studioServer-LWO33H7D.js → studioServer-EWHSE4GC.js} +60 -59
- package/dist/{telemetry-QG5AANZ4.js → telemetry-4K6CPMNT.js} +2 -2
- package/dist/{telemetry-K3AFDKOP.js → telemetry-GGLBHZRZ.js} +5 -5
- package/dist/{timeline-NYQOAQDH.js → timeline-NKHQJXJ2.js} +65 -43
- package/dist/{tokens-K7YWUVOK.js → tokens-FWNNDJ6R.js} +2 -2
- package/dist/{transcribe-QAUMODXM.js → transcribe-TRPKXZ7L.js} +27 -26
- package/dist/{transcribe-ANPUQDZD.js → transcribe-VD2TMMC2.js} +17 -16
- package/dist/{tts-A2WILYGN.js → tts-5I2AJNLM.js} +1 -1
- package/dist/{updateCheck-RNR4HMDI.js → updateCheck-CUPS6LU3.js} +4 -4
- package/dist/{upgrade-MKUGZZPA.js → upgrade-23XO6MEX.js} +4 -4
- package/dist/{urlDownloader-5USPXLCS.js → urlDownloader-YOAOONCK.js} +10 -9
- package/dist/{validate-OJHPDLC5.js → validate-BWIW24G5.js} +30 -29
- package/dist/{video-BCKRR6LU.js → video-XRXJS4GC.js} +12 -11
- package/dist/warmCheck.js +43 -42
- package/package.json +2 -1
- package/dist/chunk-DIV37NUE.js +0 -3896
- package/dist/chunk-I5JRXMCV.js +0 -6077
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-EHSBBBR2.js";
|
|
21
21
|
import {
|
|
22
22
|
normalizeErrorMessage
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-T2EUWCJE.js";
|
|
24
24
|
import "./chunk-M2WBOQ2Q.js";
|
|
25
25
|
|
|
26
26
|
// src/capture/screenshotCapture.ts
|
|
@@ -44,7 +44,8 @@ async function captureFullPagePlate(page, screenshotsDir, budget = {}) {
|
|
|
44
44
|
const p = getComputedStyle(el).position;
|
|
45
45
|
if (p === 'fixed' || p === 'sticky') {
|
|
46
46
|
el.setAttribute('data-hf-plate-position', el.style.position || '');
|
|
47
|
-
el.style.position
|
|
47
|
+
el.setAttribute('data-hf-plate-position-priority', el.style.getPropertyPriority('position'));
|
|
48
|
+
el.style.setProperty('position', 'static', 'important');
|
|
48
49
|
}
|
|
49
50
|
})`
|
|
50
51
|
);
|
|
@@ -65,8 +66,10 @@ async function captureFullPagePlate(page, screenshotsDir, budget = {}) {
|
|
|
65
66
|
try {
|
|
66
67
|
await page.evaluate(
|
|
67
68
|
`document.querySelectorAll('[data-hf-plate-position]').forEach((el) => {
|
|
68
|
-
el.style.position
|
|
69
|
+
el.style.setProperty('position', el.getAttribute('data-hf-plate-position') || '',
|
|
70
|
+
el.getAttribute('data-hf-plate-position-priority') || '');
|
|
69
71
|
el.removeAttribute('data-hf-plate-position');
|
|
72
|
+
el.removeAttribute('data-hf-plate-position-priority');
|
|
70
73
|
})`
|
|
71
74
|
);
|
|
72
75
|
} catch {
|
|
@@ -17,45 +17,46 @@ import {
|
|
|
17
17
|
sherpaRuntimeLoadError,
|
|
18
18
|
sherpaUnsupportedReason,
|
|
19
19
|
transcribeWithSherpa
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VOM2HLUI.js";
|
|
21
21
|
import "./chunk-CZUAX3BV.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-EXAX37XR.js";
|
|
23
23
|
import "./chunk-6BEFEWFB.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-LOKCBZYF.js";
|
|
25
|
+
import "./chunk-J2ASTCU6.js";
|
|
26
|
+
import "./chunk-PFRG5P32.js";
|
|
27
27
|
import "./chunk-WQ6ZXHFQ.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-VRAXIQ6I.js";
|
|
29
29
|
import "./chunk-EOVYQ3IG.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-QX4TB4NH.js";
|
|
31
31
|
import "./chunk-IZCW2NKT.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-MGBUWPXX.js";
|
|
33
33
|
import "./chunk-RQVDTPGD.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-AEXVVABM.js";
|
|
35
|
+
import "./chunk-B2XLXD7V.js";
|
|
36
36
|
import "./chunk-VC76R6W2.js";
|
|
37
37
|
import "./chunk-X7HBSTCZ.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-2MCXIY4B.js";
|
|
39
39
|
import "./chunk-OFQWTKPW.js";
|
|
40
40
|
import "./chunk-DPVXBVLL.js";
|
|
41
41
|
import "./chunk-3GXQPCJC.js";
|
|
42
42
|
import "./chunk-634HSJ3J.js";
|
|
43
43
|
import "./chunk-FXMKHHPO.js";
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-IW5G323T.js";
|
|
45
|
+
import "./chunk-RWGASWT7.js";
|
|
46
46
|
import "./chunk-XT6MXC7A.js";
|
|
47
47
|
import "./chunk-4UMPIPCQ.js";
|
|
48
|
-
import "./chunk-
|
|
48
|
+
import "./chunk-2VXY3PEF.js";
|
|
49
49
|
import "./chunk-VAS6HQX3.js";
|
|
50
50
|
import "./chunk-6BNTGNGD.js";
|
|
51
|
-
import "./chunk-
|
|
51
|
+
import "./chunk-CZGHFATT.js";
|
|
52
|
+
import "./chunk-PKZ7RK5N.js";
|
|
52
53
|
import "./chunk-MMQ52NIZ.js";
|
|
53
54
|
import "./chunk-BSQ7XANM.js";
|
|
54
55
|
import "./chunk-SDYDNHEE.js";
|
|
55
|
-
import "./chunk-
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-3422KMTD.js";
|
|
57
|
+
import "./chunk-RXATE6FZ.js";
|
|
57
58
|
import "./chunk-W2LGJSEN.js";
|
|
58
|
-
import "./chunk-
|
|
59
|
+
import "./chunk-T2EUWCJE.js";
|
|
59
60
|
import "./chunk-JZIEZCQM.js";
|
|
60
61
|
import "./chunk-UOFAE5RF.js";
|
|
61
62
|
import "./chunk-IR35BCLK.js";
|
|
@@ -28,7 +28,8 @@ async function runSitesCreate(args) {
|
|
|
28
28
|
projectDir,
|
|
29
29
|
bucketName: stack.bucketName,
|
|
30
30
|
region: stack.region,
|
|
31
|
-
siteId: args.siteId
|
|
31
|
+
siteId: args.siteId,
|
|
32
|
+
onNotice: (message) => console.error(c.dim(message))
|
|
32
33
|
});
|
|
33
34
|
if (args.json) {
|
|
34
35
|
console.log(JSON.stringify(handle, null, 2));
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Words and timings
|
|
4
4
|
|
|
5
5
|
- `npx hyperframes transcribe <file> --json` and a HeyGen voiceover (`/media-use`) give every word's start and end. Work from those as `[{ "id": "w0", "text": "Hello", "start": 0.0, "end": 0.5 }, …]`.
|
|
6
|
-
-
|
|
6
|
+
- `npx hyperframes transcribe` defaults to the `small.en` whisper model, which **translates** non-English speech into English. Pass the model: `npx hyperframes transcribe <file> --model small.en` for English, `--model small --language <code>` otherwise, `--model medium.en` for speech over music. It writes `assets/transcript.json` (its JSON names the path) and overwrites it on the next run; `--to srt` or `--to vtt` writes a sidecar.
|
|
7
7
|
- For Chinese, Japanese and other unspaced scripts, local transcription returns a whole sentence as one "word", sometimes in the other script (Traditional for Simplified speech). Split each segment's text into short phrases and spread its time across them by character count; check the characters against what is said.
|
|
8
8
|
- Whisper invents "Thank you." over silence and repeats lines over a silent tail: drop words that start inside a final silence (`silencedetect=noise=-35dB:d=0.6`; real speech sits around −16 to −26 dB).
|
|
9
9
|
- Never put two words in one timed entry, and match transcript words to caption words by position, not text, or a repeated word takes the wrong time.
|
|
@@ -9,11 +9,15 @@ For a plugin installation, follow [plugin execution rules](plugin-installation.m
|
|
|
9
9
|
|
|
10
10
|
## What `init` does
|
|
11
11
|
|
|
12
|
-
`npx hyperframes init`
|
|
12
|
+
`npx hyperframes init` installs the core set when it is missing and leaves every skill that is already installed as it is: it never refreshes, replaces or removes one. Updating is `npx hyperframes skills update`, run by you. Offline or rate-limited checks degrade gracefully and do not fail project scaffolding.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
`--skip-skills` makes `init` leave skills alone. `HYPERFRAMES_SKIP_SKILLS=1` does the same for CI and tests.
|
|
15
15
|
|
|
16
|
-
`HYPERFRAMES_SKIP_SKILLS=1` also makes `skills update` (bare or named) and bare `skills` exit 0 without installing
|
|
16
|
+
`HYPERFRAMES_SKIP_SKILLS=1` also makes `skills update` (bare or named) and bare `skills` exit 0 without installing, so an install pinned to one commit stays pinned.
|
|
17
|
+
|
|
18
|
+
## Stale-skills notice
|
|
19
|
+
|
|
20
|
+
After `render`, `lint` and `validate`, the CLI prints `N HyperFrames skills out of date or missing` to stderr when the cached check finds stale skills, so an agent run without a terminal sees it too. It is off in CI, in dev, with `HYPERFRAMES_NO_UPDATE_CHECK=1` and with `HYPERFRAMES_SKIP_SKILLS=1`, and runs with `--json` too, since it only writes stderr and leaves `--json` stdout untouched.
|
|
17
21
|
|
|
18
22
|
## Diagnose and update
|
|
19
23
|
|
|
@@ -26,7 +30,7 @@ npx hyperframes skills
|
|
|
26
30
|
```
|
|
27
31
|
|
|
28
32
|
- `skills check` exits non-zero when an installed skill is stale or the core set is incomplete. Skills available on demand but not installed are not failures.
|
|
29
|
-
- Bare `skills update` refreshes the core set and
|
|
33
|
+
- Bare `skills update` refreshes the core set and the HyperFrames skills already installed. It never removes a skill, and it leaves a skill the install record attributes to another publisher alone, even when the name matches one of ours.
|
|
30
34
|
- Named `skills update <name...>` also installs those named skills.
|
|
31
35
|
- Bare `skills` installs the full published set explicitly.
|
|
32
36
|
|
|
@@ -22,7 +22,7 @@ npx hyperframes cloudrun destroy --project <gcp-project>
|
|
|
22
22
|
|
|
23
23
|
`sites create` uploads a content-addressed project archive for reuse by `render-batch`; pass its `--site-id` to that command to skip the batch upload. Single `cloudrun render` currently resolves the project from its directory and does not consume `--site-id`. Both render commands require `--width` and `--height`; supported output formats are `mp4`, `mov`, `png-sequence`, and `webm`. Use `--output-resolution 4k` to supersample an authored composition without changing its layout dimensions.
|
|
24
24
|
|
|
25
|
-
Common render flags are `--fps 24|30|60`, `--quality draft|standard|high`, `--codec h264|h265` for MP4, `--chunk-size`, `--max-parallel-chunks`, `--target-chunk-frames`, `--render-id`, `--output-key`, `--wait`, and `--wait-interval-ms`. Use `--json` for machine-readable output.
|
|
25
|
+
Common render flags are `--fps 24|25|30|60`, `--quality draft|standard|high`, `--codec h264|h265` for MP4, `--chunk-size`, `--max-parallel-chunks`, `--target-chunk-frames`, `--render-id`, `--output-key`, `--wait`, and `--wait-interval-ms`. Use `--json` for machine-readable output.
|
|
26
26
|
|
|
27
27
|
For a variable-driven single render:
|
|
28
28
|
|
|
@@ -24,7 +24,7 @@ Other useful flags:
|
|
|
24
24
|
|
|
25
25
|
- `--resolution` — preset: `landscape` (1920×1080), `portrait` (1080×1920), `landscape-4k`, `portrait-4k`, `square` (1080×1080), `square-4k`. Aliases: `1080p`, `4k`, `uhd`, `1080p-square`, `4k-square`.
|
|
26
26
|
- `--skill=<slug>` — record the owning skill (e.g. `hyperframes`) in `hyperframes.json`, so every later render of this project — re-renders, `npm run render`, `--batch` — is attributed to it on anonymous telemetry without re-passing the flag. You rarely pass it by hand.
|
|
27
|
-
- `--skip-skills` —
|
|
27
|
+
- `--skip-skills` — leave AI coding skills alone: `init` does not install the core set. `HYPERFRAMES_SKIP_SKILLS=1` does the same.
|
|
28
28
|
- `--skip-transcribe` — don't auto-transcribe `--audio` / `--video` with Whisper.
|
|
29
29
|
- `--model`, `--language` — Whisper model / language for the auto-transcription.
|
|
30
30
|
|
|
@@ -84,7 +84,7 @@ Starts a Step Functions execution. Returns immediately with a `renderId` unless
|
|
|
84
84
|
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
85
85
|
| `--width` / `--height` | Output dimensions in pixels |
|
|
86
86
|
| `--output-resolution` | Supersampling preset (engages Chrome `deviceScaleFactor`) — `landscape` / `landscape-4k` / `portrait` / `portrait-4k` / `square` / `square-4k`, plus aliases (`1080p`, `4k`, `uhd`, `hd`, `1080p-portrait`, `4k-portrait`, `1080p-square`, `4k-square`). Use this to render an authored-at-1080p composition at 4K without re-laying-out — see footgun below. |
|
|
87
|
-
| `--fps` | `24` / `30` / `60`
|
|
87
|
+
| `--fps` | `24` / `25` / `30` / `60` |
|
|
88
88
|
| `--format` | `mp4` / `mov` / `png-sequence` / `webm` (default `mp4`) |
|
|
89
89
|
| `--codec` | `h264` / `h265` (mp4 only) |
|
|
90
90
|
| `--quality` | `draft` / `standard` / `high` |
|
|
@@ -111,7 +111,7 @@ Drop a `*.motion.json` sidecar next to the composition (matching the html basena
|
|
|
111
111
|
npx hyperframes snapshot # 5 key frames as PNG
|
|
112
112
|
npx hyperframes snapshot ./my-project # specific project
|
|
113
113
|
npx hyperframes snapshot --frames 10 # evenly-spaced N frames
|
|
114
|
-
npx hyperframes snapshot --range 3
|
|
114
|
+
npx hyperframes snapshot --range 3,5 --frames 8 # 8 frames within root-timeline seconds 3–5
|
|
115
115
|
npx hyperframes snapshot --composition intro --frames 8 # 8 frames within this data-composition-id
|
|
116
116
|
npx hyperframes snapshot --review # beat sheet, seam strips, phone sheet
|
|
117
117
|
npx hyperframes snapshot --review --json # same, with paths and times as JSON
|
|
@@ -119,7 +119,7 @@ npx hyperframes snapshot --review --json # same, with paths and times as J
|
|
|
119
119
|
|
|
120
120
|
Still PNGs. Each run writes `.hyperframes/artifacts/snapshots/<id>/` unless `--output` is set. `snapshot` is the standalone capture; `check --snapshots` is the gate.
|
|
121
121
|
|
|
122
|
-
One of `--at`, `--range START
|
|
122
|
+
One of `--at`, `--range START,END` (seconds), or `--composition <data-composition-id>` (not a CSS selector). `--frames` defaults to 5. Range and composition sample just before the end and add no extra end frame; `--at` adds one unless `--no-end`.
|
|
123
123
|
|
|
124
124
|
`--review` picks the frames that show a film over time. Scenes are the composition's top-level timed clips and sub-composition hosts, as `timeline` lists them (captions and audio excluded); `--composition` scopes to one. It writes `review-beats.jpg` (each scene at its start + 0.3 s and at its middle, and each timed `data-beat="name"` element at its start + 0.3 s, labelled with time and id), `review-seam-NN.jpg` (frames at −0.2, −0.1, 0, +0.1, +0.2 s around every cut) and `review-phone.jpg` (the beat frames 360 px wide, to judge legibility at phone size), beside the `beat-*.png` and `seam-*.png` stills. With fewer than two scenes the beats spread evenly. `--json` prints `{ok, outputDir, frames[{path,time,role,label}], contactSheets, review{window, scenes, beats, seams[{time,from,to,times,paths,sheet}], sheets, notes}}`.
|
|
125
125
|
|
|
@@ -120,7 +120,7 @@ npx hyperframes render --docker # byte-identical
|
|
|
120
120
|
| `dir` (positional) | path | cwd | Project directory. Omit to use current working directory. |
|
|
121
121
|
| `--composition`, `-c` | path to composition file | `index.html` | Render a specific composition file (e.g. `compositions/intro.html`) instead of the project's `index.html`. |
|
|
122
122
|
| `--output`, `-o` | path | `renders/<project>_<ts>.<ext>` | Output path. Default is timestamped (`<project-name>_YYYY-MM-DD_HH-MM-SS.<ext>`). |
|
|
123
|
-
| `--fps` |
|
|
123
|
+
| `--fps` | 1–240, or a rational such as `30000/1001` | root `data-fps`, else 30 | 60fps doubles render time. `lambda` and `cloudrun` accept only 24, 25, 30, 60 |
|
|
124
124
|
| `--quality` | draft, looks, delivery, standard, high | looks | `looks` is CRF 16 on the standard preset. `delivery` is `high`. draft for iterating |
|
|
125
125
|
| `--format` | mp4, webm, mov, gif, png-sequence, hls | mp4 | WebM/MOV render with transparency; gif for inline autoplay in GitHub PRs/READMEs/docs (two-pass palette encode, fps capped at 30 — prefer `--fps 15` — no audio, 1-bit transparency only, HDR falls back to SDR); png-sequence writes RGBA frames to a directory (AE/Nuke/Fusion ingest); hls writes an HLS VOD directory (master.m3u8 + video/audio playlists + MPEG-TS segments), SDR only, rejects `--gpu`, unavailable on lambda/cloudrun |
|
|
126
126
|
| `--gif-loop` | 0-65535 | 0 | GIF loop count; `0` loops forever. Only with `--format gif`. |
|
|
@@ -132,11 +132,3 @@ Run `npx hyperframes usage --json` at the start of a video workflow and again at
|
|
|
132
132
|
Known results contain `status: "known"`, `harness`, `planTier`, `session`, `weekly`, and `spend`. Each available window contains `usedPercent`, `remainingPercent`, and `resetsAt`; an unavailable window is `null`. `planTier` is the readable subscription tier when available, otherwise `null`. Claude Code reports its shared five-hour and weekly windows; a spend-metered plan (such as Enterprise) has neither and reports `spend`, the share of its billing-period spend limit already used, with `resetsAt: null`. Codex reports its shared session and weekly windows when available. Grok reports its included weekly allowance with `session: null`. Only Claude Code reports `spend`; it is `null` elsewhere. When no window is available the result is `status: "unknown"` with `reason: "no_usage_windows"`.
|
|
133
133
|
|
|
134
134
|
Unknown results contain `status: "unknown"` and a token-free `reason`. Missing, expired, unsupported, ambiguous, or unreadable logins and unavailable provider responses return unknown. Report the unknown state without guessing allowance. The command reads existing credentials without refreshing or rewriting them and emits no tokens or telemetry. Usage is a snapshot; it does not reserve allowance or estimate the next video's cost. Keep scope and workflow choices with the user.
|
|
135
|
-
|
|
136
|
-
## Remaining harness usage
|
|
137
|
-
|
|
138
|
-
Run `npx hyperframes usage --json` at the start of a video workflow and again at milestones such as after drafting and before rendering. A fresh read at handoff can serve as the start read. Use `--harness claude-code`, `--harness codex`, or `--harness grok` to select explicitly.
|
|
139
|
-
|
|
140
|
-
Known results contain `status: "known"`, `harness`, `planTier`, `session`, `weekly`, and `spend`. Each available window contains `usedPercent`, `remainingPercent`, and `resetsAt`; an unavailable window is `null`. `planTier` is the readable subscription tier when available, otherwise `null`. Claude Code reports its shared five-hour and weekly windows; a spend-metered plan (such as Enterprise) has neither and reports `spend`, the share of its billing-period spend limit already used, with `resetsAt: null`. Codex reports its shared session and weekly windows when available. Grok reports its included weekly allowance with `session: null`. Only Claude Code reports `spend`; it is `null` elsewhere. When no window is available the result is `status: "unknown"` with `reason: "no_usage_windows"`.
|
|
141
|
-
|
|
142
|
-
Unknown results contain `status: "unknown"` and a token-free `reason`. Missing, expired, unsupported, ambiguous, or unreadable logins and unavailable provider responses return unknown. Report the unknown state without guessing allowance. The command reads existing credentials without refreshing or rewriting them and emits no tokens or telemetry. Usage is a snapshot; it does not reserve allowance or estimate the next video's cost. Keep scope and workflow choices with the user.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Transcription
|
|
2
2
|
|
|
3
|
-
Create normalized word-level timestamps. **Always specify `--model` explicitly** —
|
|
3
|
+
Create normalized word-level timestamps. **Always specify `--model` explicitly** — `npx hyperframes transcribe` uses `small.en` as its default whisper model, which silently translates non-English audio into English.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
npx hyperframes transcribe audio.mp3 --model small.en # known English
|
|
@@ -19,7 +19,7 @@ npx hyperframes transcribe openai-response.json
|
|
|
19
19
|
2. **Known non-English** → `--model small --language <iso-code>` (no `.en` suffix)
|
|
20
20
|
3. **Unknown language** → `--model small` (whisper auto-detects)
|
|
21
21
|
|
|
22
|
-
**CLI default is `small.en`** — do not rely on it; always pass `--model` to make the choice explicit. `--language` also filters out non-target-language segments from mixed-language audio.
|
|
22
|
+
**The CLI's default whisper model is `small.en`** — do not rely on it; always pass `--model` to make the choice explicit. `--language` also filters out non-target-language segments from mixed-language audio.
|
|
23
23
|
|
|
24
24
|
## Model Sizes
|
|
25
25
|
|
|
@@ -17,4 +17,4 @@ node <SKILL_DIR>/audio/scripts/audio.mjs --request ./audio_request.json --out ./
|
|
|
17
17
|
|
|
18
18
|
Single-shot helpers: `audio/scripts/heygen-tts.mjs` (one voice file). Transcription / background removal / captions use the `hyperframes` CLI (`transcribe`, `remove-background`), see the per-topic guides in `audio/references/` (`tts.md`, `bgm.md`, `sfx.md`, `transcribe.md`, `remove-background.md`, `captions/`).
|
|
19
19
|
|
|
20
|
-
Transcription defaults to Parakeet (better than whisper.cpp: 6.05% vs 7.44% WER, 5-10x faster)
|
|
20
|
+
Transcription through `scripts/transcribe.mjs` defaults to Parakeet (better than whisper.cpp: 6.05% vs 7.44% WER, 5-10x faster), with whisper.cpp auto-fallback (see `references/operations.md`). `npx hyperframes transcribe` picks its own engine: Parakeet when installed, otherwise whisper with the `small.en` model by default.
|
|
@@ -15,8 +15,8 @@ import {
|
|
|
15
15
|
} from "./chunk-WMQNIQDJ.js";
|
|
16
16
|
import {
|
|
17
17
|
trackSkillsInstallSkipped
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-BV6YE455.js";
|
|
19
|
+
import "./chunk-GANST5K3.js";
|
|
20
20
|
import {
|
|
21
21
|
diag
|
|
22
22
|
} from "./chunk-VWG7OQKU.js";
|
|
@@ -39,24 +39,22 @@ import "./chunk-W2LGJSEN.js";
|
|
|
39
39
|
import {
|
|
40
40
|
FALLBACK_CORE_SKILLS,
|
|
41
41
|
RETIRED_SKILLS,
|
|
42
|
-
SKILLS_CLI_LOCK_PATHS_VERIFIED_AT,
|
|
43
42
|
checkSkills,
|
|
44
43
|
hyperframesSkillNames,
|
|
45
44
|
invalidateSkillsCache,
|
|
46
45
|
isCoreSkill,
|
|
47
46
|
presentSkills,
|
|
48
|
-
pruneOrphanedLockEntries,
|
|
49
47
|
retiredSkillNotice
|
|
50
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-ZEMDV6W2.js";
|
|
51
49
|
import {
|
|
52
50
|
withMeta
|
|
53
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-2HP5GIQ3.js";
|
|
54
52
|
import "./chunk-K4WIOZFP.js";
|
|
55
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-6NLPPKBO.js";
|
|
56
54
|
import "./chunk-WERLJGIC.js";
|
|
57
55
|
import "./chunk-ISN5GRYI.js";
|
|
58
|
-
import "./chunk-
|
|
59
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-3FV5BVWS.js";
|
|
57
|
+
import "./chunk-T2EUWCJE.js";
|
|
60
58
|
import "./chunk-M2WBOQ2Q.js";
|
|
61
59
|
|
|
62
60
|
// src/commands/skills.ts
|
|
@@ -421,15 +419,6 @@ function runSkillsAdd(source, selection, opts = {}) {
|
|
|
421
419
|
);
|
|
422
420
|
}
|
|
423
421
|
var PLAIN_SKILL_NAME = /^[a-z0-9][a-z0-9._-]*$/i;
|
|
424
|
-
function runSkillsRemove(names, opts) {
|
|
425
|
-
const safe = names.filter((n) => PLAIN_SKILL_NAME.test(n));
|
|
426
|
-
const rejected = names.filter((n) => !PLAIN_SKILL_NAME.test(n));
|
|
427
|
-
if (rejected.length) {
|
|
428
|
-
R.warn(c.warn(`Skipping unexpected skill name(s): ${rejected.join(", ")}`));
|
|
429
|
-
}
|
|
430
|
-
if (!safe.length) return Promise.resolve();
|
|
431
|
-
return spawnNpx(["skills", "remove", ...safe, ...opts.global ? ["-g"] : [], "--yes"]);
|
|
432
|
-
}
|
|
433
422
|
var SOURCES = [{ name: "HyperFrames", url: "https://github.com/heygen-com/hyperframes" }];
|
|
434
423
|
function mirrorToInstalledAgents() {
|
|
435
424
|
try {
|
|
@@ -533,7 +522,7 @@ async function updateSkills(opts = {}) {
|
|
|
533
522
|
}
|
|
534
523
|
return { ...await updateSkillsOffline(requested, { strict, cwd: opts.cwd }), retired };
|
|
535
524
|
}
|
|
536
|
-
const manifestSkills = check.skills
|
|
525
|
+
const manifestSkills = check.skills;
|
|
537
526
|
const manifestNames = new Set(manifestSkills.map((s) => s.name));
|
|
538
527
|
const unknown = requested.filter((name) => !manifestNames.has(name));
|
|
539
528
|
if (unknown.length) {
|
|
@@ -544,7 +533,9 @@ async function updateSkills(opts = {}) {
|
|
|
544
533
|
const targets = manifestSkills.filter(
|
|
545
534
|
(s) => opts.all === true || requested.includes(s.name) || isCoreSkill(s.name) || opts.refreshInstalled === true && s.status !== "missing"
|
|
546
535
|
);
|
|
547
|
-
const toInstall = targets.filter(
|
|
536
|
+
const toInstall = targets.filter(
|
|
537
|
+
(s) => s.status === "missing" || s.status === "outdated" && opts.onlyMissing !== true
|
|
538
|
+
);
|
|
548
539
|
const result = {
|
|
549
540
|
targets: targets.map((s) => s.name),
|
|
550
541
|
installed: toInstall.map((s) => s.name),
|
|
@@ -619,7 +610,6 @@ function renderCheck(result) {
|
|
|
619
610
|
if (summary.outdated) parts.push(c.warn(`\u2191 ${summary.outdated} outdated`));
|
|
620
611
|
if (summary.coreMissing) parts.push(c.warn(`\u25E6 ${summary.coreMissing} core not installed`));
|
|
621
612
|
if (onDemandMissing) parts.push(c.dim(`\u25E6 ${onDemandMissing} available on demand`));
|
|
622
|
-
if (summary.removed) parts.push(c.warn(`\u2717 ${summary.removed} removed upstream`));
|
|
623
613
|
console.log(` ${parts.join(" ")}`);
|
|
624
614
|
printSkillSection(result, "outdated", "Outdated:", "\u2191", c.warn);
|
|
625
615
|
printSkillSection(
|
|
@@ -638,22 +628,6 @@ function renderCheck(result) {
|
|
|
638
628
|
c.dim,
|
|
639
629
|
(s) => !isCoreSkill(s.name)
|
|
640
630
|
);
|
|
641
|
-
printSkillSection(
|
|
642
|
-
result,
|
|
643
|
-
"removed",
|
|
644
|
-
"Removed upstream (renamed or dropped \u2014 no longer published):",
|
|
645
|
-
"\u2717",
|
|
646
|
-
c.warn
|
|
647
|
-
);
|
|
648
|
-
if (result.lockMissing) {
|
|
649
|
-
console.log();
|
|
650
|
-
console.log(
|
|
651
|
-
` ${c.warn(`! Skills lock not found \u2014 can't check for skills removed upstream.`)}`
|
|
652
|
-
);
|
|
653
|
-
console.log(
|
|
654
|
-
` ${c.dim(` (lock paths verified against ${SKILLS_CLI_LOCK_PATHS_VERIFIED_AT})`)}`
|
|
655
|
-
);
|
|
656
|
-
}
|
|
657
631
|
console.log();
|
|
658
632
|
if (result.updateAvailable) {
|
|
659
633
|
console.log(` ${c.accent("Update: npx hyperframes skills update")}`);
|
|
@@ -737,26 +711,12 @@ function reportUpdateFailure(message, json) {
|
|
|
737
711
|
var updateCommand = defineCommand({
|
|
738
712
|
meta: {
|
|
739
713
|
name: "update",
|
|
740
|
-
description: "Update the core set plus every installed HyperFrames skill to the latest
|
|
714
|
+
description: "Update the core set plus every installed HyperFrames skill to the latest. Pass skill names to also install those (how on-demand skills install) \u2014 without names it never expands a partial install, and it never removes a skill"
|
|
741
715
|
},
|
|
742
|
-
// Mirror `check`'s flags: the prune step runs the same removed-detection, so it
|
|
743
|
-
// must respect the same overrides. Without these, `update`'s internal
|
|
744
|
-
// checkSkills() fell back to defaults — pruning the auto-detected install
|
|
745
|
-
// against the default manifest even when the user pointed `check` elsewhere.
|
|
746
716
|
args: {
|
|
747
|
-
json: { type: "boolean", description: "Output as JSON", default: false }
|
|
748
|
-
dir: {
|
|
749
|
-
type: "string",
|
|
750
|
-
description: "Skills dir for removed-detection only \u2014 scopes the prune, not the install (default: auto-detect)"
|
|
751
|
-
},
|
|
752
|
-
source: {
|
|
753
|
-
type: "string",
|
|
754
|
-
description: "Where 'latest' comes from for removed-detection (local path, owner/repo, or URL) \u2014 does not change the install source"
|
|
755
|
-
}
|
|
717
|
+
json: { type: "boolean", description: "Output as JSON", default: false }
|
|
756
718
|
},
|
|
757
719
|
async run({ args }) {
|
|
758
|
-
const dir = args.dir;
|
|
759
|
-
const source = args.source;
|
|
760
720
|
const { requested, rejected } = requestedNamesFrom(args._ ?? []);
|
|
761
721
|
if (rejected.length) {
|
|
762
722
|
reportUpdateFailure(`Invalid skill name(s): ${rejected.join(", ")}`, args.json === true);
|
|
@@ -775,28 +735,6 @@ var updateCommand = defineCommand({
|
|
|
775
735
|
setCommandExitCode(1);
|
|
776
736
|
return;
|
|
777
737
|
}
|
|
778
|
-
try {
|
|
779
|
-
const { skills, scope } = await checkSkills({ dir, source, canonical: true });
|
|
780
|
-
const removed = skills.filter((s) => s.status === "removed").map((s) => s.name);
|
|
781
|
-
if (removed.length) {
|
|
782
|
-
console.log();
|
|
783
|
-
console.log(
|
|
784
|
-
c.dim(`Removing ${removed.length} skill(s) no longer published: ${removed.join(", ")}`)
|
|
785
|
-
);
|
|
786
|
-
await runSkillsRemove(removed, { global: scope === "global" });
|
|
787
|
-
const scopeForPrune = scope ?? "global";
|
|
788
|
-
const stillOrphaned = pruneOrphanedLockEntries(removed, scopeForPrune);
|
|
789
|
-
if (stillOrphaned.length) {
|
|
790
|
-
console.log(
|
|
791
|
-
c.dim(
|
|
792
|
-
`Reconciled ${stillOrphaned.length} orphaned lock entr${stillOrphaned.length === 1 ? "y" : "ies"} with no on-disk bundle: ${stillOrphaned.join(", ")}`
|
|
793
|
-
)
|
|
794
|
-
);
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
} catch (err) {
|
|
798
|
-
R.warn(c.warn(`Skipped removed-skill cleanup: ${err.message}`));
|
|
799
|
-
}
|
|
800
738
|
}
|
|
801
739
|
});
|
|
802
740
|
var skills_default = defineCommand({
|
|
@@ -9,14 +9,14 @@ import {
|
|
|
9
9
|
printSkillsUpdateNotice,
|
|
10
10
|
refreshSkillsCache,
|
|
11
11
|
skillsCheckDue
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-ZEMDV6W2.js";
|
|
13
|
+
import "./chunk-2HP5GIQ3.js";
|
|
14
14
|
import "./chunk-K4WIOZFP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-6NLPPKBO.js";
|
|
16
16
|
import "./chunk-WERLJGIC.js";
|
|
17
17
|
import "./chunk-ISN5GRYI.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-3FV5BVWS.js";
|
|
19
|
+
import "./chunk-T2EUWCJE.js";
|
|
20
20
|
import "./chunk-M2WBOQ2Q.js";
|
|
21
21
|
export {
|
|
22
22
|
invalidateSkillsCache,
|