providers

package
v1.4.4 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2025 License: MPL-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseProvider

type BaseProvider struct {
	Name         string       `json:"name"`
	ProviderType ProviderType `json:"provider_type"`
}

BaseProvider holds fields common to every provider.

func (*BaseProvider) Type

func (b *BaseProvider) Type() ProviderType

type CliProvider

type CliProvider struct {
	BaseProvider
	CommandName string            `json:"command_name"`
	EnvVars     map[string]string `json:"env_vars,omitempty"`
	WorkingDir  *string           `json:"working_dir,omitempty"`
}

CliProvider represents a CLI tool.

type GRPCProvider

type GRPCProvider struct {
	BaseProvider
	Host        string `json:"host"`
	Port        int    `json:"port"`
	ServiceName string `json:"service_name"`
	MethodName  string `json:"method_name"`
	UseSSL      bool   `json:"use_ssl"`
	Auth        *Auth  `json:"auth,omitempty"`
}

GRPCProvider represents a gRPC service.

type GraphQLProvider

type GraphQLProvider struct {
	BaseProvider
	URL           string            `json:"url"`
	OperationType string            `json:"operation_type"` // query, mutation, subscription
	OperationName *string           `json:"operation_name,omitempty"`
	Auth          *Auth             `json:"auth,omitempty"`
	Headers       map[string]string `json:"headers,omitempty"`
	HeaderFields  []string          `json:"header_fields,omitempty"`
}

GraphQLProvider represents a GraphQL endpoint.

type HttpProvider

type HttpProvider struct {
	BaseProvider
	HTTPMethod   string            `json:"http_method"` // GET, POST, PUT, DELETE, PATCH
	URL          string            `json:"url"`
	ContentType  string            `json:"content_type"` // default application/json
	Auth         *Auth             `json:"auth,omitempty"`
	Headers      map[string]string `json:"headers,omitempty"`
	BodyField    *string           `json:"body_field,omitempty"` // name of the single input field
	HeaderFields []string          `json:"header_fields,omitempty"`
}

HttpProvider represents RESTful HTTP/HTTPS API.

type MCPProvider

type MCPProvider struct {
	Name       string            `json:"name" yaml:"name"`
	Command    []string          `json:"command" yaml:"command"`
	Args       []string          `json:"args,omitempty" yaml:"args,omitempty"`
	Env        map[string]string `json:"env,omitempty" yaml:"env,omitempty"`
	WorkingDir string            `json:"workingDir,omitempty" yaml:"workingDir,omitempty"`
	StdinData  string            `json:"stdinData,omitempty" yaml:"stdinData,omitempty"`
	Timeout    int               `json:"timeout,omitempty" yaml:"timeout,omitempty"` // seconds
}

MCPProvider represents an MCP (Model Context Protocol) tool provider.

func NewMCPProvider

func NewMCPProvider(name string, command []string) *MCPProvider

NewMCPProvider constructs a new MCPProvider with the given name and command.

func NewMCPProviderFromJSON

func NewMCPProviderFromJSON(data []byte) (*MCPProvider, error)

NewMCPProviderFromJSON creates an MCPProvider from JSON configuration.

func (*MCPProvider) GetName

func (p *MCPProvider) GetName() string

GetName returns the provider's name.

func (*MCPProvider) Type

func (p *MCPProvider) Type() ProviderType

Type returns the provider type.

func (*MCPProvider) Validate

func (p *MCPProvider) Validate() error

Validate ensures the provider configuration is valid.

func (*MCPProvider) WithArgs

func (p *MCPProvider) WithArgs(args ...string) *MCPProvider

WithArgs sets command line arguments for the MCP server process.

func (*MCPProvider) WithEnv

func (p *MCPProvider) WithEnv(key, value string) *MCPProvider

WithEnv sets environment variables for the MCP server process.

func (*MCPProvider) WithStdinData

func (p *MCPProvider) WithStdinData(data string) *MCPProvider

WithStdinData sets data to be sent to the MCP server's stdin on startup.

func (*MCPProvider) WithTimeout

func (p *MCPProvider) WithTimeout(seconds int) *MCPProvider

WithTimeout sets the timeout for MCP operations in seconds.

func (*MCPProvider) WithWorkingDir

func (p *MCPProvider) WithWorkingDir(dir string) *MCPProvider

