@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.
Files changed (280) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +7 -8
  3. package/bin/server.mjs +1 -1
  4. package/bin/stub-plugin.mjs +3 -3
  5. package/dist/codegen/coerce.js +1 -1
  6. package/dist/codegen/coerce.js.map +1 -1
  7. package/dist/codegen/emit.js +2 -2
  8. package/dist/codegen/emit.js.map +1 -1
  9. package/dist/codegen/refs.js +1 -1
  10. package/dist/codegen/refs.js.map +1 -1
  11. package/dist/codegen/types.js +1 -1
  12. package/dist/codegen/types.js.map +1 -1
  13. package/dist/commands/call.js +1 -1
  14. package/dist/commands/call.js.map +1 -1
  15. package/dist/commands/devops/configure.js +1 -1
  16. package/dist/commands/devops/configure.js.map +1 -1
  17. package/dist/commands/devops/index.js +0 -4
  18. package/dist/commands/devops/index.js.map +1 -1
  19. package/dist/commands/devops/install-plugin.js +1 -1
  20. package/dist/commands/devops/install-plugin.js.map +1 -1
  21. package/dist/commands/devops/open.js +7 -7
  22. package/dist/commands/devops/open.js.map +1 -1
  23. package/dist/commands/devops/status.js +3 -3
  24. package/dist/commands/devops/status.js.map +1 -1
  25. package/dist/commands/exec.js +1 -1
  26. package/dist/commands/exec.js.map +1 -1
  27. package/dist/commands/install.js +2 -2
  28. package/dist/commands/install.js.map +1 -1
  29. package/dist/commands/prompt.js +2 -2
  30. package/dist/commands/prompt.js.map +1 -1
  31. package/dist/commands/resource.js +2 -2
  32. package/dist/commands/resource.js.map +1 -1
  33. package/dist/commands/update.js +1 -26
  34. package/dist/commands/update.js.map +1 -1
  35. package/dist/config/port.js +2 -2
  36. package/dist/config/port.js.map +1 -1
  37. package/dist/config/resolve.d.ts +1 -2
  38. package/dist/config/resolve.js +0 -12
  39. package/dist/config/resolve.js.map +1 -1
  40. package/dist/devops/lib/configure.d.ts +1 -1
  41. package/dist/devops/lib/configure.js +2 -2
  42. package/dist/devops/lib/configure.js.map +1 -1
  43. package/dist/devops/lib/install-plugin.d.ts +1 -1
  44. package/dist/devops/lib/install-plugin.js +1 -1
  45. package/dist/devops/lib/install-plugin.js.map +1 -1
  46. package/dist/devops/lib/install.d.ts +2 -2
  47. package/dist/devops/lib/install.js +5 -5
  48. package/dist/devops/lib/install.js.map +1 -1
  49. package/dist/devops/lib/open.js +11 -32
  50. package/dist/devops/lib/open.js.map +1 -1
  51. package/dist/devops/lib/remove-plugin.d.ts +1 -1
  52. package/dist/devops/lib/remove-plugin.js +3 -3
  53. package/dist/devops/lib/remove-plugin.js.map +1 -1
  54. package/dist/devops/lib/run-tool.d.ts +2 -2
  55. package/dist/devops/lib/run-tool.js +2 -2
  56. package/dist/devops/lib/types.d.ts +17 -54
  57. package/dist/devops/lib/types.js +2 -2
  58. package/dist/devops/lib/types.js.map +1 -1
  59. package/dist/devops/lib/update.d.ts +0 -15
  60. package/dist/devops/lib/update.js +2 -91
  61. package/dist/devops/lib/update.js.map +1 -1
  62. package/dist/devops/utils/agents.d.ts +0 -28
  63. package/dist/devops/utils/agents.js +0 -462
  64. package/dist/devops/utils/agents.js.map +1 -1
  65. package/dist/devops/utils/config.d.ts +9 -18
  66. package/dist/devops/utils/config.js +7 -20
  67. package/dist/devops/utils/config.js.map +1 -1
  68. package/dist/devops/utils/editor-cache.js +1 -1
  69. package/dist/devops/utils/editor-cache.js.map +1 -1
  70. package/dist/devops/utils/launch-error-dismiss.d.ts +2 -2
  71. package/dist/devops/utils/launch-error-dismiss.js +5 -5
  72. package/dist/devops/utils/manifest.d.ts +2 -2
  73. package/dist/devops/utils/manifest.js +3 -3
  74. package/dist/devops/utils/manifest.js.map +1 -1
  75. package/dist/devops/utils/port.d.ts +1 -1
  76. package/dist/devops/utils/port.js +1 -1
  77. package/dist/devops/utils/probe.d.ts +1 -1
  78. package/dist/devops/utils/probe.js +1 -1
  79. package/dist/devops/utils/ui.js +2 -2
  80. package/dist/devops/utils/ui.js.map +1 -1
  81. package/dist/devops/utils/unity-editor.js +4 -4
  82. package/dist/devops/utils/unity-editor.js.map +1 -1
  83. package/dist/devops/utils/unity-hub.js +1 -1
  84. package/dist/devops/utils/unity-hub.js.map +1 -1
  85. package/dist/devops/utils/unity-shutdown.d.ts +1 -1
  86. package/dist/devops/utils/unity-shutdown.js +1 -1
  87. package/dist/devops/utils/update-check.js +3 -3
  88. package/dist/devops/utils/update-check.js.map +1 -1
  89. package/dist/devops/utils/vendor.d.ts +2 -2
  90. package/dist/devops/utils/vendor.js +4 -4
  91. package/dist/devops/utils/vendor.js.map +1 -1
  92. package/dist/generated/tools.js +1 -1
  93. package/dist/generated/tools.js.map +1 -1
  94. package/dist/program.js +3 -3
  95. package/dist/program.js.map +1 -1
  96. package/dist/server/app.d.ts +5 -5
  97. package/dist/server/app.js +3 -3
  98. package/dist/server/app.js.map +1 -1
  99. package/dist/server/index.d.ts +2 -2
  100. package/dist/server/index.js +2 -2
  101. package/dist/server/index.js.map +1 -1
  102. package/dist/server/rest/auth.d.ts +1 -1
  103. package/dist/server/rest/auth.js +3 -3
  104. package/dist/server/rest/auth.js.map +1 -1
  105. package/dist/server/rest/context.d.ts +2 -2
  106. package/dist/server/rest/forward.d.ts +2 -2
  107. package/dist/server/session/store.d.ts +3 -3
  108. package/dist/server/session/store.js +4 -4
  109. package/dist/server/session/store.js.map +1 -1
  110. package/dist/server/stub-client/scenarios.js +8 -8
  111. package/dist/server/stub-client/scenarios.js.map +1 -1
  112. package/dist/server/types.d.ts +11 -11
  113. package/dist/server/types.js +9 -9
  114. package/dist/server/types.js.map +1 -1
  115. package/dist/server/ws/hub.d.ts +8 -8
  116. package/dist/server/ws/hub.js +13 -13
  117. package/dist/server/ws/hub.js.map +1 -1
  118. package/dist/server/ws/rpc.d.ts +3 -3
  119. package/dist/server/ws/rpc.js +4 -4
  120. package/dist/server/ws/rpc.js.map +1 -1
  121. package/dist/transport/index.d.ts +1 -1
  122. package/dist/transport/index.js +3 -3
  123. package/dist/transport/index.js.map +1 -1
  124. package/dist/transport/rest.js +1 -1
  125. package/dist/transport/rest.js.map +1 -1
  126. package/docs/INSTALL.zh-CN.md +2 -3
  127. package/package.json +1 -1
  128. package/skills/uco-setup/SKILL.md +1 -1
  129. package/skills/unity-editor/references/diagnostics.md +24 -24
  130. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetConfig.cs +132 -132
  131. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDependencyResolver.cs +237 -237
  132. package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDownloader.cs +82 -82
  133. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/MenuItems.cs +247 -247
  134. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/ToolGroups.cs +153 -153
  135. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/SystemTool/Skills.Create.SkillBody.cs +155 -155
  136. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Console.GetLogs.cs +95 -95
  137. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Docs.HttpFetcher.cs +139 -139
  138. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Instance.ListAll.cs +72 -72
  139. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/PathReadHelper.cs +106 -106
  140. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Script.Validate.cs +252 -252
  141. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests/TestResultCollector.cs +537 -537
  142. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests.cs +400 -400
  143. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Branding/ProductInfo.cs +62 -62
  144. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +1034 -1034
  145. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Skills/Skill_InitialSetup.cs +197 -197
  146. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.Editor.cs +201 -201
  147. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.cs +67 -67
  148. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Components/ExtensionPanel.cs +379 -379
  149. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/MenuItems.cs +72 -72
  150. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/UnityCopilotProjectSettingsProvider.cs +64 -64
  151. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotListWindowBase.cs +393 -393
  152. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotWindowBase.cs +113 -113
  153. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.Connection.cs +3 -3
  154. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotFeatures.cs +195 -195
  155. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +372 -372
  156. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CreateGUI.cs +354 -354
  157. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.cs +78 -78
  158. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowInitializer.cs +47 -47
  159. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/SerializationCheckWindow.cs +190 -190
  160. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Build.cs +91 -91
  161. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Config.cs +298 -298
  162. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Static.cs +296 -296
  163. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.cs +69 -69
  164. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PackageUtils.cs +168 -168
  165. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PrefsKeyMigration.cs +119 -119
  166. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/SafeDefaultsGuard.cs +180 -180
  167. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ScriptUtils.cs +229 -229
  168. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolsManifestGenerator.cs +200 -200
  169. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringAdapters.cs +1467 -1467
  170. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringSafetyReloadGuard.cs +65 -65
  171. package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityCopilotUpdateProjectSettings.cs +66 -66
  172. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
  173. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
  174. package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
  175. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Converter/Json/Structures/EntityIdConverter.cs +120 -120
  176. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.cs +110 -110
  177. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.pre-Unity.6.5.cs +110 -110
  178. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/FileLogStorage.cs +547 -547
  179. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Build.cs +243 -243
  180. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +175 -175
  181. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +295 -295
  182. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginBuilder.cs +105 -105
  183. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.Static.cs +155 -155
  184. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.cs +59 -59
  185. package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +368 -368
  186. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/AtomicApiTestFixtures.cs +99 -99
  187. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/TryModifyAtTests.cs +227 -227
  188. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AuthoringSafetyPilotTests.cs +1050 -1050
  189. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetLegacyMigrationTests.cs +304 -304
  190. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +4 -4
  191. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/BlacklistTypeTests.cs +416 -416
  192. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.cs +172 -172
  193. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.pre-Unity.6.5.cs +169 -169
  194. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.cs +182 -182
  195. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.pre-Unity.6.5.cs +179 -179
  196. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.cs +175 -175
  197. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.pre-Unity.6.5.cs +174 -174
  198. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.cs +171 -171
  199. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.pre-Unity.6.5.cs +170 -170
  200. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsCreateFolderTests.cs +243 -243
  201. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsMaterialTests.cs +101 -101
  202. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.cs +348 -348
  203. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.pre-Unity.6.5.cs +348 -348
  204. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsShaderTests.cs +194 -194
  205. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.cs +573 -573
  206. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.pre-Unity.6.5.cs +513 -513
  207. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.cs +154 -154
  208. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.pre-Unity.6.5.cs +154 -154
  209. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotGameViewTests.cs +164 -164
  210. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotSceneViewTests.cs +155 -155
  211. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolParameterTests.cs +56 -56
  212. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.cs +651 -651
  213. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.pre-Unity.6.5.cs +651 -651
  214. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ToolBatchExecutionIntegrationTests.cs +407 -407
  215. package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs → UcoPluginTests.cs} +105 -105
  216. package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
  217. package/dist/commands/devops/login.d.ts +0 -2
  218. package/dist/commands/devops/login.js +0 -29
  219. package/dist/commands/devops/login.js.map +0 -1
  220. package/dist/commands/devops/setup-mcp.d.ts +0 -2
  221. package/dist/commands/devops/setup-mcp.js +0 -41
  222. package/dist/commands/devops/setup-mcp.js.map +0 -1
  223. package/dist/devops/commands-upstream/bootstrap-local.d.ts +0 -17
  224. package/dist/devops/commands-upstream/bootstrap-local.js +0 -87
  225. package/dist/devops/commands-upstream/bootstrap-local.js.map +0 -1
  226. package/dist/devops/commands-upstream/close.d.ts +0 -57
  227. package/dist/devops/commands-upstream/close.js +0 -188
  228. package/dist/devops/commands-upstream/close.js.map +0 -1
  229. package/dist/devops/commands-upstream/configure.d.ts +0 -2
  230. package/dist/devops/commands-upstream/configure.js +0 -87
  231. package/dist/devops/commands-upstream/configure.js.map +0 -1
  232. package/dist/devops/commands-upstream/create-project.d.ts +0 -2
  233. package/dist/devops/commands-upstream/create-project.js +0 -43
  234. package/dist/devops/commands-upstream/create-project.js.map +0 -1
  235. package/dist/devops/commands-upstream/install-plugin.d.ts +0 -2
  236. package/dist/devops/commands-upstream/install-plugin.js +0 -64
  237. package/dist/devops/commands-upstream/install-plugin.js.map +0 -1
  238. package/dist/devops/commands-upstream/install-unity.d.ts +0 -2
  239. package/dist/devops/commands-upstream/install-unity.js +0 -72
  240. package/dist/devops/commands-upstream/install-unity.js.map +0 -1
  241. package/dist/devops/commands-upstream/login.d.ts +0 -2
  242. package/dist/devops/commands-upstream/login.js +0 -33
  243. package/dist/devops/commands-upstream/login.js.map +0 -1
  244. package/dist/devops/commands-upstream/open.d.ts +0 -32
  245. package/dist/devops/commands-upstream/open.js +0 -282
  246. package/dist/devops/commands-upstream/open.js.map +0 -1
  247. package/dist/devops/commands-upstream/remove-plugin.d.ts +0 -2
  248. package/dist/devops/commands-upstream/remove-plugin.js +0 -41
  249. package/dist/devops/commands-upstream/remove-plugin.js.map +0 -1
  250. package/dist/devops/commands-upstream/run-system-tool.d.ts +0 -1
  251. package/dist/devops/commands-upstream/run-system-tool.js +0 -13
  252. package/dist/devops/commands-upstream/run-system-tool.js.map +0 -1
  253. package/dist/devops/commands-upstream/run-tool-builder.d.ts +0 -25
  254. package/dist/devops/commands-upstream/run-tool-builder.js +0 -125
  255. package/dist/devops/commands-upstream/run-tool-builder.js.map +0 -1
  256. package/dist/devops/commands-upstream/run-tool.d.ts +0 -1
  257. package/dist/devops/commands-upstream/run-tool.js +0 -13
  258. package/dist/devops/commands-upstream/run-tool.js.map +0 -1
  259. package/dist/devops/commands-upstream/setup-mcp.d.ts +0 -2
  260. package/dist/devops/commands-upstream/setup-mcp.js +0 -68
  261. package/dist/devops/commands-upstream/setup-mcp.js.map +0 -1
  262. package/dist/devops/commands-upstream/setup-skills.d.ts +0 -2
  263. package/dist/devops/commands-upstream/setup-skills.js +0 -167
  264. package/dist/devops/commands-upstream/setup-skills.js.map +0 -1
  265. package/dist/devops/commands-upstream/status.d.ts +0 -2
  266. package/dist/devops/commands-upstream/status.js +0 -87
  267. package/dist/devops/commands-upstream/status.js.map +0 -1
  268. package/dist/devops/commands-upstream/update.d.ts +0 -2
  269. package/dist/devops/commands-upstream/update.js +0 -77
  270. package/dist/devops/commands-upstream/update.js.map +0 -1
  271. package/dist/devops/commands-upstream/wait-for-ready.d.ts +0 -2
  272. package/dist/devops/commands-upstream/wait-for-ready.js +0 -93
  273. package/dist/devops/commands-upstream/wait-for-ready.js.map +0 -1
  274. package/dist/devops/lib/setup-mcp.d.ts +0 -35
  275. package/dist/devops/lib/setup-mcp.js +0 -177
  276. package/dist/devops/lib/setup-mcp.js.map +0 -1
  277. package/dist/devops/utils/cloud-login.d.ts +0 -7
  278. package/dist/devops/utils/cloud-login.js +0 -56
  279. package/dist/devops/utils/cloud-login.js.map +0 -1
  280. /package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs.meta → UcoPluginTests.cs.meta} +0 -0
