@round2ai/r2-cli 1.0.10 → 1.0.12-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -12
- package/dist/README.md +24 -12
- package/dist/r2-cli.js +46 -1757
- package/package.json +7 -3
- package/scripts/install-skills.js +35 -0
- package/skills/r2-auth/SKILL.md +31 -45
- package/skills/r2-goods/SKILL.md +309 -98
- package/skills/r2-shared/SKILL.md +94 -0
- package/dist/package.json +0 -60
- package/skills/r2-cli/SKILL.md +0 -70
- /package/skills/{r2-cli → r2-shared}/_meta.json +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@round2ai/r2-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12-beta.0",
|
|
4
4
|
"description": "R2-CLI,向 AI 开放二手潮奢交易全链路能力",
|
|
5
5
|
"main": "dist/r2-cli.js",
|
|
6
6
|
"type": "module",
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
"postinstall": "node scripts/install-skills.js",
|
|
12
12
|
"build": "cross-env NODE_ENV=development node scripts/build.js",
|
|
13
13
|
"build:prod": "cross-env NODE_ENV=production node scripts/build.js",
|
|
14
|
-
"dev": "node scripts/dev.js"
|
|
14
|
+
"dev": "node scripts/dev.js",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest"
|
|
15
17
|
},
|
|
16
18
|
"keywords": [
|
|
17
19
|
"round2ai",
|
|
@@ -25,6 +27,7 @@
|
|
|
25
27
|
],
|
|
26
28
|
"files": [
|
|
27
29
|
"dist",
|
|
30
|
+
"scripts/install-skills.js",
|
|
28
31
|
"skills",
|
|
29
32
|
"package.json",
|
|
30
33
|
"README.md"
|
|
@@ -55,6 +58,7 @@
|
|
|
55
58
|
"cross-env": "^10.1.0",
|
|
56
59
|
"dotenv": "^17.4.2",
|
|
57
60
|
"esbuild": "^0.28.0",
|
|
58
|
-
"typescript": "^6.0.2"
|
|
61
|
+
"typescript": "^6.0.2",
|
|
62
|
+
"vitest": "^4.1.5"
|
|
59
63
|
}
|
|
60
64
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* postinstall: 将 skills/ 复制到 ~/.agents/skills/
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import fs from "node:fs";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import os from "node:os";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const pkgSkillsDir = path.join(__dirname, "..", "skills");
|
|
12
|
+
const agentsDir = path.join(os.homedir(), ".agents", "skills");
|
|
13
|
+
|
|
14
|
+
if (!fs.existsSync(pkgSkillsDir)) process.exit(0);
|
|
15
|
+
|
|
16
|
+
fs.mkdirSync(agentsDir, { recursive: true });
|
|
17
|
+
|
|
18
|
+
for (const name of fs.readdirSync(pkgSkillsDir)) {
|
|
19
|
+
const rawSrc = path.join(pkgSkillsDir, name);
|
|
20
|
+
let src;
|
|
21
|
+
try { src = fs.realpathSync(rawSrc); } catch { continue; }
|
|
22
|
+
if (!fs.statSync(src).isDirectory()) continue;
|
|
23
|
+
|
|
24
|
+
const dest = path.join(agentsDir, name);
|
|
25
|
+
if (fs.existsSync(dest)) {
|
|
26
|
+
for (const old of fs.readdirSync(dest)) {
|
|
27
|
+
fs.unlinkSync(path.join(dest, old));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
31
|
+
|
|
32
|
+
for (const file of fs.readdirSync(src)) {
|
|
33
|
+
fs.copyFileSync(path.join(src, file), path.join(dest, file));
|
|
34
|
+
}
|
|
35
|
+
}
|
package/skills/r2-auth/SKILL.md
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: r2-auth
|
|
3
|
-
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "R2-CLI 认证登录专家。扫码登录和闲鱼店铺授权。用于登录、login、auth、扫码、二维码、授权、xianyu、logout、登出、状态查询场景。Agent 使用 auth login --json 一步完成登录。Agent 必须先将 qrUrl 链接展示给用户,再等待扫码结果。"
|
|
5
|
+
metadata:
|
|
6
|
+
requires:
|
|
7
|
+
bins: ["r2-cli"]
|
|
8
|
+
cliHelp: "r2-cli auth --help"
|
|
9
|
+
related:
|
|
10
|
+
- "r2-shared"
|
|
4
11
|
---
|
|
5
12
|
|
|
6
|
-
# R2-Auth
|
|
13
|
+
# R2-Auth (v1)
|
|
14
|
+
|
|
15
|
+
> **Tip**: Agent 使用 `--json` 一步完成登录:生成二维码 + 自动打开浏览器 + 自动轮询。**必须先将 qrUrl 展示给用户**,再等待扫码结果。
|
|
16
|
+
> **Tip**: 二维码 5 分钟过期,超时需重新执行命令。Token 存储在 `~/.r2-cli/config.json`。
|
|
7
17
|
|
|
8
18
|
扫码登录 + 闲鱼店铺授权,专为 AI Agent 设计。
|
|
9
19
|
|
|
10
|
-
##
|
|
20
|
+
## CRITICAL
|
|
11
21
|
|
|
12
|
-
|
|
22
|
+
安装、统一错误格式见 **r2-shared** skill。
|
|
13
23
|
|
|
14
24
|
---
|
|
15
25
|
|
|
16
|
-
##
|
|
26
|
+
## 扫码登录(auth login)
|
|
17
27
|
|
|
18
|
-
|
|
28
|
+
### 一步式(推荐)
|
|
19
29
|
|
|
20
30
|
```bash
|
|
21
31
|
r2-cli auth login --json
|
|
@@ -23,7 +33,7 @@ r2-cli auth login --json
|
|
|
23
33
|
|
|
24
34
|
命令会依次输出两段 JSON:
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
**第 1 段:二维码信息(立即输出)**
|
|
27
37
|
|
|
28
38
|
```json
|
|
29
39
|
{
|
|
@@ -39,24 +49,15 @@ r2-cli auth login --json
|
|
|
39
49
|
|------|------|
|
|
40
50
|
| `qrToken` | 二维码 token(轮询用,不需要手动使用) |
|
|
41
51
|
| `expireTimeMs` | 二维码过期时间(毫秒),默认 5 分钟 |
|
|
42
|
-
| `pollIntervalMs` | 轮询间隔(毫秒),不需要手动使用 |
|
|
43
52
|
| `url` | 扫码链接(用户也可手动访问) |
|
|
44
53
|
| `qrUrl` | 本地浏览器扫码页面链接 |
|
|
45
54
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
成功:
|
|
55
|
+
**第 2 段:登录结果(用户扫码确认后输出)**
|
|
49
56
|
|
|
50
57
|
```json
|
|
51
58
|
{ "success": true, "userInfo": { "nickname": "...", "mobile": "..." } }
|
|
52
59
|
```
|
|
53
60
|
|
|
54
|
-
失败:
|
|
55
|
-
|
|
56
|
-
```json
|
|
57
|
-
{ "success": false, "error": "二维码已过期" }
|
|
58
|
-
```
|
|
59
|
-
|
|
60
61
|
### Agent 操作步骤
|
|
61
62
|
|
|
62
63
|
1. 用 Bash 工具 `run_in_background: true` 启动命令
|
|
@@ -73,11 +74,9 @@ r2-cli auth login --json
|
|
|
73
74
|
|
|
74
75
|
**为什么必须先展示链接**:自动打开浏览器在某些环境下可能失败(远程服务器、SSH、无头终端)。链接是用户扫码的唯一保障,必须优先展示。
|
|
75
76
|
|
|
76
|
-
> 旧版两步式流程(先 `auth login qr` 再 `auth login poll`)已废弃。如需手动轮询,可使用 `auth login poll --token <>`。
|
|
77
|
-
|
|
78
77
|
---
|
|
79
78
|
|
|
80
|
-
##
|
|
79
|
+
## 闲鱼店铺授权(auth xianyu)
|
|
81
80
|
|
|
82
81
|
流程与登录类似,同样一步完成:
|
|
83
82
|
|
|
@@ -85,7 +84,7 @@ r2-cli auth login --json
|
|
|
85
84
|
r2-cli auth xianyu --json
|
|
86
85
|
```
|
|
87
86
|
|
|
88
|
-
|
|
87
|
+
**第 1 段:授权二维码信息(立即输出)**
|
|
89
88
|
|
|
90
89
|
```json
|
|
91
90
|
{
|
|
@@ -100,28 +99,15 @@ r2-cli auth xianyu --json
|
|
|
100
99
|
|------|------|
|
|
101
100
|
| `state` | 授权状态 token(轮询用) |
|
|
102
101
|
| `expireTimeMs` | 过期时间(毫秒),默认 5 分钟 |
|
|
103
|
-
| `pollIntervalMs` | 轮询间隔(毫秒) |
|
|
104
102
|
| `qrUrl` | 本地浏览器授权页面链接 |
|
|
105
103
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
成功:
|
|
104
|
+
**第 2 段:授权结果(用户扫码确认后输出)**
|
|
109
105
|
|
|
110
106
|
```json
|
|
111
107
|
{ "success": true, "shopId": "...", "shopName": "..." }
|
|
112
108
|
```
|
|
113
109
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
```json
|
|
117
|
-
{ "success": false, "error": "授权链接已过期" }
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
Agent 操作步骤与登录相同:
|
|
121
|
-
1. 获取第 1 段 JSON
|
|
122
|
-
2. **先展示 `qrUrl` 链接给用户**(单独一行,醒目格式)
|
|
123
|
-
3. 告知用户浏览器会尝试自动打开,如未打开请手动点击链接
|
|
124
|
-
4. 等待第 2 段 JSON
|
|
110
|
+
Agent 操作步骤与登录相同:获取第 1 段 JSON → **先展示 `qrUrl`** → 等待第 2 段 JSON。
|
|
125
111
|
|
|
126
112
|
---
|
|
127
113
|
|
|
@@ -129,20 +115,20 @@ Agent 操作步骤与登录相同:
|
|
|
129
115
|
|
|
130
116
|
| 命令 | 说明 |
|
|
131
117
|
|------|------|
|
|
132
|
-
| `r2-cli auth login` |
|
|
133
|
-
| `r2-cli auth
|
|
118
|
+
| `r2-cli auth login` | 扫码登录(人类使用,自动打开浏览器) |
|
|
119
|
+
| `r2-cli auth xianyu` | 闲鱼店铺授权(人类使用,自动打开浏览器) |
|
|
134
120
|
| `r2-cli auth login poll --token <>` | 手动轮询登录状态(备选,不推荐) |
|
|
135
|
-
| `r2-cli auth xianyu` | 闲鱼店铺授权(自动打开浏览器,人类使用) |
|
|
136
|
-
| `r2-cli auth xianyu --json` | 闲鱼店铺授权(输出 JSON + 自动打开浏览器,Agent 推荐) |
|
|
137
121
|
| `r2-cli auth xianyu poll --state <>` | 手动轮询授权状态(备选,不推荐) |
|
|
138
122
|
| `r2-cli auth status` | 查看登录状态 |
|
|
139
123
|
| `r2-cli auth logout` | 退出登录 |
|
|
140
124
|
|
|
141
125
|
---
|
|
142
126
|
|
|
143
|
-
##
|
|
127
|
+
## 错误处理
|
|
144
128
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
-
|
|
148
|
-
|
|
129
|
+
| 错误信息 | 原因 | 解决方法 |
|
|
130
|
+
|----------|------|----------|
|
|
131
|
+
| `请先运行 r2-cli auth login 登录` | 未登录或 Token 过期 | 执行 `r2-cli auth login --json` |
|
|
132
|
+
| `二维码已过期` | 扫码超时(5 分钟) | 重新执行命令 |
|
|
133
|
+
| `授权链接已过期` | 授权扫码超时(5 分钟) | 重新执行命令 |
|
|
134
|
+
| `网络连接失败` | API 服务不可达 | 检查网络连接,确认 SERVER_BASEURL 配置 |
|