config

package
v0.8.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DefaultDir

func DefaultDir() string

DefaultDir returns the default configuration directory (~/.skael).

func MigrateSkillsFromState added in v0.8.0

func MigrateSkillsFromState(cfg *Config, state *SyncState) []string

MigrateSkillsFromState populates cfg.Skills from the given SyncState. Used on first run after upgrading from a legacy config that has no "skills" key. Returns the names of migrated skills (for user messaging).

func WriteConfig

func WriteConfig(dir string, cfg *Config) error

WriteConfig creates dir if needed and writes cfg to config.json atomically (temp file + rename) with mode 0600.

func WriteState

func WriteState(dir string, state *SyncState) error

WriteState writes state.json atomically (temp file + rename) so a crash or concurrent writer can never leave a torn file behind.

Types

type Config

type Config struct {
	Endpoint string       `json:"endpoint"`
	APIKey   string       `json:"api_key"`
	Scope    string       `json:"scope,omitempty"`
	Skills   []SkillEntry `json:"skills"`
}

Config holds the CLI configuration stored in config.json.

func EnsureSkillsKey added in v0.8.0

func EnsureSkillsKey(dir string) (cfg *Config, migrated []string, err error)

EnsureSkillsKey loads config from dir and ensures the skills key exists. If the config is legacy (no skills key), it migrates from state.json, writes the updated config, and returns the migrated skill names. If the config already has a skills key, migrated is nil.

func LoadConfig

func LoadConfig() (*Config, error)

LoadConfig resolves configuration with environment variables taking precedence. It checks SKAEL_URL and SKAEL_KEY first, then falls back to ReadConfig(DefaultDir()). If only one of the two env vars is set, it returns an error naming the missing one.

func ReadConfig

func ReadConfig(dir string) (*Config, error)

ReadConfig reads and parses config.json from dir.

func (*Config) AddSkill added in v0.8.0

func (c *Config) AddSkill(name, scope string)

AddSkill adds a skill to the config, or updates its scope if already present.

func (*Config) FindSkill added in v0.8.0

func (c *Config) FindSkill(name string) (SkillEntry, int)

FindSkill returns the entry and index for the given name, or (-1) if not found.

func (*Config) RemoveSkill added in v0.8.0

func (c *Config) RemoveSkill(name string) bool

RemoveSkill removes a skill from the config by name. Returns true if found.

type Placement added in v0.7.0

type Placement struct {
	Agent string `json:"agent"`
	Path  string `json:"path"`
	Scope string `json:"scope"`
}

Placement records where a synced skill was extracted.

type SkillEntry added in v0.8.0

type SkillEntry struct {
	Name  string `json:"name"`
	Scope string `json:"scope,omitempty"`
}

SkillEntry records a skill the user has explicitly installed.

type SyncState

type SyncState struct {
	LastSync string        `json:"last_sync"`
	Skills   []SyncedSkill `json:"skills"`
}

SyncState records the last sync timestamp and each synced skill.

func ReadState

func ReadState(dir string) (*SyncState, error)

ReadState reads state.json from dir. If the file is missing, an empty SyncState is returned without error. If the file is corrupt, it is renamed to state.json.bak and an empty SyncState is returned.

type SyncedSkill

type SyncedSkill struct {
	Name       string      `json:"name"`
	Version    int         `json:"version"`
	Checksum   string      `json:"checksum"`
	Placements []Placement `json:"placements,omitempty"`
}

SyncedSkill records a skill name, version, and content checksum.

Jump to

Keyboard shortcuts

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