@pippit-dev/cli 1.0.53 → 1.0.54

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/checksums.txt CHANGED
@@ -1,6 +1,6 @@
1
- 08e0f157a05bdcbbb4c7a53eeeee3374d5be4bf86ec31139c5d42328c8cc781e pippit-tool-cli-1.0.53-darwin-amd64.tar.gz
2
- fa1b79ed862a997d7ec8117895158f1914d2fcaa30792b303fd924d2856a834f pippit-tool-cli-1.0.53-darwin-arm64.tar.gz
3
- e0d30c4edf201108587da2bd1ce97f9e7a30721e41700c50e7ddb57cc4c2474a pippit-tool-cli-1.0.53-linux-amd64.tar.gz
4
- b60c817d9b58659838baf9954e5cc110ddc92ed2736e5512047dc2b20a9dfde8 pippit-tool-cli-1.0.53-linux-arm64.tar.gz
5
- b890470552424b37fbd98d8a0e202d66526f7f575233cfb860599dadbc802be2 pippit-tool-cli-1.0.53-windows-amd64.zip
6
- cf549f5b6e7d929d7b8b48b0a1a3df467ad921c23b4a93361799d7723b023bde pippit-tool-cli-1.0.53-windows-arm64.zip
1
+ 3027db71d4e1b89ccaaa50f4660fb41a90e578bf7c08f0ea1c28367a597371a1 pippit-tool-cli-1.0.54-darwin-amd64.tar.gz
2
+ b6a932ae33085d565e88c21a39b446dcb21cf148b6fb66d5a5baa040896d98ae pippit-tool-cli-1.0.54-darwin-arm64.tar.gz
3
+ aabce0e36f96a1dcc29c24a277e85859e938f6eddc4ed74a0536df3e4e4bce23 pippit-tool-cli-1.0.54-linux-amd64.tar.gz
4
+ beb74396a2d82e05f7199b05cdd7850b148748b18483f9ccf24c4ec09d573968 pippit-tool-cli-1.0.54-linux-arm64.tar.gz
5
+ c84ccf75b7c3474f2623f0563c4bf1193a2c84b6f8d0d6ee853ac9c00913ee9c pippit-tool-cli-1.0.54-windows-amd64.zip
6
+ 8bd9e6abcde7060fb8b1fac9cb4ea9729cc88b73b27dc9d775581306738a56ba pippit-tool-cli-1.0.54-windows-arm64.zip
@@ -1,6 +1,6 @@
1
- 08e0f157a05bdcbbb4c7a53eeeee3374d5be4bf86ec31139c5d42328c8cc781e pippit-tool-cli-1.0.53-darwin-amd64.tar.gz
2
- fa1b79ed862a997d7ec8117895158f1914d2fcaa30792b303fd924d2856a834f pippit-tool-cli-1.0.53-darwin-arm64.tar.gz
3
- e0d30c4edf201108587da2bd1ce97f9e7a30721e41700c50e7ddb57cc4c2474a pippit-tool-cli-1.0.53-linux-amd64.tar.gz
4
- b60c817d9b58659838baf9954e5cc110ddc92ed2736e5512047dc2b20a9dfde8 pippit-tool-cli-1.0.53-linux-arm64.tar.gz
5
- b890470552424b37fbd98d8a0e202d66526f7f575233cfb860599dadbc802be2 pippit-tool-cli-1.0.53-windows-amd64.zip
6
- cf549f5b6e7d929d7b8b48b0a1a3df467ad921c23b4a93361799d7723b023bde pippit-tool-cli-1.0.53-windows-arm64.zip
1
+ 3027db71d4e1b89ccaaa50f4660fb41a90e578bf7c08f0ea1c28367a597371a1 pippit-tool-cli-1.0.54-darwin-amd64.tar.gz
2
+ b6a932ae33085d565e88c21a39b446dcb21cf148b6fb66d5a5baa040896d98ae pippit-tool-cli-1.0.54-darwin-arm64.tar.gz
3
+ aabce0e36f96a1dcc29c24a277e85859e938f6eddc4ed74a0536df3e4e4bce23 pippit-tool-cli-1.0.54-linux-amd64.tar.gz
4
+ beb74396a2d82e05f7199b05cdd7850b148748b18483f9ccf24c4ec09d573968 pippit-tool-cli-1.0.54-linux-arm64.tar.gz
5
+ c84ccf75b7c3474f2623f0563c4bf1193a2c84b6f8d0d6ee853ac9c00913ee9c pippit-tool-cli-1.0.54-windows-amd64.zip
6
+ 8bd9e6abcde7060fb8b1fac9cb4ea9729cc88b73b27dc9d775581306738a56ba pippit-tool-cli-1.0.54-windows-arm64.zip
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pippit-dev/cli",
3
- "version": "1.0.53",
3
+ "version": "1.0.54",
4
4
  "description": "Pippit CLI",
