diff --git a/internal/app/app.go b/internal/app/app.go index 4c130c40bfbbdbcdd1608ceb39819e32b84ecc07..616aabc74483cc725e7e4953d8ad876511925fe6 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -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 == "" { diff --git a/internal/permission/permission.go b/internal/permission/permission.go index dcdb0c46acad2dd28d781ed12f4b13f284a7bc40..2d9fca93a9e9311647287e9106f1d4f4c7b2e7e5 100644 --- a/internal/permission/permission.go +++ b/internal/permission/permission.go @@ -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), } }