Skip to main content

harness_glob/
types.rs

1use harness_core::{PermissionPolicy, ToolError};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone)]
5pub struct GlobSessionConfig {
6    pub cwd: String,
7    pub permissions: PermissionPolicy,
8    pub default_head_limit: Option<usize>,
9    pub max_bytes: Option<usize>,
10    pub max_filesize: Option<u64>,
11    pub max_paths_scanned: Option<usize>,
12    pub timeout_ms: Option<u64>,
13}
14
15impl GlobSessionConfig {
16    pub fn new(cwd: impl Into<String>, permissions: PermissionPolicy) -> Self {
17        Self {
18            cwd: cwd.into(),
19            permissions,
20            default_head_limit: None,
21            max_bytes: None,
22            max_filesize: None,
23            max_paths_scanned: None,
24            timeout_ms: None,
25        }
26    }
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct GlobPathsMeta {
31    pub pattern: String,
32    pub total: usize,
33    pub returned: usize,
34    pub offset: usize,
35    pub head_limit: usize,
36    pub more: bool,
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct GlobPathsResult {
41    pub output: String,
42    pub paths: Vec<String>,
43    pub meta: GlobPathsMeta,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct ErrorResult {
48    pub error: ToolError,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52#[serde(tag = "kind", rename_all = "snake_case")]
53pub enum GlobResult {
54    #[serde(rename = "paths")]
55    Paths(GlobPathsResult),
56    #[serde(rename = "error")]
57    Error(ErrorResult),
58}