Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions COMPATIBILITY.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ A Claude Pro or Max plan cannot serve the agent. Anthropic allows that login onl

From a clone of this repo, run the tool with `dotnet run --project src/E2E.Cli -- login github-copilot`.

An agent entry also takes `judge` (the model id for `assert`, `waitFor`, and `extract`), `system`, `context`, `maxSteps`, `maxModelCalls`, `judgmentTimeout`, and `providerOptions`. `agents` can name more agents than `default`; a call picks one with its `Agent` option, such as `new ActOptions { Agent = "careful" }`. Project tools (`AgentTools` on the fixture) are code, so they are not config keys; see topic `agent`. So is a custom executor (`AgentExecutor` on the fixture, `AgentOptions.Executor`), which replaces the built-in agent for `act` and `assert` with a `ToolLoop` of your own tools or your own `IStepExecutor`; see topic `agent`.
An agent entry also takes `judge` (the model id for `assert`, `waitFor`, and `extract`), `system`, `context`, `maxSteps`, `maxModelCalls`, `judgmentTimeout`, `maxObservationBytes` (the most bytes of the screen one model request carries, 1024 through 16777216, 262144 by default), `maxInputTokens` (the input one model request may carry, 1 through 1000000, 64000 by default; a dense screen is cut to fit under it), and `providerOptions`. `agents` can name more agents than `default`; a call picks one with its `Agent` option, such as `new ActOptions { Agent = "careful" }`. Project tools (`AgentTools` on the fixture) are code, so they are not config keys; see topic `agent`. So is a custom executor (`AgentExecutor` on the fixture, `AgentOptions.Executor`), which replaces the built-in agent for `act` and `assert` with a `ToolLoop` of your own tools or your own `IStepExecutor`; see topic `agent`.

`cache.mode` is `off`, `read-only`, or `read-write`. Unset, it is `read-write` locally and `read-only` when `CI` is set. `cache.strict` fails a recording that no longer matches with `REPLAY_STALE` instead of running the step live. Under `cache.strict`, retries replay too, and the run never writes the cache. `cache.dir` resolves against the config file's directory. `E2E_CACHE_DIR` replaces it, so checkouts and worktrees of one project can share a replay cache without editing the config; the mode stays as configured. Parallel runs can share the directory: each write replaces its entry file atomically, and two writers on one key leave the last write. On Windows, a write the file system refuses while another write replaces the same entry, or while a reader holds it open, is retried for a moment before the step reports it as not written.

Expand Down
14 changes: 7 additions & 7 deletions docs-site/src/content/docs/api/E2E/ActOptions.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Values passed into one `CancellationToken)` goal. Put fresh data in [Unique(stri

**Inheritance:** [object](https://learn.microsoft.com/dotnet/api/system.object)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L902)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L949)

## Properties

Expand All @@ -42,7 +42,7 @@ The named agent that runs the step. Defaults to `default`.

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L915)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L962)

<a id="E2E_ActOptions_MaxModelCalls_"></a>
<a id="E2E_ActOptions_MaxModelCalls"></a>
Expand All @@ -59,7 +59,7 @@ Model-call budget. Defaults to the configured `MaxModelCalls` and can only lower

**Value:** [int?](https://learn.microsoft.com/dotnet/api/system.int32)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L912)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L959)

<a id="E2E_ActOptions_MaxSteps_"></a>
<a id="E2E_ActOptions_MaxSteps"></a>
Expand All @@ -76,7 +76,7 @@ Action budget. Defaults to the configured `MaxSteps` (25) and can only lower it.

**Value:** [int?](https://learn.microsoft.com/dotnet/api/system.int32)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L909)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L956)

<a id="E2E_ActOptions_OnAction_"></a>
<a id="E2E_ActOptions_OnAction"></a>
Expand All @@ -95,7 +95,7 @@ nothing from it. A throw fails the step.

**Value:** [ActionHook](/api/E2E/ActionHook/)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L922)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L969)

<a id="E2E_ActOptions_Params_"></a>
<a id="E2E_ActOptions_Params"></a>
Expand All @@ -110,7 +110,7 @@ public IReadOnlyDictionary<string, object?>? Params { get; init; }

**Value:** [IReadOnlyDictionary&lt;string, object&gt;](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlydictionary-2)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L904)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L951)

<a id="E2E_ActOptions_Timeout_"></a>
<a id="E2E_ActOptions_Timeout"></a>
Expand All @@ -125,4 +125,4 @@ public TimeSpan? Timeout { get; init; }