@@ -1,201 +1,201 @@
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.Unity.Copilot.Runtime.Utils;
13
- using com.AtelierAI.Unity.Copilot.Editor.Utils;
14
- using com.AtelierAI.Uco.Framework;
15
- using Microsoft.Extensions.Logging;
16
- using UnityEditor;
17
- using UnityEngine;
18
-
19
- namespace com.AtelierAI.Unity.Copilot.Editor
20
- {
21
- public static partial class Startup
22
- {
23
- static void SubscribeOnEditorEvents()
24
- {
25
- Application.unloading += OnApplicationUnloading;
26
- Application.quitting += OnApplicationQuitting;
27
-
28
- AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload;
29
- AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload;
30
-
31
- // Handle Play mode state changes to ensure reconnection after exiting Play mode
32
- EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
33
- }
34
- static void OnApplicationUnloading() => TryDisconnectAndCleanup(nameof(OnApplicationUnloading));
35
- static void OnApplicationQuitting() => TryDisconnectAndCleanup(nameof(OnApplicationQuitting));
36
- static void OnBeforeAssemblyReload()
37
- {
38
- EditorToolExecutionScheduler.Shared.InvalidateInstance();
39
- EditorOperationOwnerRegistry.InvalidateGeneration();
40
- UnityAuthoringSafetyReloadGuard.InvalidateConfirmationPlans();
41
- TryDisconnectAndCleanup(nameof(OnBeforeAssemblyReload));
42
- }
43
-
44
- /// <summary>
45
- /// Safely disconnects and cleans up the MCP plugin instance.
46
- /// Catches exceptions to prevent blocking Unity's shutdown/reload process.
47
- /// </summary>
48
- /// <param name="callerName">Name of the calling method for logging.</param>
49
- /// <param name="onlyIfConnected">If true, only disconnects when in Connected state.
50
- /// This prevents issues when cancelling in-progress connection attempts during assembly reload.
51
- /// Note: Log collector disposal always occurs regardless of this flag.</param>
52
- static void TryDisconnectAndCleanup(string callerName, bool onlyIfConnected = false)
53
- {
54
- if (!UnityCopilotPluginEditor.HasInstance)
55
- {
56
- _logger.LogDebug("{class} {method} triggered: No UnityCopilotPluginEditor instance to disconnect",
57
- nameof(Startup), callerName);
58
- return;
59
- }
60
-
61
- _logger.LogInformation("{method} triggered", callerName);
62
-
63
- var plugin = UnityCopilotPluginEditor.Instance;
64
- if (plugin.HasMcpPluginInstance)
65
- {
66
- var connectionState = UnityCopilotPluginEditor.ConnectionState.CurrentValue;
67
-
68
- // When onlyIfConnected is true, skip disconnect unless we have an established connection.
69
- // This prevents hanging when cancelling in-progress connection attempts (Connecting/Reconnecting states).
70
- if (onlyIfConnected && connectionState != ConnectionState.Connected)
71
- {
72
- _logger.LogTrace("Skipping {method} - not connected (state: {state})",
73
- nameof(plugin.DisconnectImmediate), connectionState);
74
- }
75
- else
76
- {
77
- try
78
- {
79
- plugin.DisconnectImmediate();
80
- }
81
- catch (System.Exception e)
82
- {
83
- _logger.LogWarning(e, "{class} {method}: Exception during disconnect (non-blocking): {message}",
84
- nameof(Startup), callerName, e.Message);
85
- }
86
- }
87
- }
88
-
89
- try
90
- {
91
- plugin.DisposeLogCollector();
92
- }
93
- catch (System.Exception e)
94
- {
95
- _logger.LogWarning(e, "{class} {method}: Exception during log collector disposal (non-blocking): {message}",
96
- nameof(Startup), callerName, e.Message);
97
- }
98
-
99
- if (UnityCopilotPluginRuntime.HasInstance)
100
- {
101
- try
102
- {
103
- UnityCopilotPluginRuntime.DisposeInstance();
104
- }
105
- catch (System.Exception e)
106
- {
107
- _logger.LogWarning(e, "{class} {method}: Exception during runtime plugin disposal (non-blocking): {message}",
108
- nameof(Startup), callerName, e.Message);
109
- }
110
- }
111
- }
112
- static void OnAfterAssemblyReload()
113
- {
114
- var isCi = EnvironmentUtils.IsCi();
115
- var isBatchMode = EnvironmentUtils.IsBatchMode();
116
- var keepConnected = UnityCopilotPluginEditor.KeepConnected;
117
- // COCli-13: batchmode launches (offline builds, command-line
118
- // automation) skip the connection retry loop unless the
119
- // configuration explicitly keeps the server running — connection
120
- // warnings would otherwise pollute BuildReport output.
121
- var connectionAllowed = keepConnected || (!isCi && !isBatchMode);
122
-
123
- _logger.LogInformation("{method} triggered - BuildAndStart with connectionAllowed: {connectionAllowed} (isCi: {isCi}, isBatchMode: {isBatchMode}, keepConnected: {keepConnected})",
124
- nameof(OnAfterAssemblyReload), connectionAllowed, isCi, isBatchMode, keepConnected);
125
-
126
- UnityCopilotPluginEditor.Instance.BuildMcpPluginIfNeeded();
127
- UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
128
-
129
- if (connectionAllowed)
130
- UnityCopilotPluginEditor.ConnectIfNeeded();
131
- }
132
-
133
- static void OnPlayModeStateChanged(PlayModeStateChange state)
134
- {
135
- if (!UnityCopilotPluginEditor.HasInstance)
136
- {
137
- _logger.LogDebug("{class} {method} triggered: No UnityCopilotPluginEditor instance available. State: {state}",
138
- nameof(Startup), nameof(OnPlayModeStateChanged), state);
139
- return;
140
- }
141
-
142
- // Log Play mode state changes for debugging
143
- _logger.LogInformation("Play mode state changed: {state}", state);
144
-
145
- switch (state)
146
- {
147
- case PlayModeStateChange.ExitingPlayMode:
148
- // Dispose the runtime plugin instance created by Initialize().Build().
149
- // This handles the no-domain-reload case; TryDisconnectAndCleanup covers the domain-reload case.
150
- _logger.LogTrace("Exiting Play mode - disposing runtime plugin instance if present");
151
- if (UnityCopilotPluginRuntime.HasInstance)
152
- UnityCopilotPluginRuntime.DisposeInstance();
153
- break;
154
-
155
- case PlayModeStateChange.EnteredEditMode:
156
- // Unity has returned to Edit mode - ensure connection is re-established
157
- // if the configuration expects it to be connected
158
- var isCi = EnvironmentUtils.IsCi();
159
- var isBatchMode = EnvironmentUtils.IsBatchMode();
160
- var keepConnected = UnityCopilotPluginEditor.KeepConnected;
161
- _logger.LogTrace("Entered Edit mode - KeepConnected: {keepConnected}, IsCi: {isCi}, IsBatchMode: {isBatchMode}",
162
- keepConnected, isCi, isBatchMode);
163
-
164
- if ((isCi || isBatchMode) && !keepConnected)
165
- {
166
- _logger.LogTrace("Skipping reconnection in CI/batchmode environment (KeepConnected is false)");
167
- break;
168
- }
169
-
170
- _logger.LogTrace("Scheduling reconnection after Play mode exit");
171
-
172
- // Small delay to ensure Unity is fully settled in Edit mode
173
- EditorApplication.delayCall += () =>
174
- {
175
- _logger.LogTrace("Initiating delayed reconnection after Play mode exit");
176
-
177
- UnityCopilotPluginEditor.Instance.BuildMcpPluginIfNeeded();
178
- UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
179
- UnityCopilotPluginEditor.ConnectIfNeeded();
180
- };
181
-
182
- // No delay, immediate reconnection for the case if Unity Editor in background
183
- // (has no focus)
184
- _logger.LogTrace("Initiating reconnection after Play mode exit");
185
-
186
- UnityCopilotPluginEditor.Instance.BuildMcpPluginIfNeeded();
187
- UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
188
- UnityCopilotPluginEditor.ConnectIfNeeded();
189
- break;
190
-
191
- case PlayModeStateChange.ExitingEditMode:
192
- _logger.LogTrace("Exiting Edit mode to enter Play mode");
193
- break;
194
-
195
- case PlayModeStateChange.EnteredPlayMode:
196
- _logger.LogTrace("Entered Play mode");
197
- break;
198
- }
199
- }
200
- }
201
- }
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.Unity.Copilot.Runtime.Utils;
13
+ using com.AtelierAI.Unity.Copilot.Editor.Utils;
14
+ using com.AtelierAI.Uco.Framework;
15
+ using Microsoft.Extensions.Logging;
16
+ using UnityEditor;
17
+ using UnityEngine;
18
+
19
+ namespace com.AtelierAI.Unity.Copilot.Editor
20
+ {
21
+ public static partial class Startup
22
+ {
23
+ static void SubscribeOnEditorEvents()
24
+ {
25
+ Application.unloading += OnApplicationUnloading;
26
+ Application.quitting += OnApplicationQuitting;
27
+
28
+ AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload;
29
+ AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload;
30
+
31
+ // Handle Play mode state changes to ensure reconnection after exiting Play mode
32
+ EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
33
+ }
34
+ static void OnApplicationUnloading() => TryDisconnectAndCleanup(nameof(OnApplicationUnloading));
35
+ static void OnApplicationQuitting() => TryDisconnectAndCleanup(nameof(OnApplicationQuitting));
36
+ static void OnBeforeAssemblyReload()
37
+ {
38
+ EditorToolExecutionScheduler.Shared.InvalidateInstance();
39
+ EditorOperationOwnerRegistry.InvalidateGeneration();
40
+ UnityAuthoringSafetyReloadGuard.InvalidateConfirmationPlans();
41
+ TryDisconnectAndCleanup(nameof(OnBeforeAssemblyReload));
42
+ }
43
+
44
+ /// <summary>
45
+ /// Safely disconnects and cleans up the Uco plugin instance.
46
+ /// Catches exceptions to prevent blocking Unity's shutdown/reload process.
47
+ /// </summary>
48
+ /// <param name="callerName">Name of the calling method for logging.</param>
49
+ /// <param name="onlyIfConnected">If true, only disconnects when in Connected state.
50
+ /// This prevents issues when cancelling in-progress connection attempts during assembly reload.
51
+ /// Note: Log collector disposal always occurs regardless of this flag.</param>
52
+ static void TryDisconnectAndCleanup(string callerName, bool onlyIfConnected = false)
53
+ {
54
+ if (!UnityCopilotPluginEditor.HasInstance)
55
+ {
56
+ _logger.LogDebug("{class} {method} triggered: No UnityCopilotPluginEditor instance to disconnect",
57
+ nameof(Startup), callerName);
58
+ return;
59
+ }
60
+
61
+ _logger.LogInformation("{method} triggered", callerName);
62
+
63
+ var plugin = UnityCopilotPluginEditor.Instance;
64
+ if (plugin.HasUcoPluginInstance)
65
+ {
66
+ var connectionState = UnityCopilotPluginEditor.ConnectionState.CurrentValue;
67
+
68
+ // When onlyIfConnected is true, skip disconnect unless we have an established connection.
69
+ // This prevents hanging when cancelling in-progress connection attempts (Connecting/Reconnecting states).
70
+ if (onlyIfConnected && connectionState != ConnectionState.Connected)
71
+ {
72
+ _logger.LogTrace("Skipping {method} - not connected (state: {state})",
73
+ nameof(plugin.DisconnectImmediate), connectionState);
74
+ }
75
+ else
76
+ {
77
+ try
78
+ {
79
+ plugin.DisconnectImmediate();
80
+ }
81
+ catch (System.Exception e)
82
+ {
83
+ _logger.LogWarning(e, "{class} {method}: Exception during disconnect (non-blocking): {message}",
84
+ nameof(Startup), callerName, e.Message);
85
+ }
86
+ }
87
+ }
88
+
89
+ try
90
+ {
91
+ plugin.DisposeLogCollector();
92
+ }
93
+ catch (System.Exception e)
94
+ {
95
+ _logger.LogWarning(e, "{class} {method}: Exception during log collector disposal (non-blocking): {message}",
96
+ nameof(Startup), callerName, e.Message);
97
+ }
98
+
99
+ if (UnityCopilotPluginRuntime.HasInstance)
100
+ {
101
+ try
102
+ {
103
+ UnityCopilotPluginRuntime.DisposeInstance();
104
+ }
105
+ catch (System.Exception e)
106
+ {
107
+ _logger.LogWarning(e, "{class} {method}: Exception during runtime plugin disposal (non-blocking): {message}",
108
+ nameof(Startup), callerName, e.Message);
109
+ }
110
+ }
111
+ }
112
+ static void OnAfterAssemblyReload()
113
+ {
114
+ var isCi = EnvironmentUtils.IsCi();
115
+ var isBatchMode = EnvironmentUtils.IsBatchMode();
116
+ var keepConnected = UnityCopilotPluginEditor.KeepConnected;
117
+ // COCli-13: batchmode launches (offline builds, command-line
118
+ // automation) skip the connection retry loop unless the
119
+ // configuration explicitly keeps the server running — connection
120
+ // warnings would otherwise pollute BuildReport output.
121
+ var connectionAllowed = keepConnected || (!isCi && !isBatchMode);
122
+
123
+ _logger.LogInformation("{method} triggered - BuildAndStart with connectionAllowed: {connectionAllowed} (isCi: {isCi}, isBatchMode: {isBatchMode}, keepConnected: {keepConnected})",
124
+ nameof(OnAfterAssemblyReload), connectionAllowed, isCi, isBatchMode, keepConnected);
125
+
126
+ UnityCopilotPluginEditor.Instance.BuildUcoPluginIfNeeded();
127
+ UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
128
+
129
+ if (connectionAllowed)
130
+ UnityCopilotPluginEditor.ConnectIfNeeded();
131
+ }
132
+
133
+ static void OnPlayModeStateChanged(PlayModeStateChange state)
134
+ {
135
+ if (!UnityCopilotPluginEditor.HasInstance)
136
+ {
137
+ _logger.LogDebug("{class} {method} triggered: No UnityCopilotPluginEditor instance available. State: {state}",
138
+ nameof(Startup), nameof(OnPlayModeStateChanged), state);
139
+ return;
140
+ }
141
+
142
+ // Log Play mode state changes for debugging
143
+ _logger.LogInformation("Play mode state changed: {state}", state);
144
+
145
+ switch (state)
146
+ {
147
+ case PlayModeStateChange.ExitingPlayMode:
148
+ // Dispose the runtime plugin instance created by Initialize().Build().
149
+ // This handles the no-domain-reload case; TryDisconnectAndCleanup covers the domain-reload case.
150
+ _logger.LogTrace("Exiting Play mode - disposing runtime plugin instance if present");
151
+ if (UnityCopilotPluginRuntime.HasInstance)
152
+ UnityCopilotPluginRuntime.DisposeInstance();
153
+ break;
154
+
155
+ case PlayModeStateChange.EnteredEditMode:
156
+ // Unity has returned to Edit mode - ensure connection is re-established
157
+ // if the configuration expects it to be connected
158
+ var isCi = EnvironmentUtils.IsCi();
159
+ var isBatchMode = EnvironmentUtils.IsBatchMode();
160
+ var keepConnected = UnityCopilotPluginEditor.KeepConnected;
161
+ _logger.LogTrace("Entered Edit mode - KeepConnected: {keepConnected}, IsCi: {isCi}, IsBatchMode: {isBatchMode}",
162
+ keepConnected, isCi, isBatchMode);
163
+
164
+ if ((isCi || isBatchMode) && !keepConnected)
165
+ {
166
+ _logger.LogTrace("Skipping reconnection in CI/batchmode environment (KeepConnected is false)");
167
+ break;
168
+ }
169
+
170
+ _logger.LogTrace("Scheduling reconnection after Play mode exit");
171
+
172
+ // Small delay to ensure Unity is fully settled in Edit mode
173
+ EditorApplication.delayCall += () =>
174
+ {
175
+ _logger.LogTrace("Initiating delayed reconnection after Play mode exit");
176
+
177
+ UnityCopilotPluginEditor.Instance.BuildUcoPluginIfNeeded();
178
+ UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
179
+ UnityCopilotPluginEditor.ConnectIfNeeded();
180
+ };
181
+
182
+ // No delay, immediate reconnection for the case if Unity Editor in background
183
+ // (has no focus)
184
+ _logger.LogTrace("Initiating reconnection after Play mode exit");
185
+
186
+ UnityCopilotPluginEditor.Instance.BuildUcoPluginIfNeeded();
187
+ UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
188
+ UnityCopilotPluginEditor.ConnectIfNeeded();
189
+ break;
190
+
191
+ case PlayModeStateChange.ExitingEditMode:
192
+ _logger.LogTrace("Exiting Edit mode to enter Play mode");
193
+ break;
194
+
195
+ case PlayModeStateChange.EnteredPlayMode:
196
+ _logger.LogTrace("Entered Play mode");
197
+ break;
198
+ }
199
+ }
200
+ }
201
+ }
@@ -1,67 +1,67 @@
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.Unity.Copilot.Editor.UI;
13
- using com.AtelierAI.Unity.Copilot.Editor.Utils;
14
- using com.AtelierAI.Unity.Copilot.Utils;
15
- using Microsoft.Extensions.Logging;
16
- using UnityEditor;
17
- using UnityEngine;
18
- using ILogger = Microsoft.Extensions.Logging.ILogger;
19
-
20
- namespace com.AtelierAI.Unity.Copilot.Editor
21
- {
22
- [InitializeOnLoad]
23
- public static partial class Startup
24
- {
25
- static readonly ILogger _logger = UnityLoggerFactory.LoggerFactory.CreateLogger(nameof(Startup));
26
-
27
- static Startup()
28
- {
29
- if (!UnityProcessGuard.ShouldInitialize(AssetDatabase.IsAssetImportWorkerProcess()))
30
- {
31
- return;
32
- }
33
-
34
- EditorOperationOwners.RegisterAndReconcile();
35
- UnityCopilotPluginEditor.Instance.BuildMcpPluginIfNeeded();
36
- UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
37
-
38
- // Informational notice — historically the plugin treated a space in the project
39
- // path as a hard error, but in practice the modern startup pipeline (structured
40
- // ProcessStartInfo, JSON/TOML client configs with quoted command strings,
41
- // Path.Combine-based file IO) handles spaces correctly. We keep a one-shot
42
- // warning so users have a breadcrumb if they hit a third-party tool that does
43
- // not tolerate spaces in paths.
44
- if (Application.dataPath.Contains(" "))
45
- Debug.LogWarning("Unity Copilot: project path contains spaces. The plugin will start normally; if any specific workflow misbehaves with this path, please report it so we can fix the underlying issue.");
46
-
47
- SubscribeOnEditorEvents();
48
-
49
- // Initialize sub-systems
50
- API.Tool_Tests.Init();
51
- UpdateChecker.Init();
52
- PackageUtils.Init();
53
- }
54
- }
55
-
56
- /// <summary>
57
- /// Asset Import Workers inherit the main Editor's environment variables but
58
- /// must never create their own MCP plugin/server lifecycle. A worker bridge
59
- /// advertises the same project instance ID, cannot complete normal Editor
60
- /// registration, and can otherwise displace the main Editor connection.
61
- /// </summary>
62
- internal static class UnityProcessGuard
63
- {
64
- internal static bool ShouldInitialize(bool isAssetImportWorkerProcess)
65
- => !isAssetImportWorkerProcess;
66
- }
67
- }
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.Unity.Copilot.Editor.UI;
13
+ using com.AtelierAI.Unity.Copilot.Editor.Utils;
14
+ using com.AtelierAI.Unity.Copilot.Utils;
15
+ using Microsoft.Extensions.Logging;
16
+ using UnityEditor;
17
+ using UnityEngine;
18
+ using ILogger = Microsoft.Extensions.Logging.ILogger;
19
+
20
+ namespace com.AtelierAI.Unity.Copilot.Editor
21
+ {
22
+ [InitializeOnLoad]
23
+ public static partial class Startup
24
+ {
25
+ static readonly ILogger _logger = UnityLoggerFactory.LoggerFactory.CreateLogger(nameof(Startup));
26
+
27
+ static Startup()
28
+ {
29
+ if (!UnityProcessGuard.ShouldInitialize(AssetDatabase.IsAssetImportWorkerProcess()))
30
+ {
31
+ return;
32
+ }
33
+
34
+ EditorOperationOwners.RegisterAndReconcile();
35
+ UnityCopilotPluginEditor.Instance.BuildUcoPluginIfNeeded();
36
+ UnityCopilotPluginEditor.Instance.AddUnityLogCollectorIfNeeded(() => new BufferedFileLogStorage());
37
+
38
+ // Informational notice — historically the plugin treated a space in the project
39
+ // path as a hard error, but in practice the modern startup pipeline (structured
40
+ // ProcessStartInfo, JSON/TOML client configs with quoted command strings,
41
+ // Path.Combine-based file IO) handles spaces correctly. We keep a one-shot
42
+ // warning so users have a breadcrumb if they hit a third-party tool that does
43
+ // not tolerate spaces in paths.
44
+ if (Application.dataPath.Contains(" "))
45
+ Debug.LogWarning("Unity Copilot: project path contains spaces. The plugin will start normally; if any specific workflow misbehaves with this path, please report it so we can fix the underlying issue.");
46
+
47
+ SubscribeOnEditorEvents();
48
+
49
+ // Initialize sub-systems
50
+ API.Tool_Tests.Init();
51
+ UpdateChecker.Init();
52
+ PackageUtils.Init();
53
+ }
54
+ }
55
+
56
+ /// <summary>
57
+ /// Asset Import Workers inherit the main Editor's environment variables but
58
+ /// must never create their own Uco plugin/server lifecycle. A worker bridge
59
+ /// advertises the same project instance ID, cannot complete normal Editor
60
+ /// registration, and can otherwise displace the main Editor connection.
61
+ /// </summary>
62
+ internal static class UnityProcessGuard
63
+ {
64
+ internal static bool ShouldInitialize(bool isAssetImportWorkerProcess)
65
+ => !isAssetImportWorkerProcess;
66
+ }
67
+ }