// Summary: Initialization and lifecycle handlers split from handlers.go. package lsp import ( "os" "codeberg.org/snonux/hexai/internal" "codeberg.org/snonux/hexai/internal/logging" tmx "codeberg.org/snonux/hexai/internal/tmux" ) func (s *Server) handleInitialize(req Request) { version := internal.Version if s.llmClient != nil { version = version + " [" + s.llmClient.Name() + ":" + s.llmClient.DefaultModel() + "]" } res := InitializeResult{ Capabilities: ServerCapabilities{ TextDocumentSync: 1, // 1 = TextDocumentSyncKindFull CompletionProvider: &CompletionOptions{ ResolveProvider: false, TriggerCharacters: s.triggerChars, }, CodeActionProvider: CodeActionOptions{ResolveProvider: true}, }, ServerInfo: &ServerInfo{Name: "hexai", Version: version}, } s.reply(req.ID, res, nil) } func (s *Server) handleInitialized() { logging.Logf("lsp ", "client initialized") // Emit an initial tmux heartbeat with provider/model if s.llmClient != nil { _ = tmx.SetStatus(tmx.FormatLLMStartStatus(s.llmClient.Name(), s.llmClient.DefaultModel())) } } func (s *Server) handleShutdown(req Request) { s.reply(req.ID, nil, nil) } func (s *Server) handleExit() { s.exited = true os.Exit(0) }