Documentation
¶
Index ¶
- type AdminApp
- type BrainApp
- func (a *BrainApp) Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
- func (a *BrainApp) Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Brain, error)
- func (a *BrainApp) List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Brain, error)
- func (a *BrainApp) Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, ...) (*models.Brain, error)
- type ComposeApp
- type PersonaApp
- func (a *PersonaApp) Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
- func (a *PersonaApp) Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Persona, error)
- func (a *PersonaApp) List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Persona, error)
- func (a *PersonaApp) Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, ...) (*models.Persona, error)
- type RefChecker
- type RuleApp
- func (a *RuleApp) Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
- func (a *RuleApp) Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Rule, error)
- func (a *RuleApp) List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Rule, error)
- func (a *RuleApp) Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, ...) (*models.Rule, error)
- type SoulApp
- func (a *SoulApp) Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
- func (a *SoulApp) Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Soul, error)
- func (a *SoulApp) List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Soul, error)
- func (a *SoulApp) Upsert(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug, ...) (*models.Soul, error)
- type StateApp
- func (a *StateApp) DeleteState(ctx context.Context, wsID models.WorkspaceID, scopeType models.ScopeType, ...) error
- func (a *StateApp) FindLayers(ctx context.Context, wsID models.WorkspaceID, projectSlug, sessionID string) ([]models.LayerOverride, error)
- func (a *StateApp) ResolveForScope(ctx context.Context, wsID models.WorkspaceID, projectSlug, sessionID string) (*models.EffectiveState, error)
- func (a *StateApp) SetState(ctx context.Context, wsID models.WorkspaceID, scopeType models.ScopeType, ...) error
- type VersionApp
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminApp ¶
type AdminApp struct {
// contains filtered or unexported fields
}
func NewAdminApp ¶
func NewAdminApp(souls adminSoulApp, personas adminPersonaApp, rules adminRuleApp, brains adminBrainApp, state adminStateApp) *AdminApp
func (*AdminApp) Export ¶
func (a *AdminApp) Export(ctx context.Context, wsID models.WorkspaceID) (*bundle.ContentBundle, error)
Export returns a ContentBundle for the given workspace. Entities are read through the app layer so business invariants apply. Returns an error only on store-layer failures or context cancellation.
func (*AdminApp) Import ¶
func (a *AdminApp) Import(ctx context.Context, wsID models.WorkspaceID, cb *bundle.ContentBundle) (*bundle.ImportResult, error)
Import applies a bundle to the workspace additively. Per-entity failures (dangling refs, validation errors) become warnings and do not abort. Returns an error only on unknown schema version, context cancellation, or store I/O that the caller cannot recover from.
type BrainApp ¶
type BrainApp struct {
// contains filtered or unexported fields
}
func NewBrainApp ¶
func NewBrainApp(store brainStore, refs *RefChecker) *BrainApp
type ComposeApp ¶
type ComposeApp struct {
// contains filtered or unexported fields
}
func NewComposeApp ¶
func NewComposeApp(content composeContentStore, state composeStateResolver) *ComposeApp
func (*ComposeApp) Compose ¶
func (a *ComposeApp) Compose(ctx context.Context, req models.ComposeRequest) (*models.ComposeResponse, error)
type PersonaApp ¶
type PersonaApp struct {
// contains filtered or unexported fields
}
func NewPersonaApp ¶
func NewPersonaApp(store personaStore, refs *RefChecker) *PersonaApp
func (*PersonaApp) Delete ¶
func (a *PersonaApp) Delete(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) error
func (*PersonaApp) Get ¶
func (a *PersonaApp) Get(ctx context.Context, workspaceID models.WorkspaceID, slug models.Slug) (*models.Persona, error)
func (*PersonaApp) List ¶
func (a *PersonaApp) List(ctx context.Context, workspaceID models.WorkspaceID) ([]models.Persona, error)
type RefChecker ¶
type RefChecker struct {
// contains filtered or unexported fields
}
RefChecker validates referential integrity across content entities.
func NewRefChecker ¶
func NewRefChecker(souls refSoulStore, personas refPersonaStore, rules refRuleStore) *RefChecker
NewRefChecker creates a RefChecker with access to content stores.
func (*RefChecker) ValidateBrainRefs ¶
func (r *RefChecker) ValidateBrainRefs(ctx context.Context, workspaceID models.WorkspaceID, soulSlug, personaSlug models.Slug, ruleSlugs []models.Slug) error
ValidateBrainRefs checks that all references in a brain exist. Returns a RefError with a map of invalid fields if any are missing.
func (*RefChecker) ValidateRuleSlugs ¶
func (r *RefChecker) ValidateRuleSlugs(ctx context.Context, workspaceID models.WorkspaceID, slugs []models.Slug) error
ValidateRuleSlugs checks that all rule slugs exist. Used by PersonaApp to validate bundled rules on upsert.
type RuleApp ¶
type RuleApp struct {
// contains filtered or unexported fields
}
func NewRuleApp ¶
func NewRuleApp(store ruleStore) *RuleApp
type SoulApp ¶
type SoulApp struct {
// contains filtered or unexported fields
}
func NewSoulApp ¶
func NewSoulApp(store soulStore) *SoulApp
type StateApp ¶
type StateApp struct {
// contains filtered or unexported fields
}
func NewStateApp ¶
func NewStateApp(store stateStore) *StateApp
func (*StateApp) DeleteState ¶
func (a *StateApp) DeleteState(ctx context.Context, wsID models.WorkspaceID, scopeType models.ScopeType, referenceID string) error
DeleteState removes the layer override at the target scope. No-op if no override exists.
func (*StateApp) FindLayers ¶
func (a *StateApp) FindLayers(ctx context.Context, wsID models.WorkspaceID, projectSlug, sessionID string) ([]models.LayerOverride, error)
FindLayers returns all applicable layer overrides in precedence order (workspace first, then project if given, then session if given). Layers that don't exist are simply omitted.
func (*StateApp) ResolveForScope ¶
func (a *StateApp) ResolveForScope(ctx context.Context, wsID models.WorkspaceID, projectSlug, sessionID string) (*models.EffectiveState, error)
ResolveForScope merges all applicable layers into an EffectiveState.
Merge rules:
- Soul/Persona: last non-nil layer wins. nil = skip (no opinion), empty string = explicitly clear, value = set.
- Rules: remove first, then add (no duplicates), applied per layer.
func (*StateApp) SetState ¶
func (a *StateApp) SetState(ctx context.Context, wsID models.WorkspaceID, scopeType models.ScopeType, referenceID string, partial *models.LayerOverride) error
SetState upserts the layer override at the target scope, merging the partial override with any existing override. Nil fields in the partial are preserved from the existing override. If the result is empty (all fields nil/empty), the override is deleted.
type VersionApp ¶
type VersionApp struct {
// contains filtered or unexported fields
}
func NewVersionApp ¶
func NewVersionApp(store versionStore) *VersionApp
func (*VersionApp) GetContentVersion ¶
func (a *VersionApp) GetContentVersion(ctx context.Context, workspaceID models.WorkspaceID, contentType models.ContentType, slug models.Slug, version int) (*models.ContentVersion, error)
GetContentVersion returns the full archived snapshot. Returns NotFound when the slug is unknown or the version does not exist.
func (*VersionApp) ListContentVersions ¶
func (a *VersionApp) ListContentVersions(ctx context.Context, workspaceID models.WorkspaceID, contentType models.ContentType, slug models.Slug) ([]models.VersionSummary, error)
ListContentVersions returns archived versions newest-first. Returns NotFound when the slug was never upserted; returns an empty slice when the slug exists but has no archived versions yet.