Change summary
internal/app/app.go | 6 +++---
internal/permission/permission.go | 7 ++++---
2 files changed, 7 insertions(+), 6 deletions(-)
Detailed changes
@@ -45,19 +45,19 @@ func New(ctx context.Context, conn *sql.DB) (*App, error) {
messages := message.NewService(q)
files := history.NewService(q, conn)
+ cfg := config.Get()
+
app := &App{
Sessions: sessions,
Messages: messages,
History: files,
- Permissions: permission.NewPermissionService(),
+ Permissions: permission.NewPermissionService(cfg.WorkingDir()),
LSPClients: make(map[string]*lsp.Client),
}
// Initialize LSP clients in the background
go app.initLSPClients(ctx)
- cfg := config.Get()
-
// TODO: remove the concept of agent config most likely
coderAgentCfg := cfg.Agents["coder"]
if coderAgentCfg.ID == "" {
@@ -6,7 +6,6 @@ import (
"slices"
"sync"
- "github.com/charmbracelet/crush/internal/config"
"github.com/charmbracelet/crush/internal/pubsub"
"github.com/google/uuid"
)
@@ -44,6 +43,7 @@ type Service interface {
type permissionService struct {
*pubsub.Broker[PermissionRequest]
+ workingDir string
sessionPermissions []PermissionRequest
sessionPermissionsMu sync.RWMutex
pendingRequests sync.Map
@@ -87,7 +87,7 @@ func (s *permissionService) Request(opts CreatePermissionRequest) bool {
dir := filepath.Dir(opts.Path)
if dir == "." {
- dir = config.Get().WorkingDir()
+ dir = s.workingDir
}
permission := PermissionRequest{
ID: uuid.New().String(),
@@ -125,9 +125,10 @@ func (s *permissionService) AutoApproveSession(sessionID string) {
s.autoApproveSessionsMu.Unlock()
}
-func NewPermissionService() Service {
+func NewPermissionService(workingDir string) Service {
return &permissionService{
Broker: pubsub.NewBroker[PermissionRequest](),
+ workingDir: workingDir,
sessionPermissions: make([]PermissionRequest, 0),
}
}