Editor/ToolDefinitions.cs
using System.Linq;

namespace SboxMcpServer;

/// <summary>
/// Aggregates all MCP tool schema definitions returned by tools/list.
/// </summary>
internal static class ToolDefinitions
{
	internal static object[] All => new object[]
	{
		// ── Original 9 read + asset + console tools ────────────────────────
		SceneToolDefinitions.GetSceneSummary,
		SceneToolDefinitions.GetSceneHierarchy,
		SceneToolDefinitions.FindGameObjects,
		SceneToolDefinitions.FindGameObjectsInRadius,
		SceneToolDefinitions.GetGameObjectDetails,
		SceneToolDefinitions.GetComponentProperties,
		SceneToolDefinitions.GetPrefabInstances,
		AssetToolDefinitions.BrowseAssets,
		AssetToolDefinitions.GetEditorContext,
		ConsoleToolDefinitions.ListConsoleCommands,
		ConsoleToolDefinitions.RunConsoleCommand,

		// ── New write tools ────────────────────────────────────────────────
		OzmiumWriteHandlers.SchemaCreateGameObject,
		OzmiumWriteHandlers.SchemaAddComponent,
		OzmiumWriteHandlers.SchemaRemoveComponent,
		OzmiumWriteHandlers.SchemaSetComponentProperty,
		OzmiumWriteHandlers.SchemaDestroyGameObject,
		OzmiumWriteHandlers.SchemaReparentGameObject,
		OzmiumWriteHandlers.SchemaSetGameObjectTags,
		OzmiumWriteHandlers.SchemaInstantiatePrefab,
		OzmiumWriteHandlers.SchemaSaveScene,
		OzmiumWriteHandlers.SchemaUndo,
		OzmiumWriteHandlers.SchemaRedo,

		// ── Batch transform & object management ────────────────────────────
		OzmiumWriteHandlers.SchemaSetGameObjectTransform,
		OzmiumWriteHandlers.SchemaDuplicateGameObject,
		OzmiumWriteHandlers.SchemaSetGameObjectEnabled,
		OzmiumWriteHandlers.SchemaSetGameObjectName,
		OzmiumWriteHandlers.SchemaSetComponentEnabled,

		// ── New asset tools ────────────────────────────────────────────────
		OzmiumAssetHandlers.SchemaGetModelInfo,
		OzmiumAssetHandlers.SchemaGetMaterialProperties,
		OzmiumAssetHandlers.SchemaGetPrefabStructure,
		OzmiumAssetHandlers.SchemaReloadAsset,
		OzmiumAssetHandlers.SchemaGetComponentTypes,
		OzmiumAssetHandlers.SchemaSearchAssets,
		OzmiumAssetHandlers.SchemaGetSceneStatistics,

		// ── New editor control tools ───────────────────────────────────────
		OzmiumEditorHandlers.SchemaSelectGameObject,
		OzmiumEditorHandlers.SchemaOpenAsset,
		OzmiumEditorHandlers.SchemaGetPlayState,
		OzmiumEditorHandlers.SchemaStartPlayMode,
		OzmiumEditorHandlers.SchemaStopPlayMode,
		OzmiumEditorHandlers.SchemaGetEditorLog,
		OzmiumEditorHandlers.SchemaGetSelectedObjects,
		OzmiumEditorHandlers.SchemaSetSelectedObjects,
		OzmiumEditorHandlers.SchemaClearSelection,

		// ── Mesh editing tools ───────────────────────────────────────────────
		MeshEditHandlers.SchemaCreateBlock,
		MeshEditHandlers.SchemaSetFaceMaterial,
		MeshEditHandlers.SchemaSetTextureParameters,
		MeshEditHandlers.SchemaSetVertexPosition,
		MeshEditHandlers.SchemaSetVertexColor,
		MeshEditHandlers.SchemaSetVertexBlend,
		MeshEditHandlers.SchemaGetMeshInfo,

		// ── Lighting tools ──────────────────────────────────────────────────
		LightingToolHandlers.SchemaCreateLight,
		LightingToolHandlers.SchemaConfigureLight,
		LightingToolHandlers.SchemaCreateSkyBox,
		LightingToolHandlers.SchemaSetSkyBox,
		LightingToolHandlers.SchemaCreateAmbientLight,
		LightingToolHandlers.SchemaCreateIndirectLightVolume,

		// ── Physics & collider tools ────────────────────────────────────────
		PhysicsToolHandlers.SchemaAddCollider,
		PhysicsToolHandlers.SchemaConfigureCollider,
		PhysicsToolHandlers.SchemaAddRigidbody,
		PhysicsToolHandlers.SchemaCreateCharacterController,
		PhysicsToolHandlers.SchemaAddPlaneCollider,
		PhysicsToolHandlers.SchemaAddHullCollider,
		PhysicsToolHandlers.SchemaCreateModelPhysics,

		// ── Audio tools ─────────────────────────────────────────────────────
		AudioToolHandlers.SchemaCreateSoundPoint,
		AudioToolHandlers.SchemaConfigureSound,
		AudioToolHandlers.SchemaCreateSoundscapeTrigger,
		AudioToolHandlers.SchemaCreateSoundBox,
		AudioToolHandlers.SchemaCreateDspVolume,
		AudioToolHandlers.SchemaCreateAudioListener,

		// ── Camera tools ────────────────────────────────────────────────────
		CameraToolHandlers.SchemaCreateCamera,
		CameraToolHandlers.SchemaConfigureCamera,

		// ── Effect & environment tools ──────────────────────────────────────
		EffectToolHandlers.SchemaCreateParticleEffect,
		EffectToolHandlers.SchemaConfigureParticleEffect,
		EffectToolHandlers.SchemaCreateFogVolume,
		EffectToolHandlers.SchemaConfigurePostProcessing,
		EffectToolHandlers.SchemaCreateEnvironmentLight,

		// ── Utility tools ───────────────────────────────────────────────────
		UtilityToolHandlers.SchemaGetAssetDependencies,
		UtilityToolHandlers.SchemaBatchTransform,
		UtilityToolHandlers.SchemaCopyComponent,
		UtilityToolHandlers.SchemaGetObjectBounds,

		// ── Navigation tools ────────────────────────────────────────────────
		NavigationToolHandlers.SchemaCreateNavMeshAgent,
		NavigationToolHandlers.SchemaCreateNavMeshLink,
		NavigationToolHandlers.SchemaCreateNavMeshArea,

		// ── Rendering tools ─────────────────────────────────────────────────
		RenderingToolHandlers.SchemaCreateRenderEntity,

		// ── Game tools ──────────────────────────────────────────────────────
		GameToolHandlers.SchemaCreateGameEntity,

		// ── Effect & physics extension tools ────────────────────────────────
		EffectToolHandlers.SchemaCreateBeamEffect,
		EffectToolHandlers.SchemaCreateVerletRope,
		EffectToolHandlers.SchemaCreateJoint,
		EffectToolHandlers.SchemaCreateClutter,
		EffectToolHandlers.SchemaCreateRadiusDamage,

		// ── Editor & scene extension tools ──────────────────────────────────
		OzmiumEditorHandlers.SchemaFrameSelection,
		OzmiumEditorHandlers.SchemaSaveSceneAs,
		OzmiumEditorHandlers.SchemaGetSceneUnsaved,
		OzmiumEditorHandlers.SchemaBreakFromPrefab,
		OzmiumEditorHandlers.SchemaUpdateFromPrefab,
	};
}