Skip to main content

everruns_core/
lib.rs

1//! Core agent abstractions for Everruns.
2//!
3//! `everruns-core` is the shared contract crate for the
4//! [Everruns](https://everruns.com) ecosystem. It defines the runtime-facing
5//! types used by embedded hosts, workers, provider drivers, integrations, and
6//! the control plane.
7//!
8//! The crate is deliberately storage-agnostic. Agent execution is expressed in
9//! terms of traits such as [`MessageRetriever`], [`ToolExecutor`],
10//! [`EventEmitter`], and [`ProviderStore`], while host crates decide whether
11//! those traits are backed by memory, PostgreSQL, gRPC, or another system.
12//!
13//! # Main Surfaces
14//!
15//! - Agent, harness, session, message, event, and typed ID models
16//! - Capability and tool traits for composing agent behavior
17//! - Provider-neutral LLM messages, streams, and driver registration
18//! - Context assembly for the shared `input -> reason -> act` execution flow
19//! - In-memory helpers and `llmsim` for deterministic tests and examples
20//!
21//! # Example
22//!
23//! ```ignore
24//! use everruns_core::{CapabilityRegistry, DriverRegistry, PlatformDefinition};
25//! use everruns_core::capabilities::TestMathCapability;
26//!
27//! let mut capabilities = CapabilityRegistry::new();
28//! capabilities.register(TestMathCapability);
29//!
30//! let platform = PlatformDefinition::new(capabilities, DriverRegistry::new());
31//! assert!(platform.capability_registry().get("test_math").is_some());
32//! ```
33
34// Runtime types (tool definitions, capability types)
35pub mod capability_types;
36pub mod tool_fingerprint;
37pub mod tool_types;
38
39// User-defined hooks (see specs/user-hooks.md)
40pub mod hook_adapter;
41pub mod hook_dispatch;
42pub mod hook_executor;
43pub mod lifecycle_hooks;
44pub mod user_hook_types;
45
46// Deployment configuration
47pub mod deployment;
48pub mod egress;
49pub mod email;
50pub mod exec_tool_result;
51pub mod utility_llm;
52
53// Feature flags
54pub mod feature_flags;
55pub mod localization;
56
57// Telemetry (OpenTelemetry with gen-ai semantic conventions)
58pub mod telemetry;
59pub mod tool_narration;
60
61// Event listeners (pluggable observability backends)
62pub mod event_listeners;
63
64// Error reporter (vendor-neutral embedder hook)
65pub mod error_reporter;
66
67// Observability exporters (Braintrust, OpenTelemetry) live in the
68// `everruns-observability` crate (EVE-651), depending on core only for the
69// `EventListener` trait + event types. The gen-AI span conventions and OTLP
70// init they build on stay here in `telemetry`.
71
72// Typed ID system (type-safe prefixed identifiers)
73// See specs/id-schema.md for specification
74pub mod typed_id;
75
76// Audit logging types and trait (EVE-226)
77pub mod audit;
78
79// Budget types (budgets, ledger, rules, actions)
80pub mod background;
81pub mod budget;
82
83// Domain entity types
84// These are DB-agnostic entity types used by both API and worker
85pub mod agent;
86pub mod agent_identity;
87pub mod app;
88pub mod ard_attachment;
89pub mod capability_dto;
90pub mod connector;
91pub mod credential_provider;
92pub mod credential_schema;
93pub mod eval;
94pub mod events;
95pub mod harness;
96pub mod leased_resource;
97pub mod mcp_proxy;
98pub mod mcp_server;
99pub mod memory;
100pub mod model;
101pub mod model_profiles;
102pub mod model_router;
103pub mod mount_fs;
104pub mod network_access;
105pub mod observer;
106pub mod organization;
107pub mod payment;
108pub mod principal;
109pub mod provider;
110pub mod reporting;
111pub mod session;
112pub mod session_file;
113pub mod session_path;
114pub mod session_resource;
115pub mod session_sandbox;
116pub mod session_schedule;
117pub mod session_sqldb;
118pub mod session_task;
119pub mod skill;
120pub mod system_allowlist;
121pub mod task_observer;
122pub mod vector_store;
123pub mod wake_queue;
124pub mod workspace;
125pub mod workspace_roots;
126
127// Multi-platform channel abstractions (thread context, delivery, routing)
128pub mod channel;
129
130// Permissions model (policies, rules, caller context)
131pub mod permissions;
132pub mod progress_reporting;
133pub mod resource_names;
134
135// URL validation for SSRF prevention (shared utility)
136pub mod url_validation;
137
138// Plugin compiler (directory → declarative capability definition)
139// See specs/plugins.md
140pub mod plugins;
141
142pub mod atoms;
143pub mod capabilities;
144pub mod command;
145pub mod command_host;
146pub mod config;
147pub mod config_layer;
148pub mod context_report;
149pub mod dependency_blocker;
150pub mod driver_helpers;
151pub mod driver_registry;
152pub mod error;
153pub mod guardrail_checks;
154pub mod guardrail_gallery;
155pub mod llm_retry;
156pub mod message;
157pub mod message_filter;
158pub mod message_retriever;
159pub mod openai_protocol;
160pub mod openresponses_protocol;
161pub mod openresponses_types;
162pub mod outline;
163pub mod output_guardrail;
164pub mod path_identity;
165pub mod platform_definition;
166pub mod platform_store;
167pub mod resource_ownership;
168pub mod runtime_agent;
169pub mod runtime_context;
170pub mod stream_accumulator;
171pub mod stream_reconnect;
172pub mod tool_output_sanitizer;
173pub mod tools;
174pub mod traits;
175pub mod truncation_info;
176pub mod user_facing_error;
177
178// In-memory implementations for examples and testing
179pub mod in_memory;
180
181// LLM Simulator driver for testing (behind the `llmsim` feature)
182#[cfg(feature = "llmsim")]
183pub mod llmsim_driver;
184
185// In-memory agentic loop for testing and prototyping. Built on the llmsim
186// driver, so it follows the same feature gate.
187#[cfg(feature = "llmsim")]
188pub mod in_memory_loop;
189
190// Turn orchestration (state machine, context, outcomes)
191pub mod turn;
192
193// Note: Chat Driver implementations (AnthropicChatDriver, OpenAIChatDriver) are now in
194// separate crates (everruns-anthropic, everruns-openai) that depend on everruns-core.
195// This enables dependency inversion - provider crates register their drivers at startup.
196
197// Re-exports for convenience
198pub use command_host::{
199    CommandHost, CommandTurnContext, DisabledCommandHost, SessionCompletion,
200    SessionCompletionError, SessionCompletionRequest, SessionCompletionStream, StoreCommandHost,
201};
202pub use config_layer::{
203    AgentConfigOverlay, merge_capabilities, merge_initial_files, normalize_initial_file_path,
204};
205pub use error::{
206    AgentLoopError, FileSystemError, FileSystemErrorClass, LlmError, LlmErrorKind, Result,
207    StoreResultExt, classify_fs_error, from_json, json_val,
208};
209pub use message::{
210    ContentPart, ContentType, Controls, ExternalActor, ImageContentPart, ImageFileContentPart,
211    InputContentPart, Message, MessageRole, ReasoningConfig, TextContentPart, ToolCallContentPart,
212    ToolResultContentPart,
213};
214pub use message_filter::{
215    ExcludedNoticeTransform, FilterContext, InjectedMessage, InjectionPosition, MessageFilter,
216    MessageFilterProvider, MessageQuery, PrependTransform,
217};
218pub use message_retriever::{InputMessage, MessageRetriever};
219pub use mount_fs::{MountFs, WORKSPACE_MOUNT};
220pub use runtime_agent::{RuntimeAgent, RuntimeAgentBuilder};
221pub use runtime_context::{
222    AssembledTurnContext, ResolvedRuntimeCapabilities, assemble_turn_context, inspect_turn_context,
223    resolve_runtime_capabilities,
224};
225pub use traits::{
226    DisabledSessionFileSystemFactory, DurableToolResultStore, EventEmitter, HarnessStore,
227    ImageResolver, KeyInfo, LeasedResourceStore, NoopDurableToolResultStore, NoopEventEmitter,
228    NoopPartialStreamStore, NoopStreamHeartbeater, NoopSubagentSpawnStore, OutboundToolRateLimiter,
229    PartialStreamState, PartialStreamStore, ProviderStore, ReasoningEffortHandle, ResolvedImage,
230    ResolvedModel, SecretInfo, SessionFileStore, SessionFileSystem, SessionFileSystemFactory,
231    SessionFileSystemFactoryContext, SessionMutator, SessionResourceRegistry, SessionSqlDbStoreRef,
232    SessionStorageStore, SessionStore, SpawnClaimResult, StreamHeartbeater, StreamProgress,
233    SubagentNestingPolicy, SubagentSpawnStore, ToolCallClaimResult, ToolContext, ToolExecutor,
234    UserConnectionResolver, WorkspaceScopedFileSystem,
235};
236pub use user_facing_error::{
237    ErrorDisclosure, UserFacingError, UserFacingErrorContext, UserFacingErrorFields,
238    classify_runtime_error_message, codes as user_facing_error_codes, is_provider_quota_message,
239    metadata_keys as user_facing_error_metadata_keys, trim_error_chain_prefixes,
240};
241pub use workspace_roots::{
242    ADDITIONAL_ROOTS_MOUNT, PRIMARY_WORKSPACE_ROOT_NAME, RelPath, ResolvedPath, WorkspaceRoot,
243    WorkspaceRootSet,
244};
245
246// Channel abstraction re-exports
247pub use channel::{
248    ChannelDeliveryAdapter, ChannelReplyMode, DeliveryContext as ChannelDeliveryContext,
249    DeliveryResult as ChannelDeliveryResult, InboundAttachment, InboundChannelEvent,
250    OutboundChannelMessage, Participant, SessionRoutingStrategy, ThreadContext,
251};
252
253// Platform store re-exports
254pub use platform_store::{PlatformMessage, PlatformStore};
255pub use resource_ownership::{
256    LEASED_RESOURCE_EXTERNAL_ID_KEY, LEASED_RESOURCE_ID_KEY, LEASED_RESOURCE_PROVIDER_KEY,
257    LEASED_RESOURCE_TYPE_KEY, list_owned_external_resource_ids,
258    ownership_tracking_unavailable_error, require_owned_external_resource,
259    resource_not_owned_error, verify_owned_external_resource_if_available,
260};
261
262// Event listener re-exports
263pub use background::{
264    BackgroundEventSink, BackgroundExecutableTool, BackgroundOutcome, BackgroundProgress,
265};
266pub use event_listeners::{CompositeEventListener, EventListener, NoopEventListener};
267
268// Error reporter re-exports
269pub use error_reporter::{
270    ErrorReport, ErrorReporter, ErrorScope, ErrorSeverity, NoopErrorReporter, SharedErrorReporter,
271};
272
273// Outbound egress service re-exports
274pub use egress::{
275    DirectEgressService, DisabledEgressService, EgressByteStream, EgressError, EgressRequest,
276    EgressRequestKind, EgressResponse, EgressResult, EgressService, EgressSigning,
277    EgressStreamResponse,
278};
279pub use system_allowlist::{AllowGroup, SYSTEM_ALLOWLIST_ENABLED_ENV, SystemAllowlist};
280
281// System email re-exports
282pub use email::{
283    BasicEmailTemplate, DisabledEmailSender, EmailAddress, EmailError, EmailMessage, EmailResult,
284    EmailSender, EmailTag, EmailTemplate, MinimalEmailTemplate, NoopEmailSender, RenderedEmail,
285    ResendEmailConfig, ResendEmailSender, SYSTEM_EMAIL_FROM, SentEmail, SystemEmailConfig,
286    system_email_from,
287};
288pub use utility_llm::{
289    DisabledUtilityLlmService, OpenAiUtilityLlmService, SystemUtilityLlmConfig, UTILITY_LLM_MODEL,
290    UTILITY_OPENAI_API_KEY_ENV, UtilityLlmReasoningEffort, UtilityLlmRequest, UtilityLlmService,
291};
292
293// LLM driver types re-exports
294pub use driver_registry::{
295    BoxedChatDriver, BoxedEmbeddingsDriver, ChatDriver, DiscoveredModel, DriverDescriptor,
296    DriverFactory, DriverId, DriverOAuthConfig, DriverOAuthFlow, DriverRegistry, EmbedRequest,
297    EmbedResponse, EmbeddingsDriver, EmbeddingsDriverError, EmbeddingsDriverFactory, LlmCallConfig,
298    LlmCallConfigBuilder, LlmCompletionMetadata, LlmContentPart, LlmMessage, LlmMessageContent,
299    LlmMessageRole, LlmResponse, LlmResponseStream, LlmStreamError, LlmStreamEvent, ProviderConfig,
300    ServiceKind, fold_system_messages,
301};
302
303// LLM retry types re-exports
304pub use llm_retry::{LlmRetryConfig, RateLimitInfo, RateLimitType, RetryMetadata};
305
306// OpenAI Protocol driver (Chat Completions API for backward compatibility)
307pub use openai_protocol::OpenAIProtocolChatDriver;
308
309// Pluggable request authentication, shared by the Chat Completions and Open
310// Responses protocol drivers (e.g. static API key vs. refreshable OAuth bearer).
311pub use openai_protocol::AuthHeaderProvider;
312
313// Open Responses Protocol driver (https://www.openresponses.org/)
314// Vendor-neutral API standard, recommended for new projects
315pub use openresponses_protocol::{
316    CompactContent, CompactContentPart, CompactInputItem, CompactOutputItem, CompactRequest,
317    CompactResponse, CompactUsage, OpenResponsesProtocolChatDriver, OpenResponsesRequestExtension,
318    compact_output_to_messages, messages_to_compact_input,
319};
320
321// Tool abstraction re-exports
322pub use tools::{
323    EchoTool, FailingTool, SpawnBackgroundTool, Tool, ToolExecutionResult, ToolInternalError,
324    ToolRegistry, ToolRegistryBuilder, ToolResultImage,
325};
326
327// Shared credential form schema (provider drivers + connection providers)
328pub use credential_schema::{
329    CredentialFormSchema, assemble_credential_document, parse_credential_document,
330};
331
332// Pluggable provider credential source (drivers never read env directly).
333pub use credential_provider::{CredentialProvider, EnvCredentialProvider, ProviderCredentials};
334
335// Connector plugin system (user-scoped API key / OAuth connections)
336pub use connector::{
337    Connector, ConnectorFormSchema, ConnectorPlugin, ConnectorRegistry, ConnectorRegistryBuilder,
338    ConnectorType, ConnectorValidation, FieldType, FormField,
339};
340pub use platform_definition::{
341    BuiltInCapabilityDefinition, BuiltInHarnessDefinition, BuiltInHarnessRole, PlatformDefinition,
342    PlatformDefinitionBuilder,
343};
344pub use session_sandbox::{
345    DEFAULT_SESSION_SANDBOX_IDLE_TIMEOUT_SECS, SESSION_SANDBOX_CAPABILITY_ID,
346    SESSION_SANDBOX_SECRET_NAME, SessionSandboxConfig, SessionSandboxExecRequest,
347    SessionSandboxExecResponse, SessionSandboxInitConfig, SessionSandboxInstance,
348    SessionSandboxProvider, SessionSandboxProviderPlugin, SessionSandboxReadFileResponse,
349    SessionSandboxState, SessionSandboxStatus, SessionSandboxStatusResponse,
350    SessionSandboxWriteFileResponse, create_session_sandbox_provider, delete_session_sandbox,
351    delete_session_sandbox_state, ensure_session_sandbox_running, load_session_sandbox_state,
352    pause_session_sandbox, run_session_sandbox_init_if_needed, save_session_sandbox_state,
353    session_sandbox_config_from_capabilities, session_sandbox_tool_hints,
354};
355
356pub use capabilities::SystemPromptContext;
357pub use capabilities::{
358    AUTO_TOOL_SEARCH_CAPABILITY_ID, AddTool, AgentBlueprint, AgentCapabilityConfig,
359    AppliedCapabilities, AutoToolSearchCapability, BlueprintModel,
360    CLAUDE_TOOL_SEARCH_CAPABILITY_ID, Capability, CapabilityId, CapabilityRegistry,
361    CapabilityRegistryBuilder, CapabilityStatus, ClaudeToolSearchCapability, CollectedCapabilities,
362    CurrentTimeCapability, DECLARATIVE_CAPABILITY_PREFIX, DeleteFileTool, DependencyError,
363    DivideTool, FileSystemCapability, GetCurrentTimeTool, GetForecastTool, GetSessionInfoTool,
364    GetWeatherTool, GrepFilesTool, HUMAN_INTENT_CAPABILITY_ID, HumanIntentCapability,
365    INFINITY_CONTEXT_CAPABILITY_ID, InfinityContextCapability, IntegrationPlugin,
366    ListDirectoryTool, MAX_RESOLVED_CAPABILITIES, MCP_CAPABILITY_PREFIX, McpCapability,
367    MountAccess, MountDirectoryBuilder, MountEntry, MountPoint, MountSource, MultiplyTool,
368    NoopCapability, OPENAI_TOOL_SEARCH_CAPABILITY_ID, OpenAiToolSearchCapability,
369    PlatformManagementCapability, QueryHistoryTool, ReadFileTool, ResearchCapability,
370    ResolvedCapabilities, RiskLevel, SampleDataCapability, SessionCapability,
371    SessionSandboxCapability, SessionSqlDatabaseCapability, SqlExecuteTool, SqlQueryTool,
372    SqlSchemaTool, StatFileTool, StatelessTodoListCapability, SubtractTool, TestMathCapability,
373    TestWeatherCapability, ToolCallHook, ToolDefinitionHook, WriteFileTool, WriteSessionTitleTool,
374    WriteTodosTool, apply_capabilities, collect_capabilities, collect_capabilities_with_configs,
375    compute_features, declarative_capability_id, declarative_capability_info, get_dependencies,
376    hydrate_declarative_capability_config, hydrate_plugin_capability_config,
377    is_declarative_capability, is_mcp_capability, mcp_capability_id,
378    parse_declarative_capability_id, parse_mcp_capability_id, plugin_capability_info,
379    resolve_dependencies, validate_declarative_capability_definition,
380};
381pub use capabilities::{
382    AttachSkillCapability, SKILL_CAPABILITY_PREFIX, SKILLS_CAPABILITY_ID, SKILLS_DISCOVERY_PATH,
383    SkillInstructions, SkillMeta, SkillSource, SkillsCapability, discover_skills_from_entries,
384    is_skill_capability, parse_skill_capability_id, skill_capability_id,
385};
386pub use capabilities::{
387    DeclarativeCapabilityDefinition, DeclarativeCapabilityFile, DeclarativeCapabilitySkill,
388};
389
390// Atoms re-exports (stateless atomic operations)
391pub use atoms::{
392    ActAtom, ActInput, ActResult, Atom, AtomContext, ClientSideToolHook, ConnectionSetupHook,
393    InputAtom, InputAtomInput, InputAtomResult, PostActAction, PostActHook, PostToolExecHook,
394    ReasonAtom, ReasonInput, ReasonResult, ToolCallResult,
395};
396
397// Tool types (runtime types defined in this crate)
398pub use tool_types::{
399    BuiltinTool, ClientSideTool, DeferrablePolicy, SideEffectClass, ToolCall, ToolDefinition,
400    ToolHints, ToolPolicy, ToolResult,
401};
402
403// Plugin capability ID helpers — mirrors the declarative_capability_id trio.
404pub use capability_types::{
405    PLUGIN_CAPABILITY_PREFIX, is_plugin_capability, parse_plugin_capability_id,
406    plugin_capability_id,
407};
408
409// Note: CapabilityId and CapabilityStatus are re-exported via capabilities module
410
411// Domain entity re-exports
412// Note: Provider entity is in the provider module. Import as: everruns_core::provider::Provider
413pub use agent::{
414    Agent, AgentStatus, AgentVersion, AgentVersionChangeKind, MAX_ADDRESSABLE_NAME_LEN,
415    generate_agent_public_id, validate_addressable_name, validate_agent_public_id,
416};
417pub use agent_identity::{AgentIdentity, AgentIdentityStatus};
418pub use app::{
419    A2aChannelConfig, AgUiChannelConfig, AgUiToolVisibility, AgentVersionPolicy,
420    ApiEndpointChannelConfig, App, AppChannel, AppEndpointAuthConfig, AppEndpointAuthMode,
421    AppEndpointAuthProviderConfig, AppEndpointAuthRequirements, AppStatus, CaptchaProvider,
422    ChannelType, FcpChannelConfig, InvocationSessionMode, PublicChatBranding,
423    PublicChatCaptchaConfig, PublicChatChannelConfig, SessionStrategy, SlackChannelConfig,
424    SlackReplyMode,
425};
426pub use ard_attachment::{
427    ARD_ATTACHMENT_KV_PREFIX, ARD_ATTACHMENT_RESOURCE_KIND, ARD_DISCOVERY_KV_PREFIX, ArdAttachment,
428    ArdAttachmentTarget, apply_session_attachments, attachment_kv_key, load_session_attachments,
429    merge_attachment_into_session, urn_slug,
430};
431pub use capability_dto::{AgentCapability, CapabilityInfo};
432pub use context_report::{
433    ContextReportContribution, ContextReportSection, SessionContextReport,
434    build_session_context_report, build_session_context_report_from_generation,
435};
436pub use events::{
437    ACT_COMPLETED, ACT_STARTED, ActCompletedData, ActStartedData, CONTEXT_COMPACTED,
438    CONTEXT_COMPACTING, CompactionReason, CompactionStepData, ContextCompactedData,
439    ContextCompactingData, Event, EventBuilder, EventContext, EventData, EventRequest,
440    FILE_WRITTEN, FileWrittenData, INPUT_MESSAGE, InputMessageData, LLM_GENERATION,
441    LlmCompactionInfo, LlmGenerationData, LlmGenerationMetadata, LlmGenerationOutput, LlmRetryInfo,
442    ModelMetadata, OUTPUT_MESSAGE_COMPLETED, OUTPUT_MESSAGE_DELTA, OUTPUT_MESSAGE_REPLACED,
443    OUTPUT_MESSAGE_STARTED, OutputMessageCompletedData, OutputMessageDeltaData,
444    OutputMessageReplacedData, OutputMessageStartedData, REASON_COMPLETED, REASON_ITEM,
445    REASON_RECOVERED, REASON_STARTED, REASON_THINKING_COMPLETED, REASON_THINKING_DELTA,
446    REASON_THINKING_STARTED, ReasonCompletedData, ReasonItemData, ReasonRecoveredData,
447    ReasonStartedData, ReasonThinkingCompletedData, ReasonThinkingDeltaData,
448    ReasonThinkingStartedData, RecoveryMode, SESSION_ACTIVATED, SESSION_IDLED, SESSION_STARTED,
449    SessionActivatedData, SessionIdledData, SessionStartedData, TOOL_CALL_REQUESTED,
450    TOOL_COMPLETED, TOOL_OUTPUT_DELTA, TOOL_PROGRESS, TOOL_STARTED, TURN_CANCELLED, TURN_COMPLETED,
451    TURN_FAILED, TURN_SEALED, TURN_STARTED, TokenUsage, ToolCallRequestedData, ToolCallSummary,
452    ToolCompletedData, ToolOutputDeltaData, ToolProgressData, ToolStartedData, TurnCancelledData,
453    TurnCompletedData, TurnFailedData, TurnSealedData, TurnStartedData, VALID_EVENT_TYPES,
454};
455pub use guardrail_checks::{
456    CompiledJudgeCheck, GuardrailAction, GuardrailHit, GuardrailMode, GuardrailOnFail,
457    GuardrailRule, GuardrailStage, GuardrailsConfig, MAX_JUDGE_PROMPT_LEN,
458};
459pub use guardrail_gallery::{
460    DataEgress, GuardrailGalleryItem, find_guardrail_gallery_item, guardrail_gallery,
461};
462pub use harness::{Harness, HarnessStatus, merge_harness, merge_harness_chain};
463pub use leased_resource::{
464    LEASED_RESOURCES_FEATURE, LeasedResource, LeasedResourceStatus, UpsertLeasedResource,
465};
466pub use mcp_proxy::{McpProxyTool, McpToolInvoker, ScopedMcpToolInvoker, build_mcp_proxy_tools};
467pub use mcp_server::{
468    MCP_PROTOCOL_VERSION_LEGACY, MCP_PROTOCOL_VERSION_RC, MCP_PROTOCOL_VERSION_STABLE, McpContent,
469    McpError, McpProtocolMode, McpServer, McpServerAuthMode, McpServerStatus,
470    McpServerTransportType, McpToolAnnotations, McpToolCallParams, McpToolCallRequest,
471    McpToolCallResponse, McpToolCallResult, McpToolDefinition, McpToolsListRequest,
472    McpToolsListResponse, McpToolsListResult, ScopedMcpServer, ScopedMcpServers, is_mcp_tool,
473    mcp_oauth_provider_id_for_uuid, mcp_oauth_session_secret_name, mcp_tool_name,
474    merge_scoped_mcp_servers, normalize_mcp_error_code, parse_mcp_tool_name,
475    sanitize_mcp_server_name, scoped_mcp_servers_is_empty,
476};
477pub use model::{
478    CostTier, Modality, Model, ModelCost, ModelLimits, ModelModalities, ModelProfile, ModelSource,
479    ModelVendor, ModelWithProvider, ReasoningEffort, ReasoningEffortConfig, ReasoningEffortValue,
480};
481pub use model_profiles::{get_model_profile, get_model_vendor};
482pub use organization::{
483    ANONYMOUS_USER_EMAIL, ANONYMOUS_USER_ID, ANONYMOUS_USER_NAME, DEFAULT_ORG_ID,
484    DEFAULT_ORG_PUBLIC_ID, OrgMembership, OrgRole, Organization, generate_org_public_id,
485    org_public_id_from_internal, validate_org_public_id,
486};
487pub use payment::{
488    MachinePaymentRequest, MachinePaymentResponse, PaymentAccount, PaymentAttempt, PaymentMethod,
489    PaymentOwnerType, PaymentPolicy, PaymentRail, PaymentStatus,
490};
491pub use principal::{Principal, PrincipalKind, PrincipalStatus, PrincipalSummary};
492pub use provider::{Provider, ProviderStatus, ProviderTraceConfig};
493pub use session::{
494    Session, SessionParticipant, SessionParticipantKind, SessionParticipantRole, SessionSeedMode,
495    SessionStatus, SubagentStatus,
496};
497pub use session_file::{FileInfo, FileStat, GrepMatch, GrepResult, InitialFile, SessionFile};
498pub use session_resource::{
499    RegisterSessionResource, SessionResourceEntry, SessionResourceFilter, SessionResourceStatus,
500};
501pub use session_sqldb::{
502    ColumnSchema, DatabaseInfo, SessionSqlDbError, SessionSqlDbStore, SqlExecuteResult,
503    SqlQueryResult, TableSchema,
504};
505pub use session_task::{
506    CreateSessionTask, NewTaskMessage, SessionTask, SessionTaskFilter, SessionTaskRegistry,
507    SessionTaskState, SessionTaskUpdate, TASK_KIND_AGENT_HANDOFF, TASK_KIND_BACKGROUND_TOOL,
508    TASK_KIND_EXTERNAL_AGENT, TASK_KIND_MONITOR, TASK_KIND_SESSION, TASK_KIND_SUBAGENT,
509    TaskArtifact, TaskError, TaskExecutor, TaskExecutorPlugin, TaskInputRequest, TaskLinks,
510    TaskMessage, TaskMessageDirection, TaskMessagePart, TaskProgress, TaskSink, TaskWakePolicy,
511    apply_task_update, find_task_executor,
512};
513pub use skill::{
514    ParsedSkillMd, Skill, SkillContent, SkillFileEntry, SkillSourceType, SkillStatus, SkillUsage,
515    SkillValidationResult, parse_skill_md, validate_skill_md, validate_skill_name,
516};
517pub use task_observer::{ObservingTaskRegistry, TaskTransition, TaskTransitionObserver};
518pub use typed_id::{
519    AgentId, AgentIdentityId, AgentVersionId, AppChannelId, AppId, DeclarativeCapabilityId,
520    EvalCaseId, EvalId, EvalResultId, EvalRunId, EventId, ExecId, HarnessId, IdMarker,
521    IdParseError, ImageId, KnowledgeBaseId, KnowledgeEntryId, LeasedResourceId, McpServerId,
522    MemoryId, MessageId, ModelId, NotificationId, OrgId, PaymentAccountId, PaymentAttemptId,
523    PaymentPolicyId, PluginInstallId, PluginMarketplaceId, PrincipalId, ProviderId, ScheduleId,
524    SessionId, SessionParticipantId, SkillId, TurnId, TypedId, WorkspaceId,
525};
526pub use wake_queue::{PendingWake, SessionWakeQueue, wake_text_for};
527
528// Audit logging re-exports
529pub use audit::{
530    AgentAction, AuditAction, AuditDomain, AuditEvent, AuditEventBuilder, AuditLogger, AuditTarget,
531    ManagementAction,
532};
533
534// Permissions re-exports
535pub use permissions::{
536    Caller, DefaultPermissionResolver, Permission, PermissionResolver, Policy,
537    PolicyConfigResponse, PolicyError, ResourceConfigResponse, Rule, SkillPermissionAction,
538    SkillPermissionPattern, SkillPermissionRule, check_skill_permission, evaluate_policies,
539    evaluate_policies_with, parse_skill_permission_rule, role_has_permission, role_permissions,
540};
541
542// Dependency blocker re-exports
543pub use dependency_blocker::{DependencyBlocker, detect_dependency_blocker};
544
545// URL validation re-exports
546pub use url_validation::{
547    UrlValidationError, is_blocked_ip, validate_safe_url, validate_url_dns_pinned,
548};
549
550// Deployment configuration
551pub use deployment::DeploymentGrade;
552
553// Feature flags
554pub use feature_flags::{
555    API_FEATURE_FLAG_DEFINITIONS, FeatureFlagDefinition, FeatureFlagMap, FeatureFlags,
556    InternalFeatureFlags,
557};