Skip to content
Français

Harness

import type { Harness } from "@elie-laloum/outpost";
  • routingOptional
    HarnessModelRouting | undefined
    Validated per-step routing configuration retained by the built-in harness.
  • kindRequired
    "custom"
    Execution discriminator: custom.
  • modelProviderRequired
    ModelProvider
    Model provider called for every step and summary request.
  • instructionsRequired
    readonly HarnessInstructions[]
    Instruction sources resolved at the start of each turn, followed by the skill catalog when skills are set.
  • toolsRequired
    readonly HarnessTool<unknown>[]
    Flattened tool list sent to the model: declared tools, then skill tools and load_skill. MCP tools are added when a turn starts.
  • limitsRequired
    ResolvedHarnessLimits
    Normalized limits; maxSteps defaults to 100.
  • toolExecutionRequired
    Required<HarnessToolExecution>
    Tool execution settings with defaults applied: concurrency 4, deadlineMs 300000, onError return-to-model.
  • hooksRequired
    readonly HarnessHook<HarnessHookPhase>[]
    Frozen hooks of the harness.
  • permissionsOptional
    HarnessPermissions | undefined
    Permission rules evaluated before before-tool hooks, when set.
  • contextOptional
    HarnessContextStrategy | undefined
    Context strategy of the harness, when set.
  • conversationsOptional
    false | ConversationStore | undefined
    Configured conversation store, or false when recording is disabled; absent means the default store.
  • skillsRequired
    readonly HarnessSkill[]
    Skills of the harness; their tools and load_skill are part of the tool list.
  • cacheRequired
    boolean
    Whether each request asks the provider to cache the conversation prefix.
  • mcpServersOptional
    McpServers | undefined
    Validated MCP servers started for each turn, when set.
export interface Harness {
  readonly routing?: HarnessModelRouting;
  readonly kind: "custom";
  readonly modelProvider: ModelProvider;
  readonly instructions: readonly HarnessInstructions[];
  readonly tools: readonly HarnessTool[];
  readonly limits: ResolvedHarnessLimits;
  readonly toolExecution: Required<HarnessToolExecution>;
  readonly hooks: readonly HarnessHook[];
  readonly permissions?: HarnessPermissions;
  readonly context?: HarnessContextStrategy;
  readonly conversations?: ConversationStore | false;
  readonly skills: readonly HarnessSkill[];
  readonly cache: boolean;
  readonly mcpServers?: McpServers;
}