Files
Agent-System/internal/agent/backend.go
T

46 lines
1.0 KiB
Go

package agent
import (
"context"
"time"
"chat-agent-system/internal/config"
)
type Request struct {
WorkDir string `json:"work_dir"`
Prompt string `json:"prompt"`
Instructions string `json:"instructions"`
Targets []string `json:"targets"`
Timeout time.Duration `json:"timeout"`
}
type Result struct {
Success bool `json:"success"`
Patches map[string][]byte `json:"patches"`
Logs string `json:"logs"`
ErrorReason string `json:"error_reason"`
}
type Backend interface {
Name() string
Execute(ctx context.Context, req Request) (*Result, error)
}
func NewBackend(name string, cfg *config.Config) Backend {
var inner Backend
switch name {
case "pi-agent":
inner = &PiAgentBackend{cfg: cfg}
case "cursor-cli":
inner = &CursorCLIBackend{cfg: cfg}
default:
inner = &StubBackend{}
}
max := 8
if cfg != nil && cfg.MaxConcurrentAgents > 0 {
max = cfg.MaxConcurrentAgents
}
return WrapWithConcurrencyLimit(inner, max)
}