Packages
claude_code
0.29.0
0.36.5
0.36.4
0.36.3
0.36.2
0.36.1
0.36.0
0.35.0
0.34.0
0.33.1
0.32.2
0.32.0
0.31.0
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.0
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Claude Agent SDK for Elixir – Build AI agents with Claude Code
Current section
Files
Jump to
Current section
Files
lib/claude_code/sandbox/helpers.ex
defmodule ClaudeCode.Sandbox.Helpers do
@moduledoc false
@doc """
Normalizes a map with atom, snake_case string, or camelCase string keys
into a keyword list containing only keys present in `valid_fields`.
"""
@spec normalize_map_keys(map(), [atom()]) :: keyword()
def normalize_map_keys(map, valid_fields) do
Enum.reduce(map, [], fn {key, value}, acc ->
atom_key = to_atom_key(key)
if atom_key in valid_fields, do: [{atom_key, value} | acc], else: acc
end)
end
@spec to_atom_key(atom() | String.t()) :: atom() | nil
defp to_atom_key(key) when is_atom(key), do: key
defp to_atom_key(key) when is_binary(key) do
:erlang.binary_to_existing_atom(Macro.underscore(key), :utf8)
catch
:error, :badarg -> nil
end
end