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

@arnilo/prism-rag

v0.0.25

Published

Optional bounded text and Markdown RAG primitives for Prism.

Readme

@arnilo/prism-rag

Optional bounded source lifecycle, document parsing, host reranking, ingestion status, and retrieval-augmented generation primitives for Prism. Reuses Embedder and VectorStore from @arnilo/prism-memory; no document framework, network loader, or core activation.

Install

npm install @arnilo/prism-rag @arnilo/prism-memory @arnilo/prism

Usage

import { createHashEmbedder, createMemoryVectorStore } from "@arnilo/prism-memory";
import { chunkMarkdown, createMemoryIngestionStatusStore, createRagContextProvider, listIngestionStatus, replaceSource } from "@arnilo/prism-rag";

const embedder = createHashEmbedder(); // demo/test only
const store = createMemoryVectorStore();
const scope = { tenantId: "t1", resourceId: "docs", corpusId: "handbook" };
const chunks = chunkMarkdown("# Approval\n\nRecheck policy before side effects.", {
  sourceId: "security-guide",
});
const statusStore = createMemoryIngestionStatusStore();
await replaceSource({ sourceId: "security-guide", chunks, embedder, store, scope, statusStore }); // atomic with the reference store
console.log(await listIngestionStatus({ store: statusStore, scope }));
const context = createRagContextProvider({ embedder, store, scope, topK: 4 });

API

  • chunkText() / chunkMarkdown() — deterministic boundary-aware character chunks with overlap and stable citations.
  • indexChunks() — bounded batch embedding and scoped vector upsert.
  • replaceSource() / deleteSource() — exact-scope source lifecycle; replacement requires transactional getBySource() storage.
  • replaceDocument() + DocumentLoader / Parser — host-authorized load, bounded parse, chunk, and replacement.
  • textParser / markdownParser / htmlParser / pdfParser — focused reference parsers (./parsers); createResourceDocumentLoader / createWebFetchDocumentLoader are in ./loaders.
  • retrieveContext() — bounded candidate query, optional host Reranker, shallow metadata filter, top-K hits, attributable citations, and untrusted/inert/injection-capable trust metadata.
  • createMemoryIngestionStatusStore() / listIngestionStatus() — optional capped exact-scope pending/indexed/failed/partial source progress; implement IngestionStatusStore for durable status.
  • createRagContextProvider() — explicit inert context injection through Prism's existing seam.

Security

Every operation requires tenant/resource/corpus scope. Configure redactor or secrets before external embedding/persistence. Package performs no I/O: resource loading delegates to a host ResourceLoader, and web loading delegates to an existing web-tools adapter. Replacement fails closed without a scoped transaction; rerankers get redacted finite candidates and cannot alter canonical provenance/trust; HTML/PDF/web output is untrusted inert context and grants no tools or permissions.

See RAG.