Editor/Tools/PublishingTools.cs
#nullable enable
using System;
using Sandbox;
namespace Editor.Mcp
{
public static partial class SboxMcpAssistant
{
[McpTool( "pocketknife_open_publish_wizard" )]
public static string OpenPublishWizard()
{
try
{
var project = Project.Current;
if ( project is null )
{
return McpJson.Write( ToolOutcome<object>.Failure( null, ToolStatus.Unavailable, "publish.no_active_project", "No active project is loaded in the editor." ) );
}
var wizard = EditorRuntime.InvokeStatic( "Editor.Wizards.PublishWizard", "Open", project, null );
if ( wizard is null )
{
return McpJson.Write( ToolOutcome<object>.Failure( new { Project = project.Config.Ident, ProjectTitle = project.Config.Title }, ToolStatus.Unavailable, "publish.wizard_unavailable", "The loaded editor build does not expose Editor.Wizards.PublishWizard.Open." ) );
}
return McpJson.Write( ToolOutcome<object>.Degraded(
new { Project = project.Config.Ident, ProjectTitle = project.Config.Title, FullIdent = $"{project.Config.Org}.{project.Config.Ident}", WizardOpened = true },
"publish.requires_user_confirmation",
"The publish wizard is open. Account login, org selection, metadata review, and the final upload/publish confirmation must be completed in the editor UI." ) );
}
catch ( Exception ex )
{
return McpJson.Write( ToolOutcome<object>.Failure( null, ToolStatus.Failed, "publish.open_failed", "Opening the publish wizard failed.", ex ) );
}
}
}
}