Documentation
¶
Overview ¶
Package config loads and validates rocketclaw configuration files.
Index ¶
- Constants
- func LoadExternalMCPUsers(configPath string) (map[string]string, error)
- func LoadOneOffCronjob(workspace, runtimeDir, target string) (protocol.OneOffCronjob, error)
- type AWSFetcher
- type AttachmentDriver
- type AttachmentsConfig
- type Config
- func (c *Config) AttachmentLocation() (AttachmentDriver, string, error)
- func (c *Config) CronWebAgentChoices(loaded []string, job *protocol.OneOffCronjob) []string
- func (c *Config) Provider(name string) (OpenAIConfig, bool)
- func (c *Config) RenderAgentModel(model string) (string, error)
- func (c *Config) RuntimeDirName() string
- func (c *Config) Validate() error
- type CronSchedule
- type InstrumentationConfig
- type LockedConfig
- type LoggingConfig
- type MCPExternalConfig
- type MCPServerConfig
- type OpenAIConfig
- type OpenCodeConfig
- type PostHogConfig
- type SecretFetchError
- type SecretFetcher
- type SentryConfig
- type SlackChannelConfig
- type SlackConfig
- type TsnetConfig
- type WebConfig
Constants ¶
const DefaultRuntimeDir = ".rocketclaw"
DefaultRuntimeDir is the generated runtime directory for rocketclaw configs.
Variables ¶
This section is empty.
Functions ¶
func LoadExternalMCPUsers ¶
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"`
ServerDisplayName string `json:"server_display_name,omitempty"`
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"`
PostHog PostHogConfig `json:"posthog,omitzero"`
}
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
RenderAgentModel renders an agent model with the mappings from the loaded config.
func (*Config) RuntimeDirName ¶ added in v0.0.25
RuntimeDirName returns the selected generated runtime directory name.
type CronSchedule ¶ added in v0.1.17
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.
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
OpenCodeConfig names one remote OpenCode server the Web lists and proxies under /oc/{name}/.
type PostHogConfig ¶ added in v0.2.13
type PostHogConfig struct {
ProjectToken string `json:"project_token,omitempty"`
Host string `json:"host,omitempty"`
}
PostHogConfig sends log events, errors, and browser sessions to PostHog Cloud when ProjectToken is set, and traces too while instrumentation is enabled. The project token is public: the browser receives it.
type SecretFetchError ¶ added in v0.0.46
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
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"`
// TLSCertFile and TLSKeyFile are the PEM certificate and key the listen_address listener serves
// HTTPS with. Without them it serves a self-signed certificate made at each start.
TLSCertFile string `json:"tls_cert_file,omitempty"`
TLSKeyFile string `json:"tls_key_file,omitempty"`
Sentry SentryConfig `json:"sentry,omitzero"`
Tsnet *TsnetConfig `json:"tsnet,omitempty"`
}
WebConfig controls the Web listener and conversation presentation.