JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 768
  • Score
    100M100P100Q114602F
  • License MIT

Event transport, replay, and durable transcripts for AI agent conversations

Package Exports

  • @lleverage-ai/agent-threads
  • @lleverage-ai/agent-threads/client
  • @lleverage-ai/agent-threads/ledger
  • @lleverage-ai/agent-threads/server
  • @lleverage-ai/agent-threads/stores/event-memory
  • @lleverage-ai/agent-threads/stores/event-sqlite
  • @lleverage-ai/agent-threads/stores/ledger-memory
  • @lleverage-ai/agent-threads/stores/ledger-sqlite
  • @lleverage-ai/agent-threads/stream

Readme

@lleverage-ai/agent-threads

Event transport, replay, and durable transcripts for AI agent conversations.

@lleverage-ai/agent-threads is the infrastructure package in this monorepo. It is for teams that need reusable primitives for conversation transport, replay, and persistence, whether or not they use @lleverage-ai/agent-sdk.

If you want to build agents, start with @lleverage-ai/agent-sdk. Add @lleverage-ai/agent-threads when you need lower-level control over thread history, transport, or transcript storage.

Installation

bun add @lleverage-ai/agent-threads zod

Overview

agent-threads provides the full infrastructure stack for durable AI agent conversations — from low-level event sourcing and real-time WebSocket transport to high-level canonical transcripts and run lifecycle management.

This package is useful in two common situations:

  • you are building your own agent runtime or app-specific orchestration layer and need conversation infrastructure directly
  • you are using @lleverage-ai/agent-sdk and want separate, explicit transport/transcript primitives in your broader system architecture

The package is organized into two layers:

  • Stream layer — Append-only event stores, projectors, and WebSocket server/client for real-time event transport and replay
  • Ledger layer — Canonical message schema, run lifecycle orchestration, accumulator (events → messages), and durable transcript stores

Sub-path Exports

Export Description
@lleverage-ai/agent-threads Unified barrel (all stream + ledger exports)
@lleverage-ai/agent-threads/stream Stream-only API
@lleverage-ai/agent-threads/ledger Ledger-only API
@lleverage-ai/agent-threads/server WebSocket server
@lleverage-ai/agent-threads/client WebSocket client
@lleverage-ai/agent-threads/stores/event-memory In-memory event store
@lleverage-ai/agent-threads/stores/event-sqlite SQLite event store
@lleverage-ai/agent-threads/stores/ledger-memory In-memory ledger store
@lleverage-ai/agent-threads/stores/ledger-sqlite SQLite ledger store

Quick Start

Event Stores

import { InMemoryEventStore } from "@lleverage-ai/agent-threads/stores/event-memory";

const store = new InMemoryEventStore();

await store.append("thread-1", [
  { kind: "text-delta", payload: { delta: "Hello" } },
]);

const events = await store.replay("thread-1");

Run Lifecycle

import { RunManager } from "@lleverage-ai/agent-threads";
import { InMemoryEventStore } from "@lleverage-ai/agent-threads/stores/event-memory";
import { InMemoryLedgerStore } from "@lleverage-ai/agent-threads/stores/ledger-memory";

const eventStore = new InMemoryEventStore();
const ledgerStore = new InMemoryLedgerStore();
const manager = new RunManager(ledgerStore, eventStore);

const run = await manager.beginRun({ threadId: "thread-1" });
await manager.appendEvents(run.runId, events);
await manager.finalizeRun(run.runId, "committed");

Accumulator

import { accumulateEvents } from "@lleverage-ai/agent-threads";

const messages = accumulateEvents(storedEvents);

WebSocket Transport

import { WsServer } from "@lleverage-ai/agent-threads/server";
import { WsClient } from "@lleverage-ai/agent-threads/client";

const server = new WsServer({ store });
// Call server.handleConnection(ws) from your HTTP server's upgrade handler

const client = new WsClient({ url: "ws://localhost:8080" });

License

MIT