Header menu logo Nao

Nao.Agents Namespace

Type/Module Description

AgentAction

An action the agent decides to take after reasoning about user input. The orchestrator parses LLM output into one of these actions.

AgentGroup (Module)

AgentGroup (Type)

A collaborative group where agents communicate via messages

AgentId

Unique identity for an agent in a multi-agent system

AgentLifecycle (Module)

AgentLifecycle (Type)

Manages agent lifecycle with hooks and state tracking

AgentMessage (Module)

AgentMessage (Type)

A message passed between agents

AuditAction

Actions that can be audited

AuditEntry

An entry in the audit log

AuditLog

CircuitBreaker

Mutable circuit breaker state tracker

CircuitBreakerConfig

Circuit breaker configuration

CircuitState

Circuit breaker state

CompactionResult

Result of a context compaction operation

CompactionStrategy

Strategy for compacting context when it exceeds budget

CompletionChunk

One incremental piece of a streamed completion. A provider that supports streaming emits a sequence of these as the model generates: non-terminal chunks carry a text `Delta`, and the terminal chunk reports how generation finished plus token usage when the backend provides it.

CompletionOptions

Configuration for an LLM completion request

CompletionResult

The result of an LLM completion

CompositionResult

Result of a composed tool execution

ConsolidationResult

Result of a consolidation pass

ConsolidationStrategy

Strategy for consolidating memories

Constitution (Module)

Constitution (Type)

A declarative constitution governing agent behavior

ConstitutionCheckResult

Result of constitution evaluation

ConstitutionRule

A rule in a declarative constitution that governs agent behavior

ConstitutionViolation

A single rule violation

ContentMeta

Generic content metadata — describes what a tool/agent produces. The framework carries this tag without interpreting the content itself; consumers decide how to handle each content type.

ContextCompaction

Advanced context management beyond simple windowing

Conversation

A conversation is a sequence of messages

ConversationMessage

