premiere-pro-mcp 1.7.0 → 1.9.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 CHANGED
@@ -6,6 +6,54 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.9.0] - 2026-08-02
10
+
11
+ ### Added
12
+
13
+ - Added a read-only `verify_premiere_connection` tool, human-readable `--doctor`
14
+ diagnostics, and a privacy-sanitized `--support-bundle` for guided recovery.
15
+ - Added an accessible in-panel Connection Center and native Windows/macOS CEP
16
+ installer pipelines that require trusted platform signing for production use.
17
+ - Added deterministic direct and Marketplace-channel UXP CCX packaging with
18
+ explicit Adobe identity and live-host verification gates.
19
+
20
+ ### Changed
21
+
22
+ - Reworked onboarding around the AI assistant an editor already uses, with the
23
+ Claude Desktop MCPB route first and npm/JSON configuration under Advanced.
24
+ - Upgraded the Claude Desktop bundle manifest to MCPB v0.4 and stopped emitting
25
+ an unsupported `.dxt` copy of the same bytes.
26
+ - Registered 280 core tools, exposed 278 under the default profile, and exposed
27
+ 297 tools when the 19 capability-gated UXP tools are connected.
28
+
29
+ ### Validation
30
+
31
+ - Automated checks cover distribution schemas, deterministic CCX packaging,
32
+ support-bundle privacy, installer path containment, production signing gates,
33
+ and connection evidence states. Real Premiere host verification and external
34
+ Adobe/Anthropic approvals remain separate release gates.
35
+
36
+ ## [1.8.0] - 2026-08-01
37
+
38
+ ### Added
39
+
40
+ - Added three read-only, capability-gated UXP transcript tools: native transcript
41
+ export, native transcript search, and revision-locked transcript edit previews.
42
+ - Added a deterministic SHA-256 transcript revision and confirmation token so a
43
+ proposed edit cannot be confused with a regenerated transcript.
44
+
45
+ ### Changed
46
+
47
+ - Expanded the connected UXP surface from 16 to 19 tools while keeping automatic
48
+ transcript-to-timeline application unavailable pending real-host validation.
49
+ - Added repository Copilot instructions and a deterministic Node 24 setup workflow.
50
+
51
+ ### Validation
52
+
53
+ - Automated tests cover transcript range validation, revision locking, capability
54
+ registration, and the MCP catalog. A real Premiere 25.6 or 26.3 host still must
55
+ validate transcript semantics before any apply operation is introduced.
56
+
9
57
  ## [1.7.0] - 2026-08-01
10
58
 
11
59
  ### Added
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Give AI full control over Adobe Premiere Pro.**
8
8
 
9
- 279 core tools across 31 modules, 3 resources, and 4 guided workflows. A connected UXP host adds 16 capability-gated tools.
9
+ 280 core tools across 31 modules, 3 resources, and 4 guided workflows. A connected UXP host adds 19 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)
@@ -27,9 +27,33 @@ An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that l
27
27
  "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
