systemprompt-ai 0.64.0

Provider-agnostic LLM integration for systemprompt.io AI governance — Anthropic, OpenAI, Gemini, and local models unified behind one governed pipeline with cost tracking and audit.
Documentation
//! # systemprompt-ai
//!
//! Provider-agnostic LLM integration for systemprompt.io.
//!
//! `systemprompt-ai` is a [`domain`] layer crate that unifies Anthropic,
//! `OpenAI`, Gemini, and image-generation providers behind a single governed
//! pipeline with cost tracking, audit-trail persistence, and structured-output
//! validation.
//!
//! It exposes:
//!
//! - [`AiService`] — top-level orchestration of generation, tool execution,
//!   structured output, planning, and Google-Search-grounded responses.
//! - [`ImageService`] — image generation and persistence.
//! - [`ImageStorage`] / [`StorageConfig`] — local file-system blob storage for
//!   generated images.
//! - The [`AiExtension`] entrypoint that wires the crate into the
//!   [`systemprompt-extension`](systemprompt_extension) framework.
//! - Repository types ([`AiRequestRepository`], [`AiQuotaBucketRepository`], …)
//!   for persisting request audit rows, quota buckets, gateway policies, and
//!   safety findings.
//!
//! ## Error model
//!
//! All public service signatures return [`error::Result<T>`] (an alias for
//! `Result<T, AiError>`). [`AiError`](error::AiError) composes:
//!
//! - [`AiInferenceError`](systemprompt_models::errors::AiInferenceError) for
//!   the provider-trait seam
//! - the canonical [`RepositoryError`](systemprompt_traits::RepositoryError)
//!   for persistence
//! - common transport errors ([`reqwest::Error`], [`serde_json::Error`],
//!   [`std::io::Error`], [`regex::Error`]) and typed storage / stream causes
//! - structured variants for conditions the crate itself detects (an
//!   unconfigured or disabled provider, an unsupported capability, a rejected
//!   AI policy), each carrying the values that caused it
//!
//! The cross-domain [`AiProvider`](systemprompt_models::ai::AiProvider) seam
//! returns [`AiInferenceResult`](systemprompt_models::errors::AiInferenceResult)
//! from [`services::core::ai_service`].
//!
//! ## Feature flags
//!
//! This crate has no Cargo features — all functionality is always compiled.
//! `[package.metadata.docs.rs]` sets `all-features = true` for parity with
//! sibling crates that do.
//!
//! [`domain`]: https://github.com/systempromptio/systemprompt-core/blob/main/instructions/information/architecture.md
//!
//! Copyright (c) systemprompt.io — Business Source License 1.1.
//! See <https://systemprompt.io> for licensing details.

pub mod error;
pub(crate) mod extension;
pub mod models;
pub mod repository;
pub mod services;

pub use extension::AiExtension;

pub use services::core::{AiService, AiServiceProviders, ImageService, ImageServiceParts};

pub use services::storage::{ImageStorage, StorageConfig, StorageConfigError};
pub use services::tools::NoopToolProvider;
pub use systemprompt_models::ai::{GenerateResponseParams, GoogleSearchParams};

pub use systemprompt_models::ai::{
    AiMessage, AiRequest, AiRequestBuilder, AiResponse, MessageRole, ModelConfig, ModelHint,
    ModelPreferences, ProviderConfig, ResponseFormat, SamplingParams, SearchGroundedResponse,
    StructuredOutputOptions,
};

pub use systemprompt_models::ai::tools::{CallToolResult, McpTool, ToolCall};

pub use systemprompt_manifest::services::AiConfig;

pub use models::image_generation::{
    AspectRatio, GeneratedImageRecord, ImageGenerationRequest, ImageGenerationResponse,
    ImageResolution, ReferenceImage,
};

pub use services::providers::{GeminiImageProvider, ImageProvider, ImageProviderCapabilities};

pub use repository::{
    AiGatewayPolicyRepository, AiQuotaBucketRepository, AiRequestPayloadRepository,
    AiRequestRepository, AiSafetyFindingRepository, GatewayPolicyRow, IncrementParams,
    InsertSafetyFinding, QuotaBucketDelta, QuotaBucketState, SafetyFindingRollupRow,
    UpsertPayloadParams,
};

pub use services::upstream::{UpstreamCall, UpstreamDialect, UpstreamTarget, UpstreamTargetError};