7 Commits
Author SHA1 Message Date
zeekayandHanzo Dev ccdef7d8fb helper: the command is hanzo-helper — only the native binary is hanzo
@hanzo/[email protected] declared `"bin": {"hanzo": "dist/cli.js"}`, so
`npm i -g @hanzo/helper` put a second program named `hanzo` on PATH next to the
Hanzo CLI (v1.9.18, from hanzo.sh / brew). Whichever came first on PATH won, and
the two disagree about every verb: in the real CLI signing in is
`hanzo auth login`, and a bare `hanzo login` is swallowed as an AI task.

Renamed to `hanzo-helper`, and the same for the white-label builds:
lux-helper / zoo-helper / zen-helper. @hanzo/kms keeps `kms` — no collision.
Nothing is unpublished; 1.0.7 stays on npm.

The README's command table was the old bin name throughout, and its
"smart tiers" table documented `zen-auto` / `zen-normal` / `zen-pro` /
`zen-max` / `zen-code` / `zen-agent` as models you can ask for. The live
catalog has none of them — the authenticated /v1/models returns 105 ids whose
Zen family is zen5, zen5-coder, zen5-flash, zen5-mini, zen5-pro, enso,
enso-flash, enso-ultra plus the zen-<modality> models. Table cut; the README now
says to read the catalog. (`models.ts` already checks aliases against the live
catalog before printing them, so the code was honest and only the prose was not.)
`use --model` help stopped advertising the same six words.

In-program prose said `hanzo login` / `hanzo status` / `hanzo kms` in 15 files —
all now `hanzo-helper`, verified by running the built CLI.

Also dropped "every model (Claude, GLM, GPT, DeepSeek, Kimi, ...)" from the
opening: we describe our own catalog. Naming Claude Code and Codex stays — this
program's whole job is configuring them, which is a fact about the tool, not a
benchmark.

Left alone, for the model-routing owner: DEFAULT_MODEL is still the upstream id
`glm-5.2`, which commander prints as the advertised default of `--model`.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-01 13:38:01 -07:00
zeekay 7c9e87336e fix: KMS on its own host (kms.<brand>), stable doctor probes
Live infra drift (gateway redeploy): api.hanzo.ai/v1/kms is NOT proxied (404),
and the bare /health path moved (/health 404, /v1/health 200). Two fixes:

- KMS runs on its dedicated host kms.<brand> (kms.hanzo.ai, per IAM's per-brand
  KMSHost). Added brand.kms + endpoints.kms (HANZO_KMS_URL override); KMS client
  targets it instead of api.hanzo.ai/v1/kms. Verified live: kms.hanzo.ai/v1/kms/
  orgs/hanzo/secrets → 401 (gated, live).
- doctor now probes the STABLE endpoints the tool actually depends on — IAM
  /.well-known/openid-configuration + api /v1/models — not a bare /health that
  varies by gateway config. Both 200.
- kms-secrets action base-url default → kms.hanzo.ai.

Release 1.0.6 (helper + @hanzo/kms + lux/zoo/zen forks).
2026-06-30 22:37:29 -07:00
zeekay 211c8447a1 fix: npx regression + version drift; add standalone @hanzo/kms package
Two real bugs:
- npx @hanzo/helper broke when the kms bin was added — a package with TWO bins
  can't be run by 'npx <pkg>' (could not determine executable). Reverted helper
  to its single 'hanzo' bin; kms stays as 'hanzo kms' AND as its own package.
- version.ts was hardcoded '1.0.0' — 'hanzo --version' always lied. Now injected
  from package.json at build (tsup define __HANZO_VERSION__), one source of truth.

- packages/kms: new standalone @hanzo/kms (single 'kms' bin) that re-runs the
  helper's kms CLI via the new ./kms-cli export. npm i -g @hanzo/kms → 'kms'.
- exports: add ./kms-cli so the standalone package imports it cleanly.

Published: @hanzo/[email protected], @hanzo/[email protected], @luxfi/@zenlm/@zooai/[email protected].
2026-06-30 21:36:08 -07:00
zeekay 5181ec9b51 release: forks → 1.0.3 (match @hanzo/helper); normalize fork package.json
Bump @luxfi/@zenlm/@zooai/helper to 1.0.3 with @hanzo/helper ^1.0.3 (picks up
the get-account/health endpoint fixes + kms login). npm pkg fix: bin paths and
repository URL normalized so publishes are warning-free.
2026-06-30 21:30:55 -07:00
zeekay c3e378aa5a v1.0.1: expose ./cli subpath so brand forks can import the CLI
The forks (@luxfi/@zenlm/@zooai/helper) re-run our CLI with HANZO_BRAND set,
but exports only published '.', so import('@hanzo/helper/dist/cli.js') failed
with ERR_PACKAGE_PATH_NOT_EXPORTED. Add a stable './cli' export and point the
forks at @hanzo/helper/cli (not a deep dist path). Bump fork deps to ^1.0.1.
Fix stale zoo.id → zoolabs.id comment.

Published: @hanzo/[email protected], @luxfi/[email protected], @zenlm/[email protected],
@zooai/[email protected].
2026-06-30 13:42:45 -07:00
zeekay b7d7372209 brand: Zen login host is id.zenlm.org (we own zenlm.org, not zen.id)
zen.id is not a domain we control; use the id.<domain> pattern on the owned
domain (matches id.lux.network / id.zoo.network style). Zoo already correctly
uses zoolabs.id + api.zoo.ngo (no zoo.network).
2026-06-29 15:14:42 -07:00
zeekay ddf1b1779d Add brand white-labeling + lux/zoo/zen fork scaffolds
- brand.ts: one codebase, four ecosystems. HANZO_BRAND selects defaults for
  Hanzo (hanzo.id/api.hanzo.ai/hanzo-app), Lux (lux.id/api.lux.network/lux-app),
  Zoo (zoolabs.id/api.zoo.ngo/zoo-app), Zen (zen.id/api.zenlm.org/zen-app). IAM
  hosts verified against login/middleware.ts tenant map. Explicit
  HANZO_IAM_URL/API_URL/CLIENT_ID still override everything.
- endpoints.ts derives defaults from the active brand; CLI name/description are
  brand-aware so a fork shows its own identity (white-label rule: never show
  another brand).
- forks/{lux,zoo,zen}: thin packages (@luxfi/helper, @zooai/helper, @zenlm/helper)
  that set HANZO_BRAND and depend on @hanzo/helper — DRY, no code duplication.

Verified: all four brands resolve correct hosts; all three coding-tool targets
(Claude Code, Claude Desktop, Codex) round-trip configure/unconfigure cleanly.
2026-06-29 15:09:16 -07:00