mirror of
https://github.com/chainbase-labs/Agentkey.git
synced 2026-09-20 14:20:23 +08:00
29176d1aae
## Summary Two end-to-end improvements to `install.sh` / `install.ps1`, mirrored across both: ### 1. Agent auto-detection Probe well-known config dirs and binaries for ~18 of [vercel-labs/skills](https://github.com/vercel-labs/skills)' 45 supported agents (`claude-code`, `cursor`, `codex`, `gemini-cli`, `opencode`, `openclaw`, `qwen-code`, `iflow-cli`, `windsurf`, `warp`, `amp`, `crush`, `goose`, `droid`, `kode`, `kilo`, `kimi-cli`, `kiro-cli`). When detection finds anything, the `skills add` step gets `-a id1,id2,…` instead of dumping the user into the multi-select. New flags: - `--list-agents` — preview what we'd auto-select (and exit) - `--all-agents` — skip our detection, let `skills` CLI scan everything - `--only` — manual override (unchanged) ### 2. Local-vs-remote MCP auth routing The current `--auth-login` always auto-opens a browser. On SSH sessions, Docker containers, and OpenClaw remote channels (where the user is on a phone), that silently launches a browser they can't see — leaving them stuck on "Waiting for authorization…". Detection (any signal fires ⇒ remote): | Signal | Notes | |---|---| | `$HOME/.openclaw` exists | OpenClaw runtime — most reliable single signal | | `$SSH_CONNECTION` / `$SSH_TTY` | Generic SSH session | | Linux without `$DISPLAY` / `$WAYLAND_DISPLAY` | Headless | When remote, pass `--no-browser` to the MCP CLI, which prints URL + ANSI QR for the user to scan with a phone. New flags: - `--remote` / `--local` — force either mode - `--force-mcp` — re-auth even if AgentKey is already configured Also adds an idempotency short-circuit: if any known MCP config already has an `agentkey` block with a valid-looking API key, skip the auth step entirely (`--force-mcp` to override). ### 3. Docs `README.md` + `docs/README_zh.md` updated to document the new flags and add a dedicated **"Installing over SSH / Docker / OpenClaw"** section. ## Companion PRs (server side) The MCP-server changes that this installer routes to ship in a chain of three PRs against `chainbase-labs/AgentKey-Server`: | PR | Status | What it adds | |---|---|---| | [#2](https://github.com/chainbase-labs/AgentKey-Server/pull/2) | merged | `--no-browser` / `--qr` / `--no-qr` flags + `qrcode-terminal` dep (v0.3.5 source bump) | | [#3](https://github.com/chainbase-labs/AgentKey-Server/pull/3) | merged | Bump to 0.3.6 — npm `0.3.5` had been published from a pre-merge commit and shipped stale `dist/` | | [#4](https://github.com/chainbase-labs/AgentKey-Server/pull/4) | open | Fix QR not rendering in `--no-browser` (CJS interop bug — `qrcode-terminal`'s `generate` lives on `.default` under NodeNext); bump to 0.3.7 | **This installer needs `@agentkey/mcp@0.3.7`** to be on npm for the QR flow to actually work. Sequence: 1. Merge #4 ✅ 2. Maintainer runs `cd mcp-server && npm publish` (no npm-publish CI workflow) ✅ 3. Merge this PR — `npx -y @agentkey/mcp` will then pull 0.3.7+ and the `--remote` path renders the QR This installer change is **forward-compatible**: it can land anytime — older `@agentkey/mcp` versions silently ignore the unknown `--no-browser` flag, so worst case a remote user gets the old browser-opens-on-the-wrong-host UX until the new mcp publishes. ## Test plan Verified end-to-end on macOS against a local build of `@agentkey/mcp@0.3.7` (server PR #4): - [x] Bash syntax check passes (`bash -n install.sh`) - [x] `install.sh --help` renders all 5 new flag rows - [x] `install.sh --list-agents` correctly prints detected agents on test host (10 agents incl. `openclaw`) - [x] `install.sh --remote --local` exits with code 1 (mutex) - [x] `install.sh --skip-skill` short-circuits with "AgentKey is already configured…" when configs have agentkey - [x] `install.sh --remote --skip-skill --force-mcp` end-to-end: prints `Detected remote install context — printing QR + URL instead of opening a browser here`, then `reason: $HOME/.openclaw exists (OpenClaw runtime)`, launches mcp CLI, renders 16-row ANSI QR, polls — no `open` process spawned - [x] All 4 mcp 0.3.7 flag combinations behave correctly (`--no-browser` / `--no-browser --no-qr` / `--qr` / no-flags back-compat) - [ ] `install.ps1` not lint-checked locally (no pwsh on test host); logic is a strict mirror of bash — needs Windows smoke before merge - [ ] Inside a real OpenClaw container — confirm `~/.openclaw` triggers as expected ## Why now Users running the installer via OpenClaw / Claude Code remote channels (on a phone) currently see a black-hole UX: the browser opens on the wrong machine and the install process appears to hang. The detection here removes the manual `--remote` flag for the common case. 🤖 Generated with [Claude Code](https://claude.com/claude-code)