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

@kindgi/testing

v0.1.7

Published

Test helpers for Kindgi apps and packages. `createStubAppBindings()` supplies every binding `createApp` requires as a typed stub that throws a descriptive `StubBindingError` if called — mount the API for contract / route-shape tests without a database or

Readme

@kindgi/testing

Test helpers for Kindgi apps and packages.

Purpose

createApp from @kindgi/api requires a set of bindings (conversations, run snapshots, kernel, tenant hierarchy, memory, provenance) that a production deployment backs with the Kindgi runtime. Most API tests exercise one route family and never touch the others. @kindgi/testing supplies the rest as stubs, so a test can mount the real app with no database and no runtime — and any code path that reaches an unprovided binding fails loudly instead of silently returning nothing.

The helpers are defined in @kindgi/api/testing and re-exported here unchanged; import from either.

Exports

| Export | Kind | Description | |---|---|---| | createStubAppBindings() | function | Every required createApp binding except resolveToken / runHandler, as stubs. | | createStubKernelBinding() | function | Stub KernelBinding (each sub-binding stubbed; optional eventBus absent). | | createStubBinding<T>(name, methods) | function | Stub any binding interface T; every method throws StubBindingError. | | StubBindingError | class | Thrown by stub methods; carries binding and method. | | StubAppBindings, StubMethods<T> | types | Return type of createStubAppBindings; the method map createStubBinding requires. |

Example

import { createApp } from '@kindgi/api';
import { createStubAppBindings, createStubBinding } from '@kindgi/testing';

const app = createApp({
  ...createStubAppBindings(),
  resolveToken: async () => ({ tenantId }),
  runHandler: createStubBinding<RunHandlerBinding>('runHandler', {
    invokeAgent: true,
    invokeFlow: true,
    resumeRun: true,
  }),
  // The binding this test actually exercises — your in-memory
  // implementation or test double of AgentRegistryBinding:
  agentRegistry: myAgentRegistry,
});

const res = await app.request('/v1/agents', { headers: { authorization: 'Bearer t' } });

createStubBinding requires one true entry per interface method — the map is type-checked for completeness, so a method added to the interface (or a stale entry) fails to compile rather than surfacing at runtime.

Non-goals

  • Behavioral fakes. Stubs never return data. When a test needs a binding to behave, pass an in-memory implementation or a hand-written double for that binding and keep the stubs for the rest.
  • Database-backed integration. Tests that need real persistence run against real adapters, not this package.