handlers

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package handlers implements the brainjar HTTP API handlers. Each resource (soul, persona, rule, brain, ...) owns a struct that satisfies Handler and mounts its routes via Register.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Admin

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

func NewAdmin

func NewAdmin(app AdminApp) *Admin

func (*Admin) Register

func (h *Admin) Register(mux *http.ServeMux)

type AdminApp

type AdminApp interface {
	Export(ctx context.Context, wsID models.WorkspaceID) (*bundle.ContentBundle, error)
	Import(ctx context.Context, wsID models.WorkspaceID, cb *bundle.ContentBundle) (*bundle.ImportResult, error)
}

type BrainApp

type BrainApp interface {
	List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Brain, error)
	Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Brain, error)
	Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, soulSlug, personaSlug models.Slug, ruleSlugs []models.Slug, modelPrefs *models.ModelPrefs) (*models.Brain, error)
	Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
}

type Brains

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

func NewBrains

func NewBrains(app BrainApp) *Brains

func (*Brains) Register

func (h *Brains) Register(mux *http.ServeMux)

type Compose

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

func NewCompose

func NewCompose(app ComposeApp) *Compose

func (*Compose) Register

func (h *Compose) Register(mux *http.ServeMux)

type ComposeApp

type ComposeApp interface {
	Compose(ctx context.Context, req models.ComposeRequest) (*models.ComposeResponse, error)
}

type Handler

type Handler interface {
	Register(mux *http.ServeMux)
}

Handler registers its routes on a mux. Callers compose handlers by constructing each one and invoking Register(srv.Mux()).

type PersonaApp

type PersonaApp interface {
	List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Persona, error)
	Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Persona, error)
	Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, content string, bundledRules []models.Slug) (*models.Persona, error)
	Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
}

type Personas

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

func NewPersonas

func NewPersonas(app PersonaApp) *Personas

func (*Personas) Register

func (h *Personas) Register(mux *http.ServeMux)

type RuleApp

type RuleApp interface {
	List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Rule, error)
	Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Rule, error)
	Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, entries []models.RuleEntry) (*models.Rule, error)
	Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
}

type Rules

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

func NewRules

func NewRules(app RuleApp) *Rules

func (*Rules) Register

func (h *Rules) Register(mux *http.ServeMux)

type SoulApp

type SoulApp interface {
	List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Soul, error)
	Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Soul, error)
	Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, content string) (*models.Soul, error)
	Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
}

SoulApp is the subset of apps.SoulApp the handler depends on.

type Souls

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

func NewSouls

func NewSouls(app SoulApp) *Souls

func (*Souls) Register

func (h *Souls) Register(mux *http.ServeMux)

type State

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

func NewState

func NewState(app StateApp) *State

func (*State) Register

func (h *State) Register(mux *http.ServeMux)

type StateApp

type StateApp interface {
	ResolveForScope(ctx context.Context, wsID models.WorkspaceID, projectSlug, sessionID string) (*models.EffectiveState, error)
	FindLayers(ctx context.Context, wsID models.WorkspaceID, projectSlug, sessionID string) ([]models.LayerOverride, error)
	SetState(ctx context.Context, wsID models.WorkspaceID, scopeType models.ScopeType, referenceID string, partial *models.LayerOverride) error
	DeleteState(ctx context.Context, wsID models.WorkspaceID, scopeType models.ScopeType, referenceID string) error
}

type Status

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

func NewStatus

func NewStatus(app StateApp) *Status

func (*Status) Register

func (h *Status) Register(mux *http.ServeMux)

type VersionApp

type VersionApp interface {
	ListContentVersions(ctx context.Context, workspaceID models.WorkspaceID, contentType models.ContentType, slug models.Slug) ([]models.VersionSummary, error)
	GetContentVersion(ctx context.Context, workspaceID models.WorkspaceID, contentType models.ContentType, slug models.Slug, version int) (*models.ContentVersion, error)
}

type Versions

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

func NewVersions

func NewVersions(app VersionApp) *Versions

func (*Versions) Register

func (h *Versions) Register(mux *http.ServeMux)

Jump to

Keyboard shortcuts

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