**Value:** [TimeSpan?](https://learn.microsoft.com/dotnet/api/system.timespan)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L906)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L953)
10 changes: 5 additions & 5 deletions docs-site/src/content/docs/api/E2E/ActResult.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public sealed class ActResult

**Inheritance:** [object](https://learn.microsoft.com/dotnet/api/system.object)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L999)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1046)

## Properties

Expand All @@ -40,7 +40,7 @@ Actions the step performed, replayed or live, counting ones that failed.

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

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1013)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1060)

<a id="E2E_ActResult_Cache_"></a>
<a id="E2E_ActResult_Cache"></a>
Expand All @@ -58,7 +58,7 @@ Null when caching is off. `self-finalized` finished with no model call,

**Value:** [CacheInfo](/api/E2E/CacheInfo/)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1007)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1054)

<a id="E2E_ActResult_ModelCalls_"></a>
<a id="E2E_ActResult_ModelCalls"></a>
Expand All @@ -75,7 +75,7 @@ Model calls the step spent. 0 when a replay finished it.

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

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1010)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1057)

<a id="E2E_ActResult_Summary_"></a>
<a id="E2E_ActResult_Summary"></a>
Expand All @@ -90,4 +90,4 @@ public required string Summary { get; init; }

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1001)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L1048)
12 changes: 6 additions & 6 deletions docs-site/src/content/docs/api/E2E/ActionEvent.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ One completed action of an `agent.act` step, as [OnAction](/api/E2E/ActOptions/#

**Implements:** [IEquatable&lt;ActionEvent&gt;](https://learn.microsoft.com/dotnet/api/system.iequatable-1)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L933)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L980)

## Constructors

Expand All @@ -51,7 +51,7 @@ One completed action of an `agent.act` step, as [OnAction](/api/E2E/ActOptions/#
| `Summary` | [string](https://learn.microsoft.com/dotnet/api/system.string) | What the action did, secrets redacted. |
| `Source` | [ActionSource](/api/E2E/ActionSource/) | Who chose the action. |

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L933)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L980)

## Properties

Expand All @@ -70,7 +70,7 @@ The committed action, such as `tap` or `navigate`; a mutating project tool reads

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L933)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L980)

<a id="E2E_ActionEvent_Index_"></a>
<a id="E2E_ActionEvent_Index"></a>
Expand All @@ -87,7 +87,7 @@ public int Index { get; init; }

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

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L933)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L980)

<a id="E2E_ActionEvent_Source_"></a>
<a id="E2E_ActionEvent_Source"></a>
Expand All @@ -104,7 +104,7 @@ Who chose the action.

**Value:** [ActionSource](/api/E2E/ActionSource/)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L933)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L980)

<a id="E2E_ActionEvent_Summary_"></a>
<a id="E2E_ActionEvent_Summary"></a>
Expand All @@ -121,4 +121,4 @@ What the action did, secrets redacted.

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L933)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L980)
2 changes: 1 addition & 1 deletion docs-site/src/content/docs/api/E2E/ActionHook.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,4 @@ The `onAction` hook of an `agent.act` call.

**Returns:** [Task](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L926)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L973)
6 changes: 3 additions & 3 deletions docs-site/src/content/docs/api/E2E/ActionSource.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public enum ActionSource

Who chose an action an [ActionEvent](/api/E2E/ActionEvent/) reports.

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L936)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L983)

## Fields

Expand All @@ -39,7 +39,7 @@ The executor chose the action.

**Value:** [ActionSource](./)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L939)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L986)

<a id="E2E_ActionSource_Replay"></a>

Expand All @@ -55,4 +55,4 @@ The replay cache replayed the action.

**Value:** [ActionSource](./)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L942)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Agent/Agent.cs#L989)
68 changes: 51 additions & 17 deletions docs-site/src/content/docs/api/E2E/AgentConfig.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Each entry starts from the defaults; none inherits another's values.

**Inheritance:** [object](https://learn.microsoft.com/dotnet/api/system.object)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L741)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L768)

## Fields

Expand All @@ -41,7 +41,7 @@ public const string DefaultProvider = "openai"

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L743)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L770)

## Properties

Expand All @@ -60,7 +60,7 @@ The environment variable holding the key. Unset, the one the provider reads, suc

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L774)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L801)

<a id="E2E_AgentConfig_BaseUrl_"></a>
<a id="E2E_AgentConfig_BaseUrl"></a>
Expand All @@ -77,7 +77,7 @@ The API root. Unset, the provider's own; for `azure` it is built from `AZURE_RES

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L771)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L798)

<a id="E2E_AgentConfig_Context_"></a>
<a id="E2E_AgentConfig_Context"></a>
Expand All @@ -94,7 +94,7 @@ Project context told to every model call, at most 16384 UTF-8 bytes.

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L768)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L795)

