@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.
Files changed (107) hide show
  1. package/CHANGELOG.md +29 -8
  2. package/package.json +2 -2
  3. package/vendor/plugin/com.atelierai.unity.copilot/CHANGELOG.md +4 -4
  4. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetConfig.cs +132 -132
  5. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDependencyResolver.cs +237 -237
  6. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDownloader.cs +82 -82
  7. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/MenuItems.cs +247 -247
  8. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/ToolGroups.cs +153 -153
  9. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/SystemTool/Skills.Create.SkillBody.cs +155 -155
  10. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Console.GetLogs.cs +95 -95
  11. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Docs.HttpFetcher.cs +139 -139
  12. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Instance.ListAll.cs +72 -72
  13. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/PathReadHelper.cs +106 -106
  14. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Script.Validate.cs +252 -252
  15. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests/TestResultCollector.cs +537 -537
  16. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests.cs +400 -400
  17. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/ToolGroups.SetEnabled.cs +92 -92
  18. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Branding/ProductInfo.cs +62 -62
  19. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +887 -1034
  20. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Skills/Skill_InitialSetup.cs +197 -197
  21. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.Editor.cs +201 -201
  22. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.cs +67 -67
  23. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotListWindowBase.cs +393 -393
  24. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotWindowBase.cs +113 -113
  25. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.Connection.cs +3 -3
  26. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotFeatures.cs +195 -195
  27. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +22 -22
  28. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CreateGUI.cs +354 -354
  29. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.cs +78 -78
  30. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowInitializer.cs +47 -47
  31. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/SerializationCheckWindow.cs +190 -190
  32. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Build.cs +91 -91
  33. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Config.cs +298 -298
  34. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Static.cs +296 -296
  35. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.cs +69 -69
  36. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PackageUtils.cs +168 -168
  37. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PrefsKeyMigration.cs +119 -119
  38. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/SafeDefaultsGuard.cs +180 -180
  39. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ScriptUtils.cs +229 -229
  40. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolGroupRegistry.cs +461 -460
  41. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolsManifestGenerator.cs +200 -200
  42. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringAdapters.cs +1467 -1467
  43. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringSafetyReloadGuard.cs +65 -65
  44. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityCopilotUpdateProjectSettings.cs +66 -66
  45. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotPromptsWindow.uss +11 -11
  46. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotResourcesWindow.uss +16 -16
  47. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/CopilotToolsWindow.uss +36 -36
  48. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/MainWindow.uss +183 -183
  49. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/{_mcp-list-window.uss → _copilot-list-window.uss} +18 -18
  50. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/_list-view.uss +77 -77
  51. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotPromptsWindow.uxml +18 -18
  52. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotResourcesWindow.uxml +18 -18
  53. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/CopilotToolsWindow.uxml +18 -18
  54. package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uxml/MainWindow.uxml +115 -115
  55. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
  56. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
  57. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
  58. package/vendor/plugin/com.atelierai.unity.copilot/README.md +88 -88
  59. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Converter/Json/Structures/EntityIdConverter.cs +120 -120
  60. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.cs +110 -110
  61. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.pre-Unity.6.5.cs +110 -110
  62. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/FileLogStorage.cs +547 -547
  63. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Build.cs +243 -243
  64. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +3 -3
  65. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +295 -295
  66. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginBuilder.cs +105 -105
  67. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.Static.cs +155 -155
  68. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.cs +59 -59
  69. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +11 -11
  70. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/AtomicApiTestFixtures.cs +99 -99
  71. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/TryModifyAtTests.cs +227 -227
  72. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AuthoringSafetyPilotTests.cs +1050 -1050
  73. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetExtractorDevelopmentDependencyTests.cs +148 -148
  74. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetExtractorFlatLayoutTests.cs +166 -166
  75. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetInstallManifestTests.cs +436 -436
  76. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetLegacyMigrationTests.cs +304 -304
  77. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetPackageInstallerStaleVersionCleanupTests.cs +200 -200
  78. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +2 -2
  79. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/BlacklistTypeTests.cs +416 -416
  80. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.cs +172 -172
  81. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.pre-Unity.6.5.cs +169 -169
  82. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.cs +182 -182
  83. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.pre-Unity.6.5.cs +179 -179
  84. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.cs +175 -175
  85. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.pre-Unity.6.5.cs +174 -174
  86. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.cs +171 -171
  87. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.pre-Unity.6.5.cs +170 -170
  88. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsCreateFolderTests.cs +243 -243
  89. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsMaterialTests.cs +101 -101
  90. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.cs +348 -348
  91. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.pre-Unity.6.5.cs +348 -348
  92. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsShaderTests.cs +194 -194
  93. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/GameObject/TestJsonSchema.cs +199 -199
  94. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.cs +573 -573
  95. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.pre-Unity.6.5.cs +513 -513
  96. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.cs +154 -154
  97. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.pre-Unity.6.5.cs +154 -154
  98. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotGameViewTests.cs +164 -164
  99. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotSceneViewTests.cs +155 -155
  100. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolParameterTests.cs +56 -56
  101. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.cs +651 -651
  102. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.pre-Unity.6.5.cs +651 -651
  103. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ToolBatchExecutionIntegrationTests.cs +407 -407
  104. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs → UcoPluginTests.cs} +105 -105
  105. package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
  106. /package/vendor/plugin/com.atelierai.unity.copilot/Editor/UI/uss/common/{_mcp-list-window.uss.meta → _copilot-list-window.uss.meta} +0 -0
  107. /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 (`.mcp.json`,
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. `uco setup-mcp` and `uco login` are gone.
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 MCP configs (`.mcp.json` and friends) written by `uco setup-mcp` /
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 MCP configs
47
- (`.mcp.json`) use `127.0.0.1` as well.
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" (was "Node MCP Server"); help
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
- "Unity-MCP server"; the uco-setup recovery skill now documents how to
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 MCP Inspector
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.7",
4
- "description": "uco — Unity Copilot CLI. Drive Unity Editor (and runtime game builds) from any AI agent via plain HTTP. No MCP protocol on the wire.",
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
- UNITY_MCP_CLOUD_URL is gone, --url/UNITY_MCP_HOST keep working.
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 **Launch MCP Inspector** item and the legacy
36
- `Commands/` folder (`start_mcp_inspector.bat`, `copy_readme.bat`) — the
37
- bridge speaks plain REST, there is no MCP endpoint to inspect.
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-MCP#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
- }
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
+ }