@atelierai/uco 1.0.8 → 1.0.10
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 -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/Scripts/API/Tool/ToolGroups.SetEnabled.cs +92 -92
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +0 -147
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.Editor.cs +16 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +3 -3
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolGroupRegistry.cs +461 -460
- 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/Unity/Logs/BufferedFileLogStorage.cs +208 -207
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/FileLogStorage.cs +3 -1
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/UnityLogCollector.cs +282 -280
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +1 -1
- 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 +1 -1
- 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 +1 -1
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/GameObject/TestJsonSchema.cs +199 -199
- 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/Tool/GameObject/TestJsonSchema.cs
CHANGED
|
@@ -1,199 +1,199 @@
|
|
|
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 System.Collections;
|
|
14
|
-
using System.Collections.Generic;
|
|
15
|
-
using System.Globalization;
|
|
16
|
-
using System.Text.Json;
|
|
17
|
-
using System.Text.Json.Nodes;
|
|
18
|
-
using com.AtelierAI.Uco.Framework.Common.Model;
|
|
19
|
-
using com.IvanMurzak.ReflectorNet;
|
|
20
|
-
using com.IvanMurzak.ReflectorNet.Model;
|
|
21
|
-
using com.IvanMurzak.ReflectorNet.Utils;
|
|
22
|
-
using AIGD;
|
|
23
|
-
using NUnit.Framework;
|
|
24
|
-
using UnityEngine.TestTools;
|
|
25
|
-
|
|
26
|
-
namespace com.AtelierAI.Unity.Copilot.Editor.Tests
|
|
27
|
-
{
|
|
28
|
-
public class TestJsonSchema : BaseTest
|
|
29
|
-
{
|
|
30
|
-
static void ValidateType<T>(Reflector reflector) => ValidateType(reflector, typeof(T));
|
|
31
|
-
static void ValidateType(Reflector reflector, Type type)
|
|
32
|
-
{
|
|
33
|
-
ValidateSchema(
|
|
34
|
-
reflector: reflector,
|
|
35
|
-
schema: reflector.GetSchema(type),
|
|
36
|
-
type: type);
|
|
37
|
-
}
|
|
38
|
-
static void ValidateSchema(Reflector reflector, JsonNode schema, Type type)
|
|
39
|
-
{
|
|
40
|
-
UnityEngine.Debug.Log($"Schema for '{type.GetTypeId()}': {schema}");
|
|
41
|
-
|
|
42
|
-
Assert.IsNotNull(schema, $"Schema for '{type.GetTypeId()}' is null");
|
|
43
|
-
|
|
44
|
-
Assert.IsFalse(schema.ToJsonString().Contains($"\"{JsonSchema.Error}\":"),
|
|
45
|
-
$"Schema for '{type.GetTypeId()}' contains {JsonSchema.Error} string");
|
|
46
|
-
|
|
47
|
-
var typeNodes = JsonSchema.FindAllProperties(schema, JsonSchema.Type);
|
|
48
|
-
foreach (var typeNode in typeNodes)
|
|
49
|
-
{
|
|
50
|
-
UnityEngine.Debug.Log($"Type node for '{type.GetTypeId()}': {typeNode}");
|
|
51
|
-
switch (typeNode)
|
|
52
|
-
{
|
|
53
|
-
case JsonValue value:
|
|
54
|
-
var typeValue = value.ToString();
|
|
55
|
-
Assert.IsFalse(string.IsNullOrEmpty(typeValue), $"Type node for '{type.GetTypeId()}' is empty");
|
|
56
|
-
Assert.IsFalse(typeValue == "null", $"Type node for '{type.GetTypeId()}' is \"null\" string");
|
|
57
|
-
Assert.IsFalse(typeValue.Contains($"\"{JsonSchema.Error}\""), $"Type node for '{type.GetTypeId()}' contains error string");
|
|
58
|
-
break;
|
|
59
|
-
default:
|
|
60
|
-
if (typeNode is JsonObject typeObject)
|
|
61
|
-
{
|
|
62
|
-
if (typeObject.TryGetPropertyValue("enum", out var enumValue))
|
|
63
|
-
continue; // Skip enum types
|
|
64
|
-
}
|
|
65
|
-
Assert.Fail($"Unexpected type node for '{type.GetTypeId()}'.\nThe '{JsonSchema.Type}' node has the type '{typeNode?.GetType().GetTypeShortName()}':\n{typeNode}");
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
static void ValidateMethodInputSchema(JsonElement schema)
|
|
71
|
-
{
|
|
72
|
-
ValidateMethodInputSchema(JsonNode.Parse(schema.ToString()));
|
|
73
|
-
}
|
|
74
|
-
static void ValidateMethodInputSchema(JsonNode? schema)
|
|
75
|
-
{
|
|
76
|
-
UnityEngine.Debug.Log($" Schema: {schema}");
|
|
77
|
-
|
|
78
|
-
Assert.IsNotNull(schema, $"Schema is null");
|
|
79
|
-
|
|
80
|
-
var json = schema!.ToJsonString();
|
|
81
|
-
|
|
82
|
-
Assert.IsNotNull(json, $"Json is null");
|
|
83
|
-
Assert.IsFalse(json.Contains($"\"{JsonSchema.Error}\":"), $"Json contains {JsonSchema.Error} string");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
[UnityTest]
|
|
87
|
-
public IEnumerator Primitives()
|
|
88
|
-
{
|
|
89
|
-
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
90
|
-
|
|
91
|
-
ValidateType<int>(reflector);
|
|
92
|
-
ValidateType<float>(reflector);
|
|
93
|
-
ValidateType<bool>(reflector);
|
|
94
|
-
ValidateType<string>(reflector);
|
|
95
|
-
ValidateType<CultureTypes>(reflector); // enum
|
|
96
|
-
|
|
97
|
-
yield return null;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
[UnityTest]
|
|
101
|
-
public IEnumerator Classes()
|
|
102
|
-
{
|
|
103
|
-
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
104
|
-
|
|
105
|
-
ValidateType<ObjectRef>(reflector);
|
|
106
|
-
|
|
107
|
-
ValidateType<GameObjectRef>(reflector);
|
|
108
|
-
ValidateType<GameObjectRefList>(reflector);
|
|
109
|
-
ValidateType<GameObjectComponentsRef>(reflector);
|
|
110
|
-
ValidateType<GameObjectComponentsRefList>(reflector);
|
|
111
|
-
|
|
112
|
-
ValidateType<ComponentData>(reflector);
|
|
113
|
-
ValidateType<ComponentDataShallow>(reflector);
|
|
114
|
-
ValidateType<ComponentRef>(reflector);
|
|
115
|
-
ValidateType<ComponentRefList>(reflector);
|
|
116
|
-
|
|
117
|
-
ValidateType<MethodData>(reflector);
|
|
118
|
-
ValidateType<MethodRef>(reflector);
|
|
119
|
-
|
|
120
|
-
yield return null;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
[UnityTest]
|
|
124
|
-
public IEnumerator Structs()
|
|
125
|
-
{
|
|
126
|
-
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
127
|
-
|
|
128
|
-
ValidateType<DateTime>(reflector);
|
|
129
|
-
ValidateType<TimeSpan>(reflector);
|
|
130
|
-
|
|
131
|
-
yield return null;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
[UnityTest]
|
|
135
|
-
public IEnumerator UnityStructs()
|
|
136
|
-
{
|
|
137
|
-
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
138
|
-
|
|
139
|
-
ValidateType<UnityEngine.Color32>(reflector);
|
|
140
|
-
ValidateType<UnityEngine.Color>(reflector);
|
|
141
|
-
ValidateType<UnityEngine.Vector3>(reflector);
|
|
142
|
-
ValidateType<UnityEngine.Vector3Int>(reflector);
|
|
143
|
-
ValidateType<UnityEngine.Vector2>(reflector);
|
|
144
|
-
ValidateType<UnityEngine.Vector2Int>(reflector);
|
|
145
|
-
ValidateType<UnityEngine.Quaternion>(reflector);
|
|
146
|
-
ValidateType<UnityEngine.Matrix4x4>(reflector);
|
|
147
|
-
ValidateType<UnityEngine.Rect>(reflector);
|
|
148
|
-
ValidateType<UnityEngine.RectInt>(reflector);
|
|
149
|
-
ValidateType<UnityEngine.Bounds>(reflector);
|
|
150
|
-
ValidateType<UnityEngine.BoundsInt>(reflector);
|
|
151
|
-
|
|
152
|
-
yield return null;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
[UnityTest]
|
|
156
|
-
public IEnumerator Unity()
|
|
157
|
-
{
|
|
158
|
-
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
159
|
-
|
|
160
|
-
ValidateType<UnityEngine.Object>(reflector);
|
|
161
|
-
ValidateType<UnityEngine.Rigidbody>(reflector);
|
|
162
|
-
ValidateType<UnityEngine.Animation>(reflector);
|
|
163
|
-
ValidateType<UnityEngine.Material>(reflector);
|
|
164
|
-
ValidateType<UnityEngine.Transform>(reflector);
|
|
165
|
-
ValidateType<UnityEngine.SpriteRenderer>(reflector);
|
|
166
|
-
ValidateType<UnityEngine.MeshRenderer>(reflector);
|
|
167
|
-
|
|
168
|
-
yield return null;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
[UnityTest]
|
|
172
|
-
public IEnumerator
|
|
173
|
-
{
|
|
174
|
-
var task = UnityCopilotPluginEditor.Instance.Tools!.RunListTool(new RequestListTool());
|
|
175
|
-
while (!task.IsCompleted)
|
|
176
|
-
{
|
|
177
|
-
yield return null; // Wait for the task to complete
|
|
178
|
-
}
|
|
179
|
-
var toolResponse = task.Result;
|
|
180
|
-
var tools = toolResponse.Value;
|
|
181
|
-
|
|
182
|
-
Assert.IsNotNull(tools, "Tool response is null");
|
|
183
|
-
Assert.IsNotEmpty(tools, "Tool response is empty");
|
|
184
|
-
|
|
185
|
-
// Validate the array of tools doesn't have duplicated tool names
|
|
186
|
-
var toolNames = new HashSet<string>();
|
|
187
|
-
|
|
188
|
-
foreach (var tool in tools!)
|
|
189
|
-
{
|
|
190
|
-
UnityEngine.Debug.Log($"Tool: {tool.Name} - {tool.Description}");
|
|
191
|
-
ValidateMethodInputSchema(tool.InputSchema);
|
|
192
|
-
|
|
193
|
-
Assert.IsFalse(toolNames.Contains(tool.Name), $"Duplicate tool name found: {tool.Name}");
|
|
194
|
-
toolNames.Add(tool.Name);
|
|
195
|
-
}
|
|
196
|
-
Assert.IsTrue(toolNames.Count > 0, "No tools found in the response");
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
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 System.Collections;
|
|
14
|
+
using System.Collections.Generic;
|
|
15
|
+
using System.Globalization;
|
|
16
|
+
using System.Text.Json;
|
|
17
|
+
using System.Text.Json.Nodes;
|
|
18
|
+
using com.AtelierAI.Uco.Framework.Common.Model;
|
|
19
|
+
using com.IvanMurzak.ReflectorNet;
|
|
20
|
+
using com.IvanMurzak.ReflectorNet.Model;
|
|
21
|
+
using com.IvanMurzak.ReflectorNet.Utils;
|
|
22
|
+
using AIGD;
|
|
23
|
+
using NUnit.Framework;
|
|
24
|
+
using UnityEngine.TestTools;
|
|
25
|
+
|
|
26
|
+
namespace com.AtelierAI.Unity.Copilot.Editor.Tests
|
|
27
|
+
{
|
|
28
|
+
public class TestJsonSchema : BaseTest
|
|
29
|
+
{
|
|
30
|
+
static void ValidateType<T>(Reflector reflector) => ValidateType(reflector, typeof(T));
|
|
31
|
+
static void ValidateType(Reflector reflector, Type type)
|
|
32
|
+
{
|
|
33
|
+
ValidateSchema(
|
|
34
|
+
reflector: reflector,
|
|
35
|
+
schema: reflector.GetSchema(type),
|
|
36
|
+
type: type);
|
|
37
|
+
}
|
|
38
|
+
static void ValidateSchema(Reflector reflector, JsonNode schema, Type type)
|
|
39
|
+
{
|
|
40
|
+
UnityEngine.Debug.Log($"Schema for '{type.GetTypeId()}': {schema}");
|
|
41
|
+
|
|
42
|
+
Assert.IsNotNull(schema, $"Schema for '{type.GetTypeId()}' is null");
|
|
43
|
+
|
|
44
|
+
Assert.IsFalse(schema.ToJsonString().Contains($"\"{JsonSchema.Error}\":"),
|
|
45
|
+
$"Schema for '{type.GetTypeId()}' contains {JsonSchema.Error} string");
|
|
46
|
+
|
|
47
|
+
var typeNodes = JsonSchema.FindAllProperties(schema, JsonSchema.Type);
|
|
48
|
+
foreach (var typeNode in typeNodes)
|
|
49
|
+
{
|
|
50
|
+
UnityEngine.Debug.Log($"Type node for '{type.GetTypeId()}': {typeNode}");
|
|
51
|
+
switch (typeNode)
|
|
52
|
+
{
|
|
53
|
+
case JsonValue value:
|
|
54
|
+
var typeValue = value.ToString();
|
|
55
|
+
Assert.IsFalse(string.IsNullOrEmpty(typeValue), $"Type node for '{type.GetTypeId()}' is empty");
|
|
56
|
+
Assert.IsFalse(typeValue == "null", $"Type node for '{type.GetTypeId()}' is \"null\" string");
|
|
57
|
+
Assert.IsFalse(typeValue.Contains($"\"{JsonSchema.Error}\""), $"Type node for '{type.GetTypeId()}' contains error string");
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
if (typeNode is JsonObject typeObject)
|
|
61
|
+
{
|
|
62
|
+
if (typeObject.TryGetPropertyValue("enum", out var enumValue))
|
|
63
|
+
continue; // Skip enum types
|
|
64
|
+
}
|
|
65
|
+
Assert.Fail($"Unexpected type node for '{type.GetTypeId()}'.\nThe '{JsonSchema.Type}' node has the type '{typeNode?.GetType().GetTypeShortName()}':\n{typeNode}");
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
static void ValidateMethodInputSchema(JsonElement schema)
|
|
71
|
+
{
|
|
72
|
+
ValidateMethodInputSchema(JsonNode.Parse(schema.ToString()));
|
|
73
|
+
}
|
|
74
|
+
static void ValidateMethodInputSchema(JsonNode? schema)
|
|
75
|
+
{
|
|
76
|
+
UnityEngine.Debug.Log($" Schema: {schema}");
|
|
77
|
+
|
|
78
|
+
Assert.IsNotNull(schema, $"Schema is null");
|
|
79
|
+
|
|
80
|
+
var json = schema!.ToJsonString();
|
|
81
|
+
|
|
82
|
+
Assert.IsNotNull(json, $"Json is null");
|
|
83
|
+
Assert.IsFalse(json.Contains($"\"{JsonSchema.Error}\":"), $"Json contains {JsonSchema.Error} string");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
[UnityTest]
|
|
87
|
+
public IEnumerator Primitives()
|
|
88
|
+
{
|
|
89
|
+
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
90
|
+
|
|
91
|
+
ValidateType<int>(reflector);
|
|
92
|
+
ValidateType<float>(reflector);
|
|
93
|
+
ValidateType<bool>(reflector);
|
|
94
|
+
ValidateType<string>(reflector);
|
|
95
|
+
ValidateType<CultureTypes>(reflector); // enum
|
|
96
|
+
|
|
97
|
+
yield return null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
[UnityTest]
|
|
101
|
+
public IEnumerator Classes()
|
|
102
|
+
{
|
|
103
|
+
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
104
|
+
|
|
105
|
+
ValidateType<ObjectRef>(reflector);
|
|
106
|
+
|
|
107
|
+
ValidateType<GameObjectRef>(reflector);
|
|
108
|
+
ValidateType<GameObjectRefList>(reflector);
|
|
109
|
+
ValidateType<GameObjectComponentsRef>(reflector);
|
|
110
|
+
ValidateType<GameObjectComponentsRefList>(reflector);
|
|
111
|
+
|
|
112
|
+
ValidateType<ComponentData>(reflector);
|
|
113
|
+
ValidateType<ComponentDataShallow>(reflector);
|
|
114
|
+
ValidateType<ComponentRef>(reflector);
|
|
115
|
+
ValidateType<ComponentRefList>(reflector);
|
|
116
|
+
|
|
117
|
+
ValidateType<MethodData>(reflector);
|
|
118
|
+
ValidateType<MethodRef>(reflector);
|
|
119
|
+
|
|
120
|
+
yield return null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
[UnityTest]
|
|
124
|
+
public IEnumerator Structs()
|
|
125
|
+
{
|
|
126
|
+
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
127
|
+
|
|
128
|
+
ValidateType<DateTime>(reflector);
|
|
129
|
+
ValidateType<TimeSpan>(reflector);
|
|
130
|
+
|
|
131
|
+
yield return null;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
[UnityTest]
|
|
135
|
+
public IEnumerator UnityStructs()
|
|
136
|
+
{
|
|
137
|
+
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
138
|
+
|
|
139
|
+
ValidateType<UnityEngine.Color32>(reflector);
|
|
140
|
+
ValidateType<UnityEngine.Color>(reflector);
|
|
141
|
+
ValidateType<UnityEngine.Vector3>(reflector);
|
|
142
|
+
ValidateType<UnityEngine.Vector3Int>(reflector);
|
|
143
|
+
ValidateType<UnityEngine.Vector2>(reflector);
|
|
144
|
+
ValidateType<UnityEngine.Vector2Int>(reflector);
|
|
145
|
+
ValidateType<UnityEngine.Quaternion>(reflector);
|
|
146
|
+
ValidateType<UnityEngine.Matrix4x4>(reflector);
|
|
147
|
+
ValidateType<UnityEngine.Rect>(reflector);
|
|
148
|
+
ValidateType<UnityEngine.RectInt>(reflector);
|
|
149
|
+
ValidateType<UnityEngine.Bounds>(reflector);
|
|
150
|
+
ValidateType<UnityEngine.BoundsInt>(reflector);
|
|
151
|
+
|
|
152
|
+
yield return null;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
[UnityTest]
|
|
156
|
+
public IEnumerator Unity()
|
|
157
|
+
{
|
|
158
|
+
var reflector = UnityCopilotPluginEditor.Instance.Reflector ?? throw new Exception("Reflector is not available.");
|
|
159
|
+
|
|
160
|
+
ValidateType<UnityEngine.Object>(reflector);
|
|
161
|
+
ValidateType<UnityEngine.Rigidbody>(reflector);
|
|
162
|
+
ValidateType<UnityEngine.Animation>(reflector);
|
|
163
|
+
ValidateType<UnityEngine.Material>(reflector);
|
|
164
|
+
ValidateType<UnityEngine.Transform>(reflector);
|
|
165
|
+
ValidateType<UnityEngine.SpriteRenderer>(reflector);
|
|
166
|
+
ValidateType<UnityEngine.MeshRenderer>(reflector);
|
|
167
|
+
|
|
168
|
+
yield return null;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
[UnityTest]
|
|
172
|
+
public IEnumerator All_Tools()
|
|
173
|
+
{
|
|
174
|
+
var task = UnityCopilotPluginEditor.Instance.Tools!.RunListTool(new RequestListTool());
|
|
175
|
+
while (!task.IsCompleted)
|
|
176
|
+
{
|
|
177
|
+
yield return null; // Wait for the task to complete
|
|
178
|
+
}
|
|
179
|
+
var toolResponse = task.Result;
|
|
180
|
+
var tools = toolResponse.Value;
|
|
181
|
+
|
|
182
|
+
Assert.IsNotNull(tools, "Tool response is null");
|
|
183
|
+
Assert.IsNotEmpty(tools, "Tool response is empty");
|
|
184
|
+
|
|
185
|
+
// Validate the array of tools doesn't have duplicated tool names
|
|
186
|
+
var toolNames = new HashSet<string>();
|
|
187
|
+
|
|
188
|
+
foreach (var tool in tools!)
|
|
189
|
+
{
|
|
190
|
+
UnityEngine.Debug.Log($"Tool: {tool.Name} - {tool.Description}");
|
|
191
|
+
ValidateMethodInputSchema(tool.InputSchema);
|
|
192
|
+
|
|
193
|
+
Assert.IsFalse(toolNames.Contains(tool.Name), $"Duplicate tool name found: {tool.Name}");
|
|
194
|
+
toolNames.Add(tool.Name);
|
|
195
|
+
}
|
|
196
|
+
Assert.IsTrue(toolNames.Count > 0, "No tools found in the response");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"Unity Skills",
|
|
16
16
|
"uco"
|
|
17
17
|
],
|
|
18
|
-
"version": "1.0.
|
|
18
|
+
"version": "1.0.8",
|
|
19
19
|
"unity": "2022.3",
|
|
20
20
|
"description": "uco — Unity Copilot: AI Skills, Tools, and CLI for the Unity Engine, driven over plain REST + WebSocket. Any C# method may be turned into a tool by a single line. Derived from IvanMurzak/Unity-MCP (Apache-2.0).",
|
|
21
21
|
"documentationUrl": "https://github.com/DumoeDss/uco-plugin/tree/main/uco-unity-project/Packages/com.atelierai.unity.copilot#readme",
|