mirror of
https://github.com/hanzoai/market.git
synced 2026-10-30 14:39:25 +00:00
- Repo transferred hanzobot/hub → hanzoai/market (matches owned hanzo.market domain) - npm package: bothub → @hanzoai/market, packages/bothub → packages/market - bothub-schema → @hanzoai/market-schema - CLI binary: bothub → market - Brand: Bot Hub → Hanzo Market across ~95 user-facing surfaces (README, docs, k8s, Dockerfile, public/manifest.json, OG image, CLI banner, site config, theme) - Brand-neutral white-label: src/brand/ owns BrandConfig + BrandTheme + loader, public/brands/<id>.json presets for hanzo, zoo, lux, pars, liquidity, generic - BRAND_ID env at build picks default; ConfigMap-mounted brand.json overrides at runtime - Legacy paths retained for compat: ~/.bothub, .bothubignore, /.well-known/bothub.json, bothub-theme localStorage key, LEGACY_HOSTS for hub.hanzo.bot/clawhub.ai - Fixed broken sed-replace artifacts in packages/market/src/cli/botConfig.test.ts - Drops Clawd/OpenClaw dead brand surface, keeps Clawdis* schema types and clawd skill directory paths (backward compat for installed bot products)
1.9 KiB
1.9 KiB
summary, read_when
| summary | read_when | ||
|---|---|---|---|
| System overview: web app + Convex backend + CLI + shared schema. |
|
Architecture
Pieces
- Web app: TanStack Start (React) under
src/. - Backend: Convex under
convex/(DB, storage, actions, HTTP routes). - CLI:
packages/market/(published as@hanzoai/market; binmarket; legacybothub). - Shared schemas/routes:
packages/schema/(@hanzoai/market-schema).
Data + storage
- Skill “bundle” = versioned set of text files stored in Convex
_storage. - Metadata extracted from
SKILL.mdfrontmatter. - Stats stored on
skills(downloads, installs, stars, comments, …).
Main flows
Browse (web)
- UI reads skill metadata + latest version from Convex queries/actions.
SKILL.mdrendered as Markdown.
Search (HTTP)
/api/v1/search?q=...routes to Convex action for vector search.- Embeddings currently generated during publish.
Install (CLI)
- Resolve latest version via
/api/v1/skills/<slug>. - Download zip via
/api/v1/download?slug=...&version=.... - Extract into
./skills/<slug>(default). - Persist install state:
./.market/lock.json(per workdir, legacy.bothub)./skills/<slug>/.market/origin.json(per skill folder, legacy.bothub)
Update (CLI)
- Hash local files, call
/api/v1/resolve?slug=...&hash=<sha256>. - If local matches a known version → use that for “current”.
- If local doesn’t match:
- refuse by default
- or overwrite with
--force
Publish (CLI)
- Publish via
POST /api/v1/skills(multipart; requires Bearer token).
Sync (CLI)
- Scan roots for skill folders (contain
SKILL.md). - Compute fingerprint; compare to registry state.
- Optionally reports telemetry (see
docs/telemetry.md). - Publishes new/changed skills (skips modified installed skills inside install root).