Files
cline/cli/pkg/hostbridge/simple_workspace.go
T
2025-12-19 12:21:22 -08:00

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
}