// 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
);