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.
Files changed (107) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +23 -8
  3. package/after-effects-cep-plugin/CSXS/manifest.xml +3 -3
  4. package/artifacts/MCPBridgeCEP.zxp +0 -0
  5. package/cep-plugin/CSXS/manifest.xml +3 -3
  6. package/cep-plugin/index.html +1 -1
  7. package/cep-plugin/main.js +2 -0
  8. package/cep-plugin/updater.cjs +1 -1
  9. package/dist/ai/editorial-review.d.ts +7 -7
  10. package/dist/ai/editorial-workflows.d.ts +197 -0
  11. package/dist/ai/editorial-workflows.js +199 -0
  12. package/dist/ai/exact-time.d.ts +39 -0
  13. package/dist/ai/exact-time.js +88 -0
  14. package/dist/ai/timeline-contract.d.ts +128 -0
  15. package/dist/ai/timeline-contract.js +263 -0
  16. package/dist/bridge/after-effects-bridge.js +4 -0
  17. package/dist/bridge/file-bridge.d.ts +9 -0
  18. package/dist/bridge/file-bridge.js +98 -11
  19. package/dist/bridge/host-lease.d.ts +17 -0
  20. package/dist/bridge/host-lease.js +157 -0
  21. package/dist/bridge/project-guard.d.ts +32 -0
  22. package/dist/bridge/project-guard.js +51 -0
  23. package/dist/bridge/script-builder.js +123 -9
  24. package/dist/bridge/uxp-websocket-bridge.d.ts +17 -0
  25. package/dist/bridge/uxp-websocket-bridge.js +83 -14
  26. package/dist/index.js +1 -1
  27. package/dist/interchange/bounded-file.d.ts +23 -0
  28. package/dist/interchange/bounded-file.js +85 -0
  29. package/dist/interchange/evidence.d.ts +86 -0
  30. package/dist/interchange/evidence.js +239 -0
  31. package/dist/interchange/facility.d.ts +81 -0
  32. package/dist/interchange/facility.js +153 -0
  33. package/dist/interchange/otio.d.ts +62 -0
  34. package/dist/interchange/otio.js +186 -0
  35. package/dist/platform-capabilities.js +1 -1
  36. package/dist/security/capabilities.js +43 -0
  37. package/dist/server.d.ts +2 -1
  38. package/dist/server.js +124 -16
  39. package/dist/tools/captions.d.ts +1 -0
  40. package/dist/tools/captions.js +45 -36
  41. package/dist/tools/competitor-gaps.js +2 -0
  42. package/dist/tools/execution-workflows.d.ts +567 -0
  43. package/dist/tools/execution-workflows.js +395 -0
  44. package/dist/tools/export.js +32 -5
  45. package/dist/tools/extended-edit-plans.d.ts +140 -0
  46. package/dist/tools/extended-edit-plans.js +179 -0
  47. package/dist/tools/interchange-workflows.d.ts +233 -0
  48. package/dist/tools/interchange-workflows.js +106 -0
  49. package/dist/tools/media-analysis-cache.d.ts +14 -0
  50. package/dist/tools/media-analysis-cache.js +29 -0
  51. package/dist/tools/media-analysis.d.ts +16 -16
  52. package/dist/tools/media-analysis.js +10 -5
  53. package/dist/tools/media.js +11 -5
  54. package/dist/tools/operation-recovery.d.ts +135 -0
  55. package/dist/tools/operation-recovery.js +105 -0
  56. package/dist/tools/recovery.d.ts +12 -0
  57. package/dist/tools/recovery.js +2 -1
  58. package/dist/tools/scene-review-workflow.d.ts +111 -0
  59. package/dist/tools/scene-review-workflow.js +92 -0
  60. package/dist/tools/sequence.js +12 -1
  61. package/dist/tools/temporal-render-evidence.d.ts +380 -0
  62. package/dist/tools/temporal-render-evidence.js +171 -0
  63. package/dist/tools/timeline-editorial.d.ts +1336 -0
  64. package/dist/tools/timeline-editorial.js +341 -0
  65. package/dist/tools/uxp.d.ts +5 -0
  66. package/dist/tools/uxp.js +38 -6
  67. package/dist/workflows/agent-instructions.js +8 -1
  68. package/dist/workflows/analysis-cache.d.ts +15 -0
  69. package/dist/workflows/analysis-cache.js +60 -0
  70. package/dist/workflows/catalog.d.ts +27 -2
  71. package/dist/workflows/catalog.js +30 -0
  72. package/dist/workflows/invocation-context.d.ts +31 -0
  73. package/dist/workflows/invocation-context.js +64 -0
  74. package/dist/workflows/job-contract.d.ts +29 -0
  75. package/dist/workflows/job-contract.js +144 -0
  76. package/dist/workflows/mutation-receipt.d.ts +17 -0
  77. package/dist/workflows/mutation-receipt.js +29 -0
  78. package/dist/workflows/performance-diagnostics.d.ts +55 -0
  79. package/dist/workflows/performance-diagnostics.js +24 -0
  80. package/dist/workflows/review-artifacts.d.ts +30 -0
  81. package/dist/workflows/review-artifacts.js +138 -0
  82. package/dist/workflows/strict-schema.d.ts +4 -0
  83. package/dist/workflows/strict-schema.js +50 -0
  84. package/dist/workflows/tool-metadata.d.ts +1 -1
  85. package/dist/workflows/tool-metadata.js +4 -3
  86. package/dist/workflows/tool-packs.js +6 -0
  87. package/docs/filmcraft-improvements.json +424 -0
  88. package/docs/filmcraft-improvements.md +130 -0
  89. package/docs/supported-actions.md +48 -7
  90. package/docs/temporal-render-fixtures.matrix.json +15 -0
  91. package/docs/temporal-render-fixtures.md +70 -0
  92. package/package.json +17 -8
  93. package/public-product-manifest.json +6 -6
  94. package/scripts/benchmark-planning.mjs +18 -0
  95. package/scripts/check-dependency-boundaries.mjs +38 -0
  96. package/scripts/create-temporal-host-report.mjs +20 -0
  97. package/scripts/create-temporal-render-fixture.mjs +16 -0
  98. package/scripts/validate-temporal-host-report.mjs +67 -0
  99. package/scripts/verify-npm-package.mjs +10 -0
  100. package/uxp-plugin/advanced-workflows.cjs +36 -9
  101. package/uxp-plugin/commands.cjs +120 -32
  102. package/uxp-plugin/events.cjs +51 -3
  103. package/uxp-plugin/index.cjs +2 -0
  104. package/uxp-plugin/index.html +1 -1
  105. package/uxp-plugin/manifest.json +1 -1
  106. package/uxp-plugin/operation-ledger.cjs +135 -0
  107. 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: 393 core tools across 60 modules, 4 resources, and 24 guided workflows. A connected UXP host adds 96 capability-gated tools.
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 393 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.
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 91 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.
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
- ## Tools (393 core total; 391 under the default profile; 487 with a connected UXP bridge)
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's documented automation surfaces do not currently expose OTIO or native
1094
- EDL interchange, Render and Replace, cloud publishing, or Content Credentials
1095
- export configuration. `export_sequence_edl` therefore builds the CMX 3600 list
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 393 tools, filtered by authority profile
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.22.0" ExtensionBundleName="MCP for Adobe After Effects">
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.22.0"/>
5
- <Extension Id="com.mcp.aftereffects.bridge.headless" Version="1.22.0"/>
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.22.0" ExtensionBundleName="MCP for Adobe Premiere Pro">
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.22.0"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.22.0"/>
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>
@@ -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.22.0</strong>
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>
@@ -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);
@@ -7,7 +7,7 @@
7
7
  })(this, function () {
8
8
  "use strict";
9
9
 
10
- var CURRENT_VERSION = "1.22.0";
10
+ var CURRENT_VERSION = "1.23.0";
11
11
  var PACKAGE_NAME = "premiere-pro-mcp";
12
12
  var LATEST_PACKAGE_API = "https://registry.npmjs.org/" + PACKAGE_NAME;
13
13
  var LATEST_RELEASE_API =
@@ -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: "rejected" | "approved" | "pending";
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: "rejected" | "approved" | "pending";
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: "rejected" | "approved" | "pending";
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: "rejected" | "approved" | "pending";
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: "rejected" | "approved" | "pending";
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: "rejected" | "approved" | "pending";
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: "rejected" | "approved" | "pending";
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