blueprint-extractor-mcp 2.2.0 → 2.3.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/README.md CHANGED
@@ -4,7 +4,7 @@ MCP server for the Unreal Engine `BlueprintExtractor` plugin.
4
4
 
5
5
  This package exposes the `blueprint-extractor` server over stdio and talks to a running Unreal Editor through the Remote Control HTTP API.
6
6
 
7
- The current v2 MCP contract exposes 80 tools, 13 resources, 2 resource templates, and 4 prompts.
7
+ The current v2 MCP contract exposes 87 tools, 12 resources, 4 resource templates, and 4 prompts.
8
8
  Public tools use canonical `snake_case` inputs and return structured JSON success or error envelopes.
9
9
 
10
10
  Current surface area includes:
@@ -13,7 +13,8 @@ Current surface area includes:
13
13
  - explicit-save authoring tools for the supported editor-side asset families, including compact widget extraction, incremental widget-structure ops, widget class-default routing, composable material authoring (`set_material_settings`, `add_material_expression`, `connect_material_expressions`, `bind_material_property`), and the advanced `modify_material` escape hatch
14
14
  - dedicated Enhanced Input authoring tools for `InputAction` and `InputMappingContext` assets (`create_input_action`, `modify_input_action`, `create_input_mapping_context`, `modify_input_mapping_context`)
15
15
  - async import and reimport tools with polling for generic assets plus typed texture and mesh helpers
16
- - host-side project automation tools for external builds, Live Coding requests, restart/reconnect orchestration, and a thin window-polish helper
16
+ - host-side project automation tools for external builds, Live Coding requests, restart/reconnect orchestration, a thin window-polish helper, and runtime automation artifacts that surface verification screenshots back to the caller
17
+ - a shared visual-verification artifact contract across widget captures, capture diffs, and automation-run screenshots so the caller can inspect rendered results instead of relying on semantic success alone
17
18
  - static guidance resources, resource templates, and prompts for authoring conventions, selector rules, font roles, project automation, example payloads, widget patterns, unsupported surfaces, safe UI redesign, and classic material graph guidance
18
19
 
19
20
  ## Requirements
@@ -63,7 +64,7 @@ npm install
63
64
  npm run build
64
65
  npm test
65
66
  npm run test:pack-smoke
66
- npm publish --dry-run
67
+ npm run test:publish-gate
67
68
  ```
68
69
 
69
70
  For the gated live smoke test:
@@ -1,10 +1,9 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { spawn } from 'node:child_process';
3
- import { access, mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
4
4
  import { createWriteStream } from 'node:fs';
5
5
  import { dirname, extname, join, relative, resolve } from 'node:path';
6
- import { constants as fsConstants } from 'node:fs';
7
- import { resolveCommandInvocation } from './project-controller.js';
6
+ import { resolveCommandInvocation, resolveEditorExecutable } from './project-controller.js';
8
7
  const DEFAULT_TIMEOUT_MS = 60 * 60 * 1000;
9
8
  function defaultNow() {
10
9
  return new Date();
@@ -89,13 +88,7 @@ function buildResourceUri(runId, artifactName) {
89
88
  return `blueprint://test-runs/${encodeURIComponent(runId)}/${encodeURIComponent(artifactName)}`;
90
89
  }
91
90
  async function resolveEditorCommand(engineRoot, platform) {
92
- const executable = platform === 'win32'
93
- ? resolve(engineRoot, 'Engine', 'Binaries', 'Win64', 'UnrealEditor-Cmd.exe')
94
- : platform === 'darwin'
95
- ? resolve(engineRoot, 'Engine', 'Binaries', 'Mac', 'UnrealEditor-Cmd')
96
- : resolve(engineRoot, 'Engine', 'Binaries', 'Linux', 'UnrealEditor-Cmd');
97
- await access(executable, fsConstants.F_OK);
98
- return executable;
91
+ return await resolveEditorExecutable(engineRoot, platform, 'commandlet');
99
92
  }
100
93
  export class AutomationController {
101
94
  env;