
This PR adds an `AgentProfileId` newtype for profile IDs that we can use instead of `Arc<str>` everywhere. Release Notes: - N/A
42 lines
1 KiB
Rust
42 lines
1 KiB
Rust
use std::sync::Arc;
|
|
|
|
use gpui::SharedString;
|
|
use indexmap::IndexMap;
|
|
use schemars::JsonSchema;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, PartialEq, Eq, Hash, Clone, Serialize, Deserialize, JsonSchema)]
|
|
pub struct AgentProfileId(pub Arc<str>);
|
|
|
|
impl AgentProfileId {
|
|
pub fn as_str(&self) -> &str {
|
|
&self.0
|
|
}
|
|
}
|
|
|
|
impl std::fmt::Display for AgentProfileId {
|
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
write!(f, "{}", self.0)
|
|
}
|
|
}
|
|
|
|
impl Default for AgentProfileId {
|
|
fn default() -> Self {
|
|
Self("write".into())
|
|
}
|
|
}
|
|
|
|
/// A profile for the Zed Agent that controls its behavior.
|
|
#[derive(Debug, Clone)]
|
|
pub struct AgentProfile {
|
|
/// The name of the profile.
|
|
pub name: SharedString,
|
|
pub tools: IndexMap<Arc<str>, bool>,
|
|
pub enable_all_context_servers: bool,
|
|
pub context_servers: IndexMap<Arc<str>, ContextServerPreset>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, Default)]
|
|
pub struct ContextServerPreset {
|
|
pub tools: IndexMap<Arc<str>, bool>,
|
|
}
|