premiere-pro-mcp 1.21.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +39 -0
- package/README.md +36 -19
- package/after-effects-cep-plugin/CSXS/manifest.xml +3 -3
- package/after-effects-cep-plugin/bridge-directory-security.cjs +1 -1
- package/artifacts/MCPBridgeCEP.zxp +0 -0
- package/cep-plugin/CSXS/manifest.xml +3 -3
- package/cep-plugin/bridge-directory-security.cjs +1 -1
- package/cep-plugin/index.html +1 -1
- package/cep-plugin/main.js +2 -0
- package/cep-plugin/updater.cjs +1 -1
- package/dist/ai/editorial-review.d.ts +7 -7
- package/dist/ai/editorial-workflows.d.ts +197 -0
- package/dist/ai/editorial-workflows.js +199 -0
- package/dist/ai/exact-time.d.ts +39 -0
- package/dist/ai/exact-time.js +88 -0
- package/dist/ai/timeline-contract.d.ts +128 -0
- package/dist/ai/timeline-contract.js +263 -0
- package/dist/bridge/after-effects-bridge.js +4 -0
- package/dist/bridge/file-bridge.d.ts +9 -0
- package/dist/bridge/file-bridge.js +102 -12
- package/dist/bridge/host-lease.d.ts +17 -0
- package/dist/bridge/host-lease.js +157 -0
- package/dist/bridge/project-guard.d.ts +32 -0
- package/dist/bridge/project-guard.js +51 -0
- package/dist/bridge/script-builder.js +123 -9
- package/dist/bridge/uxp-websocket-bridge.d.ts +17 -0
- package/dist/bridge/uxp-websocket-bridge.js +83 -14
- package/dist/index.js +1 -1
- package/dist/interchange/bounded-file.d.ts +23 -0
- package/dist/interchange/bounded-file.js +85 -0
- package/dist/interchange/evidence.d.ts +86 -0
- package/dist/interchange/evidence.js +239 -0
- package/dist/interchange/facility.d.ts +81 -0
- package/dist/interchange/facility.js +153 -0
- package/dist/interchange/otio.d.ts +62 -0
- package/dist/interchange/otio.js +186 -0
- package/dist/platform-capabilities.js +1 -1
- package/dist/security/capabilities.js +43 -0
- package/dist/server.d.ts +2 -1
- package/dist/server.js +124 -16
- package/dist/tools/advanced.js +52 -5
- package/dist/tools/captions.d.ts +1 -0
- package/dist/tools/captions.js +45 -36
- package/dist/tools/competitor-gaps.js +2 -0
- package/dist/tools/effects.js +56 -23
- package/dist/tools/execution-workflows.d.ts +567 -0
- package/dist/tools/execution-workflows.js +395 -0
- package/dist/tools/export.d.ts +5 -0
- package/dist/tools/export.js +149 -16
- package/dist/tools/extended-edit-plans.d.ts +140 -0
- package/dist/tools/extended-edit-plans.js +179 -0
- package/dist/tools/interchange-workflows.d.ts +233 -0
- package/dist/tools/interchange-workflows.js +106 -0
- package/dist/tools/keyframes.js +20 -7
- package/dist/tools/markers.js +45 -16
- package/dist/tools/media-analysis-cache.d.ts +14 -0
- package/dist/tools/media-analysis-cache.js +29 -0
- package/dist/tools/media-analysis.d.ts +16 -16
- package/dist/tools/media-analysis.js +10 -5
- package/dist/tools/media.js +62 -22
- package/dist/tools/mogrt-bake.d.ts +2 -0
- package/dist/tools/mogrt-bake.js +42 -3
- package/dist/tools/operation-recovery.d.ts +135 -0
- package/dist/tools/operation-recovery.js +105 -0
- package/dist/tools/project-item-start-time.d.ts +6 -0
- package/dist/tools/project-item-start-time.js +23 -0
- package/dist/tools/project.js +27 -3
- package/dist/tools/recovery.d.ts +12 -0
- package/dist/tools/recovery.js +2 -1
- package/dist/tools/scene-review-workflow.d.ts +111 -0
- package/dist/tools/scene-review-workflow.js +92 -0
- package/dist/tools/selection.js +104 -26
- package/dist/tools/sequence.js +12 -1
- package/dist/tools/stock-titles.js +15 -4
- package/dist/tools/temporal-render-evidence.d.ts +380 -0
- package/dist/tools/temporal-render-evidence.js +171 -0
- package/dist/tools/timeline-editorial.d.ts +1336 -0
- package/dist/tools/timeline-editorial.js +341 -0
- package/dist/tools/track-targeting.js +18 -26
- package/dist/tools/utility.js +61 -11
- package/dist/tools/uxp.d.ts +5 -0
- package/dist/tools/uxp.js +38 -6
- package/dist/workflows/agent-instructions.js +8 -1
- package/dist/workflows/analysis-cache.d.ts +15 -0
- package/dist/workflows/analysis-cache.js +60 -0
- package/dist/workflows/catalog.d.ts +27 -2
- package/dist/workflows/catalog.js +30 -0
- package/dist/workflows/invocation-context.d.ts +31 -0
- package/dist/workflows/invocation-context.js +64 -0
- package/dist/workflows/job-contract.d.ts +29 -0
- package/dist/workflows/job-contract.js +144 -0
- package/dist/workflows/mutation-receipt.d.ts +17 -0
- package/dist/workflows/mutation-receipt.js +29 -0
- package/dist/workflows/performance-diagnostics.d.ts +55 -0
- package/dist/workflows/performance-diagnostics.js +24 -0
- package/dist/workflows/review-artifacts.d.ts +30 -0
- package/dist/workflows/review-artifacts.js +138 -0
- package/dist/workflows/strict-schema.d.ts +4 -0
- package/dist/workflows/strict-schema.js +50 -0
- package/dist/workflows/tool-metadata.d.ts +1 -1
- package/dist/workflows/tool-metadata.js +4 -3
- package/dist/workflows/tool-packs.js +6 -0
- package/docs/filmcraft-improvements.json +424 -0
- package/docs/filmcraft-improvements.md +130 -0
- package/docs/supported-actions.md +63 -22
- package/docs/temporal-render-fixtures.matrix.json +15 -0
- package/docs/temporal-render-fixtures.md +70 -0
- package/package.json +17 -8
- package/public-product-manifest.json +6 -6
- package/scripts/benchmark-planning.mjs +18 -0
- package/scripts/check-dependency-boundaries.mjs +38 -0
- package/scripts/create-temporal-host-report.mjs +20 -0
- package/scripts/create-temporal-render-fixture.mjs +16 -0
- package/scripts/validate-temporal-host-report.mjs +67 -0
- package/scripts/verify-npm-package.mjs +10 -0
- package/uxp-plugin/advanced-workflows.cjs +36 -9
- package/uxp-plugin/commands.cjs +120 -32
- package/uxp-plugin/events.cjs +51 -3
- package/uxp-plugin/index.cjs +2 -0
- package/uxp-plugin/index.html +1 -1
- package/uxp-plugin/manifest.json +1 -1
- package/uxp-plugin/operation-ledger.cjs +135 -0
- package/uxp-plugin/protocol.cjs +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,44 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.23.0] - 2026-10-11
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- 41 bounded core tools and five guided workflow routes from the [52-item Filmcraft implementation ledger](docs/filmcraft-improvements.md). The source catalog now declares 434 core tools, 432 under default authority and 528 with 96 capability-gated UXP additions.
|
|
14
|
+
- Guarded execution and recovery with a private shared host lease, expected project/sequence targets, structured mutation receipts, cancellation/progress context, durable hashed UXP replay reservations and versioned command/receipt contracts. UXP writes require native cryptographic entropy and compatible durable replay storage; older unversioned panels remain read-only.
|
|
15
|
+
- Exact tick/rate timeline models, typed compound edit previews, sync and stacked-camera planning, transcript/caption/music/scene review, provenance, checkpoints and bounded edit-property fixtures.
|
|
16
|
+
- Bounded OTIO/XML inspection and loss reports, ALE/CSV adapters and audio-post turnover plans. Unsupported native round trips and opaque serializers remain explicit rather than being reported as completed exports.
|
|
17
|
+
- Verified delivery, checksum-pinned review artifacts, local job inspection/cancellation, rendered scopes and actual multi-frame RGB/ROI/PCM evidence tools, plus opt-in analysis caching, performance diagnostics and licensed-host fixture/report helpers.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Folder imports now verify Premiere project-item readback instead of treating an accepted import call as proof that all requested media was imported. Counts and partial outcomes describe the observed project state.
|
|
22
|
+
- Caption imports validate supported formats before dispatch, preserve mutation readback and reject counts outside the safe integer range.
|
|
23
|
+
|
|
24
|
+
- Registered tools accept optional request-scoped `expected_project_path`; generated CEP commands refuse a different, missing or unsaved active project before the tool body. UXP and After Effects refuse this CEP-only guard. Omitting the guard preserves existing behavior.
|
|
25
|
+
|
|
26
|
+
- `unnest_sequence` now refuses, before removing the nested clip, any inner item that also carries the other media type. Premiere 26.5.2's `Track.overwriteClip` places that media on the matching track and overwrites the clips there. Same guard as `replace_clip`. Unnest a nest of video-only or audio-only items, or use Premiere's Unnest command.
|
|
27
|
+
- Shared project-item mark restore after `replace_clip`, `unnest_sequence`, and other `Track.overwriteClip` helpers now writes the quarter-frame-biased seconds from `__itemMarksForRestore`. Writing the exact tick boundary as seconds can floor one media frame early on Premiere 26.5.2 (a soft-subclip Out of `00:00:29:22` stored as `00:00:29:21`), shrinking the source item. `duplicate_clip` and `set_item_in_out` already used those seconds.
|
|
28
|
+
- `export_sequence` without `preset_path` no longer exports at proxy resolution when Media Encoder is not installed. Preset discovery only searched Premiere's `Settings/IngestPresets`, so the default became `IngestPresets/Proxy/00_1024x540 H.264.epr` and a 1080x1920 sequence was exported at 1024x540 while reporting `verified: true` (Premiere 24.0, macOS). Preset discovery now also searches Premiere's own `MediaIO/systempresets` when no Media Encoder presets exist, and the default never comes from `IngestPresets`; if no other H.264 preset is found, the tool asks for `preset_path`.
|
|
29
|
+
|
|
30
|
+
### Compatibility and evidence
|
|
31
|
+
|
|
32
|
+
CEP remains the production bridge; failed UXP mutations never fall back to CEP or QE. Recovery preserves unknown and partial outcomes. Native multicam switching, nonlinear/nested retime mapping, DSP music rendering, OCR and accepted-native-job cancellation remain unsupported. Local decoder tests establish artifact behavior, while licensed Premiere playback, Undo/reopen and native round-trip validation remain `not_run`.
|
|
33
|
+
|
|
34
|
+
## [1.22.0] - 2026-10-08
|
|
35
|
+
|
|
36
|
+
### Fixed
|
|
37
|
+
|
|
38
|
+
- The Windows private-directory ACL check waits up to 30 seconds for `powershell.exe` instead of 5, in the server and in both CEP panels. On a loaded machine (including CI runners with coverage) PowerShell could take longer than 5 seconds to start, which made the check throw and blocked the bridge. A timeout still fails closed: the directory is not used unless the ACL check succeeds.
|
|
39
|
+
- Effect writes, stabilization, smart-bin creation, proxy detachment, folder imports, sequence creation, marker deletion and clip selection now distinguish requested edits from host readback, report ignored writes as failures and unreadable results as `committed_unverified`. Selection counts describe applied states; stabilization does not claim a completed analysis. CEP selected-clip removal refuses ripple requests before deleting because clip absence cannot verify gap closure.
|
|
40
|
+
- `set_sequence_display_format` writes Premiere's display codes (video 100-113, audio 200-201) and maps the older 0-11 / 0-1 inputs onto them. Premiere 26.5.2 stores and reads back any number, so the old values "verified" but did not select the format (2 formatted as non-drop timecode, 102 as drop-frame). `set_sequence_frame_rate` now reports the clips Premiere re-snaps to the new frame grid (`clipsMoved`, `maxShiftSeconds`, `movedClips`) with a warning that changing back does not restore them.
|
|
41
|
+
- `create_subclip` now returns the new subclip's `nodeId` and reads its stored range back. On Premiere 26.5.2 a soft-boundary subclip's `getInPoint`/`getOutPoint` read the whole media, so the range is read from the subclip's project metadata (`VideoInPoint`/`VideoOutPoint` timecode and frame rate). The result reports requested and observed in/out seconds, with `outcome: "verified"` when both are within one media frame of the request and `committed_unverified` otherwise or when the metadata cannot be read.
|
|
42
|
+
- `add_title` reports the start Premiere stored for the placed graphic. Premiere snaps it to the frame grid (a requested 5 s lands at 5.005 s at 29.97 fps), so `startSeconds` and the new `appliedStartSeconds` come from the placed clip, and the request is kept as `requestedStartSeconds`.
|
|
43
|
+
- `update_marker` reports the stored marker start as `timeSeconds` (for example 7.5075 s rather than the requested 7.5 s) and adds `requestedSeconds`.
|
|
44
|
+
- `manage_proxies` with `action: "toggle"` can set a known proxy display state. The action changes Premiere's application-wide proxy display (`app.setEnableProxies`), not the given item, and it only flipped the current state, so on Premiere 26.5.2 an agent could not ask for proxies on or off and two calls undid each other. It now accepts `enabled: true | false`, writes only when the state differs, and verifies by reading `app.getEnableProxies()` back; a host that ignores the write is reported as a failure. Omitting `enabled` still flips the state. Results report `previousEnabled`, `proxiesEnabled`, `changed` and `mode` (`set` or `flip`), and the description now says the action is application-wide.
|
|
45
|
+
- Still-image mark clearing now identifies unreadable still duration explicitly; `set_clip_start_time` shares the verified implementation of `set_start_time` and is documented as its alias. Colour selection states that it uses the source project item label because CEP has no timeline clip-label getter. Baked title-cache cleanup retains the newest 50 matching files and leaves unrelated directory entries untouched.
|
|
46
|
+
|
|
9
47
|
## [1.21.0] - 2026-10-07
|
|
10
48
|
|
|
11
49
|
### Fixed
|
|
@@ -71,6 +109,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
71
109
|
- **Markers.** `manage_markers_uxp` `add` now forwards and applies `color_index` and verifies every requested field. Previously the colour was dropped while the add reported verified.
|
|
72
110
|
- **Frame export.** `export_frame_uxp` retries with the file extension when Premiere rejects an extension-less name ("File Format is not supported"). It also waits up to 15 s for the PNG, which 26.5.2 writes after the call returns, and it checks for the file by walking the approved workspace folder: a plugin with request-only file access cannot open arbitrary `file:` URLs, so the old check reported a written frame as missing.
|
|
73
111
|
- **Media health.** `maintain_media_health_uxp` treats a single `project_item_id` as a one-item list for inspect, refresh and set_offline.
|
|
112
|
+
|
|
74
113
|
- `import_media` no longer reports an error when an `.xml`, `.aaf`, `.edl` or `.prproj` file imports correctly. Interchange files create sequences and bins rather than an item with the file's path, so they now return `outcome: "committed_unverified"` with `interchange: true`, which stops retries from duplicating the sequence (#805).
|
|
75
114
|
|
|
76
115
|
- `duplicate_clip` no longer places a copy one frame short. Premiere can snap the source out point a frame early, so on Premiere 26.5.2 a 677-frame clip was copied as 676 frames, and the tool still reported `verified` because it allowed two frames of drift. It now trims each placed copy, and its linked partner, back to the original end, reports `endCorrected`, and verifies start, end and source in-point to within half a frame.
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ Free, MIT licensed, local-first, and published to npm as [`premiere-pro-mcp`](ht
|
|
|
14
14
|
|
|
15
15
|
[Website](https://premiere-pro-mcp.com/) · [Recorded demo](https://premiere-pro-mcp.com/demo/) · [Compare servers](https://premiere-pro-mcp.com/compare/) · [Setup guides](https://premiere-pro-mcp.com/blog/how-to-set-up-premiere-pro-mcp/) · [Search tools](https://premiere-pro-mcp.com/tools/) · [Troubleshooting](https://premiere-pro-mcp.com/docs/troubleshooting/) · [Release facts](https://premiere-pro-mcp.com/facts/)
|
|
16
16
|
|
|
17
|
-
Development source:
|
|
17
|
+
Development source: 434 core tools across 67 modules, 4 resources, and 29 guided workflows. A connected UXP host adds 96 capability-gated tools.
|
|
18
18
|
|
|
19
19
|
The [completed AE render handoff](docs/after-effects-render-handoff.md) previews and confirms importing one finished render into an existing Premiere bin, with host and file rechecks and an import receipt.
|
|
20
20
|
|
|
@@ -125,17 +125,17 @@ and repository before configuring a client. The new
|
|
|
125
125
|
VS Code, or Codex settings that point directly to this installation. It is a
|
|
126
126
|
feature included in v1.15.1 and later.
|
|
127
127
|
|
|
128
|
-
The current source exposes
|
|
128
|
+
The current source exposes 434 core tools for supported workflow steps spanning the supported ExtendScript, QE DOM, local media and interchange analysis, revisioned project-context retrieval, safe edit-planning, project-intake preview, review handoff, connection verification, and guarded After Effects MOGRT authoring, batch, library, render-queue, inspection, and Premiere-handoff workflows. A compatible, authenticated UXP panel adds 96 documented, capability-gated tools without replacing the production CEP bridge.
|
|
129
129
|
|
|
130
130
|
<a id="latest-release"></a>
|
|
131
131
|
|
|
132
|
-
### Latest release: 1.
|
|
132
|
+
### Latest release: 1.22.0
|
|
133
133
|
|
|
134
|
-
The published v1.
|
|
134
|
+
The published v1.22.0 npm artifact contains **393 core tools**, 391 in its default profile,
|
|
135
135
|
and 487 with a compatible UXP connection. The development catalog above can include
|
|
136
136
|
unreleased work. See the [versioned facts and package provenance](https://premiere-pro-mcp.com/facts/).
|
|
137
137
|
|
|
138
|
-
GitHub releases use `v<SemVer>` for both title and tag, such as `v1.
|
|
138
|
+
GitHub releases use `v<SemVer>` for both title and tag, such as `v1.22.0`.
|
|
139
139
|
See [release naming and version conventions](docs/release-conventions.md).
|
|
140
140
|
|
|
141
141
|
### Try a bounded workflow
|
|
@@ -154,6 +154,8 @@ if the connection is unavailable.
|
|
|
154
154
|
|
|
155
155
|
### Release highlights
|
|
156
156
|
|
|
157
|
+
- **1.22.0 readback receipts:** effect writes, stabilization, smart bins, proxies, folder imports, sequence creation, marker deletion and clip selection report what Premiere applied as `verified`, `committed_unverified` or `failed`; `create_subclip`, `add_title` and `update_marker` report the stored values; `set_sequence_frame_rate` lists clips Premiere re-snapped.
|
|
158
|
+
- **1.22.0 display codes and proxies:** `set_sequence_display_format` writes Premiere's real display codes (video 100-113, audio 200-201) and maps the older 0-11 and 0-1 inputs onto them; `manage_proxies` toggle can set a known proxy display state; the Windows ACL check waits up to 30 seconds for PowerShell.
|
|
157
159
|
- **1.21.0 Claude Desktop startup fix:** the extension starts when optional settings are blank, and Desktop's discover-only probe no longer holds the UXP port, so the real server keeps its UXP tools.
|
|
158
160
|
- **1.21.0 frame-grid verification:** project-item marks, sequence In/Out, work area, link/unlink, zero point, transitions, `replace_clip` and `duplicate_clip` verify against Premiere's own frame and sample grids and fail closed; UXP tools snap times to the sequence frame grid.
|
|
159
161
|
- **1.20.0 verified range removal:** `ripple_remove_timeline_ranges` previews, then applies a multi-range ripple removal with a single-use confirmation token and clip-level readback (QE razor; experimental).
|
|
@@ -193,7 +195,7 @@ if the connection is unavailable.
|
|
|
193
195
|
local Premiere processes. See the generated [supported action catalog](docs/supported-actions.md)
|
|
194
196
|
for individual capability and verification contracts.
|
|
195
197
|
|
|
196
|
-
See the [v1.
|
|
198
|
+
See the [v1.22.0 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.22.0)
|
|
197
199
|
for complete details. Live installation in Premiere Pro still requires host verification.
|
|
198
200
|
|
|
199
201
|
### Current MCP protocol support
|
|
@@ -211,6 +213,16 @@ handshake only; leave it unset (or `auto`) for modern MCP capabilities.
|
|
|
211
213
|
|
|
212
214
|
---
|
|
213
215
|
|
|
216
|
+
### Guarding multi-project CEP sessions
|
|
217
|
+
|
|
218
|
+
Every registered tool accepts optional `expected_project_path`, an absolute path to the intended saved Premiere project. Generated CEP scripts compare the active project's host-normalized file path before the tool body; a different, missing or unsaved project refuses without running that body. The guard is scoped to the request and checked for every generated command in a multi-command tool. Omitting it preserves existing behavior.
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{"name":"get_project_info","arguments":{"expected_project_path":"/Projects/Film.prproj"}}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
This protects against accidental active-project switches, not deliberate project switching inside unsafe scripts. It does not select a project or prove media identity. Paths remain in request context and are not telemetry. UXP and After Effects commands refuse this CEP-only guard; UXP workflows use their `expected_snapshot` identity contracts. Local-only tools do not inspect Premiere. Filesystem aliases are not resolved as a claim of project identity.
|
|
225
|
+
|
|
214
226
|
## For editors evaluating an AI workflow
|
|
215
227
|
|
|
216
228
|
Before an assistant changes an active project, use the
|
|
@@ -241,7 +253,7 @@ their bins, media rules, and organization rules before a facility uses one.
|
|
|
241
253
|
> ### Install the published package (verify the name)
|
|
242
254
|
>
|
|
243
255
|
> ```bash
|
|
244
|
-
> npm i -g premiere-pro-mcp@1.
|
|
256
|
+
> npm i -g premiere-pro-mcp@1.22.0
|
|
245
257
|
> ```
|
|
246
258
|
>
|
|
247
259
|
> This repository publishes only **`premiere-pro-mcp`**. A differently named package (`adobe-premiere-pro-mcp`) may also declare a `premiere-pro-mcp` executable. Before configuring a client, confirm:
|
|
@@ -249,7 +261,7 @@ their bins, media rules, and organization rules before a facility uses one.
|
|
|
249
261
|
> | Check | Expected |
|
|
250
262
|
> | --- | --- |
|
|
251
263
|
> | Package name | `premiere-pro-mcp` (not `adobe-premiere-pro-mcp`) |
|
|
252
|
-
> | Version | `1.
|
|
264
|
+
> | Version | `1.22.0` |
|
|
253
265
|
> | Homepage / repo | https://premiere-pro-mcp.com/ · https://github.com/leancoderkavy/premiere-pro-mcp |
|
|
254
266
|
>
|
|
255
267
|
> ```bash
|
|
@@ -262,9 +274,9 @@ their bins, media rules, and organization rules before a facility uses one.
|
|
|
262
274
|
|
|
263
275
|
### Easiest supported path: Claude Desktop
|
|
264
276
|
|
|
265
|
-
1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.
|
|
277
|
+
1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.22.0/premiere-pro-mcp-1.22.0.mcpb).
|
|
266
278
|
2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
|
|
267
|
-
3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.
|
|
279
|
+
3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.22.0/MCPBridgeCEP.zxp). Open it with your trusted ZXP installer. If your computer has no ZXP installer, use the npm connector installer in **Advanced setup** below.
|
|
268
280
|
4. Restart Premiere, open a project, then open **Window > Extensions > MCP for Adobe Premiere Pro**.
|
|
269
281
|
5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
|
|
270
282
|
|
|
@@ -568,11 +580,11 @@ From a clone of this repository:
|
|
|
568
580
|
```bash
|
|
569
581
|
codex plugin marketplace add .
|
|
570
582
|
codex plugin add premiere-pro@premiere-pro-mcp
|
|
571
|
-
npx -y premiere-pro-mcp@1.
|
|
583
|
+
npx -y premiere-pro-mcp@1.22.0 --install-cep
|
|
572
584
|
```
|
|
573
585
|
|
|
574
586
|
Restart Premiere Pro and start a new Codex session after installation. The plugin
|
|
575
|
-
launches `premiere-pro-mcp@1.
|
|
587
|
+
launches `premiere-pro-mcp@1.22.0` through `npx`; the separate CEP installation is
|
|
576
588
|
required because the MCP server communicates with the running Premiere host through
|
|
577
589
|
the local bridge.
|
|
578
590
|
|
|
@@ -610,7 +622,7 @@ For Claude Code, add this repository as a marketplace and install the plugin:
|
|
|
610
622
|
Then install the Premiere bridge and start a new Claude Code session:
|
|
611
623
|
|
|
612
624
|
```bash
|
|
613
|
-
npx -y premiere-pro-mcp@1.
|
|
625
|
+
npx -y premiere-pro-mcp@1.22.0 --install-cep
|
|
614
626
|
```
|
|
615
627
|
|
|
616
628
|
The Claude Code package lives in
|
|
@@ -827,7 +839,7 @@ PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
|
|
|
827
839
|
|
|
828
840
|
Generate that secret yourself and enter the same value in the UXP panel (**Window → UXP Plugins**, not the CEP Connector). CEP-only setups do not use a token. The listener binds only to `127.0.0.1:7777`, authenticates the WebSocket upgrade, requires a versioned capability handshake, correlates concurrent requests, and fails pending work on timeout or disconnect. Set `PREMIERE_UXP_PORT` to use another loopback port.
|
|
829
841
|
|
|
830
|
-
When enabled, MCP discovery includes
|
|
842
|
+
When enabled, MCP discovery includes 96 capability-gated UXP additions. The first expansion covers effects, deterministic timeline selection, selection batches, scene detection, proxy/ingest, relink, metadata, color conformance, read-only Premiere/After Effects environment inspection, Source Monitor audition, storage, and least-privilege workspace access. The second adds Project-panel selection, marker CRUD, single-transaction undoable beat-grid marker application, bin organization, sequence settings, imports, typed effect parameters/keyframes, track-item transforms, atomic J/L split edits, SequenceEditor timeline edits, sequence lifecycle, and AME encoding. The third wave begins with a redacted event journal, conservative AME terminal receipts, explicit host-readiness gates, safe multi-project sessions, lease-based growing-media control, namespaced workflow checkpoints, bounded media-health maintenance, caption-aware track mute state, transactional source trim/framing, guarded sequence-range updates, guarded source-media start timing, and guarded source-media frame-rate/pixel-aspect overrides documented in [the third-wave workflow matrix](docs/third-wave-uxp-workflows.md). The bounded migration surface also includes a non-ripple selected-item lift, native video-transition listing and guarded transactions, native active and explicit-GUID sequence timing inspection, opt-in installed-MOGRT directory inspection without filesystem enumeration, bounded native timeline structure inspection with opt-in source IDs, classification, and broad content category, guarded sequence display-format updates, a capped native Project-panel tree, a double-read Project-panel insertion-bin snapshot, guarded empty/default sequence creation, bounded native Project-panel schema/item-column metadata inspection, guarded direct Project-panel metadata replacements with exact state/readback guards, guarded typed Project metadata schema-field creation with non-field-level readback, guarded direct updates to three named application preferences, guarded transcript JSON replacement for one exact source clip, direct active-track-item identity readback, guarded source-only slips, guarded contiguous three-item slides, guarded append-only timeline duplicates, guarded contiguous same-track ripple deletes, guarded source-project-item color labels resolved from one timeline coordinate, guarded explicit-sequence preview-frame rectangle updates, explicit opt-in source-media provenance paths with bounded double resolution, bounded source-proxy readiness with an explicit attached-path disclosure, guarded static effect-parameter PointF x/y updates, bounded effect-parameter descriptor catalogs, bounded project/sequence Object Mask audits, native FrameRate/TickTime frame-alignment inspection with caller-owned inputs and tick readback, and native TickTime arithmetic over caller-owned canonical tick strings; it does not claim direct empty-track create/delete, global redo support, playback proof, Object Mask counts or visual validity, an atomic Project-panel metadata compare-and-set, app-preference Undo, installed-template availability or compatibility, imported transcript persistence, override-presence/clear semantics, path existence, source lineage or rights, proxy compatibility, general or keyframed effect-parameter value readback, rendered-frame correctness, linked-item sync, or licensed-host validation. A separate [hybrid benchmark gate](docs/uxp-hybrid-benchmark.md) keeps native acceleration disabled until reproducible cross-platform evidence exists. See also [the first stable workflow matrix](docs/uxp-stable-workflows.md), [the next-ten workflow matrix](docs/uxp-next-ten-workflows.md), [the guarded-slip workflow notes](docs/uxp-slip-workflows.md), [the guarded-slide workflow notes](docs/uxp-slide-workflows.md), [the guarded-duplicate workflow notes](docs/uxp-clone-workflows.md), and [the guarded-ripple-delete workflow notes](docs/uxp-ripple-delete-workflows.md). Commands are advertised only while the authenticated local UXP bridge is connected; the host capability handshake remains the authority for support in the running Premiere build. A failed UXP command is never silently retried through CEP because the first operation may have partially succeeded. UXP edits require a matching command-schema/receipt version, durable panel ledger storage and native cryptographic entropy; older unversioned panels remain read-only until the matching panel is installed.
|
|
831
843
|
|
|
832
844
|
The bounded UXP migration surface also exposes a read-only animated-PointF endpoint-displacement inspection through `automate_effect_parameters_uxp`. It requires one exact component and parameter target plus a strictly increasing time interval, double-reads native endpoint values and their distance, and refuses static, malformed, or changed parameter state. It does not modify Premiere or prove rendered appearance, playback, persistence, Undo, or licensed-host behavior.
|
|
833
845
|
|
|
@@ -936,7 +948,10 @@ See [usage, example and remaining execution adapters](docs/film-editorial-workfl
|
|
|
936
948
|
|
|
937
949
|
Reviewed assistant-editing tools now provide dialogue candidate decisions, quote paper-edit CSV, batch copy previews, sync-evidence triage, and owned-footage B-roll review. These are local evidence reviews, not new host engines. See [review workflow contracts](docs/editorial-review-workflows.md).
|
|
938
950
|
|
|
939
|
-
|
|
951
|
+
See [Filmcraft improvement ledger](docs/filmcraft-improvements.md) for exact-time
|
|
952
|
+
planning, recovery, job observation, temporal evidence and facility workflows.
|
|
953
|
+
|
|
954
|
+
## Tools (434 core total; 432 under the default profile; 528 with a connected UXP bridge)
|
|
940
955
|
|
|
941
956
|
The [complete supported-actions catalog](docs/supported-actions.md) lists every
|
|
942
957
|
registered core tool, the two tools restricted behind explicit `unsafe-script`
|
|
@@ -1088,9 +1103,11 @@ adjusted. This is a CEP contract check, not validation in a licensed Premiere Pr
|
|
|
1088
1103
|
| `encode_project_item` / `encode_file` | Direct encoding |
|
|
1089
1104
|
| `start_batch_encode` | Start render queue |
|
|
1090
1105
|
|
|
1091
|
-
Premiere
|
|
1092
|
-
|
|
1093
|
-
|
|
1106
|
+
Documented Premiere UXP exposes format-specific OTIO import/export through
|
|
1107
|
+
runtime-probed `export_interchange_uxp` and `import_interchange_uxp`. CEP has no
|
|
1108
|
+
documented native OTIO route. Native EDL, Render and Replace, cloud publishing
|
|
1109
|
+
and Content Credentials export configuration remain unavailable through the
|
|
1110
|
+
supported automation contracts. `export_sequence_edl` therefore builds the CMX 3600 list
|
|
1094
1111
|
locally from the clips Premiere reads back and validates it with the same parser
|
|
1095
1112
|
used by `inspect_cmx3600_edl`; it is not a Premiere-native export.
|
|
1096
1113
|
`get_capabilities` reports the remaining delivery gaps explicitly rather than
|
|
@@ -1425,7 +1442,7 @@ premiere-pro-mcp/
|
|
|
1425
1442
|
├── src/
|
|
1426
1443
|
│ ├── index.ts # Entry point — stdio transport setup
|
|
1427
1444
|
│ ├── http-server.ts # Entry point — HTTP/SSE transport (Fly.io / remote)
|
|
1428
|
-
│ ├── server.ts # MCP server — registers
|
|
1445
|
+
│ ├── server.ts # MCP server — registers 434 tools, filtered by authority profile
|
|
1429
1446
|
│ ├── bridge/
|
|
1430
1447
|
│ │ ├── file-bridge.ts # File-based IPC (write .jsx, poll .json)
|
|
1431
1448
|
│ │ └── script-builder.ts # ExtendScript generator with ES3 helpers
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.aftereffects.bridge" ExtensionBundleVersion="1.
|
|
2
|
+
<ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.aftereffects.bridge" ExtensionBundleVersion="1.23.0" ExtensionBundleName="MCP for Adobe After Effects">
|
|
3
3
|
<ExtensionList>
|
|
4
|
-
<Extension Id="com.mcp.aftereffects.bridge.panel" Version="1.
|
|
5
|
-
<Extension Id="com.mcp.aftereffects.bridge.headless" Version="1.
|
|
4
|
+
<Extension Id="com.mcp.aftereffects.bridge.panel" Version="1.23.0"/>
|
|
5
|
+
<Extension Id="com.mcp.aftereffects.bridge.headless" Version="1.23.0"/>
|
|
6
6
|
</ExtensionList>
|
|
7
7
|
<ExecutionEnvironment>
|
|
8
8
|
<HostList>
|
|
Binary file
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.
|
|
2
|
+
<ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.23.0" ExtensionBundleName="MCP for Adobe Premiere Pro">
|
|
3
3
|
<ExtensionList>
|
|
4
|
-
<Extension Id="com.mcp.premiere.bridge.panel" Version="1.
|
|
5
|
-
<Extension Id="com.mcp.premiere.bridge.headless" Version="1.
|
|
4
|
+
<Extension Id="com.mcp.premiere.bridge.panel" Version="1.23.0"/>
|
|
5
|
+
<Extension Id="com.mcp.premiere.bridge.headless" Version="1.23.0"/>
|
|
6
6
|
</ExtensionList>
|
|
7
7
|
<ExecutionEnvironment>
|
|
8
8
|
<HostList>
|
package/cep-plugin/index.html
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
<section class="update-section" aria-live="polite">
|
|
82
82
|
<div class="update-copy">
|
|
83
83
|
<span class="section-label">MCP updates</span>
|
|
84
|
-
<strong id="updateTitle">Version 1.
|
|
84
|
+
<strong id="updateTitle">Version 1.23.0</strong>
|
|
85
85
|
<span id="updateDetail">Checking the global MCP server and connector release…</span>
|
|
86
86
|
</div>
|
|
87
87
|
<button id="btnUpdate" class="button button-update" onclick="handleUpdateClick()" type="button" aria-describedby="updateDetail" disabled>
|
package/cep-plugin/main.js
CHANGED
|
@@ -248,6 +248,8 @@ function writeBridgeHeartbeat() {
|
|
|
248
248
|
try {
|
|
249
249
|
fs.writeFileSync(stagedPath, JSON.stringify({
|
|
250
250
|
protocolVersion: 1,
|
|
251
|
+
commandSchemaVersion: 1,
|
|
252
|
+
receiptVersion: 1,
|
|
251
253
|
state: bridgeRunning ? "running" : "waiting"
|
|
252
254
|
}), "utf-8");
|
|
253
255
|
fs.renameSync(stagedPath, heartbeatPath);
|
package/cep-plugin/updater.cjs
CHANGED
|
@@ -95,7 +95,7 @@ export declare const brollReviewSchema: z.ZodObject<{
|
|
|
95
95
|
}, z.core.$strict>;
|
|
96
96
|
export declare function reviewDialogue(input: unknown): {
|
|
97
97
|
cards: {
|
|
98
|
-
decision: "
|
|
98
|
+
decision: "pending" | "rejected" | "approved";
|
|
99
99
|
context: {
|
|
100
100
|
before: string;
|
|
101
101
|
passage: string;
|
|
@@ -155,7 +155,7 @@ export declare function reviewQuotes(input: unknown): {
|
|
|
155
155
|
export declare function reviewText(input: unknown): {
|
|
156
156
|
cards: {
|
|
157
157
|
changed: boolean;
|
|
158
|
-
decision: "
|
|
158
|
+
decision: "pending" | "rejected" | "approved";
|
|
159
159
|
proposed_text: string;
|
|
160
160
|
id: string;
|
|
161
161
|
target_id: string;
|
|
@@ -165,7 +165,7 @@ export declare function reviewText(input: unknown): {
|
|
|
165
165
|
}[];
|
|
166
166
|
approved_changes: {
|
|
167
167
|
changed: boolean;
|
|
168
|
-
decision: "
|
|
168
|
+
decision: "pending" | "rejected" | "approved";
|
|
169
169
|
proposed_text: string;
|
|
170
170
|
id: string;
|
|
171
171
|
target_id: string;
|
|
@@ -185,7 +185,7 @@ export declare function reviewSync(input: unknown): {
|
|
|
185
185
|
evidence_status: string;
|
|
186
186
|
offset_spread_seconds: number;
|
|
187
187
|
proposed_offset_seconds: number | null;
|
|
188
|
-
decision: "
|
|
188
|
+
decision: "pending" | "rejected" | "approved";
|
|
189
189
|
id: string;
|
|
190
190
|
camera_source_id: string;
|
|
191
191
|
recorder_source_id: string;
|
|
@@ -201,7 +201,7 @@ export declare function reviewSync(input: unknown): {
|
|
|
201
201
|
evidence_status: string;
|
|
202
202
|
offset_spread_seconds: number;
|
|
203
203
|
proposed_offset_seconds: number | null;
|
|
204
|
-
decision: "
|
|
204
|
+
decision: "pending" | "rejected" | "approved";
|
|
205
205
|
id: string;
|
|
206
206
|
camera_source_id: string;
|
|
207
207
|
recorder_source_id: string;
|
|
@@ -222,7 +222,7 @@ export declare function reviewSync(input: unknown): {
|
|
|
222
222
|
};
|
|
223
223
|
export declare function reviewBroll(input: unknown): {
|
|
224
224
|
cards: {
|
|
225
|
-
decision: "
|
|
225
|
+
decision: "pending" | "rejected" | "approved";
|
|
226
226
|
timeline_end_seconds: number;
|
|
227
227
|
video_only: boolean;
|
|
228
228
|
id: string;
|
|
@@ -238,7 +238,7 @@ export declare function reviewBroll(input: unknown): {
|
|
|
238
238
|
alternative_source_ids: string[];
|
|
239
239
|
}[];
|
|
240
240
|
approved_placements: {
|
|
241
|
-
decision: "
|
|
241
|
+
decision: "pending" | "rejected" | "approved";
|
|
242
242
|
timeline_end_seconds: number;
|
|
243
243
|
video_only: boolean;
|
|
244
244
|
id: string;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { type ExpectedEdit, type TimelineSnapshot } from "./timeline-contract.js";
|
|
2
|
+
export declare function planAudioSynchronization(reference: number[], candidate: number[], sampleRate: number, maxLag: number): {
|
|
3
|
+
status: string;
|
|
4
|
+
reason: string;
|
|
5
|
+
candidates: never[];
|
|
6
|
+
host_applied: boolean;
|
|
7
|
+
confidence?: undefined;
|
|
8
|
+
ambiguity_margin?: undefined;
|
|
9
|
+
offset_convention?: undefined;
|
|
10
|
+
offset_seconds?: undefined;
|
|
11
|
+
scope?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
status: string;
|
|
14
|
+
confidence: number;
|
|
15
|
+
ambiguity_margin: number;
|
|
16
|
+
candidates: {
|
|
17
|
+
offset_samples: number;
|
|
18
|
+
correlation: number;
|
|
19
|
+
overlap_samples: number;
|
|
20
|
+
}[];
|
|
21
|
+
offset_convention: string;
|
|
22
|
+
offset_seconds: number | null;
|
|
23
|
+
host_applied: boolean;
|
|
24
|
+
scope: string;
|
|
25
|
+
reason?: undefined;
|
|
26
|
+
};
|
|
27
|
+
export declare function planAnchorSynchronization(referenceTicks: string[], candidateTicks: string[]): {
|
|
28
|
+
status: string;
|
|
29
|
+
offset_ticks: string;
|
|
30
|
+
confidence: number | null;
|
|
31
|
+
evidence: string;
|
|
32
|
+
disagreements: string[];
|
|
33
|
+
host_applied: boolean;
|
|
34
|
+
};
|
|
35
|
+
export declare function mapWordsToPlacements(wordInput: unknown, snapshotInput: unknown): {
|
|
36
|
+
transcript_revision: string;
|
|
37
|
+
snapshot_revision: string;
|
|
38
|
+
occurrences: {
|
|
39
|
+
occurrence_id: string;
|
|
40
|
+
placement_id: string;
|
|
41
|
+
word_index: number;
|
|
42
|
+
text: string;
|
|
43
|
+
source_start_ticks: string;
|
|
44
|
+
source_end_ticks: string;
|
|
45
|
+
sequence_start_ticks: string;
|
|
46
|
+
sequence_end_ticks: string;
|
|
47
|
+
clipped: boolean;
|
|
48
|
+
}[];
|
|
49
|
+
host_applied: boolean;
|
|
50
|
+
};
|
|
51
|
+
export declare function planMusicRemix(input: {
|
|
52
|
+
beats_ticks: string[];
|
|
53
|
+
source_duration_ticks: string;
|
|
54
|
+
target_duration_ticks: string;
|
|
55
|
+
protected_intro_ticks: string;
|
|
56
|
+
protected_outro_ticks: string;
|
|
57
|
+
crossfade_ticks?: string;
|
|
58
|
+
signal_classification: "music" | "silence" | "noise";
|
|
59
|
+
}): {
|
|
60
|
+
segments: {
|
|
61
|
+
source_in_ticks: string;
|
|
62
|
+
source_out_ticks: string;
|
|
63
|
+
}[];
|
|
64
|
+
target_duration_ticks: string;
|
|
65
|
+
crossfade_ticks: string;
|
|
66
|
+
review_required: boolean;
|
|
67
|
+
native_remix_supported: boolean;
|
|
68
|
+
nearest_beat_error_ticks?: undefined;
|
|
69
|
+
audible_clicks_verified?: undefined;
|
|
70
|
+
algorithm?: undefined;
|
|
71
|
+
} | {
|
|
72
|
+
segments: {
|
|
73
|
+
source_in_ticks: string;
|
|
74
|
+
source_out_ticks: string;
|
|
75
|
+
}[];
|
|
76
|
+
target_duration_ticks: string;
|
|
77
|
+
crossfade_ticks: string;
|
|
78
|
+
nearest_beat_error_ticks: string;
|
|
79
|
+
review_required: boolean;
|
|
80
|
+
native_remix_supported: boolean;
|
|
81
|
+
audible_clicks_verified: boolean;
|
|
82
|
+
algorithm: string;
|
|
83
|
+
};
|
|
84
|
+
export declare function planSceneSegmentation(input: {
|
|
85
|
+
source_id: string;
|
|
86
|
+
source_duration_ticks: string;
|
|
87
|
+
candidates: Array<{
|
|
88
|
+
ticks: string;
|
|
89
|
+
confidence: number;
|
|
90
|
+
classification: "cut" | "flash" | "pan" | "fade";
|
|
91
|
+
}>;
|
|
92
|
+
approved_indices: number[];
|
|
93
|
+
handle_ticks?: string;
|
|
94
|
+
}): {
|
|
95
|
+
source_id: string;
|
|
96
|
+
segments: {
|
|
97
|
+
index: number;
|
|
98
|
+
start_ticks: string;
|
|
99
|
+
end_ticks: string;
|
|
100
|
+
handle_in_ticks: string;
|
|
101
|
+
handle_out_ticks: string;
|
|
102
|
+
}[];
|
|
103
|
+
approved_candidates: {
|
|
104
|
+
ticks: string;
|
|
105
|
+
confidence: number;
|
|
106
|
+
classification: "cut" | "flash" | "pan" | "fade";
|
|
107
|
+
}[];
|
|
108
|
+
rejected_candidates: {
|
|
109
|
+
ticks: string;
|
|
110
|
+
confidence: number;
|
|
111
|
+
classification: "cut" | "flash" | "pan" | "fade";
|
|
112
|
+
}[];
|
|
113
|
+
preserve_audio: boolean;
|
|
114
|
+
apply_routes: string[];
|
|
115
|
+
host_applied: boolean;
|
|
116
|
+
};
|
|
117
|
+
export declare function verifyCaptionRenderEvidence(input: {
|
|
118
|
+
artifact_sha256: string;
|
|
119
|
+
frame_width: number;
|
|
120
|
+
frame_height: number;
|
|
121
|
+
safe_margin: number;
|
|
122
|
+
cues: Array<{
|
|
123
|
+
text: string;
|
|
124
|
+
bounds: {
|
|
125
|
+
x: number;
|
|
126
|
+
y: number;
|
|
127
|
+
width: number;
|
|
128
|
+
height: number;
|
|
129
|
+
};
|
|
130
|
+
missing_glyphs: string[];
|
|
131
|
+
line_breaks_verified: boolean;
|
|
132
|
+
bidi_verified: boolean;
|
|
133
|
+
sampled_ticks: string;
|
|
134
|
+
evidence_method: "manual_render_review" | "pixel_measurement";
|
|
135
|
+
}>;
|
|
136
|
+
}): {
|
|
137
|
+
artifact_sha256: string;
|
|
138
|
+
passed: boolean;
|
|
139
|
+
issues: {
|
|
140
|
+
index: number;
|
|
141
|
+
reason: string;
|
|
142
|
+
}[];
|
|
143
|
+
sampled_cues: number;
|
|
144
|
+
evidence_scope: string;
|
|
145
|
+
};
|
|
146
|
+
export declare function bindProxyProvenance(input: {
|
|
147
|
+
source_id: string;
|
|
148
|
+
source_sha256: string | null;
|
|
149
|
+
proxy_sha256: string | null;
|
|
150
|
+
original_offline: boolean;
|
|
151
|
+
proxy_attached: boolean;
|
|
152
|
+
analysis_provider: "original" | "proxy";
|
|
153
|
+
snapshot_revision: string;
|
|
154
|
+
export_provider_verified: boolean;
|
|
155
|
+
}): {
|
|
156
|
+
analysis_identity: string | null;
|
|
157
|
+
revision: string;
|
|
158
|
+
delivery_ready: boolean;
|
|
159
|
+
limitations: string[];
|
|
160
|
+
source_id: string;
|
|
161
|
+
source_sha256: string | null;
|
|
162
|
+
proxy_sha256: string | null;
|
|
163
|
+
original_offline: boolean;
|
|
164
|
+
proxy_attached: boolean;
|
|
165
|
+
analysis_provider: "original" | "proxy";
|
|
166
|
+
snapshot_revision: string;
|
|
167
|
+
export_provider_verified: boolean;
|
|
168
|
+
};
|
|
169
|
+
export declare function planStackedCameraEdit(snapshotInput: unknown, cuts: Array<{
|
|
170
|
+
start_ticks: string;
|
|
171
|
+
end_ticks: string;
|
|
172
|
+
camera_track_id: string;
|
|
173
|
+
}>, cameraTracks: string[], masterAudioTracks: string[]): {
|
|
174
|
+
snapshot_revision: string;
|
|
175
|
+
operations: ExpectedEdit[];
|
|
176
|
+
expected: {
|
|
177
|
+
snapshot: TimelineSnapshot;
|
|
178
|
+
changes: Array<{
|
|
179
|
+
id: string;
|
|
180
|
+
before: import("./timeline-contract.js").TimelineClip | null;
|
|
181
|
+
after: import("./timeline-contract.js").TimelineClip | null;
|
|
182
|
+
}>;
|
|
183
|
+
participants: string[];
|
|
184
|
+
host_verified: false;
|
|
185
|
+
};
|
|
186
|
+
master_audio: import("./timeline-contract.js").TimelineClip[];
|
|
187
|
+
duplicate_required: boolean;
|
|
188
|
+
native_multicam: boolean;
|
|
189
|
+
limitation: string;
|
|
190
|
+
};
|
|
191
|
+
/** Versioned receipt state is a review aid; loading never executes pending work. */
|
|
192
|
+
export declare function validateWorkflowCheckpoint(input: unknown): {
|
|
193
|
+
operations: Record<string, unknown>[];
|
|
194
|
+
automatic_replay: false;
|
|
195
|
+
recovery_required: boolean;
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=editorial-workflows.d.ts.map
|