premiere-pro-mcp 1.9.3 → 1.11.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 (42) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/README.md +46 -20
  3. package/artifacts/MCPBridgeCEP.zxp +0 -0
  4. package/benchmarks/uxp-hybrid/evidence.schema.json +67 -0
  5. package/benchmarks/uxp-hybrid/evidence.template.json +13 -0
  6. package/cep-plugin/CSXS/manifest.xml +3 -3
  7. package/cep-plugin/index.html +1 -1
  8. package/cep-plugin/updater.cjs +1 -1
  9. package/dist/bridge/uxp-websocket-bridge.d.ts +5 -1
  10. package/dist/bridge/uxp-websocket-bridge.js +7 -2
  11. package/dist/platform-capabilities.js +69 -0
  12. package/dist/resources/adobe-uxp-coverage.json +810 -0
  13. package/dist/security/capabilities.d.ts +2 -0
  14. package/dist/security/capabilities.js +144 -3
  15. package/dist/tools/track-targeting.d.ts +58 -0
  16. package/dist/tools/track-targeting.js +128 -2
  17. package/dist/tools/uxp-advanced-workflows.d.ts +807 -0
  18. package/dist/tools/uxp-advanced-workflows.js +450 -0
  19. package/dist/tools/uxp-next-workflows.d.ts +587 -0
  20. package/dist/tools/uxp-next-workflows.js +404 -0
  21. package/dist/tools/uxp-workflows.d.ts +691 -0
  22. package/dist/tools/uxp-workflows.js +420 -0
  23. package/dist/tools/uxp.d.ts +2597 -0
  24. package/dist/tools/uxp.js +6 -0
  25. package/docs/supported-actions.md +379 -0
  26. package/package.json +11 -4
  27. package/scripts/generate-supported-actions.mjs +187 -0
  28. package/scripts/validate-distribution.mjs +2 -2
  29. package/scripts/verify-uxp-hybrid-benchmark.mjs +153 -0
  30. package/uxp-plugin/README.md +37 -0
  31. package/uxp-plugin/advanced-workflows.cjs +1069 -0
  32. package/uxp-plugin/commands.cjs +101 -20
  33. package/uxp-plugin/events.cjs +358 -0
  34. package/uxp-plugin/hybrid-benchmark.cjs +176 -0
  35. package/uxp-plugin/index.cjs +183 -28
  36. package/uxp-plugin/index.html +8 -4
  37. package/uxp-plugin/manifest.json +2 -2
  38. package/uxp-plugin/next-workflows.cjs +1501 -0
  39. package/uxp-plugin/protocol.cjs +46 -2
  40. package/uxp-plugin/styles.css +48 -0
  41. package/uxp-plugin/workflows.cjs +1310 -0
  42. package/uxp-plugin/workspace.cjs +220 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,91 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.11.0] - 2026-08-16
