config

package
v0.154.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2026 License: BSD-2-Clause Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FindConfigDir added in v0.96.0

func FindConfigDir(ctx context.Context, toolName string) (string, error)

FindConfigDir returns the config directory for the given tool, applying XDG-first priority. If ~/.config/<toolName>/ exists it is returned. Otherwise, if the legacy ~/.<toolName>/ directory exists, it is returned. When neither exists, the XDG path ~/.config/<toolName>/ is returned as the default for new installs. FindConfigDir never creates directories and never writes to the filesystem; it only checks directory existence via os.Stat.

func ValidateBaselinePath added in v0.149.0

func ValidateBaselinePath(ctx context.Context, baselinePath string) error

ValidateBaselinePath validates a vault-relative baseline path. It rejects an empty path, an absolute path, and any path whose cleaned form escapes the vault root. The same rule guards the write (`config set-baseline`) and the read (`rollup weekly`): a path accepted here is a path both sides can resolve against the vault root, and a path rejected here is rejected by both.

Types

type BaselineWriter added in v0.149.0

type BaselineWriter interface {
	// SetBaseline writes baselinePath onto the named vault's config entry under the
	// key "baseline". The config file is read and validated before anything is
	// written: a missing or unparseable config file, a vault the config does not
	// name, or a rejected path leaves the file exactly as it was.
	SetBaseline(ctx context.Context, vaultName string, baselinePath string) error
}

BaselineWriter persists a vault's baseline file path into the vault-cli config file. It is the only writer of the config file; `rollup weekly` never writes.

func NewBaselineWriter added in v0.149.0

func NewBaselineWriter(configPath string) BaselineWriter

NewBaselineWriter creates a BaselineWriter for the config file at configPath. An empty configPath resolves the config file by the loader's own rule.

type Config

type Config struct {
	CurrentUser  string           `yaml:"current_user"`
	DefaultVault string           `yaml:"default_vault"`
	Vaults       map[string]Vault `yaml:"vaults"`
	Notification Notification     `yaml:"notification,omitempty"`
}

Config represents the vault-cli configuration.

type Loader

type Loader interface {
	Load(ctx context.Context) (*Config, error)
	GetVaultPath(ctx context.Context, vaultName string) (string, error)
	GetVault(ctx context.Context, vaultName string) (*Vault, error)
	GetAllVaults(ctx context.Context) ([]*Vault, error)
	GetCurrentUser(ctx context.Context) (string, error)
}

func NewLoader

func NewLoader(configPath string) Loader

NewLoader creates a new config loader.

type Notification added in v0.134.0

type Notification struct {
	Brokers     string `yaml:"brokers,omitempty"      json:"brokers,omitempty"`
	TopicPrefix string `yaml:"topic_prefix,omitempty" json:"topic_prefix,omitempty"`
}

Notification carries the optional escalation-publish settings. An empty Brokers value means vault-cli publishes nothing and opens no broker connection, which is what keeps the tool usable as a standalone local binary.

type Vault

type Vault struct {
	Path              string   `yaml:"path"                           json:"path"`
	Name              string   `yaml:"name"                           json:"name"`
	TasksDir          string   `yaml:"tasks_dir,omitempty"            json:"tasks_dir,omitempty"`
	GoalsDir          string   `yaml:"goals_dir,omitempty"            json:"goals_dir,omitempty"`
	ThemesDir         string   `yaml:"themes_dir,omitempty"           json:"themes_dir,omitempty"`
	ObjectivesDir     string   `yaml:"objectives_dir,omitempty"       json:"objectives_dir,omitempty"`
	VisionDir         string   `yaml:"vision_dir,omitempty"           json:"vision_dir,omitempty"`
	DailyDir          string   `yaml:"daily_dir,omitempty"            json:"daily_dir,omitempty"`
	KnowledgeDir      string   `yaml:"knowledge_dir,omitempty"        json:"knowledge_dir,omitempty"`
	TopicsDir         string   `yaml:"topics_dir,omitempty"           json:"topics_dir,omitempty"`
	ClaudeScript      string   `yaml:"claude_script,omitempty"        json:"claude_script,omitempty"`
	SessionProjectDir string   `yaml:"session_project_dir,omitempty"  json:"session_project_dir,omitempty"`
	WorkOnCommand     string   `yaml:"work_on_command,omitempty"      json:"work_on_command,omitempty"`
	WorkOnGoalCommand string   `yaml:"work_on_goal_command,omitempty" json:"work_on_goal_command,omitempty"`
	TaskTemplate      string   `yaml:"task_template,omitempty"        json:"task_template,omitempty"`
	GoalTemplate      string   `yaml:"goal_template,omitempty"        json:"goal_template,omitempty"`
	ThemeTemplate     string   `yaml:"theme_template,omitempty"       json:"theme_template,omitempty"`
	ObjectiveTemplate string   `yaml:"objective_template,omitempty"   json:"objective_template,omitempty"`
	VisionTemplate    string   `yaml:"vision_template,omitempty"      json:"vision_template,omitempty"`
	Excludes          []string `yaml:"excludes,omitempty"             json:"excludes,omitempty"`
	// Baseline is the vault-relative path of the vault's hand-authored baseline
	// file. Empty means the vault has no baseline: `rollup weekly` then prints
	// exactly what it printed before the baseline feature existed.
	Baseline string `yaml:"baseline,omitempty" json:"baseline,omitempty"`
}

