Table of Contents

Class PlanningContext

Namespace
LMKit.Agents.Planning
Assembly
LM-Kit.NET.dll

Provides context and state for planning strategy execution.

The context is passed to IPlanningHandler methods and contains the agent configuration, execution state, and accumulated results.

public sealed class PlanningContext
Inheritance
PlanningContext
Inherited Members

Examples

Example: Access planning context during agent execution

using LMKit.Model;
using LMKit.Agents;
using LMKit.Agents.Planning;
using System;
using System.Threading.Tasks;

LM model = LM.LoadFromModelID("llama-3.2-3b");

// Build agent with ReAct planning Agent agent = new AgentBuilder() .WithModel(model) .WithPersona("Research Assistant") .WithPlanning(PlanningStrategy.ReAct) .Build();

using var executor = new AgentExecutor();

// Execute and access planning context var result = await executor.ExecuteAsync(agent, "Analyze this problem step by step.");

// Access planning context after execution PlanningContext context = executor.PlanningContext; if (context != null) { Console.WriteLine($"Iterations: {context.Iteration}"); Console.WriteLine($"Steps: {context.Steps.Count}"); Console.WriteLine($"Reasoning trace:\n{context.GetReasoningTrace()}"); }

Example: Store custom state in planning context

using LMKit.Agents.Planning;
using System;

// During custom planning handler implementation void ProcessStep(PlanningContext context) { // Store intermediate results context.SetState("processedItems", 5); context.SetState("confidence", 0.95);

// Retrieve state later
int items = context.GetState<int>("processedItems");
double confidence = context.GetState<double>("confidence", 0.0);

// Append to reasoning trace
context.AppendReasoningTrace($"Processed {items} items with {confidence:P0} confidence");

// Check iteration limits
if (context.MaxIterationsReached)
{
    Console.WriteLine("Max iterations reached, finalizing...");
}

}

Remarks

Lifecycle
A new context is created for each agent execution. It accumulates state across planning iterations and is disposed when execution completes.

Thread Safety
This class is not thread-safe and should only be accessed from a single execution thread.

Properties

Agent

Gets the agent being executed.

CurrentAction

Gets or sets the current action being taken.

CurrentThought

Gets or sets the current thought or reasoning step.

FinalAnswer

Gets or sets the final answer when planning is complete.

Iteration

Gets the current iteration number (1-based).

LastObservation

Gets or sets the most recent observation (e.g., tool result).

LastOutput

Gets or sets the most recent model output.

MaxIterations

Gets the maximum allowed iterations.

MaxIterationsReached

Gets a value indicating whether the maximum iterations have been reached.

OriginalInput

Gets the original user input.

Steps

Gets the list of completed planning steps.

ToolCalls

Gets the tool calls made during the current planning cycle.

Methods

AppendReasoningTrace(string)

Appends content to the reasoning trace.

GetReasoningTrace()

Gets the accumulated reasoning trace.

GetState<T>(string, T)

Retrieves a value from the context state.

HasState(string)

Checks if a state key exists.

SetState(string, object)

Stores a value in the context state.

Share