A single persisted conversation message in a transport-neutral shape (decoupled from the runtime's storage record so this layer stays dependency-light).

ConversationSignal

One conversation-store write. Mirrors the store's mutating operations so a consumer can route each to whatever transcript store it chooses.

ConversationStep

One process step (a tool call or sub-agent delegation) of an assistant turn, in a transport-neutral shape so the conversation event stream carries no storage-layer types.

ConversationWindow

CostModel

Cost model for LLM provider pricing

DefaultOrchestratorFactory

Default factory that creates standard Orchestrator instances. Replace via DI to use a custom subclass of OrchestratorBase.

DiscoverySource

Dynamic tool discovery and pruning for context-window efficiency

Episode

An episode represents a discrete event in the agent's experience

EpisodeQuery

Query for retrieving episodes

EtclovgConfig

Complete ETCLOVG harness configuration wiring all seven layers together

EtclovgHarness

The ETCLOVG Harness — integrates all seven layers into a unified execution pipeline

EtclovgResult

Result of an ETCLOVG harness execution

EventBus

Composable event bus helpers.

EventScope

Identity carried by every emitted event. The producer fills these in and never decides where the data lands — routing/persistence is entirely the consumer's choice, so a new storage strategy (per session, per category, per workspace, ...) needs no producer change.

ExecutionContext

Represents the execution context passed to an agent during its run

ExecutionEnvironment

ExecutionJournal

Orchestrates reverting tool executions in reverse order

ExecutionMetrics

Aggregated metrics for an agent execution

ExecutionRecord

A record of a single tool execution (immutable, for journaling)

ExecutionTrace

Captures a complete execution trace for offline analysis

FallbackStrategy

Fallback strategy when primary execution fails

Feedback

User feedback attached to a turn. The signal that drives adjustments.

FeedbackJson

Shared JSON options for feedback artifacts. The F# converter handles options, records, discriminated unions, and maps so everything round-trips cleanly.

FeedbackSentiment

Whether the user was satisfied with a turn.

FeedbackService

 High-level facade that ties the feedback loop together:
   1. record each completed turn,
   2. accept user feedback and store it.

 Feedback is recorded only; nothing is changed at runtime. Analysis of stored feedback
 (to improve or create tools/agents) is left to a separate, opt-in system built on top.

 Construct it with whichever stores you like (file-backed for the running app, database
 for a shared deployment). The default factories wire sensible implementations.

FeedbackSource

Where a feedback signal originated. Explicit feedback is an intentional good/bad rating; conversation feedback is inferred heuristically from the chat history; memory feedback is surfaced by the memory system. The source is stored on each `Feedback` in its `Metadata` (see the `FeedbackSource` module) so the cross-session aggregator can weigh and explain its suggestions without breaking existing literals.

GraphNode

A node in the knowledge graph with typed properties

GraphQuery

Query for traversing the knowledge graph

GraphRelation

A relationship between two entities in the knowledge graph

GraphTraversalResult

Result of a graph traversal

HarnessError

Unified error type for the ETCLOVG harness, covering all failure modes

HarnessServices

Helpers for constructing IHarnessServices values.

IAgent

Abstract interface for an agent. Agents process user input and can communicate with other agents via messages. Agents are stateless per call: callers thread prior conversation into the input, and continuity is owned by the store/event path.

IAuditLog

Interface for audit logging

IEmbeddingProvider

Interface for generating text embeddings

IEpisodicMemory

Interface for episodic memory — stores sequences of experiences

IEventBus

The single dispatch service producers publish to. Fans each event out to all subscribed consumers; producers hold only this — never a concrete storage type.

IEventConsumer

A subscriber that receives every published event and persists/forwards it.

IExecutionEnvironment

Interface for execution environment providers

IExecutionJournal

Journal that tracks tool executions for revert/audit support. Framework provides the flow; consumers extend with persistence if needed.

IFeedbackStore

Persists user feedback entries.

IGraphMemory

Interface for graph-based memory (knowledge graph)

IHarnessServices

Pluggable observability + governance services that a host (Orleans silo, ASP.NET app, test fixture, ...) injects into the harness. Each capability is optional so a host can supply only what it needs; `None` means that capability is disabled. This is the seam that lets callers choose in-memory (testing) vs persistent (production) backends without the harness/runtime knowing the concrete type.

IJudge

Interface for automated quality judgement

ILifecycleHook

Hook that can intercept lifecycle transitions

ILlmProvider

Abstract interface for LLM providers. Implementations wrap specific backends (Ollama, OpenAI, Anthropic, etc.)

IMcpClient

Interface for an MCP client connection to a single server

IMcpRegistry

Registry of multiple MCP server connections

IMemoryConsolidation

Interface for memory consolidation (background process)

IMemoryStore

Interface for persisting and retrieving agent memories

IMetricsCollector

Interface for metrics collection

IOrchestratorFactory

Factory interface for creating orchestrator instances via DI. Register a custom implementation to control how orchestrators are built from workspace definitions.

IReadinessCheck

Pre-flight readiness checks before agent execution

ISemanticMemory

Semantic memory store that uses embeddings for similarity-based retrieval

IStreamingLlmProvider

Optional capability a provider implements when it can return the completion incrementally (token by token) instead of buffering the whole response. `onChunk` is invoked on the calling task for each delta as it arrives; the returned `CompletionResult` is the fully aggregated completion (identical in shape to `CompleteAsync`), so a caller that streams to a UI and also needs the final text requires no extra bookkeeping.

ITieredMemory

Interface for tiered memory management

IToolDiscovery

Interface for dynamic tool discovery, ranking, and context-window pruning

IToolMiddleware

Middleware that wraps tool execution (pre/post processing)

IToolProtocol

Protocol for tool discovery and invocation (MCP-inspired)

ITracer

Interface for trace collection

ITraceStore

Stores execution traces for regression comparison

ITurnStore

Persists completed turn records so feedback can be analysed against them later.

IWorkingMemory

Interface for task-scoped working memory (scratchpad)

JudgementResult

Result of automated judgement on an execution

JudgementVerdict

Verdict from an automated judge

LifecycleEvent

Events emitted during lifecycle transitions

LifecyclePipeline

Executes a multi-stage lifecycle pipeline with validation and retry

LifecyclePipelineResult

Full lifecycle pipeline result

LifecycleState

Agent lifecycle states following a state-machine model

LimitExceeded

The specific limit that was exceeded

LlmJudge

LLM-based judge that evaluates execution traces

LlmProvider

Helpers for invoking providers.

LocalExecutionEnvironment

Default execution environment that runs agents in-process with resource tracking

LogLevel

Severity level for agent log entries

McpCapability

MCP capability flags

McpConnectionState

State of an MCP connection

McpRegistry

Registry managing multiple MCP connections

McpResource

MCP resource (file, data, etc. exposed by server)

McpServerInfo

MCP server info as advertised during initialization

McpToolDef

MCP tool definition as received from a server

McpTransport

MCP transport type

MemoryConsolidation

Memory consolidation operating on IMemoryStore

MemoryEntry

A single memory entry stored by an agent

MemoryPromotionPolicy

Policy for memory promotion/demotion between tiers

MemoryTier

Three-tier memory model: Short-term (active context), Mid-term (session), Long-term (persistent)

Message

A single message in a conversation

MetricPoint

A single metrics data point

MetricsCollector

NaoEvent

Domain events the system dispatches. Each carries an EventScope plus its payload. Consumers subscribe to the bus and decide how/where to persist, so adding a storage strategy never requires touching the producers. (Grows per phase: feedback, then observability, then conversations.)

ObservabilityServices

Builds the per-turn IHarnessServices bundle handed to the agent harness. Each session's observability lives in its own backing bundle (e.g. sessions//observability/), built lazily by `backingFactory` and memoised; the returned bundle tees every write to the bus while reads delegate to that backing store. Where the data lands is the store-level swap point (the backing factory), so producers never change.

ObservabilitySignal

One fine-grained observability write produced by the agent harness during a turn. These mirror the sink interfaces (ITracer / IMetricsCollector / IExecutionJournal / ITraceStore / IAuditLog) so a consumer can route each to whatever store it chooses.

Orchestrator (Module)

Orchestrator (Type)

Default orchestrator implementation using the base class with no overrides.

OrchestratorBase

The fundamental orchestrator agent. Accepts user input, uses an LLM to decide which tool or sub-agent to invoke, executes the action, feeds results back, and produces a final response. Subclass and override virtual members to customize behavior.

OrchestratorConfig

Configuration for the Orchestrator

OrchestratorMemoryConfig

Memory management configuration for the orchestrator

OutputFormat

Output format the agent should produce. Controls the formatting instruction appended to the system prompt.

PassthroughHook

No-op lifecycle hook for default behavior

Permission

A specific permission grant for a capability

PermissionDecision

The outcome of evaluating an access request.

PermissionDenied

Canonical, structured refusal handed back to the model whenever a resource access is denied. Centralizing it here keeps every enforcement point (a tool's own declared permissions, the runtime context, the server guard) emitting the same machine-readable shape — `{ error, kind, resource, message, hint? }` — so agents can relay denials consistently. The optional hint lets the server add UI-specific guidance.

PermissionGate

A process-wide hook the server registers so the runtime layer (which cannot reference the server) can resolve permission requests against the real decision logic — settings, persisted grants, and the interactive prompt. When unset, access is allowed (no permission system present, e.g. in tests).

PermissionLevel

Permission level for a specific capability

PermissionModel (Module)

PermissionModel (Type)

The permission model governing an agent's allowed actions

PermissionOutcome

The result of resolving a permission request: the decision plus whether the user asked to remember the grant for the rest of the session (so the session can record it in its own state rather than re-prompting).

PermissionRule

A single allow/deny rule the user granted.

PermissionScope

Permission scope categories

Pipeline (Module)

Pipeline (Type)

A pipeline processes input through a sequence of agents

PipelineStage

Defines a stage in a lifecycle pipeline (issue-to-deployment style)

Policy

A governance policy that can be enforced at runtime

PolicyContext

Context passed to policy evaluation

PolicyEnforcement

How a policy violation is handled

PolicyEngine (Module)

PolicyEngine (Type)

Runtime policy engine that evaluates all registered policies

PolicyResult

Result of policy engine evaluation

PolicyViolation

ProgressSignal

One conversation-store write. Mirrors the store's mutating operations so a consumer can route each to whatever transcript store it chooses.

Prompt (Module)

Functions for working with structured prompts

Prompt (Type)

A structured prompt definition following prompt engineering best practices

PromptExample

A single few-shot example demonstrating expected input/output behavior. Used within a Prompt to guide the LLM's responses.

PublishingHarnessServices

An IHarnessServices bundle whose every write is teed to the bus as an ObservabilityCaptured event while reads delegate to the wrapped backing bundle. The grain hands this to the agent harness, so the full observability stream flows through the bus without the producer ever deciding where it is stored.

ReadinessResult

Readiness check result

Regression

RegressionCategory

Categories of regression

RegressionItem

A single regression item

RegressionResult

Regression detection: compare current trace against baseline

Resilience

Resilience module for executing with retry, circuit breaker, and fallback

ResilienceConfig

Resilience configuration combining retry, circuit breaker, and fallback

ResourceAccess

A sensitive action a tool or agent wants to perform, together with the specific resource it targets. The permission system decides whether to allow it. This is the resource-level companion to the capability-level `Permission` model: where `Permission` asks "may this agent use tool X?", `ResourceAccess` asks "may this run touch THIS path or THIS url?".

ResourceKind

The class of resource a rule matches.

ResourceLimits

Resource budget constraints for agent execution

ResourcePermission

Pure evaluation of resource-access requests against a set of granted rules. No IO — the persistence and enforcement layers live in the server; this module is the testable core.

ResourceUsage (Module)

ResourceUsage (Type)

Tracks current resource consumption against limits

RetryPolicy

Retry policy for resilient execution (shared across Lifecycle and Observability layers)

RevertContext

Context provided to a tool's Revert function so it can undo its effects

Role

Represents a message role in a conversation

Router (Module)

Router (Type)

Router dispatches input to the most appropriate agent

RoutingStrategy

Strategy for selecting which agent handles a request

RuleCategory

Categories of constitutional rules

RuleScope

How broadly a granted rule applies.

SandboxConfig

Configuration for the execution sandbox

SandboxIsolation

Isolation level for agent execution sandbox

SemanticEntry

A memory entry with an embedding vector for semantic retrieval

SemanticSimilarity

SessionExecution

Types describing background work a tool or orchestrator can launch. There is no ambient state here: the session/turn identity a unit of work belongs to is carried explicitly on the `ToolContext` the runtime threads into every tool and orchestrator.

Span

A single span in a distributed trace

SpanEvent

An event within a span

SpanId

A span within a trace (represents a unit of work)

SpanStatus

Span status

StageResult

Result of a single pipeline stage execution

StdioMcpClient

Stdio-based MCP client implementation

SubAgentCallRecord

A single sub-agent delegation captured during a turn.

SummarizationConfig

Configuration for conversation summarization

Summarizer

TaskGrounding

Task grounding: validates that the agent understands what it needs to do

TerminationCondition

Termination condition for a collaborative group conversation

TieredMemoryConfig

Configuration for tiered memory management

TieredMemoryEntry

A memory item with tier classification

Tool

A tool that an agent can invoke to perform actions or retrieve information. Supports optional capabilities: content-type declaration, verify, and revert.

ToolAvailability

Tool availability status

ToolCallRecord

A single tool invocation captured during a turn.

ToolComposer

Executes tool compositions against an IToolProtocol

ToolComposition

A composed tool that chains, parallelizes, or conditionally routes between tools

ToolContext (Module)

Helpers for the tool execution context.

ToolContext (Type)

Runtime context handed to a tool's Execute (and to the orchestrator) so it can request approval for sensitive resource access dynamically — based on its own input or intermediate results — locate the session's file folder, and launch background work. The runtime builds one per session/turn and threads it explicitly; library and test code can use `ToolContext.allowAll`.

ToolCostCategory

Cost category hint for tool selection optimization

ToolDiscoveryConfig

Configuration for tool discovery and pruning

ToolExample

Example of tool usage for documentation and few-shot prompting

ToolInvocationResult

Result of a tool invocation with metadata

ToolParameter

Describes a single parameter a tool accepts in its JSON input object.

ToolProtocol

Routes tool invocations through middleware and protocol

ToolProvenance (Module)

Helpers for building tool provenance values.

ToolProvenance (Type)

Identifies where a tool originated, so feedback-driven adjustments can target the correct source (a JSON file to re-version, or a compiled assembly to patch).

ToolRouter

Routes tool requests to the appropriate tool based on strategy

ToolSchema (Module)

ToolSchema (Type)

Rich schema definition for a tool, extending the basic Tool type

ToolSelection

Tool selection result with reasoning

ToolSelectionStrategy

Strategy for selecting which tool to use

ToolStep

A step in a tool composition

ToolUsageStats

Tool usage statistics for ranking/pruning

TraceAction

Actions that can appear in a trace

TraceId

A unique trace identifier for correlating events across agent calls

TraceStep

A single step in an execution trace

TurnRecord

A complete record of one orchestration turn: the user prompt, the agent and tools that ran, and the final answer. This is the unit feedback is attached to.

TurnRecorder (Module)

TurnRecorder (Type)

An `IEventConsumer` that accumulates the progress signals of a single turn into a structured `TurnRecord`. Subscribe it to the `IEventBus` for the duration of one turn (matched by `scope.ActionId = turnId`), then call `Snapshot`. The orchestrator publishes `ToolInvoked`/`ToolCompleted` (and `SubAgentInvoked`/`SubAgentCompleted`) pairs sequentially, so we match each result to the earliest still-unmatched invocation of the same name (FIFO).

TurnStep

One step of the process an agent ran during a turn, captured in the order it happened (a tool invocation or a sub-agent delegation). Lets a frontend show the whole process — reasoning trail and tool calls — not just the final answer.

Verification

Captures and manages execution traces for verification

VersionRef

Helpers for version-qualified references of the form "name@version". Used to look up a specific version of a tool or agent while remaining backward compatible with plain, unversioned "name" references.

WindowStrategy

Strategy for managing conversation history length

WorkingMemoryConfig

Configuration for working memory

WorkingMemoryItem

A scratchpad item in working memory with priority/attention weight

Type something to start searching.