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

@fdekit/connector-codebase

v0.5.3

Published

Local codebase connector for FDEKit

Readme

@fdekit/connector-codebase

Purpose

@fdekit/connector-codebase lets an FDEKit agent list, search, and read files under one local codebase root, and navigate TypeScript/JavaScript code by symbol: declarations, usages, per-file import graphs, and budgeted context bundles. It is intended for code review, codebase analysis, and recipe flows that need repository context without giving the agent broad filesystem access.

Who should use this package

  • Deployment authors who need local codebase context in an agent run.
  • Recipe authors building engineering or code-review workflows.
  • Connector contributors maintaining safe path resolution and read limits.

Choose @fdekit/core when writing your own connector contract. Choose @fdekit/runtime when executing the agent loop that calls this connector.

5-minute quick example

import { defineDeployment } from '@fdekit/core';
import { codebaseConnector } from '@fdekit/connector-codebase';

const codebase = codebaseConnector({
  rootDir: process.env.CODEBASE_ROOT ?? '.',
});

export default defineDeployment({
  name: 'codebase-review',
  environment: 'local',
  connectors: { codebase },
  providers: {
    mock: { name: 'mock' },
  },
  agents: {
    // ...
  },
});

Tools exposed to agents:

| Tool | What it does | | --- | --- | | codebase.listFiles | List files under the configured root | | codebase.search | Regex search (ripgrep syntax, case-sensitive) | | codebase.readFile | Read a file, optionally by line range | | codebase.symbols | List indexed declarations filtered by name, file, or kind | | codebase.usages | Find references of a symbol, separated from its declaration sites | | codebase.deps | Import graph for one file: imports and importedBy | | codebase.context | Definition bodies under a byte budget plus usage previews | | codebase.diff | Structured git diff between two refs: files, hunks, stats, renames | | codebase.rankDiff | Rank changed files by review risk (churn weighted by import fan-in) |

Symbol navigation

The navigation tools are standard: they ship with the connector, backed by a tree-sitter symbol index (web-tree-sitter + tree-sitter-wasms) and ripgrep (@vscode/ripgrep), all installed as regular dependencies. No extra install steps are required.

  • The tree-sitter runtime loads lazily on the first navigation tool call, so commands that never navigate pay no startup cost.
  • If the ripgrep binary is unavailable (for example installs that run with --ignore-scripts, which skip its binary download), codebase.search and codebase.usages fall back to a built-in JS scanner with the same result shape, slower on large repositories.
  • Symbol indexing covers TypeScript and JavaScript (.ts, .tsx, .js, .jsx, .mts, .cts, .mjs, .cjs) in this release.
  • The index is cached in memory per process and, when the connector runs inside an FDEKit project (FDEKIT_PROJECT_DIR), persisted to the project's artifacts/cache/ keyed by codebase root. The connector never writes into the analyzed repository.
  • importedBy resolves relative import specifiers only; package imports and tsconfig path aliases are reported in imports but not followed.
  • fdekit doctor reports navigation readiness for this connector: whether the tree-sitter parser and grammars load, whether the ripgrep binary is present (or search is on the JS fallback), and the symbol-index cache status.

Public API surface

Import from the package root:

import { codebaseConnector } from '@fdekit/connector-codebase';
import type { CodebaseConnectorOptions, CodebaseSearchMatch } from '@fdekit/connector-codebase';

Root exports include codebaseConnector, CodebaseConnectorConfig, CodebaseConnectorOptions, CodebaseFileEntry, CodebaseListFilesArgs, CodebaseSearchArgs, CodebaseSearchMatch, CodebaseReadFileArgs, CodebaseReadFileResult, CodebaseSymbolKind, CodebaseSymbolEntry, CodebaseSymbolsArgs, CodebaseSymbolsResult, CodebaseUsagesArgs, CodebaseUsagesResult, CodebaseDepsArgs, CodebaseDepsResult, CodebaseContextArgs, CodebaseContextDefinition, and CodebaseContextResult. The connector family is summarized in the public API index: Public API Reference.

Stability/backward-compat notes

@fdekit/connector-codebase is public but pre-1.0. The package-root factory, option/result types, tool names, and default root-escape protections are compatibility-sensitive.

Since 0.5.0, codebase.search matches regular expressions (ripgrep syntax, case-sensitive) instead of case-insensitive literal substrings; escape special characters to match literal text (for example TODO\(fdekit\)).

Subpath imports are internal. The connector should continue to block reads that escape the configured root directory.

See also