@prestyj/editor 0.7.1
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 +21 -0
- package/README.md +457 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +278 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/ass.d.ts +75 -0
- package/dist/core/ass.d.ts.map +1 -0
- package/dist/core/ass.js +128 -0
- package/dist/core/ass.js.map +1 -0
- package/dist/core/ass.test.d.ts +2 -0
- package/dist/core/ass.test.d.ts.map +1 -0
- package/dist/core/ass.test.js +112 -0
- package/dist/core/ass.test.js.map +1 -0
- package/dist/core/audio-cleanup.d.ts +16 -0
- package/dist/core/audio-cleanup.d.ts.map +1 -0
- package/dist/core/audio-cleanup.js +79 -0
- package/dist/core/audio-cleanup.js.map +1 -0
- package/dist/core/audio-cleanup.test.d.ts +2 -0
- package/dist/core/audio-cleanup.test.d.ts.map +1 -0
- package/dist/core/audio-cleanup.test.js +41 -0
- package/dist/core/audio-cleanup.test.js.map +1 -0
- package/dist/core/audio-mix.d.ts +89 -0
- package/dist/core/audio-mix.d.ts.map +1 -0
- package/dist/core/audio-mix.js +163 -0
- package/dist/core/audio-mix.js.map +1 -0
- package/dist/core/audio-mix.test.d.ts +2 -0
- package/dist/core/audio-mix.test.d.ts.map +1 -0
- package/dist/core/audio-mix.test.js +91 -0
- package/dist/core/audio-mix.test.js.map +1 -0
- package/dist/core/auth/api-keys.d.ts +18 -0
- package/dist/core/auth/api-keys.d.ts.map +1 -0
- package/dist/core/auth/api-keys.js +73 -0
- package/dist/core/auth/api-keys.js.map +1 -0
- package/dist/core/auth/index.d.ts +20 -0
- package/dist/core/auth/index.d.ts.map +1 -0
- package/dist/core/auth/index.js +18 -0
- package/dist/core/auth/index.js.map +1 -0
- package/dist/core/auth/login.d.ts +13 -0
- package/dist/core/auth/login.d.ts.map +1 -0
- package/dist/core/auth/login.js +176 -0
- package/dist/core/auth/login.js.map +1 -0
- package/dist/core/auth/types.d.ts +22 -0
- package/dist/core/auth/types.d.ts.map +1 -0
- package/dist/core/auth/types.js +12 -0
- package/dist/core/auth/types.js.map +1 -0
- package/dist/core/beats.d.ts +59 -0
- package/dist/core/beats.d.ts.map +1 -0
- package/dist/core/beats.js +122 -0
- package/dist/core/beats.js.map +1 -0
- package/dist/core/beats.test.d.ts +2 -0
- package/dist/core/beats.test.d.ts.map +1 -0
- package/dist/core/beats.test.js +86 -0
- package/dist/core/beats.test.js.map +1 -0
- package/dist/core/brand-kit.d.ts +80 -0
- package/dist/core/brand-kit.d.ts.map +1 -0
- package/dist/core/brand-kit.js +96 -0
- package/dist/core/brand-kit.js.map +1 -0
- package/dist/core/brand-kit.test.d.ts +2 -0
- package/dist/core/brand-kit.test.d.ts.map +1 -0
- package/dist/core/brand-kit.test.js +76 -0
- package/dist/core/brand-kit.test.js.map +1 -0
- package/dist/core/bundled-sfx.d.ts +64 -0
- package/dist/core/bundled-sfx.d.ts.map +1 -0
- package/dist/core/bundled-sfx.js +218 -0
- package/dist/core/bundled-sfx.js.map +1 -0
- package/dist/core/bundled-sfx.test.d.ts +2 -0
- package/dist/core/bundled-sfx.test.d.ts.map +1 -0
- package/dist/core/bundled-sfx.test.js +81 -0
- package/dist/core/bundled-sfx.test.js.map +1 -0
- package/dist/core/child-abort.d.ts +57 -0
- package/dist/core/child-abort.d.ts.map +1 -0
- package/dist/core/child-abort.js +95 -0
- package/dist/core/child-abort.js.map +1 -0
- package/dist/core/child-abort.test.d.ts +2 -0
- package/dist/core/child-abort.test.d.ts.map +1 -0
- package/dist/core/child-abort.test.js +88 -0
- package/dist/core/child-abort.test.js.map +1 -0
- package/dist/core/cli-banner.d.ts +16 -0
- package/dist/core/cli-banner.d.ts.map +1 -0
- package/dist/core/cli-banner.js +75 -0
- package/dist/core/cli-banner.js.map +1 -0
- package/dist/core/clip-scoring.d.ts +44 -0
- package/dist/core/clip-scoring.d.ts.map +1 -0
- package/dist/core/clip-scoring.js +165 -0
- package/dist/core/clip-scoring.js.map +1 -0
- package/dist/core/clip-scoring.test.d.ts +2 -0
- package/dist/core/clip-scoring.test.d.ts.map +1 -0
- package/dist/core/clip-scoring.test.js +113 -0
- package/dist/core/clip-scoring.test.js.map +1 -0
- package/dist/core/clustering.d.ts +52 -0
- package/dist/core/clustering.d.ts.map +1 -0
- package/dist/core/clustering.js +163 -0
- package/dist/core/clustering.js.map +1 -0
- package/dist/core/clustering.test.d.ts +2 -0
- package/dist/core/clustering.test.d.ts.map +1 -0
- package/dist/core/clustering.test.js +112 -0
- package/dist/core/clustering.test.js.map +1 -0
- package/dist/core/color-match.d.ts +19 -0
- package/dist/core/color-match.d.ts.map +1 -0
- package/dist/core/color-match.js +119 -0
- package/dist/core/color-match.js.map +1 -0
- package/dist/core/color-match.test.d.ts +2 -0
- package/dist/core/color-match.test.d.ts.map +1 -0
- package/dist/core/color-match.test.js +40 -0
- package/dist/core/color-match.test.js.map +1 -0
- package/dist/core/doctor-render.d.ts +9 -0
- package/dist/core/doctor-render.d.ts.map +1 -0
- package/dist/core/doctor-render.js +145 -0
- package/dist/core/doctor-render.js.map +1 -0
- package/dist/core/doctor-render.test.d.ts +2 -0
- package/dist/core/doctor-render.test.d.ts.map +1 -0
- package/dist/core/doctor-render.test.js +151 -0
- package/dist/core/doctor-render.test.js.map +1 -0
- package/dist/core/doctor-runner.d.ts +17 -0
- package/dist/core/doctor-runner.d.ts.map +1 -0
- package/dist/core/doctor-runner.js +419 -0
- package/dist/core/doctor-runner.js.map +1 -0
- package/dist/core/doctor.d.ts +120 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +413 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/doctor.test.d.ts +2 -0
- package/dist/core/doctor.test.d.ts.map +1 -0
- package/dist/core/doctor.test.js +131 -0
- package/dist/core/doctor.test.js.map +1 -0
- package/dist/core/ducking.d.ts +37 -0
- package/dist/core/ducking.d.ts.map +1 -0
- package/dist/core/ducking.js +71 -0
- package/dist/core/ducking.js.map +1 -0
- package/dist/core/ducking.test.d.ts +2 -0
- package/dist/core/ducking.test.d.ts.map +1 -0
- package/dist/core/ducking.test.js +38 -0
- package/dist/core/ducking.test.js.map +1 -0
- package/dist/core/edl-roundtrip.test.d.ts +2 -0
- package/dist/core/edl-roundtrip.test.d.ts.map +1 -0
- package/dist/core/edl-roundtrip.test.js +171 -0
- package/dist/core/edl-roundtrip.test.js.map +1 -0
- package/dist/core/edl.d.ts +41 -0
- package/dist/core/edl.d.ts.map +1 -0
- package/dist/core/edl.js +56 -0
- package/dist/core/edl.js.map +1 -0
- package/dist/core/edl.test.d.ts +2 -0
- package/dist/core/edl.test.d.ts.map +1 -0
- package/dist/core/edl.test.js +62 -0
- package/dist/core/edl.test.js.map +1 -0
- package/dist/core/emoji-captions.d.ts +45 -0
- package/dist/core/emoji-captions.d.ts.map +1 -0
- package/dist/core/emoji-captions.js +121 -0
- package/dist/core/emoji-captions.js.map +1 -0
- package/dist/core/envelope-sync.d.ts +52 -0
- package/dist/core/envelope-sync.d.ts.map +1 -0
- package/dist/core/envelope-sync.js +169 -0
- package/dist/core/envelope-sync.js.map +1 -0
- package/dist/core/envelope-sync.test.d.ts +2 -0
- package/dist/core/envelope-sync.test.d.ts.map +1 -0
- package/dist/core/envelope-sync.test.js +70 -0
- package/dist/core/envelope-sync.test.js.map +1 -0
- package/dist/core/face-reframe.d.ts +91 -0
- package/dist/core/face-reframe.d.ts.map +1 -0
- package/dist/core/face-reframe.js +141 -0
- package/dist/core/face-reframe.js.map +1 -0
- package/dist/core/face-reframe.test.d.ts +2 -0
- package/dist/core/face-reframe.test.d.ts.map +1 -0
- package/dist/core/face-reframe.test.js +171 -0
- package/dist/core/face-reframe.test.js.map +1 -0
- package/dist/core/fcpxml-roundtrip.test.d.ts +2 -0
- package/dist/core/fcpxml-roundtrip.test.d.ts.map +1 -0
- package/dist/core/fcpxml-roundtrip.test.js +251 -0
- package/dist/core/fcpxml-roundtrip.test.js.map +1 -0
- package/dist/core/fcpxml.d.ts +172 -0
- package/dist/core/fcpxml.d.ts.map +1 -0
- package/dist/core/fcpxml.js +406 -0
- package/dist/core/fcpxml.js.map +1 -0
- package/dist/core/fcpxml.test.d.ts +2 -0
- package/dist/core/fcpxml.test.d.ts.map +1 -0
- package/dist/core/fcpxml.test.js +360 -0
- package/dist/core/fcpxml.test.js.map +1 -0
- package/dist/core/filler-words.d.ts +155 -0
- package/dist/core/filler-words.d.ts.map +1 -0
- package/dist/core/filler-words.js +273 -0
- package/dist/core/filler-words.js.map +1 -0
- package/dist/core/filler-words.test.d.ts +2 -0
- package/dist/core/filler-words.test.d.ts.map +1 -0
- package/dist/core/filler-words.test.js +251 -0
- package/dist/core/filler-words.test.js.map +1 -0
- package/dist/core/format.d.ts +36 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +57 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/format.test.d.ts +2 -0
- package/dist/core/format.test.d.ts.map +1 -0
- package/dist/core/format.test.js +81 -0
- package/dist/core/format.test.js.map +1 -0
- package/dist/core/frames.d.ts +35 -0
- package/dist/core/frames.d.ts.map +1 -0
- package/dist/core/frames.js +64 -0
- package/dist/core/frames.js.map +1 -0
- package/dist/core/hook-analysis.d.ts +90 -0
- package/dist/core/hook-analysis.d.ts.map +1 -0
- package/dist/core/hook-analysis.js +223 -0
- package/dist/core/hook-analysis.js.map +1 -0
- package/dist/core/hook-analysis.test.d.ts +2 -0
- package/dist/core/hook-analysis.test.d.ts.map +1 -0
- package/dist/core/hook-analysis.test.js +130 -0
- package/dist/core/hook-analysis.test.js.map +1 -0
- package/dist/core/hook-rewrite.d.ts +48 -0
- package/dist/core/hook-rewrite.d.ts.map +1 -0
- package/dist/core/hook-rewrite.js +151 -0
- package/dist/core/hook-rewrite.js.map +1 -0
- package/dist/core/hook-rewrite.test.d.ts +2 -0
- package/dist/core/hook-rewrite.test.d.ts.map +1 -0
- package/dist/core/hook-rewrite.test.js +58 -0
- package/dist/core/hook-rewrite.test.js.map +1 -0
- package/dist/core/hosts/detect.d.ts +17 -0
- package/dist/core/hosts/detect.d.ts.map +1 -0
- package/dist/core/hosts/detect.js +64 -0
- package/dist/core/hosts/detect.js.map +1 -0
- package/dist/core/hosts/detect.test.d.ts +2 -0
- package/dist/core/hosts/detect.test.d.ts.map +1 -0
- package/dist/core/hosts/detect.test.js +17 -0
- package/dist/core/hosts/detect.test.js.map +1 -0
- package/dist/core/hosts/index.d.ts +13 -0
- package/dist/core/hosts/index.d.ts.map +1 -0
- package/dist/core/hosts/index.js +30 -0
- package/dist/core/hosts/index.js.map +1 -0
- package/dist/core/hosts/lazy.d.ts +53 -0
- package/dist/core/hosts/lazy.d.ts.map +1 -0
- package/dist/core/hosts/lazy.js +143 -0
- package/dist/core/hosts/lazy.js.map +1 -0
- package/dist/core/hosts/lazy.test.d.ts +2 -0
- package/dist/core/hosts/lazy.test.d.ts.map +1 -0
- package/dist/core/hosts/lazy.test.js +117 -0
- package/dist/core/hosts/lazy.test.js.map +1 -0
- package/dist/core/hosts/none/adapter.d.ts +74 -0
- package/dist/core/hosts/none/adapter.d.ts.map +1 -0
- package/dist/core/hosts/none/adapter.js +99 -0
- package/dist/core/hosts/none/adapter.js.map +1 -0
- package/dist/core/hosts/premiere/adapter.d.ts +91 -0
- package/dist/core/hosts/premiere/adapter.d.ts.map +1 -0
- package/dist/core/hosts/premiere/adapter.js +219 -0
- package/dist/core/hosts/premiere/adapter.js.map +1 -0
- package/dist/core/hosts/premiere/bridge-source.d.ts +26 -0
- package/dist/core/hosts/premiere/bridge-source.d.ts.map +1 -0
- package/dist/core/hosts/premiere/bridge-source.js +374 -0
- package/dist/core/hosts/premiere/bridge-source.js.map +1 -0
- package/dist/core/hosts/premiere/bridge-source.test.d.ts +2 -0
- package/dist/core/hosts/premiere/bridge-source.test.d.ts.map +1 -0
- package/dist/core/hosts/premiere/bridge-source.test.js +36 -0
- package/dist/core/hosts/premiere/bridge-source.test.js.map +1 -0
- package/dist/core/hosts/premiere/bridge.d.ts +38 -0
- package/dist/core/hosts/premiere/bridge.d.ts.map +1 -0
- package/dist/core/hosts/premiere/bridge.js +238 -0
- package/dist/core/hosts/premiere/bridge.js.map +1 -0
- package/dist/core/hosts/premiere/http-bridge.d.ts +47 -0
- package/dist/core/hosts/premiere/http-bridge.d.ts.map +1 -0
- package/dist/core/hosts/premiere/http-bridge.js +82 -0
- package/dist/core/hosts/premiere/http-bridge.js.map +1 -0
- package/dist/core/hosts/premiere/http-bridge.test.d.ts +2 -0
- package/dist/core/hosts/premiere/http-bridge.test.d.ts.map +1 -0
- package/dist/core/hosts/premiere/http-bridge.test.js +113 -0
- package/dist/core/hosts/premiere/http-bridge.test.js.map +1 -0
- package/dist/core/hosts/premiere/ws-bridge.d.ts +91 -0
- package/dist/core/hosts/premiere/ws-bridge.d.ts.map +1 -0
- package/dist/core/hosts/premiere/ws-bridge.js +303 -0
- package/dist/core/hosts/premiere/ws-bridge.js.map +1 -0
- package/dist/core/hosts/premiere/ws-bridge.test.d.ts +2 -0
- package/dist/core/hosts/premiere/ws-bridge.test.d.ts.map +1 -0
- package/dist/core/hosts/premiere/ws-bridge.test.js +146 -0
- package/dist/core/hosts/premiere/ws-bridge.test.js.map +1 -0
- package/dist/core/hosts/resolve/adapter.d.ts +104 -0
- package/dist/core/hosts/resolve/adapter.d.ts.map +1 -0
- package/dist/core/hosts/resolve/adapter.js +195 -0
- package/dist/core/hosts/resolve/adapter.js.map +1 -0
- package/dist/core/hosts/resolve/bridge-source.d.ts +17 -0
- package/dist/core/hosts/resolve/bridge-source.d.ts.map +1 -0
- package/dist/core/hosts/resolve/bridge-source.js +1061 -0
- package/dist/core/hosts/resolve/bridge-source.js.map +1 -0
- package/dist/core/hosts/resolve/bridge.d.ts +52 -0
- package/dist/core/hosts/resolve/bridge.d.ts.map +1 -0
- package/dist/core/hosts/resolve/bridge.integration.test.d.ts +2 -0
- package/dist/core/hosts/resolve/bridge.integration.test.d.ts.map +1 -0
- package/dist/core/hosts/resolve/bridge.integration.test.js +810 -0
- package/dist/core/hosts/resolve/bridge.integration.test.js.map +1 -0
- package/dist/core/hosts/resolve/bridge.js +349 -0
- package/dist/core/hosts/resolve/bridge.js.map +1 -0
- package/dist/core/hosts/resolve/bridge.test.d.ts +2 -0
- package/dist/core/hosts/resolve/bridge.test.d.ts.map +1 -0
- package/dist/core/hosts/resolve/bridge.test.js +240 -0
- package/dist/core/hosts/resolve/bridge.test.js.map +1 -0
- package/dist/core/hosts/types.d.ts +254 -0
- package/dist/core/hosts/types.d.ts.map +1 -0
- package/dist/core/hosts/types.js +27 -0
- package/dist/core/hosts/types.js.map +1 -0
- package/dist/core/keyframes.d.ts +35 -0
- package/dist/core/keyframes.d.ts.map +1 -0
- package/dist/core/keyframes.js +90 -0
- package/dist/core/keyframes.js.map +1 -0
- package/dist/core/keyframes.test.d.ts +2 -0
- package/dist/core/keyframes.test.d.ts.map +1 -0
- package/dist/core/keyframes.test.js +73 -0
- package/dist/core/keyframes.test.js.map +1 -0
- package/dist/core/keyword-captions.d.ts +75 -0
- package/dist/core/keyword-captions.d.ts.map +1 -0
- package/dist/core/keyword-captions.js +285 -0
- package/dist/core/keyword-captions.js.map +1 -0
- package/dist/core/keyword-captions.test.d.ts +2 -0
- package/dist/core/keyword-captions.test.d.ts.map +1 -0
- package/dist/core/keyword-captions.test.js +90 -0
- package/dist/core/keyword-captions.test.js.map +1 -0
- package/dist/core/logger.d.ts +32 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +188 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/loop-match.d.ts +57 -0
- package/dist/core/loop-match.d.ts.map +1 -0
- package/dist/core/loop-match.js +91 -0
- package/dist/core/loop-match.js.map +1 -0
- package/dist/core/loudness.d.ts +52 -0
- package/dist/core/loudness.d.ts.map +1 -0
- package/dist/core/loudness.js +120 -0
- package/dist/core/loudness.js.map +1 -0
- package/dist/core/loudness.test.d.ts +2 -0
- package/dist/core/loudness.test.d.ts.map +1 -0
- package/dist/core/loudness.test.js +34 -0
- package/dist/core/loudness.test.js.map +1 -0
- package/dist/core/marker-colors.d.ts +39 -0
- package/dist/core/marker-colors.d.ts.map +1 -0
- package/dist/core/marker-colors.js +83 -0
- package/dist/core/marker-colors.js.map +1 -0
- package/dist/core/marker-colors.test.d.ts +2 -0
- package/dist/core/marker-colors.test.d.ts.map +1 -0
- package/dist/core/marker-colors.test.js +116 -0
- package/dist/core/marker-colors.test.js.map +1 -0
- package/dist/core/media/ffmpeg.d.ts +27 -0
- package/dist/core/media/ffmpeg.d.ts.map +1 -0
- package/dist/core/media/ffmpeg.js +64 -0
- package/dist/core/media/ffmpeg.js.map +1 -0
- package/dist/core/multi-format.d.ts +67 -0
- package/dist/core/multi-format.d.ts.map +1 -0
- package/dist/core/multi-format.js +127 -0
- package/dist/core/multi-format.js.map +1 -0
- package/dist/core/multi-format.test.d.ts +2 -0
- package/dist/core/multi-format.test.d.ts.map +1 -0
- package/dist/core/multi-format.test.js +151 -0
- package/dist/core/multi-format.test.js.map +1 -0
- package/dist/core/multicam.d.ts +40 -0
- package/dist/core/multicam.d.ts.map +1 -0
- package/dist/core/multicam.js +77 -0
- package/dist/core/multicam.js.map +1 -0
- package/dist/core/multicam.test.d.ts +2 -0
- package/dist/core/multicam.test.d.ts.map +1 -0
- package/dist/core/multicam.test.js +56 -0
- package/dist/core/multicam.test.js.map +1 -0
- package/dist/core/punch-in.d.ts +72 -0
- package/dist/core/punch-in.d.ts.map +1 -0
- package/dist/core/punch-in.js +133 -0
- package/dist/core/punch-in.js.map +1 -0
- package/dist/core/punch-in.test.d.ts +2 -0
- package/dist/core/punch-in.test.d.ts.map +1 -0
- package/dist/core/punch-in.test.js +118 -0
- package/dist/core/punch-in.test.js.map +1 -0
- package/dist/core/python/beats.py +61 -0
- package/dist/core/python/face_reframe.py +163 -0
- package/dist/core/python/sidecar-path.d.ts +13 -0
- package/dist/core/python/sidecar-path.d.ts.map +1 -0
- package/dist/core/python/sidecar-path.js +24 -0
- package/dist/core/python/sidecar-path.js.map +1 -0
- package/dist/core/python.d.ts +57 -0
- package/dist/core/python.d.ts.map +1 -0
- package/dist/core/python.js +107 -0
- package/dist/core/python.js.map +1 -0
- package/dist/core/python.test.d.ts +2 -0
- package/dist/core/python.test.d.ts.map +1 -0
- package/dist/core/python.test.js +129 -0
- package/dist/core/python.test.js.map +1 -0
- package/dist/core/reformat.d.ts +26 -0
- package/dist/core/reformat.d.ts.map +1 -0
- package/dist/core/reformat.js +31 -0
- package/dist/core/reformat.js.map +1 -0
- package/dist/core/reformat.test.d.ts +2 -0
- package/dist/core/reformat.test.d.ts.map +1 -0
- package/dist/core/reformat.test.js +29 -0
- package/dist/core/reformat.test.js.map +1 -0
- package/dist/core/reorder.d.ts +42 -0
- package/dist/core/reorder.d.ts.map +1 -0
- package/dist/core/reorder.js +80 -0
- package/dist/core/reorder.js.map +1 -0
- package/dist/core/reorder.test.d.ts +2 -0
- package/dist/core/reorder.test.d.ts.map +1 -0
- package/dist/core/reorder.test.js +88 -0
- package/dist/core/reorder.test.js.map +1 -0
- package/dist/core/retention-structure.d.ts +81 -0
- package/dist/core/retention-structure.d.ts.map +1 -0
- package/dist/core/retention-structure.js +206 -0
- package/dist/core/retention-structure.js.map +1 -0
- package/dist/core/retention-structure.test.d.ts +2 -0
- package/dist/core/retention-structure.test.d.ts.map +1 -0
- package/dist/core/retention-structure.test.js +88 -0
- package/dist/core/retention-structure.test.js.map +1 -0
- package/dist/core/review.d.ts +55 -0
- package/dist/core/review.d.ts.map +1 -0
- package/dist/core/review.js +124 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/review.test.d.ts +2 -0
- package/dist/core/review.test.d.ts.map +1 -0
- package/dist/core/review.test.js +76 -0
- package/dist/core/review.test.js.map +1 -0
- package/dist/core/safe-paths.d.ts +58 -0
- package/dist/core/safe-paths.d.ts.map +1 -0
- package/dist/core/safe-paths.js +118 -0
- package/dist/core/safe-paths.js.map +1 -0
- package/dist/core/safe-paths.test.d.ts +2 -0
- package/dist/core/safe-paths.test.d.ts.map +1 -0
- package/dist/core/safe-paths.test.js +92 -0
- package/dist/core/safe-paths.test.js.map +1 -0
- package/dist/core/sessions.d.ts +40 -0
- package/dist/core/sessions.d.ts.map +1 -0
- package/dist/core/sessions.js +61 -0
- package/dist/core/sessions.js.map +1 -0
- package/dist/core/sfx-on-cuts.d.ts +60 -0
- package/dist/core/sfx-on-cuts.d.ts.map +1 -0
- package/dist/core/sfx-on-cuts.js +90 -0
- package/dist/core/sfx-on-cuts.js.map +1 -0
- package/dist/core/sfx-on-cuts.test.d.ts +2 -0
- package/dist/core/sfx-on-cuts.test.d.ts.map +1 -0
- package/dist/core/sfx-on-cuts.test.js +53 -0
- package/dist/core/sfx-on-cuts.test.js.map +1 -0
- package/dist/core/silence.d.ts +41 -0
- package/dist/core/silence.d.ts.map +1 -0
- package/dist/core/silence.js +104 -0
- package/dist/core/silence.js.map +1 -0
- package/dist/core/silence.test.d.ts +2 -0
- package/dist/core/silence.test.d.ts.map +1 -0
- package/dist/core/silence.test.js +143 -0
- package/dist/core/silence.test.js.map +1 -0
- package/dist/core/skills-loader.d.ts +80 -0
- package/dist/core/skills-loader.d.ts.map +1 -0
- package/dist/core/skills-loader.js +161 -0
- package/dist/core/skills-loader.js.map +1 -0
- package/dist/core/skills-loader.test.d.ts +2 -0
- package/dist/core/skills-loader.test.d.ts.map +1 -0
- package/dist/core/skills-loader.test.js +130 -0
- package/dist/core/skills-loader.test.js.map +1 -0
- package/dist/core/skin-grade.d.ts +62 -0
- package/dist/core/skin-grade.d.ts.map +1 -0
- package/dist/core/skin-grade.js +271 -0
- package/dist/core/skin-grade.js.map +1 -0
- package/dist/core/skin-grade.test.d.ts +2 -0
- package/dist/core/skin-grade.test.d.ts.map +1 -0
- package/dist/core/skin-grade.test.js +182 -0
- package/dist/core/skin-grade.test.js.map +1 -0
- package/dist/core/speaker-changes.d.ts +30 -0
- package/dist/core/speaker-changes.d.ts.map +1 -0
- package/dist/core/speaker-changes.js +19 -0
- package/dist/core/speaker-changes.js.map +1 -0
- package/dist/core/speaker-changes.test.d.ts +2 -0
- package/dist/core/speaker-changes.test.d.ts.map +1 -0
- package/dist/core/speaker-changes.test.js +46 -0
- package/dist/core/speaker-changes.test.js.map +1 -0
- package/dist/core/speed-ramp.d.ts +60 -0
- package/dist/core/speed-ramp.d.ts.map +1 -0
- package/dist/core/speed-ramp.js +113 -0
- package/dist/core/speed-ramp.js.map +1 -0
- package/dist/core/speed-ramp.test.d.ts +2 -0
- package/dist/core/speed-ramp.test.d.ts.map +1 -0
- package/dist/core/speed-ramp.test.js +74 -0
- package/dist/core/speed-ramp.test.js.map +1 -0
- package/dist/core/srt.d.ts +91 -0
- package/dist/core/srt.d.ts.map +1 -0
- package/dist/core/srt.js +159 -0
- package/dist/core/srt.js.map +1 -0
- package/dist/core/srt.test.d.ts +2 -0
- package/dist/core/srt.test.d.ts.map +1 -0
- package/dist/core/srt.test.js +160 -0
- package/dist/core/srt.test.js.map +1 -0
- package/dist/core/stabilize.d.ts +15 -0
- package/dist/core/stabilize.d.ts.map +1 -0
- package/dist/core/stabilize.js +69 -0
- package/dist/core/stabilize.js.map +1 -0
- package/dist/core/styles-loader.d.ts +33 -0
- package/dist/core/styles-loader.d.ts.map +1 -0
- package/dist/core/styles-loader.js +67 -0
- package/dist/core/styles-loader.js.map +1 -0
- package/dist/core/styles-loader.test.d.ts +2 -0
- package/dist/core/styles-loader.test.d.ts.map +1 -0
- package/dist/core/styles-loader.test.js +72 -0
- package/dist/core/styles-loader.test.js.map +1 -0
- package/dist/core/text-overlay.d.ts +76 -0
- package/dist/core/text-overlay.d.ts.map +1 -0
- package/dist/core/text-overlay.js +233 -0
- package/dist/core/text-overlay.js.map +1 -0
- package/dist/core/text-overlay.test.d.ts +2 -0
- package/dist/core/text-overlay.test.d.ts.map +1 -0
- package/dist/core/text-overlay.test.js +103 -0
- package/dist/core/text-overlay.test.js.map +1 -0
- package/dist/core/thumbnail-compose.d.ts +58 -0
- package/dist/core/thumbnail-compose.d.ts.map +1 -0
- package/dist/core/thumbnail-compose.js +101 -0
- package/dist/core/thumbnail-compose.js.map +1 -0
- package/dist/core/thumbnail-promise.d.ts +46 -0
- package/dist/core/thumbnail-promise.d.ts.map +1 -0
- package/dist/core/thumbnail-promise.js +133 -0
- package/dist/core/thumbnail-promise.js.map +1 -0
- package/dist/core/thumbnail-promise.test.d.ts +2 -0
- package/dist/core/thumbnail-promise.test.d.ts.map +1 -0
- package/dist/core/thumbnail-promise.test.js +52 -0
- package/dist/core/thumbnail-promise.test.js.map +1 -0
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +26 -0
- package/dist/core/version.js.map +1 -0
- package/dist/core/viral-moments.d.ts +70 -0
- package/dist/core/viral-moments.d.ts.map +1 -0
- package/dist/core/viral-moments.js +192 -0
- package/dist/core/viral-moments.js.map +1 -0
- package/dist/core/viral-moments.test.d.ts +2 -0
- package/dist/core/viral-moments.test.d.ts.map +1 -0
- package/dist/core/viral-moments.test.js +153 -0
- package/dist/core/viral-moments.test.js.map +1 -0
- package/dist/core/vision.d.ts +53 -0
- package/dist/core/vision.d.ts.map +1 -0
- package/dist/core/vision.js +151 -0
- package/dist/core/vision.js.map +1 -0
- package/dist/core/vision.test.d.ts +2 -0
- package/dist/core/vision.test.d.ts.map +1 -0
- package/dist/core/vision.test.js +76 -0
- package/dist/core/vision.test.js.map +1 -0
- package/dist/core/whisper.d.ts +204 -0
- package/dist/core/whisper.d.ts.map +1 -0
- package/dist/core/whisper.js +448 -0
- package/dist/core/whisper.js.map +1 -0
- package/dist/core/whisper.test.d.ts +2 -0
- package/dist/core/whisper.test.d.ts.map +1 -0
- package/dist/core/whisper.test.js +372 -0
- package/dist/core/whisper.test.js.map +1 -0
- package/dist/core/youtube-metadata.d.ts +44 -0
- package/dist/core/youtube-metadata.d.ts.map +1 -0
- package/dist/core/youtube-metadata.js +168 -0
- package/dist/core/youtube-metadata.js.map +1 -0
- package/dist/core/youtube-metadata.test.d.ts +2 -0
- package/dist/core/youtube-metadata.test.d.ts.map +1 -0
- package/dist/core/youtube-metadata.test.js +132 -0
- package/dist/core/youtube-metadata.test.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/prompt-commands.d.ts +24 -0
- package/dist/prompt-commands.d.ts.map +1 -0
- package/dist/prompt-commands.js +243 -0
- package/dist/prompt-commands.js.map +1 -0
- package/dist/prompt-commands.test.d.ts +2 -0
- package/dist/prompt-commands.test.d.ts.map +1 -0
- package/dist/prompt-commands.test.js +46 -0
- package/dist/prompt-commands.test.js.map +1 -0
- package/dist/skills.d.ts +18 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +1780 -0
- package/dist/skills.js.map +1 -0
- package/dist/system-prompt.d.ts +35 -0
- package/dist/system-prompt.d.ts.map +1 -0
- package/dist/system-prompt.js +618 -0
- package/dist/system-prompt.js.map +1 -0
- package/dist/system-prompt.test.d.ts +2 -0
- package/dist/system-prompt.test.d.ts.map +1 -0
- package/dist/system-prompt.test.js +87 -0
- package/dist/system-prompt.test.js.map +1 -0
- package/dist/tools/add-fades.d.ts +13 -0
- package/dist/tools/add-fades.d.ts.map +1 -0
- package/dist/tools/add-fades.js +89 -0
- package/dist/tools/add-fades.js.map +1 -0
- package/dist/tools/add-marker.d.ts +31 -0
- package/dist/tools/add-marker.d.ts.map +1 -0
- package/dist/tools/add-marker.js +56 -0
- package/dist/tools/add-marker.js.map +1 -0
- package/dist/tools/add-sfx-at-cuts.d.ts +24 -0
- package/dist/tools/add-sfx-at-cuts.d.ts.map +1 -0
- package/dist/tools/add-sfx-at-cuts.js +145 -0
- package/dist/tools/add-sfx-at-cuts.js.map +1 -0
- package/dist/tools/add-sfx-to-timeline.d.ts +34 -0
- package/dist/tools/add-sfx-to-timeline.d.ts.map +1 -0
- package/dist/tools/add-sfx-to-timeline.js +169 -0
- package/dist/tools/add-sfx-to-timeline.js.map +1 -0
- package/dist/tools/add-sfx-to-timeline.test.d.ts +2 -0
- package/dist/tools/add-sfx-to-timeline.test.d.ts.map +1 -0
- package/dist/tools/add-sfx-to-timeline.test.js +181 -0
- package/dist/tools/add-sfx-to-timeline.test.js.map +1 -0
- package/dist/tools/add-track.d.ts +13 -0
- package/dist/tools/add-track.d.ts.map +1 -0
- package/dist/tools/add-track.js +26 -0
- package/dist/tools/add-track.js.map +1 -0
- package/dist/tools/analyze-hook.d.ts +28 -0
- package/dist/tools/analyze-hook.d.ts.map +1 -0
- package/dist/tools/analyze-hook.js +126 -0
- package/dist/tools/analyze-hook.js.map +1 -0
- package/dist/tools/append-clip.d.ts +10 -0
- package/dist/tools/append-clip.d.ts.map +1 -0
- package/dist/tools/append-clip.js +27 -0
- package/dist/tools/append-clip.js.map +1 -0
- package/dist/tools/apply-lut.d.ts +11 -0
- package/dist/tools/apply-lut.d.ts.map +1 -0
- package/dist/tools/apply-lut.js +33 -0
- package/dist/tools/apply-lut.js.map +1 -0
- package/dist/tools/audit-first-frame.d.ts +36 -0
- package/dist/tools/audit-first-frame.d.ts.map +1 -0
- package/dist/tools/audit-first-frame.js +181 -0
- package/dist/tools/audit-first-frame.js.map +1 -0
- package/dist/tools/audit-retention-structure.d.ts +20 -0
- package/dist/tools/audit-retention-structure.d.ts.map +1 -0
- package/dist/tools/audit-retention-structure.js +95 -0
- package/dist/tools/audit-retention-structure.js.map +1 -0
- package/dist/tools/audit-retention-structure.test.d.ts +2 -0
- package/dist/tools/audit-retention-structure.test.d.ts.map +1 -0
- package/dist/tools/audit-retention-structure.test.js +93 -0
- package/dist/tools/audit-retention-structure.test.js.map +1 -0
- package/dist/tools/bleep-words.d.ts +59 -0
- package/dist/tools/bleep-words.d.ts.map +1 -0
- package/dist/tools/bleep-words.js +211 -0
- package/dist/tools/bleep-words.js.map +1 -0
- package/dist/tools/bleep-words.test.d.ts +2 -0
- package/dist/tools/bleep-words.test.d.ts.map +1 -0
- package/dist/tools/bleep-words.test.js +96 -0
- package/dist/tools/bleep-words.test.js.map +1 -0
- package/dist/tools/burn-subtitles.d.ts +28 -0
- package/dist/tools/burn-subtitles.d.ts.map +1 -0
- package/dist/tools/burn-subtitles.js +92 -0
- package/dist/tools/burn-subtitles.js.map +1 -0
- package/dist/tools/clean-audio.d.ts +18 -0
- package/dist/tools/clean-audio.d.ts.map +1 -0
- package/dist/tools/clean-audio.js +55 -0
- package/dist/tools/clean-audio.js.map +1 -0
- package/dist/tools/clone-timeline.d.ts +9 -0
- package/dist/tools/clone-timeline.d.ts.map +1 -0
- package/dist/tools/clone-timeline.js +28 -0
- package/dist/tools/clone-timeline.js.map +1 -0
- package/dist/tools/cluster-takes.d.ts +11 -0
- package/dist/tools/cluster-takes.d.ts.map +1 -0
- package/dist/tools/cluster-takes.js +72 -0
- package/dist/tools/cluster-takes.js.map +1 -0
- package/dist/tools/color-match.d.ts +16 -0
- package/dist/tools/color-match.d.ts.map +1 -0
- package/dist/tools/color-match.js +55 -0
- package/dist/tools/color-match.js.map +1 -0
- package/dist/tools/compose-layered.d.ts +47 -0
- package/dist/tools/compose-layered.d.ts.map +1 -0
- package/dist/tools/compose-layered.js +104 -0
- package/dist/tools/compose-layered.js.map +1 -0
- package/dist/tools/compose-thumbnail-variants.d.ts +70 -0
- package/dist/tools/compose-thumbnail-variants.d.ts.map +1 -0
- package/dist/tools/compose-thumbnail-variants.js +274 -0
- package/dist/tools/compose-thumbnail-variants.js.map +1 -0
- package/dist/tools/compose-thumbnail.d.ts +28 -0
- package/dist/tools/compose-thumbnail.d.ts.map +1 -0
- package/dist/tools/compose-thumbnail.js +101 -0
- package/dist/tools/compose-thumbnail.js.map +1 -0
- package/dist/tools/concat-videos.d.ts +18 -0
- package/dist/tools/concat-videos.d.ts.map +1 -0
- package/dist/tools/concat-videos.js +87 -0
- package/dist/tools/concat-videos.js.map +1 -0
- package/dist/tools/concat-videos.test.d.ts +2 -0
- package/dist/tools/concat-videos.test.d.ts.map +1 -0
- package/dist/tools/concat-videos.test.js +103 -0
- package/dist/tools/concat-videos.test.js.map +1 -0
- package/dist/tools/copy-grade.d.ts +10 -0
- package/dist/tools/copy-grade.d.ts.map +1 -0
- package/dist/tools/copy-grade.js +29 -0
- package/dist/tools/copy-grade.js.map +1 -0
- package/dist/tools/create-timeline.d.ts +12 -0
- package/dist/tools/create-timeline.d.ts.map +1 -0
- package/dist/tools/create-timeline.js +35 -0
- package/dist/tools/create-timeline.js.map +1 -0
- package/dist/tools/crossfade-videos.d.ts +49 -0
- package/dist/tools/crossfade-videos.d.ts.map +1 -0
- package/dist/tools/crossfade-videos.js +122 -0
- package/dist/tools/crossfade-videos.js.map +1 -0
- package/dist/tools/cut-at.d.ts +10 -0
- package/dist/tools/cut-at.d.ts.map +1 -0
- package/dist/tools/cut-at.js +24 -0
- package/dist/tools/cut-at.js.map +1 -0
- package/dist/tools/cut-filler-words.d.ts +27 -0
- package/dist/tools/cut-filler-words.d.ts.map +1 -0
- package/dist/tools/cut-filler-words.js +182 -0
- package/dist/tools/cut-filler-words.js.map +1 -0
- package/dist/tools/detect-silence.d.ts +13 -0
- package/dist/tools/detect-silence.d.ts.map +1 -0
- package/dist/tools/detect-silence.js +98 -0
- package/dist/tools/detect-silence.js.map +1 -0
- package/dist/tools/detect-speaker-changes.d.ts +9 -0
- package/dist/tools/detect-speaker-changes.d.ts.map +1 -0
- package/dist/tools/detect-speaker-changes.js +43 -0
- package/dist/tools/detect-speaker-changes.js.map +1 -0
- package/dist/tools/duck-audio.d.ts +16 -0
- package/dist/tools/duck-audio.d.ts.map +1 -0
- package/dist/tools/duck-audio.js +73 -0
- package/dist/tools/duck-audio.js.map +1 -0
- package/dist/tools/extract-audio.d.ts +10 -0
- package/dist/tools/extract-audio.d.ts.map +1 -0
- package/dist/tools/extract-audio.js +36 -0
- package/dist/tools/extract-audio.js.map +1 -0
- package/dist/tools/extract-frame.d.ts +12 -0
- package/dist/tools/extract-frame.d.ts.map +1 -0
- package/dist/tools/extract-frame.js +70 -0
- package/dist/tools/extract-frame.js.map +1 -0
- package/dist/tools/face-reframe.d.ts +30 -0
- package/dist/tools/face-reframe.d.ts.map +1 -0
- package/dist/tools/face-reframe.js +143 -0
- package/dist/tools/face-reframe.js.map +1 -0
- package/dist/tools/face-reframe.test.d.ts +2 -0
- package/dist/tools/face-reframe.test.d.ts.map +1 -0
- package/dist/tools/face-reframe.test.js +139 -0
- package/dist/tools/face-reframe.test.js.map +1 -0
- package/dist/tools/find-viral-moments.d.ts +23 -0
- package/dist/tools/find-viral-moments.d.ts.map +1 -0
- package/dist/tools/find-viral-moments.js +176 -0
- package/dist/tools/find-viral-moments.js.map +1 -0
- package/dist/tools/find-viral-moments.test.d.ts +2 -0
- package/dist/tools/find-viral-moments.test.d.ts.map +1 -0
- package/dist/tools/find-viral-moments.test.js +144 -0
- package/dist/tools/find-viral-moments.test.js.map +1 -0
- package/dist/tools/fusion-comp.d.ts +49 -0
- package/dist/tools/fusion-comp.d.ts.map +1 -0
- package/dist/tools/fusion-comp.js +129 -0
- package/dist/tools/fusion-comp.js.map +1 -0
- package/dist/tools/generate-gif.d.ts +13 -0
- package/dist/tools/generate-gif.d.ts.map +1 -0
- package/dist/tools/generate-gif.js +111 -0
- package/dist/tools/generate-gif.js.map +1 -0
- package/dist/tools/generate-gif.test.d.ts +2 -0
- package/dist/tools/generate-gif.test.d.ts.map +1 -0
- package/dist/tools/generate-gif.test.js +115 -0
- package/dist/tools/generate-gif.test.js.map +1 -0
- package/dist/tools/generate-outro.d.ts +18 -0
- package/dist/tools/generate-outro.d.ts.map +1 -0
- package/dist/tools/generate-outro.js +175 -0
- package/dist/tools/generate-outro.js.map +1 -0
- package/dist/tools/generate-youtube-metadata.d.ts +23 -0
- package/dist/tools/generate-youtube-metadata.d.ts.map +1 -0
- package/dist/tools/generate-youtube-metadata.js +103 -0
- package/dist/tools/generate-youtube-metadata.js.map +1 -0
- package/dist/tools/generate-youtube-metadata.test.d.ts +2 -0
- package/dist/tools/generate-youtube-metadata.test.d.ts.map +1 -0
- package/dist/tools/generate-youtube-metadata.test.js +118 -0
- package/dist/tools/generate-youtube-metadata.test.js.map +1 -0
- package/dist/tools/get-markers.d.ts +13 -0
- package/dist/tools/get-markers.d.ts.map +1 -0
- package/dist/tools/get-markers.js +71 -0
- package/dist/tools/get-markers.js.map +1 -0
- package/dist/tools/get-timeline.d.ts +9 -0
- package/dist/tools/get-timeline.d.ts.map +1 -0
- package/dist/tools/get-timeline.js +43 -0
- package/dist/tools/get-timeline.js.map +1 -0
- package/dist/tools/grade-skin-tones.d.ts +31 -0
- package/dist/tools/grade-skin-tones.d.ts.map +1 -0
- package/dist/tools/grade-skin-tones.js +92 -0
- package/dist/tools/grade-skin-tones.js.map +1 -0
- package/dist/tools/host-eval.d.ts +35 -0
- package/dist/tools/host-eval.d.ts.map +1 -0
- package/dist/tools/host-eval.js +70 -0
- package/dist/tools/host-eval.js.map +1 -0
- package/dist/tools/host-info.d.ts +7 -0
- package/dist/tools/host-info.d.ts.map +1 -0
- package/dist/tools/host-info.js +33 -0
- package/dist/tools/host-info.js.map +1 -0
- package/dist/tools/host-tools.test.d.ts +2 -0
- package/dist/tools/host-tools.test.d.ts.map +1 -0
- package/dist/tools/host-tools.test.js +125 -0
- package/dist/tools/host-tools.test.js.map +1 -0
- package/dist/tools/import-edl.d.ts +9 -0
- package/dist/tools/import-edl.d.ts.map +1 -0
- package/dist/tools/import-edl.js +25 -0
- package/dist/tools/import-edl.js.map +1 -0
- package/dist/tools/import-subtitles.d.ts +9 -0
- package/dist/tools/import-subtitles.d.ts.map +1 -0
- package/dist/tools/import-subtitles.js +31 -0
- package/dist/tools/import-subtitles.js.map +1 -0
- package/dist/tools/import-to-media-pool.d.ts +10 -0
- package/dist/tools/import-to-media-pool.d.ts.map +1 -0
- package/dist/tools/import-to-media-pool.js +27 -0
- package/dist/tools/import-to-media-pool.js.map +1 -0
- package/dist/tools/index.d.ts +110 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +380 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/index.test.d.ts +2 -0
- package/dist/tools/index.test.d.ts.map +1 -0
- package/dist/tools/index.test.js +158 -0
- package/dist/tools/index.test.js.map +1 -0
- package/dist/tools/insert-broll.d.ts +13 -0
- package/dist/tools/insert-broll.d.ts.map +1 -0
- package/dist/tools/insert-broll.js +56 -0
- package/dist/tools/insert-broll.js.map +1 -0
- package/dist/tools/ken-burns.d.ts +26 -0
- package/dist/tools/ken-burns.d.ts.map +1 -0
- package/dist/tools/ken-burns.js +126 -0
- package/dist/tools/ken-burns.js.map +1 -0
- package/dist/tools/list-render-presets.d.ts +7 -0
- package/dist/tools/list-render-presets.d.ts.map +1 -0
- package/dist/tools/list-render-presets.js +30 -0
- package/dist/tools/list-render-presets.js.map +1 -0
- package/dist/tools/loop-match-short.d.ts +22 -0
- package/dist/tools/loop-match-short.d.ts.map +1 -0
- package/dist/tools/loop-match-short.js +107 -0
- package/dist/tools/loop-match-short.js.map +1 -0
- package/dist/tools/match-clip-color.d.ts +29 -0
- package/dist/tools/match-clip-color.d.ts.map +1 -0
- package/dist/tools/match-clip-color.js +99 -0
- package/dist/tools/match-clip-color.js.map +1 -0
- package/dist/tools/measure-loudness.d.ts +8 -0
- package/dist/tools/measure-loudness.d.ts.map +1 -0
- package/dist/tools/measure-loudness.js +40 -0
- package/dist/tools/measure-loudness.js.map +1 -0
- package/dist/tools/mix-audio.d.ts +46 -0
- package/dist/tools/mix-audio.d.ts.map +1 -0
- package/dist/tools/mix-audio.js +102 -0
- package/dist/tools/mix-audio.js.map +1 -0
- package/dist/tools/multicam-sync.d.ts +14 -0
- package/dist/tools/multicam-sync.d.ts.map +1 -0
- package/dist/tools/multicam-sync.js +75 -0
- package/dist/tools/multicam-sync.js.map +1 -0
- package/dist/tools/new-tools.test.d.ts +2 -0
- package/dist/tools/new-tools.test.d.ts.map +1 -0
- package/dist/tools/new-tools.test.js +511 -0
- package/dist/tools/new-tools.test.js.map +1 -0
- package/dist/tools/normalize-loudness.d.ts +21 -0
- package/dist/tools/normalize-loudness.d.ts.map +1 -0
- package/dist/tools/normalize-loudness.js +95 -0
- package/dist/tools/normalize-loudness.js.map +1 -0
- package/dist/tools/open-page.d.ts +17 -0
- package/dist/tools/open-page.d.ts.map +1 -0
- package/dist/tools/open-page.js +27 -0
- package/dist/tools/open-page.js.map +1 -0
- package/dist/tools/overlay-watermark.d.ts +28 -0
- package/dist/tools/overlay-watermark.d.ts.map +1 -0
- package/dist/tools/overlay-watermark.js +99 -0
- package/dist/tools/overlay-watermark.js.map +1 -0
- package/dist/tools/path-traversal.test.d.ts +15 -0
- package/dist/tools/path-traversal.test.d.ts.map +1 -0
- package/dist/tools/path-traversal.test.js +223 -0
- package/dist/tools/path-traversal.test.js.map +1 -0
- package/dist/tools/pick-best-takes.d.ts +20 -0
- package/dist/tools/pick-best-takes.d.ts.map +1 -0
- package/dist/tools/pick-best-takes.js +148 -0
- package/dist/tools/pick-best-takes.js.map +1 -0
- package/dist/tools/post-tools.test.d.ts +2 -0
- package/dist/tools/post-tools.test.d.ts.map +1 -0
- package/dist/tools/post-tools.test.js +83 -0
- package/dist/tools/post-tools.test.js.map +1 -0
- package/dist/tools/pre-render-check.d.ts +23 -0
- package/dist/tools/pre-render-check.d.ts.map +1 -0
- package/dist/tools/pre-render-check.js +134 -0
- package/dist/tools/pre-render-check.js.map +1 -0
- package/dist/tools/probe-media.d.ts +8 -0
- package/dist/tools/probe-media.d.ts.map +1 -0
- package/dist/tools/probe-media.js +32 -0
- package/dist/tools/probe-media.js.map +1 -0
- package/dist/tools/punch-in.d.ts +30 -0
- package/dist/tools/punch-in.d.ts.map +1 -0
- package/dist/tools/punch-in.js +131 -0
- package/dist/tools/punch-in.js.map +1 -0
- package/dist/tools/read-skill.d.ts +9 -0
- package/dist/tools/read-skill.d.ts.map +1 -0
- package/dist/tools/read-skill.js +24 -0
- package/dist/tools/read-skill.js.map +1 -0
- package/dist/tools/read-transcript.d.ts +14 -0
- package/dist/tools/read-transcript.d.ts.map +1 -0
- package/dist/tools/read-transcript.js +86 -0
- package/dist/tools/read-transcript.js.map +1 -0
- package/dist/tools/read-transcript.test.d.ts +2 -0
- package/dist/tools/read-transcript.test.d.ts.map +1 -0
- package/dist/tools/read-transcript.test.js +136 -0
- package/dist/tools/read-transcript.test.js.map +1 -0
- package/dist/tools/reformat-timeline.d.ts +25 -0
- package/dist/tools/reformat-timeline.d.ts.map +1 -0
- package/dist/tools/reformat-timeline.js +61 -0
- package/dist/tools/reformat-timeline.js.map +1 -0
- package/dist/tools/render-multi-format.d.ts +35 -0
- package/dist/tools/render-multi-format.d.ts.map +1 -0
- package/dist/tools/render-multi-format.js +206 -0
- package/dist/tools/render-multi-format.js.map +1 -0
- package/dist/tools/render-multi-format.test.d.ts +2 -0
- package/dist/tools/render-multi-format.test.d.ts.map +1 -0
- package/dist/tools/render-multi-format.test.js +312 -0
- package/dist/tools/render-multi-format.test.js.map +1 -0
- package/dist/tools/render.d.ts +10 -0
- package/dist/tools/render.d.ts.map +1 -0
- package/dist/tools/render.js +26 -0
- package/dist/tools/render.js.map +1 -0
- package/dist/tools/reorder-timeline.d.ts +12 -0
- package/dist/tools/reorder-timeline.d.ts.map +1 -0
- package/dist/tools/reorder-timeline.js +66 -0
- package/dist/tools/reorder-timeline.js.map +1 -0
- package/dist/tools/replace-clip.d.ts +10 -0
- package/dist/tools/replace-clip.d.ts.map +1 -0
- package/dist/tools/replace-clip.js +28 -0
- package/dist/tools/replace-clip.js.map +1 -0
- package/dist/tools/review-edit.d.ts +23 -0
- package/dist/tools/review-edit.d.ts.map +1 -0
- package/dist/tools/review-edit.js +47 -0
- package/dist/tools/review-edit.js.map +1 -0
- package/dist/tools/rewrite-hook.d.ts +32 -0
- package/dist/tools/rewrite-hook.d.ts.map +1 -0
- package/dist/tools/rewrite-hook.js +65 -0
- package/dist/tools/rewrite-hook.js.map +1 -0
- package/dist/tools/ripple-delete.d.ts +11 -0
- package/dist/tools/ripple-delete.d.ts.map +1 -0
- package/dist/tools/ripple-delete.js +27 -0
- package/dist/tools/ripple-delete.js.map +1 -0
- package/dist/tools/save-project.d.ts +7 -0
- package/dist/tools/save-project.d.ts.map +1 -0
- package/dist/tools/save-project.js +22 -0
- package/dist/tools/save-project.js.map +1 -0
- package/dist/tools/score-clip.d.ts +30 -0
- package/dist/tools/score-clip.d.ts.map +1 -0
- package/dist/tools/score-clip.js +109 -0
- package/dist/tools/score-clip.js.map +1 -0
- package/dist/tools/score-clip.test.d.ts +2 -0
- package/dist/tools/score-clip.test.d.ts.map +1 -0
- package/dist/tools/score-clip.test.js +110 -0
- package/dist/tools/score-clip.test.js.map +1 -0
- package/dist/tools/score-shot.d.ts +18 -0
- package/dist/tools/score-shot.d.ts.map +1 -0
- package/dist/tools/score-shot.js +127 -0
- package/dist/tools/score-shot.js.map +1 -0
- package/dist/tools/search-tools.d.ts +34 -0
- package/dist/tools/search-tools.d.ts.map +1 -0
- package/dist/tools/search-tools.js +86 -0
- package/dist/tools/search-tools.js.map +1 -0
- package/dist/tools/search-tools.test.d.ts +2 -0
- package/dist/tools/search-tools.test.d.ts.map +1 -0
- package/dist/tools/search-tools.test.js +60 -0
- package/dist/tools/search-tools.test.js.map +1 -0
- package/dist/tools/set-clip-speed.d.ts +10 -0
- package/dist/tools/set-clip-speed.d.ts.map +1 -0
- package/dist/tools/set-clip-speed.js +28 -0
- package/dist/tools/set-clip-speed.js.map +1 -0
- package/dist/tools/set-clip-volume.d.ts +10 -0
- package/dist/tools/set-clip-volume.d.ts.map +1 -0
- package/dist/tools/set-clip-volume.js +33 -0
- package/dist/tools/set-clip-volume.js.map +1 -0
- package/dist/tools/set-primary-correction.d.ts +14 -0
- package/dist/tools/set-primary-correction.d.ts.map +1 -0
- package/dist/tools/set-primary-correction.js +45 -0
- package/dist/tools/set-primary-correction.js.map +1 -0
- package/dist/tools/smart-reframe.d.ts +22 -0
- package/dist/tools/smart-reframe.d.ts.map +1 -0
- package/dist/tools/smart-reframe.js +39 -0
- package/dist/tools/smart-reframe.js.map +1 -0
- package/dist/tools/snap-cuts-to-beats.d.ts +18 -0
- package/dist/tools/snap-cuts-to-beats.d.ts.map +1 -0
- package/dist/tools/snap-cuts-to-beats.js +110 -0
- package/dist/tools/snap-cuts-to-beats.js.map +1 -0
- package/dist/tools/snap-cuts-to-beats.test.d.ts +2 -0
- package/dist/tools/snap-cuts-to-beats.test.d.ts.map +1 -0
- package/dist/tools/snap-cuts-to-beats.test.js +99 -0
- package/dist/tools/snap-cuts-to-beats.test.js.map +1 -0
- package/dist/tools/speed-ramp.d.ts +14 -0
- package/dist/tools/speed-ramp.d.ts.map +1 -0
- package/dist/tools/speed-ramp.js +72 -0
- package/dist/tools/speed-ramp.js.map +1 -0
- package/dist/tools/stabilize-video.d.ts +12 -0
- package/dist/tools/stabilize-video.d.ts.map +1 -0
- package/dist/tools/stabilize-video.js +64 -0
- package/dist/tools/stabilize-video.js.map +1 -0
- package/dist/tools/suggest-broll.d.ts +34 -0
- package/dist/tools/suggest-broll.d.ts.map +1 -0
- package/dist/tools/suggest-broll.js +367 -0
- package/dist/tools/suggest-broll.js.map +1 -0
- package/dist/tools/suggest-broll.test.d.ts +2 -0
- package/dist/tools/suggest-broll.test.d.ts.map +1 -0
- package/dist/tools/suggest-broll.test.js +217 -0
- package/dist/tools/suggest-broll.test.js.map +1 -0
- package/dist/tools/text-based-cut.d.ts +33 -0
- package/dist/tools/text-based-cut.d.ts.map +1 -0
- package/dist/tools/text-based-cut.js +172 -0
- package/dist/tools/text-based-cut.js.map +1 -0
- package/dist/tools/text-based-cut.test.d.ts +2 -0
- package/dist/tools/text-based-cut.test.d.ts.map +1 -0
- package/dist/tools/text-based-cut.test.js +32 -0
- package/dist/tools/text-based-cut.test.js.map +1 -0
- package/dist/tools/transcribe.d.ts +29 -0
- package/dist/tools/transcribe.d.ts.map +1 -0
- package/dist/tools/transcribe.js +117 -0
- package/dist/tools/transcribe.js.map +1 -0
- package/dist/tools/transition-videos.d.ts +29 -0
- package/dist/tools/transition-videos.d.ts.map +1 -0
- package/dist/tools/transition-videos.js +130 -0
- package/dist/tools/transition-videos.js.map +1 -0
- package/dist/tools/trim-dead-air.d.ts +59 -0
- package/dist/tools/trim-dead-air.d.ts.map +1 -0
- package/dist/tools/trim-dead-air.js +215 -0
- package/dist/tools/trim-dead-air.js.map +1 -0
- package/dist/tools/trim-dead-air.test.d.ts +2 -0
- package/dist/tools/trim-dead-air.test.d.ts.map +1 -0
- package/dist/tools/trim-dead-air.test.js +75 -0
- package/dist/tools/trim-dead-air.test.js.map +1 -0
- package/dist/tools/verify-thumbnail-promise.d.ts +33 -0
- package/dist/tools/verify-thumbnail-promise.d.ts.map +1 -0
- package/dist/tools/verify-thumbnail-promise.js +112 -0
- package/dist/tools/verify-thumbnail-promise.js.map +1 -0
- package/dist/tools/verify-thumbnail-promise.test.d.ts +2 -0
- package/dist/tools/verify-thumbnail-promise.test.d.ts.map +1 -0
- package/dist/tools/verify-thumbnail-promise.test.js +38 -0
- package/dist/tools/verify-thumbnail-promise.test.js.map +1 -0
- package/dist/tools/write-ass.d.ts +34 -0
- package/dist/tools/write-ass.d.ts.map +1 -0
- package/dist/tools/write-ass.js +102 -0
- package/dist/tools/write-ass.js.map +1 -0
- package/dist/tools/write-edl.d.ts +24 -0
- package/dist/tools/write-edl.d.ts.map +1 -0
- package/dist/tools/write-edl.js +60 -0
- package/dist/tools/write-edl.js.map +1 -0
- package/dist/tools/write-fcpxml.d.ts +20 -0
- package/dist/tools/write-fcpxml.d.ts.map +1 -0
- package/dist/tools/write-fcpxml.js +53 -0
- package/dist/tools/write-fcpxml.js.map +1 -0
- package/dist/tools/write-keyword-captions.d.ts +43 -0
- package/dist/tools/write-keyword-captions.d.ts.map +1 -0
- package/dist/tools/write-keyword-captions.js +215 -0
- package/dist/tools/write-keyword-captions.js.map +1 -0
- package/dist/tools/write-lower-third.d.ts +34 -0
- package/dist/tools/write-lower-third.d.ts.map +1 -0
- package/dist/tools/write-lower-third.js +53 -0
- package/dist/tools/write-lower-third.js.map +1 -0
- package/dist/tools/write-srt.d.ts +20 -0
- package/dist/tools/write-srt.d.ts.map +1 -0
- package/dist/tools/write-srt.js +73 -0
- package/dist/tools/write-srt.js.map +1 -0
- package/dist/tools/write-title-card.d.ts +25 -0
- package/dist/tools/write-title-card.d.ts.map +1 -0
- package/dist/tools/write-title-card.js +58 -0
- package/dist/tools/write-title-card.js.map +1 -0
- package/dist/types.d.ts +83 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/App.d.ts +56 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +524 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/components/Banner.d.ts +13 -0
- package/dist/ui/components/Banner.d.ts.map +1 -0
- package/dist/ui/components/Banner.js +59 -0
- package/dist/ui/components/Banner.js.map +1 -0
- package/dist/ui/render.d.ts +9 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +56 -0
- package/dist/ui/render.js.map +1 -0
- package/dist/ui/tool-formatters.d.ts +30 -0
- package/dist/ui/tool-formatters.d.ts.map +1 -0
- package/dist/ui/tool-formatters.js +461 -0
- package/dist/ui/tool-formatters.js.map +1 -0
- package/dist/ui/tool-formatters.test.d.ts +2 -0
- package/dist/ui/tool-formatters.test.d.ts.map +1 -0
- package/dist/ui/tool-formatters.test.js +143 -0
- package/dist/ui/tool-formatters.test.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { platform } from "node:os";
|
|
3
|
+
import { PREMIERE_COLOR_INDEX, RESOLVE_TO_PREMIERE_INDEX } from "../../marker-colors.js";
|
|
4
|
+
import { HostUnsupportedError } from "../types.js";
|
|
5
|
+
import { PremiereBridge } from "./bridge.js";
|
|
6
|
+
/**
|
|
7
|
+
* Translate the bridge's internal transport kind to the runtime label exposed
|
|
8
|
+
* via HostCapabilities. Pure function — exported via the static helper for
|
|
9
|
+
* unit testing.
|
|
10
|
+
*/
|
|
11
|
+
function mapTransportToRuntime(t) {
|
|
12
|
+
switch (t) {
|
|
13
|
+
case "http-uxp":
|
|
14
|
+
return "uxp";
|
|
15
|
+
case "http-cep":
|
|
16
|
+
return "cep";
|
|
17
|
+
case "osascript-cep":
|
|
18
|
+
return "osascript";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** Inverse of PREMIERE_COLOR_INDEX — numeric index back to color name. */
|
|
22
|
+
const PREMIERE_INDEX_TO_NAME = Object.fromEntries(Object.entries(PREMIERE_COLOR_INDEX).map(([name, idx]) => [idx, name]));
|
|
23
|
+
/**
|
|
24
|
+
* Adobe Premiere Pro adapter.
|
|
25
|
+
*
|
|
26
|
+
* Drives Premiere via ExtendScript through `osascript` on macOS (see
|
|
27
|
+
* ./bridge.ts). Each call generates a self-contained JSX file and asks
|
|
28
|
+
* Premiere to evalFile it; the JSX writes a JSON result to a temp file.
|
|
29
|
+
*
|
|
30
|
+
* Requirements:
|
|
31
|
+
* - macOS (Windows path requires a CEP panel — deferred)
|
|
32
|
+
* - Premiere Pro running with a project + active sequence
|
|
33
|
+
*
|
|
34
|
+
* Capability map (verified against current Premiere Pro APIs):
|
|
35
|
+
* - canMoveClips: true (Premiere has direct timeline mutation)
|
|
36
|
+
* - canScriptColor: false (Lumetri preset application is limited)
|
|
37
|
+
* - canScriptAudio: true (track levels, mute, gain via TrackItem)
|
|
38
|
+
* - canTriggerAI: false (Speech-to-Text + Auto Reframe not exposed)
|
|
39
|
+
* - preferredImportFormat: xml (FCPXML)
|
|
40
|
+
*
|
|
41
|
+
* Unsupported via live API (use write_edl + import_timeline):
|
|
42
|
+
* - cut_at — QE DOM razor is undocumented and version-fragile
|
|
43
|
+
* - ripple_delete — same reason
|
|
44
|
+
* - render — requires Adobe Media Encoder integration; deferred
|
|
45
|
+
*/
|
|
46
|
+
export class PremiereAdapter {
|
|
47
|
+
name = "premiere";
|
|
48
|
+
displayName = "Adobe Premiere Pro";
|
|
49
|
+
bridge = new PremiereBridge();
|
|
50
|
+
// Capabilities are re-checked on every call so a closed-Premiere session is
|
|
51
|
+
// visible immediately to host_info instead of being masked by a stale cache.
|
|
52
|
+
async capabilities() {
|
|
53
|
+
const reachable = await this.checkReachable();
|
|
54
|
+
// Map our internal transport kind to a public runtime label, and attach a
|
|
55
|
+
// deprecation notice for anything on the CEP/ExtendScript sunset path.
|
|
56
|
+
const transport = this.bridge.getTransportKind();
|
|
57
|
+
const runtime = transport ? mapTransportToRuntime(transport) : undefined;
|
|
58
|
+
const deprecationNotice = runtime === "cep" || runtime === "osascript"
|
|
59
|
+
? "Adobe is removing CEP/ExtendScript support in September 2026. " +
|
|
60
|
+
"Install the UXP panel for Premiere 25.6+: " +
|
|
61
|
+
"`npx @prestyj/editor-premiere-panel install --uxp`."
|
|
62
|
+
: undefined;
|
|
63
|
+
return {
|
|
64
|
+
canMoveClips: true,
|
|
65
|
+
canScriptColor: false,
|
|
66
|
+
canScriptAudio: true,
|
|
67
|
+
canTriggerAI: false,
|
|
68
|
+
preferredImportFormat: "xml",
|
|
69
|
+
isAvailable: reachable.ok,
|
|
70
|
+
unavailableReason: reachable.ok ? undefined : reachable.reason,
|
|
71
|
+
...(runtime ? { runtime } : {}),
|
|
72
|
+
...(deprecationNotice ? { deprecationNotice } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
async getTimeline() {
|
|
76
|
+
return this.bridge.call("get_timeline");
|
|
77
|
+
}
|
|
78
|
+
async addMarker(marker) {
|
|
79
|
+
// Snap any agent-supplied color (incl. Resolve-only hues) to Premiere's
|
|
80
|
+
// native 8-name palette BEFORE sending to JSX. JSX's _markerColor only
|
|
81
|
+
// recognises 8 names — anything else fell back to blue. Now we send the
|
|
82
|
+
// hue-snapped equivalent (e.g. pink → red, mint → green) consistent
|
|
83
|
+
// with the snap table the rest of the codebase uses.
|
|
84
|
+
const color = snapColorToPremiere(marker.color);
|
|
85
|
+
await this.bridge.call("add_marker", {
|
|
86
|
+
frame: marker.frame,
|
|
87
|
+
note: marker.note,
|
|
88
|
+
color,
|
|
89
|
+
durationFrames: marker.durationFrames ?? 1,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async cutAt(_track, _frame) {
|
|
93
|
+
throw new HostUnsupportedError("premiere", "cutAt", "QE DOM razor exists but is undocumented and version-fragile. " +
|
|
94
|
+
"Use write_edl + import_timeline for reliable bulk cuts.");
|
|
95
|
+
}
|
|
96
|
+
async rippleDelete(_track, _range) {
|
|
97
|
+
throw new HostUnsupportedError("premiere", "rippleDelete", "Use write_edl + import_timeline for reliable bulk operations.");
|
|
98
|
+
}
|
|
99
|
+
async appendClip(track, mediaPath) {
|
|
100
|
+
return this.bridge.call("append_clip", { track, mediaPath });
|
|
101
|
+
}
|
|
102
|
+
async importTimeline(filePath) {
|
|
103
|
+
await this.bridge.call("import_timeline", { filePath });
|
|
104
|
+
}
|
|
105
|
+
async render(_opts) {
|
|
106
|
+
throw new HostUnsupportedError("premiere", "render", "Premiere render via ExtendScript requires Adobe Media Encoder integration. " +
|
|
107
|
+
"Use Premiere's File > Export menu manually for now.");
|
|
108
|
+
}
|
|
109
|
+
async getMarkers() {
|
|
110
|
+
return this.bridge.call("get_markers");
|
|
111
|
+
}
|
|
112
|
+
async createTimeline(opts) {
|
|
113
|
+
// Premiere's createNewSequence requires a .sqpreset file. We pass through
|
|
114
|
+
// the requested name; the JSX side falls back to cloning the active
|
|
115
|
+
// sequence if no preset path is provided. fps/width/height are advisory
|
|
116
|
+
// unless a matching preset exists on disk.
|
|
117
|
+
void opts.fps;
|
|
118
|
+
void opts.width;
|
|
119
|
+
void opts.height;
|
|
120
|
+
await this.bridge.call("create_timeline", { name: opts.name });
|
|
121
|
+
}
|
|
122
|
+
async importToMediaPool(paths, bin) {
|
|
123
|
+
await this.bridge.call("import_to_media_pool", { paths, bin });
|
|
124
|
+
}
|
|
125
|
+
async setClipSpeed(_clipId, _speed) {
|
|
126
|
+
throw new HostUnsupportedError("premiere", "setClipSpeed", "Premiere's TrackItem has no scriptable setSpeed (QE DOM is undocumented). " +
|
|
127
|
+
"Use write_fcpxml with explicit timeMap rates per clip, then import_edl.");
|
|
128
|
+
}
|
|
129
|
+
async applyLut(_clipId, _lutPath, _nodeIndex) {
|
|
130
|
+
throw new HostUnsupportedError("premiere", "applyLut", "Lumetri preset application via ExtendScript is limited; use Resolve for color or apply manually. apply_lut via Lumetri preset XML is deferred.");
|
|
131
|
+
}
|
|
132
|
+
async setPrimaryCorrection(_clipId, _cdl) {
|
|
133
|
+
throw new HostUnsupportedError("premiere", "setPrimaryCorrection", "Lumetri primary CDL is not exposed to ExtendScript; use Resolve for color or grade manually.");
|
|
134
|
+
}
|
|
135
|
+
async copyGrade(_sourceClipId, _targetClipIds) {
|
|
136
|
+
throw new HostUnsupportedError("premiere", "copyGrade", "Lumetri attribute copy is not scriptable; use Resolve for color or copy/paste attributes manually.");
|
|
137
|
+
}
|
|
138
|
+
async listRenderPresets() {
|
|
139
|
+
// Premiere render presets live in Adobe Media Encoder; not exposed to
|
|
140
|
+
// ExtendScript without launching AME. Return the empty list with no error
|
|
141
|
+
// so the agent gracefully falls back to common preset names.
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
async replaceClip(clipId, mediaPath) {
|
|
145
|
+
await this.bridge.call("replace_clip", { clipId, mediaPath });
|
|
146
|
+
}
|
|
147
|
+
async cloneTimeline(newName) {
|
|
148
|
+
return this.bridge.call("clone_timeline", { newName });
|
|
149
|
+
}
|
|
150
|
+
async saveProject() {
|
|
151
|
+
await this.bridge.call("save_project");
|
|
152
|
+
}
|
|
153
|
+
async addTrack(_kind) {
|
|
154
|
+
throw new HostUnsupportedError("premiere", "addTrack", "Premiere's TrackCollection.add is not exposed via ExtendScript on all versions. " +
|
|
155
|
+
"Use Sequence → Add Tracks manually, or rebuild via FCPXML with the desired track count.");
|
|
156
|
+
}
|
|
157
|
+
// setClipVolume intentionally NOT implemented — Lumetri Audio gain isn't
|
|
158
|
+
// reliably scriptable. Use Resolve for clip-level volume.
|
|
159
|
+
async insertClipOnTrack(opts) {
|
|
160
|
+
return this.bridge.call("insert_clip_on_track", opts);
|
|
161
|
+
}
|
|
162
|
+
// smartReframe is intentionally NOT implemented — Premiere uses Auto Reframe
|
|
163
|
+
// via the effects panel, not scriptable via ExtendScript.
|
|
164
|
+
async importSubtitles(srtPath) {
|
|
165
|
+
return this.bridge.call("import_subtitles", { srtPath });
|
|
166
|
+
}
|
|
167
|
+
// openPage is intentionally NOT implemented — Premiere has no page concept.
|
|
168
|
+
// The agent should consult host_info.caps before calling it.
|
|
169
|
+
async executeCode(code) {
|
|
170
|
+
return this.bridge.call("execute_code", { code });
|
|
171
|
+
}
|
|
172
|
+
shutdown() {
|
|
173
|
+
this.bridge.shutdown();
|
|
174
|
+
}
|
|
175
|
+
// Exposed for unit testing.
|
|
176
|
+
static _snapColorToPremiereForTest(color) {
|
|
177
|
+
return snapColorToPremiere(color);
|
|
178
|
+
}
|
|
179
|
+
// Exposed for unit testing.
|
|
180
|
+
static _mapTransportToRuntimeForTest(t) {
|
|
181
|
+
return mapTransportToRuntime(t);
|
|
182
|
+
}
|
|
183
|
+
// ── Private ────────────────────────────────────────────────
|
|
184
|
+
async checkReachable() {
|
|
185
|
+
const platformOk = await PremiereBridge.checkReachable();
|
|
186
|
+
if (!platformOk.ok)
|
|
187
|
+
return platformOk;
|
|
188
|
+
if (platform() === "darwin") {
|
|
189
|
+
// Even if the panel is reachable, sanity-check Premiere is running.
|
|
190
|
+
const r = spawnSync("osascript", [
|
|
191
|
+
"-e",
|
|
192
|
+
'tell application "System Events" to (name of processes) contains "Adobe Premiere Pro"',
|
|
193
|
+
], { encoding: "utf8" });
|
|
194
|
+
if (r.status === 0 && r.stdout.trim() === "true") {
|
|
195
|
+
return { ok: true, transport: platformOk.transport };
|
|
196
|
+
}
|
|
197
|
+
return { ok: false, reason: "Premiere Pro is not running." };
|
|
198
|
+
}
|
|
199
|
+
return { ok: true, transport: platformOk.transport };
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Resolve any agent-supplied marker color (string name OR numeric Premiere
|
|
204
|
+
* index) to one of Premiere's 8 native color names that JSX `_markerColor`
|
|
205
|
+
* recognises. Resolve-only hues snap via `RESOLVE_TO_PREMIERE_INDEX`.
|
|
206
|
+
* Unknown / undefined inputs default to "blue".
|
|
207
|
+
*/
|
|
208
|
+
function snapColorToPremiere(input) {
|
|
209
|
+
if (typeof input === "number") {
|
|
210
|
+
return PREMIERE_INDEX_TO_NAME[input] ?? "blue";
|
|
211
|
+
}
|
|
212
|
+
if (typeof input !== "string" || !input.trim())
|
|
213
|
+
return "blue";
|
|
214
|
+
const idx = RESOLVE_TO_PREMIERE_INDEX[input.toLowerCase()];
|
|
215
|
+
if (idx === undefined)
|
|
216
|
+
return "blue";
|
|
217
|
+
return PREMIERE_INDEX_TO_NAME[idx] ?? "blue";
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAUnC,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,oBAAoB,EAAkB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,cAAc,EAA8B,MAAM,aAAa,CAAC;AAEzE;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,CAAwB;IACrD,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,UAAU;YACb,OAAO,KAAK,CAAC;QACf,KAAK,UAAU;YACb,OAAO,KAAK,CAAC;QACf,KAAK,eAAe;YAClB,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,sBAAsB,GAA2B,MAAM,CAAC,WAAW,CACvE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CACvE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,UAAmB,CAAC;IAC3B,WAAW,GAAG,oBAAoB,CAAC;IAEpC,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IAEtC,4EAA4E;IAC5E,6EAA6E;IAC7E,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9C,0EAA0E;QAC1E,uEAAuE;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,MAAM,iBAAiB,GACrB,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,WAAW;YAC1C,CAAC,CAAC,gEAAgE;gBAChE,4CAA4C;gBAC5C,qDAAqD;YACvD,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,KAAK;YACrB,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,KAAK;YACnB,qBAAqB,EAAE,KAAK;YAC5B,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;YAC9D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAgB,cAAc,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAkB;QAChC,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,oEAAoE;QACpE,qDAAqD;QACrD,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK;YACL,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,MAAa;QACvC,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,OAAO,EACP,+DAA+D;YAC7D,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,MAAkB;QACnD,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,cAAc,EACd,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,SAAiB;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAW,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAyC;QACpD,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,QAAQ,EACR,6EAA6E;YAC3E,qDAAqD,CACxD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAe,aAAa,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAKpB;QACC,0EAA0E;QAC1E,oEAAoE;QACpE,wEAAwE;QACxE,2CAA2C;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC;QACd,KAAK,IAAI,CAAC,KAAK,CAAC;QAChB,KAAK,IAAI,CAAC,MAAM,CAAC;QACjB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAe,EAAE,GAAY;QACnD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAe,EAAE,MAAc;QAChD,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,cAAc,EACd,4EAA4E;YAC1E,yEAAyE,CAC5E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,QAAgB,EAAE,UAAmB;QACnE,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,UAAU,EACV,gJAAgJ,CACjJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,OAAe,EACf,IAMC;QAED,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,sBAAsB,EACtB,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,aAAqB,EAAE,cAAwB;QAC7D,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,WAAW,EACX,oGAAoG,CACrG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,sEAAsE;QACtE,0EAA0E;QAC1E,6DAA6D;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,SAAiB;QACjD,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAmB,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAqC;QAClD,MAAM,IAAI,oBAAoB,CAC5B,UAAU,EACV,UAAU,EACV,kFAAkF;YAChF,yFAAyF,CAC5F,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,0DAA0D;IAE1D,KAAK,CAAC,iBAAiB,CAAC,IAOvB;QACC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAW,sBAAsB,EAAE,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,6EAA6E;IAC7E,0DAA0D;IAE1D,KAAK,CAAC,eAAe,CACnB,OAAe;QAEf,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,4EAA4E;IAC5E,6DAA6D;IAE7D,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAuC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,4BAA4B;IAC5B,MAAM,CAAC,2BAA2B,CAAC,KAAc;QAC/C,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,4BAA4B;IAC5B,MAAM,CAAC,6BAA6B,CAAC,CAAwB;QAC3D,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAEtD,KAAK,CAAC,cAAc;QAG1B,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QAEtC,IAAI,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC5B,oEAAoE;YACpE,MAAM,CAAC,GAAG,SAAS,CACjB,WAAW,EACX;gBACE,IAAI;gBACJ,uFAAuF;aACxF,EACD,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;YACvD,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QAC/D,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;IACvD,CAAC;CACF;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,sBAAsB,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9D,MAAM,GAAG,GAAG,yBAAyB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,sBAAsB,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExtendScript runtime for the Premiere bridge.
|
|
3
|
+
*
|
|
4
|
+
* Design: per-call self-contained JSX file. Each invocation generates a
|
|
5
|
+
* complete script that:
|
|
6
|
+
* 1. Defines small helpers (frame conversion, file writer)
|
|
7
|
+
* 2. Reads command + params hard-coded into the file
|
|
8
|
+
* 3. Writes result JSON to a known output path
|
|
9
|
+
* 4. Always wraps work in try/catch so a Premiere-side exception still
|
|
10
|
+
* yields a parseable result file
|
|
11
|
+
*
|
|
12
|
+
* We keep JSX minimal — agent-facing logic lives in the TS adapter; JSX is
|
|
13
|
+
* only the thin glue that walks app.project.* and writes JSON.
|
|
14
|
+
*
|
|
15
|
+
* Modern Premiere (2018+) ships with full ECMAScript 5 JSON support. We
|
|
16
|
+
* don't polyfill; older versions get a clear error.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Generate a self-contained JSX script for one method invocation.
|
|
20
|
+
* @param method Method name (must match METHODS)
|
|
21
|
+
* @param params JSON-encoded params (will be JSON.parsed in JSX as `P`)
|
|
22
|
+
* @param outPath Absolute path where the result JSON is written
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildJsxScript(method: string, params: Record<string, unknown>, outPath: string): string;
|
|
25
|
+
export declare const PREMIERE_METHODS: string[];
|
|
26
|
+
//# sourceMappingURL=bridge-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-source.d.ts","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA6VH;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,CAgBR;AAED,eAAO,MAAM,gBAAgB,UAAuB,CAAC"}
|
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExtendScript runtime for the Premiere bridge.
|
|
3
|
+
*
|
|
4
|
+
* Design: per-call self-contained JSX file. Each invocation generates a
|
|
5
|
+
* complete script that:
|
|
6
|
+
* 1. Defines small helpers (frame conversion, file writer)
|
|
7
|
+
* 2. Reads command + params hard-coded into the file
|
|
8
|
+
* 3. Writes result JSON to a known output path
|
|
9
|
+
* 4. Always wraps work in try/catch so a Premiere-side exception still
|
|
10
|
+
* yields a parseable result file
|
|
11
|
+
*
|
|
12
|
+
* We keep JSX minimal — agent-facing logic lives in the TS adapter; JSX is
|
|
13
|
+
* only the thin glue that walks app.project.* and writes JSON.
|
|
14
|
+
*
|
|
15
|
+
* Modern Premiere (2018+) ships with full ECMAScript 5 JSON support. We
|
|
16
|
+
* don't polyfill; older versions get a clear error.
|
|
17
|
+
*/
|
|
18
|
+
const PREAMBLE = String.raw `
|
|
19
|
+
function _writeJson(path, obj) {
|
|
20
|
+
var f = new File(path);
|
|
21
|
+
f.encoding = "UTF-8";
|
|
22
|
+
f.open("w");
|
|
23
|
+
f.write(JSON.stringify(obj));
|
|
24
|
+
f.close();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function _seq() {
|
|
28
|
+
if (!app.project) throw new Error("No project open in Premiere.");
|
|
29
|
+
var s = app.project.activeSequence;
|
|
30
|
+
if (!s) throw new Error("No active sequence in Premiere.");
|
|
31
|
+
return s;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function _fps(seq) {
|
|
35
|
+
// videoFrameRate is a Time; .seconds = frame duration in seconds.
|
|
36
|
+
var fd = seq.getSettings().videoFrameRate.seconds;
|
|
37
|
+
return fd > 0 ? 1 / fd : 30;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function _frames(time, seq) {
|
|
41
|
+
// seq.timebase: ticks per frame (TickValue). time.ticks: ticks since 0.
|
|
42
|
+
var tb = parseInt(seq.timebase, 10);
|
|
43
|
+
if (!tb || isNaN(tb)) tb = 1;
|
|
44
|
+
return Math.round(parseInt(time.ticks, 10) / tb);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function _markerColor(name) {
|
|
48
|
+
// Premiere marker colorIndex: 0..7 maps to Green, Red, Purple, Orange,
|
|
49
|
+
// Yellow, White, Blue, Cyan (varies by version; this is the common map).
|
|
50
|
+
var m = { green:0, red:1, purple:2, orange:3, yellow:4, white:5, blue:6, cyan:7 };
|
|
51
|
+
var k = (name || "blue").toLowerCase();
|
|
52
|
+
return m[k] !== undefined ? m[k] : 6;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function _findClipBin(name) {
|
|
56
|
+
// Walk root bin recursively for a ProjectItem matching imported file name.
|
|
57
|
+
var stack = [app.project.rootItem];
|
|
58
|
+
while (stack.length) {
|
|
59
|
+
var item = stack.pop();
|
|
60
|
+
for (var i = 0; i < item.children.numItems; i++) {
|
|
61
|
+
var child = item.children[i];
|
|
62
|
+
if (child.name === name) return child;
|
|
63
|
+
if (child.type === 2 /* BIN */) stack.push(child);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
// ── Per-method bodies ───────────────────────────────────────
|
|
70
|
+
const METHODS = {
|
|
71
|
+
ping: String.raw `
|
|
72
|
+
return { product: "Premiere Pro", version: app.version || "?" };
|
|
73
|
+
`,
|
|
74
|
+
get_timeline: String.raw `
|
|
75
|
+
var seq = _seq();
|
|
76
|
+
var fps = _fps(seq);
|
|
77
|
+
var clips = [];
|
|
78
|
+
function collect(tracks, kind) {
|
|
79
|
+
for (var ti = 0; ti < tracks.numTracks; ti++) {
|
|
80
|
+
var tr = tracks[ti];
|
|
81
|
+
for (var ci = 0; ci < tr.clips.numItems; ci++) {
|
|
82
|
+
var c = tr.clips[ci];
|
|
83
|
+
try {
|
|
84
|
+
clips.push({
|
|
85
|
+
id: String(c.nodeId || c.name + ":" + ci),
|
|
86
|
+
track: ti + 1,
|
|
87
|
+
trackKind: kind,
|
|
88
|
+
startFrame: _frames(c.start, seq),
|
|
89
|
+
endFrame: _frames(c.end, seq),
|
|
90
|
+
name: c.name
|
|
91
|
+
});
|
|
92
|
+
} catch (e) { /* skip uninspectable */ }
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
collect(seq.videoTracks, "video");
|
|
97
|
+
collect(seq.audioTracks, "audio");
|
|
98
|
+
|
|
99
|
+
var markers = [];
|
|
100
|
+
var mc = seq.markers;
|
|
101
|
+
var m = mc.getFirstMarker();
|
|
102
|
+
while (m) {
|
|
103
|
+
markers.push({
|
|
104
|
+
frame: _frames(m.start, seq),
|
|
105
|
+
note: (m.comments || m.name || ""),
|
|
106
|
+
color: m.colorIndex,
|
|
107
|
+
durationFrames: _frames(m.end, seq) - _frames(m.start, seq)
|
|
108
|
+
});
|
|
109
|
+
m = mc.getNextMarker(m);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var dur = (seq.end ? _frames({ ticks: seq.end }, seq) : 0);
|
|
113
|
+
return {
|
|
114
|
+
name: seq.name,
|
|
115
|
+
frameRate: fps,
|
|
116
|
+
durationFrames: dur,
|
|
117
|
+
clips: clips,
|
|
118
|
+
markers: markers
|
|
119
|
+
};
|
|
120
|
+
`,
|
|
121
|
+
add_marker: String.raw `
|
|
122
|
+
var seq = _seq();
|
|
123
|
+
var fps = _fps(seq);
|
|
124
|
+
var m = seq.markers.createMarker(P.frame / fps);
|
|
125
|
+
m.name = (P.note || "").substring(0, 60);
|
|
126
|
+
m.comments = P.note || "";
|
|
127
|
+
if (P.durationFrames && P.durationFrames > 1) {
|
|
128
|
+
m.end = m.start + (P.durationFrames / fps);
|
|
129
|
+
}
|
|
130
|
+
try { m.setColorByIndex(_markerColor(P.color)); } catch (e) {}
|
|
131
|
+
return null;
|
|
132
|
+
`,
|
|
133
|
+
append_clip: String.raw `
|
|
134
|
+
var seq = _seq();
|
|
135
|
+
var ok = app.project.importFiles([P.mediaPath], true, app.project.rootItem, false);
|
|
136
|
+
if (!ok) throw new Error("importFiles returned false for " + P.mediaPath);
|
|
137
|
+
// Find the imported item by basename.
|
|
138
|
+
var base = P.mediaPath.replace(/\\/g, "/").split("/").pop();
|
|
139
|
+
var pi = _findClipBin(base);
|
|
140
|
+
if (!pi) throw new Error("Imported item not found in project bin: " + base);
|
|
141
|
+
var track = seq.videoTracks[(P.track || 1) - 1];
|
|
142
|
+
if (!track) throw new Error("Track " + P.track + " does not exist on active sequence.");
|
|
143
|
+
// Insert at sequence end.
|
|
144
|
+
var endSec = seq.end ? (parseInt(seq.end, 10) / 254016000000) : 0;
|
|
145
|
+
track.insertClip(pi, endSec);
|
|
146
|
+
// Find the inserted clip — it's the last one on the track.
|
|
147
|
+
var inserted = track.clips[track.clips.numItems - 1];
|
|
148
|
+
return {
|
|
149
|
+
id: String(inserted.nodeId || inserted.name),
|
|
150
|
+
track: P.track || 1,
|
|
151
|
+
trackKind: "video",
|
|
152
|
+
startFrame: _frames(inserted.start, seq),
|
|
153
|
+
endFrame: _frames(inserted.end, seq),
|
|
154
|
+
name: inserted.name
|
|
155
|
+
};
|
|
156
|
+
`,
|
|
157
|
+
import_timeline: String.raw `
|
|
158
|
+
// Premiere's importFiles handles FCPXML/EDL — they create new sequences.
|
|
159
|
+
var ok = app.project.importFiles([P.filePath], true, app.project.rootItem, false);
|
|
160
|
+
if (!ok) throw new Error("importFiles returned false for " + P.filePath);
|
|
161
|
+
return null;
|
|
162
|
+
`,
|
|
163
|
+
get_markers: String.raw `
|
|
164
|
+
var seq = _seq();
|
|
165
|
+
var markers = [];
|
|
166
|
+
var mc = seq.markers;
|
|
167
|
+
var m = mc.getFirstMarker();
|
|
168
|
+
while (m) {
|
|
169
|
+
markers.push({
|
|
170
|
+
frame: _frames(m.start, seq),
|
|
171
|
+
note: (m.comments || m.name || ""),
|
|
172
|
+
color: m.colorIndex,
|
|
173
|
+
durationFrames: _frames(m.end, seq) - _frames(m.start, seq)
|
|
174
|
+
});
|
|
175
|
+
m = mc.getNextMarker(m);
|
|
176
|
+
}
|
|
177
|
+
return markers;
|
|
178
|
+
`,
|
|
179
|
+
create_timeline: String.raw `
|
|
180
|
+
if (!app.project) throw new Error("No project open in Premiere.");
|
|
181
|
+
var name = String(P.name || "GG Sequence");
|
|
182
|
+
var preset = P.presetPath || "";
|
|
183
|
+
var newSeq = null;
|
|
184
|
+
if (preset) {
|
|
185
|
+
try { newSeq = app.project.createNewSequence(name, preset); } catch (e) { newSeq = null; }
|
|
186
|
+
}
|
|
187
|
+
if (!newSeq) {
|
|
188
|
+
// Fallback: clone the active sequence so we get a usable preset.
|
|
189
|
+
var src = app.project.activeSequence;
|
|
190
|
+
if (!src) {
|
|
191
|
+
throw new Error("create_timeline needs either a sqpreset path (P.presetPath) or an active sequence to clone.");
|
|
192
|
+
}
|
|
193
|
+
try {
|
|
194
|
+
newSeq = src.clone();
|
|
195
|
+
if (newSeq && newSeq.name !== undefined) newSeq.name = name;
|
|
196
|
+
} catch (e2) {
|
|
197
|
+
throw new Error("create_timeline fallback failed: " + (e2 && e2.message ? e2.message : e2));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return { name: newSeq.name || name };
|
|
201
|
+
`,
|
|
202
|
+
import_to_media_pool: String.raw `
|
|
203
|
+
if (!app.project) throw new Error("No project open in Premiere.");
|
|
204
|
+
var paths = P.paths || [];
|
|
205
|
+
if (!paths.length) throw new Error("import_to_media_pool: paths array is empty.");
|
|
206
|
+
var parent = app.project.rootItem;
|
|
207
|
+
if (P.bin) {
|
|
208
|
+
var existing = null;
|
|
209
|
+
for (var i = 0; i < parent.children.numItems; i++) {
|
|
210
|
+
var child = parent.children[i];
|
|
211
|
+
if (child.name === P.bin && child.type === 2 /* BIN */) { existing = child; break; }
|
|
212
|
+
}
|
|
213
|
+
parent = existing || parent.createBin(P.bin);
|
|
214
|
+
}
|
|
215
|
+
var ok = app.project.importFiles(paths, true, parent, false);
|
|
216
|
+
if (!ok) throw new Error("importFiles returned false.");
|
|
217
|
+
return { imported: paths.length };
|
|
218
|
+
`,
|
|
219
|
+
clone_timeline: String.raw `
|
|
220
|
+
var src = _seq();
|
|
221
|
+
var newName = String(P.newName || (src.name + " copy"));
|
|
222
|
+
var cloned = null;
|
|
223
|
+
try { cloned = src.clone(); } catch (e) { cloned = null; }
|
|
224
|
+
if (!cloned) throw new Error("sequence clone failed (older Premiere versions don't expose Sequence.clone)");
|
|
225
|
+
if (cloned.name !== undefined) {
|
|
226
|
+
try { cloned.name = newName; } catch (e2) {}
|
|
227
|
+
}
|
|
228
|
+
return { name: cloned.name || newName };
|
|
229
|
+
`,
|
|
230
|
+
save_project: String.raw `
|
|
231
|
+
if (!app.project) throw new Error("No project open in Premiere.");
|
|
232
|
+
if (typeof app.project.save !== "function") throw new Error("app.project.save is not callable in this Premiere version");
|
|
233
|
+
app.project.save();
|
|
234
|
+
return null;
|
|
235
|
+
`,
|
|
236
|
+
insert_clip_on_track: String.raw `
|
|
237
|
+
var seq = _seq();
|
|
238
|
+
var fps = _fps(seq);
|
|
239
|
+
// Import media first.
|
|
240
|
+
var ok = app.project.importFiles([P.mediaPath], true, app.project.rootItem, false);
|
|
241
|
+
if (!ok) throw new Error("importFiles returned false for " + P.mediaPath);
|
|
242
|
+
var base = P.mediaPath.replace(/\\/g, "/").split("/").pop();
|
|
243
|
+
var pi = _findClipBin(base);
|
|
244
|
+
if (!pi) throw new Error("imported item not found: " + base);
|
|
245
|
+
var trackIdx = (P.track || 2) - 1;
|
|
246
|
+
// mediaKind selects audio vs video track family. Default video for back-compat.
|
|
247
|
+
var kind = String(P.mediaKind || "video").toLowerCase();
|
|
248
|
+
var trackList = (kind === "audio") ? seq.audioTracks : seq.videoTracks;
|
|
249
|
+
var track = trackList[trackIdx];
|
|
250
|
+
if (!track) throw new Error(kind + " track " + P.track + " does not exist on active sequence.");
|
|
251
|
+
var recordSec = P.recordFrame / fps;
|
|
252
|
+
track.insertClip(pi, recordSec);
|
|
253
|
+
var inserted = null;
|
|
254
|
+
for (var i = 0; i < track.clips.numItems; i++) {
|
|
255
|
+
var c = track.clips[i];
|
|
256
|
+
if (Math.abs(_frames(c.start, seq) - P.recordFrame) < 2) { inserted = c; break; }
|
|
257
|
+
}
|
|
258
|
+
if (!inserted) inserted = track.clips[track.clips.numItems - 1];
|
|
259
|
+
return {
|
|
260
|
+
id: String(inserted.nodeId || inserted.name),
|
|
261
|
+
track: P.track || 2,
|
|
262
|
+
trackKind: kind,
|
|
263
|
+
startFrame: _frames(inserted.start, seq),
|
|
264
|
+
endFrame: _frames(inserted.end, seq),
|
|
265
|
+
name: inserted.name
|
|
266
|
+
};
|
|
267
|
+
`,
|
|
268
|
+
replace_clip: String.raw `
|
|
269
|
+
var seq = _seq();
|
|
270
|
+
var target = null;
|
|
271
|
+
function scan(tracks) {
|
|
272
|
+
for (var ti = 0; ti < tracks.numTracks; ti++) {
|
|
273
|
+
var tr = tracks[ti];
|
|
274
|
+
for (var ci = 0; ci < tr.clips.numItems; ci++) {
|
|
275
|
+
var c = tr.clips[ci];
|
|
276
|
+
var iid = String(c.nodeId || c.name + ":" + ci);
|
|
277
|
+
if (iid === P.clipId) { target = c; return; }
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
scan(seq.videoTracks);
|
|
282
|
+
if (!target) scan(seq.audioTracks);
|
|
283
|
+
if (!target) throw new Error("clip not found on active sequence: " + P.clipId);
|
|
284
|
+
// Import the new media if not already in the project.
|
|
285
|
+
var ok = app.project.importFiles([P.mediaPath], true, app.project.rootItem, false);
|
|
286
|
+
if (!ok) throw new Error("importFiles returned false for " + P.mediaPath);
|
|
287
|
+
var base = P.mediaPath.replace(/\\/g, "/").split("/").pop();
|
|
288
|
+
var pi = _findClipBin(base);
|
|
289
|
+
if (!pi) throw new Error("imported item not found: " + base);
|
|
290
|
+
// Premiere's TrackItem exposes changeMediaPath in some versions.
|
|
291
|
+
if (typeof target.changeMediaPath === "function") {
|
|
292
|
+
target.changeMediaPath(P.mediaPath);
|
|
293
|
+
return { clipId: P.clipId, mediaPath: P.mediaPath };
|
|
294
|
+
}
|
|
295
|
+
throw new Error("replace_clip not supported by this Premiere version. fix: rebuild via FCPXML with the new media reference.");
|
|
296
|
+
`,
|
|
297
|
+
import_subtitles: String.raw `
|
|
298
|
+
if (!app.project) throw new Error("No project open in Premiere.");
|
|
299
|
+
var ok = app.project.importFiles([P.srtPath], true, app.project.rootItem, false);
|
|
300
|
+
if (!ok) throw new Error("importFiles returned false for " + P.srtPath);
|
|
301
|
+
return { imported: true, attached: false, note: "SRT imported to project; drag onto a captions track on the active sequence." };
|
|
302
|
+
`,
|
|
303
|
+
// Escape hatch: eval arbitrary ExtendScript with the Premiere DOM in scope.
|
|
304
|
+
// Pre-bound: app, project, sequence (active sequence or null), qe (Quality
|
|
305
|
+
// Engineering DOM, undocumented but available after enableQE()).
|
|
306
|
+
// Result resolution: caller may either assign to `result` or call setResult(value).
|
|
307
|
+
// print(...) is captured to a buffer and returned as `stdout`.
|
|
308
|
+
execute_code: String.raw `
|
|
309
|
+
if (typeof P.code !== "string" || !P.code.length) {
|
|
310
|
+
throw new Error("execute_code requires a non-empty 'code' string.");
|
|
311
|
+
}
|
|
312
|
+
var project = app.project || null;
|
|
313
|
+
var sequence = (project && project.activeSequence) ? project.activeSequence : null;
|
|
314
|
+
try { if (typeof app.enableQE === "function") app.enableQE(); } catch (eqe) {}
|
|
315
|
+
var qe = (typeof window !== "undefined" && window.qe) ? window.qe : (typeof $.global.qe !== "undefined" ? $.global.qe : null);
|
|
316
|
+
var __stdout = [];
|
|
317
|
+
var print = function () {
|
|
318
|
+
var parts = [];
|
|
319
|
+
for (var i = 0; i < arguments.length; i++) {
|
|
320
|
+
try { parts.push(typeof arguments[i] === "string" ? arguments[i] : JSON.stringify(arguments[i])); }
|
|
321
|
+
catch (e) { parts.push(String(arguments[i])); }
|
|
322
|
+
}
|
|
323
|
+
__stdout.push(parts.join(" "));
|
|
324
|
+
};
|
|
325
|
+
var __holder = { value: null, set: false };
|
|
326
|
+
var setResult = function (v) { __holder.value = v; __holder.set = true; };
|
|
327
|
+
var result = null;
|
|
328
|
+
try {
|
|
329
|
+
// ExtendScript eval inherits the current scope, so app/project/sequence/
|
|
330
|
+
// qe/print/setResult/result are all visible inside the snippet.
|
|
331
|
+
eval(P.code);
|
|
332
|
+
} catch (eEval) {
|
|
333
|
+
var stdout = __stdout.join("\n");
|
|
334
|
+
var tail = stdout ? ("\nstdout: " + stdout.substring(Math.max(0, stdout.length - 1500))) : "";
|
|
335
|
+
throw new Error((eEval && eEval.message ? eEval.message : String(eEval)) + tail);
|
|
336
|
+
}
|
|
337
|
+
var safe = function (v) {
|
|
338
|
+
try { JSON.stringify(v); return v; } catch (e) { return String(v); }
|
|
339
|
+
};
|
|
340
|
+
var out = { result: __holder.set ? safe(__holder.value) : (typeof result === "undefined" ? null : safe(result)) };
|
|
341
|
+
if (__stdout.length) {
|
|
342
|
+
var s = __stdout.join("\n");
|
|
343
|
+
if (s.length > 4000) s = s.substring(0, 2000) + "\n…[truncated]…\n" + s.substring(s.length - 1500);
|
|
344
|
+
out.stdout = s;
|
|
345
|
+
}
|
|
346
|
+
return out;
|
|
347
|
+
`,
|
|
348
|
+
};
|
|
349
|
+
/**
|
|
350
|
+
* Generate a self-contained JSX script for one method invocation.
|
|
351
|
+
* @param method Method name (must match METHODS)
|
|
352
|
+
* @param params JSON-encoded params (will be JSON.parsed in JSX as `P`)
|
|
353
|
+
* @param outPath Absolute path where the result JSON is written
|
|
354
|
+
*/
|
|
355
|
+
export function buildJsxScript(method, params, outPath) {
|
|
356
|
+
const body = METHODS[method];
|
|
357
|
+
if (!body)
|
|
358
|
+
throw new Error(`unknown premiere method: ${method}`);
|
|
359
|
+
// Escape outPath for safe JSX string literal.
|
|
360
|
+
const safeOut = outPath.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
361
|
+
const safeParams = JSON.stringify(params).replace(/\\/g, "\\\\").replace(/"/g, '\\"');
|
|
362
|
+
return `${PREAMBLE}
|
|
363
|
+
var P = JSON.parse("${safeParams}");
|
|
364
|
+
var __out = "${safeOut}";
|
|
365
|
+
try {
|
|
366
|
+
var __result = (function () { ${body} })();
|
|
367
|
+
_writeJson(__out, { ok: true, result: __result === undefined ? null : __result });
|
|
368
|
+
} catch (__e) {
|
|
369
|
+
_writeJson(__out, { ok: false, error: (__e && __e.message) ? __e.message : String(__e) });
|
|
370
|
+
}
|
|
371
|
+
`;
|
|
372
|
+
}
|
|
373
|
+
export const PREMIERE_METHODS = Object.keys(METHODS);
|
|
374
|
+
//# sourceMappingURL=bridge-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-source.js","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD1B,CAAC;AAEF,+DAA+D;AAE/D,MAAM,OAAO,GAA2B;IACtC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAA;;GAEf;IAED,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CvB;IAED,UAAU,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;GAWrB;IAED,WAAW,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBtB;IAED,eAAe,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;GAK1B;IAED,WAAW,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;GAetB;IAED,eAAe,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;GAsB1B;IAED,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;GAgB/B;IAED,cAAc,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;GAUzB;IAED,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;GAKvB;IAED,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+B/B;IAED,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BvB;IAED,gBAAgB,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;GAK3B;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,iEAAiE;IACjE,oFAAoF;IACpF,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCvB;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,MAA+B,EAC/B,OAAe;IAEf,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;IACjE,8CAA8C;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtF,OAAO,GAAG,QAAQ;sBACE,UAAU;eACjB,OAAO;;kCAEY,IAAI;;;;;CAKrC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-source.test.d.ts","sourceRoot":"","sources":["../../../../src/core/hosts/premiere/bridge-source.test.ts"],"names":[],"mappings":""}
|