summaryrefslogtreecommitdiffhomepage
path: root/internal/llm/agent/coder.go
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-13 14:37:05 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:41:27 +0200
commitcdc5f209dccdc980714f2ca1aeb52133d6e93cce (patch)
tree02fe97994dfce7f2e842be7b4c5170f534220eee /internal/llm/agent/coder.go
parent3ad983db0f2c08826d56cb5de274d706c95b3353 (diff)
downloadopencode-cdc5f209dccdc980714f2ca1aeb52133d6e93cce.tar.gz
opencode-cdc5f209dccdc980714f2ca1aeb52133d6e93cce.zip
cleanup diff, cleanup agent
Diffstat (limited to 'internal/llm/agent/coder.go')
-rw-r--r--internal/llm/agent/coder.go83
1 files changed, 36 insertions, 47 deletions
diff --git a/internal/llm/agent/coder.go b/internal/llm/agent/coder.go
index f8e1c40a0..8eea57041 100644
--- a/internal/llm/agent/coder.go
+++ b/internal/llm/agent/coder.go
@@ -4,71 +4,60 @@ import (
"context"
"errors"
- "github.com/kujtimiihoxha/termai/internal/app"
"github.com/kujtimiihoxha/termai/internal/config"
"github.com/kujtimiihoxha/termai/internal/llm/models"
"github.com/kujtimiihoxha/termai/internal/llm/tools"
+ "github.com/kujtimiihoxha/termai/internal/lsp"
+ "github.com/kujtimiihoxha/termai/internal/message"
+ "github.com/kujtimiihoxha/termai/internal/permission"
+ "github.com/kujtimiihoxha/termai/internal/session"
)
type coderAgent struct {
- *agent
+ Service
}
-func (c *coderAgent) setAgentTool(sessionID string) {
- inx := -1
- for i, tool := range c.tools {
- if tool.Info().Name == AgentToolName {
- inx = i
- break
- }
- }
- if inx == -1 {
- c.tools = append(c.tools, NewAgentTool(sessionID, c.App))
- } else {
- c.tools[inx] = NewAgentTool(sessionID, c.App)
- }
-}
-
-func (c *coderAgent) Generate(ctx context.Context, sessionID string, content string) error {
- c.setAgentTool(sessionID)
- return c.generate(ctx, sessionID, content)
-}
-
-func NewCoderAgent(app *app.App) (Agent, error) {
+func NewCoderAgent(
+ permissions permission.Service,
+ sessions session.Service,
+ messages message.Service,
+ lspClients map[string]*lsp.Client,
+) (Service, error) {
model, ok := models.SupportedModels[config.Get().Model.Coder]
if !ok {
return nil, errors.New("model not supported")
}
ctx := context.Background()
- agentProvider, titleGenerator, err := getAgentProviders(ctx, model)
+ otherTools := GetMcpTools(ctx, permissions)
+ if len(lspClients) > 0 {
+ otherTools = append(otherTools, tools.NewDiagnosticsTool(lspClients))
+ }
+ agent, err := NewAgent(
+ ctx,
+ sessions,
+ messages,
+ model,
+ append(
+ []tools.BaseTool{
+ tools.NewBashTool(permissions),
+ tools.NewEditTool(lspClients, permissions),
+ tools.NewFetchTool(permissions),
+ tools.NewGlobTool(),
+ tools.NewGrepTool(),
+ tools.NewLsTool(),
+ tools.NewSourcegraphTool(),
+ tools.NewViewTool(lspClients),
+ tools.NewWriteTool(lspClients, permissions),
+ NewAgentTool(sessions, messages),
+ }, otherTools...,
+ ),
+ )
if err != nil {
return nil, err
}
- otherTools := GetMcpTools(ctx, app.Permissions)
- if len(app.LSPClients) > 0 {
- otherTools = append(otherTools, tools.NewDiagnosticsTool(app.LSPClients))
- }
return &coderAgent{
- agent: &agent{
- App: app,
- tools: append(
- []tools.BaseTool{
- tools.NewBashTool(app.Permissions),
- tools.NewEditTool(app.LSPClients, app.Permissions),
- tools.NewFetchTool(app.Permissions),
- tools.NewGlobTool(),
- tools.NewGrepTool(),
- tools.NewLsTool(),
- tools.NewSourcegraphTool(),
- tools.NewViewTool(app.LSPClients),
- tools.NewWriteTool(app.LSPClients, app.Permissions),
- }, otherTools...,
- ),
- model: model,
- agent: agentProvider,
- titleGenerator: titleGenerator,
- },
+ agent,
}, nil
}