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

@intentius/chant-lexicon-cpln

v0.93.0

Published

Control Plane (cpln) lexicon for chant — declarative IaC in TypeScript

Readme

@intentius/chant-lexicon-cpln

Control Plane (cpln) lexicon for chant — GVCs, workloads, identities and secrets as typed TypeScript.

Types are generated from Control Plane's served OpenAPI document, so they track the real API.

npm install --save-dev @intentius/chant-lexicon-cpln

What it looks like

import { GvcEnvironment, ServerlessService } from "@intentius/chant-lexicon-cpln";

export const { gvc } = GvcEnvironment({
  name: "prod",
  org: "acme",
  locations: ["aws-us-east-1"],     // placement is GVC-level
});

export const { workload } = ServerlessService({
  name: "web",
  gvc: "prod",
  image: "nginx:1.27",
  port: 8080,
  inboundAllowCidr: ["0.0.0.0/0"],  // the firewall starts closed
});

chant build emits multi-document YAML for cpln apply --file. Each document carries its own gvc: key, so the file is self-contained rather than depending on a --gvc flag.

The kinds

Org-scoped: Gvc, Secret, Policy, Domain, IpSet. GVC-scoped (each takes a required gvc): Workload, Identity, VolumeSet.

Org-administration kinds (group, serviceaccount, cloudaccount, auditctx, agent, user) and mk8s are not modelled yet — each is a row in src/kinds.ts away, and chant cpln coverage reports the gap rather than hiding it.

What the checks are for

Control Plane accepts several plausible-looking configurations and then quietly does nothing with them. The 22 CPL rules are weighted toward exactly those:

| | | |---|---| | CPL013 | A policy binding against //identity/NAME is accepted and silently ignored — only //gvc/GVC/identity/NAME grants anything | | CPL014 | cpln://secret/db with no .field resolves to nothing at runtime | | CPL026 | minScale: 0 on a strategy that cannot scale to zero holds at one replica, with no error | | CPL027 | Capacity AI is on by default and conflicts with CPU autoscaling, multi-metric autoscaling, and GPUs | | CPL023 | memory(MiB) / cpu(millicores) must be ≤ 8 — a memory-heavy, CPU-light workload is rejected |

Passing a declared resource where a link belongs sidesteps the first of these entirely: the serializer emits the correct link for its kind, GVC qualifier included.

Live state

Every kind carries a free-form tags map, which is where chant stamps its ownership marker. That is what makes chant plan precise without a state file.

CPLN_ORG=acme CPLN_TOKEN=$(cat sa-key) chant plan

Use the env var rather than --token; the flag leaks into process listings and logs.

Development

just generate    # regenerate types from the upstream spec
just validate    # check the generated artifacts
just snapshot    # refresh the committed offline spec snapshot
just docs        # build and serve the docs site

Project structure

  • src/kinds.ts — the kind table every subsystem agrees on
  • src/plugin.ts — the LexiconPlugin entry point
  • src/serializer.ts — cpln apply manifest output
  • src/spec/ — OpenAPI fetch, offline snapshot, and parser
  • src/codegen/ — generation pipeline, naming, packaging, docs
  • src/lint/ — source-level rules, post-synth checks, audit catalog
  • src/composites/ — GvcEnvironment, ServerlessService, CronJob, StatefulService, SecretAccess, PublicDomain
  • src/describe-resources.ts — live observation
  • src/generated/ — generated artifacts (do not edit)

Full documentation →