Hi HN,I wrote clark-agent, a small Rust library for running LLM tool loops.The loop is:context - model - tool call - tool result - repeatThe parts I wanted typed were:- transcript messages - tool calls - tool results - stream events - tool schemasThe model/provider boundary is a StreamFn trait. Tools implement AgentTool. There are hooks for things like context transforms, tool gates, observers, and follow-up messages.