AgentSessionManager.Persistence.EventRedactor
(AgentSessionManager v0.8.0)
Copy Markdown
View Source
Scans event data for secret patterns and replaces matches with redacted placeholders before persistence.
Redaction is opt-in and controlled via Config.get(:redaction_enabled).
Public API
redact/2-- redacts an Event struct'sdataandmetadatamaps. Returns a result struct withevent,redaction_count, andfields_redacted.redact_map/2-- redacts an arbitrary map (for user callback wrapping). Returns just the redacted map.default_patterns/0-- returns the built-in pattern list.
Bypass Vector
The event_callback and telemetry handlers in SessionManager receive
raw event data that has NOT been redacted. To redact data in your
callback, wrap it with redact_map/2:
event_callback = fn event_data ->
redacted = EventRedactor.redact_map(event_data)
MyApp.handle(redacted)
endPattern Format
Patterns are {category, Regex.t()} tuples. The category atom is used
for categorized replacement mode ([REDACTED:category]).
Summary
Types
@type redaction_config() :: %{ optional(:enabled) => boolean(), optional(:patterns) => [{atom(), Regex.t()}] | [Regex.t() | {atom(), Regex.t()}] | :default | {:replace, [Regex.t() | {atom(), Regex.t()}]}, optional(:replacement) => String.t() | :categorized, optional(:deep_scan) => boolean(), optional(:scan_metadata) => boolean() }
@type redaction_result() :: %{ event: AgentSessionManager.Core.Event.t(), redaction_count: non_neg_integer(), fields_redacted: [atom()] }
Functions
@spec redact(AgentSessionManager.Core.Event.t(), redaction_config()) :: redaction_result()
@spec redact_map(map(), redaction_config()) :: map()