@atelierai/uco 1.0.6 → 1.0.8
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 +32 -0
- package/README.md +7 -8
- package/bin/server.mjs +1 -1
- package/bin/stub-plugin.mjs +3 -3
- package/dist/codegen/coerce.js +1 -1
- package/dist/codegen/coerce.js.map +1 -1
- package/dist/codegen/emit.js +2 -2
- package/dist/codegen/emit.js.map +1 -1
- package/dist/codegen/refs.js +1 -1
- package/dist/codegen/refs.js.map +1 -1
- package/dist/codegen/types.js +1 -1
- package/dist/codegen/types.js.map +1 -1
- package/dist/commands/call.js +1 -1
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/devops/configure.js +1 -1
- package/dist/commands/devops/configure.js.map +1 -1
- package/dist/commands/devops/index.js +0 -4
- package/dist/commands/devops/index.js.map +1 -1
- package/dist/commands/devops/install-plugin.js +1 -1
- package/dist/commands/devops/install-plugin.js.map +1 -1
- package/dist/commands/devops/open.js +7 -7
- package/dist/commands/devops/open.js.map +1 -1
- package/dist/commands/devops/status.js +3 -3
- package/dist/commands/devops/status.js.map +1 -1
- package/dist/commands/exec.js +1 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/install.js +2 -2
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/prompt.js +2 -2
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/resource.js +2 -2
- package/dist/commands/resource.js.map +1 -1
- package/dist/commands/update.js +1 -26
- package/dist/commands/update.js.map +1 -1
- package/dist/config/port.js +2 -2
- package/dist/config/port.js.map +1 -1
- package/dist/config/resolve.d.ts +1 -2
- package/dist/config/resolve.js +0 -12
- package/dist/config/resolve.js.map +1 -1
- package/dist/devops/lib/configure.d.ts +1 -1
- package/dist/devops/lib/configure.js +2 -2
- package/dist/devops/lib/configure.js.map +1 -1
- package/dist/devops/lib/install-plugin.d.ts +1 -1
- package/dist/devops/lib/install-plugin.js +1 -1
- package/dist/devops/lib/install-plugin.js.map +1 -1
- package/dist/devops/lib/install.d.ts +2 -2
- package/dist/devops/lib/install.js +5 -5
- package/dist/devops/lib/install.js.map +1 -1
- package/dist/devops/lib/open.js +11 -32
- package/dist/devops/lib/open.js.map +1 -1
- package/dist/devops/lib/remove-plugin.d.ts +1 -1
- package/dist/devops/lib/remove-plugin.js +3 -3
- package/dist/devops/lib/remove-plugin.js.map +1 -1
- package/dist/devops/lib/run-tool.d.ts +2 -2
- package/dist/devops/lib/run-tool.js +2 -2
- package/dist/devops/lib/types.d.ts +17 -54
- package/dist/devops/lib/types.js +2 -2
- package/dist/devops/lib/types.js.map +1 -1
- package/dist/devops/lib/update.d.ts +0 -15
- package/dist/devops/lib/update.js +2 -91
- package/dist/devops/lib/update.js.map +1 -1
- package/dist/devops/utils/agents.d.ts +0 -28
- package/dist/devops/utils/agents.js +0 -462
- package/dist/devops/utils/agents.js.map +1 -1
- package/dist/devops/utils/config.d.ts +9 -18
- package/dist/devops/utils/config.js +7 -20
- package/dist/devops/utils/config.js.map +1 -1
- package/dist/devops/utils/editor-cache.js +1 -1
- package/dist/devops/utils/editor-cache.js.map +1 -1
- package/dist/devops/utils/launch-error-dismiss.d.ts +2 -2
- package/dist/devops/utils/launch-error-dismiss.js +5 -5
- package/dist/devops/utils/manifest.d.ts +2 -2
- package/dist/devops/utils/manifest.js +3 -3
- package/dist/devops/utils/manifest.js.map +1 -1
- package/dist/devops/utils/port.d.ts +1 -1
- package/dist/devops/utils/port.js +1 -1
- package/dist/devops/utils/probe.d.ts +1 -1
- package/dist/devops/utils/probe.js +1 -1
- package/dist/devops/utils/ui.js +2 -2
- package/dist/devops/utils/ui.js.map +1 -1
- package/dist/devops/utils/unity-editor.js +4 -4
- package/dist/devops/utils/unity-editor.js.map +1 -1
- package/dist/devops/utils/unity-hub.js +1 -1
- package/dist/devops/utils/unity-hub.js.map +1 -1
- package/dist/devops/utils/unity-shutdown.d.ts +1 -1
- package/dist/devops/utils/unity-shutdown.js +1 -1
- package/dist/devops/utils/update-check.js +3 -3
- package/dist/devops/utils/update-check.js.map +1 -1
- package/dist/devops/utils/vendor.d.ts +2 -2
- package/dist/devops/utils/vendor.js +4 -4
- package/dist/devops/utils/vendor.js.map +1 -1
- package/dist/generated/tools.js +1 -1
- package/dist/generated/tools.js.map +1 -1
- package/dist/program.js +3 -3
- package/dist/program.js.map +1 -1
- package/dist/server/app.d.ts +5 -5
- package/dist/server/app.js +3 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/rest/auth.d.ts +1 -1
- package/dist/server/rest/auth.js +3 -3
- package/dist/server/rest/auth.js.map +1 -1
- package/dist/server/rest/context.d.ts +2 -2
- package/dist/server/rest/forward.d.ts +2 -2
- package/dist/server/session/store.d.ts +3 -3
- package/dist/server/session/store.js +4 -4
- package/dist/server/session/store.js.map +1 -1
- package/dist/server/stub-client/scenarios.js +8 -8
- package/dist/server/stub-client/scenarios.js.map +1 -1
- package/dist/server/types.d.ts +11 -11
- package/dist/server/types.js +9 -9
- package/dist/server/types.js.map +1 -1
- package/dist/server/ws/hub.d.ts +8 -8
- package/dist/server/ws/hub.js +13 -13
- package/dist/server/ws/hub.js.map +1 -1
- package/dist/server/ws/rpc.d.ts +3 -3
- package/dist/server/ws/rpc.js +4 -4
- package/dist/server/ws/rpc.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +3 -3
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/rest.js +1 -1
- package/dist/transport/rest.js.map +1 -1
- package/docs/INSTALL.zh-CN.md +2 -3
- package/package.json +1 -1
- package/skills/uco-setup/SKILL.md +1 -1
- package/skills/unity-editor/references/diagnostics.md +24 -24
- 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/Branding/ProductInfo.cs +62 -62
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +1034 -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/Components/ExtensionPanel.cs +379 -379
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/MenuItems.cs +72 -72
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/UnityCopilotProjectSettingsProvider.cs +64 -64
- 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 +372 -372
- 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/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/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/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 +175 -175
- 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 +368 -368
- 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/NuGetLegacyMigrationTests.cs +304 -304
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +4 -4
- 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/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/dist/commands/devops/login.d.ts +0 -2
- package/dist/commands/devops/login.js +0 -29
- package/dist/commands/devops/login.js.map +0 -1
- package/dist/commands/devops/setup-mcp.d.ts +0 -2
- package/dist/commands/devops/setup-mcp.js +0 -41
- package/dist/commands/devops/setup-mcp.js.map +0 -1
- package/dist/devops/commands-upstream/bootstrap-local.d.ts +0 -17
- package/dist/devops/commands-upstream/bootstrap-local.js +0 -87
- package/dist/devops/commands-upstream/bootstrap-local.js.map +0 -1
- package/dist/devops/commands-upstream/close.d.ts +0 -57
- package/dist/devops/commands-upstream/close.js +0 -188
- package/dist/devops/commands-upstream/close.js.map +0 -1
- package/dist/devops/commands-upstream/configure.d.ts +0 -2
- package/dist/devops/commands-upstream/configure.js +0 -87
- package/dist/devops/commands-upstream/configure.js.map +0 -1
- package/dist/devops/commands-upstream/create-project.d.ts +0 -2
- package/dist/devops/commands-upstream/create-project.js +0 -43
- package/dist/devops/commands-upstream/create-project.js.map +0 -1
- package/dist/devops/commands-upstream/install-plugin.d.ts +0 -2
- package/dist/devops/commands-upstream/install-plugin.js +0 -64
- package/dist/devops/commands-upstream/install-plugin.js.map +0 -1
- package/dist/devops/commands-upstream/install-unity.d.ts +0 -2
- package/dist/devops/commands-upstream/install-unity.js +0 -72
- package/dist/devops/commands-upstream/install-unity.js.map +0 -1
- package/dist/devops/commands-upstream/login.d.ts +0 -2
- package/dist/devops/commands-upstream/login.js +0 -33
- package/dist/devops/commands-upstream/login.js.map +0 -1
- package/dist/devops/commands-upstream/open.d.ts +0 -32
- package/dist/devops/commands-upstream/open.js +0 -282
- package/dist/devops/commands-upstream/open.js.map +0 -1
- package/dist/devops/commands-upstream/remove-plugin.d.ts +0 -2
- package/dist/devops/commands-upstream/remove-plugin.js +0 -41
- package/dist/devops/commands-upstream/remove-plugin.js.map +0 -1
- package/dist/devops/commands-upstream/run-system-tool.d.ts +0 -1
- package/dist/devops/commands-upstream/run-system-tool.js +0 -13
- package/dist/devops/commands-upstream/run-system-tool.js.map +0 -1
- package/dist/devops/commands-upstream/run-tool-builder.d.ts +0 -25
- package/dist/devops/commands-upstream/run-tool-builder.js +0 -125
- package/dist/devops/commands-upstream/run-tool-builder.js.map +0 -1
- package/dist/devops/commands-upstream/run-tool.d.ts +0 -1
- package/dist/devops/commands-upstream/run-tool.js +0 -13
- package/dist/devops/commands-upstream/run-tool.js.map +0 -1
- package/dist/devops/commands-upstream/setup-mcp.d.ts +0 -2
- package/dist/devops/commands-upstream/setup-mcp.js +0 -68
- package/dist/devops/commands-upstream/setup-mcp.js.map +0 -1
- package/dist/devops/commands-upstream/setup-skills.d.ts +0 -2
- package/dist/devops/commands-upstream/setup-skills.js +0 -167
- package/dist/devops/commands-upstream/setup-skills.js.map +0 -1
- package/dist/devops/commands-upstream/status.d.ts +0 -2
- package/dist/devops/commands-upstream/status.js +0 -87
- package/dist/devops/commands-upstream/status.js.map +0 -1
- package/dist/devops/commands-upstream/update.d.ts +0 -2
- package/dist/devops/commands-upstream/update.js +0 -77
- package/dist/devops/commands-upstream/update.js.map +0 -1
- package/dist/devops/commands-upstream/wait-for-ready.d.ts +0 -2
- package/dist/devops/commands-upstream/wait-for-ready.js +0 -93
- package/dist/devops/commands-upstream/wait-for-ready.js.map +0 -1
- package/dist/devops/lib/setup-mcp.d.ts +0 -35
- package/dist/devops/lib/setup-mcp.js +0 -177
- package/dist/devops/lib/setup-mcp.js.map +0 -1
- package/dist/devops/utils/cloud-login.d.ts +0 -7
- package/dist/devops/utils/cloud-login.js +0 -56
- package/dist/devops/utils/cloud-login.js.map +0 -1
- /package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs.meta → UcoPluginTests.cs.meta} +0 -0
|
@@ -1,105 +1,105 @@
|
|
|
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
|
-
using com.AtelierAI.Uco.Framework;
|
|
13
|
-
using com.IvanMurzak.ReflectorNet.Utils;
|
|
14
|
-
using Microsoft.Extensions.Logging;
|
|
15
|
-
|
|
16
|
-
namespace com.AtelierAI.Unity.Copilot
|
|
17
|
-
{
|
|
18
|
-
using MicrosoftLogLevel = Microsoft.Extensions.Logging.LogLevel;
|
|
19
|
-
|
|
20
|
-
/// <summary>
|
|
21
|
-
/// Builder for configuring a runtime <see cref="UnityCopilotPluginRuntime"/> from C# code.
|
|
22
|
-
/// Intended for game builds where no JSON config file is available.
|
|
23
|
-
/// Obtain an instance via <see cref="UnityCopilotPluginRuntime.Initialize()"/>.
|
|
24
|
-
/// <example>
|
|
25
|
-
/// <code>
|
|
26
|
-
/// [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
27
|
-
/// static void
|
|
28
|
-
/// {
|
|
29
|
-
/// UnityCopilotPluginRuntime.Initialize(builder =>
|
|
30
|
-
/// {
|
|
31
|
-
/// builder.WithConfig(c =>
|
|
32
|
-
/// {
|
|
33
|
-
/// c.Host = "http://localhost:8080";
|
|
34
|
-
/// c.Token = "my-token";
|
|
35
|
-
/// });
|
|
36
|
-
/// })
|
|
37
|
-
/// .Build();
|
|
38
|
-
/// }
|
|
39
|
-
/// </code>
|
|
40
|
-
/// </example>
|
|
41
|
-
/// </summary>
|
|
42
|
-
public sealed class UnityCopilotPluginBuilder
|
|
43
|
-
{
|
|
44
|
-
/// <summary>
|
|
45
|
-
/// The underlying <see cref="UcoBuilder"/> pre-configured with Unity
|
|
46
|
-
/// defaults (logging, standard ignored assemblies, assembly scanning).
|
|
47
|
-
/// Use this to configure host, token, additional ignored assemblies, custom
|
|
48
|
-
/// tools/prompts/resources, and anything else supported by the
|
|
49
|
-
/// </summary>
|
|
50
|
-
public
|
|
51
|
-
|
|
52
|
-
private readonly UnityCopilotPluginRuntime _runtimePlugin;
|
|
53
|
-
private readonly ILogger? _logger;
|
|
54
|
-
|
|
55
|
-
internal UnityCopilotPluginBuilder(
|
|
56
|
-
{
|
|
57
|
-
Builder =
|
|
58
|
-
_runtimePlugin = runtimePlugin;
|
|
59
|
-
_logger = loggerProvider?.CreateLogger(nameof(UnityCopilotPluginBuilder));
|
|
60
|
-
|
|
61
|
-
// Apply Unity-specific defaults — the developer does not need to repeat these.
|
|
62
|
-
Builder
|
|
63
|
-
.AddLogging(lb =>
|
|
64
|
-
{
|
|
65
|
-
lb.ClearProviders();
|
|
66
|
-
lb.SetMinimumLevel(MicrosoftLogLevel.Trace);
|
|
67
|
-
if (loggerProvider != null)
|
|
68
|
-
lb.AddProvider(loggerProvider);
|
|
69
|
-
})
|
|
70
|
-
.IgnoreAssemblies(
|
|
71
|
-
"mscorlib",
|
|
72
|
-
"Mono.Security",
|
|
73
|
-
"netstandard",
|
|
74
|
-
"nunit.framework",
|
|
75
|
-
"System",
|
|
76
|
-
"UnityEngine",
|
|
77
|
-
"UnityEditor",
|
|
78
|
-
"Unity.",
|
|
79
|
-
"Microsoft",
|
|
80
|
-
"R3",
|
|
81
|
-
"UcoFramework",
|
|
82
|
-
"ReflectorNet",
|
|
83
|
-
"com.AtelierAI.Unity.Copilot.TestFiles",
|
|
84
|
-
"com.AtelierAI.Unity.Copilot.Editor.Tests",
|
|
85
|
-
"com.AtelierAI.Unity.Copilot.Tests");
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/// <summary>
|
|
89
|
-
/// Builds and connects a runtime <see cref="UnityCopilotPluginRuntime"/> instance alongside the
|
|
90
|
-
/// Editor's existing connection. The Editor's connection is not affected.
|
|
91
|
-
/// Call <see cref="UnityCopilotPluginRuntime.DisposeInstance()"/>
|
|
92
|
-
/// to shut it down, or exit Play mode (handled automatically).
|
|
93
|
-
/// </summary>
|
|
94
|
-
public UnityCopilotPluginRuntime Build()
|
|
95
|
-
{
|
|
96
|
-
_logger?.LogTrace("{method} called.", nameof(Build));
|
|
97
|
-
|
|
98
|
-
_logger?.LogDebug("{method}: Building runtime
|
|
99
|
-
var built = _runtimePlugin.BuildFromBuilder(Builder);
|
|
100
|
-
|
|
101
|
-
_logger?.LogTrace("{method} completed.", nameof(Build));
|
|
102
|
-
return _runtimePlugin;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
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
|
+
using com.AtelierAI.Uco.Framework;
|
|
13
|
+
using com.IvanMurzak.ReflectorNet.Utils;
|
|
14
|
+
using Microsoft.Extensions.Logging;
|
|
15
|
+
|
|
16
|
+
namespace com.AtelierAI.Unity.Copilot
|
|
17
|
+
{
|
|
18
|
+
using MicrosoftLogLevel = Microsoft.Extensions.Logging.LogLevel;
|
|
19
|
+
|
|
20
|
+
/// <summary>
|
|
21
|
+
/// Builder for configuring a runtime <see cref="UnityCopilotPluginRuntime"/> from C# code.
|
|
22
|
+
/// Intended for game builds where no JSON config file is available.
|
|
23
|
+
/// Obtain an instance via <see cref="UnityCopilotPluginRuntime.Initialize()"/>.
|
|
24
|
+
/// <example>
|
|
25
|
+
/// <code>
|
|
26
|
+
/// [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
27
|
+
/// static void SetupPlugin()
|
|
28
|
+
/// {
|
|
29
|
+
/// UnityCopilotPluginRuntime.Initialize(builder =>
|
|
30
|
+
/// {
|
|
31
|
+
/// builder.WithConfig(c =>
|
|
32
|
+
/// {
|
|
33
|
+
/// c.Host = "http://localhost:8080";
|
|
34
|
+
/// c.Token = "my-token";
|
|
35
|
+
/// });
|
|
36
|
+
/// })
|
|
37
|
+
/// .Build();
|
|
38
|
+
/// }
|
|
39
|
+
/// </code>
|
|
40
|
+
/// </example>
|
|
41
|
+
/// </summary>
|
|
42
|
+
public sealed class UnityCopilotPluginBuilder
|
|
43
|
+
{
|
|
44
|
+
/// <summary>
|
|
45
|
+
/// The underlying <see cref="UcoBuilder"/> pre-configured with Unity
|
|
46
|
+
/// defaults (logging, standard ignored assemblies, assembly scanning).
|
|
47
|
+
/// Use this to configure host, token, additional ignored assemblies, custom
|
|
48
|
+
/// tools/prompts/resources, and anything else supported by the Uco plugin.
|
|
49
|
+
/// </summary>
|
|
50
|
+
public IUcoPluginBuilder Builder { get; }
|
|
51
|
+
|
|
52
|
+
private readonly UnityCopilotPluginRuntime _runtimePlugin;
|
|
53
|
+
private readonly ILogger? _logger;
|
|
54
|
+
|
|
55
|
+
internal UnityCopilotPluginBuilder(IUcoPluginBuilder ucoBuilder, UnityCopilotPluginRuntime runtimePlugin, ILoggerProvider? loggerProvider = null)
|
|
56
|
+
{
|
|
57
|
+
Builder = ucoBuilder;
|
|
58
|
+
_runtimePlugin = runtimePlugin;
|
|
59
|
+
_logger = loggerProvider?.CreateLogger(nameof(UnityCopilotPluginBuilder));
|
|
60
|
+
|
|
61
|
+
// Apply Unity-specific defaults — the developer does not need to repeat these.
|
|
62
|
+
Builder
|
|
63
|
+
.AddLogging(lb =>
|
|
64
|
+
{
|
|
65
|
+
lb.ClearProviders();
|
|
66
|
+
lb.SetMinimumLevel(MicrosoftLogLevel.Trace);
|
|
67
|
+
if (loggerProvider != null)
|
|
68
|
+
lb.AddProvider(loggerProvider);
|
|
69
|
+
})
|
|
70
|
+
.IgnoreAssemblies(
|
|
71
|
+
"mscorlib",
|
|
72
|
+
"Mono.Security",
|
|
73
|
+
"netstandard",
|
|
74
|
+
"nunit.framework",
|
|
75
|
+
"System",
|
|
76
|
+
"UnityEngine",
|
|
77
|
+
"UnityEditor",
|
|
78
|
+
"Unity.",
|
|
79
|
+
"Microsoft",
|
|
80
|
+
"R3",
|
|
81
|
+
"UcoFramework",
|
|
82
|
+
"ReflectorNet",
|
|
83
|
+
"com.AtelierAI.Unity.Copilot.TestFiles",
|
|
84
|
+
"com.AtelierAI.Unity.Copilot.Editor.Tests",
|
|
85
|
+
"com.AtelierAI.Unity.Copilot.Tests");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// <summary>
|
|
89
|
+
/// Builds and connects a runtime <see cref="UnityCopilotPluginRuntime"/> instance alongside the
|
|
90
|
+
/// Editor's existing connection. The Editor's connection is not affected.
|
|
91
|
+
/// Call <see cref="UnityCopilotPluginRuntime.DisposeInstance()"/>
|
|
92
|
+
/// to shut it down, or exit Play mode (handled automatically).
|
|
93
|
+
/// </summary>
|
|
94
|
+
public UnityCopilotPluginRuntime Build()
|
|
95
|
+
{
|
|
96
|
+
_logger?.LogTrace("{method} called.", nameof(Build));
|
|
97
|
+
|
|
98
|
+
_logger?.LogDebug("{method}: Building runtime Uco Plugin from builder...", nameof(Build));
|
|
99
|
+
var built = _runtimePlugin.BuildFromBuilder(Builder);
|
|
100
|
+
|
|
101
|
+
_logger?.LogTrace("{method} completed.", nameof(Build));
|
|
102
|
+
return _runtimePlugin;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.Static.cs
CHANGED
|
@@ -1,155 +1,155 @@
|
|
|
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
|
-
using System;
|
|
13
|
-
using com.AtelierAI.Uco.Framework;
|
|
14
|
-
using com.AtelierAI.Unity.Copilot.Utils;
|
|
15
|
-
using Microsoft.Extensions.Logging;
|
|
16
|
-
using R3;
|
|
17
|
-
|
|
18
|
-
namespace com.AtelierAI.Unity.Copilot
|
|
19
|
-
{
|
|
20
|
-
using ILogger = Microsoft.Extensions.Logging.ILogger;
|
|
21
|
-
using LogLevel = Runtime.Utils.LogLevel;
|
|
22
|
-
|
|
23
|
-
public partial class UnityCopilotPluginRuntime
|
|
24
|
-
{
|
|
25
|
-
static readonly Subject<UnityConnectionConfig> _onConfigChanged = new Subject<UnityConnectionConfig>();
|
|
26
|
-
static readonly ILogger _logger = UnityLoggerFactory.LoggerFactory.CreateLogger<UnityCopilotPluginRuntime>();
|
|
27
|
-
static readonly object _instanceMutex = new();
|
|
28
|
-
|
|
29
|
-
static UnityCopilotPluginRuntime _instance = null!;
|
|
30
|
-
|
|
31
|
-
public static bool HasInstance
|
|
32
|
-
{
|
|
33
|
-
get { lock (_instanceMutex) { return _instance != null; } }
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public static UnityCopilotPluginRuntime Instance
|
|
37
|
-
{
|
|
38
|
-
get { lock (_instanceMutex) { return _instance; } }
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
static void InitSingletonIfNeeded()
|
|
42
|
-
{
|
|
43
|
-
lock (_instanceMutex)
|
|
44
|
-
{
|
|
45
|
-
if (_instance == null)
|
|
46
|
-
_instance = new UnityCopilotPluginRuntime();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
public static bool KeepConnected
|
|
52
|
-
{
|
|
53
|
-
get => Instance.unityConnectionConfig.KeepConnected;
|
|
54
|
-
set
|
|
55
|
-
{
|
|
56
|
-
Instance.unityConnectionConfig.KeepConnected = value;
|
|
57
|
-
NotifyChanged(Instance.unityConnectionConfig);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
public static LogLevel LogLevel
|
|
61
|
-
{
|
|
62
|
-
get => _instance.unityConnectionConfig.LogLevel;
|
|
63
|
-
set
|
|
64
|
-
{
|
|
65
|
-
_instance.unityConnectionConfig.LogLevel = value;
|
|
66
|
-
ApplyLogLevel(value);
|
|
67
|
-
NotifyChanged(Instance.unityConnectionConfig);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/// <summary>
|
|
72
|
-
/// Disposes the runtime plugin instance created by <see cref="Initialize"/>.
|
|
73
|
-
/// Safe to call multiple times; no-op if already disposed.
|
|
74
|
-
/// </summary>
|
|
75
|
-
public static void DisposeInstance()
|
|
76
|
-
{
|
|
77
|
-
lock (_instanceMutex)
|
|
78
|
-
{
|
|
79
|
-
_instance?._plugin.Dispose();
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/// <summary>
|
|
84
|
-
/// Creates a <see cref="UnityCopilotPluginBuilder"/> pre-configured with Unity
|
|
85
|
-
/// defaults. Use <see cref="UnityCopilotPluginBuilder.Builder"/> to configure
|
|
86
|
-
/// host, token, ignored assemblies, custom tools, etc., then call
|
|
87
|
-
/// <see cref="UnityCopilotPluginBuilder.Build"/> to apply and connect.
|
|
88
|
-
/// <para>
|
|
89
|
-
/// Intended for game builds where no JSON config file is available.
|
|
90
|
-
/// In Unity Editor (Edit and Play mode), the editor plugin is automatically
|
|
91
|
-
/// initialized from <c>UserSettings/AI-Game-Developer-Config.json</c>.
|
|
92
|
-
/// </para>
|
|
93
|
-
/// <example>
|
|
94
|
-
/// <code>
|
|
95
|
-
/// [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
96
|
-
/// static void
|
|
97
|
-
/// {
|
|
98
|
-
/// var
|
|
99
|
-
/// {
|
|
100
|
-
/// builder.WithConfig(c =>
|
|
101
|
-
/// {
|
|
102
|
-
/// c.Host = "http://localhost:8080";
|
|
103
|
-
/// c.Token = "my-token";
|
|
104
|
-
/// });
|
|
105
|
-
/// })
|
|
106
|
-
/// .Build();
|
|
107
|
-
///
|
|
108
|
-
/// }
|
|
109
|
-
/// </code>
|
|
110
|
-
/// </example>
|
|
111
|
-
/// </summary>
|
|
112
|
-
public static UnityCopilotPluginBuilder Initialize(Action<
|
|
113
|
-
{
|
|
114
|
-
InitSingletonIfNeeded();
|
|
115
|
-
var runtimeInstance = Instance;
|
|
116
|
-
var version = runtimeInstance.BuildVersion();
|
|
117
|
-
var loggerProvider = runtimeInstance.BuildLoggerProvider();
|
|
118
|
-
|
|
119
|
-
var
|
|
120
|
-
configure?.Invoke(
|
|
121
|
-
|
|
122
|
-
return new UnityCopilotPluginBuilder(
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
public static IDisposable SubscribeOnChanged(Action<UnityConnectionConfig> action, bool invokeImmediately = true)
|
|
126
|
-
{
|
|
127
|
-
if (action == null)
|
|
128
|
-
throw new ArgumentNullException(nameof(action));
|
|
129
|
-
|
|
130
|
-
var subscription = _onConfigChanged.Subscribe(action);
|
|
131
|
-
if (invokeImmediately)
|
|
132
|
-
{
|
|
133
|
-
try { action(Instance.unityConnectionConfig); }
|
|
134
|
-
catch (Exception e) { _logger.LogError(e, "{method}: exception invoking action immediately", nameof(SubscribeOnChanged)); }
|
|
135
|
-
}
|
|
136
|
-
return subscription;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
static void NotifyChanged(UnityConnectionConfig data)
|
|
140
|
-
{
|
|
141
|
-
try { _onConfigChanged.OnNext(data); }
|
|
142
|
-
catch (Exception e) { _logger.LogError(e, "{method}: exception", nameof(NotifyChanged)); }
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
public static void StaticDispose()
|
|
146
|
-
{
|
|
147
|
-
_logger.LogTrace("{method} called.", nameof(StaticDispose));
|
|
148
|
-
lock (_instanceMutex)
|
|
149
|
-
{
|
|
150
|
-
_instance?.Dispose();
|
|
151
|
-
_instance = null!;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
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
|
+
using System;
|
|
13
|
+
using com.AtelierAI.Uco.Framework;
|
|
14
|
+
using com.AtelierAI.Unity.Copilot.Utils;
|
|
15
|
+
using Microsoft.Extensions.Logging;
|
|
16
|
+
using R3;
|
|
17
|
+
|
|
18
|
+
namespace com.AtelierAI.Unity.Copilot
|
|
19
|
+
{
|
|
20
|
+
using ILogger = Microsoft.Extensions.Logging.ILogger;
|
|
21
|
+
using LogLevel = Runtime.Utils.LogLevel;
|
|
22
|
+
|
|
23
|
+
public partial class UnityCopilotPluginRuntime
|
|
24
|
+
{
|
|
25
|
+
static readonly Subject<UnityConnectionConfig> _onConfigChanged = new Subject<UnityConnectionConfig>();
|
|
26
|
+
static readonly ILogger _logger = UnityLoggerFactory.LoggerFactory.CreateLogger<UnityCopilotPluginRuntime>();
|
|
27
|
+
static readonly object _instanceMutex = new();
|
|
28
|
+
|
|
29
|
+
static UnityCopilotPluginRuntime _instance = null!;
|
|
30
|
+
|
|
31
|
+
public static bool HasInstance
|
|
32
|
+
{
|
|
33
|
+
get { lock (_instanceMutex) { return _instance != null; } }
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public static UnityCopilotPluginRuntime Instance
|
|
37
|
+
{
|
|
38
|
+
get { lock (_instanceMutex) { return _instance; } }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static void InitSingletonIfNeeded()
|
|
42
|
+
{
|
|
43
|
+
lock (_instanceMutex)
|
|
44
|
+
{
|
|
45
|
+
if (_instance == null)
|
|
46
|
+
_instance = new UnityCopilotPluginRuntime();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
public static bool KeepConnected
|
|
52
|
+
{
|
|
53
|
+
get => Instance.unityConnectionConfig.KeepConnected;
|
|
54
|
+
set
|
|
55
|
+
{
|
|
56
|
+
Instance.unityConnectionConfig.KeepConnected = value;
|
|
57
|
+
NotifyChanged(Instance.unityConnectionConfig);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
public static LogLevel LogLevel
|
|
61
|
+
{
|
|
62
|
+
get => _instance.unityConnectionConfig.LogLevel;
|
|
63
|
+
set
|
|
64
|
+
{
|
|
65
|
+
_instance.unityConnectionConfig.LogLevel = value;
|
|
66
|
+
ApplyLogLevel(value);
|
|
67
|
+
NotifyChanged(Instance.unityConnectionConfig);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/// <summary>
|
|
72
|
+
/// Disposes the runtime plugin instance created by <see cref="Initialize"/>.
|
|
73
|
+
/// Safe to call multiple times; no-op if already disposed.
|
|
74
|
+
/// </summary>
|
|
75
|
+
public static void DisposeInstance()
|
|
76
|
+
{
|
|
77
|
+
lock (_instanceMutex)
|
|
78
|
+
{
|
|
79
|
+
_instance?._plugin.Dispose();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/// <summary>
|
|
84
|
+
/// Creates a <see cref="UnityCopilotPluginBuilder"/> pre-configured with Unity
|
|
85
|
+
/// defaults. Use <see cref="UnityCopilotPluginBuilder.Builder"/> to configure
|
|
86
|
+
/// host, token, ignored assemblies, custom tools, etc., then call
|
|
87
|
+
/// <see cref="UnityCopilotPluginBuilder.Build"/> to apply and connect.
|
|
88
|
+
/// <para>
|
|
89
|
+
/// Intended for game builds where no JSON config file is available.
|
|
90
|
+
/// In Unity Editor (Edit and Play mode), the editor plugin is automatically
|
|
91
|
+
/// initialized from <c>UserSettings/AI-Game-Developer-Config.json</c>.
|
|
92
|
+
/// </para>
|
|
93
|
+
/// <example>
|
|
94
|
+
/// <code>
|
|
95
|
+
/// [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
96
|
+
/// static void SetupPlugin()
|
|
97
|
+
/// {
|
|
98
|
+
/// var ucoPlugin = UnityCopilotPluginRuntime.Initialize(builder =>
|
|
99
|
+
/// {
|
|
100
|
+
/// builder.WithConfig(c =>
|
|
101
|
+
/// {
|
|
102
|
+
/// c.Host = "http://localhost:8080";
|
|
103
|
+
/// c.Token = "my-token";
|
|
104
|
+
/// });
|
|
105
|
+
/// })
|
|
106
|
+
/// .Build();
|
|
107
|
+
/// ucoPlugin.Connect();
|
|
108
|
+
/// }
|
|
109
|
+
/// </code>
|
|
110
|
+
/// </example>
|
|
111
|
+
/// </summary>
|
|
112
|
+
public static UnityCopilotPluginBuilder Initialize(Action<IUcoPluginBuilder>? configure = null)
|
|
113
|
+
{
|
|
114
|
+
InitSingletonIfNeeded();
|
|
115
|
+
var runtimeInstance = Instance;
|
|
116
|
+
var version = runtimeInstance.BuildVersion();
|
|
117
|
+
var loggerProvider = runtimeInstance.BuildLoggerProvider();
|
|
118
|
+
|
|
119
|
+
var ucoBuilder = new UcoBuilder(version, loggerProvider);
|
|
120
|
+
configure?.Invoke(ucoBuilder);
|
|
121
|
+
|
|
122
|
+
return new UnityCopilotPluginBuilder(ucoBuilder, runtimeInstance, loggerProvider);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public static IDisposable SubscribeOnChanged(Action<UnityConnectionConfig> action, bool invokeImmediately = true)
|
|
126
|
+
{
|
|
127
|
+
if (action == null)
|
|
128
|
+
throw new ArgumentNullException(nameof(action));
|
|
129
|
+
|
|
130
|
+
var subscription = _onConfigChanged.Subscribe(action);
|
|
131
|
+
if (invokeImmediately)
|
|
132
|
+
{
|
|
133
|
+
try { action(Instance.unityConnectionConfig); }
|
|
134
|
+
catch (Exception e) { _logger.LogError(e, "{method}: exception invoking action immediately", nameof(SubscribeOnChanged)); }
|
|
135
|
+
}
|
|
136
|
+
return subscription;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static void NotifyChanged(UnityConnectionConfig data)
|
|
140
|
+
{
|
|
141
|
+
try { _onConfigChanged.OnNext(data); }
|
|
142
|
+
catch (Exception e) { _logger.LogError(e, "{method}: exception", nameof(NotifyChanged)); }
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
public static void StaticDispose()
|
|
146
|
+
{
|
|
147
|
+
_logger.LogTrace("{method} called.", nameof(StaticDispose));
|
|
148
|
+
lock (_instanceMutex)
|
|
149
|
+
{
|
|
150
|
+
_instance?.Dispose();
|
|
151
|
+
_instance = null!;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -1,59 +1,59 @@
|
|
|
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
|
-
using System.Diagnostics;
|
|
13
|
-
using com.AtelierAI.Uco.Framework;
|
|
14
|
-
using Microsoft.Extensions.Logging;
|
|
15
|
-
using R3;
|
|
16
|
-
|
|
17
|
-
namespace com.AtelierAI.Unity.Copilot
|
|
18
|
-
{
|
|
19
|
-
/// <summary>
|
|
20
|
-
/// Runtime singleton for game builds. Provides the developer-facing
|
|
21
|
-
/// <see cref="Initialize"/> API and maintains a separate
|
|
22
|
-
/// alongside the Editor's connection.
|
|
23
|
-
/// </summary>
|
|
24
|
-
public partial class UnityCopilotPluginRuntime : UnityCopilotPlugin
|
|
25
|
-
{
|
|
26
|
-
protected UnityCopilotPluginRuntime(UnityConnectionConfig? config = null) : base()
|
|
27
|
-
{
|
|
28
|
-
unityConnectionConfig = config ?? new UnityConnectionConfig();
|
|
29
|
-
IncrementSingletonCount();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
internal IUcoPlugin BuildFromBuilder(
|
|
33
|
-
{
|
|
34
|
-
_logger.LogTrace("{method} called.", nameof(BuildFromBuilder));
|
|
35
|
-
|
|
36
|
-
var stopwatch = Stopwatch.StartNew();
|
|
37
|
-
var built = _plugin.Set(builder.Build(CreateDefaultReflector()));
|
|
38
|
-
stopwatch.Stop();
|
|
39
|
-
_logger.LogDebug("Runtime
|
|
40
|
-
stopwatch.ElapsedMilliseconds);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
built.ConnectionState
|
|
45
|
-
.Subscribe(state => _connectionState.Value = state)
|
|
46
|
-
.AddTo(_disposables);
|
|
47
|
-
|
|
48
|
-
_logger.LogTrace("{method} completed.", nameof(BuildFromBuilder));
|
|
49
|
-
return built;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
public override void Dispose()
|
|
53
|
-
{
|
|
54
|
-
DecrementSingletonCount();
|
|
55
|
-
base.Dispose();
|
|
56
|
-
_plugin.Dispose();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
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
|
+
using System.Diagnostics;
|
|
13
|
+
using com.AtelierAI.Uco.Framework;
|
|
14
|
+
using Microsoft.Extensions.Logging;
|
|
15
|
+
using R3;
|
|
16
|
+
|
|
17
|
+
namespace com.AtelierAI.Unity.Copilot
|
|
18
|
+
{
|
|
19
|
+
/// <summary>
|
|
20
|
+
/// Runtime singleton for game builds. Provides the developer-facing
|
|
21
|
+
/// <see cref="Initialize"/> API and maintains a separate Uco connection
|
|
22
|
+
/// alongside the Editor's connection.
|
|
23
|
+
/// </summary>
|
|
24
|
+
public partial class UnityCopilotPluginRuntime : UnityCopilotPlugin
|
|
25
|
+
{
|
|
26
|
+
protected UnityCopilotPluginRuntime(UnityConnectionConfig? config = null) : base()
|
|
27
|
+
{
|
|
28
|
+
unityConnectionConfig = config ?? new UnityConnectionConfig();
|
|
29
|
+
IncrementSingletonCount();
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
internal IUcoPlugin BuildFromBuilder(IUcoPluginBuilder builder)
|
|
33
|
+
{
|
|
34
|
+
_logger.LogTrace("{method} called.", nameof(BuildFromBuilder));
|
|
35
|
+
|
|
36
|
+
var stopwatch = Stopwatch.StartNew();
|
|
37
|
+
var built = _plugin.Set(builder.Build(CreateDefaultReflector()));
|
|
38
|
+
stopwatch.Stop();
|
|
39
|
+
_logger.LogDebug("Runtime Uco Plugin built in {elapsedMilliseconds} ms.",
|
|
40
|
+
stopwatch.ElapsedMilliseconds);
|
|
41
|
+
|
|
42
|
+
ApplyConfigToUcoPlugin(built);
|
|
43
|
+
|
|
44
|
+
built.ConnectionState
|
|
45
|
+
.Subscribe(state => _connectionState.Value = state)
|
|
46
|
+
.AddTo(_disposables);
|
|
47
|
+
|
|
48
|
+
_logger.LogTrace("{method} completed.", nameof(BuildFromBuilder));
|
|
49
|
+
return built;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public override void Dispose()
|
|
53
|
+
{
|
|
54
|
+
DecrementSingletonCount();
|
|
55
|
+
base.Dispose();
|
|
56
|
+
_plugin.Dispose();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|