premiere-pro-mcp 1.8.0 → 1.9.1

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,43 @@ 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.1] - 2026-08-02
10
+
11
+ ### Security
12
+
13
+ - Added a production HTTP header baseline for the landing site, health route,
14
+ and remote MCP responses: CSP, HSTS, MIME sniffing protection, frame denial,
15
+ referrer and permissions policies, and cross-origin opener isolation.
16
+ - Restricted the browser connection policy to the application, configured
17
+ analytics endpoints, and the bounded PostHog host.
18
+
19
+ ## [1.9.0] - 2026-08-02
20
+
21
+ ### Added
22
+
23
+ - Added a read-only `verify_premiere_connection` tool, human-readable `--doctor`
24
+ diagnostics, and a privacy-sanitized `--support-bundle` for guided recovery.
25
+ - Added an accessible in-panel Connection Center and native Windows/macOS CEP
26
+ installer pipelines that require trusted platform signing for production use.
27
+ - Added deterministic direct and Marketplace-channel UXP CCX packaging with
28
+ explicit Adobe identity and live-host verification gates.
29
+
30
+ ### Changed
31
+
32
+ - Reworked onboarding around the AI assistant an editor already uses, with the
33
+ Claude Desktop MCPB route first and npm/JSON configuration under Advanced.
34
+ - Upgraded the Claude Desktop bundle manifest to MCPB v0.4 and stopped emitting
35
+ an unsupported `.dxt` copy of the same bytes.
36
+ - Registered 280 core tools, exposed 278 under the default profile, and exposed
37
+ 297 tools when the 19 capability-gated UXP tools are connected.
38
+
39
+ ### Validation
40
+
41
+ - Automated checks cover distribution schemas, deterministic CCX packaging,
42
+ support-bundle privacy, installer path containment, production signing gates,
43
+ and connection evidence states. Real Premiere host verification and external
44
+ Adobe/Anthropic approvals remain separate release gates.
45
+
9
46
  ## [1.8.0] - 2026-08-01
10
47
 
11
48
  ### 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 19 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,28 @@ 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 19 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.8.0
32
+ ### What's new in 1.9.1
33
+
34
+ - **Production browser hardening:** every HTTP response now includes CSP, HSTS,
35
+ MIME sniffing protection, frame denial, bounded permissions, and explicit
36
+ referrer and cross-origin policies.
37
+
38
+ ### Previous release: 1.9.0
39
+
40
+ - **Assistant-first setup:** Claude Desktop users start with a validated MCPB
41
+ bundle, while npm and manual JSON configuration stay under Advanced setup.
42
+ - **Safe connection help:** `verify_premiere_connection`, `--doctor`, the CEP
43
+ Connection Center, and sanitized support bundles explain exactly what is
44
+ installed, configured, connected, and live-verified.
45
+ - **Distribution foundations:** MCPB v0.4, deterministic direct/Marketplace CCX
46
+ packaging, and native Windows/macOS CEP installer pipelines make the supported
47
+ routes easier to package without overstating signing or Marketplace approval.
48
+ - **Canonical tool surface:** 280 registered tools, 278 in the default profile,
49
+ and 297 while the 19 capability-gated UXP tools are connected.
50
+
51
+ ### Previous release: 1.8.0
33
52
 
34
53
  - **Native transcript planning:** compatible UXP hosts can export and search the
35
54
  transcript Premiere generated for a clip, then preview a revision-locked set of
@@ -40,7 +59,7 @@ The AI handles the entire workflow through 279 core tools spanning the supported
40
59
  - **19 connected UXP tools:** the capability-gated UXP surface grows from 16 to 19
41
60
  without changing the 279 core-tool surface.
42
61
 
43
- ### Previous release: 1.7.0
62
+ ### Earlier release: 1.7.0
44
63
 
45
64
  - **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.
46
65
  - **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.
@@ -58,7 +77,24 @@ The AI handles the entire workflow through 279 core tools spanning the supported
58
77
 
59
78
  ## Quick Start
60
79
 
