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

@patrick-lai/commission-ai-workshop

v0.1.0

Published

The CommissionAI Workshop render engine: the three.js scene, archetypes, simulation, pets, robots, grammar and edit rules, as TypeScript source.

Readme

commission-ai-workshop

The render engine behind CommissionAI's Workshop: the three.js scene, the item archetypes, the resident simulation, pets, robots, the item grammar and the edit rules. It is TypeScript source with no build step. CommissionAI keeps a byte-identical copy at the same paths, so no import in the app changed when this code moved here.

What is in it

| Folder | Purpose | | --- | --- | | src/features/workshop/scene | The three.js scene: rooms, town and city views, ambience, previews, thumbnails, picking, replay and the frame loop (createWorkshopScene) | | src/features/workshop/archetypes | The item archetypes, as parts built from the grammar | | src/features/workshop/sim | Grid, pathing, placement and the director that moves residents, pets and robots | | src/features/workshop/pets, robots | Pet and robot bodies and poses | | src/features/workshop/grammar | Part types, the registry and the shared helpers the archetypes use | | src/features/workshop/edit | Layout and snapping for the edit mode | | src/features/workshop/rules.ts | Hosting, slot and completion rules shared by the edit mode and the scene | | src/features/workshop/communityAssets.ts | The registry that renders community-made item and pet geometry |

These are the only files that ship in the npm package, along with this README and the licence. The tests in tests/ do not ship; they live in the repository.

What is not here

The Workshop panels, stores, daemon, routes and wire types are not part of this package. They use the app's state, API client and design system, and the wire types are generated from the daemon. The engine only reads the wire types.

The host contract

The engine imports a few modules by relative path, so a host mirrors the CommissionAI layout. The repository holds an unpinned snapshot of each one so the engine can be typechecked and tested alone. The snapshot is not shipped and the host provides the real modules.

| Path | The engine uses | Snapshot | | --- | --- | --- | | src/lib/uiZoom.ts | uiZoom(): number and layoutLocal(client: number, origin: number): number, to turn pointer coordinates into layout coordinates when the app zooms its text size | exact copy | | src/lib/releaseCheck.ts | attachReleaseCheckScene(scene), which returns a bench to report frames to, or null when no release check is running | exact copy | | src/design/AgentMark.ts (or .tsx) | agentBrand(id: string): { name; color; ink; bg }, the label and colours of an agent | reduced to agentBrand; the real file also draws the marks | | src/protocol/generated/index.ts | Types only: the 74 Workshop* wire types the engine reaches | pruned to those 74 types | | src/protocol/generated/workshop*.ts | Catalog and archetype data that the tests load | exact copies, except that workshopDemoCatalog.ts drops a company name from its demo item names | | src/features/workshop/townView.ts, src/dev/demoTown.ts | A town fixture for the tests only; the engine never imports them | exact copies | | tests/mock.ts, tests/vitest.setup.ts | Test helpers (defined, partial) | exact copies |

The engine also needs three at 0.186.1, a DOM and WebGL at run time, and Vite's import.meta.env.MODE and DEV.

Pinned files

CommissionAI pins a copy of these paths by tree hash. Change them here, publish, then sync; a hand edit in the app fails its lint.

  • src/features/workshop/{scene,archetypes,sim,pets,robots,grammar,edit}
  • src/features/workshop/rules.ts and src/features/workshop/communityAssets.ts
  • the tests/workshop* files that run against this package: 62 test files and 4 helpers, found by name prefix in scripts/extracted.json in the app

Everything else under src/, tests/ and the root is this repository's own, or the host snapshot above. The other 50 workshop* tests exercise the app's panels and stores, so they stay in the app.

Develop

npm ci
npm run typecheck
npm test

The TypeScript flags are the app's: strict, noUncheckedIndexedAccess, exactOptionalPropertyTypes, noImplicitReturns and noImplicitOverride stay on. The app's lint rules apply to this source too: no comments, any, double casts or non-null assertions. Narrow instead.

Use it in CommissionAI

bash scripts/python.sh scripts/extracted.py sync workshop <checkout of this repository>

License

MIT