interface HarnessProfileOptionsReplaces the default BASE_AGENT_PROMPT when set.
Use this when a model requires a fundamentally different base
prompt rather than an additive suffix. Most profiles should prefer
systemPromptSuffix instead.
Middleware names to remove from the assembled middleware stack.
Matched against each middleware's .name property. Cannot include
required scaffolding names (FilesystemMiddleware,
SubAgentMiddleware) — attempting to do so throws at construction
time.
Tool names to remove from the agent's visible tool set.
Applied via a filtering middleware after all tool-injecting middleware have run, so it catches both user-provided and middleware-provided tools.
Configuration for the auto-added general-purpose subagent.
Text appended to the assembled base prompt with a blank-line
separator (\n\n).
This is the primary mechanism for model-specific prompt tuning. Applied uniformly to the main agent, declarative subagents, and the auto-added general-purpose subagent.
Per-tool description replacements keyed by tool name.
Allows profiles to rewrite tool descriptions for models that respond better to different phrasing. Keys that don't match any tool in the final tool set are silently ignored.
User-facing options for creating a HarnessProfile.
Accepts plain arrays and records; the factory function converts them to their frozen counterparts. All fields are optional — an empty object produces a no-op profile.
Additional middleware appended to the stack after user middleware.
Can be a static array or a zero-arg factory that returns fresh instances per agent construction (important when middleware carries mutable state).