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

@jeffreyjyz/opencode-session-dir

v0.1.0

Published

Bind extra working directories to a single opencode session, durably across restarts. Other sessions never see them.

Readme

@jeffreyjyz/opencode-session-dir

Bind extra working directories to one opencode session — durably, across restarts. Other sessions never see them.

The agent already works in the session's own directory; anything outside it needs external_directory approval. This plugin lets a session declare the other directories it may work in, and remembers that binding for that session alone. Open a different session and the same path is still gated by the normal permission flow.

Install

Add it to the plugins array in ~/.config/opencode/opencode.json and restart (or /reload) opencode:

{
  "plugins": ["@jeffreyjyz/opencode-session-dir"]
}

For local development point at the checkout instead (an absolute path is treated as a local plugin):

{
  "plugins": ["/Users/you/dev/cmdcode-tools/opencode-session-dir"]
}

After bun run build the root index.js / tui.js shims load dist/.

Commands

| Command | Behavior | | --- | --- | | /session-dir | Browse (or type) a directory and bind it to the current session. | | /session-dir-list | Show the directories bound to the current session. | | /session-dir-remove | Pick a bound directory and unbind it. |

All three require an open session; they act on the active session only.

How it works

Two halves of one package, because they run in different processes:

| half | file | job | | --- | --- | --- | | server | src/index.ts | permission.evaluate grants external_directory for the requesting session's bound dirs; session.context advertises them to the model | | TUI | src/tui.tsx | the three slash commands and their dialogs |

Both halves meet on the filesystem. Bindings live in $XDG_DATA_HOME/opencode/session-dir/bindings.json (default ~/.local/share/opencode/session-dir/bindings.json) as a map from session id to absolute paths:

{
  "ses_abc123": ["/Users/you/other-project"]
}

The server reads it through a short mtime cache, so a binding added in the TUI takes effect on the next permission check. A configured deny in your permissions always wins — the hook only turns ask into allow.

Set OPENCODE_SESSION_DIR_INJECT_CONTEXT=1 to also fold each bound directory's AGENTS.md / CLAUDE.md / .agents/AGENTS.md into the system prompt.

Difference from opencode-add-dir

opencode-add-dir offers "this session only" (a flat list, cleared when the server restarts and shared by every session in that process) and "remember across sessions" (persisted, but global to all sessions). This plugin is the combination it does not offer: one session, durable.

Development

bun install
bun test
bun run typecheck
bun run build