Skip to main content

monoloop_contracts/
lib.rs

1//! SPDX-License-Identifier: AGPL-3.0-or-later
2//! Copyright (C) Alexander R. Croft
3//!
4//! Shared contracts for Monoloop product components.
5//!
6//! Product components share identities, dialect descriptors, canonical events,
7//! configuration, transaction ports, and closed error families. This crate
8//! intentionally contains no transport, dialect decoder, tool execution, UI,
9//! or host-agent logic.
10
11#![deny(missing_docs)]
12
13mod canonical;
14mod channel;
15mod config;
16mod dialect;
17mod encoder;
18mod error;
19mod id;
20mod input;
21mod limits;
22mod loop_types;
23mod safe;
24mod tool;
25mod transaction;
26
27pub use canonical::{
28    BoundaryKind, CanonicalUnit, CanonicalUnitEvent, CanonicalUnitSnapshot, DiagnosticKind, FlowId,
29    InterpretationEnd, InterpretationEndKind, InterpretationId, InterpreterOutputEvent, LaneId,
30    ModelDiagnostic, ParagraphBoundary, ParagraphKind, SemanticBoundary, SourceTimeObservation,
31    StructuralAtom, StructureKind, TextChannel, TextSentence, TokenCount, ToolActionEvent,
32    ToolActionId, ToolExecutionState, ToolRequestState, ToolResultState, ToolTerminalOutcome,
33    UnitId, UnitState, UsageObservation,
34};
35pub use channel::{
36    send_and_retain_allowed, ChannelCapabilities, ChannelCapabilityError, ChannelDescriptor,
37    ChannelKind, ExchangeMode, McpConfigurationCapability, McpReachability, SessionMode,
38    ToolExecutionMode,
39};
40pub use config::{
41    merge_effective_config, ChannelDefaults, ConfigError, ConfigOption, ContinuationPolicy,
42    EffectiveConfig, ExtensionKey, InvocationConfig, OptionPolicy, ReasoningEffort, ResponseFormat,
43    SessionConfig, VersionedExtension,
44};
45pub use dialect::{DialectBinding, DialectDescriptor, DialectFamily, DialectNegotiation};
46pub use encoder::{
47    ContinuationContext, EncodedExchange, EncodingError, ExchangeInputPolicy, InitialEncodeRequest,
48    OutboundDialectEncoder, ToolContinuationEncodeRequest,
49};
50pub use error::{ConnectorError, ConnectorErrorKind, InterpreterError, InterpreterErrorKind};
51pub use id::{
52    validate_identity_string, ChannelId, ConnectionId, ExchangeId, ExternalSessionId,
53    GrokSessionId, IdentityError, MonoloopRunId, RequestId, SessionId, SessionKey, ToolId,
54    ToolName, TransactionId, MAX_IDENTITY_BYTES,
55};
56pub use input::{
57    user_text_input, CanonicalAssistantToolCall, CanonicalInput, CanonicalMessage,
58    InputValidationError, TextPart,
59};
60pub use limits::{
61    ChannelLimits, ConnectorLimits, ExtensionLimits, InputLimits, InterpretationLimits,
62    LimitsError, ToolLimits, TransactionLimits, TransportBufferLimits,
63};
64pub use loop_types::{
65    LoopEnd, LoopEndKind, LoopError, LoopErrorKind, LoopId, LoopLimits, LoopOutputEvent, LoopScope,
66    OutboundToolOutcome, OutboundToolResult, ToolExecutionId, ToolUnavailableReason,
67};
68pub use safe::{DiagnosticCode, SafeDiagnostic, SafeDiagnosticError};
69pub use tool::{
70    CanonicalToolError, CanonicalToolOutput, CanonicalToolResult, CanonicalToolResultOutcome,
71    JsonSchema, ToolCall, ToolCallContext, ToolCancellationPolicy, ToolCompletion,
72    ToolContractError, ToolLifecycleEvent, ToolOutputContract, ToolRuntimeError, ToolSpec,
73    ToolStartError, ToolSuccessContract,
74};
75pub use transaction::{
76    AdmissionError, AdmissionErrorKind, AdmissionReceipt, CancellationReason,
77    CancellationReasonCode, CompletionCallback, CompletionDelivery, CompletionDeliveryError,
78    EventDelivery, EventDeliveryError, EventDeliveryOutcome, FnCompletionCallback, FnEventSink,
79    Shutdown, ShutdownDisposition, TerminationDisposition, TerminationMode, TerminationReason,
80    TerminationReasonCode, TransactionDiagnostic, TransactionEnd, TransactionEndKind,
81    TransactionEvent, TransactionEventPayload, TransactionEventSink, TransactionRequest,
82    TransactionRuntime, TransactionSelector, TransactionUsage,
83};
84
85pub use bytes::Bytes;