Skip to content

Context Provider

Objective: add a provider that reads shared state and contributes context.

import { HarnessContextProvider } from "@harness-kernel/core/agent/context";
import type { AgentReadSession } from "@harness-kernel/core/agent/session";
class NotesContext extends HarnessContextProvider<{ max?: number }> {
label = "Notes Context";
required = false;
render(session: AgentReadSession, options: { max?: number } = {}) {
const stateNotes = session.state.get().notes;
const notes = Array.isArray(stateNotes) ? stateNotes.map(String) : [];
const max = options.max ?? 5;
if (!notes.length) return null;
return `Known notes:\n${notes.slice(-max).join("\n")}`;
}
}

Attach it to a mode:

class NotesMode extends HarnessMode {
providers = [new NotesContext().with({ max: 3 })];
}

Boundary note: the provider is behavior. The data it reads may come from shared state or runtime resources.

Hosts that want optional provider failures to be skipped can opt in:

const store = await createHarnessSessionStore({
agent: { definition: agent },
providers: [new EchoProvider()],
defaultModel: "echo/basic",
errorPolicy: { contextFailure: "warn-and-skip" },
});

API: Context Providers.