# WorkflowDescriptor

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/api/tracon.workflowdescriptor/
> Summary: WorkflowDescriptor: Represents a summary view of a workflow listed in the catalog.

<div class="api-provenance">Namespace Tracon · Assembly <code>Tracon.Abstractions.dll</code></div>

Represents a summary view of a workflow listed in the catalog.

```csharp
public sealed record WorkflowDescriptor : IEquatable<WorkflowDescriptor>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.workflowdescriptor/">WorkflowDescriptor</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;WorkflowDescriptor&gt;</a></dd><dt>Inherited Members</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object?, object?)</a>, <a href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a></dd></dl>

## Remarks

Workflows defined in code do not carry a declarative
[WorkflowDefinition](/api/tracon.workflowdefinition/): they come from a factory, and their
graph is only known after compilation. For such a record,
[WorkflowDescriptor.Kind](/api/tracon.workflowdescriptor/#Tracon_WorkflowDescriptor_Kind) and [WorkflowDescriptor.AgentNames](/api/tracon.workflowdescriptor/#Tracon_WorkflowDescriptor_AgentNames) stay empty; the catalog
still shows the name and description.

## Constructors

### <a id="Tracon_WorkflowDescriptor__ctor"></a> WorkflowDescriptor\(\)

```csharp
public WorkflowDescriptor()
```

## Properties

### <a id="Tracon_WorkflowDescriptor_AgentNames"></a> AgentNames

Gets the agent names entering the graph. Can be empty for code-defined workflows.

```csharp
public IReadOnlyList<string> AgentNames { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[string](https://learn.microsoft.com/dotnet/api/system.string)\>

### <a id="Tracon_WorkflowDescriptor_Description"></a> Description

Gets the short description.

```csharp
public string? Description { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)?

### <a id="Tracon_WorkflowDescriptor_DisplayName"></a> DisplayName

Gets the display name shown in the UI.

```csharp
public string? DisplayName { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)?

### <a id="Tracon_WorkflowDescriptor_Kind"></a> Kind

Gets the built-in pattern. [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) for workflows
defined by a factory in code: a free-form graph does not correspond
to a pattern.

```csharp
public WorkflowKind? Kind { get; init; }
```

#### Property Value

 [WorkflowKind](/api/tracon.workflowkind/)?

### <a id="Tracon_WorkflowDescriptor_Name"></a> Name

Gets the workflow's unique name.

```csharp
public required string Name { get; init; }
```

#### Property Value

 [string](https://learn.microsoft.com/dotnet/api/system.string)

### <a id="Tracon_WorkflowDescriptor_Nodes"></a> Nodes

Gets the mixed agent/function node list for a Sequential workflow that
uses function nodes. Empty for every other definition.

```csharp
public IReadOnlyList<WorkflowNodeReference> Nodes { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[WorkflowNodeReference](/api/tracon.workflownodereference/)\>

### <a id="Tracon_WorkflowDescriptor_Origin"></a> Origin

Gets the source of the definition.

```csharp
public required AgentDefinitionOrigin Origin { get; init; }
```

#### Property Value

 [AgentDefinitionOrigin](/api/tracon.agentdefinitionorigin/)

### <a id="Tracon_WorkflowDescriptor_Parameters"></a> Parameters

Gets the run parameters the workflow accepts. Empty for a workflow that
takes none. For a workflow defined in code it is the schema its registration declared.

```csharp
public IReadOnlyList<AgentParameter> Parameters { get; init; }
```

#### Property Value

 [IReadOnlyList](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist\-1)<[AgentParameter](/api/tracon.agentparameter/)\>

### <a id="Tracon_WorkflowDescriptor_RequestTimeout"></a> RequestTimeout

Gets how long a human request of the workflow may wait for an answer; [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null)
when it waits without limit. For a stored workflow this is the current version's value; a run
that waits keeps the limit of the version it recorded.

```csharp
public TimeSpan? RequestTimeout { get; init; }
```

#### Property Value

 [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan)?

### <a id="Tracon_WorkflowDescriptor_ResponseMode"></a> ResponseMode

Gets how the workflow treats more than one answer to the same pending human request.
For a stored workflow this is the current version's mode; a run that waits keeps the
mode of the version it recorded.

```csharp
public WorkflowResponseMode ResponseMode { get; init; }
```

#### Property Value

 [WorkflowResponseMode](/api/tracon.workflowresponsemode/)

### <a id="Tracon_WorkflowDescriptor_UpdatedAt"></a> UpdatedAt

Gets the last modification time (UTC).

```csharp
public DateTimeOffset? UpdatedAt { get; init; }
```

#### Property Value

 [DateTimeOffset](https://learn.microsoft.com/dotnet/api/system.datetimeoffset)?

### <a id="Tracon_WorkflowDescriptor_Version"></a> Version

Gets the definition version. Always 1 for code-defined workflows.

```csharp
public int Version { get; init; }
```

#### Property Value

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

## Methods

### <a id="Tracon_WorkflowDescriptor_Equals_System_Object_"></a> Equals\(object?\)

```csharp
public override bool Equals(object? obj)
```

#### Parameters

`obj` [object](https://learn.microsoft.com/dotnet/api/system.object)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_WorkflowDescriptor_Equals_Tracon_WorkflowDescriptor_"></a> Equals\(WorkflowDescriptor?\)

```csharp
public bool Equals(WorkflowDescriptor? other)
```

#### Parameters

`other` [WorkflowDescriptor](/api/tracon.workflowdescriptor/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_WorkflowDescriptor_GetHashCode"></a> GetHashCode\(\)

```csharp
public override int GetHashCode()
```

#### Returns

 [int](https://learn.microsoft.com/dotnet/api/system.int32)

### <a id="Tracon_WorkflowDescriptor_ToString"></a> ToString\(\)

```csharp
public override string ToString()
```

#### Returns

 [string](https://learn.microsoft.com/dotnet/api/system.string)

## Operators

### <a id="Tracon_WorkflowDescriptor_op_Equality_Tracon_WorkflowDescriptor_Tracon_WorkflowDescriptor_"></a> operator ==\(WorkflowDescriptor?, WorkflowDescriptor?\)

```csharp
public static bool operator ==(WorkflowDescriptor? left, WorkflowDescriptor? right)
```

#### Parameters

`left` [WorkflowDescriptor](/api/tracon.workflowdescriptor/)?

`right` [WorkflowDescriptor](/api/tracon.workflowdescriptor/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)

### <a id="Tracon_WorkflowDescriptor_op_Inequality_Tracon_WorkflowDescriptor_Tracon_WorkflowDescriptor_"></a> operator \!=\(WorkflowDescriptor?, WorkflowDescriptor?\)

```csharp
public static bool operator !=(WorkflowDescriptor? left, WorkflowDescriptor? right)
```

#### Parameters

`left` [WorkflowDescriptor](/api/tracon.workflowdescriptor/)?

`right` [WorkflowDescriptor](/api/tracon.workflowdescriptor/)?

#### Returns

 [bool](https://learn.microsoft.com/dotnet/api/system.boolean)
