@stambha/gateway
v0.3.5
Published
Gateway shard manager, resharding, worker bus, GatewayEventHub, and native Stambha routing
Downloads
969
Maintainers
Readme
@stambha/gateway
Native gateway layer — shard manager, identify/resume payloads, resharding, worker bus, and GatewayEventHub for routing Discord events into Stambha.
Part of the @stambha monorepo · GitHub · Gateway deployment
Install
npm install @stambha/gateway @stambha/core @stambha/transform @stambha/transportRequires Node.js 20+.
Quick start
import { createStambhaBot } from "@stambha/core";
import {
attachStambhaClient,
combineIntents,
createGatewayEventHub,
createNativeGatewayClient,
GatewayIntent,
} from "@stambha/gateway";
import { createNativeRestPort } from "@stambha/rest";
const token = process.env.DISCORD_TOKEN!;
const client = createStambhaBot({ restPort: createNativeRestPort(token) });
const hub = createGatewayEventHub();
attachStambhaClient(hub, client, {
// resolvePrefix: async ({ guildId }) => fetchPrefix(guildId) ?? "!",
});
client.setBridge(hub);
await client.start();
const gateway = await createNativeGatewayClient({
token,
hub,
intents: combineIntents(
GatewayIntent.Guilds,
GatewayIntent.GuildMessages,
GatewayIntent.MessageContent,
),
});
await gateway.connect();For tests or custom workers, you can still call hub.emit("messageCreate", …) with @stambha/transform shapes.
Sharding & resharding
import {
createShardManager,
recommendedShardCount,
createReshardController,
GatewayIntent,
combineIntents,
} from "@stambha/gateway";
const intents = combineIntents(GatewayIntent.Guilds, GatewayIntent.GuildMessages);
const shards = recommendedShardCount(guildCount);
const manager = createShardManager({ token, intents, shards });See examples/bot (pnpm split:gateway) for a full tier-split relay.
Key exports
| Export | Purpose |
|--------|---------|
| createGatewayEventHub, GatewayEventHub | Event bus → Stambha client |
| createNativeGatewayClient | Bundled WebSocket shard client (0.3.0) |
| attachStambhaClient | Wire hub to InboundRouter |
| ShardManager, createShardManager | Shard lifecycle |
| buildIdentifyPayload, buildResumePayload | Gateway session payloads |
| GatewayIntent, combineIntents | Intent bitfields |
| WorkerBus, HttpWorkerClient | Gateway ↔ bot IPC |
| ReshardController, evaluateReshard | Resharding policy |
Related packages
| Package | Role |
|---------|------|
| @stambha/core | Client, pipeline, Bridge |
| @stambha/transform | Slim event shapes |
| @stambha/rest | Outbound replies |
Development
pnpm --filter @stambha/gateway build
pnpm --filter @stambha/gateway test