10
+
11
+ ### Fixed
12
+
13
+ - `set_clip_volume` passed decibels straight into Premiere's `Volume > Level`
14
+ property, which is a normalised 0..1 value where 1.0 is +15 dB, not a dB
15
+ value. Every negative dB clamped to 0 (silence) and every positive dB clamped
16
+ to 1.0 (+15 dB), and Premiere reports no error either way, so the failure was
17
+ silent - a whole timeline could be muted with the tool reporting success.
18
+ Levels are now converted with `10^((dB-15)/20)`.
19
+
20
+ ### Added
21
+
22
+ - `get_clip_volume` reads a clip's level back in dB, so a level change can be
23
+ verified rather than assumed.
24
+ - `set_clips_volume` applies a level to every clip on an audio track (or a
25
+ chosen subset) in one call. Setting levels across an 80-clip sequence
26
+ previously meant 80 round trips.
27
+ - Added eight capability-gated third-wave UXP tools for bounded host events, AME
28
+ terminal receipts, host readiness, safe multi-project sessions, growing-media
29
+ leases, transactional checkpoints, media health, caption-aware track state,
30
+ source-clip trim and framing, and hybrid-acceleration evidence.
31
+ - Added a generated supported-actions catalog covering all 282 core tools, the
32
+ default profile, resources, prompts, and connected UXP actions with explicit
33
+ backend and verification boundaries.
34
+ - Added a schema-backed hybrid benchmark evidence template and a fail-closed
35
+ verifier so accelerated paths cannot be advertised without matching host,
36
+ dataset, correctness, latency, and provenance evidence.
37
+
38
+ ### Changed
39
+
40
+ - Expanded the authenticated UXP surface from 40 to 48 capability-gated tools,
41
+ bringing the connected default profile from 318 to 328 tools while keeping
42
+ CEP as the production-compatible bridge.
43
+ - Bounded event and readiness history, reported eviction and pending states,
44
+ and preserved host timeout budgets with a response-delivery buffer.
45
+ - Required explicit confirmation and readback for external project writes,
46
+ destructive track or source mutations, and pause leases; failed UXP commands
47
+ are never replayed automatically through CEP.
48
+
49
+ ### Validation
50
+
51
+ - The merged release tree passes 1,490 automated tests across 53 files with
52
+ 91.26% branch coverage, generated-document checks, landing lint/build, and
53
+ package-content validation.
54
+ - Real Premiere host validation remains not run; mock and contract evidence does
55
+ not establish behavior inside a licensed Premiere installation.
56
+
57
+ ## [1.10.0] - 2026-08-16
58
+
59
+ ### Added
60
+
61
+ - Added 21 consolidated, capability-gated UXP tools across two stable workflow
62
+ groups, expanding the connected surface from 297 to 318 tools while retaining
63
+ CEP as the production-compatible bridge.
64
+ - Added native effects, selection batches, deterministic timeline selection,
65
+ scene detection, proxy and ingest control, offline relinking, transactional
66
+ metadata, color conformance, Source Monitor audition, Productions storage
67
+ preflight, and an operator-selected workspace broker.
68
+ - Added project-panel selection, marker CRUD, bin organization, sequence settings,
69
+ workspace-gated imports, typed parameter and keyframe automation, track-item
70
+ transforms, SequenceEditor operations, sequence lifecycle controls, and Adobe
71
+ Media Encoder submission.
72
+
73
+ ### Changed
74
+
75
+ - Bounded selection, project, marker, sequence, bin, and keyframe inspection so a
76
+ request cannot accidentally traverse or serialize an unbounded production project.
77
+ - Grouped compatible mutations into Adobe action transactions with stale-state
78
+ guards, replay protection, and post-commit readback. A failed UXP mutation is
79
+ returned to the caller and is never silently retried through CEP.
80
+ - Replaced UXP filesystem full access with operator-selected folder access and kept
81
+ native paths and persistent tokens inside the panel.
82
+
83
+ ### Security
84
+
85
+ - Updated vulnerable transitive dependencies and refreshed the validated package
86
+ lockfiles used by the server and landing build.
87
+
88
+ ### Validation
89
+
90
+ - Automated unit, contract, distribution, and coverage gates exercise the expanded
91
+ UXP surface. Real Premiere host verification and latency benchmarking remain
92
+ pending and are not implied by this release.
93
+
9
94
  ## [1.9.3] - 2026-08-12
10
95
 
