Documentation
¶
Index ¶
- Constants
- type Persona
- func (p *Persona) Dir() string
- func (p *Persona) IsAgentMutable(section string) bool
- func (p *Persona) IsEditable(section string) bool
- func (p *Persona) MemoryUpdateInstruction() string
- func (p *Persona) Save(section, content string) error
- func (p *Persona) SoulUpdateInstruction(tier string) string
- func (p *Persona) SystemPrompt() string
- func (p *Persona) UpdateMemory(content string) error
- func (p *Persona) UserUpdateInstruction(tier string) string
Constants ¶
const DefaultPrompt = "You are Denkeeper, a helpful personal AI assistant."
DefaultPrompt is the fallback system prompt when no persona files are available.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Persona ¶
type Persona struct {
Soul string // SOUL.md content (required)
User string // USER.md content (optional)
Memory string // MEMORY.md content (optional)
// Editable tracks which sections the agent can modify without elevated permissions.
// true = freely writable; false = requires approval or elevated permissions.
Editable map[string]bool
// contains filtered or unexported fields
}
Persona holds the content of persona definition files.
func Load ¶
Load reads persona files from the given directory. SOUL.md is required and must be non-empty. USER.md and MEMORY.md are optional.
func NewEmpty ¶ added in v0.13.0
NewEmpty creates a writable Persona with no content. The directory is created on first Save if it does not exist. Use this when the persona directory is known but no files exist yet, so the user can create sections from the dashboard.
func (*Persona) Dir ¶
Dir returns the directory the persona was loaded from. Empty string means no write path is available.
func (*Persona) IsAgentMutable ¶ added in v0.13.0
IsAgentMutable reports whether the agent itself can modify the given section. "memory" is always agent-mutable; "user" and "soul" require supervised/autonomous tier (via approval or directive).
func (*Persona) IsEditable ¶
IsEditable reports whether the section can be edited via the dashboard/API by the user. Unknown sections are treated as not editable (returns false).
func (*Persona) MemoryUpdateInstruction ¶
MemoryUpdateInstruction returns the system prompt fragment that instructs the agent how to signal a memory update. Returns an empty string if no write path is available (dir not set or memory is not editable).
func (*Persona) Save ¶
Save writes content to the named section file atomically and updates the in-memory state. section must be one of "memory", "user", or "soul". Returns an error if the persona was not loaded from a directory.
func (*Persona) SoulUpdateInstruction ¶ added in v0.14.0
SoulUpdateInstruction returns the system prompt fragment that instructs the agent how to request a SOUL.md update via a [SOUL_UPDATE] directive. Returns an empty string if the persona has no write path or the tier is "restricted" (which cannot write soul files).
func (*Persona) SystemPrompt ¶
SystemPrompt assembles the persona into a single system prompt string.
func (*Persona) UpdateMemory ¶
UpdateMemory replaces MEMORY.md with the given content. It is shorthand for Save("memory", content).
func (*Persona) UserUpdateInstruction ¶
UserUpdateInstruction returns the system prompt fragment that instructs the agent how to request a USER.md update via a [USER_UPDATE] directive. Returns an empty string if the persona has no write path or the tier is "restricted" (which cannot write user files).