Vault represents a single vault configuration.

func (*Vault) GetClaudeScript added in v0.17.0

func (v *Vault) GetClaudeScript() string

GetClaudeScript returns the claude script to use for sessions, defaulting to "claude" if not set.

func (*Vault) GetDailyDir

func (v *Vault) GetDailyDir() string

GetDailyDir returns the daily notes directory, defaulting to "Daily Notes" if not set.

func (*Vault) GetExcludes added in v0.28.0

func (v *Vault) GetExcludes() []string

GetExcludes returns the list of excluded directory prefixes.

func (*Vault) GetGoalTemplate added in v0.57.0

func (v *Vault) GetGoalTemplate() string

GetGoalTemplate returns the resolved absolute path to the goal template, or empty string if not set.

func (*Vault) GetGoalsDir

func (v *Vault) GetGoalsDir() string

GetGoalsDir returns the goals directory, defaulting to "Goals" if not set.

func (*Vault) GetKnowledgeDir added in v0.66.2

func (v *Vault) GetKnowledgeDir() string

GetKnowledgeDir returns the knowledge base directory, defaulting to "50 Knowledge Base" if not set.

func (*Vault) GetObjectiveTemplate added in v0.57.0

func (v *Vault) GetObjectiveTemplate() string

GetObjectiveTemplate returns the resolved absolute path to the objective template, or empty string if not set.

func (*Vault) GetObjectivesDir

func (v *Vault) GetObjectivesDir() string

GetObjectivesDir returns the objectives directory, defaulting to "22 Objectives" if not set.

func (*Vault) GetSessionProjectDir added in v0.47.0

func (v *Vault) GetSessionProjectDir() string

GetSessionProjectDir returns the session project directory override, or empty string if not set.

func (*Vault) GetTaskTemplate added in v0.57.0

func (v *Vault) GetTaskTemplate() string

GetTaskTemplate returns the resolved absolute path to the task template, or empty string if not set.

func (*Vault) GetTasksDir

func (v *Vault) GetTasksDir() string

GetTasksDir returns the tasks directory, defaulting to "Tasks" if not set.

func (*Vault) GetThemeTemplate added in v0.57.0

func (v *Vault) GetThemeTemplate() string

GetThemeTemplate returns the resolved absolute path to the theme template, or empty string if not set.

func (*Vault) GetThemesDir

func (v *Vault) GetThemesDir() string

GetThemesDir returns the themes directory, defaulting to "21 Themes" if not set.

func (*Vault) GetTopicsDir added in v0.133.0

func (v *Vault) GetTopicsDir() string

GetTopicsDir returns the topics directory, defaulting to "23 Topics" if not set.

func (*Vault) GetVisionDir

func (v *Vault) GetVisionDir() string

GetVisionDir returns the vision directory, defaulting to "20 Vision" if not set.

func (*Vault) GetVisionTemplate added in v0.57.0

func (v *Vault) GetVisionTemplate() string

GetVisionTemplate returns the resolved absolute path to the vision template, or empty string if not set.

func (*Vault) GetWorkOnCommand added in v0.66.10

func (v *Vault) GetWorkOnCommand() string

GetWorkOnCommand returns the Claude slash command for starting work-on sessions, defaulting to /vault-cli:work-on-task if not configured.

func (*Vault) GetWorkOnGoalCommand added in v0.99.0

func (v *Vault) GetWorkOnGoalCommand() string

GetWorkOnGoalCommand returns the Claude slash command for starting goal work-on sessions, defaulting to /vault-cli:work-on-goal if not configured.

Jump to

Keyboard shortcuts

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