mirror of
https://github.com/cline/cline.git
synced 2026-09-19 02:05:44 +08:00
98 lines
3.2 KiB
Go
98 lines
3.2 KiB
Go
package hostbridge
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/cline/grpc-go/cline"
|
|
"github.com/cline/grpc-go/host"
|
|
)
|
|
|
|
// SimpleWorkspaceService implements a basic workspace service without complex dependencies
|
|
type SimpleWorkspaceService struct {
|
|
host.UnimplementedWorkspaceServiceServer
|
|
verbose bool
|
|
workspaces []string
|
|
}
|
|
|
|
// NewSimpleWorkspaceService creates a new SimpleWorkspaceService
|
|
func NewSimpleWorkspaceService(verbose bool, workspaces []string) *SimpleWorkspaceService {
|
|
return &SimpleWorkspaceService{
|
|
verbose: verbose,
|
|
workspaces: workspaces,
|
|
}
|
|
}
|
|
|
|
// GetWorkspacePaths returns the workspace directory paths
|
|
func (s *SimpleWorkspaceService) GetWorkspacePaths(ctx context.Context, req *host.GetWorkspacePathsRequest) (*host.GetWorkspacePathsResponse, error) {
|
|
if s.verbose {
|
|
log.Printf("GetWorkspacePaths called")
|
|
}
|
|
|
|
paths := []string{}
|
|
|
|
if len(s.workspaces) == 0 {
|
|
cwd, err := os.Getwd()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
paths = append(paths, cwd)
|
|
} else {
|
|
paths = s.workspaces
|
|
}
|
|
|
|
if s.verbose {
|
|
log.Printf("Returning configured workspaces: %v", paths)
|
|
}
|
|
|
|
return &host.GetWorkspacePathsResponse{
|
|
Paths: paths,
|
|
}, nil
|
|
}
|
|
|
|
// SaveOpenDocumentIfDirty saves an open document if it has unsaved changes
|
|
func (s *SimpleWorkspaceService) SaveOpenDocumentIfDirty(ctx context.Context, req *host.SaveOpenDocumentIfDirtyRequest) (*host.SaveOpenDocumentIfDirtyResponse, error) {
|
|
if s.verbose {
|
|
log.Printf("SaveOpenDocumentIfDirty called for path: %s", req.GetFilePath())
|
|
}
|
|
|
|
// For console implementation, we'll assume the document is already saved
|
|
wasSaved := false
|
|
return &host.SaveOpenDocumentIfDirtyResponse{
|
|
WasSaved: &wasSaved,
|
|
}, nil
|
|
}
|
|
|
|
// GetDiagnostics returns diagnostic information for a file - simplified version
|
|
func (s *SimpleWorkspaceService) GetDiagnostics(ctx context.Context, req *host.GetDiagnosticsRequest) (*host.GetDiagnosticsResponse, error) {
|
|
if s.verbose {
|
|
log.Printf("GetDiagnostics called")
|
|
}
|
|
|
|
// For console implementation, return empty diagnostics
|
|
return &host.GetDiagnosticsResponse{
|
|
FileDiagnostics: []*cline.FileDiagnostics{},
|
|
}, nil
|
|
}
|
|
|
|
// OpenProblemsPanel opens the problems panel - no-op for console implementation
|
|
func (s *SimpleWorkspaceService) OpenProblemsPanel(ctx context.Context, req *host.OpenProblemsPanelRequest) (*host.OpenProblemsPanelResponse, error) {
|
|
return &host.OpenProblemsPanelResponse{}, nil
|
|
}
|
|
|
|
// OpenInFileExplorerPanel opens a file/folder in the file explorer - no-op for console implementation
|
|
func (s *SimpleWorkspaceService) OpenInFileExplorerPanel(ctx context.Context, req *host.OpenInFileExplorerPanelRequest) (*host.OpenInFileExplorerPanelResponse, error) {
|
|
return &host.OpenInFileExplorerPanelResponse{}, nil
|
|
}
|
|
|
|
// OpenClineSidebarPanel opens the Cline sidebar panel - no-op for console implementation
|
|
func (s *SimpleWorkspaceService) OpenClineSidebarPanel(ctx context.Context, req *host.OpenClineSidebarPanelRequest) (*host.OpenClineSidebarPanelResponse, error) {
|
|
return &host.OpenClineSidebarPanelResponse{}, nil
|
|
}
|
|
|
|
// OpenTerminalPanel opens the terminal panel - no-op for console implementation
|
|
func (s *SimpleWorkspaceService) OpenTerminalPanel(ctx context.Context, req *host.OpenTerminalRequest) (*host.OpenTerminalResponse, error) {
|
|
return &host.OpenTerminalResponse{}, nil
|
|
}
|