Skip to main content

systemprompt_models/
lib.rs

1//! Foundation data models for systemprompt.io.
2//!
3//! `systemprompt-models` is the shared `shared/*` crate that every
4//! other layer (`infra`, `domain`, `app`, `entry`) depends on for the
5//! plain DTO and configuration shapes that flow across the system.
6//! It owns the wire types of the public HTTP API, the on-disk profile
7//! and services configuration, the A2A and AG-UI protocol shapes, the
8//! MCP metadata helpers, and the typed error enums returned by every
9//! public function in this crate.
10//!
11//! # Module map
12//!
13//! - [`a2a`] — A2A protocol agent card, message, task, and transport types.
14//! - [`agui`] — AG-UI streaming event protocol.
15//! - [`ai`] — LLM request/response shapes plus the [`ai::AiProvider`] trait.
16//! - [`api`] — public HTTP envelopes, error model, pagination, cloud DTOs.
17//! - [`artifacts`] — typed tool-result artifacts.
18//! - [`auth`] — authenticated user, permission, audience, and PKCE types.
19//! - [`config`] — global [`config::Config`] singleton and validation helpers.
20//! - [`content`], [`content_config`] — published content metadata.
21//! - [`errors`] — `thiserror`-derived public error enums.
22//! - [`events`] — analytics, A2A and system event envelopes.
23//! - [`execution`] — request context and execution-step bookkeeping.
24//! - [`extension`] — extension framework manifest types.
25//! - [`mcp`] — MCP protocol metadata helpers.
26//! - [`modules`] — module manifest tree resolution.
27//! - [`oauth`] — OAuth client / server config shapes.
28//! - [`paths`] — well-known directory layout helpers.
29//! - [`profile`] — on-disk profile and bootstrap configuration.
30//! - [`repository`] — repository lifecycle traits and value objects.
31//! - [`routing`] — request routing classification.
32//! - [`secrets`] — secrets document model.
33//! - [`services`] — services manifest (agents, plugins, hooks, MCP, …).
34//! - [`users`] — public user / session summaries.
35//! - [`validators`] — startup configuration validation passes.
36//! - [`wire`] — canonical AI wire types and per-protocol codecs (gateway +
37//!   agent clients).
38//!
39//! # Feature flags
40//!
41//! | Feature | Effect |
42//! | ------- | ------ |
43//! | _default_ | All public DTOs and traits, no axum integration. |
44//! | `web` | Adds `axum::IntoResponse` impls for the API envelopes. |
45//! | `sqlx` | Derives `sqlx::Type` on DB-persisted enums (e.g. [`ContextKind`]). |
46//!
47//! Public functions return `thiserror`-derived enums from [`errors`];
48//! `anyhow::Error` is never used in a public signature.
49//!
50//! Copyright (c) systemprompt.io — Business Source License 1.1.
51//! See <https://systemprompt.io> for licensing details.
52
53pub mod macros;
54
55pub mod a2a;
56pub mod admin;
57pub mod agui;
58pub mod ai;
59pub mod api;
60pub mod artifacts;
61pub mod auth;
62pub mod bridge;
63pub mod config;
64pub mod content;
65pub mod content_config;
66pub mod env;
67pub mod errors;
68pub mod events;
69pub mod execution;
70pub mod extension;
71pub mod gateway_hash;
72pub mod mcp;
73pub mod modules;
74pub mod net;
75pub mod oauth;
76pub mod paths;
77pub mod profile;
78pub mod repository;
79pub mod routing;
80pub mod schema;
81pub mod secrets;
82pub mod services;
83pub mod subprocess;
84pub mod text;
85pub mod time_format;
86pub mod users;
87pub mod validators;
88pub mod wire;
89
90pub use a2a::{
91    AgentAuthentication, AgentCapabilities, AgentCard, AgentCardBuilder, AgentCardSignature,
92    AgentExtension, AgentInterface, AgentProvider, AgentSkill, ApiKeyLocation,
93    Artifact as A2aArtifact, ArtifactMetadata, ArtifactSummary, DataPart, FileContent, FilePart,
94    McpServerMetadata, McpToolsParams, Message, MessageMetadata as A2aMessageMetadata,
95    MessageRole as A2aMessageRole, OAuth2Flow, OAuth2Flows, Part, ProtocolBinding, SecurityScheme,
96    Task, TaskMetadata, TaskState, TaskStatus, TextPart, TransportProtocol,
97};
98pub use admin::{
99    ActivityTrend, AnalyticsData as AdminAnalyticsData, BotTrafficStats, BrowserBreakdown,
100    ContentStat, DeviceBreakdown, GeographicBreakdown, LogEntry as AdminLogEntry,
101    LogLevel as AdminLogLevel, RecentConversation, TrafficData as AdminTrafficData, UserInfo,
102    UserMetricsWithTrends,
103};
104pub use agui::{
105    AgUiEvent, AgUiEventBuilder, AgUiEventType, CustomPayload, GenericCustomPayload,
106    JsonPatchOperation, MessageRole as AgUiMessageRole, MessagesSnapshotPayload, RunErrorPayload,
107    RunFinishedPayload, RunStartedPayload, StateDeltaBuilder, StateDeltaPayload,
108    StateSnapshotPayload, StepFinishedPayload, StepStartedPayload, TextMessageContentPayload,
109    TextMessageEndPayload, TextMessageStartPayload, ToolCallArgsPayload, ToolCallEndPayload,
110    ToolCallResultPayload, ToolCallStartPayload,
111};
112pub use ai::{
113    AiContentPart, AiMessage, AiProvider, AiRequest, AiRequestBuilder, AiResponse, CallToolResult,
114    DynAiProvider, McpTool, MessageRole, ModelConfig, ModelHint, ModelPreferences, ProviderConfig,
115    ResponseFormat, SUPPORTED_AUDIO_TYPES, SUPPORTED_IMAGE_TYPES, SUPPORTED_TEXT_TYPES,
116    SUPPORTED_VIDEO_TYPES, SamplingParams, SearchGroundedResponse, StreamChunk,
117    StructuredOutputOptions, ToolCall, ToolExecution, ToolResultFormatter, is_supported_audio,
118    is_supported_image, is_supported_media, is_supported_text, is_supported_video,
119};
120pub use api::{
121    AcceptedResponse, ApiError, ApiErrorExt, ApiQuery, ApiResponse, CheckoutEvent, CheckoutRequest,
122    CheckoutResponse, CloudApiError, CloudApiErrorDetail, CloudApiResponse, CloudCustomerInfo,
123    CloudListResponse, CloudLogEntry, CloudLogsResponse, CloudPlan, CloudPlanInfo,
124    CloudStatusResponse, CloudTenant, CloudTenantInfo, CloudTenantSecrets, CloudTenantStatus,
125    CloudTenantStatusResponse, CloudUserInfo, CollectionResponse, ContextKind,
126    CreateContextRequest, CreatedResponse, DeployResponse, DiscoveryResponse, ErrorCode,
127    ErrorResponse, ExternalDbAccessResponse, Link, ModuleInfo, PaginationInfo, PaginationParams,
128    ParseContextKindError, ProvisioningEvent, ProvisioningEventType, RegistryToken, ResponseLinks,
129    ResponseMeta, SearchQuery, SetExternalDbAccessRequest, SetSecretsRequest, SingleResponse,
130    SortOrder, SortParams, SubscriptionStatus, SuccessResponse, UpdateContextRequest, UserContext,
131    UserContextWithStats, UserMeResponse, ValidationError,
132};
133pub use artifacts::{
134    Alignment, Artifact, ArtifactSchema, ArtifactType, AudioArtifact, AxisType, ChartArtifact,
135    ChartDataset, ChartType, CliArtifact, Column, ColumnType, ExecutionMetadata, ImageArtifact,
136    SortOrder as ArtifactSortOrder, TableArtifact, TableHints, ToolResponse, VideoArtifact,
137};
138pub use auth::{
139    AuthError, AuthenticatedUser, BEARER_PREFIX, BaseRole, BaseRoles, PkceMethod, ResponseType,
140};
141pub use config::{Config, PathNotConfiguredError};
142pub use content::{ContentLink, IngestionReport};
143pub use content_config::{
144    ArticleDefaults, Category, ContentConfigError, ContentConfigErrors, ContentConfigRaw,
145    ContentRouting, ContentSourceConfigRaw, IndexingConfig, Metadata, OrganizationData,
146    ParentRoute, SitemapConfig, SourceBranding, StructuredData,
147};
148pub use env::{contains_placeholder, interpolate, none_if_blank, read_env_optional};
149pub use errors::{RepositoryError, ServiceError};
150pub use events::{
151    A2AEvent, A2AEventBuilder, A2AEventType, AnalyticsEvent, AnalyticsEventBuilder, ContextEvent,
152    ContextSummary, SystemEvent, SystemEventBuilder, SystemEventType,
153};
154pub use execution::{
155    ExecutionStep, PlannedTool, RequestContext, StepContent, StepId, StepStatus, StepType,
156    TrackedStep,
157};
158pub use extension::{
159    BuildType, DiscoveredExtension, Extension, ExtensionManifest, ExtensionType, ManifestRole,
160};
161pub use mcp::{
162    Deployment, DeploymentConfig, DynMcpDeploymentProvider, DynMcpRegistry, DynMcpToolProvider,
163    ERROR as MCP_ERROR, McpAuthState, McpDeploymentProvider, McpProvider, McpRegistry,
164    McpServerConfig, McpServerState, McpToolProvider, OAuthRequirement, RUNNING as MCP_RUNNING,
165    RegistryConfig, STARTING as MCP_STARTING, STOPPED as MCP_STOPPED, Settings,
166};
167pub use modules::{ApiPaths, CliPaths, ServiceCategory};
168pub use oauth::{OAuthClientConfig, OAuthServerConfig};
169pub use paths::{
170    AppPaths, BuildPaths, PathError, StoragePaths, SystemPaths, WebPaths, cloud_container,
171    dir_names, file_names,
172};
173pub use profile::{
174    CloudConfig, CloudValidationMode, ContentNegotiationConfig,
175    DatabaseConfig as ProfileDatabaseConfig, Environment, ExtensionsConfig, LogLevel, OutputFormat,
176    PathsConfig, Profile, ProfileInfo, ProfileStyle, ProfileType, RateLimitsConfig, RuntimeConfig,
177    SecurityConfig, SecurityHeadersConfig, ServerConfig, SiteConfig,
178};
179pub use repository::{ServiceLifecycle, ServiceRecord, WhereClause};
180pub use routing::{ApiCategory, AssetType, RouteClassifier, RouteType};
181pub use secrets::Secrets;
182pub use services::{
183    AGENT_CONFIG_FILENAME, AgentCardConfig, AgentConfig, AgentMetadataConfig, AgentProviderInfo,
184    AgentSummary, AiConfig, AiProviderConfig, CapabilitiesConfig, ComponentFilter, ComponentSource,
185    DEFAULT_AGENT_SYSTEM_PROMPT_FILE, DEFAULT_SKILL_CONTENT_FILE, DiskAgentConfig, DiskHookConfig,
186    DiskSkillConfig, Frontmatter, HOOK_CONFIG_FILENAME, HistoryConfig, HookAction, HookCategory,
187    HookEvent, HookEventsConfig, HookMatcher, HookType, IncludableString, JobConfig,
188    MarketplaceConfig, MarketplaceConfigFile, MarketplaceVisibility, McpConfig,
189    OAuthConfig as AgentOAuthConfig, PluginAuthor, PluginComponentRef, PluginConfig,
190    PluginConfigFile, PluginScript, PluginVariableDef, RuntimeStatus, SKILL_CONFIG_FILENAME,
191    SamplingConfig, SchedulerConfig, ServiceType, ServicesConfig, Settings as ServicesSettings,
192    SkillConfig, SkillsConfig, SystemAdmin, SystemAdminConfig, WebConfig, split_frontmatter,
193    strip_frontmatter,
194};
195pub use systemprompt_identifiers::{AgentId, ContextId, SessionId, TaskId, TraceId, UserId};
196pub use users::{SessionSummary, UserSummary};
197
198pub use systemprompt_provider_contracts::{
199    AnimationConfig, CardConfig, ColorsConfig, FontsConfig, LayoutConfig, LogoConfig, MobileConfig,
200    PathsConfig as WebPathsConfig, RadiusConfig, ScriptConfig, ShadowsConfig, SpacingConfig,
201    TouchTargetsConfig, TypographyConfig, WebConfigError, ZIndexConfig,
202};
203pub use systemprompt_traits::{
204    StartupValidationError, StartupValidationReport, ValidationReport, ValidationWarning,
205};