permission

package
v0.0.48 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventPermissionRequested pubsub.EventType = "permission_requested"
	EventPermissionGranted   pubsub.EventType = "permission_granted"
	EventPermissionDenied    pubsub.EventType = "permission_denied"
	EventPermissionPersisted pubsub.EventType = "permission_persisted"
)

Variables

View Source
var ErrorPermissionDenied = errors.New("permission denied")

Functions

func AutoApproveSession

func AutoApproveSession(ctx context.Context, sessionID string)

func Deny

func Deny(ctx context.Context, permission PermissionRequest)

func GetService

func GetService() *permissionService

func Grant

func Grant(ctx context.Context, permission PermissionRequest)

func GrantPersistant

func GrantPersistant(ctx context.Context, permission PermissionRequest)

func InitService

func InitService() error

func IsAutoApproved

func IsAutoApproved(ctx context.Context, sessionID string) bool

func Request

func Request(ctx context.Context, opts CreatePermissionRequest) bool

func SubscribeToRequests

func SubscribeToRequests(ctx context.Context) <-chan pubsub.Event[PermissionRequest]

func SubscribeToResponses

func SubscribeToResponses(ctx context.Context) <-chan pubsub.Event[PermissionResponse]

Types

type CreatePermissionRequest

type CreatePermissionRequest struct {
	SessionID   string `json:"session_id"`
	ToolName    string `json:"tool_name"`
	Description string `json:"description"`
	Action      string `json:"action"`
	Params      any    `json:"params"`
	Path        string `json:"path"`
}

type PermissionRequest

type PermissionRequest struct {
	ID          string `json:"id"`
	SessionID   string `json:"session_id"`
	ToolName    string `json:"tool_name"`
	Description string `json:"description"`
	Action      string `json:"action"`
	Params      any    `json:"params"`
	Path        string `json:"path"`
}

type PermissionResponse

type PermissionResponse struct {
	Request PermissionRequest
	Granted bool
}

type Service

type Service interface {
	pubsub.Subscriber[PermissionRequest]
	SubscribeToResponseEvents(ctx context.Context) <-chan pubsub.Event[PermissionResponse]

	GrantPersistant(ctx context.Context, permission PermissionRequest)
	Grant(ctx context.Context, permission PermissionRequest)
	Deny(ctx context.Context, permission PermissionRequest)
	Request(ctx context.Context, opts CreatePermissionRequest) bool
	AutoApproveSession(ctx context.Context, sessionID string)
	IsAutoApproved(ctx context.Context, sessionID string) bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL