From 3b53ddbdbe7dc4a0c636d1dbf1d269915ea0ef09 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Thu, 11 Jun 2026 16:49:17 -0700 Subject: [PATCH] chore: rename ClawHub admin package (#2599) --- .agents/skills/autoreview/SKILL.md | 2 +- .agents/skills/clawhub-moderation/SKILL.md | 15 ++---- bun.lock | 8 +-- convex/users.ts | 2 +- docs/cli.md | 2 +- e2e/clawhub.e2e.test.ts | 8 +-- knip.config.ts | 6 +-- package.json | 13 +++-- .../{clawhub-mod => clawhub-admin}/README.md | 26 ++++----- packages/clawhub-admin/bin/clawhub-admin.js | 2 + .../package.json | 10 ++-- .../scripts/build.mjs | 0 .../scripts/typecheck.mjs | 0 .../src/buildInfo.ts | 10 ++-- .../{clawhub-mod => clawhub-admin}/src/cli.ts | 53 +++---------------- .../src/commands/email.test.ts | 2 +- .../src/commands/email.ts | 0 .../src/commands/moderation.test.ts | 0 .../src/commands/moderation.ts | 0 .../src/commands/orgs.test.ts | 2 +- .../src/commands/orgs.ts | 0 .../src/commands/packages.test.ts | 0 .../src/commands/packages.ts | 0 .../tsconfig.json | 0 .../vitest.config.ts | 0 packages/clawhub-mod/bin/clawhub-mod.js | 2 - .../clawhub/src/cli/commands/packages.test.ts | 2 +- .../test-artifact/cli.artifact.test.ts | 12 ++++- scripts/package-layout.test.ts | 42 +++++++++++++++ specs/security-moderation.md | 4 +- .../2026-06-03-clawhub-scan-command-design.md | 16 +++--- .../2026-06-03-clawhub-scan-command-plan.md | 16 +++--- tsconfig.oxlint.json | 2 +- 33 files changed, 126 insertions(+), 131 deletions(-) rename packages/{clawhub-mod => clawhub-admin}/README.md (84%) create mode 100755 packages/clawhub-admin/bin/clawhub-admin.js rename packages/{clawhub-mod => clawhub-admin}/package.json (75%) rename packages/{clawhub-mod => clawhub-admin}/scripts/build.mjs (100%) rename packages/{clawhub-mod => clawhub-admin}/scripts/typecheck.mjs (100%) rename packages/{clawhub-mod => clawhub-admin}/src/buildInfo.ts (92%) rename packages/{clawhub-mod => clawhub-admin}/src/cli.ts (93%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/email.test.ts (98%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/email.ts (100%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/moderation.test.ts (100%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/moderation.ts (100%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/orgs.test.ts (99%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/orgs.ts (100%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/packages.test.ts (100%) rename packages/{clawhub-mod => clawhub-admin}/src/commands/packages.ts (100%) rename packages/{clawhub-mod => clawhub-admin}/tsconfig.json (100%) rename packages/{clawhub-mod => clawhub-admin}/vitest.config.ts (100%) delete mode 100755 packages/clawhub-mod/bin/clawhub-mod.js create mode 100644 scripts/package-layout.test.ts diff --git a/.agents/skills/autoreview/SKILL.md b/.agents/skills/autoreview/SKILL.md index 27797f15..d3848498 100644 --- a/.agents/skills/autoreview/SKILL.md +++ b/.agents/skills/autoreview/SKILL.md @@ -55,7 +55,7 @@ Pick the smallest proof that matches the touched surface: | Formatting/lint/static repo health | `bun run ci:static` | | Unit-tested source behavior | focused `bunx vitest run ...`, then `bun run ci:unit` when PR-ready | | Convex code | read `convex/_generated/ai/guidelines.md` first; run focused tests and the deploy/typecheck path that covers the change | -| Packages/CLI/mod tool | `bun run ci:packages` or the package-specific `verify` script | +| Packages/CLI/admin tool | `bun run ci:packages` or the package-specific `verify` script | | Runtime/build/package surface | `bun run ci:types-build`, `bun run ci:e2e-http`, or the matching broader gate | | UI behavior | use `clawhub-ui-proof` with `proof:ui`; publish proof before final PR comments when needed | | Linux/CI-parity validation | use `crabbox`, normally through the repo scripts | diff --git a/.agents/skills/clawhub-moderation/SKILL.md b/.agents/skills/clawhub-moderation/SKILL.md index 1a55e847..fc88bacb 100644 --- a/.agents/skills/clawhub-moderation/SKILL.md +++ b/.agents/skills/clawhub-moderation/SKILL.md @@ -1,6 +1,6 @@ --- name: clawhub-moderation -description: "Use for ClawHub staff moderation actions with the repo-local clawhub-mod/admin tool: skills, users, org publishers, plugin packages, trusted publishers, official publishers, and guarded staff email." +description: "Use for ClawHub staff moderation actions with the repo-local ClawHub admin tool: skills, users, org publishers, plugin packages, trusted publishers, official publishers, and guarded staff email." --- # ClawHub Moderation @@ -95,13 +95,6 @@ bun run admin -- users remediate-autobans --apply --reason "" Use `--id` when `` is a user id. Use `--fuzzy` only when the user has asked for fuzzy handle resolution or the exact handle is ambiguous. -The old top-level aliases still exist for user commands: - -```sh -bun run admin -- ban-user --reason "" --yes -bun run admin -- unban-user --reason "" --yes -``` - ### Org Publishers `bun run admin -- org --help` exposes: @@ -208,11 +201,11 @@ only after admin auth succeeds. - `skills unhide` is a moderator manual restore. It clears skill hidden state, applies a clean manual override to top-level moderation fields, preserves version-level scanner records, updates public stats, and writes audit logs. -- There is no standalone `skills hide` command in `clawhub-mod`; use report +- There is no standalone `skills hide` command in `clawhub-admin`; use report triage with `--action hide` when resolving a report that should hide a skill. -- `ban-user` is disruptive: it revokes API tokens, marks the user deleted, +- `users ban` is disruptive: it revokes API tokens, marks the user deleted, hides owned skills, soft-deletes comments, and writes audit logs. -- `unban-user` is admin-only. It clears ban state and restores skills that were +- `users unban` is admin-only. It clears ban state and restores skills that were hidden by the matching ban flow; revoked API tokens stay revoked. - `packages transfer` preserves the package row, stats, releases, and history; it changes the owner publisher. diff --git a/bun.lock b/bun.lock index b505a526..e9a0ace1 100644 --- a/bun.lock +++ b/bun.lock @@ -107,11 +107,11 @@ "typescript": "6.0.3", }, }, - "packages/clawhub-mod": { - "name": "@openclaw/clawhub-mod", + "packages/clawhub-admin": { + "name": "@openclaw/clawhub-admin", "version": "0.1.2", "bin": { - "clawhub-mod": "bin/clawhub-mod.js", + "clawhub-admin": "bin/clawhub-admin.js", }, "dependencies": { "@clack/prompts": "1.5.1", @@ -321,7 +321,7 @@ "@oozcitak/util": ["@oozcitak/util@10.0.0", "", {}, "sha512-hAX0pT/73190NLqBPPWSdBVGtbY6VOhWYK3qqHqtXQ1gK7kS2yz4+ivsN07hpJ6I3aeMtKP6J6npsEKOAzuTLA=="], - "@openclaw/clawhub-mod": ["@openclaw/clawhub-mod@workspace:packages/clawhub-mod"], + "@openclaw/clawhub-admin": ["@openclaw/clawhub-admin@workspace:packages/clawhub-admin"], "@openclaw/plugin-inspector": ["@openclaw/plugin-inspector@0.3.12", "", { "bin": { "plugin-inspector": "src/cli.js" } }, "sha512-Odj7qfvaz9ZC7BUGvbB5i9nSnhaXWn+DVl1a/D+hHpSwq8NAhWNs9j0XKSZPZUVRi8MT67tiNeIkXuBJ3hc8Aw=="], diff --git a/convex/users.ts b/convex/users.ts index 8b26bea9..9d046350 100644 --- a/convex/users.ts +++ b/convex/users.ts @@ -3181,7 +3181,7 @@ export const recordStaffEmailAttemptAuditInternal = internalMutation({ subject: args.subject, providerId: null, status: "attempted", - source: "clawhub-mod.email", + source: "clawhub-admin.email", }, createdAt: Date.now(), }); diff --git a/docs/cli.md b/docs/cli.md index 52c65058..71c41186 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -196,7 +196,7 @@ clawhub skill publish ./my-skill --version 1.0.0 - Requires `clawhub login`. - Runs ClawHub ClawScan through `POST /api/v1/skills/-/scan`, then polls until the scan is terminal. - Scans are asynchronous and may take time to complete. While queued, the terminal spinner shows the current prioritized scan position and how many scans are ahead. -- Published scans require ownership or publisher management access. Moderators/admins can use the same backend through `clawhub-mod`. +- Published scans require ownership or publisher management access. Moderators/admins can use the same backend through `clawhub-admin`. - `--update` is valid only with `--slug`; it writes successful published scan results back to the selected version. - `--output ` downloads the full report archive with `manifest.json`, `clawscan.json`, `skillspector.json`, `static-analysis.json`, `virustotal.json`, and `README.md`. - `--json` prints the full poll response for automation. diff --git a/e2e/clawhub.e2e.test.ts b/e2e/clawhub.e2e.test.ts index b880e031..4312cd5c 100644 --- a/e2e/clawhub.e2e.test.ts +++ b/e2e/clawhub.e2e.test.ts @@ -388,7 +388,7 @@ describe("clawhub e2e", () => { } }); - itIfAdminAndUserTokens("shows moderator CLI commands only in admin help", async () => { + itIfAdminAndUserTokens("does not expose removed admin compatibility aliases", async () => { const registry = getRegistry(); const site = getSite(); const { adminToken, userToken } = await resolveRoleHelpTokens(registry); @@ -434,9 +434,9 @@ describe("clawhub e2e", () => { ); expect(adminResult.status).toBe(0); - expect(adminResult.stdout).toContain("ban-user"); - expect(adminResult.stdout).toContain("unban-user"); - expect(adminResult.stdout).toContain("set-role"); + expect(adminResult.stdout).not.toContain("ban-user"); + expect(adminResult.stdout).not.toContain("unban-user"); + expect(adminResult.stdout).not.toContain("set-role"); expect(userResult.status).toBe(0); expect(userResult.stdout).not.toContain("ban-user"); expect(userResult.stdout).not.toContain("unban-user"); diff --git a/knip.config.ts b/knip.config.ts index 1669e1aa..d97615ce 100644 --- a/knip.config.ts +++ b/knip.config.ts @@ -85,9 +85,9 @@ const config = { "vitest*.ts!", ], }, - "packages/clawhub-mod": { + "packages/clawhub-admin": { entry: [ - "bin/clawhub-mod.js!", + "bin/clawhub-admin.js!", "scripts/build.mjs!", "scripts/typecheck.mjs!", "src/cli.ts!", @@ -104,7 +104,7 @@ const config = { "../clawhub/src/**/*.ts!", "vitest*.ts!", ], - // The moderator build emits selected public CLI helpers into its own dist. + // The admin build emits selected public CLI helpers into its own dist. ignoreDependencies: [ "arktype", "fflate", diff --git a/package.json b/package.json index 4ff58a1d..c363ef1a 100644 --- a/package.json +++ b/package.json @@ -3,23 +3,23 @@ "private": true, "workspaces": [ "packages/clawhub", - "packages/clawhub-mod", + "packages/clawhub-admin", "packages/schema" ], "type": "module", "scripts": { - "admin": "bun packages/clawhub-mod/src/cli.ts", + "admin": "bun packages/clawhub-admin/src/cli.ts", "build": "vite build && bun scripts/copy-og-assets.ts", "check": "bun run lint", "check:peers": "bun scripts/check-peer-deps.ts", "check:secrets": "bun scripts/check-staged-secrets.mjs", "ci:e2e-http": "bun run test:e2e:prod-http && bunx vitest run -c vitest.e2e.config.ts e2e/clawhub.e2e.test.ts --testNamePattern \"prints CLI version|search endpoint returns a results array|cli search does not error|cli scan rejects local folders|cli scan download fetches a stored submitted-version scan report|package publish --dry-run from a GitHub repo|package publish --dry-run --json|package publish exits non-zero when Plugin Inspector hard errors block publish|package publish exits zero and prints Plugin Inspector warnings|package publish help shows|skill verify help omits the redundant json flag|skill verify accepts the legacy json flag\" && bunx vitest run -c vitest.e2e.config.ts e2e/permissions.e2e.test.ts", - "ci:packages": "bun run --cwd packages/schema build && bun run --cwd packages/clawhub verify && bun run --cwd packages/clawhub-mod verify", + "ci:packages": "bun run --cwd packages/schema build && bun run --cwd packages/clawhub verify && bun run --cwd packages/clawhub-admin verify", "ci:playwright": "VITE_CONVEX_URL=https://wry-manatee-359.convex.cloud VITE_CONVEX_SITE_URL=https://wry-manatee-359.convex.site bun run build && VITE_CONVEX_URL=https://wry-manatee-359.convex.cloud VITE_CONVEX_SITE_URL=https://wry-manatee-359.convex.site bun run test:pw", "ci:playwright-smoke": "VITE_CONVEX_URL=https://wry-manatee-359.convex.cloud VITE_CONVEX_SITE_URL=https://wry-manatee-359.convex.site bun run build && VITE_CONVEX_URL=https://wry-manatee-359.convex.cloud VITE_CONVEX_SITE_URL=https://wry-manatee-359.convex.site bun run test:pw -- --project=chromium e2e/ci-smoke.pw.test.ts e2e/public-routes-smoke.pw.test.ts", "ci:pr": "bun run ci:static && bun run ci:unit && bun run ci:packages && bun run ci:types-build && bun run ci:e2e-http", "ci:static": "bun run check:peers && bun audit --ignore GHSA-rmmr-r34h-pfm5 && bun run format:check && bun run lint && bun run deadcode:ci", - "ci:types-build": "bunx tsc --noEmit && bunx tsc -p packages/schema/tsconfig.json --noEmit && bunx tsc -p packages/clawhub/tsconfig.json --noEmit && bun run --cwd packages/clawhub-mod typecheck && VITE_CONVEX_URL=https://example.invalid bun run build", + "ci:types-build": "bunx tsc --noEmit && bunx tsc -p packages/schema/tsconfig.json --noEmit && bunx tsc -p packages/clawhub/tsconfig.json --noEmit && bun run --cwd packages/clawhub-admin typecheck && VITE_CONVEX_URL=https://example.invalid bun run build", "ci:unit": "VITE_CONVEX_URL=https://example.invalid bun run coverage", "clawscan:local": "bun scripts/local-clawscan-dry-run.ts", "convex:deploy": "bunx convex deploy --typecheck=disable --yes", @@ -45,9 +45,8 @@ "format:check": "oxfmt --check", "install:local-hooks": "bun scripts/install-git-hooks.mjs", "lint": "bun run lint:oxlint", - "lint:fix": "oxlint --type-aware --tsconfig ./tsconfig.oxlint.json ./src ./convex ./packages/clawhub/src ./packages/clawhub-mod/src ./packages/schema/src --fix && bun run format", - "lint:oxlint": "oxlint --type-aware --tsconfig ./tsconfig.oxlint.json ./src ./convex ./packages/clawhub/src ./packages/clawhub-mod/src ./packages/schema/src", - "mod": "bun packages/clawhub-mod/src/cli.ts", + "lint:fix": "oxlint --type-aware --tsconfig ./tsconfig.oxlint.json ./src ./convex ./packages/clawhub/src ./packages/clawhub-admin/src ./packages/schema/src --fix && bun run format", + "lint:oxlint": "oxlint --type-aware --tsconfig ./tsconfig.oxlint.json ./src ./convex ./packages/clawhub/src ./packages/clawhub-admin/src ./packages/schema/src", "preinstall": "bunx only-allow bun", "preview": "bun --bun vite preview", "proof:publish": "node scripts/ui-proof-publish.mjs", diff --git a/packages/clawhub-mod/README.md b/packages/clawhub-admin/README.md similarity index 84% rename from packages/clawhub-mod/README.md rename to packages/clawhub-admin/README.md index 3e5d647a..050ceb95 100644 --- a/packages/clawhub-mod/README.md +++ b/packages/clawhub-admin/README.md @@ -1,12 +1,12 @@ -# ClawHub Moderator CLI +# ClawHub Admin CLI -Private operator CLI for ClawHub platform moderation and moderator-only package operations. +Private operator CLI for ClawHub platform moderation and staff-only package operations. This package is intentionally marked `private: true`. Do not publish it to npm. Run it from a checked-out ClawHub repo so maintainers always use the current repo code. -`clawhub-mod` reuses the public CLI's auth, config, HTTP, and schema helpers, +`clawhub-admin` reuses the public CLI's auth, config, HTTP, and schema helpers, but it is a separate maintainer command surface. Commands call the existing RBAC-gated entity endpoints, such as `/api/v1/users/*` and `/api/v1/packages/*`; there is no separate moderator API namespace. @@ -29,8 +29,8 @@ bun run admin -- skills unhide maxhub-pipixia --reason "VT false positive; reana ## Build and Verify ```bash -bun run --cwd packages/clawhub-mod build -bun run --cwd packages/clawhub-mod verify +bun run --cwd packages/clawhub-admin build +bun run --cwd packages/clawhub-admin verify ``` For full package coverage from the repo root: @@ -41,11 +41,11 @@ bun run ci:packages ## Local E2E -Use an isolated config path so moderator testing never overwrites your normal +Use an isolated config path so admin testing never overwrites your normal `clawhub` CLI login: ```bash -export CLAWHUB_CONFIG_PATH=/tmp/clawhub-mod-local-config.json +export CLAWHUB_CONFIG_PATH=/tmp/clawhub-admin-local-config.json ``` Point `--registry` at the Convex HTTP actions URL, usually @@ -64,7 +64,7 @@ CONVEX_AGENT_MODE=anonymous bunx convex dev --local --typecheck=disable ``` In another shell, seed the local role fixture and use the returned admin token -for moderator commands: +for admin commands: ```bash CONVEX_AGENT_MODE=anonymous bunx convex run --no-push devSeed:seedCliRoleHelpFixtures @@ -89,14 +89,6 @@ bun run admin -- users reclassify-ban --reason [--id] [--fuz bun run admin -- users remediate-autobans [--dry-run|--apply] [--user ] [--id] [--since ] [--limit ] [--cursor ] [--all] [--json] ``` -The old top-level names are also available on the moderator binary: - -```bash -bun run admin -- ban-user -bun run admin -- unban-user -bun run admin -- set-role -``` - Org publisher administration: ```bash @@ -107,7 +99,7 @@ bun run admin -- org official remove --reason [--yes] [--json] ``` `org create` requires `--member` and defaults that member to `owner`; it does -not add the moderator running the command as an org member. +not add the admin running the command as an org member. Package moderation and operations: diff --git a/packages/clawhub-admin/bin/clawhub-admin.js b/packages/clawhub-admin/bin/clawhub-admin.js new file mode 100755 index 00000000..aa7522c9 --- /dev/null +++ b/packages/clawhub-admin/bin/clawhub-admin.js @@ -0,0 +1,2 @@ +#!/usr/bin/env node +import "../dist/clawhub-admin/src/cli.js"; diff --git a/packages/clawhub-mod/package.json b/packages/clawhub-admin/package.json similarity index 75% rename from packages/clawhub-mod/package.json rename to packages/clawhub-admin/package.json index 3d3c2b74..57df1008 100644 --- a/packages/clawhub-mod/package.json +++ b/packages/clawhub-admin/package.json @@ -1,17 +1,17 @@ { - "name": "@openclaw/clawhub-mod", + "name": "@openclaw/clawhub-admin", "version": "0.1.2", "private": true, - "description": "Moderator-only ClawHub operator CLI for platform moderation and package operations.", + "description": "Admin-only ClawHub operator CLI for platform moderation and package operations.", "homepage": "https://clawhub.ai", "license": "UNLICENSED", "repository": { "type": "git", "url": "https://github.com/openclaw/clawhub.git", - "directory": "packages/clawhub-mod" + "directory": "packages/clawhub-admin" }, "bin": { - "clawhub-mod": "bin/clawhub-mod.js" + "clawhub-admin": "bin/clawhub-admin.js" }, "files": [ "bin", @@ -21,7 +21,7 @@ "type": "module", "scripts": { "build": "node ./scripts/build.mjs", - "dev": "node --enable-source-maps dist/clawhub-mod/src/cli.js", + "dev": "node --enable-source-maps dist/clawhub-admin/src/cli.js", "test": "vitest run -c vitest.config.ts", "typecheck": "node ./scripts/typecheck.mjs", "verify": "bun run test && bun run typecheck && bun run build" diff --git a/packages/clawhub-mod/scripts/build.mjs b/packages/clawhub-admin/scripts/build.mjs similarity index 100% rename from packages/clawhub-mod/scripts/build.mjs rename to packages/clawhub-admin/scripts/build.mjs diff --git a/packages/clawhub-mod/scripts/typecheck.mjs b/packages/clawhub-admin/scripts/typecheck.mjs similarity index 100% rename from packages/clawhub-mod/scripts/typecheck.mjs rename to packages/clawhub-admin/scripts/typecheck.mjs diff --git a/packages/clawhub-mod/src/buildInfo.ts b/packages/clawhub-admin/src/buildInfo.ts similarity index 92% rename from packages/clawhub-mod/src/buildInfo.ts rename to packages/clawhub-admin/src/buildInfo.ts index a0fcf188..fff8b6be 100644 --- a/packages/clawhub-mod/src/buildInfo.ts +++ b/packages/clawhub-admin/src/buildInfo.ts @@ -23,7 +23,7 @@ function findPackageJson(start: string) { if (existsSync(candidate)) { try { const pkg = JSON.parse(readFileSync(candidate, "utf8")) as { name?: string }; - if (pkg.name === "@openclaw/clawhub-mod") return candidate; + if (pkg.name === "@openclaw/clawhub-admin") return candidate; } catch { // keep walking } @@ -43,7 +43,7 @@ function shortCommit(value: string) { function getCliCommit() { const candidates = [ - process.env.CLAWHUB_MOD_COMMIT, + process.env.CLAWHUB_ADMIN_COMMIT, process.env.CLAWHUB_COMMIT, process.env.CLAWDHUB_COMMIT, process.env.VERCEL_GIT_COMMIT_SHA, @@ -58,12 +58,12 @@ function getCliCommit() { return readGitCommitFromCwd(); } -export function getModeratorCliVersion() { +export function getAdminCliVersion() { return readPackageVersion(); } -export function getModeratorCliBuildLabel() { - const version = getModeratorCliVersion(); +export function getAdminCliBuildLabel() { + const version = getAdminCliVersion(); const commit = getCliCommit(); return commit ? `v${version} (${commit})` : `v${version}`; } diff --git a/packages/clawhub-mod/src/cli.ts b/packages/clawhub-admin/src/cli.ts similarity index 93% rename from packages/clawhub-mod/src/cli.ts rename to packages/clawhub-admin/src/cli.ts index af00c7e2..593a1299 100644 --- a/packages/clawhub-mod/src/cli.ts +++ b/packages/clawhub-admin/src/cli.ts @@ -21,7 +21,7 @@ import { import { DEFAULT_REGISTRY, DEFAULT_SITE } from "../../clawhub/src/cli/registry.js"; import type { GlobalOpts } from "../../clawhub/src/cli/types.js"; import { fail } from "../../clawhub/src/cli/ui.js"; -import { getModeratorCliBuildLabel, getModeratorCliVersion } from "./buildInfo.js"; +import { getAdminCliBuildLabel, getAdminCliVersion } from "./buildInfo.js"; import { cmdSendStaffEmail } from "./commands/email.js"; import { cmdBanUser, @@ -56,13 +56,13 @@ import { } from "./commands/packages.js"; const program = new Command() - .name("clawhub-mod") + .name("clawhub-admin") .description( - `${styleTitle(`ClawHub Moderator CLI ${getModeratorCliBuildLabel()}`)}\n${styleEnvBlock( + `${styleTitle(`ClawHub Admin CLI ${getAdminCliBuildLabel()}`)}\n${styleEnvBlock( "platform-only moderation, user administration, and package operations.", )}`, ) - .version(getModeratorCliVersion(), "-V, --cli-version", "Show CLI version") + .version(getAdminCliVersion(), "-V, --cli-version", "Show CLI version") .option("--workdir ", "Working directory (default: cwd)") .option("--dir ", "Skills directory (relative to workdir, default: skills)") .option("--site ", "Site base URL (for browser login)") @@ -73,7 +73,7 @@ const program = new Command() .addHelpText( "after", styleEnvBlock( - "\nEnv:\n CLAWHUB_SITE\n CLAWHUB_REGISTRY\n CLAWHUB_WORKDIR\n CLAWHUB_MOD_COMMIT\n", + "\nEnv:\n CLAWHUB_SITE\n CLAWHUB_REGISTRY\n CLAWHUB_WORKDIR\n CLAWHUB_ADMIN_COMMIT\n", ), ); @@ -144,7 +144,7 @@ program .command("login") .description("Log in (opens browser or stores token)") .option("--token ", "API token") - .option("--label