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

@tomismeta/paperclip-aperture

v0.3.1

Published

The live attention layer for Paperclip, powered by Aperture's deterministic attention engine.

Readme

Paperclip Aperture

The live attention layer for Paperclip, powered by Aperture's deterministic attention engine.

paperclip-aperture npm aperture github npm aperture core paperclip

Paperclip Aperture adds a Focus surface to Paperclip that deterministically ranks approvals, issue activity, and other human-facing events into now, next, and ambient.

It is designed as a live attention layer, not an inbox clone:

  • now shows the single most interrupting item
  • next stages the queue behind it
  • ambient keeps low-pressure awareness visible without demanding action

Put differently:

  • Inbox tells you what changed
  • Focus tells you what deserves attention now
  • Inbox mirrors source records
  • Focus re-stacks them into an operator-facing queue with recommended moves

Install

npx paperclipai plugin install @tomismeta/paperclip-aperture

If you need Paperclip first:

npx paperclipai onboard --yes
npx paperclipai run

Then install the plugin with the command above.

After install, open Paperclip and use the Focus entry in the sidebar.

Napkin Diagram

+--------------+   +--------------+   +--------------+   +--------------+   +--------------+
| Arrive       |   | Translate    |   | Judge        |   | Show         |   | Respond      |
| events       |   | facts        |   | attention    |   | surface      |   | action       |
+--------------+   +--------------+   +--------------+   +--------------+   +--------------+
       |                  |                  |                  |                  |
       +----->            +----->            +----->            +----->            |

tool hooks         explicit facts      does this         what the          operator decision
from Paperclip     from raw payloads   deserve           operator          carried back
and agents                             attention now?    actually sees     to the tool

What You Get

  • a Focus surface inside Paperclip
  • ranked now, next, and ambient attention lanes
  • embedded explainability in the Focus UI, including Why now, Why next, confidence, signals, thread context, and related activity
  • approval handling, including budget-specific approval semantics
  • issue-aware operator language such as review required, blocked, and targeted recommended moves
  • agent-aware routing that distinguishes known company agents from human/operator roles when issue text references them
  • a plugin-local deterministic semantic mapping layer that interprets Paperclip issue, approval, and agent signals before publishing them into Aperture Core
  • richer semantic continuity hints on mapped issue events, including supersedes and resolves relationships where Paperclip-specific intent is clear
  • document-aware review interpretation for memo/spec-backed issues so Focus can tell the difference between review is blocked on the artifact and the artifact is attached, monitor instead
  • dynamic re-stacking so items can move between now, next, and ambient as new evidence arrives
  • inline issue commenting from the Focus surface when a Paperclip issue supports written response
  • durable acknowledge/suppression behavior backed by plugin state and ledger replay
  • a sidebar entry, page, and dashboard widget

Explainability

Focus is meant to be more legible than a smart inbox.

The current 0.3.x explainability slice keeps reasoning attached to the cards you are already acting on:

  • Why now on the active card explains why the current item outranks the rest of the queue
  • Why next on queued rows explains why something is staged behind the current top item
  • Confidence shows how strong the semantic signal is when the plugin has one
  • Signals surfaces the specific factors that pushed the item into attention
  • Thread context and Related activity help explain whether an item is part of a broader episode or continuation

The intent is not to expose every internal scoring detail. It is to help an operator answer:

  • why did this surface?
  • why is it in this lane?
  • how much should I trust this judgment?

Package Boundary

This plugin treats Paperclip as the host runtime and UI shell, while embedding Aperture Core through the npm package @tomismeta/aperture-core.

It is a pure SDK integration: Aperture Core is used as-is inside a self-contained Paperclip plugin, with no changes to Aperture Core or Paperclip core.

For 0.3.x, the boundary works like this:

  • the plugin worker owns Aperture ingestion, replay, review state, and display composition
  • Paperclip remains the system of record for issue and approval writes
  • approval transport still goes through same-origin Paperclip HTTP APIs from the plugin UI because the current plugin SDK does not expose approval read/write clients
  • the plugin intentionally publishes ApertureEvents today, using a Paperclip-specific semantic mapping layer and ontology, rather than switching fully to SourceEvent
  • that semantic layer includes reusable intent detectors, actor resolution against real company agents, downstream blocker extraction, and shared operator-language generation inside the plugin

The plugin has been validated against @tomismeta/[email protected].

Development

pnpm install
pnpm typecheck
pnpm test
pnpm build

Before releasing, run:

pnpm release:check

For a live local Paperclip smoke test, start Paperclip first:

pnpm build
npx paperclipai run -i default

Then, in a second terminal:

npx paperclipai context set --api-base http://localhost:3100
npx paperclipai plugin uninstall tomismeta.paperclip-aperture --force
npx paperclipai plugin install --local .

Then open http://127.0.0.1:3100/APE/aperture and verify:

  • Acknowledge hides the active card and survives refresh
  • Next promotes into Now
  • issue comments post successfully from Focus
  • approval actions update Focus correctly
  • resolved blocker comments downgrade stale Now items
  • attached issue documents downgrade stale share the memo/spec review blockers into monitor-only follow-up
  • the active card exposes Why now
  • expanded queued rows expose Why next

Links