# AshIntrospection v0.4.0 - Table of Contents

> Shared core library for Ash interoperability with multiple languages.
Provides type introspection, discovery, and RPC pipeline utilities.

## Pages

- [Home](readme.md)
- [Changelog](changelog.md)

## Modules

- [AshIntrospection](AshIntrospection.md): Shared core library for Ash interoperability with multiple languages.
- [AshIntrospection.ResourceInfo](AshIntrospection.ResourceInfo.md): The one place this library asks what a resource looks like.
- [AshIntrospection.ResourceInfo.Source](AshIntrospection.ResourceInfo.Source.md): A `%Ash.Info.Manifest{}` with its lookup maps already built.
- [AshIntrospection.Rpc.LoadRestrictions](AshIntrospection.Rpc.LoadRestrictions.md): Shapes the loadable surface of an RPC action: which relationships,
calculations and aggregates a client may ask for.

- Type System
  - [AshIntrospection.TypeSystem.Introspection](AshIntrospection.TypeSystem.Introspection.md): Core type introspection and classification for Ash types.
  - [AshIntrospection.TypeSystem.ResourceFields](AshIntrospection.TypeSystem.ResourceFields.md): Provides unified resource field type lookup.

- RPC Pipeline
  - [AshIntrospection.Rpc.FieldExtractor](AshIntrospection.Rpc.FieldExtractor.md): Unified field extraction for different data structures.
  - [AshIntrospection.Rpc.Pipeline](AshIntrospection.Rpc.Pipeline.md): Language-agnostic RPC pipeline for Ash actions.
  - [AshIntrospection.Rpc.Request](AshIntrospection.Rpc.Request.md): Request data structure for the RPC pipeline.
  - [AshIntrospection.Rpc.ResultProcessor](AshIntrospection.Rpc.ResultProcessor.md): Extracts requested fields from RPC results using type-driven dispatch.
  - [AshIntrospection.Rpc.ValueFormatter](AshIntrospection.Rpc.ValueFormatter.md): Unified value formatting for RPC input/output.

- Field Processing
  - [AshIntrospection.Rpc.FieldProcessing.Atomizer](AshIntrospection.Rpc.FieldProcessing.Atomizer.md): Handles preprocessing of requested fields, converting map keys to atoms
while preserving field name strings for later reverse mapping lookup.
  - [AshIntrospection.Rpc.FieldProcessing.FieldSelector](AshIntrospection.Rpc.FieldProcessing.FieldSelector.md): Unified field selection processor using type-driven recursive dispatch.
  - [AshIntrospection.Rpc.FieldProcessing.Validation](AshIntrospection.Rpc.FieldProcessing.Validation.md): Field validation helpers for the FieldSelector module.

- Error Handling
  - [AshIntrospection.ErrorFormatter](AshIntrospection.ErrorFormatter.md): Formats an error map for client consumption.
  - [AshIntrospection.Rpc.DefaultErrorHandler](AshIntrospection.Rpc.DefaultErrorHandler.md): Default error handler for RPC operations.
  - [AshIntrospection.Rpc.Error](AshIntrospection.Rpc.Error.md): Protocol for extracting minimal information from exceptions for RPC responses.
  - [AshIntrospection.Rpc.ErrorBuilder](AshIntrospection.Rpc.ErrorBuilder.md): Comprehensive error handling and message generation for the RPC pipeline.
  - [AshIntrospection.Rpc.Errors](AshIntrospection.Rpc.Errors.md): Central error processing module for RPC operations.

- Code Generation
  - [AshIntrospection.Codegen.ActionIntrospection](AshIntrospection.Codegen.ActionIntrospection.md): Provides helper functions for analyzing Ash actions.
  - [AshIntrospection.Codegen.TypeDiscovery](AshIntrospection.Codegen.TypeDiscovery.md): Language-agnostic type discovery for Ash resources and types.
  - [AshIntrospection.Codegen.ValidationErrorTypes](AshIntrospection.Codegen.ValidationErrorTypes.md): Provides language-agnostic classification of validation error types for Ash types.

- Utilities
  - [AshIntrospection.FieldFormatter](AshIntrospection.FieldFormatter.md): Handles field name formatting for input parameters, output fields, and code generation.
  - [AshIntrospection.Helpers](AshIntrospection.Helpers.md): Utility functions for string manipulation and case transformations.

