Skip to main content

conversation_api/execution/
mod.rs

1//! Consumer-owned contracts for the Agent runtime.
2//!
3//! This crate contains transport-neutral domain types and ports. Implementations live in the local
4//! `MeowCore` composition or the private `agent-cloud` composition.
5
6pub mod agent;
7pub mod context;
8pub mod error;
9pub mod event;
10pub mod facade;
11pub mod id;
12pub mod llm;
13pub mod operational_context;
14pub mod storage;
15
16pub use crate::ConversationSurface;
17pub use agent::{
18    AccessMode, AgentCommand, Interaction, InteractionDecision, QueuedRun, RunOptions,
19};
20pub use artifact_api::{
21    ARTIFACT_URL_PREFIX, ArtifactKind, ArtifactMetadata, ArtifactReference, ArtifactUri,
22};
23pub use context::{Actor, InvocationContext, Scope};
24pub use error::{ExternalError, ExternalErrorKind};
25pub use event::{AgentEvent, AgentObservation, DurableEvent, EventPublisher, Observer};
26pub use facade::{
27    AppFacade, ClientTask, FacadeRequest, FacadeResult, InteractionKind, InteractionPreview,
28    InteractionTone, PreparedAction, PreviewDetail, PreviewValue,
29};
30pub use id::{
31    ActionId, ClientId, EventId, MessageId, OperationId, RunId, ScopeId, TenantId, ThreadId, UserId,
32};
33pub use llm::{
34    ApprovalPolicy, ApprovalRequirement, Completion, CompletionRequest, ContentPart, Continuation,
35    FinishReason, INPUT_AUDIO, INPUT_FILE, INPUT_IMAGE, INPUT_VIDEO, Llm, LlmFailure, Message,
36    MessageRole, ModelCapabilities, ModelConstraints, ModelMode, ModelProfile, TokenUsage,
37    ToolCall, ToolDefinition, ToolEffect, ToolPolicy, UsageSummary, UseCase,
38    input_modality_for_kind, payload_input_modalities,
39};
40pub use operational_context::{
41    ContextGeneration, ContextInvalidation, ContextSource, OperationalContext,
42    OperationalContextDelta,
43};
44pub use storage::{
45    Checkpoint, ClaimNextOutcome, CommitOutcome, HistoryMutation, QueueSnapshot, QueueStore,
46    Revision, RunControl, RunCoordinator, RunLease, RuntimeSnapshot, StoreError, ThreadCommit,
47    ThreadKey, ThreadRecord, ThreadStore,
48};
49
50pub mod wire;
51
52// Serde's internally tagged unit variants otherwise discard their remaining
53// map even with deny_unknown_fields on the enum. Preserve the public unit
54// variant API while requiring an empty payload after the tag is consumed.
55pub(crate) fn deserialize_empty_variant<'de, D>(deserializer: D) -> Result<(), D::Error>
56where
57    D: serde::Deserializer<'de>,
58{
59    #[derive(serde::Deserialize)]
60    #[serde(deny_unknown_fields)]
61    struct Empty {}
62    <Empty as serde::Deserialize>::deserialize(deserializer).map(|_| ())
63}