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

@renderyes/site-sdk

v0.1.1

Published

Customer site, surface, component, theme, and A2UI registration SDK for RenderYes.

Readme

@renderyes/site-sdk

The site SDK is the host-facing registration layer for RenderYes. It adds validated site, surface, theme, semantic-component, and renderer-binding definitions on top of @renderyes/core.

import { defineComponent, defineProps, field } from "@renderyes/site-sdk";

const TicketQueue = defineComponent({
  id: "TicketQueue",
  version: "1.0.0",
  description: "The approved support ticket queue.",
  props: defineProps({
    density: field.enum(["comfortable", "compact"], {
      default: "comfortable",
    }),
  }),
  renderer: {
    component: "ResponsiveDataTable",
    props: {
      title: { path: "/tickets/title" },
      columns: { path: "/tickets/columns" },
      rows: { path: "/tickets/rows" },
    },
  },
  dataSlots: {
    rows: {
      accepts: [
        {
          dataTypeId: "SupportTicket",
          shapes: ["collection", "search-results"],
        },
      ],
    },
  },
});

The SDK validates cross-references and produces a deterministic manifest and registration fingerprint. compileSurfaceMessages() converts approved instances into A2UI messages without allowing model-authored component types or bindings. Registered renderer-binding keys are immutable: a model-visible component prop may not reuse or override a binding such as rows: { path: "/tickets/rows" }.

dataSlots declares only which capability result data a trusted component can render. A slot name must match an immutable owner-registered renderer path. Compatibility uses the external catalog's canonical dataTypeId and result shape.

Components do not declare or restrict filter, sort, aggregate, pagination, union, intersection, difference, or other query operations. Those permissions belong only to the capability catalog and the trusted executor.

validatePlanDataBindings() checks that a Plan 3.1 binding references a known capability and that its output type/shape fits the selected component slot. It does not execute the request or interpret the capability's supported operations.

projectPlanDataModel() accepts only executor-produced results for the same plan, stores their safe state/provenance/freshness in the reserved __renderyes envelope, and copies result data into immutable owner-registered renderer paths. It clears collection data and writes trusted error state when execution fails, rejects caller injection into the reserved envelope, and rejects conflicting writes to one fixed path.

compilePlanDataSurfaceMessages() combines that projection with the existing A2UI surface compiler for a flat semantic plan surface. The plan still contains request IDs only; it never supplies a renderer path.

The integration surface is exported from the package root. Consumers should import site, source, resolver, snapshot, manifest, and A2UI compilation contracts from @renderyes/site-sdk, never from internal source files.

The external capability catalog (@renderyes/capability-catalog) remains the source of truth for data types, capabilities, operations, policies, relationships, planner-safe metadata, and OpenAPI/GraphQL approval. This package owns site/component registration, result-to-component compatibility, and A2UI compilation, and introduces no second capability schema.

CLI workflow (the shipped binary is renderyes-site):

renderyes-site init ./my-site
renderyes-site scan ./my-site/renderyes.site.mjs
renderyes-site sync ./my-site/renderyes.site.mjs