pub struct Config {Show 31 fields
pub project_root: Option<PathBuf>,
pub validation_depth: u32,
pub checkpoint_ttl_hours: u32,
pub max_symbol_depth: u32,
pub formatter_timeout_secs: u32,
pub type_checker_timeout_secs: u32,
pub format_on_edit: bool,
pub validate_on_edit: Option<String>,
pub formatter: HashMap<String, String>,
pub checker: HashMap<String, String>,
pub restrict_to_project_root: bool,
pub search_index: bool,
pub semantic_search: bool,
pub experimental_bash_rewrite: bool,
pub experimental_bash_compress: bool,
pub experimental_bash_background: bool,
pub max_background_bash_tasks: usize,
pub bash_long_running_reminder_enabled: bool,
pub bash_long_running_reminder_interval_ms: u64,
pub bash_permissions: bool,
pub search_index_max_file_size: u64,
pub max_callgraph_files: usize,
pub semantic: SemanticBackendConfig,
pub experimental_lsp_ty: bool,
pub lsp_servers: Vec<UserServerDef>,
pub disabled_lsp: HashSet<String>,
pub lsp_paths_extra: Vec<PathBuf>,
pub lsp_auto_install_binaries: HashSet<String>,
pub lsp_inflight_installs: HashSet<String>,
pub storage_dir: Option<PathBuf>,
pub diagnostic_cache_size: usize,
}Fields§
§project_root: Option<PathBuf>Root directory of the project being analyzed. None if not scoped.
validation_depth: u32How many levels of call-graph edges to follow during validation (default: 1).
checkpoint_ttl_hours: u32Hours before a checkpoint expires and is eligible for cleanup (default: 24).
max_symbol_depth: u32Maximum depth for recursive symbol resolution (default: 10).
formatter_timeout_secs: u32Seconds before killing a formatter subprocess (default: 10).
type_checker_timeout_secs: u32Seconds before killing a type-checker subprocess (default: 30).
format_on_edit: boolWhether to auto-format files after edits (default: true).
validate_on_edit: Option<String>Whether to auto-validate files after edits (default: false). When “syntax”, only tree-sitter parse check. When “full”, runs type checker.
formatter: HashMap<String, String>Per-language formatter overrides. Keys: “typescript”, “python”, “rust”, “go”. Values: “biome”, “prettier”, “deno”, “ruff”, “black”, “rustfmt”, “goimports”, “gofmt”, “none”.
checker: HashMap<String, String>Per-language type checker overrides. Keys: “typescript”, “python”, “rust”, “go”. Values: “tsc”, “biome”, “pyright”, “ruff”, “cargo”, “go”, “staticcheck”, “none”.
restrict_to_project_root: boolWhether to restrict file operations to within project_root (default: false).
When true, write-capable commands reject paths outside the project root.
search_index: boolEnable the trigram search index (default: false).
semantic_search: boolEnable semantic search (default: false).
experimental_bash_rewrite: boolEnable experimental bash command rewriting (default: false).
experimental_bash_compress: boolEnable experimental bash command compression (default: false).
experimental_bash_background: boolEnable experimental bash background execution (default: false).
max_background_bash_tasks: usizeMaximum number of background bash tasks allowed to run concurrently (default: 8).
bash_long_running_reminder_enabled: boolEmit reminders for long-running bash tasks (default: true).
bash_long_running_reminder_interval_ms: u64Milliseconds between long-running bash reminders (default: 10 minutes).
bash_permissions: boolEnable OpenCode-style bash permission prompts (default: false).
search_index_max_file_size: u64Maximum file size to fully index in bytes (default: 1MB).
max_callgraph_files: usizeMaximum number of source files allowed for call-graph operations
(callers, trace_to, trace_data, impact). When a project
exceeds this count the reverse index is not built and those
commands return a project_too_large error. Does not affect
grep, glob, read, edit, or other non-callgraph features.
Default: 5_000 (matches measured per-op cost ceilings; raise for
very large projects if you accept multi-minute per-call latency).
semantic: SemanticBackendConfig§experimental_lsp_ty: boolEnable Astral ty as an experimental Python LSP server (default: false).
lsp_servers: Vec<UserServerDef>User-defined LSP servers registered by the OpenCode plugin.
disabled_lsp: HashSet<String>Lowercase LSP server IDs disabled by user config.
lsp_paths_extra: Vec<PathBuf>Extra directories to search when resolving LSP binaries.
The plugin populates these from its own auto-install cache (e.g.
~/.cache/aft/lsp-packages/<pkg>/node_modules/.bin/) so a binary AFT
installed itself is discoverable without needing it on PATH.
Resolution order: <project_root>/node_modules/.bin/<bin> →
lsp_paths_extra/<bin> (in order) → PATH via which.
lsp_auto_install_binaries: HashSet<String>Binary names the hosting plugin knows how to auto-install.
Built-in LSPs discovered from files only emit missing-binary warnings
when their binary is in this set. User-configured lsp_servers keep
warning unconditionally.
lsp_inflight_installs: HashSet<String>Binary names with plugin-managed auto-installs currently in flight.
Missing-binary warnings are suppressed while the install is actively running; install failure reporting is handled by the plugin after the background work settles.
storage_dir: Option<PathBuf>Persistent storage directory for indexes (trigram, semantic). Set by the plugin to the XDG-compliant path (e.g. ~/.local/share/opencode/storage/plugin/aft/). Falls back to ~/.cache/aft/ if not set.
diagnostic_cache_size: usizeMaximum number of (server, file) entries kept in the in-memory diagnostic cache. Older entries are evicted in LRU order when the cap is exceeded. Set to 0 to disable the cap entirely. Default: 5000 (covers very large monorepos with bounded memory).
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more