AgentSessionManager (AgentSessionManager v0.8.0)

Copy Markdown View Source

A comprehensive Elixir library for managing AI agent sessions, state persistence, conversation context, and multi-agent orchestration workflows.

Core Domain Types

This library provides the following core domain types:

Quick Start

# Create a session
alias AgentSessionManager.Core.Session

{:ok, session} = Session.new(%{agent_id: "my-agent"})
{:ok, active} = Session.update_status(session, :active)

# Create a run
alias AgentSessionManager.Core.Run

{:ok, run} = Run.new(%{session_id: session.id})
{:ok, completed} = Run.set_output(run, %{response: "Hello!"})

# Create an event
alias AgentSessionManager.Core.Event

{:ok, event} = Event.new(%{
  type: :message_received,
  session_id: session.id,
  run_id: run.id,
  data: %{content: "Hello!"}
})

# Define a manifest
alias AgentSessionManager.Core.Manifest

{:ok, manifest} = Manifest.new(%{
  name: "my-agent",
  version: "1.0.0",
  capabilities: [
    %{name: "web_search", type: :tool}
  ]
})

Error Handling

All operations return tagged tuples {:ok, result} or {:error, error}. Errors are normalized using AgentSessionManager.Core.Error:

alias AgentSessionManager.Core.Error

case Session.new(%{}) do
  {:ok, session} -> session
  {:error, %Error{code: :validation_error, message: msg}} ->
    IO.puts("Validation failed: #{msg}")
end

Errors support machine-readable codes, provider-specific details, and are classified into categories (validation, provider, storage, etc.).

Summary

Functions

maintenance(repo)

@spec maintenance(term()) :: {module(), term()}

Builds a module-backed Maintenance reference for an Ecto repo.

new_capability(attrs)

See AgentSessionManager.Core.Capability.new/1.

new_capability_resolver(opts)

See AgentSessionManager.Core.CapabilityResolver.new/1.

new_event(attrs)

See AgentSessionManager.Core.Event.new/1.

new_manifest(attrs)

See AgentSessionManager.Core.Manifest.new/1.

new_registry()

See AgentSessionManager.Core.Registry.new/0.

new_run(attrs)

See AgentSessionManager.Core.Run.new/1.

new_session(attrs)

See AgentSessionManager.Core.Session.new/1.

query_api(repo)

@spec query_api(term()) :: {module(), term()}

Builds a module-backed QueryAPI reference for an Ecto repo.

session_store(repo)

@spec session_store(term()) :: {module(), term()}

Builds a module-backed SessionStore reference for an Ecto repo.