route

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 17, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrRouteNotConfigured  = errors.New("route is not configured")
	ErrStaticRouteReadOnly = errors.New("static route is read-only")
)

Functions

func CandidateKey

func CandidateKey(providerID string, upstreamModel string) string

func DecodeStoredRoute

func DecodeStoredRoute(data []byte) (any, error)

DecodeStoredRoute decodes a persisted route and fills missing runtime defaults.

Types

type AgentRoute

type AgentRoute struct {
	ID           string            `json:"id"`
	Description  string            `json:"description,omitempty"`
	Disabled     bool              `json:"disabled"`
	LLMAPI       string            `json:"llm_api"`
	Match        RouteMatch        `json:"match"`
	TargetPolicy RouteTargetPolicy `json:"target_policy"`
	AuthPolicy   RouteAuthPolicy   `json:"auth_policy"`
	CreatedAt    time.Time         `json:"created_at"`
	UpdatedAt    time.Time         `json:"updated_at"`
}

AgentRoute is the primary gateway route configuration exposed to agent clients.

func (*AgentRoute) Normalize

func (r *AgentRoute) Normalize()

Normalize fills runtime defaults on a route value before it is used by the gateway.

func (*AgentRoute) NormalizeTimestamps

func (r *AgentRoute) NormalizeTimestamps(now time.Time)

func (AgentRoute) ProviderIDs

func (r AgentRoute) ProviderIDs() []string

func (AgentRoute) ResolveTarget

func (*AgentRoute) UnmarshalJSON

func (r *AgentRoute) UnmarshalJSON(data []byte) error

func (AgentRoute) UsesLogicalModel

func (r AgentRoute) UsesLogicalModel() bool

func (AgentRoute) ValidateDefinition

func (r AgentRoute) ValidateDefinition() error

func (AgentRoute) ValidateStaticDefinition

func (r AgentRoute) ValidateStaticDefinition() error

type AgentRouteManager

type AgentRouteManager struct {
	// contains filtered or unexported fields
}

func NewAgentRouteManager

func NewAgentRouteManager(store configstore.ConfigStore) *AgentRouteManager

func (*AgentRouteManager) Create

func (m *AgentRouteManager) Create(ctx context.Context, route AgentRoute, tag string) error

func (*AgentRouteManager) Delete

func (m *AgentRouteManager) Delete(ctx context.Context, routeID string) error

func (*AgentRouteManager) Get

func (m *AgentRouteManager) Get(ctx context.Context, routeID string) (AgentRoute, error)

func (*AgentRouteManager) InitStaticRoutes

func (m *AgentRouteManager) InitStaticRoutes(routes []AgentRoute)

func (*AgentRouteManager) IsStatic

func (m *AgentRouteManager) IsStatic(routeID string) bool

func (*AgentRouteManager) List

func (*AgentRouteManager) Match

Match resolves the most specific route whose RouteMatch accepts the request.

func (*AgentRouteManager) Reset

func (m *AgentRouteManager) Reset()

func (*AgentRouteManager) Update

func (m *AgentRouteManager) Update(ctx context.Context, routeID string, route AgentRoute) error

func (*AgentRouteManager) Validate

func (m *AgentRouteManager) Validate(ctx context.Context, routeID string, resolver ProviderResolver) error

type DirectProviderTarget

type DirectProviderTarget struct {
	ProviderID string `json:"provider_id"`
}

type ModelCatalogResolver

type ModelCatalogResolver interface {
	GetManagedModel(ctx context.Context, providerID string, upstreamModel string) (*modelcatalog.ManagedModel, bool, error)
	GetResolvedManagedModel(ctx context.Context, providerID string, upstreamModel string) (*modelcatalog.ResolvedManagedModel, bool, error)
}

type ProviderConfigResolver

type ProviderConfigResolver interface {
	GetConfig(ctx context.Context, providerID string) (provider.ProviderConfig, error)
}

type ProviderResolver

