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//!
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 auth;
58pub mod bridge;
59pub mod config;
60pub mod content;
61pub mod content_config;
62pub mod env;
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;
82pub mod wire;
83
84pub use a2a::{
85    AgentAuthentication, AgentCapabilities, AgentCard, AgentCardBuilder, AgentCardSignature,
86    AgentExtension, AgentInterface, AgentProvider, AgentSkill, ApiKeyLocation,
87    Artifact as A2aArtifact, ArtifactMetadata, ArtifactSummary, DataPart, FileContent, FilePart,
88    McpServerMetadata, McpToolsParams, Message, MessageMetadata as A2aMessageMetadata,
89    MessageRole as A2aMessageRole, OAuth2Flow, OAuth2Flows, Part, ProtocolBinding, SecurityScheme,
90    Task, TaskMetadata, TaskState, TaskStatus, TextPart, TransportProtocol,
91};
92pub use admin::{
93    ActivityTrend, AnalyticsData as AdminAnalyticsData, BotTrafficStats, BrowserBreakdown,
94    ContentStat, DeviceBreakdown, GeographicBreakdown, LogEntry as AdminLogEntry,
95    LogLevel as AdminLogLevel, RecentConversation, TrafficData as AdminTrafficData, UserInfo,
96    UserMetricsWithTrends,
97};
98pub use agui::{
99    AgUiEvent, AgUiEventBuilder, AgUiEventType, CustomPayload, GenericCustomPayload,
100    JsonPatchOperation, MessageRole as AgUiMessageRole, MessagesSnapshotPayload, RunErrorPayload,
101    RunFinishedPayload, RunStartedPayload, StateDeltaBuilder, StateDeltaPayload,
102    StateSnapshotPayload, StepFinishedPayload, StepStartedPayload, TextMessageContentPayload,
103    TextMessageEndPayload, TextMessageStartPayload, ToolCallArgsPayload, ToolCallEndPayload,
104    ToolCallResultPayload, ToolCallStartPayload,
105};
106pub use ai::{
107    AiContentPart, AiMessage, AiProvider, AiRequest, AiRequestBuilder, AiResponse, CallToolResult,
108    DynAiProvider, McpTool, MessageRole, ModelConfig, ModelHint, ModelPreferences, ProviderConfig,
109    ResponseFormat, SUPPORTED_AUDIO_TYPES, SUPPORTED_IMAGE_TYPES, SUPPORTED_TEXT_TYPES,
110    SUPPORTED_VIDEO_TYPES, SamplingParams, SearchGroundedResponse, StreamChunk,
111    StructuredOutputOptions, ToolCall, ToolExecution, ToolResultFormatter, is_supported_audio,
112    is_supported_image, is_supported_media, is_supported_text, is_supported_video,
113};
114pub use api::{
115    AcceptedResponse, ApiError, ApiErrorExt, ApiQuery, ApiResponse, CheckoutEvent, CheckoutRequest,
116    CheckoutResponse, CloudApiError, CloudApiErrorDetail, CloudApiResponse, CloudCustomerInfo,
117    CloudListResponse, CloudLogEntry, CloudLogsResponse, CloudPlan, CloudPlanInfo,
118    CloudStatusResponse, CloudTenant, CloudTenantInfo, CloudTenantSecrets, CloudTenantStatus,
119    CloudTenantStatusResponse, CloudUserInfo, CollectionResponse, CreateContextRequest,
120    CreatedResponse, DeployResponse, DiscoveryResponse, ErrorCode, ErrorResponse,
121    ExternalDbAccessResponse, Link, ModuleInfo, PaginationInfo, PaginationParams,
122    ProvisioningEvent, ProvisioningEventType, RegistryToken, ResponseLinks, ResponseMeta,
123    SearchQuery, SetExternalDbAccessRequest, SetSecretsRequest, SingleResponse, SortOrder,
124    SortParams, SubscriptionStatus, SuccessResponse, UpdateContextRequest, UserContext,
125    UserContextWithStats, UserMeResponse, ValidationError,
126};
127pub use artifacts::{
128    Alignment, Artifact, ArtifactSchema, ArtifactType, AudioArtifact, AxisType, ChartArtifact,
129    ChartDataset, ChartType, CliArtifact, CliArtifactType, Column, ColumnType, CommandResultRaw,
130    ConversionError, ExecutionMetadata, ImageArtifact, RenderingHints,
131    SortOrder as ArtifactSortOrder, TableArtifact, TableHints, ToolResponse, VideoArtifact,
132};
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 env::{contains_placeholder, interpolate, read_env_optional};
144pub use errors::{RepositoryError, ServiceError};
145pub use events::{
146    A2AEvent, A2AEventBuilder, A2AEventType, AnalyticsEvent, AnalyticsEventBuilder, ContextEvent,
147    ContextSummary, SystemEvent, SystemEventBuilder, SystemEventType,
148};
149pub use execution::{
150    ExecutionStep, PlannedTool, RequestContext, StepContent, StepId, StepStatus, StepType,
151    TrackedStep,
152};
153pub use extension::{
154    BuildType, DiscoveredExtension, Extension, ExtensionManifest, ExtensionType, ManifestRole,
155};
156pub use mcp::{
157    Deployment, DeploymentConfig, DynMcpDeploymentProvider, DynMcpRegistry, DynMcpToolProvider,
158    ERROR as MCP_ERROR, McpAuthState, McpDeploymentProvider, McpProvider, McpRegistry,
159    McpServerConfig, McpServerState, McpToolProvider, OAuthRequirement, RUNNING as MCP_RUNNING,
160    RegistryConfig, STARTING as MCP_STARTING, STOPPED as MCP_STOPPED, Settings,
161};
162pub use modules::{ApiPaths, CliPaths, ServiceCategory};
163pub use oauth::{OAuthClientConfig, OAuthServerConfig};
164pub use paths::{
165    AppPaths, BuildPaths, PathError, StoragePaths, SystemPaths, WebPaths, cloud_container,
166    dir_names, file_names,
167};
168pub use profile::{
169    CloudConfig, CloudValidationMode, ContentNegotiationConfig,
170    DatabaseConfig as ProfileDatabaseConfig, Environment, ExtensionsConfig, LogLevel, OutputFormat,
171    PathsConfig, Profile, ProfileInfo, ProfileStyle, ProfileType, RateLimitsConfig, RuntimeConfig,
172    SecurityConfig, SecurityHeadersConfig, ServerConfig, SiteConfig,
173};
174pub use repository::{ServiceLifecycle, ServiceRecord, WhereClause};
175pub use routing::{ApiCategory, AssetType, RouteClassifier, RouteType};
176pub use secrets::Secrets;
177pub use services::{
178    AGENT_CONFIG_FILENAME, AgentCardConfig, AgentConfig, AgentMetadataConfig, AgentProviderInfo,
179    AgentSummary, AiConfig, AiProviderConfig, CapabilitiesConfig, ComponentFilter, ComponentSource,
180    DEFAULT_AGENT_SYSTEM_PROMPT_FILE, DEFAULT_SKILL_CONTENT_FILE, DiskAgentConfig, DiskHookConfig,
181    DiskSkillConfig, HOOK_CONFIG_FILENAME, HistoryConfig, HookAction, HookCategory, HookEvent,
182    HookEventsConfig, HookMatcher, HookType, IncludableString, JobConfig, MarketplaceConfig,
183    MarketplaceConfigFile, MarketplaceVisibility, McpConfig, OAuthConfig as AgentOAuthConfig,
184    PluginAuthor, PluginComponentRef, PluginConfig, PluginConfigFile, PluginScript,
185    PluginVariableDef, RuntimeStatus, SKILL_CONFIG_FILENAME, SamplingConfig, SchedulerConfig,
186    ServiceType, ServicesConfig, Settings as ServicesSettings, SkillConfig, SkillsConfig,
187    SystemAdmin, SystemAdminConfig, WebConfig, 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};