Json.Ai.AgentMesh.Core 0.1.0

dotnet add package Json.Ai.AgentMesh.Core --version 0.1.0
                    
NuGet\Install-Package Json.Ai.AgentMesh.Core -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Json.Ai.AgentMesh.Core" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Json.Ai.AgentMesh.Core" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="Json.Ai.AgentMesh.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Json.Ai.AgentMesh.Core --version 0.1.0
                    
#r "nuget: Json.Ai.AgentMesh.Core, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Json.Ai.AgentMesh.Core@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Json.Ai.AgentMesh.Core&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=Json.Ai.AgentMesh.Core&version=0.1.0
                    
Install as a Cake Tool

AgentMesh

Biblioteca .NET para orquestrar agents de IA como um grafo de nós e arestas, com state tipado fluindo entre os nós e arestas condicionais decidindo o caminho em runtime. Todo o acesso a modelos passa pelo OpenRouter.

Documento de arquitetura completo: docs/architecture.md.

Conceitos

Conceito Papel
IAgent / AgentBase Persona de LLM — papel, objetivo, contexto, tools e modelo. Não conhece state nem grafo.
AgentTask A instrução de trabalho (Description + ExpectedOutput), com tools e guardrails da execução.
ITool Capacidade que o modelo pode invocar. Pertence ao agent, declarada via UsarTool.
INode<TState> Unidade de processamento do grafo. Contém a regra e pode conter um agent.
IPipeline<TState> O grafo compilado, resolvido do container como keyed service.

A dependência é unidirecional: um nó pode receber um agent; um agent nunca recebe um nó.

Exemplo

services.AddAgentMesh(agentMesh =>
{
    agentMesh.UseOpenRouter(options =>
    {
        options.ApiKey = Environment.GetEnvironmentVariable("OPENROUTER_API_KEY")!;
        options.SiteTitle = "Meu App";
    });

    agentMesh.AddPipeline<CodeReviewState>("code-review", graph =>
    {
        graph.AddTool<IGitDiffTool, GitDiffTool>();
        graph.AddAgent<ColetorDeMudancasAgent>();

        graph.AddNode<ColetarMudancasNode>();
        graph.AddNode<RevisarPraticasNode>();
        graph.AddNode<MarcarPendenteNode>();
        graph.AddNode<MarcarAprovadoNode>();

        graph.AddEdge(GraphNode.Start, GraphNode.Of<ColetarMudancasNode>());
        graph.AddEdge(GraphNode.Of<ColetarMudancasNode>(), GraphNode.Of<RevisarPraticasNode>());

        graph.AddConditionalEdge(
            GraphNode.Of<RevisarPraticasNode>(),
            state => state.Apontamentos.Count > 0
                ? GraphNode.Of<MarcarPendenteNode>()
                : GraphNode.Of<MarcarAprovadoNode>());

        graph.AddEdge(GraphNode.Of<MarcarPendenteNode>(), GraphNode.End);
        graph.AddEdge(GraphNode.Of<MarcarAprovadoNode>(), GraphNode.End);
    });
});

var pipeline = provider.GetRequiredKeyedService<IPipeline<CodeReviewState>>("code-review");

// O state é argumento de invocação, não um serviço do container.
var resultado = await pipeline.RunAsync(new CodeReviewState { BaseRef = "main" });

Um agent é configurado por chamadas fluent no próprio construtor:

public sealed class ColetorDeMudancasAgent : AgentBase
{
    public ColetorDeMudancasAgent(IModelAdapter model, IGitDiffTool gitDiff) : base(model)
    {
        ComPapel("Analista de Código");
        ComObjetivo("Entender e comunicar o que mudou em um conjunto de alterações.");
        ComHistoria("Você revisa pull requests em times de engenharia .NET.");

        UsarModelo("anthropic/claude-sonnet-5");
        UsarTool(gitDiff);
        ComRoteamento(ProviderRouting.Create().PreferLowLatency().AllowFallbacks());
    }
}

Estrutura

src/
  Json.Ai.AgentMesh.Core/         abstrações
  Json.Ai.AgentMesh/              AgentBase, nós, grafo, DI
  Json.Ai.AgentMesh.OpenRouter/   adapter e catálogo de modelos
tests/
  Json.Ai.AgentMesh.Tests/
samples/
  Json.Ai.AgentMesh.Samples.Console/   pipeline de code review

Rodando

dotnet build
dotnet test

export OPENROUTER_API_KEY="sua-chave"
dotnet run --project samples/Json.Ai.AgentMesh.Samples.Console -- main

Custo

AgentResult.Usage acumula tokens e custo de todas as chamadas ao modelo de uma execução — incluindo os turnos do loop de tool calling, as retentativas de guardrail e o consumo de subagents delegados.

Console.WriteLine($"US$ {resultado.TotalCostUsd:F4}");

Estado atual

Implementado: agents com tool calling, guardrails com retentativa, delegação para subagents, grafo com arestas fixas e condicionais, catálogo de modelos e roteamento de provedor.

Ainda não: execução em paralelo (fan-out/merge no grafo e tool calls simultâneas), streaming (SSE), saída estruturada e memória de longo prazo.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.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.0 159 8/22/2026 0.1.0 is deprecated because it has critical bugs.