WithWorkingDir sets the working directory for the MCP server process.

type McpConfig

type McpConfig struct {
	McpServers map[string]McpServer `json:"mcpServers"`
}

type McpHttpServer

type McpHttpServer struct {
	Transport string `json:"transport"` // always "http"
	URL       string `json:"url"`
}

McpHttpServer config for HTTP transport.

type McpServer

type McpServer interface{}

McpServer is a union of the two MCP transports.

type McpStdioServer

type McpStdioServer struct {
	Transport string            `json:"transport"` // always "stdio"
	Command   string            `json:"command"`
	Args      []string          `json:"args,omitempty"`
	Env       map[string]string `json:"env,omitempty"`
}

McpStdioServer config for stdio transport.

type Provider

type Provider interface {
	// Type returns the discriminator.
	Type() ProviderType
}

Provider is implemented by all concrete provider types.

func UnmarshalProvider

func UnmarshalProvider(data []byte) (Provider, error)

UnmarshalProvider inspects "provider_type" and returns the right struct.

type ProviderType

type ProviderType string

ProviderType is the kind of provider.

const (
	ProviderHTTP       ProviderType = "http"
	ProviderSSE        ProviderType = "sse"
	ProviderHTTPStream ProviderType = "http_stream"
	ProviderCLI        ProviderType = "cli"
	ProviderWebSocket  ProviderType = "websocket"
	ProviderGRPC       ProviderType = "grpc"
	ProviderGraphQL    ProviderType = "graphql"
	ProviderTCP        ProviderType = "tcp"
	ProviderUDP        ProviderType = "udp"
	ProviderWebRTC     ProviderType = "webrtc"
	ProviderMCP        ProviderType = "mcp"
)

type SSEProvider

type SSEProvider struct {
	BaseProvider
	URL          string            `json:"url"`
	EventType    *string           `json:"event_type,omitempty"`
	Reconnect    bool              `json:"reconnect"`     // default true
	RetryTimeout int               `json:"retry_timeout"` // ms, default 30000
	Auth         *Auth             `json:"auth,omitempty"`
	Headers      map[string]string `json:"headers,omitempty"`
	BodyField    *string           `json:"body_field,omitempty"`
	HeaderFields []string          `json:"header_fields,omitempty"`
}

SSEProvider represents Server-Sent Events.

type StreamableHttpProvider

type StreamableHttpProvider struct {
	BaseProvider
	URL          string            `json:"url"`
	HTTPMethod   string            `json:"http_method"`  // GET, POST
	ContentType  string            `json:"content_type"` // default application/octet-stream
	ChunkSize    int               `json:"chunk_size"`   // bytes, default 4096
	Timeout      int               `json:"timeout"`      // ms, default 60000
	Headers      map[string]string `json:"headers,omitempty"`
	Auth         *Auth             `json:"auth,omitempty"`
	BodyField    *string           `json:"body_field,omitempty"`
	HeaderFields []string          `json:"header_fields,omitempty"`
}

StreamableHttpProvider is HTTP chunked transfer encoding.

type TCPProvider

type TCPProvider struct {
	BaseProvider
	Host    string `json:"host"`
	Port    int    `json:"port"`
	Timeout int    `json:"timeout"` // ms, default 30000

}

TCPProvider represents a raw TCP socket.

type UDPProvider

type UDPProvider struct {
	BaseProvider
	Host    string `json:"host"`
	Port    int    `json:"port"`
	Timeout int    `json:"timeout"`
}

UDPProvider represents a UDP socket.

type WebRTCProvider

type WebRTCProvider struct {
	BaseProvider
	SignalingServer string `json:"signaling_server"`
	PeerID          string `json:"peer_id"`
	DataChannelName string `json:"data_channel_name"`
}

WebRTCProvider represents a WebRTC data channel.

type WebSocketProvider

type WebSocketProvider struct {
	BaseProvider
	URL          string            `json:"url"`
	Protocol     *string           `json:"protocol,omitempty"`
	KeepAlive    bool              `json:"keep_alive"`
	Auth         *Auth             `json:"auth,omitempty"`
	Headers      map[string]string `json:"headers,omitempty"`
	HeaderFields []string          `json:"header_fields,omitempty"`
}

WebSocketProvider represents a WebSocket connection.

Jump to

Keyboard shortcuts

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