unity-open-mcp 0.3.1 → 0.4.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/dist/capabilities/build-capabilities.d.ts +11 -0
- package/dist/capabilities/build-capabilities.js +19 -3
- package/dist/capabilities/build-capabilities.js.map +1 -1
- package/dist/cli/cli.d.ts +18 -10
- package/dist/cli/cli.js +29 -20
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/ping-poller.js +10 -1
- package/dist/cli/ping-poller.js.map +1 -1
- package/dist/dialog-dismiss.d.ts +12 -0
- package/dist/dialog-dismiss.js +43 -13
- package/dist/dialog-dismiss.js.map +1 -1
- package/dist/dialog-policy.d.ts +40 -9
- package/dist/dialog-policy.js +122 -7
- package/dist/dialog-policy.js.map +1 -1
- package/dist/instance-discovery.d.ts +34 -0
- package/dist/instance-discovery.js +60 -2
- package/dist/instance-discovery.js.map +1 -1
- package/dist/live-client.d.ts +3 -0
- package/dist/live-client.js +95 -5
- package/dist/live-client.js.map +1 -1
- package/dist/tool-router.js +39 -4
- package/dist/tool-router.js.map +1 -1
- package/dist/tools/apply-fix.js +3 -1
- package/dist/tools/apply-fix.js.map +1 -1
- package/dist/tools/audio-source-add.js +1 -1
- package/dist/tools/audio-source-add.js.map +1 -1
- package/dist/tools/cinemachine-create-camera.js +2 -2
- package/dist/tools/cinemachine-create-camera.js.map +1 -1
- package/dist/tools/component-add.js +1 -1
- package/dist/tools/component-add.js.map +1 -1
- package/dist/tools/component-destroy.js +1 -1
- package/dist/tools/component-destroy.js.map +1 -1
- package/dist/tools/component-get.js +3 -3
- package/dist/tools/component-get.js.map +1 -1
- package/dist/tools/component-modify.js +2 -2
- package/dist/tools/component-modify.js.map +1 -1
- package/dist/tools/console-log.js +1 -1
- package/dist/tools/console-log.js.map +1 -1
- package/dist/tools/constraint-add.js +2 -2
- package/dist/tools/constraint-add.js.map +1 -1
- package/dist/tools/gameobject-destroy.js +1 -1
- package/dist/tools/gameobject-destroy.js.map +1 -1
- package/dist/tools/gameobject-duplicate.js +1 -1
- package/dist/tools/gameobject-duplicate.js.map +1 -1
- package/dist/tools/gameobject-find.js +1 -1
- package/dist/tools/gameobject-find.js.map +1 -1
- package/dist/tools/gameobject-modify.js +1 -1
- package/dist/tools/gameobject-modify.js.map +1 -1
- package/dist/tools/gameobject-set-parent.js +2 -2
- package/dist/tools/gameobject-set-parent.js.map +1 -1
- package/dist/tools/light-add.js +1 -1
- package/dist/tools/light-add.js.map +1 -1
- package/dist/tools/lod-add-level.js +1 -1
- package/dist/tools/lod-add-level.js.map +1 -1
- package/dist/tools/lod-group-configure.js +1 -1
- package/dist/tools/lod-group-configure.js.map +1 -1
- package/dist/tools/material-get-keywords.js +1 -1
- package/dist/tools/material-get-keywords.js.map +1 -1
- package/dist/tools/material-get-properties.js +1 -1
- package/dist/tools/material-get-properties.js.map +1 -1
- package/dist/tools/material-set-keyword.js +1 -1
- package/dist/tools/material-set-keyword.js.map +1 -1
- package/dist/tools/material-set-property.js +1 -1
- package/dist/tools/material-set-property.js.map +1 -1
- package/dist/tools/material-set-shader.js +1 -1
- package/dist/tools/material-set-shader.js.map +1 -1
- package/dist/tools/navigation-surface-add.js +1 -1
- package/dist/tools/navigation-surface-add.js.map +1 -1
- package/dist/tools/object-get-data.js +1 -1
- package/dist/tools/object-get-data.js.map +1 -1
- package/dist/tools/object-modify.js +1 -1
- package/dist/tools/object-modify.js.map +1 -1
- package/dist/tools/particle-system-get.js +1 -1
- package/dist/tools/particle-system-get.js.map +1 -1
- package/dist/tools/particle-system-modify.js +1 -1
- package/dist/tools/particle-system-modify.js.map +1 -1
- package/dist/tools/prefab-apply.js +1 -1
- package/dist/tools/prefab-apply.js.map +1 -1
- package/dist/tools/prefab-create.js +1 -1
- package/dist/tools/prefab-create.js.map +1 -1
- package/dist/tools/prefab-get-overrides.js +1 -1
- package/dist/tools/prefab-get-overrides.js.map +1 -1
- package/dist/tools/prefab-revert.js +1 -1
- package/dist/tools/prefab-revert.js.map +1 -1
- package/dist/tools/prefab-status.js +1 -1
- package/dist/tools/prefab-status.js.map +1 -1
- package/dist/tools/prefab-unpack.js +1 -1
- package/dist/tools/prefab-unpack.js.map +1 -1
- package/dist/tools/probuilder-delete-faces.js +1 -1
- package/dist/tools/probuilder-delete-faces.js.map +1 -1
- package/dist/tools/probuilder-extrude.js +1 -1
- package/dist/tools/probuilder-extrude.js.map +1 -1
- package/dist/tools/probuilder-set-face-material.js +1 -1
- package/dist/tools/probuilder-set-face-material.js.map +1 -1
- package/dist/tools/read-compile-errors.js +16 -3
- package/dist/tools/read-compile-errors.js.map +1 -1
- package/dist/tools/scene-focus.js +1 -1
- package/dist/tools/scene-focus.js.map +1 -1
- package/dist/tools/selection-set.js +1 -1
- package/dist/tools/selection-set.js.map +1 -1
- package/dist/tools/spatial-query.js +1 -1
- package/dist/tools/spatial-query.js.map +1 -1
- package/dist/tools/terrain-paint-layer.js +1 -1
- package/dist/tools/terrain-paint-layer.js.map +1 -1
- package/dist/tools/terrain-place-trees.js +1 -1
- package/dist/tools/terrain-place-trees.js.map +1 -1
- package/dist/tools/terrain-set-heights.js +1 -1
- package/dist/tools/terrain-set-heights.js.map +1 -1
- package/dist/tools/terrain-set-neighbors.js +1 -1
- package/dist/tools/terrain-set-neighbors.js.map +1 -1
- package/dist/tools/ui-canvas-add.js +1 -1
- package/dist/tools/ui-canvas-add.js.map +1 -1
- package/dist/tools/ui-element-add.js +1 -1
- package/dist/tools/ui-element-add.js.map +1 -1
- package/dist/tools/ui-element-modify.js +1 -1
- package/dist/tools/ui-element-modify.js.map +1 -1
- package/dist/tools/ui-layout-group-add.js +1 -1
- package/dist/tools/ui-layout-group-add.js.map +1 -1
- package/dist/unity-log.d.ts +56 -1
- package/dist/unity-log.js +136 -2
- package/dist/unity-log.js.map +1 -1
- package/package.json +1 -1
package/dist/unity-log.js
CHANGED
|
@@ -9,8 +9,14 @@
|
|
|
9
9
|
// bridge health. This module resolves that path per-OS (porting the logic from
|
|
10
10
|
// hub/src-tauri/src/config/logs.rs) and reads a bounded tail.
|
|
11
11
|
//
|
|
12
|
+
// Unity 6000.5 moved the Editor.log to a PROJECT-RELATIVE path
|
|
13
|
+
// (<project>/Logs/Editor.log) and stops writing to the global per-user log.
|
|
14
|
+
// resolveEditorLogPath() prefers the project-relative log when it exists, so
|
|
15
|
+
// the tool reads the authoritative log on both old (global-only) and new
|
|
16
|
+
// (project-relative) Unity versions without a version check.
|
|
17
|
+
//
|
|
12
18
|
// No runtime deps beyond node built-ins (mcp-server/AGENTS.md).
|
|
13
|
-
import { existsSync, openSync, readSync, fstatSync, closeSync } from "node:fs";
|
|
19
|
+
import { existsSync, openSync, readSync, fstatSync, closeSync, statSync } from "node:fs";
|
|
14
20
|
import { homedir } from "node:os";
|
|
15
21
|
import { join } from "node:path";
|
|
16
22
|
/** Resolve the live Editor.log directory for the current platform. Mirrors
|
|
@@ -41,10 +47,48 @@ export function editorLogsDir(platform = process.platform) {
|
|
|
41
47
|
return join(homedir(), "Library", "Logs", "Unity");
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
|
-
/** Resolve the
|
|
50
|
+
/** Resolve the global (per-user) Editor.log file path for the current platform. */
|
|
45
51
|
export function editorLogPath(platform = process.platform) {
|
|
46
52
|
return join(editorLogsDir(platform), "Editor.log");
|
|
47
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Resolve the project-relative Editor.log path Unity 6000.5+ writes
|
|
56
|
+
* (`<project>/Logs/Editor.log`). Returns null when no project path is given.
|
|
57
|
+
*/
|
|
58
|
+
export function projectEditorLogPath(projectPath) {
|
|
59
|
+
if (!projectPath)
|
|
60
|
+
return null;
|
|
61
|
+
return join(projectPath, "Logs", "Editor.log");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Pick the authoritative Editor.log to read for compile-error extraction.
|
|
65
|
+
*
|
|
66
|
+
* Unity 6000.5+ redirects the Editor.log to a project-relative path
|
|
67
|
+
* (`<project>/Logs/Editor.log`) and stops writing to the global per-user log.
|
|
68
|
+
* On those versions the global file is stale (left over from pre-6000.5
|
|
69
|
+
* sessions) and reading it returns "0 errors" even when the Editor is in Safe
|
|
70
|
+
* Mode with real compile errors.
|
|
71
|
+
*
|
|
72
|
+
* Resolution order (no version check needed — just prefer whichever log is
|
|
73
|
+
* available, with the project log winning ties):
|
|
74
|
+
* 1. project-relative `<project>/Logs/Editor.log` — when it exists
|
|
75
|
+
* 2. global `editorLogPath()` — fallback for pre-6000.5 Unity
|
|
76
|
+
*
|
|
77
|
+
* When the project path is unknown (no `--project`), or the project-relative
|
|
78
|
+
* log doesn't exist, the global log is used as before.
|
|
79
|
+
*/
|
|
80
|
+
export function resolveEditorLogPath(projectPath, platform = process.platform) {
|
|
81
|
+
const project = projectEditorLogPath(projectPath);
|
|
82
|
+
const global = editorLogPath(platform);
|
|
83
|
+
if (project && existsSync(project)) {
|
|
84
|
+
// Prefer the project-relative log when it exists. On 6000.5+ this is the
|
|
85
|
+
// only authoritative log; on older Unity it may not exist (fall through to
|
|
86
|
+
// global). Ties (both exist) go to the project log because 6000.5 writes
|
|
87
|
+
// there even if the global file lingers from an older version.
|
|
88
|
+
return project;
|
|
89
|
+
}
|
|
90
|
+
return global;
|
|
91
|
+
}
|
|
48
92
|
/** Default tail size. Bounded so a multi-MB log can't blow up the tool
|
|
49
93
|
* response; 256KB is ample for a compile-error burst (Unity writes the
|
|
50
94
|
* diagnostics in a contiguous block near the end of the log). */
|
|
@@ -107,4 +151,94 @@ export function readLogTail(path, maxBytes = DEFAULT_LOG_TAIL_BYTES) {
|
|
|
107
151
|
}
|
|
108
152
|
}
|
|
109
153
|
}
|
|
154
|
+
/** Upper bound on the number of newer files reported. The list is evidence,
|
|
155
|
+
* not an exhaustive roster — keeping it small avoids a giant payload when
|
|
156
|
+
* many files were touched together (e.g. a solution-wide rename). */
|
|
157
|
+
const MAX_NEWER_FILES = 5;
|
|
158
|
+
/**
|
|
159
|
+
* Decide whether the Editor.log at `logPath` is likely stale relative to the
|
|
160
|
+
* on-disk source files cited by the parsed compiler errors.
|
|
161
|
+
*
|
|
162
|
+
* The decision is conservative — it only flags staleness when ALL of:
|
|
163
|
+
* - the log file exists and has a readable mtime,
|
|
164
|
+
* - at least one cited source file resolves under `projectRoot` and exists,
|
|
165
|
+
* - that source file's mtime is strictly newer than the log's mtime.
|
|
166
|
+
*
|
|
167
|
+
* Returns `staleLogSuspected: false` (no hint) whenever the comparison cannot
|
|
168
|
+
* be made (no project root, no log, no cited files, all cited files outside
|
|
169
|
+
* the project). Never throws.
|
|
170
|
+
*
|
|
171
|
+
* Paths in `citedFiles` may be Unity-style asset locators
|
|
172
|
+
* (`Assets/Foo.cs(10,14)`) or already-stripped paths (`Assets/Foo.cs`); this
|
|
173
|
+
* helper strips a trailing `(...)` locator and accepts both forms.
|
|
174
|
+
*/
|
|
175
|
+
export function detectStaleLog(logPath, citedFiles, projectRoot) {
|
|
176
|
+
const empty = {
|
|
177
|
+
staleLogSuspected: false,
|
|
178
|
+
newerFiles: [],
|
|
179
|
+
hint: "",
|
|
180
|
+
};
|
|
181
|
+
if (!projectRoot)
|
|
182
|
+
return empty;
|
|
183
|
+
let logMtimeMs;
|
|
184
|
+
try {
|
|
185
|
+
if (!existsSync(logPath))
|
|
186
|
+
return empty;
|
|
187
|
+
logMtimeMs = statSync(logPath).mtimeMs;
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return empty;
|
|
191
|
+
}
|
|
192
|
+
if (logMtimeMs === undefined)
|
|
193
|
+
return empty;
|
|
194
|
+
const newerFiles = [];
|
|
195
|
+
for (const raw of citedFiles) {
|
|
196
|
+
if (newerFiles.length >= MAX_NEWER_FILES)
|
|
197
|
+
break;
|
|
198
|
+
if (!raw)
|
|
199
|
+
continue;
|
|
200
|
+
// Strip a trailing Unity asset locator `(line,col)` if present. The
|
|
201
|
+
// structured compiler-error extractor already separates file from line,
|
|
202
|
+
// but defensive stripping keeps this helper callable on raw strings too.
|
|
203
|
+
const paren = raw.lastIndexOf("(");
|
|
204
|
+
const rel = (paren >= 0 ? raw.slice(0, paren) : raw).trim();
|
|
205
|
+
if (!rel)
|
|
206
|
+
continue;
|
|
207
|
+
// Only inspect paths that resolve inside the project root. Editor.log
|
|
208
|
+
// sometimes cites files under Library/Temp or a package cache; their
|
|
209
|
+
// mtimes are not under the agent's control and would produce noise.
|
|
210
|
+
const abs = join(projectRoot, rel);
|
|
211
|
+
if (!abs.startsWith(projectRoot))
|
|
212
|
+
continue;
|
|
213
|
+
let fileMtimeMs;
|
|
214
|
+
try {
|
|
215
|
+
if (!existsSync(abs))
|
|
216
|
+
continue;
|
|
217
|
+
fileMtimeMs = statSync(abs).mtimeMs;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
// Strictly newer: an equal mtime means the log was rewritten at the same
|
|
223
|
+
// instant the file was saved (a fresh compile just finished writing both)
|
|
224
|
+
// — that is the OPPOSITE of stale, so the > keeps it out of the flag.
|
|
225
|
+
if (fileMtimeMs > logMtimeMs) {
|
|
226
|
+
newerFiles.push(rel);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (newerFiles.length === 0) {
|
|
230
|
+
return { staleLogSuspected: false, logMtimeMs, newerFiles: [], hint: "" };
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
staleLogSuspected: true,
|
|
234
|
+
logMtimeMs,
|
|
235
|
+
newerFiles,
|
|
236
|
+
hint: "Editor.log appears stale — at least one cited source file was edited " +
|
|
237
|
+
"after the log's most recent write (Unity's incremental compiler likely " +
|
|
238
|
+
"no-op'd a recompile of the broken assembly, so the error block may no " +
|
|
239
|
+
"longer apply). Force a genuine recompile before trusting these errors: " +
|
|
240
|
+
"call unity_open_mcp_reimport_package on the affected local package, or " +
|
|
241
|
+
"unity_open_mcp_compile_check to spawn a fresh headless recompile.",
|
|
242
|
+
};
|
|
243
|
+
}
|
|
110
244
|
//# sourceMappingURL=unity-log.js.map
|
package/dist/unity-log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unity-log.js","sourceRoot":"","sources":["../src/unity-log.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,0EAA0E;AAC1E,+EAA+E;AAC/E,yEAAyE;AACzE,4EAA4E;AAC5E,+EAA+E;AAC/E,8DAA8D;AAC9D,EAAE;AACF,gEAAgE;AAEhE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"unity-log.js","sourceRoot":"","sources":["../src/unity-log.ts"],"names":[],"mappings":"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"}
|