Descripex.Manifest (descripex v0.7.0)

Copy Markdown View Source

Introspects modules to build a JSON-serializable API manifest.

Combines Code.fetch_docs/1 and type spec introspection to assemble a complete description of every public function — docs, hints, specs, and signatures — suitable for agent discovery, validators, and API generation.

Usage

manifest = Descripex.Manifest.build([MyLib.Funding, MyLib.Risk])
manifest.modules |> hd() |> Map.get(:functions) |> hd()
# => %{name: "annualize", arity: 2, spec: "annualize(...) :: float()", ...}

API Functions

FunctionArityDescriptionParam Kinds
build1Build a complete API manifest from the given modules.modules: value

Summary

Functions

Build a complete API manifest from the given modules.

Functions

build(modules)

@spec build([module()]) :: map()

Build a complete API manifest from the given modules.

Parameters

  • modules - List of module atoms to introspect (value)

Returns

JSON-serializable manifest with version, generated_at, and modules keys (map)

Example

%{version: "1.0", modules: [], generated_at: "2025-01-01T00:00:00Z"}
# descripex:contract
%{
  params: %{
    modules: %{description: "List of module atoms to introspect", kind: :value}
  },
  returns: %{
    type: :map,
    description: "JSON-serializable manifest with version, generated_at, and modules keys"
  },
  returns_example: %{
    version: "1.0",
    modules: [],
    generated_at: "2025-01-01T00:00:00Z"
  }
}