diff options
Diffstat (limited to 'internal/lsp/server.go')
| -rw-r--r-- | internal/lsp/server.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/internal/lsp/server.go b/internal/lsp/server.go index 9516e37..b33147c 100644 --- a/internal/lsp/server.go +++ b/internal/lsp/server.go @@ -29,6 +29,7 @@ type Server struct { logger *log.Logger serverCtx context.Context serverCancel context.CancelFunc + statusSink StatusSink exited atomic.Bool mu sync.RWMutex docs map[string]*document @@ -74,6 +75,12 @@ type codeActionSubsystem struct { altClients map[string]llm.Client } +// StatusSink receives status updates from the LSP server. +type StatusSink interface { + SetLLMStart(provider, model string) error + SetGlobal(reqs int64, rpm float64, sent int64, recv int64, provider, model string, scopeRPM float64, scopeReqs int64, window time.Duration) error +} + // ServerOptions collects configuration for NewServer to avoid long parameter lists. type ServerOptions struct { LogContext bool @@ -84,6 +91,7 @@ type ServerOptions struct { Client llm.Client // Gitignore-aware file checker (optional) IgnoreChecker *ignore.Checker + StatusSink StatusSink } func NewServer(r io.Reader, w io.Writer, logger *log.Logger, opts ServerOptions) *Server { @@ -144,6 +152,9 @@ func (s *Server) applyOptions(opts ServerOptions) { if opts.IgnoreChecker != nil { s.ignoreChecker = opts.IgnoreChecker } + if opts.StatusSink != nil { + s.statusSink = opts.StatusSink + } } // ApplyOptions updates the server's configuration at runtime. @@ -412,6 +423,18 @@ func (s *Server) cancelRequests() { } } +func (s *Server) emitLLMStartStatus(provider, model string) { + if s.statusSink != nil { + _ = s.statusSink.SetLLMStart(provider, model) + } +} + +func (s *Server) emitGlobalStatus(reqs int64, rpm float64, sent int64, recv int64, provider, model string, scopeRPM float64, scopeReqs int64, window time.Duration) { + if s.statusSink != nil { + _ = s.statusSink.SetGlobal(reqs, rpm, sent, recv, provider, model, scopeRPM, scopeReqs, window) + } +} + func (s *Server) Run() error { defer s.cancelRequests() for { |
