Table of Contents

Class SdkServerOptions

Namespace
RDCore.SDK.Server.Configuration
Assembly
RDCore.SDK.dll

Server-level configuration settings, bound from appsettings.json or overridden from command-line arguments.

public record SdkServerOptions : IEquatable<SdkServerOptions>
Inheritance
SdkServerOptions
Implements
Inherited Members

Properties

CaptureChildOutput

Whether the standard streams of the child processes this server starts are its own to read, instead of the ones it was started with.

[Setting(SettingReach.Deployment)]
public bool CaptureChildOutput { get; set; }

Property Value

bool

Remarks

A child process normally shares the console of the process that starts it. A server whose own standard output carries a protocol (a debug adapter, speaking DAP over stdio) cannot let anything else write to it - one stray line is a corrupt message - nor let anything else read from its input. When this is set, a child's input is closed, and what it writes is logged at Trace and goes nowhere else.

ClientProcessId

The process ID of the client process that starts a LSP server process.

[Setting(SettingReach.Deployment)]
public int ClientProcessId { get; set; }

Property Value

int

Remarks

🧩 For an extension, the ClientProcessID is the process ID of the language server application.

ConnectTimeoutSeconds

The number of seconds a client will await a server connection before a connection is aborted.

[Setting(SettingReach.NextStart)]
[Range(0, 2147483647)]
public int ConnectTimeoutSeconds { get; set; }

Property Value

int

HealthCheckIntervalSeconds

The number of seconds between health check pings.

[Setting(SettingReach.NextStart)]
[Range(0, 2147483647)]
public int HealthCheckIntervalSeconds { get; set; }

Property Value

int

Remarks

👉 Determines how long the server process remains orphaned before initiating a shutdown when the client process that owns it fails to respond, for example if it crashes or is otherwise abruptly terminated.

MaxRestartAttempts

How many times a supervised child connection is restarted after it fails unexpectedly, before the failure is escalated.

[Setting(SettingReach.NextStart)]
[Range(0, 2147483647)]
public int MaxRestartAttempts { get; set; }

Property Value

int

RestartBackoffBaseMs

The base delay, in milliseconds, before the first restart attempt. Doubles per attempt, capped at RestartBackoffMaxMs.

[Setting(SettingReach.NextStart)]
[Range(0, 2147483647)]
public int RestartBackoffBaseMs { get; set; }

Property Value

int

RestartBackoffMaxMs

The maximum delay, in milliseconds, between restart attempts.

[Setting(SettingReach.NextStart)]
[Range(0, 2147483647)]
public int RestartBackoffMaxMs { get; set; }

Property Value

int

ShutdownTimeoutSeconds

The number of seconds the server will wait for an Exit notification from the client after receiving a Shutdown request.

[Setting(SettingReach.NextStart)]
[Range(0, 2147483647)]
public int ShutdownTimeoutSeconds { get; set; }

Property Value

int

Remarks

👉 The server process exit code depends on whether the Exit notification was received after processing a Shutdown request.

TraceLevel

The minimum Microsoft.Extensions.Logging.LogLevel of a trace message that makes it through to the trace output.

public LogLevel TraceLevel { get; set; }

Property Value

LogLevel

UnsafeDevMode

⚠️ Allows the server platform to load unsigned plug-ins.

[Setting(SettingReach.Deployment)]
public bool UnsafeDevMode { get; set; }

Property Value

bool

Remarks

🧩 This is useful for developing plug-ins with a private fork.
This setting is read-only and must be explicitly overridden via a command-line argument.

Verbose

Whether verbose messages are generated or not.
🧩 Applications may configure the content of their verbose messages in more details.

public bool Verbose { get; set; }

Property Value

bool

Remarks

⚠️ Verbose messages may contain relatively sensitive information such as document locations, symbol names, and execution stack traces.
⚠️ Verbose messages are NEVER to be transmitted via any kind of telemetry.

WireErrorDetail

How a source-file path in error / stack-trace detail is rewritten before that text is packaged into a DTO and sent to another process. Defaults to RepoRelative.

public SourcePathScrubMode WireErrorDetail { get; set; }

Property Value

SourcePathScrubMode

Remarks

A PDB build (the dev platform is Debug; a Release publish still emits portable PDBs) puts the build machine's directory layout and user name into a caught exception's text. A defensive net — it does not affect the unredacted copy written to the process log.