refactor: created a single install_builtins free function to remove from Config::init

This commit is contained in:
2026-04-19 17:54:50 -06:00
parent dba6304f51
commit f1914f6bd4
7 changed files with 186 additions and 21 deletions
+1 -1
View File
@@ -5,6 +5,7 @@ use crate::{
function::{Functions, run_llm_function},
};
use super::rag_cache::RagKey;
use crate::config::paths;
use crate::config::prompts::{
DEFAULT_SPAWN_INSTRUCTIONS, DEFAULT_TEAMMATE_INSTRUCTIONS, DEFAULT_TODO_INSTRUCTIONS,
@@ -17,7 +18,6 @@ use inquire::{Text, validator::Validation};
use rust_embed::Embed;
use serde::{Deserialize, Serialize};
use std::{ffi::OsStr, path::Path};
use super::rag_cache::RagKey;
const DEFAULT_AGENT_NAME: &str = "rag";
+1 -1
View File
@@ -19,7 +19,7 @@
//! Runtime-only state (current role, session, agent, supervisor, etc.)
//! lives on [`RequestContext`](super::request_context::RequestContext).
use crate::client::{list_models, ClientConfig};
use crate::client::{ClientConfig, list_models};
use crate::render::{MarkdownRender, RenderOptions};
use crate::utils::{IS_STDOUT_TERMINAL, NO_COLOR, decode_bin, get_env_name};
+7 -3
View File
@@ -309,6 +309,13 @@ impl Default for Config {
}
}
pub fn install_builtins() -> Result<()> {
Agent::install_builtin_agents()?;
Macro::install_macros()?;
Functions::install_builtin_global_tools()?;
Ok(())
}
impl Config {
pub fn init_bare() -> Result<Self> {
let h = Handle::current();
@@ -381,8 +388,6 @@ impl Config {
config.info_flag = info_flag;
config.vault = Arc::new(vault);
Agent::install_builtin_agents()?;
config.load_envs();
if let Some(wrap) = config.wrap.clone() {
@@ -397,7 +402,6 @@ impl Config {
config.setup_model()?;
config.setup_document_loaders();
config.setup_user_agent();
Macro::install_macros()?;
Ok(())
};
let ret = setup(&mut config).await;
+1 -3
View File
@@ -192,7 +192,7 @@ pub struct Functions {
}
impl Functions {
fn install_global_tools() -> Result<()> {
pub fn install_builtin_global_tools() -> Result<()> {
info!(
"Installing global built-in functions in {}",
paths::functions_dir().display()
@@ -241,7 +241,6 @@ impl Functions {
}
pub fn init(visible_tools: &[String]) -> Result<Self> {
Self::install_global_tools()?;
Self::clear_global_functions_bin_dir()?;
let declarations = Self {
@@ -258,7 +257,6 @@ impl Functions {
}
pub fn init_agent(name: &str, global_tools: &[String]) -> Result<Self> {
Self::install_global_tools()?;
Self::clear_agent_bin_dir(name)?;
let global_tools_declarations = if !global_tools.is_empty() {
+4 -2
View File
@@ -22,8 +22,8 @@ use crate::client::{
use crate::config::paths;
use crate::config::{
Agent, AppConfig, AppState, CODE_ROLE, Config, EXPLAIN_SHELL_ROLE, Input, RequestContext,
SHELL_ROLE, TEMP_SESSION_NAME, WorkingMode, ensure_parent_exists, list_agents, load_env_file,
macro_execute,
SHELL_ROLE, TEMP_SESSION_NAME, WorkingMode, ensure_parent_exists, install_builtins,
list_agents, load_env_file, macro_execute,
};
use crate::render::{prompt_theme, render_error};
use crate::repl::Repl;
@@ -82,6 +82,8 @@ async fn main() -> Result<()> {
let log_path = setup_logger()?;
install_builtins()?;
if let Some(client_arg) = &cli.authenticate {
let config = Config::init_bare()?;
let (client_name, provider) = resolve_oauth_client(client_arg.as_deref(), &config.clients)?;
+2 -11
View File
@@ -103,23 +103,14 @@ impl Rag {
Ok(rag)
}
pub fn load(
app: &AppConfig,
name: &str,
path: &Path,
) -> Result<Self> {
pub fn load(app: &AppConfig, name: &str, path: &Path) -> Result<Self> {
let err = || format!("Failed to load rag '{name}' at '{}'", path.display());
let content = fs::read_to_string(path).with_context(err)?;
let data: RagData = serde_yaml::from_str(&content).with_context(err)?;
Self::create(app, name, path, data)
}
pub fn create(
app: &AppConfig,
name: &str,
path: &Path,
data: RagData,
) -> Result<Self> {
pub fn create(app: &AppConfig, name: &str, path: &Path, data: RagData) -> Result<Self> {
let hnsw = data.build_hnsw();
let bm25 = data.build_bm25();
let embedding_model =