config

package
v0.1.50 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package config loads and validates rocketclaw configuration files.

Index

Constants

View Source
const DefaultRuntimeDir = ".rocketclaw"

DefaultRuntimeDir is the generated runtime directory for rocketclaw configs.

Variables

This section is empty.

Functions

func LoadExternalMCPUsers

func LoadExternalMCPUsers(configPath string) (map[string]string, error)

LoadExternalMCPUsers reads the optional rocketclaw.users.json file next to configPath.

func LoadOneOffCronjob added in v0.1.17

func LoadOneOffCronjob(workspace, runtimeDir, target string) (protocol.OneOffCronjob, error)

LoadOneOffCronjob reads a current runtime definition without running it. The cron frontend adds its output-decision instruction to Prompt.

Types

type AWSFetcher added in v0.0.46

type AWSFetcher struct{}

AWSFetcher loads SecretString with the default AWS credential chain.

func (AWSFetcher) SecretString added in v0.0.46

func (AWSFetcher) SecretString(arn string) (string, error)

SecretString fetches the current SecretString for arn.

type AttachmentDriver added in v0.1.0

type AttachmentDriver string

AttachmentDriver selects where immutable attachment originals are stored.

const (
	FilesystemAttachments AttachmentDriver = "filesystem"
	S3Attachments         AttachmentDriver = "s3"
)

FilesystemAttachments and S3Attachments select the supported original-file stores.

type AttachmentsConfig added in v0.1.0

type AttachmentsConfig struct {
	Driver    AttachmentDriver `json:"driver"`
	Path      string           `json:"path,omitempty"`
	BucketARN string           `json:"bucket_arn,omitempty"`
}

AttachmentsConfig selects an attachment directory or S3 bucket.

type Config

type Config struct {
	Workspace         string                     `json:"workspace"`
	DatabaseURL       string                     `json:"database_url"`
	Attachments       AttachmentsConfig          `json:"attachments,omitzero"`
	WorkDir           string                     `json:"-"`
	Overlays          []string                   `json:"overlays,omitempty"`
	Models            map[string]string          `json:"models,omitempty"`
	WebUsers          map[netip.Addr]string      `json:"web_users,omitempty"`
	Web               WebConfig                  `json:"web,omitzero"`
	Environment       []string                   `json:"environment,omitempty"`
	Logging           LoggingConfig              `json:"logging"`
	MCPExternal       MCPExternalConfig          `json:"mcp_external"`
	MCPServers        map[string]MCPServerConfig `json:"mcp_servers,omitempty"`
	OpenCode          map[string]OpenCodeConfig  `json:"opencode,omitempty"`
	Slack             SlackConfig                `json:"slack"`
	OpenAI            OpenAIConfig               `json:"openai"`
	Providers         map[string]OpenAIConfig    `json:"providers,omitempty"`
	AutoApproverModel string                     `json:"auto_approver_model"`
	Instrumentation   InstrumentationConfig      `json:"instrumentation"`
}

Config is the top-level rocketclaw runtime configuration.

func Load

func Load(configPath, secretsARN string, fetcher SecretFetcher) (*Config, error)

Load reads, normalizes, and validates the rocketclaw configuration file.

func (*Config) AttachmentLocation added in v0.1.0

func (c *Config) AttachmentLocation() (AttachmentDriver, string, error)

AttachmentLocation validates storage configuration and resolves its directory or bucket name.

func (*Config) CronWebAgentChoices added in v0.1.17

func (c *Config) CronWebAgentChoices(loaded []string, job *protocol.OneOffCronjob) []string

CronWebAgentChoices keeps configured channel order among loaded agents, with the caller's sorted loaded-agent list as the fallback.

func (*Config) Provider added in v0.0.42

func (c *Config) Provider(name string) (OpenAIConfig, bool)

Provider returns the default or named provider configuration.

func (*Config) RenderAgentModel added in v0.0.32

func (c *Config) RenderAgentModel(model string) (string, error)

RenderAgentModel renders an agent model with the mappings from the loaded config.

func (*Config) RuntimeDirName added in v0.0.25

func (c *Config) RuntimeDirName() string

RuntimeDirName returns the selected generated runtime directory name.

func (*Config) Validate

func (c *Config) Validate() error

Validate verifies the configuration is usable.

type CronSchedule added in v0.1.17

type CronSchedule struct {
	Raw   string
	DueAt time.Time
	// contains filtered or unexported fields
}

CronSchedule is a timestamp, duration, or cron cadence from a runtime asset.

func ParseCronDefinition added in v0.1.17

func ParseCronDefinition(data []byte, relativePath string) (protocol.OneOffCronjob, []CronSchedule, error)

ParseCronDefinition validates a cron asset and returns its prompt and schedules.

func (CronSchedule) Next added in v0.1.17

func (s CronSchedule) Next(now time.Time) time.Time

Next returns the next occurrence of a recurring schedule after now.

type InstrumentationConfig added in v0.0.12

type InstrumentationConfig struct {
	Enabled           bool   `json:"enabled"`
	CollectorEndpoint string `json:"collector_endpoint"`
	ProjectName       string `json:"project_name"`
	APIKey            string `json:"api_key"`
	HideInputs        bool   `json:"hide_inputs"`
	HideOutputs       bool   `json:"hide_outputs"`
}

InstrumentationConfig configures OpenTelemetry/OpenInference tracing.

type LockedConfig added in v0.1.23

