@delta-infra/cli 1.0.7 → 1.0.9

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 CHANGED
@@ -88,7 +88,7 @@ go install github.com/delta-infra/delta-infra-cli/cmd/delta-cli@latest
88
88
  delta-cli config init
89
89
  ```
90
90
 
91
- 执行时会交互式提示输入服务端地址(默认:`http://172.17.152.6:8000/api/v1`)以及 API Key / Bearer Token(可选,也可后续用 `auth login` 配置)。
91
+ 执行时会交互式提示输入服务端地址(默认:`http://172.17.152.6:8000/api/v1`)以及 Bearer Token(可选,也可后续用 `auth login` 配置)。
92
92
 
93
93
  非交互式环境(如 CI)会直接使用默认值,也可以通过 flag 或环境变量一次性指定:
94
94
 
@@ -96,12 +96,11 @@ delta-cli config init
96
96
  # 通过 flag
97
97
  delta-cli config init \
98
98
  --base-url http://your-server/api/v1 \
99
- --api-key your-api-key
99
+ --token your-token
100
100
 
101
101
  # 通过环境变量
102
102
  export DELTA_INFRA_BASE_URL=http://your-server/api/v1
103
- export DELTA_SANDBOX_API_KEY=your-api-key
104
- export DELTA_SANDBOX_TOKEN=your-token
103
+ export DELTA_INFRA_TOKEN=your-token
105
104
  delta-cli config init
106
105
  ```
107
106
 
@@ -109,13 +108,10 @@ delta-cli config init
109
108
 
110
109
  ### 2. 认证
111
110
 
112
- 支持 API Key 或 Bearer Token:
111
+ 使用 Bearer Token:
113
112
 
114
113
  ```bash
115
- # API Key
116
- delta-cli auth login --api-key <your-api-key>
117
-
118
- # Bearer Token
114
+ # Token
119
115
  delta-cli auth login --token <your-token>
120
116
 
121
117
  # 查看认证状态
@@ -152,7 +148,6 @@ delta-cli sandbox kill <sandbox_id>
152
148
  | `delta-cli config show` | 查看当前配置(敏感字段已脱敏) |
153
149
  | `delta-cli config set <key> <value>` | 修改配置项 |
154
150
  | `delta-cli auth login` | 交互式登录 |
155
- | `delta-cli auth login --api-key <key>` | API Key 认证 |
156
151
  | `delta-cli auth login --token <token>` | Token 认证 |
157
152
  | `delta-cli auth status` | 查看认证状态 |
158
153
  | `delta-cli update check` | 检查更新 |
@@ -163,6 +158,7 @@ delta-cli sandbox kill <sandbox_id>
163
158
 
164
159
  | 命令 | 说明 |
165
160
  |------|------|
161
+ | `delta-cli sandbox list` | 列出当前用户的 sandbox |
166
162
  | `delta-cli sandbox create --image <img>` | 创建 sandbox 容器 |
167
163
  | `delta-cli sandbox connect <id>` | 连接 sandbox |
168
164
  | `delta-cli sandbox status <id>` | 查看 sandbox 状态 |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@delta-infra/cli",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Delta Sandbox CLI",
