cli command statehub register with install

This commit is contained in:
2026-06-05 13:09:25 +02:00
parent 1d986748a1
commit 3663bac6f7
6 changed files with 1062 additions and 3 deletions

View File

@@ -21,6 +21,8 @@ import urllib.error
import urllib.request
from pathlib import Path
from statehub_register import run_register as run_statehub_register
STATE_HUB_DIR = Path(__file__).resolve().parent
API_BASE = os.environ.get("API_BASE", "http://127.0.0.1:8000")
TEMPLATE = STATE_HUB_DIR / "scripts" / "project_claude_md.template"
@@ -468,11 +470,51 @@ def cmd_status(_args: argparse.Namespace) -> None:
def main() -> None:
parser = argparse.ArgumentParser(
prog="custodian",
prog=Path(sys.argv[0]).name,
description="Custodian State Hub CLI",
)
sub = parser.add_subparsers(dest="command", required=True)
# register
statehub_reg = sub.add_parser(
"register",
help="Register the current repo with State Hub and prime it for Codex",
)
statehub_reg.add_argument("--path", default=os.getcwd(), help="Repo directory (defaults to cwd)")
statehub_reg.add_argument("--domain", default=None, help="State Hub domain slug")
statehub_reg.add_argument("--repo-slug", default=None, help="Repo slug (auto-detected if omitted)")
statehub_reg.add_argument("--wp-prefix", default=None, help="Workplan prefix, e.g. STATE-WP")
statehub_reg.add_argument("--description", default=None, help="One-sentence repo description")
statehub_reg.add_argument(
"--intent",
default=None,
help="Repo intent text to use when INTENT.md is absent and inference is insufficient",
)
statehub_reg.add_argument("--api-base", default=API_BASE, help="State Hub API base URL")
statehub_reg.add_argument(
"--llm-provider",
default=os.environ.get("STATEHUB_REGISTER_LLM_PROVIDER", "claude-code"),
help="llm-connect provider: claude-code, openrouter, openai, gemini, or mock",
)
statehub_reg.add_argument(
"--llm-model",
default=os.environ.get("STATEHUB_REGISTER_LLM_MODEL"),
help="Model name passed to llm-connect",
)
statehub_reg.add_argument(
"--llm-api-key",
default=os.environ.get("STATEHUB_REGISTER_LLM_API_KEY"),
help="API key for API-backed llm-connect providers",
)
statehub_reg.add_argument(
"--llm-timeout",
type=int,
default=int(os.environ.get("STATEHUB_REGISTER_LLM_TIMEOUT", "120")),
help="LLM timeout in seconds",
)
statehub_reg.add_argument("--no-llm", action="store_true", help="Skip LLM inference and use files/prompts")
statehub_reg.add_argument("--force", action="store_true", help="Overwrite generated repo files")
# register-project
reg = sub.add_parser("register-project", help="Register a project with the State Hub")
reg.add_argument(
@@ -513,7 +555,9 @@ def main() -> None:
args = parser.parse_args()
if args.command == "register-project":
if args.command == "register":
run_statehub_register(args)
elif args.command == "register-project":
cmd_register(args)
elif args.command == "ingest-sbom":
cmd_ingest_sbom(args)