28
  ```
29
29
 
30
- The AI handles the entire workflow through 279 core tools spanning the supported ExtendScript, QE DOM, local media analysis, and safe edit-planning surfaces. A compatible, authenticated UXP panel adds 16 documented, capability-gated workflows without replacing the production CEP bridge.
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.
31
31
 
32
- ### What's new in 1.7.0
32
+ ### What's new in 1.9.0
33
+
34
+ - **Assistant-first setup:** Claude Desktop users start with a validated MCPB
35
+ bundle, while npm and manual JSON configuration stay under Advanced setup.
36
+ - **Safe connection help:** `verify_premiere_connection`, `--doctor`, the CEP
37
+ Connection Center, and sanitized support bundles explain exactly what is
38
+ installed, configured, connected, and live-verified.
39
+ - **Distribution foundations:** MCPB v0.4, deterministic direct/Marketplace CCX
40
+ packaging, and native Windows/macOS CEP installer pipelines make the supported
41
+ routes easier to package without overstating signing or Marketplace approval.
42
+ - **Canonical tool surface:** 280 registered tools, 278 in the default profile,
43
+ and 297 while the 19 capability-gated UXP tools are connected.
44
+
45
+ ### Previous release: 1.8.0
46
+
47
+ - **Native transcript planning:** compatible UXP hosts can export and search the
48
+ transcript Premiere generated for a clip, then preview a revision-locked set of
49
+ source-time deletion ranges.
50
+ - **No false edit promise:** previews return a deterministic confirmation token and
51
+ never modify a clip or timeline. Automated application remains withheld until the
52
+ documented source-to-sequence reconstruction path passes real-host validation.
53
+ - **19 connected UXP tools:** the capability-gated UXP surface grows from 16 to 19
54
+ without changing the 279 core-tool surface.
55
+
56
+ ### Earlier release: 1.7.0
33
57
 
34
58
  - **Six documented workflows:** compatible 26.3+ hosts can expose UXP track renaming, subclip creation, stable marker IDs, Source Monitor seeking, transcript presence checks, and AAF export.
35
59
  - **Capability first:** a tool is discoverable only with the authenticated local panel; the panel's live `capabilities.get` response—not package metadata—decides whether the current host supports it.
@@ -47,7 +71,24 @@ The AI handles the entire workflow through 279 core tools spanning the supported
47
71
 
48
72
  ## Quick Start
49
73
 
50
- ### Before you begin
74
+ ### Easiest supported path: Claude Desktop
75
+
76
+ 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.0/premiere-pro-mcp-1.9.0.mcpb).
77
+ 2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
78
+ 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.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.
79
+ 4. Restart Premiere, open a project, then open **Window > Extensions > MCP Bridge**.
80
+ 5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
81
+
82
+ The Claude bundle contains the local MCP server, so this route does not require Node.js. The Premiere connector is a separate required install. The first prompt is read-only and reports whether the server is installed, configured, connected, and live-verified.
83
+
84
+ ### Other AI assistants
85
+
86
+ Cursor, VS Code/Copilot, Windsurf, and other MCP clients do not currently have a project-provided one-click installer. Use their MCP settings with the advanced npm route below. Keep the assistant, server, connector, and Premiere on the same computer.
87
+
88
+ <details>
89
+ <summary><strong>Advanced setup: npm or source</strong></summary>
90
+
91
+ #### Before you begin
51
92
 
52
93
  - Node.js **20.19 or newer** on Windows or macOS.
53
94
  - Adobe Premiere Pro **2020–2026**. Keep Premiere, the CEP bridge, and your MCP client on the same computer for the recommended local setup.
@@ -55,9 +96,9 @@ The AI handles the entire workflow through 279 core tools spanning the supported
55
96
  (`brew install ffmpeg` on macOS or `winget install Gyan.FFmpeg` on Windows).
56
97
  The production Docker image already includes it.
57
98
 
58
- ### 1. Install
99
+ #### 1. Install
59
100
 
60
- **Option A — npm (recommended):**
101
+ **Option A — npm:**
61
102
 
62
103
  ```bash
63
104
  npm install -g premiere-pro-mcp
@@ -72,7 +113,7 @@ npm install
72
113
  npm run build
73
114
  ```
74
115
 
75
- ### 2. Install the CEP plugin
116
+ #### 2. Install the CEP plugin
76
117
 
77
118
  **If installed via npm:**
78
119
 
@@ -88,6 +129,16 @@ npm run install-cep
88
129
 
89
130
  This installs the plugin into Premiere Pro's per-user extensions folder and enables debug mode.
90
131
 
132
+ #### 3. Check the setup
133
+
134
+ ```bash
135
+ premiere-pro-mcp --doctor
136
+ ```
137
+
138
+ Then ask your MCP client to run `verify_premiere_connection`. The check is read-only.
139
+
140
+ </details>
141
+
91
142
  ---
92
143
 
93
144
  ## Publishing to npm
@@ -248,11 +299,11 @@ From a clone of this repository:
248
299
  ```bash
249
300
  codex plugin marketplace add .
250
301
  codex plugin add premiere-pro@premiere-pro-mcp
251
- npx -y premiere-pro-mcp@1.7.0 --install-cep
302
+ npx -y premiere-pro-mcp@1.9.0 --install-cep
252
303
  ```
253
304
 
254
305
  Restart Premiere Pro and start a new Codex session after installation. The plugin
255
- launches `premiere-pro-mcp@1.7.0` through `npx`; the separate CEP installation is
306
+ launches `premiere-pro-mcp@1.9.0` through `npx`; the separate CEP installation is
256
307
  required because the MCP server communicates with the running Premiere host through
257
308
  the local bridge.
258
309
 
@@ -272,15 +323,15 @@ For Claude Code, add this repository as a marketplace and install the plugin:
272
323
  Then install the Premiere bridge and start a new Claude Code session:
273
324
 
274
325
  ```bash
