Documentation
¶
Overview ¶
Package gateway contains transport-independent gateway use cases.
Index ¶
- Constants
- func ApplyResolvedSelector(model, providerHint *string, resolution *core.RequestModelResolution)
- func ApplyWorkflowContextOverrides(ctx context.Context, workflow *core.Workflow)
- func ApplyWorkflowPolicy(ctx context.Context, workflow *core.Workflow, resolver WorkflowPolicyResolver, ...) error
- func CloneChatRequestForSelector(req *core.ChatRequest, selector core.ModelSelector) *core.ChatRequest
- func CloneChatRequestForStreamUsage(req *core.ChatRequest) *core.ChatRequest
- func CloneResponsesRequestForSelector(req *core.ResponsesRequest, selector core.ModelSelector) *core.ResponsesRequest
- func FirstNonEmpty(values ...string) string
- func IsNativeBatchResultsPending(ctx context.Context, nativeRouter core.NativeBatchRoutableProvider, ...) (bool, *core.BatchResponse)
- func IsTerminalBatchStatus(status string) bool
- func LogBatchUsageFromBatchResults(stored *batchstore.StoredBatch, result *core.BatchResultsResponse, ...) bool
- func MergeStoredBatchFromUpstream(stored *batchstore.StoredBatch, upstream *core.BatchResponse)
- func NormalizeWorkflowPolicyError(err error) error
- func ProviderNameFromWorkflow(workflow *core.Workflow) string
- func ProviderTypeFromWorkflow(workflow *core.Workflow) string
- func QualifyExecutedModel(workflow *core.Workflow, model, providerName string) string
- func QualifyModelWithProvider(model, providerName string) string
- func ResolveExecutionSelector(ctx context.Context, provider core.RoutableProvider, resolver ModelResolver, ...) (core.ModelSelector, bool, error)
- func ResolveRequestModelWithAuthorizer(ctx context.Context, provider core.RoutableProvider, resolver ModelResolver, ...) (*core.RequestModelResolution, error)
- func ResolvedModelFromWorkflow(workflow *core.Workflow, fallback string) string
- func ResolvedProviderName(provider core.RoutableProvider, selector core.ModelSelector, fallback string) string
- func ResolvedWorkflowProviderName(resolution *core.RequestModelResolution) string
- func ResponseProviderType(fallback, responseProvider string) string
- func SanitizePublicBatchMetadata(metadata map[string]string) map[string]string
- func ShouldAttemptFailover(err error) bool
- func TranslatedWorkflow(ctx context.Context, requestID string, endpoint core.EndpointDescriptor, ...) (*core.Workflow, error)
- func WithAttemptObserver(ctx context.Context, observe AttemptObserver) context.Context
- func WithAttemptRecorder(ctx context.Context) context.Context
- func WorkflowProviderNameForType(provider core.RoutableProvider, providerType string) string
- type AttemptObserver
- type AttemptRecorder
- type BatchConfig
- type BatchCreateResult
- type BatchExecutionSelection
- type BatchInputFileProviderResolver
- type BatchListParams
- type BatchMeta
- type BatchOrchestrator
- func (o *BatchOrchestrator) Cancel(ctx context.Context, id string) (*BatchResult, error)
- func (o *BatchOrchestrator) Create(ctx context.Context, req *core.BatchRequest, meta BatchMeta) (*BatchCreateResult, error)
- func (o *BatchOrchestrator) Delete(ctx context.Context, id string) (*BatchResult, error)
- func (o *BatchOrchestrator) Get(ctx context.Context, id string) (*BatchResult, error)
- func (o *BatchOrchestrator) List(ctx context.Context, params BatchListParams) (*core.BatchListResponse, error)
- func (o *BatchOrchestrator) Results(ctx context.Context, id, fallbackRequestID string) (*BatchResultsResult, error)
- type BatchRequestPreparer
- type BatchResult
- type BatchResultsResult
- type ChatCompletionResult
- type EmbeddingResult
- type ExecutionMeta
- type FailoverResolver
- type InferenceConfig
- type InferenceOrchestrator
- func (o *InferenceOrchestrator) CanFastPathStreamingChatPassthrough(workflow *core.Workflow, req *core.ChatRequest) bool
- func (o *InferenceOrchestrator) DispatchChatCompletion(ctx context.Context, workflow *core.Workflow, req *core.ChatRequest) (*core.ChatResponse, string, string, string, bool, error)
- func (o *InferenceOrchestrator) DispatchEmbeddings(ctx context.Context, workflow *core.Workflow, req *core.EmbeddingRequest) (*core.EmbeddingResponse, string, string, error)
- func (o *InferenceOrchestrator) DispatchResponses(ctx context.Context, workflow *core.Workflow, req *core.ResponsesRequest) (*core.ResponsesResponse, string, string, string, bool, error)
- func (o *InferenceOrchestrator) ExecuteChatCompletion(ctx context.Context, workflow *core.Workflow, req *core.ChatRequest, ...) (*ChatCompletionResult, error)
- func (o *InferenceOrchestrator) ExecuteEmbeddings(ctx context.Context, workflow *core.Workflow, req *core.EmbeddingRequest, ...) (*EmbeddingResult, error)
- func (o *InferenceOrchestrator) ExecuteResponses(ctx context.Context, workflow *core.Workflow, req *core.ResponsesRequest, ...) (*ResponsesResult, error)
- func (o *InferenceOrchestrator) FailoverSelectors(workflow *core.Workflow) []core.ModelSelector
- func (o *InferenceOrchestrator) LogUsage(ctx context.Context, workflow *core.Workflow, ...)
- func (o *InferenceOrchestrator) PrepareChatRequest(ctx context.Context, req *core.ChatRequest, meta RequestMeta) (*PreparedChatRequest, error)
- func (o *InferenceOrchestrator) PrepareEmbeddingRequest(ctx context.Context, req *core.EmbeddingRequest, meta RequestMeta) (*PreparedEmbeddingRequest, error)
- func (o *InferenceOrchestrator) PrepareResponsesRequest(ctx context.Context, req *core.ResponsesRequest, meta RequestMeta) (*PreparedResponsesRequest, error)
- func (o *InferenceOrchestrator) ProviderTypeForSelector(selector core.ModelSelector, fallback string) string
- func (o *InferenceOrchestrator) ResolveChatRoute(workflow *core.Workflow, req *core.ChatRequest) (*core.ChatRequest, string, string, string)
- func (o *InferenceOrchestrator) ShouldEnforceReturningUsageData() bool
- func (o *InferenceOrchestrator) StreamChatCompletion(ctx context.Context, workflow *core.Workflow, req *core.ChatRequest) (*StreamResult, error)
- func (o *InferenceOrchestrator) StreamResponses(ctx context.Context, workflow *core.Workflow, req *core.ResponsesRequest) (*StreamResult, error)
- func (o *InferenceOrchestrator) WithCacheRequestContext(ctx context.Context, workflow *core.Workflow) context.Context
- type ModelAuthorizer
- type ModelResolver
- type PreparedChatRequest
- type PreparedEmbeddingRequest
- type PreparedResponsesRequest
- type ProviderAttempt
- type RequestMeta
- type ResponsesResult
- type RouteGate
- type StreamResult
- type TranslatedRequestPatcher
- type UserPathModelResolver
- type WorkflowPolicyResolver
Constants ¶
const ( AttemptKindPrimary = "primary" AttemptKindFailover = "failover" AttemptKindRetry = "retry" )
Variables ¶
This section is empty.
Functions ¶
func ApplyResolvedSelector ¶
func ApplyResolvedSelector(model, providerHint *string, resolution *core.RequestModelResolution)
ApplyResolvedSelector updates request model/provider fields to the resolved selector.
func ApplyWorkflowContextOverrides ¶
ApplyWorkflowContextOverrides applies request-origin-specific policy changes.
func ApplyWorkflowPolicy ¶
func ApplyWorkflowPolicy(ctx context.Context, workflow *core.Workflow, resolver WorkflowPolicyResolver, selector core.WorkflowSelector) error
ApplyWorkflowPolicy applies the first matching workflow policy to workflow.
func CloneChatRequestForSelector ¶
func CloneChatRequestForSelector(req *core.ChatRequest, selector core.ModelSelector) *core.ChatRequest
CloneChatRequestForSelector clones a chat request for a concrete selector.
func CloneChatRequestForStreamUsage ¶
func CloneChatRequestForStreamUsage(req *core.ChatRequest) *core.ChatRequest
CloneChatRequestForStreamUsage clones chat stream options before usage mutation.
func CloneResponsesRequestForSelector ¶
func CloneResponsesRequestForSelector(req *core.ResponsesRequest, selector core.ModelSelector) *core.ResponsesRequest
CloneResponsesRequestForSelector clones a Responses request for a concrete selector.
func FirstNonEmpty ¶
FirstNonEmpty returns the first non-empty trimmed string.
func IsNativeBatchResultsPending ¶
func IsNativeBatchResultsPending( ctx context.Context, nativeRouter core.NativeBatchRoutableProvider, providerType, providerBatchID string, err error, ) (bool, *core.BatchResponse)
IsNativeBatchResultsPending reports whether a provider 404 means results are still pending.
func IsTerminalBatchStatus ¶
IsTerminalBatchStatus reports whether status is terminal.
func LogBatchUsageFromBatchResults ¶
func LogBatchUsageFromBatchResults( stored *batchstore.StoredBatch, result *core.BatchResultsResponse, fallbackRequestID string, usageLogger usage.LoggerInterface, pricingResolver usage.PricingResolver, ) bool
LogBatchUsageFromBatchResults writes per-item usage from batch results once.
func MergeStoredBatchFromUpstream ¶
func MergeStoredBatchFromUpstream(stored *batchstore.StoredBatch, upstream *core.BatchResponse)
MergeStoredBatchFromUpstream applies sparse upstream refresh fields to a stored batch.
func NormalizeWorkflowPolicyError ¶
NormalizeWorkflowPolicyError converts policy lookup failures into gateway errors.
func ProviderNameFromWorkflow ¶
ProviderNameFromWorkflow returns the resolved configured provider name.
func ProviderTypeFromWorkflow ¶
ProviderTypeFromWorkflow returns the workflow provider type.
func QualifyExecutedModel ¶
QualifyExecutedModel returns the public executed model selector.
func QualifyModelWithProvider ¶
QualifyModelWithProvider prefixes a model with providerName when needed.
func ResolveExecutionSelector ¶
func ResolveExecutionSelector( ctx context.Context, provider core.RoutableProvider, resolver ModelResolver, requested core.RequestedModelSelector, ) (core.ModelSelector, bool, error)
ResolveExecutionSelector applies explicit and provider-owned selector resolution. ctx carries the effective request user path so a resolver that implements UserPathModelResolver can apply user_path-scoped redirects.
func ResolveRequestModelWithAuthorizer ¶
func ResolveRequestModelWithAuthorizer( ctx context.Context, provider core.RoutableProvider, resolver ModelResolver, authorizer ModelAuthorizer, requested core.RequestedModelSelector, ) (*core.RequestModelResolution, error)
ResolveRequestModelWithAuthorizer resolves and validates a requested selector.
func ResolvedModelFromWorkflow ¶
ResolvedModelFromWorkflow returns the resolved model or fallback.
func ResolvedProviderName ¶
func ResolvedProviderName(provider core.RoutableProvider, selector core.ModelSelector, fallback string) string
ResolvedProviderName returns the configured provider instance name for a selector.
func ResolvedWorkflowProviderName ¶
func ResolvedWorkflowProviderName(resolution *core.RequestModelResolution) string
ResolvedWorkflowProviderName returns the configured provider name recorded in a resolution.
func ResponseProviderType ¶
ResponseProviderType returns responseProvider when set, otherwise fallback.
func SanitizePublicBatchMetadata ¶
SanitizePublicBatchMetadata removes gateway-private metadata keys.
func ShouldAttemptFailover ¶
ShouldAttemptFailover reports whether err should trigger translated failover.
func TranslatedWorkflow ¶
func TranslatedWorkflow( ctx context.Context, requestID string, endpoint core.EndpointDescriptor, resolution *core.RequestModelResolution, policyResolver WorkflowPolicyResolver, ) (*core.Workflow, error)
TranslatedWorkflow builds a translated execution workflow for a resolved model.
func WithAttemptObserver ¶
func WithAttemptObserver(ctx context.Context, observe AttemptObserver) context.Context
WithAttemptObserver registers an observer notified after each failed attempt. It is independent of (and additive to) the attempt recorder.
func WithAttemptRecorder ¶
WithAttemptRecorder ensures ctx carries a request-scoped attempt recorder.
func WorkflowProviderNameForType ¶
func WorkflowProviderNameForType(provider core.RoutableProvider, providerType string) string
WorkflowProviderNameForType maps a provider type to its configured provider name when available.
Types ¶
type AttemptObserver ¶
type AttemptObserver func()
AttemptObserver is invoked after a failed provider attempt is recorded, so the audit/live layer can surface it before the overall request finishes (e.g. a failed primary while failover is still in flight).
type AttemptRecorder ¶
type AttemptRecorder struct {
// contains filtered or unexported fields
}
func AttemptRecorderFromContext ¶
func AttemptRecorderFromContext(ctx context.Context) *AttemptRecorder
type BatchConfig ¶
type BatchConfig struct {
Provider core.RoutableProvider
ModelResolver ModelResolver
ModelAuthorizer ModelAuthorizer
InputFileProviderResolver BatchInputFileProviderResolver
WorkflowPolicyResolver WorkflowPolicyResolver
BatchRequestPreparer BatchRequestPreparer
BatchStore batchstore.Store
CleanupPreparedBatchInputFile func(context.Context, string, string)
CleanupStoredBatchRewrittenInputFile func(context.Context, *batchstore.StoredBatch) bool
UsageLogger usage.LoggerInterface
PricingResolver usage.PricingResolver
BudgetEnforcer func(context.Context) error
}
BatchConfig configures native batch orchestration.
type BatchCreateResult ¶
type BatchCreateResult struct {
Batch *core.BatchResponse
Workflow *core.Workflow
ProviderType string
}
BatchCreateResult is the result of creating a native batch.
type BatchExecutionSelection ¶
type BatchExecutionSelection struct {
ProviderType string
Selector core.WorkflowSelector
}
BatchExecutionSelection captures the provider and workflow selector for a native batch.
func DetermineBatchExecutionSelectionWithAuthorizerAndInputFileResolver ¶
func DetermineBatchExecutionSelectionWithAuthorizerAndInputFileResolver( ctx context.Context, provider core.RoutableProvider, resolver ModelResolver, authorizer ModelAuthorizer, inputFileProviderResolver BatchInputFileProviderResolver, req *core.BatchRequest, ) (BatchExecutionSelection, error)
DetermineBatchExecutionSelectionWithAuthorizerAndInputFileResolver resolves and authorizes native batch items, using file ownership metadata for file-backed batches when no explicit provider hint is supplied.
type BatchInputFileProviderResolver ¶
type BatchInputFileProviderResolver interface {
ResolveBatchInputFileProvider(ctx context.Context, fileID string) (providerType string, ok bool, err error)
}
BatchInputFileProviderResolver resolves provider ownership for an uploaded batch input file.
type BatchListParams ¶
BatchListParams contains native batch list pagination options.
type BatchMeta ¶
type BatchMeta struct {
RequestID string
Endpoint core.EndpointDescriptor
Workflow *core.Workflow
}
BatchMeta carries transport-derived metadata into native batch use cases.
type BatchOrchestrator ¶
type BatchOrchestrator struct {
// contains filtered or unexported fields
}
BatchOrchestrator owns native batch lifecycle behavior independent of HTTP.
func NewBatchOrchestrator ¶
func NewBatchOrchestrator(cfg BatchConfig) *BatchOrchestrator
NewBatchOrchestrator creates a native batch orchestrator.
func (*BatchOrchestrator) Cancel ¶
func (o *BatchOrchestrator) Cancel(ctx context.Context, id string) (*BatchResult, error)
Cancel cancels an upstream native batch and persists refreshed state.
func (*BatchOrchestrator) Create ¶
func (o *BatchOrchestrator) Create(ctx context.Context, req *core.BatchRequest, meta BatchMeta) (*BatchCreateResult, error)
Create creates a native provider batch and persists the gateway batch mapping.
func (*BatchOrchestrator) Delete ¶ added in v0.1.53
func (o *BatchOrchestrator) Delete(ctx context.Context, id string) (*BatchResult, error)
Delete removes an ended batch from the upstream provider (when its batch API supports deletion) and from the gateway store. Batches still processing must be canceled first, matching the Anthropic Message Batches contract.
func (*BatchOrchestrator) Get ¶
func (o *BatchOrchestrator) Get(ctx context.Context, id string) (*BatchResult, error)
Get refreshes and returns a stored batch.
func (*BatchOrchestrator) List ¶
func (o *BatchOrchestrator) List(ctx context.Context, params BatchListParams) (*core.BatchListResponse, error)
List returns gateway-tracked batches.
func (*BatchOrchestrator) Results ¶
func (o *BatchOrchestrator) Results(ctx context.Context, id, fallbackRequestID string) (*BatchResultsResult, error)
Results returns native batch output items and persists result/usage refreshes.
type BatchRequestPreparer ¶
type BatchRequestPreparer interface {
PrepareBatchRequest(ctx context.Context, providerType string, req *core.BatchRequest) (*core.BatchRewriteResult, error)
}
BatchRequestPreparer rewrites a native batch request before provider submission. This keeps batch-specific policy out of provider decorators.
type BatchResult ¶
type BatchResult struct {
Batch *core.BatchResponse
ProviderType string
}
BatchResult is the result of a single batch lifecycle operation.
type BatchResultsResult ¶
type BatchResultsResult struct {
Response *core.BatchResultsResponse
ProviderType string
}
BatchResultsResult is the result of retrieving batch output items.
type ChatCompletionResult ¶
type ChatCompletionResult struct {
Response *core.ChatResponse
Meta ExecutionMeta
}
ChatCompletionResult is the non-streaming chat completion result.
type EmbeddingResult ¶
type EmbeddingResult struct {
Response *core.EmbeddingResponse
Meta ExecutionMeta
}
EmbeddingResult is the embeddings result.
type ExecutionMeta ¶
type ExecutionMeta struct {
ProviderType string
ProviderName string
Model string
FailoverModel string
UsedFailover bool
}
ExecutionMeta describes the concrete route used for provider execution.
type FailoverResolver ¶
type FailoverResolver interface {
ResolveFailovers(resolution *core.RequestModelResolution, op core.Operation) []core.ModelSelector
}
FailoverResolver resolves alternate concrete model selectors for a translated request after the primary selector has already been resolved.
type InferenceConfig ¶
type InferenceConfig struct {
Provider core.RoutableProvider
ModelResolver ModelResolver
ModelAuthorizer ModelAuthorizer
WorkflowPolicyResolver WorkflowPolicyResolver
FailoverResolver FailoverResolver
TranslatedRequestPatcher TranslatedRequestPatcher
UsageLogger usage.LoggerInterface
PricingResolver usage.PricingResolver
RouteGate RouteGate
GuardrailsHash string
}
InferenceConfig configures translated inference orchestration.
type InferenceOrchestrator ¶
type InferenceOrchestrator struct {
// contains filtered or unexported fields
}
InferenceOrchestrator owns translated inference workflow resolution, request patching, provider dispatch, failover, usage logging, and cache metadata.
func NewInferenceOrchestrator ¶
func NewInferenceOrchestrator(cfg InferenceConfig) *InferenceOrchestrator
NewInferenceOrchestrator creates a translated inference orchestrator.
func (*InferenceOrchestrator) CanFastPathStreamingChatPassthrough ¶
func (o *InferenceOrchestrator) CanFastPathStreamingChatPassthrough(workflow *core.Workflow, req *core.ChatRequest) bool
CanFastPathStreamingChatPassthrough reports whether a streaming chat request can bypass translation.
func (*InferenceOrchestrator) DispatchChatCompletion ¶
func (o *InferenceOrchestrator) DispatchChatCompletion( ctx context.Context, workflow *core.Workflow, req *core.ChatRequest, ) (*core.ChatResponse, string, string, string, bool, error)
DispatchChatCompletion executes a non-streaming chat request without usage side effects.
func (*InferenceOrchestrator) DispatchEmbeddings ¶
func (o *InferenceOrchestrator) DispatchEmbeddings( ctx context.Context, workflow *core.Workflow, req *core.EmbeddingRequest, ) (*core.EmbeddingResponse, string, string, error)
DispatchEmbeddings executes an embeddings request without usage side effects.
func (*InferenceOrchestrator) DispatchResponses ¶
func (o *InferenceOrchestrator) DispatchResponses( ctx context.Context, workflow *core.Workflow, req *core.ResponsesRequest, ) (*core.ResponsesResponse, string, string, string, bool, error)
DispatchResponses executes a non-streaming Responses request without usage side effects.
func (*InferenceOrchestrator) ExecuteChatCompletion ¶
func (o *InferenceOrchestrator) ExecuteChatCompletion(ctx context.Context, workflow *core.Workflow, req *core.ChatRequest, requestID, endpoint string) (*ChatCompletionResult, error)
ExecuteChatCompletion executes a non-streaming chat request and records usage on success.
func (*InferenceOrchestrator) ExecuteEmbeddings ¶
func (o *InferenceOrchestrator) ExecuteEmbeddings(ctx context.Context, workflow *core.Workflow, req *core.EmbeddingRequest, requestID, endpoint string) (*EmbeddingResult, error)
ExecuteEmbeddings executes an embeddings request and records usage on success.
func (*InferenceOrchestrator) ExecuteResponses ¶
func (o *InferenceOrchestrator) ExecuteResponses(ctx context.Context, workflow *core.Workflow, req *core.ResponsesRequest, requestID, endpoint string) (*ResponsesResult, error)
ExecuteResponses executes a non-streaming Responses API request and records usage on success.
func (*InferenceOrchestrator) FailoverSelectors ¶
func (o *InferenceOrchestrator) FailoverSelectors(workflow *core.Workflow) []core.ModelSelector
FailoverSelectors returns failover selectors for a translated workflow.
func (*InferenceOrchestrator) LogUsage ¶
func (o *InferenceOrchestrator) LogUsage( ctx context.Context, workflow *core.Workflow, model, providerType, providerName string, extractFn func(*core.ModelPricing) *usage.UsageEntry, )
LogUsage writes one non-streaming usage entry when usage is enabled.
func (*InferenceOrchestrator) PrepareChatRequest ¶
func (o *InferenceOrchestrator) PrepareChatRequest(ctx context.Context, req *core.ChatRequest, meta RequestMeta) (*PreparedChatRequest, error)
PrepareChatRequest resolves workflow/model policy and applies translated request patching.
func (*InferenceOrchestrator) PrepareEmbeddingRequest ¶
func (o *InferenceOrchestrator) PrepareEmbeddingRequest(ctx context.Context, req *core.EmbeddingRequest, meta RequestMeta) (*PreparedEmbeddingRequest, error)
PrepareEmbeddingRequest resolves workflow/model policy for an embeddings request.
func (*InferenceOrchestrator) PrepareResponsesRequest ¶
func (o *InferenceOrchestrator) PrepareResponsesRequest(ctx context.Context, req *core.ResponsesRequest, meta RequestMeta) (*PreparedResponsesRequest, error)
PrepareResponsesRequest resolves workflow/model policy and applies translated request patching.
func (*InferenceOrchestrator) ProviderTypeForSelector ¶
func (o *InferenceOrchestrator) ProviderTypeForSelector(selector core.ModelSelector, fallback string) string
ProviderTypeForSelector returns the provider type for a selector.
func (*InferenceOrchestrator) ResolveChatRoute ¶
func (o *InferenceOrchestrator) ResolveChatRoute(workflow *core.Workflow, req *core.ChatRequest) (*core.ChatRequest, string, string, string)
ResolveChatRoute returns the provider route and the request to send for chat streams.
func (*InferenceOrchestrator) ShouldEnforceReturningUsageData ¶
func (o *InferenceOrchestrator) ShouldEnforceReturningUsageData() bool
ShouldEnforceReturningUsageData reports whether streams should request usage chunks.
func (*InferenceOrchestrator) StreamChatCompletion ¶
func (o *InferenceOrchestrator) StreamChatCompletion(ctx context.Context, workflow *core.Workflow, req *core.ChatRequest) (*StreamResult, error)
StreamChatCompletion opens a chat SSE stream. Stream usage is recorded by the caller's stream observer.
func (*InferenceOrchestrator) StreamResponses ¶
func (o *InferenceOrchestrator) StreamResponses(ctx context.Context, workflow *core.Workflow, req *core.ResponsesRequest) (*StreamResult, error)
StreamResponses opens a Responses API SSE stream. Stream usage is recorded by the caller's stream observer.
func (*InferenceOrchestrator) WithCacheRequestContext ¶
func (o *InferenceOrchestrator) WithCacheRequestContext(ctx context.Context, workflow *core.Workflow) context.Context
WithCacheRequestContext injects workflow and guardrails cache metadata into ctx.
type ModelAuthorizer ¶
type ModelAuthorizer interface {
ValidateModelAccess(ctx context.Context, selector core.ModelSelector) error
AllowsModel(ctx context.Context, selector core.ModelSelector) bool
FilterPublicModels(ctx context.Context, models []core.Model) []core.Model
}
ModelAuthorizer validates request-scoped access to concrete models.
type ModelResolver ¶
type ModelResolver interface {
ResolveModel(requested core.RequestedModelSelector) (core.ModelSelector, bool, error)
}
ModelResolver resolves raw request selectors into concrete model selectors before provider execution.
type PreparedChatRequest ¶
type PreparedChatRequest struct {
Context context.Context
Request *core.ChatRequest
Workflow *core.Workflow
}
PreparedChatRequest is a translated chat request ready for cache lookup or execution.
type PreparedEmbeddingRequest ¶
type PreparedEmbeddingRequest struct {
Context context.Context
Request *core.EmbeddingRequest
Workflow *core.Workflow
}
PreparedEmbeddingRequest is a translated embeddings request ready for execution.
type PreparedResponsesRequest ¶
type PreparedResponsesRequest struct {
Context context.Context
Request *core.ResponsesRequest
Workflow *core.Workflow
}
PreparedResponsesRequest is a translated Responses request ready for cache lookup or execution.
type ProviderAttempt ¶
type ProviderAttempt struct {
Seq int
Kind string
ProviderType string
ProviderName string
Model string
StatusCode int
Success bool
ErrorType string
ErrorCode string
ErrorMessage string
StartedAt time.Time
DurationNs int64
// ResponseBody and ResponseHeaders hold the raw upstream error response for
// a failed attempt. They are persisted only when audit body/header logging
// is enabled; the audit layer parses and redacts them before storage.
ResponseBody []byte
ResponseHeaders http.Header
}
ProviderAttempt describes one external provider call made while serving a logical request. It is intentionally storage-agnostic; server/audit layers decide how to persist it.
func AttemptsFromContext ¶
func AttemptsFromContext(ctx context.Context) []ProviderAttempt
type RequestMeta ¶
type RequestMeta struct {
RequestID string
Endpoint core.EndpointDescriptor
Workflow *core.Workflow
}
RequestMeta carries transport-derived metadata into gateway use cases.
type ResponsesResult ¶
type ResponsesResult struct {
Response *core.ResponsesResponse
Meta ExecutionMeta
}
ResponsesResult is the non-streaming Responses API result.
type RouteGate ¶
RouteGate reports whether a provider/model route currently has rate-limit capacity. Failover uses it to skip saturated targets; admission at the handler layer stays the authoritative check.
type StreamResult ¶
type StreamResult struct {
Stream io.ReadCloser
Meta ExecutionMeta
}
StreamResult is a provider SSE stream plus route metadata for observers.
type TranslatedRequestPatcher ¶
type TranslatedRequestPatcher interface {
PatchChatRequest(ctx context.Context, req *core.ChatRequest) (*core.ChatRequest, error)
PatchResponsesRequest(ctx context.Context, req *core.ResponsesRequest) (*core.ResponsesRequest, error)
}
TranslatedRequestPatcher applies request-level transforms for translated routes after workflow resolution has resolved the concrete execution selector.
type UserPathModelResolver ¶
type UserPathModelResolver interface {
ResolveModelForUserPath(ctx context.Context, requested core.RequestedModelSelector) (core.ModelSelector, bool, error)
}
UserPathModelResolver is an optional ModelResolver that resolves with awareness of the effective request user path, so a redirect (alias) can be scoped to specific user_paths and fall through to the literal model name for callers that do not match. Resolvers that do not implement it are resolved unscoped via ResolveModel.
type WorkflowPolicyResolver ¶
type WorkflowPolicyResolver interface {
Match(selector core.WorkflowSelector) (*core.ResolvedWorkflowPolicy, error)
}
WorkflowPolicyResolver matches persisted workflow versions for requests.