mirror of
https://github.com/charmbracelet/crush.git
synced 2025-08-02 05:20:46 +03:00
fix: improvements
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
if len(lspClients) > 0 {
|
||||
mcpTools = append(mcpTools, tools.NewDiagnosticsTool(lspClients))
|
||||
}
|
||||
allTools = append(allTools, mcpTools...)
|
||||
|
||||
if len(lspClients) > 0 {
|
||||
allTools = append(allTools, tools.NewDiagnosticsTool(lspClients))
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user