Pure MoonBit LLM client library
Dependencies
pub(open) trait Provider {
stream(Self, Array[Message], Array[ToolDef], StreamHandler) -> Unit
name(Self) -> String
}pub(all) enum AgentEvent {
Stream(StreamEvent)
ToolExecute(String, Json)
ToolResult(String, String, Bool)
StepComplete(Int)
Done(String)
}fn BoxedProvider::stream(self : BoxedProvider, messages : Array[Message], tools : Array[ToolDef], handler : StreamHandler) -> Unitpub(all) struct CollectResult {
text : String
tool_calls : Array[ToolCall]
finish_reason : FinishReason
usage : Usage?
}pub(all) enum ContentBlock {
Text(String)
ToolUse(String, String, Json)
ToolResult(String, String, Bool)
}pub(all) enum FinishReason {
Stop
ToolUse
Length
ContentFilter
Error
Unknown(String)
}impl Show for FinishReasonpub(all) struct JsonChatResponse {
content : String
tool_calls : Array[JsonChatToolCall]
reasoning_content : String?
}fn JsonChatResponse::new(content : String, tool_calls : Array[JsonChatToolCall], reasoning_content : String?) -> JsonChatResponsepub(all) struct ProviderConfig {
api_key : String
model : String
max_tokens : Int
system_prompt : String
base_url : String
timeout_sec : Int
max_retries : Int
retry_delay_ms : Int
}fn ProviderConfig::new(api_key : String, model : String, base_url : String, max_tokens? : Int, system_prompt? : String, timeout_sec? : Int, max_retries? : Int, retry_delay_ms? : Int) -> ProviderConfigpub(all) enum Role {
User
Assistant
System
Tool
}pub(all) struct SkillEntry {
name : String
path : String
source : String
content : String
}pub(all) struct SkillInfo {
name : String
path : String
source : String
available : Bool
}pub struct SkillsLoader {
workspace_skills : Map[String, SkillEntry]
builtin_skills : Map[String, SkillEntry]
}fn SkillsLoader::build_skills_summary(self : SkillsLoader, bins? : Map[String, Bool], env? : Map[String, String]) -> Stringfn SkillsLoader::get_always_skills(self : SkillsLoader, bins? : Map[String, Bool], env? : Map[String, String]) -> Array[String]fn SkillsLoader::list_skills(self : SkillsLoader, filter_unavailable? : Bool, bins? : Map[String, Bool], env? : Map[String, String]) -> Array[SkillInfo]fn SkillsLoader::load_skills_for_context(self : SkillsLoader, skill_names : Array[String]) -> Stringfn SkillsLoader::register_builtin_skill(self : SkillsLoader, name : String, content : String, path? : String) -> Unitfn SkillsLoader::register_workspace_skill(self : SkillsLoader, name : String, content : String, path? : String) -> Unitpub(all) enum StopCondition {
MaxSteps(Int)
OnFinish
}pub(all) enum StreamEvent {
TextDelta(String)
ToolCallStart(String, String)
ToolCallDelta(String, String)
ToolCallEnd(String, String, Json)
MessageStart
MessageEnd(FinishReason, Usage?)
Error(String)
}impl Show for StreamEventpub(all) struct Usage {
input_tokens : Int
output_tokens : Int
}fn run_agent(provider : BoxedProvider, registry : ToolRegistry, messages : Array[Message], stop : StopCondition, on_event : (AgentEvent) -> Unit) -> Unitfn run_agent_cancellable(provider : BoxedProvider, registry : ToolRegistry, messages : Array[Message], stop : StopCondition, should_cancel : () -> Bool, on_event : (AgentEvent) -> Unit) -> Unitfn strip_skill_frontmatter(content : String) -> StringPure MoonBit LLM client library
Dependencies