diff --git a/internal/cmd/root.go b/internal/cmd/root.go index e782898f42e38bc4b06f890b76a2deebb96b9df1..d63160992141da26b6a26610b06f1b601213e00d 100644 --- a/internal/cmd/root.go +++ b/internal/cmd/root.go @@ -6,7 +6,6 @@ import ( "io" "log/slog" "os" - "time" tea "github.com/charmbracelet/bubbletea/v2" "github.com/charmbracelet/crush/internal/app" @@ -84,15 +83,12 @@ to assist developers in writing, debugging, and understanding code directly from return err } - slog.Info("Initing...") - now := time.Now() app, err := app.New(ctx, conn, cfg) if err != nil { slog.Error(fmt.Sprintf("Failed to create app instance: %v", err)) return err } defer app.Shutdown() - slog.Info("Init done", "took", time.Since(now).String()) prompt, err = maybePrependStdin(prompt) if err != nil { diff --git a/internal/llm/agent/agent.go b/internal/llm/agent/agent.go index 291528d36594a5178f72ae64bb565f18e36c1cae..84ef27a86e1a91557a7af88c868fdd4ba8ce9362 100644 --- a/internal/llm/agent/agent.go +++ b/internal/llm/agent/agent.go @@ -187,6 +187,10 @@ func NewAgent( go func() { slog.Info("Initializing agent tools", "agent", agentCfg.ID) + defer func() { + slog.Info("Initialized agent tools", "agent", agentCfg.ID) + agent.toolsDone.Store(true) + }() cwd := cfg.WorkingDir() allTools := []tools.BaseTool{ @@ -203,29 +207,28 @@ func NewAgent( } mcpTools := GetMCPTools(ctx, permissions, cfg) + allTools = append(allTools, mcpTools...) + if len(lspClients) > 0 { - mcpTools = append(mcpTools, tools.NewDiagnosticsTool(lspClients)) + allTools = append(allTools, tools.NewDiagnosticsTool(lspClients)) } - allTools = append(allTools, mcpTools...) if agentTool != nil { allTools = append(allTools, agentTool) } - agentTools := []tools.BaseTool{} if agentCfg.AllowedTools == nil { - agentTools = allTools - } else { - for _, tool := range allTools { - if slices.Contains(agentCfg.AllowedTools, tool.Name()) { - agentTools = append(agentTools, tool) - } - } + agent.tools = allTools + return } - slog.Info("Initialized agent tools", "agent", agentCfg.ID) - agent.tools = agentTools - agent.toolsDone.Store(true) + var filteredTools []tools.BaseTool + for _, tool := range allTools { + if slices.Contains(agentCfg.AllowedTools, tool.Name()) { + filteredTools = append(filteredTools, tool) + } + } + agent.tools = filteredTools }() return agent, nil