@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
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False">
|
|
2
|
-
<ui:VisualElement class="root-container" style="min-width: 320px;">
|
|
3
|
-
<ui:VisualElement class="header-container">
|
|
4
|
-
<ui:Label text="Tools" class="header-title" tooltip="Browse and control all
|
|
5
|
-
<ui:VisualElement class="filter-row">
|
|
6
|
-
<ui:Label text="Filter:" class="filter-label" />
|
|
7
|
-
<ui:TextField name="filter-textfield" class="filter-textfield styled-text-field" />
|
|
8
|
-
</ui:VisualElement>
|
|
9
|
-
<ui:VisualElement class="filter-row">
|
|
10
|
-
<ui:Label text="Type:" class="filter-label" />
|
|
11
|
-
<ui:DropdownField name="type-dropdown" index="0" class="type-dropdown styled-dropdown" />
|
|
12
|
-
<ui:Label text="Filtered: 0, Total: 0" name="filter-stats-label" class="filter-stats-label" />
|
|
13
|
-
</ui:VisualElement>
|
|
14
|
-
</ui:VisualElement>
|
|
15
|
-
<ui:Label name="empty-list-label" text="No tools by current filter" class="empty-list-label" />
|
|
16
|
-
<ui:ListView name="
|
|
17
|
-
</ui:VisualElement>
|
|
18
|
-
</ui:UXML>
|
|
1
|
+
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False">
|
|
2
|
+
<ui:VisualElement class="root-container" style="min-width: 320px;">
|
|
3
|
+
<ui:VisualElement class="header-container">
|
|
4
|
+
<ui:Label text="Tools" class="header-title" tooltip="Browse and control all tools. Each tool is exposed as a skill accessible from the command line and HTTP API. Disable unused tools to save LLM context — fewer active tools means more room for the AI to reason." />
|
|
5
|
+
<ui:VisualElement class="filter-row">
|
|
6
|
+
<ui:Label text="Filter:" class="filter-label" />
|
|
7
|
+
<ui:TextField name="filter-textfield" class="filter-textfield styled-text-field" />
|
|
8
|
+
</ui:VisualElement>
|
|
9
|
+
<ui:VisualElement class="filter-row">
|
|
10
|
+
<ui:Label text="Type:" class="filter-label" />
|
|
11
|
+
<ui:DropdownField name="type-dropdown" index="0" class="type-dropdown styled-dropdown" />
|
|
12
|
+
<ui:Label text="Filtered: 0, Total: 0" name="filter-stats-label" class="filter-stats-label" />
|
|
13
|
+
</ui:VisualElement>
|
|
14
|
+
</ui:VisualElement>
|
|
15
|
+
<ui:Label name="empty-list-label" text="No tools by current filter" class="empty-list-label" />
|
|
16
|
+
<ui:ListView name="copilot-list-view" class="copilot-list-view" />
|
|
17
|
+
</ui:VisualElement>
|
|
18
|
+
</ui:UXML>
|
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
|
2
|
-
<ui:ScrollView>
|
|
3
|
-
<ui:VisualElement class="container" style="min-width: 320px;">
|
|
4
|
-
<!-- Header Section -->
|
|
5
|
-
<ui:Box name="contHeader" style="background-color: rgba(222, 222, 222, 0); flex-direction: row; flex-shrink: 0;">
|
|
6
|
-
<ui:VisualElement style="flex-grow: 1; background-color: rgba(0, 0, 0, 0);">
|
|
7
|
-
<ui:DropdownField label="Log Level" name="dropdownLogLevel" class="content-item styled-dropdown" />
|
|
8
|
-
<ui:IntegerField label="Timeout (ms)" name="inputTimeoutMs" value="10000" class="content-item" />
|
|
9
|
-
<ui:TextField picking-mode="Ignore" label="Version" value="0.0.0" readonly="true" name="currentVersion" focusable="false" class="content-item transparent-text-field" />
|
|
10
|
-
</ui:VisualElement>
|
|
11
|
-
<ui:VisualElement name="imgLogoPivot" class="animated-selectable" style="flex-grow: 0; height: 60px; width: 60px; right: 0; margin-left: 15px; flex-shrink: 0; margin-right: 0px; margin-top: 2px; flex-direction: row;">
|
|
12
|
-
<ui:VisualElement name="imgLogo" style="flex-grow: 1; background-color: rgba(0, 0, 0, 0); background-image: url("project://database/Packages/com.atelierai.unity.copilot/Editor/Gizmos/logo_512.png?fileID=2800000&guid=bbb0f64bd8f15164781e01168cd6fa4f&type=3#logo_512"); -unity-background-scale-mode: stretch-to-fill; align-self: stretch;" />
|
|
13
|
-
</ui:VisualElement>
|
|
14
|
-
</ui:Box>
|
|
15
|
-
<ui:VisualElement class="divider" />
|
|
16
|
-
<!-- Connection Section ============================== -->
|
|
17
|
-
<ui:VisualElement class="row" style="margin-top: 0; align-items: center;">
|
|
18
|
-
<ui:Label text="Connection" class="header" />
|
|
19
|
-
<ui:VisualElement name="segmentConnectionMode" style="flex-direction: row; flex-grow: 1; justify-content: flex-end; margin-right: 0;" />
|
|
20
|
-
</ui:VisualElement>
|
|
21
|
-
<ui:TextField picking-mode="Ignore" label="Server URL" value="http://localhost:8080" name="InputServerURL" class="content-item styled-text-field" />
|
|
22
|
-
<!-- Cloud Authorization (visible in Cloud mode only) -->
|
|
23
|
-
<ui:VisualElement name="cloudAuthSection" style="flex-direction: column; margin-bottom: 8px; display: none;">
|
|
24
|
-
<ui:VisualElement style="flex-direction: row; margin-top: 2px; align-items: center;">
|
|
25
|
-
<ui:TextField name="inputCloudToken" label="" placeholder-text="Cloud Token" readonly="true" password="true" style="flex-grow: 1;" class="token-input" />
|
|
26
|
-
<ui:Button name="btnCloudRevoke" text="Revoke" tooltip="Logout from the Cloud server. Clears the stored authentication token and disconnects Unity from the cloud." class="btn-compact btn-alert" style="display: none;" />
|
|
27
|
-
<ui:Button name="btnCloudAuthorize" text="Authorize" tooltip="Authenticate with the Cloud server using device code flow. Opens a browser to complete authorization." class="btn-compact" />
|
|
28
|
-
</ui:VisualElement>
|
|
29
|
-
<ui:Label name="labelCloudAuthStatus" text="" class="section-desc" style="margin-top: 2px; display: none;" />
|
|
30
|
-
</ui:VisualElement>
|
|
31
|
-
<!-- Connection Auth Alert (visible in Cloud mode when not authorized) -->
|
|
32
|
-
<ui:VisualElement name="connectionAlertContainer" />
|
|
33
|
-
<!-- Connection Timeline -->
|
|
34
|
-
<ui:VisualElement name="ConnectionTimeline" class="connection-timeline">
|
|
35
|
-
<!-- Point 1: Unity -->
|
|
36
|
-
<ui:VisualElement name="TimelinePointUnity" class="timeline-point">
|
|
37
|
-
<ui:VisualElement class="timeline-indicator">
|
|
38
|
-
<ui:VisualElement name="connectionStatusCircle" class="status-indicator-circle status-indicator-circle-disconnected" />
|
|
39
|
-
<ui:VisualElement class="timeline-line" style="margin-bottom: -4px;" />
|
|
40
|
-
</ui:VisualElement>
|
|
41
|
-
<ui:VisualElement class="timeline-content">
|
|
42
|
-
<ui:Label text="Unity" name="connectionStatusText" class="timeline-label" />
|
|
43
|
-
<ui:Button name="btnConnectOrDisconnect" text="Connect" class="btn-primary timeline-btn" />
|
|
44
|
-
</ui:VisualElement>
|
|
45
|
-
</ui:VisualElement>
|
|
46
|
-
<!-- Point 2:
|
|
47
|
-
<ui:VisualElement name="
|
|
48
|
-
<ui:VisualElement class="timeline-indicator" style="justify-content: flex-start;">
|
|
49
|
-
<ui:VisualElement name="
|
|
50
|
-
<ui:VisualElement class="timeline-line" style="top: 29px; margin-top: 0; margin-bottom: -4px;" />
|
|
51
|
-
</ui:VisualElement>
|
|
52
|
-
<ui:VisualElement style="flex-direction: column; flex-grow: 1;">
|
|
53
|
-
<!-- Row 1:
|
|
54
|
-
<ui:VisualElement name="
|
|
55
|
-
<ui:Label text="Server" name="
|
|
56
|
-
<ui:Button name="btnStartStopServer" text="Start" class="btn-secondary timeline-btn" />
|
|
57
|
-
</ui:VisualElement>
|
|
58
|
-
<!-- Row 2: Authorization -->
|
|
59
|
-
<ui:VisualElement style="flex-direction: row; align-items: center; justify-content: space-between; margin-top: 2px; margin-bottom: 2px;">
|
|
60
|
-
<ui:Label name="labelAuthorizationToken" text="Authorization Token" class="section-desc" style="margin-bottom: 0;" />
|
|
61
|
-
<ui:VisualElement name="segmentAuthorization" />
|
|
62
|
-
</ui:VisualElement>
|
|
63
|
-
<!-- Row 3: Authorization Token -->
|
|
64
|
-
<ui:VisualElement name="tokenSection" style="flex-direction: column; margin-top: 2px; margin-bottom: 2px;">
|
|
65
|
-
<ui:VisualElement style="flex-direction: row;">
|
|
66
|
-
<ui:TextField name="inputAuthorizationToken" label="" placeholder-text="Token" readonly="true" password="true" class="token-input" />
|
|
67
|
-
<ui:Button name="btnGenerateToken" text="New" class="btn-compact" />
|
|
68
|
-
</ui:VisualElement>
|
|
69
|
-
</ui:VisualElement>
|
|
70
|
-
</ui:VisualElement>
|
|
71
|
-
</ui:VisualElement>
|
|
72
|
-
<!-- Point 3: AI Agent -->
|
|
73
|
-
<ui:VisualElement name="TimelinePointAiAgent" class="timeline-point timeline-point-last" style="">
|
|
74
|
-
<ui:VisualElement class="timeline-indicator">
|
|
75
|
-
<ui:VisualElement name="aiAgentStatusCircle" class="status-indicator-circle status-indicator-circle-disconnected" />
|
|
76
|
-
</ui:VisualElement>
|
|
77
|
-
<ui:VisualElement class="timeline-content" style="align-items: flex-start; margin-top: -3px; min-height: 0;">
|
|
78
|
-
<ui:VisualElement name="aiAgentLabelsContainer" />
|
|
79
|
-
</ui:VisualElement>
|
|
80
|
-
</ui:VisualElement>
|
|
81
|
-
</ui:VisualElement>
|
|
82
|
-
<ui:VisualElement class="divider" />
|
|
83
|
-
<!-- Extensions Section ============================== (hidden: extension install flow pending; restore after packages ship) -->
|
|
84
|
-
<ui:Label text="Extensions" class="header" style="display: none;" />
|
|
85
|
-
<ui:VisualElement name="ExtensionsSection" style="display: none;" />
|
|
86
|
-
<ui:VisualElement class="divider" style="display: none;" />
|
|
87
|
-
<!-- Support Section ============================== (hidden:
|
|
88
|
-
<ui:VisualElement style="display: none;">
|
|
89
|
-
<ui:VisualElement>
|
|
90
|
-
<ui:Label text="Found an issue?" class="section-text" style="flex-grow: 1;" />
|
|
91
|
-
</ui:VisualElement>
|
|
92
|
-
<ui:VisualElement class="row-left-align">
|
|
93
|
-
<ui:Button name="btnDiscordHelp" class="btn-secondary btn-with-icon">
|
|
94
|
-
<ui:VisualElement name="btnDiscordHelpIcon" class="btn-icon" />
|
|
95
|
-
<ui:Label text="Help / Talk" class="btn-label" />
|
|
96
|
-
</ui:Button>
|
|
97
|
-
<ui:Button name="btnGitHubIssue" class="btn-secondary btn-with-icon">
|
|
98
|
-
<ui:VisualElement name="btnGitHubIssueIcon" class="btn-icon" />
|
|
99
|
-
<ui:Label text="Bug Report" class="btn-label" />
|
|
100
|
-
</ui:Button>
|
|
101
|
-
<ui:Button name="btnCheckSerialization" text="Check" class="btn-secondary" />
|
|
102
|
-
</ui:VisualElement>
|
|
103
|
-
</ui:VisualElement>
|
|
104
|
-
<ui:VisualElement class="divider" style="display: none;" />
|
|
105
|
-
<!-- Thanks Section ============================== (hidden) -->
|
|
106
|
-
<ui:VisualElement style="display: none;">
|
|
107
|
-
<ui:Label text="Thanks for using <b><color=red>AI</color> Game Developer</b>. If you like it, please give the project a star on GitHub. Sincerely, Ivan Murzak" class="section-text" />
|
|
108
|
-
<ui:Button name="btnGitHubStar" class="btn-secondary btn-with-icon btn-golden btn-floating">
|
|
109
|
-
<ui:VisualElement name="btnGitHubStarIcon" class="btn-icon" />
|
|
110
|
-
<ui:Label text="GitHub Star" class="btn-label" />
|
|
111
|
-
</ui:Button>
|
|
112
|
-
</ui:VisualElement>
|
|
113
|
-
</ui:VisualElement>
|
|
114
|
-
</ui:ScrollView>
|
|
115
|
-
</ui:UXML>
|
|
1
|
+
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
|
2
|
+
<ui:ScrollView>
|
|
3
|
+
<ui:VisualElement class="container" style="min-width: 320px;">
|
|
4
|
+
<!-- Header Section -->
|
|
5
|
+
<ui:Box name="contHeader" style="background-color: rgba(222, 222, 222, 0); flex-direction: row; flex-shrink: 0;">
|
|
6
|
+
<ui:VisualElement style="flex-grow: 1; background-color: rgba(0, 0, 0, 0);">
|
|
7
|
+
<ui:DropdownField label="Log Level" name="dropdownLogLevel" class="content-item styled-dropdown" />
|
|
8
|
+
<ui:IntegerField label="Timeout (ms)" name="inputTimeoutMs" value="10000" class="content-item" />
|
|
9
|
+
<ui:TextField picking-mode="Ignore" label="Version" value="0.0.0" readonly="true" name="currentVersion" focusable="false" class="content-item transparent-text-field" />
|
|
10
|
+
</ui:VisualElement>
|
|
11
|
+
<ui:VisualElement name="imgLogoPivot" class="animated-selectable" style="flex-grow: 0; height: 60px; width: 60px; right: 0; margin-left: 15px; flex-shrink: 0; margin-right: 0px; margin-top: 2px; flex-direction: row;">
|
|
12
|
+
<ui:VisualElement name="imgLogo" style="flex-grow: 1; background-color: rgba(0, 0, 0, 0); background-image: url("project://database/Packages/com.atelierai.unity.copilot/Editor/Gizmos/logo_512.png?fileID=2800000&guid=bbb0f64bd8f15164781e01168cd6fa4f&type=3#logo_512"); -unity-background-scale-mode: stretch-to-fill; align-self: stretch;" />
|
|
13
|
+
</ui:VisualElement>
|
|
14
|
+
</ui:Box>
|
|
15
|
+
<ui:VisualElement class="divider" />
|
|
16
|
+
<!-- Connection Section ============================== -->
|
|
17
|
+
<ui:VisualElement class="row" style="margin-top: 0; align-items: center;">
|
|
18
|
+
<ui:Label text="Connection" class="header" />
|
|
19
|
+
<ui:VisualElement name="segmentConnectionMode" style="flex-direction: row; flex-grow: 1; justify-content: flex-end; margin-right: 0;" />
|
|
20
|
+
</ui:VisualElement>
|
|
21
|
+
<ui:TextField picking-mode="Ignore" label="Server URL" value="http://localhost:8080" name="InputServerURL" class="content-item styled-text-field" />
|
|
22
|
+
<!-- Cloud Authorization (visible in Cloud mode only) -->
|
|
23
|
+
<ui:VisualElement name="cloudAuthSection" style="flex-direction: column; margin-bottom: 8px; display: none;">
|
|
24
|
+
<ui:VisualElement style="flex-direction: row; margin-top: 2px; align-items: center;">
|
|
25
|
+
<ui:TextField name="inputCloudToken" label="" placeholder-text="Cloud Token" readonly="true" password="true" style="flex-grow: 1;" class="token-input" />
|
|
26
|
+
<ui:Button name="btnCloudRevoke" text="Revoke" tooltip="Logout from the Cloud server. Clears the stored authentication token and disconnects Unity from the cloud." class="btn-compact btn-alert" style="display: none;" />
|
|
27
|
+
<ui:Button name="btnCloudAuthorize" text="Authorize" tooltip="Authenticate with the Cloud server using device code flow. Opens a browser to complete authorization." class="btn-compact" />
|
|
28
|
+
</ui:VisualElement>
|
|
29
|
+
<ui:Label name="labelCloudAuthStatus" text="" class="section-desc" style="margin-top: 2px; display: none;" />
|
|
30
|
+
</ui:VisualElement>
|
|
31
|
+
<!-- Connection Auth Alert (visible in Cloud mode when not authorized) -->
|
|
32
|
+
<ui:VisualElement name="connectionAlertContainer" />
|
|
33
|
+
<!-- Connection Timeline -->
|
|
34
|
+
<ui:VisualElement name="ConnectionTimeline" class="connection-timeline">
|
|
35
|
+
<!-- Point 1: Unity -->
|
|
36
|
+
<ui:VisualElement name="TimelinePointUnity" class="timeline-point">
|
|
37
|
+
<ui:VisualElement class="timeline-indicator">
|
|
38
|
+
<ui:VisualElement name="connectionStatusCircle" class="status-indicator-circle status-indicator-circle-disconnected" />
|
|
39
|
+
<ui:VisualElement class="timeline-line" style="margin-bottom: -4px;" />
|
|
40
|
+
</ui:VisualElement>
|
|
41
|
+
<ui:VisualElement class="timeline-content">
|
|
42
|
+
<ui:Label text="Unity" name="connectionStatusText" class="timeline-label" />
|
|
43
|
+
<ui:Button name="btnConnectOrDisconnect" text="Connect" class="btn-primary timeline-btn" />
|
|
44
|
+
</ui:VisualElement>
|
|
45
|
+
</ui:VisualElement>
|
|
46
|
+
<!-- Point 2: Server -->
|
|
47
|
+
<ui:VisualElement name="TimelinePointServer" class="timeline-point frame-group frame-server">
|
|
48
|
+
<ui:VisualElement class="timeline-indicator" style="justify-content: flex-start;">
|
|
49
|
+
<ui:VisualElement name="serverStatusCircle" class="status-indicator-circle status-indicator-circle-disconnected" style="margin-top: 13px;" />
|
|
50
|
+
<ui:VisualElement class="timeline-line" style="top: 29px; margin-top: 0; margin-bottom: -4px;" />
|
|
51
|
+
</ui:VisualElement>
|
|
52
|
+
<ui:VisualElement style="flex-direction: column; flex-grow: 1;">
|
|
53
|
+
<!-- Row 1: Server label + Start/Stop button (fixed height, aligns with status circle) -->
|
|
54
|
+
<ui:VisualElement name="serverStatusControl" class="timeline-content" style="min-height: 40px;">
|
|
55
|
+
<ui:Label text="Server" name="serverLabel" class="timeline-label" />
|
|
56
|
+
<ui:Button name="btnStartStopServer" text="Start" class="btn-secondary timeline-btn" />
|
|
57
|
+
</ui:VisualElement>
|
|
58
|
+
<!-- Row 2: Authorization -->
|
|
59
|
+
<ui:VisualElement style="flex-direction: row; align-items: center; justify-content: space-between; margin-top: 2px; margin-bottom: 2px;">
|
|
60
|
+
<ui:Label name="labelAuthorizationToken" text="Authorization Token" class="section-desc" style="margin-bottom: 0;" />
|
|
61
|
+
<ui:VisualElement name="segmentAuthorization" />
|
|
62
|
+
</ui:VisualElement>
|
|
63
|
+
<!-- Row 3: Authorization Token -->
|
|
64
|
+
<ui:VisualElement name="tokenSection" style="flex-direction: column; margin-top: 2px; margin-bottom: 2px;">
|
|
65
|
+
<ui:VisualElement style="flex-direction: row;">
|
|
66
|
+
<ui:TextField name="inputAuthorizationToken" label="" placeholder-text="Token" readonly="true" password="true" class="token-input" />
|
|
67
|
+
<ui:Button name="btnGenerateToken" text="New" class="btn-compact" />
|
|
68
|
+
</ui:VisualElement>
|
|
69
|
+
</ui:VisualElement>
|
|
70
|
+
</ui:VisualElement>
|
|
71
|
+
</ui:VisualElement>
|
|
72
|
+
<!-- Point 3: AI Agent -->
|
|
73
|
+
<ui:VisualElement name="TimelinePointAiAgent" class="timeline-point timeline-point-last" style="">
|
|
74
|
+
<ui:VisualElement class="timeline-indicator">
|
|
75
|
+
<ui:VisualElement name="aiAgentStatusCircle" class="status-indicator-circle status-indicator-circle-disconnected" />
|
|
76
|
+
</ui:VisualElement>
|
|
77
|
+
<ui:VisualElement class="timeline-content" style="align-items: flex-start; margin-top: -3px; min-height: 0;">
|
|
78
|
+
<ui:VisualElement name="aiAgentLabelsContainer" />
|
|
79
|
+
</ui:VisualElement>
|
|
80
|
+
</ui:VisualElement>
|
|
81
|
+
</ui:VisualElement>
|
|
82
|
+
<ui:VisualElement class="divider" />
|
|
83
|
+
<!-- Extensions Section ============================== (hidden: extension install flow pending; restore after packages ship) -->
|
|
84
|
+
<ui:Label text="Extensions" class="header" style="display: none;" />
|
|
85
|
+
<ui:VisualElement name="ExtensionsSection" style="display: none;" />
|
|
86
|
+
<ui:VisualElement class="divider" style="display: none;" />
|
|
87
|
+
<!-- Support Section ============================== (hidden: nothing to configure here; social links retained for reuse) -->
|
|
88
|
+
<ui:VisualElement style="display: none;">
|
|
89
|
+
<ui:VisualElement>
|
|
90
|
+
<ui:Label text="Found an issue?" class="section-text" style="flex-grow: 1;" />
|
|
91
|
+
</ui:VisualElement>
|
|
92
|
+
<ui:VisualElement class="row-left-align">
|
|
93
|
+
<ui:Button name="btnDiscordHelp" class="btn-secondary btn-with-icon">
|
|
94
|
+
<ui:VisualElement name="btnDiscordHelpIcon" class="btn-icon" />
|
|
95
|
+
<ui:Label text="Help / Talk" class="btn-label" />
|
|
96
|
+
</ui:Button>
|
|
97
|
+
<ui:Button name="btnGitHubIssue" class="btn-secondary btn-with-icon">
|
|
98
|
+
<ui:VisualElement name="btnGitHubIssueIcon" class="btn-icon" />
|
|
99
|
+
<ui:Label text="Bug Report" class="btn-label" />
|
|
100
|
+
</ui:Button>
|
|
101
|
+
<ui:Button name="btnCheckSerialization" text="Check" class="btn-secondary" />
|
|
102
|
+
</ui:VisualElement>
|
|
103
|
+
</ui:VisualElement>
|
|
104
|
+
<ui:VisualElement class="divider" style="display: none;" />
|
|
105
|
+
<!-- Thanks Section ============================== (hidden) -->
|
|
106
|
+
<ui:VisualElement style="display: none;">
|
|
107
|
+
<ui:Label text="Thanks for using <b><color=red>AI</color> Game Developer</b>. If you like it, please give the project a star on GitHub. Sincerely, Ivan Murzak" class="section-text" />
|
|
108
|
+
<ui:Button name="btnGitHubStar" class="btn-secondary btn-with-icon btn-golden btn-floating">
|
|
109
|
+
<ui:VisualElement name="btnGitHubStarIcon" class="btn-icon" />
|
|
110
|
+
<ui:Label text="GitHub Star" class="btn-label" />
|
|
111
|
+
</ui:Button>
|
|
112
|
+
</ui:VisualElement>
|
|
113
|
+
</ui:VisualElement>
|
|
114
|
+
</ui:ScrollView>
|
|
115
|
+
</ui:UXML>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
<h1>Unity Copilot</h1>
|
|
3
|
-
<p>Drive the Unity Editor from any AI agent over plain REST + WebSocket —
|
|
4
|
-
<p><code>com.atelierai.unity.copilot</code></p>
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
|
-
Unity Copilot is a Unity Editor/Runtime plugin that exposes the Editor as an
|
|
8
|
-
HTTP service: 160+ tools covering scenes, GameObjects, components, assets,
|
|
9
|
-
prefabs, scripts, packages, screenshots, console, tests, and builds — plus
|
|
10
|
-
prompts and resources. A self-hosted Node bridge connects the Editor to the
|
|
11
|
-
outside world; the **uco** CLI drives the whole surface from any agent or
|
|
12
|
-
terminal.
|
|
13
|
-
|
|
14
|
-
## Highlights
|
|
15
|
-
|
|
16
|
-
- **160+ Editor tools** — authoring, code (including Roslyn compile-and-execute
|
|
17
|
-
with confirmation gating for risky operations), diagnostics, build & tests,
|
|
18
|
-
visuals, physics
|
|
19
|
-
- **Three-surface AI skills** — `uco setup-skills` generates focused skill
|
|
20
|
-
bundles (setup / lifecycle / live-editor) for Claude Code, Codex, Cursor,
|
|
21
|
-
and other agents, refreshed from the live tool catalog
|
|
22
|
-
- **Deterministic, safe connectivity** — one port per project (hashed from the
|
|
23
|
-
project path), bearer-token auth, localhost by default, no vendor lock-in:
|
|
24
|
-
anything that can speak HTTP or run a CLI can drive the Editor
|
|
25
|
-
- **Durable calls** — async invocations return a call id queryable later
|
|
26
|
-
(`uco call get <id>`); structured error envelopes survive the whole stack
|
|
27
|
-
- **Dual-editor support** — gates run against Unity 2022.3 LTS and 6000.5
|
|
28
|
-
|
|
29
|
-
## Requirements
|
|
30
|
-
|
|
31
|
-
- Unity **2022.3 or newer** (tested on 2022.3 LTS and 6000.5)
|
|
32
|
-
- **Node.js 20+** for the bridge server (the plugin auto-discovers the `uco`
|
|
33
|
-
npm package — global or project-local — or set `nodeServerPath` in the
|
|
34
|
-
config to point at a specific install)
|
|
35
|
-
|
|
36
|
-
## Install
|
|
37
|
-
|
|
38
|
-
### Via the uco CLI (recommended)
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
npm install -g @atelierai/uco
|
|
42
|
-
uco install <path-to-your-unity-project>
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
This embeds the plugin package, stages the framework DLLs, writes the initial
|
|
46
|
-
config, and can generate agent skills and wrappers (`uco setup-skills`).
|
|
47
|
-
|
|
48
|
-
### Via OpenUPM
|
|
49
|
-
|
|
50
|
-
Add the scoped registry to `Packages/manifest.json` and reference the package:
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"dependencies": {
|
|
55
|
-
"com.atelierai.unity.copilot": "1.0.0"
|
|
56
|
-
},
|
|
57
|
-
"scopedRegistries": [
|
|
58
|
-
{
|
|
59
|
-
"name": "package.openupm.com",
|
|
60
|
-
"url": "https://package.openupm.com",
|
|
61
|
-
"scopes": [ "com.atelierai.unity.copilot" ]
|
|
62
|
-
}
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Quick start
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
uco ping # health-check the bridge
|
|
71
|
-
uco call unity-tool-list # list every tool the Editor exposes
|
|
72
|
-
uco exec --method-body --return-type int --code 'return GameObject.FindObjectsOfType<Camera>().Length;'
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
Configuration lives in `UserSettings/uco-config.json` (migrated automatically
|
|
76
|
-
from the legacy filename by older→newer versions of the plugin).
|
|
77
|
-
|
|
78
|
-
## Wire protocol
|
|
79
|
-
|
|
80
|
-
Plain HTTP + WebSocket with JSON envelopes (`/api/tools/...`).
|
|
81
|
-
protocol on the wire — the bridge was deliberately stripped down to REST so
|
|
82
|
-
any agent, script, or CI job can
|
|
83
|
-
|
|
84
|
-
## Attribution & license
|
|
85
|
-
|
|
86
|
-
Derived from [IvanMurzak/Unity-MCP](https://github.com/IvanMurzak/Unity-MCP)
|
|
87
|
-
(Apache-2.0). Licensed under the Apache License 2.0 — see [LICENSE](LICENSE)
|
|
88
|
-
for the dual copyright notice.
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>Unity Copilot</h1>
|
|
3
|
+
<p>Drive the Unity Editor from any AI agent over plain REST + WebSocket — a single simple wire protocol on the wire.</p>
|
|
4
|
+
<p><code>com.atelierai.unity.copilot</code></p>
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
Unity Copilot is a Unity Editor/Runtime plugin that exposes the Editor as an
|
|
8
|
+
HTTP service: 160+ tools covering scenes, GameObjects, components, assets,
|
|
9
|
+
prefabs, scripts, packages, screenshots, console, tests, and builds — plus
|
|
10
|
+
prompts and resources. A self-hosted Node bridge connects the Editor to the
|
|
11
|
+
outside world; the **uco** CLI drives the whole surface from any agent or
|
|
12
|
+
terminal.
|
|
13
|
+
|
|
14
|
+
## Highlights
|
|
15
|
+
|
|
16
|
+
- **160+ Editor tools** — authoring, code (including Roslyn compile-and-execute
|
|
17
|
+
with confirmation gating for risky operations), diagnostics, build & tests,
|
|
18
|
+
visuals, physics
|
|
19
|
+
- **Three-surface AI skills** — `uco setup-skills` generates focused skill
|
|
20
|
+
bundles (setup / lifecycle / live-editor) for Claude Code, Codex, Cursor,
|
|
21
|
+
and other agents, refreshed from the live tool catalog
|
|
22
|
+
- **Deterministic, safe connectivity** — one port per project (hashed from the
|
|
23
|
+
project path), bearer-token auth, localhost by default, no vendor lock-in:
|
|
24
|
+
anything that can speak HTTP or run a CLI can drive the Editor
|
|
25
|
+
- **Durable calls** — async invocations return a call id queryable later
|
|
26
|
+
(`uco call get <id>`); structured error envelopes survive the whole stack
|
|
27
|
+
- **Dual-editor support** — gates run against Unity 2022.3 LTS and 6000.5
|
|
28
|
+
|
|
29
|
+
## Requirements
|
|
30
|
+
|
|
31
|
+
- Unity **2022.3 or newer** (tested on 2022.3 LTS and 6000.5)
|
|
32
|
+
- **Node.js 20+** for the bridge server (the plugin auto-discovers the `uco`
|
|
33
|
+
npm package — global or project-local — or set `nodeServerPath` in the
|
|
34
|
+
config to point at a specific install)
|
|
35
|
+
|
|
36
|
+
## Install
|
|
37
|
+
|
|
38
|
+
### Via the uco CLI (recommended)
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install -g @atelierai/uco
|
|
42
|
+
uco install <path-to-your-unity-project>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
This embeds the plugin package, stages the framework DLLs, writes the initial
|
|
46
|
+
config, and can generate agent skills and wrappers (`uco setup-skills`).
|
|
47
|
+
|
|
48
|
+
### Via OpenUPM
|
|
49
|
+
|
|
50
|
+
Add the scoped registry to `Packages/manifest.json` and reference the package:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"com.atelierai.unity.copilot": "1.0.0"
|
|
56
|
+
},
|
|
57
|
+
"scopedRegistries": [
|
|
58
|
+
{
|
|
59
|
+
"name": "package.openupm.com",
|
|
60
|
+
"url": "https://package.openupm.com",
|
|
61
|
+
"scopes": [ "com.atelierai.unity.copilot" ]
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Quick start
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uco ping # health-check the bridge
|
|
71
|
+
uco call unity-tool-list # list every tool the Editor exposes
|
|
72
|
+
uco exec --method-body --return-type int --code 'return GameObject.FindObjectsOfType<Camera>().Length;'
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Configuration lives in `UserSettings/uco-config.json` (migrated automatically
|
|
76
|
+
from the legacy filename by older→newer versions of the plugin).
|
|
77
|
+
|
|
78
|
+
## Wire protocol
|
|
79
|
+
|
|
80
|
+
Plain HTTP + WebSocket with JSON envelopes (`/api/tools/...`). The wire is plain JSON
|
|
81
|
+
protocol on the wire — the bridge was deliberately stripped down to REST so
|
|
82
|
+
any agent, script, or CI job can drive it with nothing but an HTTP client.
|
|
83
|
+
|
|
84
|
+
## Attribution & license
|
|
85
|
+
|
|
86
|
+
Derived from [IvanMurzak/Unity-MCP](https://github.com/IvanMurzak/Unity-MCP)
|
|
87
|
+
(Apache-2.0). Licensed under the Apache License 2.0 — see [LICENSE](LICENSE)
|
|
88
|
+
for the dual copyright notice.
|