# SkillScriptExecutionRequest

> 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.skillscriptexecutionrequest/
> Summary: SkillScriptExecutionRequest: One skill script that passed every execution gate, as handed to an ISkillScriptExecutor.

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

One skill script that passed every execution gate, as handed to an
[ISkillScriptExecutor](/api/tracon.iskillscriptexecutor/).

```csharp
public sealed record SkillScriptExecutionRequest : IEquatable<SkillScriptExecutionRequest>
```

<dl class="api-relations"><dt>Inheritance</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.object">object</a> ← <a href="/api/tracon.skillscriptexecutionrequest/">SkillScriptExecutionRequest</a></dd><dt>Implements</dt><dd><a href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable&lt;SkillScriptExecutionRequest&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

The request carries everything a remote runner needs: the content, its hash,
the arguments, and the limits. It carries no environment value: which host
variables a local process inherits is a setting of the built-in executor, and
no secret travels in the request.

The script sees its arguments as JSON on standard input, and two environment
variables: `TRACON_SKILL_NAME` (the skill name) and `TRACON_SKILL_TEMP`
(a writable directory that belongs to this one call). An executor provides the
same to keep scripts portable between executors.

[ToString](https://learn.microsoft.com/dotnet/api/system.object.tostring) leaves out [SkillScriptExecutionRequest.Content](/api/tracon.skillscriptexecutionrequest/#Tracon_SkillScriptExecutionRequest_Content) and
[SkillScriptExecutionRequest.ArgumentsJson](/api/tracon.skillscriptexecutionrequest/#Tracon_SkillScriptExecutionRequest_ArgumentsJson), so logging a request does not write the script or
what the model passed to it.

## Constructors

### <a id="Tracon_SkillScriptExecutionRequest__ctor"></a> SkillScriptExecutionRequest\(\)

```csharp
public SkillScriptExecutionRequest()
```

## Properties

### <a id="Tracon_SkillScriptExecutionRequest_ArgumentsJson"></a> ArgumentsJson

The arguments the model passed, as JSON, written to the script's standard
input. [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) when the model passed none; the script then
reads an empty, closed standard input.

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

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

The script's source text.

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

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

For a [SkillScriptOrigin.Stored](/api/tracon.skillscriptorigin/) script, the exact content the
grant pins. For a [SkillScriptOrigin.File](/api/tracon.skillscriptorigin/) script, the file's
text as Tracon read it, decoded as UTF-8, after the quota was taken. A file
script is a regular, non-empty file within the same content size limit as a
stored script. Other files next to it are not carried.

### <a id="Tracon_SkillScriptExecutionRequest_ContentSha256"></a> ContentSha256

The SHA-256 of the UTF-8 bytes of [SkillScriptExecutionRequest.Content](/api/tracon.skillscriptexecutionrequest/#Tracon_SkillScriptExecutionRequest_Content), as 64 upper-case
hexadecimal characters.

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

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

A remote runner can recompute it to confirm that the content arrived
unchanged. It is not the grant's pin value: the pin also covers the
extension and the argument schema.

### <a id="Tracon_SkillScriptExecutionRequest_Extension"></a> Extension

The file extension, without the dot (for example `py`).

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

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

The interpreter-allow-list value for [SkillScriptExecutionRequest.Extension](/api/tracon.skillscriptexecutionrequest/#Tracon_SkillScriptExecutionRequest_Extension).

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

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

The built-in executor starts this value as the interpreter's path. A remote
executor can read it as a runtime name instead (for example `python-3.12`).
Only values from the host's own allow-list reach an executor.

### <a id="Tracon_SkillScriptExecutionRequest_MaxOutputBytes"></a> MaxOutputBytes

The largest number of UTF-8 bytes kept from each output stream.

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

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

Standard output and standard error are capped separately. Tracon applies the
cap again to the result and adds the truncation notice itself.

### <a id="Tracon_SkillScriptExecutionRequest_Origin"></a> Origin

Where the content came from.

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

 [SkillScriptOrigin](/api/tracon.skillscriptorigin/)

### <a id="Tracon_SkillScriptExecutionRequest_RunId"></a> RunId

The run that called the script, or [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) outside a run.

```csharp
public Guid? RunId { get; init; }
```

#### Property Value

 [Guid](https://learn.microsoft.com/dotnet/api/system.guid)?

### <a id="Tracon_SkillScriptExecutionRequest_ScriptName"></a> ScriptName

The script name within the skill.

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

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

For a [SkillScriptOrigin.Stored](/api/tracon.skillscriptorigin/) script, the name the skill
stores; Tracon checks that it is a plain file name (no directory separator,
path root, or `..`) before the call. For a
[SkillScriptOrigin.File](/api/tracon.skillscriptorigin/) script, the file's path relative to the
skill directory, with its extension (for example `scripts/fetch.py`).
Do not use it as a file name without checking it.

### <a id="Tracon_SkillScriptExecutionRequest_SkillName"></a> SkillName

The name of the skill that carries the script.

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

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

The full path of the script file on the host, for a
[SkillScriptOrigin.File](/api/tracon.skillscriptorigin/) script; [null](https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/null) otherwise.

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

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

The built-in executor runs the file in place, so the script can use files
next to it. A remote executor cannot read this path; it runs
[SkillScriptExecutionRequest.Content](/api/tracon.skillscriptexecutionrequest/#Tracon_SkillScriptExecutionRequest_Content).

### <a id="Tracon_SkillScriptExecutionRequest_TenantId"></a> TenantId

The tenant whose grant opened the gates.

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

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

The longest time the script may run.

```csharp
public required TimeSpan Timeout { get; init; }
```

#### Property Value

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

Stop the script when it passes this time and report
[SkillScriptExecutionResult.TimedOut](/api/tracon.skillscriptexecutionresult/#Tracon_SkillScriptExecutionResult_TimedOut). Tracon waits this long plus
a fixed grace period, then cancels the token, stops waiting, and records a
timeout itself.

## Methods

### <a id="Tracon_SkillScriptExecutionRequest_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_SkillScriptExecutionRequest_Equals_Tracon_SkillScriptExecutionRequest_"></a> Equals\(SkillScriptExecutionRequest?\)

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

`other` [SkillScriptExecutionRequest](/api/tracon.skillscriptexecutionrequest/)?

#### Returns

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

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

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

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

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

### <a id="Tracon_SkillScriptExecutionRequest_op_Equality_Tracon_SkillScriptExecutionRequest_Tracon_SkillScriptExecutionRequest_"></a> operator ==\(SkillScriptExecutionRequest?, SkillScriptExecutionRequest?\)

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

`left` [SkillScriptExecutionRequest](/api/tracon.skillscriptexecutionrequest/)?

`right` [SkillScriptExecutionRequest](/api/tracon.skillscriptexecutionrequest/)?

#### Returns

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

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

`left` [SkillScriptExecutionRequest](/api/tracon.skillscriptexecutionrequest/)?

`right` [SkillScriptExecutionRequest](/api/tracon.skillscriptexecutionrequest/)?

#### Returns

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