<a id="E2E_AgentConfig_Judge_"></a>
<a id="E2E_AgentConfig_Judge"></a>
Expand All @@ -111,7 +111,7 @@ The model id that judges `assert`, `waitFor`, and `extract`. Unset, the judge is

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L759)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L786)

<a id="E2E_AgentConfig_JudgmentTimeout_"></a>
<a id="E2E_AgentConfig_JudgmentTimeout"></a>
Expand All @@ -126,7 +126,24 @@ public TimeSpan JudgmentTimeout { get; init; }

**Value:** [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L782)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L809)

<a id="E2E_AgentConfig_MaxInputTokens_"></a>
<a id="E2E_AgentConfig_MaxInputTokens"></a>

### MaxInputTokens


```csharp
public int MaxInputTokens { get; init; }
```


1 through 1000000. See [MaxInputTokens](/api/E2E/AgentOptions/#E2E_AgentOptions_MaxInputTokens).

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

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L815)

<a id="E2E_AgentConfig_MaxModelCalls_"></a>
<a id="E2E_AgentConfig_MaxModelCalls"></a>
Expand All @@ -143,7 +160,24 @@ public int? MaxModelCalls { get; init; }

**Value:** [int?](https://learn.microsoft.com/dotnet/api/system.int32)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L780)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L807)

<a id="E2E_AgentConfig_MaxObservationBytes_"></a>
<a id="E2E_AgentConfig_MaxObservationBytes"></a>

### MaxObservationBytes


```csharp
public int MaxObservationBytes { get; init; }
```


1024 through 16777216. See [MaxObservationBytes](/api/E2E/AgentOptions/#E2E_AgentOptions_MaxObservationBytes).

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

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L812)

<a id="E2E_AgentConfig_MaxSteps_"></a>
<a id="E2E_AgentConfig_MaxSteps"></a>
Expand All @@ -160,7 +194,7 @@ public int? MaxSteps { get; init; }

**Value:** [int?](https://learn.microsoft.com/dotnet/api/system.int32)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L777)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L804)

<a id="E2E_AgentConfig_Model_"></a>
<a id="E2E_AgentConfig_Model"></a>
Expand All @@ -175,7 +209,7 @@ public string? Model { get; init; }

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L756)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L783)

<a id="E2E_AgentConfig_Provider_"></a>
<a id="E2E_AgentConfig_Provider"></a>
Expand All @@ -192,7 +226,7 @@ Who serves [Model](#E2E_AgentConfig_Model) and [Judge](#E2E_AgentConfig_Judge).

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L762)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L789)

<a id="E2E_AgentConfig_ProviderOptions_"></a>
<a id="E2E_AgentConfig_ProviderOptions"></a>
Expand All @@ -209,7 +243,7 @@ Provider options by provider. Each client adds the entry under its own key to it

**Value:** [IReadOnlyDictionary&lt;string, JsonElement&gt;](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlydictionary-2)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L785)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L818)

<a id="E2E_AgentConfig_Providers_"></a>
<a id="E2E_AgentConfig_Providers"></a>
Expand All @@ -228,7 +262,7 @@ subscription logins (`chatgpt`, `copilot`, `grok`, `opencode-console`).

**Value:** [IReadOnlyList&lt;string&gt;](https://learn.microsoft.com/dotnet/api/system.collections.generic.ireadonlylist-1)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L750)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L777)

<a id="E2E_AgentConfig_System_"></a>
<a id="E2E_AgentConfig_System"></a>
Expand All @@ -245,7 +279,7 @@ Text appended to the act rules. Judges never see it.

**Value:** [string](https://learn.microsoft.com/dotnet/api/system.string)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L765)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L792)

## Methods

Expand All @@ -264,7 +298,7 @@ The model for [Judge](#E2E_AgentConfig_Judge), or null when no judge is set.

**Returns:** [IAgentModel](/api/E2E/IAgentModel/)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L791)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L824)

<a id="E2E_AgentConfig_CreateModel_"></a>
<a id="E2E_AgentConfig_CreateModel"></a>
Expand All @@ -281,7 +315,7 @@ The model for [Model](#E2E_AgentConfig_Model), or null when no model is set.

**Returns:** [IAgentModel](/api/E2E/IAgentModel/)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L788)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L821)

<a id="E2E_AgentConfig_CreateOptions_"></a>
<a id="E2E_AgentConfig_CreateOptions"></a>
Expand All @@ -298,4 +332,4 @@ The [AgentOptions](/api/E2E/AgentOptions/) this entry describes, with its models

**Returns:** [AgentOptions](/api/E2E/AgentOptions/)

[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L794)
[View source](https://github.com/hardkoded/e2e-dotnet/blob/main/src/E2E/Config/E2EConfig.cs#L827)
Loading
Loading