messages

package
v1.1.2 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2026 License: AGPL-3.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BlockingInterception

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

func NewBlockingInterceptor

func NewBlockingInterceptor(
	id uuid.UUID,
	reqPayload RequestPayload,
	providerName string,
	cfg config.Anthropic,
	bedrockCfg *config.AWSBedrock,
	clientHeaders http.Header,
	authHeaderName string,
	tracer trace.Tracer,
	cred intercept.CredentialInfo,
) *BlockingInterception

func (*BlockingInterception) CorrelatingToolCallID added in v1.1.0

func (i *BlockingInterception) CorrelatingToolCallID() *string

func (*BlockingInterception) Credential added in v1.1.2

func (i *BlockingInterception) Credential() intercept.CredentialInfo

func (*BlockingInterception) ID

func (i *BlockingInterception) ID() uuid.UUID

func (*BlockingInterception) Model

func (i *BlockingInterception) Model() string

func (*BlockingInterception) ProcessRequest

func (i *BlockingInterception) ProcessRequest(w http.ResponseWriter, r *http.Request) (outErr error)

func (*BlockingInterception) Setup

func (i *BlockingInterception) Setup(logger slog.Logger, rec recorder.Recorder, mcpProxy mcp.ServerProxier)

func (*BlockingInterception) Streaming

func (*BlockingInterception) Streaming() bool

func (*BlockingInterception) TraceAttributes

func (i *BlockingInterception) TraceAttributes(r *http.Request) []attribute.KeyValue

type RequestPayload added in v1.1.2

type RequestPayload []byte

RequestPayload is raw JSON bytes of an Anthropic Messages API request. Methods provide package-specific reads and rewrites while preserving the original body for upstream pass-through.

func NewRequestPayload added in v1.1.2

func NewRequestPayload(raw []byte) (RequestPayload, error)

func (RequestPayload) Stream added in v1.1.2

func (p RequestPayload) Stream() bool

type StreamingInterception

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

func NewStreamingInterceptor

func NewStreamingInterceptor(
	id uuid.UUID,
	reqPayload RequestPayload,
	providerName string,
	cfg config.Anthropic,
	bedrockCfg *config.AWSBedrock,
	clientHeaders http.Header,
	authHeaderName string,
	tracer trace.Tracer,
	cred intercept.CredentialInfo,
) *StreamingInterception

func (*StreamingInterception) CorrelatingToolCallID added in v1.1.0

func (i *StreamingInterception) CorrelatingToolCallID() *string

func (*StreamingInterception) Credential added in v1.1.2

func (i *StreamingInterception) Credential() intercept.CredentialInfo

func (*StreamingInterception) ID

func (i *StreamingInterception) ID() uuid.UUID

func (*StreamingInterception) Model

func (i *StreamingInterception) Model() string

func (*StreamingInterception) ProcessRequest

func (i *StreamingInterception) ProcessRequest(w http.ResponseWriter, r *http.Request) (outErr error)

ProcessRequest handles a request to /v1/messages. This API has a state-machine behind it, which is described in https://docs.claude.com/en/docs/build-with-claude/streaming#event-types.

Each stream uses the following event flow: - `message_start`: contains a Message object with empty content. - A series of content blocks, each of which have a `content_block_start`, one or more `content_block_delta` events, and a `content_block_stop` event. - Each content block will have an index that corresponds to its index in the final Message content array. - One or more `message_delta` events, indicating top-level changes to the final Message object. - A final `message_stop` event.

It will inject any tools which have been provided by the mcp.ServerProxier.

When a response from the server includes an event indicating that a tool must be invoked, a conditional flow takes place:

a) if the tool is not injected (i.e. defined by the client), relay the event unmodified b) if the tool is injected, it will be invoked by the mcp.ServerProxier in the remote MCP server, and its results relayed to the SERVER. The response from the server will be handled synchronously, and this loop can continue until all injected tool invocations are completed and the response is relayed to the client.

func (*StreamingInterception) Setup

func (i *StreamingInterception) Setup(logger slog.Logger, rec recorder.Recorder, mcpProxy mcp.ServerProxier)

func (*StreamingInterception) Streaming

func (*StreamingInterception) Streaming() bool

func (*StreamingInterception) TraceAttributes

func (i *StreamingInterception) TraceAttributes(r *http.Request) []attribute.KeyValue

Jump to

Keyboard shortcuts

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