@atelierai/uco 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.md +7 -8
- package/bin/server.mjs +1 -1
- package/bin/stub-plugin.mjs +3 -3
- package/dist/codegen/coerce.js +1 -1
- package/dist/codegen/coerce.js.map +1 -1
- package/dist/codegen/emit.js +2 -2
- package/dist/codegen/emit.js.map +1 -1
- package/dist/codegen/refs.js +1 -1
- package/dist/codegen/refs.js.map +1 -1
- package/dist/codegen/types.js +1 -1
- package/dist/codegen/types.js.map +1 -1
- package/dist/commands/call.js +1 -1
- package/dist/commands/call.js.map +1 -1
- package/dist/commands/devops/configure.js +1 -1
- package/dist/commands/devops/configure.js.map +1 -1
- package/dist/commands/devops/index.js +0 -4
- package/dist/commands/devops/index.js.map +1 -1
- package/dist/commands/devops/install-plugin.js +1 -1
- package/dist/commands/devops/install-plugin.js.map +1 -1
- package/dist/commands/devops/open.js +7 -7
- package/dist/commands/devops/open.js.map +1 -1
- package/dist/commands/devops/status.js +3 -3
- package/dist/commands/devops/status.js.map +1 -1
- package/dist/commands/exec.js +1 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/install.js +2 -2
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/prompt.js +2 -2
- package/dist/commands/prompt.js.map +1 -1
- package/dist/commands/resource.js +2 -2
- package/dist/commands/resource.js.map +1 -1
- package/dist/commands/update.js +1 -26
- package/dist/commands/update.js.map +1 -1
- package/dist/config/port.js +2 -2
- package/dist/config/port.js.map +1 -1
- package/dist/config/resolve.d.ts +1 -2
- package/dist/config/resolve.js +0 -12
- package/dist/config/resolve.js.map +1 -1
- package/dist/devops/lib/configure.d.ts +1 -1
- package/dist/devops/lib/configure.js +2 -2
- package/dist/devops/lib/configure.js.map +1 -1
- package/dist/devops/lib/install-plugin.d.ts +1 -1
- package/dist/devops/lib/install-plugin.js +1 -1
- package/dist/devops/lib/install-plugin.js.map +1 -1
- package/dist/devops/lib/install.d.ts +2 -2
- package/dist/devops/lib/install.js +5 -5
- package/dist/devops/lib/install.js.map +1 -1
- package/dist/devops/lib/open.js +11 -32
- package/dist/devops/lib/open.js.map +1 -1
- package/dist/devops/lib/remove-plugin.d.ts +1 -1
- package/dist/devops/lib/remove-plugin.js +3 -3
- package/dist/devops/lib/remove-plugin.js.map +1 -1
- package/dist/devops/lib/run-tool.d.ts +2 -2
- package/dist/devops/lib/run-tool.js +2 -2
- package/dist/devops/lib/types.d.ts +17 -54
- package/dist/devops/lib/types.js +2 -2
- package/dist/devops/lib/types.js.map +1 -1
- package/dist/devops/lib/update.d.ts +0 -15
- package/dist/devops/lib/update.js +2 -91
- package/dist/devops/lib/update.js.map +1 -1
- package/dist/devops/utils/agents.d.ts +0 -28
- package/dist/devops/utils/agents.js +0 -462
- package/dist/devops/utils/agents.js.map +1 -1
- package/dist/devops/utils/config.d.ts +9 -18
- package/dist/devops/utils/config.js +7 -20
- package/dist/devops/utils/config.js.map +1 -1
- package/dist/devops/utils/editor-cache.js +1 -1
- package/dist/devops/utils/editor-cache.js.map +1 -1
- package/dist/devops/utils/launch-error-dismiss.d.ts +2 -2
- package/dist/devops/utils/launch-error-dismiss.js +5 -5
- package/dist/devops/utils/manifest.d.ts +2 -2
- package/dist/devops/utils/manifest.js +3 -3
- package/dist/devops/utils/manifest.js.map +1 -1
- package/dist/devops/utils/port.d.ts +1 -1
- package/dist/devops/utils/port.js +1 -1
- package/dist/devops/utils/probe.d.ts +1 -1
- package/dist/devops/utils/probe.js +1 -1
- package/dist/devops/utils/ui.js +2 -2
- package/dist/devops/utils/ui.js.map +1 -1
- package/dist/devops/utils/unity-editor.js +4 -4
- package/dist/devops/utils/unity-editor.js.map +1 -1
- package/dist/devops/utils/unity-hub.js +1 -1
- package/dist/devops/utils/unity-hub.js.map +1 -1
- package/dist/devops/utils/unity-shutdown.d.ts +1 -1
- package/dist/devops/utils/unity-shutdown.js +1 -1
- package/dist/devops/utils/update-check.js +3 -3
- package/dist/devops/utils/update-check.js.map +1 -1
- package/dist/devops/utils/vendor.d.ts +2 -2
- package/dist/devops/utils/vendor.js +4 -4
- package/dist/devops/utils/vendor.js.map +1 -1
- package/dist/generated/tools.js +1 -1
- package/dist/generated/tools.js.map +1 -1
- package/dist/program.js +3 -3
- package/dist/program.js.map +1 -1
- package/dist/server/app.d.ts +5 -5
- package/dist/server/app.js +3 -3
- package/dist/server/app.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/rest/auth.d.ts +1 -1
- package/dist/server/rest/auth.js +3 -3
- package/dist/server/rest/auth.js.map +1 -1
- package/dist/server/rest/context.d.ts +2 -2
- package/dist/server/rest/forward.d.ts +2 -2
- package/dist/server/session/store.d.ts +3 -3
- package/dist/server/session/store.js +4 -4
- package/dist/server/session/store.js.map +1 -1
- package/dist/server/stub-client/scenarios.js +8 -8
- package/dist/server/stub-client/scenarios.js.map +1 -1
- package/dist/server/types.d.ts +11 -11
- package/dist/server/types.js +9 -9
- package/dist/server/types.js.map +1 -1
- package/dist/server/ws/hub.d.ts +8 -8
- package/dist/server/ws/hub.js +13 -13
- package/dist/server/ws/hub.js.map +1 -1
- package/dist/server/ws/rpc.d.ts +3 -3
- package/dist/server/ws/rpc.js +4 -4
- package/dist/server/ws/rpc.js.map +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.js +3 -3
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/rest.js +1 -1
- package/dist/transport/rest.js.map +1 -1
- package/docs/INSTALL.zh-CN.md +2 -3
- package/package.json +1 -1
- package/skills/uco-setup/SKILL.md +1 -1
- package/skills/unity-editor/references/diagnostics.md +24 -24
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetConfig.cs +132 -132
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDependencyResolver.cs +237 -237
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/DependencyResolver/NuGetDownloader.cs +82 -82
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/MenuItems.cs +247 -247
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Resource/ToolGroups.cs +153 -153
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/SystemTool/Skills.Create.SkillBody.cs +155 -155
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Console.GetLogs.cs +95 -95
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Docs.HttpFetcher.cs +139 -139
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Instance.ListAll.cs +72 -72
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/PathReadHelper.cs +106 -106
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Script.Validate.cs +252 -252
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests/TestResultCollector.cs +537 -537
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/API/Tool/Tests.cs +400 -400
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Branding/ProductInfo.cs +62 -62
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/CopilotServerManager.cs +1034 -1034
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Skills/Skill_InitialSetup.cs +197 -197
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.Editor.cs +201 -201
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Startup.cs +67 -67
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Components/ExtensionPanel.cs +379 -379
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/MenuItems.cs +72 -72
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/UnityCopilotProjectSettingsProvider.cs +64 -64
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotListWindowBase.cs +393 -393
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/CopilotWindowBase.cs +113 -113
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.Connection.cs +3 -3
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotFeatures.cs +195 -195
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CopilotServer.cs +372 -372
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.CreateGUI.cs +354 -354
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowEditor.cs +78 -78
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/MainWindowInitializer.cs +47 -47
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UI/Window/SerializationCheckWindow.cs +190 -190
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Build.cs +91 -91
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Config.cs +298 -298
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.Static.cs +296 -296
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/UnityCopilotPluginEditor.cs +69 -69
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PackageUtils.cs +168 -168
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/PrefsKeyMigration.cs +119 -119
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/SafeDefaultsGuard.cs +180 -180
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ScriptUtils.cs +229 -229
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/ToolsManifestGenerator.cs +200 -200
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringAdapters.cs +1467 -1467
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityAuthoringSafetyReloadGuard.cs +65 -65
- package/vendor/plugin/com.atelierai.unity.copilot/Editor/Scripts/Utils/UnityCopilotUpdateProjectSettings.cs +66 -66
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/ReflectorNet.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.Common.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Plugins/Uco.Framework.dll +0 -0
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Converter/Json/Structures/EntityIdConverter.cs +120 -120
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.cs +110 -110
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Data/GameObjectMetadata.pre-Unity.6.5.cs +110 -110
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Unity/Logs/FileLogStorage.cs +547 -547
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Build.cs +243 -243
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.Config.cs +175 -175
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPlugin.cs +295 -295
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginBuilder.cs +105 -105
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.Static.cs +155 -155
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/UnityCopilotPluginRuntime.cs +59 -59
- package/vendor/plugin/com.atelierai.unity.copilot/Runtime/Utils/EnvironmentUtils.cs +368 -368
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/AtomicApiTestFixtures.cs +99 -99
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AtomicApi/TryModifyAtTests.cs +227 -227
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/AuthoringSafetyPilotTests.cs +1050 -1050
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/DependencyResolver/NuGetLegacyMigrationTests.cs +304 -304
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Environment/EnvironmentUtilsTests.cs +4 -4
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/BlacklistTypeTests.cs +416 -416
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.cs +172 -172
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataFieldScriptableObjectPopulationTests.pre-Unity.6.5.cs +169 -169
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.cs +182 -182
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPopulationTests.pre-Unity.6.5.cs +179 -179
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.cs +175 -175
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyPopulationTests.pre-Unity.6.5.cs +174 -174
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.cs +171 -171
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ReflectionConverter/DataPropertyScriptableObjectPopulationTests.pre-Unity.6.5.cs +170 -170
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsCreateFolderTests.cs +243 -243
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsMaterialTests.cs +101 -101
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.cs +348 -348
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsPrefabCreateTests.pre-Unity.6.5.cs +348 -348
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Assets/AssetsShaderTests.cs +194 -194
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.cs +573 -573
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/PathBasedToolTests.pre-Unity.6.5.cs +513 -513
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.cs +154 -154
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotCameraTests.pre-Unity.6.5.cs +154 -154
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotGameViewTests.cs +164 -164
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/Screenshot/ScreenshotSceneViewTests.cs +155 -155
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolParameterTests.cs +56 -56
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.cs +651 -651
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/Tool/ToolThreadSafetyTests.pre-Unity.6.5.cs +651 -651
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/ToolBatchExecutionIntegrationTests.cs +407 -407
- package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs → UcoPluginTests.cs} +105 -105
- package/vendor/plugin/com.atelierai.unity.copilot/package.json +1 -1
- package/dist/commands/devops/login.d.ts +0 -2
- package/dist/commands/devops/login.js +0 -29
- package/dist/commands/devops/login.js.map +0 -1
- package/dist/commands/devops/setup-mcp.d.ts +0 -2
- package/dist/commands/devops/setup-mcp.js +0 -41
- package/dist/commands/devops/setup-mcp.js.map +0 -1
- package/dist/devops/commands-upstream/bootstrap-local.d.ts +0 -17
- package/dist/devops/commands-upstream/bootstrap-local.js +0 -87
- package/dist/devops/commands-upstream/bootstrap-local.js.map +0 -1
- package/dist/devops/commands-upstream/close.d.ts +0 -57
- package/dist/devops/commands-upstream/close.js +0 -188
- package/dist/devops/commands-upstream/close.js.map +0 -1
- package/dist/devops/commands-upstream/configure.d.ts +0 -2
- package/dist/devops/commands-upstream/configure.js +0 -87
- package/dist/devops/commands-upstream/configure.js.map +0 -1
- package/dist/devops/commands-upstream/create-project.d.ts +0 -2
- package/dist/devops/commands-upstream/create-project.js +0 -43
- package/dist/devops/commands-upstream/create-project.js.map +0 -1
- package/dist/devops/commands-upstream/install-plugin.d.ts +0 -2
- package/dist/devops/commands-upstream/install-plugin.js +0 -64
- package/dist/devops/commands-upstream/install-plugin.js.map +0 -1
- package/dist/devops/commands-upstream/install-unity.d.ts +0 -2
- package/dist/devops/commands-upstream/install-unity.js +0 -72
- package/dist/devops/commands-upstream/install-unity.js.map +0 -1
- package/dist/devops/commands-upstream/login.d.ts +0 -2
- package/dist/devops/commands-upstream/login.js +0 -33
- package/dist/devops/commands-upstream/login.js.map +0 -1
- package/dist/devops/commands-upstream/open.d.ts +0 -32
- package/dist/devops/commands-upstream/open.js +0 -282
- package/dist/devops/commands-upstream/open.js.map +0 -1
- package/dist/devops/commands-upstream/remove-plugin.d.ts +0 -2
- package/dist/devops/commands-upstream/remove-plugin.js +0 -41
- package/dist/devops/commands-upstream/remove-plugin.js.map +0 -1
- package/dist/devops/commands-upstream/run-system-tool.d.ts +0 -1
- package/dist/devops/commands-upstream/run-system-tool.js +0 -13
- package/dist/devops/commands-upstream/run-system-tool.js.map +0 -1
- package/dist/devops/commands-upstream/run-tool-builder.d.ts +0 -25
- package/dist/devops/commands-upstream/run-tool-builder.js +0 -125
- package/dist/devops/commands-upstream/run-tool-builder.js.map +0 -1
- package/dist/devops/commands-upstream/run-tool.d.ts +0 -1
- package/dist/devops/commands-upstream/run-tool.js +0 -13
- package/dist/devops/commands-upstream/run-tool.js.map +0 -1
- package/dist/devops/commands-upstream/setup-mcp.d.ts +0 -2
- package/dist/devops/commands-upstream/setup-mcp.js +0 -68
- package/dist/devops/commands-upstream/setup-mcp.js.map +0 -1
- package/dist/devops/commands-upstream/setup-skills.d.ts +0 -2
- package/dist/devops/commands-upstream/setup-skills.js +0 -167
- package/dist/devops/commands-upstream/setup-skills.js.map +0 -1
- package/dist/devops/commands-upstream/status.d.ts +0 -2
- package/dist/devops/commands-upstream/status.js +0 -87
- package/dist/devops/commands-upstream/status.js.map +0 -1
- package/dist/devops/commands-upstream/update.d.ts +0 -2
- package/dist/devops/commands-upstream/update.js +0 -77
- package/dist/devops/commands-upstream/update.js.map +0 -1
- package/dist/devops/commands-upstream/wait-for-ready.d.ts +0 -2
- package/dist/devops/commands-upstream/wait-for-ready.js +0 -93
- package/dist/devops/commands-upstream/wait-for-ready.js.map +0 -1
- package/dist/devops/lib/setup-mcp.d.ts +0 -35
- package/dist/devops/lib/setup-mcp.js +0 -177
- package/dist/devops/lib/setup-mcp.js.map +0 -1
- package/dist/devops/utils/cloud-login.d.ts +0 -7
- package/dist/devops/utils/cloud-login.js +0 -56
- package/dist/devops/utils/cloud-login.js.map +0 -1
- /package/vendor/plugin/com.atelierai.unity.copilot/Tests/Editor/{McpPluginTests.cs.meta → UcoPluginTests.cs.meta} +0 -0
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import * as ui from '../utils/ui.js';
|
|
4
|
-
import { verbose } from '../utils/ui.js';
|
|
5
|
-
import { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
|
|
6
|
-
import { getAgentById, getAgentIds, listAgentTable } from '../utils/agents.js';
|
|
7
|
-
import { readConfig, isCloudMode } from '../utils/config.js';
|
|
8
|
-
import { runCloudLogin } from '../utils/cloud-login.js';
|
|
9
|
-
function listAgentsWithSkills() {
|
|
10
|
-
listAgentTable('AI Agents \u2014 Skills Support', 'Skills Path', (a) => a.skillsPath ?? '\u2014');
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* POST to the skill-generate endpoint and return the response.
|
|
14
|
-
*/
|
|
15
|
-
async function callGenerateSkills(endpoint, token, body, timeoutMs) {
|
|
16
|
-
const headers = {
|
|
17
|
-
'Content-Type': 'application/json',
|
|
18
|
-
};
|
|
19
|
-
if (token) {
|
|
20
|
-
headers['Authorization'] = `Bearer ${token}`;
|
|
21
|
-
}
|
|
22
|
-
const controller = new AbortController();
|
|
23
|
-
const fetchTimeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
24
|
-
try {
|
|
25
|
-
return await fetch(endpoint, {
|
|
26
|
-
method: 'POST',
|
|
27
|
-
headers,
|
|
28
|
-
body,
|
|
29
|
-
signal: controller.signal,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
finally {
|
|
33
|
-
clearTimeout(fetchTimeout);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export const setupSkillsCommand = new Command('setup-skills')
|
|
37
|
-
.description('Generate skill files for an AI agent')
|
|
38
|
-
.argument('[agent-id]', 'Agent to generate skills for (use --list to see all)')
|
|
39
|
-
.argument('[path]', 'Unity project path (defaults to cwd)')
|
|
40
|
-
.option('--url <url>', 'Server URL override')
|
|
41
|
-
.option('--token <token>', 'Auth token override')
|
|
42
|
-
.option('--list', 'List all agents with skills support status')
|
|
43
|
-
.option('--timeout <ms>', 'Request timeout in milliseconds (default: 60000)', '60000')
|
|
44
|
-
.action(async (agentId, positionalPath, options) => {
|
|
45
|
-
if (options.list) {
|
|
46
|
-
listAgentsWithSkills();
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
if (!agentId) {
|
|
50
|
-
ui.error('Missing required argument: agent-id');
|
|
51
|
-
ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
const agent = getAgentById(agentId);
|
|
55
|
-
if (!agent) {
|
|
56
|
-
ui.error(`Unknown agent: "${agentId}"`);
|
|
57
|
-
ui.info(`Available agent IDs: ${getAgentIds().join(', ')}`);
|
|
58
|
-
process.exit(1);
|
|
59
|
-
}
|
|
60
|
-
if (!agent.skillsPath) {
|
|
61
|
-
ui.error(`Agent "${agent.name}" does not support skills.`);
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
// Resolve project path and validate it is a Unity project
|
|
65
|
-
const projectPath = resolveAndValidateProjectPath(positionalPath, options);
|
|
66
|
-
verbose(`Project path: ${projectPath}`);
|
|
67
|
-
// Resolve skills path (absolute)
|
|
68
|
-
const skillsPath = path.join(projectPath, agent.skillsPath);
|
|
69
|
-
verbose(`Skills path: ${skillsPath}`);
|
|
70
|
-
// Resolve server connection
|
|
71
|
-
let { url: serverUrl, token } = resolveConnection(projectPath, options);
|
|
72
|
-
// Call the MCP server to generate skills
|
|
73
|
-
const endpoint = `${serverUrl}/api/system-tools/unity-skill-generate`;
|
|
74
|
-
verbose(`Endpoint: ${endpoint}`);
|
|
75
|
-
const body = JSON.stringify({ path: agent.skillsPath });
|
|
76
|
-
ui.heading('Generate Skills');
|
|
77
|
-
ui.label('Agent', agent.name);
|
|
78
|
-
ui.label('Skills path', skillsPath);
|
|
79
|
-
ui.label('Server', serverUrl);
|
|
80
|
-
ui.divider();
|
|
81
|
-
const timeoutMs = parseInt(options.timeout ?? '60000', 10);
|
|
82
|
-
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
83
|
-
ui.error(`Invalid timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
const spinner = ui.startSpinner(`Generating skills for ${agent.name}...`);
|
|
87
|
-
try {
|
|
88
|
-
let response = await callGenerateSkills(endpoint, token, body, timeoutMs);
|
|
89
|
-
// Handle 401 in Cloud mode
|
|
90
|
-
if (response.status === 401) {
|
|
91
|
-
await response.text();
|
|
92
|
-
spinner.stop();
|
|
93
|
-
const config = readConfig(projectPath);
|
|
94
|
-
const cloud = config != null && isCloudMode(config);
|
|
95
|
-
const hadToken = !!token;
|
|
96
|
-
if (cloud && !options.token && !hadToken) {
|
|
97
|
-
ui.info('Cloud authentication required. Starting login...');
|
|
98
|
-
console.log();
|
|
99
|
-
const newToken = await runCloudLogin(projectPath);
|
|
100
|
-
if (!newToken) {
|
|
101
|
-
process.exit(1);
|
|
102
|
-
}
|
|
103
|
-
// Token saved. Unity Editor needs to connect with it.
|
|
104
|
-
ui.info('Unity Editor must connect to the cloud server with this token.');
|
|
105
|
-
ui.info('If Unity was already running, restart it to pick up the new token:');
|
|
106
|
-
console.log();
|
|
107
|
-
console.log(` unity-mcp-cli open ${positionalPath ?? '.'}`);
|
|
108
|
-
console.log(` unity-mcp-cli wait-for-ready ${positionalPath ?? '.'}`);
|
|
109
|
-
console.log(` unity-mcp-cli setup-skills ${agentId} ${positionalPath ?? '.'}`);
|
|
110
|
-
console.log();
|
|
111
|
-
process.exit(0);
|
|
112
|
-
}
|
|
113
|
-
else if (cloud && hadToken) {
|
|
114
|
-
// Token exists but was rejected — Unity Editor isn't connected
|
|
115
|
-
ui.error('Cloud server rejected the token. Unity Editor may not be connected yet.');
|
|
116
|
-
ui.info('Make sure Unity Editor is running and connected to the cloud server.');
|
|
117
|
-
ui.info('Try the following:');
|
|
118
|
-
console.log();
|
|
119
|
-
console.log(` unity-mcp-cli open ${positionalPath ?? '.'}`);
|
|
120
|
-
console.log(` unity-mcp-cli wait-for-ready ${positionalPath ?? '.'}`);
|
|
121
|
-
console.log(` unity-mcp-cli setup-skills ${agentId} ${positionalPath ?? '.'}`);
|
|
122
|
-
console.log();
|
|
123
|
-
process.exit(1);
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
ui.error('HTTP 401: Unauthorized. Check your --token value.');
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (!response.ok) {
|
|
131
|
-
spinner.stop();
|
|
132
|
-
const text = await response.text();
|
|
133
|
-
if (response.status === 404) {
|
|
134
|
-
ui.error('The unity-skill-generate tool is not yet available. Please update the Unity-MCP plugin to the latest version.');
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
ui.error(`HTTP ${response.status}: ${response.statusText}`);
|
|
138
|
-
if (text) {
|
|
139
|
-
ui.info(text);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
process.exit(1);
|
|
143
|
-
}
|
|
144
|
-
spinner.success(`Skills generated for ${agent.name}`);
|
|
145
|
-
ui.label('Output path', skillsPath);
|
|
146
|
-
}
|
|
147
|
-
catch (err) {
|
|
148
|
-
spinner.stop();
|
|
149
|
-
handleFetchError(err, timeoutMs);
|
|
150
|
-
process.exit(1);
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
function handleFetchError(err, timeoutMs) {
|
|
154
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
155
|
-
const isTimeout = err instanceof Error && err.name === 'AbortError';
|
|
156
|
-
const isConnectionRefused = message.includes('ECONNREFUSED') || message.includes('fetch failed');
|
|
157
|
-
if (isTimeout) {
|
|
158
|
-
ui.error(`Request timed out after ${timeoutMs / 1000} seconds.`);
|
|
159
|
-
}
|
|
160
|
-
else if (isConnectionRefused) {
|
|
161
|
-
ui.error('MCP Server is not running. Please start Unity Editor with the Unity-MCP plugin installed, then retry.');
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
ui.error(`Failed to generate skills: ${message}`);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=setup-skills.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup-skills.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/setup-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as ui from '../utils/ui.js';
|
|
3
|
-
import { verbose } from '../utils/ui.js';
|
|
4
|
-
import { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
|
|
5
|
-
import { generatePortFromDirectory } from '../utils/port.js';
|
|
6
|
-
import { findUnityProcess } from '../utils/unity-process.js';
|
|
7
|
-
import { probe } from '../utils/probe.js';
|
|
8
|
-
export const statusCommand = new Command('status')
|
|
9
|
-
.description('Check Unity Editor and MCP server connection status')
|
|
10
|
-
.argument('[path]', 'Unity project path (used for config and auto port detection)')
|
|
11
|
-
.option('--path <path>', 'Unity project path (config and auto port detection)')
|
|
12
|
-
.option('--url <url>', 'Direct server URL override (bypasses config)')
|
|
13
|
-
.option('--token <token>', 'Bearer token override (bypasses config)')
|
|
14
|
-
.option('--timeout <ms>', 'Probe timeout in milliseconds (default: 5000)', '5000')
|
|
15
|
-
.action(async (positionalPath, options) => {
|
|
16
|
-
const projectPath = resolveAndValidateProjectPath(positionalPath, options);
|
|
17
|
-
const { url: configUrl, token } = resolveConnection(projectPath, options);
|
|
18
|
-
const localPort = generatePortFromDirectory(projectPath);
|
|
19
|
-
const localUrl = `http://127.0.0.1:${localPort}`;
|
|
20
|
-
const timeoutMs = parseInt(options.timeout ?? '5000', 10);
|
|
21
|
-
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
22
|
-
ui.error(`Invalid --timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
|
|
23
|
-
process.exit(1);
|
|
24
|
-
}
|
|
25
|
-
const headers = {
|
|
26
|
-
'Content-Type': 'application/json',
|
|
27
|
-
};
|
|
28
|
-
if (token) {
|
|
29
|
-
headers['Authorization'] = `Bearer ${token}`;
|
|
30
|
-
}
|
|
31
|
-
ui.heading('Unity-MCP Status');
|
|
32
|
-
ui.label('Project', projectPath);
|
|
33
|
-
ui.divider();
|
|
34
|
-
// 1. Unity process detection
|
|
35
|
-
ui.heading('Unity Editor Process');
|
|
36
|
-
const proc = findUnityProcess(projectPath);
|
|
37
|
-
if (proc) {
|
|
38
|
-
ui.success(`Unity is running (PID: ${proc.pid})`);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
ui.warn('Unity is not running with this project');
|
|
42
|
-
}
|
|
43
|
-
// 2. Local server check
|
|
44
|
-
ui.heading('Local MCP Server');
|
|
45
|
-
ui.label('URL', localUrl);
|
|
46
|
-
const localSpinner = ui.startSpinner(`Probing ${localUrl}...`);
|
|
47
|
-
const localResult = await probe(localUrl, headers, timeoutMs);
|
|
48
|
-
if (localResult.ok) {
|
|
49
|
-
localSpinner.success('Connected');
|
|
50
|
-
verbose(`Local server response: ${JSON.stringify(localResult.data)}`);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
localSpinner.error(`Not available (${localResult.reason})`);
|
|
54
|
-
}
|
|
55
|
-
// 3. Config-resolved server check (if different from local)
|
|
56
|
-
let configResult = null;
|
|
57
|
-
if (configUrl !== localUrl) {
|
|
58
|
-
ui.heading('Config Server');
|
|
59
|
-
ui.label('URL', configUrl);
|
|
60
|
-
const configSpinner = ui.startSpinner(`Probing ${configUrl}...`);
|
|
61
|
-
configResult = await probe(configUrl, headers, timeoutMs);
|
|
62
|
-
if (configResult.ok) {
|
|
63
|
-
configSpinner.success('Connected');
|
|
64
|
-
verbose(`Config server response: ${JSON.stringify(configResult.data)}`);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
configSpinner.error(`Not available (${configResult.reason})`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
ui.divider();
|
|
71
|
-
// Summary — reuse probe results, no duplicate calls
|
|
72
|
-
const localOk = localResult.ok;
|
|
73
|
-
const configOk = configResult ? configResult.ok : localOk;
|
|
74
|
-
if (localOk || configOk) {
|
|
75
|
-
ui.success('MCP server is reachable — ready for tool calls');
|
|
76
|
-
process.exit(0);
|
|
77
|
-
}
|
|
78
|
-
else if (proc) {
|
|
79
|
-
ui.warn('Unity is running but MCP server is not responding yet');
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
ui.error('Unity is not running and MCP server is not reachable');
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
//# sourceMappingURL=status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { spawn } from 'child_process';
|
|
3
|
-
import { platform } from 'os';
|
|
4
|
-
import * as ui from '../utils/ui.js';
|
|
5
|
-
import { fetchLatestVersion, formatUpdateAvailable, isRunningViaNpx } from '../utils/update-check.js';
|
|
6
|
-
import { isNewerVersion } from '../utils/semver.js';
|
|
7
|
-
const PACKAGE_NAME = 'unity-mcp-cli';
|
|
8
|
-
function npmCommand() {
|
|
9
|
-
return platform() === 'win32' ? 'npm.cmd' : 'npm';
|
|
10
|
-
}
|
|
11
|
-
function runNpmInstall(packageSpec) {
|
|
12
|
-
return new Promise((resolve, reject) => {
|
|
13
|
-
const child = spawn(npmCommand(), ['install', '-g', packageSpec], {
|
|
14
|
-
stdio: 'inherit',
|
|
15
|
-
});
|
|
16
|
-
child.on('error', reject);
|
|
17
|
-
child.on('close', (code) => resolve(code ?? 1));
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
export function createUpdateCommand(currentVersion) {
|
|
21
|
-
return new Command('update')
|
|
22
|
-
.description('Update unity-mcp-cli to the latest version')
|
|
23
|
-
.option('--check', 'Only check for updates without installing')
|
|
24
|
-
.action(async (options) => {
|
|
25
|
-
if (isRunningViaNpx()) {
|
|
26
|
-
ui.info('Running via npx — it always fetches the latest published version.');
|
|
27
|
-
ui.info('No update action needed.');
|
|
28
|
-
process.exit(0);
|
|
29
|
-
}
|
|
30
|
-
const spinner = ui.startSpinner('Checking for updates...');
|
|
31
|
-
let latest;
|
|
32
|
-
try {
|
|
33
|
-
latest = await fetchLatestVersion();
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
spinner.error('Failed to check for updates');
|
|
37
|
-
ui.error(err.message || String(err));
|
|
38
|
-
process.exit(1);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
if (!isNewerVersion(currentVersion, latest)) {
|
|
42
|
-
spinner.success(`Already up to date (v${currentVersion})`);
|
|
43
|
-
process.exit(0);
|
|
44
|
-
}
|
|
45
|
-
spinner.success(formatUpdateAvailable(currentVersion, latest));
|
|
46
|
-
console.log();
|
|
47
|
-
// --check mode: exit 2 = outdated (distinct from exit 1 = error)
|
|
48
|
-
if (options.check) {
|
|
49
|
-
process.exit(2);
|
|
50
|
-
}
|
|
51
|
-
ui.info(`Installing ${PACKAGE_NAME}@${latest}...`);
|
|
52
|
-
console.log();
|
|
53
|
-
try {
|
|
54
|
-
const exitCode = await runNpmInstall(`${PACKAGE_NAME}@${latest}`);
|
|
55
|
-
if (exitCode !== 0) {
|
|
56
|
-
console.log();
|
|
57
|
-
ui.error('Update failed.');
|
|
58
|
-
if (platform() === 'win32') {
|
|
59
|
-
ui.info('Try running the terminal as Administrator.');
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
ui.info(`Try: sudo npm install -g ${PACKAGE_NAME}@latest`);
|
|
63
|
-
}
|
|
64
|
-
process.exit(1);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
console.log();
|
|
69
|
-
ui.error(`Could not run npm: ${err.message}`);
|
|
70
|
-
ui.info('Make sure npm is installed and in your PATH.');
|
|
71
|
-
process.exit(1);
|
|
72
|
-
}
|
|
73
|
-
console.log();
|
|
74
|
-
ui.success(`Updated to v${latest}`);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import * as ui from '../utils/ui.js';
|
|
3
|
-
import { verbose } from '../utils/ui.js';
|
|
4
|
-
import { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
|
|
5
|
-
import { generatePortFromDirectory } from '../utils/port.js';
|
|
6
|
-
import { probe } from '../utils/probe.js';
|
|
7
|
-
const MAX_PROBE_TIMEOUT_MS = 10_000;
|
|
8
|
-
/**
|
|
9
|
-
* Build the list of base URLs to probe.
|
|
10
|
-
* When --url is explicit, only that URL is probed.
|
|
11
|
-
* Otherwise, probe both the config-resolved URL and the deterministic local port
|
|
12
|
-
* (if they differ), succeeding on whichever responds first.
|
|
13
|
-
*/
|
|
14
|
-
function resolveProbeUrls(projectPath, options) {
|
|
15
|
-
const { url: configUrl } = resolveConnection(projectPath, options);
|
|
16
|
-
const urls = [configUrl];
|
|
17
|
-
if (!options.url) {
|
|
18
|
-
const localPort = generatePortFromDirectory(projectPath);
|
|
19
|
-
const localUrl = `http://127.0.0.1:${localPort}`;
|
|
20
|
-
if (localUrl !== configUrl) {
|
|
21
|
-
urls.push(localUrl);
|
|
22
|
-
verbose(`Will probe both config URL (${configUrl}) and local URL (${localUrl})`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return urls;
|
|
26
|
-
}
|
|
27
|
-
export const waitForReadyCommand = new Command('wait-for-ready')
|
|
28
|
-
.description('Wait until Unity Editor and MCP server are ready to accept tool calls')
|
|
29
|
-
.argument('[path]', 'Unity project path (used for config and auto port detection)')
|
|
30
|
-
.option('--path <path>', 'Unity project path (config and auto port detection)')
|
|
31
|
-
.option('--url <url>', 'Direct server URL override (bypasses config)')
|
|
32
|
-
.option('--token <token>', 'Bearer token override (bypasses config)')
|
|
33
|
-
.option('--timeout <ms>', 'Maximum time to wait in milliseconds (default: 120000)', '120000')
|
|
34
|
-
.option('--interval <ms>', 'Polling interval in milliseconds (default: 3000)', '3000')
|
|
35
|
-
.action(async (positionalPath, options) => {
|
|
36
|
-
const projectPath = resolveAndValidateProjectPath(positionalPath, options);
|
|
37
|
-
const { token } = resolveConnection(projectPath, options);
|
|
38
|
-
const probeUrls = resolveProbeUrls(projectPath, options);
|
|
39
|
-
const timeoutMs = parseInt(options.timeout ?? '120000', 10);
|
|
40
|
-
const intervalMs = parseInt(options.interval ?? '3000', 10);
|
|
41
|
-
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
42
|
-
ui.error(`Invalid --timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
if (!Number.isFinite(intervalMs) || intervalMs <= 0) {
|
|
46
|
-
ui.error(`Invalid --interval value: "${options.interval}". Must be a positive integer (milliseconds).`);
|
|
47
|
-
process.exit(1);
|
|
48
|
-
}
|
|
49
|
-
const headers = {
|
|
50
|
-
'Content-Type': 'application/json',
|
|
51
|
-
};
|
|
52
|
-
if (token) {
|
|
53
|
-
headers['Authorization'] = `Bearer ${token}`;
|
|
54
|
-
}
|
|
55
|
-
for (const url of probeUrls) {
|
|
56
|
-
verbose(`Probe target: ${url}`);
|
|
57
|
-
}
|
|
58
|
-
verbose(`Timeout: ${timeoutMs}ms, Interval: ${intervalMs}ms`);
|
|
59
|
-
const spinner = ui.startSpinner('Waiting for Unity Editor and MCP server...');
|
|
60
|
-
const startTime = Date.now();
|
|
61
|
-
while (true) {
|
|
62
|
-
const elapsed = Date.now() - startTime;
|
|
63
|
-
if (elapsed >= timeoutMs) {
|
|
64
|
-
spinner.error(`Timed out after ${(timeoutMs / 1000).toFixed(1)}s waiting for MCP server`);
|
|
65
|
-
process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
const remaining = Math.ceil((timeoutMs - elapsed) / 1000);
|
|
68
|
-
spinner.text = `Waiting for Unity Editor and MCP server... (${remaining}s remaining)`;
|
|
69
|
-
const probeTimeout = Math.min(intervalMs, MAX_PROBE_TIMEOUT_MS);
|
|
70
|
-
// Race probes: resolve as soon as any succeeds, don't wait for slow ones
|
|
71
|
-
const ready = await new Promise(resolve => {
|
|
72
|
-
let pending = probeUrls.length;
|
|
73
|
-
for (const url of probeUrls) {
|
|
74
|
-
probe(url, headers, probeTimeout).then(result => {
|
|
75
|
-
if (result.ok)
|
|
76
|
-
resolve(result);
|
|
77
|
-
else if (--pending === 0)
|
|
78
|
-
resolve(null);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
if (ready?.ok) {
|
|
83
|
-
const totalSeconds = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
84
|
-
spinner.success(`MCP server is ready at ${ready.baseUrl} (connected in ${totalSeconds}s)`);
|
|
85
|
-
process.exit(0);
|
|
86
|
-
}
|
|
87
|
-
const remainingMs = timeoutMs - (Date.now() - startTime);
|
|
88
|
-
if (remainingMs <= 0)
|
|
89
|
-
continue;
|
|
90
|
-
await new Promise(resolve => setTimeout(resolve, Math.min(intervalMs, remainingMs)));
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=wait-for-ready.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wait-for-ready.js","sourceRoot":"","sources":["../../../src/devops/commands-upstream/wait-for-ready.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { getAgentById } from '../utils/agents.js';
|
|
2
|
-
import type { SetupMcpOptions, SetupMcpResult } from './types.js';
|
|
3
|
-
export interface AgentMcpProps {
|
|
4
|
-
/** Absolute path of the agent's MCP config file for this project. */
|
|
5
|
-
configPath: string;
|
|
6
|
-
/** Managed-entry properties to reconcile into the config. */
|
|
7
|
-
props: Record<string, unknown>;
|
|
8
|
-
/** Stale keys the writer strips from the managed entry. */
|
|
9
|
-
removeKeys: string[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Compute the managed MCP server entry an agent's config should carry for a
|
|
13
|
-
* project, from the project's live `UserSettings/uco-config.json`
|
|
14
|
-
* (the same resolution `setupMcp` performs). Shared by `setupMcp` and
|
|
15
|
-
* `uco update`'s reconciliation so both always write the same entry.
|
|
16
|
-
*/
|
|
17
|
-
export declare function computeAgentMcpProps(agent: NonNullable<ReturnType<typeof getAgentById>>, projectPath: string, overrides?: {
|
|
18
|
-
url?: string;
|
|
19
|
-
token?: string;
|
|
20
|
-
}): AgentMcpProps;
|
|
21
|
-
/**
|
|
22
|
-
* Write MCP configuration for the given AI agent, so it can talk to
|
|
23
|
-
* Unity-MCP. Library-safe: no stdout noise, no process.exit, no throws
|
|
24
|
-
* past the public boundary.
|
|
25
|
-
*
|
|
26
|
-
* The returned `SetupMcpResult` is a discriminated union — narrow with
|
|
27
|
-
* `result.kind === 'success'` to access `agentId` / `configPath` /
|
|
28
|
-
* `transport`, or `result.kind === 'failure'` to access `error`.
|
|
29
|
-
*/
|
|
30
|
-
export declare function setupMcp(opts: SetupMcpOptions): Promise<SetupMcpResult>;
|
|
31
|
-
/**
|
|
32
|
-
* List every agent id known to the `setupMcp` function. Useful for
|
|
33
|
-
* consumer UIs that want to render a picker.
|
|
34
|
-
*/
|
|
35
|
-
export declare function listAgentIds(): string[];
|