use serde::{Deserialize, Serialize};
use crate::capability::{ActorId, Capability, EffectKind};
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct ProjectMap {
pub languages: Vec<String>,
pub package_roots: Vec<String>,
pub build_systems: Vec<String>,
pub entry_points: Vec<String>,
pub risk_hotspots: Vec<String>,
}
pub fn exploration_capability(actor: ActorId) -> Capability {
Capability::new(
actor,
vec![
EffectKind::ReadFile,
EffectKind::Search,
EffectKind::List,
EffectKind::LspQuery,
EffectKind::GitRead,
],
)
.with_paths(vec!["*"])
}
pub fn is_read_only_capability(cap: &Capability) -> bool {
cap.effects.iter().all(|e| e.is_read_only())
}