# mode=setup：环境检查

## S1：确认认证状态

**不做** `lpm --version` 显式检查——CLI 缺失时 `lpm create` 会 fail-fast 且错误清晰，再多一次探测是冗余。

认证：由 `lpm create` 的运行时错误兜底；遇 auth 错误时逐字转呈 CLI stderr 指引，由用户自行执行 `lpm login` 后重试。

## S2：获取 siteDomain（按优先级，**命中高优先级则跳过其余**）

### 优先级 1 — 被 workflow 编排（对话上下文已有 siteDomain）

如果是 workflow 编排调用（带 `orchestrated=true`），workflow Phase 0 已经把 `siteDomain` 钉到当前对话上下文里
→ 直接沿用该值，**不向用户询问、不重新解析、不读 state.json**。Phase 0 默认不写盘（避免 plugin-dir 之外形成孤儿 cache，详见 workflow `phase-0-context.md`），create 直接从对话上下文取 siteDomain。

### 优先级 2 — 当前目录已有 plugin.config.json

从中读取 `siteDomain` 字段。若非空 → 直接使用。

> 独立调用场景下，此前的入口守卫应已在 `plugin.config.json` 存在时 bail；到这里时该文件通常不存在。保留此分支是兜底（用户绕过守卫手动进入 setup 时仍能工作）。

### 优先级 3 — 从登录态选取（lpm whoami）

跑 `lpm whoami`，**一切以它列出的真实登录站点为准**：
- **列出了已登录站点（≥1 个）** → 把 whoami 列出的**全部真实站点原样呈现给用户挑选**：忽略输出里的 `← 建议` 标记，**不预选、不带"上次登录的是 X，确认用它创建？"这类推荐口吻**；顺序沿用 whoami 输出（有时间戳则最近在前，纯排序）。单站点时也只列那一个让其确认。**不**附"自定义/页面 URL"项——有真实站点时只列真实的。用户选定后用它，**不**落优先级 4。
- **输出「未登录」**（whoami 一个站点都没列出）→ 提示用户先 `lpm login --site-domain <url>` 登录后回到本步重跑，或落优先级 4 用页面 URL 识别域名。

### 优先级 4 — 向用户索要 Meegle 页面 URL

```
请提供一个 Meegle 页面链接（如 https://meego.example.com/project/xxx），用于识别站点域名。
```

从 URL 中解析域名：
- `https://meego.example.com/project/xxx/...` → `https://meego.example.com`
- 提取规则：`new URL(url).origin`

解析后向用户确认：

```
识别到站点域名：https://meego.example.com
确认使用？
```

## 输出

```
✅ 环境就绪
✅ 站点域名：https://meego.example.com
```
