@lingjingai/lj-awb-cli-pre 0.4.7 → 0.4.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 +14 -5
- package/build/volta-pre.mjs +64 -0
- package/install.mjs +11 -3
- package/package.json +4 -3
- package/packages/awb-cli/package.json +2 -2
- package/packages/awb-core/package.json +1 -2
- package/packages/awb-core/src/commands.js +10 -460
- package/packages/awb-core/src/output.js +5 -287
- package/packages/awb-core/src/services.js +119 -12
- package/packages/awb-core/src/standalone.js +20 -184
- package/packages/awb-core/src/update.js +74 -3
- package/skills/lj-awb/SKILL.md +13 -7
- package/skills/lj-awb/VERSION +1 -1
- package/skills/lj-awb/compat.json +3 -3
- package/skills/lj-awb/modules/account.md +2 -2
- package/skills/lj-awb/modules/create-contract.md +10 -8
- package/skills/lj-awb/modules/driver.md +4 -10
- package/skills/lj-awb/modules/evals.md +2 -2
- package/skills/lj-awb/modules/image.md +3 -3
- package/skills/lj-awb/modules/model.md +50 -1
- package/skills/lj-awb/modules/project.md +2 -2
- package/skills/lj-awb/modules/task-manual.md +3 -3
- package/skills/lj-awb/modules/task.md +1 -1
- package/skills/lj-awb/modules/video.md +3 -3
- package/skills/lj-awb/modules/workflows.md +1 -76
- package/skills/lj-awb/references/error-codes.md +1 -1
- package/skills/lj-awb/references/output-fields.md +4 -11
- package/packages/awb-core/src/artifact.js +0 -936
- package/skills/lj-awb/modules/artifact/asset.md +0 -64
- package/skills/lj-awb/modules/artifact/clip.md +0 -65
- package/skills/lj-awb/modules/artifact/script.md +0 -37
- package/skills/lj-awb/modules/artifact/video.md +0 -65
- package/skills/lj-awb/modules/artifact.md +0 -65
package/README.md
CHANGED
|
@@ -24,7 +24,6 @@ CLI 本身只负责平台调用、参数校验、人类友好输出、机器可
|
|
|
24
24
|
| 上传 | `upload` | 本地图片 / 视频 / 音频上传为平台可访问素材 |
|
|
25
25
|
| 创建 | `create` | 生图、生视频、主体、音色、素材和去字幕提交 |
|
|
26
26
|
| 任务 | `task` | 任务列表、等待、任务台账和台账轮询 |
|
|
27
|
-
| 最终产物 | `artifact` | Workbench 剧本、资产、视频最终产物 CRUD 与本地 JSON 导入 |
|
|
28
27
|
|
|
29
28
|
## 环境要求
|
|
30
29
|
|
|
@@ -161,7 +160,7 @@ lj-awb auth verify
|
|
|
161
160
|
lj-awb account info
|
|
162
161
|
lj-awb account teams
|
|
163
162
|
lj-awb project list
|
|
164
|
-
lj-awb project
|
|
163
|
+
lj-awb project switch --project-group-no <no> --yes
|
|
165
164
|
lj-awb credits balance
|
|
166
165
|
lj-awb credits usage --project-group-no <no> --last-hours 24
|
|
167
166
|
lj-awb model image-models --model Banana
|
|
@@ -169,9 +168,6 @@ lj-awb model video-models --model Seedance
|
|
|
169
168
|
lj-awb model input-guide
|
|
170
169
|
lj-awb model options --model-group-code <modelGroupCode>
|
|
171
170
|
lj-awb model create-spec --model-group-code <modelGroupCode>
|
|
172
|
-
lj-awb artifact script import --project-id <projectId> --input-file 1_script/output/script.json --dry-run
|
|
173
|
-
lj-awb artifact asset import --project-id <projectId> --input-dir 2_asset/output --dry-run
|
|
174
|
-
lj-awb artifact video import-storyboard --project-id <projectId> --input-file 3_footage/output/ep001/ep001_storyboard.json --dry-run
|
|
175
171
|
```
|
|
176
172
|
|
|
177
173
|
正式写入、切换上下文、批量和扣费命令都支持安全确认:
|
|
@@ -369,6 +365,19 @@ npm run version:sync -- 0.3.5
|
|
|
369
365
|
|
|
370
366
|
`npm run check:local` 会做 Node 语法检查、shell wrapper 检查、skill 元数据和 schema 校验,不需要 access key。`npm run check` 会额外执行真实平台契约校验,需要本地或环境变量中有可用 access key。`npm run build:pre` / `npm run build:prod` 发布构建只自动执行 `check:local`,避免被本机过期平台凭据阻断;需要真实平台回归时单独运行 `npm run check:real`。`npm run smoke` 会运行帮助命令和无网络写入风险的认证状态检查。
|
|
371
367
|
|
|
368
|
+
### 用 Volta 管理 Node 的机器
|
|
369
|
+
|
|
370
|
+
`lj-awb update` 会检测当前 CLI 是否由 [Volta](https://volta.sh) 管理;如果是,会使用 `volta install` 更新包并刷新 shim,否则沿用 `npm install -g`。
|
|
371
|
+
|
|
372
|
+
`npm run build:pre` 走的是 `npm install -g`。在用 Volta 管理 Node/npm 的机器上,`npm install -g` **不会**在 `~/.volta/bin` 生成 shim(软链接只落在 `~/.volta/tools/image/node/<ver>/bin/`,该目录不在 `PATH` 中),安装后会出现 `lj-awb: command not found`。这类机器请改用:
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
npm run build:volta-pre # 用 volta install 安装本地 pre 构建,正确生成 shim
|
|
376
|
+
npm run build:volta-pre -- --dry-run # 只查看安装计划,不实际安装
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
`build:volta-pre` 缺少 volta 时会直接报错退出。其余环境变量(`SKIP_CHECK=1` 等)与 `build:pre` 一致。
|
|
380
|
+
|
|
372
381
|
## 文档索引
|
|
373
382
|
|
|
374
383
|
- [`docs/TECHNICAL.md`](docs/TECHNICAL.md):架构、运行时、数据契约、发布维护说明。
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mkdtempSync, rmSync } from 'node:fs';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import {
|
|
6
|
+
capture,
|
|
7
|
+
copyPackageFiles,
|
|
8
|
+
packTarball,
|
|
9
|
+
patchDefaultApiOrigin,
|
|
10
|
+
run,
|
|
11
|
+
} from './_shared.mjs';
|
|
12
|
+
|
|
13
|
+
const PRE_API_ORIGIN = 'https://animeworkbench-pre.lingjingai.cn';
|
|
14
|
+
const PACKAGE_NAME = '@lingjingai/lj-awb-cli';
|
|
15
|
+
const dryRun = process.env.NPM_INSTALL_DRY_RUN === '1' || process.argv.slice(2).includes('--dry-run');
|
|
16
|
+
|
|
17
|
+
function ensureVolta() {
|
|
18
|
+
if (!process.env.VOLTA_HOME) {
|
|
19
|
+
process.stderr.write(
|
|
20
|
+
'Volta is required for this script but VOLTA_HOME is not set.\n'
|
|
21
|
+
+ 'Install Volta (https://volta.sh) or use `npm run build:pre` instead.\n',
|
|
22
|
+
);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const result = capture('volta', ['--version']);
|
|
26
|
+
if (result.status !== 0) {
|
|
27
|
+
process.stderr.write(
|
|
28
|
+
'Volta is required for this script but the `volta` command is not available.\n'
|
|
29
|
+
+ 'Install Volta (https://volta.sh) or use `npm run build:pre` instead.\n',
|
|
30
|
+
);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
process.stderr.write(`Using Volta ${result.stdout.trim()} for global install.\n`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function installTarball(tarballPath) {
|
|
37
|
+
const spec = `${PACKAGE_NAME}@file:${tarballPath}`;
|
|
38
|
+
if (dryRun) {
|
|
39
|
+
process.stderr.write(`$ volta install ${spec} (dry-run)\n`);
|
|
40
|
+
process.stderr.write('Validated local pre build Volta install plan from packed tarball.\n');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
run('volta', ['install', spec]);
|
|
45
|
+
run('lj-awb', ['--version']);
|
|
46
|
+
process.stderr.write('Installed local pre build with Volta from packed tarball.\n');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
ensureVolta();
|
|
50
|
+
|
|
51
|
+
if (process.env.SKIP_CHECK !== '1') {
|
|
52
|
+
run('npm', ['run', 'check:local']);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const stageDir = mkdtempSync(path.join(tmpdir(), 'lj-awb-pre-src-'));
|
|
56
|
+
try {
|
|
57
|
+
process.stderr.write(`Preparing local pre build with default API origin ${PRE_API_ORIGIN}.\n`);
|
|
58
|
+
copyPackageFiles(stageDir);
|
|
59
|
+
patchDefaultApiOrigin(stageDir, PRE_API_ORIGIN);
|
|
60
|
+
const tarballPath = packTarball(stageDir);
|
|
61
|
+
installTarball(tarballPath);
|
|
62
|
+
} finally {
|
|
63
|
+
rmSync(stageDir, { recursive: true, force: true });
|
|
64
|
+
}
|
package/install.mjs
CHANGED
|
@@ -48,7 +48,15 @@ if (!existsSync(skillSourceDir)) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
for (const skillTargetDir of [...new Set(skillTargetDirs)]) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
try {
|
|
52
|
+
// 目标目录可能正被运行中的 agent(如 Claude Code)实时占用、并发重建子目录,
|
|
53
|
+
// 普通 rmSync 删父目录时会撞上 ENOTEMPTY/EBUSY。maxRetries/retryDelay 让其自动重试规避竞态。
|
|
54
|
+
rmSync(skillTargetDir, { recursive: true, force: true, maxRetries: 10, retryDelay: 100 });
|
|
55
|
+
copyDirectory(skillSourceDir, skillTargetDir);
|
|
56
|
+
log(`Installed lj-awb skill -> ${skillTargetDir}`);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
// 单个目标被占用不应中断整个 postinstall(否则 npm install 失败并留下半删目录);
|
|
59
|
+
// 跳过该目标并提示用户:重启 agent 后重新安装即可刷新。
|
|
60
|
+
log(`Warning: skipped lj-awb skill refresh at ${skillTargetDir} (${error.code || error.message}). It may be in use by a running agent; restart it and reinstall to refresh.`);
|
|
61
|
+
}
|
|
54
62
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingjingai/lj-awb-cli-pre",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Lingjing AWB CLI monorepo with shared core, standalone CLI, and agent skills (pre-release build pointing to https://animeworkbench-pre.lingjingai.cn)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -20,13 +20,14 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"build": "node build/build.mjs",
|
|
22
22
|
"build:pre": "node build/pre.mjs",
|
|
23
|
+
"build:volta-pre": "node build/volta-pre.mjs",
|
|
23
24
|
"build:pre-publish": "node build/pre-publish.mjs",
|
|
24
25
|
"build:prod": "node build/prod.mjs",
|
|
25
26
|
"check": "npm run check:local && npm run check:real",
|
|
26
|
-
"check:local": "node --check install.mjs && node --check packages/awb-core/src/common.js && node --check packages/awb-core/src/api.js && node --check packages/awb-core/src/
|
|
27
|
+
"check:local": "node --check install.mjs && node --check packages/awb-core/src/common.js && node --check packages/awb-core/src/api.js && node --check packages/awb-core/src/auth.js && node --check packages/awb-core/src/output.js && node --check packages/awb-core/src/update.js && node --check packages/awb-core/src/services.js && node --check packages/awb-core/src/commands.js && node --check packages/awb-core/src/standalone.js && sh -n packages/awb-cli/bin/lj-awb && bash -n skills/lj-awb/scripts/resolve-lj-awb-cmd.sh && node --check packages/awb-cli/bin/lj-awb.js && node --check build/build.mjs && node --check build/_shared.mjs && node --check build/pre.mjs && node --check build/volta-pre.mjs && node --check build/pre-publish.mjs && node --check build/prod.mjs && node --check scripts/run-openapi-cli-examples-real.mjs && node --check scripts/validate-cli-schema.mjs && node --check scripts/validate-cli-output-contract.mjs && node --check scripts/validate-cli-command-coverage.mjs && node scripts/validate-skill-meta.mjs && node scripts/validate-cli-schema.mjs && node scripts/validate-cli-command-coverage.mjs",
|
|
27
28
|
"check:real": "node scripts/validate-cli-output-contract.mjs && node scripts/validate-openapi-cli-examples.mjs",
|
|
28
29
|
"test:openapi-real": "node scripts/run-openapi-cli-examples-real.mjs",
|
|
29
|
-
"smoke": "packages/awb-cli/bin/lj-awb --help && packages/awb-cli/bin/lj-awb auth status -f json && packages/awb-cli/bin/lj-awb system && packages/awb-cli/bin/lj-awb auth && packages/awb-cli/bin/lj-awb account && packages/awb-cli/bin/lj-awb project && packages/awb-cli/bin/lj-awb credits && packages/awb-cli/bin/lj-awb upload && packages/awb-cli/bin/lj-awb model && packages/awb-cli/bin/lj-awb create && packages/awb-cli/bin/lj-awb task && packages/awb-cli/bin/lj-awb
|
|
30
|
+
"smoke": "packages/awb-cli/bin/lj-awb --help && packages/awb-cli/bin/lj-awb auth status -f json && packages/awb-cli/bin/lj-awb system && packages/awb-cli/bin/lj-awb auth && packages/awb-cli/bin/lj-awb account && packages/awb-cli/bin/lj-awb project && packages/awb-cli/bin/lj-awb credits && packages/awb-cli/bin/lj-awb upload && packages/awb-cli/bin/lj-awb model && packages/awb-cli/bin/lj-awb create && packages/awb-cli/bin/lj-awb task && packages/awb-cli/bin/lj-awb schema -f json >/dev/null",
|
|
30
31
|
"postinstall": "node install.mjs",
|
|
31
32
|
"version:sync": "node scripts/sync-versions.mjs"
|
|
32
33
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingjingai/awb-cli-bin",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Standalone CLI for Lingjing AWB",
|
|
5
5
|
"private": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
"README.md"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@lingjingai/awb-core": "0.4.
|
|
16
|
+
"@lingjingai/awb-core": "0.4.9"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingjingai/awb-core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "Shared core runtime for Lingjing AWB CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
8
8
|
"./common.js": "./src/common.js",
|
|
9
9
|
"./api.js": "./src/api.js",
|
|
10
|
-
"./artifact.js": "./src/artifact.js",
|
|
11
10
|
"./auth.js": "./src/auth.js",
|
|
12
11
|
"./output.js": "./src/output.js",
|
|
13
12
|
"./services.js": "./src/services.js",
|