Skip to main content

starweaver_model/
lib.rs

1//! Provider-neutral model protocol and first wire adapters for Starweaver.
2
3pub mod adapter;
4pub mod media;
5pub mod message;
6pub mod oauth;
7pub mod presets;
8pub mod profile;
9pub mod providers;
10pub mod registry;
11pub mod request;
12pub mod settings;
13pub mod stream;
14pub mod test;
15pub mod transport;
16pub mod wrappers;
17
18pub use adapter::{
19    ModelAdapter, ModelError, ModelRequestContext, ModelRequestParameters,
20    ModelResponseEventStream, ModelRunSession, NativeToolDefinition, RealModelRequestGuard,
21    ToolDefinition, allow_real_model_requests, allow_real_model_requests_guard,
22    block_real_model_requests, set_allow_real_model_requests,
23};
24pub use media::{
25    ImageDimensions, MediaKind, MediaPolicy, MediaPreflight, ParsedDataUrl, base64_encoded_len,
26    detect_image_dimensions, detect_media_kind, is_document_media_type, is_image_media_type,
27    is_video_media_type, parse_data_url, raw_budget_from_base64_limit,
28};
29pub use message::{
30    CachePointTtl, ContentPart, FinishReason, ModelMessage, ModelRequest, ModelRequestPart,
31    ModelResponse, ModelResponsePart, ProviderInfo, ProviderPartInfo,
32    TOOL_RETURN_APPROVAL_ARGUMENTS_METADATA_KEY, ToolArguments, ToolCallPart, ToolReturnPart,
33};
34pub use oauth::{
35    CODEX_ORIGINATOR, CodexOAuthResponsesModel, OAuthBearerHttpClient, build_codex_headers,
36    build_codex_model, build_codex_model_with_profile, build_session_headers, codex_model_profile,
37    patch_codex_responses_body,
38};
39pub use presets::{
40    ModelConfigPreset, ModelConfigPresetData, ModelPresetError, ModelRuntimePreset,
41    ModelSettingsPreset, anthropic_http_config, gemini_http_config, get_model_config,
42    get_model_settings, google_cloud_http_config, google_cloud_project_http_config,
43    list_model_config_presets, list_model_settings_presets, model_runtime_preset,
44    openai_chat_http_config, openai_responses_http_config, xai_responses_http_config,
45};
46pub use profile::{
47    JsonSchemaTransformer, MessageNormalization, ModelProfile, NativeToolKind, ProtocolFamily,
48    StructuredOutputMode,
49};
50pub use providers::client::ProtocolModelClient;
51pub use registry::{ProviderAlias, ProviderAliasRegistry};
52pub use request::{
53    CONTEXT_ORIGIN_ENVIRONMENT_CONTEXT, CONTEXT_ORIGIN_HANDOFF, CONTEXT_ORIGIN_METADATA,
54    CONTEXT_ORIGIN_RUNTIME_CONTEXT, CONTEXT_ORIGIN_TOOL_RETURN_MEDIA, CONTEXT_TYPE_METADATA,
55    INSTRUCTION_DYNAMIC_METADATA, INSTRUCTION_ORIGIN_AGENT, INSTRUCTION_ORIGIN_DYNAMIC_INSTRUCTION,
56    INSTRUCTION_ORIGIN_METADATA, INSTRUCTION_ORIGIN_TOOLSET, InstructionPart, OutputMode,
57    PreparedInstruction, PreparedModelRequest, attach_prepared_instructions,
58    context_origin_metadata, prepare_messages, prepare_model_request,
59};
60pub use settings::{
61    AnthropicSettings, BedrockSettings, CodexSettings, GatewaySettings, GoogleCloudServiceTier,
62    GoogleSettings, ModelSettings, OpenAiChatSettings, OpenAiPromptCacheMode,
63    OpenAiPromptCacheOptions, OpenAiPromptCacheTtl, OpenAiResponsesSettings,
64    ProviderReplaySettings, ProviderSettings, ResponseStreamTransport, ServiceTier,
65    ThinkingSettings, ToolChoice, format_openai_prompt_cache_key,
66    supports_automatic_openai_prompt_cache_key, supports_openai_prompt_cache_breakpoints,
67};
68pub use stream::{
69    ModelResponseStreamEvent, ModelStreamState, PartDelta, PartEnd, PartStart, StreamDelta,
70    StreamDiagnostic, StreamLifecycle,
71};
72pub use test::{FunctionModel, FunctionModelInfo, TestModel, latest_user_text, tool_call_response};
73pub use transport::{
74    AuthConfig, DynHttpClient, DynProviderRequestAuditRecorder, DynSleeper, HttpModelConfig,
75    HttpRequest, HttpRequestOptions, HttpResponse, InMemoryProviderRequestAuditRecorder,
76    MaxTokensParameter, ModelEventStream, ModelHttpClient, ModelSleeper, NoopSleeper,
77    ProviderRequestAuditPayloadPolicy, ProviderRequestAuditPolicy, ProviderRequestAuditRecorder,
78    ProviderRequestAuditSnapshot, ReqwestHttpClient, RetryPolicy, TokioSleeper,
79};
80pub use wrappers::{
81    ConcurrencyLimitedModel, DynModelAdapter, DynModelExecutionHook, FallbackModel, HookedModel,
82    ModelExecutionHook, ModelExecutionMetadata, ProfileOverrideModel,
83};