npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@reactive-agents/core

v0.10.6

Published

Core services for Reactive Agents — EventBus, AgentService, TaskService, and shared types

Downloads

1,952

Readme

@reactive-agents/core

Core services and types for the Reactive Agents framework. v0.10.3

The foundational package every other @reactive-agents/* package depends on. Provides the EventBus, AgentService, TaskService, ContextWindowManager, framework error taxonomy, canonical schemas, and the narrow ports (AgentMemory, EntropySensorService) that other layers resolve.

Installation

bun add @reactive-agents/core

Or install everything at once via the umbrella package:

bun add reactive-agents

What This Package Provides

  • EventBus — typed publish/subscribe for the full AgentEvent taxonomy (lifecycle, intelligence, cortex, error-swallowed)
  • AgentService — agent registration, lookup, and lifecycle management
  • TaskService — task creation, status tracking (pending → running → completed/failed/cancelled), and cancellation
  • ContextWindowManager — token-aware truncation strategies for long conversations
  • Framework error taxonomyTransientError, LLMTimeoutError, LLMRateLimitError, ContractError, SecurityError, VerificationFailed, etc., with isRetryable() for retry-rule pattern matching
  • Canonical schemasAgent, Task, TaskResult, Message, RuntimeConfig, ReasoningStep (Effect Schema, branded IDs)
  • AgentMemory port — narrow interface the kernel resolves, decoupled from the @reactive-agents/memory adapter
  • EntropySensorService tag — service tag the reactive-intelligence layer plugs into

Quick Example

import { Effect } from "effect";
import {
  CoreServicesLive,
  AgentService,
  TaskService,
  EventBus,
} from "@reactive-agents/core";

const program = Effect.gen(function* () {
  const agents = yield* AgentService;
  const tasks = yield* TaskService;
  const bus = yield* EventBus;

  const agent = yield* agents.create({
    name: "my-agent",
    capabilities: [],
  });

  yield* bus.subscribe("TaskCompleted", (event) =>
    Effect.sync(() => console.log("done:", event.taskId)),
  );

  const task = yield* tasks.create(agent.id, { input: "hello" });
  return { agent, task };
});

await Effect.runPromise(program.pipe(Effect.provide(CoreServicesLive)));

Key Exports

| Export | Description | | -------------------------------------- | -------------------------------------------------------- | | CoreServicesLive | Composite layer wiring AgentService + TaskService + EventBus | | EventBus, EventBusLive | Typed pub/sub for AgentEvent | | AgentService, AgentServiceLive | Create, register, and look up agents | | TaskService, TaskServiceLive | Create, update, and cancel tasks | | ContextWindowManager | Token-aware conversation truncation | | AgentMemory | Narrow port for memory adapters | | EntropySensorService | Service tag consumed by reactive-intelligence | | AgentId, TaskId, MessageId | Branded ID types + generators | | FrameworkError and subtypes | Tagged error taxonomy with isRetryable() guard | | defaultRuntimeConfig | Sensible defaults for RuntimeConfigSchema |

Event Taxonomy

The AgentEvent type unions every event flowing through EventBus:

  • LifecycleAgentCreated, TaskStarted, TaskCompleted, TaskFailed, TaskCancelled
  • IntelligenceSkillActivated, SkillRefined, TemperatureAdjusted, MemoryBoostTriggered, AgentNeedsHuman
  • CortexMemorySnapshot, ContextPressure, ChatTurnEvent, AgentHealthReport, ProviderFallbackActivated, DebriefCompleted, AgentConnected, AgentDisconnected
  • ErrorsErrorSwallowed (replaces silent catchAll(() => Effect.void) sites)

Subscribe to a single tag for type-narrowed handlers, or subscribe to * for all events.

Error Taxonomy

import { isRetryable, LLMTimeoutError, ContractError } from "@reactive-agents/core";

try {
  await runMyAgent();
} catch (err) {
  if (isRetryable(err)) {
    // TransientError, LLMTimeoutError, CapacityError, LLMRateLimitError
    return retry();
  }
  // ContractError, SecurityError, VerificationFailed → surface to caller
  throw err;
}

Documentation

License

MIT