mirror of
https://github.com/instructkr/claw-code.git
synced 2026-04-08 00:54:49 +08:00
docs: describe the runtime public API surface
This adds crate-level and type-level Rustdoc to the runtime crate's core exported types so downstream crates and contributors can understand the session, prompt, permission, OAuth, usage, and tool I/O primitives without spelunking every implementation file. Constraint: The docs pass needed to stay focused on public runtime types without changing behavior Rejected: Add blanket docs to every public item in one sweep | larger churn than needed for a targeted docs pass Confidence: high Scope-risk: narrow Reversibility: clean Directive: When exporting new runtime primitives from lib.rs, add a short Rustdoc summary in the defining module at the same time Tested: cargo build --workspace; cargo test --workspace Not-tested: rustdoc HTML rendering beyond doc-test coverage
This commit is contained in:
@@ -6,8 +6,10 @@ use std::path::{Path, PathBuf};
|
||||
use crate::json::JsonValue;
|
||||
use crate::sandbox::{FilesystemIsolationMode, SandboxConfig};
|
||||
|
||||
/// Schema name advertised by generated settings files.
|
||||
pub const CLAW_SETTINGS_SCHEMA_NAME: &str = "SettingsSchema";
|
||||
|
||||
/// Origin of a loaded settings file in the configuration precedence chain.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub enum ConfigSource {
|
||||
User,
|
||||
@@ -15,6 +17,7 @@ pub enum ConfigSource {
|
||||
Local,
|
||||
}
|
||||
|
||||
/// Effective permission mode after decoding config values.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum ResolvedPermissionMode {
|
||||
ReadOnly,
|
||||
@@ -22,12 +25,14 @@ pub enum ResolvedPermissionMode {
|
||||
DangerFullAccess,
|
||||
}
|
||||
|
||||
/// A discovered config file and the scope it contributes to.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct ConfigEntry {
|
||||
pub source: ConfigSource,
|
||||
pub path: PathBuf,
|
||||
}
|
||||
|
||||
/// Fully merged runtime configuration plus parsed feature-specific views.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct RuntimeConfig {
|
||||
merged: BTreeMap<String, JsonValue>,
|
||||
@@ -35,6 +40,7 @@ pub struct RuntimeConfig {
|
||||
feature_config: RuntimeFeatureConfig,
|
||||
}
|
||||
|
||||
/// Parsed plugin-related settings extracted from runtime config.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default)]
|
||||
pub struct RuntimePluginConfig {
|
||||
enabled_plugins: BTreeMap<String, bool>,
|
||||
@@ -44,6 +50,7 @@ pub struct RuntimePluginConfig {
|
||||
bundled_root: Option<String>,
|
||||
}
|
||||
|
||||
/// Structured feature configuration consumed by runtime subsystems.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default)]
|
||||
pub struct RuntimeFeatureConfig {
|
||||
hooks: RuntimeHookConfig,
|
||||
@@ -56,6 +63,7 @@ pub struct RuntimeFeatureConfig {
|
||||
sandbox: SandboxConfig,
|
||||
}
|
||||
|
||||
/// Hook command lists grouped by lifecycle stage.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default)]
|
||||
pub struct RuntimeHookConfig {
|
||||
pre_tool_use: Vec<String>,
|
||||
@@ -63,6 +71,7 @@ pub struct RuntimeHookConfig {
|
||||
post_tool_use_failure: Vec<String>,
|
||||
}
|
||||
|
||||
/// Raw permission rule lists grouped by allow, deny, and ask behavior.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default)]
|
||||
pub struct RuntimePermissionRuleConfig {
|
||||
allow: Vec<String>,
|
||||
@@ -70,17 +79,20 @@ pub struct RuntimePermissionRuleConfig {
|
||||
ask: Vec<String>,
|
||||
}
|
||||
|
||||
/// Collection of configured MCP servers after scope-aware merging.
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Default)]
|
||||
pub struct McpConfigCollection {
|
||||
servers: BTreeMap<String, ScopedMcpServerConfig>,
|
||||
}
|
||||
|
||||
/// MCP server config paired with the scope that defined it.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct ScopedMcpServerConfig {
|
||||
pub scope: ConfigSource,
|
||||
pub config: McpServerConfig,
|
||||
}
|
||||
|
||||
/// Transport families supported by configured MCP servers.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum McpTransport {
|
||||
Stdio,
|
||||
@@ -91,6 +103,7 @@ pub enum McpTransport {
|
||||
ManagedProxy,
|
||||
}
|
||||
|
||||
/// Scope-normalized MCP server configuration variants.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub enum McpServerConfig {
|
||||
Stdio(McpStdioServerConfig),
|
||||
@@ -101,6 +114,7 @@ pub enum McpServerConfig {
|
||||
ManagedProxy(McpManagedProxyServerConfig),
|
||||
}
|
||||
|
||||
/// Configuration for an MCP server launched as a local stdio process.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct McpStdioServerConfig {
|
||||
pub command: String,
|
||||
@@ -109,6 +123,7 @@ pub struct McpStdioServerConfig {
|
||||
pub tool_call_timeout_ms: Option<u64>,
|
||||
}
|
||||
|
||||
/// Configuration for an MCP server reached over HTTP or SSE.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct McpRemoteServerConfig {
|
||||
pub url: String,
|
||||
@@ -117,6 +132,7 @@ pub struct McpRemoteServerConfig {
|
||||
pub oauth: Option<McpOAuthConfig>,
|
||||
}
|
||||
|
||||
/// Configuration for an MCP server reached over WebSocket.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct McpWebSocketServerConfig {
|
||||
pub url: String,
|
||||
@@ -124,17 +140,20 @@ pub struct McpWebSocketServerConfig {
|
||||
pub headers_helper: Option<String>,
|
||||
}
|
||||
|
||||
/// Configuration for an MCP server addressed through an SDK name.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct McpSdkServerConfig {
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
/// Configuration for an MCP managed-proxy endpoint.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct McpManagedProxyServerConfig {
|
||||
pub url: String,
|
||||
pub id: String,
|
||||
}
|
||||
|
||||
/// OAuth overrides associated with a remote MCP server.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct McpOAuthConfig {
|
||||
pub client_id: Option<String>,
|
||||
@@ -143,6 +162,7 @@ pub struct McpOAuthConfig {
|
||||
pub xaa: Option<bool>,
|
||||
}
|
||||
|
||||
/// OAuth client configuration used by the main Claw runtime.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct OAuthConfig {
|
||||
pub client_id: String,
|
||||
@@ -153,6 +173,7 @@ pub struct OAuthConfig {
|
||||
pub scopes: Vec<String>,
|
||||
}
|
||||
|
||||
/// Errors raised while reading or parsing runtime configuration files.
|
||||
#[derive(Debug)]
|
||||
pub enum ConfigError {
|
||||
Io(std::io::Error),
|
||||
@@ -176,6 +197,7 @@ impl From<std::io::Error> for ConfigError {
|
||||
}
|
||||
}
|
||||
|
||||
/// Discovers config files and merges them into a [`RuntimeConfig`].
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct ConfigLoader {
|
||||
cwd: PathBuf,
|
||||
@@ -441,6 +463,7 @@ impl RuntimePluginConfig {
|
||||
}
|
||||
|
||||
#[must_use]
|
||||
/// Returns the default per-user config directory used by the runtime.
|
||||
pub fn default_config_home() -> PathBuf {
|
||||
std::env::var_os("CLAW_CONFIG_HOME")
|
||||
.map(PathBuf::from)
|
||||
@@ -1338,7 +1361,10 @@ mod tests {
|
||||
.load()
|
||||
.expect("config should load");
|
||||
|
||||
let remote_server = loaded.mcp().get("remote").expect("remote server should exist");
|
||||
let remote_server = loaded
|
||||
.mcp()
|
||||
.get("remote")
|
||||
.expect("remote server should exist");
|
||||
assert_eq!(remote_server.transport(), McpTransport::Http);
|
||||
match &remote_server.config {
|
||||
McpServerConfig::Http(config) => {
|
||||
|
||||
Reference in New Issue
Block a user