SkillExecutor
LocalAgentClient uses SkillExecutor to process messages locally with an async generator. IronClawClient.send_message() depends on SkillExecutor or corresponding executor to process messages and yield responses asynchronously. SkillExecutor uses SkillResult as the result from skill execution. SkillExecutor orchestrates agent's ReAct loop and produces SkillResult. LocalAgentClient.send_message uses SkillExecutor to execute and stream query results asynchronously. LocalAgentClient instantiates SkillExecutor internally for processing agent messages. AgentWarmingService assembles warm context that is used by SkillExecutor in agent sessions. RingfencedSkills replace raw SQL skills with constrained operations used by SkillExecutor when executing agent skills. LocalAgentClient directly uses SkillExecutor to run agent logic without IronClaw service dependency.