flavor

package
v0.4.10 Latest Latest
Warning

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

Go to latest
Published: Sep 27, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package flavor holds the assistant's identity and how present it makes itself.

It was once the persona layer — secretary, tutor, business — with one engine shared between them. The verticals are gone. What remains is the small amount of state that makes the assistant feel like a particular assistant: what it calls you, what you call it, and how forward it is about speaking up.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	// Name is what the user calls the assistant — how they address it and, when a
	// wake-word model is present, the word that wakes it. Empty means unnamed.
	Name string `json:"name,omitempty"`
	// UserName is what the assistant calls the user — used to warm the greeting
	// ("Morning, Pragun"). Empty means it stays impersonal.
	UserName string `json:"user_name,omitempty"`
	// Onboarded records that the first-run setup has been completed, so the
	// welcome screen only ever appears once. Absent (false) on a fresh vault.
	Onboarded bool `json:"onboarded,omitempty"`
	// Presence tunes how forward the assistant is about speaking up.
	Presence Presence `json:"presence"`
}

Config is the assistant's slice of the vault's .logos directory. Kept in its own file rather than folded into the model router config, so identity settings never risk disturbing model or key settings.

func Load

func Load(vault string) (*Config, error)

func (*Config) Save

func (c *Config) Save(vault string) error

type Presence

type Presence struct {
	Interjections      bool     `json:"interjections"`
	WakeWord           bool     `json:"wake_word"`
	MeetingLeadMinutes int      `json:"meeting_lead_minutes"`
	MinGapMinutes      int      `json:"min_gap_minutes"`
	QuietHours         []string `json:"quiet_hours,omitempty"` // ["22:00", "08:00"]
}

Presence tunes the ambient, conversational secretary: whether it interjects at all, how far ahead it flags a meeting, the minimum quiet gap between non-urgent nudges, and hours it stays silent in. Zero values mean "use the defaults" — see PresenceDefaults.

func (Presence) WithDefaults

func (p Presence) WithDefaults() Presence

PresenceDefaults fills unset fields with sensible defaults, so an old config (or one that never configured presence) still behaves reasonably. Interjections default on and non-urgent nudges are spaced an hour apart — spacing, not a per-hour quota, so an imminent meeting is never counted against a tally.

Jump to

Keyboard shortcuts

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