275
- npx -y premiere-pro-mcp@1.7.0 --install-cep
326
+ npx -y premiere-pro-mcp@1.9.0 --install-cep
276
327
  ```
277
328
 
278
329
  The Claude Code package lives in
279
330
  [`claude-plugins/premiere-pro`](claude-plugins/premiere-pro), with its marketplace
280
331
  at [`.claude-plugin/marketplace.json`](.claude-plugin/marketplace.json).
281
332
 
282
- Claude Desktop uses the self-contained MCP Bundle format, formerly called Desktop
283
- Extensions. Build both the current `.mcpb` artifact and a legacy `.dxt` copy with:
333
+ Claude Desktop uses the self-contained MCP Bundle (`.mcpb`) format. Build and
334
+ validate the current bundle with:
284
335
 
285
336
  ```bash
286
337
  npm run build:claude
@@ -311,7 +362,7 @@ installed separately.
311
362
  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.
312
363
 
313
364
  MCP `tools/list` is filtered to the active authority profile. The default
314
- `inspect,edit,export,filesystem` profile advertises 277 of the 279 registered
365
+ `inspect,edit,export,filesystem` profile advertises 278 of the 280 registered
315
366
  tools and omits `execute_extendscript` and `evaluate_expression`, which require
316
367
  explicit `unsafe-script` authority. `ping` and `get_capabilities` remain visible
317
368
  under every profile so a restricted or misconfigured server can still explain
@@ -362,7 +413,17 @@ PREMIERE_UXP_TOKEN="replace-with-a-long-random-secret" premiere-pro-mcp
362
413
 
363
414
  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.
364
415
 
365
- 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`, `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.
416
+ 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.
417
+
418
+ Native transcript editing starts with a read-only, revision-locked planning flow. Use
419
+ `get_clip_transcript_uxp` to export the transcript Premiere generated for a source
420
+ clip, select source-time ranges from that JSON, and pass its SHA-256 revision to
421
+ `preview_transcript_edit_uxp`. The preview sorts and merges ranges and returns a
422
+ confirmation token without changing the timeline. Premiere does not expose a
423
+ documented operation that directly turns deleted transcript text into timeline cuts,
424
+ so automatic application remains withheld until the source-to-sequence mapping and
425
+ documented reconstruction path pass live-host validation. `search_clip_transcript_uxp`
426
+ provides read-only discovery without substituting an external transcription engine.
366
427
 
367
428
  Premiere 26.2-26.3 hosts also expose documented UXP workflows for revisioned project
368
429
  inspection, verified project saves, preset-based sequence creation, OTIO/FCP XML
@@ -416,7 +477,7 @@ The file-based IPC bridge is simple, reliable, and works across macOS and Window
416
477
 
417
478
  ---
418
479
 
419
- ## Tools (279 core total; 277 under the default profile; 293 with a connected UXP bridge)
480
+ ## Tools (280 core total; 278 under the default profile; 297 with a connected UXP bridge)
420
481
 
421
482
  ### Discovery & Inspection (10 + 10)
422
483
 
@@ -659,7 +720,7 @@ premiere-pro-mcp/
659
720
  ├── src/
660
721
  │ ├── index.ts # Entry point — stdio transport setup
661
722
  │ ├── http-server.ts # Entry point — HTTP/SSE transport (Fly.io / remote)
662
- │ ├── server.ts # MCP server — registers 279 tools, filtered by authority profile
723
+ │ ├── server.ts # MCP server — registers 280 tools, filtered by authority profile
663
724
  │ ├── bridge/
664
725
  │ │ ├── file-bridge.ts # File-based IPC (write .jsx, poll .json)
665
726
  │ │ └── script-builder.ts # ExtendScript generator with ES3 helpers
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.7.0" ExtensionBundleName="MCP Bridge">
2
+ <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.9.0" ExtensionBundleName="MCP Bridge">
3
3
  <ExtensionList>
4
- <Extension Id="com.mcp.premiere.bridge.panel" Version="1.7.0"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.7.0"/>
4
+ <Extension Id="com.mcp.premiere.bridge.panel" Version="1.9.0"/>
5
+ <Extension Id="com.mcp.premiere.bridge.headless" Version="1.9.0"/>
6
6
  </ExtensionList>
