pub struct OneharnessProvider { /* private fields */ }Expand description
The default Provider: runs each prompt on a harness through the
oneharness CLI.
Wires four real oneharness features that ship in v0.2.0:
--system <skill instructions>— the skill becomes a real system prompt on the underlying harness (e.g.--append-system-promptfor claude-code), instead of being inlined into the user message.--resume <session>— multi-turnrespondcalls thread the previoussession_idso the harness sees a continuing conversation (and keeps its tool state, files, etc.) instead of being re-prompted with a stringified transcript. Used only for harnesses that reportsupports_resumein the registry (claude-code, opencode, cursor today); other harnesses fall back to the inline-transcript path.- Normalized
usage(input_tokens,output_tokens,cost_usd) — surfaced on every turn so cross-model cost reporting is portable. - Normalized
failure_kind(auth,rate_limit,model_not_found, …) — classified provider errors so the CLI can distinguish a broken environment from a broken skill.
Evals and the simulated user always run on the configured judge_harness,
independent of the harness under test, so the evaluator does not drift with
the matrix.
Implementations§
Source§impl OneharnessProvider
impl OneharnessProvider
Sourcepub fn new(config: &OneharnessConfig) -> Self
pub fn new(config: &OneharnessConfig) -> Self
Build a provider from its configuration.
Trait Implementations§
Source§impl Provider for OneharnessProvider
impl Provider for OneharnessProvider
Source§fn respond(
&self,
platform: &str,
model: &str,
skill: &SkillRef<'_>,
messages: &[Message],
session: Option<&str>,
) -> Result<AssistantTurn>
fn respond( &self, platform: &str, model: &str, skill: &SkillRef<'_>, messages: &[Message], session: Option<&str>, ) -> Result<AssistantTurn>
Run one assistant/skill turn given the conversation so far.
session,
when Some, is a handle returned by a previous respond call on this
run that the provider may use to continue the same harness session
(e.g. via oneharness run --resume); providers that don’t support
continuation should ignore it. Read moreSource§fn simulate_user(
&self,
model: &str,
persona: &str,
messages: &[Message],
) -> Result<UserTurn>
fn simulate_user( &self, model: &str, persona: &str, messages: &[Message], ) -> Result<UserTurn>
Produce one simulated-user turn. Read more
Source§fn judge(
&self,
model: &str,
query: &JudgeQuery<'_>,
messages: &[Message],
) -> Result<JudgeVerdict>
fn judge( &self, model: &str, query: &JudgeQuery<'_>, messages: &[Message], ) -> Result<JudgeVerdict>
Score a criterion against the conversation. Read more
Source§fn supports_resume(&self, platform: &str) -> bool
fn supports_resume(&self, platform: &str) -> bool
True iff
respond on platform will faithfully continue a prior
session when given its session_id. The default is false; providers
that support resume override this so the runner knows to thread the
session id through.Auto Trait Implementations§
impl Freeze for OneharnessProvider
impl RefUnwindSafe for OneharnessProvider
impl Send for OneharnessProvider
impl Sync for OneharnessProvider
impl Unpin for OneharnessProvider
impl UnsafeUnpin for OneharnessProvider
impl UnwindSafe for OneharnessProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more