premiere-pro-mcp 1.22.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 +25 -0
- package/README.md +23 -8
- package/after-effects-cep-plugin/CSXS/manifest.xml +3 -3
- package/artifacts/MCPBridgeCEP.zxp +0 -0
- package/cep-plugin/CSXS/manifest.xml +3 -3
- 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 +98 -11
- 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/captions.d.ts +1 -0
- package/dist/tools/captions.js +45 -36
- package/dist/tools/competitor-gaps.js +2 -0
- package/dist/tools/execution-workflows.d.ts +567 -0
- package/dist/tools/execution-workflows.js +395 -0
- package/dist/tools/export.js +32 -5
- 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/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 +11 -5
- package/dist/tools/operation-recovery.d.ts +135 -0
- package/dist/tools/operation-recovery.js +105 -0
- 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/sequence.js +12 -1
- 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/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 +48 -7
- 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,31 @@ 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
|
+
|
|
9
34
|
## [1.22.0] - 2026-10-08
|
|
10
35
|
|
|
11
36
|
### Fixed
|
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,7 +125,7 @@ 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
|
|
|
@@ -213,6 +213,16 @@ handshake only; leave it unset (or `auto`) for modern MCP capabilities.
|
|
|
213
213
|
|
|
214
214
|
---
|
|
215
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
|
+
|
|
216
226
|
## For editors evaluating an AI workflow
|
|
217
227
|
|
|
218
228
|
Before an assistant changes an active project, use the
|
|
@@ -829,7 +839,7 @@ PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
|
|
|
829
839
|
|
|
830
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.
|
|
831
841
|
|
|
832
|
-
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.
|
|
833
843
|
|
|
834
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.
|
|
835
845
|
|
|
@@ -938,7 +948,10 @@ See [usage, example and remaining execution adapters](docs/film-editorial-workfl
|
|
|
938
948
|
|
|
939
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).
|
|
940
950
|
|
|
941
|
-
|
|
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)
|
|
942
955
|
|
|
943
956
|
The [complete supported-actions catalog](docs/supported-actions.md) lists every
|
|
944
957
|
registered core tool, the two tools restricted behind explicit `unsafe-script`
|
|
@@ -1090,9 +1103,11 @@ adjusted. This is a CEP contract check, not validation in a licensed Premiere Pr
|
|
|
1090
1103
|
| `encode_project_item` / `encode_file` | Direct encoding |
|
|
1091
1104
|
| `start_batch_encode` | Start render queue |
|
|
1092
1105
|
|
|
1093
|
-
Premiere
|
|
1094
|
-
|
|
1095
|
-
|
|
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
|
|
1096
1111
|
locally from the clips Premiere reads back and validates it with the same parser
|
|
1097
1112
|
used by `inspect_cmx3600_edl`; it is not a Premiere-native export.
|
|
1098
1113
|
`get_capabilities` reports the remaining delivery gaps explicitly rather than
|
|
@@ -1427,7 +1442,7 @@ premiere-pro-mcp/
|
|
|
1427
1442
|
├── src/
|
|
1428
1443
|
│ ├── index.ts # Entry point — stdio transport setup
|
|
1429
1444
|
│ ├── http-server.ts # Entry point — HTTP/SSE transport (Fly.io / remote)
|
|
1430
|
-
│ ├── server.ts # MCP server — registers
|
|
1445
|
+
│ ├── server.ts # MCP server — registers 434 tools, filtered by authority profile
|
|
1431
1446
|
│ ├── bridge/
|
|
1432
1447
|
│ │ ├── file-bridge.ts # File-based IPC (write .jsx, poll .json)
|
|
1433
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
|