# a2a_engine v0.1.0 - Table of Contents

> Pure-spec implementation of the Google Agent2Agent (A2A) protocol:
types, JSON-RPC 2.0 codec, SSE codec, and transport behaviour. No
state, no DB, no broker — those live in the consuming host.

## Pages

- [A2aEngine](readme.md)
- [LICENSE](license.md)

## Modules

- Types
  - [A2aEngine.Types.AgentCapabilities](A2aEngine.Types.AgentCapabilities.md): Optional capabilities advertised by an agent.
  - [A2aEngine.Types.AgentCard](A2aEngine.Types.AgentCard.md): Self-describing manifest for an A2A agent.
  - [A2aEngine.Types.AgentExtension](A2aEngine.Types.AgentExtension.md): Declaration of a protocol extension supported by an Agent.
  - [A2aEngine.Types.AgentInterface](A2aEngine.Types.AgentInterface.md): A (transport, url) pair declaring an available interface for an agent.
  - [A2aEngine.Types.AgentProvider](A2aEngine.Types.AgentProvider.md): Agent provider organization info.
  - [A2aEngine.Types.AgentSkill](A2aEngine.Types.AgentSkill.md): A distinct capability an agent can perform.
  - [A2aEngine.Types.Artifact](A2aEngine.Types.Artifact.md): A file, data, or text resource generated by an agent during a task.
  - [A2aEngine.Types.DataPart](A2aEngine.Types.DataPart.md): A structured data segment within a message or artifact.
  - [A2aEngine.Types.FilePart](A2aEngine.Types.FilePart.md): A file segment within a message or artifact.
  - [A2aEngine.Types.FileWithBytes](A2aEngine.Types.FileWithBytes.md): A file whose content is inlined as base64-encoded bytes.
  - [A2aEngine.Types.FileWithUri](A2aEngine.Types.FileWithUri.md): A file whose content is referenced by URI.
  - [A2aEngine.Types.Message](A2aEngine.Types.Message.md): A single message in the conversation between a user and an agent.
  - [A2aEngine.Types.MessageSendConfiguration](A2aEngine.Types.MessageSendConfiguration.md): Optional configuration block for `message/send` and `message/stream` params.
  - [A2aEngine.Types.MessageSendParams](A2aEngine.Types.MessageSendParams.md): Params wrapper for `message/send` and `message/stream` JSON-RPC methods.
  - [A2aEngine.Types.Part](A2aEngine.Types.Part.md): Discriminated union of `TextPart`, `FilePart`, and `DataPart`.
  - [A2aEngine.Types.PushNotificationAuthenticationInfo](A2aEngine.Types.PushNotificationAuthenticationInfo.md): Optional authentication block for a PushNotificationConfig.
  - [A2aEngine.Types.PushNotificationConfig](A2aEngine.Types.PushNotificationConfig.md): Webhook configuration for receiving asynchronous task updates.
  - [A2aEngine.Types.Task](A2aEngine.Types.Task.md): An A2A Task: the unit of inter-agent work.
  - [A2aEngine.Types.TaskArtifactUpdateEvent](A2aEngine.Types.TaskArtifactUpdateEvent.md): A streaming event published when an artifact is generated or updated.
Emitted during `message/stream` and `tasks/resubscribe`.
  - [A2aEngine.Types.TaskIdParams](A2aEngine.Types.TaskIdParams.md): Params wrapper for `tasks/cancel`, `tasks/resubscribe`, and similar methods
that identify a task by id only.
  - [A2aEngine.Types.TaskPushNotificationConfig](A2aEngine.Types.TaskPushNotificationConfig.md): Params wrapper for `tasks/pushNotificationConfig/set` and related methods.
  - [A2aEngine.Types.TaskQueryParams](A2aEngine.Types.TaskQueryParams.md): Params wrapper for `tasks/get`.
  - [A2aEngine.Types.TaskStatus](A2aEngine.Types.TaskStatus.md): The current status of a task: state (required) + optional message + timestamp.
  - [A2aEngine.Types.TaskStatusUpdateEvent](A2aEngine.Types.TaskStatusUpdateEvent.md): A streaming event published when a task's status changes. Emitted during
`message/stream` and `tasks/resubscribe`.
  - [A2aEngine.Types.TextPart](A2aEngine.Types.TextPart.md): A text segment within a message or artifact.

- Codec
  - [A2aEngine.Codec.JsonRpc](A2aEngine.Codec.JsonRpc.md): JSON-RPC 2.0 envelope codec with A2A method registry.
  - [A2aEngine.Codec.Keys](A2aEngine.Codec.Keys.md): Key-case conversion between A2A wire format (camelCase strings) and
Elixir conventions (snake_case atoms).
  - [A2aEngine.Codec.SSE](A2aEngine.Codec.SSE.md): Server-Sent Events codec with Last-Event-ID resumption.

- Transport
  - [A2aEngine.Transport](A2aEngine.Transport.md): Behaviour for A2A transports.
  - [A2aEngine.Transport.BeamNative](A2aEngine.Transport.BeamNative.md): BEAM-native A2A transport.
  - [A2aEngine.Transport.BeamNative.Server](A2aEngine.Transport.BeamNative.Server.md): GenServer that receives A2A requests over the BEAM-native transport.
  - [A2aEngine.Transport.Http](A2aEngine.Transport.Http.md): HTTP transport for A2A. Client-side implementation of
`A2aEngine.Transport`; pairs with `A2aEngine.Transport.Http.Plug` on the
server side.
  - [A2aEngine.Transport.Http.Plug](A2aEngine.Transport.Http.Plug.md): Plug that receives A2A JSON-RPC requests over HTTP.

- Auth
  - [A2aEngine.Auth](A2aEngine.Auth.md): Behaviour for authenticating an inbound A2A request at the transport
boundary.
  - [A2aEngine.Auth.Bearer](A2aEngine.Auth.Bearer.md): Bearer-token authentication.
  - [A2aEngine.Auth.Localhost](A2aEngine.Auth.Localhost.md): Same-host bypass. Accepts any request whose peer socket is a loopback
address. Intended for the BeamNative transport and for HTTP deployments
where the port is only bound to `127.0.0.1`.

- Core &amp; Helpers
  - [A2aEngine](A2aEngine.md): A2A (Agent-to-Agent) protocol engine — pure spec library.
  - [A2aEngine.Errors](A2aEngine.Errors.md): A2A-specific JSON-RPC 2.0 error codes.
  - [A2aEngine.Handler](A2aEngine.Handler.md): Contract for the A2A request handler — the module that actually fulfils
JSON-RPC method calls once the transport has decoded + authenticated.
  - [A2aEngine.LifecycleState](A2aEngine.LifecycleState.md): A2A Task lifecycle states.
  - [A2aEngine.Parts](A2aEngine.Parts.md): Helpers that operate on a list of decoded Part maps (the shape
Parts take once JSON-decoded but before being encoded back for
transport).
  - [A2aEngine.TestPeer](A2aEngine.TestPeer.md): Scriptable in-process A2A peer for integration tests.