5
5
  "bin": {
6
6
  "pippit-tool-cli": "scripts/run.js"
@@ -33,6 +33,22 @@ URL 导入前检查实际入口的 `--help` 含 `--url`;旧版缺少时按 [
33
33
 
34
34
  媒体节点优先通过语义 `create_biz_node` 创建,`initialData` 只传 `pippitAssetId`:CLI 查询素材并填写真实云媒体 `assetId`。用 `update_asset.contentPatch` 或 `update_node_data.patch` 替换素材时也可只传新的 `pippitAssetId`。显式填写的 `assetId` 必须与素材查询结果匹配,否则返回 `INVALID_MEDIA_IDENTITY` 并拒绝写入。
35
35
 
36
+ 普通 `biz/image` 的素材绑定在同层 `content.pippitAssetId` 与 `content.assetId`。`content.appearanceInfo`、`content.sourceInfos` 属于角色/场景结构,不能套用于普通图片;角色/场景继续按各自领域命令及 schema 操作。
37
+
38
+ 以下仅用于核对保存后的节点结构,ID 占位符须替换为同空间真实查询结果,不作为完整写入请求直接执行:
39
+
40
+ ```json
41
+ {"type":"biz/image","content":{"pippitAssetId":"PIPPIT_MATERIAL_ID","assetId":"CLOUD_IMAGE_ASSET_ID"}}
42
+ ```
43
+
44
+ 错误反例:同层绑定缺失,即使保存 ACK,也不是可用参考图:
45
+
46
+ ```json
47
+ {"type":"biz/image","content":{"appearanceInfo":{"pippitAssetId":"PIPPIT_MATERIAL_ID","assetId":"CLOUD_IMAGE_ASSET_ID"}}}
48
+ ```
49
+
50
+ 可先创建不含绑定的图片空草稿;不能用 `generation`、`sourceInfos` 或手改“已上传”状态把空草稿视为素材已就绪。已有错绑数据先回读、核对真实素材,再在用户授权的编辑范围内修正,不自动迁移用户画布。
51
+
36
52
  `canvas upload` 顶层旧字段 `asset_id` 是保留兼容的 workspace/source ID,不能当节点媒体 ID;它与 `upload-file.asset_id` 的含义不同。`media_asset_id` 来自查询结果对应的 `Image/Video/Audio.asset_id`;缺失时不能用 `source_id`、`pippit_asset_id` 或画布节点 ID 补位。`node_asset_refs[].pippit_asset_id` 使用画布节点资产 ID。
37
53
 
38
54
  批量 `apply_mutations` 默认非原子执行:必须检查 `data.results` 中每一项的 `committed` / `aborted` 状态,保留已成功项,不重跑整批。需要任一失败时整批回滚,可显式传 `atomic: true`。
@@ -12,6 +12,18 @@ const REQUIRED_COMMANDS = [
12
12
  "generate-image", "generate-video", "video-super-resolution",
13
13
  "erase-video-subtitle", "get-credit-balance", "model list", "model describe",
14
14
  ];
15
+ // v1.0.50 first ships ordinary-image binding guards in both Canvas entries.
16
+ const MIN_CANVAS_VERSION = [1, 0, 50];
17
+
18
+ function supportsCanvasBindings(version) {
19
+ const match = /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:\+[0-9A-Za-z.-]+)?$/.exec(version);
20
+ if (!match) return false;
21
+ const parts = match.slice(1, 4).map(Number);
22
+ for (let i = 0; i < MIN_CANVAS_VERSION.length; i++) {
23
+ if (parts[i] !== MIN_CANVAS_VERSION[i]) return parts[i] > MIN_CANVAS_VERSION[i];
24
+ }
25
+ return true;
26
+ }
15
27
 
16
28
  function npmCommand() {
17
29
  if (process.platform !== "win32") return ["npm", []];
@@ -80,6 +92,11 @@ function ensureCLI({ canvas = false } = {}) {
80
92
  if (expectedVersion && version !== expectedVersion) {
81
93
  throw new Error(`CLI 版本 ${version} 与 npm 包版本 ${expectedVersion} 不一致。`);
82
94
  }
95
+ if (canvas && !supportsCanvasBindings(version)) {
96
+ const failure = new Error(`Canvas 需要 CLI >=${MIN_CANVAS_VERSION.join(".")} 正式版以校验图片绑定,当前版本:${version}。`);
97
+ failure.missingCommand = "Canvas 图片绑定校验(CLI >=1.0.50 正式版)";
98
+ throw failure;
99
+ }
83
100
  const commands = REQUIRED_COMMANDS.map((command) => command.split(" "));
84
101
  if (canvas) {
85
102
  for (const command of ["create", "get", "allocate", "upload", "apply"]) commands.push(["canvas", command]);
@@ -165,7 +182,7 @@ function ensureCLI({ canvas = false } = {}) {
165
182
 
166
183
  if (require.main === module) {
167
184
  if (process.argv.length === 3 && process.argv[2] === "--help") {
168
- console.log("Usage: node ensure-cli.js [--canvas]\n优先复用 PATH 或缓存中命令齐全的 CLI,不存在或缺少必需命令时安装 npm latest,成功输出 {cli_path, version} JSON。--canvas 额外验证画布原生命令和 npm 运行时,并返回 canvas_entry。");
185
+ console.log("Usage: node ensure-cli.js [--canvas]\n优先复用 PATH 或缓存中命令齐全的 CLI,不存在或缺少必需命令时安装 npm latest,成功输出 {cli_path, version} JSON。--canvas 要求 CLI >=1.0.50 正式版,额外验证画布原生命令和 npm 运行时,并返回 canvas_entry。");
169
186
  } else if (process.argv.length !== 2 && !(process.argv.length === 3 && process.argv[2] === "--canvas")) {
170
187
  console.error("不支持的参数。用法:node ensure-cli.js [--canvas]");
171
188
  process.exitCode = 1;
@@ -16,7 +16,7 @@ node "{baseDir}/scripts/ensure-cli.js"
16
16
 
17
17
  可选参数按实际任务检查帮助:URL 导入前核对所选入口 `upload-file --help` 或 `canvas upload --help` 含 `--url`,缺少时先更新到支持版本。安装脚本只检查必需命令,不因未使用的 URL 参数自动升级,也不证明服务端已部署 URL 导入能力。
18
18
 
19
- 命令齐全则直接复用,不检查最新版本;不存在或缺少必需命令时,获取 `@pippit-dev/cli@latest`。PATH 旧版本缺少命令但缓存完整时复用缓存,避免每次升级。版本命令不能运行或检查超时则报告运行错误。
19
+ 命令齐全则直接复用,不检查最新版本;Canvas 另有下述最低版本要求。不存在、缺少必需命令或不满足 Canvas 最低版本时,获取 `@pippit-dev/cli@latest`。PATH 旧版本不兼容但缓存完整时复用缓存,避免每次升级。版本命令不能运行或检查超时则报告运行错误。
20
20
 
21
21
  需要安装时,脚本跳过 npm 生命周期脚本获取包,调用包内 `scripts/install-cli.js` 只安装 CLI。成功后缓存到 `~/.cache/pippit-tool-cli/xyq-skill/<平台>-<架构>/current`。不要求全局 npm 写入权限,也不安装或清理全局 Skill。
22
22
 
@@ -36,7 +36,9 @@ node "{baseDir}/scripts/ensure-cli.js"
36
36
 
37
37
  ## Canvas 运行时检查
38
38
 
39
- 画布任务改用 `node "{baseDir}/scripts/ensure-cli.js" --canvas`。除原有检查外,再验证五个原生资产子命令的帮助,并通过同一个 npm 包的 Node 入口真实执行离线 `canvas command list`,确认运行时可加载且含基本查询与节点创建能力。该检查不登录、不访问画布、不写入远端。
39
+ 画布任务改用 `node "{baseDir}/scripts/ensure-cli.js" --canvas`。要求 CLI 至少为 `1.0.50` 正式版,该版本起原生 `canvas apply` 和 npm 语义运行时均包含普通图片绑定校验;仅有同名命令不能证明旧版包含该修复。旧版、预发布版或无法识别的版本按不兼容处理,先查缓存,再至多安装一次;最新包仍不兼容则报错。普通媒体任务不受此最低版本限制。
40
+
41
+ 除原有检查外,再验证五个原生资产子命令的帮助,并通过同一个 npm 包的 Node 入口真实执行离线 `canvas command list`,确认运行时可加载且含基本查询与节点创建能力。该检查不登录、不访问画布、不写入远端。保留当前 Skill 的实际路径及返回的 `version`、`cli_path`、`canvas_entry`,便于故障定位;`Pippit-CLI/1.0` 是 User-Agent,不能作为 CLI 发行版本。
40
42
 
41
43
  成功额外返回 `canvas_entry`,供 `node "CANVAS_ENTRY" canvas command ...` 使用;`cli_path` 仍用于原生命令。语义操作的实际支持范围以当前目录为准,检查通过不代表所有业务操作或服务端权限都可用。
42
44
 
@@ -7,7 +7,7 @@
7
7
  3. **发现与查询**:`list → describe/schema` 定位操作。用 `get_snapshot` 查节点,用 `get_asset` 查具体资产;3D/多轨再查询其独立文档。`run` 是统一执行入口,其中 query/get 类操作是读取,不等于所有 run 都是写入。
8
8
  4. **准备输入**:使用查询所得的节点、子对象和资产 ID。外链素材通过 `canvas upload --url` 导入并保存 `pippit_asset_id`、`state` 与可能的 `warning`;也可复用 `upload-file --url` 返回的稳定 `asset_id`,再按 [URL 导入与资产复用](../commands/canvas-assets.md#url-import) 创建所需节点;已有资产直接复用,不重复导入。多轨 `expectedRevision` 来自最新查询。复杂输入写入 JSON 文件后传 `--file`;不要同时传 `--file` 和 `--input`。只操作用户指定范围。
9
9
  5. **预演与写入**:当前 schema 支持 `dryRun` 时可先预演,再在已有授权范围内执行真实修改。不能给所有命令强加此字段:领域命令的 dryRun 验证具体编辑,通用 `apply_mutations.dryRun` 不能替代领域预演。删除、恢复等操作仅按用户明确要求执行。
10
- 6. **验证结果**:检查退出码与 JSON 的 `ok`、错误信息,`ok=false` 即失败。`dryRun=true` 成功不代表落盘;实际写入成功后,用对应查询回读目标字段及关联关系,确认没有误改其他对象。
10
+ 6. **验证结果**:检查退出码与 JSON 的 `ok`、错误信息,`ok=false` 即失败。`dryRun=true` 成功不代表落盘;实际写入成功后,用对应查询回读目标字段及关联关系,确认没有误改其他对象。素材绑定还须按[图片绑定契约](../commands/canvas-assets.md#低层事务的使用边界)核对节点类型、字段位置和素材身份:普通 `biz/image` 的 `content.pippitAssetId` 必须是所选图片素材,`content.assetId` 必须匹配该素材查询的 `Image.asset_id`。保存 ACK 只证明事务被接受,不证明参考素材可用。
11
11
  7. **反馈交付**:说明已验证的画布变化,保留已有/返回的画布链接及目标 ID。只完成文档编辑时不要声称图片/视频已生成;确有媒体文件待交付时遵循 [媒体交付标准](async-delivery.md)。
12
12
 
13
13
  语义执行骨架(占位符替换为当前目录中的命令、真实 ID 和已准备的输入文件):
@@ -17,3 +17,5 @@ node "CANVAS_ENTRY" canvas command run COMMAND_NAME --canvas-id CANVAS_ASSET_ID
17
17
  ```
18
18
 
19
19
  写请求失败或返回“未确认事务已隔离”时保留错误上下文,先回读状态,不自动重跑、不删除本地恢复记录。多轨版本冲突需重新查询并基于新状态准备操作;检查点恢复会改变画布,不能作为所有失败的自动回滚方式。
20
+
21
+ 后续任务要把节点用于生视频参考时,先在原空间回读并完成上述核对。绑定缺失、错层或素材未就绪时停止提交,明确指出节点和缺失字段;保留原始错误与 LogID,不反复重试或手改上传状态。`node asset resource not ready` 表示素材预处理未就绪;即使外层显示“服务器繁忙”,也不能据此把重复生成当作恢复方式。