11
96
  ### Added
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  [![MCP Toplist](https://mcptoplist.com/badge/glama%2Fleancoderkavy%2Fpremiere-pro-mcp.svg)](https://mcptoplist.com/server/glama%2Fleancoderkavy%2Fpremiere-pro-mcp)
6
6
 
7
- **Give AI full control over Adobe Premiere Pro.**
7
+ **Give compatible AI assistants structured control over supported Adobe Premiere Pro workflows.**
8
8
 
9
- 280 core tools across 31 modules, 3 resources, and 4 guided workflows. A connected UXP host adds 19 capability-gated tools.
9
+ 282 core tools across 31 modules, 3 resources, and 4 guided workflows. A connected UXP host adds 48 capability-gated tools.
10
10
 
11
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
12
12
  [![Node.js](https://img.shields.io/badge/Node.js-20.19%2B-green.svg)](https://nodejs.org)
@@ -19,6 +19,8 @@
19
19
 
20
20
  ---
21
21
 
22
+ ![Premiere Pro MCP turns a structured AI request into an organized local editing workflow](landing/public/marketing/premiere-pro-mcp-campaign-hero-v1.png)
23
+
22
24
  ## What is this?
23
25
 
24
26
  An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that lets AI assistants like **Claude**, **Windsurf**, **Cursor**, **GitHub Copilot**, or any MCP-compatible client directly control Adobe Premiere Pro — importing media, editing timelines, applying effects, managing keyframes, exporting, and more.
@@ -27,19 +29,22 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that l
27
29
  "Add the B-roll clips to V2, apply a cross dissolve between each, color correct them to match the A-roll, and export a 1080p ProRes."
28
30
  ```
29
31
 
30
- The AI handles the entire workflow through 280 core tools spanning the supported ExtendScript, QE DOM, local media analysis, safe edit-planning, and connection-verification surfaces. A compatible, authenticated UXP panel adds 19 documented, capability-gated workflows without replacing the production CEP bridge.
32
+ The AI handles the entire workflow through 282 core tools spanning the supported ExtendScript, QE DOM, local media analysis, safe edit-planning, and connection-verification surfaces. A compatible, authenticated UXP panel adds 48 documented, capability-gated tools without replacing the production CEP bridge.
31
33
 
32
- ### Latest release: 1.9.3
34
+ ### Latest release: 1.11.0
33
35
 
34
- - **Focused release overview:** the README now shows only the current release instead of carrying
35
- an expanding history of older release summaries.
36
- - **New media asset:** the landing package includes the Premiere Pro MCP cinematic intro video.
37
- - **Security reference:** the repository includes the dated security audit report and its explicit
38
- verification boundaries.
39
- - **Patched dependency:** the landing build now resolves the transitive `nanoid` dependency to a
40
- version that addresses the latest high-severity advisory.
36
+ - **Host evidence and readiness:** a bounded UXP event journal, AME terminal receipts, and
37
+ explicit readiness gates distinguish verified completion, pending work, and lost history.
38
+ - **Guarded production workflows:** GUID-targeted project sessions, growing-media pause leases,
39
+ transactional checkpoints, and bounded media-health inspection fail closed on stale state.
40
+ - **Timeline precision:** caption-aware track controls and source-clip trim and framing add
41
+ readback-verified mutations; clip-volume writes now convert dB correctly and support batches.
42
+ - **Performance and support evidence:** a hybrid-acceleration benchmark gate and the generated
43
+ [supported-actions catalog](docs/supported-actions.md) document every current action and boundary.
44
+ - **Truthful compatibility:** CEP remains the production-compatible bridge, and automated UXP
45
+ contracts do not claim validation inside a real Premiere host.
41
46
 
42
- See the [v1.9.3 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.9.3)
47
+ See the [v1.11.0 release notes](https://github.com/leancoderkavy/premiere-pro-mcp/releases/tag/v1.11.0)
43
48
  for complete details. Live installation in Premiere Pro still requires host verification.
44
49
 
45
50
  ---
@@ -48,9 +53,9 @@ for complete details. Live installation in Premiere Pro still requires host veri
48
53
 
49
54
  ### Easiest supported path: Claude Desktop
50
55
 
51
- 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.3/premiere-pro-mcp-1.9.3.mcpb).
56
+ 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.11.0/premiere-pro-mcp-1.11.0.mcpb).
52
57
  2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
53
- 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.3/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.
58
+ 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.11.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.
54
59
  4. Restart Premiere, open a project, then open **Window > Extensions > MCP Bridge**.
55
60
  5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
56
61
 
@@ -274,11 +279,11 @@ From a clone of this repository:
274
279
  ```bash
275
280
  codex plugin marketplace add .
276
281
  codex plugin add premiere-pro@premiere-pro-mcp
277
- npx -y premiere-pro-mcp@1.9.3 --install-cep
282
+ npx -y premiere-pro-mcp@1.11.0 --install-cep
278
283
  ```
279
284
 
280
285
  Restart Premiere Pro and start a new Codex session after installation. The plugin
281
- launches `premiere-pro-mcp@1.9.3` through `npx`; the separate CEP installation is
286
+ launches `premiere-pro-mcp@1.11.0` through `npx`; the separate CEP installation is
282
287
  required because the MCP server communicates with the running Premiere host through
283
288
  the local bridge.
284
289
 
@@ -298,7 +303,7 @@ For Claude Code, add this repository as a marketplace and install the plugin:
298
303
  Then install the Premiere bridge and start a new Claude Code session:
299
304
 
300
305
  ```bash
301
- npx -y premiere-pro-mcp@1.9.3 --install-cep
306
+ npx -y premiere-pro-mcp@1.11.0 --install-cep
302
307
  ```
303
308
 
304
309
  The Claude Code package lives in
@@ -337,7 +342,7 @@ installed separately.
337
342
  QE-backed tools are reported as `experimental` because QE is undocumented and can vary between Premiere builds. Authority availability is reported separately from implementation support, so disabling `edit`, for example, does not incorrectly label editing tools as unsupported. Static metadata never claims that a Premiere operation succeeded; use `ping` and inspect each tool result for runtime evidence.
338
343
 
339
344
  MCP `tools/list` is filtered to the active authority profile. The default
340
- `inspect,edit,export,filesystem` profile advertises 278 of the 280 registered
345
+ `inspect,edit,export,filesystem` profile advertises 280 of the 282 registered
341
346
  tools and omits `execute_extendscript` and `evaluate_expression`, which require
342
347
  explicit `unsafe-script` authority. `ping` and `get_capabilities` remain visible
343
348
  under every profile so a restricted or misconfigured server can still explain
@@ -388,7 +393,9 @@ PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
388
393
 
389
394
  Enter the same token in the UXP panel. 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.
390
395
 
391
- When enabled, MCP discovery includes `get_uxp_capabilities`, `get_uxp_state`, `inspect_project_uxp`, `save_project_uxp`, `create_sequence_with_preset_uxp`, `export_interchange_uxp`, `get_transcript_languages_uxp`, `get_clip_transcript_uxp`, `search_clip_transcript_uxp`, `preview_transcript_edit_uxp`, `detect_object_masks_uxp`, `configure_encoder_uxp`, `export_frame_uxp`, `rename_track_uxp`, `create_subclip_uxp`, `list_markers_uxp`, `set_source_monitor_position_uxp`, `has_transcript_uxp`, and `export_aaf_uxp`. 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.
396
+ When enabled, MCP discovery includes the original 19 UXP tools, 21 consolidated stable workflows, and eight third-wave tools. The first expansion covers effects, deterministic timeline selection, selection batches, scene detection, proxy/ingest, relink, metadata, color conformance, Source Monitor audition, storage, and least-privilege workspace access. The second adds Project-panel selection, marker CRUD, bin organization, sequence settings, imports, typed effect parameters/keyframes, track-item transforms, 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, and transactional source trim/framing documented in [the third-wave workflow matrix](docs/third-wave-uxp-workflows.md). 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) and [the next-ten workflow matrix](docs/uxp-next-ten-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.
397
+
398
+ The panel now requests access to one operator-selected workspace instead of declaring full filesystem access. Choose the folder in the panel before invoking a path-based UXP workflow. Media, relink, preset, export, and Source Monitor file paths must remain inside it; the persistent capability token and native root path are never returned over MCP. Lexical containment alone cannot exclude symlink, junction, or reparse-point escapes, and Adobe's request-scoped UXP filesystem API does not document canonical-path resolution. Builds without a host-supplied canonical resolver therefore advertise path-based UXP commands as unsupported and fail closed at invocation; use the existing CEP fallback for those operations.
392
399
 
393
400
  Native transcript editing starts with a read-only, revision-locked planning flow. Use
394
401
  `get_clip_transcript_uxp` to export the transcript Premiere generated for a source
@@ -410,10 +417,19 @@ coverage matrix](docs/adobe-uxp-26.3-coverage.md) and [the UXP capability
410
417
  foundation](docs/uxp-capability-foundation.md) for the command matrix and live-host
411
418
  validation boundary.
412
419
 
420
+ The stable workflow expansion adds native component-chain effects, deterministic
421
+ timeline selection, compound selection batches, scene-edit detection, proxy/ingest control, guarded offline
422
+ relink, transactional project/XMP metadata, color and footage-conformance
423
+ preflight, full Source Monitor audition, and project/Production storage checks.
424
+ See [the stable UXP workflow matrix](docs/uxp-stable-workflows.md) for exact
425
+ argument, undo, confirmation, and live-host boundaries.
426
+
413
427
  ---
414
428
 
415
429
  ## Architecture
416
430
 
431
+ ![Local-first Premiere Pro MCP workflow from AI assistant through the MCP bridge to a verified Premiere result](landing/public/marketing/premiere-pro-mcp-workflow-v1.png)
432
+
417
433
  **Local (stdio):**
418
434
 
419
435
  ```text
@@ -452,7 +468,13 @@ The file-based IPC bridge is simple, reliable, and works across macOS and Window
452
468
 
453
469
  ---
454
470
 
455
- ## Tools (280 core total; 278 under the default profile; 297 with a connected UXP bridge)
471
+ ## Tools (282 core total; 280 under the default profile; 328 with a connected UXP bridge)
472
+
473
+ The [complete supported-actions catalog](docs/supported-actions.md) lists every
474
+ registered core tool, the two tools restricted behind explicit `unsafe-script`
475
+ authority, and all 48 authenticated UXP additions with their current action or mode
476
+ values. It is generated from the same MCP registration surface returned to clients;
477
+ the tables below are a shorter workflow-oriented overview.
456
478
 
457
479
  ### Discovery & Inspection (10 + 10)
458
480
 
@@ -850,6 +872,10 @@ npm version, fully quit every Premiere process, run `premiere-pro-mcp --install-
850
872
 
851
873
  Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
852
874
 
875
+ The evidence-backed [next improvement pull-request roadmap](docs/next-improvement-pr-roadmap.md)
876
+ breaks the proposed feature, protocol, reliability, and performance work into ten
877
+ reviewable changes with explicit dependencies and live-host acceptance gates.
878
+
853
879
  ---
854
880
 
855
881
  ## License
Binary file
@@ -0,0 +1,67 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://premiere-pro-mcp.com/schemas/uxp-hybrid-benchmark-evidence-v1.json",
4
+ "title": "Premiere Pro MCP UXP hybrid benchmark evidence",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "workloadId", "configuration", "memoryMeasurement", "runs"],
8
+ "properties": {
9
+ "schemaVersion": { "const": 1 },
10
+ "workloadId": { "const": "weighted-energy-v1" },
11
+ "configuration": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["sampleCount", "warmupCount", "iterations", "inputLength", "seed"],
15
+ "properties": {
16
+ "sampleCount": { "const": 30 },
17
+ "warmupCount": { "const": 3 },
18
+ "iterations": { "const": 4 },
19
+ "inputLength": { "const": 131072 },
20
+ "seed": { "const": 1337 }
21
+ }
22
+ },
23
+ "memoryMeasurement": { "type": "string", "minLength": 1, "maxLength": 256 },
24
+ "runs": {
25
+ "type": "array",
26
+ "minItems": 3,
27
+ "maxItems": 3,
28
+ "items": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": [
32
+ "platform", "arch", "hostVersion", "sdkVersion", "buildMode",
33
+ "addonLoaded", "addonSha256", "sourceCommit", "checksumMatch",
34
+ "codeSigned", "notarized", "javascript", "native"
35
+ ],
36
+ "properties": {
37
+ "platform": { "enum": ["win", "mac"] },
38
+ "arch": { "enum": ["x64", "arm64"] },
39
+ "hostVersion": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" },
40
+ "sdkVersion": { "type": "string", "minLength": 1, "maxLength": 128 },
41
+ "buildMode": { "const": "Release" },
42
+ "addonLoaded": { "const": true },
43
+ "addonSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
44
+ "sourceCommit": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
45
+ "checksumMatch": { "const": true },
46
+ "codeSigned": { "type": "boolean" },
47
+ "notarized": { "type": "boolean" },
48
+ "javascript": { "$ref": "#/$defs/metrics" },
49
+ "native": { "$ref": "#/$defs/metrics" }
50
+ }
51
+ }
52
+ }
53
+ },
54
+ "$defs": {
55
+ "metrics": {
56
+ "type": "object",
57
+ "additionalProperties": false,
58
+ "required": ["sampleCount", "p50Ms", "p95Ms", "peakWorkingSetBytes"],
59
+ "properties": {
60
+ "sampleCount": { "type": "integer", "minimum": 20 },
61
+ "p50Ms": { "type": "number", "exclusiveMinimum": 0 },
62
+ "p95Ms": { "type": "number", "exclusiveMinimum": 0 },
63
+ "peakWorkingSetBytes": { "type": "integer", "exclusiveMinimum": 0 }
64
+ }
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "workloadId": "weighted-energy-v1",
4
+ "configuration": {
5
+ "sampleCount": 30,
6
+ "warmupCount": 3,
7
+ "iterations": 4,
8
+ "inputLength": 131072,
9
+ "seed": 1337
10
+ },
11
+ "memoryMeasurement": "Replace with the identical process peak-working-set collection method used on every target",
12
+ "runs": []
13
+ }
@@ -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.9.3" ExtensionBundleName="MCP Bridge">
2
+ <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.11.0" ExtensionBundleName="MCP Bridge">
3
3
  <ExtensionList>
4
- <Extension Id="com.mcp.premiere.bridge.panel" Version="1.9.3"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.9.3"/>
4
+ <Extension Id="com.mcp.premiere.bridge.panel" Version="1.11.0"/>
5
+ <Extension Id="com.mcp.premiere.bridge.headless" Version="1.11.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">Connector updates</span>
84
- <strong id="updateTitle">Version 1.9.3</strong>
84
+ <strong id="updateTitle">Version 1.11.0</strong>
85
85
  <span id="updateDetail">Checking for updates…</span>
86
86
  </div>
87
87
  <button id="btnUpdate" class="button button-update" onclick="handleUpdateClick()" type="button" disabled>
@@ -7,7 +7,7 @@
7
7
  })(this, function () {
8
8
  "use strict";
9
9
 
10
- var CURRENT_VERSION = "1.9.3";
10
+ var CURRENT_VERSION = "1.11.0";
11
11
  var LATEST_RELEASE_API =
12
12
  "https://api.github.com/repos/leancoderkavy/premiere-pro-mcp/releases/latest";
13
13
  var RELEASES_URL =
@@ -10,6 +10,10 @@ export interface UxpCapability {
10
10
  supported: boolean;
11
11
  [key: string]: unknown;
12
12
  }
13
+ export interface UxpRequestOptions {
14
+ /** Do not let the bridge timeout before a bounded host-side wait can settle. */
15
+ minimumTimeoutMs?: number;
16
+ }
13
17
  export interface UxpHello {
14
18
  backend: "uxp";
15
19
  protocolVersion: number;
@@ -52,7 +56,7 @@ export declare class UxpWebSocketBridge extends EventEmitter {
52
56
  path: string;
53
57
  };
54
58
  getState(): UxpConnectionState;
55
- request(command: string, args?: Record<string, unknown>): Promise<unknown>;
59
+ request(command: string, args?: Record<string, unknown>, requestOptions?: UxpRequestOptions): Promise<unknown>;
56
60
  stop(): Promise<void>;
57
61
  private acceptConnection;
58
62
  private handleMessage;
@@ -109,7 +109,7 @@ export class UxpWebSocketBridge extends EventEmitter {
109
109
  connected: false,
110
110
  };
111
111
  }
112
- async request(command, args = {}) {
112
+ async request(command, args = {}, requestOptions = {}) {
113
113
  const socket = this.socket;
114
114
  const hello = this.hello;
115
115
  if (!socket || socket.readyState !== WebSocket.OPEN || !hello) {
@@ -118,12 +118,17 @@ export class UxpWebSocketBridge extends EventEmitter {
118
118
  if (hello.commands[command]?.supported !== true) {
119
119
  throw new UxpBridgeError("UXP_COMMAND_UNSUPPORTED", `Connected Premiere host does not support UXP command '${command}'`);
120
120
  }
121
+ const minimumTimeoutMs = requestOptions.minimumTimeoutMs ?? 0;
122
+ if (!Number.isInteger(minimumTimeoutMs) || minimumTimeoutMs < 0) {
123
+ throw new Error("UXP minimum request timeout must be a non-negative integer");
124
+ }
125
+ const requestTimeoutMs = Math.max(this.options.requestTimeoutMs, minimumTimeoutMs);
121
126
  const requestId = randomUUID();
122
127
  return new Promise((resolve, reject) => {
123
128
  const timer = setTimeout(() => {
124
129
  this.pending.delete(requestId);
125
130
  reject(new UxpBridgeError("UXP_TIMEOUT", `UXP command '${command}' timed out`));
126
- }, this.options.requestTimeoutMs);
131
+ }, requestTimeoutMs);
127
132
  this.pending.set(requestId, { command, resolve, reject, timer });
128
133
  socket.send(JSON.stringify({
129
134
  protocolVersion: hello.protocolVersion,
@@ -205,6 +205,75 @@ export function buildPlatformCapabilityReport(capabilities, platform = process.p
205
205
  "transcript.has",
206
206
  "transcript.import",
207
207
  "captions.inspect",
208
+ "effects.catalog",
209
+ "effects.chain.get",
210
+ "effects.chain.add",
211
+ "effects.chain.remove",
212
+ "selection.inspect",
213
+ "selection.fingerprints.inspect",
214
+ "selection.targets.inspect",
215
+ "selection.update",
216
+ "effects.selection.add",
217
+ "effects.selection.remove",
218
+ "sceneEdit.detect",
219
+ "proxy.inspect",
220
+ "proxy.attach",
221
+ "ingest.get",
222
+ "ingest.configure",
223
+ "media.relink",
224
+ "metadata.get",
225
+ "metadata.update",
226
+ "color.preflight",
227
+ "footage.conform",
228
+ "sourceMonitor.state",
229
+ "sourceMonitor.open",
230
+ "sourceMonitor.play",
231
+ "sourceMonitor.close",
232
+ "storage.preflight",
233
+ "scratch.configure",
234
+ "workspace.status",
235
+ "projectSelection.views",
236
+ "projectSelection.inspect",
237
+ "markers.inspect",
238
+ "markers.add",
239
+ "markers.update",
240
+ "markers.remove",
241
+ "bins.inspect",
242
+ "bins.create",
243
+ "bins.createSmart",
244
+ "bins.rename",
245
+ "bins.move",
246
+ "bins.color",
247
+ "bins.remove",
248
+ "sequenceSettings.get",
249
+ "sequenceSettings.update",
250
+ "project.import",
251
+ "parameters.inspect",
252
+ "parameters.set",
253
+ "parameters.keyframeAdd",
254
+ "parameters.keyframeRemove",
255
+ "parameters.keyframeRemoveRange",
256
+ "parameters.keyframeInterpolation",
257
+ "trackItem.inspect",
258
+ "trackItem.update",
259
+ "timeline.insert",
260
+ "timeline.overwrite",
261
+ "timeline.cloneSelection",
262
+ "timeline.removeSelection",
263
+ "timeline.mogrtPath",
264
+ "timeline.mogrtLibrary",
265
+ "sequences.inspect",
266
+ "sequences.createFromMedia",
267
+ "sequences.clone",
268
+ "sequences.subsequence",
269
+ "sequences.activate",
270
+ "sequences.open",
271
+ "sequences.close",
272
+ "sequences.delete",
273
+ "encoder.preflight",
274
+ "encoder.sequence",
275
+ "encoder.projectItem",
276
+ "encoder.file",
208
277
  ],
209
278
  unsupportedCommands: {
210
279
  "captions.create": "No documented Premiere UXP caption creation API.",