Skip to content
Tracon

SkillScriptExecutionRequest

Namespace Tracon · Assembly Tracon.Abstractions.dll

One skill script that passed every execution gate, as handed to an ISkillScriptExecutor.

public sealed record SkillScriptExecutionRequest : IEquatable<SkillScriptExecutionRequest>
Inheritance
object ← SkillScriptExecutionRequest
Implements
IEquatable<SkillScriptExecutionRequest>
Inherited Members
object.GetType(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

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 leaves out SkillScriptExecutionRequest.Content and SkillScriptExecutionRequest.ArgumentsJson, so logging a request does not write the script or what the model passed to it.

public SkillScriptExecutionRequest()

The arguments the model passed, as JSON, written to the script’s standard input. null when the model passed none; the script then reads an empty, closed standard input.

public string? ArgumentsJson { get; init; }

string?

The script’s source text.

public required string Content { get; init; }

string

For a SkillScriptOrigin.Stored script, the exact content the grant pins. For a SkillScriptOrigin.File 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.

The SHA-256 of the UTF-8 bytes of SkillScriptExecutionRequest.Content, as 64 upper-case hexadecimal characters.

public required string ContentSha256 { get; init; }

string

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.

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

public required string Extension { get; init; }

string

The interpreter-allow-list value for SkillScriptExecutionRequest.Extension.

public required string Interpreter { get; init; }

string

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.

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

public required int MaxOutputBytes { get; init; }

int

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

Where the content came from.

public required SkillScriptOrigin Origin { get; init; }

SkillScriptOrigin

The run that called the script, or null outside a run.

public Guid? RunId { get; init; }

Guid?

The script name within the skill.

public required string ScriptName { get; init; }

string

For a SkillScriptOrigin.Stored 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 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.

The name of the skill that carries the script.

public required string SkillName { get; init; }

string

The full path of the script file on the host, for a SkillScriptOrigin.File script; null otherwise.

public string? SourcePath { get; init; }

string?

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.

The tenant whose grant opened the gates.

public required string TenantId { get; init; }

string

The longest time the script may run.

public required TimeSpan Timeout { get; init; }

TimeSpan

Stop the script when it passes this time and report SkillScriptExecutionResult.TimedOut. Tracon waits this long plus a fixed grace period, then cancels the token, stops waiting, and records a timeout itself.

public override bool Equals(object? obj)

obj object?

bool

public bool Equals(SkillScriptExecutionRequest? other)

other SkillScriptExecutionRequest?

bool

public override int GetHashCode()

int

public override string ToString()

string

operator ==(SkillScriptExecutionRequest?, SkillScriptExecutionRequest?)

Section titled “ operator ==(SkillScriptExecutionRequest?, SkillScriptExecutionRequest?)”
public static bool operator ==(SkillScriptExecutionRequest? left, SkillScriptExecutionRequest? right)

left SkillScriptExecutionRequest?

right SkillScriptExecutionRequest?

bool

operator !=(SkillScriptExecutionRequest?, SkillScriptExecutionRequest?)

Section titled “ operator !=(SkillScriptExecutionRequest?, SkillScriptExecutionRequest?)”
public static bool operator !=(SkillScriptExecutionRequest? left, SkillScriptExecutionRequest? right)

left SkillScriptExecutionRequest?

right SkillScriptExecutionRequest?

bool