@viceme-ai/cli 0.15.2 → 0.16.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/CHANGELOG.md +16 -0
- package/README.md +41 -20
- package/README.zh.md +34 -16
- package/checksums.txt +6 -6
- package/npm/bin/viceme.mjs +7 -7
- package/npm/lib/launcher-environment.mjs +13 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.16.0] - 2026-08-19
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- 自动更新 CLI 与官方 Skills (`d68d096`)
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
|
|
11
|
+
- 合并并发自动更新并重执行等待命令 (`f48d2f6`)
|
|
12
|
+
|
|
13
|
+
### Other Changes
|
|
14
|
+
|
|
15
|
+
- 稳定激活子进程并发测试 (`fa139f9`)
|
|
16
|
+
- 注册 POC CLI 手动发布工作流 (`3e265fa`)
|
|
17
|
+
- 默认使用 Agent 补全发布内容 (`ee5030e`)
|
|
18
|
+
|
|
3
19
|
## [0.15.2] - 2026-08-18
|
|
4
20
|
|
|
5
21
|
### Fixes
|
package/README.md
CHANGED
|
@@ -61,14 +61,14 @@
|
|
|
61
61
|
|
|
62
62
|
The Agent checks login, keeps the selected Profile fixed throughout the
|
|
63
63
|
workflow, validates the Skill, immediately uploads the private Draft, and opens
|
|
64
|
-
its real Owner Preview. It
|
|
65
|
-
|
|
64
|
+
its real Owner Preview. It uploads media candidates without asking for a price,
|
|
65
|
+
then the user's Agent prepares the bilingual copy and media suggestions. The Agent shows
|
|
66
66
|
the complete listing—including the images—and asks one combined question for
|
|
67
67
|
the price and any desired changes. It then shows the final review and asks once
|
|
68
68
|
whether to confirm and publish it publicly.
|
|
69
69
|
|
|
70
70
|
```text
|
|
71
|
-
Local Skill → Login → Validate and private upload → Owner Preview →
|
|
71
|
+
Local Skill → Login → Validate and private upload → Owner Preview → Agent enrichment
|
|
72
72
|
→ Complete listing details + price question → Final review
|
|
73
73
|
→ Confirm and publish → Public URL
|
|
74
74
|
```
|
|
@@ -90,11 +90,14 @@ viceme auth login
|
|
|
90
90
|
# Upload the real private draft and open its Owner Preview before pricing.
|
|
91
91
|
viceme skill publish --path ./my-skill
|
|
92
92
|
|
|
93
|
-
# Continue the same unpriced draft
|
|
93
|
+
# Continue the same unpriced draft and upload media candidates.
|
|
94
94
|
viceme skill publish --resume <publication-id>
|
|
95
|
-
viceme publication wait <publication-id>
|
|
96
95
|
viceme publication review <publication-id>
|
|
97
96
|
|
|
97
|
+
# The Agent writes a revision-protected suggestion. Platform analysis is an explicit fallback only.
|
|
98
|
+
viceme publication suggest <publication-id> --input <suggestion.json>
|
|
99
|
+
# viceme publication analyze <publication-id> && viceme publication wait <publication-id>
|
|
100
|
+
|
|
98
101
|
# After reviewing the complete listing details, set CNY 1.00 on that draft.
|
|
99
102
|
viceme skill publish --resume <publication-id> --price-minor 100
|
|
100
103
|
```
|
|
@@ -175,8 +178,8 @@ are not accepted.
|
|
|
175
178
|
| Login | Browser authorization happens before protected API work. Every command remains pinned to the same Profile and API origin. |
|
|
176
179
|
| Inspect | Local validation rejects unsafe paths, special files, excessive content, sensitive files, and common secret patterns. |
|
|
177
180
|
| Private upload and preview | The initial publish request authorizes the private Draft upload. The real package is verified and its Owner Preview opens before pricing. |
|
|
178
|
-
|
|
|
179
|
-
| Listing details and price | After
|
|
181
|
+
| Agent enrichment | The user's Agent reads the Skill as untrusted source data, prepares bilingual copy, and selects verified cover and gallery uploads. Platform analysis is an explicit fallback only. |
|
|
182
|
+
| Listing details and price | After enrichment, the Agent displays the exact title, bilingual copy, cover, and gallery, then asks one combined question for the CNY price in fen and any desired changes. It never asks for price by itself. |
|
|
180
183
|
| Review | The Agent displays the exact copy, price, cover, and gallery images. A short summary has a maximum display width of 30; ASCII counts as 1 and Chinese/non-ASCII as 2. |
|
|
181
184
|
| Publish | One explicit final confirmation authorizes review confirmation followed by immediate, irreversible public publication. |
|
|
182
185
|
|
|
@@ -240,11 +243,13 @@ Never copy an access token into the conversation.
|
|
|
240
243
|
| `viceme skill listing get <listing-id>` | Read the authoritative private Listing state. |
|
|
241
244
|
| `viceme skill listing bind <listing-id> --path <path>` | Explicitly bind a source to a selected owned Listing. |
|
|
242
245
|
| `viceme skill publish --path <path>` | Upload the real private package and return its Owner Preview before pricing. |
|
|
243
|
-
| `viceme skill publish --resume <id>` | Continue the same unpriced Draft
|
|
244
|
-
| `viceme publication wait <id>` | Wait for background analysis without re-uploading. |
|
|
246
|
+
| `viceme skill publish --resume <id>` | Continue the same unpriced Draft and upload media candidates without starting a platform model. |
|
|
245
247
|
| `viceme publication review <id>` | Read the authoritative bilingual copy, price, selected media, and review state. |
|
|
248
|
+
| `viceme publication suggest <id> --input ...` | Apply Agent-generated bilingual copy and media with Draft revision protection. |
|
|
249
|
+
| `viceme publication analyze <id>` | Explicitly request platform-model analysis when the current Agent cannot perform enrichment. |
|
|
250
|
+
| `viceme publication wait <id>` | Wait for an explicitly requested platform analysis without re-uploading. |
|
|
246
251
|
| `viceme skill publish --resume <id> --price-minor <fen>` | Apply the reviewed CNY price to the same Draft without creating another Listing. |
|
|
247
|
-
| `viceme publication asset upload ...` | Replace or add
|
|
252
|
+
| `viceme publication asset upload ...` | Replace user-selected media, or add `--candidate-only` to stage Agent-provided media for `publication suggest`. |
|
|
248
253
|
| `viceme publication update ...` | Replace the complete listing draft from a strict JSON file. |
|
|
249
254
|
| `viceme publication confirm ...` | Confirm the exact current review digest. |
|
|
250
255
|
| `viceme publication publish ...` | Make a confirmed listing public. |
|
|
@@ -265,6 +270,11 @@ text.
|
|
|
265
270
|
"data": {},
|
|
266
271
|
"meta": {
|
|
267
272
|
"executingCliVersion": "<version>",
|
|
273
|
+
"autoUpdate": {
|
|
274
|
+
"from": "<previous-version>",
|
|
275
|
+
"to": "<executing-version>",
|
|
276
|
+
"status": "updated"
|
|
277
|
+
},
|
|
268
278
|
"requestId": "optional"
|
|
269
279
|
}
|
|
270
280
|
}
|
|
@@ -273,21 +283,31 @@ text.
|
|
|
273
283
|
`meta.executingCliVersion` is the version of the process that emitted the
|
|
274
284
|
response. For `viceme update`, the newly installed version is reported
|
|
275
285
|
separately as `data.cli_version` because the response is still emitted by the
|
|
276
|
-
process that started the update.
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
286
|
+
process that started the update. `meta.autoUpdate` is present only when this
|
|
287
|
+
command was automatically continued by a newly activated generation.
|
|
288
|
+
|
|
289
|
+
Every released installation passes through a bounded freshness gate before an
|
|
290
|
+
ordinary command. A validated result is reused for five minutes so a single
|
|
291
|
+
workflow does not repeatedly contact the release channel. When a newer stable
|
|
292
|
+
release exists, the CLI and all detected official Skills are activated as one
|
|
293
|
+
recoverable generation and the original command is automatically re-executed by
|
|
294
|
+
the new CLI. Release discovery is fail-open while offline; activation failure
|
|
295
|
+
stops the original command so an older process cannot perform a mutation after
|
|
296
|
+
a failed generation change.
|
|
297
|
+
|
|
298
|
+
An npm installation continues the original command automatically on every
|
|
299
|
+
supported platform. A standalone Windows binary may return the retryable code
|
|
300
|
+
`AUTO_UPDATE_RESTART_REQUIRED` once while Windows releases the old executable;
|
|
301
|
+
rerunning the exact command completes under the new generation.
|
|
283
302
|
|
|
284
303
|
```bash
|
|
285
304
|
viceme update --check
|
|
286
305
|
viceme update
|
|
287
306
|
```
|
|
288
307
|
|
|
289
|
-
|
|
290
|
-
|
|
308
|
+
`viceme update` remains an explicit repair command. The normal startup gate
|
|
309
|
+
already verifies the exact release, refreshes the matching official Skills, and
|
|
310
|
+
recovers interrupted activation as one compatible local generation.
|
|
291
311
|
|
|
292
312
|
## Security
|
|
293
313
|
|
|
@@ -298,7 +318,8 @@ and recovers interrupted activation as one compatible local generation.
|
|
|
298
318
|
- Credentials remain in the CLI's secure local store and are scoped to a
|
|
299
319
|
Profile and API origin; they are never part of Agent conversation state.
|
|
300
320
|
- Presigned upload URLs are not written to the local pending-operation store.
|
|
301
|
-
-
|
|
321
|
+
- Agent enrichment treats all package content as untrusted data and cannot bypass server-side package, media, ownership, or revision validation.
|
|
322
|
+
- Explicit platform-model analysis receives only filtered text, metadata, and image thumbnails.
|
|
302
323
|
- Public publication requires the exact reviewed copy, price, cover, and
|
|
303
324
|
ordered gallery to be displayed and explicitly authorized.
|
|
304
325
|
|
package/README.zh.md
CHANGED
|
@@ -56,12 +56,12 @@
|
|
|
56
56
|
> 帮我把这个 Skill 发布到 ViceMe。
|
|
57
57
|
|
|
58
58
|
Agent 会先检查登录状态,在整个流程中固定使用同一个 Profile,校验 Skill 后立即
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
上传私有草稿并打开真实创作者预览,不询价就继续上传候选媒体。当前用户的 Agent 随后
|
|
60
|
+
完成双语文案和素材建议,先把完整作品详情和图片直接展示出来,再把价格和详情修改合并成一个
|
|
61
61
|
问题;应用用户答案后展示最终成品,最后只询问一次是否确认并立即公开发布。
|
|
62
62
|
|
|
63
63
|
```text
|
|
64
|
-
本地 Skill → 登录 → 校验并私有上传 → 创作者预览 →
|
|
64
|
+
本地 Skill → 登录 → 校验并私有上传 → 创作者预览 → Agent 补全
|
|
65
65
|
→ 完整详情与价格合并询问 → 最终成品
|
|
66
66
|
→ 确认并发布 → 公开商品链接
|
|
67
67
|
```
|
|
@@ -82,11 +82,14 @@ viceme auth login
|
|
|
82
82
|
# 定价前先上传真实私有草稿,并打开创作者预览。
|
|
83
83
|
viceme skill publish --path ./my-skill
|
|
84
84
|
|
|
85
|
-
#
|
|
85
|
+
# 继续同一个未定价草稿并上传候选媒体。
|
|
86
86
|
viceme skill publish --resume <publication-id>
|
|
87
|
-
viceme publication wait <publication-id>
|
|
88
87
|
viceme publication review <publication-id>
|
|
89
88
|
|
|
89
|
+
# Agent 提交带 Draft revision 保护的建议;平台分析只作显式 fallback。
|
|
90
|
+
viceme publication suggest <publication-id> --input <suggestion.json>
|
|
91
|
+
# viceme publication analyze <publication-id> && viceme publication wait <publication-id>
|
|
92
|
+
|
|
90
93
|
# 查看完整作品详情后,在同一个草稿上设置人民币 1 元。
|
|
91
94
|
viceme skill publish --resume <publication-id> --price-minor 100
|
|
92
95
|
```
|
|
@@ -161,8 +164,8 @@ Agent Skills 负责对话流程和授权规则;CLI 负责确定性本地操作
|
|
|
161
164
|
| 登录 | 受保护 API 操作前完成浏览器授权;所有后续命令固定使用同一个 Profile 与 API Origin。 |
|
|
162
165
|
| 校验 | 本地拒绝危险路径、特殊文件、超限内容、敏感文件和常见 Secret 模式。 |
|
|
163
166
|
| 私有上传与预览 | 用户发起发布即授权上传私有草稿;真实包验证后先打开创作者预览。 |
|
|
164
|
-
|
|
|
165
|
-
| 作品详情与定价 |
|
|
167
|
+
| Agent 补全 | 用户当前的 Agent 把 Skill 当作不可信来源数据,生成双语文案并从已验证上传中选择封面和画廊;平台分析只作显式 fallback。 |
|
|
168
|
+
| 作品详情与定价 | 补全后,Agent 先展示标题、双语文案、封面和画廊,再把价格和详情修改合并成一个问题;不能单独询价。 |
|
|
166
169
|
| 图文审核 | Agent 展示精确文案、价格、封面和所有画廊图片。短简介最大显示宽度为 30:ASCII 计 1,中文及其他非 ASCII 计 2。 |
|
|
167
170
|
| 公开发布 | 用户只需做一次最终明确确认;随后完成审核确认并立即、不可逆地公开上架。 |
|
|
168
171
|
|
|
@@ -220,11 +223,13 @@ Endpoint 必须使用 HTTPS;只有 localhost 和 loopback 本地开发可以
|
|
|
220
223
|
| `viceme skill listing get <listing-id>` | 读取权威的私有 Listing 状态。 |
|
|
221
224
|
| `viceme skill listing bind <listing-id> --path <path>` | 将来源明确绑定到用户选定且拥有的 Listing。 |
|
|
222
225
|
| `viceme skill publish --path <path>` | 定价前上传真实私有包并返回创作者预览。 |
|
|
223
|
-
| `viceme skill publish --resume <id>` | 继续同一个未定价 Draft
|
|
224
|
-
| `viceme publication wait <id>` | 等待后台分析,不重复上传。 |
|
|
226
|
+
| `viceme skill publish --resume <id>` | 继续同一个未定价 Draft 并上传媒体候选,不启动平台模型。 |
|
|
225
227
|
| `viceme publication review <id>` | 读取权威双语文案、价格、选定素材和审核状态。 |
|
|
228
|
+
| `viceme publication suggest <id> --input ...` | 以 Draft revision 保护提交 Agent 生成的双语文案与媒体选择。 |
|
|
229
|
+
| `viceme publication analyze <id>` | 当前 Agent 无法完成补全时,显式请求平台模型分析。 |
|
|
230
|
+
| `viceme publication wait <id>` | 等待已经显式请求的平台分析,不重复上传。 |
|
|
226
231
|
| `viceme skill publish --resume <id> --price-minor <fen>` | 在完整详情审核后,为同一个 Draft 写入人民币价格,不新建 Listing。 |
|
|
227
|
-
| `viceme publication asset upload ...` |
|
|
232
|
+
| `viceme publication asset upload ...` | 替换用户明确选择的媒体;加 `--candidate-only` 可暂存由 Agent 提供、随后交给 `publication suggest` 选择的媒体。 |
|
|
228
233
|
| `viceme publication update ...` | 用严格 JSON 文件替换完整 Listing Draft。 |
|
|
229
234
|
| `viceme publication confirm ...` | 确认当前精确 Review Digest。 |
|
|
230
235
|
| `viceme publication publish ...` | 公开已经确认的 Listing。 |
|
|
@@ -243,6 +248,11 @@ Endpoint 必须使用 HTTPS;只有 localhost 和 loopback 本地开发可以
|
|
|
243
248
|
"data": {},
|
|
244
249
|
"meta": {
|
|
245
250
|
"executingCliVersion": "<version>",
|
|
251
|
+
"autoUpdate": {
|
|
252
|
+
"from": "<previous-version>",
|
|
253
|
+
"to": "<executing-version>",
|
|
254
|
+
"status": "updated"
|
|
255
|
+
},
|
|
246
256
|
"requestId": "optional"
|
|
247
257
|
}
|
|
248
258
|
}
|
|
@@ -250,18 +260,25 @@ Endpoint 必须使用 HTTPS;只有 localhost 和 loopback 本地开发可以
|
|
|
250
260
|
|
|
251
261
|
`meta.executingCliVersion` 表示输出本次响应的进程版本。对于 `viceme update`,
|
|
252
262
|
新安装版本单独由 `data.cli_version` 返回,因为最终响应仍由启动更新的旧进程输出。
|
|
263
|
+
只有当本次命令由新激活的版本自动继续执行时,响应才会包含 `meta.autoUpdate`。
|
|
264
|
+
|
|
265
|
+
正式安装在执行普通命令前都会经过有界的新鲜度检查。已经校验的结果会复用五分钟,
|
|
266
|
+
避免同一工作流反复访问发布渠道。发现新的稳定版本时,CLI 与所有检测到的官方
|
|
267
|
+
Skills 会作为一个可恢复的完整版本一起激活,随后由新 CLI 自动重新执行原命令。
|
|
268
|
+
断网时发布发现会继续使用最后一个完整版本;如果版本激活失败,原命令会停止,避免
|
|
269
|
+
旧进程在版本切换失败后继续执行写操作。
|
|
253
270
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
271
|
+
npm 安装在所有支持的平台都会自动继续原命令。Windows 独立二进制在等待操作系统释放
|
|
272
|
+
旧可执行文件时,可能会返回一次可重试的 `AUTO_UPDATE_RESTART_REQUIRED`;原样重试
|
|
273
|
+
同一个命令后会由新版本继续执行。
|
|
257
274
|
|
|
258
275
|
```bash
|
|
259
276
|
viceme update --check
|
|
260
277
|
viceme update
|
|
261
278
|
```
|
|
262
279
|
|
|
263
|
-
|
|
264
|
-
|
|
280
|
+
`viceme update` 保留为显式修复命令。正常启动检查已经会校验精确 Release、刷新匹配
|
|
281
|
+
版本的官方 Skills,并把中断的激活过程恢复成一个完整、兼容的本地版本。
|
|
265
282
|
|
|
266
283
|
## 安全边界
|
|
267
284
|
|
|
@@ -271,7 +288,8 @@ viceme update
|
|
|
271
288
|
- 凭据保存在 CLI 的本地安全存储中,并绑定 Profile 与 API Origin,不进入 Agent
|
|
272
289
|
对话状态。
|
|
273
290
|
- Pending operation 不保存预签名上传 URL。
|
|
274
|
-
-
|
|
291
|
+
- Agent 补全把所有包内容视为不可信数据,且不能绕过服务端包、媒体、归属或 revision 校验。
|
|
292
|
+
- 显式平台模型分析只接收筛选后的文本、元数据和图片缩略图。
|
|
275
293
|
- 公开发布前必须展示并明确授权当前精确文案、价格、封面和有序画廊。
|
|
276
294
|
|
|
277
295
|
## 开发
|
package/checksums.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
5d1a01daa98e11d4e8bbe4e06f369235f0b328b5622b413adf17d078dc19f149 viceme_0.16.0_darwin_amd64
|
|
2
|
+
c5668fe1b1306a2553573cf5c9f96e80a81d2771444b5b5bde44c2ece73141fc viceme_0.16.0_darwin_arm64
|
|
3
|
+
6c2d3b2c5d6ad9fe8b1479872f08d0e8b3fe52c7ed7d6ad591542d6588da8fcf viceme_0.16.0_linux_amd64
|
|
4
|
+
0e472d484c38ac0b60acaa044d99b4913936abe96f0a4aef7e1c9e2db207fe3f viceme_0.16.0_linux_arm64
|
|
5
|
+
8ea8942c0ad36505fa46abec12177cb2f75e7eaf4bec6213aefeb6962debf4f0 viceme_0.16.0_windows_amd64.exe
|
|
6
|
+
824895a0ea8b941b31944efb74ce339ba9be0782bc4b42043428146cc52df51c viceme_0.16.0_windows_arm64.exe
|
package/npm/bin/viceme.mjs
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { spawnSync } from "node:child_process";
|
|
4
4
|
import { readFile } from "node:fs/promises";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
5
6
|
import process from "node:process";
|
|
6
7
|
|
|
7
8
|
import { ensureBinary } from "../lib/installer.mjs";
|
|
9
|
+
import { launcherEnvironment } from "../lib/launcher-environment.mjs";
|
|
8
10
|
|
|
9
11
|
export async function main(args = process.argv.slice(2), environment = process.env) {
|
|
10
12
|
const packageDocument = JSON.parse(
|
|
@@ -17,13 +19,11 @@ export async function main(args = process.argv.slice(2), environment = process.e
|
|
|
17
19
|
const child = spawnSync(binary, args, {
|
|
18
20
|
stdio: "inherit",
|
|
19
21
|
env: {
|
|
20
|
-
...
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
? "development"
|
|
26
|
-
: "npm",
|
|
22
|
+
...launcherEnvironment(
|
|
23
|
+
environment,
|
|
24
|
+
fileURLToPath(import.meta.url),
|
|
25
|
+
process.execPath,
|
|
26
|
+
),
|
|
27
27
|
VICEME_NPM_PACKAGE_VERSION: packageDocument.version,
|
|
28
28
|
},
|
|
29
29
|
windowsHide: false,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function launcherEnvironment(environment, launcherPath, launcherRuntime) {
|
|
2
|
+
return {
|
|
3
|
+
...environment,
|
|
4
|
+
VICEME_INSTALL_METHOD:
|
|
5
|
+
environment.VICEME_INSTALL_METHOD === "npm"
|
|
6
|
+
? "npm"
|
|
7
|
+
: environment.VICEME_BINARY_PATH
|
|
8
|
+
? "development"
|
|
9
|
+
: "npm",
|
|
10
|
+
VICEME_NPM_LAUNCHER_PATH: launcherPath,
|
|
11
|
+
VICEME_NPM_LAUNCHER_RUNTIME: launcherRuntime,
|
|
12
|
+
};
|
|
13
|
+
}
|