61
- ### Before you begin
80
+ ### Easiest supported path: Claude Desktop
81
+
82
+ 1. Download the current [Claude Desktop bundle (`.mcpb`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.1/premiere-pro-mcp-1.9.1.mcpb).
83
+ 2. In Claude Desktop, open **Settings > Extensions > Advanced settings > Install Extension**, select the downloaded bundle, and restart Claude Desktop.
84
+ 3. Download the separate [signed Premiere connector (`.zxp`)](https://github.com/leancoderkavy/premiere-pro-mcp/releases/download/v1.9.1/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.
85
+ 4. Restart Premiere, open a project, then open **Window > Extensions > MCP Bridge**.
86
+ 5. In Claude, enter: `Safely check my Premiere connection with verify_premiere_connection. Make no changes.`
87
+
88
+ 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.
89
+
90
+ ### Other AI assistants
91
+
92
+ 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.
93
+
94
+ <details>
95
+ <summary><strong>Advanced setup: npm or source</strong></summary>
96
+
97
+ #### Before you begin
62
98
 
63
99
  - Node.js **20.19 or newer** on Windows or macOS.
64
100
  - Adobe Premiere Pro **2020–2026**. Keep Premiere, the CEP bridge, and your MCP client on the same computer for the recommended local setup.
@@ -66,9 +102,9 @@ The AI handles the entire workflow through 279 core tools spanning the supported
66
102
  (`brew install ffmpeg` on macOS or `winget install Gyan.FFmpeg` on Windows).
67
103
  The production Docker image already includes it.
68
104
 
69
- ### 1. Install
105
+ #### 1. Install
70
106
 
71
- **Option A — npm (recommended):**
107
+ **Option A — npm:**
72
108
 
73
109
  ```bash
74
110
  npm install -g premiere-pro-mcp
@@ -83,7 +119,7 @@ npm install
83
119
  npm run build
84
120
  ```
85
121
 
86
- ### 2. Install the CEP plugin
122
+ #### 2. Install the CEP plugin
87
123
 
88
124
  **If installed via npm:**
89
125
 
@@ -99,6 +135,16 @@ npm run install-cep
99
135
 
100
136
  This installs the plugin into Premiere Pro's per-user extensions folder and enables debug mode.
101
137
 
138
+ #### 3. Check the setup
139
+
140
+ ```bash
141
+ premiere-pro-mcp --doctor
142
+ ```
143
+
144
+ Then ask your MCP client to run `verify_premiere_connection`. The check is read-only.
145
+
146
+ </details>
147
+
102
148
  ---
103
149
 
104
150
  ## Publishing to npm
@@ -259,11 +305,11 @@ From a clone of this repository:
259
305
  ```bash
260
306
  codex plugin marketplace add .
261
307
  codex plugin add premiere-pro@premiere-pro-mcp
262
- npx -y premiere-pro-mcp@1.8.0 --install-cep
308
+ npx -y premiere-pro-mcp@1.9.1 --install-cep
263
309
  ```
264
310
 
265
311
  Restart Premiere Pro and start a new Codex session after installation. The plugin
266
- launches `premiere-pro-mcp@1.8.0` through `npx`; the separate CEP installation is
312
+ launches `premiere-pro-mcp@1.9.1` through `npx`; the separate CEP installation is
267
313
  required because the MCP server communicates with the running Premiere host through
268
314
  the local bridge.
269
315
 
@@ -283,15 +329,15 @@ For Claude Code, add this repository as a marketplace and install the plugin:
283
329
  Then install the Premiere bridge and start a new Claude Code session:
284
330
 
285
331
  ```bash
286
- npx -y premiere-pro-mcp@1.8.0 --install-cep
332
+ npx -y premiere-pro-mcp@1.9.1 --install-cep
287
333
  ```
288
334
 
289
335
  The Claude Code package lives in
290
336
  [`claude-plugins/premiere-pro`](claude-plugins/premiere-pro), with its marketplace
291
337
  at [`.claude-plugin/marketplace.json`](.claude-plugin/marketplace.json).
292
338
 
293
- Claude Desktop uses the self-contained MCP Bundle format, formerly called Desktop
294
- Extensions. Build both the current `.mcpb` artifact and a legacy `.dxt` copy with:
339
+ Claude Desktop uses the self-contained MCP Bundle (`.mcpb`) format. Build and
340
+ validate the current bundle with:
295
341
 
296
342
  ```bash
297
343
  npm run build:claude
@@ -322,7 +368,7 @@ installed separately.
322
368
  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.
323
369
 
324
370
  MCP `tools/list` is filtered to the active authority profile. The default
325
- `inspect,edit,export,filesystem` profile advertises 277 of the 279 registered
371
+ `inspect,edit,export,filesystem` profile advertises 278 of the 280 registered
326
372
  tools and omits `execute_extendscript` and `evaluate_expression`, which require
327
373
  explicit `unsafe-script` authority. `ping` and `get_capabilities` remain visible
328
374
  under every profile so a restricted or misconfigured server can still explain
@@ -437,7 +483,7 @@ The file-based IPC bridge is simple, reliable, and works across macOS and Window
437
483
 
438
484
  ---
439
485
 
440
- ## Tools (279 core total; 277 under the default profile; 296 with a connected UXP bridge)
486
+ ## Tools (280 core total; 278 under the default profile; 297 with a connected UXP bridge)
441
487
 
442
488
  ### Discovery & Inspection (10 + 10)
443
489
 
@@ -680,7 +726,7 @@ premiere-pro-mcp/
680
726
  ├── src/
681
727
  │ ├── index.ts # Entry point — stdio transport setup
682
728
  │ ├── http-server.ts # Entry point — HTTP/SSE transport (Fly.io / remote)
683
- │ ├── server.ts # MCP server — registers 279 core tools, filtered by authority profile
729
+ │ ├── server.ts # MCP server — registers 280 tools, filtered by authority profile
684
730
  │ ├── bridge/
685
731
  │ │ ├── file-bridge.ts # File-based IPC (write .jsx, poll .json)
686
732
  │ │ └── 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.8.0" ExtensionBundleName="MCP Bridge">
2
+ <ExtensionManifest Version="7.0" ExtensionBundleId="com.mcp.premiere.bridge" ExtensionBundleVersion="1.9.1" ExtensionBundleName="MCP Bridge">
3
3
  <ExtensionList>
4
- <Extension Id="com.mcp.premiere.bridge.panel" Version="1.8.0"/>
5
- <Extension Id="com.mcp.premiere.bridge.headless" Version="1.8.0"/>
4
+ <Extension Id="com.mcp.premiere.bridge.panel" Version="1.9.1"/>
5
+ <Extension Id="com.mcp.premiere.bridge.headless" Version="1.9.1"/>
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.8.0</strong>
84
+ <strong id="updateTitle">Version 1.9.1</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.8.0";
10
+ var CURRENT_VERSION = "1.9.1";
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