Files
zeekay 6d0dd44bfd chore: flatten pkgs/packages/* → pkgs/* (one canonical pkgs dir)
ONE WAY ONLY: 'pkgs' is the canonical name for any directory holding
packages. The redundant 'pkgs/packages/' sub-level is dropped — every
package now lives at pkgs/<name>/ (with categorical sub-groups
pkgs/compiler/, pkgs/core/, pkgs/ui/ unchanged since they are
sub-systems, not just 'packages').

- mv pkgs/packages/* → pkgs/* (24 packages)
- rm pkgs/packages/hanzogui-dev-config (orphan: only had dist/ artifacts,
  no source; gui-dev-config is the canonical @hanzogui/dev-config)
- package.json workspaces: drop pkgs/packages glob, add ./pkgs/*
- tsconfig.json: rewrite paths + 15 references entries
- apps/{demos,kitchen-sink,gui.hanzo.ai}/tsconfig.json: reference paths
- .github/workflows/publish-gui.yml: directory walk list
- pkgs/{get,recipes}/package.json: repository.directory

bun.lock will regenerate on next install.
2026-05-27 17:33:42 -07:00

1.6 KiB

@hanzogui/get

Install Hanzo GUI recipes — composable screens and widgets built on @hanzogui/* primitives — into your project with one command.

Usage

npx @hanzogui/get                  # interactive picker
npx @hanzogui/get add sign-in-form # install a single recipe
npx @hanzogui/get list             # show all available recipes
npx @hanzogui/get init             # write gui.config.json

After global install (npm i -g @hanzogui/get), the command is hanzo-gui-get.

Recipes are vendored into src/gui/ by default. Override the destination by adding a gui.config.json at the project root:

{ "installDir": "src/components" }

How it works

hanzo-gui-get reads recipes from Hanzo Base at ${HANZO_BASE_URL}/v1/base/collections/gui_recipes/records. Each recipe is a small, self-contained .tsx file (or set of files) that composes @hanzogui/* primitives. Recipes can depend on other recipes; transitive deps are pulled in automatically.

Override the registry host:

HANZO_BASE_URL=https://base.staging.hanzo.ai npx @hanzogui/get

You still need @hanzogui/* primitives installed normally.

Publishing a recipe

Recipes live in hanzoai/gui at recipes/<slug>/{recipe.json, files/**}. To seed Base:

HANZO_BASE_ADMIN_TOKEN=… bun run scripts/seed-recipes.ts

The seed script creates the gui_recipes collection on first run if it doesn't exist, then upserts each recipe by slug.

What this is not

@hanzogui/get is a plain Node CLI — no terminal-UI framework, no React, no ink. Just stdout + readline. If you want a Hanzo TUI for building richer CLI apps, use @hanzo/tui (separate package).