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

@danypops/vehicle-conformance

v0.5.0

Published

Runner-neutral conformance suite for VehicleClient implementations, with Bun and Vitest adapters over one shared assertion matrix.

Readme

@danypops/vehicle-conformance

Compiled runner-neutral conformance suite for any VehicleClient implementation -- one shared assertion set that a LocalVehicleClient, a RemoteVehicleClient, or any future transport must satisfy identically. The root export registers through Bun; ./core exposes the runner-neutral matrix, and ./vitest adapts a Vitest-compatible API.

bun add -d @danypops/vehicle-conformance
import {
  registerConformanceOperations,
  runVehicleClientConformance,
  runToolShellDualChannelConformance,
} from "@danypops/vehicle-conformance";

Vitest consumers provide their installed runner API rather than loading Bun:

import { describe, expect, it } from "vitest";
import { runVehicleClientConformanceWithVitest } from "@danypops/vehicle-conformance/vitest";

runVehicleClientConformanceWithVitest({ describe, expect, it }, fixture);

runToolShellDualChannelConformance(fixture) is the host-neutral Tool Shell matrix. A fixture adapts one provider's real projection/rendering boundary via execute, render, replay, renderCall, and invalidProjection; the shared suite checks independent model/presentation sentinels and named bounds, JSON-safe secret-free details, malformed/unknown replay fallback, collapsed vs. expanded immutability, schema-sensitive call rendering, 40/80/120-column physical-line safety, partial output, and projector exception policy. Pi-specific component construction stays in the adapter fixture rather than this package.

The five boundaries

Every conformant Tool Shell provider keeps five things independent:

  1. Application DTO -- the domain's own real output shape, transport-neutral, untouched by any presentation concern.
  2. Model content -- what the LLM reads: independently bounded, ANSI-free, semantic. Never derived from or coupled to what a human sees.
  3. Persisted presentation details -- a projected, versioned, discriminated-union DTO, independently bounded, with explicit {total, returned, omitted} completeness metadata. Projected once, before persistence -- never inferred from raw output at render time.
  4. Interactive component -- the rendered view of #3. Expanded mode may only reveal rows already inside the bounded DTO, never bypass the bound by reaching back into raw application output.
  5. CLI presenters -- a separate, JSON/human-text presentation path outside the interactive TUI entirely; out of scope for this suite.

The fail-closed rule that matters most: a parser for #3 must reject a malformed/unknown-version/oversized/cyclic details object and fall back to content (#2) -- never render raw, unbounded application output as a human view.

Declared-value coverage

A fixture's ToolShellDualChannelSubject can optionally supply declaredValueCases (one { value, rawPayload } per value of a discriminator field the provider's own schema declares -- a format/kind/action/...) plus a matching renderDeclaredValue(value, rawPayload, options). When present, the suite renders one result per declared value and fails if fewer than min(2, cases.length) of them escape being textually indistinguishable from a raw JSON.stringify(rawPayload, null, 2) dump.

This is the generic version of a never-typed exhaustiveness guard on a discriminated switch -- it catches the same bug class (most declared values silently falling through to an undifferentiated raw-JSON view) in bespoke non-switch code too (an if-chain, a plain-string action switch with no compile-time exhaustiveness), which a TypeScript-only lint rule would miss entirely. evaluateDeclaredValueCoverage(cases, renderDeclaredValue, options) is exported separately for direct unit testing of the classifier against a known-bad fixture shape, independent of the wrapping bun:test assertion.

Omit declaredValueCases entirely for a subject with no such discriminator -- the check then no-ops.

See the workspace README for the full Vehicle package layout.