Documentation
¶
Overview ¶
Package executor provides runtime execution capabilities for various AI service providers. This file implements the AI Studio executor that routes requests through a websocket-backed transport for the AI Studio provider.
Package executor provides runtime execution capabilities for various AI service providers. This file implements the Antigravity executor that proxies requests to the antigravity upstream using OAuth credentials.
Package executor provides runtime execution capabilities for various AI service providers. This file implements a Codex executor that uses the Responses API WebSocket transport.
Package executor provides runtime execution capabilities for various AI service providers. This file implements the Gemini CLI executor that talks to Cloud Code Assist endpoints using OAuth credentials from auth metadata.
Package executor provides runtime execution capabilities for various AI service providers. It includes stateless executors that handle API requests, streaming responses, token counting, and authentication refresh for different AI service providers.
Package executor provides runtime execution capabilities for various AI service providers. This file implements the Vertex AI Gemini executor that talks to Google Vertex AI endpoints using service account credentials or API keys.
Index ¶
- func FilterSSEUsageMetadata(payload []byte) []byte
- func StripUsageMetadataFromJSON(rawJSON []byte) ([]byte, bool)
- type AIStudioExecutor
- func (e *AIStudioExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *AIStudioExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *AIStudioExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *AIStudioExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *AIStudioExecutor) Identifier() string
- func (e *AIStudioExecutor) PrepareRequest(_ *http.Request, _ *cliproxyauth.Auth) error
- func (e *AIStudioExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type AntigravityExecutor
- func (e *AntigravityExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *AntigravityExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *AntigravityExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *AntigravityExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *AntigravityExecutor) Identifier() string
- func (e *AntigravityExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *AntigravityExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type ClaudeExecutor
- func (e *ClaudeExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *ClaudeExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *ClaudeExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *ClaudeExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *ClaudeExecutor) Identifier() string
- func (e *ClaudeExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *ClaudeExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type CodexAutoExecutor
- func (e *CodexAutoExecutor) CloseExecutionSession(sessionID string)
- func (e *CodexAutoExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *CodexAutoExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *CodexAutoExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (*cliproxyexecutor.StreamResult, error)
- func (e *CodexAutoExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *CodexAutoExecutor) Identifier() string
- func (e *CodexAutoExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *CodexAutoExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type CodexExecutor
- func (e *CodexExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *CodexExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *CodexExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *CodexExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *CodexExecutor) Identifier() string
- func (e *CodexExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *CodexExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type CodexWebsocketsExecutor
- func (e *CodexWebsocketsExecutor) CloseExecutionSession(sessionID string)
- func (e *CodexWebsocketsExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *CodexWebsocketsExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- type GeminiCLIExecutor
- func (e *GeminiCLIExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *GeminiCLIExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *GeminiCLIExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *GeminiCLIExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *GeminiCLIExecutor) Identifier() string
- func (e *GeminiCLIExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *GeminiCLIExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type GeminiExecutor
- func (e *GeminiExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *GeminiExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *GeminiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *GeminiExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *GeminiExecutor) Identifier() string
- func (e *GeminiExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *GeminiExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type GeminiVertexExecutor
- func (e *GeminiVertexExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *GeminiVertexExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *GeminiVertexExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (*cliproxyexecutor.StreamResult, error)
- func (e *GeminiVertexExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *GeminiVertexExecutor) Identifier() string
- func (e *GeminiVertexExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *GeminiVertexExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type IFlowExecutor
- func (e *IFlowExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *IFlowExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *IFlowExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *IFlowExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *IFlowExecutor) Identifier() string
- func (e *IFlowExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *IFlowExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type KimiExecutor
- func (e *KimiExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *KimiExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *KimiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *KimiExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *KimiExecutor) Identifier() string
- func (e *KimiExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *KimiExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type OpenAICompatExecutor
- func (e *OpenAICompatExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *OpenAICompatExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *OpenAICompatExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *OpenAICompatExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *OpenAICompatExecutor) Identifier() string
- func (e *OpenAICompatExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *OpenAICompatExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type QwenExecutor
- func (e *QwenExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (cliproxyexecutor.Response, error)
- func (e *QwenExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (resp cliproxyexecutor.Response, err error)
- func (e *QwenExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, ...) (_ *cliproxyexecutor.StreamResult, err error)
- func (e *QwenExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
- func (e *QwenExecutor) Identifier() string
- func (e *QwenExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
- func (e *QwenExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
- type SensitiveWordMatcher
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FilterSSEUsageMetadata ¶
FilterSSEUsageMetadata removes usageMetadata from SSE events that are not terminal (finishReason != "stop"). Stop chunks are left untouched. This function is shared between aistudio and antigravity executors.
func StripUsageMetadataFromJSON ¶
StripUsageMetadataFromJSON drops usageMetadata unless finishReason is present (terminal). It handles both formats: - Aistudio: candidates.0.finishReason - Antigravity: response.candidates.0.finishReason
Types ¶
type AIStudioExecutor ¶
type AIStudioExecutor struct {
// contains filtered or unexported fields
}
AIStudioExecutor routes AI Studio requests through a websocket-backed transport.
func NewAIStudioExecutor ¶
func NewAIStudioExecutor(cfg *config.Config, provider string, relay *wsrelay.Manager) *AIStudioExecutor
NewAIStudioExecutor creates a new AI Studio executor instance.
Parameters:
- cfg: The application configuration
- provider: The provider name
- relay: The websocket relay manager
Returns:
- *AIStudioExecutor: A new AI Studio executor instance
func (*AIStudioExecutor) CountTokens ¶
func (e *AIStudioExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
CountTokens counts tokens for the given request using the AI Studio API.
func (*AIStudioExecutor) Execute ¶
func (e *AIStudioExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming request to the AI Studio API.
func (*AIStudioExecutor) ExecuteStream ¶
func (e *AIStudioExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
ExecuteStream performs a streaming request to the AI Studio API.
func (*AIStudioExecutor) HttpRequest ¶
func (e *AIStudioExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest forwards an arbitrary HTTP request through the websocket relay.
func (*AIStudioExecutor) Identifier ¶
func (e *AIStudioExecutor) Identifier() string
Identifier returns the executor identifier.
func (*AIStudioExecutor) PrepareRequest ¶
func (e *AIStudioExecutor) PrepareRequest(_ *http.Request, _ *cliproxyauth.Auth) error
PrepareRequest prepares the HTTP request for execution (no-op for AI Studio).
func (*AIStudioExecutor) Refresh ¶
func (e *AIStudioExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes the authentication credentials (no-op for AI Studio).
type AntigravityExecutor ¶
type AntigravityExecutor struct {
// contains filtered or unexported fields
}
AntigravityExecutor proxies requests to the antigravity upstream.
func NewAntigravityExecutor ¶
func NewAntigravityExecutor(cfg *config.Config) *AntigravityExecutor
NewAntigravityExecutor creates a new Antigravity executor instance.
Parameters:
- cfg: The application configuration
Returns:
- *AntigravityExecutor: A new Antigravity executor instance
func (*AntigravityExecutor) CountTokens ¶
func (e *AntigravityExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
CountTokens counts tokens for the given request using the Antigravity API.
func (*AntigravityExecutor) Execute ¶
func (e *AntigravityExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming request to the Antigravity API.
func (*AntigravityExecutor) ExecuteStream ¶
func (e *AntigravityExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
ExecuteStream performs a streaming request to the Antigravity API.
func (*AntigravityExecutor) HttpRequest ¶
func (e *AntigravityExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Antigravity credentials into the request and executes it. It uses a whitelist approach: all incoming headers are stripped and only the minimum set required by the Antigravity protocol is explicitly set.
func (*AntigravityExecutor) Identifier ¶
func (e *AntigravityExecutor) Identifier() string
Identifier returns the executor identifier.
func (*AntigravityExecutor) PrepareRequest ¶
func (e *AntigravityExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Antigravity credentials into the outgoing HTTP request.
func (*AntigravityExecutor) Refresh ¶
func (e *AntigravityExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes the authentication credentials using the refresh token.
type ClaudeExecutor ¶
type ClaudeExecutor struct {
// contains filtered or unexported fields
}
ClaudeExecutor is a stateless executor for Anthropic Claude over the messages API. If api_key is unavailable on auth, it falls back to legacy via ClientAdapter.
func NewClaudeExecutor ¶
func NewClaudeExecutor(cfg *config.Config) *ClaudeExecutor
func (*ClaudeExecutor) CountTokens ¶
func (e *ClaudeExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*ClaudeExecutor) Execute ¶
func (e *ClaudeExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
func (*ClaudeExecutor) ExecuteStream ¶
func (e *ClaudeExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
func (*ClaudeExecutor) HttpRequest ¶
func (e *ClaudeExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Claude credentials into the request and executes it.
func (*ClaudeExecutor) Identifier ¶
func (e *ClaudeExecutor) Identifier() string
func (*ClaudeExecutor) PrepareRequest ¶
func (e *ClaudeExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Claude credentials into the outgoing HTTP request.
func (*ClaudeExecutor) Refresh ¶
func (e *ClaudeExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
type CodexAutoExecutor ¶
type CodexAutoExecutor struct {
// contains filtered or unexported fields
}
CodexAutoExecutor routes Codex requests to the websocket transport only when:
- The downstream transport is websocket, and
- The selected auth enables websockets.
For non-websocket downstream requests, it always uses the legacy HTTP implementation.
func NewCodexAutoExecutor ¶
func NewCodexAutoExecutor(cfg *config.Config) *CodexAutoExecutor
func (*CodexAutoExecutor) CloseExecutionSession ¶
func (e *CodexAutoExecutor) CloseExecutionSession(sessionID string)
func (*CodexAutoExecutor) CountTokens ¶
func (e *CodexAutoExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*CodexAutoExecutor) Execute ¶
func (e *CodexAutoExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*CodexAutoExecutor) ExecuteStream ¶
func (e *CodexAutoExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (*cliproxyexecutor.StreamResult, error)
func (*CodexAutoExecutor) HttpRequest ¶
func (e *CodexAutoExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
func (*CodexAutoExecutor) Identifier ¶
func (e *CodexAutoExecutor) Identifier() string
func (*CodexAutoExecutor) PrepareRequest ¶
func (e *CodexAutoExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
func (*CodexAutoExecutor) Refresh ¶
func (e *CodexAutoExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
type CodexExecutor ¶
type CodexExecutor struct {
// contains filtered or unexported fields
}
CodexExecutor is a stateless executor for Codex (OpenAI Responses API entrypoint). If api_key is unavailable on auth, it falls back to legacy via ClientAdapter.
func NewCodexExecutor ¶
func NewCodexExecutor(cfg *config.Config) *CodexExecutor
func (*CodexExecutor) CountTokens ¶
func (e *CodexExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*CodexExecutor) Execute ¶
func (e *CodexExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
func (*CodexExecutor) ExecuteStream ¶
func (e *CodexExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
func (*CodexExecutor) HttpRequest ¶
func (e *CodexExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Codex credentials into the request and executes it.
func (*CodexExecutor) Identifier ¶
func (e *CodexExecutor) Identifier() string
func (*CodexExecutor) PrepareRequest ¶
func (e *CodexExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Codex credentials into the outgoing HTTP request.
func (*CodexExecutor) Refresh ¶
func (e *CodexExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
type CodexWebsocketsExecutor ¶
type CodexWebsocketsExecutor struct {
*CodexExecutor
// contains filtered or unexported fields
}
CodexWebsocketsExecutor executes Codex Responses requests using a WebSocket transport.
It preserves the existing CodexExecutor HTTP implementation as a fallback for endpoints not available over WebSocket (e.g. /responses/compact) and for websocket upgrade failures.
func NewCodexWebsocketsExecutor ¶
func NewCodexWebsocketsExecutor(cfg *config.Config) *CodexWebsocketsExecutor
func (*CodexWebsocketsExecutor) CloseExecutionSession ¶
func (e *CodexWebsocketsExecutor) CloseExecutionSession(sessionID string)
func (*CodexWebsocketsExecutor) Execute ¶
func (e *CodexWebsocketsExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
func (*CodexWebsocketsExecutor) ExecuteStream ¶
func (e *CodexWebsocketsExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
type GeminiCLIExecutor ¶
type GeminiCLIExecutor struct {
// contains filtered or unexported fields
}
GeminiCLIExecutor talks to the Cloud Code Assist endpoint using OAuth credentials from auth metadata.
func NewGeminiCLIExecutor ¶
func NewGeminiCLIExecutor(cfg *config.Config) *GeminiCLIExecutor
NewGeminiCLIExecutor creates a new Gemini CLI executor instance.
Parameters:
- cfg: The application configuration
Returns:
- *GeminiCLIExecutor: A new Gemini CLI executor instance
func (*GeminiCLIExecutor) CountTokens ¶
func (e *GeminiCLIExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
CountTokens counts tokens for the given request using the Gemini CLI API.
func (*GeminiCLIExecutor) Execute ¶
func (e *GeminiCLIExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming request to the Gemini CLI API.
func (*GeminiCLIExecutor) ExecuteStream ¶
func (e *GeminiCLIExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
ExecuteStream performs a streaming request to the Gemini CLI API.
func (*GeminiCLIExecutor) HttpRequest ¶
func (e *GeminiCLIExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Gemini CLI credentials into the request and executes it.
func (*GeminiCLIExecutor) Identifier ¶
func (e *GeminiCLIExecutor) Identifier() string
Identifier returns the executor identifier.
func (*GeminiCLIExecutor) PrepareRequest ¶
func (e *GeminiCLIExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Gemini CLI credentials into the outgoing HTTP request.
func (*GeminiCLIExecutor) Refresh ¶
func (e *GeminiCLIExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes the authentication credentials (no-op for Gemini CLI).
type GeminiExecutor ¶
type GeminiExecutor struct {
// contains filtered or unexported fields
}
GeminiExecutor is a stateless executor for the official Gemini API using API keys. It handles both API key and OAuth bearer token authentication, supporting both regular and streaming requests to the Google Generative Language API.
func NewGeminiExecutor ¶
func NewGeminiExecutor(cfg *config.Config) *GeminiExecutor
NewGeminiExecutor creates a new Gemini executor instance.
Parameters:
- cfg: The application configuration
Returns:
- *GeminiExecutor: A new Gemini executor instance
func (*GeminiExecutor) CountTokens ¶
func (e *GeminiExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
CountTokens counts tokens for the given request using the Gemini API.
func (*GeminiExecutor) Execute ¶
func (e *GeminiExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming request to the Gemini API. It translates the request to Gemini format, sends it to the API, and translates the response back to the requested format.
Parameters:
- ctx: The context for the request
- auth: The authentication information
- req: The request to execute
- opts: Additional execution options
Returns:
- cliproxyexecutor.Response: The response from the API
- error: An error if the request fails
func (*GeminiExecutor) ExecuteStream ¶
func (e *GeminiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
ExecuteStream performs a streaming request to the Gemini API.
func (*GeminiExecutor) HttpRequest ¶
func (e *GeminiExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Gemini credentials into the request and executes it.
func (*GeminiExecutor) Identifier ¶
func (e *GeminiExecutor) Identifier() string
Identifier returns the executor identifier.
func (*GeminiExecutor) PrepareRequest ¶
func (e *GeminiExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Gemini credentials into the outgoing HTTP request.
func (*GeminiExecutor) Refresh ¶
func (e *GeminiExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes the authentication credentials (no-op for Gemini API key).
type GeminiVertexExecutor ¶
type GeminiVertexExecutor struct {
// contains filtered or unexported fields
}
GeminiVertexExecutor sends requests to Vertex AI Gemini endpoints using service account credentials.
func NewGeminiVertexExecutor ¶
func NewGeminiVertexExecutor(cfg *config.Config) *GeminiVertexExecutor
NewGeminiVertexExecutor creates a new Vertex AI Gemini executor instance.
Parameters:
- cfg: The application configuration
Returns:
- *GeminiVertexExecutor: A new Vertex AI Gemini executor instance
func (*GeminiVertexExecutor) CountTokens ¶
func (e *GeminiVertexExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
CountTokens counts tokens for the given request using the Vertex AI API.
func (*GeminiVertexExecutor) Execute ¶
func (e *GeminiVertexExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming request to the Vertex AI API.
func (*GeminiVertexExecutor) ExecuteStream ¶
func (e *GeminiVertexExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (*cliproxyexecutor.StreamResult, error)
ExecuteStream performs a streaming request to the Vertex AI API.
func (*GeminiVertexExecutor) HttpRequest ¶
func (e *GeminiVertexExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Vertex credentials into the request and executes it.
func (*GeminiVertexExecutor) Identifier ¶
func (e *GeminiVertexExecutor) Identifier() string
Identifier returns the executor identifier.
func (*GeminiVertexExecutor) PrepareRequest ¶
func (e *GeminiVertexExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Vertex credentials into the outgoing HTTP request.
func (*GeminiVertexExecutor) Refresh ¶
func (e *GeminiVertexExecutor) Refresh(_ context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes the authentication credentials (no-op for Vertex).
type IFlowExecutor ¶
type IFlowExecutor struct {
// contains filtered or unexported fields
}
IFlowExecutor executes OpenAI-compatible chat completions against the iFlow API using API keys derived from OAuth.
func NewIFlowExecutor ¶
func NewIFlowExecutor(cfg *config.Config) *IFlowExecutor
NewIFlowExecutor constructs a new executor instance.
func (*IFlowExecutor) CountTokens ¶
func (e *IFlowExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*IFlowExecutor) Execute ¶
func (e *IFlowExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming chat completion request.
func (*IFlowExecutor) ExecuteStream ¶
func (e *IFlowExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
ExecuteStream performs a streaming chat completion request.
func (*IFlowExecutor) HttpRequest ¶
func (e *IFlowExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects iFlow credentials into the request and executes it.
func (*IFlowExecutor) Identifier ¶
func (e *IFlowExecutor) Identifier() string
Identifier returns the provider key.
func (*IFlowExecutor) PrepareRequest ¶
func (e *IFlowExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects iFlow credentials into the outgoing HTTP request.
func (*IFlowExecutor) Refresh ¶
func (e *IFlowExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes OAuth tokens or cookie-based API keys and updates the stored API key.
type KimiExecutor ¶
type KimiExecutor struct {
ClaudeExecutor
// contains filtered or unexported fields
}
KimiExecutor is a stateless executor for Kimi API using OpenAI-compatible chat completions.
func NewKimiExecutor ¶
func NewKimiExecutor(cfg *config.Config) *KimiExecutor
NewKimiExecutor creates a new Kimi executor.
func (*KimiExecutor) CountTokens ¶
func (e *KimiExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
CountTokens estimates token count for Kimi requests.
func (*KimiExecutor) Execute ¶
func (e *KimiExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
Execute performs a non-streaming chat completion request to Kimi.
func (*KimiExecutor) ExecuteStream ¶
func (e *KimiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
ExecuteStream performs a streaming chat completion request to Kimi.
func (*KimiExecutor) HttpRequest ¶
func (e *KimiExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Kimi credentials into the request and executes it.
func (*KimiExecutor) Identifier ¶
func (e *KimiExecutor) Identifier() string
Identifier returns the executor identifier.
func (*KimiExecutor) PrepareRequest ¶
func (e *KimiExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Kimi credentials into the outgoing HTTP request.
func (*KimiExecutor) Refresh ¶
func (e *KimiExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh refreshes the Kimi token using the refresh token.
type OpenAICompatExecutor ¶
type OpenAICompatExecutor struct {
// contains filtered or unexported fields
}
OpenAICompatExecutor implements a stateless executor for OpenAI-compatible providers. It performs request/response translation and executes against the provider base URL using per-auth credentials (API key) and per-auth HTTP transport (proxy) from context.
func NewOpenAICompatExecutor ¶
func NewOpenAICompatExecutor(provider string, cfg *config.Config) *OpenAICompatExecutor
NewOpenAICompatExecutor creates an executor bound to a provider key (e.g., "openrouter").
func (*OpenAICompatExecutor) CountTokens ¶
func (e *OpenAICompatExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*OpenAICompatExecutor) Execute ¶
func (e *OpenAICompatExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
func (*OpenAICompatExecutor) ExecuteStream ¶
func (e *OpenAICompatExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
func (*OpenAICompatExecutor) HttpRequest ¶
func (e *OpenAICompatExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects OpenAI-compatible credentials into the request and executes it.
func (*OpenAICompatExecutor) Identifier ¶
func (e *OpenAICompatExecutor) Identifier() string
Identifier implements cliproxyauth.ProviderExecutor.
func (*OpenAICompatExecutor) PrepareRequest ¶
func (e *OpenAICompatExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects OpenAI-compatible credentials into the outgoing HTTP request.
func (*OpenAICompatExecutor) Refresh ¶
func (e *OpenAICompatExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
Refresh is a no-op for API-key based compatibility providers.
type QwenExecutor ¶
type QwenExecutor struct {
// contains filtered or unexported fields
}
QwenExecutor is a stateless executor for Qwen Code using OpenAI-compatible chat completions. If access token is unavailable, it falls back to legacy via ClientAdapter.
func NewQwenExecutor ¶
func NewQwenExecutor(cfg *config.Config) *QwenExecutor
func (*QwenExecutor) CountTokens ¶
func (e *QwenExecutor) CountTokens(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (cliproxyexecutor.Response, error)
func (*QwenExecutor) Execute ¶
func (e *QwenExecutor) Execute(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (resp cliproxyexecutor.Response, err error)
func (*QwenExecutor) ExecuteStream ¶
func (e *QwenExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.Auth, req cliproxyexecutor.Request, opts cliproxyexecutor.Options) (_ *cliproxyexecutor.StreamResult, err error)
func (*QwenExecutor) HttpRequest ¶
func (e *QwenExecutor) HttpRequest(ctx context.Context, auth *cliproxyauth.Auth, req *http.Request) (*http.Response, error)
HttpRequest injects Qwen credentials into the request and executes it.
func (*QwenExecutor) Identifier ¶
func (e *QwenExecutor) Identifier() string
func (*QwenExecutor) PrepareRequest ¶
func (e *QwenExecutor) PrepareRequest(req *http.Request, auth *cliproxyauth.Auth) error
PrepareRequest injects Qwen credentials into the outgoing HTTP request.
func (*QwenExecutor) Refresh ¶
func (e *QwenExecutor) Refresh(ctx context.Context, auth *cliproxyauth.Auth) (*cliproxyauth.Auth, error)
type SensitiveWordMatcher ¶
type SensitiveWordMatcher struct {
// contains filtered or unexported fields
}
SensitiveWordMatcher holds the compiled regex for matching sensitive words.
Source Files
¶
- aistudio_executor.go
- antigravity_executor.go
- cache_helpers.go
- claude_device_profile.go
- claude_executor.go
- cloak_obfuscate.go
- cloak_utils.go
- codex_executor.go
- codex_websockets_executor.go
- gemini_cli_executor.go
- gemini_executor.go
- gemini_vertex_executor.go
- iflow_executor.go
- kimi_executor.go
- logging_helpers.go
- openai_compat_executor.go
- payload_helpers.go
- proxy_helpers.go
- qwen_executor.go
- thinking_providers.go
- token_helpers.go
- usage_helpers.go
- user_id_cache.go