@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,65 +1,65 @@
1
- /*
2
- ┌──────────────────────────────────────────────────────────────────┐
3
- │ Author: AtelierAI │
4
- │ Copyright (c) 2025 AtelierAI │
5
- │ Licensed under the MIT License. │
6
- └──────────────────────────────────────────────────────────────────┘
7
- */
8
- #nullable enable
9
-
10
- using System.Linq;
11
- using com.AtelierAI.Uco.Framework;
12
- using UnityEditor;
13
-
14
- namespace com.AtelierAI.Unity.Copilot.Editor.Utils
15
- {
16
- /// <summary>
17
- /// Invalidates every in-memory confirmation plan before a domain reload
18
- /// or Editor quit. The plan store is process-local by design; scripts,
19
- /// objects, and policy code may change across a reload, so a token that
20
- /// was issued by the previous AppDomain must not authorise an execution
21
- /// afterwards. It is deliberately not a durable operation registry hook.
22
- /// </summary>
23
- [InitializeOnLoad]
24
- public static class UnityAuthoringSafetyReloadGuard
25
- {
26
- static UnityAuthoringSafetyReloadGuard()
27
- {
28
- AssemblyReloadEvents.beforeAssemblyReload += InvalidateConfirmationPlansHandler;
29
- EditorApplication.quitting += InvalidateConfirmationPlansHandler;
30
- }
31
-
32
- /// <summary>
33
- /// Forgets every issued plan on the live pipeline. Returns the number
34
- /// of policy stores that were invalidated (tests assert on it).
35
- /// </summary>
36
- public static int InvalidateConfirmationPlans()
37
- {
38
- if (!UnityCopilotPluginEditor.HasInstance || !UnityCopilotPluginEditor.Instance.HasMcpPluginInstance)
39
- return 0;
40
-
41
- var invalidated = 0;
42
- foreach (var pipeline in Pipelines())
43
- {
44
- foreach (var middleware in pipeline.Middleware.OfType<AuthoringSafetyMiddleware>())
45
- {
46
- middleware.Policy.ConfirmationPlans.Invalidate();
47
- invalidated++;
48
- }
49
- }
50
- return invalidated;
51
- }
52
-
53
- private static System.Collections.Generic.IEnumerable<ToolExecutionPipeline> Pipelines()
54
- {
55
- var plugin = UnityCopilotPluginEditor.Instance;
56
- if (plugin.Tools is UcoToolManager tools)
57
- yield return tools.ExecutionPipeline;
58
- if (plugin.UcoPluginInstance?.UcoManager.SystemToolManager is UcoSystemToolManager systemTools
59
- && !(plugin.Tools is UcoToolManager regular && ReferenceEquals(regular.ExecutionPipeline, systemTools.ExecutionPipeline)))
60
- yield return systemTools.ExecutionPipeline;
61
- }
62
-
63
- private static void InvalidateConfirmationPlansHandler() => InvalidateConfirmationPlans();
64
- }
65
- }
1
+ /*
2
+ ┌──────────────────────────────────────────────────────────────────┐
3
+ │ Author: AtelierAI │
4
+ │ Copyright (c) 2025 AtelierAI │
5
+ │ Licensed under the MIT License. │
6
+ └──────────────────────────────────────────────────────────────────┘
7
+ */
8
+ #nullable enable
9
+
10
+ using System.Linq;
11
+ using com.AtelierAI.Uco.Framework;
12
+ using UnityEditor;
13
+
14
+ namespace com.AtelierAI.Unity.Copilot.Editor.Utils
15
+ {
16
+ /// <summary>
17
+ /// Invalidates every in-memory confirmation plan before a domain reload
18
+ /// or Editor quit. The plan store is process-local by design; scripts,
19
+ /// objects, and policy code may change across a reload, so a token that
20
+ /// was issued by the previous AppDomain must not authorise an execution
21
+ /// afterwards. It is deliberately not a durable operation registry hook.
22
+ /// </summary>
23
+ [InitializeOnLoad]
24
+ public static class UnityAuthoringSafetyReloadGuard
25
+ {
26
+ static UnityAuthoringSafetyReloadGuard()
27
+ {
28
+ AssemblyReloadEvents.beforeAssemblyReload += InvalidateConfirmationPlansHandler;
29
+ EditorApplication.quitting += InvalidateConfirmationPlansHandler;
30
+ }
31
+
32
+ /// <summary>
33
+ /// Forgets every issued plan on the live pipeline. Returns the number
34
+ /// of policy stores that were invalidated (tests assert on it).
35
+ /// </summary>
36
+ public static int InvalidateConfirmationPlans()
37
+ {
38
+ if (!UnityCopilotPluginEditor.HasInstance || !UnityCopilotPluginEditor.Instance.HasUcoPluginInstance)
39
+ return 0;
40
+
41
+ var invalidated = 0;
42
+ foreach (var pipeline in Pipelines())
43
+ {
44
+ foreach (var middleware in pipeline.Middleware.OfType<AuthoringSafetyMiddleware>())
45
+ {
46
+ middleware.Policy.ConfirmationPlans.Invalidate();
47
+ invalidated++;
48
+ }
49
+ }
50
+ return invalidated;
51
+ }
52
+
53
+ private static System.Collections.Generic.IEnumerable<ToolExecutionPipeline> Pipelines()
54
+ {
55
+ var plugin = UnityCopilotPluginEditor.Instance;
56
+ if (plugin.Tools is UcoToolManager tools)
57
+ yield return tools.ExecutionPipeline;
58
+ if (plugin.UcoPluginInstance?.UcoManager.SystemToolManager is UcoSystemToolManager systemTools
59
+ && !(plugin.Tools is UcoToolManager regular && ReferenceEquals(regular.ExecutionPipeline, systemTools.ExecutionPipeline)))
60
+ yield return systemTools.ExecutionPipeline;
61
+ }
62
+
63
+ private static void InvalidateConfirmationPlansHandler() => InvalidateConfirmationPlans();
64
+ }
65
+ }
@@ -1,66 +1,66 @@
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 UnityEditor;
13
- using UnityEngine;
14
-
15
- namespace com.AtelierAI.Unity.Copilot.Editor.Utils
16
- {
17
- /// <summary>
18
- /// Team-shared settings for the Unity-MCP update checker, persisted under
19
- /// <c>ProjectSettings/Copilot-UpdateSettings.asset</c>.
20
- /// </summary>
21
- /// <remarks>
22
- /// Uses Unity's <see cref="ScriptableSingleton{T}"/> + <see cref="FilePathAttribute"/> pattern
23
- /// for project-scoped editor settings. The asset file is plain YAML, diff-friendly, and
24
- /// lives in the folder teams commit to VCS — so flipping <see cref="DisableUpdateNotificationsForTeam"/>
25
- /// once and committing the resulting asset disables the update popup for every team member
26
- /// who pulls that commit.
27
- ///
28
- /// This complements (does not replace) the per-user "Do not show again" flag stored via
29
- /// <see cref="EditorPrefs"/>. Precedence is enforced in
30
- /// <see cref="UpdateChecker.ShouldCheckForUpdates"/>: the project flag short-circuits
31
- /// the check before the per-user flag is consulted.
32
- ///
33
- /// See <see href="https://github.com/IvanMurzak/uco-plugin/issues/768"/>.
34
- /// </remarks>
35
- /// <remarks>
36
- /// <see cref="FilePathAttribute.Location.ProjectFolder"/> resolves the relative path against
37
- /// the Unity project root (the folder that contains <c>Assets/</c>, <c>Packages/</c>, and
38
- /// <c>ProjectSettings/</c>) — NOT against <c>Assets/</c>. That places the asset alongside
39
- /// other team-shared editor settings such as <c>ProjectSettings/EditorSettings.asset</c>.
40
- /// </remarks>
41
- [FilePath("ProjectSettings/Copilot-UpdateSettings.asset", FilePathAttribute.Location.ProjectFolder)]
42
- internal sealed class UnityCopilotUpdateProjectSettings : ScriptableSingleton<UnityCopilotUpdateProjectSettings>
43
- {
44
- [SerializeField] private bool disableUpdateNotificationsForTeam;
45
-
46
- /// <summary>
47
- /// When <c>true</c>, the update popup is suppressed for every team member who has this
48
- /// asset in their checkout — regardless of any per-user <see cref="EditorPrefs"/> state.
49
- /// </summary>
50
- /// <remarks>
51
- /// Setter persists immediately via <see cref="ScriptableSingleton{T}.Save"/> with
52
- /// <c>saveAsText: true</c> so the resulting asset is YAML (diff-friendly).
53
- /// </remarks>
54
- public bool DisableUpdateNotificationsForTeam
55
- {
56
- get => disableUpdateNotificationsForTeam;
57
- set
58
- {
59
- if (disableUpdateNotificationsForTeam == value)
60
- return;
61
- disableUpdateNotificationsForTeam = value;
62
- Save(true);
63
- }
64
- }
65
- }
66
- }
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 UnityEditor;
13
+ using UnityEngine;
14
+
15
+ namespace com.AtelierAI.Unity.Copilot.Editor.Utils
16
+ {
17
+ /// <summary>
18
+ /// Team-shared settings for the Unity-Uco update checker, persisted under
19
+ /// <c>ProjectSettings/Copilot-UpdateSettings.asset</c>.
20
+ /// </summary>
21
+ /// <remarks>
22
+ /// Uses Unity's <see cref="ScriptableSingleton{T}"/> + <see cref="FilePathAttribute"/> pattern
23
+ /// for project-scoped editor settings. The asset file is plain YAML, diff-friendly, and
24
+ /// lives in the folder teams commit to VCS — so flipping <see cref="DisableUpdateNotificationsForTeam"/>
25
+ /// once and committing the resulting asset disables the update popup for every team member
26
+ /// who pulls that commit.
27
+ ///
28
+ /// This complements (does not replace) the per-user "Do not show again" flag stored via
29
+ /// <see cref="EditorPrefs"/>. Precedence is enforced in
30
+ /// <see cref="UpdateChecker.ShouldCheckForUpdates"/>: the project flag short-circuits
31
+ /// the check before the per-user flag is consulted.
32
+ ///
33
+ /// See <see href="https://github.com/IvanMurzak/uco-plugin/issues/768"/>.
34
+ /// </remarks>
35
+ /// <remarks>
36
+ /// <see cref="FilePathAttribute.Location.ProjectFolder"/> resolves the relative path against
37
+ /// the Unity project root (the folder that contains <c>Assets/</c>, <c>Packages/</c>, and
38
+ /// <c>ProjectSettings/</c>) — NOT against <c>Assets/</c>. That places the asset alongside
39
+ /// other team-shared editor settings such as <c>ProjectSettings/EditorSettings.asset</c>.
40
+ /// </remarks>
41
+ [FilePath("ProjectSettings/Copilot-UpdateSettings.asset", FilePathAttribute.Location.ProjectFolder)]
42
+ internal sealed class UnityCopilotUpdateProjectSettings : ScriptableSingleton<UnityCopilotUpdateProjectSettings>
43
+ {
44
+ [SerializeField] private bool disableUpdateNotificationsForTeam;
45
+
46
+ /// <summary>
47
+ /// When <c>true</c>, the update popup is suppressed for every team member who has this
48
+ /// asset in their checkout — regardless of any per-user <see cref="EditorPrefs"/> state.
49
+ /// </summary>
50
+ /// <remarks>
51
+ /// Setter persists immediately via <see cref="ScriptableSingleton{T}.Save"/> with
52
+ /// <c>saveAsText: true</c> so the resulting asset is YAML (diff-friendly).
53
+ /// </remarks>
54
+ public bool DisableUpdateNotificationsForTeam
55
+ {
56
+ get => disableUpdateNotificationsForTeam;
57
+ set
58
+ {
59
+ if (disableUpdateNotificationsForTeam == value)
60
+ return;
61
+ disableUpdateNotificationsForTeam = value;
62
+ Save(true);
63
+ }
64
+ }
65
+ }
66
+ }
@@ -1,120 +1,120 @@
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
- // Wire contract for EntityId (Unity 6.5+):
12
- // On the wire: JSON string of decimal digits, e.g. "568105584918935294".
13
- // No sign, no leading zeros, no exponent.
14
- // Schema: { "type": "string", "pattern": "^[0-9]+$" }.
15
- //
16
- // Outbound: always emitted as a JSON string (via WriteStringValue).
17
- // Inbound: accepts both a JSON string (preferred) and a JSON number
18
- // (back-compat — legacy clients pre-#759 wrote a number).
19
- //
20
- // Rationale: Unity 6.5's EntityId is a 64-bit ulong. JS-based MCP clients
21
- // (Claude Agent SDK, etc.) parse JSON numbers as IEEE-754 doubles, so any
22
- // value past 2^53 - 1 rounds. Serializing as a string makes the value
23
- // opaque to every JSON parser, preserving full precision through any
24
- // language boundary. This is the same pattern used by Twitter, YouTube,
25
- // Discord, Stripe, and gRPC-JSON for 64-bit IDs. See #759 / #754.
26
-
27
- #nullable enable
28
- #if UNITY_6000_5_OR_NEWER
29
- using System;
30
- using System.Globalization;
31
- using System.Text.Json;
32
- using System.Text.Json.Nodes;
33
- using com.IvanMurzak.ReflectorNet.Json;
34
- using com.IvanMurzak.ReflectorNet.Utils;
35
- using com.AtelierAI.Unity.Copilot.Runtime.Utils;
36
- using UnityEngine;
37
-
38
- namespace com.AtelierAI.Unity.Copilot.JsonConverters
39
- {
40
- public class EntityIdConverter : JsonSchemaConverter<EntityId>, IJsonSchemaConverter
41
- {
42
- public override JsonNode GetSchema() => new JsonObject
43
- {
44
- [JsonSchema.Type] = JsonSchema.String,
45
- [JsonSchema.Pattern] = "^[0-9]+$"
46
- };
47
- public override JsonNode GetSchemaRef() => new JsonObject
48
- {
49
- [JsonSchema.Ref] = JsonSchema.RefValue + Id
50
- };
51
-
52
- public override EntityId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
53
- {
54
- if (reader.TokenType == JsonTokenType.Null)
55
- return EntityId.None;
56
-
57
- if (reader.TokenType != JsonTokenType.String && reader.TokenType != JsonTokenType.Number)
58
- throw new JsonException($"Expected string or number token for {nameof(EntityId)}, got {reader.TokenType}.");
59
-
60
- return ReadEntityIdValue(ref reader);
61
- }
62
-
63
- // Accept three JSON representations:
64
- // 1. String token — the new on-wire format (decimal digits, see top-of-file).
65
- // 2. Legacy int form from EntityId.ToString (handwritten JSON).
66
- // 3. Raw ulong from EntityId.ToULong (machine-serialized JSON).
67
- // All three round-trip correctly.
68
- internal static EntityId ReadEntityIdValue(ref Utf8JsonReader reader)
69
- {
70
- // String token — the new on-wire format.
71
- if (reader.TokenType == JsonTokenType.String)
72
- {
73
- var stringValue = reader.GetString();
74
- // Reject empty string up-front: the schema regex "^[0-9]+$" requires
75
- // one or more digits, but EntityIdUtils.FromString("") returns
76
- // EntityId.None silently. Throw here so the runtime matches the
77
- // published schema (see #759 wire contract at top-of-file).
78
- if (string.IsNullOrEmpty(stringValue))
79
- throw new JsonException($"{nameof(EntityId)} string must be one or more decimal digits, got empty string.");
80
- return EntityIdUtils.FromString(stringValue);
81
- }
82
-
83
- if (reader.TryGetInt64(out var signedValue))
84
- return EntityIdUtils.FromNumber(signedValue);
85
-
86
- if (reader.TryGetUInt64(out var unsignedValue))
87
- return EntityIdUtils.FromRawValue(unsignedValue);
88
-
89
- // Fallback for numeric tokens STJ 8's TryGet* helpers reject
90
- // (e.g. numbers re-serialized through JsonElement that end up with
91
- // a fractional trailing zero). Parse the raw token text ourselves.
92
- byte[] rawBytes;
93
- if (reader.HasValueSequence)
94
- {
95
- var seq = reader.ValueSequence;
96
- rawBytes = new byte[seq.Length];
97
- var offset = 0;
98
- foreach (var mem in seq)
99
- {
100
- mem.Span.CopyTo(new Span<byte>(rawBytes, offset, mem.Length));
101
- offset += mem.Length;
102
- }
103
- }
104
- else
105
- {
106
- rawBytes = reader.ValueSpan.ToArray();
107
- }
108
- return EntityIdUtils.FromString(System.Text.Encoding.UTF8.GetString(rawBytes));
109
- }
110
-
111
- public override void Write(Utf8JsonWriter writer, EntityId value, JsonSerializerOptions options)
112
- {
113
- // Outbound: always a JSON string of decimal digits so JS clients
114
- // can JSON.parse the payload without IEEE-754 precision loss
115
- // (see top-of-file wire contract).
116
- writer.WriteStringValue(EntityId.ToULong(value).ToString(CultureInfo.InvariantCulture));
117
- }
118
- }
119
- }
120
- #endif
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
+ // Wire contract for EntityId (Unity 6.5+):
12
+ // On the wire: JSON string of decimal digits, e.g. "568105584918935294".
13
+ // No sign, no leading zeros, no exponent.
14
+ // Schema: { "type": "string", "pattern": "^[0-9]+$" }.
15
+ //
16
+ // Outbound: always emitted as a JSON string (via WriteStringValue).
17
+ // Inbound: accepts both a JSON string (preferred) and a JSON number
18
+ // (back-compat — legacy clients pre-#759 wrote a number).
19
+ //
20
+ // Rationale: Unity 6.5's EntityId is a 64-bit ulong. JS-based Uco clients
21
+ // (Claude Agent SDK, etc.) parse JSON numbers as IEEE-754 doubles, so any
22
+ // value past 2^53 - 1 rounds. Serializing as a string makes the value
23
+ // opaque to every JSON parser, preserving full precision through any
24
+ // language boundary. This is the same pattern used by Twitter, YouTube,
25
+ // Discord, Stripe, and gRPC-JSON for 64-bit IDs. See #759 / #754.
26
+
27
+ #nullable enable
28
+ #if UNITY_6000_5_OR_NEWER
29
+ using System;
30
+ using System.Globalization;
31
+ using System.Text.Json;
32
+ using System.Text.Json.Nodes;
33
+ using com.IvanMurzak.ReflectorNet.Json;
34
+ using com.IvanMurzak.ReflectorNet.Utils;
35
+ using com.AtelierAI.Unity.Copilot.Runtime.Utils;
36
+ using UnityEngine;
37
+
38
+ namespace com.AtelierAI.Unity.Copilot.JsonConverters
39
+ {
40
+ public class EntityIdConverter : JsonSchemaConverter<EntityId>, IJsonSchemaConverter
41
+ {
42
+ public override JsonNode GetSchema() => new JsonObject
43
+ {
44
+ [JsonSchema.Type] = JsonSchema.String,
45
+ [JsonSchema.Pattern] = "^[0-9]+$"
46
+ };
47
+ public override JsonNode GetSchemaRef() => new JsonObject
48
+ {
49
+ [JsonSchema.Ref] = JsonSchema.RefValue + Id
50
+ };
51
+
52
+ public override EntityId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
53
+ {
54
+ if (reader.TokenType == JsonTokenType.Null)
55
+ return EntityId.None;
56
+
57
+ if (reader.TokenType != JsonTokenType.String && reader.TokenType != JsonTokenType.Number)
58
+ throw new JsonException($"Expected string or number token for {nameof(EntityId)}, got {reader.TokenType}.");
59
+
60
+ return ReadEntityIdValue(ref reader);
61
+ }
62
+
63
+ // Accept three JSON representations:
64
+ // 1. String token — the new on-wire format (decimal digits, see top-of-file).
65
+ // 2. Legacy int form from EntityId.ToString (handwritten JSON).
66
+ // 3. Raw ulong from EntityId.ToULong (machine-serialized JSON).
67
+ // All three round-trip correctly.
68
+ internal static EntityId ReadEntityIdValue(ref Utf8JsonReader reader)
69
+ {
70
+ // String token — the new on-wire format.
71
+ if (reader.TokenType == JsonTokenType.String)
72
+ {
73
+ var stringValue = reader.GetString();
74
+ // Reject empty string up-front: the schema regex "^[0-9]+$" requires
75
+ // one or more digits, but EntityIdUtils.FromString("") returns
76
+ // EntityId.None silently. Throw here so the runtime matches the
77
+ // published schema (see #759 wire contract at top-of-file).
78
+ if (string.IsNullOrEmpty(stringValue))
79
+ throw new JsonException($"{nameof(EntityId)} string must be one or more decimal digits, got empty string.");
80
+ return EntityIdUtils.FromString(stringValue);
81
+ }
82
+
83
+ if (reader.TryGetInt64(out var signedValue))
84
+ return EntityIdUtils.FromNumber(signedValue);
85
+
86
+ if (reader.TryGetUInt64(out var unsignedValue))
87
+ return EntityIdUtils.FromRawValue(unsignedValue);
88
+
89
+ // Fallback for numeric tokens STJ 8's TryGet* helpers reject
90
+ // (e.g. numbers re-serialized through JsonElement that end up with
91
+ // a fractional trailing zero). Parse the raw token text ourselves.
92
+ byte[] rawBytes;
93
+ if (reader.HasValueSequence)
94
+ {
95
+ var seq = reader.ValueSequence;
96
+ rawBytes = new byte[seq.Length];
97
+ var offset = 0;
98
+ foreach (var mem in seq)
99
+ {
100
+ mem.Span.CopyTo(new Span<byte>(rawBytes, offset, mem.Length));
101
+ offset += mem.Length;
102
+ }
103
+ }
104
+ else
105
+ {
106
+ rawBytes = reader.ValueSpan.ToArray();
107
+ }
108
+ return EntityIdUtils.FromString(System.Text.Encoding.UTF8.GetString(rawBytes));
109
+ }
110
+
111
+ public override void Write(Utf8JsonWriter writer, EntityId value, JsonSerializerOptions options)
112
+ {
113
+ // Outbound: always a JSON string of decimal digits so JS clients
114
+ // can JSON.parse the payload without IEEE-754 precision loss
115
+ // (see top-of-file wire contract).
116
+ writer.WriteStringValue(EntityId.ToULong(value).ToString(CultureInfo.InvariantCulture));
117
+ }
118
+ }
119
+ }
120
+ #endif