7
7
  <ExecutionEnvironment>
8
8
  <HostList>
@@ -19,12 +19,12 @@
19
19
 
20
20
  <section class="status-panel" role="status" aria-live="polite" aria-atomic="true">
21
21
  <div class="status-indicator" aria-hidden="true">
22
- <div class="status-ring"><div class="status-dot connected" id="statusDot"></div></div>
22
+ <div class="status-ring"><div class="status-dot waiting" id="statusDot"></div></div>
23
23
  </div>
24
24
  <div class="status-copy">
25
25
  <span class="section-label">Bridge status</span>
26
- <strong id="statusText">Connected</strong>
27
- <span id="statusDetail">Premiere Pro link is active</span>
26
+ <strong id="statusText">Starting connector…</strong>
27
+ <span id="statusDetail">Checking Premiere Pro</span>
28
28
  </div>
29
29
  <div class="command-stat">
30
30
  <strong id="cmdCount">0</strong>
@@ -32,6 +32,22 @@
32
32
  </div>
33
33
  </section>
34
34
 
35
+ <section class="connection-center" aria-labelledby="connectionCenterTitle">
36
+ <div class="section-heading">
37
+ <div>
38
+ <span class="section-label">Connection Center</span>
39
+ <h2 id="connectionCenterTitle">Ready-to-edit check</h2>
40
+ </div>
41
+ <button class="save-link" type="button" onclick="refreshConnectionCenter()" aria-controls="connectionChecks">Refresh</button>
42
+ </div>
43
+ <p class="connection-intro">This panel only checks Premiere. In your AI assistant, run <strong>Verify Premiere connection</strong> for the complete safe check.</p>
44
+ <ul class="connection-checks" id="connectionChecks">
45
+ <li id="checkConnector" data-state="waiting"><span class="check-dot" aria-hidden="true"></span><span><strong>Connector</strong><small>Starting…</small></span></li>
46
+ <li id="checkProject" data-state="waiting"><span class="check-dot" aria-hidden="true"></span><span><strong>Project</strong><small>Checking…</small></span></li>
47
+ <li id="checkSequence" data-state="waiting"><span class="check-dot" aria-hidden="true"></span><span><strong>Active sequence</strong><small>Checking…</small></span></li>
48
+ </ul>
49
+ </section>
50
+
35
51
  <section class="config-section">
36
52
  <div class="section-heading">
37
53
  <div>
@@ -65,7 +81,7 @@
65
81
  <section class="update-section" aria-live="polite">
66
82
  <div class="update-copy">
67
83
  <span class="section-label">Connector updates</span>
68
- <strong id="updateTitle">Version 1.7.0</strong>
84
+ <strong id="updateTitle">Version 1.9.0</strong>
69
85
  <span id="updateDetail">Checking for updates…</span>
70
86
  </div>
71
87
  <button id="btnUpdate" class="button button-update" onclick="handleUpdateClick()" type="button" disabled>
@@ -32,12 +32,47 @@ function setStatus(state, text) {
32
32
  var detail = document.getElementById("statusDetail");
33
33
  if (detail) {
34
34
  if (state === "connected") detail.textContent = "Premiere Pro link is active";
35
- else if (state === "waiting") detail.textContent = "Ready to accept commands";
35
+ else if (state === "waiting") detail.textContent = "Ready for an AI assistant connection";
36
36
  else if (state === "error") detail.textContent = "Bridge needs attention";
37
37
  else detail.textContent = "Waiting for Premiere Pro";
38
38
  }
39
39
  }
40
40
 
