- Injected HTTPUpstream service into LanguageServerService - Implemented real upstream API requests via callUpstreamAPI() - Added SSE streaming response handler for streaming messages - Complete error handling and structured logging - Support for masquerading headers (User-Agent, Authorization) - Request/response body marshaling and streaming - Thread-safe session management with metadata storage Core implementation: - LanguageServerService now depends on HTTPUpstream for all HTTP operations - HTTP requests sent to configured Anthropic API endpoint - SSE event parsing and forwarding to clients via update channels - Proper context and timeout handling for streaming operations Phase 1 Status: 95% complete - Upstream API integration: ✅ DONE - Wire dependency injection: ⏳ TODO - Masquerading layer: ⏳ TODO (Phase 2) Next steps: 1. Add Wire provider for LanguageServerService 2. Register HTTP routes in application startup 3. Implement device fingerprinting and token refresh 4. End-to-end testing with real Anthropic API Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
500 lines
33 KiB
Go
500 lines
33 KiB
Go
// Code generated by protoc-gen-connect-go. DO NOT EDIT.
|
|
//
|
|
// Source: language_server_simplified.proto
|
|
|
|
package language_server_pbconnect
|
|
|
|
import (
|
|
connect "connectrpc.com/connect"
|
|
context "context"
|
|
errors "errors"
|
|
language_server_pb "github.com/Wei-Shaw/sub2api/internal/gen/language_server_pb"
|
|
http "net/http"
|
|
strings "strings"
|
|
)
|
|
|
|
// This is a compile-time assertion to ensure that this generated file and the connect package are
|
|
// compatible. If you get a compiler error that this constant is not defined, this code was
|
|
// generated with a version of connect newer than the one compiled into your binary. You can fix the
|
|
// problem by either regenerating this code with an older version of connect or updating the connect
|
|
// version compiled into your binary.
|
|
const _ = connect.IsAtLeastVersion1_13_0
|
|
|
|
const (
|
|
// LanguageServerServiceName is the fully-qualified name of the LanguageServerService service.
|
|
LanguageServerServiceName = "exa.language_server_pb.LanguageServerService"
|
|
)
|
|
|
|
// These constants are the fully-qualified names of the RPCs defined in this package. They're
|
|
// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.
|
|
//
|
|
// Note that these are different from the fully-qualified method names used by
|
|
// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
|
|
// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
|
|
// period.
|
|
const (
|
|
// LanguageServerServiceStartCascadeProcedure is the fully-qualified name of the
|
|
// LanguageServerService's StartCascade RPC.
|
|
LanguageServerServiceStartCascadeProcedure = "/exa.language_server_pb.LanguageServerService/StartCascade"
|
|
// LanguageServerServiceSendUserCascadeMessageProcedure is the fully-qualified name of the
|
|
// LanguageServerService's SendUserCascadeMessage RPC.
|
|
LanguageServerServiceSendUserCascadeMessageProcedure = "/exa.language_server_pb.LanguageServerService/SendUserCascadeMessage"
|
|
// LanguageServerServiceCancelCascadeInvocationProcedure is the fully-qualified name of the
|
|
// LanguageServerService's CancelCascadeInvocation RPC.
|
|
LanguageServerServiceCancelCascadeInvocationProcedure = "/exa.language_server_pb.LanguageServerService/CancelCascadeInvocation"
|
|
// LanguageServerServiceAcknowledgeCascadeCodeEditProcedure is the fully-qualified name of the
|
|
// LanguageServerService's AcknowledgeCascadeCodeEdit RPC.
|
|
LanguageServerServiceAcknowledgeCascadeCodeEditProcedure = "/exa.language_server_pb.LanguageServerService/AcknowledgeCascadeCodeEdit"
|
|
// LanguageServerServiceGetCascadeModelConfigsProcedure is the fully-qualified name of the
|
|
// LanguageServerService's GetCascadeModelConfigs RPC.
|
|
LanguageServerServiceGetCascadeModelConfigsProcedure = "/exa.language_server_pb.LanguageServerService/GetCascadeModelConfigs"
|
|
// LanguageServerServiceGetCommandModelConfigsProcedure is the fully-qualified name of the
|
|
// LanguageServerService's GetCommandModelConfigs RPC.
|
|
LanguageServerServiceGetCommandModelConfigsProcedure = "/exa.language_server_pb.LanguageServerService/GetCommandModelConfigs"
|
|
// LanguageServerServiceReadFileProcedure is the fully-qualified name of the LanguageServerService's
|
|
// ReadFile RPC.
|
|
LanguageServerServiceReadFileProcedure = "/exa.language_server_pb.LanguageServerService/ReadFile"
|
|
// LanguageServerServiceWriteFileProcedure is the fully-qualified name of the
|
|
// LanguageServerService's WriteFile RPC.
|
|
LanguageServerServiceWriteFileProcedure = "/exa.language_server_pb.LanguageServerService/WriteFile"
|
|
// LanguageServerServiceReadDirProcedure is the fully-qualified name of the LanguageServerService's
|
|
// ReadDir RPC.
|
|
LanguageServerServiceReadDirProcedure = "/exa.language_server_pb.LanguageServerService/ReadDir"
|
|
// LanguageServerServiceDeleteFileOrDirectoryProcedure is the fully-qualified name of the
|
|
// LanguageServerService's DeleteFileOrDirectory RPC.
|
|
LanguageServerServiceDeleteFileOrDirectoryProcedure = "/exa.language_server_pb.LanguageServerService/DeleteFileOrDirectory"
|
|
// LanguageServerServiceStatUriProcedure is the fully-qualified name of the LanguageServerService's
|
|
// StatUri RPC.
|
|
LanguageServerServiceStatUriProcedure = "/exa.language_server_pb.LanguageServerService/StatUri"
|
|
// LanguageServerServiceWatchDirectoryProcedure is the fully-qualified name of the
|
|
// LanguageServerService's WatchDirectory RPC.
|
|
LanguageServerServiceWatchDirectoryProcedure = "/exa.language_server_pb.LanguageServerService/WatchDirectory"
|
|
// LanguageServerServiceHeartbeatProcedure is the fully-qualified name of the
|
|
// LanguageServerService's Heartbeat RPC.
|
|
LanguageServerServiceHeartbeatProcedure = "/exa.language_server_pb.LanguageServerService/Heartbeat"
|
|
// LanguageServerServiceGetStatusProcedure is the fully-qualified name of the
|
|
// LanguageServerService's GetStatus RPC.
|
|
LanguageServerServiceGetStatusProcedure = "/exa.language_server_pb.LanguageServerService/GetStatus"
|
|
)
|
|
|
|
// LanguageServerServiceClient is a client for the exa.language_server_pb.LanguageServerService
|
|
// service.
|
|
type LanguageServerServiceClient interface {
|
|
// Cascade 流程
|
|
StartCascade(context.Context, *connect.Request[language_server_pb.StartCascadeRequest]) (*connect.Response[language_server_pb.StartCascadeResponse], error)
|
|
SendUserCascadeMessage(context.Context, *connect.Request[language_server_pb.SendUserCascadeMessageRequest]) (*connect.ServerStreamForClient[language_server_pb.CascadeReactiveUpdate], error)
|
|
CancelCascadeInvocation(context.Context, *connect.Request[language_server_pb.CancelCascadeInvocationRequest]) (*connect.Response[language_server_pb.CancelCascadeInvocationResponse], error)
|
|
AcknowledgeCascadeCodeEdit(context.Context, *connect.Request[language_server_pb.AcknowledgeCascadeCodeEditRequest]) (*connect.Response[language_server_pb.AcknowledgeCascadeCodeEditResponse], error)
|
|
// 模型配置
|
|
GetCascadeModelConfigs(context.Context, *connect.Request[language_server_pb.GetCascadeModelConfigsRequest]) (*connect.Response[language_server_pb.GetCascadeModelConfigsResponse], error)
|
|
GetCommandModelConfigs(context.Context, *connect.Request[language_server_pb.GetCommandModelConfigsRequest]) (*connect.Response[language_server_pb.GetCommandModelConfigsResponse], error)
|
|
// 文件操作
|
|
ReadFile(context.Context, *connect.Request[language_server_pb.ReadFileRequest]) (*connect.Response[language_server_pb.ReadFileResponse], error)
|
|
WriteFile(context.Context, *connect.Request[language_server_pb.WriteFileRequest]) (*connect.Response[language_server_pb.WriteFileResponse], error)
|
|
ReadDir(context.Context, *connect.Request[language_server_pb.ReadDirRequest]) (*connect.Response[language_server_pb.ReadDirResponse], error)
|
|
DeleteFileOrDirectory(context.Context, *connect.Request[language_server_pb.DeleteFileOrDirectoryRequest]) (*connect.Response[language_server_pb.DeleteFileOrDirectoryResponse], error)
|
|
StatUri(context.Context, *connect.Request[language_server_pb.StatUriRequest]) (*connect.Response[language_server_pb.StatUriResponse], error)
|
|
WatchDirectory(context.Context, *connect.Request[language_server_pb.WatchDirectoryRequest]) (*connect.ServerStreamForClient[language_server_pb.WatchDirectoryResponse], error)
|
|
// 健康检查
|
|
Heartbeat(context.Context, *connect.Request[language_server_pb.HeartbeatRequest]) (*connect.Response[language_server_pb.HeartbeatResponse], error)
|
|
GetStatus(context.Context, *connect.Request[language_server_pb.GetStatusRequest]) (*connect.Response[language_server_pb.GetStatusResponse], error)
|
|
}
|
|
|
|
// NewLanguageServerServiceClient constructs a client for the
|
|
// exa.language_server_pb.LanguageServerService service. By default, it uses the Connect protocol
|
|
// with the binary Protobuf Codec, asks for gzipped responses, and sends uncompressed requests. To
|
|
// use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or connect.WithGRPCWeb()
|
|
// options.
|
|
//
|
|
// The URL supplied here should be the base URL for the Connect or gRPC server (for example,
|
|
// http://api.acme.com or https://acme.com/grpc).
|
|
func NewLanguageServerServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) LanguageServerServiceClient {
|
|
baseURL = strings.TrimRight(baseURL, "/")
|
|
languageServerServiceMethods := language_server_pb.File_language_server_simplified_proto.Services().ByName("LanguageServerService").Methods()
|
|
return &languageServerServiceClient{
|
|
startCascade: connect.NewClient[language_server_pb.StartCascadeRequest, language_server_pb.StartCascadeResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceStartCascadeProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("StartCascade")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
sendUserCascadeMessage: connect.NewClient[language_server_pb.SendUserCascadeMessageRequest, language_server_pb.CascadeReactiveUpdate](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceSendUserCascadeMessageProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("SendUserCascadeMessage")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
cancelCascadeInvocation: connect.NewClient[language_server_pb.CancelCascadeInvocationRequest, language_server_pb.CancelCascadeInvocationResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceCancelCascadeInvocationProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("CancelCascadeInvocation")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
acknowledgeCascadeCodeEdit: connect.NewClient[language_server_pb.AcknowledgeCascadeCodeEditRequest, language_server_pb.AcknowledgeCascadeCodeEditResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceAcknowledgeCascadeCodeEditProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("AcknowledgeCascadeCodeEdit")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
getCascadeModelConfigs: connect.NewClient[language_server_pb.GetCascadeModelConfigsRequest, language_server_pb.GetCascadeModelConfigsResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceGetCascadeModelConfigsProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("GetCascadeModelConfigs")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
getCommandModelConfigs: connect.NewClient[language_server_pb.GetCommandModelConfigsRequest, language_server_pb.GetCommandModelConfigsResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceGetCommandModelConfigsProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("GetCommandModelConfigs")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
readFile: connect.NewClient[language_server_pb.ReadFileRequest, language_server_pb.ReadFileResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceReadFileProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("ReadFile")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
writeFile: connect.NewClient[language_server_pb.WriteFileRequest, language_server_pb.WriteFileResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceWriteFileProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("WriteFile")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
readDir: connect.NewClient[language_server_pb.ReadDirRequest, language_server_pb.ReadDirResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceReadDirProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("ReadDir")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
deleteFileOrDirectory: connect.NewClient[language_server_pb.DeleteFileOrDirectoryRequest, language_server_pb.DeleteFileOrDirectoryResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceDeleteFileOrDirectoryProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("DeleteFileOrDirectory")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
statUri: connect.NewClient[language_server_pb.StatUriRequest, language_server_pb.StatUriResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceStatUriProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("StatUri")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
watchDirectory: connect.NewClient[language_server_pb.WatchDirectoryRequest, language_server_pb.WatchDirectoryResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceWatchDirectoryProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("WatchDirectory")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
heartbeat: connect.NewClient[language_server_pb.HeartbeatRequest, language_server_pb.HeartbeatResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceHeartbeatProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("Heartbeat")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
getStatus: connect.NewClient[language_server_pb.GetStatusRequest, language_server_pb.GetStatusResponse](
|
|
httpClient,
|
|
baseURL+LanguageServerServiceGetStatusProcedure,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("GetStatus")),
|
|
connect.WithClientOptions(opts...),
|
|
),
|
|
}
|
|
}
|
|
|
|
// languageServerServiceClient implements LanguageServerServiceClient.
|
|
type languageServerServiceClient struct {
|
|
startCascade *connect.Client[language_server_pb.StartCascadeRequest, language_server_pb.StartCascadeResponse]
|
|
sendUserCascadeMessage *connect.Client[language_server_pb.SendUserCascadeMessageRequest, language_server_pb.CascadeReactiveUpdate]
|
|
cancelCascadeInvocation *connect.Client[language_server_pb.CancelCascadeInvocationRequest, language_server_pb.CancelCascadeInvocationResponse]
|
|
acknowledgeCascadeCodeEdit *connect.Client[language_server_pb.AcknowledgeCascadeCodeEditRequest, language_server_pb.AcknowledgeCascadeCodeEditResponse]
|
|
getCascadeModelConfigs *connect.Client[language_server_pb.GetCascadeModelConfigsRequest, language_server_pb.GetCascadeModelConfigsResponse]
|
|
getCommandModelConfigs *connect.Client[language_server_pb.GetCommandModelConfigsRequest, language_server_pb.GetCommandModelConfigsResponse]
|
|
readFile *connect.Client[language_server_pb.ReadFileRequest, language_server_pb.ReadFileResponse]
|
|
writeFile *connect.Client[language_server_pb.WriteFileRequest, language_server_pb.WriteFileResponse]
|
|
readDir *connect.Client[language_server_pb.ReadDirRequest, language_server_pb.ReadDirResponse]
|
|
deleteFileOrDirectory *connect.Client[language_server_pb.DeleteFileOrDirectoryRequest, language_server_pb.DeleteFileOrDirectoryResponse]
|
|
statUri *connect.Client[language_server_pb.StatUriRequest, language_server_pb.StatUriResponse]
|
|
watchDirectory *connect.Client[language_server_pb.WatchDirectoryRequest, language_server_pb.WatchDirectoryResponse]
|
|
heartbeat *connect.Client[language_server_pb.HeartbeatRequest, language_server_pb.HeartbeatResponse]
|
|
getStatus *connect.Client[language_server_pb.GetStatusRequest, language_server_pb.GetStatusResponse]
|
|
}
|
|
|
|
// StartCascade calls exa.language_server_pb.LanguageServerService.StartCascade.
|
|
func (c *languageServerServiceClient) StartCascade(ctx context.Context, req *connect.Request[language_server_pb.StartCascadeRequest]) (*connect.Response[language_server_pb.StartCascadeResponse], error) {
|
|
return c.startCascade.CallUnary(ctx, req)
|
|
}
|
|
|
|
// SendUserCascadeMessage calls exa.language_server_pb.LanguageServerService.SendUserCascadeMessage.
|
|
func (c *languageServerServiceClient) SendUserCascadeMessage(ctx context.Context, req *connect.Request[language_server_pb.SendUserCascadeMessageRequest]) (*connect.ServerStreamForClient[language_server_pb.CascadeReactiveUpdate], error) {
|
|
return c.sendUserCascadeMessage.CallServerStream(ctx, req)
|
|
}
|
|
|
|
// CancelCascadeInvocation calls
|
|
// exa.language_server_pb.LanguageServerService.CancelCascadeInvocation.
|
|
func (c *languageServerServiceClient) CancelCascadeInvocation(ctx context.Context, req *connect.Request[language_server_pb.CancelCascadeInvocationRequest]) (*connect.Response[language_server_pb.CancelCascadeInvocationResponse], error) {
|
|
return c.cancelCascadeInvocation.CallUnary(ctx, req)
|
|
}
|
|
|
|
// AcknowledgeCascadeCodeEdit calls
|
|
// exa.language_server_pb.LanguageServerService.AcknowledgeCascadeCodeEdit.
|
|
func (c *languageServerServiceClient) AcknowledgeCascadeCodeEdit(ctx context.Context, req *connect.Request[language_server_pb.AcknowledgeCascadeCodeEditRequest]) (*connect.Response[language_server_pb.AcknowledgeCascadeCodeEditResponse], error) {
|
|
return c.acknowledgeCascadeCodeEdit.CallUnary(ctx, req)
|
|
}
|
|
|
|
// GetCascadeModelConfigs calls exa.language_server_pb.LanguageServerService.GetCascadeModelConfigs.
|
|
func (c *languageServerServiceClient) GetCascadeModelConfigs(ctx context.Context, req *connect.Request[language_server_pb.GetCascadeModelConfigsRequest]) (*connect.Response[language_server_pb.GetCascadeModelConfigsResponse], error) {
|
|
return c.getCascadeModelConfigs.CallUnary(ctx, req)
|
|
}
|
|
|
|
// GetCommandModelConfigs calls exa.language_server_pb.LanguageServerService.GetCommandModelConfigs.
|
|
func (c *languageServerServiceClient) GetCommandModelConfigs(ctx context.Context, req *connect.Request[language_server_pb.GetCommandModelConfigsRequest]) (*connect.Response[language_server_pb.GetCommandModelConfigsResponse], error) {
|
|
return c.getCommandModelConfigs.CallUnary(ctx, req)
|
|
}
|
|
|
|
// ReadFile calls exa.language_server_pb.LanguageServerService.ReadFile.
|
|
func (c *languageServerServiceClient) ReadFile(ctx context.Context, req *connect.Request[language_server_pb.ReadFileRequest]) (*connect.Response[language_server_pb.ReadFileResponse], error) {
|
|
return c.readFile.CallUnary(ctx, req)
|
|
}
|
|
|
|
// WriteFile calls exa.language_server_pb.LanguageServerService.WriteFile.
|
|
func (c *languageServerServiceClient) WriteFile(ctx context.Context, req *connect.Request[language_server_pb.WriteFileRequest]) (*connect.Response[language_server_pb.WriteFileResponse], error) {
|
|
return c.writeFile.CallUnary(ctx, req)
|
|
}
|
|
|
|
// ReadDir calls exa.language_server_pb.LanguageServerService.ReadDir.
|
|
func (c *languageServerServiceClient) ReadDir(ctx context.Context, req *connect.Request[language_server_pb.ReadDirRequest]) (*connect.Response[language_server_pb.ReadDirResponse], error) {
|
|
return c.readDir.CallUnary(ctx, req)
|
|
}
|
|
|
|
// DeleteFileOrDirectory calls exa.language_server_pb.LanguageServerService.DeleteFileOrDirectory.
|
|
func (c *languageServerServiceClient) DeleteFileOrDirectory(ctx context.Context, req *connect.Request[language_server_pb.DeleteFileOrDirectoryRequest]) (*connect.Response[language_server_pb.DeleteFileOrDirectoryResponse], error) {
|
|
return c.deleteFileOrDirectory.CallUnary(ctx, req)
|
|
}
|
|
|
|
// StatUri calls exa.language_server_pb.LanguageServerService.StatUri.
|
|
func (c *languageServerServiceClient) StatUri(ctx context.Context, req *connect.Request[language_server_pb.StatUriRequest]) (*connect.Response[language_server_pb.StatUriResponse], error) {
|
|
return c.statUri.CallUnary(ctx, req)
|
|
}
|
|
|
|
// WatchDirectory calls exa.language_server_pb.LanguageServerService.WatchDirectory.
|
|
func (c *languageServerServiceClient) WatchDirectory(ctx context.Context, req *connect.Request[language_server_pb.WatchDirectoryRequest]) (*connect.ServerStreamForClient[language_server_pb.WatchDirectoryResponse], error) {
|
|
return c.watchDirectory.CallServerStream(ctx, req)
|
|
}
|
|
|
|
// Heartbeat calls exa.language_server_pb.LanguageServerService.Heartbeat.
|
|
func (c *languageServerServiceClient) Heartbeat(ctx context.Context, req *connect.Request[language_server_pb.HeartbeatRequest]) (*connect.Response[language_server_pb.HeartbeatResponse], error) {
|
|
return c.heartbeat.CallUnary(ctx, req)
|
|
}
|
|
|
|
// GetStatus calls exa.language_server_pb.LanguageServerService.GetStatus.
|
|
func (c *languageServerServiceClient) GetStatus(ctx context.Context, req *connect.Request[language_server_pb.GetStatusRequest]) (*connect.Response[language_server_pb.GetStatusResponse], error) {
|
|
return c.getStatus.CallUnary(ctx, req)
|
|
}
|
|
|
|
// LanguageServerServiceHandler is an implementation of the
|
|
// exa.language_server_pb.LanguageServerService service.
|
|
type LanguageServerServiceHandler interface {
|
|
// Cascade 流程
|
|
StartCascade(context.Context, *connect.Request[language_server_pb.StartCascadeRequest]) (*connect.Response[language_server_pb.StartCascadeResponse], error)
|
|
SendUserCascadeMessage(context.Context, *connect.Request[language_server_pb.SendUserCascadeMessageRequest], *connect.ServerStream[language_server_pb.CascadeReactiveUpdate]) error
|
|
CancelCascadeInvocation(context.Context, *connect.Request[language_server_pb.CancelCascadeInvocationRequest]) (*connect.Response[language_server_pb.CancelCascadeInvocationResponse], error)
|
|
AcknowledgeCascadeCodeEdit(context.Context, *connect.Request[language_server_pb.AcknowledgeCascadeCodeEditRequest]) (*connect.Response[language_server_pb.AcknowledgeCascadeCodeEditResponse], error)
|
|
// 模型配置
|
|
GetCascadeModelConfigs(context.Context, *connect.Request[language_server_pb.GetCascadeModelConfigsRequest]) (*connect.Response[language_server_pb.GetCascadeModelConfigsResponse], error)
|
|
GetCommandModelConfigs(context.Context, *connect.Request[language_server_pb.GetCommandModelConfigsRequest]) (*connect.Response[language_server_pb.GetCommandModelConfigsResponse], error)
|
|
// 文件操作
|
|
ReadFile(context.Context, *connect.Request[language_server_pb.ReadFileRequest]) (*connect.Response[language_server_pb.ReadFileResponse], error)
|
|
WriteFile(context.Context, *connect.Request[language_server_pb.WriteFileRequest]) (*connect.Response[language_server_pb.WriteFileResponse], error)
|
|
ReadDir(context.Context, *connect.Request[language_server_pb.ReadDirRequest]) (*connect.Response[language_server_pb.ReadDirResponse], error)
|
|
DeleteFileOrDirectory(context.Context, *connect.Request[language_server_pb.DeleteFileOrDirectoryRequest]) (*connect.Response[language_server_pb.DeleteFileOrDirectoryResponse], error)
|
|
StatUri(context.Context, *connect.Request[language_server_pb.StatUriRequest]) (*connect.Response[language_server_pb.StatUriResponse], error)
|
|
WatchDirectory(context.Context, *connect.Request[language_server_pb.WatchDirectoryRequest], *connect.ServerStream[language_server_pb.WatchDirectoryResponse]) error
|
|
// 健康检查
|
|
Heartbeat(context.Context, *connect.Request[language_server_pb.HeartbeatRequest]) (*connect.Response[language_server_pb.HeartbeatResponse], error)
|
|
GetStatus(context.Context, *connect.Request[language_server_pb.GetStatusRequest]) (*connect.Response[language_server_pb.GetStatusResponse], error)
|
|
}
|
|
|
|
// NewLanguageServerServiceHandler builds an HTTP handler from the service implementation. It
|
|
// returns the path on which to mount the handler and the handler itself.
|
|
//
|
|
// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf
|
|
// and JSON codecs. They also support gzip compression.
|
|
func NewLanguageServerServiceHandler(svc LanguageServerServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
|
|
languageServerServiceMethods := language_server_pb.File_language_server_simplified_proto.Services().ByName("LanguageServerService").Methods()
|
|
languageServerServiceStartCascadeHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceStartCascadeProcedure,
|
|
svc.StartCascade,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("StartCascade")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceSendUserCascadeMessageHandler := connect.NewServerStreamHandler(
|
|
LanguageServerServiceSendUserCascadeMessageProcedure,
|
|
svc.SendUserCascadeMessage,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("SendUserCascadeMessage")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceCancelCascadeInvocationHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceCancelCascadeInvocationProcedure,
|
|
svc.CancelCascadeInvocation,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("CancelCascadeInvocation")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceAcknowledgeCascadeCodeEditHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceAcknowledgeCascadeCodeEditProcedure,
|
|
svc.AcknowledgeCascadeCodeEdit,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("AcknowledgeCascadeCodeEdit")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceGetCascadeModelConfigsHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceGetCascadeModelConfigsProcedure,
|
|
svc.GetCascadeModelConfigs,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("GetCascadeModelConfigs")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceGetCommandModelConfigsHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceGetCommandModelConfigsProcedure,
|
|
svc.GetCommandModelConfigs,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("GetCommandModelConfigs")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceReadFileHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceReadFileProcedure,
|
|
svc.ReadFile,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("ReadFile")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceWriteFileHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceWriteFileProcedure,
|
|
svc.WriteFile,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("WriteFile")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceReadDirHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceReadDirProcedure,
|
|
svc.ReadDir,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("ReadDir")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceDeleteFileOrDirectoryHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceDeleteFileOrDirectoryProcedure,
|
|
svc.DeleteFileOrDirectory,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("DeleteFileOrDirectory")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceStatUriHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceStatUriProcedure,
|
|
svc.StatUri,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("StatUri")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceWatchDirectoryHandler := connect.NewServerStreamHandler(
|
|
LanguageServerServiceWatchDirectoryProcedure,
|
|
svc.WatchDirectory,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("WatchDirectory")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceHeartbeatHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceHeartbeatProcedure,
|
|
svc.Heartbeat,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("Heartbeat")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
languageServerServiceGetStatusHandler := connect.NewUnaryHandler(
|
|
LanguageServerServiceGetStatusProcedure,
|
|
svc.GetStatus,
|
|
connect.WithSchema(languageServerServiceMethods.ByName("GetStatus")),
|
|
connect.WithHandlerOptions(opts...),
|
|
)
|
|
return "/exa.language_server_pb.LanguageServerService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
switch r.URL.Path {
|
|
case LanguageServerServiceStartCascadeProcedure:
|
|
languageServerServiceStartCascadeHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceSendUserCascadeMessageProcedure:
|
|
languageServerServiceSendUserCascadeMessageHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceCancelCascadeInvocationProcedure:
|
|
languageServerServiceCancelCascadeInvocationHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceAcknowledgeCascadeCodeEditProcedure:
|
|
languageServerServiceAcknowledgeCascadeCodeEditHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceGetCascadeModelConfigsProcedure:
|
|
languageServerServiceGetCascadeModelConfigsHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceGetCommandModelConfigsProcedure:
|
|
languageServerServiceGetCommandModelConfigsHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceReadFileProcedure:
|
|
languageServerServiceReadFileHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceWriteFileProcedure:
|
|
languageServerServiceWriteFileHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceReadDirProcedure:
|
|
languageServerServiceReadDirHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceDeleteFileOrDirectoryProcedure:
|
|
languageServerServiceDeleteFileOrDirectoryHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceStatUriProcedure:
|
|
languageServerServiceStatUriHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceWatchDirectoryProcedure:
|
|
languageServerServiceWatchDirectoryHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceHeartbeatProcedure:
|
|
languageServerServiceHeartbeatHandler.ServeHTTP(w, r)
|
|
case LanguageServerServiceGetStatusProcedure:
|
|
languageServerServiceGetStatusHandler.ServeHTTP(w, r)
|
|
default:
|
|
http.NotFound(w, r)
|
|
}
|
|
})
|
|
}
|
|
|
|
// UnimplementedLanguageServerServiceHandler returns CodeUnimplemented from all methods.
|
|
type UnimplementedLanguageServerServiceHandler struct{}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) StartCascade(context.Context, *connect.Request[language_server_pb.StartCascadeRequest]) (*connect.Response[language_server_pb.StartCascadeResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.StartCascade is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) SendUserCascadeMessage(context.Context, *connect.Request[language_server_pb.SendUserCascadeMessageRequest], *connect.ServerStream[language_server_pb.CascadeReactiveUpdate]) error {
|
|
return connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.SendUserCascadeMessage is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) CancelCascadeInvocation(context.Context, *connect.Request[language_server_pb.CancelCascadeInvocationRequest]) (*connect.Response[language_server_pb.CancelCascadeInvocationResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.CancelCascadeInvocation is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) AcknowledgeCascadeCodeEdit(context.Context, *connect.Request[language_server_pb.AcknowledgeCascadeCodeEditRequest]) (*connect.Response[language_server_pb.AcknowledgeCascadeCodeEditResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.AcknowledgeCascadeCodeEdit is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) GetCascadeModelConfigs(context.Context, *connect.Request[language_server_pb.GetCascadeModelConfigsRequest]) (*connect.Response[language_server_pb.GetCascadeModelConfigsResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.GetCascadeModelConfigs is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) GetCommandModelConfigs(context.Context, *connect.Request[language_server_pb.GetCommandModelConfigsRequest]) (*connect.Response[language_server_pb.GetCommandModelConfigsResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.GetCommandModelConfigs is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) ReadFile(context.Context, *connect.Request[language_server_pb.ReadFileRequest]) (*connect.Response[language_server_pb.ReadFileResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.ReadFile is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) WriteFile(context.Context, *connect.Request[language_server_pb.WriteFileRequest]) (*connect.Response[language_server_pb.WriteFileResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.WriteFile is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) ReadDir(context.Context, *connect.Request[language_server_pb.ReadDirRequest]) (*connect.Response[language_server_pb.ReadDirResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.ReadDir is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) DeleteFileOrDirectory(context.Context, *connect.Request[language_server_pb.DeleteFileOrDirectoryRequest]) (*connect.Response[language_server_pb.DeleteFileOrDirectoryResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.DeleteFileOrDirectory is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) StatUri(context.Context, *connect.Request[language_server_pb.StatUriRequest]) (*connect.Response[language_server_pb.StatUriResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.StatUri is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) WatchDirectory(context.Context, *connect.Request[language_server_pb.WatchDirectoryRequest], *connect.ServerStream[language_server_pb.WatchDirectoryResponse]) error {
|
|
return connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.WatchDirectory is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) Heartbeat(context.Context, *connect.Request[language_server_pb.HeartbeatRequest]) (*connect.Response[language_server_pb.HeartbeatResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.Heartbeat is not implemented"))
|
|
}
|
|
|
|
func (UnimplementedLanguageServerServiceHandler) GetStatus(context.Context, *connect.Request[language_server_pb.GetStatusRequest]) (*connect.Response[language_server_pb.GetStatusResponse], error) {
|
|
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("exa.language_server_pb.LanguageServerService.GetStatus is not implemented"))
|
|
}
|