pub async fn run(
config: Config,
providers: Vec<Box<dyn Provider>>,
db: Db,
memory: Option<Arc<MemoryStore>>,
tools: ToolRegistry,
profiles: Vec<AgentProfile>,
cwd: String,
skill_names: Vec<(String, String)>,
hooks: HookRegistry,
commands: CommandRegistry,
opts: HeadlessOptions,
) -> Result<()>