Acp.Net.Process
0.1.0
See the version list below for details.
dotnet add package Acp.Net.Process --version 0.1.0
NuGet\Install-Package Acp.Net.Process -Version 0.1.0
<PackageReference Include="Acp.Net.Process" Version="0.1.0" />
<PackageVersion Include="Acp.Net.Process" Version="0.1.0" />
<PackageReference Include="Acp.Net.Process" />
paket add Acp.Net.Process --version 0.1.0
#r "nuget: Acp.Net.Process, 0.1.0"
#:package Acp.Net.Process@0.1.0
#addin nuget:?package=Acp.Net.Process&version=0.1.0
#tool nuget:?package=Acp.Net.Process&version=0.1.0
Acp.Net.Process
Process, runtime bridge, shutdown, and transcript helpers for .NET ACP integrations.
🇹🇷 Türkçe sürüm: README.tr.md
Minimal Runtime Policy Example
var runner = new AcpProcessRunner(new AcpProcessOptions
{
AgentName = "my-acp-agent",
Command = "python3",
Arguments = ["agent.py"],
TranscriptPath = "artifacts/agent-transcript.ndjson",
RunArtifactPath = "artifacts/agent-run.json",
RequiredTools =
[
AcpRequiredExecutable.Throw("python3"),
AcpRequiredExecutable.Warn("rg")
]
});
Missing Throw tools fail before the agent starts and produce an EnvironmentFailure run artifact. Missing Warn tools are written to the transcript and artifact but the agent still starts.
This package intentionally does not model the ACP protocol schema. It produces the agent's stdio streams and works with any ACP protocol/JSON-RPC package — for example AgentClientProtocol, dotacp, or LibAcp. The samples use AgentClientProtocol.
Install
dotnet add package Acp.Net.Process --prerelease
Basic Usage
using AcpNet.Process;
using AgentClientProtocol;
var runner = new AcpProcessRunner(new AcpProcessOptions
{
Command = "python3",
Arguments = ["/home/user/agent.py"],
Runtime = AcpRuntime.Auto,
TranscriptPath = "agent-transcript.ndjson",
RequiredExecutables = ["rg", "git"],
Shutdown = AcpShutdownPolicy.GracefulThenKill(TimeSpan.FromSeconds(2))
});
await using var session = await runner.StartAsync();
using var connection = new ClientSideConnection(
_ => client,
session.Stdout,
session.Stdin);
connection.Open();
var cwdForAgent = session.ToAgentPath(Directory.GetCurrentDirectory());
Windows note:
AcpRuntime.Autoruns the command natively unless it detects a WSL agent. For a POSIX agent such aspython3, setRuntime = AcpRuntime.Wslexplicitly (see below), or keepAutowith a WSL agent path. As of0.1.0-alpha.2, when a bare command likepython3resolves only to a Windows Store execution-alias stub,Autoroutes it through WSL and preflight reports the stub as missing instead of hanging.
Windows + WSL
When a Windows .NET process needs to run a WSL/Linux ACP agent, use AcpRuntime.Wsl or leave AcpRuntime.Auto with WSL paths:
var runner = new AcpProcessRunner(new AcpProcessOptions
{
Command = "python3",
Arguments = ["/home/user/agent.py"],
Runtime = AcpRuntime.Wsl,
WslDistribution = "Ubuntu"
});
The runner maps UNC/Windows paths to WSL paths and starts the process through wsl.exe.
Use session.ToAgentPath(...) for ACP payload paths such as NewSessionRequest.Cwd when the agent runs in WSL.
Environment Shaping
var runner = new AcpProcessRunner(new AcpProcessOptions
{
Command = "gemini",
Arguments = ["--acp"],
Runtime = AcpRuntime.Wsl,
AdditionalPathEntries = ["/usr/bin", "/home/user/.local/bin"],
Environment = new Dictionary<string, string?>
{
["GEMINI_DEBUG"] = "1"
},
RequiredExecutables = ["rg", "git", "node"]
});
RequiredExecutables are checked before the agent starts and written to the transcript as preflight.tool.found or preflight.tool.missing events.
Public API
AcpProcessRunnerAcpProcessOptionsAcpProcessSessionAcpRequiredExecutableAcpMissingExecutablePolicyAcpExecutablePreflightResultAcpPreflightExceptionAcpRunArtifactAcpRunFailureKindAcpRuntimeAcpShutdownPolicyAcpTranscriptRecorder
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.1 | 146 | 7/26/2026 |
| 0.1.0 | 103 | 7/17/2026 |
| 0.1.0-alpha.2 | 70 | 6/13/2026 |
| 0.1.0-alpha.1 | 68 | 6/11/2026 |
0.1.0: First stable release. Breaking change from the alpha line: RequiredTools was merged into RequiredExecutables, which is now IReadOnlyList of AcpRequiredExecutable. Bare strings still compile via the implicit conversion and keep Warn semantics; use AcpRequiredExecutable.Throw(name) for fail-fast entries.