marbots_sdk/lib.rs
1//! Typed Rust SDK for [Marbots](https://github.com/DotNetVibeCoderz/Vibe_Dev/tree/main/Marbots), the multi-agent
2//! collaboration platform. Synchronous (no async runtime required); from async code, call it inside `spawn_blocking`.
3//! Kernel packs, permission profiles, task states, event types and model settings are enums/helpers, so typos are
4//! compile errors.
5//!
6//! Built by Gravicode Studios, led by Kang Fadhil.
7//!
8//! ```no_run
9//! use marbots_sdk::{BotSpec, Client, EventType, KernelPack, ModelRef, PermissionProfile};
10//!
11//! let mb = Client::new("http://localhost:5170");
12//! // Every bot can run on its own model; ModelRef::DEFAULT follows the workspace default.
13//! let sari = mb.bots().create(
14//! BotSpec::new("Sari")
15//! .role("UX designer")
16//! .kernel_functions([KernelPack::Files, KernelPack::Web])
17//! .permission_profile(PermissionProfile::WorkspaceWrite)
18//! .model(ModelRef::of("azure", "gpt-5.6-luna")),
19//! )?;
20//! mb.bots().set_model("atlas", ModelRef::DEFAULT)?;
21//!
22//! let thread = mb.threads().create(&sari.id, None)?;
23//! let result = mb.threads().send(&thread.id, "Sketch a wireframe", true)?;
24//! println!("{:?}: {}", result.task.model, result.text());
25//!
26//! for event in mb.events().stream(Some(&thread.id))? {
27//! let event = event?;
28//! if event.event_type == EventType::ToolCallStarted { println!("tool: {:?}", event.message); }
29//! if event.is_task_finished() { break; }
30//! }
31//! # Ok::<(), marbots_sdk::Error>(())
32//! ```
33
34mod client;
35mod types;
36
37pub use client::{
38 AgentHosts, Approvals, Bots, Client, Error, EventStream, Events, Mcp, Memory, Models, Result,
39 Schedules, Skills, Tasks, Templates, Tenancy, Threads,
40};
41pub use types::*;