type LockedConfig struct {
	// contains filtered or unexported fields
}

LockedConfig owns configuration and serializes work that depends on its runtime assets. A LockedConfig must not be copied after first use.

func NewLockedConfig added in v0.1.23

func NewLockedConfig(cfg *Config) *LockedConfig

NewLockedConfig stores an independent copy of cfg.

func (*LockedConfig) Clone added in v0.1.23

func (c *LockedConfig) Clone() *Config

Clone returns an independent configuration snapshot.

func (*LockedConfig) Do added in v0.1.23

func (c *LockedConfig) Do(work func(cfg *Config) error) error

Do holds the lock throughout work. work must not retain cfg or its mutable fields, or call Store, Clone, or Do on c.

func (*LockedConfig) Store added in v0.1.23

func (c *LockedConfig) Store(cfg *Config)

Store replaces the configuration with an independent copy.

type LoggingConfig

type LoggingConfig struct {
	Level string `json:"level"`
}

LoggingConfig controls rocketclaw logging.

type MCPExternalConfig

type MCPExternalConfig struct {
	Enabled    bool   `json:"enabled"`
	ListenAddr string `json:"listen_addr"`
}

MCPExternalConfig configures the persistent external MCP HTTP server.

type MCPServerConfig added in v0.0.45

type MCPServerConfig struct {
	Command string            `json:"command,omitempty"`
	Args    []string          `json:"args,omitempty"`
	Env     map[string]string `json:"env,omitempty"`
	Cwd     string            `json:"cwd,omitempty"`
	URL     string            `json:"url,omitempty"`
	Headers map[string]string `json:"headers,omitempty"`
}

MCPServerConfig configures one outbound MCP server for code mode.

type OpenAIConfig

type OpenAIConfig struct {
	APIKey                  string `json:"api_key"`
	APIBaseURL              string `json:"api_base_url"`
	RocketCodeAuth          string `json:"rocketcode_auth"`
	AutocompactionThreshold int64  `json:"autocompaction_threshold,omitempty"`
	// PromptCacheMarkersRelativePosition, when set, marks the text piece at this
	// negative index of the last request message with an Anthropic cache_control.
	PromptCacheMarkersRelativePosition *int `json:"prompt_cache_markers_relative_position,omitempty"`
}

OpenAIConfig configures the OpenAI client used by RocketCode.

type OpenCodeConfig added in v0.1.47

type OpenCodeConfig struct {
	URL      string `json:"url"`
	Password string `json:"password"`
	Port     int    `json:"port"`
}

OpenCodeConfig names one remote OpenCode server the Web lists and relays on Port.

type SecretFetchError added in v0.0.46

type SecretFetchError struct {
	ARN string
	Key string
	// contains filtered or unexported fields
}

SecretFetchError names the ARN and key of a failed fetch. It never includes the secret body.

func (*SecretFetchError) Error added in v0.0.46

func (e *SecretFetchError) Error() string

func (*SecretFetchError) Unwrap added in v0.0.46

func (e *SecretFetchError) Unwrap() error

type SecretFetcher added in v0.0.46

type SecretFetcher interface {
	SecretString(arn string) (string, error)
}

SecretFetcher returns a Secrets Manager SecretString.

type SentryConfig added in v0.1.16

type SentryConfig struct {
	DSN              string   `json:"dsn,omitempty"`
	Environment      string   `json:"environment,omitempty"`
	TracesSampleRate *float64 `json:"traces_sample_rate,omitempty"`
}

SentryConfig contains only public browser tracing settings, never an auth token.

type SlackChannelConfig added in v0.0.33

type SlackChannelConfig struct {
	Channel        string   `json:"channel"`
	Agents         []string `json:"agents,omitempty"`
	AllowedUserIDs []string `json:"allowed_user_ids,omitempty"`
}

SlackChannelConfig configures one Slack channel.

type SlackConfig

type SlackConfig struct {
	BotToken string               `json:"bot_token"`
	AppToken string               `json:"app_token"`
	Channels []SlackChannelConfig `json:"channels,omitempty"`
}

SlackConfig configures Slack channel conversations.

func (SlackConfig) Channel added in v0.1.0

func (s SlackConfig) Channel(name string) (SlackChannelConfig, bool)

Channel returns the configured Slack channel with this name.

func (SlackConfig) MappedChannels added in v0.1.0

func (s SlackConfig) MappedChannels() []string

MappedChannels returns Slack channel names, excluding the `@` Channel Entry.

type TsnetConfig added in v0.1.30

type TsnetConfig struct {
	Hostname string   `json:"hostname,omitempty"`
	Tags     []string `json:"tags,omitempty"`
	// AuthKey logs the node in without a login link; it is used only while the node is logged out.
	AuthKey string `json:"auth_key,omitempty"`
	// Origin is the node's HTTPS origin, set at runtime once it serves.
	Origin string `json:"-"`
}

TsnetConfig runs an embedded Tailscale node serving the Web over tailnet HTTPS. Its auth key comes only from TS_AUTHKEY, never from config.

type WebConfig added in v0.1.0

type WebConfig struct {
	ListenAddress string       `json:"listen_address,omitempty"`
	Sentry        SentryConfig `json:"sentry,omitzero"`
	Tsnet         *TsnetConfig `json:"tsnet,omitempty"`
}

WebConfig controls the Web listener and conversation presentation.

Jump to

Keyboard shortcuts

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