on main help sign in
fix: improvements
4399c9aCarlos Alexandro Becker
internal/cmd/root.go−4
@@ -6,7 +6,6 @@ import (
6 "io"
6 "io"
7 "log/slog"
7 "log/slog"
8 "os"
8 "os"
9− "time"
10
9
11 tea "github.com/charmbracelet/bubbletea/v2"
10 tea "github.com/charmbracelet/bubbletea/v2"
12 "github.com/charmbracelet/crush/internal/app"
11 "github.com/charmbracelet/crush/internal/app"
@@ -84,15 +83,12 @@ to assist developers in writing, debugging, and understanding code directly from
84 return err
83 return err
85 }
84 }
86
85
87− slog.Info("Initing...")
88− now := time.Now()
89 app, err := app.New(ctx, conn, cfg)
86 app, err := app.New(ctx, conn, cfg)
90 if err != nil {
87 if err != nil {
91 slog.Error(fmt.Sprintf("Failed to create app instance: %v", err))
88 slog.Error(fmt.Sprintf("Failed to create app instance: %v", err))
92 return err
89 return err
93 }
90 }
94 defer app.Shutdown()
91 defer app.Shutdown()
95− slog.Info("Init done", "took", time.Since(now).String())
96
92
97 prompt, err = maybePrependStdin(prompt)
93 prompt, err = maybePrependStdin(prompt)
98 if err != nil {
94 if err != nil {
internal/llm/agent/agent.go+16−13
@@ -187,6 +187,10 @@ func NewAgent(
187
187
188 go func() {
188 go func() {
189 slog.Info("Initializing agent tools", "agent", agentCfg.ID)
189 slog.Info("Initializing agent tools", "agent", agentCfg.ID)
190+ defer func() {
191+ slog.Info("Initialized agent tools", "agent", agentCfg.ID)
192+ agent.toolsDone.Store(true)
193+ }()
190
194
191 cwd := cfg.WorkingDir()
195 cwd := cfg.WorkingDir()
192 allTools := []tools.BaseTool{
196 allTools := []tools.BaseTool{
@@ -203,29 +207,28 @@ func NewAgent(
203 }
207 }
204
208
205 mcpTools := GetMCPTools(ctx, permissions, cfg)
209 mcpTools := GetMCPTools(ctx, permissions, cfg)
210+ allTools = append(allTools, mcpTools...)
211+
206 if len(lspClients) > 0 {
212 if len(lspClients) > 0 {
207− mcpTools = append(mcpTools, tools.NewDiagnosticsTool(lspClients))
213+ allTools = append(allTools, tools.NewDiagnosticsTool(lspClients))
208 }
214 }
209− allTools = append(allTools, mcpTools...)
210
215
211 if agentTool != nil {
216 if agentTool != nil {
212 allTools = append(allTools, agentTool)
217 allTools = append(allTools, agentTool)
213 }
218 }
214
219
215− agentTools := []tools.BaseTool{}
216 if agentCfg.AllowedTools == nil {
220 if agentCfg.AllowedTools == nil {
217− agentTools = allTools
221+ agent.tools = allTools
218− } else {
222+ return
219− for _, tool := range allTools {
220− if slices.Contains(agentCfg.AllowedTools, tool.Name()) {
221− agentTools = append(agentTools, tool)
222− }
223− }
224 }
223 }
225
224
226− slog.Info("Initialized agent tools", "agent", agentCfg.ID)
225+ var filteredTools []tools.BaseTool
226+ for _, tool := range allTools {
227+ if slices.Contains(agentCfg.AllowedTools, tool.Name()) {
228+ filteredTools = append(filteredTools, tool)
229+ }
230+ }
227− agent.tools = agentTools
231+ agent.tools = filteredTools
228− agent.toolsDone.Store(true)
229 }()
232 }()
230
233
231 return agent, nil
234 return agent, nil