type ProviderResolver interface {
	ResolveProvider(ctx context.Context, providerID string) (provider.Provider, string, error)
}

type RequestRequirements

type RequestRequirements struct {
	Model              string
	RequireStreaming   bool
	RequireTools       bool
	RequireVision      bool
	RequireEmbeddings  bool
	ExcludedCandidates map[string]struct{}
}

RequestRequirements captures request attributes required for route resolution. Model means logical model ID in logical-model mode and upstream model in direct mode.

type ResolvedTarget

type ResolvedTarget struct {
	LogicalModel    string
	ProviderID      string
	ProviderType    string
	UpstreamModel   string
	CredentialScope string
	Capabilities    provider.ModelCapabilities
}

type RouteAuthPolicy

type RouteAuthPolicy struct {
	RequireVirtualKey bool `json:"require_virtual_key"`
}

type RouteCredentialScope

type RouteCredentialScope string
const (
	RouteCredentialScopeModelCustom RouteCredentialScope = "model_custom"
	RouteCredentialScopeProviderID  RouteCredentialScope = "provider_id"
)

type RouteCredentialSelectStrategy

type RouteCredentialSelectStrategy string
const (
	RouteCredentialSelectRoundRobin RouteCredentialSelectStrategy = "round_robin"
	RouteCredentialSelectFillFirst  RouteCredentialSelectStrategy = "fill_first"
)

type RouteCredentialType

type RouteCredentialType string
const (
	RouteCredentialTypeAPIKey       RouteCredentialType = "api_key"
	RouteCredentialTypeCLIAuthToken RouteCredentialType = "cliauth_token"
)

type RouteDirectProviderPolicy

type RouteDirectProviderPolicy struct {
	RouteTargetPolicyCommon
	ProviderID     string               `json:"provider_id,omitempty"`
	ProviderTarget DirectProviderTarget `json:"provider_target,omitempty"`
}

func DirectProviderPolicyOf

func DirectProviderPolicyOf(policy RouteTargetPolicy) (*RouteDirectProviderPolicy, bool)

func (*RouteDirectProviderPolicy) FallbackPolicy

func (p *RouteDirectProviderPolicy) FallbackPolicy() RouteFallbackPolicy

func (RouteDirectProviderPolicy) MarshalJSON

func (p RouteDirectProviderPolicy) MarshalJSON() ([]byte, error)

func (*RouteDirectProviderPolicy) Normalize

func (p *RouteDirectProviderPolicy) Normalize()

func (*RouteDirectProviderPolicy) PolicyKind

func (*RouteDirectProviderPolicy) ProviderIDs

func (p *RouteDirectProviderPolicy) ProviderIDs() []string

func (*RouteDirectProviderPolicy) ResolveTarget

func (*RouteDirectProviderPolicy) ValidateDefinition

func (p *RouteDirectProviderPolicy) ValidateDefinition(routeID string) error

type RouteFallbackPolicy

type RouteFallbackPolicy struct {
	Enabled bool `json:"enabled,omitempty"`
	MaxNum  int  `json:"max_num,omitempty"`
}

type RouteListOptions

type RouteListOptions struct {
	Tag       string
	TagPrefix string
}

type RouteLogicalModelTargetPolicy

type RouteLogicalModelTargetPolicy struct {
	RouteTargetPolicyCommon
	DefaultModel          string                 `json:"default_model,omitempty"`
	ModelSelectorStrategy RouteSelectionStrategy `json:"model_selector_strategy,omitempty"`
	Fallback              RouteFallbackPolicy    `json:"fallback,omitempty"`
	ModelTargets          []RouteModelTarget     `json:"model_targets,omitempty"`
}

func LogicalModelTargetPolicyOf

func LogicalModelTargetPolicyOf(policy RouteTargetPolicy) (*RouteLogicalModelTargetPolicy, bool)

func (*RouteLogicalModelTargetPolicy) FallbackPolicy

func (RouteLogicalModelTargetPolicy) MarshalJSON

