@atelierai/uco 1.0.7 → 1.0.9
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/CHANGELOG.md +29 -8
- package/package.json +2 -2
- package/vendor/plugin/com.atelierai.unity.copilot/CHANGELOG.md +4 -4
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetConfig.cs +132 -132
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDependencyResolver.cs +237 -237
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDownloader.cs +82 -82
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/MenuItems.cs +247 -247
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/ToolGroups.cs +153 -153
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/SystemTool/Skills.Create.SkillBody.cs +155 -155
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Console.GetLogs.cs +95 -95
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Docs.HttpFetcher.cs +139 -139
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Instance.ListAll.cs +72 -72
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/PathReadHelper.cs +106 -106
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Script.Validate.cs +252 -252
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests/TestResultCollector.cs +537 -537
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests.cs +400 -400
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/ToolGroups.SetEnabled.cs +92 -92
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Branding/ProductInfo.cs +62 -62
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +887 -1034
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Skills/Skill_InitialSetup.cs +197 -197
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.Editor.cs +201 -201
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.cs +67 -67
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotListWindowBase.cs +393 -393
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotWindowBase.cs +113 -113
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.Connection.cs +3 -3
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotFeatures.cs +195 -195
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +22 -22
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CreateGUI.cs +354 -354
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.cs +78 -78
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowInitializer.cs +47 -47
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/SerializationCheckWindow.cs +190 -190
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Build.cs +91 -91
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Config.cs +298 -298
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Static.cs +296 -296
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.cs +69 -69
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PackageUtils.cs +168 -168
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PrefsKeyMigration.cs +119 -119
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/SafeDefaultsGuard.cs +180 -180
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ScriptUtils.cs +229 -229
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolGroupRegistry.cs +461 -460
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolsManifestGenerator.cs +200 -200
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringAdapters.cs +1467 -1467
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringSafetyReloadGuard.cs +65 -65
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityCopilotUpdateProjectSettings.cs +66 -66
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotPromptsWindow.uss +11 -11
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotResourcesWindow.uss +16 -16
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotToolsWindow.uss +36 -36
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/MainWindow.uss +183 -183
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/{_mcp-list-window.uss → _copilot-list-window.uss} +18 -18
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/_list-view.uss +77 -77
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotPromptsWindow.uxml +18 -18
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotResourcesWindow.uxml +18 -18
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotToolsWindow.uxml +18 -18
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/MainWindow.uxml +115 -115
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/README.md +88 -88
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Converter/Json/Structures/EntityIdConverter.cs +120 -120
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.cs +110 -110
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.pre-Unity.6.5.cs +110 -110
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/FileLogStorage.cs +547 -547
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Build.cs +243 -243
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +3 -3
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +295 -295
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginBuilder.cs +105 -105
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.Static.cs +155 -155
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.cs +59 -59
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +11 -11
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/AtomicApiTestFixtures.cs +99 -99
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/TryModifyAtTests.cs +227 -227
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AuthoringSafetyPilotTests.cs +1050 -1050
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetExtractorDevelopmentDependencyTests.cs +148 -148
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetExtractorFlatLayoutTests.cs +166 -166
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetInstallManifestTests.cs +436 -436
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetLegacyMigrationTests.cs +304 -304
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetPackageInstallerStaleVersionCleanupTests.cs +200 -200
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +2 -2
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/BlacklistTypeTests.cs +416 -416
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.cs +172 -172
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.pre-Unity.6.5.cs +169 -169
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.cs +182 -182
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.pre-Unity.6.5.cs +179 -179
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.cs +175 -175
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.pre-Unity.6.5.cs +174 -174
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.cs +171 -171
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.pre-Unity.6.5.cs +170 -170
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsCreateFolderTests.cs +243 -243
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsMaterialTests.cs +101 -101
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.cs +348 -348
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.pre-Unity.6.5.cs +348 -348
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsShaderTests.cs +194 -194
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/GameObject/TestJsonSchema.cs +199 -199
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.cs +573 -573
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.pre-Unity.6.5.cs +513 -513
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.cs +154 -154
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.pre-Unity.6.5.cs +154 -154
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotGameViewTests.cs +164 -164
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotSceneViewTests.cs +155 -155
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolParameterTests.cs +56 -56
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.cs +651 -651
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.pre-Unity.6.5.cs +651 -651
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ToolBatchExecutionIntegrationTests.cs +407 -407
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs → UcoPluginTests.cs} +105 -105
- package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
- /package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/{_mcp-list-window.uss.meta → _copilot-list-window.uss.meta} +0 -0
- /package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs.meta → UcoPluginTests.cs.meta} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.0.9 - 2026-09-19
|
|
4
|
+
|
|
5
|
+
- Vendored plugin refreshed to **1.0.7**: the complete legacy-naming sweep —
|
|
6
|
+
dead config-builder helpers removed (the last code producing
|
|
7
|
+
agent-config-shaped JSON), internal docs rewritten to the current
|
|
8
|
+
architecture, package/UI naming cleaned end to end, and a live prefs-key
|
|
9
|
+
bug fixed (the tool-group flag now reads the key its own migration writes).
|
|
10
|
+
Framework tests 831x2, 2022.3 gate 857/858 unchanged.
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## 1.0.8 - 2026-09-19
|
|
14
|
+
|
|
15
|
+
- Vendored plugin refreshed to **1.0.6**: the C# source's internal type and
|
|
16
|
+
directory names complete the legacy-naming scrub (managers, builder,
|
|
17
|
+
hub interfaces, test names, storage keys). No behavioral change —
|
|
18
|
+
framework tests 831/831 across TFMs, 2022.3 EditMode gate unchanged.
|
|
19
|
+
- This rename also fixed a live mismatch: the plugin now requests
|
|
20
|
+
`GetPluginClientData`, which the bridge actually serves (it previously
|
|
21
|
+
requested a method name the bridge never registered).
|
|
22
|
+
|
|
23
|
+
|
|
3
24
|
## 1.0.7 - 2026-09-19
|
|
4
25
|
|
|
5
26
|
- **Legacy agent-config writing removed.** uco no longer writes or
|
|
6
|
-
reconciles server entries into agent-client config files
|
|
27
|
+
reconciles server entries into agent-client config files
|
|
7
28
|
Cursor, codex toml, …) — those entries pointed at a protocol surface the
|
|
8
29
|
bridge has never spoken and never worked; they only surfaced as dead
|
|
9
|
-
entries in agent tooling.
|
|
30
|
+
entries in agent tooling. The legacy setup and login commands are gone.
|
|
10
31
|
Existing entries in your projects are left untouched; delete them at will.
|
|
11
32
|
- **Legacy naming surface scrubbed end to end.** The bridge speaks plain
|
|
12
33
|
REST (`/api/*`) plus a raw-WebSocket plugin hub — nothing else — and the
|
|
@@ -23,7 +44,7 @@
|
|
|
23
44
|
|
|
24
45
|
## 1.0.6 - 2026-09-19
|
|
25
46
|
|
|
26
|
-
- Agent
|
|
47
|
+
- Agent-client config files written by the legacy setup command /
|
|
27
48
|
`uco update` now dial `127.0.0.1` even when the project config's host says
|
|
28
49
|
`localhost` — third-party agent clients (Claude Code, codex) run on Node
|
|
29
50
|
runtimes that resolve `localhost` to `::1`, which per-process proxy rules
|
|
@@ -43,8 +64,8 @@
|
|
|
43
64
|
(Node's fetch may resolve `localhost` to ::1, which proxy rules matching
|
|
44
65
|
node.exe commonly hijack), and a dead bridge behind such a proxy still
|
|
45
66
|
classifies as `connection-refused` instead of an opaque `fetch failed`.
|
|
46
|
-
`uco open --start-server` handoff health checks and generated
|
|
47
|
-
|
|
67
|
+
`uco open --start-server` handoff health checks and generated agent configs use
|
|
68
|
+
`127.0.0.1` as well.
|
|
48
69
|
- Legacy `.cocli-skill.json` markers refresh in place again (a pre-rename
|
|
49
70
|
install was refused by its own ownership marker; the marker file itself
|
|
50
71
|
no longer counts as unmanaged).
|
|
@@ -57,7 +78,7 @@
|
|
|
57
78
|
|
|
58
79
|
## 1.0.4 - 2026-09-17
|
|
59
80
|
|
|
60
|
-
- Server startup banner says "uco bridge"
|
|
81
|
+
- Server startup banner says "uco bridge"; help
|
|
61
82
|
endpoint header updated to match.
|
|
62
83
|
- Vendored plugin refreshed to **1.0.4**: the in-editor updater now
|
|
63
84
|
detects embedded installs (uco install) and directs the user to the
|
|
@@ -70,7 +91,7 @@
|
|
|
70
91
|
bridge discovery now finds the published **@atelierai/uco** npm package
|
|
71
92
|
(plus legacy `uco`/`cocli` layouts as fallbacks).
|
|
72
93
|
- Help text and skill templates say "uco bridge server" instead of
|
|
73
|
-
|
|
94
|
+
the legacy server name; the uco-setup recovery skill now documents how to
|
|
74
95
|
bring the bridge up (`uco open --start-server true`, plugin auto-start,
|
|
75
96
|
manual spawn with the exact CLI arguments).
|
|
76
97
|
|
|
@@ -79,7 +100,7 @@
|
|
|
79
100
|
- Product naming unified to **Unity Copilot** (no hyphen) across docs and
|
|
80
101
|
skill templates.
|
|
81
102
|
- Vendored plugin refreshed to **1.0.2**: one menu tree (Tools ▸ Unity
|
|
82
|
-
Copilot), the "AI Game Developer" leftovers and the dead
|
|
103
|
+
Copilot), the "AI Game Developer" leftovers and the dead legacy inspector
|
|
83
104
|
item removed.
|
|
84
105
|
- `uco init` interactive agent selection now renders a checkbox list
|
|
85
106
|
(space toggles, arrows move, enter confirms) on a TTY; non-TTY keeps the
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atelierai/uco",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "uco — Unity Copilot CLI. Drive Unity Editor (and runtime game builds) from any AI agent via plain HTTP.
|
|
3
|
+
"version": "1.0.9",
|
|
4
|
+
"description": "uco — Unity Copilot CLI. Drive Unity Editor (and runtime game builds) from any AI agent via plain HTTP.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"uco": "./bin/uco.mjs",
|
|
@@ -22,7 +22,7 @@ detects the embedded layout and directs the user to run
|
|
|
22
22
|
Discovery now probes @atelierai/uco, then the legacy uco and cocli layouts,
|
|
23
23
|
project-local and npm-global.
|
|
24
24
|
- Token env overrides route straight to the local token (no mode routing);
|
|
25
|
-
|
|
25
|
+
the cloud URL variable is gone; --url and the host variable keep working.
|
|
26
26
|
|
|
27
27
|
## [1.0.2] - 2026-09-15 — one menu tree, one name: Unity Copilot
|
|
28
28
|
|
|
@@ -32,9 +32,9 @@ detects the embedded layout and directs the user to run
|
|
|
32
32
|
- The leftover "AI Game Developer" menu tree (NuGet resolver items) is
|
|
33
33
|
merged into **Tools ▸ Unity Copilot**; the stray root-level
|
|
34
34
|
"Generate Tools Manifest" item moves under it too.
|
|
35
|
-
- Removed the dead **
|
|
36
|
-
`Commands/` folder (`
|
|
37
|
-
bridge speaks plain REST,
|
|
35
|
+
- Removed the dead **legacy inspector** menu item and the legacy
|
|
36
|
+
`Commands/` folder (`start_legacy_inspector.bat`, `copy_readme.bat`) — the
|
|
37
|
+
bridge speaks plain REST, with no endpoint of that kind to inspect.
|
|
38
38
|
- Team update kill-switch asset renamed to
|
|
39
39
|
`ProjectSettings/Copilot-UpdateSettings.asset` (the old
|
|
40
40
|
AI-Game-Developer-named file is no longer read; the toggle resets to
|
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
/*
|
|
2
|
-
+------------------------------------------------------------------+
|
|
3
|
-
| Author: Ivan Murzak (https://github.com/IvanMurzak) |
|
|
4
|
-
| Repository: GitHub (https://github.com/IvanMurzak/Unity-MCP) |
|
|
5
|
-
| Copyright (c) 2025 Ivan Murzak |
|
|
6
|
-
| Licensed under the Apache License, Version 2.0. |
|
|
7
|
-
| See the LICENSE file in the project root for more information. |
|
|
8
|
-
+------------------------------------------------------------------+
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
#nullable enable
|
|
12
|
-
|
|
13
|
-
namespace com.AtelierAI.Unity.Copilot.Editor.DependencyResolver
|
|
14
|
-
{
|
|
15
|
-
/// <summary>
|
|
16
|
-
/// Configuration for the NuGet dependency resolver.
|
|
17
|
-
/// Contains the list of required NuGet packages and path settings.
|
|
18
|
-
/// </summary>
|
|
19
|
-
static class NuGetConfig
|
|
20
|
-
{
|
|
21
|
-
/// <summary>Log tag shared across all DependencyResolver classes.</summary>
|
|
22
|
-
public const string LogTag = "[NuGet]";
|
|
23
|
-
|
|
24
|
-
/// <summary>
|
|
25
|
-
/// Scripting define added to all build target groups once the resolver
|
|
26
|
-
/// confirms the NuGet DLLs are in place. Main plugin asmdefs are gated
|
|
27
|
-
/// on this define so they only attempt to compile when the references
|
|
28
|
-
/// are guaranteed to resolve.
|
|
29
|
-
/// </summary>
|
|
30
|
-
public const string ReadyDefine = "UNITY_COPILOT_READY";
|
|
31
|
-
|
|
32
|
-
/// <summary>
|
|
33
|
-
/// NuGet v3 flat container base URL.
|
|
34
|
-
/// Download URL pattern: {base}/{id}/{version}/{id}.{version}.nupkg
|
|
35
|
-
/// </summary>
|
|
36
|
-
public const string NuGetBaseUrl = "https://api.nuget.org/v3-flatcontainer";
|
|
37
|
-
|
|
38
|
-
/// <summary>
|
|
39
|
-
/// Where extracted NuGet DLLs are installed (mutable location inside Unity's asset pipeline).
|
|
40
|
-
/// PluginImporter requires files to be under Assets/ to work.
|
|
41
|
-
/// </summary>
|
|
42
|
-
public const string InstallPath = "Assets/Plugins/NuGet";
|
|
43
|
-
|
|
44
|
-
/// <summary>
|
|
45
|
-
/// Where downloaded .nupkg files are cached.
|
|
46
|
-
/// Library/ survives domain reloads but is not tracked by git.
|
|
47
|
-
/// </summary>
|
|
48
|
-
public const string CachePath = "Library/NuGetCache";
|
|
49
|
-
|
|
50
|
-
/// <summary>
|
|
51
|
-
/// Top-level NuGet package dependencies.
|
|
52
|
-
/// Transitive dependencies are resolved automatically from .nuspec metadata.
|
|
53
|
-
///
|
|
54
|
-
/// includeInBuild: true = DLL included in game builds (runtime dependency)
|
|
55
|
-
/// includeInBuild: false = editor-only DLL (excluded from builds)
|
|
56
|
-
/// </summary>
|
|
57
|
-
public static readonly NuGetPackage[] Packages =
|
|
58
|
-
{
|
|
59
|
-
// --- Runtime dependencies (included in game builds) ---
|
|
60
|
-
// NOTE: com.AtelierAI.Uco.Framework and com.IvanMurzak.ReflectorNet are
|
|
61
|
-
// intentionally absent from this array. Those three DLLs (ReflectorNet.dll,
|
|
62
|
-
// Uco.Framework.dll, Uco.Framework.Common.dll) are now built from local source via
|
|
63
|
-
// commands/build-framework-dlls.ps1 and committed as static assets in
|
|
64
|
-
// Assets/Plugins/NuGet/. The resolver never fetches or cleans them because
|
|
65
|
-
// they are not in Packages[] nor in .nuget-installed.json.
|
|
66
|
-
// v8 pinned to match what Uco.Framework.dll (netstandard2.1) is compiled against.
|
|
67
|
-
// Higher versions cause MissingMethodException at runtime in Unity versions
|
|
68
|
-
// whose built-in BCL doesn't override our NuGet install (e.g. Unity 6.5).
|
|
69
|
-
new NuGetPackage("System.Text.Json", "8.0.5", includeInBuild: true),
|
|
70
|
-
new NuGetPackage("Microsoft.Extensions.Logging", "8.0.1", includeInBuild: true),
|
|
71
|
-
// Pinned to 8.0.3 to match the transitive requirement from
|
|
72
|
-
// Microsoft.AspNetCore.Http.Connections.Client 8.0.15 (pulled in via
|
|
73
|
-
// SignalR.Client 8.0.15 → SignalR.Client.Core 8.0.15). Any lower pin
|
|
74
|
-
// (e.g. 8.0.2) produces an infinite restore loop on every domain reload:
|
|
75
|
-
// higher-version-wins extracts 8.0.3 to disk while AllPackagesInstalled()
|
|
76
|
-
// keeps checking for the pinned dir, never finds it, and triggers Restore()
|
|
77
|
-
// again on the next reload. See Unity-
|
|
78
|
-
new NuGetPackage("Microsoft.Extensions.Logging.Abstractions", "8.0.3", includeInBuild: true),
|
|
79
|
-
new NuGetPackage("Microsoft.Extensions.DependencyInjection", "8.0.1", includeInBuild: true),
|
|
80
|
-
new NuGetPackage("Microsoft.Extensions.DependencyInjection.Abstractions", "8.0.2", includeInBuild: true),
|
|
81
|
-
new NuGetPackage("Microsoft.Extensions.Options", "8.0.2", includeInBuild: true),
|
|
82
|
-
new NuGetPackage("Microsoft.Extensions.Caching.Abstractions", "8.0.0", includeInBuild: true),
|
|
83
|
-
new NuGetPackage("Microsoft.Extensions.Hosting.Abstractions", "8.0.1", includeInBuild: true),
|
|
84
|
-
new NuGetPackage("R3", "1.3.0", includeInBuild: true),
|
|
85
|
-
|
|
86
|
-
// --- Editor-only dependencies (excluded from builds) ---
|
|
87
|
-
new NuGetPackage("Microsoft.Bcl.Memory", "10.0.3"),
|
|
88
|
-
// Pinned to 4.8.0 so transitive System.Collections.Immutable stays at 7.0.0
|
|
89
|
-
// (forward-compatible with Unity 6.6's built-in 8.0.0). Roslyn 4.14 requires
|
|
90
|
-
// SCI 9.0.0 which clashes with Unity's built-in.
|
|
91
|
-
new NuGetPackage("Microsoft.CodeAnalysis.CSharp", "4.8.0"),
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
/// <summary>
|
|
95
|
-
/// Package IDs to exclude from transitive dependency resolution. Matched
|
|
96
|
-
/// case-insensitively against the NuGet package ID (not the DLL filename).
|
|
97
|
-
///
|
|
98
|
-
/// When a package ID appears here:
|
|
99
|
-
/// - the resolver skips it (and its transitive deps) during Install()
|
|
100
|
-
/// - RemoveUnnecessaryPackages() deletes its install directory if present
|
|
101
|
-
/// - AllPackagesInstalled() forces a full restore while it's still on disk
|
|
102
|
-
///
|
|
103
|
-
/// Use this when a top-level package's nuspec pulls in a transitive dep that
|
|
104
|
-
/// is unused by your project's source AND whose own dependency chain conflicts
|
|
105
|
-
/// with your pinned versions (e.g., a netstandard2.0 package targeting a newer
|
|
106
|
-
/// BCL than Unity's runtime provides).
|
|
107
|
-
/// </summary>
|
|
108
|
-
public static readonly string[] SkipPackages = { };
|
|
109
|
-
|
|
110
|
-
/// <summary>
|
|
111
|
-
/// Target framework priority for selecting DLLs from .nupkg lib/ folders.
|
|
112
|
-
/// First match wins. Ordered by preference for Unity compatibility.
|
|
113
|
-
/// </summary>
|
|
114
|
-
public static readonly string[] TargetFrameworkPriority =
|
|
115
|
-
{
|
|
116
|
-
"netstandard2.1",
|
|
117
|
-
"netstandard2.0",
|
|
118
|
-
"net48",
|
|
119
|
-
"net472",
|
|
120
|
-
"net471",
|
|
121
|
-
"net47",
|
|
122
|
-
"net462",
|
|
123
|
-
"net461",
|
|
124
|
-
"net46",
|
|
125
|
-
"net45",
|
|
126
|
-
"netstandard1.3",
|
|
127
|
-
"netstandard1.1",
|
|
128
|
-
"netstandard1.0",
|
|
129
|
-
"", // fallback: root lib/ folder
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
+------------------------------------------------------------------+
|
|
3
|
+
| Author: Ivan Murzak (https://github.com/IvanMurzak) |
|
|
4
|
+
| Repository: GitHub (https://github.com/IvanMurzak/Unity-MCP) |
|
|
5
|
+
| Copyright (c) 2025 Ivan Murzak |
|
|
6
|
+
| Licensed under the Apache License, Version 2.0. |
|
|
7
|
+
| See the LICENSE file in the project root for more information. |
|
|
8
|
+
+------------------------------------------------------------------+
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
#nullable enable
|
|
12
|
+
|
|
13
|
+
namespace com.AtelierAI.Unity.Copilot.Editor.DependencyResolver
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
/// Configuration for the NuGet dependency resolver.
|
|
17
|
+
/// Contains the list of required NuGet packages and path settings.
|
|
18
|
+
/// </summary>
|
|
19
|
+
static class NuGetConfig
|
|
20
|
+
{
|
|
21
|
+
/// <summary>Log tag shared across all DependencyResolver classes.</summary>
|
|
22
|
+
public const string LogTag = "[NuGet]";
|
|
23
|
+
|
|
24
|
+
/// <summary>
|
|
25
|
+
/// Scripting define added to all build target groups once the resolver
|
|
26
|
+
/// confirms the NuGet DLLs are in place. Main plugin asmdefs are gated
|
|
27
|
+
/// on this define so they only attempt to compile when the references
|
|
28
|
+
/// are guaranteed to resolve.
|
|
29
|
+
/// </summary>
|
|
30
|
+
public const string ReadyDefine = "UNITY_COPILOT_READY";
|
|
31
|
+
|
|
32
|
+
/// <summary>
|
|
33
|
+
/// NuGet v3 flat container base URL.
|
|
34
|
+
/// Download URL pattern: {base}/{id}/{version}/{id}.{version}.nupkg
|
|
35
|
+
/// </summary>
|
|
36
|
+
public const string NuGetBaseUrl = "https://api.nuget.org/v3-flatcontainer";
|
|
37
|
+
|
|
38
|
+
/// <summary>
|
|
39
|
+
/// Where extracted NuGet DLLs are installed (mutable location inside Unity's asset pipeline).
|
|
40
|
+
/// PluginImporter requires files to be under Assets/ to work.
|
|
41
|
+
/// </summary>
|
|
42
|
+
public const string InstallPath = "Assets/Plugins/NuGet";
|
|
43
|
+
|
|
44
|
+
/// <summary>
|
|
45
|
+
/// Where downloaded .nupkg files are cached.
|
|
46
|
+
/// Library/ survives domain reloads but is not tracked by git.
|
|
47
|
+
/// </summary>
|
|
48
|
+
public const string CachePath = "Library/NuGetCache";
|
|
49
|
+
|
|
50
|
+
/// <summary>
|
|
51
|
+
/// Top-level NuGet package dependencies.
|
|
52
|
+
/// Transitive dependencies are resolved automatically from .nuspec metadata.
|
|
53
|
+
///
|
|
54
|
+
/// includeInBuild: true = DLL included in game builds (runtime dependency)
|
|
55
|
+
/// includeInBuild: false = editor-only DLL (excluded from builds)
|
|
56
|
+
/// </summary>
|
|
57
|
+
public static readonly NuGetPackage[] Packages =
|
|
58
|
+
{
|
|
59
|
+
// --- Runtime dependencies (included in game builds) ---
|
|
60
|
+
// NOTE: com.AtelierAI.Uco.Framework and com.IvanMurzak.ReflectorNet are
|
|
61
|
+
// intentionally absent from this array. Those three DLLs (ReflectorNet.dll,
|
|
62
|
+
// Uco.Framework.dll, Uco.Framework.Common.dll) are now built from local source via
|
|
63
|
+
// commands/build-framework-dlls.ps1 and committed as static assets in
|
|
64
|
+
// Assets/Plugins/NuGet/. The resolver never fetches or cleans them because
|
|
65
|
+
// they are not in Packages[] nor in .nuget-installed.json.
|
|
66
|
+
// v8 pinned to match what Uco.Framework.dll (netstandard2.1) is compiled against.
|
|
67
|
+
// Higher versions cause MissingMethodException at runtime in Unity versions
|
|
68
|
+
// whose built-in BCL doesn't override our NuGet install (e.g. Unity 6.5).
|
|
69
|
+
new NuGetPackage("System.Text.Json", "8.0.5", includeInBuild: true),
|
|
70
|
+
new NuGetPackage("Microsoft.Extensions.Logging", "8.0.1", includeInBuild: true),
|
|
71
|
+
// Pinned to 8.0.3 to match the transitive requirement from
|
|
72
|
+
// Microsoft.AspNetCore.Http.Connections.Client 8.0.15 (pulled in via
|
|
73
|
+
// SignalR.Client 8.0.15 → SignalR.Client.Core 8.0.15). Any lower pin
|
|
74
|
+
// (e.g. 8.0.2) produces an infinite restore loop on every domain reload:
|
|
75
|
+
// higher-version-wins extracts 8.0.3 to disk while AllPackagesInstalled()
|
|
76
|
+
// keeps checking for the pinned dir, never finds it, and triggers Restore()
|
|
77
|
+
// again on the next reload. See Unity-Uco#677.
|
|
78
|
+
new NuGetPackage("Microsoft.Extensions.Logging.Abstractions", "8.0.3", includeInBuild: true),
|
|
79
|
+
new NuGetPackage("Microsoft.Extensions.DependencyInjection", "8.0.1", includeInBuild: true),
|
|
80
|
+
new NuGetPackage("Microsoft.Extensions.DependencyInjection.Abstractions", "8.0.2", includeInBuild: true),
|
|
81
|
+
new NuGetPackage("Microsoft.Extensions.Options", "8.0.2", includeInBuild: true),
|
|
82
|
+
new NuGetPackage("Microsoft.Extensions.Caching.Abstractions", "8.0.0", includeInBuild: true),
|
|
83
|
+
new NuGetPackage("Microsoft.Extensions.Hosting.Abstractions", "8.0.1", includeInBuild: true),
|
|
84
|
+
new NuGetPackage("R3", "1.3.0", includeInBuild: true),
|
|
85
|
+
|
|
86
|
+
// --- Editor-only dependencies (excluded from builds) ---
|
|
87
|
+
new NuGetPackage("Microsoft.Bcl.Memory", "10.0.3"),
|
|
88
|
+
// Pinned to 4.8.0 so transitive System.Collections.Immutable stays at 7.0.0
|
|
89
|
+
// (forward-compatible with Unity 6.6's built-in 8.0.0). Roslyn 4.14 requires
|
|
90
|
+
// SCI 9.0.0 which clashes with Unity's built-in.
|
|
91
|
+
new NuGetPackage("Microsoft.CodeAnalysis.CSharp", "4.8.0"),
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/// <summary>
|
|
95
|
+
/// Package IDs to exclude from transitive dependency resolution. Matched
|
|
96
|
+
/// case-insensitively against the NuGet package ID (not the DLL filename).
|
|
97
|
+
///
|
|
98
|
+
/// When a package ID appears here:
|
|
99
|
+
/// - the resolver skips it (and its transitive deps) during Install()
|
|
100
|
+
/// - RemoveUnnecessaryPackages() deletes its install directory if present
|
|
101
|
+
/// - AllPackagesInstalled() forces a full restore while it's still on disk
|
|
102
|
+
///
|
|
103
|
+
/// Use this when a top-level package's nuspec pulls in a transitive dep that
|
|
104
|
+
/// is unused by your project's source AND whose own dependency chain conflicts
|
|
105
|
+
/// with your pinned versions (e.g., a netstandard2.0 package targeting a newer
|
|
106
|
+
/// BCL than Unity's runtime provides).
|
|
107
|
+
/// </summary>
|
|
108
|
+
public static readonly string[] SkipPackages = { };
|
|
109
|
+
|
|
110
|
+
/// <summary>
|
|
111
|
+
/// Target framework priority for selecting DLLs from .nupkg lib/ folders.
|
|
112
|
+
/// First match wins. Ordered by preference for Unity compatibility.
|
|
113
|
+
/// </summary>
|
|
114
|
+
public static readonly string[] TargetFrameworkPriority =
|
|
115
|
+
{
|
|
116
|
+
"netstandard2.1",
|
|
117
|
+
"netstandard2.0",
|
|
118
|
+
"net48",
|
|
119
|
+
"net472",
|
|
120
|
+
"net471",
|
|
121
|
+
"net47",
|
|
122
|
+
"net462",
|
|
123
|
+
"net461",
|
|
124
|
+
"net46",
|
|
125
|
+
"net45",
|
|
126
|
+
"netstandard1.3",
|
|
127
|
+
"netstandard1.1",
|
|
128
|
+
"netstandard1.0",
|
|
129
|
+
"", // fallback: root lib/ folder
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
}
|