Skip to main content

sim_lib_surface_card/
lib.rs

1//! Shared, plain-data surface-card spine.
2//!
3//! This crate holds the codec-neutral pieces of a "surface card": the
4//! external-name policy used when projecting a kernel [`Symbol`](sim_kernel::Symbol)
5//! onto a foreign tool surface (MCP, OpenAI, file system, human-facing text) and
6//! a plain-data [`SurfaceDescriptor`] spine that depends only on kernel types.
7//!
8//! Concrete surfaces (for example `sim-lib-skill`'s OpenAI tool descriptor)
9//! derive their external names through [`external_name`], keeping a single
10//! source of truth for the mangling rules.
11//!
12//! # Example
13//!
14//! ```
15//! use sim_kernel::Symbol;
16//! use sim_lib_surface_card::{ExternalNamePolicy, external_name};
17//!
18//! let symbol = Symbol::qualified("skill", "do.thing");
19//! assert_eq!(external_name(&symbol, ExternalNamePolicy::OpenAiTool), "skill_do_thing");
20//! assert_eq!(external_name(&symbol, ExternalNamePolicy::HumanReadable), "skill/do.thing");
21//! ```
22
23#![forbid(unsafe_code)]
24#![deny(missing_docs)]
25
26mod descriptor;
27mod name;
28
29pub use descriptor::SurfaceDescriptor;
30pub use name::{ExternalNamePolicy, external_name};