ue-mcp 1.3.6 → 1.3.7
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/dist/flow/guard.d.ts +11 -6
- package/dist/flow/guard.js +24 -7
- package/dist/flow/guard.js.map +1 -1
- package/dist/flow/write-methods.d.ts +0 -10
- package/dist/flow/write-methods.js +3 -18
- package/dist/flow/write-methods.js.map +1 -1
- package/dist/tool-counts.json +2 -2
- package/package.json +1 -1
- package/plugin/ue_mcp_bridge/UE_MCP_Bridge.uplugin +1 -1
package/dist/flow/guard.d.ts
CHANGED
|
@@ -50,14 +50,19 @@ export declare class GuardRegistry extends FlowkitGuardRegistry<CallContext, unk
|
|
|
50
50
|
*/
|
|
51
51
|
export declare function writeScope(ctx: CallContext): boolean;
|
|
52
52
|
/**
|
|
53
|
-
* Every call that
|
|
53
|
+
* Every call that is not provably a read.
|
|
54
54
|
*
|
|
55
55
|
* Wider than `writeScope`, and deliberately so. That one asks which existing
|
|
56
|
-
* files a call modifies, which is the
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
56
|
+
* files a call modifies, which is the source-control question: it answers
|
|
57
|
+
* "no" whenever it cannot extract a content path, and a call with no asset
|
|
58
|
+
* path in its parameters is still a mutation of the editor.
|
|
59
|
+
*
|
|
60
|
+
* This one FAILS CLOSED. A guard told to stand in front of everything that
|
|
61
|
+
* mutates is asked to be exhaustive, so anything whose verb is not a known
|
|
62
|
+
* read counts. Listing mutating verbs instead was the wrong way round: the
|
|
63
|
+
* list is open-ended, and every verb missing from it was a mutation nobody
|
|
64
|
+
* guarded. The read lexicon is the same one asset locking uses, so the two
|
|
65
|
+
* cannot drift into disagreeing about what a read is.
|
|
61
66
|
*/
|
|
62
67
|
export declare function mutationScope(ctx: CallContext): boolean;
|
|
63
68
|
/** Build the per-call context, wiring the lazy write-enrichment helpers. */
|
package/dist/flow/guard.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { GuardRegistry as FlowkitGuardRegistry, guardContextBase, lazy, } from "@db-lyon/flowkit/guard";
|
|
17
17
|
import * as fs from "node:fs";
|
|
18
18
|
import { classifyWrite } from "./write-methods.js";
|
|
19
|
+
import { READ_PREFIXES } from "../locking.js";
|
|
19
20
|
/** The bridge's guard set. Built-in guards register directly; plugin guards are discovered. */
|
|
20
21
|
export class GuardRegistry extends FlowkitGuardRegistry {
|
|
21
22
|
}
|
|
@@ -29,17 +30,33 @@ export function writeScope(ctx) {
|
|
|
29
30
|
return ctx.writeFiles().length > 0;
|
|
30
31
|
}
|
|
31
32
|
/**
|
|
32
|
-
* Every call that
|
|
33
|
+
* Every call that is not provably a read.
|
|
33
34
|
*
|
|
34
35
|
* Wider than `writeScope`, and deliberately so. That one asks which existing
|
|
35
|
-
* files a call modifies, which is the
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
36
|
+
* files a call modifies, which is the source-control question: it answers
|
|
37
|
+
* "no" whenever it cannot extract a content path, and a call with no asset
|
|
38
|
+
* path in its parameters is still a mutation of the editor.
|
|
39
|
+
*
|
|
40
|
+
* This one FAILS CLOSED. A guard told to stand in front of everything that
|
|
41
|
+
* mutates is asked to be exhaustive, so anything whose verb is not a known
|
|
42
|
+
* read counts. Listing mutating verbs instead was the wrong way round: the
|
|
43
|
+
* list is open-ended, and every verb missing from it was a mutation nobody
|
|
44
|
+
* guarded. The read lexicon is the same one asset locking uses, so the two
|
|
45
|
+
* cannot drift into disagreeing about what a read is.
|
|
40
46
|
*/
|
|
41
47
|
export function mutationScope(ctx) {
|
|
42
|
-
return ctx.
|
|
48
|
+
return !isReadVerb(ctx.method);
|
|
49
|
+
}
|
|
50
|
+
/** Whether a method's leading verb is a known read. Shared with asset locking. */
|
|
51
|
+
function isReadVerb(method) {
|
|
52
|
+
const segments = String(method).toLowerCase().split(/[._]/);
|
|
53
|
+
let verb = segments[0] ?? "";
|
|
54
|
+
// "bulk" and "batch" describe the shape of a call, not what it does, so the
|
|
55
|
+
// verb after one is the answer: `bulk_read_properties` only looks.
|
|
56
|
+
if ((verb === "bulk" || verb === "batch") && segments.length > 1) {
|
|
57
|
+
verb = segments[1];
|
|
58
|
+
}
|
|
59
|
+
return READ_PREFIXES.includes(verb);
|
|
43
60
|
}
|
|
44
61
|
/** Build the per-call context, wiring the lazy write-enrichment helpers. */
|
|
45
62
|
export function makeCallContext(method, params, timeoutMs, rawBridge, resolveExistingFile, session) {
|
package/dist/flow/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/flow/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,aAAa,IAAI,oBAAoB,EACrC,gBAAgB,EAChB,IAAI,GAGL,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAE,aAAa,EAA4B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/flow/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,aAAa,IAAI,oBAAoB,EACrC,gBAAgB,EAChB,IAAI,GAGL,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAE,aAAa,EAA4B,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA0B9C,+FAA+F;AAC/F,MAAM,OAAO,aAAc,SAAQ,oBAA0C;CAAG;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,GAAgB;IACzC,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,kFAAkF;AAClF,SAAS,UAAU,CAAC,MAAc;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,mEAAmE;IACnE,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,OAAQ,aAAmC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,MAA+B,EAC/B,SAA6B,EAC7B,SAAkB,EAClB,mBAAwC,EACxC,OAAuB;IAEvB,MAAM,GAAG,GAAG;QACV,GAAG,gBAAgB,EAAE;QACrB,MAAM;QACN,MAAM;QACN,SAAS;QACT,MAAM,EAAE,SAAS;QACjB,OAAO;KACO,CAAC;IAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,CAAC,MAAM;YACb,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;YAChF,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,OAAO,CAAC,WAAmB,EAAiB,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACpD,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -30,16 +30,6 @@ export interface WriteClassification {
|
|
|
30
30
|
* anything".
|
|
31
31
|
*/
|
|
32
32
|
writes: boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Whether this call changes editor state at all.
|
|
35
|
-
*
|
|
36
|
-
* Separate from `writes` because most mutations are not asset writes: a call
|
|
37
|
-
* that spawns an actor, sets a live property or starts a play session
|
|
38
|
-
* changes the world and names no content path. A guard asked to stand in
|
|
39
|
-
* front of every mutation needs this one; a guard checking files out of
|
|
40
|
-
* source control needs `writes`.
|
|
41
|
-
*/
|
|
42
|
-
mutates: boolean;
|
|
43
33
|
/** UE content paths the call modifies. Empty when nothing is guardable. */
|
|
44
34
|
contentPaths: string[];
|
|
45
35
|
}
|
|
@@ -24,16 +24,6 @@
|
|
|
24
24
|
*/
|
|
25
25
|
/** Method-name prefixes that denote a mutation. Read verbs are excluded. */
|
|
26
26
|
const WRITE_VERB = /^(save|set|create|add|delete|remove|import|rename|move|duplicate|reparent|compile|apply|assign|modify|bake|generate|build)_/;
|
|
27
|
-
/**
|
|
28
|
-
* Verbs that change editor state without naming an asset.
|
|
29
|
-
*
|
|
30
|
-
* Spawning an actor, starting a play session, pressing a dialog button and
|
|
31
|
-
* launching a build all change something somebody could care about, and none
|
|
32
|
-
* of them writes a content path. A guard standing in front of "everything that
|
|
33
|
-
* mutates" has to see these, which is why `mutates` is a wider question than
|
|
34
|
-
* `writes`.
|
|
35
|
-
*/
|
|
36
|
-
const MUTATING_VERB = /^(spawn|destroy|attach|detach|possess|eject|start|stop|restart|launch|play|pause|resume|simulate|inject|press|respond|execute|run|trigger|invoke|arm|clear|reset|undo|redo|snap|nudge|align|focus|select|deselect|open|close|connect|disconnect|enable|disable|toggle|refresh|reload|deploy|sync|upload|download|install|uninstall|publish)_/;
|
|
37
27
|
/** Single-value params that carry an asset content path. */
|
|
38
28
|
const PATH_KEYS = ["assetPath", "sourcePath", "destinationPath", "packagePath", "path"];
|
|
39
29
|
/** Array params that carry asset content paths. */
|
|
@@ -124,18 +114,13 @@ const EXPLICIT = {
|
|
|
124
114
|
* `writes: false` when the call is not a guardable write.
|
|
125
115
|
*/
|
|
126
116
|
export function classifyWrite(method, params) {
|
|
127
|
-
// A method is a mutation because of what it does, not because of whether it
|
|
128
|
-
// happened to name a path this call can resolve.
|
|
129
|
-
const mutates = EXPLICIT[method] !== undefined
|
|
130
|
-
|| WRITE_VERB.test(method)
|
|
131
|
-
|| MUTATING_VERB.test(method);
|
|
132
117
|
const explicit = EXPLICIT[method];
|
|
133
118
|
if (explicit) {
|
|
134
119
|
const contentPaths = dedupe(explicit(params));
|
|
135
|
-
return { writes: contentPaths.length > 0,
|
|
120
|
+
return { writes: contentPaths.length > 0, contentPaths };
|
|
136
121
|
}
|
|
137
122
|
if (!WRITE_VERB.test(method)) {
|
|
138
|
-
return { writes: false,
|
|
123
|
+
return { writes: false, contentPaths: [] };
|
|
139
124
|
}
|
|
140
125
|
const contentPaths = [];
|
|
141
126
|
for (const key of PATH_KEYS) {
|
|
@@ -147,7 +132,7 @@ export function classifyWrite(method, params) {
|
|
|
147
132
|
contentPaths.push(...strArray(params[key]));
|
|
148
133
|
}
|
|
149
134
|
const deduped = dedupe(contentPaths);
|
|
150
|
-
return { writes: deduped.length > 0,
|
|
135
|
+
return { writes: deduped.length > 0, contentPaths: deduped };
|
|
151
136
|
}
|
|
152
137
|
function dedupe(xs) {
|
|
153
138
|
return [...new Set(xs)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-methods.js","sourceRoot":"","sources":["../../src/flow/write-methods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"write-methods.js","sourceRoot":"","sources":["../../src/flow/write-methods.ts"],"names":[],"mappings":"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"}
|
package/dist/tool-counts.json
CHANGED
package/package.json
CHANGED