Elixir wrapper around the Rust whiff crate.
Returns idiomatic {:ok, report} / {:error, %Whiff.Error{}} results where
report is a string-keyed map conforming to schema whiff/1.
Examples
iex> is_binary(Whiff.schema_version())
trueNative identification/extraction is the default. Elixir extractors
(Whiff.Extractor) and analyzers (Whiff.Analyzer) run in BEAM processes
outside the NIF.
Summary
Functions
Extract a whiff/1 report from a filesystem path.
Same as extract/2 but raises Whiff.Error.
Extract from in-memory bytes.
Same as extract_binary/2 but raises Whiff.Error.
Extract many paths with bounded concurrency.
Compact LLM projection for a path (Report::llm_view).
Same as llm/2 but raises Whiff.Error.
Report schema version (whiff/1).
Library version.
Types
@type result() :: {:ok, report()} | {:error, Whiff.Error.t()}
Functions
Extract a whiff/1 report from a filesystem path.
Options
Native: :profile, :hashes, :privacy, :only, :skip, :format,
:provenance, :limits, :tokens (llm only).
Pipeline: :mode (:fallback | :augment | :override), :extractors,
:analyzers, :strict, :plugin_timeout_ms, :override_fields.
Same as extract/2 but raises Whiff.Error.
Extract from in-memory bytes.
Pass name: (filename) to aid detection.
Same as extract_binary/2 but raises Whiff.Error.
@spec extract_many([Path.t()], keyword()) :: {:ok, [{Path.t(), result()}]} | {:error, Whiff.Error.t()}
Extract many paths with bounded concurrency.
Returns a list of {path, result} in input order.
Options: :max_concurrency (default 4), :on_error (:collect | :halt).
Other options are forwarded to extract/2.
Compact LLM projection for a path (Report::llm_view).
Default token budget: 800 (override with tokens:).
Same as llm/2 but raises Whiff.Error.
@spec schema_version() :: String.t()
Report schema version (whiff/1).
@spec version() :: String.t()
Library version.