feat: initial commit - Jhonny Editor
- Adicionado estrutura completa do projeto - Configurado MCP server para Premiere Pro - Adicionado documentação e skills - Configurado Gitignore para o projeto
This commit is contained in:
Executable
+145
@@ -0,0 +1,145 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
buildFirstRunReport,
|
||||
collectLocalDoctor,
|
||||
createDoctorRepairPlan,
|
||||
createSupportBundle,
|
||||
renderDoctorHuman,
|
||||
} from "../src/diagnostics.js";
|
||||
|
||||
describe("non-technical diagnostics", () => {
|
||||
it("keeps local doctor states separate from a live Premiere verification", () => {
|
||||
const report = collectLocalDoctor({
|
||||
platform: "win32",
|
||||
nodeVersion: "v22.12.0",
|
||||
environment: { APPDATA: "C:\\Users\\Example\\AppData" },
|
||||
exists: (file) => file.endsWith("manifest.xml"),
|
||||
now: () => new Date("2026-08-01T12:00:00.000Z"),
|
||||
});
|
||||
|
||||
expect(report.overall).toBe("ready");
|
||||
expect(report.runtime).toEqual({ platform: "win32", nodeMajor: 22 });
|
||||
expect(report.components).toEqual(expect.arrayContaining([
|
||||
expect.objectContaining({ id: "premiere_connector", code: "CEP_CONNECTOR_READY", boundary: "installed", state: "ready" }),
|
||||
expect.objectContaining({ id: "premiere_host", code: "PREMIERE_HOST_NOT_CHECKED", boundary: "live_verified", state: "not_checked" }),
|
||||
]));
|
||||
});
|
||||
|
||||
it("creates a privacy-safe, no-write repair plan with stable diagnostic codes", () => {
|
||||
const report = collectLocalDoctor({
|
||||
platform: "win32",
|
||||
nodeVersion: "v22.12.0",
|
||||
environment: { APPDATA: "C:\\Users\\Example\\AppData" },
|
||||
exists: () => false,
|
||||
now: () => new Date("2026-09-04T00:00:00.000Z"),
|
||||
});
|
||||
const plan = createDoctorRepairPlan(report);
|
||||
expect(plan).toMatchObject({
|
||||
schemaVersion: "premiere-pro-mcp.doctor-repair-plan.v1",
|
||||
actions: expect.arrayContaining([
|
||||
expect.objectContaining({ id: "install_cep_connector", diagnosticCode: "CEP_CONNECTOR_MISSING", canApplyLocally: true, createsBackup: true }),
|
||||
expect.objectContaining({ id: "verify_live_connection", diagnosticCode: "PREMIERE_HOST_NOT_CHECKED", canApplyLocally: false }),
|
||||
]),
|
||||
});
|
||||
const serialized = JSON.stringify(plan);
|
||||
expect(serialized).not.toContain("C:\\Users\\Example");
|
||||
expect(serialized).not.toContain("APPDATA");
|
||||
});
|
||||
|
||||
it("proves the complete first-run lane with booleans only", () => {
|
||||
const report = buildFirstRunReport("cep", {
|
||||
reachable: true,
|
||||
projectOpen: true,
|
||||
sequenceOpen: true,
|
||||
});
|
||||
|
||||
expect(report).toMatchObject({
|
||||
overall: "ready",
|
||||
safeCheck: { readOnly: true, mutatesProject: false },
|
||||
});
|
||||
expect(report.components).toEqual(expect.arrayContaining([
|
||||
expect.objectContaining({ id: "mcp_process", boundary: "connected", state: "ready" }),
|
||||
expect.objectContaining({ id: "premiere_connector", boundary: "connected", state: "ready" }),
|
||||
expect.objectContaining({ id: "active_project", boundary: "live_verified", state: "ready" }),
|
||||
expect.objectContaining({ id: "active_sequence", boundary: "live_verified", state: "ready" }),
|
||||
]));
|
||||
});
|
||||
|
||||
it("gives a repairable outcome when the connector cannot answer", () => {
|
||||
const report = buildFirstRunReport("uxp", { reachable: false });
|
||||
|
||||
expect(report.overall).toBe("needs_attention");
|
||||
expect(report.safeCheck.mutatesProject).toBe(false);
|
||||
expect(report.components.find((component) => component.id === "premiere_connector"))
|
||||
.toMatchObject({ boundary: "connected", state: "needs_attention" });
|
||||
expect(report.repair).toContain("diagnose-cep");
|
||||
});
|
||||
|
||||
it("creates a support snapshot without credentials, paths, or project data", () => {
|
||||
const bundle = createSupportBundle({
|
||||
version: "1.7.0",
|
||||
platform: "win32",
|
||||
architecture: "x64",
|
||||
nodeVersion: "v22.12.0",
|
||||
environment: {
|
||||
APPDATA: "C:\\Users\\Private\\AppData",
|
||||
PREMIERE_UXP_TOKEN: "very-secret-token-value",
|
||||
POSTHOG_API_KEY: "another-secret",
|
||||
},
|
||||
exists: () => true,
|
||||
now: () => new Date("2026-08-01T12:00:00.000Z"),
|
||||
});
|
||||
const serialized = JSON.stringify(bundle);
|
||||
|
||||
expect(serialized).not.toContain("very-secret-token-value");
|
||||
expect(serialized).not.toContain("another-secret");
|
||||
expect(serialized).not.toContain("C:\\Users\\Private");
|
||||
expect(serialized).not.toMatch(/"(?:projectName|mediaName|outputDirectory|arguments|results)"\s*:/);
|
||||
});
|
||||
|
||||
it("reports unsupported local layouts and malformed Node versions conservatively", () => {
|
||||
const report = collectLocalDoctor({
|
||||
platform: "linux", nodeVersion: "not-a-version", environment: {},
|
||||
exists: () => { throw new Error("must not inspect an unknown path"); },
|
||||
now: () => new Date("2026-08-02T00:00:00.000Z"),
|
||||
});
|
||||
expect(report.overall).toBe("needs_attention");
|
||||
expect(report.runtime.nodeMajor).toBeNull();
|
||||
expect(report.components).toEqual(expect.arrayContaining([
|
||||
expect.objectContaining({ id: "node_runtime", code: "NODE_RUNTIME_UNSUPPORTED", state: "needs_attention" }),
|
||||
expect.objectContaining({ id: "premiere_connector", state: "needs_attention", repair: expect.any(String) }),
|
||||
expect.objectContaining({ id: "uxp_bridge", state: "not_checked" }),
|
||||
]));
|
||||
const human = renderDoctorHuman(report);
|
||||
expect(human).toContain("Premiere MCP local check: needs attention");
|
||||
expect(human).toContain("Next: Install the Connector");
|
||||
expect(human).toContain("Not checked: UXP connection");
|
||||
});
|
||||
|
||||
it("describes each reachable but incomplete first-run state", () => {
|
||||
const noProject = buildFirstRunReport("cep", { reachable: true });
|
||||
expect(noProject.overall).toBe("needs_attention");
|
||||
expect(noProject.components.find((item) => item.id === "active_project"))
|
||||
.toMatchObject({ state: "needs_attention", repair: expect.any(String) });
|
||||
expect(noProject.components.find((item) => item.id === "active_sequence"))
|
||||
.toMatchObject({ state: "needs_attention", repair: expect.any(String) });
|
||||
|
||||
const noSequence = buildFirstRunReport("uxp", { reachable: true, projectOpen: true });
|
||||
expect(noSequence.components.find((item) => item.id === "active_project"))
|
||||
.toMatchObject({ state: "ready" });
|
||||
expect(noSequence.components.find((item) => item.id === "active_sequence"))
|
||||
.toMatchObject({ state: "needs_attention" });
|
||||
});
|
||||
|
||||
it("recognizes the macOS connector path and configured UXP without exposing the token", () => {
|
||||
let inspected = "";
|
||||
const report = collectLocalDoctor({
|
||||
platform: "darwin", environment: { HOME: "/Users/example", PREMIERE_UXP_TOKEN: "secret" },
|
||||
exists: (file) => { inspected = file; return true; },
|
||||
});
|
||||
expect(inspected).toContain("Library");
|
||||
expect(report.components.find((item) => item.id === "uxp_bridge")).toMatchObject({ state: "ready" });
|
||||
expect(JSON.stringify(report)).not.toContain("secret");
|
||||
expect(renderDoctorHuman(report)).toContain("Premiere MCP local check: ready");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user