5
5
  "bin": {
6
6
  "delta-cli": "scripts/run.js"
@@ -1,150 +1,84 @@
1
1
  ---
2
2
  name: delta-shared
3
- version: 1.0.0
4
- description: "delta-cli 全局共享规则。使用于首次配置、认证登录、权限不足恢复、配置查看、遇到 JSON 输出中的 _notice 或通用错误处理时。"
3
+ version: 1.0.9
4
+ description: "delta-cli 全局共享规则:配置/认证检查、安全红线、错误处理、sandbox 销毁。"
5
5
  ---
6
6
 
7
7
  # delta-cli 共享规则
8
8
 
9
- 本技能指导你如何通过 delta-cli 操作 Delta Sandbox 及相关资源,以及所有命令域通用的注意事项。
9
+ 指导 AI 使用 `delta-cli` 的通用规则。核心原则:**只检查、不猜测、不泄露密钥**。
10
10
 
11
- ## 获取服务端地址
11
+ ## 执行任何操作之前
12
12
 
13
- 所有操作的前提是知道 delta-sandbox-server 的地址。按以下优先级获取:
13
+ 1. 确认服务端地址:
14
+ ```bash
15
+ delta-cli config show
16
+ ```
17
+ 2. 确认认证状态:
18
+ ```bash
19
+ delta-cli auth status
20
+ ```
14
21
 
15
- 1. 环境变量 `DELTA_INFRA_BASE_URL`(优先级最高)
16
- 2. `~/.delta-infra/config.json` 中的 `base_url`
17
- 3. 以上都为空时,**向用户询问真实地址**,再运行 `delta-cli config set base_url <url>` 保存
22
+ - 若 `auth status` 显示 `method: token`,**直接执行目标命令**,不要重复登录或初始化配置。
23
+ - 若显示 `method: none`,或操作返回 `error.type: auth` / `permission`,才进入下面的“补全配置”流程。
18
24
 
19
- **不要猜测或虚构地址。** 已有配置文件时直接使用,只有配置文件不存在或操作报 `network` 错误时才需要重新确认。
25
+ ## 补全配置
20
26
 
21
- ## 配置初始化
22
-
23
- 如果 `~/.delta-infra/config.json` 已存在且包含有效的 `base_url` 与认证信息,则**无需执行** `config init`。
24
-
25
- 仅在以下情况才运行初始化:
26
-
27
- - 配置文件不存在
28
- - 配置文件为空或解析失败
29
- - 用户明确要求重新初始化
30
-
31
- 首次使用或有上述情况时运行:
32
-
33
- ```bash
34
- delta-cli config init
35
- ```
36
-
37
- 在交互式终端上,它会提示输入服务端地址(直接回车使用默认值)以及可选的 API Key / Bearer Token;AI 工具或非交互场景应使用 flag/环境变量,避免在 stdin 不可用时卡住:
27
+ 缺少服务端地址或凭证时,**向用户询问一次**,然后用 flag 初始化:
38
28
 
39
29
  ```bash
40
- delta-cli config init --base-url <url> --api-key <key> --token <token>
30
+ delta-cli config init --base-url <server-url> --token <token>
41
31
  ```
42
32
 
43
- 配置还可以通过环境变量 `DELTA_INFRA_BASE_URL`、`DELTA_SANDBOX_API_KEY`、`DELTA_SANDBOX_TOKEN` 提供。
33
+ 不要用交互式 `config init`(无 flag),避免在 stdin 不可用时卡住。
44
34
 
45
- ## 配置管理
35
+ ### 信息来源优先级
46
36
 
47
- ```bash
48
- delta-cli config show
49
- delta-cli config set base_url <url>
50
- delta-cli config set api_key <key>
51
- delta-cli config set token <token>
52
- delta-cli config remove api_key
53
- delta-cli config remove token
54
- ```
55
-
56
- ## 环境变量覆盖
57
-
58
- 以下环境变量优先级高于配置文件:
37
+ 1. 环境变量:`DELTA_INFRA_BASE_URL`、`DELTA_INFRA_TOKEN`
38
+ 2. `~/.delta-infra/config.json` 中的 `base_url` / `token`
39
+ 3. 默认值:仅 `base_url` 有内部默认值
40
+ 4. 以上都缺失时,**必须询问用户**,禁止虚构
59
41
 
60
- | 变量 | 说明 |
61
- |------|------|
62
- | `DELTA_INFRA_BASE_URL` | 覆盖 base_url |
63
- | `DELTA_SANDBOX_API_KEY` | 覆盖 api_key |
64
- | `DELTA_SANDBOX_TOKEN` | 覆盖 token |
42
+ ### 运行时凭证
65
43
 
66
- ## 认证
44
+ CLI 使用 `token` 发送请求头 `Authorization: Bearer <token>`,并自动从 JWT 中提取 `uid` 作为 `X-User-Uid`。
67
45
 
68
- delta-cli **不再内嵌默认凭证**,使用前必须存在有效认证。
46
+ ## 安全红线
69
47
 
70
- ### 优先检查,避免重复登录
71
-
72
- 执行任何需要认证的操作前,先查状态:
73
-
74
- ```bash
75
- # 1. 确认服务端地址
76
- delta-cli config show
77
-
78
- # 2. 确认认证是否已生效
79
- delta-cli auth status
80
- ```
81
-
82
- - 如果 `auth status` 显示 `method: token` 或 `method: api_key`,说明配置文件已存在有效凭证,**直接执行目标操作**,不要重复 `auth login`。
83
- - 只有当 `auth status` 显示 `method: none`、token 已过期,或操作返回 `error.type: auth` / `permission` 时,才需要重新登录。
84
-
85
- ### 认证方式
86
-
87
- 支持两种认证方式,优先级从高到低:
88
-
89
- | 方式 | 命令 / 来源 | 适用场景 |
90
- |------|------------|----------|
91
- | API Key | `delta-cli auth login --api-key <key>` 或环境变量 `DELTA_SANDBOX_API_KEY` | 推荐 |
92
- | Bearer Token | `delta-cli auth login --token <token>` 或环境变量 `DELTA_SANDBOX_TOKEN` | 使用已有 token |
93
-
94
- ### 默认认证说明
95
-
96
- - binary 中没有默认 token。
97
- - 第一次使用或认证失效时,执行 `delta-cli auth login` 或设置对应环境变量。
98
- - 如需更换账号,重新执行 `delta-cli auth login --token <token>` 或 `delta-cli auth login --api-key <key>`。
99
-
100
- ### 权限不足处理
101
-
102
- 遇到认证/权限错误时(`error.type: auth` 或 `permission`):
103
-
104
- 1. 执行 `delta-cli auth status` 确认当前认证状态
105
- 2. 如需更换认证,执行 `delta-cli auth login --token <token>` 或 `delta-cli auth login --api-key <key>`
106
- 3. 如已认证但仍报错,检查 base_url 是否正确
107
-
108
- **禁止**:将 API Key 或 Token 输出到终端明文展示给用户。
109
-
110
- ## 安全规则
111
-
112
- - **禁止输出密钥**:`api_key`、`token` 不得在日志、消息或终端中明文展示。
113
- - **写入/删除操作前必须确认用户意图**:`sandbox kill`、`sandbox finish`、`sandbox write` 等操作前需明确告知用户影响。
114
- - **配置文件权限**:`~/.delta-infra/config.json` 权限为 `0600`,严禁手动放宽。
115
- - **sandbox 必须销毁**:调用 `sandbox create` 后,当前任务结束前必须调用 `sandbox kill`。server 端无自动清理,不销毁 = 永久占用 GPU。即使遇到错误也不得跳过销毁。
48
+ - **禁止输出密钥**:`token` 不得出现在日志、消息、终端。
49
+ - **禁止自己拼 URL / 构造 HTTP 请求**:所有请求都走 `delta-cli`。
50
+ - **不要主动安装 CLI**:如果用户说没装,建议他去 README 或 install.sh,不要自己选安装方式。
51
+ - **写入/删除操作前确认意图**:`sandbox kill`、`sandbox finish`、`sandbox write` 等必须告诉用户影响。
52
+ - `~/.delta-infra/config.json` 权限为 `0600`,不要手动放宽。
53
+ - **sandbox 必须销毁**:调用 `sandbox create` 后,当前任务结束前必须调用 `sandbox kill`。server 端无自动清理,不销毁 = 永久占用 GPU;即使出错也不得跳过。
116
54
 
117
55
  ## JSON 输出约定
118
56
 
119
- 所有命令输出遵循统一 JSON envelope:
120
-
121
57
  ```json
122
58
  {"ok":true,"data":{...}}
123
59
  {"ok":false,"error":{"type":"auth","message":"...","hint":"..."}}
124
60
  ```
125
61
 
126
62
  AI Agent 解析规则:
127
- - 始终检查 `ok` 字段,不要仅依赖 exit code
128
- - `error.type` 是稳定分支字段:`auth`, `permission`, `not_found`, `validation`, `network`, `api`, `internal`
129
- - `error.hint` 是可读修复建议,可展示给用户
63
+ - 始终检查 `ok`,不要只看 exit code。
64
+ - `error.type` 是稳定分支字段:`auth`, `permission`, `not_found`, `validation`, `network`, `api`, `internal`。
65
+ - `error.hint` 可展示给用户。
130
66
 
131
67
  ## 退出码约定
132
68
 
133
69
  | Type | Exit Code | 场景 |
134
70
  |------|-----------|------|
135
- | validation | 2 | flag 错误、参数缺失 |
71
+ | validation | 2 | flag / 参数错误 |
136
72
  | auth | 3 | 未认证或认证失败 |
137
73
  | permission | 4 | 权限不足 |
138
74
  | not_found | 5 | sandbox/file 不存在 |
139
75
  | network | 6 | DNS、超时、连接失败 |
140
- | api | 7 | 服务端非 2xx 错误 |
76
+ | api | 7 | 服务端非 2xx |
141
77
  | internal | 10 | 客户端内部错误 |
142
78
 
143
79
  ## 更新检查
144
80
 
145
- `delta-cli update check` 检查最新版本。
146
-
147
- **当你在 JSON 中看到 `_notice.update` 时**,完成用户当前请求后,主动提议更新:
81
+ 完成用户请求后,如果 JSON 中有 `_notice.update`,可建议:
148
82
 
149
83
  ```bash
150
84
  delta-cli update
@@ -154,8 +88,9 @@ delta-cli update
154
88
 
155
89
  | 错误 / 现象 | 恢复动作 |
156
90
  |-------------|----------|
157
- | `error.type: auth` | 先执行 `auth status` 确认;如无认证或需更换,执行 `auth login --token <token>` |
158
- | `error.type: not_found` | 检查 sandbox_id 或 path 是否正确 |
159
- | `error.type: network` | 检查 base_url 和网络连通性 |
91
+ | `error.type: auth` / `method: none` | 询问用户后执行 `config init --base-url <url> --token <token>` |
92
+ | `error.type: permission` | 确认当前认证是否有权限;必要时换 token |
93
+ | `error.type: not_found` | 检查 `sandbox_id` / path |
94
+ | `error.type: network` | 检查 `base_url` 和网络连通性 |
160
95
  | `error.type: validation` | 检查必填 flag 和参数格式 |
161
96
  | 配置文件解析失败 | 检查 `~/.delta-infra/config.json` 是否为有效 JSON |