Skip to main content

gba_pm/
lib.rs

1//! GBA Prompt Manager
2//!
3//! This crate provides a prompt management system using MiniJinja templates.
4//! It allows loading, rendering, and managing prompts for the GBA agent system.
5//!
6//! # Features
7//!
8//! - Load templates from directories (supports `.j2`, `.jinja`, `.jinja2` extensions)
9//! - Add templates programmatically from strings
10//! - Render templates with arbitrary serializable context
11//! - Render one-off string templates without registration
12//!
13//! # Example
14//!
15//! ```no_run
16//! use gba_pm::PromptManager;
17//! use serde_json::json;
18//!
19//! // Create a new prompt manager
20//! let mut manager = PromptManager::new();
21//!
22//! // Load templates from a directory
23//! manager.load_dir("./templates")?;
24//!
25//! // Or add templates programmatically
26//! manager.add("greeting", "Hello, {{ name }}!")?;
27//!
28//! // Render a template with context
29//! let result = manager.render("greeting", json!({"name": "World"}))?;
30//! assert_eq!(result, "Hello, World!");
31//!
32//! // List all template names
33//! for name in manager.names() {
34//!     println!("Template: {}", name);
35//! }
36//! # Ok::<(), gba_pm::PromptError>(())
37//! ```
38
39mod error;
40mod manager;
41
42pub use error::{PromptError, Result};
43pub use manager::PromptManager;