Documentation
¶
Index ¶
- func SaveState(path string, s *ManifestState) error
- func StatePath(stellaHome string) string
- func Validate(m *Manifest) error
- type BinaryInstallState
- type BinaryReconcileResult
- type Manifest
- type ManifestBinary
- type ManifestOAuthFlow
- type ManifestOAuthProvider
- type ManifestPlugin
- type ManifestSessionEnv
- type ManifestSkill
- type ManifestState
- type PluginInstallState
- type PluginReconcileResult
- type ReconcileResult
- type SkillInstallState
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SaveState ¶
func SaveState(path string, s *ManifestState) error
SaveState writes the manifest state to path atomically (write to .tmp then rename).
Types ¶
type BinaryInstallState ¶
type BinaryReconcileResult ¶
BinaryReconcileResult holds the result for a single binary within a plugin.
type Manifest ¶
type Manifest struct {
OAuthProviders []ManifestOAuthProvider `json:"oauth_providers,omitempty" yaml:"oauth_providers,omitempty"`
Plugins []ManifestPlugin `json:"plugins" yaml:"plugins"`
}
func LoadBuiltin ¶
type ManifestBinary ¶
type ManifestBinary struct {
// Name is the binary name written to $STELLA_HOME/bin/.
Name string `json:"name" yaml:"name"`
// Tool is the mise tool key, e.g.:
// uv bun github:cli/cli pipx:mypy npm:serve http:sentinel
Tool string `json:"tool" yaml:"tool"`
// Version to install; defaults to "latest" when omitted.
Version string `json:"version,omitempty" yaml:"version,omitempty"`
// Options are mise tool options, using the same names as mise.toml.
Options map[string]any `json:"options,omitempty" yaml:",inline"`
}
type ManifestOAuthFlow ¶
type ManifestOAuthFlow struct {
Type string `json:"type" yaml:"type"`
AuthURL string `json:"auth_url,omitempty" yaml:"auth_url,omitempty"`
DeviceAuthURL string `json:"device_auth_url,omitempty" yaml:"device_auth_url,omitempty"`
TokenURL string `json:"token_url" yaml:"token_url"`
AuthStyle string `json:"auth_style,omitempty" yaml:"auth_style,omitempty"`
PKCE bool `json:"pkce,omitempty" yaml:"pkce,omitempty"`
}
type ManifestOAuthProvider ¶
type ManifestOAuthProvider struct {
ID string `json:"id" yaml:"id"`
Icon string `json:"icon,omitempty" yaml:"icon,omitempty"`
Scopes []string `json:"scopes" yaml:"scopes"`
VaultKey string `json:"vault_key" yaml:"vault_key"`
Flows []ManifestOAuthFlow `json:"flows" yaml:"flows"`
ClientID string `json:"client_id,omitempty" yaml:"client_id,omitempty"`
ClientSecret string `json:"client_secret,omitempty" yaml:"client_secret,omitempty"`
}
type ManifestPlugin ¶
type ManifestPlugin struct {
ID string `json:"id" yaml:"id"`
Kind string `json:"kind" yaml:"kind"`
Name string `json:"name" yaml:"name"`
DisplayName string `json:"display_name" yaml:"display_name"`
Description string `json:"description" yaml:"description"`
Enabled bool `json:"enabled" yaml:"enabled"`
Prompt string `json:"prompt,omitempty" yaml:"prompt,omitempty"`
Binaries []ManifestBinary `json:"binaries,omitempty" yaml:"binaries,omitempty"`
Skills []ManifestSkill `json:"skills,omitempty" yaml:"skills,omitempty"`
SessionEnvs []ManifestSessionEnv `json:"session_env,omitempty" yaml:"session_env,omitempty"`
OAuthProvider string `json:"oauth_provider,omitempty" yaml:"oauth_provider,omitempty"`
}
type ManifestSessionEnv ¶
type ManifestSkill ¶
type ManifestState ¶
type ManifestState struct {
UpdatedAt time.Time `json:"updated_at"`
Plugins map[string]PluginInstallState `json:"plugins"`
}
func LoadState ¶
func LoadState(path string) (*ManifestState, error)
LoadState reads the manifest state file at path. If the file does not exist, an empty state is returned.
type PluginInstallState ¶
type PluginInstallState struct {
Binaries []BinaryInstallState `json:"binaries,omitempty"`
Skills []SkillInstallState `json:"skills,omitempty"`
}
type PluginReconcileResult ¶
type PluginReconcileResult struct {
PluginID string
Binaries []BinaryReconcileResult
// Skills not yet implemented (bundled-only in v1), but reserved for future use
Err error
}
PluginReconcileResult holds the result for a single plugin.
type ReconcileResult ¶
type ReconcileResult struct {
EnabledCount int
// Per-plugin results, keyed by plugin ID
Plugins map[string]PluginReconcileResult
}
ReconcileResult summarizes one reconcile run.
Click to show internal directories.
Click to hide internal directories.