Codex.Config.Overrides (Codex SDK v0.7.2)

Copy Markdown View Source

Config override serialization, nested map flattening, and TOML value validation.

Summary

Types

config_override()

@type config_override() :: String.t() | {String.t(), config_override_value()}

config_override_scalar()

@type config_override_scalar() :: String.t() | boolean() | integer() | float()

config_override_value()

@type config_override_value() ::
  config_override_scalar()
  | [config_override_value()]
  | %{optional(String.t() | atom()) => config_override_value()}

Functions

cli_args(overrides)

@spec cli_args([Codex.Thread.Options.config_override()]) :: [String.t()]

derived_overrides(codex_opts, thread_opts)

@spec derived_overrides(Codex.Options.t(), Codex.Thread.Options.t() | nil) :: [
  {String.t(), term()}
]

flatten_config_map(map)

@spec flatten_config_map(map() | nil) :: [{String.t(), term()}]

Flattens a nested map into a list of {dotted_key, value} tuples.

Nested maps are recursively traversed and their keys are joined with dots. Non-map leaf values are kept as-is.

Examples

iex> Codex.Config.Overrides.flatten_config_map(%{"model" => %{"personality" => "friendly"}})
[{"model.personality", "friendly"}]

iex> Codex.Config.Overrides.flatten_config_map(%{"timeout" => 5000})
[{"timeout", 5000}]

merge_config(config, codex_opts, thread_opts)

@spec merge_config(map() | nil, Codex.Options.t(), Codex.Thread.Options.t()) ::
  map() | nil

normalize_config_overrides(overrides)

@spec normalize_config_overrides(term()) ::
  {:ok, [config_override()]} | {:error, term()}