func (p RouteLogicalModelTargetPolicy) MarshalJSON() ([]byte, error)

func (*RouteLogicalModelTargetPolicy) Normalize

func (p *RouteLogicalModelTargetPolicy) Normalize()

func (*RouteLogicalModelTargetPolicy) PolicyKind

func (*RouteLogicalModelTargetPolicy) ProviderIDs

func (p *RouteLogicalModelTargetPolicy) ProviderIDs() []string

func (*RouteLogicalModelTargetPolicy) ResolveTarget

func (*RouteLogicalModelTargetPolicy) ValidateDefinition

func (p *RouteLogicalModelTargetPolicy) ValidateDefinition(routeID string) error

type RouteMatch

type RouteMatch struct {
	Host       string   `json:"host,omitempty"`
	PathPrefix string   `json:"path_prefix,omitempty"`
	Methods    []string `json:"methods,omitempty"`
}

RouteMatch contains transport-facing match fields for binding requests to a route.

type RouteModelCandidate

type RouteModelCandidate struct {
	ProviderID    string `json:"provider_id"`
	UpstreamModel string `json:"upstream_model"`
	Weight        int    `json:"weight,omitempty"`
	Priority      int    `json:"priority,omitempty"`
	Default       bool   `json:"default,omitempty"`
}

type RouteModelTarget

type RouteModelTarget struct {
	Name             string                 `json:"name"`
	Strategy         RouteSelectionStrategy `json:"strategy,omitempty"`
	DefaultCandidate string                 `json:"default_candidate,omitempty"`
	Candidates       []RouteModelCandidate  `json:"candidates,omitempty"`
}

func (*RouteModelTarget) Normalize

func (t *RouteModelTarget) Normalize()

type RouteSelectionStrategy

type RouteSelectionStrategy string

RouteSelectionStrategy controls how a route prefers model candidates.

const (
	RouteSelectionStrategyAuto     RouteSelectionStrategy = "auto"
	RouteSelectionStrategyWeighted RouteSelectionStrategy = "weighted"
	RouteSelectionStrategyPriority RouteSelectionStrategy = "priority"
)

type RouteTargetPolicy

type RouteTargetPolicy interface {
	Normalize()
	PolicyKind() RouteTargetPolicyKind
	ValidateDefinition(routeID string) error
	ResolveTarget(ctx context.Context, routeID string, catalog ModelCatalogResolver, providers ProviderConfigResolver, req RequestRequirements) (*ResolvedTarget, error)
	ProviderIDs() []string
	CredentialSelector() RouteCredentialSelectStrategy
	CredentialScopeOrder() []RouteCredentialScope
	CredentialTypeOrder() []RouteCredentialType
	FallbackPolicy() RouteFallbackPolicy
}

type RouteTargetPolicyCommon

type RouteTargetPolicyCommon struct {
	CredentialSelectorValue   RouteCredentialSelectStrategy `json:"credential_selector,omitempty"`
	CredentialScopeOrderValue []RouteCredentialScope        `json:"credential_scope_order,omitempty"`
	CredentialTypeOrderValue  []RouteCredentialType         `json:"credential_type_order,omitempty"`
}

func (RouteTargetPolicyCommon) CredentialScopeOrder

func (c RouteTargetPolicyCommon) CredentialScopeOrder() []RouteCredentialScope

func (RouteTargetPolicyCommon) CredentialSelector

func (RouteTargetPolicyCommon) CredentialTypeOrder

func (c RouteTargetPolicyCommon) CredentialTypeOrder() []RouteCredentialType

func (*RouteTargetPolicyCommon) Normalize

func (c *RouteTargetPolicyCommon) Normalize(defaultScopes []RouteCredentialScope)

type RouteTargetPolicyKind

type RouteTargetPolicyKind string
const (
	RouteTargetPolicyKindDirectProvider RouteTargetPolicyKind = "direct-provider"
	RouteTargetPolicyKindLogicalModel   RouteTargetPolicyKind = "logical-model"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL