// Copyright (c) Microsoft. All rights reserved. using System.Text.Json; using System.Text.Json.Serialization; namespace Microsoft.Agents.AI.DevUI.Entities; /// /// Information about an environment variable required by an entity. /// internal sealed record EnvVarRequirement( [property: JsonPropertyName("name")] string Name, [property: JsonPropertyName("description")] string? Description = null, [property: JsonPropertyName("required")] bool Required = true, [property: JsonPropertyName("example")] string? Example = null ); /// /// Information about an entity (agent or workflow). /// internal sealed record EntityInfo( [property: JsonPropertyName("id")] string Id, [property: JsonPropertyName("type")] string Type, [property: JsonPropertyName("name")] string Name, [property: JsonPropertyName("description")] string? Description = null, [property: JsonPropertyName("framework")] string Framework = "dotnet", [property: JsonPropertyName("tools")] List? Tools = null, [property: JsonPropertyName("metadata")] Dictionary? Metadata = null ) { [JsonPropertyName("source")] public string? Source { get; init; } = "di"; [JsonPropertyName("original_url")] public string? OriginalUrl { get; init; } // Workflow-specific fields [JsonPropertyName("required_env_vars")] public List? RequiredEnvVars { get; init; } [JsonPropertyName("executors")] public List? Executors { get; init; } [JsonPropertyName("workflow_dump")] public JsonElement? WorkflowDump { get; init; } [JsonPropertyName("input_schema")] public JsonElement? InputSchema { get; init; } [JsonPropertyName("input_type_name")] public string? InputTypeName { get; init; } [JsonPropertyName("start_executor_id")] public string? StartExecutorId { get; init; } }; /// /// Response containing a list of discovered entities. /// internal sealed record DiscoveryResponse( [property: JsonPropertyName("entities")] List Entities );