Skip to content

Repository files navigation

Slipher

Official plugins, adapters, infrastructure, and developer tooling for Seyfert.

Build, Lint, Format & Publish

This monorepo contains the @slipher/* packages maintained alongside Seyfert. Each package is installed independently, so applications only take the runtime and integrations they need.

Packages

Application features

Package Purpose Guide
@slipher/cache-integrity Reuses recently written values while isolating stale persistent cache relationships. Cache integrity
@slipher/cooldown Per-command cooldowns with decorator, middleware, and manager APIs. Cooldown
@slipher/logger Request-scoped wide-event logging with pluggable output. Logger
@slipher/opentelemetry Traces, duration metrics, and gateway health telemetry. OpenTelemetry
@slipher/queues Typed background jobs backed by the current process or BullMQ/Redis. Queues
@slipher/scheduler Cron and interval scheduling backed by the current process or BullMQ/Redis. Scheduler
@slipher/webhooks Minimal HTTP listener for signed Discord webhook events.

Voice and media

Package Purpose Guide
@slipher/voice Discord voice connections, Opus transport, and DAVE encryption. Voice
@slipher/player Media sources, transcoding, playback queues, and controls on top of Voice. Player

Deployment and adapters

Package Purpose Guide
@slipher/scaler Explicit placement and supervision of Seyfert workers across multiple hosts. Scaling
@slipher/proxy Single-replica Discord REST egress proxy for multi-process deployments.
@slipher/redis-adapter Redis-backed cache adapters, including resource expiration policies.
@slipher/generic-adapter Fetch-compatible HTTP server adapter for interaction endpoints. Cloudflare Workers
@slipher/uws-adapter HTTP server adapter backed by uWebSockets.js.

Testing and development

Package Purpose Guide
@slipher/testing Runner-agnostic fixtures and an in-process mock bot. Testing
@slipher/eslint-plugin Type-aware ESLint rules for Seyfert applications. ESLint
@slipher/watcher Development hot reload while keeping the gateway process alive. Hot reload
@slipher/chartjs Render Chart.js configurations to image buffers with @napi-rs/canvas. Chart.js

Using Slipher

Slipher is not installed as a single bundle. Add only the packages your application needs:

pnpm add @slipher/cooldown

Every package is versioned independently and declares its own Seyfert, runtime, and optional integration requirements.

Working in the repository

The workspace targets Node.js 22.13 or newer and pins pnpm 11.11.0. Install pnpm through one of its supported installation methods, then:

pnpm install --frozen-lockfile
pnpm check

pnpm check runs formatting, linting, builds, tests, and Biome checks across the workspace. The Redis-backed suites expect Redis 8 to be available at 127.0.0.1:6379 unless their environment overrides the connection URL.

Useful workspace commands:

Command Action
pnpm build Build every package.
pnpm test Run package test suites.
pnpm lint Run repository lint tasks.
pnpm format Apply repository formatting.
pnpm check Run the complete local verification pipeline.

To work on one package, use pnpm filtering:

pnpm --filter @slipher/queues test
pnpm --filter @slipher/queues build

Documentation ownership

Package READMEs provide installation, a current quick start, compatibility requirements, and important operational warnings. Exhaustive guides live in tiramisulabs/seyfert-web and are published on seyfert.dev, so contracts, examples, and architecture have one canonical home.

When a package change affects its canonical guide, open a sibling PR in seyfert-web and link the two PRs in both directions. Keep README examples small enough to verify against the current public API.

About

A lot of packages to complement seyfert

Topics

Resources

Stars

8 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages

Generated from tiramisulabs/monorepo