pub struct Manifest {
pub owner: String,
pub name: String,
pub version: String,
pub description: String,
pub exec: Exec,
pub cli_zip: CliZip,
}Expand description
Declarative metadata a local tool ships with — the on-disk
objectiveai.json at
<base_dir>/tools/<owner>/<name>/<version>/objectiveai.json. The
CLI reads and writes this shape verbatim; the tools get wire
response is a lean projection of it (it drops cli_zip).
Fields§
§owner: StringGitHub-style owner (user or org) of the tool’s source repo.
name: StringThe tool’s identifier (matches the <name> directory segment).
version: StringVersion string. Free-form; semver recommended, not enforced.
description: StringOne-line description of what the tool does. Surfaced to agents that consume the tool.
exec: ExecPer-OS exec command. The current platform’s vector is the
program plus its leading arguments; the caller’s --args are
appended and the whole thing runs with CWD = this version
folder’s cli/ subdir.
cli_zip: CliZipPer-OS cli bundle zip filenames (required field; each per-OS entry optional). Hand-placed tools leave every entry absent.
Implementations§
Source§impl Manifest
impl Manifest
Sourcepub fn validate(&self) -> Result<(), &'static str>
pub fn validate(&self) -> Result<(), &'static str>
Validate fields that serde alone can’t enforce. Tools have no
cross-field invariants (unlike plugins’ viewer rules), so this is
currently a no-op — it exists so the shared install/discovery
paths can call validate() uniformly across manifest kinds.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Manifest
impl<'de> Deserialize<'de> for Manifest
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>,
Source§impl From<Manifest> for ResponseManifest
impl From<Manifest> for ResponseManifest
Source§impl JsonSchema for Manifest
impl JsonSchema for Manifest
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreimpl StructuralPartialEq for Manifest
Auto Trait Implementations§
impl Freeze for Manifest
impl RefUnwindSafe for Manifest
impl Send for Manifest
impl Sync for Manifest
impl Unpin for Manifest
impl UnsafeUnpin for Manifest
impl UnwindSafe for Manifest
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<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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