@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 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 continues media analysis without asking for a price.
65
- After ViceMe prepares the bilingual copy and media suggestions, the Agent shows
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 → Platform analysis
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, upload media, and start analysis.
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
- | Analysis | ViceMe proposes short Chinese and English summaries, bilingual usage instructions, a cover, and an ordered gallery. Suggestions are never treated as user decisions. |
179
- | Listing details and price | After analysis, 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. |
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, upload media candidates, and start analysis. |
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 a cover or gallery image before confirmation. |
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
- Released installations check their authoritative release channel at most once
279
- every 24 hours. When a newer version is available, ordinary JSON responses
280
- include `_notice.update` with the current version, latest version, and
281
- `viceme update`. Discovery is fail-open and never changes the business
282
- command's exit code.
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
- The updater verifies the exact release, refreshes the matching official Skills,
290
- and recovers interrupted activation as one compatible local generation.
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
- - Model analysis receives only filtered text, metadata, and image thumbnails.
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
- 上传私有草稿并打开真实创作者预览,不询价就继续媒体分析。ViceMe 完成双语文案和素材
60
- 建议后,Agent 会先把完整作品详情和图片直接展示出来,再把价格和详情修改合并成一个
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
- | 平台分析 | ViceMe 建议中英文短简介、中英文使用说明、封面和有序画廊;建议不能替代用户决定。 |
165
- | 作品详情与定价 | 分析完成后,Agent 先展示标题、双语文案、封面和画廊,再把价格和详情修改合并成一个问题;不能单独询价。 |
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
- 正式安装最多每 24 小时读取一次权威发布渠道。发现新版本后,普通 JSON 响应通过
255
- `_notice.update` 返回当前版本、最新版本和 `viceme update`。检查失败不会改变业务
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
- 更新器会校验精确 Release、刷新匹配版本的官方 Skills,并把中断的激活过程恢复成
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
- 3140964b542a31aabf5deaf7037d8999e5f149f4216dceacabd4c4affc0d8c40 viceme_0.15.2_darwin_amd64
2
- c1eb06148eb60c947a1319b90ea7e01141bdc420697642a156ab4af754e2eb9a viceme_0.15.2_darwin_arm64
3
- 7c6575b8dbb7f4aef057965f403666359f99ad324a36ae34996af519d670adc3 viceme_0.15.2_linux_amd64
4
- 56503ffbbb06b742419d90f2661bf8fa182dee77a555a5f233b90f31ebd04fa7 viceme_0.15.2_linux_arm64
5
- 47e88c30290ebf8740f46e4f4a096f2184d66c50dc4477841ea727052614e432 viceme_0.15.2_windows_amd64.exe
6
- f1e8fe3b3b0f32d6afd0f8a29ffe910a3c1b7f27563ebbb3ba6fb18e1692ea96 viceme_0.15.2_windows_arm64.exe
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
@@ -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
- ...environment,
21
- VICEME_INSTALL_METHOD:
22
- environment.VICEME_INSTALL_METHOD === "npm"
23
- ? "npm"
24
- : environment.VICEME_BINARY_PATH
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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viceme-ai/cli",
3
- "version": "0.15.2",
3
+ "version": "0.16.0",
4
4
  "description": "Install the ViceMe creator CLI and official Agent Skills",
5
5
  "type": "module",
6
6
  "bin": {