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

@intentic/agent-cli

v1.317.0

Published

The process contract, budgeted output and test seam every agent-facing CLI in this repo keeps

Readme

agent-cli

The process contract, budgeted output and in-process test runner that the agent-facing CLIs iq, fileq and webq share, so a failure never reads as an empty answer.

flowchart LR
    agent["Agent shell<br/>pipes into head, drops stderr"] --> bin["iq · fileq · webq"]
    bin --> run(["agent-cli<br/>runAgentCli"])
    run --> app["The tool's stricli app<br/>loaded lazily"]
    app --> out["stdout<br/>capsule, clipped body, errors"]
    out --> agent
  • The reader is an agent: it pipes into head, sends stderr to /dev/null and cannot tell a crash from an empty answer. So runAgentCli treats EPIPE as a clean stop, writes errors to stdout, reports a module graph that will not load as a broken install, and clamps the exit code to 0 content, 1 none, 2 anything else.
  • The app is passed as a load thunk, never a static import, so an engine or native module that fails to load fails inside the contract's catch and gets reported.
  • capsule prints the line an agent reads first plus one note: per caveat; clip cuts markdown to a token budget on a line boundary and always names the file that holds the whole answer.
  • toolHome gives each tool its own directory: <NAME>_HOME, else $XDG_CACHE_HOME/<name>, else ~/.cache/<name>.
  • Each tool's end-to-end suites use captureCli from ./testing, which runs the app in process and returns what a shell would see.

Key files

  • src/run.ts — runAgentCli: the process contract every rule above lives in.
  • src/output.ts — capsule and clip, the capsule-then-content shape these CLIs print.
  • src/env.ts — toolHome and toolOutDir, where a tool's own files go.
  • src/testing.ts — captureCli, the in-process runner the tools' suites drive.
  • src/flags.ts — countParser, which refuses negative, infinite and NaN budgets.

Commands

pnpm --filter @intentic/agent-cli test