broker

package
v0.2.5 Latest Latest
Warning

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

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

Documentation

Index

Constants

View Source
const (
	ActionGitHubGetRepository = "github.get_repository.v1"
	GitHubScope               = "github/read"
	GitHubDestination         = "github-api"
	CapabilityFileName        = "aegis-broker-capability.json"
)

Variables

View Source
var ErrDownstream = errors.New("broker downstream action failed")

Functions

func Serve

func Serve(ctx context.Context, authorizer Authorizer, config ServerConfig) error

Types

type Authorizer

type Authorizer interface {
	ExecuteBroker(context.Context, Peer, Request, Executor) (Result, error)
}

type Capability

type Capability struct {
	SessionID     string
	MandateID     string
	SubjectID     string
	AgentID       string
	StanzaID      string
	DeploymentID  string
	CharterDigest string
	IssuedAt      time.Time
	ExpiresAt     time.Time
	RuntimePID    int
	ProcessStart  string
}

type Executor

type Executor func(context.Context, []byte, Grant) (Result, error)

type Grant

type Grant struct {
	RequestID       string
	SessionID       string
	MandateID       string
	SubjectID       string
	AgentID         string
	StanzaID        string
	DeploymentID    string
	CharterDigest   string
	Scope           string
	Operation       string
	Destination     string
	RecordID        string
	Version         uint64
	BindingRevision uint64
}

type Peer

type Peer struct {
	PID int32
	UID uint32
	GID uint32
}

type Repository

type Repository struct {
	Owner         string `json:"owner"`
	Name          string `json:"name"`
	Private       bool   `json:"private"`
	DefaultBranch string `json:"default_branch"`
	Archived      bool   `json:"archived"`
	Visibility    string `json:"visibility"`
	UpdatedAt     string `json:"updated_at"`
}

type Request

type Request struct {
	SchemaVersion uint16    `json:"schema_version"`
	RequestID     string    `json:"request_id"`
	Deadline      time.Time `json:"deadline"`
	Capability    string    `json:"capability"`
	Owner         string    `json:"owner"`
	Repository    string    `json:"repository"`
}

type Result

type Result struct {
	StatusCode int        `json:"status_code"`
	Outcome    string     `json:"outcome"`
	RequestID  string     `json:"request_id"`
	Repository Repository `json:"repository"`
}

type ServerConfig

type ServerConfig struct {
	Socket       string
	AllowedUID   uint32
	AllowedGID   uint32
	MaxBodyBytes int64
	Timeout      time.Duration
	Destinations map[string]string
	Repositories []string
}

Jump to

Keyboard shortcuts

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