blueprint-extractor-mcp 8.0.1 → 8.1.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 +6 -2
- package/dist/active-editor-session.d.ts +0 -0
- package/dist/active-editor-session.js +0 -0
- package/dist/automation-controller.d.ts +0 -0
- package/dist/automation-controller.js +0 -0
- package/dist/catalogs/example-catalog.d.ts +0 -0
- package/dist/catalogs/example-catalog.js +0 -0
- package/dist/compactor.d.ts +0 -0
- package/dist/compactor.js +0 -0
- package/dist/editor-instance-registry.d.ts +0 -0
- package/dist/editor-instance-registry.js +0 -0
- package/dist/editor-instance-types.d.ts +0 -0
- package/dist/editor-instance-types.js +0 -0
- package/dist/execution/adapters/commandlet-adapter.d.ts +0 -0
- package/dist/execution/adapters/commandlet-adapter.js +0 -0
- package/dist/execution/adapters/editor-adapter.d.ts +0 -0
- package/dist/execution/adapters/editor-adapter.js +0 -0
- package/dist/execution/adapters/lazy-commandlet-adapter.d.ts +0 -0
- package/dist/execution/adapters/lazy-commandlet-adapter.js +0 -0
- package/dist/execution/adaptive-executor.d.ts +0 -0
- package/dist/execution/adaptive-executor.js +0 -0
- package/dist/execution/execution-adapter.d.ts +0 -0
- package/dist/execution/execution-adapter.js +0 -0
- package/dist/execution/execution-mode-detector.d.ts +0 -0
- package/dist/execution/execution-mode-detector.js +0 -0
- package/dist/execution/index.d.ts +0 -0
- package/dist/execution/index.js +0 -0
- package/dist/helpers/active-editor-utils.d.ts +0 -0
- package/dist/helpers/active-editor-utils.js +0 -0
- package/dist/helpers/alias-registration.d.ts +0 -0
- package/dist/helpers/alias-registration.js +0 -0
- package/dist/helpers/blueprint-dsl-parser.d.ts +0 -0
- package/dist/helpers/blueprint-dsl-parser.js +0 -0
- package/dist/helpers/blueprint-validation.d.ts +0 -0
- package/dist/helpers/blueprint-validation.js +0 -0
- package/dist/helpers/capture.d.ts +0 -0
- package/dist/helpers/capture.js +0 -0
- package/dist/helpers/commonui-button-style.d.ts +0 -0
- package/dist/helpers/commonui-button-style.js +0 -0
- package/dist/helpers/composite-patterns.d.ts +0 -0
- package/dist/helpers/composite-patterns.js +0 -0
- package/dist/helpers/formatting.d.ts +0 -0
- package/dist/helpers/formatting.js +0 -0
- package/dist/helpers/live-coding.d.ts +0 -0
- package/dist/helpers/live-coding.js +0 -0
- package/dist/helpers/material-dsl-parser.d.ts +0 -0
- package/dist/helpers/material-dsl-parser.js +0 -0
- package/dist/helpers/mutation-filter.d.ts +0 -0
- package/dist/helpers/mutation-filter.js +0 -0
- package/dist/helpers/next-step-hints.d.ts +0 -0
- package/dist/helpers/next-step-hints.js +0 -0
- package/dist/helpers/operation-deny-list.d.ts +0 -0
- package/dist/helpers/operation-deny-list.js +0 -0
- package/dist/helpers/package-metadata.d.ts +0 -0
- package/dist/helpers/package-metadata.js +0 -0
- package/dist/helpers/phantom-filter.d.ts +0 -0
- package/dist/helpers/phantom-filter.js +0 -0
- package/dist/helpers/project-resolution.d.ts +0 -0
- package/dist/helpers/project-resolution.js +0 -0
- package/dist/helpers/project-utils.d.ts +0 -0
- package/dist/helpers/project-utils.js +0 -0
- package/dist/helpers/property-path-parser.d.ts +0 -0
- package/dist/helpers/property-path-parser.js +0 -0
- package/dist/helpers/property-shorthand.d.ts +0 -0
- package/dist/helpers/property-shorthand.js +0 -0
- package/dist/helpers/response-summarizer.d.ts +0 -0
- package/dist/helpers/response-summarizer.js +0 -0
- package/dist/helpers/slot-presets.d.ts +0 -0
- package/dist/helpers/slot-presets.js +0 -0
- package/dist/helpers/subsystem.d.ts +0 -0
- package/dist/helpers/subsystem.js +0 -0
- package/dist/helpers/token-budget.d.ts +0 -0
- package/dist/helpers/token-budget.js +0 -0
- package/dist/helpers/tool-help.d.ts +0 -0
- package/dist/helpers/tool-help.js +0 -0
- package/dist/helpers/tool-registration.d.ts +0 -0
- package/dist/helpers/tool-registration.js +0 -0
- package/dist/helpers/tool-results.d.ts +0 -0
- package/dist/helpers/tool-results.js +0 -0
- package/dist/helpers/verification.d.ts +0 -0
- package/dist/helpers/verification.js +0 -0
- package/dist/helpers/widget-class-aliases.d.ts +0 -0
- package/dist/helpers/widget-class-aliases.js +0 -0
- package/dist/helpers/widget-diff-parser.d.ts +0 -0
- package/dist/helpers/widget-diff-parser.js +0 -0
- package/dist/helpers/widget-dsl-parser.d.ts +0 -0
- package/dist/helpers/widget-dsl-parser.js +0 -0
- package/dist/helpers/widget-recipe-formatter.d.ts +0 -0
- package/dist/helpers/widget-recipe-formatter.js +0 -0
- package/dist/helpers/widget-recipe-parser.d.ts +0 -0
- package/dist/helpers/widget-recipe-parser.js +0 -0
- package/dist/helpers/widget-utils.d.ts +0 -0
- package/dist/helpers/widget-utils.js +0 -0
- package/dist/helpers/workspace-project.d.ts +0 -0
- package/dist/helpers/workspace-project.js +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -0
- package/dist/project-controller.d.ts +0 -0
- package/dist/project-controller.js +0 -0
- package/dist/prompts/prompt-catalog.d.ts +2 -2
- package/dist/prompts/prompt-catalog.js +4 -1
- package/dist/register-server-resources.d.ts +5 -2
- package/dist/register-server-resources.js +2 -1
- package/dist/register-server-tools.d.ts +0 -0
- package/dist/register-server-tools.js +0 -0
- package/dist/resources/example-and-capture-resources.d.ts +0 -0
- package/dist/resources/example-and-capture-resources.js +0 -0
- package/dist/resources/static-doc-resources.d.ts +0 -0
- package/dist/resources/static-doc-resources.js +0 -0
- package/dist/schemas/tool-inputs.d.ts +0 -0
- package/dist/schemas/tool-inputs.js +0 -0
- package/dist/schemas/tool-results.d.ts +0 -0
- package/dist/schemas/tool-results.js +0 -0
- package/dist/server-config.d.ts +0 -0
- package/dist/server-config.js +0 -0
- package/dist/server-factory.d.ts +0 -0
- package/dist/server-factory.js +35 -2
- package/dist/tool-context.d.ts +0 -0
- package/dist/tool-context.js +0 -0
- package/dist/tool-surface-manager.d.ts +0 -0
- package/dist/tool-surface-manager.js +0 -0
- package/dist/tools/analysis-tools.d.ts +0 -0
- package/dist/tools/analysis-tools.js +0 -0
- package/dist/tools/animation-authoring.d.ts +0 -0
- package/dist/tools/animation-authoring.js +0 -0
- package/dist/tools/automation-runs.d.ts +0 -0
- package/dist/tools/automation-runs.js +0 -0
- package/dist/tools/blueprint-authoring.d.ts +0 -0
- package/dist/tools/blueprint-authoring.js +0 -0
- package/dist/tools/commonui-button-style.d.ts +0 -0
- package/dist/tools/commonui-button-style.js +0 -0
- package/dist/tools/composite-tools.d.ts +0 -0
- package/dist/tools/composite-tools.js +0 -0
- package/dist/tools/composite-workflows.d.ts +0 -0
- package/dist/tools/composite-workflows.js +0 -0
- package/dist/tools/data-and-input.d.ts +0 -0
- package/dist/tools/data-and-input.js +0 -0
- package/dist/tools/extraction.d.ts +0 -0
- package/dist/tools/extraction.js +0 -0
- package/dist/tools/import-jobs.d.ts +0 -0
- package/dist/tools/import-jobs.js +0 -0
- package/dist/tools/material-authoring.d.ts +0 -0
- package/dist/tools/material-authoring.js +0 -0
- package/dist/tools/material-instance.d.ts +0 -0
- package/dist/tools/material-instance.js +0 -0
- package/dist/tools/project-control.d.ts +0 -0
- package/dist/tools/project-control.js +0 -0
- package/dist/tools/project-intelligence.d.ts +0 -0
- package/dist/tools/project-intelligence.js +0 -0
- package/dist/tools/recipe-tools.d.ts +0 -0
- package/dist/tools/recipe-tools.js +0 -0
- package/dist/tools/schema-and-ai-authoring.d.ts +0 -0
- package/dist/tools/schema-and-ai-authoring.js +0 -0
- package/dist/tools/tables-and-curves.d.ts +0 -0
- package/dist/tools/tables-and-curves.js +0 -0
- package/dist/tools/utility-tools.d.ts +0 -0
- package/dist/tools/utility-tools.js +0 -0
- package/dist/tools/widget-animation-authoring.d.ts +0 -0
- package/dist/tools/widget-animation-authoring.js +0 -0
- package/dist/tools/widget-extraction.d.ts +0 -0
- package/dist/tools/widget-extraction.js +0 -0
- package/dist/tools/widget-structure.d.ts +0 -0
- package/dist/tools/widget-structure.js +0 -0
- package/dist/tools/widget-verification.d.ts +0 -0
- package/dist/tools/widget-verification.js +0 -0
- package/dist/tools/window-ui.d.ts +0 -0
- package/dist/tools/window-ui.js +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.js +0 -0
- package/dist/ue-client.d.ts +0 -0
- package/dist/ue-client.js +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -86,6 +86,10 @@ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
|
|
|
86
86
|
<tr><td><b>OpenCode</b></td></tr>
|
|
87
87
|
<tr><td>
|
|
88
88
|
|
|
89
|
+
```bash
|
|
90
|
+
npm install --prefix ~/.config/opencode --save-exact blueprint-extractor-mcp@latest
|
|
91
|
+
```
|
|
92
|
+
|
|
89
93
|
```jsonc
|
|
90
94
|
// ~/.config/opencode/opencode.json
|
|
91
95
|
{
|
|
@@ -93,7 +97,7 @@ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
|
|
|
93
97
|
"mcp": {
|
|
94
98
|
"blueprint-extractor": {
|
|
95
99
|
"type": "local",
|
|
96
|
-
"command": ["
|
|
100
|
+
"command": ["/absolute/path/to/.config/opencode/node_modules/.bin/blueprint-extractor-mcp"],
|
|
97
101
|
"enabled": true,
|
|
98
102
|
"environment": {
|
|
99
103
|
"UE_REMOTE_CONTROL_PORT": "30010"
|
|
@@ -106,7 +110,7 @@ codex mcp add --env UE_REMOTE_CONTROL_PORT=30010 \
|
|
|
106
110
|
</td></tr>
|
|
107
111
|
</table>
|
|
108
112
|
|
|
109
|
-
> On Windows,
|
|
113
|
+
> On Windows, point `command` at `C:\Users\you\.config\opencode\node_modules\.bin\blueprint-extractor-mcp.cmd`.
|
|
110
114
|
|
|
111
115
|
<br>
|
|
112
116
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/compactor.d.ts
CHANGED
|
File without changes
|
package/dist/compactor.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/execution/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/helpers/capture.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/index.d.ts
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import type { McpServer, RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
export type PromptCatalogEntry = {
|
|
4
4
|
title: string;
|
|
@@ -105,4 +105,4 @@ export declare const designSpecSchemaExample: {
|
|
|
105
105
|
};
|
|
106
106
|
};
|
|
107
107
|
export declare const promptCatalog: Record<string, PromptCatalogEntry>;
|
|
108
|
-
export declare function registerPromptCatalog(server: Pick<McpServer, 'registerPrompt'>):
|
|
108
|
+
export declare function registerPromptCatalog(server: Pick<McpServer, 'registerPrompt'>): Map<string, RegisteredPrompt>;
|
|
@@ -342,8 +342,9 @@ export const promptCatalog = {
|
|
|
342
342
|
},
|
|
343
343
|
};
|
|
344
344
|
export function registerPromptCatalog(server) {
|
|
345
|
+
const registeredPrompts = new Map();
|
|
345
346
|
for (const [name, prompt] of Object.entries(promptCatalog)) {
|
|
346
|
-
server.registerPrompt(name, {
|
|
347
|
+
const registeredPrompt = server.registerPrompt(name, {
|
|
347
348
|
title: prompt.title,
|
|
348
349
|
description: prompt.description,
|
|
349
350
|
argsSchema: prompt.args,
|
|
@@ -357,5 +358,7 @@ export function registerPromptCatalog(server) {
|
|
|
357
358
|
},
|
|
358
359
|
}],
|
|
359
360
|
}));
|
|
361
|
+
registeredPrompts.set(name, registeredPrompt);
|
|
360
362
|
}
|
|
363
|
+
return registeredPrompts;
|
|
361
364
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import { McpServer, type RegisteredPrompt } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { AutomationControllerLike } from './automation-controller.js';
|
|
3
3
|
type JsonSubsystemCaller = (method: string, params: Record<string, unknown>) => Promise<Record<string, unknown>>;
|
|
4
4
|
type RegisterServerResourcesOptions = {
|
|
@@ -6,5 +6,8 @@ type RegisterServerResourcesOptions = {
|
|
|
6
6
|
automationController: AutomationControllerLike;
|
|
7
7
|
callSubsystemJson: JsonSubsystemCaller;
|
|
8
8
|
};
|
|
9
|
-
|
|
9
|
+
type RegisterServerResourcesResult = {
|
|
10
|
+
registeredPrompts: Map<string, RegisteredPrompt>;
|
|
11
|
+
};
|
|
12
|
+
export declare function registerServerResources({ server, automationController, callSubsystemJson, }: RegisterServerResourcesOptions): RegisterServerResourcesResult;
|
|
10
13
|
export {};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/server-config.d.ts
CHANGED
|
File without changes
|
package/dist/server-config.js
CHANGED
|
File without changes
|
package/dist/server-factory.d.ts
CHANGED
|
File without changes
|
package/dist/server-factory.js
CHANGED
|
@@ -39,6 +39,31 @@ export function createBlueprintExtractorServer(client, projectController = new P
|
|
|
39
39
|
instructions: serverInstructions,
|
|
40
40
|
});
|
|
41
41
|
const defaultOutputSchema = toolResultSchema.catchall(z.unknown());
|
|
42
|
+
let promptsEnabled = true;
|
|
43
|
+
function setPromptSurfaceEnabled(registeredPrompts, enabled) {
|
|
44
|
+
if (promptsEnabled === enabled) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
for (const registeredPrompt of registeredPrompts.values()) {
|
|
48
|
+
if (enabled) {
|
|
49
|
+
registeredPrompt.enable();
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
registeredPrompt.disable();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
promptsEnabled = enabled;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
function isOpenCodeClient(clientVersion) {
|
|
59
|
+
if (!clientVersion || typeof clientVersion !== 'object') {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return ['name', 'title', 'description', 'websiteUrl'].some((field) => {
|
|
63
|
+
const value = clientVersion[field];
|
|
64
|
+
return typeof value === 'string' && /opencode/i.test(value);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
42
67
|
// Direct editor path — preserves callSubsystemJson error-checking layer and
|
|
43
68
|
// avoids recursive executor routing while resolving commandlet fallback inputs.
|
|
44
69
|
const directCallSubsystemJson = (method, params, options) => (callSubsystemJsonWithClient(effectiveClient, method, params, options));
|
|
@@ -105,11 +130,14 @@ export function createBlueprintExtractorServer(client, projectController = new P
|
|
|
105
130
|
workspaceProjectPath: await activeEditorSession?.getWorkspaceProjectPath(),
|
|
106
131
|
});
|
|
107
132
|
}
|
|
108
|
-
registerServerResources({
|
|
133
|
+
const { registeredPrompts } = registerServerResources({
|
|
109
134
|
server,
|
|
110
135
|
automationController,
|
|
111
136
|
callSubsystemJson,
|
|
112
137
|
});
|
|
138
|
+
// OpenCode eagerly fetches every prompt on startup and currently surfaces a
|
|
139
|
+
// client-side drain-listener warning against larger prompt catalogs.
|
|
140
|
+
setPromptSurfaceEnabled(registeredPrompts, false);
|
|
113
141
|
registerServerTools({
|
|
114
142
|
server,
|
|
115
143
|
client: effectiveClient,
|
|
@@ -200,7 +228,12 @@ export function createBlueprintExtractorServer(client, projectController = new P
|
|
|
200
228
|
});
|
|
201
229
|
// Wire oninitialized to detect client capabilities
|
|
202
230
|
server.server.oninitialized = () => {
|
|
203
|
-
const
|
|
231
|
+
const lowLevelServer = server.server;
|
|
232
|
+
const caps = lowLevelServer.getClientCapabilities();
|
|
233
|
+
const promptSurfaceChanged = setPromptSurfaceEnabled(registeredPrompts, !isOpenCodeClient(lowLevelServer.getClientVersion?.()));
|
|
234
|
+
if (promptSurfaceChanged && caps?.prompts?.listChanged) {
|
|
235
|
+
server.sendPromptListChanged();
|
|
236
|
+
}
|
|
204
237
|
if (caps?.tools?.listChanged) {
|
|
205
238
|
toolSurfaceManager.activateProfile('default');
|
|
206
239
|
}
|
package/dist/tool-context.d.ts
CHANGED
|
File without changes
|
package/dist/tool-context.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/tools/extraction.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/tools/window-ui.js
CHANGED
|
File without changes
|
package/dist/types.d.ts
CHANGED
|
File without changes
|
package/dist/types.js
CHANGED
|
File without changes
|
package/dist/ue-client.d.ts
CHANGED
|
File without changes
|
package/dist/ue-client.js
CHANGED
|
File without changes
|