agentshield/ir/
tool_surface.rs1use serde::{Deserialize, Serialize};
2
3use super::SourceLocation;
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct ToolSurface {
8 pub name: String,
9 pub description: Option<String>,
10 pub input_schema: Option<serde_json::Value>,
12 pub output_schema: Option<serde_json::Value>,
14 pub declared_permissions: Vec<DeclaredPermission>,
16 pub defined_at: Option<SourceLocation>,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize)]
21pub struct DeclaredPermission {
22 pub permission_type: PermissionType,
23 pub target: Option<String>,
25 pub description: Option<String>,
26}
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
29#[serde(rename_all = "snake_case")]
30pub enum PermissionType {
31 FileRead,
32 FileWrite,
33 NetworkAccess,
34 ProcessExec,
35 EnvAccess,
36 DatabaseAccess,
37 Unknown,
38}