hyperframes 0.8.151 → 0.8.152
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-QKZZG7A2.js → add-SA33REHW.js} +14 -14
- package/dist/{animatedGifPrep-YQDPYGOD.js → animatedGifPrep-3YXJQZ7L.js} +9 -9
- package/dist/api.js +15 -15
- package/dist/{asset-3Q737Y4H.js → asset-PUVPTWPD.js} +2 -2
- package/dist/{assetCataloger-BTHEBJJB.js → assetCataloger-VWE2PLBX.js} +4 -4
- package/dist/{auth-XL7EU3SO.js → auth-PS3M6AI7.js} +1 -1
- package/dist/{autoUpdate-PJFLTQ3U.js → autoUpdate-CMO4SHWU.js} +2 -2
- package/dist/{backgroundChecks-T5TIR5WK.js → backgroundChecks-EDZ2A55J.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-NFLVIDB4.js → batchRender-7PLJISCN.js} +5 -5
- package/dist/{beats-JU4GZ26R.js → beats-2MDSIOE7.js} +14 -14
- package/dist/{benchmark-7U2YWLTW.js → benchmark-KBBXAPI4.js} +10 -10
- package/dist/{browser-D57UPYDA.js → browser-OMWKZRSW.js} +3 -3
- package/dist/{bundleWithLocalizedFonts-26MXQOZG.js → bundleWithLocalizedFonts-76DMCRIW.js} +2 -2
- package/dist/{capture-47BV25G3.js → capture-LRUUXH5Q.js} +2 -2
- package/dist/{capture-LT252COQ.js → capture-YGDC7GN3.js} +12 -12
- package/dist/{catalog-BEZXOV4O.js → catalog-SMEBKEVO.js} +14 -14
- package/dist/{catch-up-KVV5X6BF.js → catch-up-OMILX3WE.js} +4 -4
- package/dist/{check-6KQ433E6.js → check-NUZ62LIW.js} +131 -43
- package/dist/{checkBrowser-PRDR6XBY.js → checkBrowser-MSTVEL4V.js} +39 -38
- package/dist/{chunk-L6RIMCMG.js → chunk-3DZBQ7MH.js} +3 -3
- package/dist/{chunk-POEEDPJI.js → chunk-3E4OCOC5.js} +1 -1
- package/dist/{chunk-YZTVHRJ2.js → chunk-3HPJM5IQ.js} +1 -1
- package/dist/{chunk-OZ4K46OV.js → chunk-3LO7BBJX.js} +2 -2
- package/dist/{chunk-APDLWWFG.js → chunk-3VGU2SH7.js} +1 -1
- package/dist/{chunk-RRBKEHST.js → chunk-4UMKAUZI.js} +1 -1
- package/dist/{chunk-DHPFXAUF.js → chunk-57GN6KWT.js} +17 -3
- package/dist/{chunk-374QQGBQ.js → chunk-5CS4T6C6.js} +63 -12
- package/dist/{chunk-XQKVEQNY.js → chunk-5ERVRJMV.js} +2 -2
- package/dist/{chunk-S22FKF6G.js → chunk-5VMSUW4Z.js} +2 -2
- package/dist/{chunk-N4IXP3MY.js → chunk-6Z4YJ5Q3.js} +3 -3
- package/dist/{chunk-FJWEYVEM.js → chunk-7FYFEXD2.js} +658 -198
- package/dist/{chunk-4LE27ST4.js → chunk-7NPSXBIN.js} +2 -2
- package/dist/chunk-7TASSBN2.js +215 -0
- package/dist/{chunk-IP73NMQT.js → chunk-ANS56TPS.js} +10 -10
- package/dist/{chunk-PUIELIFA.js → chunk-BQK3J7XO.js} +1 -1
- package/dist/{chunk-RJRGR5KF.js → chunk-BYJYQWEX.js} +9 -9
- package/dist/{chunk-XXPYZBZ3.js → chunk-C6TPGUWD.js} +2 -2
- package/dist/{chunk-FAIYEIZ4.js → chunk-D6RJXQLD.js} +1 -1
- package/dist/{chunk-N3I6RAOR.js → chunk-DFXK7KUO.js} +11 -11
- package/dist/{chunk-DIOBKUBV.js → chunk-E6EYZ33P.js} +2 -2
- package/dist/{chunk-ZGCRVM5M.js → chunk-EVTHG34H.js} +2 -2
- package/dist/{chunk-IZPN423R.js → chunk-EXH6L2XZ.js} +2 -2
- package/dist/{chunk-AIJS74LG.js → chunk-FFDC5OWV.js} +8 -2
- package/dist/{chunk-KQGWP4KH.js → chunk-FNN5QINS.js} +1 -1
- package/dist/{chunk-DMKI64EZ.js → chunk-FSZAFCU7.js} +1 -1
- package/dist/{chunk-L3N7RJHS.js → chunk-GQETH4PE.js} +3 -3
- package/dist/{chunk-ZD3RDNZI.js → chunk-H2SGM2V2.js} +1 -1
- package/dist/{chunk-OSAH7S5M.js → chunk-H7FXBK3Q.js} +1 -1
- package/dist/{chunk-BRF3O35X.js → chunk-HBCRRCTX.js} +109 -31
- package/dist/{chunk-KXX6NLOT.js → chunk-IBYC3VUA.js} +1 -1
- package/dist/{chunk-IPDS2SWI.js → chunk-IEDT4EXE.js} +1 -1
- package/dist/{chunk-TCWMDCBX.js → chunk-IZIRIDJH.js} +2 -2
- package/dist/{chunk-4PKQEKAI.js → chunk-IZKXUYZE.js} +2 -2
- package/dist/chunk-KCFF4ENE.js +24 -0
- package/dist/{chunk-IZ7L6V76.js → chunk-KZ3L3W4Q.js} +1 -1
- package/dist/{chunk-YEBKEWKB.js → chunk-LECTCGGS.js} +1 -1
- package/dist/{chunk-O3DUX6P2.js → chunk-LVPSWUS6.js} +4 -4
- package/dist/{chunk-LKQS72D5.js → chunk-MNHPG2UO.js} +1 -1
- package/dist/{chunk-XKKBIFE5.js → chunk-NHAG2KCE.js} +7 -7
- package/dist/{chunk-HVXRYMGQ.js → chunk-PKO2EWO7.js} +1 -1
- package/dist/{chunk-XNDXENJQ.js → chunk-PRXAOZWZ.js} +3 -3
- package/dist/{chunk-4YZYYP7V.js → chunk-PTXZDSW5.js} +3 -3
- package/dist/{chunk-QF7AE3DB.js → chunk-QECEOV6W.js} +1 -1
- package/dist/{chunk-XGLNQDLN.js → chunk-QESSGUKX.js} +1 -1
- package/dist/{chunk-3SVC7SW4.js → chunk-RN5I2DP5.js} +3 -3
- package/dist/{chunk-QBYHNRHU.js → chunk-S3RCK56N.js} +1 -1
- package/dist/{chunk-RYL6ZIJP.js → chunk-SWCSL6WS.js} +5 -5
- package/dist/{chunk-2PSPARWP.js → chunk-TYXH3EKP.js} +4 -0
- package/dist/{chunk-FMNVTKX2.js → chunk-U3BCDVZO.js} +1 -1
- package/dist/{chunk-FLVI7FHU.js → chunk-VS732BUG.js} +1 -1
- package/dist/{chunk-LFNQDTSH.js → chunk-VYKPBRCB.js} +63 -12
- package/dist/{chunk-QLGBNGXC.js → chunk-XEFFJRYX.js} +2 -2
- package/dist/{chunk-3ZPFRDEJ.js → chunk-XINGD6MS.js} +4 -4
- package/dist/chunk-XSEGMQYA.js +30 -0
- package/dist/{chunk-GNTVYF7E.js → chunk-YOEGUBBY.js} +5 -5
- package/dist/{chunk-35PWWBGZ.js → chunk-YYEYOFHW.js} +1 -1
- package/dist/{chunk-XYHBVSWD.js → chunk-ZTM3RMAD.js} +2 -2
- package/dist/{clean-RLTHFTQA.js → clean-F75G45BI.js} +52 -31
- package/dist/cli.js +53 -53
- package/dist/{cloud-Q5TGBTW3.js → cloud-KVJAOUWH.js} +4 -4
- package/dist/{cloudrun-4UZF74MV.js → cloudrun-Q7Q7O4GY.js} +6 -6
- package/dist/{compare-Q5UNR2V4.js → compare-DGUJ4QWU.js} +30 -30
- package/dist/{compiler-ZXT27Z62.js → compiler-NCN6PTVH.js} +6 -6
- package/dist/{component-H734P32V.js → component-PSYGT3JV.js} +3 -3
- package/dist/{compositions-YEHDSTDR.js → compositions-J3GAETIC.js} +13 -13
- package/dist/{delete-LDBMPWRT.js → delete-MR7LRGRP.js} +2 -2
- package/dist/{deterministicFonts-C5JQLCTS.js → deterministicFonts-EOMDR6ZF.js} +3 -3
- package/dist/{dist-RGE4QASU.js → dist-2YYJYYPY.js} +3 -3
- package/dist/{dist-7JXLFD6U.js → dist-3MHXG6EJ.js} +4 -4
- package/dist/{doctor-XNJFIWJ7.js → doctor-JOUGR5UK.js} +11 -11
- package/dist/{events-UKCPUWMH.js → events-63BKDWVO.js} +3 -3
- package/dist/{events-G6UFLNXR.js → events-FZFBJCIH.js} +2 -2
- package/dist/{feedback-CK3KZ7DE.js → feedback-QLKWUDXR.js} +8 -8
- package/dist/{figma-3D5C737B.js → figma-YJ7HGVQC.js} +3 -3
- package/dist/fontLocalizeCli.js +12 -12
- package/dist/{get-QGTQUWFT.js → get-54MUUXMR.js} +2 -2
- package/dist/{gpuPolicy-G5QAQDYF.js → gpuPolicy-5OVNR75D.js} +9 -9
- package/dist/{grade-compare-XIHOM62P.js → grade-compare-7IDUF673.js} +30 -30
- package/dist/{gsapParserAcorn-VXZ3ZIF2.js → gsapParserAcorn-7NCK2LVT.js} +2 -2
- package/dist/{help-U5UBXT52.js → help-GQFYO5LU.js} +1 -1
- package/dist/{history-5J73QZSA.js → history-UI3O7CSO.js} +77 -205
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-RJHQQQUP.js → info-VQV3APEX.js} +9 -9
- package/dist/{init-M6UQOYYC.js → init-2UBFV5D7.js} +24 -24
- package/dist/{inspect-PRQWDBTP.js → inspect-36ACJ3CO.js} +31 -31
- package/dist/{installer-ZL7UKYK5.js → installer-GDUZDJG4.js} +7 -7
- package/dist/{keyframes-VMUJYTCQ.js → keyframes-GPBU34BG.js} +227 -82
- package/dist/{lambda-ON42DRQD.js → lambda-CBJVLTHY.js} +7 -7
- package/dist/{layout-QKBFVDVY.js → layout-2IHFV6EI.js} +31 -31
- package/dist/{lint-ZQHHL2SV.js → lint-IR6IYCEO.js} +9 -9
- package/dist/{lintProject-3Z6OJCSO.js → lintProject-XQWXJYSC.js} +3 -3
- package/dist/{list-YBRKIWGF.js → list-UAGKWARH.js} +2 -2
- package/dist/{login-4B2YXGLB.js → login-2GYCNCZF.js} +4 -4
- package/dist/{media-treatment-5C5EJAAP.js → media-treatment-Z553F7XI.js} +12 -12
- package/dist/{models-R7ZDWBJ6.js → models-6AZTNNSO.js} +12 -12
- package/dist/{motionShot-ZHESZNUL.js → motionShot-ARRL7WXT.js} +28 -15
- package/dist/{normalize-audio-EVWZVTBM.js → normalize-audio-CME4NUB6.js} +6 -6
- package/dist/{open-TV6HT4UT.js → open-HU2VXUFD.js} +4 -4
- package/dist/{parakeetRunner-YVVF4CG6.js → parakeetRunner-X5MKFMCB.js} +12 -12
- package/dist/{pipeline-ETR5SEBS.js → pipeline-MNFTEBJU.js} +9 -9
- package/dist/{play-C6WONRZV.js → play-2BBJDDAZ.js} +24 -24
- package/dist/{present-RANXTVPA.js → present-OE2WL2NY.js} +20 -20
- package/dist/{preview-KF6UMBT2.js → preview-RYSCCAWJ.js} +19 -19
- package/dist/{producer-CY2GXBWN.js → producer-SQWNRO66.js} +1 -1
- package/dist/{projectConfig-KPXCNMBM.js → projectConfig-B55Z7YKQ.js} +9 -9
- package/dist/{publication-Y36N4A7E.js → publication-MDZCOBJP.js} +4 -4
- package/dist/{publish-RCQJO35C.js → publish-AILV36BO.js} +12 -12
- package/dist/{remove-background-3ZMXVWLB.js → remove-background-6F72LKHG.js} +10 -10
- package/dist/{render-PTNEFO5U.js → render-2MZKU3L5.js} +10 -10
- package/dist/{render-FKVRCDT2.js → render-5EREH6YD.js} +57 -22
- package/dist/{render-WUSTRMUD.js → render-6GH5FSXU.js} +5 -5
- package/dist/{render-batch-AQHU2JWZ.js → render-batch-UMBUQWWS.js} +5 -5
- package/dist/renderSetupWorker.js +3 -3
- package/dist/{resolver-L5BDZJKU.js → resolver-KO6WWO5P.js} +6 -6
- package/dist/{sherpa-3S3ISG7G.js → sherpa-DADGYWNR.js} +11 -11
- package/dist/skills/hyperframes-cli/SKILL.md +3 -0
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +5 -1
- package/dist/{skills-X4WQEKNF.js → skills-QLKSNU4Y.js} +5 -5
- package/dist/{skillsUpdateCheck-UYCVHDZ6.js → skillsUpdateCheck-Z2QQGF2W.js} +3 -3
- package/dist/{snapshot-YEYHQEZQ.js → snapshot-D5BBFXOS.js} +118 -41
- package/dist/{src-2NN2WB6X.js → src-AVQBAECC.js} +8 -8
- package/dist/{src-OLBDPEG6.js → src-V7263E47.js} +11 -11
- package/dist/{staticProjectServer-7H35NMWB.js → staticProjectServer-HNWSVEWN.js} +20 -20
- package/dist/studio/assets/{hyperframes-player-DJt8E7k4.js → hyperframes-player-0BY7-PK7.js} +1 -1
- package/dist/studio/assets/{index-DWIHrAY2.js → index-COrWdzlj.js} +1 -1
- package/dist/studio/assets/{index-BGks9KLI.js → index-p-VXwuJ2.js} +132 -132
- package/dist/studio/assets/{index-DgbLblGR.js → index-rmD5k_ES.js} +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-HGM2A5I3.js → studio-api-UXKTDWLT.js} +30 -16
- package/dist/{studioServer-M6XFL7N6.js → studioServer-JOVR24O3.js} +43 -43
- package/dist/{synthesize-22B7L5GX.js → synthesize-MBDVUSH3.js} +2 -1
- package/dist/{telemetry-KVCZKVTE.js → telemetry-UW7XAM5W.js} +3 -3
- package/dist/{timeline-VYYKZR4V.js → timeline-JSGTZ3AN.js} +20 -20
- package/dist/{tokens-B5NFFL55.js → tokens-ADDBGTQ7.js} +2 -2
- package/dist/{transcribe-SBETOIWI.js → transcribe-FEHOK626.js} +10 -10
- package/dist/{transcribe-WNFRYZAC.js → transcribe-P6MJGSZJ.js} +16 -16
- package/dist/{tts-QSAQZVEZ.js → tts-POI553RG.js} +1 -1
- package/dist/{updateCheck-5MM2DFUC.js → updateCheck-IBWMLXQ4.js} +2 -2
- package/dist/{upgrade-LWID54R3.js → upgrade-NHZ7AYPO.js} +2 -2
- package/dist/{urlDownloader-CVLNXFDG.js → urlDownloader-ULDRBWS5.js} +8 -8
- package/dist/{validate-V4CGQ6OF.js → validate-NVWNXNBV.js} +25 -25
- package/dist/{video-VJB2KRSS.js → video-74DRD2DN.js} +9 -9
- package/package.json +1 -1
- package/dist/chunk-WBLXWOYK.js +0 -15
|
@@ -8,33 +8,33 @@ import {
|
|
|
8
8
|
resolveCaptureBrowserGpuMode,
|
|
9
9
|
resolveLocalBrowserGpuMode,
|
|
10
10
|
resolveLocalWebGpu
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-EVTHG34H.js";
|
|
12
12
|
import {
|
|
13
13
|
assertWebGpuAdapterAvailable,
|
|
14
14
|
compositionRequiresWebGpu
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-EXH6L2XZ.js";
|
|
16
|
+
import "./chunk-RN5I2DP5.js";
|
|
17
17
|
import "./chunk-NE55C6S5.js";
|
|
18
18
|
import "./chunk-JYVGYKXG.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-5ERVRJMV.js";
|
|
20
|
+
import "./chunk-S3RCK56N.js";
|
|
21
21
|
import "./chunk-VC76R6W2.js";
|
|
22
22
|
import "./chunk-UJKQWGFF.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-VYKPBRCB.js";
|
|
24
24
|
import "./chunk-OFQWTKPW.js";
|
|
25
25
|
import "./chunk-DPVXBVLL.js";
|
|
26
26
|
import "./chunk-T76PLPD6.js";
|
|
27
27
|
import "./chunk-FXMKHHPO.js";
|
|
28
28
|
import "./chunk-RQVDTPGD.js";
|
|
29
29
|
import "./chunk-TWWSYAKJ.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-YOEGUBBY.js";
|
|
31
31
|
import "./chunk-IWFLMU2N.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-3VGU2SH7.js";
|
|
33
33
|
import "./chunk-VAS6HQX3.js";
|
|
34
34
|
import "./chunk-3RM2ETQT.js";
|
|
35
35
|
import "./chunk-BSQ7XANM.js";
|
|
36
36
|
import "./chunk-SDYDNHEE.js";
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-TYXH3EKP.js";
|
|
38
38
|
import "./chunk-IXLUTE6N.js";
|
|
39
39
|
import "./chunk-3GXQPCJC.js";
|
|
40
40
|
import "./chunk-M2WBOQ2Q.js";
|
|
@@ -11,42 +11,42 @@ import {
|
|
|
11
11
|
} from "./chunk-ZKDMAOFU.js";
|
|
12
12
|
import {
|
|
13
13
|
serveStaticProjectHtml
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-GQETH4PE.js";
|
|
15
15
|
import "./chunk-XUHOIDKG.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-XEFFJRYX.js";
|
|
17
17
|
import "./chunk-X7MTZ4T2.js";
|
|
18
18
|
import {
|
|
19
19
|
openSettledCompositionPage,
|
|
20
20
|
runFfmpegOnce
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-SWCSL6WS.js";
|
|
22
22
|
import "./chunk-FH7WODJH.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-4UMKAUZI.js";
|
|
24
|
+
import "./chunk-PKO2EWO7.js";
|
|
25
25
|
import "./chunk-WPNE5NEP.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-HBCRRCTX.js";
|
|
27
|
+
import "./chunk-PRXAOZWZ.js";
|
|
28
|
+
import "./chunk-C6TPGUWD.js";
|
|
29
|
+
import "./chunk-7FYFEXD2.js";
|
|
30
|
+
import "./chunk-XINGD6MS.js";
|
|
31
|
+
import "./chunk-FFDC5OWV.js";
|
|
32
32
|
import "./chunk-K2FLNJVB.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-EVTHG34H.js";
|
|
34
34
|
import "./chunk-442JNXRM.js";
|
|
35
|
-
import "./chunk-
|
|
35
|
+
import "./chunk-D6RJXQLD.js";
|
|
36
36
|
import "./chunk-XT7X6QCP.js";
|
|
37
37
|
import "./chunk-4YYJOFKS.js";
|
|
38
38
|
import "./chunk-HVW7ABXD.js";
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-QESSGUKX.js";
|
|
40
|
+
import "./chunk-6Z4YJ5Q3.js";
|
|
41
|
+
import "./chunk-3HPJM5IQ.js";
|
|
42
42
|
import "./chunk-AWDFDFI3.js";
|
|
43
43
|
import "./chunk-P6LJ4Y32.js";
|
|
44
44
|
import "./chunk-GMECXFAN.js";
|
|
45
|
-
import "./chunk-
|
|
45
|
+
import "./chunk-5CS4T6C6.js";
|
|
46
46
|
import {
|
|
47
47
|
trackCompareSheet
|
|
48
|
-
} from "./chunk-
|
|
49
|
-
import "./chunk-
|
|
48
|
+
} from "./chunk-H2SGM2V2.js";
|
|
49
|
+
import "./chunk-KZ3L3W4Q.js";
|
|
50
50
|
import "./chunk-VWG7OQKU.js";
|
|
51
51
|
import "./chunk-XBSPQ52S.js";
|
|
52
52
|
import {
|
|
@@ -63,34 +63,34 @@ import "./chunk-EOOEC32M.js";
|
|
|
63
63
|
import "./chunk-TJSTGSAW.js";
|
|
64
64
|
import {
|
|
65
65
|
withMeta
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-YYEYOFHW.js";
|
|
67
67
|
import "./chunk-K4WIOZFP.js";
|
|
68
68
|
import "./chunk-XUXGIA7H.js";
|
|
69
69
|
import "./chunk-WERLJGIC.js";
|
|
70
70
|
import "./chunk-ISN5GRYI.js";
|
|
71
|
-
import "./chunk-
|
|
71
|
+
import "./chunk-IZIRIDJH.js";
|
|
72
72
|
import "./chunk-EOVYQ3IG.js";
|
|
73
73
|
import {
|
|
74
74
|
findFFmpeg
|
|
75
75
|
} from "./chunk-4MLYMDQ4.js";
|
|
76
76
|
import "./chunk-AMKC3AXA.js";
|
|
77
|
-
import "./chunk-
|
|
78
|
-
import "./chunk-
|
|
77
|
+
import "./chunk-EXH6L2XZ.js";
|
|
78
|
+
import "./chunk-RN5I2DP5.js";
|
|
79
79
|
import "./chunk-NE55C6S5.js";
|
|
80
80
|
import "./chunk-JYVGYKXG.js";
|
|
81
81
|
import {
|
|
82
82
|
gsapCdnDist
|
|
83
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-5ERVRJMV.js";
|
|
84
84
|
import {
|
|
85
85
|
HF_COLOR_GRADING_ATTR,
|
|
86
86
|
isHfColorGradingActive,
|
|
87
87
|
normalizeHfColorGrading,
|
|
88
88
|
parseCubeLut,
|
|
89
89
|
serializeHfColorGrading
|
|
90
|
-
} from "./chunk-
|
|
90
|
+
} from "./chunk-S3RCK56N.js";
|
|
91
91
|
import "./chunk-VC76R6W2.js";
|
|
92
92
|
import "./chunk-UJKQWGFF.js";
|
|
93
|
-
import "./chunk-
|
|
93
|
+
import "./chunk-VYKPBRCB.js";
|
|
94
94
|
import "./chunk-OFQWTKPW.js";
|
|
95
95
|
import "./chunk-DPVXBVLL.js";
|
|
96
96
|
import "./chunk-T76PLPD6.js";
|
|
@@ -98,14 +98,14 @@ import "./chunk-FXMKHHPO.js";
|
|
|
98
98
|
import "./chunk-RQVDTPGD.js";
|
|
99
99
|
import "./chunk-54DMWFQZ.js";
|
|
100
100
|
import "./chunk-TWWSYAKJ.js";
|
|
101
|
-
import "./chunk-
|
|
101
|
+
import "./chunk-YOEGUBBY.js";
|
|
102
102
|
import "./chunk-IWFLMU2N.js";
|
|
103
|
-
import "./chunk-
|
|
103
|
+
import "./chunk-3VGU2SH7.js";
|
|
104
104
|
import "./chunk-VAS6HQX3.js";
|
|
105
105
|
import "./chunk-3RM2ETQT.js";
|
|
106
106
|
import "./chunk-BSQ7XANM.js";
|
|
107
107
|
import "./chunk-SDYDNHEE.js";
|
|
108
|
-
import "./chunk-
|
|
108
|
+
import "./chunk-TYXH3EKP.js";
|
|
109
109
|
import "./chunk-IXLUTE6N.js";
|
|
110
110
|
import {
|
|
111
111
|
normalizeErrorMessage
|
|
@@ -499,7 +499,7 @@ async function loadReferenceFrame(framePath) {
|
|
|
499
499
|
};
|
|
500
500
|
}
|
|
501
501
|
async function captureGradeCompareSheet(projectDir, timeoutMs) {
|
|
502
|
-
const { bundleToSingleHtml } = await import("./compiler-
|
|
502
|
+
const { bundleToSingleHtml } = await import("./compiler-NCN6PTVH.js");
|
|
503
503
|
const html = await bundleToSingleHtml(projectDir);
|
|
504
504
|
const server = await serveStaticProjectHtml(projectDir, html);
|
|
505
505
|
const sheetPath = join(projectDir, "grade-compare.png");
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
parseGsapScriptAcorn,
|
|
15
15
|
parseGsapScriptAcornForWrite,
|
|
16
16
|
scriptShape
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-5CS4T6C6.js";
|
|
18
|
+
import "./chunk-TYXH3EKP.js";
|
|
19
19
|
import "./chunk-M2WBOQ2Q.js";
|
|
20
20
|
export {
|
|
21
21
|
buildArcPath,
|
|
@@ -5,28 +5,29 @@ var require = __hf_createRequire(import.meta.url);
|
|
|
5
5
|
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
6
|
var __dirname = __hf_dirname(__filename);
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
Refusal,
|
|
9
|
+
endTurn,
|
|
10
|
+
historyDeps,
|
|
11
|
+
lastTurnParts,
|
|
12
|
+
withOwner,
|
|
13
|
+
withReader,
|
|
14
|
+
writeTurn
|
|
15
|
+
} from "./chunk-7TASSBN2.js";
|
|
16
|
+
import {
|
|
9
17
|
HistoryBusyError,
|
|
10
18
|
HistoryIdError,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} from "./chunk-FJWEYVEM.js";
|
|
16
|
-
import "./chunk-AIJS74LG.js";
|
|
17
|
-
import {
|
|
18
|
-
resolveProject
|
|
19
|
-
} from "./chunk-KXX6NLOT.js";
|
|
19
|
+
START
|
|
20
|
+
} from "./chunk-7FYFEXD2.js";
|
|
21
|
+
import "./chunk-FFDC5OWV.js";
|
|
22
|
+
import "./chunk-IBYC3VUA.js";
|
|
20
23
|
import "./chunk-K2FLNJVB.js";
|
|
21
24
|
import {
|
|
22
|
-
AmbiguousPreviewServerError
|
|
23
|
-
findPreviewServerForProject,
|
|
24
|
-
studioApiUrl
|
|
25
|
+
AmbiguousPreviewServerError
|
|
25
26
|
} from "./chunk-DQBY7FRR.js";
|
|
26
27
|
import {
|
|
27
28
|
trackHistoryAction
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
29
|
+
} from "./chunk-H2SGM2V2.js";
|
|
30
|
+
import "./chunk-KZ3L3W4Q.js";
|
|
30
31
|
import "./chunk-VWG7OQKU.js";
|
|
31
32
|
import "./chunk-XBSPQ52S.js";
|
|
32
33
|
import {
|
|
@@ -40,12 +41,12 @@ import "./chunk-ZTZA4UWZ.js";
|
|
|
40
41
|
import "./chunk-EOOEC32M.js";
|
|
41
42
|
import {
|
|
42
43
|
withMeta
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-YYEYOFHW.js";
|
|
44
45
|
import "./chunk-K4WIOZFP.js";
|
|
45
46
|
import "./chunk-XUXGIA7H.js";
|
|
46
47
|
import "./chunk-WERLJGIC.js";
|
|
47
48
|
import "./chunk-ISN5GRYI.js";
|
|
48
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-IZIRIDJH.js";
|
|
49
50
|
import "./chunk-EOVYQ3IG.js";
|
|
50
51
|
import "./chunk-AMKC3AXA.js";
|
|
51
52
|
import "./chunk-JYVGYKXG.js";
|
|
@@ -57,183 +58,9 @@ import "./chunk-M2WBOQ2Q.js";
|
|
|
57
58
|
|
|
58
59
|
// src/commands/history.ts
|
|
59
60
|
import { spawnSync } from "child_process";
|
|
60
|
-
import { mkdirSync
|
|
61
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "fs";
|
|
61
62
|
import { tmpdir } from "os";
|
|
62
|
-
import { dirname as dirname2, join as join2 } from "path";
|
|
63
|
-
|
|
64
|
-
// src/utils/historyOwner.ts
|
|
65
|
-
import { randomUUID } from "crypto";
|
|
66
|
-
import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "fs";
|
|
67
63
|
import { dirname, join } from "path";
|
|
68
|
-
var historyDeps = {
|
|
69
|
-
historyRoot: DEFAULT_HISTORY_ROOT,
|
|
70
|
-
findServer: (projectDir) => findPreviewServerForProject(projectDir),
|
|
71
|
-
/** A turn with no write for this long has ended, through a preview or not. */
|
|
72
|
-
turnIdleMs: MAX_WINDOW_IDLE_MS,
|
|
73
|
-
ownerWaitMs: void 0,
|
|
74
|
-
now: () => Date.now()
|
|
75
|
-
};
|
|
76
|
-
var Refusal = class extends Error {
|
|
77
|
-
};
|
|
78
|
-
var turnFile = (dir) => join(dir, ".hyperframes", "history-turn.json");
|
|
79
|
-
function readTurn(dir) {
|
|
80
|
-
try {
|
|
81
|
-
const turn = JSON.parse(readFileSync(turnFile(dir), "utf-8"));
|
|
82
|
-
return typeof turn.lastWriteAt === "number" ? { ...turn, parts: turn.parts ?? [] } : null;
|
|
83
|
-
} catch {
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function writeTurn(dir, turn) {
|
|
88
|
-
if (!turn) return rmSync(turnFile(dir), { force: true });
|
|
89
|
-
mkdirSync(dirname(turnFile(dir)), { recursive: true });
|
|
90
|
-
writeFileSync(turnFile(dir), JSON.stringify(turn));
|
|
91
|
-
}
|
|
92
|
-
var lastTurnsFile = (dir) => join(dir, ".hyperframes", "history-turns.json");
|
|
93
|
-
function readLastTurns(dir) {
|
|
94
|
-
try {
|
|
95
|
-
const turns = JSON.parse(readFileSync(lastTurnsFile(dir), "utf-8"));
|
|
96
|
-
return turns && typeof turns === "object" ? turns : {};
|
|
97
|
-
} catch {
|
|
98
|
-
return {};
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
function lastTurnParts(dir, name) {
|
|
102
|
-
return readLastTurns(dir)[name] ?? null;
|
|
103
|
-
}
|
|
104
|
-
var samePart = (a, b) => a.who.kind === b.who.kind && a.who.name === b.who.name && a.label === b.label && a.startedAt === b.startedAt;
|
|
105
|
-
async function endTurn(owner, turn, dir) {
|
|
106
|
-
const entry = await owner.end(turn.id);
|
|
107
|
-
const cut = (await owner.list()).filter((other) => samePart(other, entry ?? turn));
|
|
108
|
-
const own = entry ? [entry.id] : [];
|
|
109
|
-
const parts = [.../* @__PURE__ */ new Set([...turn.parts, ...cut.map((part) => part.id), ...own])];
|
|
110
|
-
const draft = `${lastTurnsFile(dir)}.${process.pid}.tmp`;
|
|
111
|
-
mkdirSync(dirname(draft), { recursive: true });
|
|
112
|
-
writeFileSync(draft, JSON.stringify({ ...readLastTurns(dir), [turn.who.name]: parts }));
|
|
113
|
-
renameSync(draft, lastTurnsFile(dir));
|
|
114
|
-
writeTurn(dir, null);
|
|
115
|
-
return { entry, parts };
|
|
116
|
-
}
|
|
117
|
-
function previewOwner(route) {
|
|
118
|
-
const call = async (path, body) => {
|
|
119
|
-
const init = body && {
|
|
120
|
-
method: "POST",
|
|
121
|
-
headers: { "content-type": "application/json" },
|
|
122
|
-
body: JSON.stringify(body)
|
|
123
|
-
};
|
|
124
|
-
const response = await fetch(route(path), init);
|
|
125
|
-
if (response.ok) return response;
|
|
126
|
-
const error = await response.json().catch(() => null);
|
|
127
|
-
throw new Refusal(error?.error ?? `The preview answered ${response.status}.`);
|
|
128
|
-
};
|
|
129
|
-
const json = async (path, body) => (await call(path, body)).json();
|
|
130
|
-
const list = async () => (await json("")).entries;
|
|
131
|
-
return {
|
|
132
|
-
via: "preview",
|
|
133
|
-
list,
|
|
134
|
-
peek: async (point) => (await json(`/peek/${encodeURIComponent(point)}`)).files,
|
|
135
|
-
blob: async (hash) => Buffer.from(await (await call(`/blob/${hash}`)).arrayBuffer()),
|
|
136
|
-
undo: (id, who, mode) => json("/undo", { entryId: id, who, mode }),
|
|
137
|
-
restore: (point, who) => json("/restore", { point, who }),
|
|
138
|
-
pin: async (id, pinned) => void await json("/pin", { entryId: id, pinned }),
|
|
139
|
-
begin: async (who, label) => {
|
|
140
|
-
const opened = await json("/window", { who, label, idleMs: historyDeps.turnIdleMs });
|
|
141
|
-
return { id: opened.windowId, startedAt: opened.startedAt ?? historyDeps.now() };
|
|
142
|
-
},
|
|
143
|
-
// A preview restarted since begin committed the window on its way down.
|
|
144
|
-
end: (id) => json(`/window/${id}/close`, {}).then((closed) => closed.entry).catch(async () => (await list()).find((entry) => entry.id === id) ?? null),
|
|
145
|
-
close: async () => {
|
|
146
|
-
}
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
async function directOwner(projectDir, turn) {
|
|
150
|
-
const history = await openProjectHistory({
|
|
151
|
-
projectDir,
|
|
152
|
-
historyRoot: historyDeps.historyRoot,
|
|
153
|
-
now: () => historyDeps.now(),
|
|
154
|
-
pruneGoneProjectsBudgetMs: 1e3,
|
|
155
|
-
ownerWaitMs: historyDeps.ownerWaitMs,
|
|
156
|
-
// A turn begun through a preview that has since stopped is still the agent's, until its idle limit.
|
|
157
|
-
...turn && {
|
|
158
|
-
closedWindow: {
|
|
159
|
-
id: turn.id,
|
|
160
|
-
who: turn.who,
|
|
161
|
-
label: turn.label,
|
|
162
|
-
startedAt: turn.startedAt,
|
|
163
|
-
lastWriteAt: turn.lastWriteAt,
|
|
164
|
-
idleMs: historyDeps.turnIdleMs
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return {
|
|
169
|
-
via: "direct",
|
|
170
|
-
list: async () => history.list(),
|
|
171
|
-
peek: async (point) => history.peek(point),
|
|
172
|
-
blob: (hash) => history.readBlob(hash),
|
|
173
|
-
undo: (id, who, mode) => history.undo(id, { who, ...mode && { mode } }),
|
|
174
|
-
restore: (point, who) => history.restore(point, who),
|
|
175
|
-
pin: async (id, pinned) => history.pin(id, pinned),
|
|
176
|
-
// Opening filed every earlier write; the turn's own writes are filed to it when the next open passes it.
|
|
177
|
-
begin: async () => ({ id: randomUUID(), startedAt: historyDeps.now() }),
|
|
178
|
-
end: async (id) => history.list().find((entry) => entry.id === id) ?? null,
|
|
179
|
-
close: () => history.close()
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
async function connect(projectDir, turn) {
|
|
183
|
-
const server = await historyDeps.findServer(projectDir);
|
|
184
|
-
if (server) {
|
|
185
|
-
const route = (path) => studioApiUrl(server, `history${path}`);
|
|
186
|
-
const status = await fetch(route("")).then(
|
|
187
|
-
(response) => response.status,
|
|
188
|
-
() => 404
|
|
189
|
-
);
|
|
190
|
-
if (status !== 404) return previewOwner(route);
|
|
191
|
-
}
|
|
192
|
-
return directOwner(projectDir, turn);
|
|
193
|
-
}
|
|
194
|
-
async function withOwner(dir, task) {
|
|
195
|
-
const { dir: projectDir } = resolveProject(dir);
|
|
196
|
-
const turn = readTurn(projectDir);
|
|
197
|
-
const owner = await connect(projectDir, turn);
|
|
198
|
-
try {
|
|
199
|
-
return await task(owner, turn, projectDir);
|
|
200
|
-
} finally {
|
|
201
|
-
const direct = owner.via === "direct" && turn;
|
|
202
|
-
let kept;
|
|
203
|
-
try {
|
|
204
|
-
kept = direct ? (await owner.list()).find((entry) => entry.id === turn.id) : void 0;
|
|
205
|
-
} finally {
|
|
206
|
-
await owner.close();
|
|
207
|
-
}
|
|
208
|
-
if (direct && readTurn(projectDir)?.id === turn.id) {
|
|
209
|
-
const lastWriteAt = kept ? kept.endedAt : turn.lastWriteAt;
|
|
210
|
-
const parts = kept ? [...turn.parts, kept.id] : turn.parts;
|
|
211
|
-
writeTurn(projectDir, { ...turn, via: "direct", id: randomUUID(), lastWriteAt, parts });
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
async function withReader(dir, task) {
|
|
216
|
-
try {
|
|
217
|
-
return await withOwner(dir, (owner) => task(owner));
|
|
218
|
-
} catch (error) {
|
|
219
|
-
if (!(error instanceof HistoryBusyError)) throw error;
|
|
220
|
-
}
|
|
221
|
-
const view = readProjectHistory({
|
|
222
|
-
projectDir: resolveProject(dir).dir,
|
|
223
|
-
historyRoot: historyDeps.historyRoot
|
|
224
|
-
});
|
|
225
|
-
return task({
|
|
226
|
-
via: "direct",
|
|
227
|
-
list: async () => view.list(),
|
|
228
|
-
peek: async (point) => view.peek(point),
|
|
229
|
-
// The owner may have pruned a blob since its log was read.
|
|
230
|
-
blob: (hash) => view.readBlob(hash).catch((error) => {
|
|
231
|
-
throw error.code === "ENOENT" ? new Refusal("That point is no longer kept") : error;
|
|
232
|
-
})
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// src/commands/history.ts
|
|
237
64
|
var examples = [
|
|
238
65
|
[
|
|
239
66
|
"What changed since your last turn, and who changed it",
|
|
@@ -260,6 +87,25 @@ function lastIndex(items, match) {
|
|
|
260
87
|
for (let index = items.length - 1; index >= 0; index -= 1) if (match(items[index])) return index;
|
|
261
88
|
return -1;
|
|
262
89
|
}
|
|
90
|
+
async function latestWrite(owner, turn) {
|
|
91
|
+
const entries = await owner.list();
|
|
92
|
+
return entries.reduce((latest, entry) => {
|
|
93
|
+
const same = entry.id === turn.id || turn.parts.includes(entry.id) || entry.who.kind === turn.who.kind && entry.who.name === turn.who.name && entry.label === turn.label && entry.startedAt === turn.startedAt;
|
|
94
|
+
return same ? Math.max(latest, entry.endedAt) : latest;
|
|
95
|
+
}, turn.lastWriteAt);
|
|
96
|
+
}
|
|
97
|
+
async function releaseOpenTurn(owner, turn, who, exclusive, projectDir) {
|
|
98
|
+
if (!turn) return;
|
|
99
|
+
if (owner.via !== "direct") {
|
|
100
|
+
if (!exclusive || turn.who.name === who.name) await endTurn(owner, turn, projectDir);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const latest = await latestWrite(owner, turn);
|
|
104
|
+
const live = historyDeps.now() - latest <= historyDeps.turnIdleMs;
|
|
105
|
+
if (exclusive && live && turn.who.name !== who.name)
|
|
106
|
+
throw new Refusal(`${turn.who.name}'s turn is open; it has to end before yours begins`);
|
|
107
|
+
await endTurn(owner, turn, projectDir);
|
|
108
|
+
}
|
|
263
109
|
function entryOf(entries, ref) {
|
|
264
110
|
const found = entries.filter((entry) => entry.id.startsWith(ref));
|
|
265
111
|
if (found.length === 1) return found[0];
|
|
@@ -297,6 +143,12 @@ function ago(at) {
|
|
|
297
143
|
if (seconds < 86400) return `${Math.round(seconds / 3600)}h ago`;
|
|
298
144
|
return `${Math.round(seconds / 86400)}d ago`;
|
|
299
145
|
}
|
|
146
|
+
function endedTurnText(entry, parts) {
|
|
147
|
+
const earlier = parts.length - (entry ? 1 : 0);
|
|
148
|
+
const text = entry ? line(entry) : earlier ? "Nothing changed since this turn's last command." : "Nothing changed in this turn.";
|
|
149
|
+
return earlier ? `${text}
|
|
150
|
+
(+${earlier} earlier part${earlier > 1 ? "s" : ""})` : text;
|
|
151
|
+
}
|
|
300
152
|
function line(entry) {
|
|
301
153
|
const paths = entry.files.map((file) => file.path);
|
|
302
154
|
const files = paths.slice(0, 2).join(", ") + (paths.length > 2 ? ` +${paths.length - 2}` : "");
|
|
@@ -318,7 +170,7 @@ function print(json, data, text) {
|
|
|
318
170
|
console.log(json ? JSON.stringify(withMeta(data), null, 2) : text);
|
|
319
171
|
}
|
|
320
172
|
async function textDiff(reader, entry) {
|
|
321
|
-
const work = mkdtempSync(
|
|
173
|
+
const work = mkdtempSync(join(tmpdir(), "hf-history-diff-"));
|
|
322
174
|
try {
|
|
323
175
|
const out = [];
|
|
324
176
|
for (const file of entry.files) {
|
|
@@ -330,9 +182,9 @@ async function textDiff(reader, entry) {
|
|
|
330
182
|
continue;
|
|
331
183
|
}
|
|
332
184
|
const [a, b] = ["a", "b"].map((side, index) => {
|
|
333
|
-
const path =
|
|
334
|
-
|
|
335
|
-
|
|
185
|
+
const path = join(side, file.path);
|
|
186
|
+
mkdirSync(dirname(join(work, path)), { recursive: true });
|
|
187
|
+
writeFileSync(join(work, path), sides[index]);
|
|
336
188
|
return path;
|
|
337
189
|
});
|
|
338
190
|
const diff = spawnSync("git", ["diff", "--no-index", "--no-color", "--no-prefix", a, b], {
|
|
@@ -344,7 +196,7 @@ async function textDiff(reader, entry) {
|
|
|
344
196
|
}
|
|
345
197
|
return out.join("\n");
|
|
346
198
|
} finally {
|
|
347
|
-
|
|
199
|
+
rmSync(work, { recursive: true, force: true });
|
|
348
200
|
}
|
|
349
201
|
}
|
|
350
202
|
function conflictText(entry, newer, files, again) {
|
|
@@ -537,11 +389,23 @@ ${diff ?? marks.join("\n")}`
|
|
|
537
389
|
begin: () => sub(
|
|
538
390
|
"begin",
|
|
539
391
|
"Start a turn: your writes until `end` become one entry under your name",
|
|
540
|
-
{
|
|
392
|
+
{
|
|
393
|
+
who: { type: "string", required: true },
|
|
394
|
+
label: { type: "string", required: true },
|
|
395
|
+
exclusive: {
|
|
396
|
+
type: "boolean",
|
|
397
|
+
default: false,
|
|
398
|
+
description: "Refuse while another agent's turn is open, instead of ending it"
|
|
399
|
+
}
|
|
400
|
+
},
|
|
541
401
|
(args) => withOwner2("begin", args.dir, async (owner, turn, projectDir) => {
|
|
542
|
-
if (turn) await endTurn(owner, turn, projectDir);
|
|
543
402
|
const who = whoOf(args.who);
|
|
544
|
-
|
|
403
|
+
await releaseOpenTurn(owner, turn, who, args.exclusive, projectDir);
|
|
404
|
+
const { id, startedAt } = await owner.begin(
|
|
405
|
+
who,
|
|
406
|
+
args.label,
|
|
407
|
+
args.exclusive && owner.via === "preview"
|
|
408
|
+
);
|
|
545
409
|
writeTurn(projectDir, {
|
|
546
410
|
via: owner.via,
|
|
547
411
|
id,
|
|
@@ -557,17 +421,25 @@ ${diff ?? marks.join("\n")}`
|
|
|
557
421
|
end: () => sub(
|
|
558
422
|
"end",
|
|
559
423
|
"End your turn and print its entry",
|
|
560
|
-
{
|
|
424
|
+
{
|
|
425
|
+
who: { type: "string", description: "Refuse unless the open turn is this agent's" },
|
|
426
|
+
"if-open": {
|
|
427
|
+
type: "boolean",
|
|
428
|
+
default: false,
|
|
429
|
+
description: "Succeed with no entry when no turn is open"
|
|
430
|
+
}
|
|
431
|
+
},
|
|
561
432
|
(args) => withOwner2("end", args.dir, async (owner, turn, projectDir) => {
|
|
433
|
+
if (!turn && args.ifOpen)
|
|
434
|
+
return print(args.json, { entry: null, parts: [] }, "No turn is open.");
|
|
562
435
|
if (!turn) throw new Refusal("No turn is open; start one with history begin");
|
|
436
|
+
if (args.who !== void 0 && turn.who.name !== args.who)
|
|
437
|
+
throw new Refusal(`The open turn is ${turn.who.name}'s, not ${args.who}'s`);
|
|
563
438
|
const { entry, parts } = await endTurn(owner, turn, projectDir);
|
|
564
|
-
const earlier = parts.length - (entry ? 1 : 0);
|
|
565
|
-
const text = entry ? line(entry) : earlier ? "Nothing changed since this turn's last command." : "Nothing changed in this turn.";
|
|
566
439
|
print(
|
|
567
440
|
args.json,
|
|
568
441
|
{ entry: entry && publicEntry(entry), parts },
|
|
569
|
-
|
|
570
|
-
(+${earlier} earlier part${earlier > 1 ? "s" : ""})` : text
|
|
442
|
+
endedTurnText(entry, parts)
|
|
571
443
|
);
|
|
572
444
|
})
|
|
573
445
|
)
|