Skip to main content

Module merge

Module merge 

Source
Expand description

Deep merge logic for OpenCode configuration files.

Follows OpenCode’s documented precedence:

  1. Remote config (.well-known/opencode) — organizational defaults
  2. Global config (~/.config/opencode/opencode.json) — user preferences
  3. Custom config (OPENCODE_CONFIG env var) — custom overrides
  4. Project config (./opencode.json) — project-specific settings
  5. .opencode directories — agents, commands, plugins
  6. Inline config (OPENCODE_CONFIG_CONTENT env var) — runtime overrides
  7. Managed config files — highest priority, not user-overridable

Merge rules (replicating DOCUMENTED behavior):

  • For objects: deep merge (project keys override global, global keys preserved)
  • For arrays: project replaces global
  • For scalars: project overrides global
  • Special handling for provider field: deep merge provider entries

Enums§

MergeStrategy
Strategy for resolving merge conflicts.

Traits§

Mergeable
Trait for types that support deep merge operations.

Functions§

merge_configs
Merge multiple configs in priority order (lowest priority first).
merge_two
Merge two configs with the second taking priority.