diff options
| author | Kujtim Hoxha <[email protected]> | 2025-04-21 19:48:36 +0200 |
|---|---|---|
| committer | Kujtim Hoxha <[email protected]> | 2025-04-21 19:53:55 +0200 |
| commit | 3a6a26981a8074b6ab0eaadb520db986e04799ff (patch) | |
| tree | 4fe2c022305f13775f2cab3cdd80cd808259765b /internal/permission | |
| parent | d7569d79c6da1437fe46343ed13810df6c8cae1f (diff) | |
| download | opencode-3a6a26981a8074b6ab0eaadb520db986e04799ff.tar.gz opencode-3a6a26981a8074b6ab0eaadb520db986e04799ff.zip | |
init command
Diffstat (limited to 'internal/permission')
| -rw-r--r-- | internal/permission/permission.go | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/internal/permission/permission.go b/internal/permission/permission.go index 06f69a33d..f36efea65 100644 --- a/internal/permission/permission.go +++ b/internal/permission/permission.go @@ -3,6 +3,7 @@ package permission import ( "errors" "path/filepath" + "slices" "sync" "time" @@ -14,6 +15,7 @@ import ( var ErrorPermissionDenied = errors.New("permission denied") type CreatePermissionRequest struct { + SessionID string `json:"session_id"` ToolName string `json:"tool_name"` Description string `json:"description"` Action string `json:"action"` @@ -37,13 +39,15 @@ type Service interface { Grant(permission PermissionRequest) Deny(permission PermissionRequest) Request(opts CreatePermissionRequest) bool + AutoApproveSession(sessionID string) } type permissionService struct { *pubsub.Broker[PermissionRequest] - sessionPermissions []PermissionRequest - pendingRequests sync.Map + sessionPermissions []PermissionRequest + pendingRequests sync.Map + autoApproveSessions []string } func (s *permissionService) GrantPersistant(permission PermissionRequest) { @@ -69,6 +73,9 @@ func (s *permissionService) Deny(permission PermissionRequest) { } func (s *permissionService) Request(opts CreatePermissionRequest) bool { + if slices.Contains(s.autoApproveSessions, opts.SessionID) { + return true + } dir := filepath.Dir(opts.Path) if dir == "." { dir = config.WorkingDirectory() @@ -76,6 +83,7 @@ func (s *permissionService) Request(opts CreatePermissionRequest) bool { permission := PermissionRequest{ ID: uuid.New().String(), Path: dir, + SessionID: opts.SessionID, ToolName: opts.ToolName, Description: opts.Description, Action: opts.Action, @@ -104,6 +112,10 @@ func (s *permissionService) Request(opts CreatePermissionRequest) bool { } } +func (s *permissionService) AutoApproveSession(sessionID string) { + s.autoApproveSessions = append(s.autoApproveSessions, sessionID) +} + func NewPermissionService() Service { return &permissionService{ Broker: pubsub.NewBroker[PermissionRequest](), |
