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

@dispatch-triage/github

v0.1.0

Published

GitHub adapter: payload normalizer, Octokit executor, CODEOWNERS resolution.

Readme

@dispatch-triage/github

The GitHub adapter for Dispatch Triage — programmable triage for GitHub issues and pull requests.

This package is where Dispatch touches GitHub. Everything in it is an implementation of a port defined by @dispatch-triage/core, which itself contains no GitHub client at all.

npm i @dispatch-triage/github

What it provides

| Export | Role | | ----------------------------------------------- | ----------------------------------------------------------------- | | normalizeIssue, normalizePull, buildState | Raw GitHub payloads → the engine's State. | | targetFor, triggerFor | Payload → the Target and TriggerName the engine keys on. | | GitHubReader | Fetches an issue or pull request, its files and its diff excerpt. | | OctokitExecutor | The side-effect boundary. Every write to GitHub happens here. | | compileCodeowners, resolveReviewers | CODEOWNERS parsing and reviewer resolution. | | verifyWebhookSignature, signWebhook | HMAC verification for webhook delivery. |

Reading

import { GitHubReader } from '@dispatch-triage/github';

const reader = new GitHubReader({ octokit, maxDiffBytes: 20_000 });
const { target, state } = await reader.read('acme', 'widgets', 412);

state is a plain value: title, body, author association, labels, changed paths, line counts, commit messages, and a truncated diff excerpt. The engine takes it from there and never learns where it came from.

Executing

import { OctokitExecutor, OCTOKIT_CAPABILITIES } from '@dispatch-triage/github';

const executor = new OctokitExecutor({ octokit, logger, itemAuthor: 'octocat' });

OCTOKIT_CAPABILITIES declares which operations this executor can actually perform:

label  comment  close  reopen  lock  minimize
assign  request_review  milestone  project_field  notify

convert_to_discussion is deliberately absent — it needs a GraphQL mutation this executor does not implement, so it reports the gap instead of failing at write time. An action the executor cannot perform is suppressed by the gate ladder with unsupported_by_executor, before anything is attempted.

Two constraints are enforced here rather than left to configuration:

  • minimize can only ever target the comment that triggered the run.
  • A review is never requested from the item's own author.

project_field and notify drop out of the capability set unless you supply the corresponding handler, so a config that asks for them gets an honest suppression rather than a silent no-op.

What this package is not for

It does not decide anything. Ordering, gating, confidence thresholds and owned-label tracking all live in @dispatch-triage/core. If you are reaching for this package to work out whether to apply a label, you want the engine instead.

Documentation

Docs · Repository · Security policy

MIT