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