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