permission

package
v1.6.4 Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Approver

type Approver func(ctx context.Context, prompt Prompt) (Choice, error)

type AuditEntry

type AuditEntry struct {
	Time       time.Time  `json:"time"`
	Mode       Mode       `json:"mode"`
	PlanMode   bool       `json:"plan_mode"`
	Tool       string     `json:"tool"`
	Capability Capability `json:"capability"`
	Summary    string     `json:"summary"`
	Decision   string     `json:"decision"`
	Reason     string     `json:"reason,omitempty"`
	Allow      bool       `json:"allow"`
}

type Capability

type Capability string
const (
	CapabilityRead     Capability = "read"
	CapabilityWrite    Capability = "write"
	CapabilityExec     Capability = "exec"
	CapabilityHook     Capability = "hook"
	CapabilityNetwork  Capability = "network"
	CapabilitySubagent Capability = "subagent"
	CapabilityInternal Capability = "internal"
	CapabilityUnknown  Capability = "unknown"
)

type Checker

type Checker interface {
	CheckPermission(ctx context.Context, req Request) (*Decision, error)
}

type Choice

type Choice string
const (
	ChoiceAllowOnce    Choice = "allow_once"
	ChoiceAllowSession Choice = "allow_session"
	ChoiceAllowAlways  Choice = "allow_always"
	ChoiceDeny         Choice = "deny"
)

type Decision

type Decision struct {
	Kind         DecisionKind    `json:"kind"`
	Source       DecisionSource  `json:"source,omitempty"`
	Reason       string          `json:"reason,omitempty"`
	Capability   Capability      `json:"capability,omitempty"`
	Summary      string          `json:"summary,omitempty"`
	Key          string          `json:"key,omitempty"`
	OutsideRoots bool            `json:"outside_roots,omitempty"`
	Prompted     bool            `json:"prompted,omitempty"`
	Preview      string          `json:"preview,omitempty"`
	UpdatedArgs  json.RawMessage `json:"updated_args,omitempty"`
	Suggestions  []string        `json:"suggestions,omitempty"`
}

func (Decision) Allowed

func (d Decision) Allowed() bool

type DecisionEngine

type DecisionEngine interface {
	Decide(ctx context.Context, req Request) (*Decision, error)
}

type DecisionKind

type DecisionKind string
const (
	DecisionAllow        DecisionKind = "allow"
	DecisionAllowOnce    DecisionKind = "allow_once"
	DecisionAllowSession DecisionKind = "allow_session"
	DecisionAllowAlways  DecisionKind = "allow_always"
	DecisionDeny         DecisionKind = "deny"
)

type DecisionSource

type DecisionSource string
const (
	DecisionSourceTool   DecisionSource = "tool"
	DecisionSourceRule   DecisionSource = "rule"
	DecisionSourceSkill  DecisionSource = "skill"
	DecisionSourceMode   DecisionSource = "mode"
	DecisionSourcePrompt DecisionSource = "prompt"
	DecisionSourceStore  DecisionSource = "store"
	DecisionSourceRoots  DecisionSource = "roots"
)

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

func NewEngine

func NewEngine(cfg EngineConfig) *Engine

func (*Engine) Decide

func (e *Engine) Decide(ctx context.Context, req Request) (*Decision, error)

func (*Engine) FilesystemRoots

func (e *Engine) FilesystemRoots() FilesystemRoots

func (*Engine) Mode

func (e *Engine) Mode() Mode

func (*Engine) PlanMode

func (e *Engine) PlanMode() bool

func (*Engine) SetApprover

func (e *Engine) SetApprover(fn Approver)

func (*Engine) SetFilesystemRoots

func (e *Engine) SetFilesystemRoots(roots FilesystemRoots)

func (*Engine) SetMode

func (e *Engine) SetMode(mode Mode)

func (*Engine) SetPlanMode

func (e *Engine) SetPlanMode(active bool)

func (*Engine) SetSkillAllows

func (e *Engine) SetSkillAllows(rawTools []string)

type EngineConfig

type EngineConfig struct {
	Workspace string
	Mode      Mode
	Rules     *RuleSet
	Roots     FilesystemRoots
	Store     *Store
	Approver  Approver
	OnAudit   func(AuditEntry)
}

type FilesystemRoots

type FilesystemRoots struct {
	ReadRoots  []string
	WriteRoots []string
}

type Metadata

type Metadata struct {
	Capability  Capability `json:"capability,omitempty"`
	SummaryHint string     `json:"summary_hint,omitempty"`
	Reason      string     `json:"reason,omitempty"`
	Key         string     `json:"key,omitempty"`
	KeyPrefix   string     `json:"key_prefix,omitempty"`
}

type Mode

type Mode string
const (
	ModeStrict      Mode = "strict"
	ModeBalanced    Mode = "balanced"
	ModeAcceptEdits Mode = "accept_edits"
	ModeTrust       Mode = "trust"
)

func ParseMode

func ParseMode(raw string) (Mode, error)

type Prompt

type Prompt struct {
	Tool         string
	Summary      string
	Reason       string
	Capability   Capability
	Preview      string
	OutsideRoots bool
}

type Request

type Request struct {
	ToolID    string          `json:"tool_id,omitempty"`
	ToolName  string          `json:"tool_name"`
	ToolLabel string          `json:"tool_label,omitempty"`
	Summary   string          `json:"summary,omitempty"`
	Reason    string          `json:"reason,omitempty"`
	Args      json.RawMessage `json:"args,omitempty"`
	Preview   json.RawMessage `json:"preview,omitempty"`
	Metadata  Metadata        `json:"metadata,omitempty"`
}

type Rule

type Rule struct {
	Raw     string
	Kind    string
	Pattern string
}

func ParseRule

func ParseRule(raw string) (Rule, error)

type RuleSet

type RuleSet struct {
	Allow []Rule
	Deny  []Rule
}

func ParseRuleSet

func ParseRuleSet(allow, deny []string) (*RuleSet, error)

func (*RuleSet) Evaluate

func (rs *RuleSet) Evaluate(info toolInfo) (ruleAction, bool)

type Store

type Store struct {
	// contains filtered or unexported fields
}

func NewStore

func NewStore(path string) (*Store, error)

func (*Store) Add

func (s *Store) Add(entry StoreEntry) error

func (*Store) Has

func (s *Store) Has(key string) bool

type StoreEntry

type StoreEntry struct {
	Key        string     `json:"key"`
	Tool       string     `json:"tool"`
	Capability Capability `json:"capability"`
	Summary    string     `json:"summary"`
	AddedAt    time.Time  `json:"added_at"`
}

Jump to

Keyboard shortcuts

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