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

dsh-codegraph-search

v0.6.2

Published

Keyword + code-graph search tab for the dsh web GUI, docked in the built-in right sidebar

Readme

dsh-codegraph-search

Awesome DSH Plugin npm version

A Search tab for the DeepSeek Harness (dsh) web GUI's built-in right sidebar — no dsh-better-sidebar required. One panel, two modes:

  • Keyword — search file names and contents in the current session's workspace, grouped per file with line numbers.
  • Code graph — query symbols by name / qualified name and expand their callers and callees.

Clicking a hit opens the file in the built-in text preview, jumping to the line.

Modes

Keyword

  • File names and content lines; per-file groups with match counts, collapsible.
  • Progressive results: the host streams each file group over NDJSON the moment it is found (POST /workspace-search/search with stream: true), so hits appear while the walk is still running and the status line counts up live. Rendering is throttled — the first rows show immediately, then the list is updated at most once per 250 ms — so a fast walk never re-renders per file, and the final list is sorted exactly like the buffered response. Code-graph queries stay a single buffered response.
  • Matched text is highlighted: the query inside file names, matched lines, and code-graph symbol names / signatures, using the same matching rules the search itself used (literal case folding, or the regex and Aa state).
  • VS Code-style filters: files to include / files to exclude (comma-separated globs, supports **, *, ?, {a,b}), Aa case toggle, .* regex toggle.
  • Type filter: quick extension chips (.ts .tsx .js .py .json .md) plus a free-form extension field.
  • Skips hidden files/dirs, .git, node_modules, .hg, .svn, dist, build, .next, target, symlinks, binary files, and files over 1 MiB.

Code graph

  • Needs the codegraph CLI on the server and a codegraph init-ed workspace (the index lives in .codegraph/).
  • Symbol results show kind, signature and location; each row lazily expands callers / callees. Missing CLI, missing index, timeout and parse failures are reported with their own message and a copyable fix command.

Usage

  • The panel scopes to the current session's workspace automatically.
  • Enter searches; results also refresh ~250 ms after a filter or mode change.
  • Esc clears the query.
  • Switching tabs no longer re-runs the search: results, scroll position and expansion state are preserved.

Requirements

  • dsh web (the built-in right sidebar, @deepseek-ai/dsh-client-ui-sidebar-right)
  • Node.js >= 22
  • codegraph CLI — only for the code graph mode

Install

Published on npm as dsh-codegraph-search:

dsh plugin --profile web add dsh-codegraph-search

From a local checkout instead — the profile then keeps it as a link: dependency, so your edits take effect on the next restart:

git clone https://github.com/Wilyte/dsh-codegraph-search.git
dsh plugin --profile web add ./dsh-codegraph-search

Either way the plugin is added to the web profile's bundle list, so restart dsh web to load it. No extra sidebar plugin is needed: the tab registers directly with dsh's built-in right sidebar, and the sidebar's guide page shows a "Code search" entry.

Configuration

All fields optional (profile patch layer, id: code-search):

- id: code-search
  config:
    maxFiles: 5000          # hard cap on files scanned per search
    maxMatches: 300         # hard cap on total content matches
    maxLineLength: 300      # hard cap on one reported line
    maxFileBytes: 1048576   # files above this skip the content scan
    codegraphBin: codegraph # CLI used by the code graph mode
    codegraphTimeoutMs: 15000
    codegraphMaxResults: 50

Every cap is reported honestly in the status line ("file scan truncated" / "matches truncated") instead of silently dropping results.

How it works

Dual-face bundle.

  • Host half (lib/index.js) registers an HTTP route on dsh's webServer (ctx.webServer.register, prefix /workspace-search) — POST /workspace-search/search and POST /workspace-search/graph. It deliberately does not inject connection: that service does not exist in the web host profile.
  • Client half (lib/client.js) registers a tab type on ctx.sidebarRightTabs (kind search), renders its body into the keyed sidebar.right.pane.tab seat, and contributes a guide-page entry. Copy is routed through the Client locale service (zh/en) and the stylesheet is mounted through ctx.effect, using the GUI's own design tokens.

Credits

This plugin started from dsh-workspace-search by AmmiWang — the original VS Code-style keyword search tab for dsh, then docked in dsh-better-sidebar. The code graph mode, streamed results and the built-in right sidebar were added on top of it. Thanks for the original work.

License

MIT