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

@termfleet/terminal

v0.1.12

Published

Compatibility exports for the terminal substrate owned by @volter-ai-dev/supercode-terminal.

Readme

@termfleet/terminal

Compatibility entrypoints for the framework-neutral terminal transport and durable tmux primitives owned by @volter-ai-dev/supercode-terminal.

Each legacy module directly reexports its corresponding @volter-ai-dev/supercode-terminal/substrate/<module>.js module. Existing public exports and TypeScript types remain available at the seven legacy subpaths below. This package contains no terminal implementation or additional wrapper behavior; changes belong in the Supercode owner package.

The owner manages terminal attachment lifetimes. Closing an attachment releases its WebSocket, PTY client, listeners, timers, and file descriptors; it does not terminate the durable tmux session. Session termination remains a separate, explicit operation controlled by the embedding host.

Exports are split by environment without splitting the package:

  • @termfleet/terminal/client.js — browser-safe terminal WebSocket client and wire contract, including live control-attachment resize.
  • @termfleet/terminal/attach.js — Node CLI attachment loop with deterministic TTY restoration and Ctrl-b d detach.
  • @termfleet/terminal/local-terminal.js — structured launch in macOS Terminal.
  • @termfleet/terminal/tmux.js — Node tmux session, capture, input, and ownership primitives.
  • @termfleet/terminal/tmux-stream.js — Node PTY-to-WebSocket attachment with idempotent handle cleanup.
  • @termfleet/terminal/native-host.js — an embedded macOS host that discovers, captures, opens, and safely relinquishes user-owned Terminal/iTerm agent sessions without a Termfleet provider or server process.
  • @termfleet/terminal/session-lifecycle.js — the shared semantic lifecycle observer used by both the embedded host and full Termfleet providers.

@homebridge/node-pty-prebuilt-multiarch and ws are optional peers because browser-only consumers need neither. A host importing tmux-stream.js must provide both.

The tmux helpers accept an optional socket everywhere, so applications can use an isolated tmux server instead of touching the user's default server. Created sessions can carry an app-namespaced ownership mark; discovery does not claim or terminate unmarked sessions. Terminal attachment is intentionally separate from session termination: disposing a viewer only detaches its ephemeral PTY client and releases all handles.

Interactive clients may send bounded resize frames after the initial size negotiation. The PTY follows those dimensions live, while read-only observers continue inheriting the durable pane's size and can never reflow it.

@termfleet/terminal/local-terminal.js opens a structured command in the user's macOS Terminal without constructing AppleScript from caller data. Every program, argument, working directory, and environment value is POSIX-quoted before the fixed AppleScript receives it as a single argv value. Unsupported platforms fail honestly instead of guessing a terminal emulator.

The native host deliberately returns only durable agent session IDs, backend names, and semantic lifecycle states. Native window IDs, TTYs, PIDs, AppleScript references, and tmux handles stay inside the host process. Moving a session requires a fresh idle proof from an independent agent-aware observer; the terminal screen alone cannot authorize a second writer.

Modern Codex versions may not keep their rollout file open. The host retains those process-keyed candidates privately, matches them to an expected working directory with hasSessionCandidate(), and resolves the exact durable ID plus idle proof through resolveSession() only when an embedder explicitly requests a handoff.

createSession accepts a structured { program, arguments } command plus an environment map. Arguments are passed directly without constructing a shell command, and the credential bootstrap deletes itself before the command starts.