pub struct Harness {
pub name: String,
pub register: Vec<String>,
pub registered: Vec<String>,
pub config: Option<String>,
pub marker: Option<String>,
pub snippet: Option<String>,
pub skills: Option<String>,
pub hooks: Option<String>,
pub hook_events: Vec<String>,
}Expand description
One agent runner, as the seat’s own configuration describes it. The seat
ships no runner’s name: the file at harnesses_path names them, one
table each, and onboard and doctor read it.
A runner registers MCP servers one of two ways. register is a command
that does it ({server} is replaced by the path to ljos-mcp) and
registered a command that exits 0 once it is done. Or config is a
file the runner reads, marker a line that means the entry is present,
and snippet what to append when it is not. skills is the directory
the runner loads skills from; the protocol goes to <skills>/ljos/SKILL.md.
Fields§
§name: String§register: Vec<String>§registered: Vec<String>§config: Option<String>§marker: Option<String>§snippet: Option<String>§skills: Option<String>§hooks: Option<String>A JSON settings file the runner reads hooks from, in the shape
{"hooks": {"<Event>": [{"matcher": "...", "hooks": [{"type": "command", "command": "..."}]}]}}. onboard merges the seat’s
memory hook into it, so what the seat knows about a command or a
prompt reaches the agent at the point of action.
hook_events: Vec<String>The events the memory hook fires on. Empty means HOOK_EVENTS,
the prompt event alone: a panel of this seat’s personas settled on
prompts over tool calls, because a turn issues many shell commands
and one prompt. ["UserPromptSubmit", "PreToolUse"] injects on both.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Harness
impl<'de> Deserialize<'de> for Harness
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for Harness
impl StructuralPartialEq for Harness
Auto Trait Implementations§
impl Freeze for Harness
impl RefUnwindSafe for Harness
impl Send for Harness
impl Sync for Harness
impl Unpin for Harness
impl UnsafeUnpin for Harness
impl UnwindSafe for Harness
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more