Skip to content

Core-only Agent

Objective: run a complete Harness Kernel session without optional runtime packages. This is useful for tests and for understanding the core contracts.

import { defineAgent } from "@harness-kernel/core/agent";
import { HarnessMode } from "@harness-kernel/core/agent/mode";
import { createHarnessSessionStore } from "@harness-kernel/core/runner";
import type {
HarnessModelProvider,
ModelProviderRunInput,
ModelProviderRunResult,
} from "@harness-kernel/core/runner/model-provider";
import { MemorySessionStorage } from "@harness-kernel/core/runner/storage";
import { NoopSandbox } from "@harness-kernel/core/runner/sandbox";
class ChatMode extends HarnessMode {
prompt = "Reply with a short answer.";
}
const chatMode = new ChatMode();
const agent = defineAgent({
key: "core-only",
label: "Core Only",
initialMode: chatMode,
modes: [chatMode],
});
class EchoProvider implements HarnessModelProvider {
namespace = "echo";
async run(input: ModelProviderRunInput): Promise<ModelProviderRunResult> {
const last = input.messages.at(-1);
return { content: `echo: ${String(last?.content ?? "")}` };
}
}
const store = await createHarnessSessionStore({
agent: { definition: agent },
providers: [new EchoProvider()],
defaultModel: "echo/basic",
storage: new MemorySessionStorage(),
sandbox: new NoopSandbox(),
});
const result = await store.send("demo", "hello");
console.log(result.answer);
await store.close();

Boundary note: the agent defines ChatMode; the runtime host provides the model provider, storage, sandbox, and required defaultModel.

API: Model Providers and Storage.