41
+ function setConnectionCheck(id, state, detail) {
42
+ var el = document.getElementById(id);
43
+ if (!el) return;
44
+ el.setAttribute("data-state", state);
45
+ var text = el.getElementsByTagName("small")[0];
46
+ if (text) text.textContent = detail;
47
+ }
48
+
49
+ // This reads only boolean Premiere state. Do not put project names, paths, or
50
+ // media information in the panel: the MCP safe-check uses the same boundary.
51
+ function refreshConnectionCenter() {
52
+ if (!bridgeRunning) {
53
+ setConnectionCheck("checkConnector", "waiting", "Start the connector first");
54
+ setConnectionCheck("checkProject", "waiting", "Waiting for the connector");
55
+ setConnectionCheck("checkSequence", "waiting", "Waiting for the connector");
56
+ return;
57
+ }
58
+ setConnectionCheck("checkConnector", "ready", "Running in Premiere Pro");
59
+ setConnectionCheck("checkProject", "waiting", "Checking…");
60
+ setConnectionCheck("checkSequence", "waiting", "Checking…");
61
+ cs.evalScript(
62
+ '(function(){var p=app&&app.project;return JSON.stringify({projectOpen:!!(p&&typeof p.name!=="undefined"),sequenceOpen:!!(p&&p.activeSequence)});}())',
63
+ function (raw) {
64
+ try {
65
+ var state = JSON.parse(raw || "{}");
66
+ setConnectionCheck("checkProject", state.projectOpen ? "ready" : "needs-attention", state.projectOpen ? "Project open" : "Open a project in Premiere Pro");
67
+ setConnectionCheck("checkSequence", state.sequenceOpen ? "ready" : "needs-attention", state.sequenceOpen ? "Active sequence open" : "Open a sequence in Premiere Pro");
68
+ } catch (e) {
69
+ setConnectionCheck("checkProject", "needs-attention", "Could not read Premiere state");
70
+ setConnectionCheck("checkSequence", "needs-attention", "Could not read Premiere state");
71
+ }
72
+ }
73
+ );
74
+ }
75
+
41
76
  // ---- File I/O via Node.js (CEP has access to Node) ----
42
77
  // --enable-nodejs puts `require` in the global scope on most hosts, but on some it
43
78
  // lands on cep_node instead. Try both, and fail loudly rather than letting fs come
