using AIStudio.Agents;
using AIStudio.Agents.AssistantAudit;
using AIStudio.Assistants.Builder;
using AIStudio.Assistants.ERI;
using AIStudio.Assistants.PromptOptimizer;
using AIStudio.Assistants.SWOTAnalysis;
using AIStudio.Tools.PowerPoint;
using AIStudio.Tools.Services;
namespace AIStudio.Tests.Serialization;
public static partial class JsonTestRoots
{
///
/// The JSON which models write for the agents and assistants of AI Studio, apart from the Visual Briefing
/// assistant.
///
public static IEnumerable ModelAnswers()
{
TestHost.PrepareStaticState();
// The agents, which select data sources, check retrieved passages, and audit assistant plugins:
yield return Case(new(typeof(List), AgentBase.JSON_SERIALIZER_OPTIONS));
yield return Case(new(typeof(RetrievalContextValidationResult), AgentBase.JSON_SERIALIZER_OPTIONS));
yield return Case(new(typeof(AssistantAuditResult), AgentBase.JSON_SERIALIZER_OPTIONS));
// The Assistant Builder, for assistant plugins and for direct chat launchers:
yield return Case(new(typeof(LuaResponse), LuaResponse.JSON_OPTIONS));
yield return Case(new(typeof(LauncherTextsResponse), LauncherTextsResponse.JSON_OPTIONS));
yield return Case(new(typeof(PromptOptimizationResult), AssistantPromptOptimizer.JSON_OPTIONS));
yield return Case(new(typeof(SwotCategoryAnalysisResult), SwotModelAnswer.JSON_OPTIONS));
yield return Case(new(typeof(SwotModerationResult), SwotModelAnswer.JSON_OPTIONS));
yield return Case(new(typeof(ERIServerFileList), ERIServerFileList.JSON_OPTIONS));
yield return Case(new(typeof(SlideDeckSpec.DeckDto), SlideDeckSpec.JSON_OPTIONS));
}
///
/// The JSON which the Assistant Builder and the moderation of a SWOT analysis put into their prompts.
///
public static IEnumerable ModelPrompts()
{
TestHost.PrepareStaticState();
var untrusted = AssistantPluginGenerationService.UNTRUSTED_PROMPT_JSON_OPTIONS;
yield return Case(new(typeof(AssistantBuilderDraftPromptData), untrusted));
yield return Case(new(typeof(AssistantBuilderGenerationPromptData), untrusted));
yield return Case(new(typeof(AssistantBuilderLauncherPromptData), untrusted));
yield return Case(new(typeof(AssistantBuilderRevisionPromptData), untrusted));
yield return Case(new(typeof(Dictionary), SwotAnalysisModeration.JSON_OPTIONS));
}
}