@@ -214,20 +249,13 @@ function startBridge() {
214
249
 
215
250
  ensureDir(tempDir);
216
251
  bridgeRunning = true;
217
- setStatus("connected", "Running — polling " + tempDir);
218
- log("Bridge started. Temp dir: " + tempDir);
252
+ setStatus("waiting", "Connector running");
253
+ log("Connector started and ready for safe checks.", "ok");
219
254
 
220
255
  document.getElementById("btnStart").disabled = true;
221
256
  document.getElementById("btnStop").disabled = false;
222
257
 
223
- // Verify Premiere Pro connection
224
- cs.evalScript("app.version", function (version) {
225
- if (version && version !== "undefined") {
226
- log("Premiere Pro: " + version, "ok");
227
- } else {
228
- log("Warning: Could not detect Premiere Pro version", "err");
229
- }
230
- });
258
+ refreshConnectionCenter();
231
259
 
232
260
  pollInterval = setInterval(function () {
233
261
  if (bridgeRunning) processCommands();
@@ -240,6 +268,7 @@ function stopBridge() {
240
268
  pollInterval = null;
241
269
 
242
270
  setStatus("", "Stopped");
271
+ refreshConnectionCenter();
243
272
  log("Bridge stopped");
244
273
 
245
274
  document.getElementById("btnStart").disabled = false;
@@ -197,6 +197,27 @@ button { -webkit-appearance: none; }
197
197
  border-radius: var(--radius);
198
198
  background: var(--surface);
199
199
  }
200
+
201
+ .connection-center {
202
+ margin: 0 0 14px;
203
+ padding: 12px;
204
+ border: 1px solid var(--border);
205
+ border-radius: var(--radius);
206
+ background: var(--surface);
207
+ }
208
+ .connection-center .section-heading { margin-bottom: 8px; }
209
+ .connection-center h2 { font-size: 12px; }
210
+ .connection-intro { margin: 0 0 10px; color: var(--text-muted); font-size: 9px; line-height: 1.45; }
211
+ .connection-intro strong { color: var(--text-secondary); font-weight: 600; }
212
+ .connection-checks { display: grid; gap: 6px; padding: 0; margin: 0; list-style: none; }
213
+ .connection-checks li { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 6px 8px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface-deep); }
214
+ .connection-checks li > span:last-child { min-width: 0; }
215
+ .connection-checks strong, .connection-checks small { display: block; }
216
+ .connection-checks strong { color: var(--text-secondary); font-size: 10px; font-weight: 600; }
217
+ .connection-checks small { margin-top: 2px; color: var(--text-muted); font-size: 9px; }
218
+ .check-dot { width: 7px; height: 7px; flex: 0 0 auto; border-radius: 50%; background: var(--text-muted); }
219
+ .connection-checks li[data-state="ready"] .check-dot { background: var(--green); box-shadow: 0 0 0 3px var(--green-soft); }
220
+ .connection-checks li[data-state="needs-attention"] .check-dot { background: var(--amber); }
200
221
  .update-copy { min-width: 0; flex: 1; }
201
222
  .update-copy strong, .update-copy > span:last-child { display: block; }
202
223
  .update-copy strong { font-size: 11px; font-weight: 600; }
@@ -7,7 +7,7 @@
7
7
  })(this, function () {
8
8
  "use strict";
9
9
 
10
- var CURRENT_VERSION = "1.7.0";
10
+ var CURRENT_VERSION = "1.9.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 =
@@ -0,0 +1,85 @@
1
+ /**
2
+ * A readiness boundary says what was actually established. It deliberately
3
+ * does not turn an installed connector into a claim that Premiere is live.
4
+ */
5
+ export type ReadinessBoundary = "installed" | "configured" | "connected" | "live_verified";
6
+ export type ReadinessState = "ready" | "needs_attention" | "not_checked";
7
+ export interface ReadinessComponent {
8
+ id: "mcp_process" | "premiere_connector" | "premiere_host" | "active_project" | "active_sequence" | "uxp_bridge";
9
+ label: string;
10
+ boundary: ReadinessBoundary;
11
+ state: ReadinessState;
12
+ message: string;
13
+ repair?: string;
14
+ }
15
+ export interface LocalDoctorReport {
16
+ schemaVersion: "premiere-pro-mcp.doctor.v1";
17
+ generatedAt: string;
18
+ runtime: {
19
+ platform: NodeJS.Platform;
20
+ nodeMajor: number | null;
21
+ };
22
+ overall: "ready" | "needs_attention";
23
+ components: ReadinessComponent[];
24
+ privacy: {
25
+ includes: string[];
26
+ excludes: string[];
27
+ };
28
+ }
29
+ export interface FirstRunReport {
30
+ schemaVersion: "premiere-pro-mcp.first-run.v1";
31
+ safeCheck: {
32
+ readOnly: true;
33
+ mutatesProject: false;
34
+ verificationScope: "mcp_process_premiere_host_active_project_active_sequence";
35
+ };
36
+ backend: "cep" | "uxp";
37
+ overall: "ready" | "needs_attention";
38
+ components: ReadinessComponent[];
39
+ nextStep: string;
40
+ repair?: string;
41
+ }
42
+ export interface SupportBundle {
43
+ schemaVersion: "premiere-pro-mcp.support-bundle.v1";
44
+ generatedAt: string;
45
+ application: {
46
+ version: string;
47
+ nodeMajor: number | null;
48
+ platform: NodeJS.Platform;
49
+ architecture: string;
50
+ };
51
+ doctor: LocalDoctorReport;
52
+ privacy: {
53
+ excludes: string[];
54
+ };
55
+ }
56
+ export interface LocalDoctorOptions {
57
+ platform?: NodeJS.Platform;
58
+ architecture?: string;
59
+ nodeVersion?: string;
60
+ environment?: NodeJS.ProcessEnv;
61
+ now?: () => Date;
62
+ exists?: (file: string) => boolean;
63
+ }
64
+ export interface SupportBundleOptions extends LocalDoctorOptions {
65
+ version: string;
66
+ }
67
+ export interface FirstRunHostState {
68
+ reachable: boolean;
69
+ projectOpen?: boolean;
70
+ sequenceOpen?: boolean;
71
+ }
72
+ /**
73
+ * Inspect local install/configuration facts only. The report intentionally
74
+ * cannot imply that Premiere is open or that an MCP client has connected.
75
+ */
76
+ export declare function collectLocalDoctor(options?: LocalDoctorOptions): LocalDoctorReport;
77
+ /** Build a first-run report from a sanitized host response. No names or paths enter this contract. */
78
+ export declare function buildFirstRunReport(backend: "cep" | "uxp", host: FirstRunHostState): FirstRunReport;
79
+ /**
80
+ * Produce a safe attachment for support. It is deliberately a status snapshot,
81
+ * not a log collector: logs commonly contain project names, local paths, or tokens.
82
+ */
83
+ export declare function createSupportBundle(options: SupportBundleOptions): SupportBundle;
84
+ export declare function renderDoctorHuman(report: LocalDoctorReport): string;
85
+ //# sourceMappingURL=diagnostics.d.ts.map